11import { addToObject , flattenObject } from '../../util/mutator' ;
2- import { getContrastColor } from '../../util/colors' ;
2+ import { getContrastColor , nameToCssVariable } from '../../util/colors' ;
33import { getColorConverter } from "../../util/Color.js" ;
44import { useThemeEditContext } from "../../hooks/context/themeEditContextHook.jsx" ;
55import { useThemeStorage } from "../../hooks/context/themeContextHook.jsx" ;
66
77// Function to generate CSS variables from theme data
8- const generateThemeCSS = ( { applyToClass, colors, nightColors, useCases, nightModeUseCases} ) => {
8+ const generateThemeCSS = ( { applyToClass, colors, nightColors, useCases, nightModeUseCases, color } ) => {
99 const baseVariables = [ ] ;
1010 const nightModeVariables = [ ] ;
1111
@@ -39,7 +39,9 @@ const generateThemeCSS = ({applyToClass, colors, nightColors, useCases, nightMod
3939 // });
4040
4141 // Add night mode use case variables
42- const flattenedNightUseCases = addToObject ( flattenObject ( nightModeUseCases ) , nightModeUseCases . referenceColors ) ;
42+ let flattenedNightUseCases = addToObject ( flattenObject ( nightModeUseCases ) , nightModeUseCases . referenceColors ) ;
43+ // Override with user selected theme color
44+ if ( color && color !== 'theme' ) flattenedNightUseCases = addToObject ( flattenedNightUseCases , { theme : nameToCssVariable ( color ) } ) ;
4345 Object . entries ( flattenedNightUseCases ) . forEach ( ( [ key , value ] ) => {
4446 if ( typeof value === 'string' && value . startsWith ( 'var(--color-' ) ) {
4547 const referencedColor = value . replace ( 'var(--color-' , '' ) . replace ( ')' , '' ) ;
@@ -50,7 +52,9 @@ const generateThemeCSS = ({applyToClass, colors, nightColors, useCases, nightMod
5052
5153 const nightModeKeys = Object . keys ( flattenedNightUseCases ) ;
5254 // Add use case variables
53- const flattenedUseCases = addToObject ( flattenObject ( useCases ) , useCases . referenceColors ) ;
55+ let flattenedUseCases = addToObject ( flattenObject ( useCases ) , useCases . referenceColors ) ;
56+ // Override with user selected theme color
57+ if ( color && color !== 'theme' ) flattenedUseCases = addToObject ( flattenedUseCases , { theme : nameToCssVariable ( color ) } ) ;
5458 Object . entries ( flattenedUseCases ) . forEach ( ( [ key , value ] ) => {
5559 if ( typeof value === 'string' && value . startsWith ( 'var(--color-' ) ) {
5660 const referencedColor = value . replace ( 'var(--color-' , '' ) . replace ( ')' , '' ) ;
@@ -80,13 +84,13 @@ ${applyToClass ? `.${applyToClass}.night-mode-colors,.${applyToClass} .night-mod
8084
8185export const ThemeStyleCss = ( { editMode, applyToClass} ) => {
8286 const {
83- loaded,
87+ loaded, color ,
8488 currentColors : colors , currentNightColors : nightColors ,
8589 currentUseCases : useCases , currentNightModeUseCases : nightModeUseCases
8690 } = editMode ? useThemeEditContext ( ) : useThemeStorage ( ) ;
8791
8892 if ( ! loaded ) return < > </ >
8993 return (
90- < style > { generateThemeCSS ( { applyToClass, colors, nightColors, useCases, nightModeUseCases} ) } </ style >
94+ < style > { generateThemeCSS ( { applyToClass, colors, nightColors, useCases, nightModeUseCases, color } ) } </ style >
9195 )
9296}
0 commit comments