@expcat/tigercat-core 2.1.2 → 2.1.4

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 (77) hide show
  1. package/README.md +10 -0
  2. package/dist/{data-export-CLWdsrRn.d.ts → data-export-D01yjggE.d.ts} +18 -7
  3. package/dist/datepicker-locales/ar-SA.d.ts +2 -1
  4. package/dist/datepicker-locales/ar-SA.js +8 -1
  5. package/dist/datepicker-locales/de-DE.d.ts +2 -1
  6. package/dist/datepicker-locales/de-DE.js +8 -1
  7. package/dist/datepicker-locales/en-US.d.ts +2 -1
  8. package/dist/datepicker-locales/en-US.js +3 -1
  9. package/dist/datepicker-locales/es-ES.d.ts +2 -1
  10. package/dist/datepicker-locales/es-ES.js +8 -1
  11. package/dist/datepicker-locales/fr-FR.d.ts +2 -1
  12. package/dist/datepicker-locales/fr-FR.js +8 -1
  13. package/dist/datepicker-locales/id-ID.d.ts +2 -1
  14. package/dist/datepicker-locales/id-ID.js +8 -1
  15. package/dist/datepicker-locales/ja-JP.d.ts +2 -1
  16. package/dist/datepicker-locales/ja-JP.js +8 -1
  17. package/dist/datepicker-locales/ko-KR.d.ts +2 -1
  18. package/dist/datepicker-locales/ko-KR.js +8 -1
  19. package/dist/datepicker-locales/pt-BR.d.ts +2 -1
  20. package/dist/datepicker-locales/pt-BR.js +8 -1
  21. package/dist/datepicker-locales/registry.d.ts +2 -1
  22. package/dist/datepicker-locales/registry.js +94 -13
  23. package/dist/datepicker-locales/th-TH.d.ts +2 -1
  24. package/dist/datepicker-locales/th-TH.js +8 -1
  25. package/dist/datepicker-locales/vi-VN.d.ts +2 -1
  26. package/dist/datepicker-locales/vi-VN.js +8 -1
  27. package/dist/datepicker-locales/zh-CN.d.ts +2 -1
  28. package/dist/datepicker-locales/zh-CN.js +3 -1
  29. package/dist/datepicker-locales/zh-TW.d.ts +2 -1
  30. package/dist/datepicker-locales/zh-TW.js +8 -1
  31. package/dist/icons/common.d.ts +2 -2
  32. package/dist/icons/common.js +14 -8
  33. package/dist/index.d.ts +10303 -5381
  34. package/dist/index.js +30994 -16436
  35. package/dist/locale-qoiGEqe_.d.ts +1507 -0
  36. package/dist/locales/ar-SA.d.ts +2 -2
  37. package/dist/locales/ar-SA.js +448 -442
  38. package/dist/locales/de-DE.d.ts +2 -2
  39. package/dist/locales/de-DE.js +456 -450
  40. package/dist/locales/en-US.d.ts +2 -2
  41. package/dist/locales/en-US.js +259 -62
  42. package/dist/locales/es-ES.d.ts +2 -2
  43. package/dist/locales/es-ES.js +450 -444
  44. package/dist/locales/fr-FR.d.ts +2 -2
  45. package/dist/locales/fr-FR.js +453 -447
  46. package/dist/locales/id-ID.d.ts +3 -3
  47. package/dist/locales/id-ID.js +471 -448
  48. package/dist/locales/ja-JP.d.ts +3 -3
  49. package/dist/locales/ja-JP.js +465 -442
  50. package/dist/locales/ko-KR.d.ts +3 -3
  51. package/dist/locales/ko-KR.js +465 -442
  52. package/dist/locales/pt-BR.d.ts +2 -2
  53. package/dist/locales/pt-BR.js +452 -446
  54. package/dist/locales/th-TH.d.ts +3 -3
  55. package/dist/locales/th-TH.js +467 -444
  56. package/dist/locales/vi-VN.d.ts +3 -3
  57. package/dist/locales/vi-VN.js +467 -444
  58. package/dist/locales/zh-CN.d.ts +2 -2
  59. package/dist/locales/zh-CN.js +257 -60
  60. package/dist/locales/zh-TW.d.ts +3 -3
  61. package/dist/locales/zh-TW.js +467 -444
  62. package/dist/{table-CHeBgM_2.d.ts → table-R9Yp1aVa.d.ts} +77 -54
  63. package/dist/tailwind/modern.js +1364 -150
  64. package/dist/{tailwind-entry-nnuviNxx.d.ts → tailwind-entry-C26Y3TZG.d.ts} +13 -10
  65. package/dist/tailwind.d.ts +1 -1
  66. package/dist/tailwind.js +1406 -136
  67. package/dist/utils/data-export.d.ts +19 -5
  68. package/dist/utils/data-export.js +138 -13
  69. package/dist/utils/table-export.d.ts +21 -12
  70. package/dist/utils/table-export.js +75 -46
  71. package/package.json +1 -1
  72. package/tokens/figma-variables.json +223 -147
  73. package/tokens/tokens.css +224 -57
  74. package/tokens/tokens.json +205 -31
  75. package/dist/datepicker-Digy7Stt.d.ts +0 -201
  76. package/dist/locale-KMGxL6bT.d.ts +0 -625
  77. package/tokens/tailwind-tokens.js +0 -145
package/dist/tailwind.js CHANGED
@@ -1,75 +1,6 @@
1
1
  // src/tailwind-plugin.ts
2
2
  import plugin from "tailwindcss/plugin";
3
3
 
4
- // src/theme-runtime/index.ts
5
- var THEME_CSS_VARS = {
6
- // Primary colors
7
- primary: "--tiger-primary",
8
- primaryHover: "--tiger-primary-hover",
9
- primaryActive: "--tiger-primary-active",
10
- primaryDisabled: "--tiger-primary-disabled",
11
- // Secondary colors
12
- secondary: "--tiger-secondary",
13
- secondaryHover: "--tiger-secondary-hover",
14
- secondaryActive: "--tiger-secondary-active",
15
- secondaryDisabled: "--tiger-secondary-disabled",
16
- // Background hover states
17
- outlineBgHover: "--tiger-outline-bg-hover",
18
- ghostBgHover: "--tiger-ghost-bg-hover",
19
- // Interaction states
20
- focusRing: "--tiger-focus-ring",
21
- // Surface & background
22
- surface: "--tiger-surface",
23
- surfaceMuted: "--tiger-surface-muted",
24
- surfaceRaised: "--tiger-surface-raised",
25
- // Text
26
- text: "--tiger-text",
27
- textSecondary: "--tiger-text-secondary",
28
- textDisabled: "--tiger-text-disabled",
29
- // Border
30
- border: "--tiger-border",
31
- borderStrong: "--tiger-border-strong",
32
- // Status colors
33
- success: "--tiger-success",
34
- warning: "--tiger-warning",
35
- error: "--tiger-error",
36
- info: "--tiger-info",
37
- // Chart palette
38
- chart1: "--tiger-chart-1",
39
- chart2: "--tiger-chart-2",
40
- chart3: "--tiger-chart-3",
41
- chart4: "--tiger-chart-4",
42
- chart5: "--tiger-chart-5",
43
- chart6: "--tiger-chart-6",
44
- // Aliases of existing semantic tokens (not a third color system)
45
- textMuted: "--tiger-text-muted",
46
- fill: "--tiger-fill",
47
- bg: "--tiger-bg",
48
- // Breakpoints
49
- breakpointXs: "--tiger-breakpoint-xs",
50
- breakpointSm: "--tiger-breakpoint-sm",
51
- breakpointMd: "--tiger-breakpoint-md",
52
- breakpointLg: "--tiger-breakpoint-lg",
53
- breakpointXl: "--tiger-breakpoint-xl"
54
- };
55
- var THEME_CSS_VAR_ALIAS_SOURCES = {
56
- textMuted: "textSecondary",
57
- fill: "surfaceMuted",
58
- bg: "surface"
59
- };
60
- function semanticColorsToCssVars(colors = {}) {
61
- const vars = {};
62
- for (const [key, value] of Object.entries(colors)) {
63
- const varName = THEME_CSS_VARS[key];
64
- if (varName && value) vars[varName] = value;
65
- }
66
- for (const aliasKey of Object.keys(THEME_CSS_VAR_ALIAS_SOURCES)) {
67
- const sourceKey = THEME_CSS_VAR_ALIAS_SOURCES[aliasKey];
68
- vars[THEME_CSS_VARS[aliasKey]] = `var(${THEME_CSS_VARS[sourceKey]})`;
69
- }
70
- return vars;
71
- }
72
-
73
4
  // src/themes/modern/tokens.ts
