@salt-ds/core 1.20.0 → 1.21.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 (429) hide show
  1. package/css/salt-core.css +470 -19
  2. package/dist-cjs/accordion/Accordion.js +75 -0
  3. package/dist-cjs/accordion/Accordion.js.map +1 -1
  4. package/dist-cjs/accordion/AccordionContext.js +79 -0
  5. package/dist-cjs/accordion/AccordionContext.js.map +1 -1
  6. package/dist-cjs/accordion/AccordionGroup.js +76 -1
  7. package/dist-cjs/accordion/AccordionGroup.js.map +1 -1
  8. package/dist-cjs/accordion/AccordionHeader.js +73 -0
  9. package/dist-cjs/accordion/AccordionHeader.js.map +1 -1
  10. package/dist-cjs/accordion/AccordionPanel.js +75 -0
  11. package/dist-cjs/accordion/AccordionPanel.js.map +1 -1
  12. package/dist-cjs/aria-announcer/useAriaAnnouncer.js +78 -0
  13. package/dist-cjs/aria-announcer/useAriaAnnouncer.js.map +1 -1
  14. package/dist-cjs/avatar/Avatar.js +74 -0
  15. package/dist-cjs/avatar/Avatar.js.map +1 -1
  16. package/dist-cjs/avatar/useAvatarImage.js +79 -0
  17. package/dist-cjs/avatar/useAvatarImage.js.map +1 -1
  18. package/dist-cjs/badge/Badge.js +75 -0
  19. package/dist-cjs/badge/Badge.js.map +1 -1
  20. package/dist-cjs/banner/Banner.js +76 -2
  21. package/dist-cjs/banner/Banner.js.map +1 -1
  22. package/dist-cjs/banner/BannerActions.js +76 -1
  23. package/dist-cjs/banner/BannerActions.js.map +1 -1
  24. package/dist-cjs/banner/BannerContent.js +76 -1
  25. package/dist-cjs/banner/BannerContent.js.map +1 -1
  26. package/dist-cjs/border-item/BorderItem.js +75 -1
  27. package/dist-cjs/border-item/BorderItem.js.map +1 -1
  28. package/dist-cjs/border-layout/BorderLayout.js +76 -0
  29. package/dist-cjs/border-layout/BorderLayout.js.map +1 -1
  30. package/dist-cjs/button/Button.js +76 -1
  31. package/dist-cjs/button/Button.js.map +1 -1
  32. package/dist-cjs/card/Card.js +75 -0
  33. package/dist-cjs/card/Card.js.map +1 -1
  34. package/dist-cjs/card/InteractableCard.js +75 -0
  35. package/dist-cjs/card/InteractableCard.js.map +1 -1
  36. package/dist-cjs/checkbox/Checkbox.js +73 -0
  37. package/dist-cjs/checkbox/Checkbox.js.map +1 -1
  38. package/dist-cjs/checkbox/CheckboxGroup.js +74 -0
  39. package/dist-cjs/checkbox/CheckboxGroup.js.map +1 -1
  40. package/dist-cjs/checkbox/CheckboxIcon.js +75 -0
  41. package/dist-cjs/checkbox/CheckboxIcon.js.map +1 -1
  42. package/dist-cjs/checkbox/internal/CheckboxGroupContext.js +79 -0
  43. package/dist-cjs/checkbox/internal/CheckboxGroupContext.js.map +1 -1
  44. package/dist-cjs/combo-box/ComboBox.css.js +6 -0
  45. package/dist-cjs/combo-box/ComboBox.css.js.map +1 -0
  46. package/dist-cjs/combo-box/ComboBox.js +443 -0
  47. package/dist-cjs/combo-box/ComboBox.js.map +1 -0
  48. package/dist-cjs/combo-box/useComboBox.js +153 -0
  49. package/dist-cjs/combo-box/useComboBox.js.map +1 -0
  50. package/dist-cjs/dialog/Dialog.js +77 -3
  51. package/dist-cjs/dialog/Dialog.js.map +1 -1
  52. package/dist-cjs/dialog/DialogActions.js +76 -1
  53. package/dist-cjs/dialog/DialogActions.js.map +1 -1
  54. package/dist-cjs/dialog/DialogCloseButton.js +74 -1
  55. package/dist-cjs/dialog/DialogCloseButton.js.map +1 -1
  56. package/dist-cjs/dialog/DialogContent.js +76 -1
  57. package/dist-cjs/dialog/DialogContent.js.map +1 -1
  58. package/dist-cjs/dialog/DialogHeader.js +71 -3
  59. package/dist-cjs/dialog/DialogHeader.js.map +1 -1
  60. package/dist-cjs/drawer/Drawer.js +75 -2
  61. package/dist-cjs/drawer/Drawer.js.map +1 -1
  62. package/dist-cjs/drawer/DrawerCloseButton.js +74 -1
  63. package/dist-cjs/drawer/DrawerCloseButton.js.map +1 -1
  64. package/dist-cjs/dropdown/Dropdown.css.js +6 -0
  65. package/dist-cjs/dropdown/Dropdown.css.js.map +1 -0
  66. package/dist-cjs/dropdown/Dropdown.js +412 -0
  67. package/dist-cjs/dropdown/Dropdown.js.map +1 -0
  68. package/dist-cjs/file-drop-zone/FileDropZone.js +75 -0
  69. package/dist-cjs/file-drop-zone/FileDropZone.js.map +1 -1
  70. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js +76 -0
  71. package/dist-cjs/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  72. package/dist-cjs/flex-item/FlexItem.js +79 -2
  73. package/dist-cjs/flex-item/FlexItem.js.map +1 -1
  74. package/dist-cjs/flex-layout/FlexLayout.js +79 -2
  75. package/dist-cjs/flex-layout/FlexLayout.js.map +1 -1
  76. package/dist-cjs/form-field/FormField.js +74 -0
  77. package/dist-cjs/form-field/FormField.js.map +1 -1
  78. package/dist-cjs/form-field/FormFieldHelperText.js +70 -2
  79. package/dist-cjs/form-field/FormFieldHelperText.js.map +1 -1
  80. package/dist-cjs/form-field/FormFieldLabel.js +69 -0
  81. package/dist-cjs/form-field/FormFieldLabel.js.map +1 -1
  82. package/dist-cjs/form-field-context/FormFieldContext.js +78 -0
  83. package/dist-cjs/form-field-context/FormFieldContext.js.map +1 -1
  84. package/dist-cjs/grid-item/GridItem.js +79 -2
  85. package/dist-cjs/grid-item/GridItem.js.map +1 -1
  86. package/dist-cjs/grid-layout/GridLayout.js +79 -2
  87. package/dist-cjs/grid-layout/GridLayout.js.map +1 -1
  88. package/dist-cjs/index.js +16 -0
  89. package/dist-cjs/index.js.map +1 -1
  90. package/dist-cjs/input/Input.js +73 -0
  91. package/dist-cjs/input/Input.js.map +1 -1
  92. package/dist-cjs/link/Link.js +70 -2
  93. package/dist-cjs/link/Link.js.map +1 -1
  94. package/dist-cjs/link-card/LinkCard.js +75 -0
  95. package/dist-cjs/link-card/LinkCard.js.map +1 -1
  96. package/dist-cjs/list-control/ListControlContext.js +121 -0
  97. package/dist-cjs/list-control/ListControlContext.js.map +1 -0
  98. package/dist-cjs/list-control/ListControlState.js +276 -0
  99. package/dist-cjs/list-control/ListControlState.js.map +1 -0
  100. package/dist-cjs/multiline-input/MultilineInput.js +73 -0
  101. package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
  102. package/dist-cjs/navigation-item/NavigationItem.js +77 -2
  103. package/dist-cjs/navigation-item/NavigationItem.js.map +1 -1
  104. package/dist-cjs/option/Option.css.js +6 -0
  105. package/dist-cjs/option/Option.css.js.map +1 -0
  106. package/dist-cjs/option/Option.js +178 -0
  107. package/dist-cjs/option/Option.js.map +1 -0
  108. package/dist-cjs/option/OptionGroup.css.js +6 -0
  109. package/dist-cjs/option/OptionGroup.css.js.map +1 -0
  110. package/dist-cjs/option/OptionGroup.js +123 -0
  111. package/dist-cjs/option/OptionGroup.js.map +1 -0
  112. package/dist-cjs/option/OptionList.css.js +6 -0
  113. package/dist-cjs/option/OptionList.css.js.map +1 -0
  114. package/dist-cjs/option/OptionList.js +118 -0
  115. package/dist-cjs/option/OptionList.js.map +1 -0
  116. package/dist-cjs/option/OptionListBase.js +113 -0
  117. package/dist-cjs/option/OptionListBase.js.map +1 -0
  118. package/dist-cjs/pagination/CompactInput.js +76 -2
  119. package/dist-cjs/pagination/CompactInput.js.map +1 -1
  120. package/dist-cjs/pagination/CompactPaginator.js +69 -2
  121. package/dist-cjs/pagination/CompactPaginator.js.map +1 -1
  122. package/dist-cjs/pagination/GoToInput.js +68 -3
  123. package/dist-cjs/pagination/GoToInput.js.map +1 -1
  124. package/dist-cjs/pagination/PageButton.js +77 -2
  125. package/dist-cjs/pagination/PageButton.js.map +1 -1
  126. package/dist-cjs/pagination/PageRanges.js +78 -2
  127. package/dist-cjs/pagination/PageRanges.js.map +1 -1
  128. package/dist-cjs/pagination/Pagination.js +76 -2
  129. package/dist-cjs/pagination/Pagination.js.map +1 -1
  130. package/dist-cjs/pagination/Paginator.js +75 -2
  131. package/dist-cjs/pagination/Paginator.js.map +1 -1
  132. package/dist-cjs/panel/Panel.js +77 -2
  133. package/dist-cjs/panel/Panel.js.map +1 -1
  134. package/dist-cjs/pill/Pill.js +74 -0
  135. package/dist-cjs/pill/Pill.js.map +1 -1
  136. package/dist-cjs/pill-input/PillInput.css.js +6 -0
  137. package/dist-cjs/pill-input/PillInput.css.js.map +1 -0
  138. package/dist-cjs/pill-input/PillInput.js +338 -0
  139. package/dist-cjs/pill-input/PillInput.js.map +1 -0
  140. package/dist-cjs/pill-input/useTruncatePills.js +83 -0
  141. package/dist-cjs/pill-input/useTruncatePills.js.map +1 -0
  142. package/dist-cjs/progress/CircularProgress/CircularProgress.css.js +1 -1
  143. package/dist-cjs/progress/CircularProgress/CircularProgress.js +138 -14
  144. package/dist-cjs/progress/CircularProgress/CircularProgress.js.map +1 -1
  145. package/dist-cjs/progress/LinearProgress/LinearProgress.css.js +1 -1
  146. package/dist-cjs/progress/LinearProgress/LinearProgress.js +89 -8
  147. package/dist-cjs/progress/LinearProgress/LinearProgress.js.map +1 -1
  148. package/dist-cjs/radio-button/RadioButton.js +78 -4
  149. package/dist-cjs/radio-button/RadioButton.js.map +1 -1
  150. package/dist-cjs/radio-button/RadioButtonGroup.js +77 -3
  151. package/dist-cjs/radio-button/RadioButtonGroup.js.map +1 -1
  152. package/dist-cjs/radio-button/RadioButtonIcon.js +76 -0
  153. package/dist-cjs/radio-button/RadioButtonIcon.js.map +1 -1
  154. package/dist-cjs/radio-button/internal/RadioGroupContext.js +79 -0
  155. package/dist-cjs/radio-button/internal/RadioGroupContext.js.map +1 -1
  156. package/dist-cjs/salt-provider/SaltProvider.js +78 -3
  157. package/dist-cjs/salt-provider/SaltProvider.js.map +1 -1
  158. package/dist-cjs/scrim/Scrim.js +76 -1
  159. package/dist-cjs/scrim/Scrim.js.map +1 -1
  160. package/dist-cjs/spinner/Spinner.js +76 -2
  161. package/dist-cjs/spinner/Spinner.js.map +1 -1
  162. package/dist-cjs/spinner/svgSpinners/SpinnerSVG.js +78 -0
  163. package/dist-cjs/spinner/svgSpinners/SpinnerSVG.js.map +1 -1
  164. package/dist-cjs/split-layout/SplitLayout.js +76 -2
  165. package/dist-cjs/split-layout/SplitLayout.js.map +1 -1
  166. package/dist-cjs/stack-layout/StackLayout.js +78 -2
  167. package/dist-cjs/stack-layout/StackLayout.js.map +1 -1
  168. package/dist-cjs/status-adornment/StatusAdornment.js +75 -0
  169. package/dist-cjs/status-adornment/StatusAdornment.js.map +1 -1
  170. package/dist-cjs/status-indicator/StatusIndicator.js +76 -2
  171. package/dist-cjs/status-indicator/StatusIndicator.js.map +1 -1
  172. package/dist-cjs/switch/Switch.js +75 -2
  173. package/dist-cjs/switch/Switch.js.map +1 -1
  174. package/dist-cjs/text/Text.js +77 -2
  175. package/dist-cjs/text/Text.js.map +1 -1
  176. package/dist-cjs/toast/Toast.js +74 -0
  177. package/dist-cjs/toast/Toast.js.map +1 -1
  178. package/dist-cjs/toast/ToastContent.js +75 -0
  179. package/dist-cjs/toast/ToastContent.js.map +1 -1
  180. package/dist-cjs/toggle-button/ToggleButton.js +73 -0
  181. package/dist-cjs/toggle-button/ToggleButton.js.map +1 -1
  182. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js +74 -0
  183. package/dist-cjs/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  184. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js +78 -0
  185. package/dist-cjs/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
  186. package/dist-cjs/tooltip/Tooltip.js +75 -1
  187. package/dist-cjs/tooltip/Tooltip.js.map +1 -1
  188. package/dist-cjs/tooltip/TooltipBase.js +75 -2
  189. package/dist-cjs/tooltip/TooltipBase.js.map +1 -1
  190. package/dist-cjs/tooltip/useAriaAnnounce.js +77 -0
  191. package/dist-cjs/tooltip/useAriaAnnounce.js.map +1 -1
  192. package/dist-cjs/tooltip/useTooltip.js +78 -0
  193. package/dist-cjs/tooltip/useTooltip.js.map +1 -1
  194. package/dist-cjs/utils/ownerWindow.js.map +1 -1
  195. package/dist-cjs/utils/useEventCallback.js +20 -0
  196. package/dist-cjs/utils/useEventCallback.js.map +1 -0
  197. package/dist-cjs/utils/useResizeObserver.js +29 -0
  198. package/dist-cjs/utils/useResizeObserver.js.map +1 -0
  199. package/dist-cjs/utils/useValueEffect.js +124 -0
  200. package/dist-cjs/utils/useValueEffect.js.map +1 -0
  201. package/dist-cjs/viewport/ViewportProvider.js +78 -0
  202. package/dist-cjs/viewport/ViewportProvider.js.map +1 -1
  203. package/dist-es/accordion/Accordion.js +75 -0
  204. package/dist-es/accordion/Accordion.js.map +1 -1
  205. package/dist-es/accordion/AccordionContext.js +79 -0
  206. package/dist-es/accordion/AccordionContext.js.map +1 -1
  207. package/dist-es/accordion/AccordionGroup.js +76 -1
  208. package/dist-es/accordion/AccordionGroup.js.map +1 -1
  209. package/dist-es/accordion/AccordionHeader.js +73 -0
  210. package/dist-es/accordion/AccordionHeader.js.map +1 -1
  211. package/dist-es/accordion/AccordionPanel.js +75 -0
  212. package/dist-es/accordion/AccordionPanel.js.map +1 -1
  213. package/dist-es/aria-announcer/useAriaAnnouncer.js +78 -0
  214. package/dist-es/aria-announcer/useAriaAnnouncer.js.map +1 -1
  215. package/dist-es/avatar/Avatar.js +74 -0
  216. package/dist-es/avatar/Avatar.js.map +1 -1
  217. package/dist-es/avatar/useAvatarImage.js +79 -0
  218. package/dist-es/avatar/useAvatarImage.js.map +1 -1
  219. package/dist-es/badge/Badge.js +75 -0
  220. package/dist-es/badge/Badge.js.map +1 -1
  221. package/dist-es/banner/Banner.js +76 -2
  222. package/dist-es/banner/Banner.js.map +1 -1
  223. package/dist-es/banner/BannerActions.js +76 -1
  224. package/dist-es/banner/BannerActions.js.map +1 -1
  225. package/dist-es/banner/BannerContent.js +76 -1
  226. package/dist-es/banner/BannerContent.js.map +1 -1
  227. package/dist-es/border-item/BorderItem.js +75 -1
  228. package/dist-es/border-item/BorderItem.js.map +1 -1
  229. package/dist-es/border-layout/BorderLayout.js +76 -0
  230. package/dist-es/border-layout/BorderLayout.js.map +1 -1
  231. package/dist-es/button/Button.js +76 -1
  232. package/dist-es/button/Button.js.map +1 -1
  233. package/dist-es/card/Card.js +75 -0
  234. package/dist-es/card/Card.js.map +1 -1
  235. package/dist-es/card/InteractableCard.js +75 -0
  236. package/dist-es/card/InteractableCard.js.map +1 -1
  237. package/dist-es/checkbox/Checkbox.js +73 -0
  238. package/dist-es/checkbox/Checkbox.js.map +1 -1
  239. package/dist-es/checkbox/CheckboxGroup.js +74 -0
  240. package/dist-es/checkbox/CheckboxGroup.js.map +1 -1
  241. package/dist-es/checkbox/CheckboxIcon.js +75 -0
  242. package/dist-es/checkbox/CheckboxIcon.js.map +1 -1
  243. package/dist-es/checkbox/internal/CheckboxGroupContext.js +79 -0
  244. package/dist-es/checkbox/internal/CheckboxGroupContext.js.map +1 -1
  245. package/dist-es/combo-box/ComboBox.css.js +4 -0
  246. package/dist-es/combo-box/ComboBox.css.js.map +1 -0
  247. package/dist-es/combo-box/ComboBox.js +439 -0
  248. package/dist-es/combo-box/ComboBox.js.map +1 -0
  249. package/dist-es/combo-box/useComboBox.js +149 -0
  250. package/dist-es/combo-box/useComboBox.js.map +1 -0
  251. package/dist-es/dialog/Dialog.js +77 -3
  252. package/dist-es/dialog/Dialog.js.map +1 -1
  253. package/dist-es/dialog/DialogActions.js +76 -1
  254. package/dist-es/dialog/DialogActions.js.map +1 -1
  255. package/dist-es/dialog/DialogCloseButton.js +74 -1
  256. package/dist-es/dialog/DialogCloseButton.js.map +1 -1
  257. package/dist-es/dialog/DialogContent.js +76 -1
  258. package/dist-es/dialog/DialogContent.js.map +1 -1
  259. package/dist-es/dialog/DialogHeader.js +71 -3
  260. package/dist-es/dialog/DialogHeader.js.map +1 -1
  261. package/dist-es/drawer/Drawer.js +75 -2
  262. package/dist-es/drawer/Drawer.js.map +1 -1
  263. package/dist-es/drawer/DrawerCloseButton.js +74 -1
  264. package/dist-es/drawer/DrawerCloseButton.js.map +1 -1
  265. package/dist-es/dropdown/Dropdown.css.js +4 -0
  266. package/dist-es/dropdown/Dropdown.css.js.map +1 -0
  267. package/dist-es/dropdown/Dropdown.js +408 -0
  268. package/dist-es/dropdown/Dropdown.js.map +1 -0
  269. package/dist-es/file-drop-zone/FileDropZone.js +75 -0
  270. package/dist-es/file-drop-zone/FileDropZone.js.map +1 -1
  271. package/dist-es/file-drop-zone/FileDropZoneTrigger.js +76 -0
  272. package/dist-es/file-drop-zone/FileDropZoneTrigger.js.map +1 -1
  273. package/dist-es/flex-item/FlexItem.js +79 -2
  274. package/dist-es/flex-item/FlexItem.js.map +1 -1
  275. package/dist-es/flex-layout/FlexLayout.js +79 -2
  276. package/dist-es/flex-layout/FlexLayout.js.map +1 -1
  277. package/dist-es/form-field/FormField.js +74 -0
  278. package/dist-es/form-field/FormField.js.map +1 -1
  279. package/dist-es/form-field/FormFieldHelperText.js +70 -2
  280. package/dist-es/form-field/FormFieldHelperText.js.map +1 -1
  281. package/dist-es/form-field/FormFieldLabel.js +69 -0
  282. package/dist-es/form-field/FormFieldLabel.js.map +1 -1
  283. package/dist-es/form-field-context/FormFieldContext.js +78 -0
  284. package/dist-es/form-field-context/FormFieldContext.js.map +1 -1
  285. package/dist-es/grid-item/GridItem.js +79 -2
  286. package/dist-es/grid-item/GridItem.js.map +1 -1
  287. package/dist-es/grid-layout/GridLayout.js +79 -2
  288. package/dist-es/grid-layout/GridLayout.js.map +1 -1
  289. package/dist-es/index.js +8 -0
  290. package/dist-es/index.js.map +1 -1
  291. package/dist-es/input/Input.js +73 -0
  292. package/dist-es/input/Input.js.map +1 -1
  293. package/dist-es/link/Link.js +70 -2
  294. package/dist-es/link/Link.js.map +1 -1
  295. package/dist-es/link-card/LinkCard.js +75 -0
  296. package/dist-es/link-card/LinkCard.js.map +1 -1
  297. package/dist-es/list-control/ListControlContext.js +116 -0
  298. package/dist-es/list-control/ListControlContext.js.map +1 -0
  299. package/dist-es/list-control/ListControlState.js +271 -0
  300. package/dist-es/list-control/ListControlState.js.map +1 -0
  301. package/dist-es/multiline-input/MultilineInput.js +73 -0
  302. package/dist-es/multiline-input/MultilineInput.js.map +1 -1
  303. package/dist-es/navigation-item/NavigationItem.js +77 -2
  304. package/dist-es/navigation-item/NavigationItem.js.map +1 -1
  305. package/dist-es/option/Option.css.js +4 -0
  306. package/dist-es/option/Option.css.js.map +1 -0
  307. package/dist-es/option/Option.js +174 -0
  308. package/dist-es/option/Option.js.map +1 -0
  309. package/dist-es/option/OptionGroup.css.js +4 -0
  310. package/dist-es/option/OptionGroup.css.js.map +1 -0
  311. package/dist-es/option/OptionGroup.js +119 -0
  312. package/dist-es/option/OptionGroup.js.map +1 -0
  313. package/dist-es/option/OptionList.css.js +4 -0
  314. package/dist-es/option/OptionList.css.js.map +1 -0
  315. package/dist-es/option/OptionList.js +114 -0
  316. package/dist-es/option/OptionList.js.map +1 -0
  317. package/dist-es/option/OptionListBase.js +109 -0
  318. package/dist-es/option/OptionListBase.js.map +1 -0
  319. package/dist-es/pagination/CompactInput.js +76 -2
  320. package/dist-es/pagination/CompactInput.js.map +1 -1
  321. package/dist-es/pagination/CompactPaginator.js +69 -2
  322. package/dist-es/pagination/CompactPaginator.js.map +1 -1
  323. package/dist-es/pagination/GoToInput.js +68 -3
  324. package/dist-es/pagination/GoToInput.js.map +1 -1
  325. package/dist-es/pagination/PageButton.js +77 -2
  326. package/dist-es/pagination/PageButton.js.map +1 -1
  327. package/dist-es/pagination/PageRanges.js +78 -2
  328. package/dist-es/pagination/PageRanges.js.map +1 -1
  329. package/dist-es/pagination/Pagination.js +76 -2
  330. package/dist-es/pagination/Pagination.js.map +1 -1
  331. package/dist-es/pagination/Paginator.js +75 -2
  332. package/dist-es/pagination/Paginator.js.map +1 -1
  333. package/dist-es/panel/Panel.js +77 -2
  334. package/dist-es/panel/Panel.js.map +1 -1
  335. package/dist-es/pill/Pill.js +74 -0
  336. package/dist-es/pill/Pill.js.map +1 -1
  337. package/dist-es/pill-input/PillInput.css.js +4 -0
  338. package/dist-es/pill-input/PillInput.css.js.map +1 -0
  339. package/dist-es/pill-input/PillInput.js +334 -0
  340. package/dist-es/pill-input/PillInput.js.map +1 -0
  341. package/dist-es/pill-input/useTruncatePills.js +79 -0
  342. package/dist-es/pill-input/useTruncatePills.js.map +1 -0
  343. package/dist-es/progress/CircularProgress/CircularProgress.css.js +1 -1
  344. package/dist-es/progress/CircularProgress/CircularProgress.js +138 -14
  345. package/dist-es/progress/CircularProgress/CircularProgress.js.map +1 -1
  346. package/dist-es/progress/LinearProgress/LinearProgress.css.js +1 -1
  347. package/dist-es/progress/LinearProgress/LinearProgress.js +89 -8
  348. package/dist-es/progress/LinearProgress/LinearProgress.js.map +1 -1
  349. package/dist-es/radio-button/RadioButton.js +78 -4
  350. package/dist-es/radio-button/RadioButton.js.map +1 -1
  351. package/dist-es/radio-button/RadioButtonGroup.js +77 -3
  352. package/dist-es/radio-button/RadioButtonGroup.js.map +1 -1
  353. package/dist-es/radio-button/RadioButtonIcon.js +76 -0
  354. package/dist-es/radio-button/RadioButtonIcon.js.map +1 -1
  355. package/dist-es/radio-button/internal/RadioGroupContext.js +79 -0
  356. package/dist-es/radio-button/internal/RadioGroupContext.js.map +1 -1
  357. package/dist-es/salt-provider/SaltProvider.js +78 -3
  358. package/dist-es/salt-provider/SaltProvider.js.map +1 -1
  359. package/dist-es/scrim/Scrim.js +76 -1
  360. package/dist-es/scrim/Scrim.js.map +1 -1
  361. package/dist-es/spinner/Spinner.js +76 -2
  362. package/dist-es/spinner/Spinner.js.map +1 -1
  363. package/dist-es/spinner/svgSpinners/SpinnerSVG.js +78 -0
  364. package/dist-es/spinner/svgSpinners/SpinnerSVG.js.map +1 -1
  365. package/dist-es/split-layout/SplitLayout.js +76 -2
  366. package/dist-es/split-layout/SplitLayout.js.map +1 -1
  367. package/dist-es/stack-layout/StackLayout.js +78 -2
  368. package/dist-es/stack-layout/StackLayout.js.map +1 -1
  369. package/dist-es/status-adornment/StatusAdornment.js +75 -0
  370. package/dist-es/status-adornment/StatusAdornment.js.map +1 -1
  371. package/dist-es/status-indicator/StatusIndicator.js +76 -2
  372. package/dist-es/status-indicator/StatusIndicator.js.map +1 -1
  373. package/dist-es/switch/Switch.js +75 -2
  374. package/dist-es/switch/Switch.js.map +1 -1
  375. package/dist-es/text/Text.js +77 -2
  376. package/dist-es/text/Text.js.map +1 -1
  377. package/dist-es/toast/Toast.js +74 -0
  378. package/dist-es/toast/Toast.js.map +1 -1
  379. package/dist-es/toast/ToastContent.js +75 -0
  380. package/dist-es/toast/ToastContent.js.map +1 -1
  381. package/dist-es/toggle-button/ToggleButton.js +73 -0
  382. package/dist-es/toggle-button/ToggleButton.js.map +1 -1
  383. package/dist-es/toggle-button-group/ToggleButtonGroup.js +74 -0
  384. package/dist-es/toggle-button-group/ToggleButtonGroup.js.map +1 -1
  385. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js +78 -0
  386. package/dist-es/toggle-button-group/ToggleButtonGroupContext.js.map +1 -1
  387. package/dist-es/tooltip/Tooltip.js +75 -1
  388. package/dist-es/tooltip/Tooltip.js.map +1 -1
  389. package/dist-es/tooltip/TooltipBase.js +75 -2
  390. package/dist-es/tooltip/TooltipBase.js.map +1 -1
  391. package/dist-es/tooltip/useAriaAnnounce.js +77 -0
  392. package/dist-es/tooltip/useAriaAnnounce.js.map +1 -1
  393. package/dist-es/tooltip/useTooltip.js +78 -0
  394. package/dist-es/tooltip/useTooltip.js.map +1 -1
  395. package/dist-es/utils/ownerWindow.js.map +1 -1
  396. package/dist-es/utils/useEventCallback.js +16 -0
  397. package/dist-es/utils/useEventCallback.js.map +1 -0
  398. package/dist-es/utils/useResizeObserver.js +25 -0
  399. package/dist-es/utils/useResizeObserver.js.map +1 -0
  400. package/dist-es/utils/useValueEffect.js +120 -0
  401. package/dist-es/utils/useValueEffect.js.map +1 -0
  402. package/dist-es/viewport/ViewportProvider.js +78 -0
  403. package/dist-es/viewport/ViewportProvider.js.map +1 -1
  404. package/dist-types/combo-box/ComboBox.d.ts +17 -0
  405. package/dist-types/combo-box/index.d.ts +1 -0
  406. package/dist-types/combo-box/useComboBox.d.ts +30 -0
  407. package/dist-types/dialog/DialogHeader.d.ts +2 -4
  408. package/dist-types/dropdown/Dropdown.d.ts +99 -0
  409. package/dist-types/dropdown/index.d.ts +1 -0
  410. package/dist-types/index.d.ts +4 -0
  411. package/dist-types/list-control/ListControlContext.d.ts +21 -0
  412. package/dist-types/list-control/ListControlState.d.ts +70 -0
  413. package/dist-types/list-control/index.d.ts +1 -0
  414. package/dist-types/option/Option.d.ts +16 -0
  415. package/dist-types/option/OptionGroup.d.ts +12 -0
  416. package/dist-types/option/OptionList.d.ts +5 -0
  417. package/dist-types/option/OptionListBase.d.ts +4 -0
  418. package/dist-types/option/index.d.ts +2 -0
  419. package/dist-types/pill-input/PillInput.d.ts +48 -0
  420. package/dist-types/pill-input/index.d.ts +1 -0
  421. package/dist-types/pill-input/useTruncatePills.d.ts +8 -0
  422. package/dist-types/progress/CircularProgress/CircularProgress.d.ts +5 -0
  423. package/dist-types/progress/LinearProgress/LinearProgress.d.ts +5 -0
  424. package/dist-types/utils/index.d.ts +3 -0
  425. package/dist-types/utils/ownerWindow.d.ts +1 -1
  426. package/dist-types/utils/useEventCallback.d.ts +4 -0
  427. package/dist-types/utils/useResizeObserver.d.ts +6 -0
  428. package/dist-types/utils/useValueEffect.d.ts +4 -0
  429. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useTooltip.js","sources":["../src/tooltip/useTooltip.ts"],"sourcesContent":["import {\n arrow,\n flip,\n offset,\n safePolygon,\n shift,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n limitShift,\n} from \"@floating-ui/react\";\nimport { HTMLProps, useRef } from \"react\";\nimport { useControlled, UseFloatingUIProps, useFloatingUI } from \"../utils\";\nimport { useAriaAnnounce } from \"./useAriaAnnounce\";\n\nexport interface UseTooltipProps\n extends Partial<\n Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\" | \"placement\">\n > {\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 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,\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,\n handleClose: safePolygon(),\n }),\n useFocus(context, { enabled: !disableFocusListener }),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context),\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars -- tabIndex raises false positives because it is set to \"-1\".\n const { 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 flip,\n offset,\n safePolygon,\n shift,\n useDismiss,\n useFocus,\n useHover,\n useInteractions,\n useRole,\n limitShift,\n} from \"@floating-ui/react\";\nimport { HTMLProps, useRef } from \"react\";\nimport { useControlled, UseFloatingUIProps, useFloatingUI } from \"../utils\";\nimport { useAriaAnnounce } from \"./useAriaAnnounce\";\n\nexport interface UseTooltipProps\n extends Partial<\n Pick<UseFloatingUIProps, \"onOpenChange\" | \"open\" | \"placement\">\n > {\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 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,\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,\n handleClose: safePolygon(),\n }),\n useFocus(context, { enabled: !disableFocusListener }),\n useRole(context, { role: \"tooltip\" }),\n useDismiss(context),\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 // eslint-disable-next-line @typescript-eslint/no-unused-vars -- tabIndex raises false positives because it is set to \"-1\".\n const { 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 +1 @@
