import { generate } from '@ant-design/colors'; import type { ColorPalettes, LegacyColorPalettes, MapToken, PresetColorType, SeedToken, } from '../../interface'; import { defaultPresetColors } from '../seed'; import genColorMapToken from '../shared/genColorMapToken'; import genCommonMapToken from '../shared/genCommonMapToken'; import genControlHeight from '../shared/genControlHeight'; import genFontMapToken from '../shared/genFontMapToken'; import genScrollbarToken from '../shared/genScrollbarToken'; import genSizeMapToken from '../shared/genSizeMapToken'; import { generateColorPalettes, generateNeutralColorPalettes } from './colors'; export default function derivative(token: SeedToken): MapToken { const colorPalettes = Object.keys(defaultPresetColors) .map((colorKey: keyof PresetColorType) => { const colors = generate(token[colorKey]); return new Array(10).fill(1).reduce((prev, _, i) => { prev[`${colorKey}-${i + 1}`] = colors[i]; prev[`${colorKey}${i + 1}`] = colors[i]; return prev; }, {}) as ColorPalettes & LegacyColorPalettes; }) .reduce( (prev, cur) => { prev = { ...prev, ...cur, }; return prev; }, {} as ColorPalettes & LegacyColorPalettes, ); return { ...token, ...colorPalettes, // Colors ...genColorMapToken(token, { generateColorPalettes, generateNeutralColorPalettes, }), // Font ...genFontMapToken(token.fontSize), // Size ...genSizeMapToken(token), // Height ...genControlHeight(token), // Scrollbar ...genScrollbarToken(), // Others ...genCommonMapToken(token), }; }