import { Property } from 'csstype'; export type DefaultColorOrFunc = Property.Color | (() => Array); export type StringColorOrFunc = string | (() => Array); export interface IColorsConfig { selBgColor?: StringColorOrFunc; defaultBgColor?: StringColorOrFunc; alternateBgColor?: StringColorOrFunc; textColor?: StringColorOrFunc; selTextColor?: StringColorOrFunc; borderColor?: StringColorOrFunc; hoverBgColor?: Property.Color; hoverColor?: Property.Color; todayBgColor?: Property.Color; todayColor?: Property.Color; } export interface ColorsConfig { selBgColor: DefaultColorOrFunc; defaultBgColor: DefaultColorOrFunc; alternateBgColor: DefaultColorOrFunc; textColor: DefaultColorOrFunc; selTextColor: DefaultColorOrFunc; borderColor: DefaultColorOrFunc; hoverBgColor: Property.Color; hoverColor: Property.Color; todayBgColor: Property.Color; todayColor: Property.Color; } export const DEFAULT_COLORS: ColorsConfig = { selBgColor: '#dcf5ff', defaultBgColor: '#fff', alternateBgColor: '#fefefe', textColor: '#000', selTextColor: '#111', borderColor: '#efefef', hoverBgColor: '#fff', hoverColor: '#000', todayBgColor: '#eee', todayColor: '#fff', }; export function getConfig(config?: IColorsConfig) { return { ...DEFAULT_COLORS, ...config } as ColorsConfig; }