1
- {"version":3,"file":"ownerWindow.js","sources":["../src/utils/ownerWindow.ts"],"sourcesContent":["import { ownerDocument } from \"./ownerDocument\";\n\nexport function ownerWindow(node: Node | null | undefined): Window {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,YAAY,IAAuC,EAAA;AACjE,EAAM,MAAA,GAAA,GAAM,cAAc,IAAI,CAAA,CAAA;AAC9B,EAAA,OAAO,IAAI,WAAe,IAAA,MAAA,CAAA;AAC5B;;;;"}
1
+ {"version":3,"file":"ownerWindow.js","sources":["../src/utils/ownerWindow.ts"],"sourcesContent":["import { ownerDocument } from \"./ownerDocument\";\n\nexport function ownerWindow(node: Node | null | undefined) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,YAAY,IAA+B,EAAA;AACzD,EAAM,MAAA,GAAA,GAAM,cAAc,IAAI,CAAA,CAAA;AAC9B,EAAA,OAAO,IAAI,WAAe,IAAA,MAAA,CAAA;AAC5B;;;;"}
@@ -0,0 +1,16 @@
1
+ import { useRef, useCallback } from 'react';
2
+ import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';
3
+
4
+ function useEventCallback(fn) {
5
+ const ref = useRef(fn);
6
+ useIsomorphicLayoutEffect(() => {
7
+ ref.current = fn;
8
+ });
9
+ return useCallback(
10
+ (...args) => (0, ref.current)(...args),
11
+ []
12
+ );
13
+ }
14
+
15
+ export { useEventCallback };
16
+ //# sourceMappingURL=useEventCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEventCallback.js","sources":["../src/utils/useEventCallback.ts"],"sourcesContent":["import { useRef, useCallback } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"./useIsomorphicLayoutEffect\";\n\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n */\nexport function useEventCallback<Args extends unknown[], Return>(\n fn: (...args: Args) => Return\n): (...args: Args) => Return {\n const ref = useRef(fn);\n useIsomorphicLayoutEffect(() => {\n ref.current = fn;\n });\n return useCallback(\n (...args: Args) =>\n // tslint:disable-next-line:ban-comma-operator\n (void 0, ref.current)(...args),\n []\n );\n}\n"],"names":[],"mappings":";;;AAMO,SAAS,iBACd,EAC2B,EAAA;AAC3B,EAAM,MAAA,GAAA,GAAM,OAAO,EAAE,CAAA,CAAA;AACrB,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,GAAA,CAAI,OAAU,GAAA,EAAA,CAAA;AAAA,GACf,CAAA,CAAA;AACD,EAAO,OAAA,WAAA;AAAA,IACL,IAAI,IAED,KAAA,IAAQ,GAAI,CAAA,OAAA,EAAS,GAAG,IAAI,CAAA;AAAA,IAC/B,EAAC;AAAA,GACH,CAAA;AACF;;;;"}
@@ -0,0 +1,25 @@
1
+ import { useEffect } from 'react';
2
+ import { ownerWindow } from './ownerWindow.js';
3
+
4
+ function useResizeObserver({ ref, onResize }) {
5
+ useEffect(() => {
6
+ const element = ref == null ? void 0 : ref.current;
7
+ if (!element)
8
+ return;
9
+ const win = ownerWindow(element);
10
+ const resizeObserver = new win.ResizeObserver((entries) => {
11
+ if (entries.length === 0)
12
+ return;
13
+ onResize();
14
+ });
15
+ resizeObserver.observe(element);
16
+ return () => {
17
+ if (element) {
18
+ resizeObserver.unobserve(element);
19
+ }
20
+ };
21
+ }, [ref, onResize]);
22
+ }
23
+
24
+ export { useResizeObserver };
25
+ //# sourceMappingURL=useResizeObserver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useResizeObserver.js","sources":["../src/utils/useResizeObserver.ts"],"sourcesContent":["import { useEffect, RefObject } 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 if (entries.length === 0) return;\n\n onResize();\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,iBAAkB,CAAA,EAAE,GAAK,EAAA,QAAA,EAAoC,EAAA;AAC3E,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,MAAM,UAAU,GAAK,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,GAAA,CAAA,OAAA,CAAA;AACrB,IAAA,IAAI,CAAC,OAAA;AAAS,MAAA,OAAA;AAEd,IAAM,MAAA,GAAA,GAAM,YAAY,OAAO,CAAA,CAAA;AAE/B,IAAA,MAAM,cAAiB,GAAA,IAAI,GAAI,CAAA,cAAA,CAAe,CAAC,OAAY,KAAA;AACzD,MAAA,IAAI,QAAQ,MAAW,KAAA,CAAA;AAAG,QAAA,OAAA;AAE1B,MAAS,QAAA,EAAA,CAAA;AAAA,KACV,CAAA,CAAA;AACD,IAAA,cAAA,CAAe,QAAQ,OAAO,CAAA,CAAA;AAE9B,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,OAAS,EAAA;AACX,QAAA,cAAA,CAAe,UAAU,OAAO,CAAA,CAAA;AAAA,OAClC;AAAA,KACF,CAAA;AAAA,GACC,EAAA,CAAC,GAAK,EAAA,QAAQ,CAAC,CAAA,CAAA;AACpB;;;;"}
@@ -0,0 +1,120 @@
1
+ import { useState, useRef } from 'react';
2
+ import '../accordion/AccordionGroup.js';
3
+ import '../accordion/AccordionPanel.js';
4
+ import '../accordion/Accordion.js';
5
+ import '../accordion/AccordionHeader.js';
6
+ import '../aria-announcer/AriaAnnouncerContext.js';
7
+ import 'react/jsx-runtime';
8
+ import './useFloatingUI/useFloatingUI.js';
9
+ import './useId.js';
10
+ import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.js';
11
+ import '../salt-provider/SaltProvider.js';
12
+ import '../viewport/ViewportProvider.js';
13
+ import 'clsx';
14
+ import { useEventCallback } from './useEventCallback.js';
15
+ import '../avatar/Avatar.js';
16
+ import '../badge/Badge.js';
17
+ import '../banner/Banner.js';
18
+ import '../banner/BannerActions.js';
19
+ import '../banner/BannerContent.js';
20
+ import '../border-item/BorderItem.js';
21
+ import '../border-layout/BorderLayout.js';
22
+ import '../button/Button.js';
23
+ import '../card/Card.js';
24
+ import '../card/InteractableCard.js';
25
+ import '../checkbox/Checkbox.js';
26
+ import '../checkbox/CheckboxGroup.js';
27
+ import '@salt-ds/styles';
28
+ import '@salt-ds/window';
29
+ import '@salt-ds/icons';
30
+ import '../combo-box/ComboBox.js';
31
+ import '../dialog/Dialog.js';
32
+ import '../status-indicator/StatusIndicator.js';
33
+ import '../text/Text.js';
34
+ import '../text/Display.js';
35
+ import '../text/Headings.js';
36
+ import '../text/Label.js';
37
+ import '../text/TextNotation.js';
38
+ import '../text/TextAction.js';
39
+ import '../dialog/DialogContext.js';
40
+ import '../dialog/DialogActions.js';
41
+ import '../dialog/DialogContent.js';
42
+ import '../dialog/DialogCloseButton.js';
43
+ import '../drawer/Drawer.js';
44
+ import '../drawer/DrawerCloseButton.js';
45
+ import '../dropdown/Dropdown.js';
46
+ import '../file-drop-zone/FileDropZone.js';
47
+ import '../file-drop-zone/FileDropZoneIcon.js';
48
+ import '../file-drop-zone/FileDropZoneTrigger.js';
49
+ import '../flex-item/FlexItem.js';
50
+ import '../flex-layout/FlexLayout.js';
51
+ import '../flow-layout/FlowLayout.js';
52
+ import '../form-field/FormField.js';
53
+ import '../form-field-context/FormFieldContext.js';
54
+ import '../grid-item/GridItem.js';
55
+ import '../grid-layout/GridLayout.js';
56
+ import '../input/Input.js';
57
+ import '../link/Link.js';
58
+ import '../link-card/LinkCard.js';
59
+ import '../list-control/ListControlContext.js';
60
+ import '../multiline-input/MultilineInput.js';
61
+ import '../navigation-item/NavigationItem.js';
62
+ import '../option/Option.js';
63
+ import '../option/OptionGroup.js';
64
+ import '../pagination/Pagination.js';
65
+ import '../pagination/Paginator.js';
66
+ import '../pagination/CompactInput.js';
67
+ import '../pagination/CompactPaginator.js';
68
+ import '../pagination/GoToInput.js';
69
+ import '../panel/Panel.js';
70
+ import '../pill/Pill.js';
71
+ import '../progress/CircularProgress/CircularProgress.js';
72
+ import '../progress/LinearProgress/LinearProgress.js';
73
+ import '../radio-button/RadioButton.js';
74
+ import '../radio-button/RadioButtonGroup.js';
75
+ import '../scrim/Scrim.js';
76
+ import '../spinner/Spinner.js';
77
+ import '../stack-layout/StackLayout.js';
78
+ import '../status-adornment/StatusAdornment.js';
79
+ import '../toast/Toast.js';
80
+ import '../toast/ToastContent.js';
81
+ import '../split-layout/SplitLayout.js';
82
+ import '../switch/Switch.js';
83
+ import '../toggle-button/ToggleButton.js';
84
+ import '../toggle-button-group/ToggleButtonGroup.js';
85
+ import '../toggle-button-group/ToggleButtonGroupContext.js';
86
+ import '../tooltip/Tooltip.js';
87
+ import '@floating-ui/react';
88
+
89
+ function useValueEffect(defaultValue) {
90
+ const [value, setValue] = useState(defaultValue);
91
+ const effect = useRef(null);
92
+ const nextRef = useEventCallback(() => {
93
+ if (!effect.current) {
94
+ return;
95
+ }
96
+ const newValue = effect.current.next();
97
+ if (newValue.done) {
98
+ effect.current = null;
99
+ return;
100
+ }
101
+ if (value === newValue.value) {
102
+ nextRef();
103
+ } else {
104
+ setValue(newValue.value);
105
+ }
106
+ });
107
+ useIsomorphicLayoutEffect(() => {
108
+ if (effect.current) {
109
+ nextRef();
110
+ }
111
+ });
112
+ const queue = useEventCallback((fn) => {
113
+ effect.current = fn(value);
114
+ nextRef();
115
+ });
116
+ return [value, queue];
117
+ }
118
+
119
+ export { useValueEffect };
120
+ //# sourceMappingURL=useValueEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValueEffect.js","sources":["../src/utils/useValueEffect.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { Dispatch, MutableRefObject, useRef, useState } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../index\";\nimport { useEventCallback } from \"./useEventCallback\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype SetValueAction<S> = (prev: S) => Generator<any, void, unknown>;\n\n// This hook works like `useState`, but when setting the value, you pass a generator function\n// that can yield multiple values. Each yielded value updates the state and waits for the next\n// layout effect, then continues the generator. This allows sequential updates to state to be\n// written linearly.\nexport function useValueEffect<S>(\n defaultValue: S | (() => S)\n): [S, Dispatch<SetValueAction<S>>] {\n const [value, setValue] = useState(defaultValue);\n const effect: MutableRefObject<Generator<S> | null> =\n useRef<Generator<S> | null>(null);\n\n // Store the function in a ref so we can always access the current version\n // which has the proper `value` in scope.\n const nextRef = useEventCallback(() => {\n if (!effect.current) {\n return;\n }\n // Run the generator to the next yield.\n const newValue = effect.current.next();\n\n // If the generator is done, reset the effect.\n if (newValue.done) {\n effect.current = null;\n return;\n }\n\n // If the value is the same as the current value,\n // then continue to the next yield. Otherwise,\n // set the value in state and wait for the next layout effect.\n if (value === newValue.value) {\n nextRef();\n } else {\n setValue(newValue.value);\n }\n });\n\n useIsomorphicLayoutEffect(() => {\n // If there is an effect currently running, continue to the next yield.\n if (effect.current) {\n nextRef();\n }\n });\n\n const queue: Dispatch<SetValueAction<S>> = useEventCallback((fn) => {\n effect.current = fn(value);\n nextRef();\n });\n\n return [value, queue];\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBO,SAAS,eACd,YACkC,EAAA;AAClC,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,YAAY,CAAA,CAAA;AAC/C,EAAM,MAAA,MAAA,GACJ,OAA4B,IAAI,CAAA,CAAA;AAIlC,EAAM,MAAA,OAAA,GAAU,iBAAiB,MAAM;AACrC,IAAI,IAAA,CAAC,OAAO,OAAS,EAAA;AACnB,MAAA,OAAA;AAAA,KACF;AAEA,IAAM,MAAA,QAAA,GAAW,MAAO,CAAA,OAAA,CAAQ,IAAK,EAAA,CAAA;AAGrC,IAAA,IAAI,SAAS,IAAM,EAAA;AACjB,MAAA,MAAA,CAAO,OAAU,GAAA,IAAA,CAAA;AACjB,MAAA,OAAA;AAAA,KACF;AAKA,IAAI,IAAA,KAAA,KAAU,SAAS,KAAO,EAAA;AAC5B,MAAQ,OAAA,EAAA,CAAA;AAAA,KACH,MAAA;AACL,MAAA,QAAA,CAAS,SAAS,KAAK,CAAA,CAAA;AAAA,KACzB;AAAA,GACD,CAAA,CAAA;AAED,EAAA,yBAAA,CAA0B,MAAM;AAE9B,IAAA,IAAI,OAAO,OAAS,EAAA;AAClB,MAAQ,OAAA,EAAA,CAAA;AAAA,KACV;AAAA,GACD,CAAA,CAAA;AAED,EAAM,MAAA,KAAA,GAAqC,gBAAiB,CAAA,CAAC,EAAO,KAAA;AAClE,IAAO,MAAA,CAAA,OAAA,GAAU,GAAG,KAAK,CAAA,CAAA;AACzB,IAAQ,OAAA,EAAA,CAAA;AAAA,GACT,CAAA,CAAA;AAED,EAAO,OAAA,CAAC,OAAO,KAAK,CAAA,CAAA;AACtB;;;;"}
@@ -5,6 +5,84 @@ import '../utils/useId.js';
5
5
  import { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect.js';
6
6
  import '../salt-provider/SaltProvider.js';
7
7
  import 'clsx';
8
+ import '../accordion/AccordionGroup.js';
9
+ import '../accordion/AccordionPanel.js';
10
+ import '../accordion/Accordion.js';
11
+ import '../accordion/AccordionHeader.js';
12
+ import '../aria-announcer/AriaAnnouncerContext.js';
13
+ import '../avatar/Avatar.js';
14
+ import '../badge/Badge.js';
15
+ import '../banner/Banner.js';
16
+ import '../banner/BannerActions.js';
17
+ import '../banner/BannerContent.js';
18
+ import '../border-item/BorderItem.js';
19
+ import '../border-layout/BorderLayout.js';
20
+ import '../button/Button.js';
21
+ import '../card/Card.js';
22
+ import '../card/InteractableCard.js';
23
+ import '../checkbox/Checkbox.js';
24
+ import '../checkbox/CheckboxGroup.js';
25
+ import '@salt-ds/styles';
26
+ import '@salt-ds/window';
27
+ import '@salt-ds/icons';
28
+ import '../combo-box/ComboBox.js';
29
+ import '../dialog/Dialog.js';
30
+ import '../status-indicator/StatusIndicator.js';
31
+ import '../text/Text.js';
32
+ import '../text/Display.js';
33
+ import '../text/Headings.js';
34
+ import '../text/Label.js';
35
+ import '../text/TextNotation.js';
36
+ import '../text/TextAction.js';
37
+ import '../dialog/DialogContext.js';
38
+ import '../dialog/DialogActions.js';
39
+ import '../dialog/DialogContent.js';
40
+ import '../dialog/DialogCloseButton.js';
41
+ import '../drawer/Drawer.js';
42
+ import '../drawer/DrawerCloseButton.js';
43
+ import '../dropdown/Dropdown.js';
44
+ import '../file-drop-zone/FileDropZone.js';
45
+ import '../file-drop-zone/FileDropZoneIcon.js';
46
+ import '../file-drop-zone/FileDropZoneTrigger.js';
47
+ import '../flex-item/FlexItem.js';
48
+ import '../flex-layout/FlexLayout.js';
49
+ import '../flow-layout/FlowLayout.js';
50
+ import '../form-field/FormField.js';
51
+ import '../form-field-context/FormFieldContext.js';
52
+ import '../grid-item/GridItem.js';
53
+ import '../grid-layout/GridLayout.js';
54
+ import '../input/Input.js';
55
+ import '../link/Link.js';
56
+ import '../link-card/LinkCard.js';
57
+ import '../list-control/ListControlContext.js';
58
+ import '../multiline-input/MultilineInput.js';
59
+ import '../navigation-item/NavigationItem.js';
60
+ import '../option/Option.js';
61
+ import '../option/OptionGroup.js';
62
+ import '../pagination/Pagination.js';
63
+ import '../pagination/Paginator.js';
64
+ import '../pagination/CompactInput.js';
65
+ import '../pagination/CompactPaginator.js';
66
+ import '../pagination/GoToInput.js';
67
+ import '../panel/Panel.js';
68
+ import '../pill/Pill.js';
69
+ import '../progress/CircularProgress/CircularProgress.js';
70
+ import '../progress/LinearProgress/LinearProgress.js';
71
+ import '../radio-button/RadioButton.js';
72
+ import '../radio-button/RadioButtonGroup.js';
73
+ import '../scrim/Scrim.js';
74
+ import '../spinner/Spinner.js';
75
+ import '../stack-layout/StackLayout.js';
76
+ import '../status-adornment/StatusAdornment.js';
77
+ import '../toast/Toast.js';
78
+ import '../toast/ToastContent.js';
79
+ import '../split-layout/SplitLayout.js';
80
+ import '../switch/Switch.js';
81
+ import '../toggle-button/ToggleButton.js';
82
+ import '../toggle-button-group/ToggleButtonGroup.js';
83
+ import '../toggle-button-group/ToggleButtonGroupContext.js';
84
+ import '../tooltip/Tooltip.js';
85
+ import '@floating-ui/react';
8
86
 
9
87
  const ViewportContext = createContext(null);
10
88
  const ViewportProvider = ({ children }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"ViewportProvider.js","sources":["../src/viewport/ViewportProvider.tsx"],"sourcesContent":["import { createContext, useState, useContext, ReactNode } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nconst ViewportContext = createContext<number | null>(null);\n\ntype ViewportProviderProps = {\n children?: ReactNode;\n};\n\nconst ViewportProvider = ({ children }: ViewportProviderProps) => {\n // Get value directly from the ViewportContext so we can detect if the value is null (no inherited ViewportProvider)\n const existingViewport = useContext(ViewportContext);\n const [viewport, setViewport] = useState(existingViewport);\n\n const noExistingViewport = existingViewport === null;\n const viewportValue = existingViewport || viewport || 0;\n\n useIsomorphicLayoutEffect(() => {\n let observer: ResizeObserver | null = null;\n\n if (noExistingViewport) {\n observer = new ResizeObserver(\n (observerEntries: ResizeObserverEntry[]) => {\n setViewport(observerEntries[0].contentRect.width);\n }\n );\n\n observer.observe(document.body);\n setViewport(document.body.getBoundingClientRect().width);\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n };\n }, [noExistingViewport]);\n\n return (\n <ViewportContext.Provider value={viewportValue}>\n {children}\n </ViewportContext.Provider>\n );\n};\n\nconst useViewport = (): number => {\n const value = useContext(ViewportContext);\n return value === null ? 0 : value;\n};\n\nexport { ViewportProvider, ViewportContext, useViewport };\n"],"names":[],"mappings":";;;;;;;;AAGM,MAAA,eAAA,GAAkB,cAA6B,IAAI,EAAA;AAMzD,MAAM,gBAAmB,GAAA,CAAC,EAAE,QAAA,EAAsC,KAAA;AAEhE,EAAM,MAAA,gBAAA,GAAmB,WAAW,eAAe,CAAA,CAAA;AACnD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,gBAAgB,CAAA,CAAA;AAEzD,EAAA,MAAM,qBAAqB,gBAAqB,KAAA,IAAA,CAAA;AAChD,EAAM,MAAA,aAAA,GAAgB,oBAAoB,QAAY,IAAA,CAAA,CAAA;AAEtD,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,QAAkC,GAAA,IAAA,CAAA;AAEtC,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAA,QAAA,GAAW,IAAI,cAAA;AAAA,QACb,CAAC,eAA2C,KAAA;AAC1C,UAAY,WAAA,CAAA,eAAA,CAAgB,CAAG,CAAA,CAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAAA,SAClD;AAAA,OACF,CAAA;AAEA,MAAS,QAAA,CAAA,OAAA,CAAQ,SAAS,IAAI,CAAA,CAAA;AAC9B,MAAA,WAAA,CAAY,QAAS,CAAA,IAAA,CAAK,qBAAsB,EAAA,CAAE,KAAK,CAAA,CAAA;AAAA,KACzD;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,QAAA,CAAS,UAAW,EAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,EACE,uBAAA,GAAA,CAAC,gBAAgB,QAAhB,EAAA;AAAA,IAAyB,KAAO,EAAA,aAAA;AAAA,IAC9B,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,cAAc,MAAc;AAChC,EAAM,MAAA,KAAA,GAAQ,WAAW,eAAe,CAAA,CAAA;AACxC,EAAO,OAAA,KAAA,KAAU,OAAO,CAAI,GAAA,KAAA,CAAA;AAC9B;;;;"}
1
+ {"version":3,"file":"ViewportProvider.js","sources":["../src/viewport/ViewportProvider.tsx"],"sourcesContent":["import { createContext, useState, useContext, ReactNode } from \"react\";\nimport { useIsomorphicLayoutEffect } from \"../utils\";\n\nconst ViewportContext = createContext<number | null>(null);\n\ntype ViewportProviderProps = {\n children?: ReactNode;\n};\n\nconst ViewportProvider = ({ children }: ViewportProviderProps) => {\n // Get value directly from the ViewportContext so we can detect if the value is null (no inherited ViewportProvider)\n const existingViewport = useContext(ViewportContext);\n const [viewport, setViewport] = useState(existingViewport);\n\n const noExistingViewport = existingViewport === null;\n const viewportValue = existingViewport || viewport || 0;\n\n useIsomorphicLayoutEffect(() => {\n let observer: ResizeObserver | null = null;\n\n if (noExistingViewport) {\n observer = new ResizeObserver(\n (observerEntries: ResizeObserverEntry[]) => {\n setViewport(observerEntries[0].contentRect.width);\n }\n );\n\n observer.observe(document.body);\n setViewport(document.body.getBoundingClientRect().width);\n }\n\n return () => {\n if (observer) {\n observer.disconnect();\n }\n };\n }, [noExistingViewport]);\n\n return (\n <ViewportContext.Provider value={viewportValue}>\n {children}\n </ViewportContext.Provider>\n );\n};\n\nconst useViewport = (): number => {\n const value = useContext(ViewportContext);\n return value === null ? 0 : value;\n};\n\nexport { ViewportProvider, ViewportContext, useViewport };\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGM,MAAA,eAAA,GAAkB,cAA6B,IAAI,EAAA;AAMzD,MAAM,gBAAmB,GAAA,CAAC,EAAE,QAAA,EAAsC,KAAA;AAEhE,EAAM,MAAA,gBAAA,GAAmB,WAAW,eAAe,CAAA,CAAA;AACnD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAS,gBAAgB,CAAA,CAAA;AAEzD,EAAA,MAAM,qBAAqB,gBAAqB,KAAA,IAAA,CAAA;AAChD,EAAM,MAAA,aAAA,GAAgB,oBAAoB,QAAY,IAAA,CAAA,CAAA;AAEtD,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,IAAI,QAAkC,GAAA,IAAA,CAAA;AAEtC,IAAA,IAAI,kBAAoB,EAAA;AACtB,MAAA,QAAA,GAAW,IAAI,cAAA;AAAA,QACb,CAAC,eAA2C,KAAA;AAC1C,UAAY,WAAA,CAAA,eAAA,CAAgB,CAAG,CAAA,CAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAAA,SAClD;AAAA,OACF,CAAA;AAEA,MAAS,QAAA,CAAA,OAAA,CAAQ,SAAS,IAAI,CAAA,CAAA;AAC9B,MAAA,WAAA,CAAY,QAAS,CAAA,IAAA,CAAK,qBAAsB,EAAA,CAAE,KAAK,CAAA,CAAA;AAAA,KACzD;AAEA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,QAAA,CAAS,UAAW,EAAA,CAAA;AAAA,OACtB;AAAA,KACF,CAAA;AAAA,GACF,EAAG,CAAC,kBAAkB,CAAC,CAAA,CAAA;AAEvB,EACE,uBAAA,GAAA,CAAC,gBAAgB,QAAhB,EAAA;AAAA,IAAyB,KAAO,EAAA,aAAA;AAAA,IAC9B,QAAA;AAAA,GACH,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,cAAc,MAAc;AAChC,EAAM,MAAA,KAAA,GAAQ,WAAW,eAAe,CAAA,CAAA;AACxC,EAAO,OAAA,KAAA,KAAU,OAAO,CAAI,GAAA,KAAA,CAAA;AAC9B;;;;"}
@@ -0,0 +1,17 @@
1
+ import { ReactNode, Ref } from "react";
2
+ import { UseComboBoxProps } from "./useComboBox";
3
+ import { PillInputProps } from "../pill-input";
4
+ export declare type ComboBoxProps<Item = string> = {
5
+ /**
6
+ * The options to display in the combo box.
7
+ */
8
+ children?: ReactNode;
9
+ } & UseComboBoxProps<Item> & PillInputProps;
10
+ export declare const ComboBox: <Item = string>(props: {
11
+ /**
12
+ * The options to display in the combo box.
13
+ */
14
+ children?: ReactNode;
15
+ } & import("../list-control/ListControlState").ListControlProps<Item> & Pick<Omit<import("react").DetailedHTMLProps<import("react").InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref">, "defaultValue" | "value"> & PillInputProps & {
16
+ ref?: Ref<HTMLDivElement> | undefined;
17
+ }) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./ComboBox";
@@ -0,0 +1,30 @@
1
+ import { ComponentPropsWithoutRef, SyntheticEvent } from "react";
2
+ import { ListControlProps } from "../list-control/ListControlState";
3
+ import { OptionValue } from "../list-control/ListControlContext";
4
+ export declare type UseComboBoxProps<Item> = ListControlProps<Item> & Pick<ComponentPropsWithoutRef<"input">, "value" | "defaultValue">;
5
+ export declare function useComboBox<Item>(props: UseComboBoxProps<Item>): {
6
+ select: (event: SyntheticEvent, option: OptionValue<Item>) => void;
7
+ valueState: string | number | readonly string[] | undefined;
8
+ setValueState: import("react").Dispatch<import("react").SetStateAction<string | number | readonly string[] | undefined>>;
9
+ multiselect: boolean;
10
+ openState: boolean;
11
+ setOpen: (newOpen: boolean, reason?: import("../list-control/ListControlState").OpenChangeReason | undefined, key?: string | undefined) => void;
12
+ openKey: import("react").MutableRefObject<string | undefined>;
13
+ activeState: OptionValue<Item> | undefined;
14
+ setActive: (option?: OptionValue<Item> | undefined) => void;
15
+ selectedState: Item[];
16
+ setSelectedState: import("react").Dispatch<import("react").SetStateAction<Item[]>>;
17
+ clear: (event: SyntheticEvent<Element, Event>) => void;
18
+ focusVisibleState: boolean;
19
+ setFocusVisibleState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
20
+ focusedState: boolean;
21
+ setFocusedState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
22
+ listRef: import("react").RefObject<HTMLDivElement>;
23
+ options: HTMLElement[];
24
+ register: (optionValue: OptionValue<Item>, element: HTMLElement) => () => void;
25
+ getOptionAtIndex: (index: number) => OptionValue<Item>;
26
+ getIndexOfOption: (option: OptionValue<Item>) => number;
27
+ getOptionsMatching: (predicate: (option: OptionValue<Item>) => boolean) => OptionValue<Item>[];
28
+ getOptionFromSearch: (search: string, startFrom?: OptionValue<Item> | undefined) => OptionValue<Item> | undefined;
29
+ valueToString: (item: Item) => string;
30
+ };
@@ -1,6 +1,6 @@
1
1
  import { ReactNode, ComponentPropsWithoutRef } from "react";
2
2
  import { ValidationStatus } from "../status-indicator";
3
- interface DialogTitleProps extends ComponentPropsWithoutRef<"div"> {
3
+ export interface DialogHeaderProps extends ComponentPropsWithoutRef<"div"> {
4
4
  /**
5
5
  * The status of the Dialog
6
6
  */
@@ -16,7 +16,5 @@ interface DialogTitleProps extends ComponentPropsWithoutRef<"div"> {
16
16
  * Displays the preheader just above the header
17
17
  **/
18
18
  preheader?: ReactNode;
19
- className?: string;
20
19
  }
21
- export declare const DialogHeader: ({ className, header, preheader, disableAccent, status: statusProp, ...rest }: DialogTitleProps) => JSX.Element;
22
- export {};
20
+ export declare const DialogHeader: ({ className, header, preheader, disableAccent, status: statusProp, ...rest }: DialogHeaderProps) => JSX.Element;
@@ -0,0 +1,99 @@
1
+ import { ComponentPropsWithoutRef, ReactNode, Ref } from "react";
2
+ import { ListControlProps } from "../list-control/ListControlState";
3
+ import { ValidationStatus } from "../status-indicator";
4
+ export declare type DropdownProps<Item = string> = {
5
+ /**
6
+ * If `true`, the dropdown will be disabled.
7
+ */
8
+ disabled?: boolean;
9
+ /**
10
+ * If `true`, the dropdown will be read-only.
11
+ */
12
+ readOnly?: boolean;
13
+ /**
14
+ * The options to display in the dropdown.
15
+ */
16
+ children?: ReactNode;
17
+ /**
18
+ * The marker to use in an empty read only dropdown.
19
+ * Use `''` to disable this feature. Defaults to '—'.
20
+ */
21
+ emptyReadOnlyMarker?: string;
22
+ /**
23
+ * If `true`, the dropdown will be multiselect.
24
+ */
25
+ multiselect?: boolean;
26
+ /**
27
+ * The text shown when the dropdown has no value.
28
+ */
29
+ placeholder?: string;
30
+ /**
31
+ * If `true`, the dropdown will be required.
32
+ */
33
+ required?: boolean;
34
+ /**
35
+ * Start adornment component
36
+ */
37
+ startAdornment?: ReactNode;
38
+ /**
39
+ * Styling variant. Defaults to "primary".
40
+ */
41
+ variant?: "primary" | "secondary";
42
+ /**
43
+ * The content of the dropdown shown in the button. The component will be controlled if this prop is provided.
44
+ */
45
+ value?: string;
46
+ /**
47
+ * Validation status, one of "error" | "warning" | "success".
48
+ */
49
+ validationStatus?: Exclude<ValidationStatus, "info">;
50
+ } & Omit<ComponentPropsWithoutRef<"button">, "value" | "defaultValue"> & ListControlProps<Item>;
51
+ export declare const Dropdown: <Item = string>(props: {
52
+ /**
53
+ * If `true`, the dropdown will be disabled.
54
+ */
55
+ disabled?: boolean | undefined;
56
+ /**
57
+ * If `true`, the dropdown will be read-only.
58
+ */
59
+ readOnly?: boolean | undefined;
60
+ /**
61
+ * The options to display in the dropdown.
62
+ */
63
+ children?: ReactNode;
64
+ /**
65
+ * The marker to use in an empty read only dropdown.
66
+ * Use `''` to disable this feature. Defaults to '—'.
67
+ */
68
+ emptyReadOnlyMarker?: string | undefined;
69
+ /**
70
+ * If `true`, the dropdown will be multiselect.
71
+ */
72
+ multiselect?: boolean | undefined;
73
+ /**
74
+ * The text shown when the dropdown has no value.
75
+ */
76
+ placeholder?: string | undefined;
77
+ /**
78
+ * If `true`, the dropdown will be required.
79
+ */
80
+ required?: boolean | undefined;
81
+ /**
82
+ * Start adornment component
83
+ */
84
+ startAdornment?: ReactNode;
85
+ /**
86
+ * Styling variant. Defaults to "primary".
87
+ */
88
+ variant?: "primary" | "secondary" | undefined;
89
+ /**
90
+ * The content of the dropdown shown in the button. The component will be controlled if this prop is provided.
91
+ */
92
+ value?: string | undefined;
93
+ /**
94
+ * Validation status, one of "error" | "warning" | "success".
95
+ */
96
+ validationStatus?: "error" | "warning" | "success" | undefined;
97
+ } & Omit<Omit<import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref">, "defaultValue" | "value"> & ListControlProps<Item> & {
98
+ ref?: Ref<HTMLButtonElement> | undefined;
99
+ }) => JSX.Element;
@@ -0,0 +1 @@
1
+ export * from "./Dropdown";
@@ -9,8 +9,10 @@ export * from "./breakpoints";
9
9
  export * from "./button";
10
10
  export * from "./card";
11
11
  export * from "./checkbox";
12
+ export * from "./combo-box";
12
13
  export * from "./dialog";
13
14
  export * from "./drawer";
15
+ export * from "./dropdown";
14
16
  export * from "./file-drop-zone";
15
17
  export * from "./flex-item";
16
18
  export * from "./flex-layout";
@@ -22,8 +24,10 @@ export * from "./grid-layout";
22
24
  export * from "./input";
23
25
  export * from "./link";
24
26
  export * from "./link-card";
27
+ export { useListControlContext } from "./list-control";
25
28
  export * from "./multiline-input";
26
29
  export * from "./navigation-item";
30
+ export * from "./option";
27
31
  export * from "./pagination";
28
32
  export * from "./panel";
29
33
  export * from "./pill";
@@ -0,0 +1,21 @@
1
+ import { SyntheticEvent } from "react";
2
+ export interface OptionValue<Item> {
3
+ id: string;
4
+ disabled: boolean;
5
+ value: Item;
6
+ }
7
+ export declare type OpenChangeReason = "input" | "manual";
8
+ export interface ListControlContextValue<Item> {
9
+ openState: boolean;
10
+ setOpen: (newOpen: boolean, openChangeReason?: OpenChangeReason) => void;
11
+ register: (optionValue: OptionValue<Item>, element: HTMLElement) => () => void;
12
+ selectedState: unknown[];
13
+ select: (event: SyntheticEvent, option: OptionValue<Item>) => void;
14
+ activeState?: OptionValue<Item>;
15
+ setActive: (option: OptionValue<Item>) => void;
16
+ multiselect: boolean;
17
+ focusVisibleState: boolean;
18
+ valueToString: (item: Item) => string;
19
+ }
20
+ export declare const ListControlContext: import("react").Context<ListControlContextValue<any>>;
21
+ export declare function useListControlContext<Item>(): ListControlContextValue<Item>;
@@ -0,0 +1,70 @@
1
+ import { SyntheticEvent } from "react";
2
+ import { OptionValue } from "./ListControlContext";
3
+ export declare type OpenChangeReason = "input" | "manual";
4
+ export declare type ListControlProps<Item> = {
5
+ /**
6
+ * If true, the control will be disabled.
7
+ */
8
+ disabled?: boolean;
9
+ /**
10
+ * If true, the control will be read-only.
11
+ */
12
+ readOnly?: boolean;
13
+ /**
14
+ * If true, the list will be open by default.
15
+ */
16
+ defaultOpen?: boolean;
17
+ /**
18
+ * If true, the list will be open. Useful for controlling the component.
19
+ */
20
+ open?: boolean;
21
+ /**
22
+ * Callback fired when the open state changes.
23
+ */
24
+ onOpenChange?: (newOpen: boolean, reason?: OpenChangeReason) => void;
25
+ /**
26
+ * The default selected options. If this is provided `defaultValue` should be provided as well.
27
+ */
28
+ defaultSelected?: Item[];
29
+ /**
30
+ * The selected options. The component will be controlled if this prop is provided.
31
+ */
32
+ selected?: Item[];
33
+ /**
34
+ * Callback fired when the selected options change.
35
+ */
36
+ onSelectionChange?: (event: SyntheticEvent, newSelected: Item[]) => void;
37
+ /**
38
+ * If true, multiple options can be selected.
39
+ */
40
+ multiselect?: boolean;
41
+ /**
42
+ * Callback used to convert an option's `value` to a string. This is needed when the value is different to the display value or the value is not a string.
43
+ */
44
+ valueToString?: (item: Item) => string;
45
+ };
46
+ export declare function defaultValueToString<Item>(item: Item): string;
47
+ export declare function useListControl<Item>(props: ListControlProps<Item>): {
48
+ multiselect: boolean;
49
+ openState: boolean;
50
+ setOpen: (newOpen: boolean, reason?: OpenChangeReason | undefined, key?: string | undefined) => void;
51
+ openKey: import("react").MutableRefObject<string | undefined>;
52
+ activeState: OptionValue<Item> | undefined;
53
+ setActive: (option?: OptionValue<Item> | undefined) => void;
54
+ selectedState: Item[];
55
+ setSelectedState: import("react").Dispatch<import("react").SetStateAction<Item[]>>;
56
+ select: (event: SyntheticEvent, option: OptionValue<Item>) => void;
57
+ clear: (event: SyntheticEvent) => void;
58
+ focusVisibleState: boolean;
59
+ setFocusVisibleState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
60
+ focusedState: boolean;
61
+ setFocusedState: import("react").Dispatch<import("react").SetStateAction<boolean>>;
62
+ listRef: import("react").RefObject<HTMLDivElement>;
63
+ options: HTMLElement[];
64
+ register: (optionValue: OptionValue<Item>, element: HTMLElement) => () => void;
65
+ getOptionAtIndex: (index: number) => OptionValue<Item>;
66
+ getIndexOfOption: (option: OptionValue<Item>) => number;
67
+ getOptionsMatching: (predicate: (option: OptionValue<Item>) => boolean) => OptionValue<Item>[];
68
+ getOptionFromSearch: (search: string, startFrom?: OptionValue<Item> | undefined) => OptionValue<Item> | undefined;
69
+ valueToString: (item: Item) => string;
70
+ };
@@ -0,0 +1 @@
1
+ export { useListControlContext } from "./ListControlContext";
@@ -0,0 +1,16 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ export interface OptionProps extends ComponentPropsWithoutRef<"div"> {
3
+ /**
4
+ * If `true`, the option will be disabled.
5
+ */
6
+ disabled?: boolean;
7
+ /**
8
+ * The value of the option.
9
+ */
10
+ value: unknown;
11
+ /**
12
+ * The content of the option.
13
+ */
14
+ children?: ReactNode;
15
+ }
16
+ export declare const Option: import("react").ForwardRefExoticComponent<OptionProps & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,12 @@
1
+ import { ComponentPropsWithoutRef, ReactNode } from "react";
2
+ export interface OptionGroupProps extends ComponentPropsWithoutRef<"div"> {
3
+ /**
4
+ * The label of the option group.
5
+ */
6
+ label?: string;
7
+ /**
8
+ * Options to be rendered inside the option group.
9
+ */
10
+ children?: ReactNode;
11
+ }
12
+ export declare const OptionGroup: import("react").ForwardRefExoticComponent<OptionGroupProps & import("react").RefAttributes<HTMLDivElement>>;