@tangible/ui 0.0.2 → 0.0.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 (64) hide show
  1. package/README.md +21 -13
  2. package/components/Accordion/Accordion.d.ts +1 -1
  3. package/components/Accordion/Accordion.js +3 -3
  4. package/components/Accordion/types.d.ts +8 -1
  5. package/components/Avatar/Avatar.js +16 -7
  6. package/components/Avatar/AvatarGroup.js +7 -5
  7. package/components/Avatar/types.d.ts +11 -0
  8. package/components/Button/Button.js +10 -3
  9. package/components/Button/types.d.ts +9 -1
  10. package/components/Card/Card.js +26 -13
  11. package/components/Checkbox/Checkbox.d.ts +1 -1
  12. package/components/Chip/Chip.d.ts +37 -1
  13. package/components/Chip/Chip.js +10 -8
  14. package/components/ChipGroup/ChipGroup.js +5 -4
  15. package/components/ChipGroup/types.d.ts +3 -0
  16. package/components/Dropdown/Dropdown.d.ts +19 -1
  17. package/components/Dropdown/Dropdown.js +84 -28
  18. package/components/Dropdown/index.d.ts +2 -2
  19. package/components/Dropdown/index.js +1 -1
  20. package/components/Dropdown/types.d.ts +15 -0
  21. package/components/IconButton/IconButton.js +5 -4
  22. package/components/IconButton/index.d.ts +1 -1
  23. package/components/IconButton/types.d.ts +24 -4
  24. package/components/Modal/Modal.d.ts +16 -2
  25. package/components/Modal/Modal.js +45 -20
  26. package/components/MoveHandle/MoveHandle.d.ts +2 -0
  27. package/components/MoveHandle/MoveHandle.js +84 -0
  28. package/components/MoveHandle/index.d.ts +2 -0
  29. package/components/MoveHandle/index.js +1 -0
  30. package/components/MoveHandle/types.d.ts +53 -0
  31. package/components/MoveHandle/types.js +1 -0
  32. package/components/Notice/Notice.js +32 -19
  33. package/components/Select/Select.js +6 -2
  34. package/components/Sidebar/Sidebar.d.ts +6 -1
  35. package/components/Sidebar/Sidebar.js +65 -11
  36. package/components/Sidebar/index.d.ts +1 -1
  37. package/components/Sidebar/types.d.ts +39 -14
  38. package/components/Tabs/Tabs.d.ts +1 -1
  39. package/components/Tabs/Tabs.js +12 -3
  40. package/components/Tabs/types.d.ts +20 -5
  41. package/components/TextInput/TextInput.js +10 -2
  42. package/components/Tooltip/Tooltip.d.ts +2 -2
  43. package/components/Tooltip/Tooltip.js +61 -40
  44. package/components/Tooltip/index.d.ts +1 -1
  45. package/components/Tooltip/types.d.ts +28 -1
  46. package/components/index.d.ts +4 -2
  47. package/components/index.js +2 -1
  48. package/icons/icons.svg +1 -0
  49. package/icons/manifest.json +8 -0
  50. package/icons/registry.d.ts +2 -0
  51. package/icons/registry.js +1 -0
  52. package/icons/system/index.d.ts +2 -0
  53. package/icons/system/index.js +11 -0
  54. package/package.json +1 -1
  55. package/styles/all.css +1 -1
  56. package/styles/all.expanded.css +961 -97
  57. package/styles/all.expanded.unlayered.css +961 -97
  58. package/styles/all.unlayered.css +1 -1
  59. package/styles/components/_bundle.scss +2 -0
  60. package/styles/index.scss +5 -0
  61. package/styles/system/_control.scss +18 -3
  62. package/styles/system/_tokens.scss +119 -2
  63. package/tui-manifest.json +526 -88
  64. package/utils/focus-trap.js +8 -1
