@tamagui/theme-builder 1.79.6 → 1.79.8
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 +62 -90
- package/dist/cjs/buildThemeSuite.js.map +1 -1
- package/dist/cjs/buildThemeSuite.native.js +62 -90
- package/dist/cjs/buildThemeSuite.native.js.map +1 -1
- package/dist/cjs/buildThemeSuiteScales.js +37 -4
- package/dist/cjs/buildThemeSuiteScales.js.map +1 -1
- package/dist/cjs/buildThemeSuiteScales.native.js +38 -4
- package/dist/cjs/buildThemeSuiteScales.native.js.map +2 -2
- package/dist/esm/buildThemeSuite.js +62 -90
- package/dist/esm/buildThemeSuite.js.map +1 -1
- package/dist/esm/buildThemeSuite.native.js +62 -90
- package/dist/esm/buildThemeSuite.native.js.map +1 -1
- package/dist/esm/buildThemeSuiteScales.js +37 -5
- package/dist/esm/buildThemeSuiteScales.js.map +1 -1
- package/dist/esm/buildThemeSuiteScales.native.js +38 -5
- package/dist/esm/buildThemeSuiteScales.native.js.map +2 -2
- package/package.json +3 -3
- package/src/buildThemeSuite.ts +34 -35
- package/src/buildThemeSuiteScales.ts +49 -6
- package/src/types.ts +1 -3
- package/types/buildThemeSuite.d.ts.map +1 -1
- package/types/buildThemeSuiteScales.d.ts +6 -0
- package/types/buildThemeSuiteScales.d.ts.map +1 -1
- package/types/types.d.ts +1 -4
- package/types/types.d.ts.map +1 -1
package/src/buildThemeSuite.ts
CHANGED
|
@@ -117,40 +117,40 @@ export function buildThemeSuite({ baseTheme, subThemes }: BuildThemeSuiteProps)
|
|
|
117
117
|
...baseTemplate,
|
|
118
118
|
}
|
|
119
119
|
|
|
120
|
-
const accentTemplateLight = {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
const accentTemplateDark = {
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
}
|
|
120
|
+
// const accentTemplateLight = {
|
|
121
|
+
// background: 0,
|
|
122
|
+
// backgroundHover: 1,
|
|
123
|
+
// backgroundPress: baseTemplate.backgroundPress + 4,
|
|
124
|
+
// backgroundFocus: baseTemplate.backgroundFocus + 4,
|
|
125
|
+
// borderColor: baseTemplate.borderColor + 2,
|
|
126
|
+
// borderColorHover: baseTemplate.borderColorHover + 2,
|
|
127
|
+
// borderColorFocus: baseTemplate.borderColorFocus + 2,
|
|
128
|
+
// borderColorPress: baseTemplate.borderColorPress + 2,
|
|
129
|
+
// color: -5,
|
|
130
|
+
// colorHover: -6,
|
|
131
|
+
// colorPress: -7,
|
|
132
|
+
// colorFocus: -5,
|
|
133
|
+
// }
|
|
134
|
+
|
|
135
|
+
// const accentTemplateDark = {
|
|
136
|
+
// background: baseTemplate.background + 4,
|
|
137
|
+
// backgroundHover: baseTemplate.backgroundHover + 5,
|
|
138
|
+
// backgroundPress: baseTemplate.backgroundPress + 3,
|
|
139
|
+
// backgroundFocus: baseTemplate.backgroundFocus + 5,
|
|
140
|
+
// borderColor: baseTemplate.borderColor + 2,
|
|
141
|
+
// borderColorHover: baseTemplate.borderColorHover + 2,
|
|
142
|
+
// borderColorFocus: baseTemplate.borderColorFocus + 2,
|
|
143
|
+
// borderColorPress: baseTemplate.borderColorPress + 2,
|
|
144
|
+
// color: -5,
|
|
145
|
+
// colorHover: -6,
|
|
146
|
+
// colorPress: -7,
|
|
147
|
+
// colorFocus: -5,
|
|
148
|
+
// }
|
|
149
149
|
|
|
150
150
|
return {
|
|
151
151
|
base: template,
|
|
152
|
-
accentLight:
|
|
153
|
-
accentDark:
|
|
152
|
+
accentLight: template,
|
|
153
|
+
accentDark: template,
|
|
154
154
|
}
|
|
155
155
|
}
|
|
156
156
|
|
|
@@ -216,10 +216,7 @@ export function buildThemeSuite({ baseTheme, subThemes }: BuildThemeSuiteProps)
|
|
|
216
216
|
...customMaskOptions.component,
|
|
217
217
|
},
|
|
218
218
|
|
|
219
|
-
Switch:
|
|
220
|
-
mask: 'soften2',
|
|
221
|
-
...customMaskOptions.component,
|
|
222
|
-
},
|
|
219
|
+
Switch: componentTheme,
|
|
223
220
|
|
|
224
221
|
SwitchThumb: {
|
|
225
222
|
mask: 'inverse',
|
|
@@ -367,6 +364,8 @@ export function buildThemeSuite({ baseTheme, subThemes }: BuildThemeSuiteProps)
|
|
|
367
364
|
|
|
368
365
|
const built = builder.build()
|
|
369
366
|
|
|
367
|
+
console.info('built themes', built)
|
|
368
|
+
|
|
370
369
|
return {
|
|
371
370
|
built,
|
|
372
371
|
palettes,
|
|
@@ -1,19 +1,54 @@
|
|
|
1
|
-
import { parseToHsla } from 'color2k'
|
|
1
|
+
import { hsla, parseToHsla, toHex } from 'color2k'
|
|
2
2
|
|
|
3
3
|
import { BuildTheme, ScaleTypeName } from './types'
|
|
4
4
|
|
|
5
|
+
export function getColorForegroundBackground(color: string, isDarkMode = false) {
|
|
6
|
+
const [h, s, l] = parseToHsla(color)
|
|
7
|
+
const isColorLight = l > 0.5
|
|
8
|
+
const oppositeLightness = l > 0.5 ? 1 - l : 0.5 + l
|
|
9
|
+
const oppositeLightnessColor = toHex(hsla(h, s, oppositeLightness, 1))
|
|
10
|
+
const foreground = isDarkMode ? color : oppositeLightnessColor
|
|
11
|
+
const background = foreground === color ? oppositeLightnessColor : color
|
|
12
|
+
return {
|
|
13
|
+
foreground,
|
|
14
|
+
foregroundLightness: foreground === color ? l : oppositeLightness,
|
|
15
|
+
background,
|
|
16
|
+
backgroundLightness: foreground !== color ? l : oppositeLightness,
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
5
20
|
export const getThemeSuiteScale = (theme: BuildTheme, accent?: boolean): ScaleType => {
|
|
6
|
-
const
|
|
21
|
+
const baseColor = accent ? theme.accent || theme.color : theme.color
|
|
7
22
|
const scale = accent ? theme.accentScale || theme.scale : theme.scale
|
|
8
23
|
|
|
9
|
-
let base = scaleTypes[
|
|
24
|
+
let base = scaleTypes[scale]
|
|
10
25
|
|
|
11
|
-
if (!
|
|
26
|
+
if (!baseColor) {
|
|
12
27
|
return base
|
|
13
28
|
}
|
|
14
29
|
|
|
15
|
-
const [h, s, l] = parseToHsla(
|
|
16
|
-
|
|
30
|
+
const [h, s, l] = parseToHsla(baseColor)
|
|
31
|
+
|
|
32
|
+
if (scale === 'automatic') {
|
|
33
|
+
const lightColors = getColorForegroundBackground(baseColor, false)
|
|
34
|
+
const darkColors = getColorForegroundBackground(baseColor, true)
|
|
35
|
+
|
|
36
|
+
const scaleLen = 12
|
|
37
|
+
const arr = new Array(scaleLen).fill(0)
|
|
38
|
+
|
|
39
|
+
function getScale(bgL: number, fgL: number) {
|
|
40
|
+
const stepSize = (fgL - bgL) / scaleLen
|
|
41
|
+
return arr.map((_, i) => bgL + i * stepSize)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
...base,
|
|
46
|
+
lumScale: {
|
|
47
|
+
light: getScale(lightColors.backgroundLightness, lightColors.foregroundLightness),
|
|
48
|
+
dark: getScale(darkColors.backgroundLightness, darkColors.foregroundLightness),
|
|
49
|
+
},
|
|
50
|
+
}
|
|
51
|
+
}
|
|
17
52
|
|
|
18
53
|
return {
|
|
19
54
|
...base,
|
|
@@ -44,6 +79,14 @@ export type ScaleType<A extends ScaleTypeName = ScaleTypeName> = {
|
|
|
44
79
|
}
|
|
45
80
|
|
|
46
81
|
export const scaleTypes: Record<ScaleTypeName, ScaleType> = {
|
|
82
|
+
automatic: {
|
|
83
|
+
createdFrom: 'automatic',
|
|
84
|
+
name: 'Automatic',
|
|
85
|
+
lumScale: {
|
|
86
|
+
light: [],
|
|
87
|
+
dark: [],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
47
90
|
radix: {
|
|
48
91
|
name: 'Radius',
|
|
49
92
|
createdFrom: 'radix',
|
package/src/types.ts
CHANGED
|
@@ -21,6 +21,7 @@ export type BuildThemeSuitePalettes = {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export type ScaleTypeName =
|
|
24
|
+
| 'automatic'
|
|
24
25
|
| 'radix'
|
|
25
26
|
| 'radix-b'
|
|
26
27
|
| 'radius-bold'
|
|
@@ -42,11 +43,8 @@ export type BuildTheme = BuildThemeBase & {
|
|
|
42
43
|
type: 'theme'
|
|
43
44
|
color: string
|
|
44
45
|
scale: ScaleTypeName
|
|
45
|
-
spreadLuminance?: number
|
|
46
|
-
spreadSaturation?: number
|
|
47
46
|
template?: Template
|
|
48
47
|
accent?: string
|
|
49
|
-
accentColor?: string
|
|
50
48
|
accentScale?: ScaleTypeName
|
|
51
49
|
}
|
|
52
50
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildThemeSuite.d.ts","sourceRoot":"","sources":["../src/buildThemeSuite.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9D,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"buildThemeSuite.d.ts","sourceRoot":"","sources":["../src/buildThemeSuite.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAE9D,wBAAgB,eAAe,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuW7E;AAED,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAA"}
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import { BuildTheme, ScaleTypeName } from './types';
|
|
2
|
+
export declare function getColorForegroundBackground(color: string, isDarkMode?: boolean): {
|
|
3
|
+
foreground: string;
|
|
4
|
+
foregroundLightness: number;
|
|
5
|
+
background: string;
|
|
6
|
+
backgroundLightness: number;
|
|
7
|
+
};
|
|
2
8
|
export declare const getThemeSuiteScale: (theme: BuildTheme, accent?: boolean) => ScaleType;
|
|
3
9
|
export type ScaleType<A extends ScaleTypeName = ScaleTypeName> = {
|
|
4
10
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildThemeSuiteScales.d.ts","sourceRoot":"","sources":["../src/buildThemeSuiteScales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEnD,eAAO,MAAM,kBAAkB,UAAW,UAAU,WAAW,OAAO,KAAG,
|
|
1
|
+
{"version":3,"file":"buildThemeSuiteScales.d.ts","sourceRoot":"","sources":["../src/buildThemeSuiteScales.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAEnD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,UAAQ;;;;;EAa7E;AAED,eAAO,MAAM,kBAAkB,UAAW,UAAU,WAAW,OAAO,KAAG,SA8CxE,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,IAAI;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,CAAC,CAAA;IACf,QAAQ,EAAE;QACR,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACpB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KACpB,CAAA;IACD,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACpB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KACpB,CAAA;CACF,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,aAAa,EAAE,SAAS,CAkIvD,CAAA"}
|
package/types/types.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export type BuildThemeSuitePalettes = {
|
|
|
15
15
|
lightAccent?: string[];
|
|
16
16
|
darkAccent?: string[];
|
|
17
17
|
};
|
|
18
|
-
export type ScaleTypeName = 'radix' | 'radix-b' | 'radius-bold' | 'radius-bright' | 'linear' | 'pastel' | 'pastel-desaturating' | 'neon' | 'neon-bright' | 'neon-c';
|
|
18
|
+
export type ScaleTypeName = 'automatic' | 'radix' | 'radix-b' | 'radius-bold' | 'radius-bright' | 'linear' | 'pastel' | 'pastel-desaturating' | 'neon' | 'neon-bright' | 'neon-c';
|
|
19
19
|
export type BuildThemeBase = {
|
|
20
20
|
id: string;
|
|
21
21
|
name: string;
|
|
@@ -25,11 +25,8 @@ export type BuildTheme = BuildThemeBase & {
|
|
|
25
25
|
type: 'theme';
|
|
26
26
|
color: string;
|
|
27
27
|
scale: ScaleTypeName;
|
|
28
|
-
spreadLuminance?: number;
|
|
29
|
-
spreadSaturation?: number;
|
|
30
28
|
template?: Template;
|
|
31
29
|
accent?: string;
|
|
32
|
-
accentColor?: string;
|
|
33
30
|
accentScale?: ScaleTypeName;
|
|
34
31
|
};
|
|
35
32
|
export type BuildMask = {
|
package/types/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,UAAU,CAAA;IACrB,SAAS,CAAC,EAAE,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,CAAA;IAC3C,aAAa,CAAC,EAAE,WAAW,CAAA;IAC3B,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,QAAQ,CAAA;QACd,WAAW,EAAE,QAAQ,CAAA;QACrB,UAAU,EAAE,QAAQ,CAAA;KACrB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,SAAS,GACT,aAAa,GACb,eAAe,GACf,QAAQ,GACR,QAAQ,GACR,qBAAqB,GACrB,MAAM,GACN,aAAa,GACb,QAAQ,CAAA;AAEZ,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IACxC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,aAAa,CAAA;IACpB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAE7D,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,UAAU,CAAA;IACrB,SAAS,CAAC,EAAE,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,CAAA;IAC3C,aAAa,CAAC,EAAE,WAAW,CAAA;IAC3B,SAAS,CAAC,EAAE;QACV,IAAI,EAAE,QAAQ,CAAA;QACd,WAAW,EAAE,QAAQ,CAAA;QACrB,UAAU,EAAE,QAAQ,CAAA;KACrB,CAAA;CACF,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,OAAO,GACP,SAAS,GACT,aAAa,GACb,eAAe,GACf,QAAQ,GACR,QAAQ,GACR,qBAAqB,GACrB,MAAM,GACN,aAAa,GACb,QAAQ,CAAA;AAEZ,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG;IACxC,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,aAAa,CAAA;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,aAAa,CAAA;CAC5B,CAAA;AAGD,MAAM,MAAM,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,CACrC;IACE,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;CACjB,GACD;IACE,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,GACD;IACE,IAAI,EAAE,SAAS,CAAA;CAChB,GACD;IACE,IAAI,EAAE,kBAAkB,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;CACjB,GACD;IACE,IAAI,EAAE,cAAc,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB,CACJ,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,EAAE,CAAA;CACnB,CAAA"}
|