tyrell-components 1.0.0-TC52 → 1.0.0-TC53

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 (105) hide show
  1. package/css/tyrell-theme.css +25 -2
  2. package/css/tyrell.css +4 -0
  3. package/dist/tyrell-colors-static.css +1 -316
  4. package/dist/tyrell-theme.css +1 -1443
  5. package/dist/tyrell.css +1 -1390
  6. package/dist/tyrell.js +1 -1
  7. package/lib/base/ty-component.js +196 -196
  8. package/lib/components/button.d.ts +1 -1
  9. package/lib/components/button.js +260 -259
  10. package/lib/components/calendar-month.d.ts +2 -2
  11. package/lib/components/calendar-month.js +426 -416
  12. package/lib/components/calendar-navigation.js +238 -238
  13. package/lib/components/calendar.js +605 -602
  14. package/lib/components/checkbox.d.ts +1 -1
  15. package/lib/components/checkbox.js +273 -272
  16. package/lib/components/copy.d.ts +1 -1
  17. package/lib/components/copy.js +279 -278
  18. package/lib/components/date-picker.d.ts +1 -1
  19. package/lib/components/date-picker.js +1103 -1108
  20. package/lib/components/file-upload.js +404 -404
  21. package/lib/components/icon.js +141 -141
  22. package/lib/components/input.d.ts +1 -1
  23. package/lib/components/input.js +593 -596
  24. package/lib/components/modal.js +319 -319
  25. package/lib/components/option.js +167 -167
  26. package/lib/components/popup.js +233 -233
  27. package/lib/components/radio.d.ts +2 -2
  28. package/lib/components/radio.js +407 -406
  29. package/lib/components/resize-observer.js +67 -67
  30. package/lib/components/scroll-container.js +294 -294
  31. package/lib/components/select.d.ts +1 -1
  32. package/lib/components/select.js +1524 -1532
  33. package/lib/components/selected-tags.js +184 -184
  34. package/lib/components/step.js +62 -62
  35. package/lib/components/switch.d.ts +1 -1
  36. package/lib/components/switch.js +214 -213
  37. package/lib/components/tab.js +62 -62
  38. package/lib/components/tabs.js +507 -507
  39. package/lib/components/tag.d.ts +1 -1
  40. package/lib/components/tag.js +236 -235
  41. package/lib/components/textarea.d.ts +1 -1
  42. package/lib/components/textarea.js +457 -456
  43. package/lib/components/tooltip.js +283 -283
  44. package/lib/components/wizard.js +384 -384
  45. package/lib/icons/heroicons/micro.js +392 -392
  46. package/lib/icons/heroicons/mini.js +382 -382
  47. package/lib/icons/heroicons/outline.js +337 -337
  48. package/lib/icons/heroicons/solid.js +407 -407
  49. package/lib/icons/lucide.js +22843 -22843
  50. package/lib/icons/material/filled.js +9653 -9653
  51. package/lib/icons/material/outlined.js +10271 -10271
  52. package/lib/icons/material/round.js +10495 -10495
  53. package/lib/icons/material/sharp.js +9905 -9905
  54. package/lib/icons/material/two-tone.js +12792 -12792
  55. package/lib/index.js +21 -21
  56. package/lib/styles/button.js +176 -288
  57. package/lib/styles/calendar-month.js +123 -183
  58. package/lib/styles/calendar-navigation.js +60 -79
  59. package/lib/styles/calendar.js +8 -9
  60. package/lib/styles/checkbox.js +45 -72
  61. package/lib/styles/copy.js +67 -91
  62. package/lib/styles/custom-scrollbar.js +80 -100
  63. package/lib/styles/date-picker.js +261 -331
  64. package/lib/styles/field-size.d.ts +6 -0
  65. package/lib/styles/field-size.js +91 -0
  66. package/lib/styles/file-upload.js +139 -169
  67. package/lib/styles/icon.js +92 -156
  68. package/lib/styles/input.js +125 -241
  69. package/lib/styles/modal.js +67 -102
  70. package/lib/styles/option.d.ts +1 -1
  71. package/lib/styles/option.js +47 -67
  72. package/lib/styles/popup.js +34 -65
  73. package/lib/styles/radio.js +69 -96
  74. package/lib/styles/resize-observer.js +2 -5
  75. package/lib/styles/scroll-container.js +100 -130
  76. package/lib/styles/select-base.js +525 -778
  77. package/lib/styles/select.js +140 -228
  78. package/lib/styles/step.js +22 -29
  79. package/lib/styles/switch.js +34 -55
  80. package/lib/styles/tab.js +22 -29
  81. package/lib/styles/tabs.js +171 -252
  82. package/lib/styles/tag.js +135 -188
  83. package/lib/styles/textarea.d.ts +1 -1
  84. package/lib/styles/textarea.js +205 -271
  85. package/lib/styles/tooltip.js +3 -3
  86. package/lib/styles/wizard.js +170 -226
  87. package/lib/types/common.d.ts +2 -0
  88. package/lib/types/common.js +6 -5
  89. package/lib/utils/calendar-utils.js +100 -100
  90. package/lib/utils/custom-scrollbar.js +272 -272
  91. package/lib/utils/flavor-sheet.js +14 -14
  92. package/lib/utils/icon-registry.js +127 -127
  93. package/lib/utils/loader-registry.js +3 -3
  94. package/lib/utils/locale.js +34 -34
  95. package/lib/utils/mobile.js +1 -1
  96. package/lib/utils/number-format.js +54 -54
  97. package/lib/utils/positioning.js +212 -212
  98. package/lib/utils/property-capture.js +36 -36
  99. package/lib/utils/property-manager.js +125 -125
  100. package/lib/utils/resize-observer.js +23 -23
  101. package/lib/utils/scroll-lock.js +57 -57
  102. package/lib/utils/styles.js +17 -17
  103. package/lib/version.d.ts +1 -1
  104. package/lib/version.js +1 -1
  105. package/package.json +4 -4