@@ -1,3 +1,4 @@
1
+ @charset "UTF-8";
1
2
  @keyframes tui-fadeFromOpaque {
2
3
  from {
3
4
  opacity: 1;
@@ -29,6 +30,21 @@
29
30
  --tui-accordion-trigger-hover
30
31
  */
31
32
  /* @tui-tokens
33
+ --tui-avatar-size
34
+ --tui-avatar-radius
35
+ --tui-avatar-bg
36
+ --tui-avatar-fg
37
+ --tui-avatar-border
38
+ --tui-avatar-indicator-bg
39
+ --tui-avatar-indicator-fg
40
+ --tui-avatar-overflow-bg
41
+ --tui-avatar-overflow-fg
42
+ --tui-avatar-group-overlap
43
+ --tui-avatar-group-gap
44
+ --tui-avatar-group-border-width
45
+ --tui-avatar-group-border-color
46
+ */
47
+ /* @tui-tokens
32
48
  --tui-button-bg
33
49
  --tui-button-fg
34
50
  --tui-button-border
@@ -36,6 +52,10 @@
36
52
  --tui-button-bg-interact
37
53
  --tui-button-fg-interact
38
54
  --tui-button-border-interact
55
+ --tui-button-fg-active
56
+ --tui-control-height-sm
57
+ --tui-control-height-md
58
+ --tui-control-height-lg
39
59
  */
40
60
  /* @tui-tokens
41
61
  --tui-card-bg
@@ -48,12 +68,99 @@
48
68
  --tui-card-foot-basis
49
69
  */
50
70
  /* @tui-tokens
71
+ --tui-input-accent
72
+ */
73
+ /* @tui-tokens
74
+ --tui-chip-bg
75
+ --tui-chip-fg
76
+ --tui-chip-border
77
+ --tui-chip-icon
78
+ --tui-chip-radius
79
+ --tui-chip-selected-ring
80
+ */
81
+ /* @tui-tokens
82
+ --tui-chip-group-gap
83
+ */
84
+ /* @tui-tokens
85
+ --tui-combobox-input-bg
86
+ --tui-combobox-input-fg
87
+ --tui-combobox-input-border
88
+ --tui-combobox-input-border-focus
89
+ --tui-combobox-input-radius
90
+ --tui-combobox-content-bg
91
+ --tui-combobox-content-border
92
+ --tui-combobox-content-shadow
93
+ --tui-combobox-content-radius
94
+ --tui-combobox-option-bg-hover
95
+ --tui-combobox-option-bg-selected
96
+ */
97
+ /* @tui-tokens
98
+ --tui-content-indicator-bg
99
+ --tui-content-indicator-border
100
+ --tui-content-indicator-fg
101
+ */
102
+ /* @tui-tokens
103
+ --tui-dropdown-bg
104
+ --tui-dropdown-fg
105
+ --tui-dropdown-radius
106
+ --tui-dropdown-shadow
107
+ --tui-dropdown-border
108
+ --tui-dropdown-z
109
+ --tui-dropdown-min-width
110
+ --tui-dropdown-item-bg-hover
111
+ --tui-dropdown-item-bg-active
112
+ */
113
+ /* @tui-tokens
51
114
  --tui-field-gap
52
115
  --tui-field-label-fg
53
116
  --tui-field-helper-fg
54
117
  --tui-field-error-fg
55
118
  */
56
119
  /* @tui-tokens
120
+ --tui-multiselect-trigger-bg
121
+ --tui-multiselect-trigger-fg
122
+ --tui-multiselect-trigger-border
123
+ --tui-multiselect-trigger-border-focus
124
+ --tui-multiselect-trigger-radius
125
+ --tui-multiselect-content-bg
126
+ --tui-multiselect-content-border
127
+ --tui-multiselect-content-shadow
128
+ --tui-multiselect-content-radius
129
+ --tui-multiselect-option-bg-hover
130
+ --tui-multiselect-option-bg-selected
131
+ --tui-multiselect-chip-bg
132
+ --tui-multiselect-chip-fg
133
+ */
134
+ /* @tui-tokens
135
+ --tui-select-trigger-bg
136
+ --tui-select-trigger-fg
137
+ --tui-select-trigger-border
138
+ --tui-select-trigger-border-focus
139
+ --tui-select-trigger-radius
140
+ --tui-select-content-bg
141
+ --tui-select-content-border
142
+ --tui-select-content-shadow
143
+ --tui-select-content-radius
144
+ --tui-select-option-bg-hover
145
+ --tui-select-option-bg-selected
146
+ */
147
+ /* @tui-tokens
148
+ --tui-icon-size-xs
149
+ --tui-icon-size-sm
150
+ --tui-icon-size-md
151
+ --tui-icon-size-lg
152
+ --tui-icon-size-xl
153
+ --tui-icon-size-xxl
154
+ */
155
+ /* @tui-tokens
156
+ --tui-icon-button-bg
157
+ --tui-icon-button-fg
158
+ --tui-icon-button-border
159
+ --tui-icon-button-radius
160
+ --tui-icon-button-bg-interact
161
+ --tui-icon-button-fg-interact
162
+ */
163
+ /* @tui-tokens
57
164
  --tui-modal-z
58
165
  --tui-modal-max
59
166
  --tui-modal-backdrop
@@ -64,15 +171,89 @@
64
171
  --tui-modal-shadow
65
172
  */
66
173
  /* @tui-tokens
174
+ --tui-move-handle-size
175
+ --tui-move-handle-icon-size
176
+ */
177
+ /* @tui-tokens
67
178
  --tui-notice-bg
68
179
  --tui-notice-border
69
180
  --tui-notice-stripe
181
+ --tui-notice-stripe-width
70
182
  --tui-notice-fg
71
183
  --tui-notice-radius
72
184
  --tui-notice-padding
73
185
  --tui-notice-foot-basis
74
186
  */
75
187
  /* @tui-tokens
188
+ --tui-overlap-stack-overlap
189
+ --tui-overlap-stack-overflow-bg
190
+ --tui-overlap-stack-overflow-fg
191
+ --tui-overlap-stack-item-radius
192
+ --tui-overlap-stack-border-width
193
+ --tui-overlap-stack-border-color
194
+ */
195
+ /* @tui-tokens
196
+ --tui-pager-gap
197
+ */
198
+ /* @tui-tokens
199
+ --tui-radio-accent
200
+ */
201
+ /* @tui-tokens
202
+ --tui-rating-active
203
+ --tui-rating-inactive
204
+ --tui-rating-scale
205
+ */
206
+ /* @tui-tokens
207
+ --tui-progress-track
208
+ --tui-progress-fill
209
+ --tui-progress-label
210
+ --tui-progress-radius
211
+ --tui-progress-z1-fill
212
+ --tui-progress-z2-fill
213
+ --tui-progress-z3-fill
214
+ --tui-progress-z4-fill
215
+ --tui-progress-z5-fill
216
+ */
217
+ /* @tui-tokens
218
+ --tui-segmented-gap
219
+ --tui-segmented-padding
220
+ --tui-segmented-radius
221
+ --tui-segmented-bg
222
+ --tui-segmented-border
223
+ --tui-segmented-item-padding
224
+ --tui-segmented-item-radius
225
+ --tui-segmented-item-fg
226
+ --tui-segmented-item-bg-active
227
+ --tui-segmented-item-fg-active
228
+ */
229
+ /* @tui-tokens
230
+ --tui-switch-accent
231
+ --tui-switch-track-off
232
+ */
233
+ /* @tui-tokens
234
+ --tui-sidebar-width
235
+ --tui-sidebar-bg
236
+ --tui-sidebar-border
237
+ --tui-sidebar-padding
238
+ --tui-sidebar-z
239
+ */
240
+ /* @tui-tokens: none — inherits --tui-progress-track, --tui-progress-fill */
241
+ /* @tui-tokens
242
+ --tui-steplist-gap
243
+ --tui-steplist-padding
244
+ --tui-steplist-radius
245
+ --tui-steplist-current-bg
246
+ --tui-steplist-current-border
247
+ --tui-steplist-hover-bg
248
+ */
249
+ /* @tui-tokens
250
+ --tui-table-border
251
+ --tui-table-bg
252
+ --tui-table-bg-head
253
+ --tui-table-fg
254
+ --tui-table-padding
255
+ */
256
+ /* @tui-tokens
76
257
  --tui-tabs-gap
77
258
  --tui-tabs-list-bg
78
259
  --tui-tabs-list-padding
@@ -88,6 +269,20 @@
88
269
  --tui-tabs-indicator
89
270
  --tui-tabs-indicator-size
90
271
  */
272
+ /* @tui-tokens: none — inherits from input (--tui-input-*) */
273
+ /* @tui-tokens
274
+ --tui-input-group-gap
275
+ */
276
+ /* @tui-tokens
277
+ --tui-toolbar-gap
278
+ --tui-toolbar-padding
279
+ */
280
+ /* @tui-tokens
281
+ --tui-tooltip-bg
282
+ --tui-tooltip-fg
283
+ --tui-tooltip-radius
284
+ --tui-tooltip-z
285
+ */
91
286
  @layer resets, defaults, components, utilities;
92
287
  :where(.tui-interface) {
93
288
  /* UA chrome: native controls, scrollbars render in light mode */
@@ -105,6 +300,8 @@
105
300
  --tui-focus-ring-width: 2px;
106
301
  --tui-focus-ring-offset: 2px;
107
302
  --tui-focus-ring-color: #2563eb;
303
+ /* Font Weight */
304
+ --tui-font-weight-medium: 500;
108
305
  /* Border */
109
306
  --tui-border-width: 1px;
110
307
  /* Z-Index Layers */
@@ -119,6 +316,7 @@
119
316
  /* Neutral: surfaces */
120
317
  --tui-color-bg: #fff;
121
318
  --tui-color-bg-surface: #fafafa;
319
+ --tui-color-bg-muted: #F3F4F6;
122
320
  --tui-color-bg-elevated: #fff;
123
321
  --tui-color-bg-inverted: #111928;
124
322
  --tui-color-bg-overlay: rgba(0, 0, 0, var(--tui-opacity-backdrop));
@@ -189,7 +387,8 @@
189
387
  /* Backgrounds */
190
388
  --tui-color-bg: #111928;
191
389
  --tui-color-bg-surface: #202836;
192
- --tui-color-bg-elevated: #374151;
390
+ --tui-color-bg-muted: #374151;
391
+ --tui-color-bg-elevated: #111928;
193
392
  --tui-color-bg-inverted: #F9FAFB;
194
393
  --tui-color-bg-overlay: rgba(0, 0, 0, 0.7);
195
394
  /* Text */
@@ -243,7 +442,8 @@
243
442
  /* Backgrounds */
244
443
  --tui-color-bg: #111928;
245
444
  --tui-color-bg-surface: #202836;
246
- --tui-color-bg-elevated: #374151;
445
+ --tui-color-bg-muted: #374151;
446
+ --tui-color-bg-elevated: #111928;
247
447
  --tui-color-bg-inverted: #F9FAFB;
248
448
  --tui-color-bg-overlay: rgba(0, 0, 0, 0.7);
249
449
  /* Text */
@@ -290,6 +490,96 @@
290
490
  --tui-shadow-color: 0, 0, 0;
291
491
  }
292
492
  }
493
+ :where(.tui-interface) {
494
+ /* Accent: section (fallback → warning) */
495
+ --tui-theme-section-base: var(--tui-theme-warning-base);
496
+ --tui-theme-section-soft: var(--tui-theme-warning-subtle);
497
+ --tui-theme-section-border: var(--tui-theme-warning-soft);
498
+ --tui-theme-section-on-base: var(--tui-color-fg-on-accent);
499
+ --tui-theme-section-on-soft: var(--tui-color-fg);
500
+ /* Accent: page (fallback → primary) */
501
+ --tui-theme-page-base: var(--tui-theme-primary-base);
502
+ --tui-theme-page-soft: var(--tui-theme-primary-subtle);
503
+ --tui-theme-page-border: var(--tui-theme-primary-soft);
504
+ --tui-theme-page-on-base: var(--tui-color-fg-on-accent);
505
+ --tui-theme-page-on-soft: var(--tui-color-fg);
506
+ /* Accent: step (fallback → info) */
507
+ --tui-theme-step-base: var(--tui-theme-info-base);
508
+ --tui-theme-step-soft: var(--tui-theme-info-subtle);
509
+ --tui-theme-step-border: var(--tui-theme-info-soft);
510
+ --tui-theme-step-on-base: var(--tui-color-fg-on-accent);
511
+ --tui-theme-step-on-soft: var(--tui-color-fg);
512
+ }
513
+
514
+ @supports (color: oklch(50% 0.1 0deg)) {
515
+ :where(.tui-interface) {
516
+ /* Accent: section (OKLCH c=0.17 h=55) */
517
+ --tui-palette-section-c: 0.17;
518
+ --tui-palette-section-h: 55;
519
+ --tui-theme-section-base: oklch(0.62 var(--tui-palette-section-c) var(--tui-palette-section-h));
520
+ --tui-theme-section-soft: oklch(0.92 calc(var(--tui-palette-section-c) * 0.55) var(--tui-palette-section-h));
521
+ --tui-theme-section-border: oklch(0.80 calc(var(--tui-palette-section-c) * 0.45) var(--tui-palette-section-h));
522
+ --tui-theme-section-on-base: oklch(0.98 0 0);
523
+ --tui-theme-section-on-soft: var(--tui-color-fg);
524
+ /* Accent: page (OKLCH c=0.15 h=280) */
525
+ --tui-palette-page-c: 0.15;
526
+ --tui-palette-page-h: 280;
527
+ --tui-theme-page-base: oklch(0.62 var(--tui-palette-page-c) var(--tui-palette-page-h));
528
+ --tui-theme-page-soft: oklch(0.92 calc(var(--tui-palette-page-c) * 0.55) var(--tui-palette-page-h));
529
+ --tui-theme-page-border: oklch(0.80 calc(var(--tui-palette-page-c) * 0.45) var(--tui-palette-page-h));
530
+ --tui-theme-page-on-base: oklch(0.98 0 0);
531
+ --tui-theme-page-on-soft: var(--tui-color-fg);
532
+ /* Accent: step (OKLCH c=0.14 h=200) */
533
+ --tui-palette-step-c: 0.14;
534
+ --tui-palette-step-h: 200;
535
+ --tui-theme-step-base: oklch(0.62 var(--tui-palette-step-c) var(--tui-palette-step-h));
536
+ --tui-theme-step-soft: oklch(0.92 calc(var(--tui-palette-step-c) * 0.55) var(--tui-palette-step-h));
537
+ --tui-theme-step-border: oklch(0.80 calc(var(--tui-palette-step-c) * 0.45) var(--tui-palette-step-h));
538
+ --tui-theme-step-on-base: oklch(0.98 0 0);
539
+ --tui-theme-step-on-soft: var(--tui-color-fg);
540
+ }
541
+ }
542
+ @supports (color: oklch(50% 0.1 0deg)) {
543
+ :where(.tui-interface)[data-theme=dark] {
544
+ --tui-theme-section-base: oklch(0.72 var(--tui-palette-section-c) var(--tui-palette-section-h));
545
+ --tui-theme-section-soft: oklch(0.30 calc(var(--tui-palette-section-c) * 0.35) var(--tui-palette-section-h));
546
+ --tui-theme-section-border: oklch(0.38 calc(var(--tui-palette-section-c) * 0.30) var(--tui-palette-section-h));
547
+ --tui-theme-section-on-base: oklch(0.18 0 0);
548
+ --tui-theme-section-on-soft: var(--tui-color-fg);
549
+ --tui-theme-page-base: oklch(0.72 var(--tui-palette-page-c) var(--tui-palette-page-h));
550
+ --tui-theme-page-soft: oklch(0.30 calc(var(--tui-palette-page-c) * 0.35) var(--tui-palette-page-h));
551
+ --tui-theme-page-border: oklch(0.38 calc(var(--tui-palette-page-c) * 0.30) var(--tui-palette-page-h));
552
+ --tui-theme-page-on-base: oklch(0.18 0 0);
553
+ --tui-theme-page-on-soft: var(--tui-color-fg);
554
+ --tui-theme-step-base: oklch(0.72 var(--tui-palette-step-c) var(--tui-palette-step-h));
555
+ --tui-theme-step-soft: oklch(0.30 calc(var(--tui-palette-step-c) * 0.35) var(--tui-palette-step-h));
556
+ --tui-theme-step-border: oklch(0.38 calc(var(--tui-palette-step-c) * 0.30) var(--tui-palette-step-h));
557
+ --tui-theme-step-on-base: oklch(0.18 0 0);
558
+ --tui-theme-step-on-soft: var(--tui-color-fg);
559
+ }
560
+ }
561
+
562
+ @media (prefers-color-scheme: dark) {
563
+ @supports (color: oklch(50% 0.1 0deg)) {
564
+ :where(.tui-interface)[data-theme=auto] {
565
+ --tui-theme-section-base: oklch(0.72 var(--tui-palette-section-c) var(--tui-palette-section-h));
566
+ --tui-theme-section-soft: oklch(0.30 calc(var(--tui-palette-section-c) * 0.35) var(--tui-palette-section-h));
567
+ --tui-theme-section-border: oklch(0.38 calc(var(--tui-palette-section-c) * 0.30) var(--tui-palette-section-h));
568
+ --tui-theme-section-on-base: oklch(0.18 0 0);
569
+ --tui-theme-section-on-soft: var(--tui-color-fg);
570
+ --tui-theme-page-base: oklch(0.72 var(--tui-palette-page-c) var(--tui-palette-page-h));
571
+ --tui-theme-page-soft: oklch(0.30 calc(var(--tui-palette-page-c) * 0.35) var(--tui-palette-page-h));
572
+ --tui-theme-page-border: oklch(0.38 calc(var(--tui-palette-page-c) * 0.30) var(--tui-palette-page-h));
573
+ --tui-theme-page-on-base: oklch(0.18 0 0);
574
+ --tui-theme-page-on-soft: var(--tui-color-fg);
575
+ --tui-theme-step-base: oklch(0.72 var(--tui-palette-step-c) var(--tui-palette-step-h));
576
+ --tui-theme-step-soft: oklch(0.30 calc(var(--tui-palette-step-c) * 0.35) var(--tui-palette-step-h));
577
+ --tui-theme-step-border: oklch(0.38 calc(var(--tui-palette-step-c) * 0.30) var(--tui-palette-step-h));
578
+ --tui-theme-step-on-base: oklch(0.18 0 0);
579
+ --tui-theme-step-on-soft: var(--tui-color-fg);
580
+ }
581
+ }
582
+ }
293
583
  @media (prefers-reduced-motion: reduce) {
294
584
  :where(.tui-interface) {
295
585
  --tui-motion-duration: 0ms;
@@ -349,6 +639,7 @@
349
639
  0 2px 4px rgba(var(--tui-shadow-color), 0.06);
350
640
  --tui-shadow-lg: 0 10px 15px rgba(var(--tui-shadow-color), 0.1),
351
641
  0 4px 6px rgba(var(--tui-shadow-color), 0.05);
642
+ --tui-shadow-dropdown: 0 4px 12px rgba(var(--tui-shadow-color), 0.15);
352
643
  }
353
644
 
354
645
  @layer resets {
@@ -397,7 +688,7 @@
397
688
  :where(.tui-interface) .tui-accordion__item[data-state=open] {
398
689
  --_bg: var(--_bg-open);
399
690
  }
400
- :where(.tui-interface) .tui-accordion__item[data-disabled=true] {
691
+ :where(.tui-interface) .tui-accordion__item[data-disabled] {
401
692
  opacity: var(--tui-opacity-disabled);
402
693
  }
403
694
  :where(.tui-interface) .tui-accordion__heading {
@@ -448,7 +739,7 @@
448
739
  transition-duration: var(--tui-motion-duration);
449
740
  transition-timing-function: var(--tui-motion-timing);
450
741
  }
451
- [data-state=open] > :where(.tui-interface) .tui-accordion__indicator {
742
+ :where(.tui-interface) .tui-accordion__trigger[data-state=open] > .tui-accordion__indicator {
452
743
  transform: rotate(180deg);
453
744
  }
454
745
  :where(.tui-interface) .tui-accordion__panel {
@@ -483,6 +774,19 @@
483
774
  :where(.tui-interface) .tui-accordion__panel[data-state=open] > .tui-accordion__panel-content {
484
775
  animation: tui-fadeFromTransparent var(--tui-motion-duration) var(--tui-motion-timing) forwards;
485
776
  }
777
+ @media (forced-colors: active) {
778
+ :where(.tui-interface) .tui-accordion__item {
779
+ border-color: CanvasText;
780
+ }
781
+ :where(.tui-interface) .tui-accordion__trigger:hover:not(:disabled) {
782
+ background-color: Highlight;
783
+ color: HighlightText;
784
+ forced-color-adjust: none;
785
+ }
786
+ :where(.tui-interface) .tui-accordion__trigger:focus-visible {
787
+ outline-color: Highlight;
788
+ }
789
+ }
486
790
  :where(.tui-interface) {
487
791
  --tui-avatar-palette-coral: #c62828;
488
792
  --tui-avatar-palette-amber: #f59e0b;
@@ -500,7 +804,7 @@
500
804
  --_radius: var(--tui-avatar-radius, 50%);
501
805
  --_bg: var(--tui-avatar-bg, var(--tui-color-bg-muted));
502
806
  --_fg: var(--tui-avatar-fg, var(--tui-color-fg-inverted));
503
- --_border: var(--tui-avatar-border, 2px solid var(--tui-color-bg));
807
+ --_border: var(--tui-avatar-border, none);
504
808
  position: relative;
505
809
  display: inline-flex;
506
810
  align-items: center;
@@ -508,9 +812,10 @@
508
812
  width: var(--_size);
509
813
  height: var(--_size);
510
814
  border-radius: var(--_radius);
815
+ border: var(--_border);
511
816
  background-color: var(--_bg);
512
817
  color: var(--_fg);
513
- font-weight: 500;
818
+ font-weight: var(--tui-font-weight-medium, 500);
514
819
  font-size: calc(var(--_size) * 0.4);
515
820
  line-height: 1;
516
821
  flex-shrink: 0;
@@ -653,6 +958,20 @@
653
958
  :where(.tui-interface) .tui-avatar-group.is-overlap .tui-avatar {
654
959
  box-shadow: 0 0 0 var(--tui-avatar-group-border-width, 2px) var(--tui-avatar-group-border-color, var(--tui-color-bg-surface));
655
960
  }
961
+ .tui-interface[data-theme=dark] .tui-avatar.is-color-amber, .tui-interface[data-theme=dark] .tui-avatar.is-color-lime, .tui-interface[data-theme=dark] .tui-avatar.is-color-cyan,
962
+ .tui-interface[data-theme=dark] :where(.tui-interface) .tui-avatar.is-color-amber,
963
+ .tui-interface[data-theme=dark] :where(.tui-interface) .tui-avatar.is-color-lime,
964
+ .tui-interface[data-theme=dark] :where(.tui-interface) .tui-avatar.is-color-cyan {
965
+ --_fg: var(--tui-avatar-fg, var(--tui-color-fg-inverted));
966
+ }
967
+ @media (prefers-color-scheme: dark) {
968
+ .tui-interface[data-theme=auto] .tui-avatar.is-color-amber, .tui-interface[data-theme=auto] .tui-avatar.is-color-lime, .tui-interface[data-theme=auto] .tui-avatar.is-color-cyan,
969
+ .tui-interface[data-theme=auto] :where(.tui-interface) .tui-avatar.is-color-amber,
970
+ .tui-interface[data-theme=auto] :where(.tui-interface) .tui-avatar.is-color-lime,
971
+ .tui-interface[data-theme=auto] :where(.tui-interface) .tui-avatar.is-color-cyan {
972
+ --_fg: var(--tui-avatar-fg, var(--tui-color-fg-inverted));
973
+ }
974
+ }
656
975
  @media (forced-colors: active) {
657
976
  :where(.tui-interface) .tui-avatar {
658
977
  background-color: Canvas;
@@ -663,8 +982,8 @@
663
982
  :where(.tui-interface) :is(button, [type=button], [type=submit]) {
664
983
  cursor: pointer;
665
984
  font-family: inherit;
666
- font-size: var(--tui-typography-size-md);
667
- line-height: 1.4;
985
+ font-size: var(--tui-button-font-size, var(--tui-typography-size-md));
986
+ line-height: var(--tui-button-line-height, 1.4);
668
987
  border: unset;
669
988
  box-shadow: unset;
670
989
  height: auto;
@@ -684,11 +1003,11 @@
684
1003
  --_border: var(--tui-button-border, var(--tui-theme-primary-base));
685
1004
  --_radius: var(--tui-button-radius, var(--tui-radius-md));
686
1005
  --_bg-interact: var(--tui-button-bg-interact, var(--tui-theme-primary-stronger));
687
- --_fg-interact: var(--tui-button-fg-interact, var(--tui-palette-color-white));
1006
+ --_fg-interact: var(--tui-button-fg-interact, var(--tui-color-fg-on-accent));
688
1007
  --_border-interact: var(--tui-button-border-interact, var(--tui-theme-primary-stronger));
689
- font-size: var(--tui-typography-size-md);
690
- font-weight: normal;
691
- line-height: 1.4;
1008
+ font-size: var(--tui-button-font-size, var(--tui-typography-size-md));
1009
+ font-weight: var(--tui-button-font-weight, normal);
1010
+ line-height: var(--tui-button-line-height, 1.4);
692
1011
  display: inline-flex;
693
1012
  align-self: center;
694
1013
  text-align: center;
@@ -696,16 +1015,17 @@
696
1015
  align-items: center;
697
1016
  padding-inline: 1.2em;
698
1017
  padding-block: 0.575em;
1018
+ min-height: var(--tui-control-height-md);
699
1019
  gap: 0.5em;
1020
+ border-radius: var(--_radius);
1021
+ transition-duration: var(--tui-motion-duration);
1022
+ transition-timing-function: var(--tui-motion-timing);
1023
+ transition-property: border-color, color, background-color;
700
1024
  background-color: var(--_bg) !important;
701
1025
  color: var(--_fg) !important;
702
1026
  border-color: var(--_border) !important;
703
1027
  border-style: solid;
704
1028
  border-width: var(--tui-border-width);
705
- border-radius: var(--_radius);
706
- transition-duration: var(--tui-motion-duration);
707
- transition-timing-function: var(--tui-motion-timing);
708
- transition-property: border-color, color, background-color;
709
1029
  }
710
1030
  .tui-interface .tui-button .tui-icon {
711
1031
  font-size: inherit;
@@ -748,18 +1068,26 @@
748
1068
  display: inline-block;
749
1069
  animation: tui-spin 0.85s linear infinite;
750
1070
  }
1071
+ @media (prefers-reduced-motion: reduce) {
1072
+ .tui-interface .tui-button[data-loading=true]::before {
1073
+ animation: none;
1074
+ border-style: dashed;
1075
+ }
1076
+ }
751
1077
  .tui-interface .tui-button.is-width-full {
752
1078
  width: 100%;
753
1079
  }
754
1080
  .tui-interface .tui-button.is-size-lg {
755
- font-size: var(--tui-typography-size-lg);
1081
+ font-size: var(--tui-button-font-size-lg, var(--tui-typography-size-lg));
1082
+ min-height: var(--tui-control-height-lg);
756
1083
  }
757
1084
  .tui-interface .tui-button.is-size-sm {
758
- font-size: var(--tui-typography-size-sm);
1085
+ font-size: var(--tui-button-font-size-sm, var(--tui-typography-size-sm));
1086
+ min-height: var(--tui-control-height-sm);
759
1087
  }
760
1088
  .tui-interface .tui-button.is-size-xs {
761
1089
  --_radius: var(--tui-button-radius, var(--tui-radius-sm));
762
- font-size: var(--tui-typography-size-xs);
1090
+ font-size: var(--tui-button-font-size-xs, var(--tui-typography-size-xs));
763
1091
  padding: var(--tui-spacing-xxs);
764
1092
  min-width: 2em;
765
1093
  }
@@ -841,6 +1169,7 @@
841
1169
  --_bg: var(--tui-button-bg, transparent);
842
1170
  --_fg: var(--tui-button-fg, var(--tui-theme-primary-strong));
843
1171
  --_border: transparent;
1172
+ text-decoration: underline;
844
1173
  border-width: 0;
845
1174
  padding: 0;
846
1175
  }
@@ -881,10 +1210,15 @@
881
1210
  color: LinkText;
882
1211
  border-color: transparent;
883
1212
  }
1213
+ .tui-interface .tui-button[disabled], .tui-interface .tui-button.is-disabled {
1214
+ color: GrayText;
1215
+ border-color: GrayText;
1216
+ background-color: Canvas;
1217
+ }
884
1218
  }
885
1219
  .tui-interface input[type=file] {
886
1220
  --_bg: var(--tui-button-bg, var(--tui-theme-primary-base));
887
- --_fg: var(--tui-button-fg, var(--tui-color-bg-surface));
1221
+ --_fg: var(--tui-button-fg, var(--tui-color-fg-on-accent));
888
1222
  --_border: var(--tui-button-border, var(--tui-theme-primary-base));
889
1223
  --_radius: var(--tui-button-radius, var(--tui-radius-md));
890
1224
  --_bg-interact: var(--tui-button-bg-interact, var(--tui-theme-primary-stronger));
@@ -892,9 +1226,9 @@
892
1226
  --_border-interact: var(--tui-button-border-interact, var(--tui-theme-primary-stronger));
893
1227
  }
894
1228
  .tui-interface input[type=file]::file-selector-button {
895
- font-size: var(--tui-typography-size-md);
896
- font-weight: normal;
897
- line-height: 1.4;
1229
+ font-size: var(--tui-button-font-size, var(--tui-typography-size-md));
1230
+ font-weight: var(--tui-button-font-weight, normal);
1231
+ line-height: var(--tui-button-line-height, 1.4);
898
1232
  display: inline-flex;
899
1233
  align-self: center;
900
1234
  text-align: center;
@@ -902,14 +1236,15 @@
902
1236
  align-items: center;
903
1237
  padding-inline: 1.2em;
904
1238
  padding-block: 0.575em;
1239
+ min-height: var(--tui-control-height-md);
905
1240
  gap: 0.5em;
906
- background-color: var(--_bg);
907
- color: var(--_fg);
908
- border: var(--tui-border-width) solid var(--_border);
909
1241
  border-radius: var(--_radius);
910
1242
  transition-duration: var(--tui-motion-duration);
911
1243
  transition-timing-function: var(--tui-motion-timing);
912
1244
  transition-property: border-color, color, background-color;
1245
+ background-color: var(--_bg);
1246
+ color: var(--_fg);
1247
+ border: var(--tui-border-width) solid var(--_border);
913
1248
  }
914
1249
  .tui-interface input[type=file]:hover::file-selector-button {
915
1250
  background-color: var(--_bg-interact);
@@ -933,9 +1268,9 @@
933
1268
  --_border: var(--tui-card-border, var(--tui-color-border));
934
1269
  --_border-interact: var(--tui-card-border-interact, var(--tui-theme-primary-base));
935
1270
  --_radius: var(--tui-card-radius, var(--tui-radius-md));
936
- --_shadow: var(--tui-card-shadow, var(--tui-shadow-md));
937
- --_shadow-interact: var(--tui-card-shadow-interact, var(--tui-shadow-sm));
938
- --_padding: var(--tui-card-padding, var(--tui-spacing-md));
1271
+ --_shadow: var(--tui-card-shadow, var(--tui-shadow-sm));
1272
+ --_shadow-interact: var(--tui-card-shadow-interact, var(--tui-shadow-md));
1273
+ --_padding: var(--tui-card-padding, var(--tui-spacing-lg));
939
1274
  --_foot-basis: var(--tui-card-foot-basis, 500px);
940
1275
  container-type: inline-size;
941
1276
  container-name: tuiCard;
@@ -1064,15 +1399,23 @@
1064
1399
  :where(.tui-interface) .tui-card.has-interaction:hover {
1065
1400
  --_border: var(--_border-interact);
1066
1401
  }
1067
- :where(.tui-interface) .tui-card.has-interaction:focus, :where(.tui-interface) .tui-card.has-interaction:focus-within {
1402
+ :where(.tui-interface) .tui-card.has-interaction:focus-visible, :where(.tui-interface) .tui-card.has-interaction:has(:focus-visible) {
1068
1403
  --_border: var(--_border-interact);
1069
1404
  }
1070
1405
  :where(.tui-interface) .tui-card.has-interaction:active, :where(.tui-interface) .tui-card.has-interaction.active {
1071
- --_border: var(--tui-card-border-active, var(--tui-palette-color-gray-50));
1406
+ --_border: var(--tui-card-border-active, var(--tui-theme-primary-soft));
1407
+ }
1408
+ :where(.tui-interface) .tui-card .tui-stretched-link:focus {
1409
+ outline: none;
1072
1410
  }
1073
- :where(.tui-interface) .tui-card.has-interaction [disabled],
1074
- :where(.tui-interface) .tui-card.has-interaction .disabled {
1411
+ :where(.tui-interface) .tui-card .tui-stretched-link:focus-visible::after {
1412
+ outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
1413
+ outline-offset: calc(-1 * var(--tui-focus-ring-offset));
1414
+ border-radius: var(--_radius);
1415
+ }
1416
+ :where(.tui-interface) .tui-card[aria-disabled=true] {
1075
1417
  opacity: var(--tui-opacity-disabled);
1418
+ pointer-events: none;
1076
1419
  }
1077
1420
  :where(.tui-interface) .tui-card.is-style-elevated {
1078
1421
  box-shadow: var(--_shadow);
@@ -1102,6 +1445,11 @@
1102
1445
  :where(.tui-interface) .tui-inline-choice.is-disabled input {
1103
1446
  cursor: not-allowed;
1104
1447
  }
1448
+ @media (forced-colors: active) {
1449
+ :where(.tui-interface) input[type=checkbox] {
1450
+ forced-color-adjust: auto;
1451
+ }
1452
+ }
1105
1453
  :where(.tui-interface) .tui-chip {
1106
1454
  --_bg: var(--tui-chip-bg, var(--tui-theme-secondary-subtle));
1107
1455
  --_fg: var(--tui-chip-fg, var(--tui-theme-secondary-strongest));
@@ -1156,7 +1504,7 @@
1156
1504
  outline-offset: var(--tui-focus-ring-offset);
1157
1505
  }
1158
1506
  :where(.tui-interface) .tui-chip.is-interactive:is(:active, [aria-pressed=true], .is-selected), :where(.tui-interface) .tui-chip.is-interactive:has(input:checked), :where(.tui-interface) .tui-chip:is(a, button, [role=button]):is(:active, [aria-pressed=true], .is-selected), :where(.tui-interface) .tui-chip:is(a, button, [role=button]):has(input:checked), :where(.tui-interface) .tui-chip:has(input[type=checkbox], input[type=radio]):is(:active, [aria-pressed=true], .is-selected), :where(.tui-interface) .tui-chip:has(input[type=checkbox], input[type=radio]):has(input:checked) {
1159
- box-shadow: 0 0 0 1px var(--_fg) inset;
1507
+ box-shadow: 0 0 0 var(--tui-chip-selected-ring, 1px) var(--_fg) inset;
1160
1508
  filter: brightness(0.95);
1161
1509
  }
1162
1510
  :where(.tui-interface) .tui-chip.is-interactive:is(a), :where(.tui-interface) .tui-chip:is(a, button, [role=button]):is(a), :where(.tui-interface) .tui-chip:has(input[type=checkbox], input[type=radio]):is(a) {
@@ -1194,12 +1542,21 @@
1194
1542
  --_border: var(--tui-chip-border, var(--tui-theme-danger-subtlest));
1195
1543
  --_icon: var(--tui-chip-icon, var(--tui-theme-danger-base));
1196
1544
  }
1197
- :where(.tui-interface) .tui-chip.is-style-ghost:not(:is(a, button, [role=button])), :where(.tui-interface) .tui-chip.is-style-ghost:not(:is(:hover, :focus)) {
1545
+ :where(.tui-interface) .tui-chip.is-style-ghost {
1198
1546
  --_bg: transparent;
1199
- }
1200
- :where(.tui-interface) .tui-chip.is-style-ghost:not(:is(:focus-visible, :active, [aria-pressed=true], .is-selected)) {
1201
1547
  --_border: transparent;
1202
1548
  }
1549
+ @media (hover: hover) {
1550
+ :where(.tui-interface) .tui-chip.is-style-ghost.is-interactive:hover, :where(.tui-interface) .tui-chip.is-style-ghost:is(a, button, [role=button]):hover, :where(.tui-interface) .tui-chip.is-style-ghost:has(input[type=checkbox], input[type=radio]):hover {
1551
+ --_bg: var(--tui-chip-bg, var(--tui-theme-secondary-subtle));
1552
+ }
1553
+ }
1554
+ :where(.tui-interface) .tui-chip.is-style-ghost.is-interactive:focus, :where(.tui-interface) .tui-chip.is-style-ghost:is(a, button, [role=button]):focus, :where(.tui-interface) .tui-chip.is-style-ghost:has(input[type=checkbox], input[type=radio]):focus {
1555
+ --_bg: var(--tui-chip-bg, var(--tui-theme-secondary-subtle));
1556
+ }
1557
+ :where(.tui-interface) .tui-chip.is-style-ghost:is(:focus-visible, :active, [aria-pressed=true], .is-selected), :where(.tui-interface) .tui-chip.is-style-ghost:has(input:checked) {
1558
+ --_border: var(--tui-chip-border, var(--tui-theme-secondary-subtle));
1559
+ }
1203
1560
  :where(.tui-interface) .tui-chip.is-style-outline {
1204
1561
  --_bg: var(--tui-chip-bg, var(--tui-color-bg-surface));
1205
1562
  --_fg: var(--tui-chip-fg, var(--tui-theme-secondary-base));
@@ -1407,15 +1764,18 @@
1407
1764
  margin: 0;
1408
1765
  --_fs: var(--tui-typography-size-md);
1409
1766
  --_py: var(--tui-spacing-xxs);
1767
+ --_height: calc(2em + 2 * var(--_py));
1410
1768
  font-size: var(--_fs);
1411
1769
  padding-block: var(--_py);
1412
- min-height: calc(2em + 2 * var(--_py));
1770
+ min-height: var(--tui-control-height-md, var(--_height));
1413
1771
  }
1414
1772
  .tui-interface .tui-combobox__input.is-size-sm {
1415
1773
  --_fs: var(--tui-typography-size-sm);
1774
+ min-height: var(--tui-control-height-sm, var(--_height));
1416
1775
  }
1417
1776
  .tui-interface .tui-combobox__input.is-size-lg {
1418
1777
  --_fs: var(--tui-typography-size-lg);
1778
+ min-height: var(--tui-control-height-lg, var(--_height));
1419
1779
  }
1420
1780
  .tui-interface .tui-combobox__input {
1421
1781
  display: block;
@@ -1482,7 +1842,7 @@
1482
1842
  :where(.tui-interface) .tui-combobox__content {
1483
1843
  --_bg: var(--tui-combobox-content-bg, var(--tui-select-content-bg, var(--tui-color-bg-elevated)));
1484
1844
  --_border: var(--tui-combobox-content-border, var(--tui-select-content-border, var(--tui-color-border)));
1485
- --_shadow: var(--tui-combobox-content-shadow, var(--tui-select-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.15)));
1845
+ --_shadow: var(--tui-combobox-content-shadow, var(--tui-select-content-shadow, var(--tui-shadow-dropdown)));
1486
1846
  --_radius: var(--tui-combobox-content-radius, var(--tui-select-content-radius, var(--tui-radius-md)));
1487
1847
  z-index: var(--tui-layer-top);
1488
1848
  min-width: 160px;
@@ -1645,12 +2005,12 @@
1645
2005
  }
1646
2006
  :where(.tui-interface) .tui-dropdown {
1647
2007
  --_bg: var(--tui-dropdown-bg, var(--tui-color-bg-elevated));
1648
- --_fg: var(--tui-dropdown-fg, var(--tui-color-fg-default));
2008
+ --_fg: var(--tui-dropdown-fg, var(--tui-color-fg));
1649
2009
  --_radius: var(--tui-dropdown-radius, var(--tui-radius-sm));
1650
2010
  --_shadow: var(--tui-dropdown-shadow, var(--tui-shadow-md));
1651
2011
  --_z: var(--tui-dropdown-z, var(--tui-layer-top));
1652
- --_border: var(--tui-dropdown-border, var(--tui-color-border-default));
1653
- --_item-bg-hover: var(--tui-dropdown-item-bg-hover, var(--tui-color-bg-subtle));
2012
+ --_border: var(--tui-dropdown-border, var(--tui-color-border));
2013
+ --_item-bg-hover: var(--tui-dropdown-item-bg-hover, var(--tui-color-bg-muted));
1654
2014
  --_item-bg-active: var(--tui-dropdown-item-bg-active, var(--tui-color-bg-muted));
1655
2015
  z-index: var(--_z);
1656
2016
  min-width: var(--tui-dropdown-min-width, 160px);
@@ -1680,16 +2040,21 @@
1680
2040
  --tui-button-fg: inherit;
1681
2041
  --tui-button-border-color: transparent;
1682
2042
  }
1683
- :where(.tui-interface) .tui-dropdown__item:hover, :where(.tui-interface) .tui-dropdown__item:focus-visible, :where(.tui-interface) .tui-dropdown__item[data-active],
2043
+ :where(.tui-interface) .tui-dropdown__item:hover, :where(.tui-interface) .tui-dropdown__item[data-active],
1684
2044
  :where(.tui-interface) .tui-dropdown .tui-button:hover,
1685
- :where(.tui-interface) .tui-dropdown .tui-button:focus-visible,
1686
2045
  :where(.tui-interface) .tui-dropdown .tui-button[data-active],
1687
2046
  :where(.tui-interface) .tui-dropdown .tui-icon-button:hover,
1688
- :where(.tui-interface) .tui-dropdown .tui-icon-button:focus-visible,
1689
2047
  :where(.tui-interface) .tui-dropdown .tui-icon-button[data-active] {
1690
2048
  --tui-button-bg: var(--_item-bg-hover);
1691
2049
  --tui-button-fg: inherit;
1692
- outline: none;
2050
+ }
2051
+ :where(.tui-interface) .tui-dropdown__item:focus-visible,
2052
+ :where(.tui-interface) .tui-dropdown .tui-button:focus-visible,
2053
+ :where(.tui-interface) .tui-dropdown .tui-icon-button:focus-visible {
2054
+ --tui-button-bg: var(--_item-bg-hover);
2055
+ --tui-button-fg: inherit;
2056
+ outline: var(--tui-focus-ring-width, 2px) solid var(--tui-focus-ring-color, #2563eb);
2057
+ outline-offset: calc(-1 * var(--tui-focus-ring-width, 2px));
1693
2058
  }
1694
2059
  :where(.tui-interface) .tui-dropdown__item:active,
1695
2060
  :where(.tui-interface) .tui-dropdown .tui-button:active,
@@ -1701,13 +2066,32 @@
1701
2066
  :where(.tui-interface) .tui-dropdown .tui-button[aria-disabled=true],
1702
2067
  :where(.tui-interface) .tui-dropdown .tui-icon-button:disabled,
1703
2068
  :where(.tui-interface) .tui-dropdown .tui-icon-button[aria-disabled=true] {
1704
- opacity: 0.5;
2069
+ opacity: var(--tui-opacity-disabled);
1705
2070
  cursor: not-allowed;
1706
2071
  pointer-events: none;
1707
2072
  }
1708
2073
  :where(.tui-interface) .tui-dropdown .tui-icon-button {
1709
2074
  justify-content: center;
1710
2075
  }
2076
+ :where(.tui-interface) .tui-dropdown__separator {
2077
+ border: none;
2078
+ border-top: 1px solid var(--tui-color-border);
2079
+ margin: var(--tui-spacing-xxs, 4px) 0;
2080
+ }
2081
+ :where(.tui-interface) .tui-dropdown__header {
2082
+ padding: var(--tui-spacing-xs, 8px) var(--tui-spacing-sm, 12px);
2083
+ padding-block-end: var(--tui-spacing-xxs, 4px);
2084
+ font-size: var(--tui-typography-size-xs, 11px);
2085
+ font-weight: var(--tui-font-weight-semibold, 600);
2086
+ color: var(--tui-color-fg-muted);
2087
+ letter-spacing: 0.02em;
2088
+ user-select: none;
2089
+ }
2090
+ @media (prefers-reduced-motion: reduce) {
2091
+ :where(.tui-interface) .tui-dropdown {
2092
+ animation: none;
2093
+ }
2094
+ }
1711
2095
  @media (forced-colors: active) {
1712
2096
  :where(.tui-interface) .tui-dropdown {
1713
2097
  background-color: Canvas;
@@ -1790,15 +2174,18 @@
1790
2174
  margin: 0;
1791
2175
  --_fs: var(--tui-typography-size-md);
1792
2176
  --_py: var(--tui-spacing-xxs);
2177
+ --_height: calc(2em + 2 * var(--_py));
1793
2178
  font-size: var(--_fs);
1794
2179
  padding-block: var(--_py);
1795
- min-height: calc(2em + 2 * var(--_py));
2180
+ min-height: var(--tui-control-height-md, var(--_height));
1796
2181
  }
1797
2182
  .tui-interface .tui-multiselect__trigger.is-size-sm {
1798
2183
  --_fs: var(--tui-typography-size-sm);
2184
+ min-height: var(--tui-control-height-sm, var(--_height));
1799
2185
  }
1800
2186
  .tui-interface .tui-multiselect__trigger.is-size-lg {
1801
2187
  --_fs: var(--tui-typography-size-lg);
2188
+ min-height: var(--tui-control-height-lg, var(--_height));
1802
2189
  }
1803
2190
  .tui-interface .tui-multiselect__trigger {
1804
2191
  display: inline-flex;
@@ -1909,7 +2296,7 @@
1909
2296
  :where(.tui-interface) .tui-multiselect__content {
1910
2297
  --_bg: var(--tui-multiselect-content-bg, var(--tui-color-bg-elevated));
1911
2298
  --_border: var(--tui-multiselect-content-border, var(--tui-color-border));
1912
- --_shadow: var(--tui-multiselect-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.15));
2299
+ --_shadow: var(--tui-multiselect-content-shadow, var(--tui-shadow-dropdown));
1913
2300
  --_radius: var(--tui-multiselect-content-radius, var(--tui-radius-md));
1914
2301
  z-index: var(--tui-layer-top);
1915
2302
  min-width: 160px;
@@ -2055,15 +2442,18 @@
2055
2442
  margin: 0;
2056
2443
  --_fs: var(--tui-typography-size-md);
2057
2444
  --_py: var(--tui-spacing-xxs);
2445
+ --_height: calc(2em + 2 * var(--_py));
2058
2446
  font-size: var(--_fs);
2059
2447
  padding-block: var(--_py);
2060
- min-height: calc(2em + 2 * var(--_py));
2448
+ min-height: var(--tui-control-height-md, var(--_height));
2061
2449
  }
2062
2450
  .tui-interface .tui-select__trigger.is-size-sm {
2063
2451
  --_fs: var(--tui-typography-size-sm);
2452
+ min-height: var(--tui-control-height-sm, var(--_height));
2064
2453
  }
2065
2454
  .tui-interface .tui-select__trigger.is-size-lg {
2066
2455
  --_fs: var(--tui-typography-size-lg);
2456
+ min-height: var(--tui-control-height-lg, var(--_height));
2067
2457
  }
2068
2458
  .tui-interface .tui-select__trigger {
2069
2459
  display: inline-flex;
@@ -2139,7 +2529,7 @@
2139
2529
  :where(.tui-interface) .tui-select__content {
2140
2530
  --_bg: var(--tui-select-content-bg, var(--tui-color-bg-elevated));
2141
2531
  --_border: var(--tui-select-content-border, var(--tui-color-border));
2142
- --_shadow: var(--tui-select-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.15));
2532
+ --_shadow: var(--tui-select-content-shadow, var(--tui-shadow-dropdown));
2143
2533
  --_radius: var(--tui-select-content-radius, var(--tui-radius-md));
2144
2534
  z-index: var(--tui-layer-top);
2145
2535
  min-width: 160px;
@@ -2190,7 +2580,7 @@
2190
2580
  }
2191
2581
  :where(.tui-interface) .tui-select__option[aria-selected=true] {
2192
2582
  background-color: var(--_bg-selected);
2193
- font-weight: 500;
2583
+ font-weight: var(--tui-font-weight-medium, 500);
2194
2584
  }
2195
2585
  :where(.tui-interface) .tui-select__option[aria-selected=true]:hover:not([data-disabled]), :where(.tui-interface) .tui-select__option[aria-selected=true][data-highlighted]:not([data-disabled]) {
2196
2586
  background-color: var(--tui-theme-primary-subtle);
@@ -2275,9 +2665,10 @@
2275
2665
  --_radius: var(--tui-input-radius, var(--tui-radius-md));
2276
2666
  --_fs: var(--tui-typography-size-md);
2277
2667
  --_py: var(--tui-spacing-xxs);
2668
+ --_height: calc(2em + 2 * var(--_py));
2278
2669
  font-size: var(--_fs);
2279
2670
  padding-block: var(--_py);
2280
- min-height: calc(2em + 2 * var(--_py));
2671
+ min-height: var(--tui-control-height-md, var(--_height));
2281
2672
  }
2282
2673
  :where(.tui-interface) :is(.tui-input,
2283
2674
  input[type=text],
@@ -2298,6 +2689,7 @@
2298
2689
  textarea,
2299
2690
  select).is-size-sm {
2300
2691
  --_fs: var(--tui-typography-size-sm);
2692
+ min-height: var(--tui-control-height-sm, var(--_height));
2301
2693
  }
2302
2694
  :where(.tui-interface) :is(.tui-input,
2303
2695
  input[type=text],
@@ -2318,6 +2710,7 @@
2318
2710
  textarea,
2319
2711
  select).is-size-lg {
2320
2712
  --_fs: var(--tui-typography-size-lg);
2713
+ min-height: var(--tui-control-height-lg, var(--_height));
2321
2714
  }
2322
2715
  :where(.tui-interface) :is(.tui-input,
2323
2716
  input[type=text],
@@ -2562,6 +2955,7 @@
2562
2955
  --_radius: var(--tui-icon-button-radius, var(--tui-radius-md));
2563
2956
  --_bg-interact: var(--tui-icon-button-bg-interact, var(--tui-theme-secondary-subtle));
2564
2957
  --_fg-interact: var(--tui-icon-button-fg-interact, var(--tui-color-fg));
2958
+ --_bg-pressed: var(--tui-theme-secondary-soft);
2565
2959
  appearance: none;
2566
2960
  border: none;
2567
2961
  background: none;
@@ -2574,8 +2968,9 @@
2574
2968
  align-items: center;
2575
2969
  justify-content: center;
2576
2970
  position: relative;
2577
- width: 2rem;
2578
- height: 2rem;
2971
+ --_size: var(--tui-control-height-sm, 2rem);
2972
+ width: var(--_size);
2973
+ height: var(--_size);
2579
2974
  background-color: var(--_bg);
2580
2975
  color: var(--_fg);
2581
2976
  border: var(--tui-border-width) solid var(--_border);
@@ -2585,7 +2980,7 @@
2585
2980
  transition-property: background-color, color, border-color;
2586
2981
  }
2587
2982
  .tui-interface .tui-icon-button .tui-icon {
2588
- font-size: 1rem;
2983
+ font-size: calc(var(--_size) * 0.5);
2589
2984
  }
2590
2985
  .tui-interface .tui-icon-button:hover {
2591
2986
  --_bg: var(--_bg-interact);
@@ -2597,46 +2992,43 @@
2597
2992
  outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
2598
2993
  outline-offset: var(--tui-focus-ring-offset);
2599
2994
  }
2600
- .tui-interface .tui-icon-button:is(:active, [aria-pressed=true]) {
2995
+ .tui-interface .tui-icon-button:active {
2601
2996
  --_bg: var(--_bg-interact);
2602
2997
  --_fg: var(--_fg-interact);
2603
2998
  }
2999
+ .tui-interface .tui-icon-button[aria-pressed=true] {
3000
+ --_bg: var(--_bg-pressed);
3001
+ --_fg: var(--_fg-interact);
3002
+ }
2604
3003
  .tui-interface .tui-icon-button:where(:disabled, [aria-disabled=true], .is-disabled) {
2605
3004
  pointer-events: none;
2606
3005
  cursor: not-allowed;
2607
3006
  opacity: var(--tui-opacity-disabled);
2608
3007
  }
2609
3008
  .tui-interface .tui-icon-button.is-size-xs {
2610
- width: 1.5rem;
2611
- height: 1.5rem;
3009
+ --_size: 1.5rem;
2612
3010
  --_radius: var(--tui-icon-button-radius, var(--tui-radius-sm));
2613
3011
  }
2614
- .tui-interface .tui-icon-button.is-size-xs .tui-icon {
2615
- font-size: 0.75rem;
2616
- }
2617
3012
  .tui-interface .tui-icon-button.is-size-md {
2618
- width: 2.5rem;
2619
- height: 2.5rem;
2620
- }
2621
- .tui-interface .tui-icon-button.is-size-md .tui-icon {
2622
- font-size: 1.25rem;
3013
+ --_size: var(--tui-control-height-md, 2.5rem);
2623
3014
  }
2624
3015
  .tui-interface .tui-icon-button.is-size-lg {
2625
- width: 3rem;
2626
- height: 3rem;
3016
+ --_size: var(--tui-control-height-lg, 3rem);
2627
3017
  }
2628
- .tui-interface .tui-icon-button.is-size-lg .tui-icon {
2629
- font-size: 1.5rem;
3018
+ .tui-interface .tui-icon-button.is-shape-circle {
3019
+ border-radius: 50%;
2630
3020
  }
2631
3021
  .tui-interface .tui-icon-button.is-theme-primary {
2632
3022
  --_fg: var(--tui-icon-button-fg, var(--tui-theme-primary-base));
2633
3023
  --_fg-interact: var(--tui-icon-button-fg-interact, var(--tui-theme-primary-strong));
2634
3024
  --_bg-interact: var(--tui-icon-button-bg-interact, var(--tui-theme-primary-subtlest));
3025
+ --_bg-pressed: var(--tui-theme-primary-subtle);
2635
3026
  }
2636
3027
  .tui-interface .tui-icon-button.is-theme-danger {
2637
3028
  --_fg: var(--tui-icon-button-fg, var(--tui-theme-danger-base));
2638
3029
  --_fg-interact: var(--tui-icon-button-fg-interact, var(--tui-theme-danger-strong));
2639
3030
  --_bg-interact: var(--tui-icon-button-bg-interact, var(--tui-theme-danger-subtlest));
3031
+ --_bg-pressed: var(--tui-theme-danger-subtle);
2640
3032
  }
2641
3033
  .tui-interface .tui-icon-button.is-style-outline {
2642
3034
  --_border: var(--tui-icon-button-border, var(--tui-color-border));
@@ -2655,24 +3047,36 @@
2655
3047
  .tui-interface .tui-icon-button.is-style-solid {
2656
3048
  --_bg: var(--tui-icon-button-bg, var(--tui-theme-secondary-subtle));
2657
3049
  --_fg: var(--tui-icon-button-fg, var(--tui-color-fg));
3050
+ --_bg-pressed: var(--tui-theme-secondary-soft);
2658
3051
  }
2659
- .tui-interface .tui-icon-button.is-style-solid:hover, .tui-interface .tui-icon-button.is-style-solid:focus-visible, .tui-interface .tui-icon-button.is-style-solid:is(:active, [aria-pressed=true]) {
3052
+ .tui-interface .tui-icon-button.is-style-solid:hover, .tui-interface .tui-icon-button.is-style-solid:focus-visible, .tui-interface .tui-icon-button.is-style-solid:active {
2660
3053
  --_bg: var(--tui-icon-button-bg-interact, var(--tui-theme-secondary-soft));
2661
3054
  }
3055
+ .tui-interface .tui-icon-button.is-style-solid[aria-pressed=true] {
3056
+ --_bg: var(--_bg-pressed);
3057
+ }
2662
3058
  .tui-interface .tui-icon-button.is-style-solid.is-theme-primary {
2663
3059
  --_bg: var(--tui-icon-button-bg, var(--tui-theme-primary-base));
2664
3060
  --_fg: var(--tui-icon-button-fg, var(--tui-color-fg-on-accent));
3061
+ --_bg-pressed: var(--tui-theme-primary-stronger);
2665
3062
  }
2666
- .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:hover, .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:focus-visible, .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:is(:active, [aria-pressed=true]) {
3063
+ .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:hover, .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:focus-visible, .tui-interface .tui-icon-button.is-style-solid.is-theme-primary:active {
2667
3064
  --_bg: var(--tui-icon-button-bg-interact, var(--tui-theme-primary-stronger));
2668
3065
  }
3066
+ .tui-interface .tui-icon-button.is-style-solid.is-theme-primary[aria-pressed=true] {
3067
+ --_bg: var(--_bg-pressed);
3068
+ }
2669
3069
  .tui-interface .tui-icon-button.is-style-solid.is-theme-danger {
2670
3070
  --_bg: var(--tui-icon-button-bg, var(--tui-theme-danger-base));
2671
3071
  --_fg: var(--tui-icon-button-fg, var(--tui-color-fg-on-accent));
3072
+ --_bg-pressed: var(--tui-theme-danger-stronger);
2672
3073
  }
2673
- .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:hover, .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:focus-visible, .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:is(:active, [aria-pressed=true]) {
3074
+ .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:hover, .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:focus-visible, .tui-interface .tui-icon-button.is-style-solid.is-theme-danger:active {
2674
3075
  --_bg: var(--tui-icon-button-bg-interact, var(--tui-theme-danger-stronger));
2675
3076
  }
3077
+ .tui-interface .tui-icon-button.is-style-solid.is-theme-danger[aria-pressed=true] {
3078
+ --_bg: var(--_bg-pressed);
3079
+ }
2676
3080
  .tui-interface .tui-icon-button[aria-busy=true] {
2677
3081
  pointer-events: none;
2678
3082
  }
@@ -2688,6 +3092,12 @@
2688
3092
  border-radius: 50%;
2689
3093
  animation: tui-spin 0.85s linear infinite;
2690
3094
  }
3095
+ @media (prefers-reduced-motion: reduce) {
3096
+ .tui-interface .tui-icon-button__spinner {
3097
+ animation: none;
3098
+ border-style: dashed;
3099
+ }
3100
+ }
2691
3101
  @media (forced-colors: active) {
2692
3102
  .tui-icon-button {
2693
3103
  forced-color-adjust: none;
@@ -2703,6 +3113,11 @@
2703
3113
  outline: 2px solid Highlight;
2704
3114
  outline-offset: 2px;
2705
3115
  }
3116
+ .tui-icon-button:is(:disabled, [aria-disabled=true]) {
3117
+ color: GrayText;
3118
+ border-color: GrayText;
3119
+ background-color: Canvas;
3120
+ }
2706
3121
  }
2707
3122
  .tui-modal {
2708
3123
  --_z: var(--tui-modal-z, var(--tui-layer-modal, 1000));
@@ -2738,7 +3153,7 @@
2738
3153
  --_bg: var(--tui-modal-bg, var(--tui-color-bg-surface));
2739
3154
  --_border: var(--tui-modal-border, var(--tui-color-border));
2740
3155
  --_radius: var(--tui-modal-radius, var(--tui-radius-lg));
2741
- --_padding: var(--tui-modal-padding, var(--tui-spacing-md));
3156
+ --_padding: var(--tui-modal-padding, var(--tui-spacing-lg));
2742
3157
  --_shadow: var(--tui-modal-shadow, var(--tui-shadow-lg));
2743
3158
  position: relative;
2744
3159
  width: 100%;
@@ -2759,6 +3174,10 @@
2759
3174
  .tui-modal__dialog:has(> .tui-modal__foot) {
2760
3175
  --_min-foot: 4rem;
2761
3176
  }
3177
+ .tui-modal__dialog:focus-visible {
3178
+ outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
3179
+ outline-offset: var(--tui-focus-ring-offset);
3180
+ }
2762
3181
  .tui-modal__dialog {
2763
3182
  color: var(--tui-color-fg);
2764
3183
  border-style: solid;
@@ -2793,12 +3212,41 @@
2793
3212
  }
2794
3213
  .tui-modal__dialog .tui-modal__body-inner > p {
2795
3214
  margin: 0;
3215
+ margin-block-end: var(--tui-spacing-md);
3216
+ }
3217
+ .tui-modal__dialog .tui-modal__body-inner > p:last-child {
3218
+ margin-block-end: 0;
2796
3219
  }
2797
3220
  .tui-modal__dialog .tui-modal__head {
2798
3221
  padding-block: var(--_padding);
2799
3222
  padding-inline: var(--_padding);
2800
3223
  width: 100%;
2801
3224
  }
3225
+ .tui-modal__dialog .tui-modal__head.has-icon {
3226
+ display: flex;
3227
+ align-items: flex-start;
3228
+ gap: var(--tui-spacing-sm);
3229
+ }
3230
+ .tui-modal__dialog .tui-modal__head-icon {
3231
+ flex-shrink: 0;
3232
+ display: flex;
3233
+ align-items: center;
3234
+ height: 1.5em;
3235
+ font-size: var(--tui-typography-size-lg);
3236
+ color: var(--tui-color-fg);
3237
+ }
3238
+ .tui-modal__dialog .tui-modal__head-content {
3239
+ flex: 1 1 auto;
3240
+ min-width: 0;
3241
+ }
3242
+ .tui-modal__dialog .tui-modal__head-subtitle {
3243
+ margin-block-start: var(--tui-spacing-xxs);
3244
+ font-size: var(--tui-typography-size-sm);
3245
+ color: var(--tui-color-fg-muted);
3246
+ }
3247
+ .tui-modal__dialog:has(> .tui-modal__close) > .tui-modal__head {
3248
+ padding-inline-end: calc(var(--_padding) + var(--tui-spacing-xl));
3249
+ }
2802
3250
  .tui-modal__dialog .tui-modal__foot {
2803
3251
  padding-block: var(--_padding);
2804
3252
  padding-inline: var(--_padding);
@@ -2848,13 +3296,247 @@
2848
3296
  .tui-modal-open {
2849
3297
  overflow: hidden;
2850
3298
  }
3299
+ .tui-interface .tui-move-handle {
3300
+ --_size: var(--tui-move-handle-size, 40px);
3301
+ --_icon-size: var(--tui-move-handle-icon-size, calc(var(--_size) * 0.6));
3302
+ --_fg: var(--tui-color-fg-muted);
3303
+ --_bg: var(--tui-color-bg-muted);
3304
+ --_fg-interact: var(--tui-theme-primary-base);
3305
+ --_bg-interact: var(--tui-theme-primary-subtlest);
3306
+ --_center-height: 24px;
3307
+ display: inline-flex;
3308
+ flex-direction: column;
3309
+ align-items: center;
3310
+ width: var(--_size);
3311
+ min-height: calc(var(--_center-height) + 2 * 16px);
3312
+ border-radius: var(--tui-radius-sm);
3313
+ background-color: var(--_bg);
3314
+ }
3315
+ .tui-interface .tui-move-handle__up {
3316
+ border-start-start-radius: var(--tui-radius-sm);
3317
+ border-start-end-radius: var(--tui-radius-sm);
3318
+ }
3319
+ .tui-interface .tui-move-handle__down {
3320
+ border-end-start-radius: var(--tui-radius-sm);
3321
+ border-end-end-radius: var(--tui-radius-sm);
3322
+ }
3323
+ .tui-interface .tui-move-handle__up, .tui-interface .tui-move-handle__down {
3324
+ appearance: none;
3325
+ border: none;
3326
+ background: none;
3327
+ padding: 0;
3328
+ margin: 0;
3329
+ font: inherit;
3330
+ cursor: pointer;
3331
+ display: flex;
3332
+ align-items: center;
3333
+ justify-content: center;
3334
+ width: 100%;
3335
+ height: 16px;
3336
+ color: var(--_fg);
3337
+ transition-duration: var(--tui-motion-duration);
3338
+ transition-timing-function: var(--tui-motion-timing);
3339
+ transition-property: background-color, color;
3340
+ }
3341
+ .tui-interface .tui-move-handle__up .tui-icon, .tui-interface .tui-move-handle__down .tui-icon {
3342
+ font-size: var(--_icon-size);
3343
+ line-height: 0.5;
3344
+ }
3345
+ .tui-interface .tui-move-handle__up:hover, .tui-interface .tui-move-handle__down:hover {
3346
+ color: var(--_fg-interact);
3347
+ background-color: var(--_bg-interact);
3348
+ }
3349
+ .tui-interface .tui-move-handle__up:focus-visible, .tui-interface .tui-move-handle__down:focus-visible {
3350
+ color: var(--_fg-interact);
3351
+ outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
3352
+ outline-offset: var(--tui-focus-ring-offset);
3353
+ }
3354
+ .tui-interface .tui-move-handle__up:disabled, .tui-interface .tui-move-handle__down:disabled {
3355
+ pointer-events: none;
3356
+ opacity: var(--tui-opacity-disabled);
3357
+ }
3358
+ .tui-interface .tui-move-handle__center {
3359
+ display: flex;
3360
+ align-items: stretch;
3361
+ justify-content: center;
3362
+ flex: 1;
3363
+ width: var(--_size);
3364
+ min-height: var(--_center-height);
3365
+ }
3366
+ .tui-interface .tui-move-handle__center:first-child {
3367
+ border-start-start-radius: var(--tui-radius-sm);
3368
+ border-start-end-radius: var(--tui-radius-sm);
3369
+ }
3370
+ .tui-interface .tui-move-handle__center:last-child {
3371
+ border-end-start-radius: var(--tui-radius-sm);
3372
+ border-end-end-radius: var(--tui-radius-sm);
3373
+ }
3374
+ .tui-interface .tui-move-handle__handle {
3375
+ appearance: none;
3376
+ border: none;
3377
+ background: none;
3378
+ padding: 0;
3379
+ margin: 0;
3380
+ font: inherit;
3381
+ cursor: grab;
3382
+ display: flex;
3383
+ flex: 1;
3384
+ align-items: center;
3385
+ justify-content: center;
3386
+ width: var(--_size);
3387
+ border-radius: inherit;
3388
+ color: var(--_fg);
3389
+ transition-duration: var(--tui-motion-duration);
3390
+ transition-timing-function: var(--tui-motion-timing);
3391
+ transition-property: background-color, color;
3392
+ }
3393
+ .tui-interface .tui-move-handle__handle .tui-icon {
3394
+ font-size: var(--_icon-size);
3395
+ }
3396
+ .tui-interface .tui-move-handle__handle:hover {
3397
+ color: var(--_fg-interact);
3398
+ background-color: var(--_bg-interact);
3399
+ }
3400
+ .tui-interface .tui-move-handle__handle:focus-visible {
3401
+ color: var(--_fg-interact);
3402
+ outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
3403
+ outline-offset: var(--tui-focus-ring-offset);
3404
+ }
3405
+ .tui-interface .tui-move-handle__handle:active {
3406
+ cursor: grabbing;
3407
+ }
3408
+ .tui-interface .tui-move-handle__index {
3409
+ display: flex;
3410
+ align-items: center;
3411
+ align-self: center;
3412
+ justify-content: center;
3413
+ width: var(--_size);
3414
+ border-radius: var(--tui-radius-md);
3415
+ font-size: var(--tui-typography-size-sm, 0.875rem);
3416
+ font-weight: var(--tui-font-weight-medium, 500);
3417
+ color: var(--_fg);
3418
+ user-select: none;
3419
+ }
3420
+ .tui-interface .tui-move-handle__lock {
3421
+ display: flex;
3422
+ align-items: center;
3423
+ align-self: center;
3424
+ justify-content: center;
3425
+ width: var(--_size);
3426
+ color: var(--_fg);
3427
+ opacity: var(--tui-opacity-disabled);
3428
+ }
3429
+ .tui-interface .tui-move-handle__lock .tui-icon {
3430
+ font-size: var(--_icon-size);
3431
+ }
3432
+ .tui-interface .tui-move-handle__center {
3433
+ position: relative;
3434
+ }
3435
+ .tui-interface .tui-move-handle.has-index .tui-move-handle__index {
3436
+ opacity: 1;
3437
+ }
3438
+ .tui-interface .tui-move-handle.has-index .tui-move-handle__handle {
3439
+ position: absolute;
3440
+ opacity: 0;
3441
+ pointer-events: none;
3442
+ }
3443
+ .tui-interface .tui-move-handle.has-index:hover .tui-move-handle__index, .tui-interface .tui-move-handle.has-index:focus-within .tui-move-handle__index {
3444
+ display: none;
3445
+ }
3446
+ .tui-interface .tui-move-handle.has-index:hover .tui-move-handle__handle, .tui-interface .tui-move-handle.has-index:focus-within .tui-move-handle__handle {
3447
+ position: static;
3448
+ opacity: 1;
3449
+ pointer-events: auto;
3450
+ }
3451
+ @media (hover: none) {
3452
+ .tui-interface .tui-move-handle.has-index .tui-move-handle__index {
3453
+ display: none;
3454
+ }
3455
+ .tui-interface .tui-move-handle.has-index .tui-move-handle__handle {
3456
+ position: static;
3457
+ opacity: 1;
3458
+ pointer-events: auto;
3459
+ }
3460
+ }
3461
+ .tui-interface .tui-move-handle.is-size-sm {
3462
+ --_size: var(--tui-move-handle-size, 32px);
3463
+ --_center-height: 20px;
3464
+ }
3465
+ .tui-interface .tui-move-handle.is-locked {
3466
+ pointer-events: none;
3467
+ }
3468
+ .tui-interface .tui-move-handle.is-handle {
3469
+ display: inline-flex;
3470
+ align-items: center;
3471
+ justify-content: center;
3472
+ width: auto;
3473
+ min-width: 32px;
3474
+ min-height: 32px;
3475
+ background: none;
3476
+ border: none;
3477
+ border-radius: var(--tui-radius-sm);
3478
+ padding: 0;
3479
+ margin: 0;
3480
+ font: inherit;
3481
+ cursor: grab;
3482
+ color: var(--_fg);
3483
+ transition-duration: var(--tui-motion-duration);
3484
+ transition-timing-function: var(--tui-motion-timing);
3485
+ transition-property: color;
3486
+ }
3487
+ .tui-interface .tui-move-handle.is-handle .tui-icon {
3488
+ font-size: var(--_icon-size);
3489
+ }
3490
+ .tui-interface .tui-move-handle.is-handle:hover {
3491
+ color: var(--_fg-interact);
3492
+ }
3493
+ .tui-interface .tui-move-handle.is-handle:focus-visible {
3494
+ color: var(--_fg-interact);
3495
+ outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
3496
+ outline-offset: var(--tui-focus-ring-offset);
3497
+ }
3498
+ .tui-interface .tui-move-handle.is-handle:active {
3499
+ cursor: grabbing;
3500
+ }
3501
+ @media (forced-colors: active) {
3502
+ .tui-move-handle__up,
3503
+ .tui-move-handle__down,
3504
+ .tui-move-handle__handle,
3505
+ .tui-move-handle.is-handle {
3506
+ forced-color-adjust: none;
3507
+ color: CanvasText;
3508
+ }
3509
+ .tui-move-handle__up:hover, .tui-move-handle__up:active,
3510
+ .tui-move-handle__down:hover,
3511
+ .tui-move-handle__down:active,
3512
+ .tui-move-handle__handle:hover,
3513
+ .tui-move-handle__handle:active,
3514
+ .tui-move-handle.is-handle:hover,
3515
+ .tui-move-handle.is-handle:active {
3516
+ background-color: Highlight;
3517
+ color: Canvas;
3518
+ }
3519
+ .tui-move-handle__up:focus-visible,
3520
+ .tui-move-handle__down:focus-visible,
3521
+ .tui-move-handle__handle:focus-visible,
3522
+ .tui-move-handle.is-handle:focus-visible {
3523
+ outline: 2px solid Highlight;
3524
+ outline-offset: 2px;
3525
+ }
3526
+ .tui-move-handle__up:disabled,
3527
+ .tui-move-handle__down:disabled,
3528
+ .tui-move-handle__handle:disabled,
3529
+ .tui-move-handle.is-handle:disabled {
3530
+ color: GrayText;
3531
+ }
3532
+ }
2851
3533
  :where(.tui-interface) .tui-notice {
2852
3534
  --_bg: var(--tui-notice-bg, var(--tui-color-bg-muted));
2853
3535
  --_border: var(--tui-notice-border, transparent);
2854
3536
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-primary-base));
2855
3537
  --_fg: var(--tui-notice-fg, inherit);
2856
3538
  --_radius: var(--tui-notice-radius, var(--tui-radius-md));
2857
- --_padding: var(--tui-notice-padding, var(--tui-spacing-sm));
3539
+ --_padding: var(--tui-notice-padding, var(--tui-spacing-md));
2858
3540
  --_foot-basis: var(--tui-notice-foot-basis, 500px);
2859
3541
  --_gap: var(--tui-spacing-sm);
2860
3542
  container-type: inline-size;
@@ -2879,6 +3561,7 @@
2879
3561
  justify-content: center;
2880
3562
  line-height: 0;
2881
3563
  font-size: var(--tui-typography-size-xl);
3564
+ color: var(--_icon-color, inherit);
2882
3565
  }
2883
3566
  :where(.tui-interface) .tui-notice__title {
2884
3567
  flex: 1 1 auto;
@@ -2905,6 +3588,10 @@
2905
3588
  }
2906
3589
  :where(.tui-interface) .tui-notice__body > p {
2907
3590
  margin: 0;
3591
+ margin-block-end: var(--tui-spacing-sm);
3592
+ }
3593
+ :where(.tui-interface) .tui-notice__body > p:last-child {
3594
+ margin-block-end: 0;
2908
3595
  }
2909
3596
  :where(.tui-interface) .tui-notice__body a {
2910
3597
  color: var(--tui-theme-primary-strong);
@@ -2972,7 +3659,7 @@
2972
3659
  }
2973
3660
  }
2974
3661
  :where(.tui-interface) .tui-notice.is-dismissible .tui-notice__inner {
2975
- padding-inline-end: calc(var(--_padding) + 2rem);
3662
+ padding-inline-end: calc(var(--_padding) + var(--tui-control-height-sm));
2976
3663
  }
2977
3664
  @container tuiNotice (width >= 400px) {
2978
3665
  :where(.tui-interface) .tui-notice.is-layout-inline.is-dismissible .tui-notice__inner {
@@ -2985,24 +3672,32 @@
2985
3672
  }
2986
3673
  }
2987
3674
  :where(.tui-interface) .tui-notice.has-stripe {
2988
- border-inline-start-width: 4px;
3675
+ border-inline-start-width: var(--tui-notice-stripe-width, 4px);
2989
3676
  border-inline-start-color: var(--_stripe);
2990
3677
  }
2991
3678
  :where(.tui-interface) .tui-notice.is-theme-info {
2992
3679
  --_bg: var(--tui-notice-bg, var(--tui-theme-primary-subtlest));
3680
+ --_bg-hover: var(--tui-theme-primary-subtle);
2993
3681
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-primary-base));
3682
+ --_icon-color: var(--tui-theme-primary-base);
2994
3683
  }
2995
3684
  :where(.tui-interface) .tui-notice.is-theme-success {
2996
3685
  --_bg: var(--tui-notice-bg, var(--tui-theme-success-subtlest));
3686
+ --_bg-hover: var(--tui-theme-success-subtle);
2997
3687
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-success-base));
3688
+ --_icon-color: var(--tui-theme-success-base);
2998
3689
  }
2999
3690
  :where(.tui-interface) .tui-notice.is-theme-warning {
3000
3691
  --_bg: var(--tui-notice-bg, var(--tui-theme-warning-subtlest));
3692
+ --_bg-hover: var(--tui-theme-warning-subtle);
3001
3693
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-warning-base));
3694
+ --_icon-color: var(--tui-theme-warning-base);
3002
3695
  }
3003
3696
  :where(.tui-interface) .tui-notice.is-theme-danger {
3004
3697
  --_bg: var(--tui-notice-bg, var(--tui-theme-danger-subtlest));
3698
+ --_bg-hover: var(--tui-theme-danger-subtle);
3005
3699
  --_stripe: var(--tui-notice-stripe, var(--tui-theme-danger-base));
3700
+ --_icon-color: var(--tui-theme-danger-base);
3006
3701
  }
3007
3702
  :where(.tui-interface) .tui-notice.is-style-elevated {
3008
3703
  box-shadow: var(--tui-shadow-md);
@@ -3014,7 +3709,7 @@
3014
3709
  transition-timing-function: var(--tui-motion-timing);
3015
3710
  }
3016
3711
  :where(.tui-interface) .tui-notice.has-interaction:hover {
3017
- --_bg: var(--tui-color-bg-muted);
3712
+ --_bg: var(--_bg-hover, var(--tui-color-bg-muted));
3018
3713
  }
3019
3714
  :where(.tui-interface) .tui-notice.has-interaction:focus-visible {
3020
3715
  outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
@@ -3030,20 +3725,23 @@
3030
3725
  }
3031
3726
  :where(.tui-interface) .tui-notice.is-exiting-collapse {
3032
3727
  display: grid;
3033
- animation: tui-noticeExitCollapse 200ms var(--tui-motion-timing) forwards;
3728
+ animation: tui-noticeExitCollapse var(--tui-motion-duration) var(--tui-motion-timing) forwards;
3034
3729
  }
3035
3730
  :where(.tui-interface) .tui-notice.is-exiting-collapse .tui-notice__inner {
3036
3731
  min-height: 0;
3037
3732
  overflow: hidden;
3038
3733
  }
3039
3734
  :where(.tui-interface) .tui-notice.is-exiting-fade {
3040
- animation: tui-noticeExitFade 200ms var(--tui-motion-timing) forwards;
3735
+ animation: tui-noticeExitFade var(--tui-motion-duration) var(--tui-motion-timing) forwards;
3041
3736
  }
3042
3737
  @media (prefers-reduced-motion: reduce) {
3043
3738
  :where(.tui-interface) .tui-notice.is-exiting-collapse, :where(.tui-interface) .tui-notice.is-exiting-fade {
3044
3739
  animation: none;
3045
3740
  opacity: 0;
3046
3741
  }
3742
+ :where(.tui-interface) .tui-notice.has-interaction {
3743
+ transition-duration: 0s;
3744
+ }
3047
3745
  }
3048
3746
  @keyframes tui-noticeExitCollapse {
3049
3747
  0% {
@@ -3067,15 +3765,15 @@
3067
3765
  }
3068
3766
  .tui-notice .tui-notice__dismiss {
3069
3767
  position: absolute;
3070
- inset-block-start: var(--tui-notice-padding, var(--tui-spacing-sm));
3071
- inset-inline-end: var(--tui-notice-padding, var(--tui-spacing-sm));
3768
+ inset-block-start: var(--tui-notice-padding, var(--tui-spacing-md));
3769
+ inset-inline-end: var(--tui-notice-padding, var(--tui-spacing-md));
3072
3770
  }
3073
3771
  .tui-notice.is-layout-inline .tui-notice__dismiss {
3074
3772
  position: static;
3075
3773
  flex-shrink: 0;
3076
3774
  align-self: center;
3077
3775
  margin-inline-start: var(--tui-spacing-sm);
3078
- margin-inline-end: var(--tui-notice-padding, var(--tui-spacing-sm));
3776
+ margin-inline-end: var(--tui-notice-padding, var(--tui-spacing-md));
3079
3777
  }
3080
3778
  :where(.tui-interface) .tui-overlap-stack {
3081
3779
  display: inline-flex;
@@ -3109,7 +3807,7 @@
3109
3807
  background-color: var(--_bg);
3110
3808
  color: var(--_fg);
3111
3809
  font-size: 0.75rem;
3112
- font-weight: 500;
3810
+ font-weight: var(--tui-font-weight-medium, 500);
3113
3811
  }
3114
3812
  @media (forced-colors: active) {
3115
3813
  :where(.tui-interface) .tui-overlap-stack__overflow {
@@ -3247,6 +3945,22 @@
3247
3945
  line-height: 1.25em;
3248
3946
  user-select: none;
3249
3947
  }
3948
+ @media (forced-colors: active) {
3949
+ :where(.tui-interface) .tui-radio__indicator {
3950
+ forced-color-adjust: none;
3951
+ border-color: CanvasText;
3952
+ background-color: Canvas;
3953
+ }
3954
+ :where(.tui-interface) .tui-radio__indicator::after {
3955
+ background-color: CanvasText;
3956
+ }
3957
+ :where(.tui-interface) .tui-radio[aria-checked=true] .tui-radio__indicator {
3958
+ border-color: Highlight;
3959
+ }
3960
+ :where(.tui-interface) .tui-radio[aria-checked=true] .tui-radio__indicator::after {
3961
+ background-color: Highlight;
3962
+ }
3963
+ }
3250
3964
  :where(.tui-interface) .tui-rating {
3251
3965
  --_active: var(--tui-rating-active, var(--tui-theme-warning-base));
3252
3966
  --_inactive: var(--tui-rating-inactive, var(--tui-color-fg-muted));
@@ -3316,6 +4030,15 @@
3316
4030
  :where(.tui-interface) .tui-rating .tui-rating__star.is-active {
3317
4031
  color: var(--_active) !important;
3318
4032
  }
4033
+ @media (forced-colors: active) {
4034
+ :where(.tui-interface) .tui-rating .tui-rating__star {
4035
+ forced-color-adjust: none;
4036
+ color: GrayText !important;
4037
+ }
4038
+ :where(.tui-interface) .tui-rating .tui-rating__star.is-active {
4039
+ color: Highlight !important;
4040
+ }
4041
+ }
3319
4042
  :where(.tui-interface) .tui-progress {
3320
4043
  --_track: var(--tui-progress-track, var(--tui-color-border));
3321
4044
  --_fill: var(--tui-progress-fill, var(--tui-theme-primary-base));
@@ -3533,11 +4256,27 @@
3533
4256
  transform: rotate(1turn);
3534
4257
  }
3535
4258
  }
4259
+ @media (forced-colors: active) {
4260
+ :where(.tui-interface) .tui-progress.is-mode-line .tui-progress__track {
4261
+ forced-color-adjust: none;
4262
+ background: Canvas !important;
4263
+ border: 1px solid CanvasText;
4264
+ }
4265
+ :where(.tui-interface) .tui-progress.is-mode-line .tui-progress__bar {
4266
+ background: Highlight !important;
4267
+ }
4268
+ :where(.tui-interface) .tui-progress.is-mode-circle .tui-progress__circle__bar {
4269
+ forced-color-adjust: none;
4270
+ background: conic-gradient(Highlight calc(var(--_pct) * 1%), Canvas 0) !important;
4271
+ border: 1px solid CanvasText;
4272
+ border-radius: 50%;
4273
+ }
4274
+ }
3536
4275
  :where(.tui-interface) .tui-segmented {
3537
4276
  --_gap: var(--tui-segmented-gap, var(--tui-spacing-xs));
3538
4277
  --_padding: var(--tui-segmented-padding, var(--tui-spacing-xs));
3539
4278
  --_radius: var(--tui-segmented-radius, var(--tui-radius-lg));
3540
- --_bg: var(--tui-segmented-bg, var(--tui-color-bg-muted));
4279
+ --_bg: var(--tui-segmented-bg, var(--tui-color-bg-surface));
3541
4280
  --_border: var(--tui-segmented-border, transparent);
3542
4281
  display: inline-flex;
3543
4282
  flex-wrap: wrap;
@@ -3574,6 +4313,7 @@
3574
4313
  display: inline-flex;
3575
4314
  align-items: center;
3576
4315
  justify-content: center;
4316
+ min-height: var(--tui-control-height-md);
3577
4317
  gap: var(--tui-spacing-xs);
3578
4318
  padding: var(--_item-padding);
3579
4319
  border: none;
@@ -3644,6 +4384,7 @@
3644
4384
  .tui-interface .tui-segmented.is-size-sm .tui-segmented__item {
3645
4385
  --_item-padding: var(--tui-spacing-xs) var(--tui-spacing-sm);
3646
4386
  font-size: var(--tui-font-size-xs);
4387
+ min-height: var(--tui-control-height-sm);
3647
4388
  }
3648
4389
  :where(.tui-interface) .tui-segmented__item-icon {
3649
4390
  display: inline-flex;
@@ -3748,6 +4489,26 @@
3748
4489
  :where(.tui-interface) .tui-switch__track.is-checked .tui-switch__thumb {
3749
4490
  transform: translateX(calc(2.8575em - calc(1.4285em - 4px) - 2px - 2 * var(--tui-border-width)));
3750
4491
  }
4492
+ @media (forced-colors: active) {
4493
+ :where(.tui-interface) .tui-switch__track {
4494
+ forced-color-adjust: none;
4495
+ border: 2px solid CanvasText;
4496
+ background-color: Canvas;
4497
+ }
4498
+ :where(.tui-interface) .tui-switch__track.is-checked {
4499
+ background-color: Highlight;
4500
+ border-color: Highlight;
4501
+ }
4502
+ :where(.tui-interface) .tui-switch__track:focus-visible {
4503
+ outline-color: Highlight;
4504
+ }
4505
+ :where(.tui-interface) .tui-switch__thumb {
4506
+ background-color: CanvasText;
4507
+ }
4508
+ :where(.tui-interface) .tui-switch__track.is-checked .tui-switch__thumb {
4509
+ background-color: HighlightText;
4510
+ }
4511
+ }
3751
4512
  :where(.tui-interface) .tui-sidebar {
3752
4513
  --_width: var(--tui-sidebar-width, 320px);
3753
4514
  --_bg: var(--tui-sidebar-bg, var(--tui-color-bg-surface));
@@ -3782,6 +4543,15 @@
3782
4543
  :where(.tui-interface) .tui-sidebar__header h1, :where(.tui-interface) .tui-sidebar__header h2, :where(.tui-interface) .tui-sidebar__header h3, :where(.tui-interface) .tui-sidebar__header h4, :where(.tui-interface) .tui-sidebar__header h5, :where(.tui-interface) .tui-sidebar__header h6 {
3783
4544
  margin: 0;
3784
4545
  }
4546
+ :where(.tui-interface) .tui-sidebar__footer {
4547
+ flex-shrink: 0;
4548
+ margin-top: auto;
4549
+ padding: var(--_padding);
4550
+ border-top: var(--tui-border-width) solid var(--_border);
4551
+ display: flex;
4552
+ flex-direction: column;
4553
+ gap: var(--tui-spacing-sm);
4554
+ }
3785
4555
  :where(.tui-interface) .tui-sidebar__nav {
3786
4556
  flex: 1;
3787
4557
  overflow-y: auto;
@@ -3800,9 +4570,12 @@
3800
4570
  :where(.tui-interface) .tui-sidebar-drawer__backdrop {
3801
4571
  position: absolute;
3802
4572
  inset: 0;
3803
- background-color: var(--tui-color-bg-overlay, rgba(0, 0, 0, 0.5));
4573
+ background-color: var(--tui-color-bg-overlay);
3804
4574
  animation: tui-fadeFromTransparent var(--tui-motion-duration) var(--tui-motion-timing);
3805
4575
  }
4576
+ [data-state=closing] > :where(.tui-interface) .tui-sidebar-drawer__backdrop {
4577
+ animation: tui-fadeToTransparent var(--tui-motion-duration) var(--tui-motion-timing) forwards;
4578
+ }
3806
4579
  :where(.tui-interface) .tui-sidebar-drawer__panel {
3807
4580
  position: relative;
3808
4581
  z-index: 1;
@@ -3815,6 +4588,12 @@
3815
4588
  [data-position=right] > :where(.tui-interface) .tui-sidebar-drawer__panel {
3816
4589
  animation: tui-slideInFromRight var(--tui-motion-duration) var(--tui-motion-timing);
3817
4590
  }
4591
+ [data-state=closing][data-position=left] > :where(.tui-interface) .tui-sidebar-drawer__panel {
4592
+ animation: tui-slideOutToLeft var(--tui-motion-duration) var(--tui-motion-timing) forwards;
4593
+ }
4594
+ [data-state=closing][data-position=right] > :where(.tui-interface) .tui-sidebar-drawer__panel {
4595
+ animation: tui-slideOutToRight var(--tui-motion-duration) var(--tui-motion-timing) forwards;
4596
+ }
3818
4597
  :where(.tui-interface) .tui-sidebar-drawer__panel .tui-sidebar {
3819
4598
  height: 100%;
3820
4599
  border-left: none;
@@ -3836,6 +4615,36 @@
3836
4615
  transform: translateX(0);
3837
4616
  }
3838
4617
  }
4618
+ @keyframes tui-slideOutToLeft {
4619
+ from {
4620
+ transform: translateX(0);
4621
+ }
4622
+ to {
4623
+ transform: translateX(-100%);
4624
+ }
4625
+ }
4626
+ @keyframes tui-slideOutToRight {
4627
+ from {
4628
+ transform: translateX(0);
4629
+ }
4630
+ to {
4631
+ transform: translateX(100%);
4632
+ }
4633
+ }
4634
+ @keyframes tui-fadeToTransparent {
4635
+ from {
4636
+ opacity: 1;
4637
+ }
4638
+ to {
4639
+ opacity: 0;
4640
+ }
4641
+ }
4642
+ @media (prefers-reduced-motion: reduce) {
4643
+ :where(.tui-interface) .tui-sidebar-drawer__backdrop,
4644
+ :where(.tui-interface) .tui-sidebar-drawer__panel {
4645
+ animation: none;
4646
+ }
4647
+ }
3839
4648
  body.tui-sidebar-drawer-open {
3840
4649
  overflow: hidden;
3841
4650
  }
@@ -4054,6 +4863,10 @@
4054
4863
  align-items: stretch;
4055
4864
  flex-wrap: nowrap;
4056
4865
  }
4866
+ :where(.tui-interface) .tui-tabs[data-orientation=vertical] .tui-tabs__tab {
4867
+ text-align: start;
4868
+ justify-content: flex-start;
4869
+ }
4057
4870
  :where(.tui-interface) .tui-tabs__list {
4058
4871
  display: flex;
4059
4872
  flex-wrap: wrap;
@@ -4077,7 +4890,7 @@
4077
4890
  --_fg: var(--tui-tabs-tab-fg, var(--tui-color-fg-muted));
4078
4891
  --_border: var(--tui-tabs-tab-border, transparent);
4079
4892
  --_bg-active: var(--tui-tabs-tab-bg-active, var(--tui-theme-primary-base, currentColor));
4080
- --_fg-active: var(--tui-tabs-tab-fg-active, var(--tui-color-fg-on-accent, #fff));
4893
+ --_fg-active: var(--tui-tabs-tab-fg-active, var(--tui-color-fg-on-accent));
4081
4894
  --_bg-hover: var(--tui-tabs-tab-bg-hover, var(--tui-color-bg-muted));
4082
4895
  --_indicator: var(--tui-tabs-indicator, var(--tui-theme-primary-base, currentColor));
4083
4896
  --_indicator-size: var(--tui-tabs-indicator-size, 2px);
@@ -4093,9 +4906,9 @@
4093
4906
  background: var(--_bg);
4094
4907
  color: var(--_fg);
4095
4908
  font: inherit;
4096
- font-size: var(--tui-font-size-sm);
4909
+ font-size: var(--tui-typography-size-sm);
4097
4910
  font-weight: var(--tui-font-weight-medium, 500);
4098
- line-height: var(--tui-line-height-tight);
4911
+ line-height: var(--tui-line-height-tight, 1.25);
4099
4912
  text-decoration: none;
4100
4913
  white-space: nowrap;
4101
4914
  cursor: pointer;
@@ -4131,6 +4944,7 @@
4131
4944
  --_padding: var(--tui-tabs-tab-padding, var(--tui-spacing-sm) var(--tui-spacing-xs));
4132
4945
  --_radius: 0;
4133
4946
  --_bg-hover: transparent;
4947
+ --_fg-active: var(--tui-tabs-tab-fg-active, var(--tui-color-fg));
4134
4948
  position: relative;
4135
4949
  margin-block-end: calc(var(--tui-border-width) * -1);
4136
4950
  border-bottom: var(--_indicator-size) solid transparent;
@@ -4140,7 +4954,7 @@
4140
4954
  color: var(--tui-color-fg);
4141
4955
  }
4142
4956
  .tui-interface [data-variant=underline] .tui-tabs__tab[data-state=active] {
4143
- color: var(--tui-color-fg);
4957
+ color: var(--_fg-active);
4144
4958
  border-bottom-color: var(--_indicator);
4145
4959
  }
4146
4960
  .tui-interface [data-variant=underline] .tui-tabs__tab:focus-visible {
@@ -4150,11 +4964,12 @@
4150
4964
  --_radius: var(--tui-tabs-tab-radius, var(--tui-radius-full));
4151
4965
  --_border: var(--tui-tabs-tab-border, var(--tui-color-border));
4152
4966
  --_bg-hover: var(--tui-tabs-tab-bg-hover, var(--tui-color-bg-muted));
4967
+ --_fg-active: var(--tui-tabs-tab-fg-active, var(--tui-theme-primary-strong, currentColor));
4153
4968
  border: var(--tui-border-width) solid var(--_border);
4154
4969
  }
4155
4970
  .tui-interface [data-variant=outline] .tui-tabs__tab[data-state=active] {
4156
4971
  --_border: var(--tui-theme-primary-base, currentColor);
4157
- color: var(--tui-theme-primary-strong, currentColor);
4972
+ color: var(--_fg-active);
4158
4973
  background: var(--tui-theme-primary-subtlest, transparent);
4159
4974
  }
4160
4975
  :where(.tui-interface) .tui-tabs__panel[data-state=inactive] {
@@ -4198,15 +5013,18 @@
4198
5013
  :where(.tui-interface) .tui-textarea {
4199
5014
  --_fs: var(--tui-typography-size-md);
4200
5015
  --_py: var(--tui-spacing-xxs);
5016
+ --_height: calc(2em + 2 * var(--_py));
4201
5017
  font-size: var(--_fs);
4202
5018
  padding-block: var(--_py);
4203
- min-height: calc(2em + 2 * var(--_py));
5019
+ min-height: var(--tui-control-height-md, var(--_height));
4204
5020
  }
4205
5021
  :where(.tui-interface) .tui-textarea.is-size-sm {
4206
5022
  --_fs: var(--tui-typography-size-sm);
5023
+ min-height: var(--tui-control-height-sm, var(--_height));
4207
5024
  }
4208
5025
  :where(.tui-interface) .tui-textarea.is-size-lg {
4209
5026
  --_fs: var(--tui-typography-size-lg);
5027
+ min-height: var(--tui-control-height-lg, var(--_height));
4210
5028
  }
4211
5029
  :where(.tui-interface) .tui-textarea {
4212
5030
  min-height: calc(4em + 2 * var(--_py));
@@ -4226,15 +5044,18 @@
4226
5044
  --_radius: var(--tui-input-radius, var(--tui-radius-md));
4227
5045
  --_fs: var(--tui-typography-size-md);
4228
5046
  --_py: var(--tui-spacing-xxs);
5047
+ --_height: calc(2em + 2 * var(--_py));
4229
5048
  font-size: var(--_fs);
4230
5049
  padding-block: var(--_py);
4231
- min-height: calc(2em + 2 * var(--_py));
5050
+ min-height: var(--tui-control-height-md, var(--_height));
4232
5051
  }
4233
5052
  :where(.tui-interface) .tui-input-group.is-size-sm {
4234
5053
  --_fs: var(--tui-typography-size-sm);
5054
+ min-height: var(--tui-control-height-sm, var(--_height));
4235
5055
  }
4236
5056
  :where(.tui-interface) .tui-input-group.is-size-lg {
4237
5057
  --_fs: var(--tui-typography-size-lg);
5058
+ min-height: var(--tui-control-height-lg, var(--_height));
4238
5059
  }
4239
5060
  :where(.tui-interface) .tui-input-group {
4240
5061
  display: inline-flex;
@@ -4244,10 +5065,12 @@
4244
5065
  border: var(--tui-border-width) solid var(--_border);
4245
5066
  border-radius: var(--_radius);
4246
5067
  padding-inline: var(--tui-spacing-xs);
5068
+ cursor: text;
4247
5069
  }
4248
5070
  :where(.tui-interface) .tui-input-group .tui-input,
4249
5071
  :where(.tui-interface) .tui-input-group input {
4250
5072
  border: none;
5073
+ border-radius: 0;
4251
5074
  background: transparent;
4252
5075
  padding-inline: 0;
4253
5076
  padding-block: 0;
@@ -4293,6 +5116,31 @@
4293
5116
  :where(.tui-interface) .tui-input-group__suffix .tui-icon {
4294
5117
  font-size: 1em;
4295
5118
  }
5119
+ :where(.tui-interface) .tui-input-group__prefix.is-text,
5120
+ :where(.tui-interface) .tui-input-group__suffix.is-text {
5121
+ background-color: var(--tui-color-bg-surface);
5122
+ padding-inline: var(--tui-spacing-xs);
5123
+ margin-block: calc(-1 * var(--_py));
5124
+ align-self: stretch;
5125
+ display: inline-flex;
5126
+ align-items: center;
5127
+ }
5128
+ :where(.tui-interface) .tui-input-group__prefix.is-text {
5129
+ border-inline-end: var(--tui-border-width) solid var(--_border);
5130
+ border-start-start-radius: calc(var(--_radius) - var(--tui-border-width));
5131
+ border-end-start-radius: calc(var(--_radius) - var(--tui-border-width));
5132
+ }
5133
+ :where(.tui-interface) .tui-input-group__suffix.is-text {
5134
+ border-inline-start: var(--tui-border-width) solid var(--_border);
5135
+ border-start-end-radius: calc(var(--_radius) - var(--tui-border-width));
5136
+ border-end-end-radius: calc(var(--_radius) - var(--tui-border-width));
5137
+ }
5138
+ :where(.tui-interface) .tui-input-group:has(> .tui-input-group__prefix.is-text) {
5139
+ padding-inline-start: 0;
5140
+ }
5141
+ :where(.tui-interface) .tui-input-group:has(> .tui-input-group__suffix.is-text) {
5142
+ padding-inline-end: 0;
5143
+ }
4296
5144
  :where(.tui-interface) .tui-toolbar {
4297
5145
  --_gap: var(--tui-toolbar-gap, var(--tui-spacing-sm));
4298
5146
  --_padding: var(--tui-toolbar-padding, 0);
@@ -4325,30 +5173,46 @@
4325
5173
  :where(.tui-interface) .tui-tooltip {
4326
5174
  --_bg: var(--tui-tooltip-bg, var(--tui-color-bg-inverted));
4327
5175
  --_fg: var(--tui-tooltip-fg, var(--tui-color-fg-inverted));
4328
- --_radius: var(--tui-tooltip-radius, var(--tui-radius-xs));
5176
+ --_radius: var(--tui-tooltip-radius, var(--tui-radius-sm));
4329
5177
  --_z: var(--tui-tooltip-z, var(--tui-layer-top));
4330
5178
  z-index: var(--_z);
4331
5179
  width: max-content;
4332
5180
  max-width: min(250px, 100vw - 2 * var(--tui-spacing-xs, 8px));
4333
- padding: 0.27em 0.54em;
5181
+ padding: 0.35em 0.65em;
4334
5182
  pointer-events: auto;
4335
5183
  background-color: var(--_bg);
4336
5184
  color: var(--_fg);
4337
5185
  border-radius: var(--_radius);
4338
- font-size: var(--tui-typography-size-xs, 11px);
5186
+ font-size: var(--tui-typography-size-sm, 13px);
4339
5187
  line-height: 1.4;
4340
5188
  animation: tui-fadeFromTransparent var(--tui-motion-duration) var(--tui-motion-timing);
4341
5189
  }
5190
+ :where(.tui-interface) .tui-tooltip.is-theme-light {
5191
+ --_bg: var(--tui-tooltip-bg, var(--tui-color-bg-surface));
5192
+ --_fg: var(--tui-tooltip-fg, var(--tui-color-fg));
5193
+ border: 1px solid var(--tui-color-border);
5194
+ }
5195
+ :where(.tui-interface) .tui-tooltip__arrow {
5196
+ fill: var(--_bg);
5197
+ }
4342
5198
  :where(.tui-interface) [data-tooltip-open]:focus-visible {
4343
5199
  outline: var(--tui-focus-ring-width) solid var(--tui-focus-ring-color);
4344
5200
  outline-offset: var(--tui-focus-ring-offset);
4345
5201
  }
5202
+ @media (prefers-reduced-motion: reduce) {
5203
+ :where(.tui-interface) .tui-tooltip {
5204
+ animation: none;
5205
+ }
5206
+ }
4346
5207
  @media (forced-colors: active) {
4347
5208
  :where(.tui-interface) .tui-tooltip {
4348
5209
  background-color: Canvas;
4349
5210
  color: CanvasText;
4350
5211
  border: 1px solid CanvasText;
4351
5212
  }
5213
+ :where(.tui-interface) .tui-tooltip__arrow {
5214
+ fill: Canvas;
5215
+ }
4352
5216
  }
4353
5217
  }
4354
5218
  @layer utilities {