23 lines
603 B
JavaScript
23 lines
603 B
JavaScript
import { Map as ImmutableMap } from 'immutable';
|
|
|
|
const hex2rgb = c => c.substr(1).match(/../g).map(x => + `0x${x}`);
|
|
|
|
export const generateThemeCss = brandColor => {
|
|
if (!brandColor) return null;
|
|
return themeDataToCss(brandColorToThemeData(brandColor));
|
|
};
|
|
|
|
export const brandColorToThemeData = brandColor => {
|
|
const [ r, g, b ] = hex2rgb(brandColor);
|
|
return ImmutableMap({
|
|
'brand-color-r': r,
|
|
'brand-color-g': g,
|
|
'brand-color-b': b,
|
|
});
|
|
};
|
|
|
|
export const themeDataToCss = themeData => (
|
|
themeData
|
|
.entrySeq()
|
|
.reduce((acc, cur) => acc + `--${cur[0]}:${cur[1]};`, '')
|
|
);
|