@tenerife.music/ui 1.0.0 → 1.0.1
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/ThemeProvider-CaUX_Jam.cjs +2 -0
- package/dist/ThemeProvider-ltuW-773.js +1227 -0
- package/dist/animation/index.d.ts +9 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/animation/presets.d.ts +304 -0
- package/dist/animation/presets.d.ts.map +1 -0
- package/dist/animation/tas.d.ts +80 -0
- package/dist/animation/tas.d.ts.map +1 -0
- package/dist/animation/types.d.ts +106 -0
- package/dist/animation/types.d.ts.map +1 -0
- package/dist/animation/utils.d.ts +7 -0
- package/dist/animation/utils.d.ts.map +1 -0
- package/dist/components/SectionBuilder.d.ts +37 -0
- package/dist/components/SectionBuilder.d.ts.map +1 -0
- package/dist/components/SectionBuilder.presets.d.ts +229 -0
- package/dist/components/SectionBuilder.presets.d.ts.map +1 -0
- package/dist/components/SectionBuilder.types.d.ts +327 -0
- package/dist/components/SectionBuilder.types.d.ts.map +1 -0
- package/dist/components/auth/ProfileCard.d.ts.map +1 -1
- package/dist/components/cards/EventCard.d.ts +32 -31
- package/dist/components/cards/EventCard.d.ts.map +1 -1
- package/dist/components/cards/VenueCard.d.ts +32 -33
- package/dist/components/cards/VenueCard.d.ts.map +1 -1
- package/dist/components/feedback/Alert.d.ts +1 -1
- package/dist/components/feedback/Alert.d.ts.map +1 -1
- package/dist/components/layout/Box.d.ts +90 -0
- package/dist/components/layout/Box.d.ts.map +1 -0
- package/dist/components/layout/Flex.d.ts +27 -6
- package/dist/components/layout/Flex.d.ts.map +1 -1
- package/dist/components/layout/Grid.d.ts +42 -3
- package/dist/components/layout/Grid.d.ts.map +1 -1
- package/dist/components/layout/Navbar.d.ts +2 -2
- package/dist/components/layout/Navbar.d.ts.map +1 -1
- package/dist/components/layout/Stack.d.ts +21 -4
- package/dist/components/layout/Stack.d.ts.map +1 -1
- package/dist/components/layout/index.d.ts +15 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/layout.types.d.ts +92 -0
- package/dist/components/layout/layout.types.d.ts.map +1 -0
- package/dist/components/modals/ConfirmDialog.d.ts +2 -2
- package/dist/components/modals/ConfirmDialog.d.ts.map +1 -1
- package/dist/components/modals/Modal.d.ts.map +1 -1
- package/dist/components/modals/SimpleModal.d.ts +3 -1
- package/dist/components/modals/SimpleModal.d.ts.map +1 -1
- package/dist/components/navigation/Breadcrumbs.d.ts +1 -0
- package/dist/components/navigation/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/navigation/Pagination.d.ts +1 -0
- package/dist/components/navigation/Pagination.d.ts.map +1 -1
- package/dist/components/overlays/Popover.d.ts +4 -4
- package/dist/components/overlays/Popover.d.ts.map +1 -1
- package/dist/components/overlays/Tooltip.d.ts +2 -2
- package/dist/components/overlays/Tooltip.d.ts.map +1 -1
- package/dist/components/primitives/Badge.d.ts +1 -1
- package/dist/components/primitives/Badge.d.ts.map +1 -1
- package/dist/components/primitives/Link.d.ts +4 -2
- package/dist/components/primitives/Link.d.ts.map +1 -1
- package/dist/components/primitives/ThemeSwitch.d.ts +2 -2
- package/dist/components/primitives/ThemeSwitch.d.ts.map +1 -1
- package/dist/components/primitives/Typography.d.ts +2 -2
- package/dist/components/primitives/Typography.d.ts.map +1 -1
- package/dist/components/sections/ArticlesSection.d.ts +14 -4
- package/dist/components/sections/ArticlesSection.d.ts.map +1 -1
- package/dist/components/sections/CTASection.d.ts +38 -0
- package/dist/components/sections/CTASection.d.ts.map +1 -0
- package/dist/components/sections/FeatureSection.d.ts +34 -0
- package/dist/components/sections/FeatureSection.d.ts.map +1 -0
- package/dist/components/sections/HeroSection.d.ts +28 -0
- package/dist/components/sections/HeroSection.d.ts.map +1 -0
- package/dist/components/sections/TrendingSection.d.ts +15 -3
- package/dist/components/sections/TrendingSection.d.ts.map +1 -1
- package/dist/components/toasts/Toast.d.ts +1 -1
- package/dist/components/toasts/Toast.d.ts.map +1 -1
- package/dist/components/toasts/ToastProvider.d.ts.map +1 -1
- package/dist/components/ui/button.d.ts +4 -2
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +27 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +3893 -2371
- package/dist/lib/a11y.d.ts +16 -0
- package/dist/lib/a11y.d.ts.map +1 -0
- package/dist/lib/responsive-props.d.ts +64 -0
- package/dist/lib/responsive-props.d.ts.map +1 -0
- package/dist/motion-4SRNkZlz.cjs +2 -0
- package/dist/motion-CuHacXY1.js +722 -0
- package/dist/test/animation-utils.d.ts +60 -0
- package/dist/test/animation-utils.d.ts.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +19 -8
- package/dist/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/theme/applyMode.d.ts +11 -2
- package/dist/theme/applyMode.d.ts.map +1 -1
- package/dist/theme/index.cjs +1 -1
- package/dist/theme/index.d.ts +3 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.mjs +236 -101
- package/dist/theme/loader.d.ts +64 -0
- package/dist/theme/loader.d.ts.map +1 -0
- package/dist/theme/registry.d.ts +71 -0
- package/dist/theme/registry.d.ts.map +1 -0
- package/dist/theme/schema.d.ts +125 -0
- package/dist/theme/schema.d.ts.map +1 -0
- package/dist/themes/brand_engine.d.ts +102 -0
- package/dist/themes/brand_engine.d.ts.map +1 -0
- package/dist/themes/index.d.ts +3 -0
- package/dist/themes/index.d.ts.map +1 -1
- package/dist/themes/minimal.d.ts +7 -0
- package/dist/themes/minimal.d.ts.map +1 -0
- package/dist/themes/neon.d.ts +7 -0
- package/dist/themes/neon.d.ts.map +1 -0
- package/dist/themes/types.d.ts +220 -5
- package/dist/themes/types.d.ts.map +1 -1
- package/dist/tokens/css-variables.d.ts +21 -0
- package/dist/tokens/css-variables.d.ts.map +1 -1
- package/dist/tokens/index.cjs +3 -3
- package/dist/tokens/index.mjs +295 -551
- package/dist/tokens/motion.d.ts +77 -0
- package/dist/tokens/motion.d.ts.map +1 -1
- package/package.json +20 -7
- package/dist/applyMode-Bh7sEqT6.js +0 -144
- package/dist/applyMode-DCenL-Bg.cjs +0 -2
- package/dist/colors-BGRiFoSZ.cjs +0 -2
- package/dist/colors-ClemXPPi.js +0 -377
|
@@ -0,0 +1,1227 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as ce } from "react/jsx-runtime";
|
|
3
|
+
import d from "react";
|
|
4
|
+
import "./radius-CAu4qr9R.js";
|
|
5
|
+
import { m as me, p as le, a as de, s as pe, b as N, c as L, d as W, t as q } from "./motion-CuHacXY1.js";
|
|
6
|
+
const ye = {
|
|
7
|
+
id: "minimal",
|
|
8
|
+
name: "Minimal",
|
|
9
|
+
description: "Clean, minimal brand theme with muted colors, light typography, and compact spacing",
|
|
10
|
+
namespace: "minimal",
|
|
11
|
+
version: "1.0.0",
|
|
12
|
+
author: "Tenerife UI",
|
|
13
|
+
themes: [
|
|
14
|
+
{
|
|
15
|
+
id: "minimal-day",
|
|
16
|
+
name: "Minimal Day",
|
|
17
|
+
description: "Light minimal theme with grayscale colors and subtle accents",
|
|
18
|
+
mode: "day",
|
|
19
|
+
overrides: {
|
|
20
|
+
name: "minimal-day",
|
|
21
|
+
description: "Light minimal theme for day mode",
|
|
22
|
+
// Muted, low-saturation color overrides
|
|
23
|
+
primaryColors: {
|
|
24
|
+
400: "0 0% 60%",
|
|
25
|
+
// Muted gray
|
|
26
|
+
500: "0 0% 50%",
|
|
27
|
+
// Neutral gray (#808080)
|
|
28
|
+
600: "0 0% 40%",
|
|
29
|
+
700: "0 0% 30%"
|
|
30
|
+
},
|
|
31
|
+
accentColors: {
|
|
32
|
+
400: "210 20% 70%",
|
|
33
|
+
// Muted blue-gray
|
|
34
|
+
500: "210 20% 60%",
|
|
35
|
+
// Subtle blue-gray
|
|
36
|
+
600: "210 20% 50%",
|
|
37
|
+
700: "210 20% 40%"
|
|
38
|
+
},
|
|
39
|
+
secondaryColors: {
|
|
40
|
+
400: "0 0% 70%",
|
|
41
|
+
// Light gray
|
|
42
|
+
500: "0 0% 65%",
|
|
43
|
+
// Neutral light gray
|
|
44
|
+
600: "0 0% 55%",
|
|
45
|
+
700: "0 0% 45%"
|
|
46
|
+
},
|
|
47
|
+
// Muted base colors for day mode
|
|
48
|
+
baseColorsDay: {
|
|
49
|
+
primary: "0 0% 50%",
|
|
50
|
+
// Neutral gray
|
|
51
|
+
primaryForeground: "0 0% 100%",
|
|
52
|
+
secondary: "0 0% 96%",
|
|
53
|
+
// Very light gray
|
|
54
|
+
secondaryForeground: "0 0% 20%",
|
|
55
|
+
accent: "210 20% 60%",
|
|
56
|
+
// Subtle blue-gray
|
|
57
|
+
accentForeground: "0 0% 100%"
|
|
58
|
+
},
|
|
59
|
+
// Subtle semantic colors
|
|
60
|
+
semanticColorsDay: {
|
|
61
|
+
success: "140 30% 45%",
|
|
62
|
+
// Muted green
|
|
63
|
+
info: "210 30% 50%",
|
|
64
|
+
// Muted blue
|
|
65
|
+
warning: "40 30% 50%",
|
|
66
|
+
// Muted orange
|
|
67
|
+
error: "0 40% 55%"
|
|
68
|
+
// Muted red
|
|
69
|
+
},
|
|
70
|
+
// Typography overrides - lighter and smaller
|
|
71
|
+
typography: {
|
|
72
|
+
fontWeight: {
|
|
73
|
+
normal: "400",
|
|
74
|
+
// Normal weight
|
|
75
|
+
medium: "500",
|
|
76
|
+
semibold: "600",
|
|
77
|
+
// Lighter than default
|
|
78
|
+
bold: "700"
|
|
79
|
+
// Standard bold
|
|
80
|
+
},
|
|
81
|
+
fontSize: {
|
|
82
|
+
xs: [
|
|
83
|
+
"clamp(0.6875rem, 0.65rem + 0.125vw, 0.75rem)",
|
|
84
|
+
{ lineHeight: "1rem", letterSpacing: "0.05em" }
|
|
85
|
+
],
|
|
86
|
+
// Smaller
|
|
87
|
+
sm: [
|
|
88
|
+
"clamp(0.8125rem, 0.75rem + 0.25vw, 0.875rem)",
|
|
89
|
+
{ lineHeight: "1.25rem", letterSpacing: "0.025em" }
|
|
90
|
+
],
|
|
91
|
+
// Smaller
|
|
92
|
+
base: [
|
|
93
|
+
"clamp(0.9375rem, 0.875rem + 0.25vw, 1rem)",
|
|
94
|
+
{ lineHeight: "1.5rem", letterSpacing: "0em" }
|
|
95
|
+
],
|
|
96
|
+
// Smaller
|
|
97
|
+
lg: [
|
|
98
|
+
"clamp(1.0625rem, 0.95rem + 0.5vw, 1.125rem)",
|
|
99
|
+
{ lineHeight: "1.75rem", letterSpacing: "-0.025em" }
|
|
100
|
+
],
|
|
101
|
+
// Smaller
|
|
102
|
+
xl: [
|
|
103
|
+
"clamp(1.1875rem, 1rem + 0.75vw, 1.375rem)",
|
|
104
|
+
{ lineHeight: "1.75rem", letterSpacing: "-0.025em" }
|
|
105
|
+
]
|
|
106
|
+
// Smaller
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
// Spacing overrides - compact spacing for tight layout
|
|
110
|
+
spacing: {
|
|
111
|
+
semanticSpacing: {
|
|
112
|
+
xs: "0.125rem",
|
|
113
|
+
// 2px (was 4px)
|
|
114
|
+
sm: "0.25rem",
|
|
115
|
+
// 4px (was 8px)
|
|
116
|
+
md: "0.5rem",
|
|
117
|
+
// 8px (was 16px)
|
|
118
|
+
lg: "0.75rem",
|
|
119
|
+
// 12px (was 24px)
|
|
120
|
+
xl: "1rem",
|
|
121
|
+
// 16px (was 32px)
|
|
122
|
+
"2xl": "1.5rem"
|
|
123
|
+
// 24px (was 48px)
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
// Shadow overrides - subtle and minimal
|
|
127
|
+
shadows: {
|
|
128
|
+
elevationShadows: {
|
|
129
|
+
xs: "0 1px 1px 0 rgb(0 0 0 / 0.03)",
|
|
130
|
+
sm: "0 1px 2px 0 rgb(0 0 0 / 0.05), 0 1px 1px -1px rgb(0 0 0 / 0.05)",
|
|
131
|
+
md: "0 2px 4px -1px rgb(0 0 0 / 0.05), 0 1px 2px -2px rgb(0 0 0 / 0.05)",
|
|
132
|
+
lg: "0 4px 8px -2px rgb(0 0 0 / 0.05), 0 2px 4px -3px rgb(0 0 0 / 0.05)",
|
|
133
|
+
xl: "0 8px 12px -3px rgb(0 0 0 / 0.05), 0 4px 6px -4px rgb(0 0 0 / 0.05)"
|
|
134
|
+
},
|
|
135
|
+
glowEffects: {
|
|
136
|
+
"glow-primary": "0 0 8px 0 hsl(0 0% 50% / 0.2)",
|
|
137
|
+
"glow-primary-subtle": "0 0 4px 0 hsl(0 0% 50% / 0.15)",
|
|
138
|
+
"glow-primary-medium": "0 0 8px 0 hsl(0 0% 50% / 0.25)",
|
|
139
|
+
"glow-primary-strong": "0 0 12px 0 hsl(0 0% 50% / 0.3)"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
// Radius overrides - smaller, sharper corners
|
|
143
|
+
radius: {
|
|
144
|
+
borderRadius: {
|
|
145
|
+
xs: "0.0625rem",
|
|
146
|
+
// 1px
|
|
147
|
+
sm: "0.125rem",
|
|
148
|
+
// 2px (was 4px)
|
|
149
|
+
md: "0.1875rem",
|
|
150
|
+
// 3px (was 6px)
|
|
151
|
+
lg: "0.25rem",
|
|
152
|
+
// 4px (was 8px)
|
|
153
|
+
xl: "0.375rem",
|
|
154
|
+
// 6px (was 12px)
|
|
155
|
+
"2xl": "0.5rem"
|
|
156
|
+
// 8px (was 16px)
|
|
157
|
+
},
|
|
158
|
+
componentRadius: {
|
|
159
|
+
button: {
|
|
160
|
+
sm: "0.125rem",
|
|
161
|
+
// 2px
|
|
162
|
+
md: "0.1875rem",
|
|
163
|
+
// 3px
|
|
164
|
+
lg: "0.25rem"
|
|
165
|
+
// 4px
|
|
166
|
+
},
|
|
167
|
+
card: {
|
|
168
|
+
sm: "0.1875rem",
|
|
169
|
+
// 3px
|
|
170
|
+
md: "0.25rem",
|
|
171
|
+
// 4px
|
|
172
|
+
lg: "0.375rem",
|
|
173
|
+
// 6px
|
|
174
|
+
xl: "0.5rem"
|
|
175
|
+
// 8px
|
|
176
|
+
},
|
|
177
|
+
input: {
|
|
178
|
+
sm: "0.125rem",
|
|
179
|
+
// 2px
|
|
180
|
+
md: "0.1875rem",
|
|
181
|
+
// 3px
|
|
182
|
+
lg: "0.25rem"
|
|
183
|
+
// 4px
|
|
184
|
+
},
|
|
185
|
+
badge: {
|
|
186
|
+
sm: "0.0625rem",
|
|
187
|
+
// 1px
|
|
188
|
+
md: "0.125rem",
|
|
189
|
+
// 2px
|
|
190
|
+
lg: "0.1875rem"
|
|
191
|
+
// 3px
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
id: "minimal-night",
|
|
199
|
+
name: "Minimal Night",
|
|
200
|
+
description: "Dark minimal theme with muted grayscale colors",
|
|
201
|
+
mode: "night",
|
|
202
|
+
overrides: {
|
|
203
|
+
name: "minimal-night",
|
|
204
|
+
description: "Dark minimal theme for night mode",
|
|
205
|
+
// Muted colors for night mode (slightly lighter than day for contrast)
|
|
206
|
+
primaryColors: {
|
|
207
|
+
400: "0 0% 65%",
|
|
208
|
+
// Lighter gray for night
|
|
209
|
+
500: "0 0% 55%",
|
|
210
|
+
// Neutral gray
|
|
211
|
+
600: "0 0% 45%",
|
|
212
|
+
700: "0 0% 35%"
|
|
213
|
+
},
|
|
214
|
+
accentColors: {
|
|
215
|
+
400: "210 20% 75%",
|
|
216
|
+
// Lighter blue-gray
|
|
217
|
+
500: "210 20% 65%",
|
|
218
|
+
// Subtle blue-gray
|
|
219
|
+
600: "210 20% 55%",
|
|
220
|
+
700: "210 20% 45%"
|
|
221
|
+
},
|
|
222
|
+
secondaryColors: {
|
|
223
|
+
400: "0 0% 75%",
|
|
224
|
+
// Light gray
|
|
225
|
+
500: "0 0% 70%",
|
|
226
|
+
// Neutral light gray
|
|
227
|
+
600: "0 0% 60%",
|
|
228
|
+
700: "0 0% 50%"
|
|
229
|
+
},
|
|
230
|
+
// Darker base colors for night mode
|
|
231
|
+
baseColorsNight: {
|
|
232
|
+
background: "240 10% 8%",
|
|
233
|
+
// Dark gray background
|
|
234
|
+
foreground: "0 0% 95%",
|
|
235
|
+
card: "240 10% 10%",
|
|
236
|
+
cardForeground: "0 0% 95%"
|
|
237
|
+
},
|
|
238
|
+
surfaceColorsNight: {
|
|
239
|
+
base: "240 10% 8%",
|
|
240
|
+
elevated1: "240 10% 10%",
|
|
241
|
+
elevated2: "240 10% 12%",
|
|
242
|
+
elevated3: "240 10% 14%"
|
|
243
|
+
},
|
|
244
|
+
// Subtle semantic colors for night
|
|
245
|
+
semanticColorsNight: {
|
|
246
|
+
success: "140 30% 50%",
|
|
247
|
+
// Muted green
|
|
248
|
+
info: "210 30% 55%",
|
|
249
|
+
// Muted blue
|
|
250
|
+
warning: "40 30% 55%",
|
|
251
|
+
// Muted orange
|
|
252
|
+
error: "0 40% 60%"
|
|
253
|
+
// Muted red
|
|
254
|
+
},
|
|
255
|
+
// Typography overrides - same as day
|
|
256
|
+
typography: {
|
|
257
|
+
fontWeight: {
|
|
258
|
+
normal: "400",
|
|
259
|
+
medium: "500",
|
|
260
|
+
semibold: "600",
|
|
261
|
+
bold: "700"
|
|
262
|
+
},
|
|
263
|
+
fontSize: {
|
|
264
|
+
xs: [
|
|
265
|
+
"clamp(0.6875rem, 0.65rem + 0.125vw, 0.75rem)",
|
|
266
|
+
{ lineHeight: "1rem", letterSpacing: "0.05em" }
|
|
267
|
+
],
|
|
268
|
+
sm: [
|
|
269
|
+
"clamp(0.8125rem, 0.75rem + 0.25vw, 0.875rem)",
|
|
270
|
+
{ lineHeight: "1.25rem", letterSpacing: "0.025em" }
|
|
271
|
+
],
|
|
272
|
+
base: [
|
|
273
|
+
"clamp(0.9375rem, 0.875rem + 0.25vw, 1rem)",
|
|
274
|
+
{ lineHeight: "1.5rem", letterSpacing: "0em" }
|
|
275
|
+
],
|
|
276
|
+
lg: [
|
|
277
|
+
"clamp(1.0625rem, 0.95rem + 0.5vw, 1.125rem)",
|
|
278
|
+
{ lineHeight: "1.75rem", letterSpacing: "-0.025em" }
|
|
279
|
+
],
|
|
280
|
+
xl: [
|
|
281
|
+
"clamp(1.1875rem, 1rem + 0.75vw, 1.375rem)",
|
|
282
|
+
{ lineHeight: "1.75rem", letterSpacing: "-0.025em" }
|
|
283
|
+
]
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
// Spacing overrides - same as day
|
|
287
|
+
spacing: {
|
|
288
|
+
semanticSpacing: {
|
|
289
|
+
xs: "0.125rem",
|
|
290
|
+
sm: "0.25rem",
|
|
291
|
+
md: "0.5rem",
|
|
292
|
+
lg: "0.75rem",
|
|
293
|
+
xl: "1rem",
|
|
294
|
+
"2xl": "1.5rem"
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
// Shadow overrides - subtle for night
|
|
298
|
+
shadows: {
|
|
299
|
+
elevationShadows: {
|
|
300
|
+
xs: "0 1px 2px 0 rgb(0 0 0 / 0.15)",
|
|
301
|
+
sm: "0 1px 3px 0 rgb(0 0 0 / 0.2), 0 1px 2px -1px rgb(0 0 0 / 0.2)",
|
|
302
|
+
md: "0 2px 5px -1px rgb(0 0 0 / 0.2), 0 1px 3px -2px rgb(0 0 0 / 0.2)",
|
|
303
|
+
lg: "0 4px 10px -2px rgb(0 0 0 / 0.2), 0 2px 5px -3px rgb(0 0 0 / 0.2)",
|
|
304
|
+
xl: "0 8px 15px -3px rgb(0 0 0 / 0.2), 0 4px 8px -4px rgb(0 0 0 / 0.2)"
|
|
305
|
+
},
|
|
306
|
+
glowEffects: {
|
|
307
|
+
"glow-primary": "0 0 8px 0 hsl(0 0% 55% / 0.25)",
|
|
308
|
+
"glow-primary-subtle": "0 0 4px 0 hsl(0 0% 55% / 0.2)",
|
|
309
|
+
"glow-primary-medium": "0 0 8px 0 hsl(0 0% 55% / 0.3)",
|
|
310
|
+
"glow-primary-strong": "0 0 12px 0 hsl(0 0% 55% / 0.35)"
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
// Radius overrides - same as day
|
|
314
|
+
radius: {
|
|
315
|
+
borderRadius: {
|
|
316
|
+
xs: "0.0625rem",
|
|
317
|
+
sm: "0.125rem",
|
|
318
|
+
md: "0.1875rem",
|
|
319
|
+
lg: "0.25rem",
|
|
320
|
+
xl: "0.375rem",
|
|
321
|
+
"2xl": "0.5rem"
|
|
322
|
+
},
|
|
323
|
+
componentRadius: {
|
|
324
|
+
button: {
|
|
325
|
+
sm: "0.125rem",
|
|
326
|
+
md: "0.1875rem",
|
|
327
|
+
lg: "0.25rem"
|
|
328
|
+
},
|
|
329
|
+
card: {
|
|
330
|
+
sm: "0.1875rem",
|
|
331
|
+
md: "0.25rem",
|
|
332
|
+
lg: "0.375rem",
|
|
333
|
+
xl: "0.5rem"
|
|
334
|
+
},
|
|
335
|
+
input: {
|
|
336
|
+
sm: "0.125rem",
|
|
337
|
+
md: "0.1875rem",
|
|
338
|
+
lg: "0.25rem"
|
|
339
|
+
},
|
|
340
|
+
badge: {
|
|
341
|
+
sm: "0.0625rem",
|
|
342
|
+
md: "0.125rem",
|
|
343
|
+
lg: "0.1875rem"
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
]
|
|
350
|
+
}, ge = {
|
|
351
|
+
id: "neon",
|
|
352
|
+
name: "Neon",
|
|
353
|
+
description: "Vibrant brand theme with high-saturation neon colors, bold typography, and enhanced visual effects",
|
|
354
|
+
namespace: "neon",
|
|
355
|
+
version: "1.0.0",
|
|
356
|
+
author: "Tenerife UI",
|
|
357
|
+
themes: [
|
|
358
|
+
{
|
|
359
|
+
id: "neon-day",
|
|
360
|
+
name: "Neon Day",
|
|
361
|
+
description: "Bright neon theme for day mode with vibrant cyan, magenta, and yellow accents",
|
|
362
|
+
mode: "day",
|
|
363
|
+
overrides: {
|
|
364
|
+
name: "neon-day",
|
|
365
|
+
description: "Bright neon theme for day mode",
|
|
366
|
+
// Vibrant neon color overrides
|
|
367
|
+
primaryColors: {
|
|
368
|
+
400: "180 100% 50%",
|
|
369
|
+
// Bright cyan
|
|
370
|
+
500: "180 100% 45%",
|
|
371
|
+
// Vibrant cyan (#00e6ff)
|
|
372
|
+
600: "180 95% 40%",
|
|
373
|
+
700: "180 90% 35%"
|
|
374
|
+
},
|
|
375
|
+
accentColors: {
|
|
376
|
+
400: "320 100% 60%",
|
|
377
|
+
// Bright magenta
|
|
378
|
+
500: "320 100% 55%",
|
|
379
|
+
// Vibrant magenta (#ff00cc)
|
|
380
|
+
600: "320 95% 50%",
|
|
381
|
+
700: "320 90% 45%"
|
|
382
|
+
},
|
|
383
|
+
secondaryColors: {
|
|
384
|
+
400: "60 100% 60%",
|
|
385
|
+
// Bright yellow
|
|
386
|
+
500: "60 100% 55%",
|
|
387
|
+
// Vibrant yellow (#ffff00)
|
|
388
|
+
600: "60 95% 50%",
|
|
389
|
+
700: "60 90% 45%"
|
|
390
|
+
},
|
|
391
|
+
// Enhanced base colors for day mode
|
|
392
|
+
baseColorsDay: {
|
|
393
|
+
primary: "180 100% 45%",
|
|
394
|
+
// Neon cyan
|
|
395
|
+
primaryForeground: "0 0% 100%",
|
|
396
|
+
accent: "320 100% 55%",
|
|
397
|
+
// Neon magenta
|
|
398
|
+
accentForeground: "0 0% 100%"
|
|
399
|
+
},
|
|
400
|
+
// Semantic colors with neon accents
|
|
401
|
+
semanticColorsDay: {
|
|
402
|
+
success: "145 80% 45%",
|
|
403
|
+
// Neon green
|
|
404
|
+
info: "180 100% 45%",
|
|
405
|
+
// Neon cyan
|
|
406
|
+
warning: "60 100% 55%",
|
|
407
|
+
// Neon yellow
|
|
408
|
+
error: "0 100% 60%"
|
|
409
|
+
// Bright red
|
|
410
|
+
},
|
|
411
|
+
// Typography overrides - bolder and larger
|
|
412
|
+
typography: {
|
|
413
|
+
fontWeight: {
|
|
414
|
+
normal: "500",
|
|
415
|
+
// Heavier than default (400)
|
|
416
|
+
medium: "600",
|
|
417
|
+
// Heavier
|
|
418
|
+
semibold: "700",
|
|
419
|
+
// Bold
|
|
420
|
+
bold: "800"
|
|
421
|
+
// Extra bold
|
|
422
|
+
},
|
|
423
|
+
fontSize: {
|
|
424
|
+
xs: [
|
|
425
|
+
"clamp(0.875rem, 0.8rem + 0.25vw, 1rem)",
|
|
426
|
+
{ lineHeight: "1.25rem", letterSpacing: "0.025em" }
|
|
427
|
+
],
|
|
428
|
+
// Larger than default
|
|
429
|
+
sm: [
|
|
430
|
+
"clamp(1rem, 0.95rem + 0.25vw, 1.125rem)",
|
|
431
|
+
{ lineHeight: "1.5rem", letterSpacing: "0em" }
|
|
432
|
+
],
|
|
433
|
+
// Larger
|
|
434
|
+
base: [
|
|
435
|
+
"clamp(1.125rem, 1rem + 0.5vw, 1.25rem)",
|
|
436
|
+
{ lineHeight: "1.75rem", letterSpacing: "-0.025em" }
|
|
437
|
+
],
|
|
438
|
+
// Larger
|
|
439
|
+
lg: [
|
|
440
|
+
"clamp(1.25rem, 1.1rem + 0.75vw, 1.5rem)",
|
|
441
|
+
{ lineHeight: "1.75rem", letterSpacing: "-0.025em" }
|
|
442
|
+
],
|
|
443
|
+
// Larger
|
|
444
|
+
xl: [
|
|
445
|
+
"clamp(1.5rem, 1.25rem + 1.25vw, 2rem)",
|
|
446
|
+
{ lineHeight: "2rem", letterSpacing: "-0.05em" }
|
|
447
|
+
]
|
|
448
|
+
// Larger
|
|
449
|
+
}
|
|
450
|
+
},
|
|
451
|
+
// Spacing overrides - larger spacing for breathing room
|
|
452
|
+
spacing: {
|
|
453
|
+
semanticSpacing: {
|
|
454
|
+
xs: "0.5rem",
|
|
455
|
+
// 8px (was 4px)
|
|
456
|
+
sm: "1rem",
|
|
457
|
+
// 16px (was 8px)
|
|
458
|
+
md: "1.5rem",
|
|
459
|
+
// 24px (was 16px)
|
|
460
|
+
lg: "2rem",
|
|
461
|
+
// 32px (was 24px)
|
|
462
|
+
xl: "3rem",
|
|
463
|
+
// 48px (was 32px)
|
|
464
|
+
"2xl": "4rem"
|
|
465
|
+
// 64px (was 48px)
|
|
466
|
+
}
|
|
467
|
+
},
|
|
468
|
+
// Shadow overrides - stronger and more prominent
|
|
469
|
+
shadows: {
|
|
470
|
+
elevationShadows: {
|
|
471
|
+
xs: "0 2px 4px 0 rgb(0 0 0 / 0.1)",
|
|
472
|
+
sm: "0 2px 6px 0 rgb(0 0 0 / 0.15), 0 2px 4px -1px rgb(0 0 0 / 0.15)",
|
|
473
|
+
md: "0 6px 10px -1px rgb(0 0 0 / 0.15), 0 4px 6px -2px rgb(0 0 0 / 0.15)",
|
|
474
|
+
lg: "0 12px 20px -3px rgb(0 0 0 / 0.15), 0 6px 10px -4px rgb(0 0 0 / 0.15)",
|
|
475
|
+
xl: "0 24px 32px -5px rgb(0 0 0 / 0.15), 0 10px 14px -6px rgb(0 0 0 / 0.15)"
|
|
476
|
+
},
|
|
477
|
+
glowEffects: {
|
|
478
|
+
"glow-primary": "0 0 30px 0 hsl(180 100% 45% / 0.7), 0 0 60px 0 hsl(180 100% 45% / 0.4)",
|
|
479
|
+
"glow-primary-subtle": "0 0 12px 0 hsl(180 100% 45% / 0.5)",
|
|
480
|
+
"glow-primary-medium": "0 0 24px 0 hsl(180 100% 45% / 0.7)",
|
|
481
|
+
"glow-primary-strong": "0 0 36px 0 hsl(180 100% 45% / 0.8)",
|
|
482
|
+
"glow-accent": "0 0 30px 0 hsl(320 100% 55% / 0.7), 0 0 60px 0 hsl(320 100% 55% / 0.4)",
|
|
483
|
+
"glow-accent-subtle": "0 0 12px 0 hsl(320 100% 55% / 0.5)",
|
|
484
|
+
"glow-accent-medium": "0 0 24px 0 hsl(320 100% 55% / 0.7)",
|
|
485
|
+
"glow-accent-strong": "0 0 36px 0 hsl(320 100% 55% / 0.8)"
|
|
486
|
+
}
|
|
487
|
+
},
|
|
488
|
+
// Radius overrides - more rounded corners
|
|
489
|
+
radius: {
|
|
490
|
+
borderRadius: {
|
|
491
|
+
sm: "0.375rem",
|
|
492
|
+
// 6px (was 4px)
|
|
493
|
+
md: "0.5rem",
|
|
494
|
+
// 8px (was 6px)
|
|
495
|
+
lg: "0.75rem",
|
|
496
|
+
// 12px (was 8px)
|
|
497
|
+
xl: "1rem",
|
|
498
|
+
// 16px (was 12px)
|
|
499
|
+
"2xl": "1.5rem",
|
|
500
|
+
// 24px (was 16px)
|
|
501
|
+
"3xl": "2rem"
|
|
502
|
+
// 32px (was 24px)
|
|
503
|
+
},
|
|
504
|
+
componentRadius: {
|
|
505
|
+
button: {
|
|
506
|
+
sm: "0.5rem",
|
|
507
|
+
// 8px
|
|
508
|
+
md: "0.75rem",
|
|
509
|
+
// 12px
|
|
510
|
+
lg: "1rem"
|
|
511
|
+
// 16px
|
|
512
|
+
},
|
|
513
|
+
card: {
|
|
514
|
+
sm: "0.75rem",
|
|
515
|
+
// 12px
|
|
516
|
+
md: "1rem",
|
|
517
|
+
// 16px
|
|
518
|
+
lg: "1.25rem",
|
|
519
|
+
// 20px
|
|
520
|
+
xl: "1.5rem"
|
|
521
|
+
// 24px
|
|
522
|
+
},
|
|
523
|
+
input: {
|
|
524
|
+
sm: "0.5rem",
|
|
525
|
+
// 8px
|
|
526
|
+
md: "0.75rem",
|
|
527
|
+
// 12px
|
|
528
|
+
lg: "1rem"
|
|
529
|
+
// 16px
|
|
530
|
+
},
|
|
531
|
+
badge: {
|
|
532
|
+
sm: "0.375rem",
|
|
533
|
+
// 6px
|
|
534
|
+
md: "0.5rem",
|
|
535
|
+
// 8px
|
|
536
|
+
lg: "0.75rem"
|
|
537
|
+
// 12px
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
{
|
|
544
|
+
id: "neon-night",
|
|
545
|
+
name: "Neon Night",
|
|
546
|
+
description: "Dark neon theme for night mode with glowing neon accents on dark backgrounds",
|
|
547
|
+
mode: "night",
|
|
548
|
+
overrides: {
|
|
549
|
+
name: "neon-night",
|
|
550
|
+
description: "Dark neon theme for night mode",
|
|
551
|
+
// Vibrant neon color overrides (same as day but with different base)
|
|
552
|
+
primaryColors: {
|
|
553
|
+
400: "180 100% 55%",
|
|
554
|
+
// Brighter cyan for night
|
|
555
|
+
500: "180 100% 50%",
|
|
556
|
+
// Vibrant cyan
|
|
557
|
+
600: "180 95% 45%",
|
|
558
|
+
700: "180 90% 40%"
|
|
559
|
+
},
|
|
560
|
+
accentColors: {
|
|
561
|
+
400: "320 100% 65%",
|
|
562
|
+
// Brighter magenta for night
|
|
563
|
+
500: "320 100% 60%",
|
|
564
|
+
// Vibrant magenta
|
|
565
|
+
600: "320 95% 55%",
|
|
566
|
+
700: "320 90% 50%"
|
|
567
|
+
},
|
|
568
|
+
secondaryColors: {
|
|
569
|
+
400: "60 100% 65%",
|
|
570
|
+
// Brighter yellow for night
|
|
571
|
+
500: "60 100% 60%",
|
|
572
|
+
// Vibrant yellow
|
|
573
|
+
600: "60 95% 55%",
|
|
574
|
+
700: "60 90% 50%"
|
|
575
|
+
},
|
|
576
|
+
// Darker base colors for night mode
|
|
577
|
+
baseColorsNight: {
|
|
578
|
+
background: "240 10% 5%",
|
|
579
|
+
// Very dark background
|
|
580
|
+
foreground: "0 0% 98%",
|
|
581
|
+
card: "240 10% 6%",
|
|
582
|
+
cardForeground: "0 0% 98%"
|
|
583
|
+
},
|
|
584
|
+
surfaceColorsNight: {
|
|
585
|
+
base: "240 10% 5%",
|
|
586
|
+
// Very dark
|
|
587
|
+
elevated1: "240 10% 7%",
|
|
588
|
+
elevated2: "240 10% 9%",
|
|
589
|
+
elevated3: "240 10% 11%"
|
|
590
|
+
},
|
|
591
|
+
// Semantic colors with neon accents for night
|
|
592
|
+
semanticColorsNight: {
|
|
593
|
+
success: "145 75% 50%",
|
|
594
|
+
// Neon green
|
|
595
|
+
info: "180 100% 50%",
|
|
596
|
+
// Neon cyan
|
|
597
|
+
warning: "60 100% 60%",
|
|
598
|
+
// Neon yellow
|
|
599
|
+
error: "0 100% 65%"
|
|
600
|
+
// Bright red
|
|
601
|
+
},
|
|
602
|
+
// Typography overrides - same as day
|
|
603
|
+
typography: {
|
|
604
|
+
fontWeight: {
|
|
605
|
+
normal: "500",
|
|
606
|
+
medium: "600",
|
|
607
|
+
semibold: "700",
|
|
608
|
+
bold: "800"
|
|
609
|
+
},
|
|
610
|
+
fontSize: {
|
|
611
|
+
xs: [
|
|
612
|
+
"clamp(0.875rem, 0.8rem + 0.25vw, 1rem)",
|
|
613
|
+
{ lineHeight: "1.25rem", letterSpacing: "0.025em" }
|
|
614
|
+
],
|
|
615
|
+
sm: [
|
|
616
|
+
"clamp(1rem, 0.95rem + 0.25vw, 1.125rem)",
|
|
617
|
+
{ lineHeight: "1.5rem", letterSpacing: "0em" }
|
|
618
|
+
],
|
|
619
|
+
base: [
|
|
620
|
+
"clamp(1.125rem, 1rem + 0.5vw, 1.25rem)",
|
|
621
|
+
{ lineHeight: "1.75rem", letterSpacing: "-0.025em" }
|
|
622
|
+
],
|
|
623
|
+
lg: [
|
|
624
|
+
"clamp(1.25rem, 1.1rem + 0.75vw, 1.5rem)",
|
|
625
|
+
{ lineHeight: "1.75rem", letterSpacing: "-0.025em" }
|
|
626
|
+
],
|
|
627
|
+
xl: [
|
|
628
|
+
"clamp(1.5rem, 1.25rem + 1.25vw, 2rem)",
|
|
629
|
+
{ lineHeight: "2rem", letterSpacing: "-0.05em" }
|
|
630
|
+
]
|
|
631
|
+
}
|
|
632
|
+
},
|
|
633
|
+
// Spacing overrides - same as day
|
|
634
|
+
spacing: {
|
|
635
|
+
semanticSpacing: {
|
|
636
|
+
xs: "0.5rem",
|
|
637
|
+
sm: "1rem",
|
|
638
|
+
md: "1.5rem",
|
|
639
|
+
lg: "2rem",
|
|
640
|
+
xl: "3rem",
|
|
641
|
+
"2xl": "4rem"
|
|
642
|
+
}
|
|
643
|
+
},
|
|
644
|
+
// Shadow overrides - even stronger glow for night
|
|
645
|
+
shadows: {
|
|
646
|
+
elevationShadows: {
|
|
647
|
+
xs: "0 2px 4px 0 rgb(0 0 0 / 0.2)",
|
|
648
|
+
sm: "0 2px 6px 0 rgb(0 0 0 / 0.25), 0 2px 4px -1px rgb(0 0 0 / 0.25)",
|
|
649
|
+
md: "0 6px 10px -1px rgb(0 0 0 / 0.25), 0 4px 6px -2px rgb(0 0 0 / 0.25)",
|
|
650
|
+
lg: "0 12px 20px -3px rgb(0 0 0 / 0.25), 0 6px 10px -4px rgb(0 0 0 / 0.25)",
|
|
651
|
+
xl: "0 24px 32px -5px rgb(0 0 0 / 0.25), 0 10px 14px -6px rgb(0 0 0 / 0.25)"
|
|
652
|
+
},
|
|
653
|
+
glowEffects: {
|
|
654
|
+
"glow-primary": "0 0 40px 0 hsl(180 100% 50% / 0.8), 0 0 80px 0 hsl(180 100% 50% / 0.5)",
|
|
655
|
+
"glow-primary-subtle": "0 0 16px 0 hsl(180 100% 50% / 0.6)",
|
|
656
|
+
"glow-primary-medium": "0 0 32px 0 hsl(180 100% 50% / 0.8)",
|
|
657
|
+
"glow-primary-strong": "0 0 48px 0 hsl(180 100% 50% / 0.9)",
|
|
658
|
+
"glow-accent": "0 0 40px 0 hsl(320 100% 60% / 0.8), 0 0 80px 0 hsl(320 100% 60% / 0.5)",
|
|
659
|
+
"glow-accent-subtle": "0 0 16px 0 hsl(320 100% 60% / 0.6)",
|
|
660
|
+
"glow-accent-medium": "0 0 32px 0 hsl(320 100% 60% / 0.8)",
|
|
661
|
+
"glow-accent-strong": "0 0 48px 0 hsl(320 100% 60% / 0.9)"
|
|
662
|
+
}
|
|
663
|
+
},
|
|
664
|
+
// Radius overrides - same as day
|
|
665
|
+
radius: {
|
|
666
|
+
borderRadius: {
|
|
667
|
+
sm: "0.375rem",
|
|
668
|
+
md: "0.5rem",
|
|
669
|
+
lg: "0.75rem",
|
|
670
|
+
xl: "1rem",
|
|
671
|
+
"2xl": "1.5rem",
|
|
672
|
+
"3xl": "2rem"
|
|
673
|
+
},
|
|
674
|
+
componentRadius: {
|
|
675
|
+
button: {
|
|
676
|
+
sm: "0.5rem",
|
|
677
|
+
md: "0.75rem",
|
|
678
|
+
lg: "1rem"
|
|
679
|
+
},
|
|
680
|
+
card: {
|
|
681
|
+
sm: "0.75rem",
|
|
682
|
+
md: "1rem",
|
|
683
|
+
lg: "1.25rem",
|
|
684
|
+
xl: "1.5rem"
|
|
685
|
+
},
|
|
686
|
+
input: {
|
|
687
|
+
sm: "0.5rem",
|
|
688
|
+
md: "0.75rem",
|
|
689
|
+
lg: "1rem"
|
|
690
|
+
},
|
|
691
|
+
badge: {
|
|
692
|
+
sm: "0.375rem",
|
|
693
|
+
md: "0.5rem",
|
|
694
|
+
lg: "0.75rem"
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
}
|
|
698
|
+
}
|
|
699
|
+
}
|
|
700
|
+
]
|
|
701
|
+
}, v = /* @__PURE__ */ new Map();
|
|
702
|
+
let T = null, B = null;
|
|
703
|
+
const $ = /* @__PURE__ */ new Map();
|
|
704
|
+
function Z(t) {
|
|
705
|
+
const e = [], i = [];
|
|
706
|
+
if (!t || typeof t != "object")
|
|
707
|
+
return {
|
|
708
|
+
valid: !1,
|
|
709
|
+
errors: ["Brand must be an object"],
|
|
710
|
+
warnings: []
|
|
711
|
+
};
|
|
712
|
+
const r = t, s = ["id", "name", "namespace"];
|
|
713
|
+
for (const o of s)
|
|
714
|
+
(!(o in r) || !r[o]) && e.push(`Missing required field: ${o}`);
|
|
715
|
+
if (r.id && typeof r.id == "string" && (/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(r.id) || e.push(
|
|
716
|
+
`Invalid brand ID format: "${r.id}". Must be kebab-case (e.g., "neon-brand")`
|
|
717
|
+
)), r.namespace && typeof r.namespace == "string" && (/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(r.namespace) || e.push(
|
|
718
|
+
`Invalid namespace format: "${r.namespace}". Must be kebab-case (e.g., "neon")`
|
|
719
|
+
)), r.themes)
|
|
720
|
+
if (!Array.isArray(r.themes))
|
|
721
|
+
e.push("Brand themes must be an array");
|
|
722
|
+
else {
|
|
723
|
+
const o = r.themes;
|
|
724
|
+
o.length === 0 && i.push("Brand has no themes defined"), o.forEach((l, a) => {
|
|
725
|
+
if (!l || typeof l != "object") {
|
|
726
|
+
e.push(`Theme at index ${a} must be an object`);
|
|
727
|
+
return;
|
|
728
|
+
}
|
|
729
|
+
const n = l;
|
|
730
|
+
(!n.id || typeof n.id != "string") && e.push(`Theme at index ${a} is missing required field: id`), (!n.name || typeof n.name != "string") && e.push(`Theme at index ${a} is missing required field: name`), (!n.mode || !["day", "night"].includes(n.mode)) && e.push(`Theme at index ${a} must have mode set to "day" or "night"`), (!n.overrides || typeof n.overrides != "object") && e.push(`Theme at index ${a} is missing required field: overrides`);
|
|
731
|
+
});
|
|
732
|
+
}
|
|
733
|
+
else
|
|
734
|
+
e.push("Brand must have at least one theme");
|
|
735
|
+
if (r.version && typeof r.version == "string" && (/^\d+\.\d+\.\d+$/.test(r.version) || i.push(
|
|
736
|
+
`Invalid version format: "${r.version}". Should be semver (e.g., "1.0.0")`
|
|
737
|
+
)), r.themes && Array.isArray(r.themes)) {
|
|
738
|
+
const o = r.themes.map(
|
|
739
|
+
(a) => a == null ? void 0 : a.id
|
|
740
|
+
), l = new Set(o);
|
|
741
|
+
o.length !== l.size && e.push("Brand contains duplicate theme IDs");
|
|
742
|
+
}
|
|
743
|
+
return {
|
|
744
|
+
valid: e.length === 0,
|
|
745
|
+
errors: e,
|
|
746
|
+
warnings: i
|
|
747
|
+
};
|
|
748
|
+
}
|
|
749
|
+
function U(t, e) {
|
|
750
|
+
const i = Z(t);
|
|
751
|
+
if (!i.valid)
|
|
752
|
+
throw new Error(`Invalid brand "${t.id}": ${i.errors.join(", ")}`);
|
|
753
|
+
if (i.warnings.length > 0 && console.warn(`Brand "${t.id}" validation warnings:`, i.warnings.join(", ")), v.has(t.id))
|
|
754
|
+
throw new Error(`Brand "${t.id}" is already registered`);
|
|
755
|
+
const r = Array.from(v.values()).find(
|
|
756
|
+
(s) => s.brand.namespace === t.namespace
|
|
757
|
+
);
|
|
758
|
+
if (r)
|
|
759
|
+
throw new Error(
|
|
760
|
+
`Brand namespace "${t.namespace}" is already used by brand "${r.brand.id}"`
|
|
761
|
+
);
|
|
762
|
+
v.set(t.id, {
|
|
763
|
+
brand: t,
|
|
764
|
+
enabled: (e == null ? void 0 : e.enabled) !== !1,
|
|
765
|
+
loader: e == null ? void 0 : e.loader
|
|
766
|
+
});
|
|
767
|
+
}
|
|
768
|
+
async function K(t) {
|
|
769
|
+
if ($.has(t))
|
|
770
|
+
return $.get(t);
|
|
771
|
+
const e = v.get(t);
|
|
772
|
+
if (!e)
|
|
773
|
+
throw new Error(`Brand "${t}" not found in registry`);
|
|
774
|
+
if (e.enabled === !1)
|
|
775
|
+
throw new Error(`Brand "${t}" is disabled`);
|
|
776
|
+
if (e.loader)
|
|
777
|
+
try {
|
|
778
|
+
const r = (await e.loader()).default, s = Z(r);
|
|
779
|
+
if (!s.valid)
|
|
780
|
+
throw new Error(`Invalid loaded brand "${t}": ${s.errors.join(", ")}`);
|
|
781
|
+
return $.set(t, r), r;
|
|
782
|
+
} catch (i) {
|
|
783
|
+
throw new Error(
|
|
784
|
+
`Failed to load brand "${t}": ${i instanceof Error ? i.message : String(i)}`
|
|
785
|
+
);
|
|
786
|
+
}
|
|
787
|
+
return $.set(t, e.brand), e.brand;
|
|
788
|
+
}
|
|
789
|
+
function ee() {
|
|
790
|
+
return T;
|
|
791
|
+
}
|
|
792
|
+
function j(t) {
|
|
793
|
+
T = t, B = (t == null ? void 0 : t.namespace) || null;
|
|
794
|
+
}
|
|
795
|
+
function ue() {
|
|
796
|
+
T = null, B = null;
|
|
797
|
+
}
|
|
798
|
+
function fe(t, e) {
|
|
799
|
+
return t.themes.find((i) => i.mode === e);
|
|
800
|
+
}
|
|
801
|
+
function te(t, e) {
|
|
802
|
+
if (typeof document > "u") return;
|
|
803
|
+
const i = fe(t, e);
|
|
804
|
+
if (!i) {
|
|
805
|
+
console.warn(`Brand "${t.id}" has no theme for mode "${e}"`);
|
|
806
|
+
return;
|
|
807
|
+
}
|
|
808
|
+
const r = document.documentElement, { namespace: s } = t, { overrides: o } = i;
|
|
809
|
+
o.primaryColors && Object.entries(o.primaryColors).forEach(([a, n]) => {
|
|
810
|
+
r.style.setProperty(`--brand-${s}-primary-${a}`, n);
|
|
811
|
+
}), o.accentColors && Object.entries(o.accentColors).forEach(([a, n]) => {
|
|
812
|
+
r.style.setProperty(`--brand-${s}-accent-${a}`, n);
|
|
813
|
+
}), o.secondaryColors && Object.entries(o.secondaryColors).forEach(([a, n]) => {
|
|
814
|
+
r.style.setProperty(`--brand-${s}-secondary-${a}`, n);
|
|
815
|
+
});
|
|
816
|
+
const l = e === "day" ? o.baseColorsDay : o.baseColorsNight;
|
|
817
|
+
if (l && Object.entries(l).forEach(([a, n]) => {
|
|
818
|
+
r.style.setProperty(`--brand-${s}-${a}`, n);
|
|
819
|
+
}), o.typography && (o.typography.fontFamily && Object.entries(o.typography.fontFamily).forEach(([a, n]) => {
|
|
820
|
+
r.style.setProperty(
|
|
821
|
+
`--brand-${s}-font-${a}`,
|
|
822
|
+
Array.isArray(n) ? n.join(", ") : n
|
|
823
|
+
);
|
|
824
|
+
}), o.typography.fontSize && Object.entries(o.typography.fontSize).forEach(([a, n]) => {
|
|
825
|
+
const m = typeof n == "string" ? n : n[0];
|
|
826
|
+
r.style.setProperty(`--brand-${s}-font-size-${a}`, m);
|
|
827
|
+
}), o.typography.fontWeight && Object.entries(o.typography.fontWeight).forEach(([a, n]) => {
|
|
828
|
+
r.style.setProperty(`--brand-${s}-font-weight-${a}`, n);
|
|
829
|
+
}), o.typography.lineHeight && Object.entries(o.typography.lineHeight).forEach(([a, n]) => {
|
|
830
|
+
r.style.setProperty(`--brand-${s}-line-height-${a}`, n);
|
|
831
|
+
}), o.typography.letterSpacing && Object.entries(o.typography.letterSpacing).forEach(([a, n]) => {
|
|
832
|
+
r.style.setProperty(`--brand-${s}-letter-spacing-${a}`, n);
|
|
833
|
+
})), o.spacing && (o.spacing.semanticSpacing && Object.entries(o.spacing.semanticSpacing).forEach(([a, n]) => {
|
|
834
|
+
r.style.setProperty(`--brand-${s}-spacing-${a}`, n);
|
|
835
|
+
}), o.spacing.layoutSpacing)) {
|
|
836
|
+
const a = o.spacing.layoutSpacing;
|
|
837
|
+
a.section && Object.entries(a.section).forEach(([n, m]) => {
|
|
838
|
+
typeof m == "string" && r.style.setProperty(`--brand-${s}-layout-section-${n}`, m);
|
|
839
|
+
}), a.container && Object.entries(a.container).forEach(([n, m]) => {
|
|
840
|
+
typeof m == "string" && r.style.setProperty(`--brand-${s}-layout-container-${n}`, m);
|
|
841
|
+
}), a.grid && Object.entries(a.grid).forEach(([n, m]) => {
|
|
842
|
+
typeof m == "string" && r.style.setProperty(`--brand-${s}-layout-grid-${n}`, m);
|
|
843
|
+
}), a.stack && Object.entries(a.stack).forEach(([n, m]) => {
|
|
844
|
+
typeof m == "string" && r.style.setProperty(`--brand-${s}-layout-stack-${n}`, m);
|
|
845
|
+
}), a.component && Object.entries(a.component).forEach(([n, m]) => {
|
|
846
|
+
typeof m == "string" && r.style.setProperty(`--brand-${s}-layout-component-${n}`, m);
|
|
847
|
+
});
|
|
848
|
+
}
|
|
849
|
+
if (o.shadows && (o.shadows.elevationShadows && Object.entries(o.shadows.elevationShadows).forEach(([a, n]) => {
|
|
850
|
+
r.style.setProperty(`--brand-${s}-shadow-${a}`, n);
|
|
851
|
+
}), o.shadows.primaryColoredShadows && Object.entries(o.shadows.primaryColoredShadows).forEach(([a, n]) => {
|
|
852
|
+
r.style.setProperty(`--brand-${s}-shadow-primary-${a}`, n);
|
|
853
|
+
}), o.shadows.accentColoredShadows && Object.entries(o.shadows.accentColoredShadows).forEach(([a, n]) => {
|
|
854
|
+
r.style.setProperty(`--brand-${s}-shadow-accent-${a}`, n);
|
|
855
|
+
}), o.shadows.glowEffects && Object.entries(o.shadows.glowEffects).forEach(([a, n]) => {
|
|
856
|
+
r.style.setProperty(`--brand-${s}-glow-${a}`, n);
|
|
857
|
+
}), o.shadows.focusRings && Object.entries(o.shadows.focusRings).forEach(([a, n]) => {
|
|
858
|
+
r.style.setProperty(`--brand-${s}-focus-ring-${a}`, n);
|
|
859
|
+
})), o.radius && (o.radius.borderRadius && Object.entries(o.radius.borderRadius).forEach(([a, n]) => {
|
|
860
|
+
r.style.setProperty(`--brand-${s}-radius-${a}`, n);
|
|
861
|
+
}), o.radius.componentRadius)) {
|
|
862
|
+
const { componentRadius: a } = o.radius;
|
|
863
|
+
a.button && Object.entries(a.button).forEach(([n, m]) => {
|
|
864
|
+
r.style.setProperty(`--brand-${s}-radius-button-${n}`, m);
|
|
865
|
+
}), a.card && Object.entries(a.card).forEach(([n, m]) => {
|
|
866
|
+
r.style.setProperty(`--brand-${s}-radius-card-${n}`, m);
|
|
867
|
+
}), a.input && Object.entries(a.input).forEach(([n, m]) => {
|
|
868
|
+
r.style.setProperty(`--brand-${s}-radius-input-${n}`, m);
|
|
869
|
+
});
|
|
870
|
+
}
|
|
871
|
+
j(t), r.setAttribute("data-brand", t.id), r.setAttribute("data-brand-namespace", s);
|
|
872
|
+
}
|
|
873
|
+
function re(t) {
|
|
874
|
+
if (typeof document > "u") return;
|
|
875
|
+
const e = document.documentElement, { style: i } = e, r = [];
|
|
876
|
+
for (let s = 0; s < i.length; s++) {
|
|
877
|
+
const o = i.item(s);
|
|
878
|
+
o && o.startsWith(`--brand-${t}-`) && r.push(o);
|
|
879
|
+
}
|
|
880
|
+
r.forEach((s) => {
|
|
881
|
+
i.removeProperty(s);
|
|
882
|
+
}), e.removeAttribute("data-brand"), e.removeAttribute("data-brand-namespace"), B === t && ue();
|
|
883
|
+
}
|
|
884
|
+
const he = {
|
|
885
|
+
default: () => import("./default-BKgH1D9-.js").then((t) => t.defaultTheme),
|
|
886
|
+
dark: () => import("./dark-Cvoy1uFT.js").then((t) => t.darkTheme),
|
|
887
|
+
brand: () => import("./brand-C5R2semX.js").then((t) => t.brandTheme)
|
|
888
|
+
};
|
|
889
|
+
async function xe(t) {
|
|
890
|
+
const e = he[t];
|
|
891
|
+
if (!e)
|
|
892
|
+
throw new Error(`Theme "${t}" not found`);
|
|
893
|
+
return await e();
|
|
894
|
+
}
|
|
895
|
+
const oe = "data-mode", A = "data-theme-name", se = "data-theme", V = "dark";
|
|
896
|
+
function be(t = "day", e = "tm_mode", i = !0) {
|
|
897
|
+
if (typeof window > "u") return t;
|
|
898
|
+
const r = document.documentElement, s = r.getAttribute(oe);
|
|
899
|
+
if (s === "day" || s === "night")
|
|
900
|
+
return s;
|
|
901
|
+
const o = r.getAttribute(se);
|
|
902
|
+
if (o === "day" || o === "night")
|
|
903
|
+
return o;
|
|
904
|
+
try {
|
|
905
|
+
const l = localStorage.getItem(e);
|
|
906
|
+
if (l === "day" || l === "night")
|
|
907
|
+
return l;
|
|
908
|
+
const a = localStorage.getItem("theme");
|
|
909
|
+
if (a === "dark") return "night";
|
|
910
|
+
if (a === "light") return "day";
|
|
911
|
+
} catch {
|
|
912
|
+
}
|
|
913
|
+
return i && typeof window < "u" ? window.matchMedia("(prefers-color-scheme: dark)").matches ? "night" : "day" : t;
|
|
914
|
+
}
|
|
915
|
+
let E = null;
|
|
916
|
+
async function we(t) {
|
|
917
|
+
if (t === "default")
|
|
918
|
+
return E = null, null;
|
|
919
|
+
try {
|
|
920
|
+
const e = await xe(t);
|
|
921
|
+
return E = e, e;
|
|
922
|
+
} catch (e) {
|
|
923
|
+
return console.warn(`Failed to load theme "${t}":`, e), E = null, null;
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
function k(t, e) {
|
|
927
|
+
return e ? { ...t, ...e } : t;
|
|
928
|
+
}
|
|
929
|
+
function b(t, e) {
|
|
930
|
+
return e ? { ...t, ...e } : t;
|
|
931
|
+
}
|
|
932
|
+
function ne(t) {
|
|
933
|
+
const e = E, i = k(le, e == null ? void 0 : e.primaryColors), r = k(de, e == null ? void 0 : e.accentColors), s = k(pe, e == null ? void 0 : e.secondaryColors), o = {
|
|
934
|
+
day: b(N.day, e == null ? void 0 : e.baseColorsDay),
|
|
935
|
+
night: b(N.night, e == null ? void 0 : e.baseColorsNight)
|
|
936
|
+
}, l = {
|
|
937
|
+
day: b(L.day, e == null ? void 0 : e.surfaceColorsDay),
|
|
938
|
+
night: b(L.night, e == null ? void 0 : e.surfaceColorsNight)
|
|
939
|
+
}, a = {
|
|
940
|
+
day: b(W.day, e == null ? void 0 : e.semanticColorsDay),
|
|
941
|
+
night: b(W.night, e == null ? void 0 : e.semanticColorsNight)
|
|
942
|
+
}, n = {
|
|
943
|
+
day: b(q.day, e == null ? void 0 : e.textColorsDay),
|
|
944
|
+
night: b(q.night, e == null ? void 0 : e.textColorsNight)
|
|
945
|
+
};
|
|
946
|
+
return {
|
|
947
|
+
primaryColors: i,
|
|
948
|
+
accentColors: r,
|
|
949
|
+
secondaryColors: s,
|
|
950
|
+
baseColors: o,
|
|
951
|
+
surfaceColors: l,
|
|
952
|
+
semanticColors: a,
|
|
953
|
+
textColors: n
|
|
954
|
+
};
|
|
955
|
+
}
|
|
956
|
+
function Pe(t) {
|
|
957
|
+
if (typeof document > "u") return;
|
|
958
|
+
const e = document.documentElement, i = ne(), {
|
|
959
|
+
primaryColors: r,
|
|
960
|
+
accentColors: s,
|
|
961
|
+
secondaryColors: o,
|
|
962
|
+
baseColors: l,
|
|
963
|
+
surfaceColors: a,
|
|
964
|
+
semanticColors: n,
|
|
965
|
+
textColors: m
|
|
966
|
+
} = i, p = l[t];
|
|
967
|
+
e.style.setProperty("--background", p.background), e.style.setProperty("--foreground", p.foreground), e.style.setProperty("--card", p.card), e.style.setProperty("--card-foreground", p.cardForeground), e.style.setProperty("--popover", p.popover), e.style.setProperty("--popover-foreground", p.popoverForeground), e.style.setProperty("--border", p.border), e.style.setProperty("--input", p.input), e.style.setProperty("--ring", p.ring);
|
|
968
|
+
const y = a[t];
|
|
969
|
+
e.style.setProperty("--surface-base", y.base), e.style.setProperty("--surface-elevated1", y.elevated1), e.style.setProperty("--surface-elevated2", y.elevated2), e.style.setProperty("--surface-elevated3", y.elevated3), e.style.setProperty("--surface-overlay", y.overlay), e.style.setProperty("--surface-glass", y.glass);
|
|
970
|
+
const h = n[t];
|
|
971
|
+
e.style.setProperty("--semantic-success", h.success), e.style.setProperty("--semantic-success-foreground", h.successForeground), e.style.setProperty("--semantic-error", h.error), e.style.setProperty("--semantic-error-foreground", h.errorForeground), e.style.setProperty("--semantic-warning", h.warning), e.style.setProperty("--semantic-warning-foreground", h.warningForeground), e.style.setProperty("--semantic-info", h.info), e.style.setProperty("--semantic-info-foreground", h.infoForeground);
|
|
972
|
+
const f = m[t];
|
|
973
|
+
e.style.setProperty("--text-primary", f.primary), e.style.setProperty("--text-secondary", f.secondary), e.style.setProperty("--text-tertiary", f.tertiary), e.style.setProperty("--text-muted", f.muted), e.style.setProperty("--text-inverse", f.inverse), e.style.setProperty("--primary-50", r[50]), e.style.setProperty("--primary-100", r[100]), e.style.setProperty("--primary-200", r[200]), e.style.setProperty("--primary-300", r[300]), e.style.setProperty("--primary-400", r[400]), e.style.setProperty("--primary-500", r[500]), e.style.setProperty("--primary-600", r[600]), e.style.setProperty("--primary-700", r[700]), e.style.setProperty("--primary-800", r[800]), e.style.setProperty("--primary-900", r[900]), e.style.setProperty("--primary-950", r[950]), e.style.setProperty("--accent-50", s[50]), e.style.setProperty("--accent-100", s[100]), e.style.setProperty("--accent-200", s[200]), e.style.setProperty("--accent-300", s[300]), e.style.setProperty("--accent-400", s[400]), e.style.setProperty("--accent-500", s[500]), e.style.setProperty("--accent-600", s[600]), e.style.setProperty("--accent-700", s[700]), e.style.setProperty("--accent-800", s[800]), e.style.setProperty("--accent-900", s[900]), e.style.setProperty("--accent-950", s[950]), e.style.setProperty("--secondary-50", o[50]), e.style.setProperty("--secondary-100", o[100]), e.style.setProperty("--secondary-200", o[200]), e.style.setProperty("--secondary-300", o[300]), e.style.setProperty("--secondary-400", o[400]), e.style.setProperty("--secondary-500", o[500]), e.style.setProperty("--secondary-600", o[600]), e.style.setProperty("--secondary-700", o[700]), e.style.setProperty("--secondary-800", o[800]), e.style.setProperty("--secondary-900", o[900]), e.style.setProperty("--secondary-950", o[950]), t === "day" ? (e.style.setProperty("--tm-primary", o[500]), e.style.setProperty("--tm-primary-foreground", "0 0% 100%"), e.style.setProperty("--tm-secondary", "0 0% 95.7%"), e.style.setProperty("--tm-secondary-foreground", "0 0% 6.7%"), e.style.setProperty("--tm-accent", "0 0% 89.8%"), e.style.setProperty("--tm-accent-foreground", "0 0% 6.7%")) : (e.style.setProperty("--tm-primary", s[500]), e.style.setProperty("--tm-primary-foreground", "0 0% 100%"), e.style.setProperty("--tm-secondary", "240 10% 7%"), e.style.setProperty("--tm-secondary-foreground", "0 0% 89.8%"), e.style.setProperty("--tm-accent", "240 10% 10%"), e.style.setProperty("--tm-accent-foreground", "0 0% 89.8%")), e.style.setProperty("--muted", p.card), e.style.setProperty("--muted-foreground", p.cardForeground), e.style.setProperty("--destructive", h.error), e.style.setProperty("--destructive-foreground", h.errorForeground), Object.entries(me).forEach(([C, x]) => {
|
|
974
|
+
e.style.setProperty(C, x);
|
|
975
|
+
});
|
|
976
|
+
}
|
|
977
|
+
async function w(t, e = "default", i = null) {
|
|
978
|
+
if (typeof document > "u") return;
|
|
979
|
+
await we(e);
|
|
980
|
+
const r = ee();
|
|
981
|
+
if (r && (!i || r.id !== i) && re(r.namespace), i)
|
|
982
|
+
try {
|
|
983
|
+
const m = await K(i);
|
|
984
|
+
te(m, t);
|
|
985
|
+
} catch (m) {
|
|
986
|
+
console.warn(`Failed to apply brand "${i}":`, m);
|
|
987
|
+
}
|
|
988
|
+
const { documentElement: s, body: o } = document;
|
|
989
|
+
s.setAttribute(oe, t), s.setAttribute(se, t), s.setAttribute(A, e), t === "night" ? s.classList.add(V) : s.classList.remove(V), Pe(t);
|
|
990
|
+
const l = ne(), { background: a, foreground: n } = l.baseColors[t];
|
|
991
|
+
o && (o.dataset.mode = t, o.dataset.theme = e, i ? o.dataset.brand = i : o.removeAttribute("data-brand"), o.style.backgroundColor = `hsl(${a})`, o.style.color = `hsl(${n})`);
|
|
992
|
+
}
|
|
993
|
+
async function je(t) {
|
|
994
|
+
if (typeof document < "u") {
|
|
995
|
+
const e = document.documentElement, i = e.getAttribute(A) || "default", r = e.getAttribute("data-brand") || null;
|
|
996
|
+
await w(t, i, r);
|
|
997
|
+
} else
|
|
998
|
+
await w(t, "default", null);
|
|
999
|
+
}
|
|
1000
|
+
function Q(t = "default", e = "tm_theme") {
|
|
1001
|
+
if (typeof window > "u") return t;
|
|
1002
|
+
const r = document.documentElement.getAttribute(A);
|
|
1003
|
+
if (r === "default" || r === "dark" || r === "brand")
|
|
1004
|
+
return r;
|
|
1005
|
+
try {
|
|
1006
|
+
const s = localStorage.getItem(e);
|
|
1007
|
+
if (s === "default" || s === "dark" || s === "brand")
|
|
1008
|
+
return s;
|
|
1009
|
+
} catch {
|
|
1010
|
+
}
|
|
1011
|
+
return t;
|
|
1012
|
+
}
|
|
1013
|
+
function G(t, e = "tm_mode") {
|
|
1014
|
+
if (!(typeof window > "u"))
|
|
1015
|
+
try {
|
|
1016
|
+
localStorage.setItem(e, t), localStorage.setItem("theme", t === "night" ? "dark" : "light");
|
|
1017
|
+
} catch {
|
|
1018
|
+
}
|
|
1019
|
+
}
|
|
1020
|
+
function J(t, e = "tm_theme") {
|
|
1021
|
+
if (!(typeof window > "u"))
|
|
1022
|
+
try {
|
|
1023
|
+
localStorage.setItem(e, t);
|
|
1024
|
+
} catch {
|
|
1025
|
+
}
|
|
1026
|
+
}
|
|
1027
|
+
function X(t = null, e = "tm_brand") {
|
|
1028
|
+
if (typeof window > "u") return t;
|
|
1029
|
+
const r = document.documentElement.getAttribute("data-brand");
|
|
1030
|
+
if (r)
|
|
1031
|
+
return r;
|
|
1032
|
+
try {
|
|
1033
|
+
const s = localStorage.getItem(e);
|
|
1034
|
+
if (s)
|
|
1035
|
+
return s;
|
|
1036
|
+
} catch {
|
|
1037
|
+
}
|
|
1038
|
+
return t;
|
|
1039
|
+
}
|
|
1040
|
+
function Y(t, e = "tm_brand") {
|
|
1041
|
+
if (!(typeof window > "u"))
|
|
1042
|
+
try {
|
|
1043
|
+
t ? localStorage.setItem(e, t) : localStorage.removeItem(e);
|
|
1044
|
+
} catch {
|
|
1045
|
+
}
|
|
1046
|
+
}
|
|
1047
|
+
const ae = d.createContext(void 0);
|
|
1048
|
+
function Ce(t) {
|
|
1049
|
+
if (t !== void 0) return t;
|
|
1050
|
+
if (typeof window > "u") return !1;
|
|
1051
|
+
try {
|
|
1052
|
+
return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
1053
|
+
} catch {
|
|
1054
|
+
return !1;
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
function Te({
|
|
1058
|
+
children: t,
|
|
1059
|
+
defaultMode: e = "day",
|
|
1060
|
+
defaultTheme: i = "default",
|
|
1061
|
+
defaultBrand: r = null,
|
|
1062
|
+
storageKey: s = "tm_mode",
|
|
1063
|
+
themeStorageKey: o = "tm_theme",
|
|
1064
|
+
brandStorageKey: l = "tm_brand",
|
|
1065
|
+
attribute: a = "data-mode",
|
|
1066
|
+
enableSystem: n = !0,
|
|
1067
|
+
reduceMotion: m,
|
|
1068
|
+
enableAnimations: p = !0
|
|
1069
|
+
}) {
|
|
1070
|
+
d.useEffect(() => {
|
|
1071
|
+
try {
|
|
1072
|
+
U(ge);
|
|
1073
|
+
} catch (c) {
|
|
1074
|
+
console.warn("Failed to register neon brand:", c);
|
|
1075
|
+
}
|
|
1076
|
+
try {
|
|
1077
|
+
U(ye);
|
|
1078
|
+
} catch (c) {
|
|
1079
|
+
console.warn("Failed to register minimal brand:", c);
|
|
1080
|
+
}
|
|
1081
|
+
}, []);
|
|
1082
|
+
const [y, h] = d.useState(() => {
|
|
1083
|
+
if (typeof window > "u") return e;
|
|
1084
|
+
const g = document.documentElement.getAttribute(a);
|
|
1085
|
+
if (g === "day" || g === "night")
|
|
1086
|
+
return g;
|
|
1087
|
+
try {
|
|
1088
|
+
const u = localStorage.getItem(s);
|
|
1089
|
+
if (u === "day" || u === "night")
|
|
1090
|
+
return u;
|
|
1091
|
+
} catch {
|
|
1092
|
+
}
|
|
1093
|
+
return n && typeof window < "u" ? window.matchMedia("(prefers-color-scheme: dark)").matches ? "night" : "day" : e;
|
|
1094
|
+
}), [f, C] = d.useState(() => typeof window > "u" ? i : Q(i, o)), [x, R] = d.useState(() => typeof window > "u" ? r : X(r, l)), [D, S] = d.useState(() => Ce(m)), [F, _] = d.useState(() => p), P = d.useCallback(
|
|
1095
|
+
(c) => {
|
|
1096
|
+
h(c), w(c, f, x), G(c, s);
|
|
1097
|
+
},
|
|
1098
|
+
[f, x, s]
|
|
1099
|
+
), H = d.useCallback(
|
|
1100
|
+
async (c) => {
|
|
1101
|
+
C(c), await w(y, c, x), J(c, o);
|
|
1102
|
+
},
|
|
1103
|
+
[y, x, o]
|
|
1104
|
+
), O = d.useCallback(
|
|
1105
|
+
async (c) => {
|
|
1106
|
+
const g = ee();
|
|
1107
|
+
if (g && re(g.namespace), R(c), Y(c, l), c)
|
|
1108
|
+
try {
|
|
1109
|
+
const u = await K(c);
|
|
1110
|
+
te(u, y);
|
|
1111
|
+
} catch (u) {
|
|
1112
|
+
console.error(`Failed to load brand "${c}":`, u), j(null);
|
|
1113
|
+
}
|
|
1114
|
+
else
|
|
1115
|
+
j(null);
|
|
1116
|
+
await w(y, f, c);
|
|
1117
|
+
},
|
|
1118
|
+
[y, f, l]
|
|
1119
|
+
), M = d.useCallback(() => {
|
|
1120
|
+
P(y === "night" ? "day" : "night");
|
|
1121
|
+
}, [y, P]), z = d.useCallback((c) => {
|
|
1122
|
+
S(c);
|
|
1123
|
+
try {
|
|
1124
|
+
localStorage.setItem("tm_reduce_motion", c ? "true" : "false");
|
|
1125
|
+
} catch {
|
|
1126
|
+
}
|
|
1127
|
+
}, []), I = d.useCallback((c) => {
|
|
1128
|
+
_(c);
|
|
1129
|
+
try {
|
|
1130
|
+
localStorage.setItem("tm_enable_animations", c ? "true" : "false");
|
|
1131
|
+
} catch {
|
|
1132
|
+
}
|
|
1133
|
+
}, []);
|
|
1134
|
+
d.useEffect(() => {
|
|
1135
|
+
if (m !== void 0) return;
|
|
1136
|
+
const c = window.matchMedia("(prefers-reduced-motion: reduce)"), g = (u) => {
|
|
1137
|
+
S(u.matches);
|
|
1138
|
+
};
|
|
1139
|
+
return c.addEventListener("change", g), () => c.removeEventListener("change", g);
|
|
1140
|
+
}, [m]), d.useEffect(() => {
|
|
1141
|
+
if (m === void 0)
|
|
1142
|
+
try {
|
|
1143
|
+
const c = localStorage.getItem("tm_reduce_motion");
|
|
1144
|
+
(c === "true" || c === "false") && S(c === "true");
|
|
1145
|
+
} catch {
|
|
1146
|
+
}
|
|
1147
|
+
if (p === void 0)
|
|
1148
|
+
try {
|
|
1149
|
+
const c = localStorage.getItem("tm_enable_animations");
|
|
1150
|
+
(c === "true" || c === "false") && _(c === "true");
|
|
1151
|
+
} catch {
|
|
1152
|
+
}
|
|
1153
|
+
}, [m, p]), d.useEffect(() => {
|
|
1154
|
+
const c = be(e, s, n), g = Q(i, o), u = X(r, l);
|
|
1155
|
+
h(c), C(g), R(u), w(c, g, u), G(c, s), J(g, o), Y(u, l);
|
|
1156
|
+
}, [
|
|
1157
|
+
e,
|
|
1158
|
+
i,
|
|
1159
|
+
r,
|
|
1160
|
+
s,
|
|
1161
|
+
o,
|
|
1162
|
+
l,
|
|
1163
|
+
n
|
|
1164
|
+
]), d.useEffect(() => {
|
|
1165
|
+
if (!n) return;
|
|
1166
|
+
const c = window.matchMedia("(prefers-color-scheme: dark)"), g = (u) => {
|
|
1167
|
+
try {
|
|
1168
|
+
localStorage.getItem(s) || P(u.matches ? "night" : "day");
|
|
1169
|
+
} catch {
|
|
1170
|
+
}
|
|
1171
|
+
};
|
|
1172
|
+
return c.addEventListener("change", g), () => c.removeEventListener("change", g);
|
|
1173
|
+
}, [n, s, P]), d.useEffect(() => {
|
|
1174
|
+
w(y, f, x);
|
|
1175
|
+
}, [y, f, x]);
|
|
1176
|
+
const ie = d.useMemo(
|
|
1177
|
+
() => ({
|
|
1178
|
+
mode: y,
|
|
1179
|
+
theme: f,
|
|
1180
|
+
brand: x,
|
|
1181
|
+
reduceMotion: m !== void 0 ? m : D,
|
|
1182
|
+
enableAnimations: p !== void 0 ? p : F,
|
|
1183
|
+
setMode: P,
|
|
1184
|
+
setTheme: H,
|
|
1185
|
+
setBrand: O,
|
|
1186
|
+
toggleMode: M,
|
|
1187
|
+
setReduceMotion: z,
|
|
1188
|
+
setEnableAnimations: I
|
|
1189
|
+
}),
|
|
1190
|
+
[
|
|
1191
|
+
y,
|
|
1192
|
+
f,
|
|
1193
|
+
x,
|
|
1194
|
+
D,
|
|
1195
|
+
F,
|
|
1196
|
+
m,
|
|
1197
|
+
p,
|
|
1198
|
+
P,
|
|
1199
|
+
H,
|
|
1200
|
+
O,
|
|
1201
|
+
M,
|
|
1202
|
+
z,
|
|
1203
|
+
I
|
|
1204
|
+
]
|
|
1205
|
+
);
|
|
1206
|
+
return /* @__PURE__ */ ce(ae.Provider, { value: ie, children: t });
|
|
1207
|
+
}
|
|
1208
|
+
function Be() {
|
|
1209
|
+
const t = d.useContext(ae);
|
|
1210
|
+
if (t === void 0)
|
|
1211
|
+
throw new Error("useTheme must be used within a ThemeProvider");
|
|
1212
|
+
return t;
|
|
1213
|
+
}
|
|
1214
|
+
export {
|
|
1215
|
+
Te as T,
|
|
1216
|
+
w as a,
|
|
1217
|
+
je as b,
|
|
1218
|
+
Q as c,
|
|
1219
|
+
J as d,
|
|
1220
|
+
X as e,
|
|
1221
|
+
Y as f,
|
|
1222
|
+
be as g,
|
|
1223
|
+
ae as h,
|
|
1224
|
+
we as l,
|
|
1225
|
+
G as p,
|
|
1226
|
+
Be as u
|
|
1227
|
+
};
|