江麻妞
2021-05-17 c26dd034165b02d107977fdfe13471ea80e991cc
提交 | 用户 | age
3d1681 1 import { generate } from '@ant-design/colors';
91e004 2
759e53 3 export const primaryColor = '#0960bd';
3d1681 4
5b8eb4 5 export const darkMode = 'light';
3d1681 6
V 7 type Fn = (...arg: any) => any;
8
c26dd0 9 type GenerateTheme = 'default' | 'dark'
10
3d1681 11 export interface GenerateColorsParams {
V 12   mixLighten: Fn;
13   mixDarken: Fn;
14   tinycolor: any;
15   color?: string;
16 }
17
c26dd0 18 export function generateAntColors(color: string, theme: GenerateTheme = 'default') {
3d1681 19   return generate(color, {
c26dd0 20     theme
3d1681 21   });
V 22 }
23
5b8eb4 24 export function getThemeColors(color?: string) {
3d1681 25   const tc = color || primaryColor;
c26dd0 26   const lightColors = generateAntColors(tc);
3d1681 27   const primary = colors[5];
c26dd0 28   const modeColors = generateAntColors(primary, 'dark');
3d1681 29
c26dd0 30   return [...lightColors, ...modeColors];
3d1681 31 }
V 32
33 export function generateColors({
34   color = primaryColor,
35   mixLighten,
36   mixDarken,
37   tinycolor,
38 }: GenerateColorsParams) {
1b71db 39   const arr = new Array(19).fill(0);
67962f 40   const lightens = arr.map((_t, i) => {
3d1681 41     return mixLighten(color, i / 5);
V 42   });
43
67962f 44   const darkens = arr.map((_t, i) => {
3d1681 45     return mixDarken(color, i / 5);
V 46   });
47
67962f 48   const alphaColors = arr.map((_t, i) => {
3d1681 49     return tinycolor(color)
V 50       .setAlpha(i / 20)
51       .toRgbString();
52   });
53
c77f7e 54   const shortAlphaColors = alphaColors.map((item) => item.replace(/\s/g, '').replace(/0\./g, '.'));
V 55
1b71db 56   const tinycolorLightens = arr
67962f 57     .map((_t, i) => {
3d1681 58       return tinycolor(color)
V 59         .lighten(i * 5)
60         .toHexString();
61     })
62     .filter((item) => item !== '#ffffff');
63
1b71db 64   const tinycolorDarkens = arr
67962f 65     .map((_t, i) => {
3d1681 66       return tinycolor(color)
V 67         .darken(i * 5)
68         .toHexString();
69     })
70     .filter((item) => item !== '#000000');
c77f7e 71   return [
V 72     ...lightens,
73     ...darkens,
74     ...alphaColors,
75     ...shortAlphaColors,
76     ...tinycolorDarkens,
77     ...tinycolorLightens,
78   ].filter((item) => !item.includes('-'));
3d1681 79 }