@salt-ds/core 1.47.0 → 1.47.2

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 (569) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/css/salt-core.css +291 -271
  3. package/dist-cjs/accordion/Accordion.css.js +1 -1
  4. package/dist-cjs/accordion/Accordion.js.map +1 -1
  5. package/dist-cjs/accordion/AccordionContext.js +1 -1
  6. package/dist-cjs/accordion/AccordionGroup.css.js +1 -1
  7. package/dist-cjs/accordion/AccordionGroup.js.map +1 -1
  8. package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
  9. package/dist-cjs/accordion/AccordionHeader.js +1 -1
  10. package/dist-cjs/accordion/AccordionHeader.js.map +1 -1
  11. package/dist-cjs/accordion/AccordionPanel.css.js +1 -1
  12. package/dist-cjs/accordion/AccordionPanel.js +1 -1
  13. package/dist-cjs/accordion/AccordionPanel.js.map +1 -1
  14. package/dist-cjs/avatar/Avatar.js.map +1 -1
  15. package/dist-cjs/avatar/useAvatarImage.js +2 -2
  16. package/dist-cjs/badge/Badge.js.map +1 -1
  17. package/dist-cjs/banner/Banner.css.js +1 -1
  18. package/dist-cjs/banner/Banner.js +2 -2
  19. package/dist-cjs/banner/Banner.js.map +1 -1
  20. package/dist-cjs/banner/BannerActions.js +2 -2
  21. package/dist-cjs/banner/BannerActions.js.map +1 -1
  22. package/dist-cjs/banner/BannerContent.js +2 -2
  23. package/dist-cjs/banner/BannerContent.js.map +1 -1
  24. package/dist-cjs/border-item/BorderItem.js +33 -32
  25. package/dist-cjs/border-item/BorderItem.js.map +1 -1
  26. package/dist-cjs/border-layout/BorderLayout.js +3 -1
  27. package/dist-cjs/border-layout/BorderLayout.js.map +1 -1
  28. package/dist-cjs/button/Button.css.js +1 -1
  29. package/dist-cjs/button/Button.js +2 -1
  30. package/dist-cjs/button/Button.js.map +1 -1
  31. package/dist-cjs/card/Card.css.js +1 -1
  32. package/dist-cjs/checkbox/Checkbox.css.js +1 -1
  33. package/dist-cjs/checkbox/Checkbox.js +2 -2
  34. package/dist-cjs/checkbox/Checkbox.js.map +1 -1
  35. package/dist-cjs/checkbox/CheckboxIcon.css.js +1 -1
  36. package/dist-cjs/checkbox/internal/CheckboxGroupContext.js +1 -1
  37. package/dist-cjs/combo-box/ComboBox.js +2 -2
  38. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  39. package/dist-cjs/combo-box/useComboBox.js +1 -1
  40. package/dist-cjs/dialog/Dialog.css.js +1 -1
  41. package/dist-cjs/dialog/Dialog.js.map +1 -1
  42. package/dist-cjs/dialog/DialogActions.js.map +1 -1
  43. package/dist-cjs/dialog/DialogCloseButton.js +1 -1
  44. package/dist-cjs/dialog/DialogCloseButton.js.map +1 -1
  45. package/dist-cjs/dialog/DialogContent.css.js +1 -1
  46. package/dist-cjs/dialog/DialogContent.js +20 -43
  47. package/dist-cjs/dialog/DialogContent.js.map +1 -1
  48. package/dist-cjs/dialog/DialogHeader.js +1 -1
  49. package/dist-cjs/dialog/DialogHeader.js.map +1 -1
  50. package/dist-cjs/divider/Divider.css.js +1 -1
  51. package/dist-cjs/drawer/Drawer.js.map +1 -1
  52. package/dist-cjs/drawer/DrawerCloseButton.js +1 -1
  53. package/dist-cjs/drawer/DrawerCloseButton.js.map +1 -1
  54. package/dist-cjs/dropdown/Dropdown.css.js +1 -1
  55. package/dist-cjs/dropdown/Dropdown.js +2 -2
  56. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  57. package/dist-cjs/file-drop-zone/FileDropZone.css.js +1 -1
  58. package/dist-cjs/file-drop-zone/FileDropZone.js +3 -3
  59. package/dist-cjs/file-drop-zone/FileDropZone.js.map +1 -1
  60. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  61. package/dist-cjs/flex-item/FlexItem.js +46 -48
  62. package/dist-cjs/flex-item/FlexItem.js.map +1 -1
  63. package/dist-cjs/flex-layout/FlexLayout.css.js +1 -1
  64. package/dist-cjs/flex-layout/FlexLayout.js +60 -62
  65. package/dist-cjs/flex-layout/FlexLayout.js.map +1 -1
  66. package/dist-cjs/flow-layout/FlowLayout.js +3 -5
  67. package/dist-cjs/flow-layout/FlowLayout.js.map +1 -1
  68. package/dist-cjs/form-field/FormField.css.js +1 -1
  69. package/dist-cjs/form-field/FormField.js.map +1 -1
  70. package/dist-cjs/form-field/FormFieldHelperText.js +4 -4
  71. package/dist-cjs/form-field/FormFieldHelperText.js.map +1 -1
  72. package/dist-cjs/form-field/FormFieldLabel.js +1 -1
  73. package/dist-cjs/form-field-context/FormFieldContext.js +1 -1
  74. package/dist-cjs/grid-item/GridItem.js +53 -55
  75. package/dist-cjs/grid-item/GridItem.js.map +1 -1
  76. package/dist-cjs/grid-layout/GridLayout.js +53 -55
  77. package/dist-cjs/grid-layout/GridLayout.js.map +1 -1
  78. package/dist-cjs/index.js +63 -63
  79. package/dist-cjs/input/Input.css.js +1 -1
  80. package/dist-cjs/input/Input.js.map +1 -1
  81. package/dist-cjs/interactable-card/InteractableCard.css.js +1 -1
  82. package/dist-cjs/interactable-card/InteractableCard.js.map +1 -1
  83. package/dist-cjs/interactable-card/InteractableCardGroup.js.map +1 -1
  84. package/dist-cjs/interactable-card/InteractableCardGroupContext.js +1 -1
  85. package/dist-cjs/link/Link.js +1 -1
  86. package/dist-cjs/link/Link.js.map +1 -1
  87. package/dist-cjs/link/LinkAction.js +1 -1
  88. package/dist-cjs/link-card/LinkCard.css.js +1 -1
  89. package/dist-cjs/list-box/ListBox.css.js +1 -1
  90. package/dist-cjs/list-box/ListBox.js +2 -2
  91. package/dist-cjs/list-box/ListBox.js.map +1 -1
  92. package/dist-cjs/list-control/ListControlContext.js +3 -2
  93. package/dist-cjs/list-control/ListControlContext.js.map +1 -1
  94. package/dist-cjs/list-control/ListControlState.js +1 -1
  95. package/dist-cjs/menu/MenuBase.js +2 -2
  96. package/dist-cjs/menu/MenuBase.js.map +1 -1
  97. package/dist-cjs/menu/MenuContext.js +1 -1
  98. package/dist-cjs/menu/MenuContext.js.map +1 -1
  99. package/dist-cjs/menu/MenuGroup.css.js +1 -1
  100. package/dist-cjs/menu/MenuGroup.js.map +1 -1
  101. package/dist-cjs/menu/MenuItem.css.js +1 -1
  102. package/dist-cjs/menu/MenuItem.js +1 -1
  103. package/dist-cjs/menu/MenuItem.js.map +1 -1
  104. package/dist-cjs/menu/MenuPanel.css.js +1 -1
  105. package/dist-cjs/menu/MenuPanel.js.map +1 -1
  106. package/dist-cjs/menu/MenuPanelContext.js +1 -1
  107. package/dist-cjs/menu/MenuTrigger.js +33 -30
  108. package/dist-cjs/menu/MenuTrigger.js.map +1 -1
  109. package/dist-cjs/menu/MenuTriggerContext.js +1 -1
  110. package/dist-cjs/multiline-input/MultilineInput.css.js +1 -1
  111. package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
  112. package/dist-cjs/navigation-item/NavigationItem.css.js +1 -1
  113. package/dist-cjs/navigation-item/NavigationItem.js +2 -2
  114. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
  115. package/dist-cjs/navigation-item/NavigationItemAction.js +1 -1
  116. package/dist-cjs/option/Option.css.js +1 -1
  117. package/dist-cjs/option/Option.js +5 -1
  118. package/dist-cjs/option/Option.js.map +1 -1
  119. package/dist-cjs/option/OptionGroup.css.js +1 -1
  120. package/dist-cjs/option/OptionGroup.js.map +1 -1
  121. package/dist-cjs/option/OptionList.css.js +1 -1
  122. package/dist-cjs/overlay/OverlayContext.js +1 -1
  123. package/dist-cjs/overlay/OverlayHeader.js +1 -1
  124. package/dist-cjs/overlay/OverlayHeader.js.map +1 -1
  125. package/dist-cjs/overlay/OverlayPanel.css.js +1 -1
  126. package/dist-cjs/overlay/OverlayPanel.js.map +1 -1
  127. package/dist-cjs/overlay/OverlayPanelCloseButton.js +1 -1
  128. package/dist-cjs/overlay/OverlayPanelCloseButton.js.map +1 -1
  129. package/dist-cjs/overlay/OverlayPanelContent.css.js +1 -1
  130. package/dist-cjs/overlay/OverlayPanelContent.js +5 -5
  131. package/dist-cjs/overlay/OverlayPanelContent.js.map +1 -1
  132. package/dist-cjs/overlay/OverlayTrigger.js +18 -12
  133. package/dist-cjs/overlay/OverlayTrigger.js.map +1 -1
  134. package/dist-cjs/pagination/CompactInput.js +3 -3
  135. package/dist-cjs/pagination/CompactInput.js.map +1 -1
  136. package/dist-cjs/pagination/CompactPaginator.js +4 -4
  137. package/dist-cjs/pagination/CompactPaginator.js.map +1 -1
  138. package/dist-cjs/pagination/GoToInput.js +4 -4
  139. package/dist-cjs/pagination/GoToInput.js.map +1 -1
  140. package/dist-cjs/pagination/PageButton.css.js +1 -1
  141. package/dist-cjs/pagination/PageButton.js +3 -3
  142. package/dist-cjs/pagination/PageButton.js.map +1 -1
  143. package/dist-cjs/pagination/PageRanges.js +3 -3
  144. package/dist-cjs/pagination/PageRanges.js.map +1 -1
  145. package/dist-cjs/pagination/Pagination.js +4 -4
  146. package/dist-cjs/pagination/Pagination.js.map +1 -1
  147. package/dist-cjs/pagination/PaginationContext.js.map +1 -1
  148. package/dist-cjs/pagination/Paginator.js +3 -3
  149. package/dist-cjs/pagination/Paginator.js.map +1 -1
  150. package/dist-cjs/panel/Panel.js +2 -2
  151. package/dist-cjs/panel/Panel.js.map +1 -1
  152. package/dist-cjs/parent-child-layout/ParentChildLayout.js +1 -1
  153. package/dist-cjs/parent-child-layout/ParentChildLayout.js.map +1 -1
  154. package/dist-cjs/parent-child-layout/useIsViewportLargerThanBreakpoint.js +1 -1
  155. package/dist-cjs/pill/Pill.css.js +1 -1
  156. package/dist-cjs/pill/Pill.js +1 -1
  157. package/dist-cjs/pill/Pill.js.map +1 -1
  158. package/dist-cjs/pill-input/PillInput.css.js +1 -1
  159. package/dist-cjs/pill-input/PillInput.js +6 -4
  160. package/dist-cjs/pill-input/PillInput.js.map +1 -1
  161. package/dist-cjs/pill-input/useTruncatePills.js +3 -3
  162. package/dist-cjs/progress/CircularProgress/CircularProgress.css.js +1 -1
  163. package/dist-cjs/progress/CircularProgress/CircularProgress.js +1 -1
  164. package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
  165. package/dist-cjs/progress/LinearProgress/LinearProgress.css.js +1 -1
  166. package/dist-cjs/progress/LinearProgress/LinearProgress.js +1 -1
  167. package/dist-cjs/radio-button/RadioButton.css.js +1 -1
  168. package/dist-cjs/radio-button/RadioButton.js +1 -1
  169. package/dist-cjs/radio-button/RadioButton.js.map +1 -1
  170. package/dist-cjs/radio-button/RadioButtonGroup.js +4 -4
  171. package/dist-cjs/radio-button/RadioButtonGroup.js.map +1 -1
  172. package/dist-cjs/radio-button/RadioButtonIcon.css.js +1 -1
  173. package/dist-cjs/radio-button/internal/RadioGroupContext.js +1 -1
  174. package/dist-cjs/salt-provider/SaltProvider.js +1 -1
  175. package/dist-cjs/salt-provider/SaltProvider.js.map +1 -1
  176. package/dist-cjs/scrim/Scrim.js +2 -2
  177. package/dist-cjs/scrim/Scrim.js.map +1 -1
  178. package/dist-cjs/segmented-button-group/SegmentedButtonGroup.css.js +1 -1
  179. package/dist-cjs/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
  180. package/dist-cjs/skip-link/SkipLink.js +1 -1
  181. package/dist-cjs/skip-link/SkipLink.js.map +1 -1
  182. package/dist-cjs/slider/RangeSlider.js +4 -4
  183. package/dist-cjs/slider/RangeSlider.js.map +1 -1
  184. package/dist-cjs/slider/Slider.js.map +1 -1
  185. package/dist-cjs/slider/internal/SliderThumb.css.js +1 -1
  186. package/dist-cjs/slider/internal/SliderTooltip.css.js +1 -1
  187. package/dist-cjs/slider/internal/SliderTooltip.js +2 -2
  188. package/dist-cjs/slider/internal/SliderTooltip.js.map +1 -1
  189. package/dist-cjs/slider/internal/SliderTrack.css.js +1 -1
  190. package/dist-cjs/slider/internal/SliderTrack.js +1 -1
  191. package/dist-cjs/slider/internal/SliderTrack.js.map +1 -1
  192. package/dist-cjs/spinner/Spinner.css.js +1 -1
  193. package/dist-cjs/spinner/Spinner.js +5 -5
  194. package/dist-cjs/spinner/Spinner.js.map +1 -1
  195. package/dist-cjs/split-layout/SplitLayout.js +2 -1
  196. package/dist-cjs/split-layout/SplitLayout.js.map +1 -1
  197. package/dist-cjs/stack-layout/StackLayout.css.js +1 -1
  198. package/dist-cjs/stack-layout/StackLayout.js +4 -2
  199. package/dist-cjs/stack-layout/StackLayout.js.map +1 -1
  200. package/dist-cjs/status-adornment/StatusAdornment.js +1 -1
  201. package/dist-cjs/status-adornment/StatusAdornment.js.map +1 -1
  202. package/dist-cjs/status-indicator/StatusIndicator.js +3 -3
  203. package/dist-cjs/status-indicator/StatusIndicator.js.map +1 -1
  204. package/dist-cjs/stepper/Step.js +4 -4
  205. package/dist-cjs/stepper/Step.js.map +1 -1
  206. package/dist-cjs/stepper/Stepper.js +1 -1
  207. package/dist-cjs/stepper/Stepper.js.map +1 -1
  208. package/dist-cjs/stepper/internal/StepConnector.css.js +1 -1
  209. package/dist-cjs/stepper/internal/StepExpandTrigger.js +1 -1
  210. package/dist-cjs/stepper/internal/StepExpandTrigger.js.map +1 -1
  211. package/dist-cjs/stepper/internal/StepIcon.css.js +1 -1
  212. package/dist-cjs/stepper/internal/StepIcon.js +1 -1
  213. package/dist-cjs/stepper/internal/StepIcon.js.map +1 -1
  214. package/dist-cjs/stepper/internal/StepText.js +2 -2
  215. package/dist-cjs/stepper/internal/StepText.js.map +1 -1
  216. package/dist-cjs/stepper/internal/StepperProvider.js.map +1 -1
  217. package/dist-cjs/switch/Switch.css.js +1 -1
  218. package/dist-cjs/switch/Switch.js.map +1 -1
  219. package/dist-cjs/tag/Tag.css.js +1 -1
  220. package/dist-cjs/tag/Tag.js +1 -1
  221. package/dist-cjs/tag/Tag.js.map +1 -1
  222. package/dist-cjs/text/Text.js +2 -2
  223. package/dist-cjs/text/Text.js.map +1 -1
  224. package/dist-cjs/theme/Theme.js.map +1 -1
  225. package/dist-cjs/toast/Toast.css.js +1 -1
  226. package/dist-cjs/toast/Toast.js.map +1 -1
  227. package/dist-cjs/toast/ToastContent.js.map +1 -1
  228. package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
  229. package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
  230. package/dist-cjs/toggle-button-group/ToggleButtonGroup.css.js +1 -1
  231. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  232. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js +1 -1
  233. package/dist-cjs/tooltip/Tooltip.css.js +1 -1
  234. package/dist-cjs/tooltip/Tooltip.js +3 -3
  235. package/dist-cjs/tooltip/Tooltip.js.map +1 -1
  236. package/dist-cjs/tooltip/TooltipBase.js +2 -2
  237. package/dist-cjs/tooltip/TooltipBase.js.map +1 -1
  238. package/dist-cjs/tooltip/useAriaAnnounce.js +2 -2
  239. package/dist-cjs/tooltip/useTooltip.js +1 -1
  240. package/dist-cjs/utils/getRefFromChildren.js.map +1 -1
  241. package/dist-cjs/utils/renderProps.js.map +1 -1
  242. package/dist-cjs/utils/useControlled.js.map +1 -1
  243. package/dist-cjs/utils/useEventCallback.js +1 -7
  244. package/dist-cjs/utils/useEventCallback.js.map +1 -1
  245. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  246. package/dist-cjs/utils/useId.js.map +1 -1
  247. package/dist-cjs/viewport/ViewportProvider.js.map +1 -1
  248. package/dist-es/accordion/Accordion.css.js +1 -1
  249. package/dist-es/accordion/Accordion.js.map +1 -1
  250. package/dist-es/accordion/AccordionContext.js +1 -1
  251. package/dist-es/accordion/AccordionGroup.css.js +1 -1
  252. package/dist-es/accordion/AccordionGroup.js.map +1 -1
  253. package/dist-es/accordion/AccordionHeader.css.js +1 -1
  254. package/dist-es/accordion/AccordionHeader.js +1 -1
  255. package/dist-es/accordion/AccordionHeader.js.map +1 -1
  256. package/dist-es/accordion/AccordionPanel.css.js +1 -1
  257. package/dist-es/accordion/AccordionPanel.js +1 -1
  258. package/dist-es/accordion/AccordionPanel.js.map +1 -1
  259. package/dist-es/avatar/Avatar.js.map +1 -1
  260. package/dist-es/avatar/useAvatarImage.js +2 -2
  261. package/dist-es/badge/Badge.js.map +1 -1
  262. package/dist-es/banner/Banner.css.js +1 -1
  263. package/dist-es/banner/Banner.js +2 -2
  264. package/dist-es/banner/Banner.js.map +1 -1
  265. package/dist-es/banner/BannerActions.js +2 -2
  266. package/dist-es/banner/BannerActions.js.map +1 -1
  267. package/dist-es/banner/BannerContent.js +2 -2
  268. package/dist-es/banner/BannerContent.js.map +1 -1
  269. package/dist-es/border-item/BorderItem.js +33 -32
  270. package/dist-es/border-item/BorderItem.js.map +1 -1
  271. package/dist-es/border-layout/BorderLayout.js +3 -1
  272. package/dist-es/border-layout/BorderLayout.js.map +1 -1
  273. package/dist-es/button/Button.css.js +1 -1
  274. package/dist-es/button/Button.js +2 -1
  275. package/dist-es/button/Button.js.map +1 -1
  276. package/dist-es/card/Card.css.js +1 -1
  277. package/dist-es/checkbox/Checkbox.css.js +1 -1
  278. package/dist-es/checkbox/Checkbox.js +2 -2
  279. package/dist-es/checkbox/Checkbox.js.map +1 -1
  280. package/dist-es/checkbox/CheckboxIcon.css.js +1 -1
  281. package/dist-es/checkbox/internal/CheckboxGroupContext.js +1 -1
  282. package/dist-es/combo-box/ComboBox.js +2 -2
  283. package/dist-es/combo-box/ComboBox.js.map +1 -1
  284. package/dist-es/combo-box/useComboBox.js +1 -1
  285. package/dist-es/dialog/Dialog.css.js +1 -1
  286. package/dist-es/dialog/Dialog.js.map +1 -1
  287. package/dist-es/dialog/DialogActions.js.map +1 -1
  288. package/dist-es/dialog/DialogCloseButton.js +1 -1
  289. package/dist-es/dialog/DialogCloseButton.js.map +1 -1
  290. package/dist-es/dialog/DialogContent.css.js +1 -1
  291. package/dist-es/dialog/DialogContent.js +21 -44
  292. package/dist-es/dialog/DialogContent.js.map +1 -1
  293. package/dist-es/dialog/DialogHeader.js +1 -1
  294. package/dist-es/dialog/DialogHeader.js.map +1 -1
  295. package/dist-es/divider/Divider.css.js +1 -1
  296. package/dist-es/drawer/Drawer.js.map +1 -1
  297. package/dist-es/drawer/DrawerCloseButton.js +1 -1
  298. package/dist-es/drawer/DrawerCloseButton.js.map +1 -1
  299. package/dist-es/dropdown/Dropdown.css.js +1 -1
  300. package/dist-es/dropdown/Dropdown.js +2 -2
  301. package/dist-es/dropdown/Dropdown.js.map +1 -1
  302. package/dist-es/file-drop-zone/FileDropZone.css.js +1 -1
  303. package/dist-es/file-drop-zone/FileDropZone.js +3 -3
  304. package/dist-es/file-drop-zone/FileDropZone.js.map +1 -1
  305. package/dist-es/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  306. package/dist-es/flex-item/FlexItem.js +46 -48
  307. package/dist-es/flex-item/FlexItem.js.map +1 -1
  308. package/dist-es/flex-layout/FlexLayout.css.js +1 -1
  309. package/dist-es/flex-layout/FlexLayout.js +60 -62
  310. package/dist-es/flex-layout/FlexLayout.js.map +1 -1
  311. package/dist-es/flow-layout/FlowLayout.js +3 -5
  312. package/dist-es/flow-layout/FlowLayout.js.map +1 -1
  313. package/dist-es/form-field/FormField.css.js +1 -1
  314. package/dist-es/form-field/FormField.js.map +1 -1
  315. package/dist-es/form-field/FormFieldHelperText.js +4 -4
  316. package/dist-es/form-field/FormFieldHelperText.js.map +1 -1
  317. package/dist-es/form-field/FormFieldLabel.js +1 -1
  318. package/dist-es/form-field-context/FormFieldContext.js +1 -1
  319. package/dist-es/grid-item/GridItem.js +53 -55
  320. package/dist-es/grid-item/GridItem.js.map +1 -1
  321. package/dist-es/grid-layout/GridLayout.js +53 -55
  322. package/dist-es/grid-layout/GridLayout.js.map +1 -1
  323. package/dist-es/index.js +26 -26
  324. package/dist-es/input/Input.css.js +1 -1
  325. package/dist-es/input/Input.js.map +1 -1
  326. package/dist-es/interactable-card/InteractableCard.css.js +1 -1
  327. package/dist-es/interactable-card/InteractableCard.js.map +1 -1
  328. package/dist-es/interactable-card/InteractableCardGroup.js.map +1 -1
  329. package/dist-es/interactable-card/InteractableCardGroupContext.js +1 -1
  330. package/dist-es/link/Link.js +1 -1
  331. package/dist-es/link/Link.js.map +1 -1
  332. package/dist-es/link/LinkAction.js +1 -1
  333. package/dist-es/link-card/LinkCard.css.js +1 -1
  334. package/dist-es/list-box/ListBox.css.js +1 -1
  335. package/dist-es/list-box/ListBox.js +2 -2
  336. package/dist-es/list-box/ListBox.js.map +1 -1
  337. package/dist-es/list-control/ListControlContext.js +3 -2
  338. package/dist-es/list-control/ListControlContext.js.map +1 -1
  339. package/dist-es/list-control/ListControlState.js +1 -1
  340. package/dist-es/menu/MenuBase.js +2 -2
  341. package/dist-es/menu/MenuBase.js.map +1 -1
  342. package/dist-es/menu/MenuContext.js +1 -1
  343. package/dist-es/menu/MenuContext.js.map +1 -1
  344. package/dist-es/menu/MenuGroup.css.js +1 -1
  345. package/dist-es/menu/MenuGroup.js.map +1 -1
  346. package/dist-es/menu/MenuItem.css.js +1 -1
  347. package/dist-es/menu/MenuItem.js +1 -1
  348. package/dist-es/menu/MenuItem.js.map +1 -1
  349. package/dist-es/menu/MenuPanel.css.js +1 -1
  350. package/dist-es/menu/MenuPanel.js.map +1 -1
  351. package/dist-es/menu/MenuPanelContext.js +1 -1
  352. package/dist-es/menu/MenuTrigger.js +34 -31
  353. package/dist-es/menu/MenuTrigger.js.map +1 -1
  354. package/dist-es/menu/MenuTriggerContext.js +1 -1
  355. package/dist-es/multiline-input/MultilineInput.css.js +1 -1
  356. package/dist-es/multiline-input/MultilineInput.js.map +1 -1
  357. package/dist-es/navigation-item/NavigationItem.css.js +1 -1
  358. package/dist-es/navigation-item/NavigationItem.js +2 -2
  359. package/dist-es/navigation-item/NavigationItem.js.map +1 -1
  360. package/dist-es/navigation-item/NavigationItemAction.js +1 -1
  361. package/dist-es/option/Option.css.js +1 -1
  362. package/dist-es/option/Option.js +5 -1
  363. package/dist-es/option/Option.js.map +1 -1
  364. package/dist-es/option/OptionGroup.css.js +1 -1
  365. package/dist-es/option/OptionGroup.js.map +1 -1
  366. package/dist-es/option/OptionList.css.js +1 -1
  367. package/dist-es/overlay/OverlayContext.js +1 -1
  368. package/dist-es/overlay/OverlayHeader.js +1 -1
  369. package/dist-es/overlay/OverlayHeader.js.map +1 -1
  370. package/dist-es/overlay/OverlayPanel.css.js +1 -1
  371. package/dist-es/overlay/OverlayPanel.js.map +1 -1
  372. package/dist-es/overlay/OverlayPanelCloseButton.js +1 -1
  373. package/dist-es/overlay/OverlayPanelCloseButton.js.map +1 -1
  374. package/dist-es/overlay/OverlayPanelContent.css.js +1 -1
  375. package/dist-es/overlay/OverlayPanelContent.js +4 -4
  376. package/dist-es/overlay/OverlayPanelContent.js.map +1 -1
  377. package/dist-es/overlay/OverlayTrigger.js +19 -13
  378. package/dist-es/overlay/OverlayTrigger.js.map +1 -1
  379. package/dist-es/pagination/CompactInput.js +3 -3
  380. package/dist-es/pagination/CompactInput.js.map +1 -1
  381. package/dist-es/pagination/CompactPaginator.js +4 -4
  382. package/dist-es/pagination/CompactPaginator.js.map +1 -1
  383. package/dist-es/pagination/GoToInput.js +4 -4
  384. package/dist-es/pagination/GoToInput.js.map +1 -1
  385. package/dist-es/pagination/PageButton.css.js +1 -1
  386. package/dist-es/pagination/PageButton.js +3 -3
  387. package/dist-es/pagination/PageButton.js.map +1 -1
  388. package/dist-es/pagination/PageRanges.js +3 -3
  389. package/dist-es/pagination/PageRanges.js.map +1 -1
  390. package/dist-es/pagination/Pagination.js +4 -4
  391. package/dist-es/pagination/Pagination.js.map +1 -1
  392. package/dist-es/pagination/PaginationContext.js.map +1 -1
  393. package/dist-es/pagination/Paginator.js +3 -3
  394. package/dist-es/pagination/Paginator.js.map +1 -1
  395. package/dist-es/panel/Panel.js +2 -2
  396. package/dist-es/panel/Panel.js.map +1 -1
  397. package/dist-es/parent-child-layout/ParentChildLayout.js +1 -1
  398. package/dist-es/parent-child-layout/ParentChildLayout.js.map +1 -1
  399. package/dist-es/parent-child-layout/useIsViewportLargerThanBreakpoint.js +1 -1
  400. package/dist-es/pill/Pill.css.js +1 -1
  401. package/dist-es/pill/Pill.js +1 -1
  402. package/dist-es/pill/Pill.js.map +1 -1
  403. package/dist-es/pill-input/PillInput.css.js +1 -1
  404. package/dist-es/pill-input/PillInput.js +6 -4
  405. package/dist-es/pill-input/PillInput.js.map +1 -1
  406. package/dist-es/pill-input/useTruncatePills.js +3 -3
  407. package/dist-es/progress/CircularProgress/CircularProgress.css.js +1 -1
  408. package/dist-es/progress/CircularProgress/CircularProgress.js +1 -1
  409. package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
  410. package/dist-es/progress/LinearProgress/LinearProgress.css.js +1 -1
  411. package/dist-es/progress/LinearProgress/LinearProgress.js +1 -1
  412. package/dist-es/radio-button/RadioButton.css.js +1 -1
  413. package/dist-es/radio-button/RadioButton.js +1 -1
  414. package/dist-es/radio-button/RadioButton.js.map +1 -1
  415. package/dist-es/radio-button/RadioButtonGroup.js +4 -4
  416. package/dist-es/radio-button/RadioButtonGroup.js.map +1 -1
  417. package/dist-es/radio-button/RadioButtonIcon.css.js +1 -1
  418. package/dist-es/radio-button/internal/RadioGroupContext.js +1 -1
  419. package/dist-es/salt-provider/SaltProvider.js +1 -1
  420. package/dist-es/salt-provider/SaltProvider.js.map +1 -1
  421. package/dist-es/scrim/Scrim.js +2 -2
  422. package/dist-es/scrim/Scrim.js.map +1 -1
  423. package/dist-es/segmented-button-group/SegmentedButtonGroup.css.js +1 -1
  424. package/dist-es/semantic-icon-provider/SemanticIconProvider.js.map +1 -1
  425. package/dist-es/skip-link/SkipLink.js +1 -1
  426. package/dist-es/skip-link/SkipLink.js.map +1 -1
  427. package/dist-es/slider/RangeSlider.js +4 -4
  428. package/dist-es/slider/RangeSlider.js.map +1 -1
  429. package/dist-es/slider/Slider.js.map +1 -1
  430. package/dist-es/slider/internal/SliderThumb.css.js +1 -1
  431. package/dist-es/slider/internal/SliderTooltip.css.js +1 -1
  432. package/dist-es/slider/internal/SliderTooltip.js +2 -2
  433. package/dist-es/slider/internal/SliderTooltip.js.map +1 -1
  434. package/dist-es/slider/internal/SliderTrack.css.js +1 -1
  435. package/dist-es/slider/internal/SliderTrack.js +1 -1
  436. package/dist-es/slider/internal/SliderTrack.js.map +1 -1
  437. package/dist-es/spinner/Spinner.css.js +1 -1
  438. package/dist-es/spinner/Spinner.js +5 -5
  439. package/dist-es/spinner/Spinner.js.map +1 -1
  440. package/dist-es/split-layout/SplitLayout.js +2 -1
  441. package/dist-es/split-layout/SplitLayout.js.map +1 -1
  442. package/dist-es/stack-layout/StackLayout.css.js +1 -1
  443. package/dist-es/stack-layout/StackLayout.js +4 -2
  444. package/dist-es/stack-layout/StackLayout.js.map +1 -1
  445. package/dist-es/status-adornment/StatusAdornment.js +1 -1
  446. package/dist-es/status-adornment/StatusAdornment.js.map +1 -1
  447. package/dist-es/status-indicator/StatusIndicator.js +3 -3
  448. package/dist-es/status-indicator/StatusIndicator.js.map +1 -1
  449. package/dist-es/stepper/Step.js +4 -4
  450. package/dist-es/stepper/Step.js.map +1 -1
  451. package/dist-es/stepper/Stepper.js +1 -1
  452. package/dist-es/stepper/Stepper.js.map +1 -1
  453. package/dist-es/stepper/internal/StepConnector.css.js +1 -1
  454. package/dist-es/stepper/internal/StepExpandTrigger.js +1 -1
  455. package/dist-es/stepper/internal/StepExpandTrigger.js.map +1 -1
  456. package/dist-es/stepper/internal/StepIcon.css.js +1 -1
  457. package/dist-es/stepper/internal/StepIcon.js +1 -1
  458. package/dist-es/stepper/internal/StepIcon.js.map +1 -1
  459. package/dist-es/stepper/internal/StepText.js +2 -2
  460. package/dist-es/stepper/internal/StepText.js.map +1 -1
  461. package/dist-es/stepper/internal/StepperProvider.js.map +1 -1
  462. package/dist-es/switch/Switch.css.js +1 -1
  463. package/dist-es/switch/Switch.js.map +1 -1
  464. package/dist-es/tag/Tag.css.js +1 -1
  465. package/dist-es/tag/Tag.js +1 -1
  466. package/dist-es/tag/Tag.js.map +1 -1
  467. package/dist-es/text/Text.js +2 -2
  468. package/dist-es/text/Text.js.map +1 -1
  469. package/dist-es/theme/Theme.js.map +1 -1
  470. package/dist-es/toast/Toast.css.js +1 -1
  471. package/dist-es/toast/Toast.js.map +1 -1
  472. package/dist-es/toast/ToastContent.js.map +1 -1
  473. package/dist-es/toggle-button/ToggleButton.css.js +1 -1
  474. package/dist-es/toggle-button/ToggleButton.js.map +1 -1
  475. package/dist-es/toggle-button-group/ToggleButtonGroup.css.js +1 -1
  476. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  477. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js +1 -1
  478. package/dist-es/tooltip/Tooltip.css.js +1 -1
  479. package/dist-es/tooltip/Tooltip.js +3 -3
  480. package/dist-es/tooltip/Tooltip.js.map +1 -1
  481. package/dist-es/tooltip/TooltipBase.js +2 -2
  482. package/dist-es/tooltip/TooltipBase.js.map +1 -1
  483. package/dist-es/tooltip/useAriaAnnounce.js +2 -2
  484. package/dist-es/tooltip/useTooltip.js +1 -1
  485. package/dist-es/utils/getRefFromChildren.js.map +1 -1
  486. package/dist-es/utils/renderProps.js.map +1 -1
  487. package/dist-es/utils/useControlled.js.map +1 -1
  488. package/dist-es/utils/useEventCallback.js +1 -7
  489. package/dist-es/utils/useEventCallback.js.map +1 -1
  490. package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  491. package/dist-es/utils/useId.js.map +1 -1
  492. package/dist-es/viewport/ViewportProvider.js.map +1 -1
  493. package/dist-types/accordion/index.d.ts +2 -2
  494. package/dist-types/aria-announcer/AriaAnnouncerContext.d.ts +2 -2
  495. package/dist-types/aria-announcer/index.d.ts +1 -1
  496. package/dist-types/aria-announcer/useAriaAnnouncer.d.ts +2 -2
  497. package/dist-types/avatar/Avatar.d.ts +1 -1
  498. package/dist-types/border-item/BorderItem.d.ts +4 -4
  499. package/dist-types/border-layout/BorderLayout.d.ts +3 -3
  500. package/dist-types/breakpoints/BreakpointProvider.d.ts +1 -1
  501. package/dist-types/breakpoints/index.d.ts +1 -1
  502. package/dist-types/button/Button.d.ts +3 -3
  503. package/dist-types/combo-box/ComboBox.d.ts +3 -12
  504. package/dist-types/combo-box/useComboBox.d.ts +3 -3
  505. package/dist-types/dialog/DialogContext.d.ts +3 -2
  506. package/dist-types/dialog/index.d.ts +2 -2
  507. package/dist-types/dropdown/Dropdown.d.ts +3 -52
  508. package/dist-types/flex-item/FlexItem.d.ts +4 -4
  509. package/dist-types/flex-layout/FlexLayout.d.ts +7 -7
  510. package/dist-types/flow-layout/FlowLayout.d.ts +3 -3
  511. package/dist-types/form-field/FormField.d.ts +1 -1
  512. package/dist-types/form-field-context/FormFieldContext.d.ts +1 -1
  513. package/dist-types/grid-item/GridItem.d.ts +5 -5
  514. package/dist-types/grid-layout/GridLayout.d.ts +3 -3
  515. package/dist-types/index.d.ts +7 -7
  516. package/dist-types/interactable-card/InteractableCardGroupContext.d.ts +1 -1
  517. package/dist-types/list-box/ListBox.d.ts +3 -20
  518. package/dist-types/list-control/ListControlContext.d.ts +3 -2
  519. package/dist-types/list-control/ListControlState.d.ts +5 -5
  520. package/dist-types/menu/MenuContext.d.ts +1 -1
  521. package/dist-types/menu/MenuTrigger.d.ts +1 -1
  522. package/dist-types/menu/index.d.ts +1 -1
  523. package/dist-types/overlay/OverlayContext.d.ts +1 -1
  524. package/dist-types/overlay/OverlayTrigger.d.ts +1 -1
  525. package/dist-types/overlay/index.d.ts +2 -2
  526. package/dist-types/pagination/index.d.ts +2 -2
  527. package/dist-types/pagination/usePagination.d.ts +1 -1
  528. package/dist-types/salt-provider/SaltProvider.d.ts +4 -4
  529. package/dist-types/semantic-icon-provider/SemanticIconProvider.d.ts +1 -1
  530. package/dist-types/slider/index.d.ts +1 -1
  531. package/dist-types/slider/internal/useRangeSliderThumb.d.ts +1 -1
  532. package/dist-types/slider/internal/useSliderThumb.d.ts +1 -1
  533. package/dist-types/slider/internal/utils.d.ts +5 -5
  534. package/dist-types/spinner/Spinner.d.ts +2 -2
  535. package/dist-types/split-layout/SplitLayout.d.ts +3 -3
  536. package/dist-types/stack-layout/StackLayout.d.ts +3 -3
  537. package/dist-types/status-adornment/ErrorAdornment.d.ts +1 -1
  538. package/dist-types/status-adornment/StatusAdornment.d.ts +1 -1
  539. package/dist-types/status-adornment/SuccessAdornment.d.ts +1 -1
  540. package/dist-types/status-adornment/WarningAdornment.d.ts +1 -1
  541. package/dist-types/status-indicator/ValidationStatus.d.ts +1 -1
  542. package/dist-types/stepper/Step.d.ts +4 -4
  543. package/dist-types/stepper/Stepper.d.ts +1 -1
  544. package/dist-types/stepper/index.d.ts +1 -1
  545. package/dist-types/text/Text.d.ts +4 -4
  546. package/dist-types/text/index.d.ts +1 -1
  547. package/dist-types/theme/Accent.d.ts +2 -2
  548. package/dist-types/theme/ActionFont.d.ts +2 -2
  549. package/dist-types/theme/Corner.d.ts +2 -2
  550. package/dist-types/theme/Density.d.ts +1 -1
  551. package/dist-types/theme/HeadingFont.d.ts +2 -2
  552. package/dist-types/theme/Mode.d.ts +1 -1
  553. package/dist-types/theme/Theme.d.ts +3 -3
  554. package/dist-types/theme/index.d.ts +2 -2
  555. package/dist-types/toast/Toast.d.ts +1 -1
  556. package/dist-types/toggle-button-group/ToggleButtonGroupContext.d.ts +1 -1
  557. package/dist-types/tooltip/useAriaAnnounce.d.ts +1 -1
  558. package/dist-types/tooltip/useTooltip.d.ts +3 -3
  559. package/dist-types/types.d.ts +1 -1
  560. package/dist-types/utils/createChainedFunction.d.ts +1 -1
  561. package/dist-types/utils/index.d.ts +4 -4
  562. package/dist-types/utils/inferElementType.d.ts +1 -1
  563. package/dist-types/utils/makePrefixer.d.ts +1 -1
  564. package/dist-types/utils/polymorphicTypes.d.ts +6 -6
  565. package/dist-types/utils/useFloatingUI/useFloatingUI.d.ts +3 -13
  566. package/dist-types/utils/useResponsiveProp.d.ts +2 -2
  567. package/dist-types/utils/useValueEffect.d.ts +1 -1
  568. package/dist-types/viewport/ViewportProvider.d.ts +1 -1
  569. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"MenuItem.js","sources":["../src/menu/MenuItem.tsx"],"sourcesContent":["import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n forwardRef,\n} from \"react\";\nimport { makePrefixer, useForkRef } from \"../utils\";\n\nimport { useIcon } from \"../semantic-icon-provider\";\nimport menuItemCss from \"./MenuItem.css\";\nimport { useMenuPanelContext } from \"./MenuPanelContext\";\nimport { useIsMenuTrigger } from \"./MenuTriggerContext\";\nexport interface MenuItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * If `true`, the item will be disabled.\n */\n disabled?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuItem\");\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n function MenuItem(props, ref) {\n const {\n children,\n className,\n disabled,\n onClick,\n onFocus,\n onKeyDown,\n ...rest\n } = props;\n\n const { triggersSubmenu, blurActive } = useIsMenuTrigger();\n const { ExpandGroupIcon } = useIcon();\n const { activeIndex, getItemProps, setFocusInside } = useMenuPanelContext();\n const item = useListItem();\n const tree = useFloatingTree();\n const active = item.index === activeIndex;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-item\",\n css: menuItemCss,\n window: targetWindow,\n });\n const handleRef = useForkRef<HTMLDivElement>(ref, item.ref);\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"blurActive\")]: blurActive,\n },\n className,\n )}\n role=\"menuitem\"\n aria-disabled={disabled || undefined}\n {...getItemProps({\n tabIndex: disabled ? undefined : active ? 0 : -1,\n onKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const element = event.currentTarget;\n onKeyDown?.(event);\n if (\n (event.key === \" \" || event.key === \"Enter\") &&\n !triggersSubmenu &&\n !disabled\n ) {\n event.preventDefault();\n const { view, ...eventInit } = event;\n queueMicrotask(() => {\n element.dispatchEvent(\n new window.MouseEvent(\"click\", eventInit),\n );\n });\n tree?.events.emit(\"click\");\n }\n },\n onClick(event: MouseEvent<HTMLDivElement>) {\n if (!disabled) {\n onClick?.(event);\n if (!triggersSubmenu) {\n tree?.events.emit(\"click\");\n }\n }\n },\n onFocus(event: FocusEvent<HTMLDivElement>) {\n onFocus?.(event);\n setFocusInside(true);\n },\n ...rest,\n })}\n ref={handleRef}\n >\n {children}\n {triggersSubmenu && (\n <ExpandGroupIcon className={withBaseName(\"expandIcon\")} aria-hidden />\n )}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuItem","useIsMenuTrigger","useIcon","useMenuPanelContext","useListItem","useFloatingTree","useWindow","useComponentCssInjection","menuItemCss","useForkRef","jsxs","clsx"],"mappings":"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"}