74
5
  var MODERN_BASE_TOKENS_LIGHT = {
75
6
  // Radius (matches existing rounded-md/lg/xl)
@@ -131,6 +62,69 @@ var MODERN_BASE_TOKENS_DARK = {
131
62
  // Header border tracks the dark-mode global border by default.
132
63
  "--tiger-header-border": "var(--tiger-border)"
133
64
  };
65
+ var MODERN_OVERRIDE_TOKENS_LIGHT = {
66
+ // Rounder corners
67
+ "--tiger-radius-sm": "8px",
68
+ "--tiger-radius-md": "12px",
69
+ "--tiger-radius-lg": "16px",
70
+ "--tiger-radius-xl": "20px",
71
+ "--tiger-radius-pill": "9999px",
72
+ // Multi-layer shadows
73
+ "--tiger-shadow-sm": "0 1px 2px 0 rgb(0 0 0 / 0.04), 0 1px 3px 0 rgb(0 0 0 / 0.06)",
74
+ "--tiger-shadow-md": "0 4px 8px -2px rgb(0 0 0 / 0.06), 0 2px 4px -1px rgb(0 0 0 / 0.04)",
75
+ "--tiger-shadow-lg": "0 12px 24px -4px rgb(0 0 0 / 0.08), 0 4px 8px -2px rgb(0 0 0 / 0.04)",
76
+ "--tiger-shadow-xl": "0 24px 48px -8px rgb(0 0 0 / 0.1), 0 8px 16px -4px rgb(0 0 0 / 0.05)",
77
+ // Glass: backdrop blur + inset highlights
78
+ "--tiger-shadow-glass": "inset 0 1px 0 rgb(255 255 255 / 0.6), inset 0 -1px 0 rgb(0 0 0 / 0.04), 0 8px 24px -4px rgb(15 23 42 / 0.1)",
79
+ "--tiger-shadow-glass-strong": "inset 0 1px 0 rgb(255 255 255 / 0.5), inset 0 0 0 1px rgb(255 255 255 / 0.18), 0 16px 32px -8px rgb(15 23 42 / 0.16)",
80
+ "--tiger-blur-glass": "16px",
81
+ "--tiger-blur-glass-strong": "24px",
82
+ // Chart axis softening (modern look uses fainter axis/grid strokes)
83
+ "--tiger-chart-axis-line-opacity": "0.6",
84
+ "--tiger-chart-axis-tick-opacity": "0.55",
85
+ "--tiger-chart-grid-line-opacity": "0.4",
86
+ // Chart legend marker + row hover (opt-in glassy look)
87
+ "--tiger-chart-legend-marker-image": "linear-gradient(135deg, color-mix(in oklab, var(--tiger-chart-legend-marker-color) 100%, white 18%) 0%, var(--tiger-chart-legend-marker-color) 100%)",
88
+ "--tiger-chart-legend-row-hover-bg": "rgb(15 23 42 / 0.04)",
89
+ "--tiger-chart-legend-row-radius": "var(--tiger-radius-sm, 6px)",
90
+ // Chart block (TreeMap / Sunburst / Heatmap rect & path) — softer corners + active highlight
91
+ "--tiger-chart-block-radius": "var(--tiger-radius-sm, 2px)",
92
+ "--tiger-chart-block-active-filter": "brightness(1.08) saturate(1.1)",
93
+ // Chart bar (BarChart rect) — softer top corners (modern bumps to --tiger-radius-sm)
94
+ "--tiger-chart-bar-radius": "var(--tiger-radius-sm, 4px)",
95
+ // Chart scatter point — slightly stronger halo on hover under modern preset
96
+ "--tiger-chart-scatter-halo-radius": "6px",
97
+ // Chart donut center hole — opt-in glass panel behind centerValue / centerLabel
98
+ "--tiger-chart-donut-center-padding": "10px 14px",
99
+ "--tiger-chart-donut-center-bg": "color-mix(in oklab, var(--tiger-surface, #ffffff) 78%, transparent)",
100
+ "--tiger-chart-donut-center-shadow": "var(--tiger-shadow-glass)",
101
+ "--tiger-chart-donut-center-backdrop": "blur(var(--tiger-blur-glass, 16px)) saturate(1.05)",
102
+ // Subtle gradients via OKLab color-mix
103
+ "--tiger-gradient-primary": "linear-gradient(180deg, color-mix(in oklab, var(--tiger-primary) 100%, white 8%) 0%, var(--tiger-primary) 100%)",
104
+ "--tiger-gradient-surface": "linear-gradient(180deg, color-mix(in oklab, var(--tiger-surface) 100%, white 4%) 0%, var(--tiger-surface) 100%)",
105
+ "--tiger-gradient-danger": "linear-gradient(180deg, color-mix(in oklab, var(--tiger-error) 100%, white 6%) 0%, var(--tiger-error) 100%)",
106
+ // Refined motion
107
+ "--tiger-motion-ease-standard": "cubic-bezier(0.2, 0, 0, 1)",
108
+ "--tiger-motion-ease-decelerate": "cubic-bezier(0, 0, 0, 1)",
109
+ "--tiger-motion-ease-accelerate": "cubic-bezier(0.3, 0, 1, 1)",
110
+ "--tiger-motion-ease-emphasized": "cubic-bezier(0.2, 0, 0, 1.2)",
111
+ "--tiger-motion-ease-spring": "linear(0, 0.36 8%, 0.85 22%, 1.05 33%, 1.02 50%, 0.99 70%, 1)",
112
+ "--tiger-transition-base": "all var(--tiger-motion-duration-base) var(--tiger-motion-ease-standard)",
113
+ "--tiger-transition-quick": "all var(--tiger-motion-duration-quick) var(--tiger-motion-ease-standard)",
114
+ "--tiger-transition-emphasized": "transform var(--tiger-motion-duration-relaxed) var(--tiger-motion-ease-emphasized)"
115
+ };
116
+ var MODERN_OVERRIDE_TOKENS_DARK = {
117
+ "--tiger-shadow-sm": "0 1px 2px 0 rgb(2 6 23 / 0.5)",
118
+ "--tiger-shadow-md": "0 4px 8px -2px rgb(2 6 23 / 0.55), 0 2px 4px -1px rgb(2 6 23 / 0.4)",
119
+ "--tiger-shadow-lg": "0 12px 24px -4px rgb(2 6 23 / 0.55), 0 4px 8px -2px rgb(2 6 23 / 0.4)",
120
+ "--tiger-shadow-xl": "0 24px 48px -8px rgb(2 6 23 / 0.6), 0 8px 16px -4px rgb(2 6 23 / 0.45)",
121
+ "--tiger-shadow-glass": "inset 0 1px 0 rgb(255 255 255 / 0.06), inset 0 -1px 0 rgb(0 0 0 / 0.4), 0 8px 24px -4px rgb(0 0 0 / 0.4)",
122
+ "--tiger-shadow-glass-strong": "inset 0 1px 0 rgb(255 255 255 / 0.08), inset 0 0 0 1px rgb(255 255 255 / 0.06), 0 16px 32px -8px rgb(0 0 0 / 0.55)",
123
+ // Chart legend row hover for dark surfaces (slightly brighter)
124
+ "--tiger-chart-legend-row-hover-bg": "rgb(255 255 255 / 0.06)",
125
+ // Donut center glass panel for dark surfaces (slightly more opaque to read on dark)
126
+ "--tiger-chart-donut-center-bg": "color-mix(in oklab, var(--tiger-surface, #0f172a) 70%, transparent)"
127
+ };
134
128
  var MODERN_REDUCED_MOTION_TOKENS = {
135
129
  "--tiger-motion-duration-instant": "0ms",
136
130
  "--tiger-motion-duration-quick": "0ms",
@@ -142,73 +136,1346 @@ var MODERN_REDUCED_MOTION_TOKENS = {
142
136
  "--tiger-transition-emphasized": "transform 0ms linear"
143
137
  };
144
138
 
139
+ // src/tokens/tokens.ts
140
+ var runtimeThemeLight = {
141
+ colors: {
142
+ primary: "#2563eb",
143
+ primaryHover: "#1d4ed8",
144
+ primaryActive: "#1e40af",
145
+ primaryDisabled: "#93c5fd",
146
+ primaryForeground: "#ffffff",
147
+ secondary: "#4b5563",
148
+ secondaryHover: "#374151",
149
+ secondaryActive: "#1f2937",
150
+ secondaryDisabled: "#9ca3af",
151
+ secondaryForeground: "#ffffff",
152
+ outlineBgHover: "#eff6ff",
153
+ ghostBgHover: "#eff6ff",
154
+ focusRing: "#2563eb",
155
+ surface: "#ffffff",
156
+ surfaceMuted: "#f9fafb",
157
+ surfaceRaised: "#ffffff",
158
+ text: "#111827",
159
+ textSecondary: "#6b7280",
160
+ textDisabled: "#d1d5db",
161
+ border: "#e5e7eb",
162
+ borderStrong: "#9ca3af",
163
+ success: "#16a34a",
164
+ warning: "#d97706",
165
+ error: "#dc2626",
166
+ errorForeground: "#ffffff",
167
+ errorHover: "#b91c1c",
168
+ errorDisabled: "#fca5a5",
169
+ errorBgHover: "#fef2f2",
170
+ info: "#3b82f6",
171
+ chart1: "#2563eb",
172
+ chart2: "#16a34a",
173
+ chart3: "#d97706",
174
+ chart4: "#a855f7",
175
+ chart5: "#0ea5e9",
176
+ chart6: "#ef4444"
177
+ },
178
+ typography: {
179
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
180
+ fontFamilyMono: "'SF Mono', Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
181
+ fontSizeBase: "16px",
182
+ fontSizeSm: "14px",
183
+ fontSizeLg: "18px",
184
+ fontWeightNormal: "400",
185
+ fontWeightMedium: "500",
186
+ fontWeightSemibold: "600",
187
+ fontWeightBold: "700",
188
+ lineHeightNormal: "1.5",
189
+ lineHeightTight: "1.25"
190
+ },
191
+ radius: {
192
+ none: "0",
193
+ sm: "4px",
194
+ md: "6px",
195
+ lg: "10px",
196
+ xl: "14px",
197
+ full: "9999px"
198
+ },
199
+ shadows: {
200
+ xs: "0 1px 2px 0 rgba(0,0,0,0.05)",
201
+ sm: "0 1px 3px 0 rgba(0,0,0,0.1), 0 1px 2px -1px rgba(0,0,0,0.1)",
202
+ md: "0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)",
203
+ lg: "0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",
204
+ xl: "0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)"
205
+ },
206
+ spacing: {
207
+ xs: "2px",
208
+ sm: "4px",
209
+ md: "8px",
210
+ lg: "16px",
211
+ xl: "24px"
212
+ },
213
+ motion: {
214
+ durationFast: "150ms",
215
+ durationBase: "200ms",
216
+ durationSlow: "300ms",
217
+ easing: "cubic-bezier(0.4, 0, 0.2, 1)"
218
+ }
219
+ };
220
+ var runtimeThemeDark = {
221
+ colors: {
222
+ primary: "#60a5fa",
223
+ primaryHover: "#93c5fd",
224
+ primaryActive: "#bfdbfe",
225
+ primaryDisabled: "#1e40af",
226
+ primaryForeground: "#111827",
227
+ secondary: "#9ca3af",
228
+ secondaryHover: "#d1d5db",
229
+ secondaryActive: "#e5e7eb",
230
+ secondaryDisabled: "#4b5563",
231
+ secondaryForeground: "#111827",
232
+ outlineBgHover: "#1e3a5f",
233
+ ghostBgHover: "#1e3a5f",
234
+ focusRing: "#60a5fa",
235
+ surface: "#111827",
236
+ surfaceMuted: "#1f2937",
237
+ surfaceRaised: "#1f2937",
238
+ text: "#f9fafb",
239
+ textSecondary: "#d1d5db",
240
+ textDisabled: "#4b5563",
241
+ border: "#374151",
242
+ borderStrong: "#6b7280",
243
+ success: "#4ade80",
244
+ warning: "#fbbf24",
245
+ error: "#f87171",
246
+ errorForeground: "#111827",
247
+ errorHover: "#fca5a5",
248
+ errorDisabled: "#991b1b",
249
+ errorBgHover: "#1f2937",
250
+ info: "#60a5fa",
251
+ chart1: "#60a5fa",
252
+ chart2: "#4ade80",
253
+ chart3: "#fbbf24",
254
+ chart4: "#c084fc",
255
+ chart5: "#38bdf8",
256
+ chart6: "#f87171"
257
+ },
258
+ typography: {
259
+ fontFamily: "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",
260
+ fontFamilyMono: "'SF Mono', Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace",
261
+ fontSizeBase: "16px",
262
+ fontSizeSm: "14px",
263
+ fontSizeLg: "18px",
264
+ fontWeightNormal: "400",
265
+ fontWeightMedium: "500",
266
+ fontWeightSemibold: "600",
267
+ fontWeightBold: "700",
268
+ lineHeightNormal: "1.5",
269
+ lineHeightTight: "1.25"
270
+ },
271
+ radius: {
272
+ none: "0",
273
+ sm: "4px",
274
+ md: "6px",
275
+ lg: "10px",
276
+ xl: "14px",
277
+ full: "9999px"
278
+ },
279
+ shadows: {
280
+ xs: "0 1px 2px 0 rgba(0,0,0,0.2)",
281
+ sm: "0 1px 3px 0 rgba(0,0,0,0.3), 0 1px 2px -1px rgba(0,0,0,0.25)",
282
+ md: "0 4px 6px -1px rgba(0,0,0,0.3), 0 2px 4px -2px rgba(0,0,0,0.25)",
283
+ lg: "0 10px 15px -3px rgba(0,0,0,0.3), 0 4px 6px -4px rgba(0,0,0,0.25)",
284
+ xl: "0 20px 25px -5px rgba(0,0,0,0.3), 0 8px 10px -6px rgba(0,0,0,0.25)"
285
+ },
286
+ spacing: {
287
+ xs: "2px",
288
+ sm: "4px",
289
+ md: "8px",
290
+ lg: "16px",
291
+ xl: "24px"
292
+ },
293
+ motion: {
294
+ durationFast: "150ms",
295
+ durationBase: "200ms",
296
+ durationSlow: "300ms",
297
+ easing: "cubic-bezier(0.4, 0, 0.2, 1)"
298
+ }
299
+ };
300
+
145
301
  // src/themes/default/theme.ts
146
302
  var defaultThemeLightColors = {
147
- primary: "#2563eb",
148
- primaryHover: "#1d4ed8",
149
- primaryActive: "#1e40af",
150
- primaryDisabled: "#93c5fd",
151
- secondary: "#4b5563",
152
- secondaryHover: "#374151",
153
- secondaryActive: "#1f2937",
154
- secondaryDisabled: "#9ca3af",
155
- outlineBgHover: "#eff6ff",
156
- ghostBgHover: "#eff6ff",
157
- focusRing: "#2563eb",
158
- surface: "#ffffff",
159
- surfaceMuted: "#f9fafb",
160
- surfaceRaised: "#ffffff",
161
- text: "#111827",
162
- textSecondary: "#6b7280",
163
- textDisabled: "#d1d5db",
164
- border: "#e5e7eb",
165
- borderStrong: "#9ca3af",
166
- success: "#16a34a",
167
- warning: "#d97706",
168
- error: "#dc2626",
169
- info: "#3b82f6",
170
- chart1: "#2563eb",
171
- chart2: "#16a34a",
172
- chart3: "#d97706",
173
- chart4: "#a855f7",
174
- chart5: "#0ea5e9",
175
- chart6: "#ef4444"
303
+ ...runtimeThemeLight.colors
176
304
  };
177
305
  var defaultThemeDarkColors = {
178
- primary: "#60a5fa",
179
- primaryHover: "#93c5fd",
180
- primaryActive: "#bfdbfe",
181
- primaryDisabled: "#1e40af",
182
- secondary: "#9ca3af",
183
- secondaryHover: "#d1d5db",
184
- secondaryActive: "#e5e7eb",
185
- secondaryDisabled: "#4b5563",
186
- outlineBgHover: "#1e3a5f",
187
- ghostBgHover: "#1e3a5f",
188
- focusRing: "#60a5fa",
189
- surface: "#111827",
190
- surfaceMuted: "#1f2937",
191
- surfaceRaised: "#1f2937",
192
- text: "#f9fafb",
193
- textSecondary: "#d1d5db",
194
- textDisabled: "#4b5563",
195
- border: "#374151",
196
- borderStrong: "#6b7280",
197
- success: "#4ade80",
198
- warning: "#fbbf24",
199
- error: "#f87171",
200
- info: "#60a5fa",
201
- chart1: "#60a5fa",
202
- chart2: "#4ade80",
203
- chart3: "#fbbf24",
204
- chart4: "#c084fc",
205
- chart5: "#38bdf8",
206
- chart6: "#f87171"
306
+ ...runtimeThemeDark.colors
307
+ };
308
+ var defaultTheme = {
309
+ name: "default",
310
+ label: "Default",
311
+ light: {
312
+ colors: defaultThemeLightColors,
313
+ typography: { ...runtimeThemeLight.typography },
314
+ radius: { ...runtimeThemeLight.radius },
315
+ shadows: { ...runtimeThemeLight.shadows },
316
+ spacing: { ...runtimeThemeLight.spacing },
317
+ motion: { ...runtimeThemeLight.motion }
318
+ },
319
+ dark: {
320
+ colors: defaultThemeDarkColors,
321
+ typography: { ...runtimeThemeDark.typography },
322
+ radius: { ...runtimeThemeDark.radius },
323
+ shadows: { ...runtimeThemeDark.shadows },
324
+ spacing: { ...runtimeThemeDark.spacing },
325
+ motion: { ...runtimeThemeDark.motion }
326
+ }
327
+ };
328
+
329
+ // src/themes/modern/theme.ts
330
+ var modernTheme = {
331
+ name: "modern",
332
+ label: "Modern",
333
+ light: {
334
+ colors: {
335
+ primary: "#2563eb",
336
+ primaryHover: "#1d4ed8",
337
+ primaryActive: "#1e40af",
338
+ primaryDisabled: "#93c5fd",
339
+ primaryForeground: "#ffffff",
340
+ secondary: "#4b5563",
341
+ secondaryHover: "#374151",
342
+ secondaryActive: "#1f2937",
343
+ secondaryDisabled: "#9ca3af",
344
+ secondaryForeground: "#ffffff",
345
+ outlineBgHover: "#eff6ff",
346
+ ghostBgHover: "#eff6ff",
347
+ focusRing: "#2563eb",
348
+ surface: "#ffffff",
349
+ surfaceMuted: "#f8fafc",
350
+ surfaceRaised: "#ffffff",
351
+ text: "#0f172a",
352
+ textSecondary: "#475569",
353
+ textDisabled: "#cbd5e1",
354
+ border: "#e2e8f0",
355
+ borderStrong: "#94a3b8",
356
+ success: "#16a34a",
357
+ warning: "#d97706",
358
+ error: "#dc2626",
359
+ errorForeground: "#ffffff",
360
+ errorHover: "#b91c1c",
361
+ errorDisabled: "#fca5a5",
362
+ errorBgHover: "#fef2f2",
363
+ info: "#0ea5e9",
364
+ chart1: "#2563eb",
365
+ chart2: "#16a34a",
366
+ chart3: "#d97706",
367
+ chart4: "#a855f7",
368
+ chart5: "#0ea5e9",
369
+ chart6: "#ef4444"
370
+ },
371
+ radius: { none: "0", sm: "8px", md: "12px", lg: "16px", xl: "20px", full: "9999px" },
372
+ shadows: {
373
+ xs: "0 1px 2px 0 rgb(0 0 0 / 0.04)",
374
+ sm: "0 1px 2px 0 rgb(0 0 0 / 0.04), 0 1px 3px 0 rgb(0 0 0 / 0.06)",
375
+ md: "0 4px 8px -2px rgb(0 0 0 / 0.06), 0 2px 4px -1px rgb(0 0 0 / 0.04)",
376
+ lg: "0 12px 24px -4px rgb(0 0 0 / 0.08), 0 4px 8px -2px rgb(0 0 0 / 0.04)",
377
+ xl: "0 24px 48px -8px rgb(0 0 0 / 0.1), 0 8px 16px -4px rgb(0 0 0 / 0.05)"
378
+ },
379
+ motion: {
380
+ durationFast: "150ms",
381
+ durationBase: "200ms",
382
+ durationSlow: "300ms",
383
+ easing: "cubic-bezier(0.2, 0, 0, 1)"
384
+ }
385
+ },
386
+ dark: {
387
+ colors: {
388
+ primary: "#60a5fa",
389
+ primaryHover: "#93c5fd",
390
+ primaryActive: "#bfdbfe",
391
+ primaryDisabled: "#1e40af",
392
+ primaryForeground: "#0f172a",
393
+ secondary: "#94a3b8",
394
+ secondaryHover: "#cbd5e1",
395
+ secondaryActive: "#e2e8f0",
396
+ secondaryDisabled: "#475569",
397
+ secondaryForeground: "#0f172a",
398
+ outlineBgHover: "#1e3a5f",
399
+ ghostBgHover: "#1e3a5f",
400
+ focusRing: "#60a5fa",
401
+ surface: "#0f172a",
402
+ surfaceMuted: "#1e293b",
403
+ surfaceRaised: "#1e293b",
404
+ text: "#f1f5f9",
405
+ textSecondary: "#cbd5e1",
406
+ textDisabled: "#475569",
407
+ border: "#334155",
408
+ borderStrong: "#64748b",
409
+ success: "#4ade80",
410
+ warning: "#fbbf24",
411
+ error: "#f87171",
412
+ errorForeground: "#0f172a",
413
+ errorHover: "#fca5a5",
414
+ errorDisabled: "#7f1d1d",
415
+ errorBgHover: "#1e293b",
416
+ info: "#38bdf8",
417
+ chart1: "#60a5fa",
418
+ chart2: "#4ade80",
419
+ chart3: "#fbbf24",
420
+ chart4: "#c084fc",
421
+ chart5: "#38bdf8",
422
+ chart6: "#f87171"
423
+ },
424
+ radius: { none: "0", sm: "8px", md: "12px", lg: "16px", xl: "20px", full: "9999px" },
425
+ shadows: {
426
+ xs: "0 1px 2px 0 rgb(2 6 23 / 0.4)",
427
+ sm: "0 1px 2px 0 rgb(2 6 23 / 0.5)",
428
+ md: "0 4px 8px -2px rgb(2 6 23 / 0.55), 0 2px 4px -1px rgb(2 6 23 / 0.4)",
429
+ lg: "0 12px 24px -4px rgb(2 6 23 / 0.55), 0 4px 8px -2px rgb(2 6 23 / 0.4)",
430
+ xl: "0 24px 48px -8px rgb(2 6 23 / 0.6), 0 8px 16px -4px rgb(2 6 23 / 0.45)"
431
+ },
432
+ motion: {
433
+ durationFast: "150ms",
434
+ durationBase: "200ms",
435
+ durationSlow: "300ms",
436
+ easing: "cubic-bezier(0.2, 0, 0, 1)"
437
+ }
438
+ }
439
+ };
440
+
441
+ // src/utils/env.ts
442
+ function isBrowser() {
443
+ return typeof window !== "undefined" && typeof document !== "undefined";
444
+ }
445
+
446
+ // src/utils/dev-warn.ts
447
+ function isDevEnvironment() {
448
+ const proc = globalThis.process;
449
+ return !proc?.env || proc.env.NODE_ENV !== "production";
450
+ }
451
+ var warnedKeys = /* @__PURE__ */ new Set();
452
+ function devWarn(key, message) {
453
+ if (!isDevEnvironment() || warnedKeys.has(key)) return;
454
+ warnedKeys.add(key);
455
+ console.warn(message);
456
+ }
457
+
458
+ // src/theme-runtime/index.ts
459
+ var THEME_CSS_VARS = {
460
+ // Primary colors
461
+ primary: "--tiger-primary",
462
+ primaryHover: "--tiger-primary-hover",
463
+ primaryActive: "--tiger-primary-active",
464
+ primaryDisabled: "--tiger-primary-disabled",
465
+ primaryForeground: "--tiger-primary-foreground",
466
+ // Secondary colors
467
+ secondary: "--tiger-secondary",
468
+ secondaryHover: "--tiger-secondary-hover",
469
+ secondaryActive: "--tiger-secondary-active",
470
+ secondaryDisabled: "--tiger-secondary-disabled",
471
+ secondaryForeground: "--tiger-secondary-foreground",
472
+ // Background hover states
473
+ outlineBgHover: "--tiger-outline-bg-hover",
474
+ ghostBgHover: "--tiger-ghost-bg-hover",
475
+ // Interaction states
476
+ focusRing: "--tiger-focus-ring",
477
+ // Surface & background
478
+ surface: "--tiger-surface",
479
+ surfaceMuted: "--tiger-surface-muted",
480
+ surfaceRaised: "--tiger-surface-raised",
481
+ // Text
482
+ text: "--tiger-text",
483
+ textSecondary: "--tiger-text-secondary",
484
+ textDisabled: "--tiger-text-disabled",
485
+ // Border
486
+ border: "--tiger-border",
487
+ borderStrong: "--tiger-border-strong",
488
+ // Status colors
489
+ success: "--tiger-success",
490
+ warning: "--tiger-warning",
491
+ error: "--tiger-error",
492
+ errorForeground: "--tiger-error-foreground",
493
+ errorHover: "--tiger-error-hover",
494
+ errorDisabled: "--tiger-error-disabled",
495
+ errorBgHover: "--tiger-error-bg-hover",
496
+ info: "--tiger-info",
497
+ // Chart palette
498
+ chart1: "--tiger-chart-1",
499
+ chart2: "--tiger-chart-2",
500
+ chart3: "--tiger-chart-3",
501
+ chart4: "--tiger-chart-4",
502
+ chart5: "--tiger-chart-5",
503
+ chart6: "--tiger-chart-6",
504
+ // Aliases of existing semantic tokens (not a third color system)
505
+ textMuted: "--tiger-text-muted",
506
+ fill: "--tiger-fill",
507
+ bg: "--tiger-bg",
508
+ // Breakpoints
509
+ breakpointXs: "--tiger-breakpoint-xs",
510
+ breakpointSm: "--tiger-breakpoint-sm",
511
+ breakpointMd: "--tiger-breakpoint-md",
512
+ breakpointLg: "--tiger-breakpoint-lg",
513
+ breakpointXl: "--tiger-breakpoint-xl",
514
+ breakpoint2xl: "--tiger-breakpoint-2xl"
515
+ };
516
+ var TIGER_BREAKPOINT_CSS_VALUES = {
517
+ breakpointXs: "0px",
518
+ breakpointSm: "640px",
519
+ breakpointMd: "768px",
520
+ breakpointLg: "1024px",
521
+ breakpointXl: "1280px",
522
+ breakpoint2xl: "1536px"
523
+ };
524
+ var THEME_CSS_VAR_ALIAS_SOURCES = {
525
+ textMuted: "textSecondary",
526
+ fill: "surfaceMuted",
527
+ bg: "surface"
528
+ };
529
+ function semanticColorsToCssVars(colors = {}) {
530
+ const vars = {};
531
+ for (const [key, value] of Object.entries(colors)) {
532
+ const varName = THEME_CSS_VARS[key];
533
+ if (varName && value) vars[varName] = value;
534
+ }
535
+ for (const aliasKey of Object.keys(THEME_CSS_VAR_ALIAS_SOURCES)) {
536
+ const sourceKey = THEME_CSS_VAR_ALIAS_SOURCES[aliasKey];
537
+ vars[THEME_CSS_VARS[aliasKey]] = `var(${THEME_CSS_VARS[sourceKey]})`;
538
+ }
539
+ for (const [key, value] of Object.entries(TIGER_BREAKPOINT_CSS_VALUES)) {
540
+ vars[THEME_CSS_VARS[key]] = value;
541
+ }
542
+ return vars;
543
+ }
544
+ var cssVarCache = /* @__PURE__ */ new WeakMap();
545
+ function setCssVarsCached(element, vars) {
546
+ let cache = cssVarCache.get(element);
547
+ if (!cache) {
548
+ cache = /* @__PURE__ */ new Map();
549
+ cssVarCache.set(element, cache);
550
+ }
551
+ for (const [name, value] of Object.entries(vars)) {
552
+ if (!value) continue;
553
+ if (cache.get(name) === value) continue;
554
+ element.style.setProperty(name, value);
555
+ cache.set(name, value);
556
+ }
557
+ }
558
+ function removeCssVarsCached(element, names) {
559
+ const cache = cssVarCache.get(element);
560
+ for (const name of names) {
561
+ element.style.removeProperty(name);
562
+ cache?.delete(name);
563
+ }
564
+ }
565
+
566
+ // src/themes/vibrant/theme.ts
567
+ var vibrantTheme = {
568
+ name: "vibrant",
569
+ label: "Vibrant",
570
+ light: {
571
+ colors: {
572
+ primary: "#8b5cf6",
573
+ primaryHover: "#7c3aed",
574
+ primaryActive: "#6d28d9",
575
+ primaryDisabled: "#c4b5fd",
576
+ primaryForeground: "#000000",
577
+ secondary: "#ec4899",
578
+ secondaryHover: "#db2777",
579
+ secondaryActive: "#be185d",
580
+ secondaryDisabled: "#f9a8d4",
581
+ secondaryForeground: "#000000",
582
+ outlineBgHover: "#f5f3ff",
583
+ ghostBgHover: "#fdf2f8",
584
+ focusRing: "#8b5cf6",
585
+ surface: "#ffffff",
586
+ surfaceMuted: "#faf5ff",
587
+ surfaceRaised: "#ffffff",
588
+ text: "#1e1b4b",
589
+ textSecondary: "#6b21a8",
590
+ textDisabled: "#c4b5fd",
591
+ border: "#e9d5ff",
592
+ borderStrong: "#a78bfa",
593
+ success: "#10b981",
594
+ warning: "#f59e0b",
595
+ error: "#ef4444",
596
+ errorForeground: "#000000",
597
+ errorHover: "#dc2626",
598
+ errorDisabled: "#fca5a5",
599
+ errorBgHover: "#fef2f2",
600
+ info: "#06b6d4",
601
+ chart1: "#8b5cf6",
602
+ chart2: "#ec4899",
603
+ chart3: "#f59e0b",
604
+ chart4: "#06b6d4",
605
+ chart5: "#10b981",
606
+ chart6: "#f43f5e"
607
+ },
608
+ radius: { sm: "6px", md: "10px", lg: "14px", xl: "18px", none: "0", full: "9999px" }
609
+ },
610
+ dark: {
611
+ colors: {
612
+ primary: "#a78bfa",
613
+ primaryHover: "#c4b5fd",
614
+ primaryActive: "#ddd6fe",
615
+ primaryDisabled: "#4c1d95",
616
+ primaryForeground: "#1e1b4b",
617
+ secondary: "#f472b6",
618
+ secondaryHover: "#f9a8d4",
619
+ secondaryActive: "#fbcfe8",
620
+ secondaryDisabled: "#831843",
621
+ secondaryForeground: "#500724",
622
+ outlineBgHover: "#2e1065",
623
+ ghostBgHover: "#500724",
624
+ focusRing: "#a78bfa",
625
+ surface: "#0f0a1e",
626
+ surfaceMuted: "#1a1035",
627
+ surfaceRaised: "#231848",
628
+ text: "#f5f3ff",
629
+ textSecondary: "#c4b5fd",
630
+ textDisabled: "#4c1d95",
631
+ border: "#3b2070",
632
+ borderStrong: "#7c3aed",
633
+ success: "#34d399",
634
+ warning: "#fbbf24",
635
+ error: "#f87171",
636
+ errorForeground: "#0f0a1e",
637
+ errorHover: "#fca5a5",
638
+ errorDisabled: "#7f1d1d",
639
+ errorBgHover: "#1a1035",
640
+ info: "#22d3ee",
641
+ chart1: "#a78bfa",
642
+ chart2: "#f472b6",
643
+ chart3: "#fbbf24",
644
+ chart4: "#22d3ee",
645
+ chart5: "#34d399",
646
+ chart6: "#fb7185"
647
+ },
648
+ radius: { sm: "6px", md: "10px", lg: "14px", xl: "18px", none: "0", full: "9999px" }
649
+ }
650
+ };
651
+
652
+ // src/themes/professional/theme.ts
653
+ var professionalTheme = {
654
+ name: "professional",
655
+ label: "Professional",
656
+ light: {
657
+ colors: {
658
+ primary: "#1e40af",
659
+ primaryHover: "#1e3a8a",
660
+ primaryActive: "#172554",
661
+ primaryDisabled: "#93c5fd",
662
+ primaryForeground: "#ffffff",
663
+ secondary: "#334155",
664
+ secondaryHover: "#1e293b",
665
+ secondaryActive: "#0f172a",
666
+ secondaryDisabled: "#94a3b8",
667
+ secondaryForeground: "#ffffff",
668
+ outlineBgHover: "#eff6ff",
669
+ ghostBgHover: "#f1f5f9",
670
+ focusRing: "#1e40af",
671
+ surface: "#ffffff",
672
+ surfaceMuted: "#f8fafc",
673
+ surfaceRaised: "#ffffff",
674
+ text: "#0f172a",
675
+ textSecondary: "#475569",
676
+ textDisabled: "#cbd5e1",
677
+ border: "#e2e8f0",
678
+ borderStrong: "#94a3b8",
679
+ success: "#15803d",
680
+ warning: "#b45309",
681
+ error: "#b91c1c",
682
+ errorForeground: "#ffffff",
683
+ errorHover: "#991b1b",
684
+ errorDisabled: "#fca5a5",
685
+ errorBgHover: "#fef2f2",
686
+ info: "#1d4ed8",
687
+ chart1: "#1e40af",
688
+ chart2: "#15803d",
689
+ chart3: "#b45309",
690
+ chart4: "#7e22ce",
691
+ chart5: "#0e7490",
692
+ chart6: "#b91c1c"
693
+ },
694
+ radius: { sm: "2px", md: "4px", lg: "8px", xl: "10px", none: "0", full: "9999px" },
695
+ typography: {
696
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
697
+ fontFamilyMono: "'JetBrains Mono', 'SF Mono', monospace",
698
+ fontSizeBase: "15px",
699
+ fontSizeSm: "13px",
700
+ fontSizeLg: "17px",
701
+ fontWeightNormal: "400",
702
+ fontWeightMedium: "500",
703
+ fontWeightSemibold: "600",
704
+ fontWeightBold: "700",
705
+ lineHeightNormal: "1.5",
706
+ lineHeightTight: "1.25"
707
+ }
708
+ },
709
+ dark: {
710
+ colors: {
711
+ primary: "#60a5fa",
712
+ primaryHover: "#93c5fd",
713
+ primaryActive: "#bfdbfe",
714
+ primaryDisabled: "#1e3a8a",
715
+ primaryForeground: "#0f172a",
716
+ secondary: "#94a3b8",
717
+ secondaryHover: "#cbd5e1",
718
+ secondaryActive: "#e2e8f0",
719
+ secondaryDisabled: "#334155",
720
+ secondaryForeground: "#0f172a",
721
+ outlineBgHover: "#172554",
722
+ ghostBgHover: "#1e293b",
723
+ focusRing: "#60a5fa",
724
+ surface: "#0f172a",
725
+ surfaceMuted: "#1e293b",
726
+ surfaceRaised: "#1e293b",
727
+ text: "#f1f5f9",
728
+ textSecondary: "#cbd5e1",
729
+ textDisabled: "#475569",
730
+ border: "#334155",
731
+ borderStrong: "#64748b",
732
+ success: "#4ade80",
733
+ warning: "#fbbf24",
734
+ error: "#f87171",
735
+ errorForeground: "#0f172a",
736
+ errorHover: "#fca5a5",
737
+ errorDisabled: "#7f1d1d",
738
+ errorBgHover: "#1e293b",
739
+ info: "#60a5fa",
740
+ chart1: "#60a5fa",
741
+ chart2: "#4ade80",
742
+ chart3: "#fbbf24",
743
+ chart4: "#c084fc",
744
+ chart5: "#22d3ee",
745
+ chart6: "#f87171"
746
+ },
747
+ radius: { sm: "2px", md: "4px", lg: "8px", xl: "10px", none: "0", full: "9999px" },
748
+ typography: {
749
+ fontFamily: "'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif",
750
+ fontFamilyMono: "'JetBrains Mono', 'SF Mono', monospace",
751
+ fontSizeBase: "15px",
752
+ fontSizeSm: "13px",
753
+ fontSizeLg: "17px",
754
+ fontWeightNormal: "400",
755
+ fontWeightMedium: "500",
756
+ fontWeightSemibold: "600",
757
+ fontWeightBold: "700",
758
+ lineHeightNormal: "1.5",
759
+ lineHeightTight: "1.25"
760
+ }
761
+ }
762
+ };
763
+
764
+ // src/themes/minimal/theme.ts
765
+ var minimalTheme = {
766
+ name: "minimal",
767
+ label: "Minimal",
768
+ light: {
769
+ colors: {
770
+ primary: "#18181b",
771
+ primaryHover: "#09090b",
772
+ primaryActive: "#000000",
773
+ primaryDisabled: "#a1a1aa",
774
+ primaryForeground: "#ffffff",
775
+ secondary: "#52525b",
776
+ secondaryHover: "#3f3f46",
777
+ secondaryActive: "#27272a",
778
+ secondaryDisabled: "#a1a1aa",
779
+ secondaryForeground: "#ffffff",
780
+ outlineBgHover: "#fafafa",
781
+ ghostBgHover: "#f4f4f5",
782
+ focusRing: "#18181b",
783
+ surface: "#ffffff",
784
+ surfaceMuted: "#fafafa",
785
+ surfaceRaised: "#ffffff",
786
+ text: "#09090b",
787
+ textSecondary: "#71717a",
788
+ textDisabled: "#d4d4d8",
789
+ border: "#e4e4e7",
790
+ borderStrong: "#a1a1aa",
791
+ success: "#16a34a",
792
+ warning: "#ca8a04",
793
+ error: "#dc2626",
794
+ errorForeground: "#ffffff",
795
+ errorHover: "#b91c1c",
796
+ errorDisabled: "#fca5a5",
797
+ errorBgHover: "#fef2f2",
798
+ info: "#18181b",
799
+ chart1: "#18181b",
800
+ chart2: "#71717a",
801
+ chart3: "#a1a1aa",
802
+ chart4: "#d4d4d8",
803
+ chart5: "#3f3f46",
804
+ chart6: "#52525b"
805
+ },
806
+ radius: { sm: "2px", md: "4px", lg: "6px", xl: "8px", none: "0", full: "9999px" },
807
+ shadows: {
808
+ xs: "0 1px 2px 0 rgba(0,0,0,0.03)",
809
+ sm: "0 1px 2px 0 rgba(0,0,0,0.06)",
810
+ md: "0 2px 4px -1px rgba(0,0,0,0.06)",
811
+ lg: "0 4px 6px -2px rgba(0,0,0,0.06)",
812
+ xl: "0 8px 16px -4px rgba(0,0,0,0.08)"
813
+ }
814
+ },
815
+ dark: {
816
+ colors: {
817
+ primary: "#fafafa",
818
+ primaryHover: "#e4e4e7",
819
+ primaryActive: "#d4d4d8",
820
+ primaryDisabled: "#3f3f46",
821
+ primaryForeground: "#09090b",
822
+ secondary: "#a1a1aa",
823
+ secondaryHover: "#d4d4d8",
824
+ secondaryActive: "#e4e4e7",
825
+ secondaryDisabled: "#3f3f46",
826
+ secondaryForeground: "#09090b",
827
+ outlineBgHover: "#27272a",
828
+ ghostBgHover: "#27272a",
829
+ focusRing: "#fafafa",
830
+ surface: "#09090b",
831
+ surfaceMuted: "#18181b",
832
+ surfaceRaised: "#27272a",
833
+ text: "#fafafa",
834
+ textSecondary: "#a1a1aa",
835
+ textDisabled: "#3f3f46",
836
+ border: "#27272a",
837
+ borderStrong: "#52525b",
838
+ success: "#4ade80",
839
+ warning: "#fbbf24",
840
+ error: "#f87171",
841
+ errorForeground: "#09090b",
842
+ errorHover: "#fca5a5",
843
+ errorDisabled: "#7f1d1d",
844
+ errorBgHover: "#18181b",
845
+ info: "#fafafa",
846
+ chart1: "#fafafa",
847
+ chart2: "#a1a1aa",
848
+ chart3: "#71717a",
849
+ chart4: "#52525b",
850
+ chart5: "#d4d4d8",
851
+ chart6: "#e4e4e7"
852
+ },
853
+ radius: { sm: "2px", md: "4px", lg: "6px", xl: "8px", none: "0", full: "9999px" },
854
+ shadows: {
855
+ xs: "0 1px 2px 0 rgba(0,0,0,0.3)",
856
+ sm: "0 1px 2px 0 rgba(0,0,0,0.4)",
857
+ md: "0 2px 4px -1px rgba(0,0,0,0.4)",
858
+ lg: "0 4px 6px -2px rgba(0,0,0,0.4)",
859
+ xl: "0 8px 16px -4px rgba(0,0,0,0.5)"
860
+ }
861
+ }
862
+ };
863
+
864
+ // src/themes/natural/theme.ts
865
+ var naturalTheme = {
866
+ name: "natural",
867
+ label: "Natural",
868
+ light: {
869
+ colors: {
870
+ primary: "#059669",
871
+ primaryHover: "#047857",
872
+ primaryActive: "#065f46",
873
+ primaryDisabled: "#6ee7b7",
874
+ primaryForeground: "#1c1917",
875
+ secondary: "#78716c",
876
+ secondaryHover: "#57534e",
877
+ secondaryActive: "#44403c",
878
+ secondaryDisabled: "#a8a29e",
879
+ secondaryForeground: "#ffffff",
880
+ outlineBgHover: "#ecfdf5",
881
+ ghostBgHover: "#f5f5f4",
882
+ focusRing: "#059669",
883
+ surface: "#fffbf5",
884
+ surfaceMuted: "#faf5ee",
885
+ surfaceRaised: "#ffffff",
886
+ text: "#1c1917",
887
+ textSecondary: "#57534e",
888
+ textDisabled: "#d6d3d1",
889
+ border: "#e7e5e4",
890
+ borderStrong: "#a8a29e",
891
+ success: "#16a34a",
892
+ warning: "#d97706",
893
+ error: "#dc2626",
894
+ errorForeground: "#ffffff",
895
+ errorHover: "#b91c1c",
896
+ errorDisabled: "#fca5a5",
897
+ errorBgHover: "#fef2f2",
898
+ info: "#0284c7",
899
+ chart1: "#059669",
900
+ chart2: "#d97706",
901
+ chart3: "#0284c7",
902
+ chart4: "#a16207",
903
+ chart5: "#0d9488",
904
+ chart6: "#be123c"
905
+ },
906
+ radius: { sm: "6px", md: "8px", lg: "12px", xl: "16px", none: "0", full: "9999px" },
907
+ typography: {
908
+ fontFamily: "'Source Sans 3', 'Georgia', -apple-system, sans-serif",
909
+ fontFamilyMono: "'Source Code Pro', 'Menlo', monospace",
910
+ fontSizeBase: "16px",
911
+ fontSizeSm: "14px",
912
+ fontSizeLg: "18px",
913
+ fontWeightNormal: "400",
914
+ fontWeightMedium: "500",
915
+ fontWeightSemibold: "600",
916
+ fontWeightBold: "700",
917
+ lineHeightNormal: "1.6",
918
+ lineHeightTight: "1.3"
919
+ }
920
+ },
921
+ dark: {
922
+ colors: {
923
+ primary: "#34d399",
924
+ primaryHover: "#6ee7b7",
925
+ primaryActive: "#a7f3d0",
926
+ primaryDisabled: "#064e3b",
927
+ primaryForeground: "#1c1917",
928
+ secondary: "#a8a29e",
929
+ secondaryHover: "#d6d3d1",
930
+ secondaryActive: "#e7e5e4",
931
+ secondaryDisabled: "#44403c",
932
+ secondaryForeground: "#1c1917",
933
+ outlineBgHover: "#064e3b",
934
+ ghostBgHover: "#292524",
935
+ focusRing: "#34d399",
936
+ surface: "#1c1917",
937
+ surfaceMuted: "#292524",
938
+ surfaceRaised: "#292524",
939
+ text: "#fafaf9",
940
+ textSecondary: "#d6d3d1",
941
+ textDisabled: "#44403c",
942
+ border: "#44403c",
943
+ borderStrong: "#78716c",
944
+ success: "#4ade80",
945
+ warning: "#fbbf24",
946
+ error: "#f87171",
947
+ errorForeground: "#1c1917",
948
+ errorHover: "#fca5a5",
949
+ errorDisabled: "#7f1d1d",
950
+ errorBgHover: "#292524",
951
+ info: "#38bdf8",
952
+ chart1: "#34d399",
953
+ chart2: "#fbbf24",
954
+ chart3: "#38bdf8",
955
+ chart4: "#fcd34d",
956
+ chart5: "#2dd4bf",
957
+ chart6: "#fb7185"
958
+ },
959
+ radius: { sm: "6px", md: "8px", lg: "12px", xl: "16px", none: "0", full: "9999px" },
960
+ typography: {
961
+ fontFamily: "'Source Sans 3', 'Georgia', -apple-system, sans-serif",
962
+ fontFamilyMono: "'Source Code Pro', 'Menlo', monospace",
963
+ fontSizeBase: "16px",
964
+ fontSizeSm: "14px",
965
+ fontSizeLg: "18px",
966
+ fontWeightNormal: "400",
967
+ fontWeightMedium: "500",
968
+ fontWeightSemibold: "600",
969
+ fontWeightBold: "700",
970
+ lineHeightNormal: "1.6",
971
+ lineHeightTight: "1.3"
972
+ }
973
+ }
974
+ };
975
+
976
+ // src/themes/high-contrast/theme.ts
977
+ var highContrastTheme = {
978
+ name: "high-contrast",
979
+ label: "High Contrast",
980
+ light: {
981
+ colors: {
982
+ primary: "#0033cc",
983
+ primaryHover: "#002699",
984
+ primaryActive: "#001f80",
985
+ primaryDisabled: "#7f8fcf",
986
+ primaryForeground: "#ffffff",
987
+ secondary: "#000000",
988
+ secondaryHover: "#1f1f1f",
989
+ secondaryActive: "#333333",
990
+ secondaryDisabled: "#767676",
991
+ secondaryForeground: "#ffffff",
992
+ outlineBgHover: "#e6eeff",
993
+ ghostBgHover: "#f2f2f2",
994
+ focusRing: "#000000",
995
+ surface: "#ffffff",
996
+ surfaceMuted: "#f2f2f2",
997
+ surfaceRaised: "#ffffff",
998
+ text: "#000000",
999
+ textSecondary: "#000000",
1000
+ textDisabled: "#595959",
1001
+ border: "#000000",
1002
+ borderStrong: "#000000",
1003
+ success: "#006400",
1004
+ warning: "#7a4b00",
1005
+ error: "#b00020",
1006
+ errorForeground: "#ffffff",
1007
+ errorHover: "#7a0016",
1008
+ errorDisabled: "#fca5a5",
1009
+ errorBgHover: "#fef2f2",
1010
+ info: "#0033cc",
1011
+ chart1: "#0033cc",
1012
+ chart2: "#006400",
1013
+ chart3: "#7a4b00",
1014
+ chart4: "#6b00b9",
1015
+ chart5: "#005f73",
1016
+ chart6: "#b00020"
1017
+ },
1018
+ radius: { sm: "2px", md: "4px", lg: "6px", xl: "8px", none: "0", full: "9999px" },
1019
+ shadows: {
1020
+ xs: "0 0 0 1px #000000",
1021
+ sm: "0 0 0 1px #000000",
1022
+ md: "0 0 0 2px #000000",
1023
+ lg: "0 0 0 2px #000000",
1024
+ xl: "0 0 0 3px #000000"
1025
+ }
1026
+ },
1027
+ dark: {
1028
+ colors: {
1029
+ primary: "#66b2ff",
1030
+ primaryHover: "#99ccff",
1031
+ primaryActive: "#cce5ff",
1032
+ primaryDisabled: "#335c85",
1033
+ primaryForeground: "#000000",
1034
+ secondary: "#ffffff",
1035
+ secondaryHover: "#e6e6e6",
1036
+ secondaryActive: "#cccccc",
1037
+ secondaryDisabled: "#8c8c8c",
1038
+ secondaryForeground: "#000000",
1039
+ outlineBgHover: "#001f3f",
1040
+ ghostBgHover: "#1a1a1a",
1041
+ focusRing: "#ffff00",
1042
+ surface: "#000000",
1043
+ surfaceMuted: "#111111",
1044
+ surfaceRaised: "#000000",
1045
+ text: "#ffffff",
1046
+ textSecondary: "#ffffff",
1047
+ textDisabled: "#a6a6a6",
1048
+ border: "#ffffff",
1049
+ borderStrong: "#ffffff",
1050
+ success: "#00e676",
1051
+ warning: "#ffd54f",
1052
+ error: "#ff8a80",
1053
+ errorForeground: "#000000",
1054
+ errorHover: "#ffcdd2",
1055
+ errorDisabled: "#b71c1c",
1056
+ errorBgHover: "#1a1a1a",
1057
+ info: "#80d8ff",
1058
+ chart1: "#66b2ff",
1059
+ chart2: "#00e676",
1060
+ chart3: "#ffd54f",
1061
+ chart4: "#d7a5ff",
1062
+ chart5: "#80d8ff",
1063
+ chart6: "#ff8a80"
1064
+ },
1065
+ radius: { sm: "2px", md: "4px", lg: "6px", xl: "8px", none: "0", full: "9999px" },
1066
+ shadows: {
1067
+ xs: "0 0 0 1px #ffffff",
1068
+ sm: "0 0 0 1px #ffffff",
1069
+ md: "0 0 0 2px #ffffff",
1070
+ lg: "0 0 0 2px #ffffff",
1071
+ xl: "0 0 0 3px #ffffff"
1072
+ }
1073
+ }
1074
+ };
1075
+
1076
+ // src/themes/manager.ts
1077
+ var builtInPresets = [
1078
+ defaultTheme,
1079
+ vibrantTheme,
1080
+ professionalTheme,
1081
+ minimalTheme,
1082
+ naturalTheme,
1083
+ modernTheme,
1084
+ highContrastTheme
1085
+ ];
1086
+ function mergeThemeConfig(base = {}, override = {}) {
1087
+ return {
1088
+ colors: { ...base.colors, ...override.colors },
1089
+ typography: { ...base.typography, ...override.typography },
1090
+ radius: { ...base.radius, ...override.radius },
1091
+ shadows: { ...base.shadows, ...override.shadows },
1092
+ spacing: { ...base.spacing, ...override.spacing },
1093
+ motion: { ...base.motion, ...override.motion }
1094
+ };
1095
+ }
1096
+ function resolvePresetThemeConfig(preset, scheme, fallback = defaultTheme) {
1097
+ return mergeThemeConfig(fallback[scheme], preset?.[scheme] ?? {});
1098
+ }
1099
+ var THEME_CONFIG_CSS_VARS = {
1100
+ typography: {
1101
+ fontFamily: "--tiger-font-family",
1102
+ fontFamilyMono: "--tiger-font-family-mono",
1103
+ fontSizeBase: "--tiger-font-size-base",
1104
+ fontSizeSm: "--tiger-font-size-sm",
1105
+ fontSizeLg: "--tiger-font-size-lg",
1106
+ fontWeightNormal: "--tiger-font-weight-normal",
1107
+ fontWeightMedium: "--tiger-font-weight-medium",
1108
+ fontWeightSemibold: "--tiger-font-weight-semibold",
1109
+ fontWeightBold: "--tiger-font-weight-bold",
1110
+ lineHeightNormal: "--tiger-line-height-normal",
1111
+ lineHeightTight: "--tiger-line-height-tight"
1112
+ },
1113
+ radius: {
1114
+ none: "--tiger-radius-none",
1115
+ sm: "--tiger-radius-sm",
1116
+ md: "--tiger-radius-md",
1117
+ lg: "--tiger-radius-lg",
1118
+ xl: "--tiger-radius-xl",
1119
+ full: "--tiger-radius-full"
1120
+ },
1121
+ shadows: {
1122
+ xs: "--tiger-shadow-xs",
1123
+ sm: "--tiger-shadow-sm",
1124
+ md: "--tiger-shadow-md",
1125
+ lg: "--tiger-shadow-lg",
1126
+ xl: "--tiger-shadow-xl"
1127
+ },
1128
+ spacing: {
1129
+ xs: "--tiger-spacing-xs",
1130
+ sm: "--tiger-spacing-sm",
1131
+ md: "--tiger-spacing-md",
1132
+ lg: "--tiger-spacing-lg",
1133
+ xl: "--tiger-spacing-xl"
1134
+ },
1135
+ motion: {
1136
+ durationFast: "--tiger-motion-duration-quick",
1137
+ durationBase: "--tiger-motion-duration-base",
1138
+ durationSlow: "--tiger-motion-duration-relaxed",
1139
+ easing: "--tiger-motion-ease-standard"
1140
+ }
1141
+ };
1142
+ var THEME_TRANSITION_CSS_VARS = {
1143
+ durationFast: "--tiger-transition-quick",
1144
+ durationBase: "--tiger-transition-base",
1145
+ durationSlow: "--tiger-transition-emphasized"
1146
+ };
1147
+ function themeConfigToCssVars(config) {
1148
+ const vars = {
1149
+ ...semanticColorsToCssVars(config.colors)
1150
+ };
1151
+ for (const section of ["typography", "radius", "shadows", "spacing", "motion"]) {
1152
+ const values = config[section];
1153
+ if (!values) continue;
1154
+ const varNames = THEME_CONFIG_CSS_VARS[section];
1155
+ for (const [key, value] of Object.entries(values)) {
1156
+ const varName = varNames[key];
1157
+ if (varName && value) vars[varName] = value;
1158
+ }
1159
+ }
1160
+ const motion = config.motion;
1161
+ if (motion) {
1162
+ const easing = motion.easing ?? "cubic-bezier(0.4, 0, 0.2, 1)";
1163
+ if (motion.durationBase) {
1164
+ vars[THEME_TRANSITION_CSS_VARS.durationBase] = `all ${motion.durationBase} ${easing}`;
1165
+ }
1166
+ if (motion.durationFast) {
1167
+ vars[THEME_TRANSITION_CSS_VARS.durationFast] = `all ${motion.durationFast} ${easing}`;
1168
+ }
1169
+ if (motion.durationSlow) {
1170
+ vars[THEME_TRANSITION_CSS_VARS.durationSlow] = `transform ${motion.durationSlow} ${easing}`;
1171
+ }
1172
+ }
1173
+ return vars;
1174
+ }
1175
+ function extraThemeVarNames() {
1176
+ return [
1177
+ ...Object.values(THEME_TRANSITION_CSS_VARS),
1178
+ ...Object.keys(MODERN_BASE_TOKENS_LIGHT),
1179
+ ...Object.keys(MODERN_BASE_TOKENS_DARK),
1180
+ ...Object.keys(MODERN_OVERRIDE_TOKENS_LIGHT),
1181
+ ...Object.keys(MODERN_OVERRIDE_TOKENS_DARK)
1182
+ ];
1183
+ }
1184
+ function clearThemeConfig(target) {
1185
+ removeCssVarsCached(target, [
1186
+ ...Object.values(THEME_CSS_VARS),
1187
+ ...Object.values(THEME_CONFIG_CSS_VARS.typography),
1188
+ ...Object.values(THEME_CONFIG_CSS_VARS.radius),
1189
+ ...Object.values(THEME_CONFIG_CSS_VARS.shadows),
1190
+ ...Object.values(THEME_CONFIG_CSS_VARS.spacing),
1191
+ ...Object.values(THEME_CONFIG_CSS_VARS.motion),
1192
+ ...extraThemeVarNames()
1193
+ ]);
1194
+ }
1195
+ function resolveSystemDark() {
1196
+ if (!isBrowser()) return false;
1197
+ return window.matchMedia("(prefers-color-scheme: dark)").matches;
1198
+ }
1199
+ var ThemeManagerImpl = class {
1200
+ presets = /* @__PURE__ */ new Map();
1201
+ currentThemeName = "default";
1202
+ colorScheme = "light";
1203
+ resolvedDark = false;
1204
+ listeners = [];
1205
+ mediaQuery = null;
1206
+ mediaHandler = null;
1207
+ builtInsRegistered = false;
1208
+ /** Register shipped presets. Safe to call more than once. */
1209
+ registerBuiltIns() {
1210
+ if (this.builtInsRegistered) return;
1211
+ for (const preset of builtInPresets) {
1212
+ if (!this.presets.has(preset.name)) {
1213
+ this.presets.set(preset.name, preset);
1214
+ }
1215
+ }
1216
+ this.builtInsRegistered = true;
1217
+ }
1218
+ // -----------------------------------------------------------------------
1219
+ // Theme registration
1220
+ // -----------------------------------------------------------------------
1221
+ /** Register a preset theme. Replaces any existing preset with the same name. */
1222
+ registerTheme(preset) {
1223
+ this.registerBuiltIns();
1224
+ this.presets.set(preset.name, preset);
1225
+ }
1226
+ /** Get a registered preset by name. */
1227
+ getTheme(name) {
1228
+ this.registerBuiltIns();
1229
+ return this.presets.get(name);
1230
+ }
1231
+ /** List all registered preset names. */
1232
+ getAvailableThemes() {
1233
+ this.registerBuiltIns();
1234
+ return Array.from(this.presets.keys());
1235
+ }
1236
+ /** Get the currently active theme name. */
1237
+ getCurrentTheme() {
1238
+ return this.currentThemeName;
1239
+ }
1240
+ /** Get the resolved (effective) color scheme — always 'light' or 'dark'. */
1241
+ getResolvedColorScheme() {
1242
+ return this.resolvedDark ? "dark" : "light";
1243
+ }
1244
+ // -----------------------------------------------------------------------
1245
+ // Applying themes
1246
+ // -----------------------------------------------------------------------
1247
+ /**
1248
+ * Switch to a registered preset theme.
1249
+ * If the name is not registered the call is a no-op.
1250
+ */
1251
+ setTheme(name) {
1252
+ this.registerBuiltIns();
1253
+ if (!this.presets.has(name)) {
1254
+ devWarn(`ThemeManager.setTheme.${name}`, `[Tigercat] Theme "${name}" is not registered.`);
1255
+ return;
1256
+ }
1257
+ this.currentThemeName = name;
1258
+ this.apply();
1259
+ }
1260
+ /**
1261
+ * Define and immediately apply a custom theme at runtime.
1262
+ * Registers the theme, then switches to it.
1263
+ */
1264
+ defineTheme(preset) {
1265
+ this.registerTheme(preset);
1266
+ this.setTheme(preset.name);
1267
+ }
1268
+ /**
1269
+ * Set the colour scheme strategy.
1270
+ * - `'light'` / `'dark'` — force a specific mode
1271
+ * - `'auto'` — follow `prefers-color-scheme` media query
1272
+ *
1273
+ * Pass `{ applyResolved: false }` with `'auto'` to attach the media listener
1274
+ * without applying the current system preference. ConfigProvider uses that
1275
+ * on first paint so SSR (light) does not flash `.dark` during hydrate.
1276
+ */
1277
+ setColorScheme(scheme, options) {
1278
+ this.colorScheme = scheme;
1279
+ if (scheme === "auto") {
1280
+ this.startWatchingMedia();
1281
+ if (options?.applyResolved === false) {
1282
+ return;
1283
+ }
1284
+ this.resolvedDark = resolveSystemDark();
1285
+ } else {
1286
+ this.stopWatchingMedia();
1287
+ this.resolvedDark = scheme === "dark";
1288
+ }
1289
+ this.apply();
1290
+ }
1291
+ /** Get the current color scheme setting (may be 'auto'). */
1292
+ getColorScheme() {
1293
+ return this.colorScheme;
1294
+ }
1295
+ // -----------------------------------------------------------------------
1296
+ // Listeners
1297
+ // -----------------------------------------------------------------------
1298
+ /** Subscribe to theme/colour-scheme changes. Returns an unsubscribe function. */
1299
+ onChange(listener) {
1300
+ this.listeners.push(listener);
1301
+ return () => {
1302
+ this.listeners = this.listeners.filter((l) => l !== listener);
1303
+ };
1304
+ }
1305
+ // -----------------------------------------------------------------------
1306
+ // Internal
1307
+ // -----------------------------------------------------------------------
1308
+ apply() {
1309
+ this.registerBuiltIns();
1310
+ if (!isBrowser()) return;
1311
+ const root = document.documentElement;
1312
+ const preset = this.presets.get(this.currentThemeName);
1313
+ const scheme = this.resolvedDark ? "dark" : "light";
1314
+ const config = resolvePresetThemeConfig(preset, scheme);
1315
+ clearThemeConfig(root);
1316
+ const isModern = this.currentThemeName === "modern";
1317
+ const extra = isModern ? this.resolvedDark ? MODERN_OVERRIDE_TOKENS_DARK : MODERN_OVERRIDE_TOKENS_LIGHT : {};
1318
+ setCssVarsCached(root, { ...themeConfigToCssVars(config), ...extra });
1319
+ if (isModern) {
1320
+ root.setAttribute("data-tiger-style", "modern");
1321
+ } else {
1322
+ root.removeAttribute("data-tiger-style");
1323
+ }
1324
+ if (this.resolvedDark) {
1325
+ root.classList.add("dark");
1326
+ } else {
1327
+ root.classList.remove("dark");
1328
+ }
1329
+ root.style.colorScheme = this.resolvedDark ? "dark" : "light";
1330
+ this.notify();
1331
+ }
1332
+ notify() {
1333
+ const event = {
1334
+ theme: this.currentThemeName,
1335
+ colorScheme: this.resolvedDark ? "dark" : "light"
1336
+ };
1337
+ for (const listener of this.listeners) {
1338
+ listener(event);
1339
+ }
1340
+ }
1341
+ startWatchingMedia() {
1342
+ if (!isBrowser()) return;
1343
+ if (this.mediaQuery) return;
1344
+ this.mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
1345
+ this.mediaHandler = (e) => {
1346
+ this.resolvedDark = e.matches;
1347
+ this.apply();
1348
+ };
1349
+ this.mediaQuery.addEventListener("change", this.mediaHandler);
1350
+ }
1351
+ stopWatchingMedia() {
1352
+ if (this.mediaQuery && this.mediaHandler) {
1353
+ this.mediaQuery.removeEventListener("change", this.mediaHandler);
1354
+ }
1355
+ this.mediaQuery = null;
1356
+ this.mediaHandler = null;
1357
+ }
1358
+ };
1359
+ var ThemeManager = new ThemeManagerImpl();
1360
+
1361
+ // src/utils/class-names.ts
1362
+ function classNames(...classes) {
1363
+ let result = "";
1364
+ for (const cls of classes) {
1365
+ if (cls && cls !== "") {
1366
+ result += (result ? " " : "") + String(cls);
1367
+ }
1368
+ }
1369
+ return result;
1370
+ }
1371
+
1372
+ // src/utils/alert-utils.ts
1373
+ var alertCountdownBaseStyles = {
1374
+ "@keyframes tiger-alert-countdown": {
1375
+ from: { width: "100%" },
1376
+ to: { width: "0%" }
1377
+ },
1378
+ ".tiger-alert-countdown": {
1379
+ animationName: "tiger-alert-countdown",
1380
+ animationTimingFunction: "linear",
1381
+ animationFillMode: "forwards"
1382
+ }
1383
+ };
1384
+
1385
+ // src/utils/floating.ts
1386
+ import {
1387
+ computePosition,
1388
+ flip,
1389
+ shift,
1390
+ size,
1391
+ offset,
1392
+ arrow,
1393
+ autoUpdate
1394
+ } from "@floating-ui/dom";
1395
+ var overlayZIndexClass = {
1396
+ viewport: "z-[200]",
1397
+ overlay: "z-[1000]",
1398
+ modal: "z-[1100]",
1399
+ message: "z-[1200]",
1400
+ loadingBar: "z-[1300]"
1401
+ };
1402
+
1403
+ // src/utils/chart/color.ts
1404
+ var chartTooltipBaseClasses = classNames(
1405
+ `fixed left-0 top-0 ${overlayZIndexClass.overlay} pointer-events-none will-change-transform`,
1406
+ "max-w-xs px-3 py-2 rounded-[var(--tiger-radius-md,0.375rem)] shadow-[var(--tiger-shadow-glass,0_10px_15px_-3px_rgb(0_0_0_/_0.1),0_4px_6px_-4px_rgb(0_0_0_/_0.1))]",
1407
+ "bg-[color:var(--tiger-bg-elevated,#1f2937)]",
1408
+ "text-[color:var(--tiger-text-inverse,#f9fafb)]",
1409
+ "text-sm",
1410
+ "transition-opacity duration-150 motion-reduce:transition-none"
1411
+ );
1412
+ var cartesianChartAnimationBaseStyles = {
1413
+ "@keyframes tiger-line-draw": {
1414
+ from: { strokeDashoffset: "1" },
1415
+ to: { strokeDashoffset: "0" }
1416
+ },
1417
+ "@keyframes tiger-area-draw": {
1418
+ from: { strokeDashoffset: "1" },
1419
+ to: { strokeDashoffset: "0" }
1420
+ },
1421
+ "@keyframes tiger-scatter-entrance": {
1422
+ from: { opacity: "0", transform: "scale(0)" },
1423
+ "60%": { transform: "scale(1.15)" },
1424
+ to: { opacity: "1", transform: "scale(1)" }
1425
+ },
1426
+ ".tiger-line-animated": {
1427
+ animation: "tiger-line-draw var(--tiger-motion-duration-slow,1.2s) var(--tiger-motion-ease-emphasized,cubic-bezier(.4,0,.2,1)) forwards"
1428
+ },
1429
+ ".tiger-area-animated": {
1430
+ animation: "tiger-area-draw var(--tiger-motion-duration-slow,1.2s) var(--tiger-motion-ease-emphasized,cubic-bezier(.4,0,.2,1)) forwards"
1431
+ },
1432
+ ".tiger-scatter-entrance": {
1433
+ transformBox: "fill-box",
1434
+ transformOrigin: "center",
1435
+ animation: "tiger-scatter-entrance var(--tiger-motion-duration-slow,500ms) var(--tiger-motion-ease-spring,cubic-bezier(.34,1.56,.64,1)) both"
1436
+ },
1437
+ ".tiger-bar-animated": {
1438
+ transition: "y var(--tiger-motion-duration-slow,600ms) var(--tiger-motion-ease-emphasized,cubic-bezier(.4,0,.2,1)), height var(--tiger-motion-duration-slow,600ms) var(--tiger-motion-ease-emphasized,cubic-bezier(.4,0,.2,1)), opacity var(--tiger-motion-duration-base,200ms) var(--tiger-motion-ease-decelerate,ease-out), filter var(--tiger-motion-duration-base,200ms) var(--tiger-motion-ease-decelerate,ease-out)"
1439
+ },
1440
+ "@keyframes tiger-donut-entrance": {
1441
+ from: { opacity: "0", transform: "scale(0.9)" },
1442
+ to: { opacity: "1", transform: "scale(1)" }
1443
+ },
1444
+ ".tiger-donut-entrance": {
1445
+ transformBox: "fill-box",
1446
+ transformOrigin: "center",
1447
+ animation: "tiger-donut-entrance var(--tiger-motion-duration-slow,500ms) var(--tiger-motion-ease-spring,cubic-bezier(.34,1.56,.64,1)) both"
1448
+ }
1449
+ };
1450
+
1451
+ // src/utils/loading-utils.ts
1452
+ var loadingFullscreenBaseClasses = `fixed inset-0 ${overlayZIndexClass.modal} flex items-center justify-center`;
1453
+ var loadingAnimationBaseStyles = {
1454
+ "@keyframes tiger-bounce-dot": {
1455
+ "0%, 100%": { transform: "translateY(0)" },
1456
+ "50%": { transform: "translateY(-100%)" }
1457
+ },
1458
+ "@keyframes tiger-scale-bar": {
1459
+ "0%, 100%": { transform: "scaleY(1)" },
1460
+ "50%": { transform: "scaleY(1.5)" }
1461
+ },
1462
+ ".animate-bounce-dot": {
1463
+ animation: "tiger-bounce-dot var(--tiger-motion-duration-slow,0.6s) var(--tiger-motion-ease-standard,ease-in-out) infinite"
1464
+ },
1465
+ ".animate-scale-bar": {
1466
+ animation: "tiger-scale-bar var(--tiger-motion-duration-slow,0.6s) var(--tiger-motion-ease-standard,ease-in-out) infinite"
1467
+ },
1468
+ ".animation-delay-0": { animationDelay: "0s" },
1469
+ ".animation-delay-150": { animationDelay: "0.15s" },
1470
+ ".animation-delay-300": { animationDelay: "0.3s" }
207
1471
  };
208
1472
 
209
1473
  // src/tailwind-plugin.ts
210
- var tigercatTheme = semanticColorsToCssVars(defaultThemeLightColors);
211
- var tigercatDarkTheme = semanticColorsToCssVars(defaultThemeDarkColors);
1474
+ function cssVarsForPreset(preset, scheme) {
1475
+ return themeConfigToCssVars(resolvePresetThemeConfig(preset ?? defaultTheme, scheme));
1476
+ }
1477
+ var tigercatTheme = cssVarsForPreset(defaultTheme, "light");
1478
+ var tigercatDarkTheme = cssVarsForPreset(defaultTheme, "dark");
212
1479
  var tigercatDirectionBase = {
213
1480
  '[dir="rtl"] .tiger-rtl-mirror, [data-tiger-dir="rtl"] .tiger-rtl-mirror': {
214
1481
  transform: "scaleX(-1)"
@@ -237,14 +1504,17 @@ var tigercatReducedMotionBase = {
237
1504
  };
238
1505
  var tigercatPlugin = plugin(function({ addBase }) {
239
1506
  addBase({
240
- ":root": { ...tigercatTheme, ...MODERN_BASE_TOKENS_LIGHT },
241
- ".dark": { ...tigercatDarkTheme, ...MODERN_BASE_TOKENS_DARK },
242
- // Remove browser default focus outline on interactive SVG elements
243
- 'svg [tabindex], svg [role="button"]': {
244
- outline: "none"
245
- },
1507
+ // Extra (glass/gradient/motion-name) tokens first; the preset wins on
1508
+ // shared names such as --tiger-radius-md so plugin output matches ThemeManager.
1509
+ ":root": { ...MODERN_BASE_TOKENS_LIGHT, ...tigercatTheme },
1510
+ ".dark": { ...MODERN_BASE_TOKENS_DARK, ...tigercatDarkTheme },
246
1511
  ...tigercatDirectionBase,
247
- ...tigercatReducedMotionBase
1512
+ ...tigercatReducedMotionBase,
1513
+ '[data-tiger-style="modern"]': MODERN_OVERRIDE_TOKENS_LIGHT,
1514
+ '.dark[data-tiger-style="modern"], [data-tiger-style="modern"].dark': MODERN_OVERRIDE_TOKENS_DARK,
1515
+ ...alertCountdownBaseStyles,
1516
+ ...loadingAnimationBaseStyles,
1517
+ ...cartesianChartAnimationBaseStyles
248
1518
  });
249
1519
  });
250
1520
  export {