Это замечательная работа, Херардо Фернандес.🎉 Мне нравится использование подробных функций для динамического выбора значений свойств background и color
на основе значений свойств и темы приложения. 😁
Тем не менее, я чувствую, что полное определение функции, прикрепленное к свойствам background и color, делает целые стили компонента кнопки отвлекающими. Трудно просматривать стили кнопок, не отвлекаясь на функции. Вы можете поместить определение функции отдельно от свойств CSS. Таким образом, стили становятся краткими, а функции выбора значений также краткими (мы могли бы иметь их в одном файле).

import styled from 'styled-components';
export default styled.button`
  background: ${backgroundValueChooser};
  color: ${colorValueChooser};
  /**
  /* Other styles here
   */
`;
const backgroundValueChooser = (props) => {
  switch (props.type) {
    case 'blue':
      return props.theme.color.blue;
    case 'lightGray':
      return props.theme.color.gray200;
    default:
      return props.theme.color.primary;
  }
};
const colorValueChooser = (props) => {
  switch (props.type) {
    case 'blue':
      return 'white';
    case 'lightGray':
      return props.theme.color.body;
    default:
      return 'white;
  }
};

Что вы думаете об этом?