@salt-ds/core 1.71.0 → 1.72.0

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 (215) hide show
  1. package/CHANGELOG.md +82 -0
  2. package/css/salt-core.css +189 -77
  3. package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
  4. package/dist-cjs/avatar/Avatar.css.js +1 -1
  5. package/dist-cjs/badge/Badge.css.js +1 -1
  6. package/dist-cjs/banner/Banner.css.js +1 -1
  7. package/dist-cjs/breadcrumbs/Breadcrumb.css.js +1 -1
  8. package/dist-cjs/breadcrumbs/Breadcrumbs.css.js +1 -1
  9. package/dist-cjs/checkbox/Checkbox.css.js +1 -1
  10. package/dist-cjs/checkbox/CheckboxIcon.css.js +1 -1
  11. package/dist-cjs/combo-box/ComboBox.js +18 -36
  12. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  13. package/dist-cjs/combo-box/useComboBox.js +21 -21
  14. package/dist-cjs/combo-box/useComboBox.js.map +1 -1
  15. package/dist-cjs/dropdown/Dropdown.js +29 -30
  16. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  17. package/dist-cjs/file-drop-zone/FileDropZone.css.js +1 -1
  18. package/dist-cjs/form-field/FormField.css.js +1 -1
  19. package/dist-cjs/form-field/FormFieldHelperText.css.js +1 -1
  20. package/dist-cjs/form-field/FormFieldLabel.css.js +1 -1
  21. package/dist-cjs/form-field/FormFieldLabel.js +1 -1
  22. package/dist-cjs/form-field/FormFieldLabel.js.map +1 -1
  23. package/dist-cjs/index.js +2 -0
  24. package/dist-cjs/index.js.map +1 -1
  25. package/dist-cjs/input/Input.css.js +1 -1
  26. package/dist-cjs/interactable-card/InteractableCard.css.js +1 -1
  27. package/dist-cjs/interactable-card/InteractableCard.js +18 -7
  28. package/dist-cjs/interactable-card/InteractableCard.js.map +1 -1
  29. package/dist-cjs/interactable-card/InteractableCardGroup.js +71 -39
  30. package/dist-cjs/interactable-card/InteractableCardGroup.js.map +1 -1
  31. package/dist-cjs/interactable-card/InteractableCardGroupContext.js.map +1 -1
  32. package/dist-cjs/interactable-card/useInteractableCard.js +2 -3
  33. package/dist-cjs/interactable-card/useInteractableCard.js.map +1 -1
  34. package/dist-cjs/kbd/Kbd.css.js +1 -1
  35. package/dist-cjs/link/Link.css.js +1 -1
  36. package/dist-cjs/list-box/ListBox.js +19 -26
  37. package/dist-cjs/list-box/ListBox.js.map +1 -1
  38. package/dist-cjs/list-control/ListControlNavigationKeys.js +74 -0
  39. package/dist-cjs/list-control/ListControlNavigationKeys.js.map +1 -0
  40. package/dist-cjs/list-control/ListControlOptionContext.js +47 -0
  41. package/dist-cjs/list-control/ListControlOptionContext.js.map +1 -0
  42. package/dist-cjs/list-control/ListControlOptionStore.js +159 -0
  43. package/dist-cjs/list-control/ListControlOptionStore.js.map +1 -0
  44. package/dist-cjs/list-control/ListControlProvider.js +39 -0
  45. package/dist-cjs/list-control/ListControlProvider.js.map +1 -0
  46. package/dist-cjs/list-control/ListControlRegistry.js +161 -0
  47. package/dist-cjs/list-control/ListControlRegistry.js.map +1 -0
  48. package/dist-cjs/list-control/ListControlState.js +137 -109
  49. package/dist-cjs/list-control/ListControlState.js.map +1 -1
  50. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js +1 -1
  51. package/dist-cjs/mega-menu/MegaMenuListItem.css.js +1 -1
  52. package/dist-cjs/menu/MenuGroup.css.js +1 -1
  53. package/dist-cjs/menu/MenuItem.css.js +1 -1
  54. package/dist-cjs/navigation-item/NavigationItem.css.js +1 -1
  55. package/dist-cjs/number-input/NumberInput.js +2 -2
  56. package/dist-cjs/number-input/NumberInput.js.map +1 -1
  57. package/dist-cjs/option/Option.js +58 -39
  58. package/dist-cjs/option/Option.js.map +1 -1
  59. package/dist-cjs/option/OptionGroup.css.js +1 -1
  60. package/dist-cjs/overlay/Overlay.js +12 -2
  61. package/dist-cjs/overlay/Overlay.js.map +1 -1
  62. package/dist-cjs/overlay/OverlayContext.js +6 -0
  63. package/dist-cjs/overlay/OverlayContext.js.map +1 -1
  64. package/dist-cjs/overlay/OverlayFooter.css.js +6 -0
  65. package/dist-cjs/overlay/OverlayFooter.css.js.map +1 -0
  66. package/dist-cjs/overlay/OverlayFooter.js +30 -0
  67. package/dist-cjs/overlay/OverlayFooter.js.map +1 -0
  68. package/dist-cjs/overlay/OverlayHeader.css.js +1 -1
  69. package/dist-cjs/overlay/OverlayHeader.js +51 -11
  70. package/dist-cjs/overlay/OverlayHeader.js.map +1 -1
  71. package/dist-cjs/overlay/OverlayPanel.css.js +1 -1
  72. package/dist-cjs/overlay/OverlayPanel.js +20 -7
  73. package/dist-cjs/overlay/OverlayPanel.js.map +1 -1
  74. package/dist-cjs/overlay/OverlayPanelContent.css.js +1 -1
  75. package/dist-cjs/overlay/OverlayPanelContent.js +11 -13
  76. package/dist-cjs/overlay/OverlayPanelContent.js.map +1 -1
  77. package/dist-cjs/overlay/hasOverlaySection.js +24 -0
  78. package/dist-cjs/overlay/hasOverlaySection.js.map +1 -0
  79. package/dist-cjs/pill-input/PillInput.css.js +1 -1
  80. package/dist-cjs/pill-input/PillInput.js +2 -2
  81. package/dist-cjs/pill-input/PillInput.js.map +1 -1
  82. package/dist-cjs/radio-button/RadioButton.css.js +1 -1
  83. package/dist-cjs/radio-button/RadioButtonIcon.css.js +1 -1
  84. package/dist-cjs/rating/Rating.css.js +1 -1
  85. package/dist-cjs/slider/internal/SliderTrack.css.js +1 -1
  86. package/dist-cjs/stepper/internal/StepText.css.js +1 -1
  87. package/dist-cjs/switch/Switch.css.js +1 -1
  88. package/dist-cjs/table/Table.css.js +1 -1
  89. package/dist-cjs/tag/Tag.css.js +1 -1
  90. package/dist-cjs/text/Text.css.js +1 -1
  91. package/dist-cjs/toast/Toast.css.js +1 -1
  92. package/dist-cjs/toggle-button/ToggleButton.js +8 -2
  93. package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
  94. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +71 -8
  95. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  96. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
  97. package/dist-cjs/toggletip/ToggletipPanel.css.js +1 -1
  98. package/dist-cjs/tooltip/Tooltip.css.js +1 -1
  99. package/dist-cjs/vertical-navigation/VerticalNavigationItemContent.css.js +1 -1
  100. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +1 -1
  101. package/dist-es/accordion/AccordionHeader.css.js +1 -1
  102. package/dist-es/avatar/Avatar.css.js +1 -1
  103. package/dist-es/badge/Badge.css.js +1 -1
  104. package/dist-es/banner/Banner.css.js +1 -1
  105. package/dist-es/breadcrumbs/Breadcrumb.css.js +1 -1
  106. package/dist-es/breadcrumbs/Breadcrumbs.css.js +1 -1
  107. package/dist-es/checkbox/Checkbox.css.js +1 -1
  108. package/dist-es/checkbox/CheckboxIcon.css.js +1 -1
  109. package/dist-es/combo-box/ComboBox.js +18 -36
  110. package/dist-es/combo-box/ComboBox.js.map +1 -1
  111. package/dist-es/combo-box/useComboBox.js +21 -21
  112. package/dist-es/combo-box/useComboBox.js.map +1 -1
  113. package/dist-es/dropdown/Dropdown.js +29 -30
  114. package/dist-es/dropdown/Dropdown.js.map +1 -1
  115. package/dist-es/file-drop-zone/FileDropZone.css.js +1 -1
  116. package/dist-es/form-field/FormField.css.js +1 -1
  117. package/dist-es/form-field/FormFieldHelperText.css.js +1 -1
  118. package/dist-es/form-field/FormFieldLabel.css.js +1 -1
  119. package/dist-es/form-field/FormFieldLabel.js +1 -1
  120. package/dist-es/form-field/FormFieldLabel.js.map +1 -1
  121. package/dist-es/index.js +1 -0
  122. package/dist-es/index.js.map +1 -1
  123. package/dist-es/input/Input.css.js +1 -1
  124. package/dist-es/interactable-card/InteractableCard.css.js +1 -1
  125. package/dist-es/interactable-card/InteractableCard.js +18 -7
  126. package/dist-es/interactable-card/InteractableCard.js.map +1 -1
  127. package/dist-es/interactable-card/InteractableCardGroup.js +72 -40
  128. package/dist-es/interactable-card/InteractableCardGroup.js.map +1 -1
  129. package/dist-es/interactable-card/InteractableCardGroupContext.js.map +1 -1
  130. package/dist-es/interactable-card/useInteractableCard.js +2 -3
  131. package/dist-es/interactable-card/useInteractableCard.js.map +1 -1
  132. package/dist-es/kbd/Kbd.css.js +1 -1
  133. package/dist-es/link/Link.css.js +1 -1
  134. package/dist-es/list-box/ListBox.js +19 -26
  135. package/dist-es/list-box/ListBox.js.map +1 -1
  136. package/dist-es/list-control/ListControlNavigationKeys.js +69 -0
  137. package/dist-es/list-control/ListControlNavigationKeys.js.map +1 -0
  138. package/dist-es/list-control/ListControlOptionContext.js +44 -0
  139. package/dist-es/list-control/ListControlOptionContext.js.map +1 -0
  140. package/dist-es/list-control/ListControlOptionStore.js +153 -0
  141. package/dist-es/list-control/ListControlOptionStore.js.map +1 -0
  142. package/dist-es/list-control/ListControlProvider.js +37 -0
  143. package/dist-es/list-control/ListControlProvider.js.map +1 -0
  144. package/dist-es/list-control/ListControlRegistry.js +158 -0
  145. package/dist-es/list-control/ListControlRegistry.js.map +1 -0
  146. package/dist-es/list-control/ListControlState.js +137 -110
  147. package/dist-es/list-control/ListControlState.js.map +1 -1
  148. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js +1 -1
  149. package/dist-es/mega-menu/MegaMenuListItem.css.js +1 -1
  150. package/dist-es/menu/MenuGroup.css.js +1 -1
  151. package/dist-es/menu/MenuItem.css.js +1 -1
  152. package/dist-es/navigation-item/NavigationItem.css.js +1 -1
  153. package/dist-es/number-input/NumberInput.js +2 -2
  154. package/dist-es/number-input/NumberInput.js.map +1 -1
  155. package/dist-es/option/Option.js +59 -40
  156. package/dist-es/option/Option.js.map +1 -1
  157. package/dist-es/option/OptionGroup.css.js +1 -1
  158. package/dist-es/overlay/Overlay.js +13 -3
  159. package/dist-es/overlay/Overlay.js.map +1 -1
  160. package/dist-es/overlay/OverlayContext.js +6 -0
  161. package/dist-es/overlay/OverlayContext.js.map +1 -1
  162. package/dist-es/overlay/OverlayFooter.css.js +4 -0
  163. package/dist-es/overlay/OverlayFooter.css.js.map +1 -0
  164. package/dist-es/overlay/OverlayFooter.js +28 -0
  165. package/dist-es/overlay/OverlayFooter.js.map +1 -0
  166. package/dist-es/overlay/OverlayHeader.css.js +1 -1
  167. package/dist-es/overlay/OverlayHeader.js +51 -11
  168. package/dist-es/overlay/OverlayHeader.js.map +1 -1
  169. package/dist-es/overlay/OverlayPanel.css.js +1 -1
  170. package/dist-es/overlay/OverlayPanel.js +20 -7
  171. package/dist-es/overlay/OverlayPanel.js.map +1 -1
  172. package/dist-es/overlay/OverlayPanelContent.css.js +1 -1
  173. package/dist-es/overlay/OverlayPanelContent.js +11 -13
  174. package/dist-es/overlay/OverlayPanelContent.js.map +1 -1
  175. package/dist-es/overlay/hasOverlaySection.js +22 -0
  176. package/dist-es/overlay/hasOverlaySection.js.map +1 -0
  177. package/dist-es/pill-input/PillInput.css.js +1 -1
  178. package/dist-es/pill-input/PillInput.js +2 -2
  179. package/dist-es/pill-input/PillInput.js.map +1 -1
  180. package/dist-es/radio-button/RadioButton.css.js +1 -1
  181. package/dist-es/radio-button/RadioButtonIcon.css.js +1 -1
  182. package/dist-es/rating/Rating.css.js +1 -1
  183. package/dist-es/slider/internal/SliderTrack.css.js +1 -1
  184. package/dist-es/stepper/internal/StepText.css.js +1 -1
  185. package/dist-es/switch/Switch.css.js +1 -1
  186. package/dist-es/table/Table.css.js +1 -1
  187. package/dist-es/tag/Tag.css.js +1 -1
  188. package/dist-es/text/Text.css.js +1 -1
  189. package/dist-es/toast/Toast.css.js +1 -1
  190. package/dist-es/toggle-button/ToggleButton.js +8 -2
  191. package/dist-es/toggle-button/ToggleButton.js.map +1 -1
  192. package/dist-es/toggle-button-group/ToggleButtonGroup.js +71 -8
  193. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  194. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
  195. package/dist-es/toggletip/ToggletipPanel.css.js +1 -1
  196. package/dist-es/tooltip/Tooltip.css.js +1 -1
  197. package/dist-es/vertical-navigation/VerticalNavigationItemContent.css.js +1 -1
  198. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +1 -1
  199. package/dist-types/combo-box/useComboBox.d.ts +3 -6
  200. package/dist-types/interactable-card/InteractableCardGroupContext.d.ts +2 -0
  201. package/dist-types/interactable-card/useInteractableCard.d.ts +1 -2
  202. package/dist-types/list-control/ListControlNavigationKeys.d.ts +30 -0
  203. package/dist-types/list-control/ListControlOptionContext.d.ts +18 -0
  204. package/dist-types/list-control/ListControlOptionStore.d.ts +17 -0
  205. package/dist-types/list-control/ListControlProvider.d.ts +11 -0
  206. package/dist-types/list-control/ListControlRegistry.d.ts +22 -0
  207. package/dist-types/list-control/ListControlState.d.ts +6 -6
  208. package/dist-types/option/Option.d.ts +3 -1
  209. package/dist-types/overlay/Overlay.d.ts +2 -1
  210. package/dist-types/overlay/OverlayContext.d.ts +4 -0
  211. package/dist-types/overlay/OverlayFooter.d.ts +4 -0
  212. package/dist-types/overlay/hasOverlaySection.d.ts +2 -0
  213. package/dist-types/overlay/index.d.ts +1 -0
  214. package/dist-types/toggle-button-group/ToggleButtonGroupContext.d.ts +2 -1
  215. package/package.json +4 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,87 @@
