@tangible/ui 0.0.2 → 0.0.3

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.
@@ -15,6 +15,7 @@
15
15
  @use "../../components/Icon/styles" as icon;
16
16
  @use "../../components/IconButton/styles" as iconbutton;
17
17
  @use "../../components/Modal/styles" as modal;
18
+ @use "../../components/MoveHandle/styles" as movehandle;
18
19
  @use "../../components/Notice/styles" as notice;
19
20
  @use "../../components/OverlapStack/styles" as overlapstack;
20
21
  @use "../../components/Pager/styles" as pager;
@@ -51,6 +52,7 @@
51
52
  @include icon.styles();
52
53
  @include iconbutton.styles();
53
54
  @include modal.styles();
55
+ @include movehandle.styles();
54
56
  @include notice.styles();
55
57
  @include overlapstack.styles();
56
58
  @include pager.styles();
package/styles/index.scss CHANGED
@@ -10,6 +10,10 @@
10
10
  @include sys.emit-color-roles-dark(sys.$prefix);
11
11
  @include sys.emit-color-roles-auto(sys.$prefix);
12
12
 
13
+ @include sys.emit-accent-roles(sys.$prefix);
14
+ @include sys.emit-accent-roles-dark(sys.$prefix);
15
+ @include sys.emit-accent-roles-auto(sys.$prefix);
16
+
13
17
  // Reduced motion: kill all token-driven transitions/animations globally.
14
18
  // Components using --tui-motion-duration get instant transitions for free.
