@tamagui/theme-builder 1.79.9 → 1.79.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/buildThemeSuite.js +31 -12
- package/dist/cjs/buildThemeSuite.js.map +1 -1
- package/dist/cjs/buildThemeSuite.native.js +31 -12
- package/dist/cjs/buildThemeSuite.native.js.map +1 -1
- package/dist/cjs/buildThemeSuitePalettes.js +27 -8
- package/dist/cjs/buildThemeSuitePalettes.js.map +2 -2
- package/dist/cjs/buildThemeSuitePalettes.native.js +27 -8
- package/dist/cjs/buildThemeSuitePalettes.native.js.map +2 -2
- package/dist/cjs/buildThemeSuiteScales.js +35 -60
- package/dist/cjs/buildThemeSuiteScales.js.map +1 -1
- package/dist/cjs/buildThemeSuiteScales.native.js +35 -61
- package/dist/cjs/buildThemeSuiteScales.native.js.map +2 -2
- package/dist/cjs/masks.js +143 -0
- package/dist/cjs/masks.js.map +6 -0
- package/dist/cjs/masks.native.js +144 -0
- package/dist/cjs/masks.native.js.map +6 -0
- package/dist/esm/buildThemeSuite.js +22 -3
- package/dist/esm/buildThemeSuite.js.map +1 -1
- package/dist/esm/buildThemeSuite.native.js +22 -3
- package/dist/esm/buildThemeSuite.native.js.map +1 -1
- package/dist/esm/buildThemeSuitePalettes.js +27 -9
- package/dist/esm/buildThemeSuitePalettes.js.map +2 -2
- package/dist/esm/buildThemeSuitePalettes.native.js +27 -9
- package/dist/esm/buildThemeSuitePalettes.native.js.map +2 -2
- package/dist/esm/buildThemeSuiteScales.js +34 -58
- package/dist/esm/buildThemeSuiteScales.js.map +1 -1
- package/dist/esm/buildThemeSuiteScales.native.js +34 -59
- package/dist/esm/buildThemeSuiteScales.native.js.map +2 -2
- package/dist/esm/masks.js +130 -0
- package/dist/esm/masks.js.map +6 -0
- package/dist/esm/masks.native.js +130 -0
- package/dist/esm/masks.native.js.map +6 -0
- package/package.json +3 -3
- package/src/buildThemeSuite.ts +26 -4
- package/src/buildThemeSuitePalettes.ts +102 -29
- package/src/buildThemeSuiteScales.ts +78 -76
- package/src/masks.ts +147 -0
- package/src/types.ts +23 -4
- package/types/buildThemeSuite.d.ts.map +1 -1
- package/types/buildThemeSuitePalettes.d.ts.map +1 -1
- package/types/buildThemeSuiteScales.d.ts +129 -10
- package/types/buildThemeSuiteScales.d.ts.map +1 -1
- package/types/masks.d.ts +110 -0
- package/types/masks.d.ts.map +1 -0
- package/types/types.d.ts +18 -4
- package/types/types.d.ts.map +1 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import {
|
|
2
|
+
combineMasks,
|
|
3
|
+
createIdentityMask,
|
|
4
|
+
createInverseMask,
|
|
5
|
+
createMask,
|
|
6
|
+
createSoftenMask,
|
|
7
|
+
createStrengthenMask,
|
|
8
|
+
skipMask
|
|
9
|
+
} from "@tamagui/create-theme";
|
|
10
|
+
const shadows = {
|
|
11
|
+
shadowColor: 0,
|
|
12
|
+
shadowColorHover: 0,
|
|
13
|
+
shadowColorPress: 0,
|
|
14
|
+
shadowColorFocus: 0
|
|
15
|
+
}, colors = {
|
|
16
|
+
...shadows,
|
|
17
|
+
color: 0,
|
|
18
|
+
colorHover: 0,
|
|
19
|
+
colorFocus: 0,
|
|
20
|
+
colorPress: 0
|
|
21
|
+
}, templateColorsSpecific = {
|
|
22
|
+
color1: 1,
|
|
23
|
+
color2: 2,
|
|
24
|
+
color3: 3,
|
|
25
|
+
color4: 4,
|
|
26
|
+
color5: 5,
|
|
27
|
+
color6: 6,
|
|
28
|
+
color7: 7,
|
|
29
|
+
color8: 8,
|
|
30
|
+
color9: 9,
|
|
31
|
+
color10: 10,
|
|
32
|
+
color11: 11,
|
|
33
|
+
color12: 12
|
|
34
|
+
}, skipShadowsAndSpecificColors = {
|
|
35
|
+
...shadows,
|
|
36
|
+
...templateColorsSpecific
|
|
37
|
+
}, PALETTE_LEN = 14, baseMaskOptions = {
|
|
38
|
+
override: shadows,
|
|
39
|
+
skip: shadows,
|
|
40
|
+
// avoids the transparent ends
|
|
41
|
+
max: PALETTE_LEN - 2,
|
|
42
|
+
min: 1
|
|
43
|
+
}, maskOptions = {
|
|
44
|
+
component: {
|
|
45
|
+
...baseMaskOptions,
|
|
46
|
+
override: colors,
|
|
47
|
+
skip: skipShadowsAndSpecificColors
|
|
48
|
+
},
|
|
49
|
+
alt: {
|
|
50
|
+
...baseMaskOptions
|
|
51
|
+
},
|
|
52
|
+
button: {
|
|
53
|
+
...baseMaskOptions,
|
|
54
|
+
override: {
|
|
55
|
+
...colors,
|
|
56
|
+
borderColor: "transparent",
|
|
57
|
+
borderColorHover: "transparent"
|
|
58
|
+
},
|
|
59
|
+
skip: skipShadowsAndSpecificColors
|
|
60
|
+
}
|
|
61
|
+
}, masks = {
|
|
62
|
+
identity: createIdentityMask(),
|
|
63
|
+
soften: createSoftenMask(),
|
|
64
|
+
soften2: createSoftenMask({ strength: 2 }),
|
|
65
|
+
soften3: createSoftenMask({ strength: 3 }),
|
|
66
|
+
strengthen: createStrengthenMask(),
|
|
67
|
+
inverse: createInverseMask(),
|
|
68
|
+
inverseSoften: combineMasks(createInverseMask(), createSoftenMask({ strength: 2 })),
|
|
69
|
+
inverseSoften2: combineMasks(createInverseMask(), createSoftenMask({ strength: 3 })),
|
|
70
|
+
inverseSoften3: combineMasks(createInverseMask(), createSoftenMask({ strength: 4 })),
|
|
71
|
+
inverseStrengthen2: combineMasks(
|
|
72
|
+
createInverseMask(),
|
|
73
|
+
createStrengthenMask({ strength: 2 })
|
|
74
|
+
),
|
|
75
|
+
strengthenButSoftenBorder: createMask((template, options) => {
|
|
76
|
+
const stronger = createStrengthenMask().mask(template, options), softer = createSoftenMask().mask(template, options);
|
|
77
|
+
return {
|
|
78
|
+
...stronger,
|
|
79
|
+
borderColor: softer.borderColor,
|
|
80
|
+
borderColorHover: softer.borderColorHover,
|
|
81
|
+
borderColorPress: softer.borderColorPress,
|
|
82
|
+
borderColorFocus: softer.borderColorFocus
|
|
83
|
+
};
|
|
84
|
+
}),
|
|
85
|
+
soften2Border1: createMask((template, options) => {
|
|
86
|
+
const softer2 = createSoftenMask({ strength: 2 }).mask(template, options), softer1 = createSoftenMask({ strength: 1 }).mask(template, options);
|
|
87
|
+
return {
|
|
88
|
+
...softer2,
|
|
89
|
+
borderColor: softer1.borderColor,
|
|
90
|
+
borderColorHover: softer1.borderColorHover,
|
|
91
|
+
borderColorPress: softer1.borderColorPress,
|
|
92
|
+
borderColorFocus: softer1.borderColorFocus
|
|
93
|
+
};
|
|
94
|
+
}),
|
|
95
|
+
soften3FlatBorder: createMask((template, options) => {
|
|
96
|
+
const borderMask = createSoftenMask({ strength: 2 }).mask(template, options);
|
|
97
|
+
return {
|
|
98
|
+
...createSoftenMask({ strength: 3 }).mask(template, options),
|
|
99
|
+
borderColor: borderMask.borderColor,
|
|
100
|
+
borderColorHover: borderMask.borderColorHover,
|
|
101
|
+
borderColorPress: borderMask.borderColorPress,
|
|
102
|
+
borderColorFocus: borderMask.borderColorFocus
|
|
103
|
+
};
|
|
104
|
+
}),
|
|
105
|
+
softenBorder: createMask((template, options) => {
|
|
106
|
+
const plain = skipMask.mask(template, options), softer = createSoftenMask().mask(template, options);
|
|
107
|
+
return {
|
|
108
|
+
...plain,
|
|
109
|
+
borderColor: softer.borderColor,
|
|
110
|
+
borderColorHover: softer.borderColorHover,
|
|
111
|
+
borderColorPress: softer.borderColorPress,
|
|
112
|
+
borderColorFocus: softer.borderColorFocus
|
|
113
|
+
};
|
|
114
|
+
}),
|
|
115
|
+
softenBorder2: createMask((template, options) => {
|
|
116
|
+
const plain = skipMask.mask(template, options), softer = createSoftenMask({ strength: 2 }).mask(template, options);
|
|
117
|
+
return {
|
|
118
|
+
...plain,
|
|
119
|
+
borderColor: softer.borderColor,
|
|
120
|
+
borderColorHover: softer.borderColorHover,
|
|
121
|
+
borderColorPress: softer.borderColorPress,
|
|
122
|
+
borderColorFocus: softer.borderColorFocus
|
|
123
|
+
};
|
|
124
|
+
})
|
|
125
|
+
};
|
|
126
|
+
export {
|
|
127
|
+
maskOptions,
|
|
128
|
+
masks
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=masks.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/masks.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import {
|
|
2
|
+
combineMasks,
|
|
3
|
+
createIdentityMask,
|
|
4
|
+
createInverseMask,
|
|
5
|
+
createMask,
|
|
6
|
+
createSoftenMask,
|
|
7
|
+
createStrengthenMask,
|
|
8
|
+
skipMask
|
|
9
|
+
} from "@tamagui/create-theme";
|
|
10
|
+
const shadows = {
|
|
11
|
+
shadowColor: 0,
|
|
12
|
+
shadowColorHover: 0,
|
|
13
|
+
shadowColorPress: 0,
|
|
14
|
+
shadowColorFocus: 0
|
|
15
|
+
}, colors = {
|
|
16
|
+
...shadows,
|
|
17
|
+
color: 0,
|
|
18
|
+
colorHover: 0,
|
|
19
|
+
colorFocus: 0,
|
|
20
|
+
colorPress: 0
|
|
21
|
+
}, templateColorsSpecific = {
|
|
22
|
+
color1: 1,
|
|
23
|
+
color2: 2,
|
|
24
|
+
color3: 3,
|
|
25
|
+
color4: 4,
|
|
26
|
+
color5: 5,
|
|
27
|
+
color6: 6,
|
|
28
|
+
color7: 7,
|
|
29
|
+
color8: 8,
|
|
30
|
+
color9: 9,
|
|
31
|
+
color10: 10,
|
|
32
|
+
color11: 11,
|
|
33
|
+
color12: 12
|
|
34
|
+
}, skipShadowsAndSpecificColors = {
|
|
35
|
+
...shadows,
|
|
36
|
+
...templateColorsSpecific
|
|
37
|
+
}, PALETTE_LEN = 14, baseMaskOptions = {
|
|
38
|
+
override: shadows,
|
|
39
|
+
skip: shadows,
|
|
40
|
+
// avoids the transparent ends
|
|
41
|
+
max: PALETTE_LEN - 2,
|
|
42
|
+
min: 1
|
|
43
|
+
}, maskOptions = {
|
|
44
|
+
component: {
|
|
45
|
+
...baseMaskOptions,
|
|
46
|
+
override: colors,
|
|
47
|
+
skip: skipShadowsAndSpecificColors
|
|
48
|
+
},
|
|
49
|
+
alt: {
|
|
50
|
+
...baseMaskOptions
|
|
51
|
+
},
|
|
52
|
+
button: {
|
|
53
|
+
...baseMaskOptions,
|
|
54
|
+
override: {
|
|
55
|
+
...colors,
|
|
56
|
+
borderColor: "transparent",
|
|
57
|
+
borderColorHover: "transparent"
|
|
58
|
+
},
|
|
59
|
+
skip: skipShadowsAndSpecificColors
|
|
60
|
+
}
|
|
61
|
+
}, masks = {
|
|
62
|
+
identity: createIdentityMask(),
|
|
63
|
+
soften: createSoftenMask(),
|
|
64
|
+
soften2: createSoftenMask({ strength: 2 }),
|
|
65
|
+
soften3: createSoftenMask({ strength: 3 }),
|
|
66
|
+
strengthen: createStrengthenMask(),
|
|
67
|
+
inverse: createInverseMask(),
|
|
68
|
+
inverseSoften: combineMasks(createInverseMask(), createSoftenMask({ strength: 2 })),
|
|
69
|
+
inverseSoften2: combineMasks(createInverseMask(), createSoftenMask({ strength: 3 })),
|
|
70
|
+
inverseSoften3: combineMasks(createInverseMask(), createSoftenMask({ strength: 4 })),
|
|
71
|
+
inverseStrengthen2: combineMasks(
|
|
72
|
+
createInverseMask(),
|
|
73
|
+
createStrengthenMask({ strength: 2 })
|
|
74
|
+
),
|
|
75
|
+
strengthenButSoftenBorder: createMask((template, options) => {
|
|
76
|
+
const stronger = createStrengthenMask().mask(template, options), softer = createSoftenMask().mask(template, options);
|
|
77
|
+
return {
|
|
78
|
+
...stronger,
|
|
79
|
+
borderColor: softer.borderColor,
|
|
80
|
+
borderColorHover: softer.borderColorHover,
|
|
81
|
+
borderColorPress: softer.borderColorPress,
|
|
82
|
+
borderColorFocus: softer.borderColorFocus
|
|
83
|
+
};
|
|
84
|
+
}),
|
|
85
|
+
soften2Border1: createMask((template, options) => {
|
|
86
|
+
const softer2 = createSoftenMask({ strength: 2 }).mask(template, options), softer1 = createSoftenMask({ strength: 1 }).mask(template, options);
|
|
87
|
+
return {
|
|
88
|
+
...softer2,
|
|
89
|
+
borderColor: softer1.borderColor,
|
|
90
|
+
borderColorHover: softer1.borderColorHover,
|
|
91
|
+
borderColorPress: softer1.borderColorPress,
|
|
92
|
+
borderColorFocus: softer1.borderColorFocus
|
|
93
|
+
};
|
|
94
|
+
}),
|
|
95
|
+
soften3FlatBorder: createMask((template, options) => {
|
|
96
|
+
const borderMask = createSoftenMask({ strength: 2 }).mask(template, options);
|
|
97
|
+
return {
|
|
98
|
+
...createSoftenMask({ strength: 3 }).mask(template, options),
|
|
99
|
+
borderColor: borderMask.borderColor,
|
|
100
|
+
borderColorHover: borderMask.borderColorHover,
|
|
101
|
+
borderColorPress: borderMask.borderColorPress,
|
|
102
|
+
borderColorFocus: borderMask.borderColorFocus
|
|
103
|
+
};
|
|
104
|
+
}),
|
|
105
|
+
softenBorder: createMask((template, options) => {
|
|
106
|
+
const plain = skipMask.mask(template, options), softer = createSoftenMask().mask(template, options);
|
|
107
|
+
return {
|
|
108
|
+
...plain,
|
|
109
|
+
borderColor: softer.borderColor,
|
|
110
|
+
borderColorHover: softer.borderColorHover,
|
|
111
|
+
borderColorPress: softer.borderColorPress,
|
|
112
|
+
borderColorFocus: softer.borderColorFocus
|
|
113
|
+
};
|
|
114
|
+
}),
|
|
115
|
+
softenBorder2: createMask((template, options) => {
|
|
116
|
+
const plain = skipMask.mask(template, options), softer = createSoftenMask({ strength: 2 }).mask(template, options);
|
|
117
|
+
return {
|
|
118
|
+
...plain,
|
|
119
|
+
borderColor: softer.borderColor,
|
|
120
|
+
borderColorHover: softer.borderColorHover,
|
|
121
|
+
borderColorPress: softer.borderColorPress,
|
|
122
|
+
borderColorFocus: softer.borderColorFocus
|
|
123
|
+
};
|
|
124
|
+
})
|
|
125
|
+
};
|
|
126
|
+
export {
|
|
127
|
+
maskOptions,
|
|
128
|
+
masks
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=masks.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/masks.ts"],
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": []
|
|
6
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/theme-builder",
|
|
3
|
-
"version": "1.79.
|
|
3
|
+
"version": "1.79.11",
|
|
4
4
|
"source": "src/index.ts",
|
|
5
5
|
"types": "./types/index.d.ts",
|
|
6
6
|
"main": "dist/cjs",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tamagui/create-theme": "1.79.
|
|
30
|
+
"@tamagui/create-theme": "1.79.11",
|
|
31
31
|
"color2k": "^2.0.2"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@tamagui/build": "1.79.
|
|
34
|
+
"@tamagui/build": "1.79.11"
|
|
35
35
|
},
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public"
|
package/src/buildThemeSuite.ts
CHANGED
|
@@ -4,13 +4,28 @@ import {
|
|
|
4
4
|
createMask,
|
|
5
5
|
createSoftenMask,
|
|
6
6
|
} from '@tamagui/create-theme'
|
|
7
|
-
import { masks as defaultMasks, maskOptions } from '@tamagui/themes'
|
|
8
7
|
|
|
9
8
|
import { buildMask } from './buildMask'
|
|
10
9
|
import { getThemeSuitePalettes } from './buildThemeSuitePalettes'
|
|
10
|
+
import { masks as defaultMasks, maskOptions } from './masks'
|
|
11
11
|
import { createThemeBuilder } from './ThemeBuilder'
|
|
12
12
|
import { BuildThemeMask, BuildThemeSuiteProps } from './types'
|
|
13
13
|
|
|
14
|
+
// its offset by some transparent values etc
|
|
15
|
+
const basePaletteOffset = 5
|
|
16
|
+
const namedTemplateSlots = {
|
|
17
|
+
background: basePaletteOffset,
|
|
18
|
+
subtleBackground: basePaletteOffset + 1,
|
|
19
|
+
uiBackground: basePaletteOffset + 2,
|
|
20
|
+
hoverUIBackround: basePaletteOffset + 3,
|
|
21
|
+
activeUIBackround: basePaletteOffset + 4,
|
|
22
|
+
subtleBorder: basePaletteOffset + 5,
|
|
23
|
+
strongBorder: basePaletteOffset + 6,
|
|
24
|
+
hoverBorder: basePaletteOffset + 7,
|
|
25
|
+
strongBackground: basePaletteOffset + 8,
|
|
26
|
+
hoverStrongBackground: basePaletteOffset + 9,
|
|
27
|
+
}
|
|
28
|
+
|
|
14
29
|
export function buildThemeSuite({ baseTheme, subThemes }: BuildThemeSuiteProps) {
|
|
15
30
|
const theme = baseTheme
|
|
16
31
|
|
|
@@ -25,7 +40,7 @@ export function buildThemeSuite({ baseTheme, subThemes }: BuildThemeSuiteProps)
|
|
|
25
40
|
)
|
|
26
41
|
|
|
27
42
|
// base palletes need to add in sub theme palettes if customized
|
|
28
|
-
const palettes = getThemeSuitePalettes(theme
|
|
43
|
+
const palettes = getThemeSuitePalettes(theme)
|
|
29
44
|
|
|
30
45
|
const max = palettes.dark.length - 1
|
|
31
46
|
const min = 1
|
|
@@ -149,6 +164,13 @@ export function buildThemeSuite({ baseTheme, subThemes }: BuildThemeSuiteProps)
|
|
|
149
164
|
|
|
150
165
|
return {
|
|
151
166
|
base: template,
|
|
167
|
+
active: {
|
|
168
|
+
...template,
|
|
169
|
+
background: namedTemplateSlots.strongBackground,
|
|
170
|
+
backgroundHover: namedTemplateSlots.hoverStrongBackground,
|
|
171
|
+
backgroundPress: namedTemplateSlots.hoverBorder,
|
|
172
|
+
backgroundFocus: namedTemplateSlots.strongBackground,
|
|
173
|
+
},
|
|
152
174
|
accentLight: template,
|
|
153
175
|
accentDark: template,
|
|
154
176
|
}
|
|
@@ -180,13 +202,13 @@ export function buildThemeSuite({ baseTheme, subThemes }: BuildThemeSuiteProps)
|
|
|
180
202
|
const componentTheme = [
|
|
181
203
|
{
|
|
182
204
|
parent: 'light_accent',
|
|
183
|
-
template: '
|
|
205
|
+
template: 'active',
|
|
184
206
|
palette: 'lightAccent',
|
|
185
207
|
},
|
|
186
208
|
|
|
187
209
|
{
|
|
188
210
|
parent: 'dark_accent',
|
|
189
|
-
template: '
|
|
211
|
+
template: 'active',
|
|
190
212
|
palette: 'darkAccent',
|
|
191
213
|
},
|
|
192
214
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { hsla, parseToHsla, toHex } from 'color2k'
|
|
2
2
|
|
|
3
|
-
import {
|
|
4
|
-
import { BuildTheme, BuildThemeSuitePalettes } from './types'
|
|
3
|
+
import { BuildTheme, BuildThemeAnchor, BuildThemeSuitePalettes } from './types'
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* palette generally is:
|
|
@@ -9,6 +8,8 @@ import { BuildTheme, BuildThemeSuitePalettes } from './types'
|
|
|
9
8
|
* [constrastBackground, backgroundTransparent, ...background, ...foreground, foregroundTransparent, accentForeground]
|
|
10
9
|
*/
|
|
11
10
|
|
|
11
|
+
const paletteSize = 12
|
|
12
|
+
|
|
12
13
|
const generateColorPalette = ({
|
|
13
14
|
theme,
|
|
14
15
|
scheme,
|
|
@@ -18,27 +19,106 @@ const generateColorPalette = ({
|
|
|
18
19
|
scheme: 'light' | 'dark'
|
|
19
20
|
forAccent?: boolean
|
|
20
21
|
}) => {
|
|
21
|
-
|
|
22
|
+
const baseTheme = forAccent ? theme.accent || theme : theme
|
|
23
|
+
const { anchors, scale } = baseTheme
|
|
24
|
+
|
|
25
|
+
let palette: string[] = []
|
|
26
|
+
|
|
27
|
+
const add = (h: number, s: number, l: number) => {
|
|
28
|
+
palette.push(hsla(h, s, l, 1))
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const numAnchors = Object.keys(anchors).length
|
|
22
32
|
|
|
23
|
-
const
|
|
24
|
-
|
|
33
|
+
for (const [anchorIndex, anchor] of anchors.entries()) {
|
|
34
|
+
const [h, s, l] = [anchor.hue[scheme], anchor.sat[scheme], anchor.lum[scheme]]
|
|
25
35
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
36
|
+
if (anchorIndex !== 0) {
|
|
37
|
+
const lastAnchor = anchors[anchorIndex - 1]
|
|
38
|
+
const steps = anchor.index - lastAnchor.index
|
|
29
39
|
|
|
30
|
-
|
|
40
|
+
const lastHue = lastAnchor.hue[scheme]
|
|
41
|
+
const lastSat = lastAnchor.sat[scheme]
|
|
42
|
+
const lastLum = lastAnchor.lum[scheme]
|
|
31
43
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
44
|
+
const stepHue = (lastHue - h) / steps
|
|
45
|
+
const stepSat = (lastSat - s) / steps
|
|
46
|
+
const stepLum = (lastLum - l) / steps
|
|
47
|
+
|
|
48
|
+
// backfill:
|
|
49
|
+
for (let step = lastAnchor.index + 1; step < anchor.index; step++) {
|
|
50
|
+
const str = anchor.index - step
|
|
51
|
+
add(h + stepHue * str, s + stepSat * str, l + stepLum * str)
|
|
36
52
|
}
|
|
37
|
-
return hsla(hue, sat, lum, 1)
|
|
38
53
|
}
|
|
39
|
-
return hsla(0, 0, lum, 1)
|
|
40
|
-
})
|
|
41
54
|
|
|
55
|
+
add(h, s, l)
|
|
56
|
+
|
|
57
|
+
const isLastAnchor = anchorIndex === numAnchors - 1
|
|
58
|
+
if (isLastAnchor && palette.length < paletteSize) {
|
|
59
|
+
// forwardfill:
|
|
60
|
+
for (let step = anchor.index + 1; step < paletteSize; step++) {
|
|
61
|
+
add(h, s, l)
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// if (strategy?.type === 'automatic') {
|
|
67
|
+
// const hslas = {
|
|
68
|
+
// background: parseToHsla(strategy.background),
|
|
69
|
+
// foreground: parseToHsla(strategy.foreground),
|
|
70
|
+
// }
|
|
71
|
+
|
|
72
|
+
// palette = [
|
|
73
|
+
// // backgrounds
|
|
74
|
+
// ...new Array(10).fill(0).map((_, i) => {
|
|
75
|
+
// const [h, s, l] = hslas.background
|
|
76
|
+
|
|
77
|
+
// if (isDark) {
|
|
78
|
+
// const str = 9 - i
|
|
79
|
+
// const minLum = 0.05
|
|
80
|
+
// const by = (l - minLum) / 10
|
|
81
|
+
|
|
82
|
+
// return hsla(
|
|
83
|
+
// h,
|
|
84
|
+
// s,
|
|
85
|
+
// // go to dark or light
|
|
86
|
+
// l - by * str,
|
|
87
|
+
// 1
|
|
88
|
+
// )
|
|
89
|
+
// } else {
|
|
90
|
+
// const str = 9 - i
|
|
91
|
+
// const maxLum = 0.95
|
|
92
|
+
// const by = (maxLum - l) / 10
|
|
93
|
+
// return hsla(h, s, l + by * str, 1)
|
|
94
|
+
// }
|
|
95
|
+
// }),
|
|
96
|
+
// // colors
|
|
97
|
+
// ...new Array(2).fill(0).map((_, i) => {
|
|
98
|
+
// const [h, s, l] = hslas.foreground
|
|
99
|
+
// return hsla(
|
|
100
|
+
// h,
|
|
101
|
+
// s,
|
|
102
|
+
// // go to dark or light
|
|
103
|
+
// l - (i === 0 ? 0.1 : 0) - (forAccent ? 1 - l : 0),
|
|
104
|
+
// 1
|
|
105
|
+
// )
|
|
106
|
+
// }),
|
|
107
|
+
// ]
|
|
108
|
+
// } else {
|
|
109
|
+
// const lumValues = isDark ? lumScale.dark : lumScale.light
|
|
110
|
+
// palette = lumValues.map((lum, idx) => {
|
|
111
|
+
// const sat = satScale[scheme][idx]
|
|
112
|
+
|
|
113
|
+
// if (theme.hueColor && idx >= 10) {
|
|
114
|
+
// return hsla(theme.hueColor, sat, lum, 1)
|
|
115
|
+
// }
|
|
116
|
+
|
|
117
|
+
// return hsla(hue, sat, lum, 1)
|
|
118
|
+
// })
|
|
119
|
+
// }
|
|
120
|
+
|
|
121
|
+
// add transparent values
|
|
42
122
|
const [background] = palette
|
|
43
123
|
const foreground = palette[palette.length - 1]
|
|
44
124
|
|
|
@@ -56,22 +136,15 @@ const generateColorPalette = ({
|
|
|
56
136
|
palette = [...transparentValues[0], ...palette, ...reverseForeground]
|
|
57
137
|
|
|
58
138
|
if (theme.accent) {
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
const oppositeLightnessAccent = isAccentLight
|
|
65
|
-
? toHex(hsla(accentHsla[0], accentHsla[1], 1 - accentLum, 1))
|
|
66
|
-
: theme.accent
|
|
67
|
-
|
|
68
|
-
const fg = isAccentLight && !isDark ? oppositeLightnessAccent : baseAccent
|
|
69
|
-
const bg = fg === baseAccent ? oppositeLightnessAccent : baseAccent
|
|
139
|
+
const accentPalette = generateColorPalette({
|
|
140
|
+
theme: theme.accent,
|
|
141
|
+
scheme,
|
|
142
|
+
})
|
|
70
143
|
|
|
71
144
|
// unshift bg
|
|
72
|
-
palette.unshift(
|
|
145
|
+
palette.unshift(accentPalette[11])
|
|
73
146
|
// push color
|
|
74
|
-
palette.push(
|
|
147
|
+
palette.push(accentPalette[accentPalette.length - 6])
|
|
75
148
|
} else {
|
|
76
149
|
// were keeping the palettes the same length with or without accent to avoid headache
|
|
77
150
|
palette.unshift('rgba(0,0,0,0)')
|