The app uses the SemanticTheme pattern defined in the src/models/semantic-theme/ directory. This allows mapping style properties to any number of enumerated ThemeOptions. Style properties are defined in the src/constants/theme/ directory. Theme styles can be accessed via ThemeContext defined in src/contexts/themeContext.ts (and instantiated in src/hooks/JuiceTheme.tsx), or via CSS root variables.
The app also relies on antd React components. We override some Antd styles to make Antd compatible with SemanticTheme. These overrides are defined in the src/styles/antd-overrides/ directory.