File size: 479 Bytes
84c1942
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
import Color from 'color';
import { decorateSelector } from './decorateSelector';

type NestedColor = { [P in keyof Color]: (val: number) => NestedColor } &
  (() => string);

export const createTheme = <T>(colors: T): { [P in keyof T]: NestedColor } =>
  Object.keys(colors)
    .map(c => ({ key: c, value: colors[c] }))
    .map(({ key, value }) => ({ key, value: decorateSelector(() => value) }))
    .reduce((prev, { key, value }) => ({ ...prev, [key]: value }), {}) as any;