import { colors } from 'utils/theme'; import { ColourOptions } from 'types/theme'; interface ColourConfig { key: ColourOptions; } const setColour = (config?: ColourConfig, defaultOption: string = 'white'): string => !config || config.key === 'default' ? colors[defaultOption] : colors[config.key]; const buildThemeConfig = (defaultConfig: any, siteConfig: any): any => Object.keys(defaultConfig) .reduce((acc, curr) => { if (siteConfig[curr]) { return { ...acc, [curr]: setColour(siteConfig[curr], defaultConfig[curr]) }; } throw new Error(`An error occured when building theme config: ${curr} does not exist. Have you incorrectly spelled a constant value?`); }, {}); export { setColour, buildThemeConfig };