20 minutes | Loading external themes | | @Adam Stankiewicz's feat: adds support for loading external theme CSS for MFEs by adamstankiewicz · Pull Request #440 · openedx/frontend-platform tl;dr; Paragon’s design tokens intends to compile its own theme CSS instead of MFEs needing to compile Paragon’s SCSS → CSS. Relies on 2 new config variables being present (potentially 3+ in the future): APP_THEME_CORE_URL (core theme CSS)
APP_THEME_LIGHT_URL (CSS variable definitions specific to light theme variant)
[in the future] APP_THEME_DARK_URL (CSS variables definitions specific to dark theme variant, one day)
Implements useAppTheme React hook to load/inject the external theme URLs into the HTML <head> . Does not render MFE until the external CSS is loaded to avoid Flash of Unstyled Content (FoUC). Ensures that once we do support more than 1 theme variant (i.e., both light and dark), switching between them does not introduce FoUC. Provides a mechanism for consuming MFEs to (eventually) switch the theme at runtime by exposing a dispatch function and a set of reducer actions to mutate the app theme state (e.g., a consuming MFE could do dispatch(setAppThemeVariant('dark')) in the future once more theme variant(s) beyond "light" is supported.
Discuss: |