@salt-ds/core 1.72.0 → 1.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. package/CHANGELOG.md +178 -0
  2. package/css/salt-core.css +533 -147
  3. package/dist-cjs/accordion/AccordionHeader.css.js +1 -1
  4. package/dist-cjs/border-layout/BorderLayout.js.map +1 -1
  5. package/dist-cjs/breadcrumbs/Breadcrumb.js +5 -6
  6. package/dist-cjs/breadcrumbs/Breadcrumb.js.map +1 -1
  7. package/dist-cjs/button/Button.css.js +1 -1
  8. package/dist-cjs/card/CardContent.css.js +1 -1
  9. package/dist-cjs/card/hasCardSection.js +11 -3
  10. package/dist-cjs/card/hasCardSection.js.map +1 -1
  11. package/dist-cjs/checkbox/CheckboxIcon.js.map +1 -1
  12. package/dist-cjs/collapsible/CollapsiblePanel.css.js +1 -1
  13. package/dist-cjs/collapsible/CollapsiblePanel.js +15 -15
  14. package/dist-cjs/collapsible/CollapsiblePanel.js.map +1 -1
  15. package/dist-cjs/combo-box/ComboBox.js.map +1 -1
  16. package/dist-cjs/dialog/DialogHeader.js +2 -0
  17. package/dist-cjs/dialog/DialogHeader.js.map +1 -1
  18. package/dist-cjs/drawer/Drawer.css.js +1 -1
  19. package/dist-cjs/drawer/Drawer.js +54 -6
  20. package/dist-cjs/drawer/Drawer.js.map +1 -1
  21. package/dist-cjs/drawer/DrawerContext.js +2 -0
  22. package/dist-cjs/drawer/DrawerContext.js.map +1 -1
  23. package/dist-cjs/drawer/DrawerFooter.css.js +1 -1
  24. package/dist-cjs/drawer/DrawerHeader.css.js +1 -1
  25. package/dist-cjs/drawer/DrawerHeader.js +8 -3
  26. package/dist-cjs/drawer/DrawerHeader.js.map +1 -1
  27. package/dist-cjs/drawer/internal/DrawerResizeGuide.css.js +6 -0
  28. package/dist-cjs/drawer/internal/DrawerResizeGuide.css.js.map +1 -0
  29. package/dist-cjs/drawer/internal/DrawerResizeGuide.js +44 -0
  30. package/dist-cjs/drawer/internal/DrawerResizeGuide.js.map +1 -0
  31. package/dist-cjs/drawer/internal/DrawerResizeHandle.css.js +6 -0
  32. package/dist-cjs/drawer/internal/DrawerResizeHandle.css.js.map +1 -0
  33. package/dist-cjs/drawer/internal/DrawerResizeHandle.js +43 -0
  34. package/dist-cjs/drawer/internal/DrawerResizeHandle.js.map +1 -0
  35. package/dist-cjs/drawer/internal/useDrawerResize.js +519 -0
  36. package/dist-cjs/drawer/internal/useDrawerResize.js.map +1 -0
  37. package/dist-cjs/dropdown/Dropdown.css.js +1 -1
  38. package/dist-cjs/dropdown/Dropdown.js +1 -1
  39. package/dist-cjs/dropdown/Dropdown.js.map +1 -1
  40. package/dist-cjs/form-field/FormField.js +2 -2
  41. package/dist-cjs/form-field/FormField.js.map +1 -1
  42. package/dist-cjs/form-field/FormFieldHelperText.js +2 -0
  43. package/dist-cjs/form-field/FormFieldHelperText.js.map +1 -1
  44. package/dist-cjs/form-field/FormFieldLabel.css.js +1 -1
  45. package/dist-cjs/form-field/FormFieldLabel.js +2 -0
  46. package/dist-cjs/form-field/FormFieldLabel.js.map +1 -1
  47. package/dist-cjs/form-field-context/FormFieldContext.js.map +1 -1
  48. package/dist-cjs/index.js +11 -0
  49. package/dist-cjs/index.js.map +1 -1
  50. package/dist-cjs/input/Input.css.js +1 -1
  51. package/dist-cjs/link/Link.js +2 -0
  52. package/dist-cjs/link/Link.js.map +1 -1
  53. package/dist-cjs/link/LinkAction.js +3 -2
  54. package/dist-cjs/link/LinkAction.js.map +1 -1
  55. package/dist-cjs/link-button/LinkButton.css.js +1 -1
  56. package/dist-cjs/link-button/LinkButton.js +3 -2
  57. package/dist-cjs/link-button/LinkButton.js.map +1 -1
  58. package/dist-cjs/list-box/ListBox.js +1 -1
  59. package/dist-cjs/list-box/ListBox.js.map +1 -1
  60. package/dist-cjs/list-control/ListControlContext.js.map +1 -1
  61. package/dist-cjs/list-control/ListControlOptionContext.js.map +1 -1
  62. package/dist-cjs/mega-menu/MegaMenuGroupHeading.css.js +1 -1
  63. package/dist-cjs/mega-menu/MegaMenuListItem.css.js +1 -1
  64. package/dist-cjs/menu/MenuAlignmentContext.js +55 -0
  65. package/dist-cjs/menu/MenuAlignmentContext.js.map +1 -0
  66. package/dist-cjs/menu/MenuBase.js +9 -3
  67. package/dist-cjs/menu/MenuBase.js.map +1 -1
  68. package/dist-cjs/menu/MenuGroup.css.js +1 -1
  69. package/dist-cjs/menu/MenuGroup.js +42 -3
  70. package/dist-cjs/menu/MenuGroup.js.map +1 -1
  71. package/dist-cjs/menu/MenuGroupContext.js +27 -0
  72. package/dist-cjs/menu/MenuGroupContext.js.map +1 -0
  73. package/dist-cjs/menu/MenuItem.css.js +1 -1
  74. package/dist-cjs/menu/MenuItem.js +176 -50
  75. package/dist-cjs/menu/MenuItem.js.map +1 -1
  76. package/dist-cjs/menu/MenuPanel.js +12 -3
  77. package/dist-cjs/menu/MenuPanel.js.map +1 -1
  78. package/dist-cjs/menu/MenuPanelContext.js +3 -1
  79. package/dist-cjs/menu/MenuPanelContext.js.map +1 -1
  80. package/dist-cjs/multiline-input/MultilineInput.css.js +1 -1
  81. package/dist-cjs/navigation-item/NavigationItem.css.js +1 -1
  82. package/dist-cjs/number-input/NumberInput.css.js +1 -1
  83. package/dist-cjs/on-solid-button/OnSolidButton.css.js +6 -0
  84. package/dist-cjs/on-solid-button/OnSolidButton.css.js.map +1 -0
  85. package/dist-cjs/on-solid-button/OnSolidButton.js +68 -0
  86. package/dist-cjs/on-solid-button/OnSolidButton.js.map +1 -0
  87. package/dist-cjs/option/Option.css.js +1 -1
  88. package/dist-cjs/option/Option.js +7 -1
  89. package/dist-cjs/option/Option.js.map +1 -1
  90. package/dist-cjs/option/OptionGroup.css.js +1 -1
  91. package/dist-cjs/overlay/OverlayHeader.js +2 -0
  92. package/dist-cjs/overlay/OverlayHeader.js.map +1 -1
  93. package/dist-cjs/overlay/OverlayPanelCloseButton.js +1 -1
  94. package/dist-cjs/overlay/OverlayPanelCloseButton.js.map +1 -1
  95. package/dist-cjs/pagination/CompactPaginator.js +2 -0
  96. package/dist-cjs/pagination/CompactPaginator.js.map +1 -1
  97. package/dist-cjs/pagination/GoToInput.js +2 -0
  98. package/dist-cjs/pagination/GoToInput.js.map +1 -1
  99. package/dist-cjs/pill/PillCheckIcon.js.map +1 -1
  100. package/dist-cjs/pill-input/PillInput.css.js +1 -1
  101. package/dist-cjs/progress/CircularProgress/CircularProgress.js +2 -0
  102. package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
  103. package/dist-cjs/progress/LinearProgress/LinearProgress.js +2 -0
  104. package/dist-cjs/progress/LinearProgress/LinearProgress.js.map +1 -1
  105. package/dist-cjs/salt-provider/ThemeApplicator.js +10 -6
  106. package/dist-cjs/salt-provider/ThemeApplicator.js.map +1 -1
  107. package/dist-cjs/side-panel/SidePanelTitle.js +2 -0
  108. package/dist-cjs/side-panel/SidePanelTitle.js.map +1 -1
  109. package/dist-cjs/side-panel/SidePanelTrigger.js.map +1 -1
  110. package/dist-cjs/side-panel/internal/useIsScrollable.js.map +1 -1
  111. package/dist-cjs/side-panel/useSidePanel.js +4 -9
  112. package/dist-cjs/side-panel/useSidePanel.js.map +1 -1
  113. package/dist-cjs/skip-link/internal/useManageFocusOnTarget.js +2 -2
  114. package/dist-cjs/skip-link/internal/useManageFocusOnTarget.js.map +1 -1
  115. package/dist-cjs/slider/internal/SliderThumb.js.map +1 -1
  116. package/dist-cjs/slider/internal/SliderTooltip.js +2 -0
  117. package/dist-cjs/slider/internal/SliderTooltip.js.map +1 -1
  118. package/dist-cjs/slider/internal/SliderTrack.js +2 -0
  119. package/dist-cjs/slider/internal/SliderTrack.js.map +1 -1
  120. package/dist-cjs/slider/internal/useRangeSliderThumb.js.map +1 -1
  121. package/dist-cjs/slider/internal/useSliderThumb.js.map +1 -1
  122. package/dist-cjs/slider/internal/utils.js.map +1 -1
  123. package/dist-cjs/stepper/Stepper.js +1 -1
  124. package/dist-cjs/stepper/Stepper.js.map +1 -1
  125. package/dist-cjs/stepper/internal/StepText.css.js +1 -1
  126. package/dist-cjs/stepper/internal/StepText.js +2 -0
  127. package/dist-cjs/stepper/internal/StepText.js.map +1 -1
  128. package/dist-cjs/table/Table.css.js +1 -1
  129. package/dist-cjs/tabs/Tabs.js +1 -1
  130. package/dist-cjs/tabs/Tabs.js.map +1 -1
  131. package/dist-cjs/tabs/internal/overflow/useOverflow.js.map +1 -1
  132. package/dist-cjs/tabs/internal/overflow/useRenderedTabWidth.js.map +1 -1
  133. package/dist-cjs/text/Code.js +1 -1
  134. package/dist-cjs/text/Code.js.map +1 -1
  135. package/dist-cjs/text/Editorial.js +32 -0
  136. package/dist-cjs/text/Editorial.js.map +1 -0
  137. package/dist-cjs/text/Eyebrow.js +12 -0
  138. package/dist-cjs/text/Eyebrow.js.map +1 -0
  139. package/dist-cjs/text/Text.css.js +1 -1
  140. package/dist-cjs/text/Text.js +6 -2
  141. package/dist-cjs/text/Text.js.map +1 -1
  142. package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
  143. package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
  144. package/dist-cjs/toolbar/ToolbarOverflow.js +8 -4
  145. package/dist-cjs/toolbar/ToolbarOverflow.js.map +1 -1
  146. package/dist-cjs/toolbar/toolbarUtils.js.map +1 -1
  147. package/dist-cjs/tooltip/useAriaAnnounce.js +4 -2
  148. package/dist-cjs/tooltip/useAriaAnnounce.js.map +1 -1
  149. package/dist-cjs/tooltip/useTooltip.js.map +1 -1
  150. package/dist-cjs/tree/TreeContext.js.map +1 -1
  151. package/dist-cjs/tree/TreeNodeTrigger.css.js +1 -1
  152. package/dist-cjs/tree/TreeNodeTrigger.js +0 -1
  153. package/dist-cjs/tree/TreeNodeTrigger.js.map +1 -1
  154. package/dist-cjs/utils/forkRef.js +34 -0
  155. package/dist-cjs/utils/forkRef.js.map +1 -0
  156. package/dist-cjs/utils/getRefFromChildren.js.map +1 -1
  157. package/dist-cjs/utils/marginMiddleware.js.map +1 -1
  158. package/dist-cjs/utils/setRef.js.map +1 -1
  159. package/dist-cjs/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  160. package/dist-cjs/utils/useForkRef.js +3 -6
  161. package/dist-cjs/utils/useForkRef.js.map +1 -1
  162. package/dist-cjs/utils/useResizeObserver.js.map +1 -1
  163. package/dist-cjs/vertical-navigation/VerticalNavigationSubMenu.css.js +1 -1
  164. package/dist-es/accordion/AccordionHeader.css.js +1 -1
  165. package/dist-es/border-layout/BorderLayout.js.map +1 -1
  166. package/dist-es/breadcrumbs/Breadcrumb.js +5 -6
  167. package/dist-es/breadcrumbs/Breadcrumb.js.map +1 -1
  168. package/dist-es/button/Button.css.js +1 -1
  169. package/dist-es/card/CardContent.css.js +1 -1
  170. package/dist-es/card/hasCardSection.js +11 -3
  171. package/dist-es/card/hasCardSection.js.map +1 -1
  172. package/dist-es/checkbox/CheckboxIcon.js.map +1 -1
  173. package/dist-es/collapsible/CollapsiblePanel.css.js +1 -1
  174. package/dist-es/collapsible/CollapsiblePanel.js +16 -16
  175. package/dist-es/collapsible/CollapsiblePanel.js.map +1 -1
  176. package/dist-es/combo-box/ComboBox.js.map +1 -1
  177. package/dist-es/dialog/DialogHeader.js +2 -0
  178. package/dist-es/dialog/DialogHeader.js.map +1 -1
  179. package/dist-es/drawer/Drawer.css.js +1 -1
  180. package/dist-es/drawer/Drawer.js +54 -6
  181. package/dist-es/drawer/Drawer.js.map +1 -1
  182. package/dist-es/drawer/DrawerContext.js +2 -0
  183. package/dist-es/drawer/DrawerContext.js.map +1 -1
  184. package/dist-es/drawer/DrawerFooter.css.js +1 -1
  185. package/dist-es/drawer/DrawerHeader.css.js +1 -1
  186. package/dist-es/drawer/DrawerHeader.js +8 -3
  187. package/dist-es/drawer/DrawerHeader.js.map +1 -1
  188. package/dist-es/drawer/internal/DrawerResizeGuide.css.js +4 -0
  189. package/dist-es/drawer/internal/DrawerResizeGuide.css.js.map +1 -0
  190. package/dist-es/drawer/internal/DrawerResizeGuide.js +42 -0
  191. package/dist-es/drawer/internal/DrawerResizeGuide.js.map +1 -0
  192. package/dist-es/drawer/internal/DrawerResizeHandle.css.js +4 -0
  193. package/dist-es/drawer/internal/DrawerResizeHandle.css.js.map +1 -0
  194. package/dist-es/drawer/internal/DrawerResizeHandle.js +41 -0
  195. package/dist-es/drawer/internal/DrawerResizeHandle.js.map +1 -0
  196. package/dist-es/drawer/internal/useDrawerResize.js +517 -0
  197. package/dist-es/drawer/internal/useDrawerResize.js.map +1 -0
  198. package/dist-es/dropdown/Dropdown.css.js +1 -1
  199. package/dist-es/dropdown/Dropdown.js +1 -1
  200. package/dist-es/dropdown/Dropdown.js.map +1 -1
  201. package/dist-es/form-field/FormField.js +2 -2
  202. package/dist-es/form-field/FormField.js.map +1 -1
  203. package/dist-es/form-field/FormFieldHelperText.js +2 -0
  204. package/dist-es/form-field/FormFieldHelperText.js.map +1 -1
  205. package/dist-es/form-field/FormFieldLabel.css.js +1 -1
  206. package/dist-es/form-field/FormFieldLabel.js +2 -0
  207. package/dist-es/form-field/FormFieldLabel.js.map +1 -1
  208. package/dist-es/form-field-context/FormFieldContext.js.map +1 -1
  209. package/dist-es/index.js +3 -0
  210. package/dist-es/index.js.map +1 -1
  211. package/dist-es/input/Input.css.js +1 -1
  212. package/dist-es/link/Link.js +2 -0
  213. package/dist-es/link/Link.js.map +1 -1
  214. package/dist-es/link/LinkAction.js +3 -2
  215. package/dist-es/link/LinkAction.js.map +1 -1
  216. package/dist-es/link-button/LinkButton.css.js +1 -1
  217. package/dist-es/link-button/LinkButton.js +3 -2
  218. package/dist-es/link-button/LinkButton.js.map +1 -1
  219. package/dist-es/list-box/ListBox.js +1 -1
  220. package/dist-es/list-box/ListBox.js.map +1 -1
  221. package/dist-es/list-control/ListControlContext.js.map +1 -1
  222. package/dist-es/list-control/ListControlOptionContext.js.map +1 -1
  223. package/dist-es/mega-menu/MegaMenuGroupHeading.css.js +1 -1
  224. package/dist-es/mega-menu/MegaMenuListItem.css.js +1 -1
  225. package/dist-es/menu/MenuAlignmentContext.js +50 -0
  226. package/dist-es/menu/MenuAlignmentContext.js.map +1 -0
  227. package/dist-es/menu/MenuBase.js +9 -3
  228. package/dist-es/menu/MenuBase.js.map +1 -1
  229. package/dist-es/menu/MenuGroup.css.js +1 -1
  230. package/dist-es/menu/MenuGroup.js +44 -5
  231. package/dist-es/menu/MenuGroup.js.map +1 -1
  232. package/dist-es/menu/MenuGroupContext.js +23 -0
  233. package/dist-es/menu/MenuGroupContext.js.map +1 -0
  234. package/dist-es/menu/MenuItem.css.js +1 -1
  235. package/dist-es/menu/MenuItem.js +177 -51
  236. package/dist-es/menu/MenuItem.js.map +1 -1
  237. package/dist-es/menu/MenuPanel.js +12 -3
  238. package/dist-es/menu/MenuPanel.js.map +1 -1
  239. package/dist-es/menu/MenuPanelContext.js +3 -1
  240. package/dist-es/menu/MenuPanelContext.js.map +1 -1
  241. package/dist-es/multiline-input/MultilineInput.css.js +1 -1
  242. package/dist-es/navigation-item/NavigationItem.css.js +1 -1
  243. package/dist-es/number-input/NumberInput.css.js +1 -1
  244. package/dist-es/on-solid-button/OnSolidButton.css.js +4 -0
  245. package/dist-es/on-solid-button/OnSolidButton.css.js.map +1 -0
  246. package/dist-es/on-solid-button/OnSolidButton.js +66 -0
  247. package/dist-es/on-solid-button/OnSolidButton.js.map +1 -0
  248. package/dist-es/option/Option.css.js +1 -1
  249. package/dist-es/option/Option.js +7 -1
  250. package/dist-es/option/Option.js.map +1 -1
  251. package/dist-es/option/OptionGroup.css.js +1 -1
  252. package/dist-es/overlay/OverlayHeader.js +2 -0
  253. package/dist-es/overlay/OverlayHeader.js.map +1 -1
  254. package/dist-es/overlay/OverlayPanelCloseButton.js +1 -1
  255. package/dist-es/overlay/OverlayPanelCloseButton.js.map +1 -1
  256. package/dist-es/pagination/CompactPaginator.js +2 -0
  257. package/dist-es/pagination/CompactPaginator.js.map +1 -1
  258. package/dist-es/pagination/GoToInput.js +2 -0
  259. package/dist-es/pagination/GoToInput.js.map +1 -1
  260. package/dist-es/pill/PillCheckIcon.js.map +1 -1
  261. package/dist-es/pill-input/PillInput.css.js +1 -1
  262. package/dist-es/progress/CircularProgress/CircularProgress.js +2 -0
  263. package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
  264. package/dist-es/progress/LinearProgress/LinearProgress.js +2 -0
  265. package/dist-es/progress/LinearProgress/LinearProgress.js.map +1 -1
  266. package/dist-es/salt-provider/ThemeApplicator.js +10 -6
  267. package/dist-es/salt-provider/ThemeApplicator.js.map +1 -1
  268. package/dist-es/side-panel/SidePanelTitle.js +2 -0
  269. package/dist-es/side-panel/SidePanelTitle.js.map +1 -1
  270. package/dist-es/side-panel/SidePanelTrigger.js.map +1 -1
  271. package/dist-es/side-panel/internal/useIsScrollable.js.map +1 -1
  272. package/dist-es/side-panel/useSidePanel.js +4 -9
  273. package/dist-es/side-panel/useSidePanel.js.map +1 -1
  274. package/dist-es/skip-link/internal/useManageFocusOnTarget.js +2 -2
  275. package/dist-es/skip-link/internal/useManageFocusOnTarget.js.map +1 -1
  276. package/dist-es/slider/internal/SliderThumb.js.map +1 -1
  277. package/dist-es/slider/internal/SliderTooltip.js +2 -0
  278. package/dist-es/slider/internal/SliderTooltip.js.map +1 -1
  279. package/dist-es/slider/internal/SliderTrack.js +2 -0
  280. package/dist-es/slider/internal/SliderTrack.js.map +1 -1
  281. package/dist-es/slider/internal/useRangeSliderThumb.js.map +1 -1
  282. package/dist-es/slider/internal/useSliderThumb.js.map +1 -1
  283. package/dist-es/slider/internal/utils.js.map +1 -1
  284. package/dist-es/stepper/Stepper.js +1 -1
  285. package/dist-es/stepper/Stepper.js.map +1 -1
  286. package/dist-es/stepper/internal/StepText.css.js +1 -1
  287. package/dist-es/stepper/internal/StepText.js +2 -0
  288. package/dist-es/stepper/internal/StepText.js.map +1 -1
  289. package/dist-es/table/Table.css.js +1 -1
  290. package/dist-es/tabs/Tabs.js +1 -1
  291. package/dist-es/tabs/Tabs.js.map +1 -1
  292. package/dist-es/tabs/internal/overflow/useOverflow.js.map +1 -1
  293. package/dist-es/tabs/internal/overflow/useRenderedTabWidth.js.map +1 -1
  294. package/dist-es/text/Code.js +1 -1
  295. package/dist-es/text/Code.js.map +1 -1
  296. package/dist-es/text/Editorial.js +25 -0
  297. package/dist-es/text/Editorial.js.map +1 -0
  298. package/dist-es/text/Eyebrow.js +10 -0
  299. package/dist-es/text/Eyebrow.js.map +1 -0
  300. package/dist-es/text/Text.css.js +1 -1
  301. package/dist-es/text/Text.js +6 -2
  302. package/dist-es/text/Text.js.map +1 -1
  303. package/dist-es/toggle-button/ToggleButton.css.js +1 -1
  304. package/dist-es/toggle-button/ToggleButton.js.map +1 -1
  305. package/dist-es/toolbar/ToolbarOverflow.js +8 -4
  306. package/dist-es/toolbar/ToolbarOverflow.js.map +1 -1
  307. package/dist-es/toolbar/toolbarUtils.js.map +1 -1
  308. package/dist-es/tooltip/useAriaAnnounce.js +4 -2
  309. package/dist-es/tooltip/useAriaAnnounce.js.map +1 -1
  310. package/dist-es/tooltip/useTooltip.js.map +1 -1
  311. package/dist-es/tree/TreeContext.js.map +1 -1
  312. package/dist-es/tree/TreeNodeTrigger.css.js +1 -1
  313. package/dist-es/tree/TreeNodeTrigger.js +0 -1
  314. package/dist-es/tree/TreeNodeTrigger.js.map +1 -1
  315. package/dist-es/utils/forkRef.js +32 -0
  316. package/dist-es/utils/forkRef.js.map +1 -0
  317. package/dist-es/utils/getRefFromChildren.js.map +1 -1
  318. package/dist-es/utils/marginMiddleware.js.map +1 -1
  319. package/dist-es/utils/setRef.js.map +1 -1
  320. package/dist-es/utils/useFloatingUI/useFloatingUI.js.map +1 -1
  321. package/dist-es/utils/useForkRef.js +3 -6
  322. package/dist-es/utils/useForkRef.js.map +1 -1
  323. package/dist-es/utils/useResizeObserver.js.map +1 -1
  324. package/dist-es/vertical-navigation/VerticalNavigationSubMenu.css.js +1 -1
  325. package/dist-types/checkbox/CheckboxIcon.d.ts +2 -1
  326. package/dist-types/collapsible/CollapsiblePanel.d.ts +8 -1
  327. package/dist-types/combo-box/ComboBox.d.ts +2 -2
  328. package/dist-types/drawer/Drawer.d.ts +6 -0
  329. package/dist-types/drawer/DrawerContext.d.ts +3 -0
  330. package/dist-types/drawer/DrawerHeader.d.ts +1 -1
  331. package/dist-types/drawer/internal/DrawerResizeGuide.d.ts +7 -0
  332. package/dist-types/drawer/internal/DrawerResizeHandle.d.ts +8 -0
  333. package/dist-types/drawer/internal/index.d.ts +3 -0
  334. package/dist-types/drawer/internal/useDrawerResize.d.ts +34 -0
  335. package/dist-types/dropdown/Dropdown.d.ts +2 -2
  336. package/dist-types/form-field/FormFieldHelperText.d.ts +1 -1
  337. package/dist-types/form-field/FormFieldLabel.d.ts +1 -1
  338. package/dist-types/form-field-context/FormFieldContext.d.ts +1 -1
  339. package/dist-types/index.d.ts +1 -0
  340. package/dist-types/list-box/ListBox.d.ts +2 -2
  341. package/dist-types/list-control/ListControlContext.d.ts +1 -1
  342. package/dist-types/list-control/ListControlOptionContext.d.ts +1 -1
  343. package/dist-types/menu/MenuAlignmentContext.d.ts +14 -0
  344. package/dist-types/menu/MenuGroup.d.ts +26 -4
  345. package/dist-types/menu/MenuGroupContext.d.ts +10 -0
  346. package/dist-types/menu/MenuItem.d.ts +4 -0
  347. package/dist-types/menu/MenuPanelContext.d.ts +2 -0
  348. package/dist-types/on-solid-button/OnSolidButton.d.ts +12 -0
  349. package/dist-types/on-solid-button/index.d.ts +1 -0
  350. package/dist-types/pill/PillCheckIcon.d.ts +2 -1
  351. package/dist-types/registerClassNameInjection.d.ts +0 -2
  352. package/dist-types/salt-provider/SaltProvider.d.ts +1 -1
  353. package/dist-types/side-panel/internal/useIsScrollable.d.ts +1 -1
  354. package/dist-types/skip-link/internal/useManageFocusOnTarget.d.ts +1 -1
  355. package/dist-types/slider/internal/SliderThumb.d.ts +2 -2
  356. package/dist-types/slider/internal/SliderTrack.d.ts +2 -2
  357. package/dist-types/slider/internal/useRangeSliderThumb.d.ts +1 -1
  358. package/dist-types/slider/internal/useSliderThumb.d.ts +1 -1
  359. package/dist-types/slider/internal/utils.d.ts +1 -1
  360. package/dist-types/tabs/internal/overflow/useOverflow.d.ts +2 -2
  361. package/dist-types/tabs/internal/overflow/useRenderedTabWidth.d.ts +1 -1
  362. package/dist-types/text/Editorial.d.ts +7 -0
  363. package/dist-types/text/Eyebrow.d.ts +2 -0
  364. package/dist-types/text/Text.d.ts +9 -2
  365. package/dist-types/text/index.d.ts +2 -0
  366. package/dist-types/toggle-button/ToggleButton.d.ts +1 -1
  367. package/dist-types/tooltip/useTooltip.d.ts +12 -26
  368. package/dist-types/tree/TreeContext.d.ts +1 -1
  369. package/dist-types/utils/forkRef.d.ts +11 -0
  370. package/dist-types/utils/inferElementType.d.ts +1 -2
  371. package/dist-types/utils/marginMiddleware.d.ts +1 -1
  372. package/dist-types/utils/setRef.d.ts +4 -0
  373. package/dist-types/utils/useFloatingUI/useFloatingUI.d.ts +1 -5
  374. package/dist-types/utils/useResizeObserver.d.ts +1 -1
  375. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"useAriaAnnounce.js","sources":["../src/tooltip/useAriaAnnounce.ts"],"sourcesContent":["import type { ElementProps, FloatingContext } from \"@floating-ui/react\";\nimport { type PointerEvent, useEffect, useRef } from \"react\";\nimport { useAriaAnnouncer } from \"../aria-announcer\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nfunction getDocument(floating: HTMLElement | null) {\n return floating?.ownerDocument ?? document;\n}\n\n// TODO: Check whether can be anything more restrictive than `any`\n// biome-ignore lint/suspicious/noExplicitAny: see comment above\nfunction getWindow(value: any) {\n return getDocument(value).defaultView ?? window;\n}\n\nfunction isElement(value: unknown): value is HTMLElement {\n return value ? value instanceof getWindow(value).Element : false;\n}\n\nfunction getDelay(\n value: Props[\"delay\"],\n prop: \"open\" | \"close\",\n pointerType?: PointerEvent[\"pointerType\"],\n) {\n if (pointerType && pointerType !== \"mouse\") {\n return 0;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n return value?.[prop];\n}\n\ntype Props = {\n delay?: number | Partial<{ open: number; close: number }>;\n};\n\nexport const useAriaAnnounce = (\n context: FloatingContext,\n { delay = 0 }: Props,\n): ElementProps => {\n const { open, dataRef, refs } = context;\n\n const pointerTypeRef = useRef<PointerEvent[\"pointerType\"]>();\n const timeoutRef = useRef<number>();\n const blockMouseMoveRef = useRef(true);\n const { announce } = useAriaAnnouncer();\n\n useIsomorphicLayoutEffect(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n }\n });\n\n useEffect(() => {\n const reference = refs.reference.current;\n function announceFloating() {\n const tooltipContent = refs.floating.current?.innerText;\n\n if (tooltipContent) {\n announce(tooltipContent);\n }\n }\n\n function onMouseEnter(event: MouseEvent) {\n clearTimeout(timeoutRef.current);\n\n if (open) {\n return;\n }\n\n blockMouseMoveRef.current = false;\n dataRef.current.openEvent = event;\n\n if (delay) {\n timeoutRef.current = window.setTimeout(\n () => {\n announceFloating();\n },\n getDelay(delay, \"open\", pointerTypeRef.current),\n );\n } else {\n announceFloating();\n }\n }\n\n if (isElement(reference)) {\n reference.addEventListener(\"mouseenter\", onMouseEnter);\n return () => {\n reference.removeEventListener(\"mouseenter\", onMouseEnter);\n };\n }\n }, [dataRef, delay, open, refs.reference, refs.floating, announce]);\n\n function setPointerRef(event: PointerEvent) {\n pointerTypeRef.current = event.pointerType;\n }\n\n return {\n reference: {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n },\n floating: {\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n },\n };\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAriaAnnounce.js","sources":["../src/tooltip/useAriaAnnounce.ts"],"sourcesContent":["import type { ElementProps, FloatingContext } from \"@floating-ui/react\";\nimport { type PointerEvent, useEffect, useRef } from \"react\";\nimport { useAriaAnnouncer } from \"../aria-announcer\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nfunction getDocument(floating: HTMLElement | null) {\n return floating?.ownerDocument ?? document;\n}\n\n// TODO: Check whether can be anything more restrictive than `any`\n// biome-ignore lint/suspicious/noExplicitAny: see comment above\nfunction getWindow(value: any) {\n return getDocument(value).defaultView ?? window;\n}\n\nfunction isElement(value: unknown): value is HTMLElement {\n return value ? value instanceof getWindow(value).Element : false;\n}\n\nfunction getDelay(\n value: Props[\"delay\"],\n prop: \"open\" | \"close\",\n pointerType?: PointerEvent[\"pointerType\"],\n) {\n if (pointerType && pointerType !== \"mouse\") {\n return 0;\n }\n\n if (typeof value === \"number\") {\n return value;\n }\n\n return value?.[prop];\n}\n\ntype Props = {\n delay?: number | Partial<{ open: number; close: number }>;\n};\n\nexport const useAriaAnnounce = (\n context: FloatingContext,\n { delay = 0 }: Props,\n): ElementProps => {\n const { open, dataRef, refs } = context;\n\n const pointerTypeRef = useRef<PointerEvent[\"pointerType\"] | undefined>(\n undefined,\n );\n const timeoutRef = useRef<number | undefined>(undefined);\n const blockMouseMoveRef = useRef(true);\n const { announce } = useAriaAnnouncer();\n\n useIsomorphicLayoutEffect(() => {\n if (!open) {\n pointerTypeRef.current = undefined;\n }\n });\n\n useEffect(() => {\n const reference = refs.reference.current;\n function announceFloating() {\n const tooltipContent = refs.floating.current?.innerText;\n\n if (tooltipContent) {\n announce(tooltipContent);\n }\n }\n\n function onMouseEnter(event: MouseEvent) {\n clearTimeout(timeoutRef.current);\n\n if (open) {\n return;\n }\n\n blockMouseMoveRef.current = false;\n dataRef.current.openEvent = event;\n\n if (delay) {\n timeoutRef.current = window.setTimeout(\n () => {\n announceFloating();\n },\n getDelay(delay, \"open\", pointerTypeRef.current),\n );\n } else {\n announceFloating();\n }\n }\n\n if (isElement(reference)) {\n reference.addEventListener(\"mouseenter\", onMouseEnter);\n return () => {\n reference.removeEventListener(\"mouseenter\", onMouseEnter);\n };\n }\n }, [dataRef, delay, open, refs.reference, refs.floating, announce]);\n\n function setPointerRef(event: PointerEvent) {\n pointerTypeRef.current = event.pointerType;\n }\n\n return {\n reference: {\n onPointerDown: setPointerRef,\n onPointerEnter: setPointerRef,\n },\n floating: {\n onMouseEnter() {\n clearTimeout(timeoutRef.current);\n },\n },\n };\n};\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useTooltip.js","sources":["../src/tooltip/useTooltip.ts"],"sourcesContent":["import {\n arrow,\n flip,\n limitShift,\n offset,\n safePolygon,\n shift,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { type HTMLProps, useRef } from \"react\";\nimport {\n type UseFloatingUIProps,\n useControlled,\n useFloatingUI,\n} from \"../utils\";\nimport { useAriaAnnounce } from \"./useAriaAnnounce\";\n\nexport interface UseTooltipProps\n extends Partial<\n Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\" | \"placement\">\n > {\n /**\n * When `true`, the tooltip will be disabled.\n */\n disabled?: boolean;\n /**\n * Do not respond to focus events.\n */\n disableFocusListener?: boolean;\n /**\n * Do not respond to hover events.\n */\n disableHoverListener?: boolean;\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n */\n enterDelay?: number;\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n */\n leaveDelay?: number;\n}\n\nexport function useTooltip(props?: UseTooltipProps) {\n const {\n enterDelay,\n disabled,\n leaveDelay,\n open: openProp,\n onOpenChange,\n placement: placementProp,\n disableHoverListener,\n disableFocusListener,\n } = props ?? {};\n\n const arrowRef = useRef<SVGSVGElement | null>(null);\n\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: false,\n name: \"Tooltip\",\n state: \"open\",\n });\n const handleOpenChange = (open: boolean) => {\n setOpen(open);\n onOpenChange?.(open);\n };\n\n const { floating, reference, x, y, strategy, placement, context, elements } =\n useFloatingUI({\n open: disabled ? false : open,\n onOpenChange: handleOpenChange,\n placement: placementProp,\n middleware: [\n offset(8),\n shift({ limiter: limitShift() }),\n flip({\n fallbackAxisSideDirection: \"end\",\n fallbackStrategy: \"initialPlacement\",\n }),\n arrow({ element: arrowRef }),\n ],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n enabled: !(disableHoverListener || disabled),\n handleClose: safePolygon(),\n }),\n useFocus(context, { enabled: !(disableFocusListener || disabled) }),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context, { enabled: !disabled }),\n useAriaAnnounce(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n }),\n ]);\n\n const arrowProps = {\n ref: arrowRef,\n context,\n };\n\n const getTooltipProps = (): HTMLProps<HTMLDivElement> => {\n // tabIndex causes axe errors because it is set to \"-1\".\n const { tabIndex: _tabIndex, ...tooltipProps } = getFloatingProps({\n // @ts-expect-error - `data-*` props need extra typing when not used on a DOM element.\n \"data-placement\": placement,\n ref: floating,\n });\n\n return tooltipProps;\n };\n\n const getTriggerProps = () =>\n getReferenceProps({\n ref: reference,\n });\n\n const getTooltipPosition = () => ({\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.offsetWidth,\n height: elements.floating?.offsetHeight,\n });\n\n return {\n arrowProps,\n open,\n floating,\n reference,\n getTooltipProps,\n getTriggerProps,\n getTooltipPosition,\n };\n}\n"],"names":["open"],"mappings":"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"}
1
+ {"version":3,"file":"useTooltip.js","sources":["../src/tooltip/useTooltip.ts"],"sourcesContent":["import {\n arrow,\n type FloatingContext,\n flip,\n limitShift,\n offset,\n type Strategy,\n safePolygon,\n shift,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n} from \"@floating-ui/react\";\nimport { type HTMLProps, type MutableRefObject, useRef } from \"react\";\nimport {\n type UseFloatingUIProps,\n type UseFloatingUIReturn,\n useControlled,\n useFloatingUI,\n} from \"../utils\";\nimport { useAriaAnnounce } from \"./useAriaAnnounce\";\n\nexport interface UseTooltipProps\n extends Partial<\n Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\" | \"placement\">\n > {\n /**\n * When `true`, the tooltip will be disabled.\n */\n disabled?: boolean;\n /**\n * Do not respond to focus events.\n */\n disableFocusListener?: boolean;\n /**\n * Do not respond to hover events.\n */\n disableHoverListener?: boolean;\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n */\n enterDelay?: number;\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n */\n leaveDelay?: number;\n}\n\ninterface UseTooltipReturn {\n arrowProps: {\n ref: MutableRefObject<SVGSVGElement | null>;\n context: FloatingContext;\n };\n open: boolean;\n floating: UseFloatingUIReturn[\"floating\"];\n reference: UseFloatingUIReturn[\"reference\"];\n getTooltipProps: () => HTMLProps<HTMLDivElement>;\n getTriggerProps: () => Record<string, unknown>;\n getTooltipPosition: () => {\n top: number;\n left: number;\n position: Strategy;\n width: number | undefined;\n height: number | undefined;\n };\n}\n\nexport function useTooltip(props?: UseTooltipProps): UseTooltipReturn {\n const {\n enterDelay,\n disabled,\n leaveDelay,\n open: openProp,\n onOpenChange,\n placement: placementProp,\n disableHoverListener,\n disableFocusListener,\n } = props ?? {};\n\n const arrowRef = useRef<SVGSVGElement | null>(null);\n\n const [open, setOpen] = useControlled({\n controlled: openProp,\n default: false,\n name: \"Tooltip\",\n state: \"open\",\n });\n const handleOpenChange = (open: boolean) => {\n setOpen(open);\n onOpenChange?.(open);\n };\n\n const { floating, reference, x, y, strategy, placement, context, elements } =\n useFloatingUI({\n open: disabled ? false : open,\n onOpenChange: handleOpenChange,\n placement: placementProp,\n middleware: [\n offset(8),\n shift({ limiter: limitShift() }),\n flip({\n fallbackAxisSideDirection: \"end\",\n fallbackStrategy: \"initialPlacement\",\n }),\n arrow({ element: arrowRef }),\n ],\n });\n\n const { getReferenceProps, getFloatingProps } = useInteractions([\n useHover(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n enabled: !(disableHoverListener || disabled),\n handleClose: safePolygon(),\n }),\n useFocus(context, { enabled: !(disableFocusListener || disabled) }),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context, { enabled: !disabled }),\n useAriaAnnounce(context, {\n delay: {\n open: enterDelay,\n close: leaveDelay,\n },\n }),\n ]);\n\n const arrowProps = {\n ref: arrowRef,\n context,\n };\n\n const getTooltipProps = (): HTMLProps<HTMLDivElement> => {\n // tabIndex causes axe errors because it is set to \"-1\".\n const { tabIndex: _tabIndex, ...tooltipProps } = getFloatingProps({\n // @ts-expect-error - `data-*` props need extra typing when not used on a DOM element.\n \"data-placement\": placement,\n ref: floating,\n });\n\n return tooltipProps;\n };\n\n const getTriggerProps = () =>\n getReferenceProps({\n ref: reference,\n });\n\n const getTooltipPosition = () => ({\n top: y ?? 0,\n left: x ?? 0,\n position: strategy,\n width: elements.floating?.offsetWidth,\n height: elements.floating?.offsetHeight,\n });\n\n return {\n arrowProps,\n open,\n floating,\n reference,\n getTooltipProps,\n getTriggerProps,\n getTooltipPosition,\n };\n}\n"],"names":["open"],"mappings":";;;;;;;;;;;AAuEO,SAAS,WAAW,KAAA,EAA2C;AACpE,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA,EAAM,QAAA;AAAA,IACN,YAAA;AAAA,IACA,SAAA,EAAW,aAAA;AAAA,IACX,oBAAA;AAAA,IACA;AAAA,GACF,GAAI,SAAS,EAAC;AAEd,EAAA,MAAM,QAAA,GAAW,OAA6B,IAAI,CAAA;AAElD,EAAA,MAAM,CAAC,IAAA,EAAM,OAAO,CAAA,GAAI,aAAA,CAAc;AAAA,IACpC,UAAA,EAAY,QAAA;AAAA,IACZ,OAAA,EAAS,KAAA;AAAA,IACT,IAAA,EAAM,SAAA;AAAA,IACN,KAAA,EAAO;AAAA,GACR,CAAA;AACD,EAAA,MAAM,gBAAA,GAAmB,CAACA,KAAAA,KAAkB;AAC1C,IAAA,OAAA,CAAQA,KAAI,CAAA;AACZ,IAAA,YAAA,IAAA,IAAA,GAAA,MAAA,GAAA,YAAA,CAAeA,KAAAA,CAAAA;AAAA,EACjB,CAAA;AAEA,EAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,CAAA,EAAG,CAAA,EAAG,UAAU,SAAA,EAAW,OAAA,EAAS,QAAA,EAAS,GACxE,aAAA,CAAc;AAAA,IACZ,IAAA,EAAM,WAAW,KAAA,GAAQ,IAAA;AAAA,IACzB,YAAA,EAAc,gBAAA;AAAA,IACd,SAAA,EAAW,aAAA;AAAA,IACX,UAAA,EAAY;AAAA,MACV,OAAO,CAAC,CAAA;AAAA,MACR,KAAA,CAAM,EAAE,OAAA,EAAS,UAAA,IAAc,CAAA;AAAA,MAC/B,IAAA,CAAK;AAAA,QACH,yBAAA,EAA2B,KAAA;AAAA,QAC3B,gBAAA,EAAkB;AAAA,OACnB,CAAA;AAAA,MACD,KAAA,CAAM,EAAE,OAAA,EAAS,QAAA,EAAU;AAAA;AAC7B,GACD,CAAA;AAEH,EAAA,MAAM,EAAE,iBAAA,EAAmB,gBAAA,EAAiB,GAAI,eAAA,CAAgB;AAAA,IAC9D,SAAS,OAAA,EAAS;AAAA,MAChB,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO;AAAA,OACT;AAAA,MACA,OAAA,EAAS,EAAE,oBAAA,IAAwB,QAAA,CAAA;AAAA,MACnC,aAAa,WAAA;AAAY,KAC1B,CAAA;AAAA,IACD,SAAS,OAAA,EAAS,EAAE,SAAS,EAAE,oBAAA,IAAwB,WAAW,CAAA;AAAA,IAClE,OAAA,CAAQ,OAAA,EAAS,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA,IACpC,WAAW,OAAA,EAAS,EAAE,OAAA,EAAS,CAAC,UAAU,CAAA;AAAA,IAC1C,gBAAgB,OAAA,EAAS;AAAA,MACvB,KAAA,EAAO;AAAA,QACL,IAAA,EAAM,UAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACD;AAAA,GACF,CAAA;AAED,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,GAAA,EAAK,QAAA;AAAA,IACL;AAAA,GACF;AAEA,EAAA,MAAM,kBAAkB,MAAiC;AAEvD,IAAA,MAAM,EAAE,QAAA,EAAU,SAAA,EAAW,GAAG,YAAA,KAAiB,gBAAA,CAAiB;AAAA;AAAA,MAEhE,gBAAA,EAAkB,SAAA;AAAA,MAClB,GAAA,EAAK;AAAA,KACN,CAAA;AAED,IAAA,OAAO,YAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,MACtB,iBAAA,CAAkB;AAAA,IAChB,GAAA,EAAK;AAAA,GACN,CAAA;AAEH,EAAA,MAAM,qBAAqB,MAAG;AAzJhC,IAAA,IAAA,EAAA,EAAA,EAAA;AAyJoC,IAAA,OAAA;AAAA,MAChC,KAAK,CAAA,IAAK,CAAA;AAAA,MACV,MAAM,CAAA,IAAK,CAAA;AAAA,MACX,QAAA,EAAU,QAAA;AAAA,MACV,KAAA,EAAA,CAAO,EAAA,GAAA,QAAA,CAAS,QAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB,WAAA;AAAA,MAC1B,MAAA,EAAA,CAAQ,EAAA,GAAA,QAAA,CAAS,QAAA,KAAT,IAAA,GAAA,MAAA,GAAA,EAAA,CAAmB;AAAA,KAC7B;AAAA,EAAA,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,UAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"TreeContext.js","sources":["../src/tree/TreeContext.ts"],"sourcesContent":["import {\n type Dispatch,\n type ReactNode,\n type Ref,\n type RefObject,\n type SetStateAction,\n type SyntheticEvent,\n useContext,\n} from \"react\";\nimport { createContext } from \"../utils\";\nimport type { TreeModel, TreeNodeMeta } from \"./useTree\";\n\nexport interface TreeContextValue {\n expandedState: Set<string>;\n /** Toggle a node expansion state */\n toggleExpanded: (event: SyntheticEvent, value: string) => void;\n\n /** Selected node values */\n selectedState: string[];\n /** Selected node values as Set for O(1) lookups */\n selectedSet: Set<string>;\n /** Set selected state directly */\n setSelectedState: Dispatch<SetStateAction<string[]>>;\n /** Set selected state without expanding selection through hidden descendants */\n setVisibleSelectionState: (selected: string[]) => void;\n /** Select node */\n select: (event: SyntheticEvent, value: string) => void;\n\n /** Whether multiselect mode with checkboxes is enabled */\n multiselect: boolean;\n /** Disabled state of the tree */\n disabled: boolean;\n /** Set of disabled node IDs */\n disabledIdsSet: Set<string>;\n\n /** Tree model for traversal */\n treeModel: TreeModel;\n /** Get node metadata from tree model */\n getNodeMeta: (value: string) => TreeNodeMeta | undefined;\n /** Get parent of a node */\n getParent: (value: string) => string | undefined;\n /** Get children of a node */\n getChildren: (value: string) => string[];\n /** Get all descendants of a node */\n getDescendants: (value: string) => string[];\n /** Get all ancestors of a node */\n getAncestors: (value: string) => string[];\n /** Memoized visible (navigable) nodes in tree order */\n visibleNodes: string[];\n /** Memoized tabbable node ID for roving tabindex (computed once at tree level) */\n tabbableNodeId: string | undefined;\n /** Register a DOM element for focus management */\n registerElement: (value: string, element: HTMLElement) => () => void;\n /** Get DOM element for a node (if mounted) */\n getElement: (value: string) => HTMLElement | undefined;\n /** Active node value */\n activeNode: string | undefined;\n /** Set the active node */\n setActiveNode: Dispatch<SetStateAction<string | undefined>>;\n\n /** Set of indeterminate (partially selected) node IDs */\n indeterminateState: Set<string>;\n}\n\nconst TreeContext = createContext<TreeContextValue | undefined>(\n \"Tree Context\",\n undefined,\n);\n\nexport const TreeProvider = TreeContext.Provider;\n\nexport function useTreeContext(): TreeContextValue {\n const context = useContext(TreeContext);\n if (!context) {\n throw new Error(\"useTreeContext must be used within a TreeProvider\");\n }\n return context;\n}\n\nexport interface TreeNodeContextValue {\n /** Current node value */\n value: string;\n /** Current depth level */\n level: number;\n /** Whether node has children */\n hasChildren: boolean;\n /** Whether node is expanded */\n expanded: boolean;\n /** Whether node is disabled */\n disabled: boolean;\n /** Node id for the li element */\n id: string;\n /** Ref for the li element rendered by TreeNodeTrigger */\n nodeRef: RefObject<HTMLLIElement>;\n /** Callback ref that connects TreeNode's forwarded ref to the li element */\n setNodeRef: Ref<HTMLLIElement> | null;\n /** Whether node is selected */\n selected: boolean;\n /** Whether node is in indeterminate state (partially selected children) */\n indeterminate: boolean;\n /** Child TreeNode elements to be rendered inside the group */\n nodeChildren: ReactNode;\n}\n\nconst TreeNodeContext = createContext<TreeNodeContextValue | undefined>(\n \"TreeNodeContext\",\n undefined,\n);\n\nexport const TreeNodeProvider = TreeNodeContext.Provider;\n\nexport function useTreeNodeContext(): TreeNodeContextValue | undefined {\n return useContext(TreeNodeContext);\n}\n"],"names":[],"mappings":";;;;;;;;;AAgEA,MAAM,WAAA,GAAc,aAAA;AAAA,EAClB,cAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,eAAe,WAAA,CAAY;AAEjC,SAAS,cAAA,GAAmC;AACjD,EAAA,MAAM,OAAA,GAAU,WAAW,WAAW,CAAA;AACtC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,OAAA;AACT;AA2BA,MAAM,eAAA,GAAkB,aAAA;AAAA,EACtB,iBAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,mBAAmB,eAAA,CAAgB;AAEzC,SAAS,kBAAA,GAAuD;AACrE,EAAA,OAAO,WAAW,eAAe,CAAA;AACnC;;;;"}
1
+ {"version":3,"file":"TreeContext.js","sources":["../src/tree/TreeContext.ts"],"sourcesContent":["import {\n type Dispatch,\n type ReactNode,\n type Ref,\n type RefObject,\n type SetStateAction,\n type SyntheticEvent,\n useContext,\n} from \"react\";\nimport { createContext } from \"../utils\";\nimport type { TreeModel, TreeNodeMeta } from \"./useTree\";\n\nexport interface TreeContextValue {\n expandedState: Set<string>;\n /** Toggle a node expansion state */\n toggleExpanded: (event: SyntheticEvent, value: string) => void;\n\n /** Selected node values */\n selectedState: string[];\n /** Selected node values as Set for O(1) lookups */\n selectedSet: Set<string>;\n /** Set selected state directly */\n setSelectedState: Dispatch<SetStateAction<string[]>>;\n /** Set selected state without expanding selection through hidden descendants */\n setVisibleSelectionState: (selected: string[]) => void;\n /** Select node */\n select: (event: SyntheticEvent, value: string) => void;\n\n /** Whether multiselect mode with checkboxes is enabled */\n multiselect: boolean;\n /** Disabled state of the tree */\n disabled: boolean;\n /** Set of disabled node IDs */\n disabledIdsSet: Set<string>;\n\n /** Tree model for traversal */\n treeModel: TreeModel;\n /** Get node metadata from tree model */\n getNodeMeta: (value: string) => TreeNodeMeta | undefined;\n /** Get parent of a node */\n getParent: (value: string) => string | undefined;\n /** Get children of a node */\n getChildren: (value: string) => string[];\n /** Get all descendants of a node */\n getDescendants: (value: string) => string[];\n /** Get all ancestors of a node */\n getAncestors: (value: string) => string[];\n /** Memoized visible (navigable) nodes in tree order */\n visibleNodes: string[];\n /** Memoized tabbable node ID for roving tabindex (computed once at tree level) */\n tabbableNodeId: string | undefined;\n /** Register a DOM element for focus management */\n registerElement: (value: string, element: HTMLElement) => () => void;\n /** Get DOM element for a node (if mounted) */\n getElement: (value: string) => HTMLElement | undefined;\n /** Active node value */\n activeNode: string | undefined;\n /** Set the active node */\n setActiveNode: Dispatch<SetStateAction<string | undefined>>;\n\n /** Set of indeterminate (partially selected) node IDs */\n indeterminateState: Set<string>;\n}\n\nconst TreeContext = createContext<TreeContextValue | undefined>(\n \"Tree Context\",\n undefined,\n);\n\nexport const TreeProvider = TreeContext.Provider;\n\nexport function useTreeContext(): TreeContextValue {\n const context = useContext(TreeContext);\n if (!context) {\n throw new Error(\"useTreeContext must be used within a TreeProvider\");\n }\n return context;\n}\n\nexport interface TreeNodeContextValue {\n /** Current node value */\n value: string;\n /** Current depth level */\n level: number;\n /** Whether node has children */\n hasChildren: boolean;\n /** Whether node is expanded */\n expanded: boolean;\n /** Whether node is disabled */\n disabled: boolean;\n /** Node id for the li element */\n id: string;\n /** Ref for the li element rendered by TreeNodeTrigger */\n nodeRef: RefObject<HTMLLIElement | null>;\n /** Callback ref that connects TreeNode's forwarded ref to the li element */\n setNodeRef: Ref<HTMLLIElement> | null;\n /** Whether node is selected */\n selected: boolean;\n /** Whether node is in indeterminate state (partially selected children) */\n indeterminate: boolean;\n /** Child TreeNode elements to be rendered inside the group */\n nodeChildren: ReactNode;\n}\n\nconst TreeNodeContext = createContext<TreeNodeContextValue | undefined>(\n \"TreeNodeContext\",\n undefined,\n);\n\nexport const TreeNodeProvider = TreeNodeContext.Provider;\n\nexport function useTreeNodeContext(): TreeNodeContextValue | undefined {\n return useContext(TreeNodeContext);\n}\n"],"names":[],"mappings":";;;;;;;;;AAgEA,MAAM,WAAA,GAAc,aAAA;AAAA,EAClB,cAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,eAAe,WAAA,CAAY;AAEjC,SAAS,cAAA,GAAmC;AACjD,EAAA,MAAM,OAAA,GAAU,WAAW,WAAW,CAAA;AACtC,EAAA,IAAI,CAAC,OAAA,EAAS;AACZ,IAAA,MAAM,IAAI,MAAM,mDAAmD,CAAA;AAAA,EACrE;AACA,EAAA,OAAO,OAAA;AACT;AA2BA,MAAM,eAAA,GAAkB,aAAA;AAAA,EACtB,iBAAA;AAAA,EACA;AACF,CAAA;AAEO,MAAM,mBAAmB,eAAA,CAAgB;AAEzC,SAAS,kBAAA,GAAuD;AACrE,EAAA,OAAO,WAAW,eAAe,CAAA;AACnC;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = ".saltTreeNodeTrigger {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--salt-spacing-100);\n width: 100%;\n\n padding-top: calc(var(--salt-spacing-75) + var(--salt-spacing-50));\n padding-bottom: calc(var(--salt-spacing-75) + var(--salt-spacing-50));\n padding-right: var(--salt-spacing-100);\n /* Keep a fixed spacing-100 outer left padding for all nodes, then add one\n indent step per additional level. Each indent step = (icon column width +\n inter-item gap).\n Level-1 nodes get no extra indent; level-2 gets 1 step, level-3 gets 2, etc.\n */\n --saltTreeNodeTrigger-iconSize: max(var(--salt-size-icon), 12px);\n --saltTreeNodeTrigger-indentStep: calc(var(--saltTreeNodeTrigger-iconSize) + var(--salt-spacing-100));\n --saltTreeNodeTrigger-iconOffsetY: calc((var(--salt-text-lineHeight) - var(--saltTreeNodeTrigger-iconSize)) / 2);\n --saltTreeNodeTrigger-checkboxOffsetY: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2);\n padding-left: calc(var(--salt-spacing-100) + (var(--saltTreeNodeTrigger-indentStep) * (var(--saltTreeNode-level, 1) - 1)));\n background: var(--salt-selectable-background);\n color: var(--salt-content-primary-foreground);\n}\n\n/* Account for selectable and icon token size differences */\n.saltTree-multiselect .saltTreeNodeTrigger {\n --saltTreeNodeTrigger-indentStep: calc(((var(--saltTreeNodeTrigger-iconSize) + var(--salt-size-selectable)) / 2) + var(--salt-spacing-100));\n}\n\n.saltTreeNodeTrigger:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltTreeNode:focus-visible > .saltTreeNodeTrigger,\n.saltTreeNode-focusVisible > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltTreeNode-selected > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n box-shadow:\n 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected),\n 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);\n position: relative;\n z-index: var(--salt-zIndex-default);\n}\n\n.saltTreeNode-selected:focus-visible > .saltTreeNodeTrigger,\n.saltTreeNode-selected.saltTreeNode-focusVisible > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n}\n\n.saltTreeNode-disabled > .saltTreeNodeTrigger,\n.saltTreeNode-disabled:hover > .saltTreeNodeTrigger {\n opacity: 0.4;\n cursor: var(--salt-cursor-disabled);\n\n background: var(--salt-selectable-background);\n color: var(--salt-content-primary-foreground);\n}\n\n.saltTreeNodeTrigger > .saltTreeNode-checkbox {\n margin-top: var(--saltTreeNodeTrigger-checkboxOffsetY);\n margin-bottom: 0;\n}\n\n.saltTreeNodeTrigger > .saltTreeNodeExpansionIcon,\n.saltTreeNodeTrigger > .saltTreeNode-icon {\n margin-top: var(--saltTreeNodeTrigger-iconOffsetY);\n}\n\n.saltTreeNodeTrigger > .saltIcon {\n margin-top: var(--saltTreeNodeTrigger-iconOffsetY);\n flex-shrink: 0;\n color: var(--salt-content-primary-foreground);\n}\n";
1
+ var css_248z = ".saltTreeNodeTrigger {\n box-sizing: border-box;\n display: flex;\n align-items: flex-start;\n gap: var(--salt-spacing-100);\n width: 100%;\n\n padding-top: calc(var(--salt-spacing-75) + var(--salt-spacing-50));\n padding-bottom: calc(var(--salt-spacing-75) + var(--salt-spacing-50));\n padding-right: var(--salt-spacing-100);\n /* Keep a fixed spacing-100 outer left padding for all nodes, then add one\n indent step per additional level. Each indent step = (icon column width +\n inter-item gap).\n Level-1 nodes get no extra indent; level-2 gets 1 step, level-3 gets 2, etc.\n */\n --saltTreeNodeTrigger-iconSize: max(var(--salt-size-icon), 12px);\n --saltTreeNodeTrigger-indentStep: calc(var(--saltTreeNodeTrigger-iconSize) + var(--salt-spacing-100));\n --saltTreeNodeTrigger-iconOffsetY: calc((var(--salt-text-lineHeight) - var(--saltTreeNodeTrigger-iconSize)) / 2);\n --saltTreeNodeTrigger-checkboxOffsetY: calc((var(--salt-text-lineHeight) - var(--salt-size-selectable)) / 2);\n padding-left: calc(var(--salt-spacing-100) + (var(--saltTreeNodeTrigger-indentStep) * (var(--saltTreeNode-level, 1) - 1)));\n background: var(--salt-selectable-background);\n color: var(--salt-content-primary-foreground);\n}\n\n/* Account for selectable and icon token size differences */\n.saltTree-multiselect .saltTreeNodeTrigger {\n --saltTreeNodeTrigger-indentStep: calc(((var(--saltTreeNodeTrigger-iconSize) + var(--salt-size-selectable)) / 2) + var(--salt-spacing-100));\n}\n\n.saltTreeNodeTrigger:hover {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltTreeNode:focus-visible > .saltTreeNodeTrigger,\n.saltTreeNode-focusVisible > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-hover);\n}\n\n.saltTreeNode-selected > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n box-shadow:\n 0 calc(var(--salt-size-fixed-100) * -1) 0 0 var(--salt-selectable-borderColor-selected),\n 0 var(--salt-size-fixed-100) 0 0 var(--salt-selectable-borderColor-selected);\n position: relative;\n z-index: var(--salt-zIndex-default);\n}\n\n.saltTreeNode-selected:focus-visible > .saltTreeNodeTrigger,\n.saltTreeNode-selected.saltTreeNode-focusVisible > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n}\n\n.saltTreeNode-disabled > .saltTreeNodeTrigger,\n.saltTreeNode-disabled:hover > .saltTreeNodeTrigger {\n opacity: 0.4;\n cursor: var(--salt-cursor-disabled);\n\n background: var(--salt-selectable-background);\n color: var(--salt-content-primary-foreground);\n}\n\n.saltTreeNode-selected.saltTreeNode-disabled > .saltTreeNodeTrigger {\n background: var(--salt-selectable-background-selected);\n}\n\n.saltTreeNodeTrigger > .saltTreeNode-checkbox {\n margin-top: var(--saltTreeNodeTrigger-checkboxOffsetY);\n margin-bottom: 0;\n}\n\n.saltTreeNodeTrigger > .saltTreeNodeExpansionIcon,\n.saltTreeNodeTrigger > .saltTreeNode-icon {\n margin-top: var(--saltTreeNodeTrigger-iconOffsetY);\n}\n\n.saltTreeNodeTrigger > .saltIcon {\n margin-top: var(--saltTreeNodeTrigger-iconOffsetY);\n flex-shrink: 0;\n color: var(--salt-content-primary-foreground);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=TreeNodeTrigger.css.js.map
@@ -143,7 +143,6 @@ const TreeNodeTrigger = forwardRef(function TreeNodeTrigger2(props, ref) {
143
143
  {
144
144
  checked: selected,
145
145
  indeterminate,
146
- disabled,
147
146
  className: withNodeBaseName("checkbox")
148
147
  }
149
148
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNodeTrigger.js","sources":["../src/tree/TreeNodeTrigger.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type FocusEvent,\n forwardRef,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { CheckboxIcon } from \"../checkbox\";\nimport { makePrefixer, useForkRef } from \"../utils\";\nimport { useTreeContext, useTreeNodeContext } from \"./TreeContext\";\nimport { TreeNodeExpansionIcon } from \"./TreeNodeExpansionIcon\";\nimport treeNodeTriggerCss from \"./TreeNodeTrigger.css\";\n\nexport interface TreeNodeTriggerProps extends ComponentPropsWithoutRef<\"li\"> {}\n\nconst withBaseName = makePrefixer(\"saltTreeNodeTrigger\");\nconst withNodeBaseName = makePrefixer(\"saltTreeNode\");\n\n/**\n * The forwarded ref points to the inner trigger content span (for tooltip positioning),\n * while the <li> handles focus, ARIA, and event handling.\n */\nexport const TreeNodeTrigger = forwardRef<\n HTMLSpanElement,\n TreeNodeTriggerProps\n>(function TreeNodeTrigger(props, ref) {\n const {\n className,\n children,\n style,\n onClick,\n onFocus,\n onBlur,\n onMouseDown,\n onKeyDown,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tree-node-trigger\",\n css: treeNodeTriggerCss,\n window: targetWindow,\n });\n\n const nodeContext = useTreeNodeContext();\n if (!nodeContext) {\n throw new Error(\"TreeNodeTrigger must be used within a TreeNode\");\n }\n\n const {\n value,\n level,\n hasChildren,\n expanded,\n disabled,\n id,\n nodeRef,\n setNodeRef,\n selected,\n indeterminate,\n nodeChildren,\n } = nodeContext;\n\n const {\n multiselect,\n activeNode,\n setActiveNode,\n select,\n tabbableNodeId,\n registerElement,\n } = useTreeContext();\n\n const triggerContentRef = useForkRef(useRef<HTMLSpanElement>(null), ref);\n const wasMouseDownRef = useRef(false);\n const [focusVisible, setFocusVisible] = useState(false);\n\n const isActive = activeNode === value;\n\n const isTabbable = tabbableNodeId === value;\n\n useEffect(() => {\n if (nodeRef.current) {\n return registerElement(value, nodeRef.current);\n }\n }, [value, registerElement, nodeRef]);\n\n const handleClick = (event: MouseEvent<HTMLLIElement>) => {\n onClick?.(event);\n if (disabled) return;\n const target = event.target as HTMLElement;\n if (target.closest(\".saltTreeNodeExpansionIcon\")) return;\n const nestedTreeItem = target.closest('[role=\"treeitem\"]');\n if (nestedTreeItem && nestedTreeItem !== nodeRef.current) {\n return;\n }\n setActiveNode(value);\n select(event, value);\n };\n\n const handleFocus = (event: FocusEvent<HTMLLIElement>) => {\n if (event.target !== event.currentTarget) return;\n onFocus?.(event);\n if (!wasMouseDownRef.current) {\n setFocusVisible(true);\n }\n wasMouseDownRef.current = false;\n setActiveNode(value);\n };\n\n const handleBlur = (event: FocusEvent<HTMLLIElement>) => {\n if (event.target !== event.currentTarget) return;\n onBlur?.(event);\n setFocusVisible(false);\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLLIElement>) => {\n wasMouseDownRef.current = true;\n onMouseDown?.(event);\n };\n\n return (\n <li\n ref={setNodeRef}\n id={id}\n role=\"treeitem\"\n aria-expanded={hasChildren ? expanded : undefined}\n aria-selected={multiselect ? undefined : selected}\n aria-checked={\n multiselect ? (indeterminate ? \"mixed\" : selected) : undefined\n }\n aria-level={level}\n aria-disabled={disabled || undefined}\n tabIndex={isTabbable ? 0 : -1}\n className={clsx(\n withNodeBaseName(),\n {\n [withNodeBaseName(\"expanded\")]: expanded,\n [withNodeBaseName(\"selected\")]: selected && !multiselect,\n [withNodeBaseName(\"active\")]: isActive,\n [withNodeBaseName(\"disabled\")]: disabled,\n [withNodeBaseName(\"hasChildren\")]: hasChildren,\n [withNodeBaseName(\"focusVisible\")]: focusVisible,\n },\n className,\n )}\n style={\n {\n \"--saltTreeNode-level\": level,\n ...style,\n } as CSSProperties\n }\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseDown={handleMouseDown}\n onKeyDown={onKeyDown}\n {...rest}\n >\n <span ref={triggerContentRef} className={withBaseName()}>\n <TreeNodeExpansionIcon />\n {multiselect && (\n <CheckboxIcon\n checked={selected}\n indeterminate={indeterminate}\n disabled={disabled}\n className={withNodeBaseName(\"checkbox\")}\n />\n )}\n {children}\n </span>\n\n {hasChildren && expanded && (\n <ul role=\"group\" className={withNodeBaseName(\"group\")}>\n {nodeChildren}\n </ul>\n )}\n </li>\n );\n});\n"],"names":["TreeNodeTrigger","treeNodeTriggerCss"],"mappings":"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"}
1
+ {"version":3,"file":"TreeNodeTrigger.js","sources":["../src/tree/TreeNodeTrigger.tsx"],"sourcesContent":["import { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type CSSProperties,\n type FocusEvent,\n forwardRef,\n type MouseEvent,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { CheckboxIcon } from \"../checkbox\";\nimport { makePrefixer, useForkRef } from \"../utils\";\nimport { useTreeContext, useTreeNodeContext } from \"./TreeContext\";\nimport { TreeNodeExpansionIcon } from \"./TreeNodeExpansionIcon\";\nimport treeNodeTriggerCss from \"./TreeNodeTrigger.css\";\n\nexport interface TreeNodeTriggerProps extends ComponentPropsWithoutRef<\"li\"> {}\n\nconst withBaseName = makePrefixer(\"saltTreeNodeTrigger\");\nconst withNodeBaseName = makePrefixer(\"saltTreeNode\");\n\n/**\n * The forwarded ref points to the inner trigger content span (for tooltip positioning),\n * while the <li> handles focus, ARIA, and event handling.\n */\nexport const TreeNodeTrigger = forwardRef<\n HTMLSpanElement,\n TreeNodeTriggerProps\n>(function TreeNodeTrigger(props, ref) {\n const {\n className,\n children,\n style,\n onClick,\n onFocus,\n onBlur,\n onMouseDown,\n onKeyDown,\n ...rest\n } = props;\n\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tree-node-trigger\",\n css: treeNodeTriggerCss,\n window: targetWindow,\n });\n\n const nodeContext = useTreeNodeContext();\n if (!nodeContext) {\n throw new Error(\"TreeNodeTrigger must be used within a TreeNode\");\n }\n\n const {\n value,\n level,\n hasChildren,\n expanded,\n disabled,\n id,\n nodeRef,\n setNodeRef,\n selected,\n indeterminate,\n nodeChildren,\n } = nodeContext;\n\n const {\n multiselect,\n activeNode,\n setActiveNode,\n select,\n tabbableNodeId,\n registerElement,\n } = useTreeContext();\n\n const triggerContentRef = useForkRef(useRef<HTMLSpanElement>(null), ref);\n const wasMouseDownRef = useRef(false);\n const [focusVisible, setFocusVisible] = useState(false);\n\n const isActive = activeNode === value;\n\n const isTabbable = tabbableNodeId === value;\n\n useEffect(() => {\n if (nodeRef.current) {\n return registerElement(value, nodeRef.current);\n }\n }, [value, registerElement, nodeRef]);\n\n const handleClick = (event: MouseEvent<HTMLLIElement>) => {\n onClick?.(event);\n if (disabled) return;\n const target = event.target as HTMLElement;\n if (target.closest(\".saltTreeNodeExpansionIcon\")) return;\n const nestedTreeItem = target.closest('[role=\"treeitem\"]');\n if (nestedTreeItem && nestedTreeItem !== nodeRef.current) {\n return;\n }\n setActiveNode(value);\n select(event, value);\n };\n\n const handleFocus = (event: FocusEvent<HTMLLIElement>) => {\n if (event.target !== event.currentTarget) return;\n onFocus?.(event);\n if (!wasMouseDownRef.current) {\n setFocusVisible(true);\n }\n wasMouseDownRef.current = false;\n setActiveNode(value);\n };\n\n const handleBlur = (event: FocusEvent<HTMLLIElement>) => {\n if (event.target !== event.currentTarget) return;\n onBlur?.(event);\n setFocusVisible(false);\n };\n\n const handleMouseDown = (event: MouseEvent<HTMLLIElement>) => {\n wasMouseDownRef.current = true;\n onMouseDown?.(event);\n };\n\n return (\n <li\n ref={setNodeRef}\n id={id}\n role=\"treeitem\"\n aria-expanded={hasChildren ? expanded : undefined}\n aria-selected={multiselect ? undefined : selected}\n aria-checked={\n multiselect ? (indeterminate ? \"mixed\" : selected) : undefined\n }\n aria-level={level}\n aria-disabled={disabled || undefined}\n tabIndex={isTabbable ? 0 : -1}\n className={clsx(\n withNodeBaseName(),\n {\n [withNodeBaseName(\"expanded\")]: expanded,\n [withNodeBaseName(\"selected\")]: selected && !multiselect,\n [withNodeBaseName(\"active\")]: isActive,\n [withNodeBaseName(\"disabled\")]: disabled,\n [withNodeBaseName(\"hasChildren\")]: hasChildren,\n [withNodeBaseName(\"focusVisible\")]: focusVisible,\n },\n className,\n )}\n style={\n {\n \"--saltTreeNode-level\": level,\n ...style,\n } as CSSProperties\n }\n onClick={handleClick}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseDown={handleMouseDown}\n onKeyDown={onKeyDown}\n {...rest}\n >\n <span ref={triggerContentRef} className={withBaseName()}>\n <TreeNodeExpansionIcon />\n {multiselect && (\n <CheckboxIcon\n checked={selected}\n indeterminate={indeterminate}\n className={withNodeBaseName(\"checkbox\")}\n />\n )}\n {children}\n </span>\n\n {hasChildren && expanded && (\n <ul role=\"group\" className={withNodeBaseName(\"group\")}>\n {nodeChildren}\n </ul>\n )}\n </li>\n );\n});\n"],"names":["TreeNodeTrigger","treeNodeTriggerCss"],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ function attachRef(ref, instance) {
2
+ if (typeof ref === "function") {
3
+ const cleanup = ref(instance);
4
+ return typeof cleanup === "function" ? cleanup : () => ref(null);
5
+ }
6
+ if (ref) {
7
+ const objectRef = ref;
8
+ objectRef.current = instance;
9
+ return () => {
10
+ objectRef.current = null;
11
+ };
12
+ }
13
+ return void 0;
14
+ }
15
+ function forkRef(refA, refB) {
16
+ let cleanup;
17
+ return (instance) => {
18
+ cleanup == null ? void 0 : cleanup();
19
+ cleanup = void 0;
20
+ if (instance != null) {
21
+ const cleanupA = attachRef(refA, instance);
22
+ const cleanupB = attachRef(refB, instance);
23
+ cleanup = () => {
24
+ cleanupA == null ? void 0 : cleanupA();
25
+ cleanupB == null ? void 0 : cleanupB();
26
+ };
27
+ }
28
+ };
29
+ }
30
+
31
+ export { forkRef };
32
+ //# sourceMappingURL=forkRef.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forkRef.js","sources":["../src/utils/forkRef.ts"],"sourcesContent":["import type { Ref, RefCallback } from \"react\";\n\ntype RefCleanup = () => void;\n\nfunction attachRef<Instance>(\n ref: Ref<Instance> | null | undefined,\n instance: Instance,\n): RefCleanup | undefined {\n if (typeof ref === \"function\") {\n // From React 19, a callback ref can return a cleanup function, which React\n // calls instead of calling the ref with `null`.\n const cleanup = ref(instance);\n return typeof cleanup === \"function\" ? cleanup : () => ref(null);\n }\n\n if (ref) {\n // `current` is read-only in the React 18 types.\n const objectRef: { current: Instance | null } = ref;\n objectRef.current = instance;\n return () => {\n objectRef.current = null;\n };\n }\n\n return undefined;\n}\n\n/**\n * Merges two refs into a callback ref. Components and hooks should use\n * `useForkRef`, so the merged ref only changes when one of the refs changes.\n * This is for places that can't call a hook, such as a props getter.\n *\n * The returned ref never returns a cleanup itself, so every React version\n * detaches it by calling it with `null`; that is when the cleanups collected\n * from refA and refB are run.\n */\nexport function forkRef<Instance>(\n refA: Ref<Instance> | null | undefined,\n refB: Ref<Instance> | null | undefined,\n): RefCallback<Instance> {\n let cleanup: RefCleanup | undefined;\n\n return (instance: Instance | null) => {\n cleanup?.();\n cleanup = undefined;\n\n if (instance != null) {\n const cleanupA = attachRef(refA, instance);\n const cleanupB = attachRef(refB, instance);\n cleanup = () => {\n cleanupA?.();\n cleanupB?.();\n };\n }\n };\n}\n"],"names":[],"mappings":"AAIA,SAAS,SAAA,CACP,KACA,QAAA,EACwB;AACxB,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAG7B,IAAA,MAAM,OAAA,GAAU,IAAI,QAAQ,CAAA;AAC5B,IAAA,OAAO,OAAO,OAAA,KAAY,UAAA,GAAa,OAAA,GAAU,MAAM,IAAI,IAAI,CAAA;AAAA,EACjE;AAEA,EAAA,IAAI,GAAA,EAAK;AAEP,IAAA,MAAM,SAAA,GAA0C,GAAA;AAChD,IAAA,SAAA,CAAU,OAAA,GAAU,QAAA;AACpB,IAAA,OAAO,MAAM;AACX,MAAA,SAAA,CAAU,OAAA,GAAU,IAAA;AAAA,IACtB,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAWO,SAAS,OAAA,CACd,MACA,IAAA,EACuB;AACvB,EAAA,IAAI,OAAA;AAEJ,EAAA,OAAO,CAAC,QAAA,KAA8B;AACpC,IAAA,OAAA,IAAA,IAAA,GAAA,MAAA,GAAA,OAAA,EAAA;AACA,IAAA,OAAA,GAAU,MAAA;AAEV,IAAA,IAAI,YAAY,IAAA,EAAM;AACpB,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,IAAA,EAAM,QAAQ,CAAA;AACzC,MAAA,MAAM,QAAA,GAAW,SAAA,CAAU,IAAA,EAAM,QAAQ,CAAA;AACzC,MAAA,OAAA,GAAU,MAAM;AACd,QAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,EAAA;AACA,QAAA,QAAA,IAAA,IAAA,GAAA,MAAA,GAAA,QAAA,EAAA;AAAA,MACF,CAAA;AAAA,IACF;AAAA,EACF,CAAA;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getRefFromChildren.js","sources":["../src/utils/getRefFromChildren.ts"],"sourcesContent":["import { isValidElement, type ReactNode } from \"react\";\n\nexport function getRefFromChildren(child: ReactNode) {\n if (!child || !isValidElement(child)) {\n return null;\n }\n\n return Object.prototype.propertyIsEnumerable.call(child.props, \"ref\")\n ? child.props.ref\n : // @ts-expect-error - ref is not defined on ReactNode\n child.ref;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,mBAAmB,KAAA,EAAkB;AACnD,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,cAAA,CAAe,KAAK,CAAA,EAAG;AACpC,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA,CAAO,UAAU,oBAAA,CAAqB,IAAA,CAAK,MAAM,KAAA,EAAO,KAAK,CAAA,GAChE,KAAA,CAAM,KAAA,CAAM,GAAA;AAAA;AAAA,IAEZ,KAAA,CAAM;AAAA,GAAA;AACZ;;;;"}
1
+ {"version":3,"file":"getRefFromChildren.js","sources":["../src/utils/getRefFromChildren.ts"],"sourcesContent":["import { isValidElement, type ReactNode, type Ref } from \"react\";\n\nexport function getRefFromChildren(child: ReactNode) {\n if (!child || !isValidElement<{ ref?: Ref<unknown> }>(child)) {\n return null;\n }\n\n return Object.prototype.propertyIsEnumerable.call(child.props, \"ref\")\n ? child.props.ref\n : // @ts-expect-error - ref is not defined on ReactNode\n child.ref;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,mBAAmB,KAAA,EAAkB;AACnD,EAAA,IAAI,CAAC,KAAA,IAAS,CAAC,cAAA,CAAuC,KAAK,CAAA,EAAG;AAC5D,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA,CAAO,UAAU,oBAAA,CAAqB,IAAA,CAAK,MAAM,KAAA,EAAO,KAAK,CAAA,GAChE,KAAA,CAAM,KAAA,CAAM,GAAA;AAAA;AAAA,IAEZ,KAAA,CAAM;AAAA,GAAA;AACZ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"marginMiddleware.js","sources":["../src/utils/marginMiddleware.ts"],"sourcesContent":["import type { Middleware } from \"@floating-ui/core\";\n\nexport const margin = (value = 0): Middleware => ({\n name: \"margin\",\n options: value,\n fn(middlewareState) {\n const { x, y, elements } = middlewareState;\n\n if (elements.floating.children.length > 0) {\n const rootChildElement = elements.floating.children[0] as HTMLElement;\n rootChildElement.style.setProperty(\"margin\", value.toString());\n }\n return {\n x: x,\n y: y,\n };\n },\n});\n"],"names":[],"mappings":"AAEO,MAAM,MAAA,GAAS,CAAC,KAAA,GAAQ,CAAA,MAAmB;AAAA,EAChD,IAAA,EAAM,QAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA,EACT,GAAG,eAAA,EAAiB;AAClB,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,QAAA,EAAS,GAAI,eAAA;AAE3B,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AACzC,MAAA,MAAM,gBAAA,GAAmB,QAAA,CAAS,QAAA,CAAS,QAAA,CAAS,CAAC,CAAA;AACrD,MAAA,gBAAA,CAAiB,KAAA,CAAM,WAAA,CAAY,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAAA,IAC/D;AACA,IAAA,OAAO;AAAA,MACL,CAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"marginMiddleware.js","sources":["../src/utils/marginMiddleware.ts"],"sourcesContent":["import type { Middleware } from \"@floating-ui/react\";\n\nexport const margin = (value = 0): Middleware => ({\n name: \"margin\",\n options: value,\n fn(middlewareState) {\n const { x, y, elements } = middlewareState;\n\n if (elements.floating.children.length > 0) {\n const rootChildElement = elements.floating.children[0] as HTMLElement;\n rootChildElement.style.setProperty(\"margin\", value.toString());\n }\n return {\n x: x,\n y: y,\n };\n },\n});\n"],"names":[],"mappings":"AAEO,MAAM,MAAA,GAAS,CAAC,KAAA,GAAQ,CAAA,MAAmB;AAAA,EAChD,IAAA,EAAM,QAAA;AAAA,EACN,OAAA,EAAS,KAAA;AAAA,EACT,GAAG,eAAA,EAAiB;AAClB,IAAA,MAAM,EAAE,CAAA,EAAG,CAAA,EAAG,QAAA,EAAS,GAAI,eAAA;AAE3B,IAAA,IAAI,QAAA,CAAS,QAAA,CAAS,QAAA,CAAS,MAAA,GAAS,CAAA,EAAG;AACzC,MAAA,MAAM,gBAAA,GAAmB,QAAA,CAAS,QAAA,CAAS,QAAA,CAAS,CAAC,CAAA;AACrD,MAAA,gBAAA,CAAiB,KAAA,CAAM,WAAA,CAAY,QAAA,EAAU,KAAA,CAAM,UAAU,CAAA;AAAA,IAC/D;AACA,IAAA,OAAO;AAAA,MACL,CAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"setRef.js","sources":["../src/utils/setRef.ts"],"sourcesContent":["import type { MutableRefObject } from \"react\";\n\nexport function setRef<T>(\n ref:\n | MutableRefObject<T | null>\n | ((instance: T | null) => void)\n | null\n | undefined,\n value: T | null,\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n"],"names":[],"mappings":"AAEO,SAAS,MAAA,CACd,KAKA,KAAA,EACM;AACN,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,KAAK,CAAA;AAAA,EACX,WAAW,GAAA,EAAK;AACd,IAAA,GAAA,CAAI,OAAA,GAAU,KAAA;AAAA,EAChB;AACF;;;;"}
1
+ {"version":3,"file":"setRef.js","sources":["../src/utils/setRef.ts"],"sourcesContent":["import type { MutableRefObject } from \"react\";\n\n/**\n * @deprecated since 1.73.0. Use `useForkRef` to merge refs instead, which also\n * runs the cleanup functions that callback refs can return from React 19.\n */\nexport function setRef<T>(\n ref:\n | MutableRefObject<T | null>\n | ((instance: T | null) => void)\n | null\n | undefined,\n value: T | null,\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n"],"names":[],"mappings":"AAMO,SAAS,MAAA,CACd,KAKA,KAAA,EACM;AACN,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,KAAK,CAAA;AAAA,EACX,WAAW,GAAA,EAAK;AACd,IAAA,GAAA,CAAI,OAAA,GAAU,KAAA;AAAA,EAChB;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFloatingUI.js","sources":["../src/utils/useFloatingUI/useFloatingUI.tsx"],"sourcesContent":["import {\n autoUpdate,\n FloatingFocusManager,\n type FloatingFocusManagerProps,\n FloatingPortal,\n flip,\n limitShift,\n type Middleware,\n type Platform,\n platform,\n type Strategy,\n shift,\n type UseFloatingOptions,\n useFloating,\n} from \"@floating-ui/react\";\nimport {\n type ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n type ReactNode,\n useContext,\n useMemo,\n} from \"react\";\nimport { SaltProvider, SaltProviderNext, useTheme } from \"../../salt-provider\";\nimport { usePreventScroll } from \"../usePreventScroll\";\n\nexport interface FloatingComponentProps\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Whether the floating component is open (used for determining whether to show the component)\n * We pass this as a prop rather than not rendering the component to allow more advanced use-cases e.g.\n * for caching windows and reusing them, rather than always spawning a new one\n */\n open: boolean;\n /**\n * Use this prop when `FloatingFocusManager` is needed for floating component\n */\n focusManagerProps?: Omit<FloatingFocusManagerProps, \"children\">;\n /**\n * Position and sizing optional props for the floating component. `top`, `left`, and `position` for floating elements where they aren't positioned with relative to the trigger.\n * `width` and `height` are used to define the size of the floating element.\n *\n */\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n position?: Strategy;\n /**\n * Makes the page unscrollable when the floating component is open.\n */\n lockScroll?: boolean;\n}\n\nconst DefaultFloatingComponent = forwardRef<\n HTMLDivElement,\n FloatingComponentProps\n>(function DefaultFloatingComponent(props, ref) {\n const {\n open,\n top,\n left,\n position,\n width: _width,\n height: _height,\n focusManagerProps,\n lockScroll,\n style: styleProp,\n ...rest\n } = props;\n const style = {\n ...styleProp,\n top,\n left,\n position,\n };\n\n const { themeNext } = useTheme();\n usePreventScroll({ isDisabled: !lockScroll || !open });\n\n const ChosenSaltProvider = themeNext ? SaltProviderNext : SaltProvider;\n\n if (focusManagerProps && open) {\n return (\n <FloatingPortal>\n <ChosenSaltProvider applyClassesTo=\"scope\">\n <FloatingFocusManager {...focusManagerProps}>\n <div style={style} {...rest} ref={ref} />\n </FloatingFocusManager>\n </ChosenSaltProvider>\n </FloatingPortal>\n );\n }\n\n return open ? (\n <FloatingPortal>\n <ChosenSaltProvider applyClassesTo=\"scope\">\n <div style={style} {...rest} ref={ref} />\n </ChosenSaltProvider>\n </FloatingPortal>\n ) : null;\n});\n\nexport interface FloatingComponentContextType {\n Component: typeof DefaultFloatingComponent;\n}\n\nconst FloatingComponentContext = createContext<FloatingComponentContextType>({\n Component: DefaultFloatingComponent,\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n FloatingComponentContext.displayName = \"FloatingComponentContext\";\n}\n\nexport interface FloatingComponentProviderProps\n extends FloatingComponentContextType {\n children: ReactNode;\n}\n\nexport function FloatingComponentProvider(\n props: FloatingComponentProviderProps,\n) {\n const { Component, children } = props;\n const value = useMemo(() => ({ Component }), [Component]);\n\n return (\n <FloatingComponentContext.Provider value={value}>\n {children}\n </FloatingComponentContext.Provider>\n );\n}\n\nexport function useFloatingComponent() {\n return useContext(FloatingComponentContext);\n}\n\nexport interface UseFloatingUIProps\n extends Pick<\n UseFloatingOptions,\n | \"placement\"\n | \"strategy\"\n | \"open\"\n | \"onOpenChange\"\n | \"nodeId\"\n | \"rootContext\"\n > {\n /**\n * Function to update the default middleware used to extend or replace it\n */\n middleware?: Middleware[];\n}\n\ntype GetMiddleware = (middleware: Middleware[]) => Middleware[];\n\nconst defaultGetMiddleware: GetMiddleware = (defaultMiddleware) =>\n defaultMiddleware;\n\ninterface FloatingPlatformContextType {\n platform: Platform;\n middleware: GetMiddleware;\n animationFrame: boolean;\n}\n\nconst defaultFloatingPlaform: FloatingPlatformContextType = {\n platform,\n middleware: defaultGetMiddleware,\n animationFrame: false,\n};\n\nconst FloatingPlatformContext = createContext<FloatingPlatformContextType>(\n defaultFloatingPlaform,\n);\n\nexport interface FloatingPlatformProviderProps {\n platform?: Platform;\n middleware?: GetMiddleware;\n children: ReactNode;\n animationFrame?: boolean;\n}\n\nexport function FloatingPlatformProvider(props: FloatingPlatformProviderProps) {\n const {\n platform: platformProp,\n middleware,\n animationFrame,\n children,\n } = props;\n\n const floatingPlatformContextValue = useMemo<FloatingPlatformContextType>(\n () => ({\n platform: platformProp ?? platform,\n middleware: middleware ?? defaultGetMiddleware,\n animationFrame: animationFrame || false,\n }),\n [platformProp, middleware, animationFrame],\n );\n\n return (\n <FloatingPlatformContext.Provider value={floatingPlatformContextValue}>\n {children}\n </FloatingPlatformContext.Provider>\n );\n}\n\nexport function useFloatingPlatform() {\n return useContext(FloatingPlatformContext);\n}\n\nexport const DEFAULT_FLOATING_UI_MIDDLEWARE = [\n flip(),\n shift({ limiter: limitShift() }),\n];\n\ntype UseFloatingRefs = ReturnType<typeof useFloating>[\"refs\"];\n\nexport interface UseFloatingUIReturn extends ReturnType<typeof useFloating> {\n reference: UseFloatingRefs[\"setReference\"];\n floating: UseFloatingRefs[\"setFloating\"];\n}\n\nexport function useFloatingUI(props: UseFloatingUIProps): UseFloatingUIReturn {\n const {\n middleware = DEFAULT_FLOATING_UI_MIDDLEWARE,\n open = false,\n onOpenChange,\n ...other\n } = props;\n\n const handleOpenChange: UseFloatingUIProps[\"onOpenChange\"] = (\n open,\n boolean,\n reason,\n ) => {\n update();\n onOpenChange?.(open, boolean, reason);\n };\n\n const {\n platform: contextPlatform,\n middleware: contextMiddleware,\n animationFrame,\n } = useFloatingPlatform();\n\n const { refs, update, ...rest } = useFloating({\n ...other,\n middleware: contextMiddleware(middleware),\n open,\n onOpenChange: handleOpenChange,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, { animationFrame });\n\n return cleanup;\n },\n platform: contextPlatform,\n });\n\n return {\n reference: refs.setReference,\n floating: refs.setFloating,\n refs,\n update,\n ...rest,\n };\n}\n"],"names":["DefaultFloatingComponent","open"],"mappings":"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"}
1
+ {"version":3,"file":"useFloatingUI.js","sources":["../src/utils/useFloatingUI/useFloatingUI.tsx"],"sourcesContent":["import {\n autoUpdate,\n FloatingFocusManager,\n type FloatingFocusManagerProps,\n FloatingPortal,\n flip,\n limitShift,\n type Middleware,\n type Platform,\n platform,\n type Strategy,\n shift,\n type UseFloatingOptions,\n useFloating,\n} from \"@floating-ui/react\";\nimport {\n type ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n type ReactNode,\n useContext,\n useMemo,\n} from \"react\";\nimport { SaltProvider, SaltProviderNext, useTheme } from \"../../salt-provider\";\nimport { usePreventScroll } from \"../usePreventScroll\";\n\nexport interface FloatingComponentProps\n extends ComponentPropsWithoutRef<\"div\"> {\n /**\n * Whether the floating component is open (used for determining whether to show the component)\n * We pass this as a prop rather than not rendering the component to allow more advanced use-cases e.g.\n * for caching windows and reusing them, rather than always spawning a new one\n */\n open: boolean;\n /**\n * Use this prop when `FloatingFocusManager` is needed for floating component\n */\n focusManagerProps?: Omit<FloatingFocusManagerProps, \"children\">;\n /**\n * Position and sizing optional props for the floating component. `top`, `left`, and `position` for floating elements where they aren't positioned with relative to the trigger.\n * `width` and `height` are used to define the size of the floating element.\n *\n */\n top?: number;\n left?: number;\n width?: number;\n height?: number;\n position?: Strategy;\n /**\n * Makes the page unscrollable when the floating component is open.\n */\n lockScroll?: boolean;\n}\n\nconst DefaultFloatingComponent = forwardRef<\n HTMLDivElement,\n FloatingComponentProps\n>(function DefaultFloatingComponent(props, ref) {\n const {\n open,\n top,\n left,\n position,\n width: _width,\n height: _height,\n focusManagerProps,\n lockScroll,\n style: styleProp,\n ...rest\n } = props;\n const style = {\n ...styleProp,\n top,\n left,\n position,\n };\n\n const { themeNext } = useTheme();\n usePreventScroll({ isDisabled: !lockScroll || !open });\n\n const ChosenSaltProvider = themeNext ? SaltProviderNext : SaltProvider;\n\n if (focusManagerProps && open) {\n return (\n <FloatingPortal>\n <ChosenSaltProvider applyClassesTo=\"scope\">\n <FloatingFocusManager {...focusManagerProps}>\n <div style={style} {...rest} ref={ref} />\n </FloatingFocusManager>\n </ChosenSaltProvider>\n </FloatingPortal>\n );\n }\n\n return open ? (\n <FloatingPortal>\n <ChosenSaltProvider applyClassesTo=\"scope\">\n <div style={style} {...rest} ref={ref} />\n </ChosenSaltProvider>\n </FloatingPortal>\n ) : null;\n});\n\nexport interface FloatingComponentContextType {\n Component: typeof DefaultFloatingComponent;\n}\n\nconst FloatingComponentContext = createContext<FloatingComponentContextType>({\n Component: DefaultFloatingComponent,\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n FloatingComponentContext.displayName = \"FloatingComponentContext\";\n}\n\nexport interface FloatingComponentProviderProps\n extends FloatingComponentContextType {\n children: ReactNode;\n}\n\nexport function FloatingComponentProvider(\n props: FloatingComponentProviderProps,\n) {\n const { Component, children } = props;\n const value = useMemo(() => ({ Component }), [Component]);\n\n return (\n <FloatingComponentContext.Provider value={value}>\n {children}\n </FloatingComponentContext.Provider>\n );\n}\n\nexport function useFloatingComponent() {\n return useContext(FloatingComponentContext);\n}\n\nexport interface UseFloatingUIProps\n extends Pick<\n UseFloatingOptions,\n | \"placement\"\n | \"strategy\"\n | \"open\"\n | \"onOpenChange\"\n | \"nodeId\"\n | \"rootContext\"\n > {\n /**\n * Function to update the default middleware used to extend or replace it\n */\n middleware?: Middleware[];\n}\n\ntype GetMiddleware = (middleware: Middleware[]) => Middleware[];\n\nconst defaultGetMiddleware: GetMiddleware = (defaultMiddleware) =>\n defaultMiddleware;\n\ninterface FloatingPlatformContextType {\n platform: Platform;\n middleware: GetMiddleware;\n animationFrame: boolean;\n}\n\nconst defaultFloatingPlaform: FloatingPlatformContextType = {\n platform,\n middleware: defaultGetMiddleware,\n animationFrame: false,\n};\n\nconst FloatingPlatformContext = createContext<FloatingPlatformContextType>(\n defaultFloatingPlaform,\n);\n\nexport interface FloatingPlatformProviderProps {\n platform?: Platform;\n middleware?: GetMiddleware;\n children: ReactNode;\n animationFrame?: boolean;\n}\n\nexport function FloatingPlatformProvider(props: FloatingPlatformProviderProps) {\n const {\n platform: platformProp,\n middleware,\n animationFrame,\n children,\n } = props;\n\n const floatingPlatformContextValue = useMemo<FloatingPlatformContextType>(\n () => ({\n platform: platformProp ?? platform,\n middleware: middleware ?? defaultGetMiddleware,\n animationFrame: animationFrame || false,\n }),\n [platformProp, middleware, animationFrame],\n );\n\n return (\n <FloatingPlatformContext.Provider value={floatingPlatformContextValue}>\n {children}\n </FloatingPlatformContext.Provider>\n );\n}\n\nexport function useFloatingPlatform() {\n return useContext(FloatingPlatformContext);\n}\n\nexport const DEFAULT_FLOATING_UI_MIDDLEWARE: Middleware[] = [\n flip(),\n shift({ limiter: limitShift() }),\n];\n\ntype UseFloatingRefs = ReturnType<typeof useFloating>[\"refs\"];\n\nexport interface UseFloatingUIReturn extends ReturnType<typeof useFloating> {\n reference: UseFloatingRefs[\"setReference\"];\n floating: UseFloatingRefs[\"setFloating\"];\n}\n\nexport function useFloatingUI(props: UseFloatingUIProps): UseFloatingUIReturn {\n const {\n middleware = DEFAULT_FLOATING_UI_MIDDLEWARE,\n open = false,\n onOpenChange,\n ...other\n } = props;\n\n const handleOpenChange: UseFloatingUIProps[\"onOpenChange\"] = (\n open,\n boolean,\n reason,\n ) => {\n update();\n onOpenChange?.(open, boolean, reason);\n };\n\n const {\n platform: contextPlatform,\n middleware: contextMiddleware,\n animationFrame,\n } = useFloatingPlatform();\n\n const { refs, update, ...rest } = useFloating({\n ...other,\n middleware: contextMiddleware(middleware),\n open,\n onOpenChange: handleOpenChange,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, { animationFrame });\n\n return cleanup;\n },\n platform: contextPlatform,\n });\n\n return {\n reference: refs.setReference,\n floating: refs.setFloating,\n refs,\n update,\n ...rest,\n };\n}\n"],"names":["DefaultFloatingComponent","open"],"mappings":"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"}
@@ -1,15 +1,12 @@
1
1
  import { useMemo } from 'react';