1
+ {"version":3,"file":"MenuItem.js","sources":["../src/menu/MenuItem.tsx"],"sourcesContent":["import { useFloatingTree, useListItem } from \"@floating-ui/react\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type KeyboardEvent,\n type MouseEvent,\n} from \"react\";\nimport { useIcon } from \"../semantic-icon-provider\";\nimport { makePrefixer, useForkRef } from \"../utils\";\nimport menuItemCss from \"./MenuItem.css\";\nimport { useMenuPanelContext } from \"./MenuPanelContext\";\nimport { useIsMenuTrigger } from \"./MenuTriggerContext\";\nexport interface MenuItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * If `true`, the item will be disabled.\n */\n disabled?: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuItem\");\n\nexport const MenuItem = forwardRef<HTMLDivElement, MenuItemProps>(\n function MenuItem(props, ref) {\n const {\n children,\n className,\n disabled,\n onClick,\n onFocus,\n onKeyDown,\n ...rest\n } = props;\n\n const { triggersSubmenu, blurActive } = useIsMenuTrigger();\n const { ExpandGroupIcon } = useIcon();\n const { activeIndex, getItemProps, setFocusInside } = useMenuPanelContext();\n const item = useListItem();\n const tree = useFloatingTree();\n const active = item.index === activeIndex;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-menu-item\",\n css: menuItemCss,\n window: targetWindow,\n });\n const handleRef = useForkRef<HTMLDivElement>(ref, item.ref);\n return (\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"blurActive\")]: blurActive,\n },\n className,\n )}\n role=\"menuitem\"\n aria-disabled={disabled || undefined}\n {...getItemProps({\n tabIndex: disabled ? undefined : active ? 0 : -1,\n onKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const element = event.currentTarget;\n onKeyDown?.(event);\n if (\n (event.key === \" \" || event.key === \"Enter\") &&\n !triggersSubmenu &&\n !disabled\n ) {\n event.preventDefault();\n const { view, ...eventInit } = event;\n queueMicrotask(() => {\n element.dispatchEvent(\n new window.MouseEvent(\"click\", eventInit),\n );\n });\n tree?.events.emit(\"click\");\n }\n },\n onClick(event: MouseEvent<HTMLDivElement>) {\n if (!disabled) {\n onClick?.(event);\n if (!triggersSubmenu) {\n tree?.events.emit(\"click\");\n }\n }\n },\n onFocus(event: FocusEvent<HTMLDivElement>) {\n onFocus?.(event);\n setFocusInside(true);\n },\n ...rest,\n })}\n ref={handleRef}\n >\n {children}\n {triggersSubmenu && (\n <ExpandGroupIcon className={withBaseName(\"expandIcon\")} aria-hidden />\n )}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuItem","useIsMenuTrigger","useIcon","useMenuPanelContext","useListItem","useFloatingTree","useWindow","useComponentCssInjection","menuItemCss","useForkRef","jsxs","clsx"],"mappings":";;;;;;;;;;;;;;;;;;;AAuBA,MAAM,YAAA,GAAeA,0BAAa,cAAc,CAAA;AAEzC,MAAM,QAAW,GAAAC,gBAAA;AAAA,EACtB,SAASC,SAAS,CAAA,KAAA,EAAO,GAAK,EAAA;AAC5B,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,EAAE,eAAA,EAAiB,UAAW,EAAA,GAAIC,mCAAiB,EAAA;AACzD,IAAM,MAAA,EAAE,eAAgB,EAAA,GAAIC,4BAAQ,EAAA;AACpC,IAAA,MAAM,EAAE,WAAA,EAAa,YAAc,EAAA,cAAA,KAAmBC,oCAAoB,EAAA;AAC1E,IAAA,MAAM,OAAOC,iBAAY,EAAA;AACzB,IAAA,MAAM,OAAOC,qBAAgB,EAAA;AAC7B,IAAM,MAAA,MAAA,GAAS,KAAK,KAAU,KAAA,WAAA;AAC9B,IAAA,MAAM,eAAeC,kBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,gBAAA;AAAA,MACR,GAAK,EAAAC,UAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AACD,IAAA,MAAM,SAAY,GAAAC,qBAAA,CAA2B,GAAK,EAAA,IAAA,CAAK,GAAG,CAAA;AAC1D,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAAC,SAAA;AAAA,UACT,YAAa,EAAA;AAAA,UACb;AAAA,YACE,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG;AAAA,WAChC;AAAA,UACA;AAAA,SACF;AAAA,QACA,IAAK,EAAA,UAAA;AAAA,QACL,iBAAe,QAAY,IAAA,MAAA;AAAA,QAC1B,GAAG,YAAa,CAAA;AAAA,UACf,QAAU,EAAA,QAAA,GAAW,MAAY,GAAA,MAAA,GAAS,CAAI,GAAA,EAAA;AAAA,UAC9C,UAAU,KAAsC,EAAA;AAC9C,YAAA,MAAM,UAAU,KAAM,CAAA,aAAA;AACtB,YAAY,SAAA,IAAA,IAAA,GAAA,MAAA,GAAA,SAAA,CAAA,KAAA,CAAA;AACZ,YACG,IAAA,CAAA,KAAA,CAAM,QAAQ,GAAO,IAAA,KAAA,CAAM,QAAQ,OACpC,KAAA,CAAC,eACD,IAAA,CAAC,QACD,EAAA;AACA,cAAA,KAAA,CAAM,cAAe,EAAA;AACrB,cAAA,MAAM,EAAE,IAAA,EAAM,GAAG,SAAA,EAAc,GAAA,KAAA;AAC/B,cAAA,cAAA,CAAe,MAAM;AACnB,gBAAQ,OAAA,CAAA,aAAA;AAAA,kBACN,IAAI,MAAA,CAAO,UAAW,CAAA,OAAA,EAAS,SAAS;AAAA,iBAC1C;AAAA,eACD,CAAA;AACD,cAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA;AACpB,WACF;AAAA,UACA,QAAQ,KAAmC,EAAA;AACzC,YAAA,IAAI,CAAC,QAAU,EAAA;AACb,cAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AACV,cAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,gBAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,OAAO,IAAK,CAAA,OAAA,CAAA;AAAA;AACpB;AACF,WACF;AAAA,UACA,QAAQ,KAAmC,EAAA;AACzC,YAAU,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,CAAA,KAAA,CAAA;AACV,YAAA,cAAA,CAAe,IAAI,CAAA;AAAA,WACrB;AAAA,UACA,GAAG;AAAA,SACJ,CAAA;AAAA,QACD,GAAK,EAAA,SAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,UACA,eAAA,mCACE,eAAgB,EAAA,EAAA,SAAA,EAAW,aAAa,YAAY,CAAA,EAAG,eAAW,IAAC,EAAA;AAAA;AAAA;AAAA,KAExE;AAAA;AAGN;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltMenuPanel {\n background: var(--salt-container-primary-background);\n border: var(--salt-size-border) var(--salt-selectable-borderStyle-selected) var(--salt-selectable-borderColor-selected);\n overflow: hidden;\n overflow-y: auto;\n min-width: 10em;\n position: relative;\n z-index: var(--salt-zIndex-flyover);\n box-shadow: var(--salt-overlayable-shadow-popout);\n box-sizing: border-box;\n border-radius: var(--salt-palette-corner, 0);\n}\n\n.saltMenuPanel-container {\n display: flex;\n flex-direction: column;\n gap: var(--salt-size-border);\n max-height: inherit;\n min-height: inherit;\n}\n\n.saltMenuPanel:focus-visible {\n outline: none;\n}\n";
3
+ var css_248z = ".saltMenuPanel {\n background: var(--salt-container-primary-background);\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);\n overflow: hidden;\n overflow-y: auto;\n min-width: 10em;\n position: relative;\n z-index: var(--salt-zIndex-flyover);\n box-shadow: var(--salt-overlayable-shadow-popout);\n box-sizing: border-box;\n border-radius: var(--salt-palette-corner, 0);\n}\n\n.saltMenuPanel-container {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-fixed-100);\n max-height: inherit;\n min-height: inherit;\n}\n\n.saltMenuPanel:focus-visible {\n outline: none;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=MenuPanel.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuPanel.js","sources":["../src/menu/MenuPanel.tsx"],"sourcesContent":["import { FloatingList } from \"@floating-ui/react\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n} from \"react\";\nimport { makePrefixer, useFloatingComponent, useForkRef } from \"../utils\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { MenuPanelBase } from \"./MenuPanelBase\";\nimport { MenuPanelContext } from \"./MenuPanelContext\";\n\nexport interface MenuPanelProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the menu panel.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuPanel\");\n\nexport const MenuPanel = forwardRef<HTMLDivElement, MenuPanelProps>(\n function MenuPanel(props, ref) {\n const { children, className, ...rest } = props;\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const {\n getItemProps,\n openState,\n getFloatingProps,\n refs,\n getPanelPosition,\n context,\n elementsRef,\n activeIndex,\n setFocusInside,\n isNested,\n } = useMenuContext();\n\n const handleRef = useForkRef<HTMLDivElement>(ref, refs?.setFloating);\n\n return (\n <MenuPanelContext.Provider\n value={{ activeIndex, getItemProps, setFocusInside }}\n >\n <FloatingList elementsRef={elementsRef}>\n <FloatingComponent\n open={openState}\n role=\"menu\"\n {...getFloatingProps()}\n {...getPanelPosition()}\n className={clsx(withBaseName(), className)}\n focusManagerProps={\n context\n ? {\n context,\n initialFocus: isNested ? -1 : 0,\n returnFocus: !isNested,\n modal: false,\n }\n : undefined\n }\n tabIndex={-1}\n ref={handleRef}\n {...rest}\n >\n <MenuPanelBase>{children}</MenuPanelBase>\n </FloatingComponent>\n </FloatingList>\n </MenuPanelContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuPanel","useFloatingComponent","useMenuContext","useForkRef","jsx","MenuPanelContext","FloatingList","clsx","MenuPanelBase"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAeA,0BAAa,eAAe,CAAA;AAE1C,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UAAU,CAAA,KAAA,EAAO,GAAK,EAAA;AAC7B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAW,iBAAkB,EAAA,GAAIC,kCAAqB,EAAA;AAE9D,IAAM,MAAA;AAAA,MACJ,YAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,gBAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACEC,0BAAe,EAAA;AAEnB,IAAA,MAAM,SAAY,GAAAC,qBAAA,CAA2B,GAAK,EAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,WAAW,CAAA;AAEnE,IACE,uBAAAC,cAAA;AAAA,MAACC,iCAAiB,CAAA,QAAA;AAAA,MAAjB;AAAA,QACC,KAAO,EAAA,EAAE,WAAa,EAAA,YAAA,EAAc,cAAe,EAAA;AAAA,QAEnD,QAAA,kBAAAD,cAAA,CAACE,sBAAa,WACZ,EAAA,QAAA,kBAAAF,cAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,IAAM,EAAA,SAAA;AAAA,YACN,IAAK,EAAA,MAAA;AAAA,YACJ,GAAG,gBAAiB,EAAA;AAAA,YACpB,GAAG,gBAAiB,EAAA;AAAA,YACrB,SAAW,EAAAG,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,YACzC,mBACE,OACI,GAAA;AAAA,cACE,OAAA;AAAA,cACA,YAAA,EAAc,WAAW,EAAK,GAAA,CAAA;AAAA,cAC9B,aAAa,CAAC,QAAA;AAAA,cACd,KAAO,EAAA;AAAA,aAET,GAAA,MAAA;AAAA,YAEN,QAAU,EAAA,EAAA;AAAA,YACV,GAAK,EAAA,SAAA;AAAA,YACJ,GAAG,IAAA;AAAA,YAEJ,QAAA,kBAAAH,cAAA,CAACI,+BAAe,QAAS,EAAA;AAAA;AAAA,SAE7B,EAAA;AAAA;AAAA,KACF;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"MenuPanel.js","sources":["../src/menu/MenuPanel.tsx"],"sourcesContent":["import { FloatingList } from \"@floating-ui/react\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { makePrefixer, useFloatingComponent, useForkRef } from \"../utils\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { MenuPanelBase } from \"./MenuPanelBase\";\nimport { MenuPanelContext } from \"./MenuPanelContext\";\n\nexport interface MenuPanelProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The content of the menu panel.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltMenuPanel\");\n\nexport const MenuPanel = forwardRef<HTMLDivElement, MenuPanelProps>(\n function MenuPanel(props, ref) {\n const { children, className, ...rest } = props;\n const { Component: FloatingComponent } = useFloatingComponent();\n\n const {\n getItemProps,\n openState,\n getFloatingProps,\n refs,\n getPanelPosition,\n context,\n elementsRef,\n activeIndex,\n setFocusInside,\n isNested,\n } = useMenuContext();\n\n const handleRef = useForkRef<HTMLDivElement>(ref, refs?.setFloating);\n\n return (\n <MenuPanelContext.Provider\n value={{ activeIndex, getItemProps, setFocusInside }}\n >\n <FloatingList elementsRef={elementsRef}>\n <FloatingComponent\n open={openState}\n role=\"menu\"\n {...getFloatingProps()}\n {...getPanelPosition()}\n className={clsx(withBaseName(), className)}\n focusManagerProps={\n context\n ? {\n context,\n initialFocus: isNested ? -1 : 0,\n returnFocus: !isNested,\n modal: false,\n }\n : undefined\n }\n tabIndex={-1}\n ref={handleRef}\n {...rest}\n >\n <MenuPanelBase>{children}</MenuPanelBase>\n </FloatingComponent>\n </FloatingList>\n </MenuPanelContext.Provider>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MenuPanel","useFloatingComponent","useMenuContext","useForkRef","jsx","MenuPanelContext","FloatingList","clsx","MenuPanelBase"],"mappings":";;;;;;;;;;;;;;;;AAmBA,MAAM,YAAA,GAAeA,0BAAa,eAAe,CAAA;AAE1C,MAAM,SAAY,GAAAC,gBAAA;AAAA,EACvB,SAASC,UAAU,CAAA,KAAA,EAAO,GAAK,EAAA;AAC7B,IAAA,MAAM,EAAE,QAAA,EAAU,SAAW,EAAA,GAAG,MAAS,GAAA,KAAA;AACzC,IAAA,MAAM,EAAE,SAAA,EAAW,iBAAkB,EAAA,GAAIC,kCAAqB,EAAA;AAE9D,IAAM,MAAA;AAAA,MACJ,YAAA;AAAA,MACA,SAAA;AAAA,MACA,gBAAA;AAAA,MACA,IAAA;AAAA,MACA,gBAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAAA,MACA,WAAA;AAAA,MACA,cAAA;AAAA,MACA;AAAA,QACEC,0BAAe,EAAA;AAEnB,IAAA,MAAM,SAAY,GAAAC,qBAAA,CAA2B,GAAK,EAAA,IAAA,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAM,WAAW,CAAA;AAEnE,IACE,uBAAAC,cAAA;AAAA,MAACC,iCAAiB,CAAA,QAAA;AAAA,MAAjB;AAAA,QACC,KAAO,EAAA,EAAE,WAAa,EAAA,YAAA,EAAc,cAAe,EAAA;AAAA,QAEnD,QAAA,kBAAAD,cAAA,CAACE,sBAAa,WACZ,EAAA,QAAA,kBAAAF,cAAA;AAAA,UAAC,iBAAA;AAAA,UAAA;AAAA,YACC,IAAM,EAAA,SAAA;AAAA,YACN,IAAK,EAAA,MAAA;AAAA,YACJ,GAAG,gBAAiB,EAAA;AAAA,YACpB,GAAG,gBAAiB,EAAA;AAAA,YACrB,SAAW,EAAAG,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,YACzC,mBACE,OACI,GAAA;AAAA,cACE,OAAA;AAAA,cACA,YAAA,EAAc,WAAW,EAAK,GAAA,CAAA;AAAA,cAC9B,aAAa,CAAC,QAAA;AAAA,cACd,KAAO,EAAA;AAAA,aAET,GAAA,MAAA;AAAA,YAEN,QAAU,EAAA,EAAA;AAAA,YACV,GAAK,EAAA,SAAA;AAAA,YACJ,GAAG,IAAA;AAAA,YAEJ,QAAA,kBAAAH,cAAA,CAACI,+BAAe,QAAS,EAAA;AAAA;AAAA,SAE7B,EAAA;AAAA;AAAA,KACF;AAAA;AAGN;;;;"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  var React = require('react');
4
4
  var createContext = require('../utils/createContext.js');
5
- require('react/jsx-runtime');
6
5
  require('clsx');
6
+ require('react/jsx-runtime');
7
7
  require('../utils/useFloatingUI/useFloatingUI.js');
8
8
  require('../utils/useId.js');
9
9
  require('../salt-provider/SaltProvider.js');
@@ -2,47 +2,50 @@
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var React = require('react');
5
+ var getRefFromChildren = require('../utils/getRefFromChildren.js');
5
6
  var mergeProps = require('../utils/mergeProps.js');
6
7
  require('../utils/useFloatingUI/useFloatingUI.js');
7
8
  var useForkRef = require('../utils/useForkRef.js');
8
9
  require('../utils/useId.js');
9
10
  require('../salt-provider/SaltProvider.js');
10
11
  require('../viewport/ViewportProvider.js');
11
- var getRefFromChildren = require('../utils/getRefFromChildren.js');
12
12
  var MenuContext = require('./MenuContext.js');
13
13
  var MenuPanelContext = require('./MenuPanelContext.js');
14
14
  var MenuTriggerContext = require('./MenuTriggerContext.js');
15
15
 
16
- function MenuTrigger(props) {
17
- const { children } = props;
18
- const { getReferenceProps, refs, setFocusInside, focusInside, openState } = MenuContext.useMenuContext();
19
- const { setFocusInside: setFocusInsideParent } = MenuPanelContext.useMenuPanelContext();
20
- const handleRef = useForkRef.useForkRef(
21
- getRefFromChildren.getRefFromChildren(children),
22
- refs == null ? void 0 : refs.setReference
23
- );
24
- if (!children || !React.isValidElement(children)) {
25
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
26
- }
27
- return /* @__PURE__ */ jsxRuntime.jsx(
28
- MenuTriggerContext.MenuTriggerContext.Provider,
29
- {
30
- value: { triggersSubmenu: true, blurActive: focusInside && openState },
31
- children: React.cloneElement(children, {
32
- ...mergeProps.mergeProps(
33
- getReferenceProps({
34
- onFocus() {
35
- setFocusInsideParent(true);
36
- setFocusInside(false);
37
- }
38
- }),
39
- children.props
40
- ),
41
- ref: handleRef
42
- })
16
+ const MenuTrigger = React.forwardRef(
17
+ function MenuTrigger2(props, ref) {
18
+ const { children } = props;
19
+ const { getReferenceProps, refs, setFocusInside, focusInside, openState } = MenuContext.useMenuContext();
20
+ const { setFocusInside: setFocusInsideParent } = MenuPanelContext.useMenuPanelContext();
21
+ const handleFloatingRef = useForkRef.useForkRef(
22
+ getRefFromChildren.getRefFromChildren(children),
23
+ refs == null ? void 0 : refs.setReference
24
+ );
25
+ const handleRef = useForkRef.useForkRef(handleFloatingRef, ref);
26
+ if (!children || !React.isValidElement(children)) {
27
+ return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children });
43
28
  }
44
- );
45
- }
29
+ return /* @__PURE__ */ jsxRuntime.jsx(
30
+ MenuTriggerContext.MenuTriggerContext.Provider,
31
+ {
32
+ value: { triggersSubmenu: true, blurActive: focusInside && openState },
33
+ children: React.cloneElement(children, {
34
+ ...mergeProps.mergeProps(
35
+ getReferenceProps({
36
+ onFocus() {
37
+ setFocusInsideParent(true);
38
+ setFocusInside(false);
39
+ }
40
+ }),
41
+ children.props
42
+ ),
43
+ ref: handleRef
44
+ })
45
+ }
46
+ );
47
+ }
48
+ );
46
49
 
47
50
  exports.MenuTrigger = MenuTrigger;
48
51
  //# sourceMappingURL=MenuTrigger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MenuTrigger.js","sources":["../src/menu/MenuTrigger.tsx"],"sourcesContent":["import { type ReactNode, cloneElement, isValidElement } from \"react\";\nimport { getRefFromChildren, mergeProps, useForkRef } from \"../utils\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { useMenuPanelContext } from \"./MenuPanelContext\";\nimport { MenuTriggerContext } from \"./MenuTriggerContext\";\n\nexport interface MenuTriggerProps {\n /**\n * The trigger element for the menu. This should be a single child element and accept a ref.\n */\n children?: ReactNode;\n}\n\nexport function MenuTrigger(props: MenuTriggerProps) {\n const { children } = props;\n\n const { getReferenceProps, refs, setFocusInside, focusInside, openState } =\n useMenuContext();\n const { setFocusInside: setFocusInsideParent } = useMenuPanelContext();\n\n const handleRef = useForkRef(\n getRefFromChildren(children),\n refs?.setReference,\n );\n\n if (!children || !isValidElement(children)) {\n // Should we log or throw error?\n return <>{children}</>;\n }\n\n return (\n <MenuTriggerContext.Provider\n value={{ triggersSubmenu: true, blurActive: focusInside && openState }}\n >\n {cloneElement(children, {\n ...mergeProps(\n getReferenceProps({\n onFocus() {\n setFocusInsideParent(true);\n setFocusInside(false);\n },\n }),\n children.props,\n ),\n ref: handleRef,\n })}\n </MenuTriggerContext.Provider>\n );\n}\n"],"names":["useMenuContext","useMenuPanelContext","useForkRef","getRefFromChildren","isValidElement","jsx","MenuTriggerContext","mergeProps"],"mappings":";;;;;;;;;;;;;;;AAaO,SAAS,YAAY,KAAyB,EAAA;AACnD,EAAM,MAAA,EAAE,UAAa,GAAA,KAAA;AAErB,EAAA,MAAM,EAAE,iBAAmB,EAAA,IAAA,EAAM,gBAAgB,WAAa,EAAA,SAAA,KAC5DA,0BAAe,EAAA;AACjB,EAAA,MAAM,EAAE,cAAA,EAAgB,oBAAqB,EAAA,GAAIC,oCAAoB,EAAA;AAErE,EAAA,MAAM,SAAY,GAAAC,qBAAA;AAAA,IAChBC,sCAAmB,QAAQ,CAAA;AAAA,IAC3B,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA;AAAA,GACR;AAEA,EAAA,IAAI,CAAC,QAAA,IAAY,CAACC,oBAAA,CAAe,QAAQ,CAAG,EAAA;AAE1C,IAAA,6DAAU,QAAS,EAAA,CAAA;AAAA;AAGrB,EACE,uBAAAC,cAAA;AAAA,IAACC,qCAAmB,CAAA,QAAA;AAAA,IAAnB;AAAA,MACC,OAAO,EAAE,eAAA,EAAiB,IAAM,EAAA,UAAA,EAAY,eAAe,SAAU,EAAA;AAAA,MAEpE,6BAAa,QAAU,EAAA;AAAA,QACtB,GAAGC,qBAAA;AAAA,UACD,iBAAkB,CAAA;AAAA,YAChB,OAAU,GAAA;AACR,cAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,cAAA,cAAA,CAAe,KAAK,CAAA;AAAA;AACtB,WACD,CAAA;AAAA,UACD,QAAS,CAAA;AAAA,SACX;AAAA,QACA,GAAK,EAAA;AAAA,OACN;AAAA;AAAA,GACH;AAEJ;;;;"}
1
+ {"version":3,"file":"MenuTrigger.js","sources":["../src/menu/MenuTrigger.tsx"],"sourcesContent":["import {\n cloneElement,\n forwardRef,\n isValidElement,\n type ReactNode,\n type Ref,\n} from \"react\";\nimport { getRefFromChildren, mergeProps, useForkRef } from \"../utils\";\nimport { useMenuContext } from \"./MenuContext\";\nimport { useMenuPanelContext } from \"./MenuPanelContext\";\nimport { MenuTriggerContext } from \"./MenuTriggerContext\";\n\nexport interface MenuTriggerProps {\n /**\n * The trigger element for the menu. This should be a single child element and accept a ref.\n */\n children?: ReactNode;\n}\n\nexport const MenuTrigger = forwardRef<HTMLElement, MenuTriggerProps>(\n function MenuTrigger(props, ref) {\n const { children } = props;\n\n const { getReferenceProps, refs, setFocusInside, focusInside, openState } =\n useMenuContext();\n const { setFocusInside: setFocusInsideParent } = useMenuPanelContext();\n\n const handleFloatingRef = useForkRef(\n getRefFromChildren(children),\n refs?.setReference,\n );\n const handleRef = useForkRef(handleFloatingRef, ref);\n\n if (!children || !isValidElement<{ ref?: Ref<unknown> }>(children)) {\n // Should we log or throw error?\n return <>{children}</>;\n }\n\n return (\n <MenuTriggerContext.Provider\n value={{ triggersSubmenu: true, blurActive: focusInside && openState }}\n >\n {cloneElement(children, {\n ...mergeProps(\n getReferenceProps({\n onFocus() {\n setFocusInsideParent(true);\n setFocusInside(false);\n },\n }),\n children.props,\n ),\n ref: handleRef,\n })}\n </MenuTriggerContext.Provider>\n );\n },\n);\n"],"names":["forwardRef","MenuTrigger","useMenuContext","useMenuPanelContext","useForkRef","getRefFromChildren","isValidElement","jsx","MenuTriggerContext","mergeProps"],"mappings":";;;;;;;;;;;;;;;AAmBO,MAAM,WAAc,GAAAA,gBAAA;AAAA,EACzB,SAASC,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAM,MAAA,EAAE,UAAa,GAAA,KAAA;AAErB,IAAA,MAAM,EAAE,iBAAmB,EAAA,IAAA,EAAM,gBAAgB,WAAa,EAAA,SAAA,KAC5DC,0BAAe,EAAA;AACjB,IAAA,MAAM,EAAE,cAAA,EAAgB,oBAAqB,EAAA,GAAIC,oCAAoB,EAAA;AAErE,IAAA,MAAM,iBAAoB,GAAAC,qBAAA;AAAA,MACxBC,sCAAmB,QAAQ,CAAA;AAAA,MAC3B,IAAM,IAAA,IAAA,GAAA,MAAA,GAAA,IAAA,CAAA;AAAA,KACR;AACA,IAAM,MAAA,SAAA,GAAYD,qBAAW,CAAA,iBAAA,EAAmB,GAAG,CAAA;AAEnD,IAAA,IAAI,CAAC,QAAA,IAAY,CAACE,oBAAA,CAAuC,QAAQ,CAAG,EAAA;AAElE,MAAA,6DAAU,QAAS,EAAA,CAAA;AAAA;AAGrB,IACE,uBAAAC,cAAA;AAAA,MAACC,qCAAmB,CAAA,QAAA;AAAA,MAAnB;AAAA,QACC,OAAO,EAAE,eAAA,EAAiB,IAAM,EAAA,UAAA,EAAY,eAAe,SAAU,EAAA;AAAA,QAEpE,6BAAa,QAAU,EAAA;AAAA,UACtB,GAAGC,qBAAA;AAAA,YACD,iBAAkB,CAAA;AAAA,cAChB,OAAU,GAAA;AACR,gBAAA,oBAAA,CAAqB,IAAI,CAAA;AACzB,gBAAA,cAAA,CAAe,KAAK,CAAA;AAAA;AACtB,aACD,CAAA;AAAA,YACD,QAAS,CAAA;AAAA,WACX;AAAA,UACA,GAAK,EAAA;AAAA,SACN;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
@@ -2,8 +2,8 @@
2
2
 
3
3
  var React = require('react');
4
4
  var createContext = require('../utils/createContext.js');
5
- require('react/jsx-runtime');
6
5
  require('clsx');
6
+ require('react/jsx-runtime');
7
7
  require('../utils/useFloatingUI/useFloatingUI.js');
8
8
  require('../utils/useId.js');
9
9
  require('../salt-provider/SaltProvider.js');
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Style applied to the root element */\n.saltMultilineInput {\n align-items: center;\n background: var(--multilineInput-background);\n border-radius: var(--salt-palette-corner-weak, 0);\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n height: auto;\n min-height: var(--salt-size-base);\n min-width: 4em;\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n position: relative;\n width: 100%;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n/* Style applied on hover */\n.saltMultilineInput:hover {\n background: var(--multilineInput-background-hover);\n cursor: var(--salt-editable-cursor-hover);\n}\n\n/* Style applied if `bordered={true}` */\n.saltMultilineInput-bordered.saltMultilineInput {\n border: var(--salt-size-border) var(--salt-editable-borderStyle) var(--multilineInput-borderColor);\n}\n\n.saltMultilineInput-bordered.saltMultilineInput:hover {\n border-style: var(--salt-editable-borderStyle-hover);\n border-color: var(--multilineInput-borderColor-hover);\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltMultilineInput-bordered.saltMultilineInput-focused,\n.saltMultilineInput-bordered.saltMultilineInput-focused:hover {\n border-style: var(--salt-editable-borderStyle-active);\n border-color: var(--multilineInput-borderColor-active);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltMultilineInput-bordered.saltMultilineInput-readOnly,\n.saltMultilineInput-bordered.saltMultilineInput-readOnly:hover {\n border-style: var(--salt-editable-borderStyle-readonly);\n border-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltMultilineInput-bordered.saltMultilineInput-disabled,\n.saltMultilineInput-bordered.saltMultilineInput-disabled:hover {\n border-style: var(--salt-editable-borderStyle-disabled);\n border-color: var(--salt-editable-borderColor-disabled);\n}\n\n/* Style for activation indicator */\n.saltMultilineInput-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--salt-size-border) var(--salt-editable-borderStyle) var(--multilineInput-borderColor);\n}\n\n.saltMultilineInput:hover .saltMultilineInput-activationIndicator {\n border-bottom-style: var(--salt-editable-borderStyle-hover);\n border-bottom-color: var(--multilineInput-borderColor-hover);\n}\n\n.saltMultilineInput-focused .saltMultilineInput-activationIndicator,\n.saltMultilineInput-focused:hover .saltMultilineInput-activationIndicator {\n border-bottom: var(--salt-size-border-strong) var(--salt-editable-borderStyle-active) var(--multilineInput-borderColor-active);\n}\n\n.saltMultilineInput-readOnly .saltMultilineInput-activationIndicator,\n.saltMultilineInput-readOnly:hover .saltMultilineInput-activationIndicator {\n border-bottom-style: var(--salt-editable-borderStyle-readonly);\n border-bottom-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltMultilineInput-disabled .saltMultilineInput-activationIndicator,\n.saltMultilineInput-disabled:hover .saltMultilineInput-activationIndicator {\n border-bottom-style: var(--salt-editable-borderStyle-disabled);\n border-bottom-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltMultilineInput-bordered .saltMultilineInput-activationIndicator,\n.saltMultilineInput-bordered.saltMultilineInput-readOnly .saltMultilineInput-activationIndicator,\n.saltMultilineInput-bordered.saltMultilineInput-disabled:hover .saltMultilineInput-activationIndicator {\n border-bottom-width: 0;\n}\n\n.saltMultilineInput-bordered.saltMultilineInput-focused .saltMultilineInput-activationIndicator {\n border-bottom-width: calc(var(--salt-size-border-strong) - var(--salt-size-border));\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltMultilineInput-primary {\n --multilineInput-background: var(--salt-editable-primary-background);\n --multilineInput-background-active: var(--salt-editable-primary-background-active);\n --multilineInput-background-hover: var(--salt-editable-primary-background-hover);\n --multilineInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --multilineInput-background-readonly: var(--salt-editable-primary-background-readonly);\n --multilineInput-borderColor: var(--salt-editable-borderColor);\n --multilineInput-borderColor-active: var(--salt-editable-borderColor-active);\n --multilineInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --multilineInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltMultilineInput-secondary {\n --multilineInput-background: var(--salt-editable-secondary-background);\n --multilineInput-background-active: var(--salt-editable-secondary-background-active);\n --multilineInput-background-hover: var(--salt-editable-secondary-background-active);\n --multilineInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --multilineInput-background-readonly: var(--salt-editable-secondary-background-readonly);\n --multilineInput-borderColor: var(--salt-editable-borderColor);\n --multilineInput-borderColor-active: var(--salt-editable-borderColor-active);\n --multilineInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --multilineInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltMultilineInput-error {\n --multilineInput-background: var(--salt-status-error-background);\n --multilineInput-background-active: var(--salt-status-error-background);\n --multilineInput-background-hover: var(--salt-status-error-background);\n --multilineInput-background-readonly: var(--salt-status-error-background);\n --multilineInput-borderColor: var(--salt-status-error-borderColor);\n --multilineInput-borderColor-active: var(--salt-status-error-borderColor);\n --multilineInput-borderColor-hover: var(--salt-status-error-borderColor);\n --multilineInput-outlineColor: var(--salt-status-error-borderColor);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltMultilineInput-warning {\n --multilineInput-background: var(--salt-status-warning-background);\n --multilineInput-background-active: var(--salt-status-warning-background);\n --multilineInput-background-hover: var(--salt-status-warning-background);\n --multilineInput-background-readonly: var(--salt-status-warning-background);\n --multilineInput-borderColor: var(--salt-status-warning-borderColor);\n --multilineInput-borderColor-active: var(--salt-status-warning-borderColor);\n --multilineInput-borderColor-hover: var(--salt-status-warning-borderColor);\n --multilineInput-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltMultilineInput-success {\n --multilineInput-background: var(--salt-status-success-background);\n --multilineInput-background-active: var(--salt-status-success-background);\n --multilineInput-background-hover: var(--salt-status-success-background);\n --multilineInput-background-readonly: var(--salt-status-success-background);\n --multilineInput-borderColor: var(--salt-status-success-borderColor);\n --multilineInput-borderColor-active: var(--salt-status-success-borderColor);\n --multilineInput-borderColor-hover: var(--salt-status-success-borderColor);\n --multilineInput-outlineColor: var(--salt-status-success-borderColor);\n}\n\n/* Styling when focused */\n.saltMultilineInput-focused,\n.saltMultilineInput-focused:hover {\n background: var(--multilineInput-background-active);\n cursor: var(--salt-editable-cursor-active);\n outline: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--multilineInput-outlineColor);\n}\n\n/* Style applied if `readOnly={true}` */\n.saltMultilineInput.saltMultilineInput-readOnly {\n background: var(--multilineInput-background-readonly);\n cursor: var(--salt-editable-cursor-readonly);\n}\n\n/* Style applied to input if `disabled={true}` */\n.saltMultilineInput.saltMultilineInput-disabled,\n.saltMultilineInput.saltMultilineInput-disabled:hover {\n background: var(--input-background-disabled);\n cursor: var(--salt-editable-cursor-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n.saltMultilineInput.saltMultilineInput-withAdornmentRow {\n display: flex;\n flex-wrap: wrap;\n}\n\n/* Style applied to adornment containers */\n.saltMultilineInput-endAdornmentContainer,\n.saltMultilineInput-startAdornmentContainer {\n align-items: center;\n display: inline-flex;\n min-height: var(--salt-size-base);\n column-gap: var(--salt-spacing-100);\n}\n\n/* Style applied to start adornment container */\n.saltMultilineInput-startAdornmentContainer {\n align-self: self-start;\n padding-right: var(--salt-spacing-100);\n}\n\n/* Style applied to suffix adornment container */\n.saltMultilineInput-suffixAdornments {\n align-self: self-end;\n}\n\n/* Style applied to suffix adornment container when end adornments are provided */\n.saltMultilineInput-withAdornmentRow .saltMultilineInput-suffixAdornments {\n display: inline-flex;\n flex-basis: 100%;\n justify-content: flex-end;\n}\n\n/* Style applied to end adornment container */\n.saltMultilineInput-endAdornmentContainer {\n padding-left: var(--salt-spacing-100);\n}\n\n/* Style applied to status adornment container */\n.saltMultilineInput-statusAdornmentContainer {\n align-self: self-end;\n display: inline-flex;\n min-height: var(--salt-size-base);\n}\n\n/* Style applied to button start adornment if first child */\n.saltMultilineInput-startAdornmentContainer .saltButton:first-child {\n margin-left: calc(var(--salt-spacing-50) * -1);\n}\n\n/* Style applied to button end adornment if last child */\n.saltMultilineInput-endAdornmentContainer .saltButton:last-child {\n margin-right: calc(var(--salt-spacing-50) * -1);\n}\n\n/* Style applied to button end adornment if last child */\n.saltMultilineInput-readOnly .saltMultilineInput-endAdornmentContainer .saltButton:last-child {\n margin-right: 0;\n}\n\n/* Styles for button adornment */\n.saltMultilineInput-startAdornmentContainer > .saltButton,\n.saltMultilineInput-endAdornmentContainer > .saltButton {\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--salt-size-border));\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-borderRadius: var(--salt-palette-corner-weaker);\n}\n\n/* Style applied to inner textarea element */\n.saltMultilineInput-textarea {\n background: none;\n border: none;\n box-sizing: border-box;\n color: inherit;\n cursor: inherit;\n flex-grow: 1;\n font: inherit;\n letter-spacing: 0;\n line-height: var(--salt-text-lineHeight);\n margin: var(--salt-spacing-75) 0;\n min-width: 0;\n min-height: 0;\n max-height: inherit;\n resize: vertical;\n padding: 0;\n}\n\n/* Style applied to placeholder */\n.saltMultilineInput-textarea::placeholder {\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Reset in the class */\n.saltMultilineInput-textarea:focus {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltMultilineInput-textarea::selection {\n background: var(--salt-content-foreground-highlight);\n}\n\n/* Style applied to selected text if `disabled={true}` */\n.saltMultilineInput-disabled .saltMultilineInput-textarea::selection {\n background: none;\n}\n";
3
+ var css_248z = "/* Style applied to the root element */\n.saltMultilineInput {\n align-items: center;\n background: var(--multilineInput-background);\n border-radius: var(--salt-palette-corner-weak, 0);\n color: var(--salt-content-primary-foreground);\n display: inline-flex;\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n height: auto;\n min-height: var(--salt-size-base);\n min-width: 4em;\n padding-left: var(--salt-spacing-100);\n padding-right: var(--salt-spacing-100);\n position: relative;\n width: 100%;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n/* Style applied on hover */\n.saltMultilineInput:hover {\n background: var(--multilineInput-background-hover);\n cursor: var(--salt-cursor-text);\n}\n\n/* Style applied if `bordered={true}` */\n.saltMultilineInput-bordered.saltMultilineInput {\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--multilineInput-borderColor);\n}\n\n.saltMultilineInput-bordered.saltMultilineInput:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--multilineInput-borderColor-hover);\n}\n\n/* Style applied if focused or active when `bordered={true}` */\n.saltMultilineInput-bordered.saltMultilineInput-focused,\n.saltMultilineInput-bordered.saltMultilineInput-focused:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--multilineInput-borderColor-active);\n}\n\n/* Styling when focused if `disabled={true}` or `readOnly={true}` when `bordered={true}` */\n.saltMultilineInput-bordered.saltMultilineInput-readOnly,\n.saltMultilineInput-bordered.saltMultilineInput-readOnly:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltMultilineInput-bordered.saltMultilineInput-disabled,\n.saltMultilineInput-bordered.saltMultilineInput-disabled:hover {\n border-style: var(--salt-borderStyle-solid);\n border-color: var(--salt-editable-borderColor-disabled);\n}\n\n/* Style for activation indicator */\n.saltMultilineInput-activationIndicator {\n left: 0;\n bottom: 0;\n width: 100%;\n position: absolute;\n border-bottom: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--multilineInput-borderColor);\n}\n\n.saltMultilineInput:hover .saltMultilineInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--multilineInput-borderColor-hover);\n}\n\n.saltMultilineInput-focused .saltMultilineInput-activationIndicator,\n.saltMultilineInput-focused:hover .saltMultilineInput-activationIndicator {\n border-bottom: var(--salt-size-fixed-200) var(--salt-borderStyle-solid) var(--multilineInput-borderColor-active);\n}\n\n.saltMultilineInput-readOnly .saltMultilineInput-activationIndicator,\n.saltMultilineInput-readOnly:hover .saltMultilineInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-readonly);\n}\n\n.saltMultilineInput-disabled .saltMultilineInput-activationIndicator,\n.saltMultilineInput-disabled:hover .saltMultilineInput-activationIndicator {\n border-bottom-style: var(--salt-borderStyle-solid);\n border-bottom-color: var(--salt-editable-borderColor-disabled);\n}\n\n.saltMultilineInput-bordered .saltMultilineInput-activationIndicator,\n.saltMultilineInput-bordered.saltMultilineInput-readOnly .saltMultilineInput-activationIndicator,\n.saltMultilineInput-bordered.saltMultilineInput-disabled:hover .saltMultilineInput-activationIndicator {\n border-bottom-width: 0;\n}\n\n.saltMultilineInput-bordered.saltMultilineInput-focused .saltMultilineInput-activationIndicator {\n /* Activation indicator width minus the border from the input. */\n border-bottom-width: var(--salt-size-fixed-100);\n}\n\n/* Class applied if `variant=\"primary\"` */\n.saltMultilineInput-primary {\n --multilineInput-background: var(--salt-editable-primary-background);\n --multilineInput-background-active: var(--salt-editable-primary-background-active);\n --multilineInput-background-hover: var(--salt-editable-primary-background-hover);\n --multilineInput-background-disabled: var(--salt-editable-primary-background-disabled);\n --multilineInput-background-readonly: var(--salt-editable-primary-background-readonly);\n --multilineInput-borderColor: var(--salt-editable-borderColor);\n --multilineInput-borderColor-active: var(--salt-editable-borderColor-active);\n --multilineInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --multilineInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Class applied if `variant=\"secondary\"` */\n.saltMultilineInput-secondary {\n --multilineInput-background: var(--salt-editable-secondary-background);\n --multilineInput-background-active: var(--salt-editable-secondary-background-active);\n --multilineInput-background-hover: var(--salt-editable-secondary-background-active);\n --multilineInput-background-disabled: var(--salt-editable-secondary-background-disabled);\n --multilineInput-background-readonly: var(--salt-editable-secondary-background-readonly);\n --multilineInput-borderColor: var(--salt-editable-borderColor);\n --multilineInput-borderColor-active: var(--salt-editable-borderColor-active);\n --multilineInput-borderColor-hover: var(--salt-editable-borderColor-hover);\n --multilineInput-outlineColor: var(--salt-focused-outlineColor);\n}\n\n/* Style applied to input if `validationState=\"error\"` */\n.saltMultilineInput-error {\n --multilineInput-background: var(--salt-status-error-background);\n --multilineInput-background-active: var(--salt-status-error-background);\n --multilineInput-background-hover: var(--salt-status-error-background);\n --multilineInput-background-readonly: var(--salt-status-error-background);\n --multilineInput-borderColor: var(--salt-status-error-borderColor);\n --multilineInput-borderColor-active: var(--salt-status-error-borderColor);\n --multilineInput-borderColor-hover: var(--salt-status-error-borderColor);\n --multilineInput-outlineColor: var(--salt-status-error-borderColor);\n}\n\n/* Style applied to input if `validationState=\"warning\"` */\n.saltMultilineInput-warning {\n --multilineInput-background: var(--salt-status-warning-background);\n --multilineInput-background-active: var(--salt-status-warning-background);\n --multilineInput-background-hover: var(--salt-status-warning-background);\n --multilineInput-background-readonly: var(--salt-status-warning-background);\n --multilineInput-borderColor: var(--salt-status-warning-borderColor);\n --multilineInput-borderColor-active: var(--salt-status-warning-borderColor);\n --multilineInput-borderColor-hover: var(--salt-status-warning-borderColor);\n --multilineInput-outlineColor: var(--salt-status-warning-borderColor);\n}\n\n/* Style applied to input if `validationState=\"success\"` */\n.saltMultilineInput-success {\n --multilineInput-background: var(--salt-status-success-background);\n --multilineInput-background-active: var(--salt-status-success-background);\n --multilineInput-background-hover: var(--salt-status-success-background);\n --multilineInput-background-readonly: var(--salt-status-success-background);\n --multilineInput-borderColor: var(--salt-status-success-borderColor);\n --multilineInput-borderColor-active: var(--salt-status-success-borderColor);\n --multilineInput-borderColor-hover: var(--salt-status-success-borderColor);\n --multilineInput-outlineColor: var(--salt-status-success-borderColor);\n}\n\n/* Styling when focused */\n.saltMultilineInput-focused,\n.saltMultilineInput-focused:hover {\n background: var(--multilineInput-background-active);\n cursor: var(--salt-cursor-text);\n outline: var(--salt-focused-outlineWidth) var(--salt-focused-outlineStyle) var(--multilineInput-outlineColor);\n}\n\n/* Style applied if `readOnly={true}` */\n.saltMultilineInput.saltMultilineInput-readOnly {\n background: var(--multilineInput-background-readonly);\n cursor: var(--salt-cursor-readonly);\n}\n\n/* Style applied to input if `disabled={true}` */\n.saltMultilineInput.saltMultilineInput-disabled,\n.saltMultilineInput.saltMultilineInput-disabled:hover {\n background: var(--input-background-disabled);\n cursor: var(--salt-cursor-disabled);\n color: var(--salt-content-primary-foreground-disabled);\n}\n\n.saltMultilineInput.saltMultilineInput-withAdornmentRow {\n display: flex;\n flex-wrap: wrap;\n}\n\n/* Style applied to adornment containers */\n.saltMultilineInput-endAdornmentContainer,\n.saltMultilineInput-startAdornmentContainer {\n align-items: center;\n display: inline-flex;\n min-height: var(--salt-size-base);\n column-gap: var(--salt-spacing-100);\n}\n\n/* Style applied to start adornment container */\n.saltMultilineInput-startAdornmentContainer {\n align-self: self-start;\n padding-right: var(--salt-spacing-100);\n}\n\n/* Style applied to suffix adornment container */\n.saltMultilineInput-suffixAdornments {\n align-self: self-end;\n}\n\n/* Style applied to suffix adornment container when end adornments are provided */\n.saltMultilineInput-withAdornmentRow .saltMultilineInput-suffixAdornments {\n display: inline-flex;\n flex-basis: 100%;\n justify-content: flex-end;\n}\n\n/* Style applied to end adornment container */\n.saltMultilineInput-endAdornmentContainer {\n padding-left: var(--salt-spacing-100);\n}\n\n/* Style applied to status adornment container */\n.saltMultilineInput-statusAdornmentContainer {\n align-self: self-end;\n display: inline-flex;\n min-height: var(--salt-size-base);\n}\n\n/* Style applied to button start adornment if first child */\n.saltMultilineInput-startAdornmentContainer .saltButton:first-child {\n margin-left: calc(var(--salt-spacing-50) * -1);\n}\n\n/* Style applied to button end adornment if last child */\n.saltMultilineInput-endAdornmentContainer .saltButton:last-child {\n margin-right: calc(var(--salt-spacing-50) * -1);\n}\n\n/* Style applied to button end adornment if last child */\n.saltMultilineInput-readOnly .saltMultilineInput-endAdornmentContainer .saltButton:last-child {\n margin-right: 0;\n}\n\n/* Styles for button adornment */\n.saltMultilineInput-startAdornmentContainer > .saltButton,\n.saltMultilineInput-endAdornmentContainer > .saltButton {\n --saltButton-padding: calc(var(--salt-spacing-50) - var(--button-borderWidth));\n --saltButton-height: calc(var(--salt-size-base) - var(--salt-spacing-100));\n --saltButton-borderRadius: var(--salt-palette-corner-weaker);\n}\n\n/* Style applied to inner textarea element */\n.saltMultilineInput-textarea {\n background: none;\n border: none;\n box-sizing: border-box;\n color: inherit;\n cursor: inherit;\n flex-grow: 1;\n font: inherit;\n letter-spacing: 0;\n line-height: var(--salt-text-lineHeight);\n margin: var(--salt-spacing-75) 0;\n min-width: 0;\n min-height: 0;\n max-height: inherit;\n resize: vertical;\n padding: 0;\n}\n\n/* Style applied to placeholder */\n.saltMultilineInput-textarea::placeholder {\n font-weight: var(--salt-text-fontWeight-small);\n}\n\n/* Reset in the class */\n.saltMultilineInput-textarea:focus {\n outline: none;\n}\n\n/* Style applied to selected input */\n.saltMultilineInput-textarea::selection {\n background: var(--salt-content-foreground-highlight);\n}\n\n/* Style applied to selected text if `disabled={true}` */\n.saltMultilineInput-disabled .saltMultilineInput-textarea::selection {\n background: none;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=MultilineInput.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MultilineInput.js","sources":["../src/multiline-input/MultilineInput.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n type FocusEvent,\n type ReactNode,\n type Ref,\n type TextareaHTMLAttributes,\n forwardRef,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { StatusAdornment } from \"../status-adornment\";\nimport type { DataAttributes } from \"../types\";\nimport { makePrefixer, useControlled, useForkRef } from \"../utils\";\n\nimport multilineInputCss from \"./MultilineInput.css\";\n\nconst withBaseName = makePrefixer(\"saltMultilineInput\");\n\nexport interface MultilineInputProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"defaultValue\">,\n Pick<\n ComponentPropsWithoutRef<\"textarea\">,\n \"disabled\" | \"value\" | \"defaultValue\" | \"placeholder\"\n > {\n /**\n * Styling variant with full border. Defaults to false\n */\n bordered?: boolean;\n /**\n * End adornment component\n */\n endAdornment?: ReactNode;\n /**\n * If `true`, the component is read only.\n */\n readOnly?: boolean;\n /**\n * The default minimum number of rows. Defaults to 3\n */\n rows?: number;\n /**\n * Start adornment component\n */\n startAdornment?: ReactNode;\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#Attributes) applied to the `textarea` element.\n */\n textAreaProps?: Partial<TextareaHTMLAttributes<HTMLTextAreaElement>> &\n DataAttributes;\n /**\n * Optional ref for the textarea component\n */\n textAreaRef?: Ref<HTMLTextAreaElement>;\n /**\n * Validation status.\n */\n validationStatus?: \"error\" | \"warning\" | \"success\";\n /**\n * Styling variant. Defaults to \"primary\".\n */\n variant?: \"primary\" | \"secondary\";\n}\n\nexport const MultilineInput = forwardRef<HTMLDivElement, MultilineInputProps>(\n function MultilineInput(\n {\n \"aria-activedescendant\": ariaActiveDescendant,\n \"aria-expanded\": ariaExpanded,\n \"aria-owns\": ariaOwns,\n bordered = false,\n className: classNameProp,\n disabled,\n endAdornment,\n id,\n placeholder,\n readOnly,\n role,\n rows = 3,\n startAdornment,\n style,\n textAreaProps = {},\n textAreaRef,\n value: valueProp,\n defaultValue: defaultValueProp = valueProp === undefined ? \"\" : undefined,\n validationStatus: validationStatusProp,\n variant = \"primary\",\n ...other\n },\n ref,\n ) {\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const handleRef = useForkRef(inputRef, textAreaRef);\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-multiline-input\",\n css: multilineInputCss,\n window: targetWindow,\n });\n\n const restA11yProps = {\n \"aria-activedescendant\": ariaActiveDescendant,\n \"aria-expanded\": ariaExpanded,\n \"aria-owns\": ariaOwns,\n };\n\n const [focused, setFocused] = useState(false);\n\n const {\n \"aria-describedby\": textAreaDescribedBy,\n \"aria-labelledby\": textAreaLabelledBy,\n onBlur,\n onChange,\n onFocus,\n required: textAreaRequired,\n ...restTextAreaProps\n } = textAreaProps;\n\n const {\n a11yProps: {\n \"aria-describedby\": formFieldDescribedBy,\n \"aria-labelledby\": formFieldLabelledBy,\n } = {},\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n necessity: formFieldRequired,\n validationStatus: formFieldValidationStatus,\n } = useFormFieldProps();\n\n const isDisabled = disabled || formFieldDisabled;\n const isReadOnly = readOnly || formFieldReadOnly;\n const validationStatus = formFieldValidationStatus ?? validationStatusProp;\n const isRequired = formFieldRequired\n ? [\"required\", \"asterisk\"].includes(formFieldRequired)\n : textAreaRequired;\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValueProp,\n name: \"MultilineInput\",\n state: \"value\",\n });\n\n const previousHeight = useRef<string | undefined>(undefined);\n const input = inputRef.current;\n\n const changeHeight = useCallback(() => {\n if (!input) return;\n const hasBeenManuallyResized =\n previousHeight.current !== undefined &&\n input.style.height !== previousHeight.current;\n if (!hasBeenManuallyResized) {\n const previousOverflow = input.style.overflow;\n input.style.overflow = \"hidden\";\n input.style.height = \"auto\";\n input.scrollHeight; // Needed to work around Firefox bug. https://bugzilla.mozilla.org/show_bug.cgi?id=1787062\n const newHeight = `${\n input.scrollHeight + (input.offsetHeight - input.clientHeight)\n }px`;\n input.style.height = newHeight;\n previousHeight.current = newHeight;\n input.style.overflow = previousOverflow;\n }\n }, [input]);\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n const value = event.target.value;\n setValue(value);\n onChange?.(event);\n changeHeight();\n };\n\n useLayoutEffect(() => {\n changeHeight();\n }, [value, changeHeight]);\n\n const handleBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n onBlur?.(event);\n setFocused(false);\n };\n\n const handleFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n onFocus?.(event);\n setFocused(true);\n };\n\n const multilineInputStyles = {\n \"--saltMultilineInput-rows\": rows,\n ...style,\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n withBaseName(variant),\n {\n [withBaseName(\"withAdornmentRow\")]: endAdornment,\n [withBaseName(\"bordered\")]: bordered,\n [withBaseName(\"focused\")]: !isDisabled && focused,\n [withBaseName(\"disabled\")]: isDisabled,\n [withBaseName(\"readOnly\")]: isReadOnly,\n [withBaseName(validationStatus ?? \"\")]: validationStatus,\n },\n classNameProp,\n )}\n ref={ref}\n style={multilineInputStyles}\n {...other}\n >\n {startAdornment && (\n <div className={withBaseName(\"startAdornmentContainer\")}>\n {startAdornment}\n </div>\n )}\n <textarea\n aria-describedby={clsx(formFieldDescribedBy, textAreaDescribedBy)}\n aria-labelledby={clsx(formFieldLabelledBy, textAreaLabelledBy)}\n className={clsx(withBaseName(\"textarea\"), textAreaProps?.className)}\n disabled={isDisabled}\n id={id}\n readOnly={isReadOnly}\n ref={handleRef}\n required={isRequired}\n role={role}\n rows={rows}\n tabIndex={isDisabled ? -1 : 0}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={!isDisabled ? handleFocus : undefined}\n placeholder={placeholder}\n value={value}\n {...restA11yProps}\n {...restTextAreaProps}\n />\n <div className={withBaseName(\"suffixAdornments\")}>\n {!isDisabled && validationStatus && (\n <div className={withBaseName(\"statusAdornmentContainer\")}>\n <StatusAdornment status={validationStatus} />\n </div>\n )}\n {endAdornment && (\n <div className={withBaseName(\"endAdornmentContainer\")}>\n {endAdornment}\n </div>\n )}\n </div>\n <div className={withBaseName(\"activationIndicator\")} />\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MultilineInput","useRef","useForkRef","useWindow","useComponentCssInjection","multilineInputCss","useState","useFormFieldProps","useControlled","useCallback","value","useLayoutEffect","jsxs","clsx","jsx","StatusAdornment"],"mappings":"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"}
1
+ {"version":3,"file":"MultilineInput.js","sources":["../src/multiline-input/MultilineInput.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ChangeEvent,\n type ComponentPropsWithoutRef,\n type FocusEvent,\n forwardRef,\n type ReactNode,\n type Ref,\n type TextareaHTMLAttributes,\n useCallback,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useFormFieldProps } from \"../form-field-context\";\nimport { StatusAdornment } from \"../status-adornment\";\nimport type { DataAttributes } from \"../types\";\nimport { makePrefixer, useControlled, useForkRef } from \"../utils\";\n\nimport multilineInputCss from \"./MultilineInput.css\";\n\nconst withBaseName = makePrefixer(\"saltMultilineInput\");\n\nexport interface MultilineInputProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"defaultValue\">,\n Pick<\n ComponentPropsWithoutRef<\"textarea\">,\n \"disabled\" | \"value\" | \"defaultValue\" | \"placeholder\"\n > {\n /**\n * Styling variant with full border. Defaults to false\n */\n bordered?: boolean;\n /**\n * End adornment component\n */\n endAdornment?: ReactNode;\n /**\n * If `true`, the component is read only.\n */\n readOnly?: boolean;\n /**\n * The default minimum number of rows. Defaults to 3\n */\n rows?: number;\n /**\n * Start adornment component\n */\n startAdornment?: ReactNode;\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#Attributes) applied to the `textarea` element.\n */\n textAreaProps?: Partial<TextareaHTMLAttributes<HTMLTextAreaElement>> &\n DataAttributes;\n /**\n * Optional ref for the textarea component\n */\n textAreaRef?: Ref<HTMLTextAreaElement>;\n /**\n * Validation status.\n */\n validationStatus?: \"error\" | \"warning\" | \"success\";\n /**\n * Styling variant. Defaults to \"primary\".\n */\n variant?: \"primary\" | \"secondary\";\n}\n\nexport const MultilineInput = forwardRef<HTMLDivElement, MultilineInputProps>(\n function MultilineInput(\n {\n \"aria-activedescendant\": ariaActiveDescendant,\n \"aria-expanded\": ariaExpanded,\n \"aria-owns\": ariaOwns,\n bordered = false,\n className: classNameProp,\n disabled,\n endAdornment,\n id,\n placeholder,\n readOnly,\n role,\n rows = 3,\n startAdornment,\n style,\n textAreaProps = {},\n textAreaRef,\n value: valueProp,\n defaultValue: defaultValueProp = valueProp === undefined ? \"\" : undefined,\n validationStatus: validationStatusProp,\n variant = \"primary\",\n ...other\n },\n ref,\n ) {\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const handleRef = useForkRef(inputRef, textAreaRef);\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-multiline-input\",\n css: multilineInputCss,\n window: targetWindow,\n });\n\n const restA11yProps = {\n \"aria-activedescendant\": ariaActiveDescendant,\n \"aria-expanded\": ariaExpanded,\n \"aria-owns\": ariaOwns,\n };\n\n const [focused, setFocused] = useState(false);\n\n const {\n \"aria-describedby\": textAreaDescribedBy,\n \"aria-labelledby\": textAreaLabelledBy,\n onBlur,\n onChange,\n onFocus,\n required: textAreaRequired,\n ...restTextAreaProps\n } = textAreaProps;\n\n const {\n a11yProps: {\n \"aria-describedby\": formFieldDescribedBy,\n \"aria-labelledby\": formFieldLabelledBy,\n } = {},\n disabled: formFieldDisabled,\n readOnly: formFieldReadOnly,\n necessity: formFieldRequired,\n validationStatus: formFieldValidationStatus,\n } = useFormFieldProps();\n\n const isDisabled = disabled || formFieldDisabled;\n const isReadOnly = readOnly || formFieldReadOnly;\n const validationStatus = formFieldValidationStatus ?? validationStatusProp;\n const isRequired = formFieldRequired\n ? [\"required\", \"asterisk\"].includes(formFieldRequired)\n : textAreaRequired;\n\n const [value, setValue] = useControlled({\n controlled: valueProp,\n default: defaultValueProp,\n name: \"MultilineInput\",\n state: \"value\",\n });\n\n const previousHeight = useRef<string | undefined>(undefined);\n const input = inputRef.current;\n\n const changeHeight = useCallback(() => {\n if (!input) return;\n const hasBeenManuallyResized =\n previousHeight.current !== undefined &&\n input.style.height !== previousHeight.current;\n if (!hasBeenManuallyResized) {\n const previousOverflow = input.style.overflow;\n input.style.overflow = \"hidden\";\n input.style.height = \"auto\";\n input.scrollHeight; // Needed to work around Firefox bug. https://bugzilla.mozilla.org/show_bug.cgi?id=1787062\n const newHeight = `${\n input.scrollHeight + (input.offsetHeight - input.clientHeight)\n }px`;\n input.style.height = newHeight;\n previousHeight.current = newHeight;\n input.style.overflow = previousOverflow;\n }\n }, [input]);\n\n const handleChange = (event: ChangeEvent<HTMLTextAreaElement>) => {\n const value = event.target.value;\n setValue(value);\n onChange?.(event);\n changeHeight();\n };\n\n useLayoutEffect(() => {\n changeHeight();\n }, [value, changeHeight]);\n\n const handleBlur = (event: FocusEvent<HTMLTextAreaElement>) => {\n onBlur?.(event);\n setFocused(false);\n };\n\n const handleFocus = (event: FocusEvent<HTMLTextAreaElement>) => {\n onFocus?.(event);\n setFocused(true);\n };\n\n const multilineInputStyles = {\n \"--saltMultilineInput-rows\": rows,\n ...style,\n };\n\n return (\n <div\n className={clsx(\n withBaseName(),\n withBaseName(variant),\n {\n [withBaseName(\"withAdornmentRow\")]: endAdornment,\n [withBaseName(\"bordered\")]: bordered,\n [withBaseName(\"focused\")]: !isDisabled && focused,\n [withBaseName(\"disabled\")]: isDisabled,\n [withBaseName(\"readOnly\")]: isReadOnly,\n [withBaseName(validationStatus ?? \"\")]: validationStatus,\n },\n classNameProp,\n )}\n ref={ref}\n style={multilineInputStyles}\n {...other}\n >\n {startAdornment && (\n <div className={withBaseName(\"startAdornmentContainer\")}>\n {startAdornment}\n </div>\n )}\n <textarea\n aria-describedby={clsx(formFieldDescribedBy, textAreaDescribedBy)}\n aria-labelledby={clsx(formFieldLabelledBy, textAreaLabelledBy)}\n className={clsx(withBaseName(\"textarea\"), textAreaProps?.className)}\n disabled={isDisabled}\n id={id}\n readOnly={isReadOnly}\n ref={handleRef}\n required={isRequired}\n role={role}\n rows={rows}\n tabIndex={isDisabled ? -1 : 0}\n onBlur={handleBlur}\n onChange={handleChange}\n onFocus={!isDisabled ? handleFocus : undefined}\n placeholder={placeholder}\n value={value}\n {...restA11yProps}\n {...restTextAreaProps}\n />\n <div className={withBaseName(\"suffixAdornments\")}>\n {!isDisabled && validationStatus && (\n <div className={withBaseName(\"statusAdornmentContainer\")}>\n <StatusAdornment status={validationStatus} />\n </div>\n )}\n {endAdornment && (\n <div className={withBaseName(\"endAdornmentContainer\")}>\n {endAdornment}\n </div>\n )}\n </div>\n <div className={withBaseName(\"activationIndicator\")} />\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","MultilineInput","useRef","useForkRef","useWindow","useComponentCssInjection","multilineInputCss","useState","useFormFieldProps","useControlled","useCallback","value","useLayoutEffect","jsxs","clsx","jsx","StatusAdornment"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltNavigationItem {\n color: var(--salt-content-primary-foreground);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n}\n\n/* Vars applied to root NavigationItem component */\n.saltNavigationItem-wrapper {\n display: flex;\n gap: var(--salt-spacing-100);\n align-items: center;\n position: relative;\n background: none;\n border: none;\n font: inherit;\n color: inherit;\n text-decoration: none;\n cursor: var(--salt-selectable-cursor-hover);\n /* Hover off animation */\n transition: all var(--salt-duration-instant) ease-in-out;\n box-sizing: border-box;\n}\n\n/* Vars applied to NavigationItem component when root */\n.saltNavigationItem-rootItem {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n\n/* Styles applied to NavigationItem icon */\n.saltNavigationItem-label .saltIcon {\n top: var(--salt-spacing-25);\n}\n\n/* Styles applied when orientation = \"horizontal\" */\n.saltNavigationItem-horizontal {\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100) * 2);\n padding: 0 var(--salt-spacing-100);\n width: fit-content;\n}\n\n/* Styles applied when orientation = \"vertical\" */\n.saltNavigationItem-vertical {\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-50) * 2);\n padding-top: 0;\n padding-bottom: 0;\n padding-right: var(--salt-spacing-100);\n padding-left: calc(var(--salt-spacing-300) * (min(var(--saltNavigationItem-level, 0) + 1, 2)));\n width: 100%;\n}\n\n/* Styles applied to NavigationItem label */\n.saltNavigationItem-label {\n padding-left: calc(var(--saltNavigationItem-level, 0) * var(--salt-spacing-100));\n flex: 1;\n text-align: left;\n display: flex;\n align-items: baseline;\n gap: var(--salt-spacing-100);\n}\n\n/* Styles applied when orientation = \"horizontal\" */\n.saltNavigationItem-horizontal {\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100) * 2);\n padding: 0 var(--salt-spacing-100);\n width: fit-content;\n}\n\n/* Styles applied when orientation = \"vertical\" */\n.saltNavigationItem-vertical {\n --saltButton-margin: var(--salt-spacing-50) 0;\n\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-50) * 2);\n padding-right: var(--salt-spacing-100);\n padding-left: calc(var(--salt-spacing-300) * (min(var(--saltNavigationItem-level, 0) + 1, 2)));\n width: 100%;\n}\n\n/* Styles applied to NavigationItem label */\n.saltNavigationItem-label {\n padding-left: calc(var(--saltNavigationItem-level, 0) * var(--salt-spacing-100));\n flex: 1;\n text-align: left;\n display: flex;\n align-items: baseline;\n gap: var(--salt-spacing-100);\n}\n\n/* Styles applied to NavigationItem Badge */\n.saltNavigationItem-label .saltBadge {\n margin-left: auto;\n}\n\n/* Styles applied to NavigationItem when focus is visible */\n.saltNavigationItem-wrapper:focus-visible {\n outline: var(--salt-focused-outline);\n}\n\n/* Styles applied to NavigationItem for non-keyboard focus */\n.saltNavigationItem-wrapper:focus:not(:focus-visible) {\n outline: 0;\n}\n\n/* Styles applied to activation line */\n.saltNavigationItem-wrapper::after {\n content: \"\";\n position: absolute;\n top: var(--salt-spacing-25);\n left: 0;\n display: block;\n}\n\n/* Styles applied to activation line when orientation = \"horizontal\" */\n.saltNavigationItem-horizontal::after {\n width: 100%;\n height: var(--salt-size-indicator);\n}\n\n/* Styles applied to activation line when orientation = \"vertical\" */\n.saltNavigationItem-vertical::after {\n width: var(--salt-size-indicator);\n left: var(--salt-spacing-25);\n height: calc(100% - var(--salt-spacing-50));\n}\n\n/* Styles applied to activation line on hover */\n.saltNavigationItem-wrapper:hover::after,\n.saltNavigationItem-wrapper:focus-visible::after {\n background: var(--salt-navigable-indicator-hover);\n /* Hover on animation */\n transition: background var(--salt-duration-perceptible) ease-in-out;\n}\n\n/* Styles applied to activation line when item is active */\n.saltNavigationItem-active::after,\n.saltNavigationItem-active:hover::after,\n.saltNavigationItem-active:focus::after {\n background: var(--salt-navigable-indicator-active);\n /* Hover on animation */\n transition: background var(--salt-duration-perceptible) ease-in-out;\n}\n";
3
+ var css_248z = ".saltNavigationItem {\n color: var(--salt-content-primary-foreground);\n line-height: var(--salt-text-lineHeight);\n font-family: var(--salt-text-fontFamily);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n}\n\n/* Vars applied to root NavigationItem component */\n.saltNavigationItem-wrapper {\n display: flex;\n gap: var(--salt-spacing-100);\n align-items: center;\n position: relative;\n background: none;\n border: none;\n font: inherit;\n color: inherit;\n text-decoration: none;\n cursor: var(--salt-cursor-hover);\n /* Hover off animation */\n transition: all var(--salt-duration-instant) ease-in-out;\n box-sizing: border-box;\n}\n\n/* Vars applied to NavigationItem component when root */\n.saltNavigationItem-rootItem {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n\n/* Styles applied to NavigationItem icon */\n.saltNavigationItem-label .saltIcon {\n top: var(--salt-spacing-25);\n}\n\n/* Styles applied when orientation = \"horizontal\" */\n.saltNavigationItem-horizontal {\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100) * 2);\n padding: 0 var(--salt-spacing-100);\n width: fit-content;\n}\n\n/* Styles applied when orientation = \"vertical\" */\n.saltNavigationItem-vertical {\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-50) * 2);\n padding-top: 0;\n padding-bottom: 0;\n padding-right: var(--salt-spacing-100);\n padding-left: calc(var(--salt-spacing-300) * (min(var(--saltNavigationItem-level, 0) + 1, 2)));\n width: 100%;\n}\n\n/* Styles applied to NavigationItem label */\n.saltNavigationItem-label {\n padding-left: calc(var(--saltNavigationItem-level, 0) * var(--salt-spacing-100));\n flex: 1;\n text-align: left;\n display: flex;\n align-items: baseline;\n gap: var(--salt-spacing-100);\n}\n\n/* Styles applied when orientation = \"horizontal\" */\n.saltNavigationItem-horizontal {\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100) * 2);\n padding: 0 var(--salt-spacing-100);\n width: fit-content;\n}\n\n/* Styles applied when orientation = \"vertical\" */\n.saltNavigationItem-vertical {\n --saltButton-margin: var(--salt-spacing-50) 0;\n\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-50) * 2);\n padding-right: var(--salt-spacing-100);\n padding-left: calc(var(--salt-spacing-300) * (min(var(--saltNavigationItem-level, 0) + 1, 2)));\n width: 100%;\n}\n\n/* Styles applied to NavigationItem label */\n.saltNavigationItem-label {\n padding-left: calc(var(--saltNavigationItem-level, 0) * var(--salt-spacing-100));\n flex: 1;\n text-align: left;\n display: flex;\n align-items: baseline;\n gap: var(--salt-spacing-100);\n}\n\n/* Styles applied to NavigationItem Badge */\n.saltNavigationItem-label .saltBadge {\n margin-left: auto;\n}\n\n/* Styles applied to NavigationItem when focus is visible */\n.saltNavigationItem-wrapper:focus-visible {\n outline: var(--salt-focused-outline);\n}\n\n/* Styles applied to NavigationItem for non-keyboard focus */\n.saltNavigationItem-wrapper:focus:not(:focus-visible) {\n outline: 0;\n}\n\n/* Styles applied to activation line */\n.saltNavigationItem-wrapper::after {\n content: \"\";\n position: absolute;\n top: var(--salt-spacing-25);\n left: 0;\n display: block;\n}\n\n/* Styles applied to activation line when orientation = \"horizontal\" */\n.saltNavigationItem-horizontal::after {\n width: 100%;\n height: var(--salt-size-indicator);\n}\n\n/* Styles applied to activation line when orientation = \"vertical\" */\n.saltNavigationItem-vertical::after {\n width: var(--salt-size-indicator);\n left: var(--salt-spacing-25);\n height: calc(100% - var(--salt-spacing-50));\n}\n\n/* Styles applied to activation line on hover */\n.saltNavigationItem-wrapper:hover::after,\n.saltNavigationItem-wrapper:focus-visible::after {\n background: var(--salt-navigable-indicator-hover);\n /* Hover on animation */\n transition: background var(--salt-duration-perceptible) ease-in-out;\n}\n\n/* Styles applied to activation line when item is active */\n.saltNavigationItem-active::after,\n.saltNavigationItem-active:hover::after,\n.saltNavigationItem-active:focus::after {\n background: var(--salt-navigable-accent-indicator-active);\n /* Hover on animation */\n transition: background var(--salt-duration-perceptible) ease-in-out;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=NavigationItem.css.js.map
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('@salt-ds/styles');
5
+ var window = require('@salt-ds/window');
4
6
  var clsx = require('clsx');
5
7
  var React = require('react');
6
8
  var makePrefixer = require('../utils/makePrefixer.js');
@@ -9,8 +11,6 @@ require('../utils/useId.js');
9
11
  require('../salt-provider/SaltProvider.js');
10
12
  require('../viewport/ViewportProvider.js');
11
13
  var ExpansionIcon = require('./ExpansionIcon.js');
12
- var styles = require('@salt-ds/styles');
13
- var window = require('@salt-ds/window');
14
14
  var NavigationItem$1 = require('./NavigationItem.css.js');
15
15
  var NavigationItemAction = require('./NavigationItemAction.js');
16
16
 
@@ -1 +1 @@
1
- {"version":3,"file":"NavigationItem.js","sources":["../src/navigation-item/NavigationItem.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type MouseEventHandler,\n forwardRef,\n} from \"react\";\nimport { makePrefixer } from \"../utils\";\nimport { ExpansionIcon } from \"./ExpansionIcon\";\n\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport type { RenderPropsType } from \"../utils\";\nimport navigationItemCss from \"./NavigationItem.css\";\nimport { NavigationItemAction } from \"./NavigationItemAction\";\n\nexport interface NavigationItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Whether the navigation item is active.\n */\n active?: boolean;\n /**\n * Whether the nested group is collapsed and there is an active nested item within it.\n */\n blurActive?: boolean;\n /**\n * Whether the navigation item is expanded.\n */\n expanded?: boolean;\n /**\n * Level of nesting.\n */\n level?: number;\n /**\n * The orientation of the navigation item.\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Whether the navigation item is a parent with nested items.\n */\n parent?: boolean;\n /**\n * Render prop to enable customisation of navigation item element.\n */\n render?: RenderPropsType[\"render\"];\n /**\n * Action to be triggered when the navigation item is expanded.\n */\n onExpand?: MouseEventHandler<HTMLButtonElement>;\n /**\n * Href to be passed to the Link element.\n */\n href?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltNavigationItem\");\n\nexport const NavigationItem = forwardRef<HTMLDivElement, NavigationItemProps>(\n function NavigationItem(props, ref) {\n const {\n active,\n blurActive,\n render,\n children,\n className,\n expanded = false,\n href,\n orientation = \"horizontal\",\n parent,\n level = 0,\n onExpand,\n style: styleProp,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-navigation-item\",\n css: navigationItemCss,\n window: targetWindow,\n });\n\n const style = {\n ...styleProp,\n \"--saltNavigationItem-level\": `${level}`,\n };\n\n const isLink = href !== undefined;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n onExpand?.(event);\n };\n\n return (\n <div\n ref={ref}\n className={clsx(withBaseName(), className)}\n style={style}\n {...rest}\n >\n <NavigationItemAction\n className={clsx(\n withBaseName(\"wrapper\"),\n {\n [withBaseName(\"active\")]: active || blurActive,\n [withBaseName(\"blurActive\")]: blurActive,\n [withBaseName(\"rootItem\")]: level === 0,\n },\n withBaseName(orientation),\n )}\n render={render ?? (isLink ? undefined : <button type=\"button\" />)}\n aria-expanded={isLink ? undefined : expanded}\n onClick={handleClick}\n aria-current={isLink && active ? \"page\" : undefined}\n href={href}\n >\n <span className={withBaseName(\"label\")}>{children}</span>\n {parent ? (\n <ExpansionIcon expanded={expanded} orientation={orientation} />\n ) : null}\n </NavigationItemAction>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","NavigationItem","useWindow","useComponentCssInjection","navigationItemCss","jsx","clsx","jsxs","NavigationItemAction","ExpansionIcon"],"mappings":";;;;;;;;;;;;;;;;AAwDA,MAAM,YAAA,GAAeA,0BAAa,oBAAoB,CAAA;AAE/C,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eAAe,CAAA,KAAA,EAAO,GAAK,EAAA;AAClC,IAAM,MAAA;AAAA,MACJ,MAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAW,GAAA,KAAA;AAAA,MACX,IAAA;AAAA,MACA,WAAc,GAAA,YAAA;AAAA,MACd,MAAA;AAAA,MACA,KAAQ,GAAA,CAAA;AAAA,MACR,QAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACP,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,sBAAA;AAAA,MACR,GAAK,EAAAC,gBAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,KAAQ,GAAA;AAAA,MACZ,GAAG,SAAA;AAAA,MACH,4BAAA,EAA8B,GAAG,KAAK,CAAA;AAAA,KACxC;AAEA,IAAA,MAAM,SAAS,IAAS,KAAA,MAAA;AAExB,IAAM,MAAA,WAAA,GAAc,CAAC,KAAyC,KAAA;AAC5D,MAAW,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAA,KAAA,CAAA;AAAA,KACb;AAEA,IACE,uBAAAC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,KAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,kBAAAC,eAAA;AAAA,UAACC,yCAAA;AAAA,UAAA;AAAA,YACC,SAAW,EAAAF,SAAA;AAAA,cACT,aAAa,SAAS,CAAA;AAAA,cACtB;AAAA,gBACE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG,MAAU,IAAA,UAAA;AAAA,gBACpC,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG,UAAA;AAAA,gBAC9B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,KAAU,KAAA;AAAA,eACxC;AAAA,cACA,aAAa,WAAW;AAAA,aAC1B;AAAA,YACA,QAAQ,MAAW,KAAA,MAAA,GAAS,yBAAaD,cAAA,CAAA,QAAA,EAAA,EAAO,MAAK,QAAS,EAAA,CAAA,CAAA;AAAA,YAC9D,eAAA,EAAe,SAAS,MAAY,GAAA,QAAA;AAAA,YACpC,OAAS,EAAA,WAAA;AAAA,YACT,cAAA,EAAc,MAAU,IAAA,MAAA,GAAS,MAAS,GAAA,MAAA;AAAA,YAC1C,IAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,cAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,GAAI,QAAS,EAAA,CAAA;AAAA,cACjD,MACC,mBAAAA,cAAA,CAACI,2BAAc,EAAA,EAAA,QAAA,EAAoB,aAA0B,CAC3D,GAAA;AAAA;AAAA;AAAA;AACN;AAAA,KACF;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"NavigationItem.js","sources":["../src/navigation-item/NavigationItem.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n type MouseEventHandler,\n} from \"react\";\nimport type { RenderPropsType } from \"../utils\";\nimport { makePrefixer } from \"../utils\";\nimport { ExpansionIcon } from \"./ExpansionIcon\";\nimport navigationItemCss from \"./NavigationItem.css\";\nimport { NavigationItemAction } from \"./NavigationItemAction\";\n\nexport interface NavigationItemProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Whether the navigation item is active.\n */\n active?: boolean;\n /**\n * Whether the nested group is collapsed and there is an active nested item within it.\n */\n blurActive?: boolean;\n /**\n * Whether the navigation item is expanded.\n */\n expanded?: boolean;\n /**\n * Level of nesting.\n */\n level?: number;\n /**\n * The orientation of the navigation item.\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Whether the navigation item is a parent with nested items.\n */\n parent?: boolean;\n /**\n * Render prop to enable customisation of navigation item element.\n */\n render?: RenderPropsType[\"render\"];\n /**\n * Action to be triggered when the navigation item is expanded.\n */\n onExpand?: MouseEventHandler<HTMLButtonElement>;\n /**\n * Href to be passed to the Link element.\n */\n href?: string;\n}\n\nconst withBaseName = makePrefixer(\"saltNavigationItem\");\n\nexport const NavigationItem = forwardRef<HTMLDivElement, NavigationItemProps>(\n function NavigationItem(props, ref) {\n const {\n active,\n blurActive,\n render,\n children,\n className,\n expanded = false,\n href,\n orientation = \"horizontal\",\n parent,\n level = 0,\n onExpand,\n style: styleProp,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-navigation-item\",\n css: navigationItemCss,\n window: targetWindow,\n });\n\n const style = {\n ...styleProp,\n \"--saltNavigationItem-level\": `${level}`,\n };\n\n const isLink = href !== undefined;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>) => {\n onExpand?.(event);\n };\n\n return (\n <div\n ref={ref}\n className={clsx(withBaseName(), className)}\n style={style}\n {...rest}\n >\n <NavigationItemAction\n className={clsx(\n withBaseName(\"wrapper\"),\n {\n [withBaseName(\"active\")]: active || blurActive,\n [withBaseName(\"blurActive\")]: blurActive,\n [withBaseName(\"rootItem\")]: level === 0,\n },\n withBaseName(orientation),\n )}\n render={render ?? (isLink ? undefined : <button type=\"button\" />)}\n aria-expanded={isLink ? undefined : expanded}\n onClick={handleClick}\n aria-current={isLink && active ? \"page\" : undefined}\n href={href}\n >\n <span className={withBaseName(\"label\")}>{children}</span>\n {parent ? (\n <ExpansionIcon expanded={expanded} orientation={orientation} />\n ) : null}\n </NavigationItemAction>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","NavigationItem","useWindow","useComponentCssInjection","navigationItemCss","jsx","clsx","jsxs","NavigationItemAction","ExpansionIcon"],"mappings":";;;;;;;;;;;;;;;;AAsDA,MAAM,YAAA,GAAeA,0BAAa,oBAAoB,CAAA;AAE/C,MAAM,cAAiB,GAAAC,gBAAA;AAAA,EAC5B,SAASC,eAAe,CAAA,KAAA,EAAO,GAAK,EAAA;AAClC,IAAM,MAAA;AAAA,MACJ,MAAA;AAAA,MACA,UAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,QAAW,GAAA,KAAA;AAAA,MACX,IAAA;AAAA,MACA,WAAc,GAAA,YAAA;AAAA,MACd,MAAA;AAAA,MACA,KAAQ,GAAA,CAAA;AAAA,MACR,QAAA;AAAA,MACA,KAAO,EAAA,SAAA;AAAA,MACP,GAAG;AAAA,KACD,GAAA,KAAA;AAEJ,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,sBAAA;AAAA,MACR,GAAK,EAAAC,gBAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,KAAQ,GAAA;AAAA,MACZ,GAAG,SAAA;AAAA,MACH,4BAAA,EAA8B,GAAG,KAAK,CAAA;AAAA,KACxC;AAEA,IAAA,MAAM,SAAS,IAAS,KAAA,MAAA;AAExB,IAAM,MAAA,WAAA,GAAc,CAAC,KAAyC,KAAA;AAC5D,MAAW,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,CAAA,KAAA,CAAA;AAAA,KACb;AAEA,IACE,uBAAAC,cAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,KAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,kBAAAC,eAAA;AAAA,UAACC,yCAAA;AAAA,UAAA;AAAA,YACC,SAAW,EAAAF,SAAA;AAAA,cACT,aAAa,SAAS,CAAA;AAAA,cACtB;AAAA,gBACE,CAAC,YAAA,CAAa,QAAQ,CAAC,GAAG,MAAU,IAAA,UAAA;AAAA,gBACpC,CAAC,YAAA,CAAa,YAAY,CAAC,GAAG,UAAA;AAAA,gBAC9B,CAAC,YAAA,CAAa,UAAU,CAAC,GAAG,KAAU,KAAA;AAAA,eACxC;AAAA,cACA,aAAa,WAAW;AAAA,aAC1B;AAAA,YACA,QAAQ,MAAW,KAAA,MAAA,GAAS,yBAAaD,cAAA,CAAA,QAAA,EAAA,EAAO,MAAK,QAAS,EAAA,CAAA,CAAA;AAAA,YAC9D,eAAA,EAAe,SAAS,MAAY,GAAA,QAAA;AAAA,YACpC,OAAS,EAAA,WAAA;AAAA,YACT,cAAA,EAAc,MAAU,IAAA,MAAA,GAAS,MAAS,GAAA,MAAA;AAAA,YAC1C,IAAA;AAAA,YAEA,QAAA,EAAA;AAAA,8BAAAA,cAAA,CAAC,MAAK,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,OAAO,GAAI,QAAS,EAAA,CAAA;AAAA,cACjD,MACC,mBAAAA,cAAA,CAACI,2BAAc,EAAA,EAAA,QAAA,EAAoB,aAA0B,CAC3D,GAAA;AAAA;AAAA;AAAA;AACN;AAAA,KACF;AAAA;AAGN;;;;"}
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
3
  require('react');
4
+ require('clsx');
4
5
  var renderProps = require('../utils/renderProps.js');
5
6
  require('../utils/useFloatingUI/useFloatingUI.js');
6
7
  require('../utils/useId.js');
7
8
  require('../salt-provider/SaltProvider.js');
8
9
  require('../viewport/ViewportProvider.js');
9
- require('clsx');
10
10
 
11
11
  function NavigationItemAction(props) {
12
12
  return renderProps.renderProps("a", props);
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltOption {\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--salt-text-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-selectable-cursor-hover);\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.saltOption-active {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltOption-focusVisible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-border) * -2);\n}\n\n.saltOption:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltOption[aria-selected=\"true\"] {\n z-index: var(--salt-zIndex-default);\n background: var(--salt-selectable-background-selected);\n box-shadow: calc(var(--salt-size-border) * -2) 0 0 0 var(--salt-selectable-background-hover), calc(var(--salt-size-border) * -1) 0 0 var(--salt-size-border)\n var(--salt-selectable-borderColor-selected), 0 calc(var(--salt-size-border) * -1) 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltOption[aria-disabled=\"true\"] {\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-selectable-cursor-disabled);\n}\n\n/* TODO: Find a better way of doing this */\n.saltOption .saltIcon:not(.saltCheckboxIcon-icon) {\n min-height: var(--salt-text-lineHeight);\n}\n";
3
+ var css_248z = ".saltOption {\n color: var(--salt-content-primary-foreground);\n background: var(--salt-selectable-background);\n font-size: var(--salt-text-fontSize);\n font-weight: var(--salt-text-fontWeight);\n font-family: var(--salt-text-fontFamily);\n line-height: var(--salt-text-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n gap: var(--salt-spacing-100);\n position: relative;\n cursor: var(--salt-cursor-hover);\n box-sizing: border-box;\n flex-shrink: 0;\n}\n\n.saltOption-active {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltOption-focusVisible {\n outline: var(--salt-focused-outline);\n outline-offset: calc(var(--salt-size-fixed-100) * -2);\n}\n\n.saltOption:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltOption[aria-selected=\"true\"] {\n z-index: var(--salt-zIndex-default);\n background: var(--salt-selectable-background-selected);\n box-shadow:\n calc(var(--salt-size-fixed-100) * -2) 0 0 0 var(--salt-selectable-background-hover),\n calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-size-fixed-100) var(--salt-selectable-borderColor-selected),\n 0 calc(var(--salt-size-fixed-100) * -1) 0 var(--salt-selectable-borderColor-selected);\n}\n\n.saltOption[aria-disabled=\"true\"] {\n color: var(--salt-content-primary-foreground-disabled);\n cursor: var(--salt-cursor-disabled);\n}\n\n/* TODO: Find a better way of doing this */\n.saltOption .saltIcon:not(.saltCheckboxIcon-icon) {\n min-height: var(--salt-text-lineHeight);\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=Option.css.js.map
@@ -46,7 +46,8 @@ const Option = React.forwardRef(
46
46
  selectedState,
47
47
  focusVisibleState,
48
48
  valueToString,
49
- disabled: listDisabled
49
+ disabled: listDisabled,
50
+ listRef
50
51
  } = ListControlContext.useListControlContext();
51
52
  const disabled = disabledProp || listDisabled;
52
53
  const selected = selectedState.includes(value);
@@ -60,9 +61,11 @@ const Option = React.forwardRef(
60
61
  [id, disabled, value]
61
62
  );
62
63
  const handleClick = (event) => {
64
+ var _a;
63
65
  if (disabled || id === void 0) {
64
66
  return;
65
67
  }
68
+ (_a = listRef == null ? void 0 : listRef.current) == null ? void 0 : _a.focus({ preventScroll: true });
66
69
  setActive(optionValue);
67
70
  select(event, optionValue);
68
71
  onClick == null ? void 0 : onClick(event);
@@ -94,6 +97,7 @@ const Option = React.forwardRef(
94
97
  id,
95
98
  onClick: handleClick,
96
99
  onMouseOver: handleMouseOver,
100
+ tabIndex: -1,
97
101
  ...rest,
98
102
  children: [
99
103
  multiselect && /* @__PURE__ */ jsxRuntime.jsx(CheckboxIcon.CheckboxIcon, { checked: selected, disabled }),
@@ -1 +1 @@
1
- {"version":3,"file":"Option.js","sources":["../src/option/Option.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type MouseEvent,\n type ReactNode,\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { CheckboxIcon } from \"../checkbox\";\nimport {\n type OptionValue,\n useListControlContext,\n} from \"../list-control/ListControlContext\";\nimport { makePrefixer, useForkRef, useId } from \"../utils\";\nimport optionCss from \"./Option.css\";\n\nexport interface OptionProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * If `true`, the option will be disabled.\n */\n disabled?: boolean;\n /**\n * The value of the option.\n */\n value: unknown;\n /**\n * The content of the option.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltOption\");\n\nexport const Option = forwardRef<HTMLDivElement, OptionProps>(\n function Option(props, ref) {\n const {\n className,\n children,\n disabled: disabledProp,\n onClick,\n id: idProp,\n value,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-option\",\n css: optionCss,\n window: targetWindow,\n });\n\n const optionRef = useRef(null);\n const id = useId(idProp);\n\n const {\n setActive,\n activeState,\n multiselect,\n select,\n register,\n selectedState,\n focusVisibleState,\n valueToString,\n disabled: listDisabled,\n } = useListControlContext();\n\n const disabled = disabledProp || listDisabled;\n\n const selected = selectedState.includes(value);\n const active = activeState?.id === id;\n\n const optionValue: OptionValue<unknown> = useMemo(\n () => ({\n id: String(id),\n disabled: Boolean(disabled),\n value,\n }),\n [id, disabled, value],\n );\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (disabled || id === undefined) {\n return;\n }\n\n // set active descendent\n setActive(optionValue);\n\n // handle selection\n select(event, optionValue);\n\n onClick?.(event);\n };\n\n const handleMouseOver = () => {\n setActive(optionValue);\n };\n\n useEffect(() => {\n if (id && optionRef.current) {\n return register(optionValue, optionRef.current);\n }\n }, [optionValue, id, register]);\n\n const handleRef = useForkRef(optionRef, ref);\n\n return (\n <div\n aria-disabled={disabled ? \"true\" : undefined}\n aria-selected={selected}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"active\")]: active,\n [withBaseName(\"focusVisible\")]: focusVisibleState && active,\n },\n className,\n )}\n ref={handleRef}\n role=\"option\"\n id={id}\n onClick={handleClick}\n onMouseOver={handleMouseOver}\n {...rest}\n >\n {multiselect && <CheckboxIcon checked={selected} disabled={disabled} />}\n {children ?? valueToString(value)}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","Option","useWindow","useComponentCssInjection","optionCss","useRef","useId","useListControlContext","useMemo","useEffect","useForkRef","jsxs","clsx","jsx","CheckboxIcon"],"mappings":"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"}
1
+ {"version":3,"file":"Option.js","sources":["../src/option/Option.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { CheckboxIcon } from \"../checkbox\";\nimport {\n type OptionValue,\n useListControlContext,\n} from \"../list-control/ListControlContext\";\nimport { makePrefixer, useForkRef, useId } from \"../utils\";\nimport optionCss from \"./Option.css\";\n\nexport interface OptionProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * If `true`, the option will be disabled.\n */\n disabled?: boolean;\n /**\n * The value of the option.\n */\n value: unknown;\n /**\n * The content of the option.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltOption\");\n\nexport const Option = forwardRef<HTMLDivElement, OptionProps>(\n function Option(props, ref) {\n const {\n className,\n children,\n disabled: disabledProp,\n onClick,\n id: idProp,\n value,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-option\",\n css: optionCss,\n window: targetWindow,\n });\n\n const optionRef = useRef(null);\n const id = useId(idProp);\n\n const {\n setActive,\n activeState,\n multiselect,\n select,\n register,\n selectedState,\n focusVisibleState,\n valueToString,\n disabled: listDisabled,\n listRef,\n } = useListControlContext();\n\n const disabled = disabledProp || listDisabled;\n\n const selected = selectedState.includes(value);\n const active = activeState?.id === id;\n\n const optionValue: OptionValue<unknown> = useMemo(\n () => ({\n id: String(id),\n disabled: Boolean(disabled),\n value,\n }),\n [id, disabled, value],\n );\n\n const handleClick = (event: MouseEvent<HTMLDivElement>) => {\n if (disabled || id === undefined) {\n return;\n }\n\n listRef?.current?.focus({ preventScroll: true });\n // set active descendent\n setActive(optionValue);\n\n // handle selection\n select(event, optionValue);\n\n onClick?.(event);\n };\n\n const handleMouseOver = () => {\n setActive(optionValue);\n };\n\n useEffect(() => {\n if (id && optionRef.current) {\n return register(optionValue, optionRef.current);\n }\n }, [optionValue, id, register]);\n\n const handleRef = useForkRef(optionRef, ref);\n\n return (\n <div\n aria-disabled={disabled ? \"true\" : undefined}\n aria-selected={selected}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"active\")]: active,\n [withBaseName(\"focusVisible\")]: focusVisibleState && active,\n },\n className,\n )}\n ref={handleRef}\n role=\"option\"\n id={id}\n onClick={handleClick}\n onMouseOver={handleMouseOver}\n tabIndex={-1}\n {...rest}\n >\n {multiselect && <CheckboxIcon checked={selected} disabled={disabled} />}\n {children ?? valueToString(value)}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","Option","useWindow","useComponentCssInjection","optionCss","useRef","useId","useListControlContext","useMemo","useEffect","useForkRef","jsxs","clsx","jsx","CheckboxIcon"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltOptionGroup-label {\n background: var(--salt-container-primary-background);\n color: var(--salt-content-secondary-foreground);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-label-fontWeight-strong);\n font-family: var(--salt-text-label-fontFamily);\n line-height: var(--salt-text-label-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n box-sizing: border-box;\n}\n\n.saltOptionGroup {\n border-top: var(--salt-size-border) var(--salt-separable-borderStyle) var(--salt-separable-tertiary-borderColor);\n}\n\n.saltOptionGroup:first-of-type {\n border-top: 0;\n}\n";
3
+ var css_248z = ".saltOptionGroup-label {\n background: var(--salt-container-primary-background);\n color: var(--salt-content-secondary-foreground);\n font-size: var(--salt-text-label-fontSize);\n font-weight: var(--salt-text-label-fontWeight-strong);\n font-family: var(--salt-text-label-fontFamily);\n line-height: var(--salt-text-label-lineHeight);\n letter-spacing: var(--salt-text-letterSpacing);\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n padding: calc(var(--salt-spacing-100) + var(--salt-spacing-25)) var(--salt-spacing-100);\n display: flex;\n box-sizing: border-box;\n}\n\n.saltOptionGroup {\n border-top: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-separable-tertiary-borderColor);\n}\n\n.saltOptionGroup:first-of-type {\n border-top: 0;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=OptionGroup.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OptionGroup.js","sources":["../src/option/OptionGroup.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n} from \"react\";\nimport { makePrefixer, useId } from \"../utils\";\nimport optionGroupCss from \"./OptionGroup.css\";\n\nexport interface OptionGroupProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The label of the option group.\n */\n label?: string;\n /**\n * Options to be rendered inside the option group.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltOptionGroup\");\nexport const OptionGroup = forwardRef<HTMLDivElement, OptionGroupProps>(\n function OptionGroup(props, ref) {\n const { className, children, label, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-option-group\",\n css: optionGroupCss,\n window: targetWindow,\n });\n\n const labelId = useId();\n\n return (\n <div\n aria-labelledby={labelId}\n className={clsx(withBaseName(), className)}\n role=\"group\"\n ref={ref}\n {...rest}\n >\n <div aria-hidden className={withBaseName(\"label\")} id={labelId}>\n {label}\n </div>\n {children}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","OptionGroup","useWindow","useComponentCssInjection","optionGroupCss","useId","jsxs","clsx","jsx"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAM,YAAA,GAAeA,0BAAa,iBAAiB,CAAA;AAC5C,MAAM,WAAc,GAAAC,gBAAA;AAAA,EACzB,SAASC,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAU,KAAO,EAAA,GAAG,MAAS,GAAA,KAAA;AAEhD,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,mBAAA;AAAA,MACR,GAAK,EAAAC,aAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,UAAUC,WAAM,EAAA;AAEtB,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,iBAAiB,EAAA,OAAA;AAAA,QACjB,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,IAAK,EAAA,OAAA;AAAA,QACL,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAACC,cAAA,CAAA,KAAA,EAAA,EAAI,eAAW,IAAC,EAAA,SAAA,EAAW,aAAa,OAAO,CAAA,EAAG,EAAI,EAAA,OAAA,EACpD,QACH,EAAA,KAAA,EAAA,CAAA;AAAA,UACC;AAAA;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"OptionGroup.js","sources":["../src/option/OptionGroup.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { makePrefixer, useId } from \"../utils\";\nimport optionGroupCss from \"./OptionGroup.css\";\n\nexport interface OptionGroupProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * The label of the option group.\n */\n label?: string;\n /**\n * Options to be rendered inside the option group.\n */\n children?: ReactNode;\n}\n\nconst withBaseName = makePrefixer(\"saltOptionGroup\");\nexport const OptionGroup = forwardRef<HTMLDivElement, OptionGroupProps>(\n function OptionGroup(props, ref) {\n const { className, children, label, ...rest } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-option-group\",\n css: optionGroupCss,\n window: targetWindow,\n });\n\n const labelId = useId();\n\n return (\n <div\n aria-labelledby={labelId}\n className={clsx(withBaseName(), className)}\n role=\"group\"\n ref={ref}\n {...rest}\n >\n <div aria-hidden className={withBaseName(\"label\")} id={labelId}>\n {label}\n </div>\n {children}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","OptionGroup","useWindow","useComponentCssInjection","optionGroupCss","useId","jsxs","clsx","jsx"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAM,YAAA,GAAeA,0BAAa,iBAAiB,CAAA;AAC5C,MAAM,WAAc,GAAAC,gBAAA;AAAA,EACzB,SAASC,YAAY,CAAA,KAAA,EAAO,GAAK,EAAA;AAC/B,IAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAU,KAAO,EAAA,GAAG,MAAS,GAAA,KAAA;AAEhD,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,mBAAA;AAAA,MACR,GAAK,EAAAC,aAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,UAAUC,WAAM,EAAA;AAEtB,IACE,uBAAAC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,iBAAiB,EAAA,OAAA;AAAA,QACjB,SAAW,EAAAC,SAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,IAAK,EAAA,OAAA;AAAA,QACL,GAAA;AAAA,QACC,GAAG,IAAA;AAAA,QAEJ,QAAA,EAAA;AAAA,0BAACC,cAAA,CAAA,KAAA,EAAA,EAAI,eAAW,IAAC,EAAA,SAAA,EAAW,aAAa,OAAO,CAAA,EAAG,EAAI,EAAA,OAAA,EACpD,QACH,EAAA,KAAA,EAAA,CAAA;AAAA,UACC;AAAA;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltOptionList {\n background: var(--salt-container-primary-background);\n border: var(--salt-size-border) var(--salt-selectable-borderStyle-selected) var(--salt-selectable-borderColor-selected);\n border-radius: var(--salt-palette-corner, 0);\n overflow: hidden;\n overflow-y: auto;\n position: relative;\n z-index: var(--salt-zIndex-flyover);\n box-shadow: var(--salt-overlayable-shadow-popout);\n box-sizing: border-box;\n}\n\n.saltOptionList-container {\n display: flex;\n flex-direction: column;\n gap: var(--salt-size-border);\n max-height: inherit;\n min-height: inherit;\n}\n\n.saltOptionList-collapsed {\n display: none;\n}\n";
3
+ var css_248z = ".saltOptionList {\n background: var(--salt-container-primary-background);\n border: var(--salt-size-fixed-100) var(--salt-borderStyle-solid) var(--salt-selectable-borderColor-selected);\n border-radius: var(--salt-palette-corner, 0);\n overflow: hidden;\n overflow-y: auto;\n position: relative;\n z-index: var(--salt-zIndex-flyover);\n box-shadow: var(--salt-overlayable-shadow-popout);\n box-sizing: border-box;\n}\n\n.saltOptionList-container {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-fixed-100);\n max-height: inherit;\n min-height: inherit;\n}\n\n.saltOptionList-collapsed {\n display: none;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=OptionList.css.js.map
@@ -2,8 +2,8 @@
2
2
 
3
3
  var React = require('react');
4
4
  var createContext = require('../utils/createContext.js');
5
- require('react/jsx-runtime');
6
5
  require('clsx');
6
+ require('react/jsx-runtime');
7
7
  require('../utils/useFloatingUI/useFloatingUI.js');
8
8
  require('../utils/useId.js');
9
9
  require('../salt-provider/SaltProvider.js');
@@ -5,11 +5,11 @@ var styles = require('@salt-ds/styles');
5
5
  var window = require('@salt-ds/window');
6
6
  var clsx = require('clsx');
7
7
  var React = require('react');
8
- var Text = require('../text/Text.js');
9
8
  require('../text/Code.js');
10
9
  require('../text/Display.js');
11
10
  var Headings = require('../text/Headings.js');
12
11
  require('../text/Label.js');
12
+ var Text = require('../text/Text.js');
13
13
  require('../text/TextAction.js');
14
14
  require('../text/TextNotation.js');
15
15
  var makePrefixer = require('../utils/makePrefixer.js');
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayHeader.js","sources":["../src/overlay/OverlayHeader.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type ReactNode,\n forwardRef,\n} from \"react\";\nimport { H2, Text } from \"../text\";\nimport { makePrefixer } from \"../utils\";\n\nimport overlayHeaderCss from \"./OverlayHeader.css\";\n\nconst withBaseName = makePrefixer(\"saltOverlayHeader\");\n\nexport interface OverlayHeaderProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Description text is displayed just below the header\n **/\n description?: ReactNode;\n /**\n * Actions to be displayed in header\n */\n actions?: ReactNode;\n /**\n * Header text\n */\n header?: ReactNode;\n /**\n * Preheader text is displayed just above the header\n **/\n preheader?: ReactNode;\n}\n\nexport const OverlayHeader = forwardRef<HTMLDivElement, OverlayHeaderProps>(\n function OverlayHeader(props, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-overlay-header\",\n css: overlayHeaderCss,\n window: targetWindow,\n });\n\n const { className, description, header, actions, preheader, ...rest } =\n props;\n\n return (\n <div className={clsx(withBaseName(), className)} {...rest} ref={ref}>\n <div className={withBaseName(\"container\")}>\n <H2 styleAs=\"h4\" className={withBaseName(\"header\")}>\n {preheader && <Text color=\"primary\">{preheader}</Text>}\n {header}\n </H2>\n {description && (\n <Text color=\"secondary\" className={withBaseName(\"description\")}>\n {description}\n </Text>\n )}\n </div>\n {actions && (\n <div className={withBaseName(\"actionsContainer\")}>{actions}</div>\n )}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","OverlayHeader","useWindow","useComponentCssInjection","overlayHeaderCss","jsxs","clsx","H2","jsx","Text"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaA,MAAM,YAAA,GAAeA,0BAAa,mBAAmB,CAAA;AAqB9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA,EAAE,WAAW,WAAa,EAAA,MAAA,EAAQ,SAAS,SAAW,EAAA,GAAG,MAC7D,GAAA,KAAA;AAEF,IACE,uBAAAC,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAWC,SAAK,CAAA,YAAA,IAAgB,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,GACzD,EAAA,QAAA,EAAA;AAAA,sBAAAD,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,WAAW,CACtC,EAAA,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAACE,eAAG,OAAQ,EAAA,IAAA,EAAK,SAAW,EAAA,YAAA,CAAa,QAAQ,CAC9C,EAAA,QAAA,EAAA;AAAA,UAAA,SAAA,oBAAcC,cAAA,CAAAC,SAAA,EAAA,EAAK,KAAM,EAAA,SAAA,EAAW,QAAU,EAAA,SAAA,EAAA,CAAA;AAAA,UAC9C;AAAA,SACH,EAAA,CAAA;AAAA,QACC,WAAA,mCACEA,SAAK,EAAA,EAAA,KAAA,EAAM,aAAY,SAAW,EAAA,YAAA,CAAa,aAAa,CAAA,EAC1D,QACH,EAAA,WAAA,EAAA;AAAA,OAEJ,EAAA,CAAA;AAAA,MACC,2BACED,cAAA,CAAA,KAAA,EAAA,EAAI,WAAW,YAAa,CAAA,kBAAkB,GAAI,QAAQ,EAAA,OAAA,EAAA;AAAA,KAE/D,EAAA,CAAA;AAAA;AAGN;;;;"}
1
+ {"version":3,"file":"OverlayHeader.js","sources":["../src/overlay/OverlayHeader.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { H2, Text } from \"../text\";\nimport { makePrefixer } from \"../utils\";\n\nimport overlayHeaderCss from \"./OverlayHeader.css\";\n\nconst withBaseName = makePrefixer(\"saltOverlayHeader\");\n\nexport interface OverlayHeaderProps extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Description text is displayed just below the header\n **/\n description?: ReactNode;\n /**\n * Actions to be displayed in header\n */\n actions?: ReactNode;\n /**\n * Header text\n */\n header?: ReactNode;\n /**\n * Preheader text is displayed just above the header\n **/\n preheader?: ReactNode;\n}\n\nexport const OverlayHeader = forwardRef<HTMLDivElement, OverlayHeaderProps>(\n function OverlayHeader(props, ref) {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-overlay-header\",\n css: overlayHeaderCss,\n window: targetWindow,\n });\n\n const { className, description, header, actions, preheader, ...rest } =\n props;\n\n return (\n <div className={clsx(withBaseName(), className)} {...rest} ref={ref}>\n <div className={withBaseName(\"container\")}>\n <H2 styleAs=\"h4\" className={withBaseName(\"header\")}>\n {preheader && <Text color=\"primary\">{preheader}</Text>}\n {header}\n </H2>\n {description && (\n <Text color=\"secondary\" className={withBaseName(\"description\")}>\n {description}\n </Text>\n )}\n </div>\n {actions && (\n <div className={withBaseName(\"actionsContainer\")}>{actions}</div>\n )}\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","OverlayHeader","useWindow","useComponentCssInjection","overlayHeaderCss","jsxs","clsx","H2","jsx","Text"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAaA,MAAM,YAAA,GAAeA,0BAAa,mBAAmB,CAAA;AAqB9C,MAAM,aAAgB,GAAAC,gBAAA;AAAA,EAC3B,SAASC,cAAc,CAAA,KAAA,EAAO,GAAK,EAAA;AACjC,IAAA,MAAM,eAAeC,gBAAU,EAAA;AAC/B,IAAyBC,+BAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,qBAAA;AAAA,MACR,GAAK,EAAAC,eAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA,EAAE,WAAW,WAAa,EAAA,MAAA,EAAQ,SAAS,SAAW,EAAA,GAAG,MAC7D,GAAA,KAAA;AAEF,IACE,uBAAAC,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAWC,SAAK,CAAA,YAAA,IAAgB,SAAS,CAAA,EAAI,GAAG,IAAA,EAAM,GACzD,EAAA,QAAA,EAAA;AAAA,sBAAAD,eAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAW,YAAa,CAAA,WAAW,CACtC,EAAA,QAAA,EAAA;AAAA,wBAAAA,eAAA,CAACE,eAAG,OAAQ,EAAA,IAAA,EAAK,SAAW,EAAA,YAAA,CAAa,QAAQ,CAC9C,EAAA,QAAA,EAAA;AAAA,UAAA,SAAA,oBAAcC,cAAA,CAAAC,SAAA,EAAA,EAAK,KAAM,EAAA,SAAA,EAAW,QAAU,EAAA,SAAA,EAAA,CAAA;AAAA,UAC9C;AAAA,SACH,EAAA,CAAA;AAAA,QACC,WAAA,mCACEA,SAAK,EAAA,EAAA,KAAA,EAAM,aAAY,SAAW,EAAA,YAAA,CAAa,aAAa,CAAA,EAC1D,QACH,EAAA,WAAA,EAAA;AAAA,OAEJ,EAAA,CAAA;AAAA,MACC,2BACED,cAAA,CAAA,KAAA,EAAA,EAAI,WAAW,YAAa,CAAA,kBAAkB,GAAI,QAAQ,EAAA,OAAA,EAAA;AAAA,KAE/D,EAAA,CAAA;AAAA;AAGN;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = ".saltOverlayPanel {\n --overlay-borderColor: var(--saltOverlay-borderColor, var(--salt-container-primary-borderColor));\n --overlay-background: var(--saltOverlay-background, var(--salt-container-primary-background));\n font-family: var(--salt-text-fontFamily);\n font-size: var(--saltOverlay-fontSize, var(--salt-text-fontSize));\n font-weight: var(--saltOverlay-fontWeight, var(--salt-text-fontWeight));\n line-height: var(--saltOverlay-lineHeight, var(--salt-text-lineHeight));\n\n border-color: var(--overlay-borderColor);\n border-style: var(--saltOverlay-borderStyle, var(--salt-container-borderStyle));\n border-width: var(--saltOverlay-borderWidth, var(--salt-size-border));\n border-radius: var(--saltOverlay-borderRadius, var(--salt-palette-corner, 0));\n\n background: var(--overlay-background);\n box-shadow: var(--saltOverlay-boxShadow, var(--salt-overlayable-shadow-popout));\n\n color: var(--saltOverlay-text-color, var(--salt-content-primary-foreground));\n z-index: var(--saltOverlay-zIndex, var(--salt-zIndex-flyover));\n width: max-content;\n}\n";
3
+ var css_248z = ".saltOverlayPanel {\n --overlay-borderColor: var(--saltOverlay-borderColor, var(--salt-container-primary-borderColor));\n --overlay-background: var(--saltOverlay-background, var(--salt-container-primary-background));\n font-family: var(--salt-text-fontFamily);\n font-size: var(--saltOverlay-fontSize, var(--salt-text-fontSize));\n font-weight: var(--saltOverlay-fontWeight, var(--salt-text-fontWeight));\n line-height: var(--saltOverlay-lineHeight, var(--salt-text-lineHeight));\n\n border-color: var(--overlay-borderColor);\n border-style: var(--saltOverlay-borderStyle, var(--salt-borderStyle-solid));\n border-width: var(--saltOverlay-borderWidth, var(--salt-size-fixed-100));\n border-radius: var(--saltOverlay-borderRadius, var(--salt-palette-corner, 0));\n\n background: var(--overlay-background);\n box-shadow: var(--saltOverlay-boxShadow, var(--salt-overlayable-shadow-popout));\n\n color: var(--saltOverlay-text-color, var(--salt-content-primary-foreground));\n z-index: var(--saltOverlay-zIndex, var(--salt-zIndex-flyover));\n width: max-content;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=OverlayPanel.css.js.map