15
19
  @media (prefers-reduced-motion: reduce) {
@@ -47,6 +51,7 @@
47
51
  0 2px 4px rgba(var(--#{sys.$prefix}shadow-color), 0.06);
48
52
  --#{sys.$prefix}shadow-lg: 0 10px 15px rgba(var(--#{sys.$prefix}shadow-color), 0.1),
49
53
  0 4px 6px rgba(var(--#{sys.$prefix}shadow-color), 0.05);
54
+ --#{sys.$prefix}shadow-dropdown: 0 4px 12px rgba(var(--#{sys.$prefix}shadow-color), 0.15);
50
55
  }
51
56
  @layer resets {
52
57
  .#{sys.$prefix}interface {
@@ -16,6 +16,13 @@
16
16
  // md → 16px font → 40px (default)
17
17
  // lg → 20px font → 48px
18
18
  //
19
+ // Override from consuming context (e.g. Fields for WordPress):
20
+ // .my-context .tui-interface {
21
+ // --tui-control-height-sm: 32px;
22
+ // --tui-control-height-md: 36px;
23
+ // --tui-control-height-lg: 44px;
24
+ // }
25
+ //
19
26
  // Usage:
20
27
  // .tui-select__trigger { @include sys.control-sizing(sys.$prefix); }
21
28
  //
@@ -24,11 +31,19 @@
24
31
  @mixin control-sizing($prefix) {
25
32
  --_fs: var(--#{$prefix}typography-size-md);
26
33
  --_py: var(--#{$prefix}spacing-xxs);
34
+ --_height: calc(2em + 2 * var(--_py));
27
35
 
28
36
  font-size: var(--_fs);
29
37
  padding-block: var(--_py);
30
- min-height: calc(2em + 2 * var(--_py));
38
+ min-height: var(--#{$prefix}control-height-md, var(--_height));
39
+
40
+ &.is-size-sm {
41
+ --_fs: var(--#{$prefix}typography-size-sm);
42
+ min-height: var(--#{$prefix}control-height-sm, var(--_height));
43
+ }
31
44
 
32
- &.is-size-sm { --_fs: var(--#{$prefix}typography-size-sm); }
33
- &.is-size-lg { --_fs: var(--#{$prefix}typography-size-lg); }
45
+ &.is-size-lg {
46
+ --_fs: var(--#{$prefix}typography-size-lg);
47
+ min-height: var(--#{$prefix}control-height-lg, var(--_height));
48
+ }
34
49
  }
@@ -62,7 +62,8 @@ $brand: 'blue';
62
62
 
63
63
  /* Neutral: surfaces */
64
64
  --#{$prefix}color-bg: #fff;
65
- --#{$prefix}color-bg-surface: #{pf.tone($neutral, 25)};
65
+ --#{$prefix}color-bg-surface: #{pf.tone($neutral, 25)};
66
+ --#{$prefix}color-bg-muted: #{pf.tone($neutral, 100)};
66
67
  --#{$prefix}color-bg-elevated: #fff;
67
68
  --#{$prefix}color-bg-inverted: #{pf.tone($neutral, 900)};
68
69
  --#{$prefix}color-bg-overlay: rgba(0, 0, 0, var(--#{$prefix}opacity-backdrop));
@@ -149,7 +150,8 @@ $brand: 'blue';
149
150
  /* Backgrounds */
150
151
  --#{$prefix}color-bg: #{pf.tone($neutral, 900)};
151
152
  --#{$prefix}color-bg-surface: #{pf.tone($neutral, 800)};
152
- --#{$prefix}color-bg-elevated: #{pf.tone($neutral, 700)};
153
+ --#{$prefix}color-bg-muted: #{pf.tone($neutral, 700)};
154
+ --#{$prefix}color-bg-elevated: #{pf.tone($neutral, 900)};
153
155
  --#{$prefix}color-bg-inverted: #{pf.tone($neutral, 50)};
154
156
  --#{$prefix}color-bg-overlay: rgba(0, 0, 0, 0.7);
155
157
 
@@ -221,6 +223,118 @@ $brand: 'blue';
221
223
  }
222
224
  }
223
225
 
226
+ // ==========================================================================
227
+ // Accent Roles (compact, OKLCH-derived)
228
+ // ==========================================================================
229
+ //
230
+ // For concepts that need their own colour identity but don't warrant a full
231
+ // 7-step scale (section, page, step, or any future accent slot).
232
+ //
233
+ // Public API per accent (component-safe):
234
+ // --tui-theme-{name}-base Primary fill (buttons, active states)
235
+ // --tui-theme-{name}-soft Tinted surface (chips, badges, subtle panels)
236
+ // --tui-theme-{name}-border Border for soft surfaces
237
+ // --tui-theme-{name}-on-base Foreground on base
238
+ // --tui-theme-{name}-on-soft Foreground on soft
239
+ //
240
+ // Components must only consume these role tokens, not the palette anchors.
241
+ //
242
+ // Primitives (swizzlable by consumers, OKLCH path only):
243
+ // --tui-palette-{name}-c OKLCH chroma (cap at ≤ 0.20)
244
+ // --tui-palette-{name}-h OKLCH hue (0–360)
245
+ //
246
+ // Two strategies for defining accents:
247
+ //
248
+ // Path A — map from existing core families (no OKLCH needed):
249
+ // .my-context {
250
+ // --tui-theme-section-base: var(--tui-theme-warning-base);
251
+ // --tui-theme-section-soft: var(--tui-theme-warning-subtle);
252
+ // --tui-theme-section-border: var(--tui-theme-warning-soft);
253
+ // --tui-theme-section-on-base: var(--tui-color-fg-on-accent);
254
+ // --tui-theme-section-on-soft: var(--tui-color-fg);
255
+ // }
256
+ //
257
+ // Path B — derive from OKLCH anchors (true custom accent):
258
+ // Uses @supports guard with Path A fallback. No silent failures.
259
+ //
260
+ // ==========================================================================
261
+
262
+ // Each accent: OKLCH anchors (c, h) + fallback core family for @supports guard
263
+ $accent-defaults: (
264
+ section: (c: 0.17, h: 55, fallback: warning), // warm orange/amber
265
+ page: (c: 0.15, h: 280, fallback: primary), // purple
266
+ step: (c: 0.14, h: 200, fallback: info), // teal-blue
267
+ ) !default;
268
+
269
+ // Emit accent role tokens with @supports progressive enhancement.
270
+ // Fallback (all browsers): maps role tokens from core family scales.
271
+ // Enhancement (oklch browsers): overrides with OKLCH-derived values.
272
+ @mixin emit-accent-roles($prefix, $accents: $accent-defaults) {
273
+ // --- Fallback: map from core families (works everywhere) ---
274
+ :where(.#{$prefix}interface) {
275
+ @each $name, $values in $accents {
276
+ $family: map.get($values, fallback);
277
+
278
+ /* Accent: #{$name} (fallback → #{$family}) */
279
+ --#{$prefix}theme-#{$name}-base: var(--#{$prefix}theme-#{$family}-base);
280
+ --#{$prefix}theme-#{$name}-soft: var(--#{$prefix}theme-#{$family}-subtle);
281
+ --#{$prefix}theme-#{$name}-border: var(--#{$prefix}theme-#{$family}-soft);
282
+ --#{$prefix}theme-#{$name}-on-base: var(--#{$prefix}color-fg-on-accent);
283
+ --#{$prefix}theme-#{$name}-on-soft: var(--#{$prefix}color-fg);
284
+ }
285
+ }
286
+
287
+ // --- Enhancement: OKLCH-derived (modern browsers) ---
288
+ @supports (color: oklch(0.5 0.1 0)) {
289
+ :where(.#{$prefix}interface) {
290
+ @each $name, $values in $accents {
291
+ $c: map.get($values, c);
292
+ $h: map.get($values, h);
293
+
294
+ /* Accent: #{$name} (OKLCH c=#{$c} h=#{$h}) */
295
+ --#{$prefix}palette-#{$name}-c: #{$c};
296
+ --#{$prefix}palette-#{$name}-h: #{$h};
297
+
298
+ --#{$prefix}theme-#{$name}-base: oklch(0.62 var(--#{$prefix}palette-#{$name}-c) var(--#{$prefix}palette-#{$name}-h));
299
+ --#{$prefix}theme-#{$name}-soft: oklch(0.92 calc(var(--#{$prefix}palette-#{$name}-c) * 0.55) var(--#{$prefix}palette-#{$name}-h));
300
+ --#{$prefix}theme-#{$name}-border: oklch(0.80 calc(var(--#{$prefix}palette-#{$name}-c) * 0.45) var(--#{$prefix}palette-#{$name}-h));
301
+ --#{$prefix}theme-#{$name}-on-base: oklch(0.98 0 0);
302
+ --#{$prefix}theme-#{$name}-on-soft: var(--#{$prefix}color-fg);
303
+ }
304
+ }
305
+ }
306
+ }
307
+
308
+ // Private: dark mode accent OKLCH overrides (swap L values, tighten chroma).
309
+ // Fallback path needs no dark override — core family vars already handle it.
310
+ @mixin _accent-dark-overrides($prefix, $accents: $accent-defaults) {
311
+ @supports (color: oklch(0.5 0.1 0)) {
312
+ @each $name, $_ in $accents {
313
+ --#{$prefix}theme-#{$name}-base: oklch(0.72 var(--#{$prefix}palette-#{$name}-c) var(--#{$prefix}palette-#{$name}-h));
314
+ --#{$prefix}theme-#{$name}-soft: oklch(0.30 calc(var(--#{$prefix}palette-#{$name}-c) * 0.35) var(--#{$prefix}palette-#{$name}-h));
315
+ --#{$prefix}theme-#{$name}-border: oklch(0.38 calc(var(--#{$prefix}palette-#{$name}-c) * 0.30) var(--#{$prefix}palette-#{$name}-h));
316
+ --#{$prefix}theme-#{$name}-on-base: oklch(0.18 0 0);
317
+ --#{$prefix}theme-#{$name}-on-soft: var(--#{$prefix}color-fg);
318
+ }
319
+ }
320
+ }
321
+
322
+ // Public: explicit dark mode (data-theme="dark")
323
+ @mixin emit-accent-roles-dark($prefix, $accents: $accent-defaults) {
324
+ :where(.#{$prefix}interface)[data-theme="dark"] {
325
+ @include _accent-dark-overrides($prefix, $accents);
326
+ }
327
+ }
328
+
329
+ // Public: auto mode - respects system preference (data-theme="auto")
330
+ @mixin emit-accent-roles-auto($prefix, $accents: $accent-defaults) {
331
+ @media (prefers-color-scheme: dark) {
332
+ :where(.#{$prefix}interface)[data-theme="auto"] {
333
+ @include _accent-dark-overrides($prefix, $accents);
334
+ }
335
+ }
336
+ }
337
+
224
338
  @mixin emit-spacing-primitives($prefix, $steps: $spacing-steps) {
225
339
  @each $n in $steps {
226
340
  --#{$prefix}palette-spacing-#{$n}: calc(var(--#{$prefix}spacing-base) * #{$n});
package/tui-manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.0.2",
3
- "generated": "2026-02-17T04:01:35.339Z",
2
+ "version": "0.0.3",
3
+ "generated": "2026-02-24T00:56:13.287Z",
4
4
  "components": {
5
5
  "Accordion": {
6
6
  "props": {
@@ -128,7 +128,21 @@
128
128
  "description": "Additional CSS class"
129
129
  }
130
130
  },
131
- "cssTokens": [],
131
+ "cssTokens": [
132
+ "--tui-avatar-size",
133
+ "--tui-avatar-radius",
134
+ "--tui-avatar-bg",
135
+ "--tui-avatar-fg",
136
+ "--tui-avatar-border",
137
+ "--tui-avatar-indicator-bg",
138
+ "--tui-avatar-indicator-fg",
139
+ "--tui-avatar-overflow-bg",
140
+ "--tui-avatar-overflow-fg",
141
+ "--tui-avatar-group-overlap",
142
+ "--tui-avatar-group-gap",
143
+ "--tui-avatar-group-border-width",
144
+ "--tui-avatar-group-border-color"
145
+ ],
132
146
  "story": {
133
147
  "title": "Primitives/Avatar",
134
148
  "tags": [
@@ -270,7 +284,10 @@
270
284
  "--tui-button-radius",
271
285
  "--tui-button-bg-interact",
272
286
  "--tui-button-fg-interact",
273
- "--tui-button-border-interact"
287
+ "--tui-button-border-interact",
288
+ "--tui-control-height-sm",
289
+ "--tui-control-height-md",
290
+ "--tui-control-height-lg"
274
291
  ],
275
292
  "story": {
276
293
  "title": "Primitives/Button",
@@ -474,7 +491,9 @@
474
491
  "required": false
475
492
  }
476
493
  },
477
- "cssTokens": [],
494
+ "cssTokens": [
495
+ "--tui-input-accent"
496
+ ],
478
497
  "story": {
479
498
  "title": "Forms/Checkbox",
480
499
  "tags": [
@@ -576,7 +595,13 @@
576
595
  "required": false
577
596
  }
578
597
  },
579
- "cssTokens": [],
598
+ "cssTokens": [
599
+ "--tui-chip-bg",
600
+ "--tui-chip-fg",
601
+ "--tui-chip-border",
602
+ "--tui-chip-icon",
603
+ "--tui-chip-radius"
604
+ ],
580
605
  "story": {
581
606
  "title": "Primitives/Chip",
582
607
  "tags": [
@@ -620,7 +645,9 @@
620
645
  "required": false
621
646
  }
622
647
  },
623
- "cssTokens": [],
648
+ "cssTokens": [
649
+ "--tui-chip-group-gap"
650
+ ],
624
651
  "story": {
625
652
  "title": "Primitives/ChipGroup",
626
653
  "tags": [
@@ -724,7 +751,19 @@
724
751
  "description": "Class name applied directly to the `<input>` element.\nUse for utilities like `tui-input-reset` that must target the input itself."
725
752
  }
726
753
  },
727
- "cssTokens": [],
754
+ "cssTokens": [
755
+ "--tui-combobox-input-bg",
756
+ "--tui-combobox-input-fg",
757
+ "--tui-combobox-input-border",
758
+ "--tui-combobox-input-border-focus",
759
+ "--tui-combobox-input-radius",
760
+ "--tui-combobox-content-bg",
761
+ "--tui-combobox-content-border",
762
+ "--tui-combobox-content-shadow",
763
+ "--tui-combobox-content-radius",
764
+ "--tui-combobox-option-bg-hover",
765
+ "--tui-combobox-option-bg-selected"
766
+ ],
728
767
  "story": {
729
768
  "title": "Forms/Combobox",
730
769
  "tags": [
@@ -773,7 +812,11 @@
773
812
  "description": "Additional CSS class names."
774
813
  }
775
814
  },
776
- "cssTokens": [],
815
+ "cssTokens": [
816
+ "--tui-content-indicator-bg",
817
+ "--tui-content-indicator-border",
818
+ "--tui-content-indicator-fg"
819
+ ],
777
820
  "story": {
778
821
  "title": "Primitives/ContentIndicator",
779
822
  "tags": [
@@ -802,7 +845,17 @@
802
845
  "description": "Default open state for uncontrolled usage."
803
846
  }
804
847
  },
805
- "cssTokens": [],
848
+ "cssTokens": [
849
+ "--tui-dropdown-bg",
850
+ "--tui-dropdown-fg",
851
+ "--tui-dropdown-radius",
852
+ "--tui-dropdown-shadow",
853
+ "--tui-dropdown-border",
854
+ "--tui-dropdown-z",
855
+ "--tui-dropdown-min-width",
856
+ "--tui-dropdown-item-bg-hover",
857
+ "--tui-dropdown-item-bg-active"
858
+ ],
806
859
  "story": {
807
860
  "title": "Primitives/Dropdown",
808
861
  "tags": [
@@ -890,7 +943,14 @@
890
943
  "required": false
891
944
  }
892
945
  },
893
- "cssTokens": [],
946
+ "cssTokens": [
947
+ "--tui-icon-size-xs",
948
+ "--tui-icon-size-sm",
949
+ "--tui-icon-size-md",
950
+ "--tui-icon-size-lg",
951
+ "--tui-icon-size-xl",
952
+ "--tui-icon-size-xxl"
953
+ ],
894
954
  "story": {
895
955
  "title": "Primitives/Icon",
896
956
  "tags": [
@@ -1003,7 +1063,14 @@
1003
1063
  "required": false
1004
1064
  }
1005
1065
  },
1006
- "cssTokens": [],
1066
+ "cssTokens": [
1067
+ "--tui-icon-button-bg",
1068
+ "--tui-icon-button-fg",
1069
+ "--tui-icon-button-border",
1070
+ "--tui-icon-button-radius",
1071
+ "--tui-icon-button-bg-interact",
1072
+ "--tui-icon-button-fg-interact"
1073
+ ],
1007
1074
  "story": {
1008
1075
  "title": "Primitives/IconButton",
1009
1076
  "tags": [
@@ -1083,6 +1150,75 @@
1083
1150
  "Notice"
1084
1151
  ]
1085
1152
  },
1153
+ "MoveHandle": {
1154
+ "props": {
1155
+ "mode": {
1156
+ "type": "\"full\" | \"handle\"",
1157
+ "required": false,
1158
+ "defaultValue": "full",
1159
+ "description": "Structural mode. 'full' (default) shows background panel with arrows/index. 'handle' shows only the bare drag icon button."
1160
+ },
1161
+ "size": {
1162
+ "type": "\"sm\" | \"md\"",
1163
+ "required": false,
1164
+ "defaultValue": "md",
1165
+ "description": "Component scale. sm = 32px, md = 40px. Ignored when mode is 'handle'."
1166
+ },
1167
+ "index": {
1168
+ "type": "number",
1169
+ "required": false,
1170
+ "description": "Position index. When provided, shows number at rest, drag handle on hover."
1171
+ },
1172
+ "locked": {
1173
+ "type": "boolean",
1174
+ "required": false,
1175
+ "defaultValue": "false",
1176
+ "description": "When true, shows lock icon and disables all interaction."
1177
+ },
1178
+ "canMoveUp": {
1179
+ "type": "boolean",
1180
+ "required": false,
1181
+ "defaultValue": "true",
1182
+ "description": "When false, disables the move-up button without hiding it. Default: true."
1183
+ },
1184
+ "canMoveDown": {
1185
+ "type": "boolean",
1186
+ "required": false,
1187
+ "defaultValue": "true",
1188
+ "description": "When false, disables the move-down button without hiding it. Default: true."
1189
+ },
1190
+ "labels": {
1191
+ "type": "MoveHandleLabels",
1192
+ "required": false,
1193
+ "description": "Override internal button labels for i18n."
1194
+ },
1195
+ "dragHandleProps": {
1196
+ "type": "HTMLAttributes<HTMLButtonElement>",
1197
+ "required": false,
1198
+ "description": "Props to spread on the drag handle button (e.g., from dnd-kit useSortable)."
1199
+ },
1200
+ "className": {
1201
+ "type": "string",
1202
+ "required": false
1203
+ }
1204
+ },
1205
+ "cssTokens": [
1206
+ "--tui-move-handle-size",
1207
+ "--tui-move-handle-icon-size"
1208
+ ],
1209
+ "story": {
1210
+ "title": "Components/MoveHandle",
1211
+ "tags": [
1212
+ "autodocs",
1213
+ "lms"
1214
+ ]
1215
+ },
1216
+ "subcomponents": null,
1217
+ "description": null,
1218
+ "gotchas": null,
1219
+ "examples": null,
1220
+ "related": null
1221
+ },
1086
1222
  "MultiSelect": {
1087
1223
  "props": {
1088
1224
  "size": {
@@ -1141,7 +1277,21 @@
1141
1277
  "description": "Optional trigger ID override.\nUseful for Field integration via htmlFor."
1142
1278
  }
1143
1279
  },
1144
- "cssTokens": [],
1280
+ "cssTokens": [
1281
+ "--tui-multiselect-trigger-bg",
1282
+ "--tui-multiselect-trigger-fg",
1283
+ "--tui-multiselect-trigger-border",
1284
+ "--tui-multiselect-trigger-border-focus",
1285
+ "--tui-multiselect-trigger-radius",
1286
+ "--tui-multiselect-content-bg",
1287
+ "--tui-multiselect-content-border",
1288
+ "--tui-multiselect-content-shadow",
1289
+ "--tui-multiselect-content-radius",
1290
+ "--tui-multiselect-option-bg-hover",
1291
+ "--tui-multiselect-option-bg-selected",
1292
+ "--tui-multiselect-chip-bg",
1293
+ "--tui-multiselect-chip-fg"
1294
+ ],
1145
1295
  "story": {
1146
1296
  "title": "Forms/MultiSelect",
1147
1297
  "tags": [
@@ -1350,7 +1500,14 @@
1350
1500
  "description": "Inline styles"
1351
1501
  }
1352
1502
  },
1353
- "cssTokens": [],
1503
+ "cssTokens": [
1504
+ "--tui-overlap-stack-overlap",
1505
+ "--tui-overlap-stack-overflow-bg",
1506
+ "--tui-overlap-stack-overflow-fg",
1507
+ "--tui-overlap-stack-item-radius",
1508
+ "--tui-overlap-stack-border-width",
1509
+ "--tui-overlap-stack-border-color"
1510
+ ],
1354
1511
  "story": {
1355
1512
  "title": "Components/OverlapStack",
1356
1513
  "tags": [
@@ -1410,7 +1567,9 @@
1410
1567
  "description": "Additional class name"
1411
1568
  }
1412
1569
  },
1413
- "cssTokens": [],
1570
+ "cssTokens": [
1571
+ "--tui-pager-gap"
1572
+ ],
1414
1573
  "story": {
1415
1574
  "title": "Primitives/Pager",
1416
1575
  "tags": [
@@ -1505,7 +1664,17 @@
1505
1664
  "description": "Visual variant for circle mode.\n- `'ring'`: Hollow centre (default) — shows progress as a ring/donut\n- `'solid'`: Filled centre — shows as a solid filled circle\n\nOnly applies when `mode=\"circle\"`. Ignored in line mode."
1506
1665
  }
1507
1666
  },
1508
- "cssTokens": [],
1667
+ "cssTokens": [
1668
+ "--tui-progress-track",
1669
+ "--tui-progress-fill",
1670
+ "--tui-progress-label",
1671
+ "--tui-progress-radius",
1672
+ "--tui-progress-z1-fill",
1673
+ "--tui-progress-z2-fill",
1674
+ "--tui-progress-z3-fill",
1675
+ "--tui-progress-z4-fill",
1676
+ "--tui-progress-z5-fill"
1677
+ ],
1509
1678
  "story": {
1510
1679
  "title": "Primitives/Progress",
1511
1680
  "tags": [
@@ -1535,7 +1704,9 @@
1535
1704
  "required": false
1536
1705
  }
1537
1706
  },
1538
- "cssTokens": [],
1707
+ "cssTokens": [
1708
+ "--tui-radio-accent"
1709
+ ],
1539
1710
  "story": {
1540
1711
  "title": "Forms/RadioGroup",
1541
1712
  "tags": [
@@ -1609,7 +1780,11 @@
1609
1780
  "description": "Gap override (e.g. '0.25rem') – otherwise uses density utilities"
1610
1781
  }
1611
1782
  },
1612
- "cssTokens": [],
1783
+ "cssTokens": [
1784
+ "--tui-rating-active",
1785
+ "--tui-rating-inactive",
1786
+ "--tui-rating-scale"
1787
+ ],
1613
1788
  "story": {
1614
1789
  "title": "Primitives/Rating",
1615
1790
  "tags": [
@@ -1666,7 +1841,18 @@
1666
1841
  "description": "Additional classes"
1667
1842
  }
1668
1843
  },
1669
- "cssTokens": [],
1844
+ "cssTokens": [
1845
+ "--tui-segmented-gap",
1846
+ "--tui-segmented-padding",
1847
+ "--tui-segmented-radius",
1848
+ "--tui-segmented-bg",
1849
+ "--tui-segmented-border",
1850
+ "--tui-segmented-item-padding",
1851
+ "--tui-segmented-item-radius",
1852
+ "--tui-segmented-item-fg",
1853
+ "--tui-segmented-item-bg-active",
1854
+ "--tui-segmented-item-fg-active"
1855
+ ],
1670
1856
  "story": {
1671
1857
  "title": "Components/SegmentedControl",
1672
1858
  "tags": [
@@ -1745,7 +1931,19 @@
1745
1931
  "description": "Optional trigger ID override.\nUseful for Field integration via htmlFor."
1746
1932
  }
1747
1933
  },
1748
- "cssTokens": [],
1934
+ "cssTokens": [
1935
+ "--tui-select-trigger-bg",
1936
+ "--tui-select-trigger-fg",
1937
+ "--tui-select-trigger-border",
1938
+ "--tui-select-trigger-border-focus",
1939
+ "--tui-select-trigger-radius",
1940
+ "--tui-select-content-bg",
1941
+ "--tui-select-content-border",
1942
+ "--tui-select-content-shadow",
1943
+ "--tui-select-content-radius",
1944
+ "--tui-select-option-bg-hover",
1945
+ "--tui-select-option-bg-selected"
1946
+ ],
1749
1947
  "story": {
1750
1948
  "title": "Forms/Select",
1751
1949
  "tags": [
@@ -1794,7 +1992,13 @@
1794
1992
  "description": "Additional CSS class names."
1795
1993
  }
1796
1994
  },
1797
- "cssTokens": [],
1995
+ "cssTokens": [
1996
+ "--tui-sidebar-width",
1997
+ "--tui-sidebar-bg",
1998
+ "--tui-sidebar-border",
1999
+ "--tui-sidebar-padding",
2000
+ "--tui-sidebar-z"
2001
+ ],
1798
2002
  "story": {
1799
2003
  "title": "Components/Sidebar",
1800
2004
  "tags": [
@@ -1889,7 +2093,14 @@
1889
2093
  "description": "Additional CSS class names."
1890
2094
  }
1891
2095
  },
1892
- "cssTokens": [],
2096
+ "cssTokens": [
2097
+ "--tui-steplist-gap",
2098
+ "--tui-steplist-padding",
2099
+ "--tui-steplist-radius",
2100
+ "--tui-steplist-current-bg",
2101
+ "--tui-steplist-current-border",
2102
+ "--tui-steplist-hover-bg"
2103
+ ],
1893
2104
  "story": {
1894
2105
  "title": "Components/StepList",
1895
2106
  "tags": [
@@ -1944,7 +2155,10 @@
1944
2155
  "required": false
1945
2156
  }
1946
2157
  },
1947
- "cssTokens": [],
2158
+ "cssTokens": [
2159
+ "--tui-switch-accent",
2160
+ "--tui-switch-track-off"
2161
+ ],
1948
2162
  "story": {
1949
2163
  "title": "Forms/Switch",
1950
2164
  "tags": [
@@ -2190,7 +2404,9 @@
2190
2404
  "description": "Class name applied directly to the `<input>` element.\nUse for utilities like `tui-input-reset` that must target the input itself."
2191
2405
  }
2192
2406
  },
2193
- "cssTokens": [],
2407
+ "cssTokens": [
2408
+ "--tui-input-group-gap"
2409
+ ],
2194
2410
  "story": {
2195
2411
  "title": "Forms/TextInput",
2196
2412
  "tags": [
@@ -2227,7 +2443,10 @@
2227
2443
  "description": "Inline styles for layout integration"
2228
2444
  }
2229
2445
  },
2230
- "cssTokens": [],
2446
+ "cssTokens": [
2447
+ "--tui-toolbar-gap",
2448
+ "--tui-toolbar-padding"
2449
+ ],
2231
2450
  "story": {
2232
2451
  "title": "Components/Toolbar",
2233
2452
  "tags": [
@@ -2260,7 +2479,12 @@
2260
2479
  "description": "Override provider's delay for this tooltip."
2261
2480
  }
2262
2481
  },
2263
- "cssTokens": [],
2482
+ "cssTokens": [
2483
+ "--tui-tooltip-bg",
2484
+ "--tui-tooltip-fg",
2485
+ "--tui-tooltip-radius",
2486
+ "--tui-tooltip-z"
2487
+ ],
2264
2488
  "story": {
2265
2489
  "title": "Primitives/Tooltip",
2266
2490
  "tags": [
@@ -2421,9 +2645,9 @@
2421
2645
  "lms": 7,
2422
2646
  "player": 24,
2423
2647
  "reaction": 36,
2424
- "system": 75
2648
+ "system": 76
2425
2649
  },
2426
- "total": 154,
2650
+ "total": 155,
2427
2651
  "manifest": "./icons/manifest.json"
2428
2652
  }
2429
2653
  }