2
- import { setRef } from './setRef.js';
2
+ import { forkRef } from './forkRef.js';
3
3
 
4
4
  function useForkRef(refA, refB) {
5
5
  return useMemo(() => {
6
6
  if (refA == null && refB == null) {
7
- return () => null;
7
+ return null;
8
8
  }
9
- return (refValue) => {
10
- setRef(refA, refValue);
11
- setRef(refB, refValue);
12
- };
9
+ return forkRef(refA, refB);
13
10
  }, [refA, refB]);
14
11
  }
15
12
 
@@ -1 +1 @@
1
- {"version":3,"file":"useForkRef.js","sources":["../src/utils/useForkRef.ts"],"sourcesContent":["import { type Ref, useMemo } from \"react\";\nimport { setRef } from \"./setRef\";\n\nexport function useForkRef<Instance>(\n refA: Ref<Instance> | null | undefined,\n refB: Ref<Instance> | null | undefined,\n): Ref<Instance> | null {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means React will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior\n */\n return useMemo(() => {\n if (refA == null && refB == null) {\n return () => null;\n }\n return (refValue: Instance | null) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,UAAA,CACd,MACA,IAAA,EACsB;AAMtB,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,IAAI,IAAA,IAAQ,IAAA,IAAQ,IAAA,IAAQ,IAAA,EAAM;AAChC,MAAA,OAAO,MAAM,IAAA;AAAA,IACf;AACA,IAAA,OAAO,CAAC,QAAA,KAA8B;AACpC,MAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AACrB,MAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAAA,IACvB,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AACjB;;;;"}
1
+ {"version":3,"file":"useForkRef.js","sources":["../src/utils/useForkRef.ts"],"sourcesContent":["import { type Ref, useMemo } from \"react\";\nimport { forkRef } from \"./forkRef\";\n\nexport function useForkRef<Instance>(\n refA: Ref<Instance> | null | undefined,\n refB: Ref<Instance> | null | undefined,\n): Ref<Instance> | null {\n /**\n * This creates a new function when either ref changes, so React detaches the\n * old forkRef, which runs the cleanups of the old refs, and attaches the new\n * one.\n */\n return useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n\n return forkRef(refA, refB);\n }, [refA, refB]);\n}\n"],"names":[],"mappings":";;;AAGO,SAAS,UAAA,CACd,MACA,IAAA,EACsB;AAMtB,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,IAAI,IAAA,IAAQ,IAAA,IAAQ,IAAA,IAAQ,IAAA,EAAM;AAChC,MAAA,OAAO,IAAA;AAAA,IACT;AAEA,IAAA,OAAO,OAAA,CAAQ,MAAM,IAAI,CAAA;AAAA,EAC3B,CAAA,EAAG,CAAC,IAAA,EAAM,IAAI,CAAC,CAAA;AACjB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"useResizeObserver.js","sources":["../src/utils/useResizeObserver.ts"],"sourcesContent":["import { type RefObject, useEffect } from \"react\";\nimport { ownerWindow } from \"./ownerWindow\";\n\nexport interface UseResizeObserverProps {\n ref: RefObject<HTMLElement>;\n onResize: () => void;\n}\n\nexport function useResizeObserver({ ref, onResize }: UseResizeObserverProps) {\n useEffect(() => {\n const element = ref?.current;\n if (!element) return;\n\n const win = ownerWindow(element);\n\n const resizeObserver = new win.ResizeObserver((entries) => {\n requestAnimationFrame(() => {\n if (entries.length === 0) return;\n\n onResize();\n });\n });\n resizeObserver.observe(element);\n\n return () => {\n if (element) {\n resizeObserver.unobserve(element);\n }\n };\n }, [ref, onResize]);\n}\n"],"names":[],"mappings":";;;AAQO,SAAS,iBAAA,CAAkB,EAAE,GAAA,EAAK,QAAA,EAAS,EAA2B;AAC3E,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAU,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,OAAA;AACrB,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,GAAA,GAAM,YAAY,OAAO,CAAA;AAE/B,IAAA,MAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,cAAA,CAAe,CAAC,OAAA,KAAY;AACzD,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAE1B,QAAA,QAAA,EAAS;AAAA,MACX,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,OAAO,CAAA;AAE9B,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,cAAA,CAAe,UAAU,OAAO,CAAA;AAAA,MAClC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,GAAA,EAAK,QAAQ,CAAC,CAAA;AACpB;;;;"}
1
+ {"version":3,"file":"useResizeObserver.js","sources":["../src/utils/useResizeObserver.ts"],"sourcesContent":["import { type RefObject, useEffect } from \"react\";\nimport { ownerWindow } from \"./ownerWindow\";\n\nexport interface UseResizeObserverProps {\n ref: RefObject<HTMLElement | null>;\n onResize: () => void;\n}\n\nexport function useResizeObserver({ ref, onResize }: UseResizeObserverProps) {\n useEffect(() => {\n const element = ref?.current;\n if (!element) return;\n\n const win = ownerWindow(element);\n\n const resizeObserver = new win.ResizeObserver((entries) => {\n requestAnimationFrame(() => {\n if (entries.length === 0) return;\n\n onResize();\n });\n });\n resizeObserver.observe(element);\n\n return () => {\n if (element) {\n resizeObserver.unobserve(element);\n }\n };\n }, [ref, onResize]);\n}\n"],"names":[],"mappings":";;;AAQO,SAAS,iBAAA,CAAkB,EAAE,GAAA,EAAK,QAAA,EAAS,EAA2B;AAC3E,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAU,GAAA,IAAA,IAAA,GAAA,MAAA,GAAA,GAAA,CAAK,OAAA;AACrB,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,GAAA,GAAM,YAAY,OAAO,CAAA;AAE/B,IAAA,MAAM,cAAA,GAAiB,IAAI,GAAA,CAAI,cAAA,CAAe,CAAC,OAAA,KAAY;AACzD,MAAA,qBAAA,CAAsB,MAAM;AAC1B,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAE1B,QAAA,QAAA,EAAS;AAAA,MACX,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,OAAO,CAAA;AAE9B,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,OAAA,EAAS;AACX,QAAA,cAAA,CAAe,UAAU,OAAO,CAAA;AAAA,MAClC;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,GAAA,EAAK,QAAQ,CAAC,CAAA;AACpB;;;;"}
@@ -1,4 +1,4 @@
1
- var css_248z = ".saltVerticalNavigationSubMenu {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-fixed-100);\n list-style: none;\n padding: var(--salt-spacing-fixed-100) 0 0;\n margin: 0;\n}\n\n.saltVerticalNavigationSubMenu .saltVerticalNavigationItemContent {\n font-weight: var(--salt-text-heading-fontWeight-small);\n}\n";
1
+ var css_248z = ".saltVerticalNavigationSubMenu {\n display: flex;\n flex-direction: column;\n gap: var(--salt-spacing-fixed-100);\n list-style: none;\n padding: var(--salt-spacing-fixed-100) 0 0;\n margin: 0;\n}\n\n.saltVerticalNavigationSubMenu .saltVerticalNavigationItemContent {\n font-weight: var(--salt-text-heading-fontWeight-lighter);\n}\n";
2
2
 
