@tangible/ui 0.0.6 → 0.0.7

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.
@@ -209,19 +209,29 @@
209
209
  .is-place-center { place-items: center; }
210
210
  .is-place-end { place-items: end; }
211
211
 
212
- // Lists as layout containers
213
- ul.#{sys.$prefix}grid,
212
+ // Lists as layout containers — strip list chrome but leave margin alone
213
+ // so spacing utilities (tui-margin-block-end-lg etc.) can still win.
214
+ ul.#{sys.$prefix}grid,
214
215
  ul.#{sys.$prefix}stack,
215
216
  ul.#{sys.$prefix}inline-flex,
216
- ul.#{sys.$prefix}flex { list-style: none !important; padding: 0 !important; margin: 0 !important; }
217
+ ul.#{sys.$prefix}flex { list-style: none !important; padding-inline-start: 0 !important; }
217
218
 
218
- ul.#{sys.$prefix}grid > li,
219
+ ul.#{sys.$prefix}grid > li,
219
220
  ul.#{sys.$prefix}stack > li,
220
221
  ul.#{sys.$prefix}inline-flex > li,
221
222
  ul.#{sys.$prefix}flex > li {
222
223
  list-style: none !important;
223
224
  }
224
225
 
226
+ // Opt-in full list reset — use when you want zero margin/padding on a list
227
+ .#{sys.$prefix}list-reset {
228
+ list-style: none !important;
229
+ padding: 0 !important;
230
+ margin: 0 !important;
231
+
232
+ > li { list-style: none !important; }
233
+ }
234
+
225
235
  // ---------------------------
226
236
  // Density utilities (aliases)
227
237
  // Applies to BOTH grid and flex via shared custom props.
package/tui-manifest.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "0.0.6",
3
- "generated": "2026-03-11T21:53:09.418Z",
2
+ "version": "0.0.7",
3
+ "generated": "2026-03-14T17:17:34.578Z",
4
4
  "components": {
5
5
  "Accordion": {
6
6
  "props": {
@@ -428,6 +428,7 @@
428
428
  "cssTokens": [
429
429
  "--tui-card-bg",
430
430
  "--tui-card-border",
431
+ "--tui-card-border-width",
431
432
  "--tui-card-border-interact",
432
433
  "--tui-card-radius",
433
434
  "--tui-card-shadow",
@@ -829,6 +830,12 @@
829
830
  "defaultValue": "true",
830
831
  "description": "Whether to open the listbox when the input receives focus."
831
832
  },
833
+ "clearable": {
834
+ "type": "boolean",
835
+ "required": false,
836
+ "defaultValue": "true",
837
+ "description": "Whether to show the clear button when a value is present."
838
+ },
832
839
  "inputClassName": {
833
840
  "type": "string",
834
841
  "required": false,
@@ -1824,6 +1831,11 @@
1824
1831
  "type": "ReactNode",
1825
1832
  "required": false
1826
1833
  },
1834
+ "description": {
1835
+ "type": "string",
1836
+ "required": false,
1837
+ "description": "Description text displayed below the label."
1838
+ },
1827
1839
  "disabled": {
1828
1840
  "type": "boolean",
1829
1841
  "required": false,
@@ -1835,7 +1847,15 @@
1835
1847
  }
1836
1848
  },
1837
1849
  "cssTokens": [
1838
- "--tui-radio-accent"
1850
+ "--tui-radio-accent",
1851
+ "--tui-radio-size",
1852
+ "--tui-radio-border",
1853
+ "--tui-radio-bg",
1854
+ "--tui-radio-gap",
1855
+ "--tui-radio-font-size",
1856
+ "--tui-radio-label-color",
1857
+ "--tui-radio-description-color",
1858
+ "--tui-radio-group-gap"
1839
1859
  ],
1840
1860
  "story": {
1841
1861
  "title": "Forms/RadioGroup",
@@ -2331,7 +2351,14 @@
2331
2351
  },
2332
2352
  "cssTokens": [
2333
2353
  "--tui-switch-accent",
2334
- "--tui-switch-track-off"
2354
+ "--tui-switch-bg",
2355
+ "--tui-switch-border",
2356
+ "--tui-switch-thumb-bg",
2357
+ "--tui-switch-track-height",
2358
+ "--tui-switch-size",
2359
+ "--tui-switch-label-color",
2360
+ "--tui-switch-font-size",
2361
+ "--tui-switch-gap"
2335
2362
  ],
2336
2363
  "story": {
2337
2364
  "title": "Forms/Switch",
@@ -52,11 +52,15 @@ export function useRovingGroup({ selectedValue, onSelect, disabled = false, loop
52
52
  const items = getOrderedItems().filter((item) => !item.disabled && !disabled);
53
53
  if (items.length === 0)
54
54
  return;
55
- let currentIndex = selectedValue !== undefined
56
- ? items.findIndex((item) => toKey(item.value) === toKey(selectedValue))
57
- : -1;
58
- if (currentIndex === -1)
59
- currentIndex = 0;
55
+ // Only handle keys when a registered item has focus — don't hijack
56
+ // arrow keys from nested interactive controls (e.g. number inputs).
57
+ const target = event.target;
58
+ if (!items.some((item) => item.element === target))
59
+ return;
60
+ // Navigate from the focused item, not the selected value — these can
61
+ // differ when there's no selection or when focus moved without selecting.
62
+ const focusedIndex = items.findIndex((item) => item.element === target);
63
+ const currentIndex = focusedIndex !== -1 ? focusedIndex : 0;
60
64
  // Determine which keys map to next/prev
61
65
  let nextKeys;
62
66
  let prevKeys;
@@ -107,7 +111,6 @@ export function useRovingGroup({ selectedValue, onSelect, disabled = false, loop
107
111
  }, [
108
112
  getOrderedItems,
109
113
  disabled,
110
- selectedValue,
111
114
  orientationKeyboard,
112
115
  orientation,
113
116
  loop,