Implementation Notes

  • I've changed the CRA version, as the latest release now patches the TypeScript issue that made the build break. See: facebook/create-react-app#10110 (comment)
  • I've also added the lock file to the project so that dependencies are locked and no such surprises occur in the future.
  • As I'm not a designer, I've added just enough CSS to make the UI responsive and consistent.
  • I've only used the theme for the Button component. It can be added the same way for other UI elements, depending on a discussion with the designer on how they use "primary" and "secondary" colors.
  • Instead of storing the Theme within a context, it could also be implemented as CSS Custom Properties, depending on browser support requirements. (Unless future plans include values that cannot be stored or used as CSS custom properties.)
  • I've spent about 3-4 hours on this, give or take.