@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.
Files changed (46) hide show
  1. package/dist/cjs/buildThemeSuite.js +31 -12
  2. package/dist/cjs/buildThemeSuite.js.map +1 -1
  3. package/dist/cjs/buildThemeSuite.native.js +31 -12
  4. package/dist/cjs/buildThemeSuite.native.js.map +1 -1
  5. package/dist/cjs/buildThemeSuitePalettes.js +27 -8
  6. package/dist/cjs/buildThemeSuitePalettes.js.map +2 -2
  7. package/dist/cjs/buildThemeSuitePalettes.native.js +27 -8
  8. package/dist/cjs/buildThemeSuitePalettes.native.js.map +2 -2
  9. package/dist/cjs/buildThemeSuiteScales.js +35 -60
  10. package/dist/cjs/buildThemeSuiteScales.js.map +1 -1
  11. package/dist/cjs/buildThemeSuiteScales.native.js +35 -61
  12. package/dist/cjs/buildThemeSuiteScales.native.js.map +2 -2
  13. package/dist/cjs/masks.js +143 -0
  14. package/dist/cjs/masks.js.map +6 -0
  15. package/dist/cjs/masks.native.js +144 -0
  16. package/dist/cjs/masks.native.js.map +6 -0
  17. package/dist/esm/buildThemeSuite.js +22 -3
  18. package/dist/esm/buildThemeSuite.js.map +1 -1
  19. package/dist/esm/buildThemeSuite.native.js +22 -3
  20. package/dist/esm/buildThemeSuite.native.js.map +1 -1
  21. package/dist/esm/buildThemeSuitePalettes.js +27 -9
  22. package/dist/esm/buildThemeSuitePalettes.js.map +2 -2
  23. package/dist/esm/buildThemeSuitePalettes.native.js +27 -9
  24. package/dist/esm/buildThemeSuitePalettes.native.js.map +2 -2
  25. package/dist/esm/buildThemeSuiteScales.js +34 -58
  26. package/dist/esm/buildThemeSuiteScales.js.map +1 -1
  27. package/dist/esm/buildThemeSuiteScales.native.js +34 -59
  28. package/dist/esm/buildThemeSuiteScales.native.js.map +2 -2
  29. package/dist/esm/masks.js +130 -0
  30. package/dist/esm/masks.js.map +6 -0
  31. package/dist/esm/masks.native.js +130 -0
  32. package/dist/esm/masks.native.js.map +6 -0
  33. package/package.json +3 -3
  34. package/src/buildThemeSuite.ts +26 -4
  35. package/src/buildThemeSuitePalettes.ts +102 -29
  36. package/src/buildThemeSuiteScales.ts +78 -76
  37. package/src/masks.ts +147 -0
  38. package/src/types.ts +23 -4
  39. package/types/buildThemeSuite.d.ts.map +1 -1
  40. package/types/buildThemeSuitePalettes.d.ts.map +1 -1
  41. package/types/buildThemeSuiteScales.d.ts +129 -10
  42. package/types/buildThemeSuiteScales.d.ts.map +1 -1
  43. package/types/masks.d.ts +110 -0
  44. package/types/masks.d.ts.map +1 -0
  45. package/types/types.d.ts +18 -4
  46. 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.9",
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.9",
30
+ "@tamagui/create-theme": "1.79.11",
31
31
  "color2k": "^2.0.2"
32
32
  },
33
33
  "devDependencies": {
34
- "@tamagui/build": "1.79.9"
34
+ "@tamagui/build": "1.79.11"
35
35
  },
36
36
  "publishConfig": {
37
37
  "access": "public"
@@ -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 as any)
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: 'accentLight',
205
+ template: 'active',
184
206
  palette: 'lightAccent',
185
207
  },
186
208
 
187
209
  {
188
210
  parent: 'dark_accent',
189
- template: 'accentDark',
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 { getThemeSuiteScale } from './buildThemeSuiteScales'
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
- // const { color, scale, accent, accentColor, accentScale } = theme
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 color = forAccent ? theme.accent || theme.color : theme.color
24
- const scale = forAccent ? theme.accentScale || theme.scale : theme.scale
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
- const { lumScale, satScale } = getThemeSuiteScale(theme, forAccent)
27
- const [hue, sat, lum] = parseToHsla(color)
28
- const isDark = scheme === 'dark'
36
+ if (anchorIndex !== 0) {
37
+ const lastAnchor = anchors[anchorIndex - 1]
38
+ const steps = anchor.index - lastAnchor.index
29
39
 
30
- const lumValues = isDark ? lumScale.dark : lumScale.light
40
+ const lastHue = lastAnchor.hue[scheme]
41
+ const lastSat = lastAnchor.sat[scheme]
42
+ const lastLum = lastAnchor.lum[scheme]
31
43
 
32
- let palette: string[] = lumValues.map((lum, idx) => {
33
- if (sat > 0) {
34
- if (satScale) {
35
- return hsla(hue, satScale[scheme][idx], lum, 1)
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 baseAccent = forAccent ? theme.color : theme.accent
60
- const accentHsla = parseToHsla(baseAccent)
61
- const accentLum = accentHsla[2]
62
- const isAccentLight = accentLum > 0.5
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(bg)
145
+ palette.unshift(accentPalette[11])
73
146
  // push color
74
- palette.push(fg)
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)')