@@ -737,8 +737,14 @@ html:root,
737
737
  * --------------------------------------------------------------*/
738
738
  --ty-input-bg: var(--ty-surface-input);
739
739
  --ty-input-color: var(--ty-color-neutral-strong);
740
- --ty-input-border: var(--ty-color-neutral-faint);
741
- --ty-input-border-hover: var(--ty-color-neutral-soft);
740
+ /* Borders come from the BORDER family, not the neutral ink ramp: ink is
741
+ multiplied by --ty-neutral-l-factor (0.8 in dark), which crushed the
742
+ resting input border to L 0.24 against an L 0.18 input surface — half
743
+ the separation light gets (0.88 on 1.0). The border ladder is exempt
744
+ from that factor by design, and its own comments name these two as the
745
+ successors of neutral-faint / neutral-soft. */
746
+ --ty-input-border: var(--ty-border-soft);
747
+ --ty-input-border-hover: var(--ty-border);
742
748
  --ty-input-border-focus: var(--ty-color-primary);
743
749
  --ty-input-placeholder: var(--ty-color-neutral-soft);
744
750
  --ty-input-disabled-bg: var(--ty-color-neutral-faint);
@@ -751,6 +757,23 @@ html:root,
751
757
  );
752
758
  }
753
759
 
760
+ /* Dark takes the border family one rung harder than light. Genuine per-mode
761
+ DATA, not a formula duplicate: a small L delta at the dark end of an
762
+ emissive screen reads much weaker than the same delta mid-scale (the same
763
+ reason dark hover/active offsets are bigger — see Tier 5 dark), so light's
764
+ soft/base pair lands too quiet here. Dark uses base/bold instead.
765
+
766
+ Placed AFTER the block above on purpose: html.dark and html:root are both
767
+ (0,1,1), so source order is what decides this one — moving it up to the
768
+ dial block at the top of the file would lose the tie. */
769
+ html.dark,
770
+ html[data-theme="dark"],
771
+ [data-ty-theme].dark,
772
+ [data-ty-theme][data-theme="dark"] {
773
+ --ty-input-border: var(--ty-border);
774
+ --ty-input-border-hover: var(--ty-border-bold);
775
+ }
776
+
754
777
  /* ----------------------------------------------------------------
755
778
  * Tier 5 — SOLID (implementation)
756
779
  * Solid is its OWN system, NOT the text/emphasis ramp. The dials
package/css/tyrell.css CHANGED
@@ -382,12 +382,16 @@ DESIGN SYSTEM TOKENS
382
382
  ty-button's 4px ladder (see button.ts): field sm = button md (32px),
383
383
  field md = button lg (36px), field lg = button xl (40px) — a button
384
384
  and a field of the paired size sit flush, same height, in a row. */