3
3
  export { css_248z as default };
4
4
  //# sourceMappingURL=VerticalNavigationSubMenu.css.js.map
@@ -1,3 +1,4 @@
1
+ import type { ReactElement } from "react";
1
2
  import type { AdornmentValidationStatus } from "../status-adornment";
2
3
  export interface CheckboxIconProps {
3
4
  checked?: boolean;
@@ -11,4 +12,4 @@ export interface CheckboxIconProps {
11
12
  readOnly?: boolean;
12
13
  validationStatus?: AdornmentValidationStatus;
13
14
  }
14
- export declare const CheckboxIcon: ({ checked, className, disabled, error, indeterminate, validationStatus, readOnly, }: CheckboxIconProps) => JSX.Element;
15
+ export declare const CheckboxIcon: ({ checked, className, disabled, error, indeterminate, validationStatus, readOnly, }: CheckboxIconProps) => ReactElement;
@@ -1,4 +1,11 @@
1
- import { type ComponentPropsWithoutRef } from "react";
1
+ import { type ComponentPropsWithoutRef, type ReactElement } from "react";
2
2
  export interface CollapsiblePanelProps extends ComponentPropsWithoutRef<"div"> {
3
+ /**
4
+ * Element used to customize the panel's root, e.g. `<CardContent />`.
5
+ * Props are merged onto this element, and its own props take precedence.
6
+ * Don't set `children`, `hidden` or `aria-hidden` on it, as they replace the
7
+ * panel's content and open state.
8
+ */
9
+ render?: ReactElement;
3
10
  }
4
11
  export declare const CollapsiblePanel: import("react").ForwardRefExoticComponent<CollapsiblePanelProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -1,4 +1,4 @@
1
- import { type ComponentPropsWithoutRef, type ReactNode, type Ref } from "react";
1
+ import { type ComponentPropsWithoutRef, type ReactElement, type ReactNode, type Ref } from "react";
2
2
  import { type PillInputProps } from "../pill-input";
3
3
  import type { DataAttributes } from "../types";
4
4
  import { type UseComboBoxProps } from "./useComboBox";
@@ -18,4 +18,4 @@ export interface ComboBoxProps<Item = string> extends UseComboBoxProps<Item>, Om
18
18
  }
