@salt-ds/core 1.44.1 → 1.46.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 (265) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/css/salt-core.css +449 -11
  3. package/dist-cjs/accordion/Accordion.js.map +1 -1
  4. package/dist-cjs/accordion/AccordionContext.js.map +1 -1
  5. package/dist-cjs/accordion/AccordionHeader.js.map +1 -1
  6. package/dist-cjs/accordion/AccordionPanel.js.map +1 -1
  7. package/dist-cjs/aria-announcer/AriaAnnouncerContext.js.map +1 -1
  8. package/dist-cjs/aria-announcer/AriaAnnouncerProvider.js.map +1 -1
  9. package/dist-cjs/aria-announcer/useAriaAnnouncer.js +1 -9
  10. package/dist-cjs/aria-announcer/useAriaAnnouncer.js.map +1 -1
  11. package/dist-cjs/avatar/Avatar.js.map +1 -1
  12. package/dist-cjs/button/Button.js.map +1 -1
  13. package/dist-cjs/button/useButton.js.map +1 -1
  14. package/dist-cjs/checkbox/Checkbox.js.map +1 -1
  15. package/dist-cjs/checkbox/CheckboxGroup.js.map +1 -1
  16. package/dist-cjs/checkbox/internal/CheckboxGroupContext.js.map +1 -1
  17. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  18. package/dist-cjs/combo-box/useComboBox.js.map +1 -1
  19. package/dist-cjs/dialog/Dialog.js.map +1 -1
  20. package/dist-cjs/dialog/DialogContent.js.map +1 -1
  21. package/dist-cjs/dialog/DialogContext.js.map +1 -1
  22. package/dist-cjs/drawer/Drawer.js.map +1 -1
  23. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  24. package/dist-cjs/file-drop-zone/FileDropZone.js.map +1 -1
  25. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  26. package/dist-cjs/file-drop-zone/internal/utils.js.map +1 -1
  27. package/dist-cjs/flex-layout/parseSpacing.js.map +1 -1
  28. package/dist-cjs/form-field/FormField.js.map +1 -1
  29. package/dist-cjs/form-field/FormFieldHelperText.js.map +1 -1
  30. package/dist-cjs/form-field/FormFieldLabel.js.map +1 -1
  31. package/dist-cjs/grid-layout/GridLayout.js.map +1 -1
  32. package/dist-cjs/index.js +4 -0
  33. package/dist-cjs/index.js.map +1 -1
  34. package/dist-cjs/input/Input.js.map +1 -1
  35. package/dist-cjs/interactable-card/InteractableCard.js.map +1 -1
  36. package/dist-cjs/interactable-card/InteractableCardGroup.js.map +1 -1
  37. package/dist-cjs/interactable-card/InteractableCardGroupContext.js.map +1 -1
  38. package/dist-cjs/interactable-card/useInteractableCard.js.map +1 -1
  39. package/dist-cjs/link/Link.js.map +1 -1
  40. package/dist-cjs/list-box/ListBox.js.map +1 -1
  41. package/dist-cjs/list-control/ListControlContext.js.map +1 -1
  42. package/dist-cjs/list-control/ListControlState.js.map +1 -1
  43. package/dist-cjs/menu/MenuBase.js.map +1 -1
  44. package/dist-cjs/menu/MenuContext.js.map +1 -1
  45. package/dist-cjs/menu/MenuGroup.js.map +1 -1
  46. package/dist-cjs/menu/MenuItem.js.map +1 -1
  47. package/dist-cjs/menu/MenuPanel.js.map +1 -1
  48. package/dist-cjs/menu/MenuPanelContext.js.map +1 -1
  49. package/dist-cjs/menu/MenuTrigger.js.map +1 -1
  50. package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
  51. package/dist-cjs/navigation-item/ExpansionIcon.js +1 -1
  52. package/dist-cjs/navigation-item/ExpansionIcon.js.map +1 -1
  53. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
  54. package/dist-cjs/option/Option.js.map +1 -1
  55. package/dist-cjs/overlay/Overlay.js.map +1 -1
  56. package/dist-cjs/pagination/PageButton.js.map +1 -1
  57. package/dist-cjs/pagination/Pagination.js.map +1 -1
  58. package/dist-cjs/pagination/PaginationContext.js.map +1 -1
  59. package/dist-cjs/pagination/usePagination.js.map +1 -1
  60. package/dist-cjs/parent-child-layout/ParentChildLayout.js.map +1 -1
  61. package/dist-cjs/pill-input/PillInput.js.map +1 -1
  62. package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
  63. package/dist-cjs/progress/LinearProgress/LinearProgress.js.map +1 -1
  64. package/dist-cjs/radio-button/RadioButton.js.map +1 -1
  65. package/dist-cjs/radio-button/RadioButtonGroup.js.map +1 -1
  66. package/dist-cjs/radio-button/internal/RadioGroupContext.js.map +1 -1
  67. package/dist-cjs/salt-provider/SaltProvider.js.map +1 -1
  68. package/dist-cjs/skip-link/internal/useManageFocusOnTarget.js.map +1 -1
  69. package/dist-cjs/slider/RangeSlider.js.map +1 -1
  70. package/dist-cjs/slider/Slider.js.map +1 -1
  71. package/dist-cjs/slider/internal/SliderThumb.js.map +1 -1
  72. package/dist-cjs/slider/internal/SliderTrack.js.map +1 -1
  73. package/dist-cjs/slider/internal/useRangeSliderThumb.js.map +1 -1
  74. package/dist-cjs/slider/internal/useSliderThumb.js.map +1 -1
  75. package/dist-cjs/stack-layout/StackLayout.js.map +1 -1
  76. package/dist-cjs/stepper/Step.css.js +6 -0
  77. package/dist-cjs/stepper/Step.css.js.map +1 -0
  78. package/dist-cjs/stepper/Step.js +167 -0
  79. package/dist-cjs/stepper/Step.js.map +1 -0
  80. package/dist-cjs/stepper/Stepper.css.js +6 -0
  81. package/dist-cjs/stepper/Stepper.css.js.map +1 -0
  82. package/dist-cjs/stepper/Stepper.js +40 -0
  83. package/dist-cjs/stepper/Stepper.js.map +1 -0
  84. package/dist-cjs/stepper/internal/StepConnector.css.js +6 -0
  85. package/dist-cjs/stepper/internal/StepConnector.css.js.map +1 -0
  86. package/dist-cjs/stepper/internal/StepConnector.js +27 -0
  87. package/dist-cjs/stepper/internal/StepConnector.js.map +1 -0
  88. package/dist-cjs/stepper/internal/StepExpandTrigger.css.js +6 -0
  89. package/dist-cjs/stepper/internal/StepExpandTrigger.css.js.map +1 -0
  90. package/dist-cjs/stepper/internal/StepExpandTrigger.js +45 -0
  91. package/dist-cjs/stepper/internal/StepExpandTrigger.js.map +1 -0
  92. package/dist-cjs/stepper/internal/StepIcon.css.js +6 -0
  93. package/dist-cjs/stepper/internal/StepIcon.css.js.map +1 -0
  94. package/dist-cjs/stepper/internal/StepIcon.js +62 -0
  95. package/dist-cjs/stepper/internal/StepIcon.js.map +1 -0
  96. package/dist-cjs/stepper/internal/StepScreenReaderOnly.js +13 -0
  97. package/dist-cjs/stepper/internal/StepScreenReaderOnly.js.map +1 -0
  98. package/dist-cjs/stepper/internal/StepText.css.js +6 -0
  99. package/dist-cjs/stepper/internal/StepText.css.js.map +1 -0
  100. package/dist-cjs/stepper/internal/StepText.js +50 -0
  101. package/dist-cjs/stepper/internal/StepText.js.map +1 -0
  102. package/dist-cjs/stepper/internal/StepperProvider.js +19 -0
  103. package/dist-cjs/stepper/internal/StepperProvider.js.map +1 -0
  104. package/dist-cjs/switch/Switch.js.map +1 -1
  105. package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
  106. package/dist-cjs/toggle-button/ToggleButton.js +34 -20
  107. package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
  108. package/dist-cjs/toggle-button-group/ToggleButtonGroup.css.js +1 -1
  109. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +30 -6
  110. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  111. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
  112. package/dist-cjs/tooltip/Tooltip.js.map +1 -1
  113. package/dist-cjs/tooltip/TooltipBase.js.map +1 -1
  114. package/dist-cjs/tooltip/useAriaAnnounce.js.map +1 -1
  115. package/dist-cjs/tooltip/useTooltip.js.map +1 -1
  116. package/dist-cjs/utils/mergeProps.js.map +1 -1
  117. package/dist-cjs/utils/useControlled.js.map +1 -1
  118. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  119. package/dist-cjs/utils/useId.js.map +1 -1
  120. package/dist-cjs/utils/usePreventScroll.js.map +1 -1
  121. package/dist-cjs/utils/useResizeObserver.js.map +1 -1
  122. package/dist-cjs/utils/useResponsiveProp.js.map +1 -1
  123. package/dist-es/accordion/Accordion.js.map +1 -1
  124. package/dist-es/accordion/AccordionContext.js.map +1 -1
  125. package/dist-es/accordion/AccordionHeader.js.map +1 -1
  126. package/dist-es/accordion/AccordionPanel.js.map +1 -1
  127. package/dist-es/aria-announcer/AriaAnnouncerContext.js.map +1 -1
  128. package/dist-es/aria-announcer/AriaAnnouncerProvider.js.map +1 -1
  129. package/dist-es/aria-announcer/useAriaAnnouncer.js +1 -9
  130. package/dist-es/aria-announcer/useAriaAnnouncer.js.map +1 -1
  131. package/dist-es/avatar/Avatar.js.map +1 -1
  132. package/dist-es/breakpoints/BreakpointProvider.js +1 -1
  133. package/dist-es/button/Button.js.map +1 -1
  134. package/dist-es/button/useButton.js.map +1 -1
  135. package/dist-es/checkbox/Checkbox.js.map +1 -1
  136. package/dist-es/checkbox/CheckboxGroup.js.map +1 -1
  137. package/dist-es/checkbox/internal/CheckboxGroupContext.js.map +1 -1
  138. package/dist-es/combo-box/ComboBox.js.map +1 -1
  139. package/dist-es/combo-box/useComboBox.js.map +1 -1
  140. package/dist-es/dialog/Dialog.js.map +1 -1
  141. package/dist-es/dialog/DialogContent.js.map +1 -1
  142. package/dist-es/dialog/DialogContext.js.map +1 -1
  143. package/dist-es/drawer/Drawer.js.map +1 -1
  144. package/dist-es/dropdown/Dropdown.js.map +1 -1
  145. package/dist-es/file-drop-zone/FileDropZone.js +1 -1
  146. package/dist-es/file-drop-zone/FileDropZone.js.map +1 -1
  147. package/dist-es/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  148. package/dist-es/file-drop-zone/internal/utils.js.map +1 -1
  149. package/dist-es/flex-layout/parseSpacing.js.map +1 -1
  150. package/dist-es/form-field/FormField.js.map +1 -1
  151. package/dist-es/form-field/FormFieldHelperText.js.map +1 -1
  152. package/dist-es/form-field/FormFieldLabel.js.map +1 -1
  153. package/dist-es/grid-layout/GridLayout.js.map +1 -1
  154. package/dist-es/index.js +2 -0
  155. package/dist-es/index.js.map +1 -1
  156. package/dist-es/input/Input.js.map +1 -1
  157. package/dist-es/interactable-card/InteractableCard.js.map +1 -1
  158. package/dist-es/interactable-card/InteractableCardGroup.js.map +1 -1
  159. package/dist-es/interactable-card/InteractableCardGroupContext.js.map +1 -1
  160. package/dist-es/interactable-card/useInteractableCard.js.map +1 -1
  161. package/dist-es/link/Link.js.map +1 -1
  162. package/dist-es/list-box/ListBox.js.map +1 -1
  163. package/dist-es/list-control/ListControlContext.js.map +1 -1
  164. package/dist-es/list-control/ListControlState.js.map +1 -1
  165. package/dist-es/menu/MenuBase.js +1 -1
  166. package/dist-es/menu/MenuBase.js.map +1 -1
  167. package/dist-es/menu/MenuContext.js.map +1 -1
  168. package/dist-es/menu/MenuGroup.js.map +1 -1
  169. package/dist-es/menu/MenuItem.js.map +1 -1
  170. package/dist-es/menu/MenuPanel.js.map +1 -1
  171. package/dist-es/menu/MenuPanelContext.js.map +1 -1
  172. package/dist-es/menu/MenuTrigger.js.map +1 -1
  173. package/dist-es/multiline-input/MultilineInput.js.map +1 -1
  174. package/dist-es/navigation-item/ExpansionIcon.js +1 -1
  175. package/dist-es/navigation-item/ExpansionIcon.js.map +1 -1
  176. package/dist-es/navigation-item/NavigationItem.js.map +1 -1
  177. package/dist-es/option/Option.js.map +1 -1
  178. package/dist-es/overlay/Overlay.js +1 -1
  179. package/dist-es/overlay/Overlay.js.map +1 -1
  180. package/dist-es/pagination/PageButton.js.map +1 -1
  181. package/dist-es/pagination/Pagination.js.map +1 -1
  182. package/dist-es/pagination/PaginationContext.js.map +1 -1
  183. package/dist-es/pagination/usePagination.js.map +1 -1
  184. package/dist-es/parent-child-layout/ParentChildLayout.js.map +1 -1
  185. package/dist-es/pill-input/PillInput.js.map +1 -1
  186. package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
  187. package/dist-es/progress/LinearProgress/LinearProgress.js.map +1 -1
  188. package/dist-es/radio-button/RadioButton.js.map +1 -1
  189. package/dist-es/radio-button/RadioButtonGroup.js.map +1 -1
  190. package/dist-es/radio-button/internal/RadioGroupContext.js.map +1 -1
  191. package/dist-es/salt-provider/SaltProvider.js.map +1 -1
  192. package/dist-es/semantic-icon-provider/SemanticIconProvider.js +1 -1
  193. package/dist-es/skip-link/internal/useManageFocusOnTarget.js.map +1 -1
  194. package/dist-es/slider/RangeSlider.js.map +1 -1
  195. package/dist-es/slider/Slider.js.map +1 -1
  196. package/dist-es/slider/internal/SliderThumb.js.map +1 -1
  197. package/dist-es/slider/internal/SliderTrack.js.map +1 -1
  198. package/dist-es/slider/internal/useRangeSliderThumb.js.map +1 -1
  199. package/dist-es/slider/internal/useSliderThumb.js.map +1 -1
  200. package/dist-es/stack-layout/StackLayout.js.map +1 -1
  201. package/dist-es/stepper/Step.css.js +4 -0
  202. package/dist-es/stepper/Step.css.js.map +1 -0
  203. package/dist-es/stepper/Step.js +165 -0
  204. package/dist-es/stepper/Step.js.map +1 -0
  205. package/dist-es/stepper/Stepper.css.js +4 -0
  206. package/dist-es/stepper/Stepper.css.js.map +1 -0
  207. package/dist-es/stepper/Stepper.js +38 -0
  208. package/dist-es/stepper/Stepper.js.map +1 -0
  209. package/dist-es/stepper/internal/StepConnector.css.js +4 -0
  210. package/dist-es/stepper/internal/StepConnector.css.js.map +1 -0
  211. package/dist-es/stepper/internal/StepConnector.js +25 -0
  212. package/dist-es/stepper/internal/StepConnector.js.map +1 -0
  213. package/dist-es/stepper/internal/StepExpandTrigger.css.js +4 -0
  214. package/dist-es/stepper/internal/StepExpandTrigger.css.js.map +1 -0
  215. package/dist-es/stepper/internal/StepExpandTrigger.js +43 -0
  216. package/dist-es/stepper/internal/StepExpandTrigger.js.map +1 -0
  217. package/dist-es/stepper/internal/StepIcon.css.js +4 -0
  218. package/dist-es/stepper/internal/StepIcon.css.js.map +1 -0
  219. package/dist-es/stepper/internal/StepIcon.js +60 -0
  220. package/dist-es/stepper/internal/StepIcon.js.map +1 -0
  221. package/dist-es/stepper/internal/StepScreenReaderOnly.js +11 -0
  222. package/dist-es/stepper/internal/StepScreenReaderOnly.js.map +1 -0
  223. package/dist-es/stepper/internal/StepText.css.js +4 -0
  224. package/dist-es/stepper/internal/StepText.css.js.map +1 -0
  225. package/dist-es/stepper/internal/StepText.js +48 -0
  226. package/dist-es/stepper/internal/StepText.js.map +1 -0
  227. package/dist-es/stepper/internal/StepperProvider.js +15 -0
  228. package/dist-es/stepper/internal/StepperProvider.js.map +1 -0
  229. package/dist-es/switch/Switch.js.map +1 -1
  230. package/dist-es/toggle-button/ToggleButton.css.js +1 -1
  231. package/dist-es/toggle-button/ToggleButton.js +34 -20
  232. package/dist-es/toggle-button/ToggleButton.js.map +1 -1
  233. package/dist-es/toggle-button-group/ToggleButtonGroup.css.js +1 -1
  234. package/dist-es/toggle-button-group/ToggleButtonGroup.js +30 -6
  235. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  236. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
  237. package/dist-es/tooltip/Tooltip.js.map +1 -1
  238. package/dist-es/tooltip/TooltipBase.js.map +1 -1
  239. package/dist-es/tooltip/useAriaAnnounce.js.map +1 -1
  240. package/dist-es/tooltip/useTooltip.js +1 -1
  241. package/dist-es/tooltip/useTooltip.js.map +1 -1
  242. package/dist-es/utils/mergeProps.js.map +1 -1
  243. package/dist-es/utils/useControlled.js.map +1 -1
  244. package/dist-es/utils/useFloatingUI/useFloatingUI.js +2 -2
  245. package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  246. package/dist-es/utils/useId.js.map +1 -1
  247. package/dist-es/utils/usePreventScroll.js.map +1 -1
  248. package/dist-es/utils/useResizeObserver.js.map +1 -1
  249. package/dist-es/utils/useResponsiveProp.js.map +1 -1
  250. package/dist-types/combo-box/ComboBox.d.ts +2 -2
  251. package/dist-types/form-field/FormFieldHelperText.d.ts +3 -1
  252. package/dist-types/index.d.ts +1 -0
  253. package/dist-types/stepper/Step.d.ts +46 -0
  254. package/dist-types/stepper/Stepper.d.ts +9 -0
  255. package/dist-types/stepper/index.d.ts +2 -0
  256. package/dist-types/stepper/internal/StepConnector.d.ts +1 -0
  257. package/dist-types/stepper/internal/StepExpandTrigger.d.ts +5 -0
  258. package/dist-types/stepper/internal/StepIcon.d.ts +8 -0
  259. package/dist-types/stepper/internal/StepScreenReaderOnly.d.ts +5 -0
  260. package/dist-types/stepper/internal/StepText.d.ts +5 -0
  261. package/dist-types/stepper/internal/StepperProvider.d.ts +9 -0
  262. package/dist-types/toggle-button/ToggleButton.d.ts +30 -1
  263. package/dist-types/toggle-button-group/ToggleButtonGroup.d.ts +16 -2
  264. package/dist-types/toggle-button-group/ToggleButtonGroupContext.d.ts +6 -2
  265. package/package.json +1 -1
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var Button = require('../../button/Button.js');
8
+ require('react');
9
+ var SemanticIconProvider = require('../../semantic-icon-provider/SemanticIconProvider.js');
10
+ var makePrefixer = require('../../utils/makePrefixer.js');
11
+ require('../../utils/useFloatingUI/useFloatingUI.js');
12
+ require('../../utils/useId.js');
13
+ require('../../salt-provider/SaltProvider.js');
14
+ require('../../viewport/ViewportProvider.js');
15
+ var StepExpandTrigger$1 = require('./StepExpandTrigger.css.js');
16
+
17
+ const withBaseName = makePrefixer.makePrefixer("saltStepExpandTrigger");
18
+ function StepExpandTrigger({
19
+ id,
20
+ expanded,
21
+ className,
22
+ ...props
23
+ }) {
24
+ const { CollapseIcon, ExpandIcon } = SemanticIconProvider.useIcon();
25
+ const targetWindow = window.useWindow();
26
+ styles.useComponentCssInjection({
27
+ testId: "salt-step-expand-trigger",
28
+ css: StepExpandTrigger$1,
29
+ window: targetWindow
30
+ });
31
+ return /* @__PURE__ */ jsxRuntime.jsx(
32
+ Button.Button,
33
+ {
34
+ id,
35
+ sentiment: "neutral",
36
+ appearance: "transparent",
37
+ className: clsx(withBaseName(), className),
38
+ ...props,
39
+ children: expanded ? /* @__PURE__ */ jsxRuntime.jsx(CollapseIcon, { "aria-hidden": true }) : /* @__PURE__ */ jsxRuntime.jsx(ExpandIcon, { "aria-hidden": true })
40
+ }
41
+ );
42
+ }
43
+
44
+ exports.StepExpandTrigger = StepExpandTrigger;
45
+ //# sourceMappingURL=StepExpandTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepExpandTrigger.js","sources":["../src/stepper/internal/StepExpandTrigger.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\nimport { Button, type ButtonProps } from \"../../button\";\nimport { useIcon } from \"../../semantic-icon-provider\";\nimport { makePrefixer } from \"../../utils\";\n\nimport stepExpandTriggerCSS from \"./StepExpandTrigger.css\";\n\nexport interface StepExpandTriggerProps extends ButtonProps {\n expanded: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltStepExpandTrigger\");\n\nexport function StepExpandTrigger({\n id,\n expanded,\n className,\n ...props\n}: StepExpandTriggerProps) {\n const { CollapseIcon, ExpandIcon } = useIcon();\n const targetWindow = useWindow();\n\n useComponentCssInjection({\n testId: \"salt-step-expand-trigger\",\n css: stepExpandTriggerCSS,\n window: targetWindow,\n });\n\n return (\n <Button\n id={id}\n sentiment=\"neutral\"\n appearance=\"transparent\"\n className={clsx(withBaseName(), className)}\n {...props}\n >\n {expanded ? <CollapseIcon aria-hidden /> : <ExpandIcon aria-hidden />}\n </Button>\n );\n}\n"],"names":["makePrefixer","useIcon","useWindow","useComponentCssInjection","stepExpandTriggerCSS","jsx","Button"],"mappings":";;;;;;;;;;;;;;;;AAaA,MAAM,YAAA,GAAeA,0BAAa,uBAAuB,CAAA;AAElD,SAAS,iBAAkB,CAAA;AAAA,EAChC,EAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAA2B,EAAA;AACzB,EAAA,MAAM,EAAE,YAAA,EAAc,UAAW,EAAA,GAAIC,4BAAQ,EAAA;AAC7C,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAE/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAC,mBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAAC,cAAA;AAAA,IAACC,aAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,SAAU,EAAA,SAAA;AAAA,MACV,UAAW,EAAA,aAAA;AAAA,MACX,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACxC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,QAAA,kCAAY,YAAa,EAAA,EAAA,aAAA,EAAW,MAAC,CAAK,mBAAAD,cAAA,CAAC,UAAW,EAAA,EAAA,aAAA,EAAW,IAAC,EAAA;AAAA;AAAA,GACrE;AAEJ;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltStepIcon {\n grid-area: icon;\n\n display: flex;\n justify-content: center;\n align-items: center;\n justify-self: center;\n}\n\n.saltStepper-vertical .saltStepIcon {\n height: var(--salt-size-base);\n}\n\n.saltStep-stage-pending > .saltStepIcon {\n --saltIcon-color: var(--salt-status-static-foreground);\n}\n\n.saltStep-stage-locked > .saltStepIcon {\n --saltIcon-color: var(--salt-status-static-foreground);\n}\n\n.saltStep-stage-inprogress > .saltStepIcon {\n --saltIcon-color: var(--salt-status-info-foreground-decorative);\n}\n\n.saltStep-stage-active > .saltStepIcon {\n --saltIcon-color: var(--salt-status-info-foreground-decorative);\n}\n\n.saltStep-stage-completed > .saltStepIcon {\n --saltIcon-color: var(--salt-status-success-foreground-decorative);\n}\n\n.saltStep-status-warning > .saltStepIcon {\n --saltIcon-color: var(--salt-status-warning-foreground-decorative);\n}\n\n.saltStep-status-error > .saltStepIcon {\n --saltIcon-color: var(--salt-status-error-foreground-decorative);\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=StepIcon.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepIcon.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var React = require('react');
8
+ var SemanticIconProvider = require('../../semantic-icon-provider/SemanticIconProvider.js');
9
+ var makePrefixer = require('../../utils/makePrefixer.js');
10
+ require('../../utils/useFloatingUI/useFloatingUI.js');
11
+ require('../../utils/useId.js');
12
+ require('../../salt-provider/SaltProvider.js');
13
+ require('../../viewport/ViewportProvider.js');
14
+ var StepIcon$1 = require('./StepIcon.css.js');
15
+
16
+ const withBaseName = makePrefixer.makePrefixer("saltStepIcon");
17
+ function StepIcon({
18
+ status,
19
+ stage,
20
+ size,
21
+ sizeMultiplier = size || 1.5,
22
+ className,
23
+ ...props
24
+ }) {
25
+ const targetWindow = window.useWindow();
26
+ const IconComponent = useStepIcon({ stage, status });
27
+ styles.useComponentCssInjection({
28
+ testId: "salt-step-icon",
29
+ css: StepIcon$1,
30
+ window: targetWindow
31
+ });
32
+ return /* @__PURE__ */ jsxRuntime.jsx(
33
+ IconComponent,
34
+ {
35
+ size: sizeMultiplier,
36
+ className: clsx(withBaseName(), className),
37
+ ...props
38
+ }
39
+ );
40
+ }
41
+ function useStepIcon({
42
+ stage,
43
+ status
44
+ }) {
45
+ const icons = SemanticIconProvider.useIcon();
46
+ const stateToIcon = React.useMemo(
47
+ () => ({
48
+ error: icons.ErrorIcon,
49
+ warning: icons.WarningIcon,
50
+ active: icons.ActiveIcon,
51
+ completed: icons.CompletedIcon,
52
+ pending: icons.PendingIcon,
53
+ inprogress: icons.InProgressIcon,
54
+ locked: icons.LockedIcon
55
+ }),
56
+ [icons]
57
+ );
58
+ return stateToIcon[status || stage];
59
+ }
60
+
61
+ exports.StepIcon = StepIcon;
62
+ //# sourceMappingURL=StepIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepIcon.js","sources":["../src/stepper/internal/StepIcon.tsx"],"sourcesContent":["import type { IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\nimport { useMemo } from \"react\";\nimport { useIcon } from \"../../semantic-icon-provider\";\nimport { makePrefixer } from \"../../utils\";\n\nimport stepIconCSS from \"./StepIcon.css\";\n\nimport type { StepStage, StepStatus } from \"../Step\";\n\nexport interface StepIconProps extends IconProps {\n stage: StepStage;\n status?: StepStatus;\n sizeMultiplier?: IconProps[\"size\"];\n}\n\nconst withBaseName = makePrefixer(\"saltStepIcon\");\n\nexport function StepIcon({\n status,\n stage,\n size,\n sizeMultiplier = size || 1.5,\n className,\n ...props\n}: StepIconProps) {\n const targetWindow = useWindow();\n const IconComponent = useStepIcon({ stage, status });\n\n useComponentCssInjection({\n testId: \"salt-step-icon\",\n css: stepIconCSS,\n window: targetWindow,\n });\n\n return (\n <IconComponent\n size={sizeMultiplier}\n className={clsx(withBaseName(), className)}\n {...props}\n />\n );\n}\n\nfunction useStepIcon({\n stage,\n status,\n}: Pick<StepIconProps, \"stage\" | \"status\">) {\n const icons = useIcon();\n\n const stateToIcon = useMemo(\n () => ({\n error: icons.ErrorIcon,\n warning: icons.WarningIcon,\n active: icons.ActiveIcon,\n completed: icons.CompletedIcon,\n pending: icons.PendingIcon,\n inprogress: icons.InProgressIcon,\n locked: icons.LockedIcon,\n }),\n [icons],\n );\n\n return stateToIcon[status || stage];\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","stepIconCSS","jsx","useIcon","useMemo"],"mappings":";;;;;;;;;;;;;;;AAkBA,MAAM,YAAA,GAAeA,0BAAa,cAAc,CAAA;AAEzC,SAAS,QAAS,CAAA;AAAA,EACvB,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,iBAAiB,IAAQ,IAAA,GAAA;AAAA,EACzB,SAAA;AAAA,EACA,GAAG;AACL,CAAkB,EAAA;AAChB,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,EAAA,MAAM,aAAgB,GAAA,WAAA,CAAY,EAAE,KAAA,EAAO,QAAQ,CAAA;AAEnD,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAAC,UAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAAC,cAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,IAAM,EAAA,cAAA;AAAA,MACN,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACxC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAY,CAAA;AAAA,EACnB,KAAA;AAAA,EACA;AACF,CAA4C,EAAA;AAC1C,EAAA,MAAM,QAAQC,4BAAQ,EAAA;AAEtB,EAAA,MAAM,WAAc,GAAAC,aAAA;AAAA,IAClB,OAAO;AAAA,MACL,OAAO,KAAM,CAAA,SAAA;AAAA,MACb,SAAS,KAAM,CAAA,WAAA;AAAA,MACf,QAAQ,KAAM,CAAA,UAAA;AAAA,MACd,WAAW,KAAM,CAAA,aAAA;AAAA,MACjB,SAAS,KAAM,CAAA,WAAA;AAAA,MACf,YAAY,KAAM,CAAA,cAAA;AAAA,MAClB,QAAQ,KAAM,CAAA;AAAA,KAChB,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AAEA,EAAO,OAAA,WAAA,CAAY,UAAU,KAAK,CAAA;AACpC;;;;"}
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ function StepScreenReaderOnly({
6
+ children,
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "salt-visuallyHidden", ...props, children });
10
+ }
11
+
12
+ exports.StepScreenReaderOnly = StepScreenReaderOnly;
13
+ //# sourceMappingURL=StepScreenReaderOnly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepScreenReaderOnly.js","sources":["../src/stepper/internal/StepScreenReaderOnly.tsx"],"sourcesContent":["import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nexport interface StepScreenReaderOnlyProps\n extends ComponentPropsWithoutRef<\"div\"> {\n children?: ReactNode;\n}\n\nexport function StepScreenReaderOnly({\n children,\n ...props\n}: StepScreenReaderOnlyProps) {\n return (\n <div className=\"salt-visuallyHidden\" {...props}>\n {children}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAOO,SAAS,oBAAqB,CAAA;AAAA,EACnC,QAAA;AAAA,EACA,GAAG;AACL,CAA8B,EAAA;AAC5B,EAAA,sCACG,KAAI,EAAA,EAAA,SAAA,EAAU,qBAAuB,EAAA,GAAG,OACtC,QACH,EAAA,CAAA;AAEJ;;;;"}
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+
3
+ var css_248z = ".saltStepText-label {\n grid-area: label;\n}\n\n.saltStepper-horizontal .saltStepText-label {\n margin-top: var(--salt-spacing-50);\n}\n\n.saltStepper-vertical .saltStepText-label {\n padding-top: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);\n padding-bottom: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);\n padding-left: calc((var(--step-depth)) * var(--salt-spacing-100));\n}\n\n.saltStep-depth-0 > .saltText.saltStepText-label {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n\n.saltStep-depth-0 > .saltText.saltStepText-label {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n\n.saltStepText-description {\n grid-area: description;\n}\n\n.saltStepper-vertical .saltStepText-description {\n padding-bottom: var(--salt-spacing-300);\n padding-left: calc((var(--step-depth)) * var(--salt-spacing-100));\n}\n\n.saltStep-status-warning > .saltStepText-description {\n color: var(--salt-status-warning-foreground-informative);\n}\n\n.saltStep-status-error > .saltStepText-description {\n color: var(--salt-status-error-foreground-informative);\n}\n";
4
+
5
+ module.exports = css_248z;
6
+ //# sourceMappingURL=StepText.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepText.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
6
+ var clsx = require('clsx');
7
+ var Text = require('../../text/Text.js');
8
+ require('../../text/Code.js');
9
+ require('../../text/Display.js');
10
+ require('../../text/Headings.js');
11
+ require('../../text/Label.js');
12
+ require('../../text/TextAction.js');
13
+ require('../../text/TextNotation.js');
14
+ require('react');
15
+ var makePrefixer = require('../../utils/makePrefixer.js');
16
+ require('../../utils/useFloatingUI/useFloatingUI.js');
17
+ require('../../utils/useId.js');
18
+ require('../../salt-provider/SaltProvider.js');
19
+ require('../../viewport/ViewportProvider.js');
20
+ var StepText$1 = require('./StepText.css.js');
21
+
22
+ const withBaseName = makePrefixer.makePrefixer("saltStepText");
23
+ function StepText({
24
+ id,
25
+ purpose,
26
+ className,
27
+ styleAs = "label",
28
+ children,
29
+ ...props
30
+ }) {
31
+ const targetWindow = window.useWindow();
32
+ styles.useComponentCssInjection({
33
+ testId: "salt-step-text",
34
+ css: StepText$1,
35
+ window: targetWindow
36
+ });
37
+ return /* @__PURE__ */ jsxRuntime.jsx(
38
+ Text.Text,
39
+ {
40
+ id,
41
+ styleAs: "label",
42
+ className: clsx(withBaseName(), withBaseName(purpose), className),
43
+ ...props,
44
+ children
45
+ }
46
+ );
47
+ }
48
+
49
+ exports.StepText = StepText;
50
+ //# sourceMappingURL=StepText.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepText.js","sources":["../src/stepper/internal/StepText.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\n\nimport { Text, type TextProps } from \"../../text\";\nimport { makePrefixer } from \"../../utils\";\nimport stepTextCSS from \"./StepText.css\";\n\nexport interface StepTextProps extends TextProps<\"div\"> {\n purpose: \"label\" | \"description\";\n}\n\nconst withBaseName = makePrefixer(\"saltStepText\");\n\nexport function StepText({\n id,\n purpose,\n className,\n styleAs = \"label\",\n children,\n ...props\n}: StepTextProps) {\n const targetWindow = useWindow();\n\n useComponentCssInjection({\n testId: \"salt-step-text\",\n css: stepTextCSS,\n window: targetWindow,\n });\n\n return (\n <Text\n id={id}\n styleAs=\"label\"\n className={clsx(withBaseName(), withBaseName(purpose), className)}\n {...props}\n >\n {children}\n </Text>\n );\n}\n"],"names":["makePrefixer","useWindow","useComponentCssInjection","stepTextCSS","jsx","Text"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAYA,MAAM,YAAA,GAAeA,0BAAa,cAAc,CAAA;AAEzC,SAAS,QAAS,CAAA;AAAA,EACvB,EAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAU,GAAA,OAAA;AAAA,EACV,QAAA;AAAA,EACA,GAAG;AACL,CAAkB,EAAA;AAChB,EAAA,MAAM,eAAeC,gBAAU,EAAA;AAE/B,EAAyBC,+BAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAAC,UAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAAC,cAAA;AAAA,IAACC,SAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,OAAQ,EAAA,OAAA;AAAA,MACR,WAAW,IAAK,CAAA,YAAA,IAAgB,YAAa,CAAA,OAAO,GAAG,SAAS,CAAA;AAAA,MAC/D,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;;;;"}
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+
6
+ const StepperOrientationContext = React.createContext("horizontal");
7
+ const StepDepthContext = React.createContext(-1);
8
+ function StepperProvider({
9
+ orientation: orientationProp,
10
+ children
11
+ }) {
12
+ const depth = React.useContext(StepDepthContext);
13
+ return /* @__PURE__ */ jsxRuntime.jsx(StepperOrientationContext.Provider, { value: orientationProp, children: /* @__PURE__ */ jsxRuntime.jsx(StepDepthContext.Provider, { value: depth + 1, children }) });
14
+ }
15
+
16
+ exports.StepDepthContext = StepDepthContext;
17
+ exports.StepperOrientationContext = StepperOrientationContext;
18
+ exports.StepperProvider = StepperProvider;
19
+ //# sourceMappingURL=StepperProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepperProvider.js","sources":["../src/stepper/internal/StepperProvider.tsx"],"sourcesContent":["import { type ReactNode, createContext, useContext } from \"react\";\n\nimport type { StepDepth } from \"../Step\";\nimport type { StepperOrientation } from \"../Stepper\";\n\nexport const StepperOrientationContext =\n createContext<StepperOrientation>(\"horizontal\");\nexport const StepDepthContext = createContext<StepDepth>(-1);\n\nexport interface StepperProviderProps {\n orientation: StepperOrientation;\n children: ReactNode;\n}\n\nexport function StepperProvider({\n orientation: orientationProp,\n children,\n}: StepperProviderProps) {\n const depth = useContext(StepDepthContext);\n\n return (\n <StepperOrientationContext.Provider value={orientationProp}>\n <StepDepthContext.Provider value={depth + 1}>\n {children}\n </StepDepthContext.Provider>\n </StepperOrientationContext.Provider>\n );\n}\n"],"names":["createContext","useContext","jsx"],"mappings":";;;;;AAKa,MAAA,yBAAA,GACXA,oBAAkC,YAAY;AACnC,MAAA,gBAAA,GAAmBA,oBAAyB,EAAE;AAOpD,SAAS,eAAgB,CAAA;AAAA,EAC9B,WAAa,EAAA,eAAA;AAAA,EACb;AACF,CAAyB,EAAA;AACvB,EAAM,MAAA,KAAA,GAAQC,iBAAW,gBAAgB,CAAA;AAEzC,EAAA,uBACGC,cAAA,CAAA,yBAAA,CAA0B,QAA1B,EAAA,EAAmC,OAAO,eACzC,EAAA,QAAA,kBAAAA,cAAA,CAAC,gBAAiB,CAAA,QAAA,EAAjB,EAA0B,KAAA,EAAO,KAAQ,GAAA,CAAA,EACvC,UACH,CACF,EAAA,CAAA;AAEJ;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"Switch.js","sources":["../src/switch/Switch.tsx"],"sourcesContent":["import {\n type IconProps,\n SuccessSmallSolidIcon,\n SuccessSolidIcon,\n} from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEventHandler,\n type ComponentPropsWithoutRef,\n type FocusEventHandler,\n type ReactNode,\n forwardRef,\n} from \"react\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { useDensity } from \"../salt-provider\";\nimport type { DataAttributes } from \"../types\";\nimport { makePrefixer, useControlled } from \"../utils\";\n\nimport switchCss from \"./Switch.css\";\n\nexport interface SwitchProps\n extends Omit<\n ComponentPropsWithoutRef<\"label\">,\n \"children\" | \"onFocus\" | \"onBlur\" | \"onChange\"\n > {\n /**\n * If `true`, the switch will be checked.\n */\n checked?: boolean;\n /**\n * Whether the switch component is checked by default\n * This will be disregarded if checked is already set.\n */\n defaultChecked?: boolean;\n /**\n * If `true`, the switch will be disabled.\n */\n disabled?: boolean;\n /**\n * Properties applied to the input element.\n */\n inputProps?: Partial<ComponentPropsWithoutRef<\"input\">> & DataAttributes;\n /**\n * The label to be shown next to the switch.\n */\n label?: ReactNode;\n /**\n * The name applied to the input.\n */\n name?: string;\n /**\n * Callback when switch loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback when checked state is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Callback when switch gains focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * The value of the switch.\n */\n value?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltSwitch\");\n\nfunction CheckedIcon(props: IconProps) {\n const density = useDensity();\n return density === \"high\" ? (\n <SuccessSmallSolidIcon {...props} />\n ) : (\n <SuccessSolidIcon {...props} />\n );\n}\n\nexport const Switch = forwardRef<HTMLLabelElement, SwitchProps>(\n function Switch(props, ref) {\n const {\n checked: checkedProp,\n className,\n defaultChecked,\n disabled: disabledProp,\n inputProps = {},\n label,\n name,\n onBlur,\n onChange,\n onFocus,\n value,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-switch\",\n css: switchCss,\n window: targetWindow,\n });\n\n const {\n \"aria-describedby\": inputDescribedBy,\n \"aria-labelledby\": inputLabelledBy,\n className: inputClassName,\n onChange: inputOnChange,\n ...restInputProps\n } = inputProps;\n\n const [checked, setChecked] = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: \"Switch\",\n state: \"checked\",\n });\n\n const { a11yProps: formFieldA11yProps, disabled: formFieldDisabled } =\n useFormFieldProps();\n\n const disabled = formFieldDisabled || disabledProp;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n\n const value = event.target.checked;\n setChecked(value);\n onChange?.(event);\n inputOnChange?.(event);\n };\n\n return (\n <label\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"checked\")]: checked,\n },\n className,\n )}\n ref={ref}\n {...rest}\n >\n <input\n aria-describedby={clsx(\n formFieldA11yProps?.[\"aria-describedby\"],\n inputDescribedBy,\n )}\n aria-labelledby={clsx(\n formFieldA11yProps?.[\"aria-labelledby\"],\n inputLabelledBy,\n )}\n name={name}\n value={value}\n checked={checked}\n className={clsx(withBaseName(\"input\"), inputClassName)}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n type=\"checkbox\"\n role=\"switch\"\n {...restInputProps}\n />\n <span className={withBaseName(\"track\")}>\n <span className={withBaseName(\"thumb\")}>\n {checked && (\n <CheckedIcon aria-hidden className={withBaseName(\"icon\")} />\n )}\n </span>\n </span>\n {label && <span className={withBaseName(\"label\")}>{label}</span>}\n </label>\n );\n },\n);\n"],"names":["makePrefixer","useDensity","jsx","SuccessSmallSolidIcon","SuccessSolidIcon","forwardRef","Switch","useWindow","useComponentCssInjection","switchCss","useControlled","useFormFieldProps","value","jsxs","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"Switch.js","sources":["../src/switch/Switch.tsx"],"sourcesContent":["import {\n type IconProps,\n SuccessSmallSolidIcon,\n SuccessSolidIcon,\n} from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEventHandler,\n type ComponentPropsWithoutRef,\n type FocusEventHandler,\n type ReactNode,\n forwardRef,\n} from \"react\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { useDensity } from \"../salt-provider\";\nimport type { DataAttributes } from \"../types\";\nimport { makePrefixer, useControlled } from \"../utils\";\n\nimport switchCss from \"./Switch.css\";\n\nexport interface SwitchProps\n extends Omit<\n ComponentPropsWithoutRef<\"label\">,\n \"children\" | \"onFocus\" | \"onBlur\" | \"onChange\"\n > {\n /**\n * If `true`, the switch will be checked.\n */\n checked?: boolean;\n /**\n * Whether the switch component is checked by default\n * This will be disregarded if checked is already set.\n */\n defaultChecked?: boolean;\n /**\n * If `true`, the switch will be disabled.\n */\n disabled?: boolean;\n /**\n * Properties applied to the input element.\n */\n inputProps?: Partial<ComponentPropsWithoutRef<\"input\">> & DataAttributes;\n /**\n * The label to be shown next to the switch.\n */\n label?: ReactNode;\n /**\n * The name applied to the input.\n */\n name?: string;\n /**\n * Callback when switch loses focus.\n */\n onBlur?: FocusEventHandler<HTMLInputElement>;\n /**\n * Callback when checked state is changed.\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n /**\n * Callback when switch gains focus.\n */\n onFocus?: FocusEventHandler<HTMLInputElement>;\n /**\n * The value of the switch.\n */\n value?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltSwitch\");\n\nfunction CheckedIcon(props: IconProps) {\n const density = useDensity();\n return density === \"high\" ? (\n <SuccessSmallSolidIcon {...props} />\n ) : (\n <SuccessSolidIcon {...props} />\n );\n}\n\nexport const Switch = forwardRef<HTMLLabelElement, SwitchProps>(\n function Switch(props, ref) {\n const {\n checked: checkedProp,\n className,\n defaultChecked,\n disabled: disabledProp,\n inputProps = {},\n label,\n name,\n onBlur,\n onChange,\n onFocus,\n value,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-switch\",\n css: switchCss,\n window: targetWindow,\n });\n\n const {\n \"aria-describedby\": inputDescribedBy,\n \"aria-labelledby\": inputLabelledBy,\n className: inputClassName,\n onChange: inputOnChange,\n ...restInputProps\n } = inputProps;\n\n const [checked, setChecked] = useControlled({\n controlled: checkedProp,\n default: Boolean(defaultChecked),\n name: \"Switch\",\n state: \"checked\",\n });\n\n const { a11yProps: formFieldA11yProps, disabled: formFieldDisabled } =\n useFormFieldProps();\n\n const disabled = formFieldDisabled || disabledProp;\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n // Workaround for https://github.com/facebook/react/issues/9023\n if (event.nativeEvent.defaultPrevented) {\n return;\n }\n\n const value = event.target.checked;\n setChecked(value);\n onChange?.(event);\n inputOnChange?.(event);\n };\n\n return (\n <label\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"disabled\")]: disabled,\n [withBaseName(\"checked\")]: checked,\n },\n className,\n )}\n ref={ref}\n {...rest}\n >\n <input\n aria-describedby={clsx(\n formFieldA11yProps?.[\"aria-describedby\"],\n inputDescribedBy,\n )}\n aria-labelledby={clsx(\n formFieldA11yProps?.[\"aria-labelledby\"],\n inputLabelledBy,\n )}\n name={name}\n value={value}\n checked={checked}\n className={clsx(withBaseName(\"input\"), inputClassName)}\n defaultChecked={defaultChecked}\n disabled={disabled}\n onBlur={onBlur}\n onChange={handleChange}\n onFocus={onFocus}\n type=\"checkbox\"\n role=\"switch\"\n {...restInputProps}\n />\n <span className={withBaseName(\"track\")}>\n <span className={withBaseName(\"thumb\")}>\n {checked && (\n <CheckedIcon aria-hidden className={withBaseName(\"icon\")} />\n )}\n </span>\n </span>\n {label && <span className={withBaseName(\"label\")}>{label}</span>}\n </label>\n );\n },\n);\n"],"names":["makePrefixer","useDensity","jsx","SuccessSmallSolidIcon","SuccessSolidIcon","forwardRef","Switch","useWindow","useComponentCssInjection","switchCss","useControlled","useFormFieldProps","value","jsxs","clsx"],"mappings":";;;;;;;;;;;;;;;;;;AAsEA,MAAM,YAAA,GAAeA,0BAAa,YAAY,CAAA;AAE9C,SAAS,YAAY,KAAkB,EAAA;AACrC,EAAA,MAAM,UAAUC,uBAAW,EAAA;AAC3B,EAAO,OAAA,OAAA,KAAY,MACjB,mBAAAC,cAAA,CAACC,2BAAuB,EAAA,EAAA,GAAG,OAAO,CAElC,mBAAAD,cAAA,CAACE,sBAAkB,EAAA,EAAA,GAAG,KAAO,EAAA,CAAA;AAEjC;AAEO,MAAM,MAAS,GAAAC,gBAAA;AAAA,EACpB,SAASC,OAAO,CAAA,KAAA,EAAO,GAAK,EAAA;AAC1B,IAAM,MAAA;AAAA,MACJ,OAAS,EAAA,WAAA;AAAA,MACT,SAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAU,EAAA,YAAA;AAAA,MACV,aAAa,EAAC;AAAA,MACd,KAAA;AAAA,MACA,IAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,KAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,aAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA;AAAA,MACJ,kBAAoB,EAAA,gBAAA;AAAA,MACpB,iBAAmB,EAAA,eAAA;AAAA,MACnB,SAAW,EAAA,cAAA;AAAA,MACX,QAAU,EAAA,aAAA;AAAA,MACV,GAAG;AAAA,KACD,GAAA,UAAA;AAEJ,IAAA,MAAM,CAAC,OAAA,EAAS,UAAU,CAAA,GAAIC,2BAAc,CAAA;AAAA,MAC1C,UAAY,EAAA,WAAA;AAAA,MACZ,OAAA,EAAS,QAAQ,cAAc,CAAA;AAAA,MAC/B,IAAM,EAAA,QAAA;AAAA,MACN,KAAO,EAAA;AAAA,KACR,CAAA;AAED,IAAA,MAAM,EAAE,SAAW,EAAA,kBAAA,EAAoB,QAAU,EAAA,iBAAA,KAC/CC,mCAAkB,EAAA;AAEpB,IAAA,MAAM,WAAW,iBAAqB,IAAA,YAAA;AAEtC,IAAM,MAAA,YAAA,GAAqD,CAAC,KAAU,KAAA;AAEpE,MAAI,IAAA,KAAA,CAAM,YAAY,gBAAkB,EAAA;AACtC,QAAA;AAAA;AAGF,MAAMC,MAAAA,MAAAA,GAAQ,MAAM,MAAO,CAAA,OAAA;AAC3B,MAAA,UAAA,CAAWA,MAAK,CAAA;AAChB,MAAW,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAA,KAAA,CAAA;AACX,MAAgB,aAAA,IAAA,IAAA,GAAA,MAAA,GAAA,aAAA,CAAA,KAAA,CAAA;AAAA,KAClB;AAEA,IACE,uBAAAC,eAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,QAAA;AAAA,YAC5B,CAAC,YAAA,CAAa,SAAS,CAAC,GAAG;AAAA,WAC7B;AAAA,UACA;AAAA,SACF;AAAA,QACA,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAAAZ,cAAA;AAAA,YAAC,OAAA;AAAA,YAAA;AAAA,cACC,kBAAkB,EAAAY,SAAA;AAAA,gBAChB,kBAAqB,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAA,kBAAA,CAAA;AAAA,gBACrB;AAAA,eACF;AAAA,cACA,iBAAiB,EAAAA,SAAA;AAAA,gBACf,kBAAqB,IAAA,IAAA,GAAA,MAAA,GAAA,kBAAA,CAAA,iBAAA,CAAA;AAAA,gBACrB;AAAA,eACF;AAAA,cACA,IAAA;AAAA,cACA,KAAA;AAAA,cACA,OAAA;AAAA,cACA,SAAW,EAAAA,SAAA,CAAK,YAAa,CAAA,OAAO,GAAG,cAAc,CAAA;AAAA,cACrD,cAAA;AAAA,cACA,QAAA;AAAA,cACA,MAAA;AAAA,cACA,QAAU,EAAA,YAAA;AAAA,cACV,OAAA;AAAA,cACA,IAAK,EAAA,UAAA;AAAA,cACL,IAAK,EAAA,QAAA;AAAA,cACJ,GAAG;AAAA;AAAA,WACN;AAAA,0BACAZ,cAAA,CAAC,UAAK,SAAW,EAAA,YAAA,CAAa,OAAO,CACnC,EAAA,QAAA,kBAAAA,cAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,GAClC,QACC,EAAA,OAAA,oBAAAA,cAAA,CAAC,eAAY,aAAW,EAAA,IAAA,EAAC,WAAW,YAAa,CAAA,MAAM,CAAG,EAAA,CAAA,EAE9D,CACF,EAAA,CAAA;AAAA,UACC,yBAAUA,cAAA,CAAA,MAAA,EAAA,EAAK,WAAW,YAAa,CAAA,OAAO,GAAI,QAAM,EAAA,KAAA,EAAA;AAAA;AAAA;AAAA,KAC3D;AAAA;AAGN;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltToggleButton {\n align-items: center;\n appearance: none;\n background: var(--toggleButton-background);\n border-color: var(--toggleButton-borderColor, transparent);\n border-style: solid;\n border-width: var(--salt-size-border, 0);\n border-radius: var(--salt-palette-corner-weak, 0);\n color: var(--toggleButton-text-color);\n cursor: pointer;\n display: inline-flex;\n gap: var(--salt-spacing-50);\n justify-content: center;\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-action-fontWeight);\n font-family: var(--salt-text-action-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-action-letterSpacing);\n text-transform: var(--salt-text-action-textTransform);\n padding: 0 calc(var(--salt-spacing-100) - var(--salt-size-border, 0));\n margin: 0;\n height: var(--salt-size-base);\n min-width: unset;\n position: relative;\n text-align: var(--salt-text-action-textAlign);\n text-decoration: none;\n transition: none;\n width: auto;\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.saltToggleButton:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n background: var(--toggleButton-background-hover);\n color: var(--toggleButton-text-color-hover);\n border-color: var(--toggleButton-borderColor-hover);\n}\n\n.saltToggleButton:hover {\n background: var(--toggleButton-background-hover);\n color: var(--toggleButton-text-color-hover);\n border-color: var(--toggleButton-borderColor-hover);\n}\n\n.saltToggleButton[aria-checked=\"true\"],\n.saltToggleButton[aria-pressed=\"true\"] {\n background: var(--toggleButton-background-active);\n color: var(--toggleButton-text-color-active);\n cursor: var(--salt-actionable-cursor-active);\n border-color: var(--toggleButton-borderColor-active);\n}\n\n.saltToggleButton:disabled {\n background: var(--toggleButton-background-disabled);\n color: var(--toggleButton-text-color-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n border-color: var(--toggleButton-borderColor-disabled);\n}\n\n.saltToggleButton {\n --toggleButton-text-color: var(--salt-actionable-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-subtle-foreground-hover);\n --toggleButton-text-color-active: var(--salt-actionable-subtle-foreground-active);\n --toggleButton-text-color-disabled: var(--salt-actionable-subtle-foreground-disabled);\n --toggleButton-background: var(--salt-actionable-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-subtle-background-hover);\n --toggleButton-background-active: var(--salt-actionable-subtle-background-active);\n --toggleButton-background-disabled: var(--salt-actionable-subtle-background-disabled);\n --toggleButton-borderColor: var(--salt-actionable-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-subtle-borderColor-hover);\n --toggleButton-borderColor-active: var(--salt-actionable-subtle-borderColor-active);\n --toggleButton-borderColor-disabled: var(--salt-actionable-subtle-borderColor-disabled);\n}\n";
3
+ var css_248z = ".saltToggleButton {\n align-items: center;\n appearance: none;\n background: var(--toggleButton-background);\n border-color: var(--toggleButton-borderColor, transparent);\n border-style: solid;\n border-width: var(--salt-size-border, 0);\n border-radius: var(--salt-palette-corner-weak, 0);\n box-sizing: border-box;\n color: var(--toggleButton-text-color);\n cursor: pointer;\n display: inline-flex;\n gap: var(--salt-spacing-50);\n height: var(--salt-size-base);\n justify-content: center;\n line-height: var(--salt-text-lineHeight);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-action-fontWeight);\n font-family: var(--salt-text-action-fontFamily);\n letter-spacing: var(--salt-text-action-letterSpacing);\n text-transform: var(--salt-text-action-textTransform);\n padding: 0 calc(var(--salt-spacing-100) - var(--salt-size-border, 0));\n margin: 0;\n min-width: unset;\n position: relative;\n text-align: var(--salt-text-action-textAlign);\n text-decoration: none;\n transition: none;\n width: auto;\n -webkit-appearance: none;\n -webkit-tap-highlight-color: transparent;\n}\n\n.saltToggleButton:focus-visible {\n outline-style: var(--salt-focused-outlineStyle);\n outline-width: var(--salt-focused-outlineWidth);\n outline-color: var(--salt-focused-outlineColor);\n outline-offset: var(--salt-focused-outlineOffset);\n background: var(--toggleButton-background-hover);\n color: var(--toggleButton-text-color-hover);\n border-color: var(--toggleButton-borderColor-hover);\n}\n\n.saltToggleButton:hover {\n background: var(--toggleButton-background-hover);\n color: var(--toggleButton-text-color-hover);\n border-color: var(--toggleButton-borderColor-hover);\n}\n\n.saltToggleButton[aria-checked=\"true\"],\n.saltToggleButton[aria-pressed=\"true\"] {\n background: var(--toggleButton-background-selected);\n color: var(--toggleButton-text-color-selected);\n cursor: var(--salt-actionable-cursor-active);\n border-color: var(--toggleButton-borderColor-selected);\n}\n\n.saltToggleButton[aria-disabled=\"true\"] {\n background: var(--toggleButton-background-disabled);\n color: var(--toggleButton-text-color-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n border-color: var(--toggleButton-borderColor-disabled);\n}\n\n.saltToggleButton[aria-checked=\"true\"].saltToggleButton[aria-disabled=\"true\"],\n.saltToggleButton[aria-pressed=\"true\"].saltToggleButton[aria-disabled=\"true\"] {\n background: var(--toggleButton-background-disabled-selected);\n color: var(--toggleButton-text-color-disabled-selected);\n border-color: var(--toggleButton-borderColor-disabled-selected);\n}\n\n.saltToggleButton.saltToggleButton-readOnly {\n background: var(--toggleButton-background-readonly);\n color: var(--toggleButton-text-color-readonly);\n cursor: var(--salt-actionable-cursor-disabled);\n border-color: var(--toggleButton-borderColor-readonly);\n}\n\n.saltToggleButton[aria-checked=\"true\"].saltToggleButton-readOnly,\n.saltToggleButton[aria-pressed=\"true\"].saltToggleButton-readOnly {\n background: var(--toggleButton-background-readonly-selected);\n color: var(--toggleButton-text-color-readonly-selected);\n border-color: var(--toggleButton-borderColor-readonly-selected);\n}\n\n.saltToggleButton-neutral.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-subtle-foreground-active);\n --toggleButton-text-color-disabled: var(--salt-actionable-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-bold-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-subtle-foreground-active);\n --toggleButton-background: var(--salt-actionable-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-subtle-background-active);\n --toggleButton-background-disabled: var(--salt-actionable-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-bold-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-subtle-background-active);\n --toggleButton-borderColor: var(--salt-actionable-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-subtle-borderColor-hover);\n --toggleButton-borderColor-selected: var(--salt-actionable-subtle-borderColor-active);\n --toggleButton-borderColor-disabled: var(--salt-actionable-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-bold-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-subtle-borderColor-active);\n}\n\n.saltToggleButton-accented.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-accented-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-accented-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-accented-subtle-foreground-active);\n --toggleButton-text-color-disabled: var(--salt-actionable-accented-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-accented-bold-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-accented-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-accented-subtle-foreground-active);\n --toggleButton-background: var(--salt-actionable-accented-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-accented-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-accented-subtle-background-active);\n --toggleButton-background-disabled: var(--salt-actionable-accented-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-accented-bold-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-accented-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-accented-subtle-background-active);\n --toggleButton-borderColor: var(--salt-actionable-accented-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-accented-subtle-borderColor-hover);\n --toggleButton-borderColor-selected: var(--salt-actionable-accented-subtle-borderColor-active);\n --toggleButton-borderColor-disabled: var(--salt-actionable-accented-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-accented-bold-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-accented-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-accented-subtle-borderColor-active);\n}\n\n.saltToggleButton-positive.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-positive-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-positive-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-positive-subtle-foreground-active);\n --toggleButton-text-color-disabled: var(--salt-actionable-positive-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-positive-bold-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-positive-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-positive-subtle-foreground-active);\n --toggleButton-background: var(--salt-actionable-positive-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-positive-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-positive-subtle-background-active);\n --toggleButton-background-disabled: var(--salt-actionable-positive-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-positive-bold-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-positive-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-positive-subtle-background-active);\n --toggleButton-borderColor: var(--salt-actionable-positive-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-positive-subtle-borderColor-hover);\n --toggleButton-borderColor-selected: var(--salt-actionable-positive-subtle-borderColor-active);\n --toggleButton-borderColor-disabled: var(--salt-actionable-positive-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-positive-bold-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-positive-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-positive-subtle-borderColor-active);\n}\n\n.saltToggleButton-negative.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-negative-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-negative-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-negative-subtle-foreground-active);\n --toggleButton-text-color-disabled: var(--salt-actionable-negative-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-negative-bold-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-negative-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-negative-subtle-foreground-active);\n --toggleButton-background: var(--salt-actionable-negative-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-negative-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-negative-subtle-background-active);\n --toggleButton-background-disabled: var(--salt-actionable-negative-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-negative-bold-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-negative-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-negative-subtle-background-active);\n --toggleButton-borderColor: var(--salt-actionable-negative-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-negative-subtle-borderColor-hover);\n --toggleButton-borderColor-selected: var(--salt-actionable-negative-subtle-borderColor-active);\n --toggleButton-borderColor-disabled: var(--salt-actionable-negative-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-negative-bold-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-negative-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-negative-subtle-borderColor-active);\n}\n\n.saltToggleButton-caution.saltToggleButton-solid {\n --toggleButton-text-color: var(--salt-actionable-caution-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-caution-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-caution-subtle-foreground-active);\n --toggleButton-text-color-disabled: var(--salt-actionable-caution-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-caution-bold-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-caution-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-caution-subtle-foreground-active);\n --toggleButton-background: var(--salt-actionable-caution-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-caution-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-caution-subtle-background-active);\n --toggleButton-background-disabled: var(--salt-actionable-caution-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-caution-bold-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-caution-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-caution-subtle-background-active);\n --toggleButton-borderColor: var(--salt-actionable-caution-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-caution-subtle-borderColor-hover);\n --toggleButton-borderColor-selected: var(--salt-actionable-caution-subtle-borderColor-active);\n --toggleButton-borderColor-disabled: var(--salt-actionable-caution-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-caution-bold-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-caution-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-caution-subtle-borderColor-active);\n}\n\n.saltToggleButton-neutral.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-foreground);\n --toggleButton-text-color-disabled: var(--salt-actionable-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-foreground);\n --toggleButton-background: var(--salt-actionable-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-background);\n --toggleButton-background-disabled: var(--salt-actionable-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-background);\n --toggleButton-borderColor: var(--salt-actionable-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-subtle-border);\n --toggleButton-borderColor-selected: var(--salt-actionable-borderColor);\n --toggleButton-borderColor-disabled: var(--salt-actionable-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-borderColor);\n}\n\n.saltToggleButton-accented.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-accented-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-accented-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-accented-foreground);\n --toggleButton-text-color-disabled: var(--salt-actionable-accented-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-accented-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-accented-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-accented-foreground);\n --toggleButton-background: var(--salt-actionable-accented-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-accented-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-accented-background);\n --toggleButton-background-disabled: var(--salt-actionable-accented-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-accented-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-accented-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-accented-background);\n --toggleButton-borderColor: var(--salt-actionable-accented-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-accented-subtle-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-accented-borderColor);\n --toggleButton-borderColor-disabled: var(--salt-actionable-accented-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-accented-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-accented-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-accented-borderColor);\n}\n\n.saltToggleButton-positive.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-positive-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-positive-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-positive-foreground);\n --toggleButton-text-color-disabled: var(--salt-actionable-positive-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-positive-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-positive-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-positive-foreground);\n --toggleButton-background: var(--salt-actionable-positive-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-positive-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-positive-background);\n --toggleButton-background-disabled: var(--salt-actionable-positive-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-positive-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-positive-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-positive-background);\n --toggleButton-borderColor: var(--salt-actionable-positive-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-positive-subtle-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-positive-borderColor);\n --toggleButton-borderColor-disabled: var(--salt-actionable-positive-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-positive-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-positive-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-positive-borderColor);\n}\n\n.saltToggleButton-negative.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-negative-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-negative-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-negative-foreground);\n --toggleButton-text-color-disabled: var(--salt-actionable-negative-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-negative-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-negative-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-negative-foreground);\n --toggleButton-background: var(--salt-actionable-negative-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-negative-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-negative-background);\n --toggleButton-background-disabled: var(--salt-actionable-negative-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-negative-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-negative-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-negative-background);\n --toggleButton-borderColor: var(--salt-actionable-negative-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-negative-subtle-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-negative-borderColor);\n --toggleButton-borderColor-disabled: var(--salt-actionable-negative-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-negative-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-negative-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-negative-borderColor);\n}\n\n.saltToggleButton-caution.saltToggleButton-bordered {\n --toggleButton-text-color: var(--salt-actionable-caution-subtle-foreground);\n --toggleButton-text-color-hover: var(--salt-actionable-caution-subtle-foreground-hover);\n --toggleButton-text-color-selected: var(--salt-actionable-caution-foreground);\n --toggleButton-text-color-disabled: var(--salt-actionable-caution-subtle-foreground-disabled);\n --toggleButton-text-color-disabled-selected: var(--salt-actionable-caution-foreground-disabled);\n --toggleButton-text-color-readonly: var(--salt-actionable-caution-subtle-foreground-disabled);\n --toggleButton-text-color-readonly-selected: var(--salt-actionable-caution-foreground);\n --toggleButton-background: var(--salt-actionable-caution-subtle-background);\n --toggleButton-background-hover: var(--salt-actionable-caution-subtle-background-hover);\n --toggleButton-background-selected: var(--salt-actionable-caution-background);\n --toggleButton-background-disabled: var(--salt-actionable-caution-subtle-background-disabled);\n --toggleButton-background-disabled-selected: var(--salt-actionable-caution-background-disabled);\n --toggleButton-background-readonly: var(--salt-actionable-caution-subtle-background-disabled);\n --toggleButton-background-readonly-selected: var(--salt-actionable-caution-background);\n --toggleButton-borderColor: var(--salt-actionable-caution-subtle-borderColor);\n --toggleButton-borderColor-hover: var(--salt-actionable-caution-subtle-borderColor);\n --toggleButton-borderColor-selected: var(--salt-actionable-caution-borderColor);\n --toggleButton-borderColor-disabled: var(--salt-actionable-caution-subtle-borderColor-disabled);\n --toggleButton-borderColor-disabled-selected: var(--salt-actionable-caution-borderColor-disabled);\n --toggleButton-borderColor-readonly: var(--salt-actionable-caution-subtle-borderColor-disabled);\n --toggleButton-borderColor-readonly-selected: var(--salt-actionable-caution-borderColor);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=ToggleButton.css.js.map
@@ -20,6 +20,7 @@ const withBaseName = makePrefixer.makePrefixer("saltToggleButton");
20
20
  const ToggleButton = React.forwardRef(
21
21
  function ToggleButton2(props, ref) {
22
22
  const {
23
+ appearance: appearanceProp,
23
24
  children,
24
25
  className,
25
26
  disabled: disabledProp,
@@ -27,7 +28,10 @@ const ToggleButton = React.forwardRef(
27
28
  onClick,
28
29
  onFocus,
29
30
  onChange,
31
+ readOnly: readOnlyProp,
30
32
  selected: selectedProp,
33
+ defaultSelected,
34
+ sentiment: sentimenentProp,
31
35
  ...rest
32
36
  } = props;
33
37
  const targetWindow = window.useWindow();
@@ -41,14 +45,20 @@ const ToggleButton = React.forwardRef(
41
45
  const toggleButtonGroup = ToggleButtonGroupContext.useToggleButtonGroup();
42
46
  const toggleButtonGroupSelected = toggleButtonGroup ? toggleButtonGroup.isSelected(value) : selectedProp;
43
47
  const focusable = toggleButtonGroup ? toggleButtonGroup == null ? void 0 : toggleButtonGroup.isFocused(value) : true;
48
+ const sentiment = sentimenentProp || (toggleButtonGroup == null ? void 0 : toggleButtonGroup.sentiment) || "neutral";
49
+ const appearance = appearanceProp || (toggleButtonGroup == null ? void 0 : toggleButtonGroup.appearance) || "solid";
44
50
  const disabled = (toggleButtonGroup == null ? void 0 : toggleButtonGroup.disabled) || disabledProp;
51
+ const readOnly = (toggleButtonGroup == null ? void 0 : toggleButtonGroup.readOnly) || readOnlyProp;
45
52
  const [selected, setSelected] = useControlled.useControlled({
46
53
  controlled: toggleButtonGroupSelected,
47
- default: Boolean(selectedProp),
54
+ default: Boolean(defaultSelected),
48
55
  name: "ToggleButton",
49
56
  state: "selected"
50
57
  });
51
58
  const handleClick = (event) => {
59
+ if (disabled || readOnly) {
60
+ return;
61
+ }
52
62
  toggleButtonGroup == null ? void 0 : toggleButtonGroup.select(event);
53
63
  setSelected(!selected);
54
64
  onChange == null ? void 0 : onChange(event);
@@ -58,25 +68,29 @@ const ToggleButton = React.forwardRef(
58
68
  toggleButtonGroup == null ? void 0 : toggleButtonGroup.focus(value);
59
69
  onFocus == null ? void 0 : onFocus(event);
60
70
  };
61
- const ariaChecked = selected && !disabled;
62
- return /* @__PURE__ */ jsxRuntime.jsx(
63
- "button",
64
- {
65
- "aria-pressed": !toggleButtonGroup ? ariaChecked : void 0,
66
- "aria-checked": toggleButtonGroup ? ariaChecked : void 0,
67
- role: toggleButtonGroup ? "radio" : void 0,
68
- className: clsx.clsx(withBaseName(), className),
69
- disabled,
70
- ref: handleRef,
71
- onClick: handleClick,
72
- onFocus: handleFocus,
73
- tabIndex: focusable && !disabled ? 0 : -1,
74
- value,
75
- type: "button",
76
- ...rest,
77
- children
78
- }
79
- );
71
+ const toggleButtonProps = {
72
+ "aria-readonly": readOnlyProp,
73
+ "aria-pressed": !toggleButtonGroup ? selected : void 0,
74
+ "aria-checked": toggleButtonGroup ? selected : void 0,
75
+ "aria-disabled": disabled,
76
+ role: toggleButtonGroup ? "radio" : void 0,
77
+ className: clsx.clsx(
78
+ withBaseName(),
79
+ withBaseName(sentiment),
80
+ withBaseName(appearance),
81
+ readOnly && withBaseName("readOnly"),
82
+ className
83
+ ),
84
+ onClick: handleClick,
85
+ onFocus: handleFocus,
86
+ tabIndex: focusable ? 0 : -1,
87
+ value,
88
+ type: "button",
89
+ disabled,
90
+ readOnly: readOnlyProp,
91
+ ...rest
92
+ };
93
+ return /* @__PURE__ */ jsxRuntime.jsx("button", { ref: handleRef, ...toggleButtonProps, children });
80
94
  }
81
95
  );
82
96
 
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleButton.js","sources":["../src/toggle-button/ToggleButton.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n type MouseEvent,\n forwardRef,\n useRef,\n} from \"react\";\nimport { useToggleButtonGroup } from \"../toggle-button-group\";\nimport { makePrefixer, useControlled, useForkRef } from \"../utils\";\n\nimport toggleButtonCss from \"./ToggleButton.css\";\n\nexport interface ToggleButtonProps extends ComponentPropsWithoutRef<\"button\"> {\n selected?: boolean;\n onChange?: (event: MouseEvent<HTMLButtonElement>) => void;\n value: string | ReadonlyArray<string> | number | undefined;\n}\n\nconst withBaseName = makePrefixer(\"saltToggleButton\");\n\nexport const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(\n function ToggleButton(props, ref) {\n const {\n children,\n className,\n disabled: disabledProp,\n value,\n onClick,\n onFocus,\n onChange,\n selected: selectedProp,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-toggle-button\",\n css: toggleButtonCss,\n window: targetWindow,\n });\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const handleRef = useForkRef(ref, buttonRef);\n\n const toggleButtonGroup = useToggleButtonGroup();\n\n const toggleButtonGroupSelected = toggleButtonGroup\n ? toggleButtonGroup.isSelected(value)\n : selectedProp;\n const focusable = toggleButtonGroup\n ? toggleButtonGroup?.isFocused(value)\n : true;\n const disabled = toggleButtonGroup?.disabled || disabledProp;\n\n const [selected, setSelected] = useControlled({\n controlled: toggleButtonGroupSelected,\n default: Boolean(selectedProp),\n name: \"ToggleButton\",\n state: \"selected\",\n });\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n toggleButtonGroup?.select(event);\n setSelected(!selected);\n onChange?.(event);\n onClick?.(event);\n };\n\n const handleFocus = (event: FocusEvent<HTMLButtonElement>) => {\n toggleButtonGroup?.focus(value);\n onFocus?.(event);\n };\n\n const ariaChecked = selected && !disabled;\n\n return (\n <button\n aria-pressed={!toggleButtonGroup ? ariaChecked : undefined}\n aria-checked={toggleButtonGroup ? ariaChecked : undefined}\n role={toggleButtonGroup ? \"radio\" : undefined}\n className={clsx(withBaseName(), className)}\n disabled={disabled}\n ref={handleRef}\n onClick={handleClick}\n onFocus={handleFocus}\n tabIndex={focusable && !disabled ? 0 : -1}\n value={value}\n type=\"button\"\n {...rest}\n >\n {children}\n </button>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","ToggleButton","useWindow","useComponentCssInjection","toggleButtonCss","useRef","useForkRef","useToggleButtonGroup","useControlled","jsx","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"ToggleButton.js","sources":["../src/toggle-button/ToggleButton.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n type MouseEvent,\n forwardRef,\n useRef,\n} from \"react\";\nimport type { ButtonAppearance, ButtonSentiment } from \"../button\";\nimport { useToggleButtonGroup } from \"../toggle-button-group\";\nimport { makePrefixer, useControlled, useForkRef } from \"../utils\";\n\nimport toggleButtonCss from \"./ToggleButton.css\";\n\nexport interface ToggleButtonProps extends ComponentPropsWithoutRef<\"button\"> {\n /**\n * The appearance of the toggle button when `selected` is true.\n * @default solid\n */\n appearance?: Extract<ButtonAppearance, \"bordered\" | \"solid\">;\n /**\n * Callback fired when the toggle button's selection state is changed.\n */\n onChange?: (event: MouseEvent<HTMLButtonElement>) => void;\n /**\n * If `true`, the toggle button will be read-only.\n */\n readOnly?: boolean;\n /**\n * The sentiment of the toggle button.\n * @default neutral\n */\n sentiment?: ButtonSentiment;\n /**\n * Whether the toggle button is in a selected state.\n */\n selected?: boolean;\n /**\n * Whether the toggle button is selected by default.\n * This will be disregarded if `selected` is already set.\n */\n defaultSelected?: boolean;\n /**\n * Value of the toggle button, to be used when in a controlled state.\n */\n value: string | ReadonlyArray<string> | number | undefined;\n}\n\nconst withBaseName = makePrefixer(\"saltToggleButton\");\n\nexport const ToggleButton = forwardRef<HTMLButtonElement, ToggleButtonProps>(\n function ToggleButton(props, ref) {\n const {\n appearance: appearanceProp,\n children,\n className,\n disabled: disabledProp,\n value,\n onClick,\n onFocus,\n onChange,\n readOnly: readOnlyProp,\n selected: selectedProp,\n defaultSelected,\n sentiment: sentimenentProp,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-toggle-button\",\n css: toggleButtonCss,\n window: targetWindow,\n });\n\n const buttonRef = useRef<HTMLButtonElement>(null);\n const handleRef = useForkRef(ref, buttonRef);\n\n const toggleButtonGroup = useToggleButtonGroup();\n\n const toggleButtonGroupSelected = toggleButtonGroup\n ? toggleButtonGroup.isSelected(value)\n : selectedProp;\n const focusable = toggleButtonGroup\n ? toggleButtonGroup?.isFocused(value)\n : true;\n\n const sentiment =\n sentimenentProp || toggleButtonGroup?.sentiment || \"neutral\";\n const appearance =\n appearanceProp || toggleButtonGroup?.appearance || \"solid\";\n const disabled = toggleButtonGroup?.disabled || disabledProp;\n const readOnly = toggleButtonGroup?.readOnly || readOnlyProp;\n\n const [selected, setSelected] = useControlled({\n controlled: toggleButtonGroupSelected,\n default: Boolean(defaultSelected),\n name: \"ToggleButton\",\n state: \"selected\",\n });\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n if (disabled || readOnly) {\n return;\n }\n toggleButtonGroup?.select(event);\n setSelected(!selected);\n onChange?.(event);\n onClick?.(event);\n };\n\n const handleFocus = (event: FocusEvent<HTMLButtonElement>) => {\n toggleButtonGroup?.focus(value);\n onFocus?.(event);\n };\n\n const toggleButtonProps: ToggleButtonProps = {\n \"aria-readonly\": readOnlyProp,\n \"aria-pressed\": !toggleButtonGroup ? selected : undefined,\n \"aria-checked\": toggleButtonGroup ? selected : undefined,\n \"aria-disabled\": disabled,\n role: toggleButtonGroup ? \"radio\" : undefined,\n className: clsx(\n withBaseName(),\n withBaseName(sentiment),\n withBaseName(appearance),\n readOnly && withBaseName(\"readOnly\"),\n className,\n ),\n onClick: handleClick,\n onFocus: handleFocus,\n tabIndex: focusable ? 0 : -1,\n value: value,\n type: \"button\",\n disabled: disabled,\n readOnly: readOnlyProp,\n ...rest,\n };\n\n return (\n <button ref={handleRef} {...toggleButtonProps}>\n {children}\n </button>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","ToggleButton","useWindow","useComponentCssInjection","toggleButtonCss","useRef","useForkRef","useToggleButtonGroup","useControlled","clsx"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltToggleButtonGroup {\n display: flex;\n background: var(--salt-container-primary-background);\n border: var(--salt-size-border) var(--salt-container-borderStyle) var(--salt-container-primary-borderColor);\n border-radius: var(--salt-palette-corner-weak, 0);\n width: fit-content;\n gap: var(--salt-spacing-50);\n padding: calc(var(--salt-spacing-50) - var(--salt-size-border));\n flex-direction: row;\n}\n\n.saltToggleButtonGroup .saltToggleButton {\n border-radius: var(--salt-palette-corner-weaker, 0);\n}\n\n.saltToggleButtonGroup-horizontal .saltToggleButton {\n height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n}\n\n.saltToggleButtonGroup-vertical {\n flex-direction: column;\n}\n\n.saltToggleButtonGroup-vertical .saltToggleButton {\n justify-content: start;\n}\n";
3
+ var css_248z = ".saltToggleButtonGroup {\n display: flex;\n background: var(--salt-container-primary-background);\n border: var(--salt-size-border) var(--salt-container-borderStyle) var(--salt-container-primary-borderColor);\n border-radius: var(--salt-palette-corner-weak, 0);\n width: fit-content;\n gap: var(--salt-spacing-50);\n padding: calc(var(--salt-spacing-50) - var(--salt-size-border));\n flex-direction: row;\n}\n\n.saltToggleButtonGroup-disabled {\n background: var(--salt-container-primary-background-disabled);\n border-color: var(--salt-container-primary-borderColor-disabled);\n cursor: var(--salt-actionable-cursor-disabled);\n}\n\n.saltToggleButtonGroup-readOnly {\n background: var(--salt-container-primary-background);\n border-color: var(--salt-container-primary-borderColor);\n cursor: var(--salt-actionable-cursor-disabled);\n}\n\n.saltToggleButtonGroup .saltToggleButton {\n border-radius: var(--salt-palette-corner-weaker, 0);\n}\n\n.saltToggleButtonGroup-horizontal .saltToggleButton {\n height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n}\n\n.saltToggleButtonGroup-vertical {\n flex-direction: column;\n}\n\n.saltToggleButtonGroup-vertical .saltToggleButton {\n justify-content: start;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=ToggleButtonGroup.css.js.map
@@ -18,6 +18,7 @@ var ToggleButtonGroupContext = require('./ToggleButtonGroupContext.js');
18
18
  const withBaseName = makePrefixer.makePrefixer("saltToggleButtonGroup");
19
19
  const ToggleButtonGroup = React.forwardRef(function ToggleButtonGroup2(props, ref) {
20
20
  const {
21
+ appearance,
21
22
  children,
22
23
  className,
23
24
  value: valueProp,
@@ -26,6 +27,8 @@ const ToggleButtonGroup = React.forwardRef(function ToggleButtonGroup2(props, re
26
27
  onChange,
27
28
  onKeyDown,
28
29
  orientation = "horizontal",
30
+ readOnly,
31
+ sentiment,
29
32
  ...rest
30
33
  } = props;
31
34
  const targetWindow = window.useWindow();
@@ -70,14 +73,27 @@ const ToggleButtonGroup = React.forwardRef(function ToggleButtonGroup2(props, re
70
73
  );
71
74
  const contextValue = React.useMemo(
72
75
  () => ({
73
- select,
74
- isSelected,
76
+ appearance,
77
+ disabled,
75
78
  focus,
76
79
  isFocused,
77
- disabled,
78
- orientation
80
+ isSelected,
81
+ orientation,
82
+ readOnly,
83
+ select,
84
+ sentiment
79
85
  }),
80
- [select, isSelected, isFocused, disabled, orientation, focus]
86
+ [
87
+ appearance,
88
+ disabled,
89
+ focus,
90
+ isFocused,
91
+ isSelected,
92
+ orientation,
93
+ readOnly,
94
+ select,
95
+ sentiment
96
+ ]
81
97
  );
82
98
  const handleKeyDown = (event) => {
83
99
  var _a, _b, _c;
@@ -102,7 +118,15 @@ const ToggleButtonGroup = React.forwardRef(function ToggleButtonGroup2(props, re
102
118
  return /* @__PURE__ */ jsxRuntime.jsx(ToggleButtonGroupContext.ToggleButtonGroupContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(
103
119
  "div",
104
120
  {
105
- className: clsx.clsx(withBaseName(), withBaseName(orientation), className),
121
+ "aria-disabled": disabled,
122
+ "aria-readonly": readOnly,
123
+ className: clsx.clsx(
124
+ withBaseName(),
125
+ withBaseName(orientation),
126
+ disabled && withBaseName("disabled"),
127
+ readOnly && withBaseName("readOnly"),
128
+ className
129
+ ),
106
130
  role: "radiogroup",
107
131
  ref: handleRef,
108
132
  onKeyDown: handleKeyDown,
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleButtonGroup.js","sources":["../src/toggle-button-group/ToggleButtonGroup.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n type SyntheticEvent,\n forwardRef,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport { makePrefixer, useControlled, useForkRef } from \"../utils\";\nimport toggleButtonGroupCss from \"./ToggleButtonGroup.css\";\nimport {\n ToggleButtonGroupContext,\n type Value,\n} from \"./ToggleButtonGroupContext\";\n\nexport interface ToggleButtonGroupProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue?: Value;\n /**\n * If `true`, the Toggle Button Group will be disabled.\n */\n disabled?: boolean;\n /**\n * The value. Use when the component is controlled.\n */\n value?: Value;\n /**\n * Callback fired when the selection changes.\n * @param event\n */\n onChange?: (event: SyntheticEvent<HTMLButtonElement>) => void;\n /**\n * The orientation of the toggle buttons.\n */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst withBaseName = makePrefixer(\"saltToggleButtonGroup\");\n\nexport const ToggleButtonGroup = forwardRef<\n HTMLDivElement,\n ToggleButtonGroupProps\n>(function ToggleButtonGroup(props, ref) {\n const {\n children,\n className,\n value: valueProp,\n defaultValue,\n disabled,\n onChange,\n onKeyDown,\n orientation = \"horizontal\",\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-toggle-button-group\",\n css: toggleButtonGroupCss,\n window: targetWindow,\n });\n\n const groupRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(ref, groupRef);\n\n const [value, setValue] = useControlled({\n default: defaultValue,\n controlled: valueProp,\n name: \"ToggleButtonGroup\",\n state: \"value\",\n });\n const [focused, setFocused] = useState<Value>(value);\n\n const select = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>) => {\n const newValue = event.currentTarget.value;\n setValue(newValue);\n if (value !== newValue) {\n onChange?.(event);\n }\n },\n [onChange, value],\n );\n\n const isSelected = useCallback(\n (id: Value) => {\n return value === id;\n },\n [value],\n );\n\n const focus = useCallback((id: Value) => {\n setFocused(id);\n }, []);\n\n const isFocused = useCallback(\n (id: Value) => {\n return focused === id || !focused;\n },\n [focused],\n );\n\n const contextValue = useMemo(\n () => ({\n select,\n isSelected,\n focus,\n isFocused,\n disabled,\n orientation,\n }),\n [select, isSelected, isFocused, disabled, orientation, focus],\n );\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const elements: HTMLElement[] = Array.from(\n groupRef.current?.querySelectorAll(\"button:not([disabled])\") ?? [],\n );\n const currentIndex = elements.findIndex(\n (element) => element === document.activeElement,\n );\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n elements[(currentIndex + 1) % elements.length]?.focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n elements[\n (currentIndex - 1 + elements.length) % elements.length\n ]?.focus();\n break;\n }\n\n onKeyDown?.(event);\n };\n\n return (\n <ToggleButtonGroupContext.Provider value={contextValue}>\n <div\n className={clsx(withBaseName(), withBaseName(orientation), className)}\n role=\"radiogroup\"\n ref={handleRef}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </ToggleButtonGroupContext.Provider>\n );\n});\n"],"names":["makePrefixer","forwardRef","ToggleButtonGroup","useWindow","useComponentCssInjection","toggleButtonGroupCss","useRef","useForkRef","useControlled","useState","useCallback","useMemo","jsx","ToggleButtonGroupContext","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"ToggleButtonGroup.js","sources":["../src/toggle-button-group/ToggleButtonGroup.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n type SyntheticEvent,\n forwardRef,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\";\n\nimport type { ButtonAppearance, ButtonSentiment } from \"../button\";\nimport { makePrefixer, useControlled, useForkRef } from \"../utils\";\nimport toggleButtonGroupCss from \"./ToggleButtonGroup.css\";\nimport {\n ToggleButtonGroupContext,\n type Value,\n} from \"./ToggleButtonGroupContext\";\n\nexport interface ToggleButtonGroupProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * The appearance of all the toggle buttons within the group.\n * @default solid\n */\n appearance?: Extract<ButtonAppearance, \"bordered\" | \"solid\">;\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue?: Value;\n /**\n * If `true`, the Toggle Button Group will be disabled.\n */\n disabled?: boolean;\n /**\n * Value of the toggle button group, to be used when the component is controlled.\n */\n value?: Value;\n /**\n * Callback fired when the selection changes.\n */\n onChange?: (event: SyntheticEvent<HTMLButtonElement>) => void;\n /**\n * If `true`, the toggle button group will be read-only.\n */\n readOnly?: boolean;\n /**\n * The orientation of the toggle buttons.\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * The visual sentimenent of all the toggle buttons within the group.\n * @default neutral\n */\n sentiment?: ButtonSentiment;\n}\n\nconst withBaseName = makePrefixer(\"saltToggleButtonGroup\");\n\nexport const ToggleButtonGroup = forwardRef<\n HTMLDivElement,\n ToggleButtonGroupProps\n>(function ToggleButtonGroup(props, ref) {\n const {\n appearance,\n children,\n className,\n value: valueProp,\n defaultValue,\n disabled,\n onChange,\n onKeyDown,\n orientation = \"horizontal\",\n readOnly,\n sentiment,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-toggle-button-group\",\n css: toggleButtonGroupCss,\n window: targetWindow,\n });\n\n const groupRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(ref, groupRef);\n\n const [value, setValue] = useControlled({\n default: defaultValue,\n controlled: valueProp,\n name: \"ToggleButtonGroup\",\n state: \"value\",\n });\n const [focused, setFocused] = useState<Value>(value);\n\n const select = useCallback(\n (event: SyntheticEvent<HTMLButtonElement>) => {\n const newValue = event.currentTarget.value;\n setValue(newValue);\n if (value !== newValue) {\n onChange?.(event);\n }\n },\n [onChange, value],\n );\n\n const isSelected = useCallback(\n (id: Value) => {\n return value === id;\n },\n [value],\n );\n\n const focus = useCallback((id: Value) => {\n setFocused(id);\n }, []);\n\n const isFocused = useCallback(\n (id: Value) => {\n return focused === id || !focused;\n },\n [focused],\n );\n\n const contextValue = useMemo(\n () => ({\n appearance,\n disabled,\n focus,\n isFocused,\n isSelected,\n orientation,\n readOnly,\n select,\n sentiment,\n }),\n [\n appearance,\n disabled,\n focus,\n isFocused,\n isSelected,\n orientation,\n readOnly,\n select,\n sentiment,\n ],\n );\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n const elements: HTMLElement[] = Array.from(\n groupRef.current?.querySelectorAll(\"button:not([disabled])\") ?? [],\n );\n const currentIndex = elements.findIndex(\n (element) => element === document.activeElement,\n );\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n elements[(currentIndex + 1) % elements.length]?.focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n elements[\n (currentIndex - 1 + elements.length) % elements.length\n ]?.focus();\n break;\n }\n\n onKeyDown?.(event);\n };\n\n return (\n <ToggleButtonGroupContext.Provider value={contextValue}>\n <div\n aria-disabled={disabled}\n aria-readonly={readOnly}\n className={clsx(\n withBaseName(),\n withBaseName(orientation),\n disabled && withBaseName(\"disabled\"),\n readOnly && withBaseName(\"readOnly\"),\n className,\n )}\n role=\"radiogroup\"\n ref={handleRef}\n onKeyDown={handleKeyDown}\n {...rest}\n >\n {children}\n </div>\n </ToggleButtonGroupContext.Provider>\n );\n});\n"],"names":["makePrefixer","forwardRef","ToggleButtonGroup","useWindow","useComponentCssInjection","toggleButtonGroupCss","useRef","useForkRef","useControlled","useState","useCallback","useMemo","jsx","ToggleButtonGroupContext","clsx"],"mappings":"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"}