vanilla-jui 1.3.9 → 1.3.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/index.js +1 -1
  2. package/dist/index.umd.js +1 -1
  3. package/dist/style.css +1 -1
  4. package/package.json +3 -2
  5. package/src/components/accordion.js +373 -0
  6. package/src/components/components.js +0 -0
  7. package/src/components/drop.js +437 -0
  8. package/src/components/flow.js +1133 -0
  9. package/src/components/form.js +585 -0
  10. package/src/components/icons.js +83 -0
  11. package/src/components/menu.js +422 -0
  12. package/src/components/modal.js +1174 -0
  13. package/src/components/offcanvas.js +332 -0
  14. package/src/components/pagination.js +536 -0
  15. package/src/components/parabola.js +295 -0
  16. package/src/components/sticky.js +271 -0
  17. package/src/components/swiper.js +1123 -0
  18. package/src/components/tabs.js +746 -0
  19. package/src/components/theme.js +353 -0
  20. package/src/components/toast.js +329 -0
  21. package/src/components/toc.js +226 -0
  22. package/src/components/tooltip.js +86 -0
  23. package/src/components/validator.js +586 -0
  24. package/src/core/Component.js +248 -0
  25. package/src/css/accordion.css +72 -0
  26. package/src/css/animation.css +177 -0
  27. package/src/css/avatar.css +62 -0
  28. package/src/css/badge.css +66 -0
  29. package/src/css/breadcrumb.css +106 -0
  30. package/src/css/button.css +296 -0
  31. package/src/css/card.css +151 -0
  32. package/src/css/color.css +1163 -0
  33. package/src/css/color_p3.css +1172 -0
  34. package/src/css/components.css +26 -0
  35. package/src/css/content.css +716 -0
  36. package/src/css/divider.css +9 -0
  37. package/src/css/drop.css +28 -0
  38. package/src/css/flow.css +86 -0
  39. package/src/css/font.css +23 -0
  40. package/src/css/form.css +919 -0
  41. package/src/css/gradient.css +224 -0
  42. package/src/css/icon.css +63 -0
  43. package/src/css/index.css +12 -0
  44. package/src/css/layout.css +782 -0
  45. package/src/css/loading.css +38 -0
  46. package/src/css/menu.css +564 -0
  47. package/src/css/modal.css +94 -0
  48. package/src/css/offcanvas.css +104 -0
  49. package/src/css/pagination.css +25 -0
  50. package/src/css/popup.css +69 -0
  51. package/src/css/skeleton.css +76 -0
  52. package/src/css/status.css +56 -0
  53. package/src/css/swiper.css +160 -0
  54. package/src/css/table.css +52 -0
  55. package/src/css/tabs.css +95 -0
  56. package/src/css/tag.css +97 -0
  57. package/src/css/theme-palette.css +59 -0
  58. package/src/css/tip.css +84 -0
  59. package/src/css/toast.css +154 -0
  60. package/src/css/toc.css +38 -0
  61. package/src/css/tokens.css +1295 -0
  62. package/src/css/toolbar.css +115 -0
  63. package/src/css/tooltip.css +19 -0
  64. package/src/icons/index.js +30 -0
  65. package/src/index.js +45 -0
  66. package/src/locales/index.js +45 -0
  67. package/src/locales/index.min.js +1 -0
  68. package/src/utilities/browser.js +111 -0
  69. package/src/utilities/cache.js +159 -0
  70. package/src/utilities/core.js +502 -0
  71. package/src/utilities/debug.js +103 -0
  72. package/src/utilities/dom.js +313 -0
  73. package/src/utilities/events.js +69 -0
  74. package/src/utilities/http.js +30 -0
  75. package/src/utilities/legacy-dom.js +179 -0
  76. package/src/utilities/storage.js +46 -0