19
19
  export declare const ComboBox: <Item = string>(props: ComboBoxProps<Item> & {
20
20
  ref?: Ref<HTMLDivElement>;
21
- }) => JSX.Element;
21
+ }) => ReactElement;
@@ -25,6 +25,12 @@ export interface DrawerProps extends ComponentPropsWithoutRef<"div"> {
25
25
  * Prevent Scrim from rendering
26
26
  * */
27
27
  disableScrim?: boolean;
28
+ /**
29
+ * Allow the user to resize the drawer. Set size limits with the `--saltDrawer-minResize`/`--saltDrawer-maxResize`
30
+ * variables, which apply to the width of `left` and `right` drawers and the height of `top` and `bottom` drawers.
31
+ * The drawer never shrinks below `--salt-size-base`, unless `min-width`/`min-height` is set directly.
32
+ * */
33
+ resizable?: boolean;
28
34
  /**
29
35
  * Which element to initially focus. Can be either a number (tabbable index as specified by the order) or a ref.
30
36
  * Default value is 0 (first tabbable element).
@@ -1,5 +1,8 @@
1
+ import type { DrawerProps } from "./Drawer";
1
2
  export interface DrawerContextValue {
2
3
  drawerId?: string;
4
+ position?: DrawerProps["position"];
5
+ resizable?: boolean;
3
6
  headerId?: string;
4
7
  setHeaderId?: (id: string | undefined) => void;
5
8
  descriptionId?: string;
@@ -1,7 +1,7 @@
1
1
  import { type ComponentPropsWithoutRef, type ReactNode } from "react";
2
2
  export interface DrawerHeaderProps extends ComponentPropsWithoutRef<"div"> {
3
3
  /**
4
- * Hides the accent bar in the Drawer Header. Defaults to `false`.
4
+ * Hides the accent bar in the Drawer Header. Defaults to `true` when the Drawer is resizable and positioned `right`, otherwise `false`.
5
5
  */
6
6
  disableAccent?: boolean;
7
7
  /**
@@ -0,0 +1,7 @@
1
+ import { type ComponentPropsWithoutRef } from "react";
2
+ import type { DrawerProps } from "../Drawer";
3
+ export interface DrawerResizeGuideProps extends ComponentPropsWithoutRef<"div"> {
4
+ position: NonNullable<DrawerProps["position"]>;
5
+ }
6
+ /** Covers the viewport while placing the edge by click, so the click doesn't reach the content. */
7
+ export declare const DrawerResizeGuide: import("react").ForwardRefExoticComponent<DrawerResizeGuideProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,8 @@
1
+ import { type ComponentPropsWithoutRef } from "react";
2
+ import type { DrawerProps } from "../Drawer";
3
+ export interface DrawerResizeHandleProps extends ComponentPropsWithoutRef<"div"> {
4
+ position: NonNullable<DrawerProps["position"]>;
5
+ resizing?: boolean;
6
+ hovered?: boolean;
7
+ }
8
+ export declare const DrawerResizeHandle: import("react").ForwardRefExoticComponent<DrawerResizeHandleProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,3 @@
1
+ export * from "./DrawerResizeGuide";
2
+ export * from "./DrawerResizeHandle";
3
+ export * from "./useDrawerResize";
@@ -0,0 +1,34 @@
1
+ import type { AriaAttributes, CSSProperties, KeyboardEvent as ReactKeyboardEvent, MouseEvent as ReactMouseEvent, PointerEvent as ReactPointerEvent } from "react";
2
+ import type { DrawerProps } from "../Drawer";
3
+ type DrawerPosition = NonNullable<DrawerProps["position"]>;
4
+ export interface SeparatorProps extends Pick<AriaAttributes, "aria-orientation" | "aria-valuenow" | "aria-valuemin" | "aria-valuemax"> {
5
+ role: "separator";
6
+ tabIndex: number;
7
+ ref: (element: HTMLElement | null) => void;
8
+ onKeyDown: (event: ReactKeyboardEvent<HTMLElement>) => void;
9
+ onFocus: () => void;
10
+ }
11
+ export interface GuideProps {
12
+ ref: (element: HTMLElement | null) => void;
13
+ onPointerDown: (event: ReactPointerEvent<HTMLElement>) => void;
14
+ onPointerMove: (event: ReactPointerEvent<HTMLElement>) => void;
15
+ onClick: (event: ReactMouseEvent<HTMLElement>) => void;
16
+ onContextMenu: () => void;
17
+ }
18
+ export interface UseDrawerResizeProps {
19
+ enabled: boolean;
20
+ position: DrawerPosition;
21
+ element: HTMLElement | null | undefined;
22
+ }
23
+ export interface UseDrawerResizeResult {
24
+ sizeStyle: CSSProperties | undefined;
25
+ isResizing: boolean;
26
+ isHovered: boolean;
27
+ isPlacing: boolean;
28
+ /** Whether the event is the Escape that cancelled a resize, so it shouldn't close the drawer. */
29
+ isCancelResizeEvent: (event?: Event) => boolean;
30
+ separatorProps: SeparatorProps;
31
+ guideProps: GuideProps;
32
+ }
33
+ export declare function useDrawerResize({ enabled, position, element, }: UseDrawerResizeProps): UseDrawerResizeResult;
34
+ export {};
@@ -1,4 +1,4 @@
1
- import { type ComponentPropsWithoutRef, type ReactNode, type Ref } from "react";
1
+ import { type ComponentPropsWithoutRef, type ReactElement, type ReactNode, type Ref } from "react";
2
2
  import { type FormFieldValidationStatus } from "../form-field-context";
3
3
  import { type ListControlProps } from "../list-control/ListControlState";
4
4
  import type { DataAttributes } from "../types";
@@ -58,4 +58,4 @@ export interface DropdownProps<Item = string> extends Omit<ComponentPropsWithout
58
58
  }
