@tamagui/themes 2.0.0-1768586279389 → 2.0.0-1768696252732
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/.turbo/turbo-build.log +1 -1
- package/dist/cjs/defaultColorThemes.cjs +103 -0
- package/dist/cjs/defaultColorThemes.js +96 -0
- package/dist/cjs/defaultColorThemes.js.map +6 -0
- package/dist/cjs/defaultColorThemes.native.js +120 -0
- package/dist/cjs/defaultColorThemes.native.js.map +1 -0
- package/dist/cjs/defaultGrandChildrenThemes.cjs +45 -0
- package/dist/cjs/defaultGrandChildrenThemes.js +28 -0
- package/dist/cjs/defaultGrandChildrenThemes.js.map +6 -0
- package/dist/cjs/defaultGrandChildrenThemes.native.js +48 -0
- package/dist/cjs/defaultGrandChildrenThemes.native.js.map +1 -0
- package/dist/cjs/generated-v4-tamagui.cjs +49 -49
- package/dist/cjs/generated-v4-tamagui.js +49 -49
- package/dist/cjs/generated-v4-tamagui.js.map +1 -1
- package/dist/cjs/generated-v4-tamagui.native.js +49 -49
- package/dist/cjs/generated-v4.cjs +29 -29
- package/dist/cjs/generated-v4.js +29 -29
- package/dist/cjs/generated-v4.js.map +1 -1
- package/dist/cjs/generated-v4.native.js +29 -29
- package/dist/cjs/generated-v5.cjs +454 -1040
- package/dist/cjs/generated-v5.js +694 -1420
- package/dist/cjs/generated-v5.js.map +1 -1
- package/dist/cjs/generated-v5.native.js +454 -1040
- package/dist/cjs/generated-v5.native.js.map +1 -1
- package/dist/cjs/opacify.cjs +53 -0
- package/dist/cjs/opacify.js +46 -0
- package/dist/cjs/opacify.js.map +2 -2
- package/dist/cjs/opacify.native.js +57 -0
- package/dist/cjs/opacify.native.js.map +1 -1
- package/dist/cjs/v5-palettes.cjs +124 -0
- package/dist/cjs/v5-palettes.js +149 -0
- package/dist/cjs/v5-palettes.js.map +6 -0
- package/dist/cjs/v5-palettes.native.js +127 -0
- package/dist/cjs/v5-palettes.native.js.map +1 -0
- package/dist/cjs/v5-themes.cjs +114 -288
- package/dist/cjs/v5-themes.js +88 -290
- package/dist/cjs/v5-themes.js.map +2 -2
- package/dist/cjs/v5-themes.native.js +125 -299
- package/dist/cjs/v5-themes.native.js.map +1 -1
- package/dist/cjs/v5.cjs +5 -0
- package/dist/cjs/v5.js +5 -0
- package/dist/cjs/v5.js.map +1 -1
- package/dist/cjs/v5.native.js +5 -0
- package/dist/cjs/v5.native.js.map +1 -1
- package/dist/esm/defaultColorThemes.js +92 -0
- package/dist/esm/defaultColorThemes.js.map +6 -0
- package/dist/esm/defaultColorThemes.mjs +79 -0
- package/dist/esm/defaultColorThemes.mjs.map +1 -0
- package/dist/esm/defaultColorThemes.native.js +93 -0
- package/dist/esm/defaultColorThemes.native.js.map +1 -0
- package/dist/esm/defaultGrandChildrenThemes.js +12 -0
- package/dist/esm/defaultGrandChildrenThemes.js.map +6 -0
- package/dist/esm/defaultGrandChildrenThemes.mjs +22 -0
- package/dist/esm/defaultGrandChildrenThemes.mjs.map +1 -0
- package/dist/esm/defaultGrandChildrenThemes.native.js +22 -0
- package/dist/esm/defaultGrandChildrenThemes.native.js.map +1 -0
- package/dist/esm/generated-v4-tamagui.js +49 -49
- package/dist/esm/generated-v4-tamagui.js.map +1 -1
- package/dist/esm/generated-v4-tamagui.mjs +49 -49
- package/dist/esm/generated-v4-tamagui.mjs.map +1 -1
- package/dist/esm/generated-v4-tamagui.native.js +49 -49
- package/dist/esm/generated-v4.js +29 -29
- package/dist/esm/generated-v4.js.map +1 -1
- package/dist/esm/generated-v4.mjs +29 -29
- package/dist/esm/generated-v4.mjs.map +1 -1
- package/dist/esm/generated-v4.native.js +29 -29
- package/dist/esm/generated-v5.js +694 -1420
- package/dist/esm/generated-v5.js.map +1 -1
- package/dist/esm/generated-v5.mjs +454 -1040
- package/dist/esm/generated-v5.mjs.map +1 -1
- package/dist/esm/generated-v5.native.js +454 -1040
- package/dist/esm/generated-v5.native.js.map +1 -1
- package/dist/esm/opacify.js +46 -0
- package/dist/esm/opacify.js.map +2 -2
- package/dist/esm/opacify.mjs +53 -1
- package/dist/esm/opacify.mjs.map +1 -1
- package/dist/esm/opacify.native.js +57 -1
- package/dist/esm/opacify.native.js.map +1 -1
- package/dist/esm/v5-palettes.js +144 -0
- package/dist/esm/v5-palettes.js.map +6 -0
- package/dist/esm/v5-palettes.mjs +92 -0
- package/dist/esm/v5-palettes.mjs.map +1 -0
- package/dist/esm/v5-palettes.native.js +92 -0
- package/dist/esm/v5-palettes.native.js.map +1 -0
- package/dist/esm/v5-themes.js +99 -309
- package/dist/esm/v5-themes.js.map +1 -1
- package/dist/esm/v5-themes.mjs +112 -287
- package/dist/esm/v5-themes.mjs.map +1 -1
- package/dist/esm/v5-themes.native.js +123 -298
- package/dist/esm/v5-themes.native.js.map +1 -1
- package/dist/esm/v5.js +13 -2
- package/dist/esm/v5.js.map +1 -1
- package/dist/esm/v5.mjs +3 -3
- package/dist/esm/v5.mjs.map +1 -1
- package/dist/esm/v5.native.js +3 -3
- package/dist/esm/v5.native.js.map +1 -1
- package/package.json +7 -7
- package/src/defaultColorThemes.ts +120 -0
- package/src/defaultGrandChildrenThemes.ts +27 -0
- package/src/generated-v4-tamagui.ts +48 -48
- package/src/generated-v4.ts +28 -28
- package/src/generated-v5.ts +859 -2036
- package/src/opacify.ts +89 -0
- package/src/v5-palettes.ts +158 -0
- package/src/v5-themes.ts +215 -415
- package/src/v5.tsx +8 -2
- package/tests/v5-themes.test.ts +197 -0
- package/tsconfig.json +1 -0
- package/types/defaultColorThemes.d.ts +69 -0
- package/types/defaultColorThemes.d.ts.map +1 -0
- package/types/defaultGrandChildrenThemes.d.ts +31 -0
- package/types/defaultGrandChildrenThemes.d.ts.map +1 -0
- package/types/generated-v5.d.ts +83 -138
- package/types/generated-v5.d.ts.map +1 -1
- package/types/opacify.d.ts +7 -0
- package/types/opacify.d.ts.map +1 -1
- package/types/v3-themes.d.ts +1 -1
- package/types/v4-default.d.ts +10 -10
- package/types/v4-default.d.ts.map +1 -1
- package/types/v4-tamagui.d.ts +6 -6
- package/types/v4-tamagui.d.ts.map +1 -1
- package/types/v5-palettes.d.ts +94 -0
- package/types/v5-palettes.d.ts.map +1 -0
- package/types/v5-themes.d.ts +190 -590
- package/types/v5-themes.d.ts.map +1 -1
- package/types/v5.d.ts +2 -2
- package/types/v5.d.ts.map +1 -1
package/src/opacify.ts
CHANGED
|
@@ -1,3 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interpolate between two colors
|
|
3
|
+
* @param color1 - First color (hex or hsl)
|
|
4
|
+
* @param color2 - Second color (hex or hsl)
|
|
5
|
+
* @param amount - 0 = color1, 1 = color2, 0.5 = middle
|
|
6
|
+
*/
|
|
7
|
+
export function interpolateColor(color1: string, color2: string, amount: number): string {
|
|
8
|
+
const rgb1 = parseToRgb(color1)
|
|
9
|
+
const rgb2 = parseToRgb(color2)
|
|
10
|
+
if (!rgb1 || !rgb2) return color1
|
|
11
|
+
|
|
12
|
+
const r = Math.round(rgb1.r + (rgb2.r - rgb1.r) * amount)
|
|
13
|
+
const g = Math.round(rgb1.g + (rgb2.g - rgb1.g) * amount)
|
|
14
|
+
const b = Math.round(rgb1.b + (rgb2.b - rgb1.b) * amount)
|
|
15
|
+
|
|
16
|
+
return `rgb(${r}, ${g}, ${b})`
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function parseToRgb(color: string): { r: number; g: number; b: number } | null {
|
|
20
|
+
if (typeof color !== 'string') return null
|
|
21
|
+
|
|
22
|
+
// Handle hex
|
|
23
|
+
if (color.startsWith('#')) {
|
|
24
|
+
let hex = color.slice(1)
|
|
25
|
+
if (hex.length === 3) {
|
|
26
|
+
hex = hex
|
|
27
|
+
.split('')
|
|
28
|
+
.map((c) => c + c)
|
|
29
|
+
.join('')
|
|
30
|
+
}
|
|
31
|
+
if (hex.length >= 6) {
|
|
32
|
+
return {
|
|
33
|
+
r: Number.parseInt(hex.slice(0, 2), 16),
|
|
34
|
+
g: Number.parseInt(hex.slice(2, 4), 16),
|
|
35
|
+
b: Number.parseInt(hex.slice(4, 6), 16),
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Handle rgb/rgba
|
|
41
|
+
if (color.startsWith('rgb')) {
|
|
42
|
+
const match = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/)
|
|
43
|
+
if (match) {
|
|
44
|
+
return {
|
|
45
|
+
r: Number.parseInt(match[1], 10),
|
|
46
|
+
g: Number.parseInt(match[2], 10),
|
|
47
|
+
b: Number.parseInt(match[3], 10),
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Handle hsl/hsla
|
|
53
|
+
if (color.startsWith('hsl')) {
|
|
54
|
+
const match = color.match(/hsla?\((\d+),\s*(\d+)%,\s*(\d+)%/)
|
|
55
|
+
if (match) {
|
|
56
|
+
const h = Number.parseInt(match[1], 10)
|
|
57
|
+
const s = Number.parseInt(match[2], 10) / 100
|
|
58
|
+
const l = Number.parseInt(match[3], 10) / 100
|
|
59
|
+
return hslToRgb(h, s, l)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return null
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function hslToRgb(h: number, s: number, l: number): { r: number; g: number; b: number } {
|
|
67
|
+
let r: number
|
|
68
|
+
let g: number
|
|
69
|
+
let b: number
|
|
70
|
+
if (s === 0) {
|
|
71
|
+
r = g = b = l
|
|
72
|
+
} else {
|
|
73
|
+
const hue2rgb = (p: number, q: number, t: number) => {
|
|
74
|
+
if (t < 0) t += 1
|
|
75
|
+
if (t > 1) t -= 1
|
|
76
|
+
if (t < 1 / 6) return p + (q - p) * 6 * t
|
|
77
|
+
if (t < 1 / 2) return q
|
|
78
|
+
if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6
|
|
79
|
+
return p
|
|
80
|
+
}
|
|
81
|
+
const q = l < 0.5 ? l * (1 + s) : l + s - l * s
|
|
82
|
+
const p = 2 * l - q
|
|
83
|
+
r = hue2rgb(p, q, h / 360 + 1 / 3)
|
|
84
|
+
g = hue2rgb(p, q, h / 360)
|
|
85
|
+
b = hue2rgb(p, q, h / 360 - 1 / 3)
|
|
86
|
+
}
|
|
87
|
+
return { r: Math.round(r * 255), g: Math.round(g * 255), b: Math.round(b * 255) }
|
|
88
|
+
}
|
|
89
|
+
|
|
1
90
|
export function opacify(color: string, opacity = 0.1): string {
|
|
2
91
|
// Handle dynamic color objects (from $theme-dark/$theme-light)
|
|
3
92
|
if (typeof color !== 'string') return color
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import {
|
|
2
|
+
blue,
|
|
3
|
+
blueDark,
|
|
4
|
+
gray,
|
|
5
|
+
grayDark,
|
|
6
|
+
green,
|
|
7
|
+
greenDark,
|
|
8
|
+
red,
|
|
9
|
+
redDark,
|
|
10
|
+
yellow,
|
|
11
|
+
yellowDark,
|
|
12
|
+
} from '@tamagui/colors'
|
|
13
|
+
|
|
14
|
+
// Base palettes (12 colors each)
|
|
15
|
+
export const darkPalette = [
|
|
16
|
+
'#050505',
|
|
17
|
+
'#151515',
|
|
18
|
+
'#191919',
|
|
19
|
+
'#232323',
|
|
20
|
+
'#282828',
|
|
21
|
+
'#323232',
|
|
22
|
+
'#424242',
|
|
23
|
+
'#494949',
|
|
24
|
+
'#545454',
|
|
25
|
+
'#626262',
|
|
26
|
+
'#a5a5a5',
|
|
27
|
+
'#fff',
|
|
28
|
+
]
|
|
29
|
+
|
|
30
|
+
export const lightPalette = [
|
|
31
|
+
'#fff',
|
|
32
|
+
'#f8f8f8',
|
|
33
|
+
'hsl(0, 0%, 93%)',
|
|
34
|
+
'hsl(0, 0%, 87%)',
|
|
35
|
+
'hsl(0, 0%, 80%)',
|
|
36
|
+
'hsl(0, 0%, 74%)',
|
|
37
|
+
'hsl(0, 0%, 68%)',
|
|
38
|
+
'hsl(0, 0%, 60%)',
|
|
39
|
+
'hsl(0, 0%, 48%)',
|
|
40
|
+
'hsl(0, 0%, 38%)',
|
|
41
|
+
'hsl(0, 0%, 20%)',
|
|
42
|
+
'hsl(0, 0%, 2%)',
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Neutral grey palette with sufficient contrast on both white and black backgrounds.
|
|
47
|
+
* Uses the same values for both light and dark themes.
|
|
48
|
+
*/
|
|
49
|
+
export const neutralPalette = [
|
|
50
|
+
'hsl(0, 0%, 68%)',
|
|
51
|
+
'hsl(0, 0%, 65%)',
|
|
52
|
+
'hsl(0, 0%, 62%)',
|
|
53
|
+
'hsl(0, 0%, 59%)',
|
|
54
|
+
'hsl(0, 0%, 56%)',
|
|
55
|
+
'hsl(0, 0%, 53%)',
|
|
56
|
+
'hsl(0, 0%, 50%)',
|
|
57
|
+
'hsl(0, 0%, 47%)',
|
|
58
|
+
'hsl(0, 0%, 44%)',
|
|
59
|
+
'hsl(0, 0%, 41%)',
|
|
60
|
+
'hsl(0, 0%, 38%)',
|
|
61
|
+
'hsl(0, 0%, 32%)',
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
// White/black with opacity variants (same on both light and dark)
|
|
65
|
+
export const whiteBlack = {
|
|
66
|
+
white: 'rgba(255,255,255,1)',
|
|
67
|
+
white0: 'rgba(255,255,255,0)',
|
|
68
|
+
white02: 'rgba(255,255,255,0.2)',
|
|
69
|
+
white04: 'rgba(255,255,255,0.4)',
|
|
70
|
+
white06: 'rgba(255,255,255,0.6)',
|
|
71
|
+
white08: 'rgba(255,255,255,0.8)',
|
|
72
|
+
black: 'rgba(0,0,0,1)',
|
|
73
|
+
black0: 'rgba(0,0,0,0)',
|
|
74
|
+
black02: 'rgba(0,0,0,0.2)',
|
|
75
|
+
black04: 'rgba(0,0,0,0.4)',
|
|
76
|
+
black06: 'rgba(0,0,0,0.6)',
|
|
77
|
+
black08: 'rgba(0,0,0,0.8)',
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export const darkShadows = {
|
|
81
|
+
shadow1: 'rgba(0,0,0,0.1)',
|
|
82
|
+
shadow2: 'rgba(0,0,0,0.18)',
|
|
83
|
+
shadow3: 'rgba(0,0,0,0.25)',
|
|
84
|
+
shadow4: 'rgba(0,0,0,0.4)',
|
|
85
|
+
shadow5: 'rgba(0,0,0,0.55)',
|
|
86
|
+
shadow6: 'rgba(0,0,0,0.66)',
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export const lightShadows = {
|
|
90
|
+
shadow1: 'rgba(0,0,0,0.025)',
|
|
91
|
+
shadow2: 'rgba(0,0,0,0.04)',
|
|
92
|
+
shadow3: 'rgba(0,0,0,0.06)',
|
|
93
|
+
shadow4: 'rgba(0,0,0,0.095)',
|
|
94
|
+
shadow5: 'rgba(0,0,0,0.195)',
|
|
95
|
+
shadow6: 'rgba(0,0,0,0.3)',
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Named palette colors (for base.extra)
|
|
99
|
+
export const blackColors = {
|
|
100
|
+
black1: darkPalette[0]!,
|
|
101
|
+
black2: darkPalette[1]!,
|
|
102
|
+
black3: darkPalette[2]!,
|
|
103
|
+
black4: darkPalette[3]!,
|
|
104
|
+
black5: darkPalette[4]!,
|
|
105
|
+
black6: darkPalette[5]!,
|
|
106
|
+
black7: darkPalette[6]!,
|
|
107
|
+
black8: darkPalette[7]!,
|
|
108
|
+
black9: darkPalette[8]!,
|
|
109
|
+
black10: darkPalette[9]!,
|
|
110
|
+
black11: darkPalette[10]!,
|
|
111
|
+
black12: darkPalette[11]!,
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
export const whiteColors = {
|
|
115
|
+
white1: lightPalette[0]!,
|
|
116
|
+
white2: lightPalette[1]!,
|
|
117
|
+
white3: lightPalette[2]!,
|
|
118
|
+
white4: lightPalette[3]!,
|
|
119
|
+
white5: lightPalette[4]!,
|
|
120
|
+
white6: lightPalette[5]!,
|
|
121
|
+
white7: lightPalette[6]!,
|
|
122
|
+
white8: lightPalette[7]!,
|
|
123
|
+
white9: lightPalette[8]!,
|
|
124
|
+
white10: lightPalette[9]!,
|
|
125
|
+
white11: lightPalette[10]!,
|
|
126
|
+
white12: lightPalette[11]!,
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export const neutral = {
|
|
130
|
+
neutral1: neutralPalette[0]!,
|
|
131
|
+
neutral2: neutralPalette[1]!,
|
|
132
|
+
neutral3: neutralPalette[2]!,
|
|
133
|
+
neutral4: neutralPalette[3]!,
|
|
134
|
+
neutral5: neutralPalette[4]!,
|
|
135
|
+
neutral6: neutralPalette[5]!,
|
|
136
|
+
neutral7: neutralPalette[6]!,
|
|
137
|
+
neutral8: neutralPalette[7]!,
|
|
138
|
+
neutral9: neutralPalette[8]!,
|
|
139
|
+
neutral10: neutralPalette[9]!,
|
|
140
|
+
neutral11: neutralPalette[10]!,
|
|
141
|
+
neutral12: neutralPalette[11]!,
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Legacy palettes object (used by themes-new.ts, templates.tsx)
|
|
145
|
+
export const palettes = {
|
|
146
|
+
dark: darkPalette,
|
|
147
|
+
light: lightPalette,
|
|
148
|
+
dark_blue: Object.values(blueDark),
|
|
149
|
+
light_blue: Object.values(blue),
|
|
150
|
+
dark_gray: Object.values(grayDark),
|
|
151
|
+
light_gray: Object.values(gray),
|
|
152
|
+
dark_green: Object.values(greenDark),
|
|
153
|
+
light_green: Object.values(green),
|
|
154
|
+
dark_red: Object.values(redDark),
|
|
155
|
+
light_red: Object.values(red),
|
|
156
|
+
dark_yellow: Object.values(yellowDark),
|
|
157
|
+
light_yellow: Object.values(yellow),
|
|
158
|
+
}
|