385
+ --ty-size-xs: 1.75rem;
386
+ /* 28px */
385
387
  --ty-size-sm: 2rem;
386
388
  /* 32px */
387
389
  --ty-size-md: 2.25rem;
388
390
  /* 36px */
389
391
  --ty-size-lg: 2.5rem;
390
392
  /* 40px */
393
+ --ty-size-xl: 2.75rem;
394
+ /* 44px */
391
395
 
392
396
  /* Z-Index Scale */
393
397
  --ty-z-auto: auto;
@@ -1,316 +1 @@
1
- /* =================================================================
2
- Tyrell Static Colors — hardcoded fallback color tokens
3
-
4
- Every --ty-color-*, --ty-bg-{flavor}-*, --ty-border-*, --ty-surface-*,
5
- --ty-text-*, --ty-input-{color-related}-* and --ty-solid-* token tyrell.css
6
- used to hardcode directly, now split out here. Load this file alongside
7
- tyrell.css if you want static, no-theme-engine colors.
8
-
9
- If you want dynamic theming (custom seeds, live theme switching, per-flavor
10
- tuning), load tyrell-theme.css INSTEAD — it defines the same token names via
11
- oklch() formulas and, loaded after tyrell.css, wins by source order. Loading
12
- both is harmless (tyrell-theme.css always wins) but redundant.
13
- ================================================================= */
14
-
15
- html {
16
- /* Primary */
17
- --ty-color-primary-strong: #163793;
18
- --ty-color-primary-bold: #304c9f;
19
- --ty-color-primary: #466bce;
20
- --ty-color-primary-soft: #60a5fa;
21
- --ty-color-primary-faint: #93c5fd;
22
-
23
- /* Success */
24
- --ty-color-success-strong: #177858;
25
- --ty-color-success-bold: #3e9779;
26
- --ty-color-success: #3eaa86;
27
- --ty-color-success-soft: #64b399;
28
- --ty-color-success-faint: #7fd4b2;
29
-
30
- /* Danger */
31
- --ty-color-danger-strong: #b91c1c;
32
- --ty-color-danger-bold: #dc2626;
33
- --ty-color-danger: #ef4444;
34
- --ty-color-danger-soft: #f87171;
35
- --ty-color-danger-faint: #fca5a5;
36
-
37
- /* Warning */
38
- --ty-color-warning-strong: #e86400;
39
- --ty-color-warning-bold: #ee7f00;
40
- --ty-color-warning: #f59e0b;
41
- --ty-color-warning-soft: #fbbf24;
42
- --ty-color-warning-faint: #fcd34d;
43
-
44
- /* Neutral */
45
- --ty-color-neutral-strong: #000000;
46
- --ty-color-neutral-bold: #000000;
47
- --ty-color-neutral: #111827;
48
- --ty-color-neutral-soft: #374151;
49
- --ty-color-neutral-faint: #9ca3af;
50
-
51
- /* Semantic backgrounds */
52
- --ty-bg-primary: #e3eefc;
53
- --ty-bg-primary-bold: #d5e4f8;
54
- --ty-bg-primary-soft: #eff6ff;
55
- --ty-bg-success: #d1fae5;
56
- --ty-bg-success-bold: #a7f3d0;
57
- --ty-bg-success-soft: #ecfdf5;
58
- --ty-bg-danger: #fee2e2;
59
- --ty-bg-danger-bold: #fecaca;
60
- --ty-bg-danger-soft: #fef2f2;
61
- --ty-bg-warning: #fef3c7;
62
- --ty-bg-warning-bold: #fde68a;
63
- --ty-bg-warning-soft: #fffbeb;
64
- --ty-bg-neutral: #e0e0e0;
65
- --ty-bg-neutral-bold: #cecece;
66
- --ty-bg-neutral-soft: #ededed;
67
-
68
- /* Borders */
69
- --ty-border: #e5e7eb;
70
- --ty-border-bold: #d1d5db;
71
- --ty-border-strong: #6b7280;
72
- --ty-border-soft: #f3f4f6;
73
- --ty-border-faint: #fafafa;
74
-
75
- /* Semantic borders */
76
- --ty-border-primary: var(--ty-color-primary);
77
- --ty-border-success: var(--ty-color-success);
78
- --ty-border-danger: var(--ty-color-danger);
79
- --ty-border-warning: var(--ty-color-warning);
80
- --ty-border-neutral: var(--ty-color-neutral);
81
-
82
- /* Surfaces */
83
- --ty-surface-canvas: #fcfcfc;
84
- --ty-surface-content: #ffffff;
85
- --ty-surface-elevated: #ffffff;
86
- --ty-surface-floating: #ffffff;
87
- --ty-surface-input: #ffffff;
88
-
89
- /* Surface borders */
90
- --ty-elevated-border: #e5e7eb;
91
- --ty-floating-border: #e5e7eb;
92
- --ty-content-border: #e5e7eb;
93
-
94
- /* Text hierarchy */
95
- --ty-text: #111827;
96
- --ty-text-bold: #000000;
97
- --ty-text-strong: #000000;
98
- --ty-text-soft: #374151;
99
- --ty-text-faint: #9ca3af;
100
-
101
- /* Input component tokens */
102
- --ty-input-bg: #ffffff;
103
- --ty-input-color: #111827;
104
- --ty-input-border: #e5e7eb;
105
- --ty-input-border-hover: #d1d5db;
106
- --ty-input-border-focus: var(--ty-color-primary);
107
- --ty-input-shadow-focus: rgba(59, 130, 246, 0.1);
108
- --ty-input-placeholder: #9ca3af;
109
- --ty-input-disabled-bg: #f9fafb;
110
- --ty-input-disabled-border: #e5e7eb;
111
- --ty-input-disabled-color: #9ca3af;
112
-
113
- /* Input semantic state borders */
114
- --ty-input-success-border: var(--ty-color-success-soft);
115
- --ty-input-danger-border: var(--ty-color-danger-soft);
116
- --ty-input-warning-border: var(--ty-color-warning-soft);
117
-
118
- /* Solid button fills — Primary */
119
- --ty-solid-primary: #4076b9;
120
- --ty-solid-primary-strong: var(--ty-color-primary-bold);
121
- --ty-solid-primary-soft: #7ea7d9;
122
- --ty-solid-primary-hover: var(--ty-solid-primary-strong);
123
- --ty-solid-primary-active: var(--ty-solid-primary-strong);
124
- --ty-solid-primary-fg: white;
125
- --ty-solid-primary-strong-fg: white;
126
- --ty-solid-primary-soft-fg: black;
127
-
128
- /* Solid button fills — Success */
129
- --ty-solid-success: #3bb68d;
130
- --ty-solid-success-strong: #27956e;
131
- --ty-solid-success-soft: #69b99e;
132
- --ty-solid-success-hover: var(--ty-solid-success-strong);
133
- --ty-solid-success-active: var(--ty-solid-success-strong);
134
- --ty-solid-success-fg: black;
135
- --ty-solid-success-strong-fg: black;
136
- --ty-solid-success-soft-fg: black;
137
-
138
- /* Solid button fills — Danger */
139
- --ty-solid-danger: #df5b5b;
140
- --ty-solid-danger-strong: #cc3e3e;
141
- --ty-solid-danger-soft: #d57a7a;
142
- --ty-solid-danger-hover: var(--ty-solid-danger-strong);
143
- --ty-solid-danger-active: var(--ty-solid-danger-strong);
144
- --ty-solid-danger-fg: black;
145
- --ty-solid-danger-strong-fg: white;
146
- --ty-solid-danger-soft-fg: black;
147
-
148
- /* Solid button fills — Warning */
149
- --ty-solid-warning: #e1a644;
150
- --ty-solid-warning-strong: #f59e0b;
151
- --ty-solid-warning-soft: #fbc56d;
152
- --ty-solid-warning-hover: var(--ty-solid-warning-strong);
153
- --ty-solid-warning-active: var(--ty-solid-warning-strong);
154
- --ty-solid-warning-fg: black;
155
- --ty-solid-warning-strong-fg: black;
156
- --ty-solid-warning-soft-fg: black;
157
-
158
- /* Solid button fills — Neutral */
159
- --ty-solid-neutral: #414141;
160
- --ty-solid-neutral-strong: #000000;
161
- --ty-solid-neutral-soft: #6e6e6e;
162
- --ty-solid-neutral-hover: var(--ty-solid-neutral-strong);
163
- --ty-solid-neutral-active: var(--ty-solid-neutral-strong);
164
- --ty-solid-neutral-fg: white;
165
- --ty-solid-neutral-strong-fg: white;
166
- --ty-solid-neutral-soft-fg: white;
167
-
168
- }
169
-
170
- /* =================================================================
171
- DARK THEME OVERRIDES
172
- ================================================================= */
173
-
174
- html.dark,
175
- html[data-theme="dark"] {
176
- /* Primary */
177
- --ty-color-primary-strong: #9cbde5;
178
- --ty-color-primary-bold: #6c9bd5;
179
- --ty-color-primary: #4976ae;
180
- --ty-color-primary-soft: #4b698b;
181
- --ty-color-primary-faint: #445b77;
182
-
183
- /* Success */
184
- --ty-color-success-strong: #c2f0df;
185
- --ty-color-success-bold: #6ee7b7;
186
- --ty-color-success: #3aba8b;
187
- --ty-color-success-soft: #459679;
188
- --ty-color-success-faint: #1b795c;
189
-
190
- /* Danger */
191
- --ty-color-danger-strong: #ffabab;
192
- --ty-color-danger-bold: #e58787;
193
- --ty-color-danger: #d06f6f;
194
- --ty-color-danger-soft: #b06666;
195
- --ty-color-danger-faint: #aa6e6e;
196
-
197
- /* Warning */
198
- --ty-color-warning-strong: #fde68a;
199
- --ty-color-warning-bold: #fcd34d;
200
- --ty-color-warning: #fbbf24;
201
- --ty-color-warning-soft: #f59e0b;
202
- --ty-color-warning-faint: #a06726;
203
-
204
- /* Neutral */
205
- --ty-color-neutral-strong: #ffffff;
206
- --ty-color-neutral-bold: #f9fafb;
207
- --ty-color-neutral: #d6d6d6;
208
- --ty-color-neutral-soft: #696969;
209
- --ty-color-neutral-faint: #474747;
210
-
211
- /* Semantic backgrounds */
212
- --ty-bg-primary: #394159;
213
- --ty-bg-primary-bold: #43517a;
214
- --ty-bg-primary-soft: #323a4f;
215
- --ty-bg-success: #3a4442;
216
- --ty-bg-success-bold: #405752;
217
- --ty-bg-success-soft: #2f3b38;
218
- --ty-bg-danger: #522828;
219
- --ty-bg-danger-bold: #853535;
220
- --ty-bg-danger-soft: #483c3c;
221
- --ty-bg-warning: #694555;
222
- --ty-bg-warning-bold: #743953;
223
- --ty-bg-warning-soft: #45333b;
224
- --ty-bg-neutral: #323232;
225
- --ty-bg-neutral-bold: #414141;
226
- --ty-bg-neutral-soft: #242424;
227
-
228
- /* Borders */
229
- --ty-border: #3e3e3e;
230
- --ty-border-bold: #666666;
231
- --ty-border-strong: #8c8c8c;
232
- --ty-border-soft: #1f2937;
233
- --ty-border-faint: #030712;
234
-
235
- /* Surfaces */
236
- --ty-surface-canvas: black;
237
- --ty-surface-content: #1a1a1a;
238
- --ty-surface-elevated: #282828;
239
- --ty-surface-floating: #343434;
240
- --ty-surface-input: #1f2937;
241
-
242
- /* Surface borders */
243
- --ty-elevated-border: #414141;
244
- --ty-floating-border: #494949;
245
- --ty-content-border: #030712;
246
-
247
- /* Text hierarchy */
248
- --ty-text: #d6d6d6;
249
- --ty-text-bold: #f9fafb;
250
- --ty-text-strong: #ffffff;
251
- --ty-text-soft: #7f8590;
252
- --ty-text-faint: #555a63;
253
-
254
- /* Input component tokens */
255
- --ty-input-bg: #1b1b1b;
256
- --ty-input-color: #f9fafb;
257
- --ty-input-border: #3a3a3a;
258
- --ty-input-border-hover: #505050;
259
- --ty-input-border-focus: var(--ty-color-primary);
260
- --ty-input-shadow-focus: rgba(96, 165, 250, 0.1);
261
- --ty-input-placeholder: #717171;
262
- --ty-input-disabled-bg: #282828;
263
- --ty-input-disabled-border: #2e2e2e;
264
- --ty-input-disabled-color: #717171;
265
-
266
- /* Solid button fills — Primary */
267
- --ty-solid-primary: #3e536c;
268
- --ty-solid-primary-strong: #426084;
269
- --ty-solid-primary-soft: #343f4c;
270
- --ty-solid-primary-hover: var(--ty-solid-primary-strong);
271
- --ty-solid-primary-active: var(--ty-solid-primary-strong);
272
- --ty-solid-primary-fg: white;
273
- --ty-solid-primary-strong-fg: white;
274
- --ty-solid-primary-soft-fg: white;
275
-
276
- /* Solid button fills — Success */
277
- --ty-solid-success: #3bb68d;
278
- --ty-solid-success-strong: #459679;
279
- --ty-solid-success-soft: #285748;
280
- --ty-solid-success-hover: var(--ty-solid-success-strong);
281
- --ty-solid-success-active: var(--ty-solid-success-strong);
282
- --ty-solid-success-fg: black;
283
- --ty-solid-success-strong-fg: black;
284
- --ty-solid-success-soft-fg: white;
285
-
286
- /* Solid button fills — Danger */
287
- --ty-solid-danger: #df5b5b;
288
- --ty-solid-danger-strong: #cc3e3e;
289
- --ty-solid-danger-soft: #875656;
290
- --ty-solid-danger-hover: var(--ty-solid-danger-strong);
291
- --ty-solid-danger-active: var(--ty-solid-danger-strong);
292
- --ty-solid-danger-fg: black;
293
- --ty-solid-danger-strong-fg: white;
294
- --ty-solid-danger-soft-fg: white;
295
-
296
- /* Solid button fills — Warning */
297
- --ty-solid-warning: #e1a644;
298
- --ty-solid-warning-strong: #f59e0b;
299
- --ty-solid-warning-soft: #8b6334;
300
- --ty-solid-warning-hover: var(--ty-solid-warning-strong);
301
- --ty-solid-warning-active: var(--ty-solid-warning-strong);
302
- --ty-solid-warning-fg: black;
303
- --ty-solid-warning-strong-fg: black;
304
- --ty-solid-warning-soft-fg: white;
305
-
306
- /* Solid button fills — Neutral */
307
- --ty-solid-neutral: #414141;
308
- --ty-solid-neutral-strong: #f5f5f5;
309
- --ty-solid-neutral-soft: #2a2a2a;
310
- --ty-solid-neutral-hover: #4c4c4c;
311
- --ty-solid-neutral-active: #4c4c4c;
312
- --ty-solid-neutral-fg: white;
313
- --ty-solid-neutral-strong-fg: black;
314
- --ty-solid-neutral-soft-fg: white;
315
-
316
- }
1
+ html{--ty-color-primary-strong: #163793;--ty-color-primary-bold: #304c9f;--ty-color-primary: #466bce;--ty-color-primary-soft: #60a5fa;--ty-color-primary-faint: #93c5fd;--ty-color-success-strong: #177858;--ty-color-success-bold: #3e9779;--ty-color-success: #3eaa86;--ty-color-success-soft: #64b399;--ty-color-success-faint: #7fd4b2;--ty-color-danger-strong: #b91c1c;--ty-color-danger-bold: #dc2626;--ty-color-danger: #ef4444;--ty-color-danger-soft: #f87171;--ty-color-danger-faint: #fca5a5;--ty-color-warning-strong: #e86400;--ty-color-warning-bold: #ee7f00;--ty-color-warning: #f59e0b;--ty-color-warning-soft: #fbbf24;--ty-color-warning-faint: #fcd34d;--ty-color-neutral-strong: #000000;--ty-color-neutral-bold: #000000;--ty-color-neutral: #111827;--ty-color-neutral-soft: #374151;--ty-color-neutral-faint: #9ca3af;--ty-bg-primary: #e3eefc;--ty-bg-primary-bold: #d5e4f8;--ty-bg-primary-soft: #eff6ff;--ty-bg-success: #d1fae5;--ty-bg-success-bold: #a7f3d0;--ty-bg-success-soft: #ecfdf5;--ty-bg-danger: #fee2e2;--ty-bg-danger-bold: #fecaca;--ty-bg-danger-soft: #fef2f2;--ty-bg-warning: #fef3c7;--ty-bg-warning-bold: #fde68a;--ty-bg-warning-soft: #fffbeb;--ty-bg-neutral: #e0e0e0;--ty-bg-neutral-bold: #cecece;--ty-bg-neutral-soft: #ededed;--ty-border: #e5e7eb;--ty-border-bold: #d1d5db;--ty-border-strong: #6b7280;--ty-border-soft: #f3f4f6;--ty-border-faint: #fafafa;--ty-border-primary: var(--ty-color-primary);--ty-border-success: var(--ty-color-success);--ty-border-danger: var(--ty-color-danger);--ty-border-warning: var(--ty-color-warning);--ty-border-neutral: var(--ty-color-neutral);--ty-surface-canvas: #fcfcfc;--ty-surface-content: #ffffff;--ty-surface-elevated: #ffffff;--ty-surface-floating: #ffffff;--ty-surface-input: #ffffff;--ty-elevated-border: #e5e7eb;--ty-floating-border: #e5e7eb;--ty-content-border: #e5e7eb;--ty-text: #111827;--ty-text-bold: #000000;--ty-text-strong: #000000;--ty-text-soft: #374151;--ty-text-faint: #9ca3af;--ty-input-bg: #ffffff;--ty-input-color: #111827;--ty-input-border: #e5e7eb;--ty-input-border-hover: #d1d5db;--ty-input-border-focus: var(--ty-color-primary);--ty-input-shadow-focus: rgba(59, 130, 246, .1);--ty-input-placeholder: #9ca3af;--ty-input-disabled-bg: #f9fafb;--ty-input-disabled-border: #e5e7eb;--ty-input-disabled-color: #9ca3af;--ty-input-success-border: var(--ty-color-success-soft);--ty-input-danger-border: var(--ty-color-danger-soft);--ty-input-warning-border: var(--ty-color-warning-soft);--ty-solid-primary: #4076b9;--ty-solid-primary-strong: var(--ty-color-primary-bold);--ty-solid-primary-soft: #7ea7d9;--ty-solid-primary-hover: var(--ty-solid-primary-strong);--ty-solid-primary-active: var(--ty-solid-primary-strong);--ty-solid-primary-fg: white;--ty-solid-primary-strong-fg: white;--ty-solid-primary-soft-fg: black;--ty-solid-success: #3bb68d;--ty-solid-success-strong: #27956e;--ty-solid-success-soft: #69b99e;--ty-solid-success-hover: var(--ty-solid-success-strong);--ty-solid-success-active: var(--ty-solid-success-strong);--ty-solid-success-fg: black;--ty-solid-success-strong-fg: black;--ty-solid-success-soft-fg: black;--ty-solid-danger: #df5b5b;--ty-solid-danger-strong: #cc3e3e;--ty-solid-danger-soft: #d57a7a;--ty-solid-danger-hover: var(--ty-solid-danger-strong);--ty-solid-danger-active: var(--ty-solid-danger-strong);--ty-solid-danger-fg: black;--ty-solid-danger-strong-fg: white;--ty-solid-danger-soft-fg: black;--ty-solid-warning: #e1a644;--ty-solid-warning-strong: #f59e0b;--ty-solid-warning-soft: #fbc56d;--ty-solid-warning-hover: var(--ty-solid-warning-strong);--ty-solid-warning-active: var(--ty-solid-warning-strong);--ty-solid-warning-fg: black;--ty-solid-warning-strong-fg: black;--ty-solid-warning-soft-fg: black;--ty-solid-neutral: #414141;--ty-solid-neutral-strong: #000000;--ty-solid-neutral-soft: #6e6e6e;--ty-solid-neutral-hover: var(--ty-solid-neutral-strong);--ty-solid-neutral-active: var(--ty-solid-neutral-strong);--ty-solid-neutral-fg: white;--ty-solid-neutral-strong-fg: white;--ty-solid-neutral-soft-fg: white}html.dark,html[data-theme=dark]{--ty-color-primary-strong: #9cbde5;--ty-color-primary-bold: #6c9bd5;--ty-color-primary: #4976ae;--ty-color-primary-soft: #4b698b;--ty-color-primary-faint: #445b77;--ty-color-success-strong: #c2f0df;--ty-color-success-bold: #6ee7b7;--ty-color-success: #3aba8b;--ty-color-success-soft: #459679;--ty-color-success-faint: #1b795c;--ty-color-danger-strong: #ffabab;--ty-color-danger-bold: #e58787;--ty-color-danger: #d06f6f;--ty-color-danger-soft: #b06666;--ty-color-danger-faint: #aa6e6e;--ty-color-warning-strong: #fde68a;--ty-color-warning-bold: #fcd34d;--ty-color-warning: #fbbf24;--ty-color-warning-soft: #f59e0b;--ty-color-warning-faint: #a06726;--ty-color-neutral-strong: #ffffff;--ty-color-neutral-bold: #f9fafb;--ty-color-neutral: #d6d6d6;--ty-color-neutral-soft: #696969;--ty-color-neutral-faint: #474747;--ty-bg-primary: #394159;--ty-bg-primary-bold: #43517a;--ty-bg-primary-soft: #323a4f;--ty-bg-success: #3a4442;--ty-bg-success-bold: #405752;--ty-bg-success-soft: #2f3b38;--ty-bg-danger: #522828;--ty-bg-danger-bold: #853535;--ty-bg-danger-soft: #483c3c;--ty-bg-warning: #694555;--ty-bg-warning-bold: #743953;--ty-bg-warning-soft: #45333b;--ty-bg-neutral: #323232;--ty-bg-neutral-bold: #414141;--ty-bg-neutral-soft: #242424;--ty-border: #3e3e3e;--ty-border-bold: #666666;--ty-border-strong: #8c8c8c;--ty-border-soft: #1f2937;--ty-border-faint: #030712;--ty-surface-canvas: black;--ty-surface-content: #1a1a1a;--ty-surface-elevated: #282828;--ty-surface-floating: #343434;--ty-surface-input: #1f2937;--ty-elevated-border: #414141;--ty-floating-border: #494949;--ty-content-border: #030712;--ty-text: #d6d6d6;--ty-text-bold: #f9fafb;--ty-text-strong: #ffffff;--ty-text-soft: #7f8590;--ty-text-faint: #555a63;--ty-input-bg: #1b1b1b;--ty-input-color: #f9fafb;--ty-input-border: #3a3a3a;--ty-input-border-hover: #505050;--ty-input-border-focus: var(--ty-color-primary);--ty-input-shadow-focus: rgba(96, 165, 250, .1);--ty-input-placeholder: #717171;--ty-input-disabled-bg: #282828;--ty-input-disabled-border: #2e2e2e;--ty-input-disabled-color: #717171;--ty-solid-primary: #3e536c;--ty-solid-primary-strong: #426084;--ty-solid-primary-soft: #343f4c;--ty-solid-primary-hover: var(--ty-solid-primary-strong);--ty-solid-primary-active: var(--ty-solid-primary-strong);--ty-solid-primary-fg: white;--ty-solid-primary-strong-fg: white;--ty-solid-primary-soft-fg: white;--ty-solid-success: #3bb68d;--ty-solid-success-strong: #459679;--ty-solid-success-soft: #285748;--ty-solid-success-hover: var(--ty-solid-success-strong);--ty-solid-success-active: var(--ty-solid-success-strong);--ty-solid-success-fg: black;--ty-solid-success-strong-fg: black;--ty-solid-success-soft-fg: white;--ty-solid-danger: #df5b5b;--ty-solid-danger-strong: #cc3e3e;--ty-solid-danger-soft: #875656;--ty-solid-danger-hover: var(--ty-solid-danger-strong);--ty-solid-danger-active: var(--ty-solid-danger-strong);--ty-solid-danger-fg: black;--ty-solid-danger-strong-fg: white;--ty-solid-danger-soft-fg: white;--ty-solid-warning: #e1a644;--ty-solid-warning-strong: #f59e0b;--ty-solid-warning-soft: #8b6334;--ty-solid-warning-hover: var(--ty-solid-warning-strong);--ty-solid-warning-active: var(--ty-solid-warning-strong);--ty-solid-warning-fg: black;--ty-solid-warning-strong-fg: black;--ty-solid-warning-soft-fg: white;--ty-solid-neutral: #414141;--ty-solid-neutral-strong: #f5f5f5;--ty-solid-neutral-soft: #2a2a2a;--ty-solid-neutral-hover: #4c4c4c;--ty-solid-neutral-active: #4c4c4c;--ty-solid-neutral-fg: white;--ty-solid-neutral-strong-fg: black;--ty-solid-neutral-soft-fg: white}