1
1
  # @salt-ds/core
2
2
 
3
+ ## 1.72.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 24b5b04: Expand `Overlay` placement options to include all FloatingUI placement type options (-start and -end on top, bottom, left and right).
8
+ - 83d7f9c: Add `OverlayFooter`, a composable layout section for an overlay panel. Use it as a direct child of `OverlayPanel` with `OverlayHeader` and `OverlayPanelContent` to create structured layouts.
9
+
10
+ `OverlayHeader` and `OverlayFooter` own their padding on all sides. `OverlayPanelContent` drops its top padding after an `OverlayHeader` and its bottom padding before an `OverlayFooter`, so adjacent sections share a single gap.
11
+
12
+ Add the `--saltOverlay-header-padding` and `--saltOverlay-footer-padding` CSS variables to `OverlayHeader` and `OverlayFooter`.
13
+
14
+ - f9f5198: - `OverlayHeader` names `OverlayPanel` with its `header` and `preheader`, and describes it with its `description`, so `aria-labelledby` and `aria-describedby` no longer need to be set manually. The accessible name no longer includes the labels of controls passed to `actions`, such as a close button.
15
+
16
+ Remove the `id` on `OverlayHeader` and the matching `aria-labelledby` on `OverlayPanel`. Any `aria-labelledby` passed to `OverlayPanel` is combined with the header, so leaving this wiring in place repeats the title in the accessible name.
17
+
18
+ - `OverlayHeader` no longer renders an empty heading when neither `header` nor `preheader` is set.
19
+ - Fixed `aria-label` on `OverlayPanel` not naming the overlay.
20
+
21
+ ### Patch Changes
22
+
23
+ - ff312fb: Fixed `ListBox` and `Dropdown` unexpectedly scrolling the page during keyboard navigation, including when navigation reaches the first or last option.
24
+
25
+ `ComboBox` now prevents PageUp and PageDown from scrolling the page when navigation cannot move beyond the first or last option.
26
+
27
+ `ListBox`, `Dropdown`, and `ComboBox` now leave navigation keys pressed with Ctrl or Meta, and Home, End, PageUp, and PageDown pressed with Alt, to the browser, so shortcuts such as Ctrl+End, Cmd+ArrowDown, and Ctrl+PageDown keep working. Alt+ArrowDown still opens the list.
28
+
29
+ `Dropdown` now opens the list when Home or End is pressed while it is closed, and moves focus to the first or last option.
30
+
31
+ Fixed `Dropdown` moving focus away from the first option when it re-rendered while the list was open, or when a typed character matched the first option while opening the list.
32
+
33
+ While no list is shown, `Dropdown` and `ComboBox` leave PageUp and PageDown to the browser, and `ComboBox` also leaves Home and End, so these keys scroll the page or move the text cursor as normal instead of highlighting a hidden option.
34
+
35
+ - d578674: Applied typography letter spacing tokens consistently to text-owning components and inherited typography roots, and applied the display text transform token to display text.
36
+ - 394af0d: Fixed `OverlayHeader` adding extra space above the header when `actions` isn't provided.
37
+ - d578674: Deprecated `--salt-text-label-fontFamily`. Use `--salt-text-fontFamily` instead. The deprecated token remains available as an alias of `--salt-text-fontFamily` for compatibility but may be removed in a future major version.
38
+ - d578674: Deprecated `--salt-text-notation-fontFamily`. Use `--salt-text-fontFamily` instead. The deprecated token remains available as an alias of `--salt-text-fontFamily` for compatibility but may be removed in a future major version.
39
+ - 8e59c5d: Added `--salt-typography-fontStyle-normal` and `--salt-typography-fontStyle-italic` foundation tokens.
40
+
41
+ Deprecated `--salt-typography-textDecoration-italic`. Use `--salt-typography-fontStyle-italic` instead, since italic is a `font-style` value rather than a `text-decoration` value. The deprecated token remains available as an alias of `--salt-typography-fontStyle-italic` for compatibility but may be removed in a future major version.
42
+
43
+ - cf3afb3: Fixed disabled `InteractableCard` components responding to pointer or keyboard interactions and displaying hover or pressed styles. Disabled cards retain their selected border.
44
+
45
+ Disabled `InteractableCard` components can no longer receive focus and no longer render the `disabled` attribute, which is not valid on a `div`. Use `aria-disabled="true"` or the `saltInteractableCard-disabled` class to target disabled cards in styles or tests.
46
+
47
+ Improved single-select `InteractableCardGroup` keyboard navigation. Arrow keys skip disabled cards and no longer scroll the page, arrow keys pressed with Alt, Ctrl, or Meta are left to the browser, and Tab moves focus to the first enabled card when no enabled card is selected.
48
+
49
+ Fixed an `InteractableCardGroup` becoming unreachable with Tab after it is re-enabled.
50
+
51
+ - 0b65f84: Improved Dropdown, ComboBox, and ListBox performance for large, non-virtualized option lists. Fixed active/highlighted styling to track the active Option by id instead of value, so Options that share the same value no longer all appear active together; selection is unaffected and remains value-based.
52
+ - 8e59c5d: Fixed `FormFieldLabel` with `intent="sentence"` not showing disabled styling when its `FormField` is disabled.
53
+
54
+ Fixed `FormFieldLabel` with `intent="sentence"` using the label line height instead of the body text line height that matches its font size.
55
+
56
+ - 8e59c5d: Fixed label text in `Text` using the body text font weight tokens instead of `--salt-text-label-fontWeight` and `--salt-text-label-fontWeight-small`.
57
+
58
+ Fixed `FormFieldLabel` with `intent="label"` using the body text font weight tokens instead of `--salt-text-label-fontWeight-strong` and `--salt-text-label-fontWeight`.
59
+
60
+ - b434b9e: Fixed `ToggleButtonGroup` keyboard navigation so arrow keys no longer scroll the page. Arrow keys pressed with Alt, Ctrl or Meta are left to the browser, so shortcuts such as history navigation still work.
61
+
62
+ Fixed selection in uncontrolled `ToggleButtonGroup` components whose `ToggleButton` components use numeric or array `value` props. The selected button is now correctly conveyed to assistive technologies, and selecting it again no longer triggers `onChange`.
63
+
64
+ Fixed a `ToggleButtonGroup` having no tab stop when its selected or focused button is disabled or removed, or when its value matches no button. When no enabled button is selected, the group now has a single tab stop on the first enabled button. A value of `0` no longer makes every button in the group a tab stop.
65
+
66
+ `ToggleButton` no longer adds an unsupported `readOnly` attribute to its underlying button.
67
+
68
+ - e75a32d: Fixed `NumberInput` increment and decrement buttons remaining enabled inside a disabled `FormField`. The buttons now inherit the disabled state from the field.
69
+
70
+ Fixed keyboard navigation in a multiselect `ComboBox` so its selected pills form a single tab stop. Use the arrow keys to move between pills and Tab to leave the pill list.
71
+
72
+ - 59a14d2: Fixed disabled `Checkbox` and `RadioButton` controls changing appearance when hovered, which could make them seem interactive. Disabled controls now retain their correct colors, including checked radio buttons.
73
+ - e990c46: Simplified the disabled appearance of `Accordion`, `Breadcrumbs`, and `MenuItem` for a more consistent look across Salt components.
74
+ - 550c4c1: Simplified typography tokens so all heading levels share `--salt-text-heading-fontFamily` and `--salt-text-heading-fontWeight` tokens, while all display levels share `--salt-text-display-fontFamily` and `--salt-text-display-fontWeight` tokens. The `small` and `strong` variants follow the same shared naming.
75
+
76
+ The level-specific font family and weight tokens are deprecated. They remain available as aliases for compatibility but may be removed in a future major version.
77
+
78
+ - 8e59c5d: Applied the `--salt-text-display-fontStyle` token to display text in `Text`.
79
+ - Updated dependencies [fbe1e48]
80
+ - Updated dependencies [2a5cb0d]
81
+ - @salt-ds/styles@0.4.1
82
+ - @salt-ds/window@0.1.2
83
+ - @salt-ds/icons@1.18.3
84
+
3
85
  ## 1.71.0
4
86
 
5
87
  ### Minor Changes