@@ -0,0 +1,1295 @@
1
+ /* ============================================
2
+ Design Tokens - Unified Token System
3
+ vanilla-jui v2
4
+ ============================================ */
5
+
6
+ @layer config {
7
+
8
+ /* ============================================
9
+ 1. Layout Tokens
10
+ ============================================ */
11
+
12
+ :root {
13
+ /* --- Z-Index --- */
14
+ --z-0: 0;
15
+ --z-1: 1;
16
+ --z-badge: 2;
17
+ --z-toolbar: 2;
18
+ --z-submenu: 5;
19
+ --z-drop: 9900;
20
+ --z-overlay: 9950;
21
+ --z-offcanvas: 9960;
22
+ --z-popup: 9970;
23
+ --z-toast: 9980;
24
+
25
+ /* --- Spacing --- */
26
+ --space: 0.25rem;
27
+ --s2: 0.5rem;
28
+ --s3: 0.75rem;
29
+ --s4: 1rem;
30
+ --s5: 1.25rem;
31
+ --s6: 1.5rem;
32
+ --s7: 1.75rem;
33
+ --s8: 2rem;
34
+
35
+ /* --- Transitions --- */
36
+ --speed-sm: 0.15s;
37
+ --speed-md: 0.25s;
38
+ --speed-lg: 0.5s;
39
+ --speed-xl: 0.75s;
40
+
41
+ /* --- Typography Scale --- */
42
+ --text-xs: 0.75rem;
43
+ --text-sm: 0.875rem;
44
+ --text-md: 1rem;
45
+ --text-lg: 1.125rem;
46
+ --text-xl: 1.25rem;
47
+ --text-2xl: 1.5rem;
48
+ --text-3xl: 1.875rem;
49
+ --text-4xl: 2.25rem;
50
+ --text-5xl: 3rem;
51
+
52
+ /* --- Font Weight --- */
53
+ --font-thin: 100;
54
+ --font-extraLight: 200;
55
+ --font-light: 300;
56
+ --font-normal: 400;
57
+ --font-medium: 500;
58
+ --font-semiBold: 600;
59
+ --font-bold: 700;
60
+ --font-extraBold: 800;
61
+ --font-black: 900;
62
+
63
+ /* --- Line Height --- */
64
+ --line-height: 1.5;
65
+ --line-height-paragraph: 1.5;
66
+ --line-height-pre: 1.4;
67
+ --line-height-heading: 1.25;
68
+ --line-height-self: 1;
69
+
70
+ /* --- Breakpoints --- */
71
+ --screen-sm: 576px;
72
+ --screen-md: 768px;
73
+ --screen-lg: 992px;
74
+ --screen-xl: 1200px;
75
+
76
+ /* --- Container Widths --- */
77
+ --columns-6xs: 10rem;
78
+ --columns-5xs: 12rem;
79
+ --columns-4xs: 14rem;
80
+ --columns-3xs: 16rem;
81
+ --columns-2xs: 18px;
82
+ --columns-xs: 20rem;
83
+ --columns-sm: 24rem;
84
+ --columns-md: 28rem;
85
+ --columns-lg: 32rem;
86
+ --columns-xl: 36rem;
87
+ --columns-2xl: 42rem;
88
+ --columns-3xl: 48rem;
89
+ --columns-4xl: 56rem;
90
+ --columns-5xl: 64rem;
91
+ --columns-6xl: 72rem;
92
+
93
+ /* --- Border Radius --- */
94
+ --radius-full: 9999px;
95
+ }
96
+
97
+
98
+ /* ============================================
99
+ 2. Color Tokens - Light Mode
100
+ ============================================ */
101
+
102
+ :root,
103
+ .light,
104
+ .light-theme {
105
+ /* UI Structure */
106
+ --ui-bg: #ffffff;
107
+ --ui-bg-subtle: #f9fafb;
108
+ --ui-bg-muted: #f3f4f6;
109
+ --ui-surface: #ffffff;
110
+ --ui-surface-subtle: #f9fafb;
111
+ --ui-surface-muted: #f3f4f6;
112
+ --ui-surface-hover: rgba(0, 0, 0, 0.02);
113
+ --ui-surface-active: rgba(0, 0, 0, 0.04);
114
+ --ui-surface-raised: #ffffff;
115
+ --ui-surface-overlay: rgba(255, 255, 255, 0.9);
116
+ --ui-fg: #111827;
117
+ --ui-fg-muted: #6b7280;
118
+ --ui-fg-soft: #9ca3af;
119
+ --ui-fg-subtle: #d1d5db;
120
+ --ui-border-subtle: rgba(0, 0, 0, 0.06);
121
+ --ui-border: rgba(0, 0, 0, 0.1);
122
+ --ui-border-strong: rgba(0, 0, 0, 0.2);
123
+ --ui-outline: rgba(0, 0, 0, 0.15);
124
+ --ui-placeholder: #9ca3af;
125
+ --ui-disabled-bg: rgba(0, 0, 0, 0.04);
126
+ --ui-disabled-fg: #9ca3af;
127
+ --ui-overlay: rgba(0, 0, 0, 0.5);
128
+ --ui-overlay-muted: rgba(0, 0, 0, 0.25);
129
+ --ui-popup-background: rgba(0, 0, 0, 0.0625);
130
+ --ui-input-color: #111827;
131
+ --ui-input-border: rgba(0, 0, 0, 0.15);
132
+ --ui-input-focus-border: #3b82f6;
133
+ --ui-input-placeholder: #9ca3af;
134
+ --ui-input-focus-ring: rgba(59, 130, 246, 0.25);
135
+ --ui-tooltip-bg: #1f2937;
136
+ --ui-tooltip-fg: #f9fafb;
137
+
138
+ /* --- Fixed Theme Colors (15 themes) --- */
139
+ --ui-gray: #374151;
140
+ --ui-gray-tint: #6b7280;
141
+ --ui-gray-shade: #111827;
142
+ --ui-olive: #717762;
143
+ --ui-olive-tint: #8a927d;
144
+ --ui-olive-shade: #4d5440;
145
+ --ui-tomato: #ef4444;
146
+ --ui-tomato-tint: #f87171;
147
+ --ui-tomato-shade: #b91c1c;
148
+ --ui-ruby: #f43f5e;
149
+ --ui-ruby-tint: #fb7185;
150
+ --ui-ruby-shade: #be123c;
151
+ --ui-pink: #ec4899;
152
+ --ui-pink-tint: #f472b6;
153
+ --ui-pink-shade: #be185d;
154
+ --ui-violet: #8b5cf6;
155
+ --ui-violet-tint: #a78bfa;
156
+ --ui-violet-shade: #6d28d9;
157
+ --ui-indigo: #6366f1;
158
+ --ui-indigo-tint: #818cf8;
159
+ --ui-indigo-shade: #4338ca;
160
+ --ui-blue: #3b82f6;
161
+ --ui-blue-tint: #60a5fa;
162
+ --ui-blue-shade: #1d4ed8;
163
+ --ui-teal: #14b8a6;
164
+ --ui-teal-tint: #2dd4bf;
165
+ --ui-teal-shade: #0f766e;
166
+ --ui-grass: #22c55e;
167
+ --ui-grass-tint: #4ade80;
168
+ --ui-grass-shade: #15803d;
169
+ --ui-mint: #06b6d4;
170
+ --ui-mint-tint: #22d3ee;
171
+ --ui-mint-shade: #0e7490;
172
+ --ui-lime: #84cc16;
173
+ --ui-lime-tint: #a3e635;
174
+ --ui-lime-shade: #4d7c0f;
175
+ --ui-yellow: #eab308;
176
+ --ui-yellow-tint: #facc15;
177
+ --ui-yellow-shade: #a16207;
178
+ --ui-orange: #f97316;
179
+ --ui-orange-tint: #fb923c;
180
+ --ui-orange-shade: #c2410c;
181
+ --ui-gold: #b45309;
182
+ --ui-gold-tint: #d97706;
183
+ --ui-gold-shade: #78350f;
184
+
185
+ /* Theme Color (default indigo) */
186
+ --tone-subtle: rgba(99, 102, 241, 0.05);
187
+ --tone-soft: rgba(99, 102, 241, 0.08);
188
+ --tone-muted: rgba(99, 102, 241, 0.12);
189
+ --tone-weak: #ececf7;
190
+ --tone-wash: rgba(99, 102, 241, 0.03);
191
+ --tone-border: rgba(99, 102, 241, 0.2);
192
+ --tone-border-strong: rgba(99, 102, 241, 0.35);
193
+ --tone-solid: #6366f1;
194
+ --tone-tint: #a78bfa;
195
+ --tone-shade: #6d28d9;
196
+ --tone-solid-hover: #4f46e5;
197
+ --tone-solid-active: #4338ca;
198
+ --tone-text: #4f46e5;
199
+ --tone-text-hover: #4338ca;
200
+ --tone-fg: #ffffff;
201
+ --tone-ring: rgba(99, 102, 241, 0.4);
202
+ --tone-highlight: #fef08a;
203
+ --tone-highlight-fg: #854d0e;
204
+
205
+ /* Typography */
206
+ --tone-heading: #111827;
207
+ --tone-subtitle: #374151;
208
+ --tone-body: #4b5563;
209
+ --tone-caption: #6b7280;
210
+ --tone-muted: #9ca3af;
211
+ --tone-disabled: #d1d5db;
212
+
213
+ /* Links */
214
+ --tone-link: #4f46e5;
215
+ --tone-link-hover: #4338ca;
216
+ --tone-link-visited: #7c3aed;
217
+ --tone-link-active: #dc2626;
218
+ --tone-link-disabled: #9ca3af;
219
+
220
+ /* Card */
221
+ --tone-card: rgba(255, 255, 255, 0.8);
222
+ --tone-card-hover: rgba(255, 255, 255, 0.9);
223
+ --tone-card-border: rgba(0, 0, 0, 0.08);
224
+ --tone-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
225
+
226
+ /* Code */
227
+ --tone-code-bg: #f3f4f6;
228
+ --tone-code-fg: #374151;
229
+
230
+ /* States */
231
+ --state-danger: #ef4444;
232
+ --state-danger-hover: #dc2626;
233
+ --state-danger-active: #b91c1c;
234
+ --state-danger-fg: #ffffff;
235
+ --state-danger-text: #dc2626;
236
+ --state-danger-subtle: rgba(239, 68, 68, 0.08);
237
+ --state-danger-soft: rgba(239, 68, 68, 0.12);
238
+ --state-danger-muted: rgba(239, 68, 68, 0.16);
239
+ --state-danger-weak: #FCE1E1;
240
+ --state-danger-border: rgba(239, 68, 68, 0.25);
241
+ --state-danger-ring: rgba(239, 68, 68, 0.3);
242
+
243
+ --state-success: #22c55e;
244
+ --state-success-hover: #16a34a;
245
+ --state-success-active: #15803d;
246
+ --state-success-fg: #ffffff;
247
+ --state-success-text: #16a34a;
248
+ --state-success-subtle: rgba(34, 197, 94, 0.08);
249
+ --state-success-soft: rgba(34, 197, 94, 0.12);
250
+ --state-success-muted: rgba(34, 197, 94, 0.16);
251
+ --state-success-weak: #DCF6E5;
252
+ --state-success-border: rgba(34, 197, 94, 0.25);
253
+ --state-success-ring: rgba(34, 197, 94, 0.3);
254
+
255
+ --state-warning: #f59e0b;
256
+ --state-warning-hover: #d97706;
257
+ --state-warning-active: #b45309;
258
+ --state-warning-fg: #ffffff;
259
+ --state-warning-text: #d97706;
260
+ --state-warning-subtle: rgba(245, 158, 11, 0.08);
261
+ --state-warning-soft: rgba(245, 158, 11, 0.12);
262
+ --state-warning-muted: rgba(245, 158, 11, 0.16);
263
+ --state-warning-weak: #FDF0D8;
264
+ --state-warning-border: rgba(245, 158, 11, 0.25);
265
+ --state-warning-ring: rgba(245, 158, 11, 0.3);
266
+
267
+ --state-info: #3b82f6;
268
+ --state-info-hover: #2563eb;
269
+ --state-info-active: #1d4ed8;
270
+ --state-info-fg: #ffffff;
271
+ --state-info-text: #2563eb;
272
+ --state-info-subtle: rgba(59, 130, 246, 0.08);
273
+ --state-info-soft: rgba(59, 130, 246, 0.12);
274
+ --state-info-muted: rgba(59, 130, 246, 0.16);
275
+ --state-info-border: rgba(59, 130, 246, 0.25);
276
+ --state-info-ring: rgba(59, 130, 246, 0.3);
277
+
278
+ /* Component Aliases */
279
+ --state-danger-solid: var(--state-danger);
280
+ --state-danger-surface: var(--state-danger-subtle);
281
+ --state-success-solid: var(--state-success);
282
+ --state-success-surface: var(--state-success-subtle);
283
+ --state-warning-solid: var(--state-warning);
284
+ --state-warning-surface: var(--state-warning-subtle);
285
+ --state-info-solid: var(--state-info);
286
+ --state-info-surface: var(--state-info-subtle);
287
+ }
288
+
289
+
290
+ /* ============================================
291
+ 3. Color Tokens - Dark Mode
292
+ ============================================ */
293
+
294
+ .dark,
295
+ .dark-theme {
296
+ /* UI Structure */
297
+ --ui-bg: #0b0f14;
298
+ --ui-bg-subtle: #11161d;
299
+ --ui-bg-muted: #181e27;
300
+ --ui-surface: #0b0f14;
301
+ --ui-surface-subtle: #11161d;
302
+ --ui-surface-muted: #181e27;
303
+ --ui-surface-hover: rgba(255, 255, 255, 0.04);
304
+ --ui-surface-active: rgba(255, 255, 255, 0.07);
305
+ --ui-surface-raised: #151b24;
306
+ --ui-surface-overlay: rgba(7, 10, 15, 0.96);
307
+ --ui-fg: #f9fafb;
308
+ --ui-fg-muted: #cbd5e1;
309
+ --ui-fg-soft: #94a3b8;
310
+ --ui-fg-subtle: #64748b;
311
+ --ui-border-subtle: rgba(148, 163, 184, 0.12);
312
+ --ui-border: rgba(148, 163, 184, 0.18);
313
+ --ui-border-strong: rgba(148, 163, 184, 0.28);
314
+ --ui-outline: rgba(148, 163, 184, 0.2);
315
+ --ui-placeholder: #64748b;
316
+ --ui-disabled-bg: rgba(255, 255, 255, 0.04);
317
+ --ui-disabled-fg: #64748b;
318
+ --ui-overlay: rgba(2, 6, 23, 0.7);
319
+ --ui-overlay-muted: rgba(2, 6, 23, 0.45);
320
+ --ui-popup-background: rgba(17, 24, 39, 0.82);
321
+ --ui-input-color: #f9fafb;
322
+ --ui-input-border: rgba(148, 163, 184, 0.2);
323
+ --ui-input-focus-border: #a78bfa;
324
+ --ui-input-placeholder: #64748b;
325
+ --ui-input-focus-ring: rgba(167, 139, 250, 0.28);
326
+ --ui-tooltip-bg: #11161d;
327
+ --ui-tooltip-fg: #f8fafc;
328
+
329
+ /* --- Fixed Theme Colors (15 themes) --- */
330
+ --ui-gray: #e5e7eb;
331
+ --ui-gray-tint: #f3f4f6;
332
+ --ui-gray-shade: #9ca3af;
333
+ --ui-olive: #d4d9cc;
334
+ --ui-olive-tint: #e5e7db;
335
+ --ui-olive-shade: #a8b092;
336
+ --ui-tomato: #fca5a5;
337
+ --ui-tomato-tint: #fecaca;
338
+ --ui-tomato-shade: #f87171;
339
+ --ui-ruby: #fda4af;
340
+ --ui-ruby-tint: #fecdd3;
341
+ --ui-ruby-shade: #fb7185;
342
+ --ui-pink: #f9a8d4;
343
+ --ui-pink-tint: #fbcfe8;
344
+ --ui-pink-shade: #f472b6;
345
+ --ui-violet: #c4b5fd;
346
+ --ui-violet-tint: #ddd6fe;
347
+ --ui-violet-shade: #a78bfa;
348
+ --ui-indigo: #a5b4fc;
349
+ --ui-indigo-tint: #c7d2fe;
350
+ --ui-indigo-shade: #818cf8;
351
+ --ui-blue: #93c5fd;
352
+ --ui-blue-tint: #bfdbfe;
353
+ --ui-blue-shade: #60a5fa;
354
+ --ui-teal: #5eead4;
355
+ --ui-teal-tint: #99f6e4;
356
+ --ui-teal-shade: #2dd4bf;
357
+ --ui-grass: #86efac;
358
+ --ui-grass-tint: #bbf7d0;
359
+ --ui-grass-shade: #4ade80;
360
+ --ui-mint: #67e8f9;
361
+ --ui-mint-tint: #a5f3fc;
362
+ --ui-mint-shade: #22d3ee;
363
+ --ui-lime: #bef264;
364
+ --ui-lime-tint: #d9f99d;
365
+ --ui-lime-shade: #a3e635;
366
+ --ui-yellow: #fde047;
367
+ --ui-yellow-tint: #fef08a;
368
+ --ui-yellow-shade: #facc15;
369
+ --ui-orange: #fdba74;
370
+ --ui-orange-tint: #fed7aa;
371
+ --ui-orange-shade: #fb923c;
372
+ --ui-gold: #fbbf24;
373
+ --ui-gold-tint: #fcd34d;
374
+ --ui-gold-shade: #d97706;
375
+
376
+ /* Theme Color (default indigo) */
377
+ --tone-subtle: rgba(129, 140, 248, 0.1);
378
+ --tone-soft: rgba(129, 140, 248, 0.15);
379
+ --tone-muted: rgba(129, 140, 248, 0.2);
380
+ --tone-weak: #151b23;
381
+ --tone-wash: rgba(129, 140, 248, 0.05);
382
+ --tone-border: rgba(129, 140, 248, 0.25);
383
+ --tone-border-strong: rgba(129, 140, 248, 0.4);
384
+ --tone-solid: #818cf8;
385
+ --tone-tint: #c7d2fe;
386
+ --tone-shade: #818cf8;
387
+ --tone-solid-hover: #a5b4fc;
388
+ --tone-solid-active: #c7d2fe;
389
+ --tone-text: #a5b4fc;
390
+ --tone-text-hover: #c7d2fe;
391
+ --tone-fg: #1e1b4b;
392
+ --tone-ring: rgba(129, 140, 248, 0.5);
393
+ --tone-highlight: #fbbf24;
394
+ --tone-highlight-fg: #78350f;
395
+
396
+ /* Typography */
397
+ --tone-heading: #f9fafb;
398
+ --tone-subtitle: #e5e7eb;
399
+ --tone-body: #d1d5db;
400
+ --tone-caption: #9ca3af;
401
+ --tone-muted: #6b7280;
402
+ --tone-disabled: #4b5563;
403
+
404
+ /* Links */
405
+ --tone-link: #818cf8;
406
+ --tone-link-hover: #a5b4fc;
407
+ --tone-link-visited: #a78bfa;
408
+ --tone-link-active: #f87171;
409
+ --tone-link-disabled: #4b5563;
410
+
411
+ /* Card */
412
+ --tone-card: rgba(17, 24, 39, 0.82);
413
+ --tone-card-hover: rgba(17, 24, 39, 0.92);
414
+ --tone-card-border: rgba(148, 163, 184, 0.12);
415
+ --tone-card-shadow: 0 1px 3px rgba(0, 0, 0, 0.28);
416
+
417
+ /* Code */
418
+ --tone-code-bg: #11161d;
419
+ --tone-code-fg: #e5e7eb;
420
+
421
+ /* States */
422
+ --state-danger: #f87171;
423
+ --state-danger-hover: #fca5a5;
424
+ --state-danger-active: #fecaca;
425
+ --state-danger-fg: #030712;
426
+ --state-danger-text: #fca5a5;
427
+ --state-danger-subtle: rgba(248, 113, 113, 0.1);
428
+ --state-danger-soft: rgba(248, 113, 113, 0.15);
429
+ --state-danger-muted: rgba(248, 113, 113, 0.2);
430
+ --state-danger-weak: #291111;
431
+ --state-danger-border: rgba(248, 113, 113, 0.25);
432
+ --state-danger-ring: rgba(248, 113, 113, 0.4);
433
+
434
+ --state-success: #4ade80;
435
+ --state-success-hover: #86efac;
436
+ --state-success-active: #bbf7d0;
437
+ --state-success-fg: #030712;
438
+ --state-success-text: #86efac;
439
+ --state-success-subtle: rgba(74, 222, 128, 0.1);
440
+ --state-success-soft: rgba(74, 222, 128, 0.15);
441
+ --state-success-muted: rgba(74, 222, 128, 0.2);
442
+ --state-success-weak: #08251E;
443
+ --state-success-border: rgba(74, 222, 128, 0.25);
444
+ --state-success-ring: rgba(74, 222, 128, 0.4);
445
+
446
+ --state-warning: #fbbf24;
447
+ --state-warning-hover: #fcd34d;
448
+ --state-warning-active: #fde68a;
449
+ --state-warning-fg: #030712;
450
+ --state-warning-text: #fcd34d;
451
+ --state-warning-subtle: rgba(251, 191, 36, 0.1);
452
+ --state-warning-soft: rgba(251, 191, 36, 0.15);
453
+ --state-warning-muted: rgba(251, 191, 36, 0.2);
454
+ --state-warning-weak: #2A1F11;
455
+ --state-warning-border: rgba(251, 191, 36, 0.25);
456
+ --state-warning-ring: rgba(251, 191, 36, 0.4);
457
+
458
+ --state-info: #60a5fa;
459
+ --state-info-hover: #93bbfd;
460
+ --state-info-active: #bfdbfe;
461
+ --state-info-fg: #030712;
462
+ --state-info-text: #93bbfd;
463
+ --state-info-subtle: rgba(96, 165, 250, 0.1);
464
+ --state-info-soft: rgba(96, 165, 250, 0.15);
465
+ --state-info-muted: rgba(96, 165, 250, 0.2);
466
+ --state-info-border: rgba(96, 165, 250, 0.25);
467
+ --state-info-ring: rgba(96, 165, 250, 0.4);
468
+
469
+ /* shadow */
470
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.3);
471
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.4), 0 1px 2px -1px rgb(0 0 0 / 0.3);
472
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.4), 0 2px 4px -2px rgb(0 0 0 / 0.3);
473
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5), 0 4px 6px -4px rgb(0 0 0 / 0.4);
474
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.5), 0 8px 10px -6px rgb(0 0 0 / 0.4);
475
+ }
476
+
477
+
478
+ /* ============================================
479
+ 5. Theme Variants (15 themes)
480
+ ============================================ */
481
+
482
+ /* --- Gray --- */
483
+ .j-theme-gray {
484
+ --tone-subtle: rgba(0, 0, 0, 0.04);
485
+ --tone-soft: rgba(0, 0, 0, 0.06);
486
+ --tone-muted: rgba(0, 0, 0, 0.1);
487
+ --tone-wash: rgba(0, 0, 0, 0.02);
488
+ --tone-border: rgba(0, 0, 0, 0.12);
489
+ --tone-border-strong: rgba(0, 0, 0, 0.2);
490
+ --tone-solid: var(--ui-gray);
491
+ --tone-tint: var(--ui-gray-tint);
492
+ --tone-shade: var(--ui-gray-shade);
493
+ --tone-solid-hover: #4b5563;
494
+ --tone-solid-active: #6b7280;
495
+ --tone-text: #374151;
496
+ --tone-text-hover: #4b5563;
497
+ --tone-fg: #ffffff;
498
+ --tone-ring: rgba(55, 65, 81, 0.3);
499
+ --tone-link: #374151;
500
+ --tone-link-hover: #4b5563;
501
+ --tone-link-visited: #6b7280;
502
+ }
503
+
504
+ /* --- Olive --- */
505
+ .j-theme-olive {
506
+ --tone-subtle: rgba(113, 119, 98, 0.06);
507
+ --tone-soft: rgba(113, 119, 98, 0.1);
508
+ --tone-muted: rgba(113, 119, 98, 0.15);
509
+ --tone-wash: rgba(113, 119, 98, 0.03);
510
+ --tone-border: rgba(113, 119, 98, 0.2);
511
+ --tone-border-strong: rgba(113, 119, 98, 0.35);
512
+ --tone-solid: var(--ui-olive);
513
+ --tone-tint: var(--ui-olive-tint);
514
+ --tone-shade: var(--ui-olive-shade);
515
+ --tone-solid-hover: #5f6651;
516
+ --tone-solid-active: #4d5440;
517
+ --tone-text: #5f6651;
518
+ --tone-text-hover: #4d5440;
519
+ --tone-fg: #ffffff;
520
+ --tone-ring: rgba(113, 119, 98, 0.4);
521
+ --tone-link: #5f6651;
522
+ --tone-link-hover: #4d5440;
523
+ --tone-link-visited: #3d4530;
524
+ }
525
+
526
+ /* --- Tomato --- */
527
+ .j-theme-tomato {
528
+ --tone-subtle: rgba(239, 68, 68, 0.06);
529
+ --tone-soft: rgba(239, 68, 68, 0.1);
530
+ --tone-muted: rgba(239, 68, 68, 0.15);
531
+ --tone-wash: rgba(239, 68, 68, 0.03);
532
+ --tone-border: rgba(239, 68, 68, 0.2);
533
+ --tone-border-strong: rgba(239, 68, 68, 0.35);
534
+ --tone-solid: var(--ui-tomato);
535
+ --tone-tint: var(--ui-tomato-tint);
536
+ --tone-shade: var(--ui-tomato-shade);
537
+ --tone-solid-hover: #dc2626;
538
+ --tone-solid-active: #b91c1c;
539
+ --tone-text: #dc2626;
540
+ --tone-text-hover: #b91c1c;
541
+ --tone-fg: #ffffff;
542
+ --tone-ring: rgba(239, 68, 68, 0.4);
543
+ --tone-link: #dc2626;
544
+ --tone-link-hover: #b91c1c;
545
+ --tone-link-visited: #991b1b;
546
+ }
547
+
548
+ /* --- Ruby --- */
549
+ .j-theme-ruby {
550
+ --tone-subtle: rgba(244, 63, 94, 0.06);
551
+ --tone-soft: rgba(244, 63, 94, 0.1);
552
+ --tone-muted: rgba(244, 63, 94, 0.15);
553
+ --tone-wash: rgba(244, 63, 94, 0.03);
554
+ --tone-border: rgba(244, 63, 94, 0.2);
555
+ --tone-border-strong: rgba(244, 63, 94, 0.35);
556
+ --tone-solid: var(--ui-ruby);
557
+ --tone-tint: var(--ui-ruby-tint);
558
+ --tone-shade: var(--ui-ruby-shade);
559
+ --tone-solid-hover: #e11d48;
560
+ --tone-solid-active: #be123c;
561
+ --tone-text: #e11d48;
562
+ --tone-text-hover: #be123c;
563
+ --tone-fg: #ffffff;
564
+ --tone-ring: rgba(244, 63, 94, 0.4);
565
+ --tone-link: #e11d48;
566
+ --tone-link-hover: #be123c;
567
+ --tone-link-visited: #9f1239;
568
+ }
569
+
570
+ /* --- Pink --- */
571
+ .j-theme-pink {
572
+ --tone-subtle: rgba(236, 72, 153, 0.06);
573
+ --tone-soft: rgba(236, 72, 153, 0.1);
574
+ --tone-muted: rgba(236, 72, 153, 0.15);
575
+ --tone-wash: rgba(236, 72, 153, 0.03);
576
+ --tone-border: rgba(236, 72, 153, 0.2);
577
+ --tone-border-strong: rgba(236, 72, 153, 0.35);
578
+ --tone-solid: var(--ui-pink);
579
+ --tone-tint: var(--ui-pink-tint);
580
+ --tone-shade: var(--ui-pink-shade);
581
+ --tone-solid-hover: #db2777;
582
+ --tone-solid-active: #be185d;
583
+ --tone-text: #db2777;
584
+ --tone-text-hover: #be185d;
585
+ --tone-fg: #ffffff;
586
+ --tone-ring: rgba(236, 72, 153, 0.4);
587
+ --tone-link: #db2777;
588
+ --tone-link-hover: #be185d;
589
+ --tone-link-visited: #9d174d;
590
+ }
591
+
592
+ /* --- Violet --- */
593
+ .j-theme-violet {
594
+ --tone-subtle: rgba(139, 92, 246, 0.06);
595
+ --tone-soft: rgba(139, 92, 246, 0.1);
596
+ --tone-muted: rgba(139, 92, 246, 0.15);
597
+ --tone-wash: rgba(139, 92, 246, 0.03);
598
+ --tone-border: rgba(139, 92, 246, 0.2);
599
+ --tone-border-strong: rgba(139, 92, 246, 0.35);
600
+ --tone-solid: var(--ui-violet);
601
+ --tone-tint: var(--ui-violet-tint);
602
+ --tone-shade: var(--ui-violet-shade);
603
+ --tone-solid-hover: #7c3aed;
604
+ --tone-solid-active: #6d28d9;
605
+ --tone-text: #7c3aed;
606
+ --tone-text-hover: #6d28d9;
607
+ --tone-fg: #ffffff;
608
+ --tone-ring: rgba(139, 92, 246, 0.4);
609
+ --tone-link: #7c3aed;
610
+ --tone-link-hover: #6d28d9;
611
+ --tone-link-visited: #5b21b6;
612
+ }
613
+
614
+ /* --- Indigo --- */
615
+ .j-theme-indigo {
616
+ --tone-subtle: rgba(99, 102, 241, 0.06);
617
+ --tone-soft: rgba(99, 102, 241, 0.1);
618
+ --tone-muted: rgba(99, 102, 241, 0.15);
619
+ --tone-wash: rgba(99, 102, 241, 0.03);
620
+ --tone-border: rgba(99, 102, 241, 0.2);
621
+ --tone-border-strong: rgba(99, 102, 241, 0.35);
622
+ --tone-solid: var(--ui-indigo);
623
+ --tone-tint: var(--ui-indigo-tint);
624
+ --tone-shade: var(--ui-indigo-shade);
625
+ --tone-solid-hover: #4f46e5;
626
+ --tone-solid-active: #4338ca;
627
+ --tone-text: #4f46e5;
628
+ --tone-text-hover: #4338ca;
629
+ --tone-fg: #ffffff;
630
+ --tone-ring: rgba(99, 102, 241, 0.4);
631
+ --tone-link: #4f46e5;
632
+ --tone-link-hover: #4338ca;
633
+ --tone-link-visited: #3730a3;
634
+ }
635
+
636
+ /* --- Blue --- */
637
+ .j-theme-blue {
638
+ --tone-subtle: rgba(59, 130, 246, 0.06);
639
+ --tone-soft: rgba(59, 130, 246, 0.1);
640
+ --tone-muted: rgba(59, 130, 246, 0.15);
641
+ --tone-wash: rgba(59, 130, 246, 0.03);
642
+ --tone-border: rgba(59, 130, 246, 0.2);
643
+ --tone-border-strong: rgba(59, 130, 246, 0.35);
644
+ --tone-solid: var(--ui-blue);
645
+ --tone-tint: var(--ui-blue-tint);
646
+ --tone-shade: var(--ui-blue-shade);
647
+ --tone-solid-hover: #2563eb;
648
+ --tone-solid-active: #1d4ed8;
649
+ --tone-text: #2563eb;
650
+ --tone-text-hover: #1d4ed8;
651
+ --tone-fg: #ffffff;
652
+ --tone-ring: rgba(59, 130, 246, 0.4);
653
+ --tone-link: #2563eb;
654
+ --tone-link-hover: #1d4ed8;
655
+ --tone-link-visited: #1e40af;
656
+ }
657
+
658
+ /* --- Teal --- */
659
+ .j-theme-teal {
660
+ --tone-subtle: rgba(20, 184, 166, 0.06);
661
+ --tone-soft: rgba(20, 184, 166, 0.1);
662
+ --tone-muted: rgba(20, 184, 166, 0.15);
663
+ --tone-wash: rgba(20, 184, 166, 0.03);
664
+ --tone-border: rgba(20, 184, 166, 0.2);
665
+ --tone-border-strong: rgba(20, 184, 166, 0.35);
666
+ --tone-solid: var(--ui-teal);
667
+ --tone-tint: var(--ui-teal-tint);
668
+ --tone-shade: var(--ui-teal-shade);
669
+ --tone-solid-hover: #0d9488;
670
+ --tone-solid-active: #0f766e;
671
+ --tone-text: #0d9488;
672
+ --tone-text-hover: #0f766e;
673
+ --tone-fg: #ffffff;
674
+ --tone-ring: rgba(20, 184, 166, 0.4);
675
+ --tone-link: #0d9488;
676
+ --tone-link-hover: #0f766e;
677
+ --tone-link-visited: #115e59;
678
+ }
679
+
680
+ /* --- Grass --- */
681
+ .j-theme-grass {
682
+ --tone-subtle: rgba(34, 197, 94, 0.06);
683
+ --tone-soft: rgba(34, 197, 94, 0.1);
684
+ --tone-muted: rgba(34, 197, 94, 0.15);
685
+ --tone-wash: rgba(34, 197, 94, 0.03);
686
+ --tone-border: rgba(34, 197, 94, 0.2);
687
+ --tone-border-strong: rgba(34, 197, 94, 0.35);
688
+ --tone-solid: var(--ui-grass);
689
+ --tone-tint: var(--ui-grass-tint);
690
+ --tone-shade: var(--ui-grass-shade);
691
+ --tone-solid-hover: #16a34a;
692
+ --tone-solid-active: #15803d;
693
+ --tone-text: #16a34a;
694
+ --tone-text-hover: #15803d;
695
+ --tone-fg: #ffffff;
696
+ --tone-ring: rgba(34, 197, 94, 0.4);
697
+ --tone-link: #16a34a;
698
+ --tone-link-hover: #15803d;
699
+ --tone-link-visited: #166534;
700
+ }
701
+
702
+ /* --- Mint --- */
703
+ .j-theme-mint {
704
+ --tone-subtle: rgba(6, 182, 212, 0.06);
705
+ --tone-soft: rgba(6, 182, 212, 0.1);
706
+ --tone-muted: rgba(6, 182, 212, 0.15);
707
+ --tone-wash: rgba(6, 182, 212, 0.03);
708
+ --tone-border: rgba(6, 182, 212, 0.2);
709
+ --tone-border-strong: rgba(6, 182, 212, 0.35);
710
+ --tone-solid: var(--ui-mint);
711
+ --tone-tint: var(--ui-mint-tint);
712
+ --tone-shade: var(--ui-mint-shade);
713
+ --tone-solid-hover: #0891b2;
714
+ --tone-solid-active: #0e7490;
715
+ --tone-text: #0891b2;
716
+ --tone-text-hover: #0e7490;
717
+ --tone-fg: #ffffff;
718
+ --tone-ring: rgba(6, 182, 212, 0.4);
719
+ --tone-link: #0891b2;
720
+ --tone-link-hover: #0e7490;
721
+ --tone-link-visited: #155e75;
722
+ }
723
+
724
+ /* --- Lime --- */
725
+ .j-theme-lime {
726
+ --tone-subtle: rgba(132, 204, 22, 0.06);
727
+ --tone-soft: rgba(132, 204, 22, 0.1);
728
+ --tone-muted: rgba(132, 204, 22, 0.15);
729
+ --tone-wash: rgba(132, 204, 22, 0.03);
730
+ --tone-border: rgba(132, 204, 22, 0.2);
731
+ --tone-border-strong: rgba(132, 204, 22, 0.35);
732
+ --tone-solid: var(--ui-lime);
733
+ --tone-tint: var(--ui-lime-tint);
734
+ --tone-shade: var(--ui-lime-shade);
735
+ --tone-solid-hover: #65a30d;
736
+ --tone-solid-active: #4d7c0f;
737
+ --tone-text: #65a30d;
738
+ --tone-text-hover: #4d7c0f;
739
+ --tone-fg: #ffffff;
740
+ --tone-ring: rgba(132, 204, 22, 0.4);
741
+ --tone-link: #65a30d;
742
+ --tone-link-hover: #4d7c0f;
743
+ --tone-link-visited: #3f6212;
744
+ }
745
+
746
+ /* --- Yellow --- */
747
+ .j-theme-yellow {
748
+ --tone-subtle: rgba(234, 179, 8, 0.06);
749
+ --tone-soft: rgba(234, 179, 8, 0.1);
750
+ --tone-muted: rgba(234, 179, 8, 0.15);
751
+ --tone-wash: rgba(234, 179, 8, 0.03);
752
+ --tone-border: rgba(234, 179, 8, 0.2);
753
+ --tone-border-strong: rgba(234, 179, 8, 0.35);
754
+ --tone-solid: var(--ui-yellow);
755
+ --tone-tint: var(--ui-yellow-tint);
756
+ --tone-shade: var(--ui-yellow-shade);
757
+ --tone-solid-hover: #ca8a04;
758
+ --tone-solid-active: #a16207;
759
+ --tone-text: #ca8a04;
760
+ --tone-text-hover: #a16207;
761
+ --tone-fg: #ffffff;
762
+ --tone-ring: rgba(234, 179, 8, 0.4);
763
+ --tone-link: #ca8a04;
764
+ --tone-link-hover: #a16207;
765
+ --tone-link-visited: #854d0e;
766
+ }
767
+
768
+ /* --- Orange --- */
769
+ .j-theme-orange {
770
+ --tone-subtle: rgba(249, 115, 22, 0.06);
771
+ --tone-soft: rgba(249, 115, 22, 0.1);
772
+ --tone-muted: rgba(249, 115, 22, 0.15);
773
+ --tone-wash: rgba(249, 115, 22, 0.03);
774
+ --tone-border: rgba(249, 115, 22, 0.2);
775
+ --tone-border-strong: rgba(249, 115, 22, 0.35);
776
+ --tone-solid: var(--ui-orange);
777
+ --tone-tint: var(--ui-orange-tint);
778
+ --tone-shade: var(--ui-orange-shade);
779
+ --tone-solid-hover: #ea580c;
780
+ --tone-solid-active: #c2410c;
781
+ --tone-text: #ea580c;
782
+ --tone-text-hover: #c2410c;
783
+ --tone-fg: #ffffff;
784
+ --tone-ring: rgba(249, 115, 22, 0.4);
785
+ --tone-link: #ea580c;
786
+ --tone-link-hover: #c2410c;
787
+ --tone-link-visited: #9a3412;
788
+ }
789
+
790
+ /* --- Gold --- */
791
+ .j-theme-gold {
792
+ --tone-subtle: rgba(180, 83, 9, 0.06);
793
+ --tone-soft: rgba(180, 83, 9, 0.1);
794
+ --tone-muted: rgba(180, 83, 9, 0.15);
795
+ --tone-wash: rgba(180, 83, 9, 0.03);
796
+ --tone-border: rgba(180, 83, 9, 0.2);
797
+ --tone-border-strong: rgba(180, 83, 9, 0.35);
798
+ --tone-solid: var(--ui-gold);
799
+ --tone-tint: var(--ui-gold-tint);
800
+ --tone-shade: var(--ui-gold-shade);
801
+ --tone-solid-hover: #92400e;
802
+ --tone-solid-active: #78350f;
803
+ --tone-text: #92400e;
804
+ --tone-text-hover: #78350f;
805
+ --tone-fg: #ffffff;
806
+ --tone-ring: rgba(180, 83, 9, 0.4);
807
+ --tone-link: #92400e;
808
+ --tone-link-hover: #78350f;
809
+ --tone-link-visited: #653008;
810
+ }
811
+
812
+
813
+ /* ============================================
814
+ 6. Dark Theme Variants
815
+ ============================================ */
816
+
817
+ .dark.j-theme-gray,
818
+ .dark-theme.j-theme-gray {
819
+ --tone-subtle: rgba(255, 255, 255, 0.06);
820
+ --tone-soft: rgba(255, 255, 255, 0.1);
821
+ --tone-muted: rgba(255, 255, 255, 0.15);
822
+ --tone-wash: rgba(255, 255, 255, 0.03);
823
+ --tone-border: rgba(255, 255, 255, 0.12);
824
+ --tone-border-strong: rgba(255, 255, 255, 0.2);
825
+ /* --tone-solid: #e5e7eb; */
826
+ --tone-solid-hover: #d1d5db;
827
+ --tone-solid-active: #9ca3af;
828
+ --tone-text: #e5e7eb;
829
+ --tone-text-hover: #d1d5db;
830
+ --tone-fg: #111827;
831
+ --tone-ring: rgba(229, 231, 235, 0.3);
832
+ --tone-link: #e5e7eb;
833
+ --tone-link-hover: #d1d5db;
834
+ --tone-link-visited: #9ca3af;
835
+ }
836
+
837
+ .dark.j-theme-olive,
838
+ .dark-theme.j-theme-olive {
839
+ --tone-subtle: rgba(180, 188, 162, 0.1);
840
+ --tone-soft: rgba(180, 188, 162, 0.15);
841
+ --tone-muted: rgba(180, 188, 162, 0.2);
842
+ --tone-wash: rgba(180, 188, 162, 0.05);
843
+ --tone-border: rgba(180, 188, 162, 0.25);
844
+ --tone-border-strong: rgba(180, 188, 162, 0.4);
845
+ /* --tone-solid: #b4bc9e; */
846
+ --tone-solid-hover: #c8cfb5;
847
+ --tone-solid-active: #dce2cc;
848
+ --tone-text: #c8cfb5;
849
+ --tone-text-hover: #dce2cc;
850
+ --tone-fg: #1a1d16;
851
+ --tone-ring: rgba(180, 188, 162, 0.4);
852
+ --tone-link: #c8cfb5;
853
+ --tone-link-hover: #dce2cc;
854
+ --tone-link-visited: #a8b092;
855
+ }
856
+
857
+ .dark.j-theme-tomato,
858
+ .dark-theme.j-theme-tomato {
859
+ --tone-subtle: rgba(248, 113, 113, 0.1);
860
+ --tone-soft: rgba(248, 113, 113, 0.15);
861
+ --tone-muted: rgba(248, 113, 113, 0.2);
862
+ --tone-wash: rgba(248, 113, 113, 0.05);
863
+ --tone-border: rgba(248, 113, 113, 0.25);
864
+ --tone-border-strong: rgba(248, 113, 113, 0.4);
865
+ /* --tone-solid: #f87171; */
866
+ --tone-solid-hover: #fca5a5;
867
+ --tone-solid-active: #fecaca;
868
+ --tone-text: #fca5a5;
869
+ --tone-text-hover: #fecaca;
870
+ --tone-fg: #7f1d1d;
871
+ --tone-ring: rgba(248, 113, 113, 0.4);
872
+ --tone-link: #fca5a5;
873
+ --tone-link-hover: #fecaca;
874
+ --tone-link-visited: #f87171;
875
+ }
876
+
877
+ .dark.j-theme-ruby,
878
+ .dark-theme.j-theme-ruby {
879
+ --tone-subtle: rgba(251, 113, 133, 0.1);
880
+ --tone-soft: rgba(251, 113, 133, 0.15);
881
+ --tone-muted: rgba(251, 113, 133, 0.2);
882
+ --tone-wash: rgba(251, 113, 133, 0.05);
883
+ --tone-border: rgba(251, 113, 133, 0.25);
884
+ --tone-border-strong: rgba(251, 113, 133, 0.4);
885
+ /* --tone-solid: #fb7185; */
886
+ --tone-solid-hover: #fda4af;
887
+ --tone-solid-active: #fecdd3;
888
+ --tone-text: #fda4af;
889
+ --tone-text-hover: #fecdd3;
890
+ --tone-fg: #881337;
891
+ --tone-ring: rgba(251, 113, 133, 0.4);
892
+ --tone-link: #fda4af;
893
+ --tone-link-hover: #fecdd3;
894
+ --tone-link-visited: #fb7185;
895
+ }
896
+
897
+ .dark.j-theme-pink,
898
+ .dark-theme.j-theme-pink {
899
+ --tone-subtle: rgba(244, 114, 182, 0.1);
900
+ --tone-soft: rgba(244, 114, 182, 0.15);
901
+ --tone-muted: rgba(244, 114, 182, 0.2);
902
+ --tone-wash: rgba(244, 114, 182, 0.05);
903
+ --tone-border: rgba(244, 114, 182, 0.25);
904
+ --tone-border-strong: rgba(244, 114, 182, 0.4);
905
+ /* --tone-solid: #f472b6; */
906
+ --tone-solid-hover: #f9a8d4;
907
+ --tone-solid-active: #fbcfe8;
908
+ --tone-text: #f9a8d4;
909
+ --tone-text-hover: #fbcfe8;
910
+ --tone-fg: #831843;
911
+ --tone-ring: rgba(244, 114, 182, 0.4);
912
+ --tone-link: #f9a8d4;
913
+ --tone-link-hover: #fbcfe8;
914
+ --tone-link-visited: #f472b6;
915
+ }
916
+
917
+ .dark.j-theme-violet,
918
+ .dark-theme.j-theme-violet {
919
+ --tone-subtle: rgba(167, 139, 250, 0.1);
920
+ --tone-soft: rgba(167, 139, 250, 0.15);
921
+ --tone-muted: rgba(167, 139, 250, 0.2);
922
+ --tone-wash: rgba(167, 139, 250, 0.05);
923
+ --tone-border: rgba(167, 139, 250, 0.25);
924
+ --tone-border-strong: rgba(167, 139, 250, 0.4);
925
+ /* --tone-solid: #a78bfa; */
926
+ --tone-solid-hover: #c4b5fd;
927
+ --tone-solid-active: #ddd6fe;
928
+ --tone-text: #c4b5fd;
929
+ --tone-text-hover: #ddd6fe;
930
+ --tone-fg: #2e1065;
931
+ --tone-ring: rgba(167, 139, 250, 0.4);
932
+ --tone-link: #c4b5fd;
933
+ --tone-link-hover: #ddd6fe;
934
+ --tone-link-visited: #a78bfa;
935
+ }
936
+
937
+ .dark.j-theme-indigo,
938
+ .dark-theme.j-theme-indigo {
939
+ --tone-subtle: rgba(129, 140, 248, 0.1);
940
+ --tone-soft: rgba(129, 140, 248, 0.15);
941
+ --tone-muted: rgba(129, 140, 248, 0.2);
942
+ --tone-wash: rgba(129, 140, 248, 0.05);
943
+ --tone-border: rgba(129, 140, 248, 0.25);
944
+ --tone-border-strong: rgba(129, 140, 248, 0.4);
945
+ /* --tone-solid: #818cf8; */
946
+ --tone-solid-hover: #a5b4fc;
947
+ --tone-solid-active: #c7d2fe;
948
+ --tone-text: #a5b4fc;
949
+ --tone-text-hover: #c7d2fe;
950
+ --tone-fg: #1e1b4b;
951
+ --tone-ring: rgba(129, 140, 248, 0.4);
952
+ --tone-link: #a5b4fc;
953
+ --tone-link-hover: #c7d2fe;
954
+ --tone-link-visited: #818cf8;
955
+ }
956
+
957
+ .dark.j-theme-blue,
958
+ .dark-theme.j-theme-blue {
959
+ --tone-subtle: rgba(96, 165, 250, 0.1);
960
+ --tone-soft: rgba(96, 165, 250, 0.15);
961
+ --tone-muted: rgba(96, 165, 250, 0.2);
962
+ --tone-wash: rgba(96, 165, 250, 0.05);
963
+ --tone-border: rgba(96, 165, 250, 0.25);
964
+ --tone-border-strong: rgba(96, 165, 250, 0.4);
965
+ /* --tone-solid: #60a5fa; */
966
+ --tone-solid-hover: #93bbfd;
967
+ --tone-solid-active: #bfdbfe;
968
+ --tone-text: #93bbfd;
969
+ --tone-text-hover: #bfdbfe;
970
+ --tone-fg: #1e3a5f;
971
+ --tone-ring: rgba(96, 165, 250, 0.4);
972
+ --tone-link: #93bbfd;
973
+ --tone-link-hover: #bfdbfe;
974
+ --tone-link-visited: #60a5fa;
975
+ }
976
+
977
+ .dark.j-theme-teal,
978
+ .dark-theme.j-theme-teal {
979
+ --tone-subtle: rgba(45, 212, 191, 0.1);
980
+ --tone-soft: rgba(45, 212, 191, 0.15);
981
+ --tone-muted: rgba(45, 212, 191, 0.2);
982
+ --tone-wash: rgba(45, 212, 191, 0.05);
983
+ --tone-border: rgba(45, 212, 191, 0.25);
984
+ --tone-border-strong: rgba(45, 212, 191, 0.4);
985
+ /* --tone-solid: #2dd4bf; */
986
+ --tone-solid-hover: #5eead4;
987
+ --tone-solid-active: #99f6e4;
988
+ --tone-text: #5eead4;
989
+ --tone-text-hover: #99f6e4;
990
+ --tone-fg: #134e4a;
991
+ --tone-ring: rgba(45, 212, 191, 0.4);
992
+ --tone-link: #5eead4;
993
+ --tone-link-hover: #99f6e4;
994
+ --tone-link-visited: #2dd4bf;
995
+ }
996
+
997
+ .dark.j-theme-grass,
998
+ .dark-theme.j-theme-grass {
999
+ --tone-subtle: rgba(74, 222, 128, 0.1);
1000
+ --tone-soft: rgba(74, 222, 128, 0.15);
1001
+ --tone-muted: rgba(74, 222, 128, 0.2);
1002
+ --tone-wash: rgba(74, 222, 128, 0.05);
1003
+ --tone-border: rgba(74, 222, 128, 0.25);
1004
+ --tone-border-strong: rgba(74, 222, 128, 0.4);
1005
+ /* --tone-solid: #4ade80; */
1006
+ --tone-solid-hover: #86efac;
1007
+ --tone-solid-active: #bbf7d0;
1008
+ --tone-text: #86efac;
1009
+ --tone-text-hover: #bbf7d0;
1010
+ --tone-fg: #14532d;
1011
+ --tone-ring: rgba(74, 222, 128, 0.4);
1012
+ --tone-link: #86efac;
1013
+ --tone-link-hover: #bbf7d0;
1014
+ --tone-link-visited: #4ade80;
1015
+ }
1016
+
1017
+ .dark.j-theme-mint,
1018
+ .dark-theme.j-theme-mint {
1019
+ --tone-subtle: rgba(34, 211, 238, 0.1);
1020
+ --tone-soft: rgba(34, 211, 238, 0.15);
1021
+ --tone-muted: rgba(34, 211, 238, 0.2);
1022
+ --tone-wash: rgba(34, 211, 238, 0.05);
1023
+ --tone-border: rgba(34, 211, 238, 0.25);
1024
+ --tone-border-strong: rgba(34, 211, 238, 0.4);
1025
+ /* --tone-solid: #22d3ee; */
1026
+ --tone-solid-hover: #67e8f9;
1027
+ --tone-solid-active: #a5f3fc;
1028
+ --tone-text: #67e8f9;
1029
+ --tone-text-hover: #a5f3fc;
1030
+ --tone-fg: #164e63;
1031
+ --tone-ring: rgba(34, 211, 238, 0.4);
1032
+ --tone-link: #67e8f9;
1033
+ --tone-link-hover: #a5f3fc;
1034
+ --tone-link-visited: #22d3ee;
1035
+ }
1036
+
1037
+ .dark.j-theme-lime,
1038
+ .dark-theme.j-theme-lime {
1039
+ --tone-subtle: rgba(163, 230, 53, 0.1);
1040
+ --tone-soft: rgba(163, 230, 53, 0.15);
1041
+ --tone-muted: rgba(163, 230, 53, 0.2);
1042
+ --tone-wash: rgba(163, 230, 53, 0.05);
1043
+ --tone-border: rgba(163, 230, 53, 0.25);
1044
+ --tone-border-strong: rgba(163, 230, 53, 0.4);
1045
+ /* --tone-solid: #a3e635; */
1046
+ --tone-solid-hover: #bef264;
1047
+ --tone-solid-active: #d9f99d;
1048
+ --tone-text: #bef264;
1049
+ --tone-text-hover: #d9f99d;
1050
+ --tone-fg: #365314;
1051
+ --tone-ring: rgba(163, 230, 53, 0.4);
1052
+ --tone-link: #bef264;
1053
+ --tone-link-hover: #d9f99d;
1054
+ --tone-link-visited: #a3e635;
1055
+ }
1056
+
1057
+ .dark.j-theme-yellow,
1058
+ .dark-theme.j-theme-yellow {
1059
+ --tone-subtle: rgba(250, 204, 21, 0.1);
1060
+ --tone-soft: rgba(250, 204, 21, 0.15);
1061
+ --tone-muted: rgba(250, 204, 21, 0.2);
1062
+ --tone-wash: rgba(250, 204, 21, 0.05);
1063
+ --tone-border: rgba(250, 204, 21, 0.25);
1064
+ --tone-border-strong: rgba(250, 204, 21, 0.4);
1065
+ /* --tone-solid: #facc15; */
1066
+ --tone-solid-hover: #fde047;
1067
+ --tone-solid-active: #fef08a;
1068
+ --tone-text: #fde047;
1069
+ --tone-text-hover: #fef08a;
1070
+ --tone-fg: #713f12;
1071
+ --tone-ring: rgba(250, 204, 21, 0.4);
1072
+ --tone-link: #fde047;
1073
+ --tone-link-hover: #fef08a;
1074
+ --tone-link-visited: #facc15;
1075
+ }
1076
+
1077
+ .dark.j-theme-orange,
1078
+ .dark-theme.j-theme-orange {
1079
+ --tone-subtle: rgba(251, 146, 60, 0.1);
1080
+ --tone-soft: rgba(251, 146, 60, 0.15);
1081
+ --tone-muted: rgba(251, 146, 60, 0.2);
1082
+ --tone-wash: rgba(251, 146, 60, 0.05);
1083
+ --tone-border: rgba(251, 146, 60, 0.25);
1084
+ --tone-border-strong: rgba(251, 146, 60, 0.4);
1085
+ /* --tone-solid: #fb923c; */
1086
+ --tone-solid-hover: #fdba74;
1087
+ --tone-solid-active: #fed7aa;
1088
+ --tone-text: #fdba74;
1089
+ --tone-text-hover: #fed7aa;
1090
+ --tone-fg: #7c2d12;
1091
+ --tone-ring: rgba(251, 146, 60, 0.4);
1092
+ --tone-link: #fdba74;
1093
+ --tone-link-hover: #fed7aa;
1094
+ --tone-link-visited: #fb923c;
1095
+ }
1096
+
1097
+ .dark.j-theme-gold,
1098
+ .dark-theme.j-theme-gold {
1099
+ --tone-subtle: rgba(217, 119, 6, 0.1);
1100
+ --tone-soft: rgba(217, 119, 6, 0.15);
1101
+ --tone-muted: rgba(217, 119, 6, 0.2);
1102
+ --tone-wash: rgba(217, 119, 6, 0.05);
1103
+ --tone-border: rgba(217, 119, 6, 0.25);
1104
+ --tone-border-strong: rgba(217, 119, 6, 0.4);
1105
+ /* --tone-solid: #d97706; */
1106
+ --tone-solid-hover: #f59e0b;
1107
+ --tone-solid-active: #fbbf24;
1108
+ --tone-text: #f59e0b;
1109
+ --tone-text-hover: #fbbf24;
1110
+ --tone-fg: #78350f;
1111
+ --tone-ring: rgba(217, 119, 6, 0.4);
1112
+ --tone-link: #f59e0b;
1113
+ --tone-link-hover: #fbbf24;
1114
+ --tone-link-visited: #d97706;
1115
+ }
1116
+
1117
+
1118
+ /* ============================================
1119
+ 7. Radius Themes
1120
+ ============================================ */
1121
+ :root,
1122
+ .j-radius-md {
1123
+ /* 2px */
1124
+ --radius-2xs: 0.125rem;
1125
+ /* 4px */
1126
+ --radius-xs: 0.25rem;
1127
+ /* 6px */
1128
+ --radius-sm: 0.375rem;
1129
+ /* 8px */
1130
+ --radius-md: 0.5rem;
1131
+ /* 12px */
1132
+ --radius-lg: 0.75rem;
1133
+ /* 16px */
1134
+ --radius-xl: 1rem;
1135
+ /* 24px */
1136
+ --radius-2xl: 1.5rem;
1137
+ }
1138
+
1139
+ .j-radius-none {
1140
+ --radius-2xs: 0;
1141
+ --radius-xs: 0;
1142
+ --radius-sm: 0;
1143
+ --radius-md: 0;
1144
+ --radius-lg: 0;
1145
+ --radius-xl: 0;
1146
+ --radius-2xl: 0;
1147
+ }
1148
+
1149
+ .j-radius-sm {
1150
+ --radius-2xs: 0.0625rem;
1151
+ --radius-xs: 0.125rem;
1152
+ --radius-sm: 0.25rem;
1153
+ --radius-md: 0.375rem;
1154
+ --radius-lg: 0.5rem;
1155
+ --radius-xl: 0.75rem;
1156
+ --radius-2xl: 1rem;
1157
+ }
1158
+
1159
+ .j-radius-lg {
1160
+ --radius-2xs: 0.25rem;
1161
+ --radius-xs: 0.375rem;
1162
+ --radius-sm: 0.5rem;
1163
+ --radius-md: 0.75rem;
1164
+ --radius-lg: 1rem;
1165
+ --radius-xl: 1.5rem;
1166
+ --radius-2xl: 2rem;
1167
+ }
1168
+
1169
+ .j-radius-xl {
1170
+ --radius-2xs: 0.375rem;
1171
+ --radius-xs: 0.5rem;
1172
+ --radius-sm: 0.75rem;
1173
+ --radius-md: 1rem;
1174
+ --radius-lg: 1.5rem;
1175
+ --radius-xl: 2rem;
1176
+ --radius-2xl: 2.5rem;
1177
+ }
1178
+
1179
+ .j-radius-round {
1180
+ --radius-2xs: 9999px;
1181
+ --radius-xs: 9999px;
1182
+ --radius-sm: 9999px;
1183
+ --radius-md: 9999px;
1184
+ --radius-lg: 9999px;
1185
+ --radius-xl: 9999px;
1186
+ --radius-2xl: 9999px;
1187
+ }
1188
+
1189
+
1190
+ /* ============================================
1191
+ 8. Shadow Themes
1192
+ ============================================ */
1193
+
1194
+ :root,
1195
+ .j-shadow-md {
1196
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05);
1197
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1);
1198
+ --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
1199
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
1200
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
1201
+ }
1202
+
1203
+ .j-shadow-none {
1204
+ --shadow-xs: none;
1205
+ --shadow-sm: none;
1206
+ --shadow-md: none;
1207
+ --shadow-lg: none;
1208
+ --shadow-xl: none;
1209
+ }
1210
+
1211
+ .j-shadow-sm {
1212
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.03);
1213
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.06);
1214
+ --shadow-md: 0 2px 3px -1px rgb(0 0 0 / 0.08);
1215
+ --shadow-lg: 0 4px 6px -1px rgb(0 0 0 / 0.1);
1216
+ --shadow-xl: 0 8px 10px -3px rgb(0 0 0 / 0.1);
1217
+ }
1218
+
1219
+ .j-shadow-lg {
1220
+ --shadow-xs: 0 1px 3px 0 rgb(0 0 0 / 0.08);
1221
+ --shadow-sm: 0 2px 4px 0 rgb(0 0 0 / 0.12);
1222
+ --shadow-md: 0 4px 8px -2px rgb(0 0 0 / 0.15);
1223
+ --shadow-lg: 0 12px 20px -4px rgb(0 0 0 / 0.18);
1224
+ --shadow-xl: 0 24px 38px -6px rgb(0 0 0 / 0.2);
1225
+ }
1226
+
1227
+ .dark .j-shadow-sm {
1228
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.2);
1229
+ --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.3);
1230
+ --shadow-md: 0 2px 3px -1px rgb(0 0 0 / 0.4);
1231
+ --shadow-lg: 0 4px 6px -1px rgb(0 0 0 / 0.5);
1232
+ --shadow-xl: 0 8px 10px -3px rgb(0 0 0 / 0.5);
1233
+ }
1234
+
1235
+ .dark .j-shadow-md {
1236
+ --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.25);
1237
+ --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.35);
1238
+ --shadow-md: 0 4px 6px -2px rgb(0 0 0 / 0.45);
1239
+ --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.5);
1240
+ --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.55);
1241
+ }
1242
+
1243
+ .dark .j-shadow-lg {
1244
+ --shadow-xs: 0 1px 3px 0 rgb(0 0 0 / 0.3);
1245
+ --shadow-sm: 0 2px 4px 0 rgb(0 0 0 / 0.4);
1246
+ --shadow-md: 0 4px 8px -2px rgb(0 0 0 / 0.55);
1247
+ --shadow-lg: 0 12px 20px -4px rgb(0 0 0 / 0.6);
1248
+ --shadow-xl: 0 24px 38px -6px rgb(0 0 0 / 0.65);
1249
+ }
1250
+
1251
+
1252
+ /* ============================================
1253
+ 9. Font Themes
1254
+ ============================================ */
1255
+
1256
+ :root,
1257
+ .j-font-sm {
1258
+ --font-size-xs: 0.625rem;
1259
+ --font-size-sm: 0.75rem;
1260
+ --font-size-md: 0.875rem;
1261
+ --font-size-lg: 1rem;
1262
+ --font-size-xl: 1.125rem;
1263
+ --font-size-2xl: 1.25rem;
1264
+
1265
+ /* --- Element Heights --- */
1266
+ --el-height-3xs: 1rem;
1267
+ --el-height-2xs: 1.25rem;
1268
+ --el-height-xs: 1.5rem;
1269
+ --el-height-sm: 1.75rem;
1270
+ --el-height-md: 2rem;
1271
+ --el-height-lg: 2.25rem;
1272
+ --el-height-xl: 2.5rem;
1273
+ --el-height-2xl: 2.75rem;
1274
+ --el-height-3xl: 3rem;
1275
+ }
1276
+
1277
+ .j-font-md {
1278
+ --font-size-xs: 0.75rem;
1279
+ --font-size-sm: 0.875rem;
1280
+ --font-size-md: 1rem;
1281
+ --font-size-lg: 1.125rem;
1282
+ --font-size-xl: 1.25rem;
1283
+ --font-size-2xl: 1.5rem;
1284
+
1285
+ --el-height-3xs: 1.25rem;
1286
+ --el-height-2xs: 1.5rem;
1287
+ --el-height-xs: 1.75rem;
1288
+ --el-height-sm: 2rem;
1289
+ --el-height-md: 2.25rem;
1290
+ --el-height-lg: 2.5rem;
1291
+ --el-height-xl: 2.75rem;
1292
+ --el-height-2xl: 3rem;
1293
+ --el-height-3xl: 3.25rem;
1294
+ }
1295
+ }