59
59
  export declare const Dropdown: <Item = string>(props: DropdownProps<Item> & {
60
60
  ref?: Ref<HTMLButtonElement>;
61
- }) => JSX.Element;
61
+ }) => ReactElement;
@@ -1,4 +1,4 @@
1
1
  import { type TextProps } from "../text";
2
- export interface FormFieldHelperTextProps extends Omit<TextProps<"label">, "variant" | "styleAs"> {
2
+ export interface FormFieldHelperTextProps extends Omit<TextProps<"label">, "variant" | "styleAs" | "fontWeight"> {
3
3
  }
4
4
  export declare const FormFieldHelperText: ({ className, children, ...restProps }: FormFieldHelperTextProps) => import("react").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { type TextProps } from "../text";
2
- export interface FormFieldLabelProps extends Omit<TextProps<"label">, "variant" | "styleAs"> {
2
+ export interface FormFieldLabelProps extends Omit<TextProps<"label">, "variant" | "styleAs" | "fontWeight"> {
3
3
  /**
4
4
  * Intent for the label.
5
5
  *
@@ -24,6 +24,6 @@ export interface FormFieldContextValue {
24
24
  necessity: NecessityType | undefined;
25
25
  readOnly: boolean;
26
26
  validationStatus: FormFieldValidationStatus | undefined;
27
- formFieldRef?: RefObject<HTMLDivElement>;
27
+ formFieldRef?: RefObject<HTMLDivElement | null>;
28
28
  }
29
29
  export declare const FormFieldContext: import("react").Context<FormFieldContextValue>;
@@ -37,6 +37,7 @@ export * from "./menu";
37
37
  export * from "./multiline-input";
38
38
  export * from "./navigation-item";
39
39
  export * from "./number-input";
40
+ export * from "./on-solid-button";
40
41
  export * from "./option";
41
42
  export * from "./overlay";
42
43
  export * from "./pagination";
@@ -1,4 +1,4 @@
1
- import { type ComponentPropsWithoutRef, type ReactNode, type Ref } from "react";
1
+ import { type ComponentPropsWithoutRef, type ReactElement, type ReactNode, type Ref } from "react";
2
2
  import { type ListControlProps } from "../list-control/ListControlState";
3
3
  export type ListBoxProps<Item = string> = {
4
4
  /**
@@ -20,4 +20,4 @@ export type ListBoxProps<Item = string> = {
20
20
  } & ComponentPropsWithoutRef<"div"> & Omit<ListControlProps<Item>, "onOpenChange">;
21
21
  export declare const ListBox: <Item = string>(props: ListBoxProps<Item> & {
22
22
  ref?: Ref<HTMLDivElement>;
23
- }) => JSX.Element;
23
+ }) => ReactElement;
@@ -17,7 +17,7 @@ export interface ListControlContextValue<Item> {
17
17
  focusVisibleState: boolean;
18
18
  valueToString: (item: Item) => string;
19
19
  disabled?: boolean;
20
- listRef?: RefObject<HTMLDivElement>;
20
+ listRef?: RefObject<HTMLDivElement | null>;
21
21
  }
22
22
  export declare const ListControlContext: import("react").Context<ListControlContextValue<any>>;
23
23
  export declare function useListControlContext<Item>(): ListControlContextValue<Item>;
@@ -3,7 +3,7 @@ import type { OptionValue } from "./ListControlContext";
3
3
  import { ListControlOptionStore } from "./ListControlOptionStore";
4
4
  export interface ListControlOptionContextValue<Item> {
5
5
  disabled?: boolean;
6
- listRef?: RefObject<HTMLDivElement>;
6
+ listRef?: RefObject<HTMLDivElement | null>;
7
7
  multiselect: boolean;
8
8
  optionStateStore: ListControlOptionStore<Item>;
9
9
  register: (optionValue: OptionValue<Item>, element: HTMLElement) => () => void;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The leading slots that items in one alignment scope reserve for each other.
3
+ * Each `MenuGroup` is a scope, and items outside a group share their `MenuPanel`'s scope.
4
+ */
5
+ export interface MenuAlignmentContextValue {
6
+ reserveIconSpace: boolean;
7
+ reserveSelectionIconSpace: boolean;
8
+ registerIcon: () => () => void;
9
+ registerSelectionIcon: () => () => void;
10
+ }
11
+ export declare const MenuAlignmentContext: import("react").Context<MenuAlignmentContextValue>;
12
+ export declare function useSlotRegistry(): readonly [boolean, () => () => void];
13
+ export declare function useMenuAlignmentScope(): MenuAlignmentContextValue;
14
+ export declare function useMenuAlignment(): MenuAlignmentContextValue;