@react-md/core 1.0.0-next.20 → 1.0.0-next.21

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 (1138) hide show
  1. package/dist/CoreProviders.d.ts +1 -0
  2. package/dist/CoreProviders.js +1 -0
  3. package/dist/CoreProviders.js.map +1 -1
  4. package/dist/NoSsr.d.ts +3 -1
  5. package/dist/NoSsr.js +3 -1
  6. package/dist/NoSsr.js.map +1 -1
  7. package/dist/RootHtml.d.ts +1 -1
  8. package/dist/RootHtml.js +1 -1
  9. package/dist/RootHtml.js.map +1 -1
  10. package/dist/SsrProvider.d.ts +1 -0
  11. package/dist/SsrProvider.js +1 -0
  12. package/dist/SsrProvider.js.map +1 -1
  13. package/dist/_a11y.scss +187 -0
  14. package/dist/_base.scss +479 -0
  15. package/dist/_box-shadows.scss +80 -71
  16. package/dist/_colors.scss +283 -279
  17. package/dist/_core.scss +5 -483
  18. package/dist/_object-fit.scss +27 -23
  19. package/dist/_utils.scss +225 -225
  20. package/dist/app-bar/AppBar.d.ts +3 -1
  21. package/dist/app-bar/AppBar.js +3 -1
  22. package/dist/app-bar/AppBar.js.map +1 -1
  23. package/dist/app-bar/AppBarTitle.d.ts +2 -1
  24. package/dist/app-bar/AppBarTitle.js +2 -1
  25. package/dist/app-bar/AppBarTitle.js.map +1 -1
  26. package/dist/app-bar/_app-bar.scss +112 -105
  27. package/dist/autocomplete/Autocomplete.d.ts +81 -2
  28. package/dist/autocomplete/Autocomplete.js +4 -2
  29. package/dist/autocomplete/Autocomplete.js.map +1 -1
  30. package/dist/autocomplete/AutocompleteChip.d.ts +1 -0
  31. package/dist/autocomplete/AutocompleteChip.js +1 -0
  32. package/dist/autocomplete/AutocompleteChip.js.map +1 -1
  33. package/dist/autocomplete/AutocompleteCircularProgress.d.ts +1 -0
  34. package/dist/autocomplete/AutocompleteCircularProgress.js +1 -0
  35. package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
  36. package/dist/autocomplete/AutocompleteClearButton.d.ts +1 -0
  37. package/dist/autocomplete/AutocompleteClearButton.js +4 -2
  38. package/dist/autocomplete/AutocompleteClearButton.js.map +1 -1
  39. package/dist/autocomplete/AutocompleteDropdownButton.d.ts +1 -0
  40. package/dist/autocomplete/AutocompleteDropdownButton.js +1 -0
  41. package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
  42. package/dist/autocomplete/AutocompleteListboxChildren.d.ts +1 -3
  43. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -1
  44. package/dist/autocomplete/_autocomplete.scss +125 -71
  45. package/dist/autocomplete/autocompleteStyles.d.ts +3 -0
  46. package/dist/autocomplete/autocompleteStyles.js +5 -2
  47. package/dist/autocomplete/autocompleteStyles.js.map +1 -1
  48. package/dist/autocomplete/types.d.ts +128 -82
  49. package/dist/autocomplete/types.js.map +1 -1
  50. package/dist/autocomplete/useAutocomplete.d.ts +3 -0
  51. package/dist/autocomplete/useAutocomplete.js +17 -17
  52. package/dist/autocomplete/useAutocomplete.js.map +1 -1
  53. package/dist/autocomplete/utils.d.ts +3 -6
  54. package/dist/autocomplete/utils.js.map +1 -1
  55. package/dist/avatar/Avatar.d.ts +2 -1
  56. package/dist/avatar/Avatar.js +2 -1
  57. package/dist/avatar/Avatar.js.map +1 -1
  58. package/dist/avatar/_avatar.scss +81 -77
  59. package/dist/badge/Badge.d.ts +8 -4
  60. package/dist/badge/Badge.js +8 -4
  61. package/dist/badge/Badge.js.map +1 -1
  62. package/dist/badge/_badge.scss +72 -68
  63. package/dist/box/Box.d.ts +4 -3
  64. package/dist/box/Box.js +4 -3
  65. package/dist/box/Box.js.map +1 -1
  66. package/dist/box/_box.scss +115 -119
  67. package/dist/button/AsyncButton.d.ts +3 -2
  68. package/dist/button/AsyncButton.js +4 -3
  69. package/dist/button/AsyncButton.js.map +1 -1
  70. package/dist/button/Button.d.ts +11 -9
  71. package/dist/button/Button.js +11 -9
  72. package/dist/button/Button.js.map +1 -1
  73. package/dist/button/ButtonUnstyled.d.ts +1 -0
  74. package/dist/button/ButtonUnstyled.js +2 -1
  75. package/dist/button/ButtonUnstyled.js.map +1 -1
  76. package/dist/button/TooltippedButton.d.ts +3 -2
  77. package/dist/button/TooltippedButton.js +2 -1
  78. package/dist/button/TooltippedButton.js.map +1 -1
  79. package/dist/button/_button.scss +128 -98
  80. package/dist/button/{buttonStyles.d.ts → styles.d.ts} +10 -0
  81. package/dist/button/{buttonStyles.js → styles.js} +9 -1
  82. package/dist/button/styles.js.map +1 -0
  83. package/dist/card/Card.d.ts +9 -10
  84. package/dist/card/Card.js +9 -10
  85. package/dist/card/Card.js.map +1 -1
  86. package/dist/card/CardContent.d.ts +1 -0
  87. package/dist/card/CardContent.js +1 -0
  88. package/dist/card/CardContent.js.map +1 -1
  89. package/dist/card/CardFooter.d.ts +1 -0
  90. package/dist/card/CardFooter.js +1 -0
  91. package/dist/card/CardFooter.js.map +1 -1
  92. package/dist/card/CardHeader.d.ts +1 -0
  93. package/dist/card/CardHeader.js +1 -0
  94. package/dist/card/CardHeader.js.map +1 -1
  95. package/dist/card/CardSubtitle.d.ts +1 -0
  96. package/dist/card/CardSubtitle.js +1 -0
  97. package/dist/card/CardSubtitle.js.map +1 -1
  98. package/dist/card/CardTitle.d.ts +2 -1
  99. package/dist/card/CardTitle.js +1 -0
  100. package/dist/card/CardTitle.js.map +1 -1
  101. package/dist/card/ClickableCard.d.ts +3 -1
  102. package/dist/card/ClickableCard.js +3 -1
  103. package/dist/card/ClickableCard.js.map +1 -1
  104. package/dist/card/_card.scss +76 -71
  105. package/dist/chip/Chip.d.ts +5 -3
  106. package/dist/chip/Chip.js +5 -3
  107. package/dist/chip/Chip.js.map +1 -1
  108. package/dist/chip/_chip.scss +247 -33
  109. package/dist/cssUtils.d.ts +1 -1
  110. package/dist/cssUtils.js.map +1 -1
  111. package/dist/dialog/Dialog.d.ts +9 -10
  112. package/dist/dialog/Dialog.js +9 -10
  113. package/dist/dialog/Dialog.js.map +1 -1
  114. package/dist/dialog/DialogContent.d.ts +2 -0
  115. package/dist/dialog/DialogContent.js +5 -2
  116. package/dist/dialog/DialogContent.js.map +1 -1
  117. package/dist/dialog/DialogFooter.d.ts +2 -0
  118. package/dist/dialog/DialogFooter.js +5 -2
  119. package/dist/dialog/DialogFooter.js.map +1 -1
  120. package/dist/dialog/DialogHeader.d.ts +14 -2
  121. package/dist/dialog/DialogHeader.js +8 -2
  122. package/dist/dialog/DialogHeader.js.map +1 -1
  123. package/dist/dialog/DialogTitle.d.ts +2 -0
  124. package/dist/dialog/DialogTitle.js +5 -2
  125. package/dist/dialog/DialogTitle.js.map +1 -1
  126. package/dist/dialog/FixedDialog.d.ts +11 -10
  127. package/dist/dialog/FixedDialog.js +13 -12
  128. package/dist/dialog/FixedDialog.js.map +1 -1
  129. package/dist/dialog/_dialog.scss +167 -22
  130. package/dist/dialog/styles.d.ts +12 -6
  131. package/dist/dialog/styles.js +11 -5
  132. package/dist/dialog/styles.js.map +1 -1
  133. package/dist/divider/Divider.d.ts +3 -1
  134. package/dist/divider/Divider.js +3 -1
  135. package/dist/divider/Divider.js.map +1 -1
  136. package/dist/divider/_divider.scss +68 -0
  137. package/dist/divider/styles.js.map +1 -1
  138. package/dist/draggable/_draggable.scss +16 -0
  139. package/dist/draggable/useDraggable.d.ts +1 -0
  140. package/dist/draggable/useDraggable.js +1 -0
  141. package/dist/draggable/useDraggable.js.map +1 -1
  142. package/dist/error-boundary/ErrorBoundary.d.ts +58 -0
  143. package/dist/error-boundary/ErrorBoundary.js +99 -0
  144. package/dist/error-boundary/ErrorBoundary.js.map +1 -0
  145. package/dist/error-boundary/context.d.ts +11 -0
  146. package/dist/error-boundary/context.js +12 -0
  147. package/dist/error-boundary/context.js.map +1 -0
  148. package/dist/error-boundary/types.d.ts +16 -0
  149. package/dist/error-boundary/types.js +7 -0
  150. package/dist/error-boundary/types.js.map +1 -0
  151. package/dist/error-boundary/useErrorBoundary.d.ts +25 -0
  152. package/dist/error-boundary/useErrorBoundary.js +33 -0
  153. package/dist/error-boundary/useErrorBoundary.js.map +1 -0
  154. package/dist/expansion-panel/ExpansionList.d.ts +1 -0
  155. package/dist/expansion-panel/ExpansionList.js +1 -0
  156. package/dist/expansion-panel/ExpansionList.js.map +1 -1
  157. package/dist/expansion-panel/ExpansionPanel.d.ts +32 -0
  158. package/dist/expansion-panel/ExpansionPanel.js +32 -0
  159. package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
  160. package/dist/expansion-panel/ExpansionPanelHeader.d.ts +4 -7
  161. package/dist/expansion-panel/ExpansionPanelHeader.js +9 -10
  162. package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
  163. package/dist/expansion-panel/_expansion-panel.scss +45 -0
  164. package/dist/expansion-panel/expansionPanelStyles.d.ts +20 -0
  165. package/dist/expansion-panel/expansionPanelStyles.js +12 -0
  166. package/dist/expansion-panel/expansionPanelStyles.js.map +1 -1
  167. package/dist/expansion-panel/useExpansionList.d.ts +7 -8
  168. package/dist/expansion-panel/useExpansionList.js +7 -8
  169. package/dist/expansion-panel/useExpansionList.js.map +1 -1
  170. package/dist/expansion-panel/useExpansionPanels.d.ts +7 -10
  171. package/dist/expansion-panel/useExpansionPanels.js +7 -10
  172. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  173. package/dist/files/FileInput.d.ts +4 -2
  174. package/dist/files/FileInput.js +3 -1
  175. package/dist/files/FileInput.js.map +1 -1
  176. package/dist/files/_files.scss +9 -0
  177. package/dist/files/styles.d.ts +1 -1
  178. package/dist/files/styles.js +1 -1
  179. package/dist/files/styles.js.map +1 -1
  180. package/dist/files/useFileUpload.d.ts +2 -0
  181. package/dist/files/useFileUpload.js +2 -0
  182. package/dist/files/useFileUpload.js.map +1 -1
  183. package/dist/focus/useFocusContainer.js +24 -23
  184. package/dist/focus/useFocusContainer.js.map +1 -1
  185. package/dist/form/Checkbox.d.ts +3 -1
  186. package/dist/form/Checkbox.js +3 -1
  187. package/dist/form/Checkbox.js.map +1 -1
  188. package/dist/form/Fieldset.d.ts +6 -20
  189. package/dist/form/Fieldset.js +6 -13
  190. package/dist/form/Fieldset.js.map +1 -1
  191. package/dist/form/Form.d.ts +2 -0
  192. package/dist/form/Form.js +2 -0
  193. package/dist/form/Form.js.map +1 -1
  194. package/dist/form/FormMessage.d.ts +2 -0
  195. package/dist/form/FormMessage.js +2 -0
  196. package/dist/form/FormMessage.js.map +1 -1
  197. package/dist/form/FormMessageContainer.d.ts +1 -0
  198. package/dist/form/FormMessageContainer.js +1 -0
  199. package/dist/form/FormMessageContainer.js.map +1 -1
  200. package/dist/form/FormMessageCounter.d.ts +2 -0
  201. package/dist/form/FormMessageCounter.js +2 -0
  202. package/dist/form/FormMessageCounter.js.map +1 -1
  203. package/dist/form/InputToggle.d.ts +4 -2
  204. package/dist/form/InputToggle.js +2 -0
  205. package/dist/form/InputToggle.js.map +1 -1
  206. package/dist/form/Label.d.ts +4 -5
  207. package/dist/form/Label.js +4 -32
  208. package/dist/form/Label.js.map +1 -1
  209. package/dist/form/Legend.d.ts +1 -0
  210. package/dist/form/Legend.js +1 -0
  211. package/dist/form/Legend.js.map +1 -1
  212. package/dist/form/Listbox.d.ts +1 -1
  213. package/dist/form/Listbox.js.map +1 -1
  214. package/dist/form/MenuItemCheckbox.d.ts +3 -1
  215. package/dist/form/MenuItemCheckbox.js +3 -1
  216. package/dist/form/MenuItemCheckbox.js.map +1 -1
  217. package/dist/form/MenuItemFileInput.d.ts +1 -0
  218. package/dist/form/MenuItemFileInput.js +1 -0
  219. package/dist/form/MenuItemFileInput.js.map +1 -1
  220. package/dist/form/MenuItemInputToggle.d.ts +3 -2
  221. package/dist/form/MenuItemInputToggle.js +1 -0
  222. package/dist/form/MenuItemInputToggle.js.map +1 -1
  223. package/dist/form/MenuItemRadio.d.ts +8 -8
  224. package/dist/form/MenuItemRadio.js +8 -8
  225. package/dist/form/MenuItemRadio.js.map +1 -1
  226. package/dist/form/MenuItemSwitch.d.ts +3 -1
  227. package/dist/form/MenuItemSwitch.js +3 -1
  228. package/dist/form/MenuItemSwitch.js.map +1 -1
  229. package/dist/form/MenuItemTextField.d.ts +1 -0
  230. package/dist/form/MenuItemTextField.js +1 -0
  231. package/dist/form/MenuItemTextField.js.map +1 -1
  232. package/dist/form/NativeSelect.d.ts +2 -0
  233. package/dist/form/NativeSelect.js +2 -0
  234. package/dist/form/NativeSelect.js.map +1 -1
  235. package/dist/form/OptGroup.d.ts +4 -1
  236. package/dist/form/OptGroup.js +4 -1
  237. package/dist/form/OptGroup.js.map +1 -1
  238. package/dist/form/Option.d.ts +2 -1
  239. package/dist/form/Option.js +1 -0
  240. package/dist/form/Option.js.map +1 -1
  241. package/dist/form/Password.d.ts +3 -1
  242. package/dist/form/Password.js +3 -1
  243. package/dist/form/Password.js.map +1 -1
  244. package/dist/form/Radio.d.ts +2 -0
  245. package/dist/form/Radio.js +2 -0
  246. package/dist/form/Radio.js.map +1 -1
  247. package/dist/form/Select.d.ts +5 -28
  248. package/dist/form/Select.js +4 -27
  249. package/dist/form/Select.js.map +1 -1
  250. package/dist/form/Slider.d.ts +9 -2
  251. package/dist/form/Slider.js.map +1 -1
  252. package/dist/form/SliderContainer.js +7 -11
  253. package/dist/form/SliderContainer.js.map +1 -1
  254. package/dist/form/SliderMark.js +5 -8
  255. package/dist/form/SliderMark.js.map +1 -1
  256. package/dist/form/SliderMarkLabel.js +5 -7
  257. package/dist/form/SliderMarkLabel.js.map +1 -1
  258. package/dist/form/SliderThumb.js +2 -27
  259. package/dist/form/SliderThumb.js.map +1 -1
  260. package/dist/form/SliderTrack.js +6 -12
  261. package/dist/form/SliderTrack.js.map +1 -1
  262. package/dist/form/SliderValueTooltip.js +7 -7
  263. package/dist/form/SliderValueTooltip.js.map +1 -1
  264. package/dist/form/Switch.d.ts +9 -1
  265. package/dist/form/Switch.js +3 -1
  266. package/dist/form/Switch.js.map +1 -1
  267. package/dist/form/SwitchTrack.js +8 -8
  268. package/dist/form/SwitchTrack.js.map +1 -1
  269. package/dist/form/TextArea.d.ts +9 -1
  270. package/dist/form/TextArea.js +3 -1
  271. package/dist/form/TextArea.js.map +1 -1
  272. package/dist/form/TextField.d.ts +3 -1
  273. package/dist/form/TextField.js +3 -1
  274. package/dist/form/TextField.js.map +1 -1
  275. package/dist/form/TextFieldAddon.d.ts +1 -34
  276. package/dist/form/TextFieldAddon.js +1 -16
  277. package/dist/form/TextFieldAddon.js.map +1 -1
  278. package/dist/form/TextFieldContainer.d.ts +13 -0
  279. package/dist/form/TextFieldContainer.js.map +1 -1
  280. package/dist/form/_form.scss +737 -10
  281. package/dist/form/fieldsetStyles.d.ts +19 -0
  282. package/dist/form/fieldsetStyles.js +14 -0
  283. package/dist/form/fieldsetStyles.js.map +1 -0
  284. package/dist/form/formConfig.js +22 -3
  285. package/dist/form/formConfig.js.map +1 -1
  286. package/dist/form/labelStyles.d.ts +5 -0
  287. package/dist/form/labelStyles.js +34 -0
  288. package/dist/form/labelStyles.js.map +1 -0
  289. package/dist/form/sliderStyles.d.ts +89 -0
  290. package/dist/form/sliderStyles.js +96 -0
  291. package/dist/form/sliderStyles.js.map +1 -0
  292. package/dist/form/switchStyles.d.ts +24 -6
  293. package/dist/form/switchStyles.js +18 -0
  294. package/dist/form/switchStyles.js.map +1 -1
  295. package/dist/form/textAreaStyles.d.ts +0 -6
  296. package/dist/form/textAreaStyles.js.map +1 -1
  297. package/dist/form/textFieldAddonStyles.d.ts +17 -0
  298. package/dist/form/textFieldAddonStyles.js +18 -0
  299. package/dist/form/textFieldAddonStyles.js.map +1 -0
  300. package/dist/form/textFieldContainerStyles.d.ts +0 -13
  301. package/dist/form/textFieldContainerStyles.js.map +1 -1
  302. package/dist/form/types.d.ts +23 -2
  303. package/dist/form/types.js.map +1 -1
  304. package/dist/form/useCheckboxGroup.d.ts +8 -0
  305. package/dist/form/useCheckboxGroup.js +6 -1
  306. package/dist/form/useCheckboxGroup.js.map +1 -1
  307. package/dist/form/useCombobox.d.ts +0 -1
  308. package/dist/form/useCombobox.js +66 -63
  309. package/dist/form/useCombobox.js.map +1 -1
  310. package/dist/form/useNumberField.d.ts +17 -7
  311. package/dist/form/useNumberField.js +2 -0
  312. package/dist/form/useNumberField.js.map +1 -1
  313. package/dist/form/useRadioGroup.d.ts +6 -0
  314. package/dist/form/useRadioGroup.js +3 -0
  315. package/dist/form/useRadioGroup.js.map +1 -1
  316. package/dist/form/useRangeSlider.d.ts +6 -1
  317. package/dist/form/useRangeSlider.js +6 -1
  318. package/dist/form/useRangeSlider.js.map +1 -1
  319. package/dist/form/useSlider.d.ts +4 -1
  320. package/dist/form/useSlider.js +4 -1
  321. package/dist/form/useSlider.js.map +1 -1
  322. package/dist/form/useTextField.d.ts +7 -1
  323. package/dist/form/useTextField.js +5 -1
  324. package/dist/form/useTextField.js.map +1 -1
  325. package/dist/form/validation.d.ts +1 -0
  326. package/dist/form/validation.js.map +1 -1
  327. package/dist/icon/FontIcon.d.ts +1 -0
  328. package/dist/icon/FontIcon.js +1 -0
  329. package/dist/icon/FontIcon.js.map +1 -1
  330. package/dist/icon/IconRotator.d.ts +2 -0
  331. package/dist/icon/IconRotator.js +2 -0
  332. package/dist/icon/IconRotator.js.map +1 -1
  333. package/dist/icon/MaterialIcon.d.ts +2 -0
  334. package/dist/icon/MaterialIcon.js +2 -0
  335. package/dist/icon/MaterialIcon.js.map +1 -1
  336. package/dist/icon/MaterialSymbol.d.ts +3 -1
  337. package/dist/icon/MaterialSymbol.js +3 -1
  338. package/dist/icon/MaterialSymbol.js.map +1 -1
  339. package/dist/icon/SVGIcon.d.ts +2 -0
  340. package/dist/icon/SVGIcon.js +2 -0
  341. package/dist/icon/SVGIcon.js.map +1 -1
  342. package/dist/icon/TextIconSpacing.d.ts +6 -2
  343. package/dist/icon/TextIconSpacing.js +6 -2
  344. package/dist/icon/TextIconSpacing.js.map +1 -1
  345. package/dist/icon/_icon.scss +137 -129
  346. package/dist/icon/config.d.ts +2 -2
  347. package/dist/icon/config.js +2 -2
  348. package/dist/icon/config.js.map +1 -1
  349. package/dist/icon/material.d.ts +1 -1
  350. package/dist/icon/material.js.map +1 -1
  351. package/dist/icon/styles.d.ts +2 -1
  352. package/dist/icon/styles.js.map +1 -1
  353. package/dist/interaction/Ripple.d.ts +11 -2
  354. package/dist/interaction/Ripple.js.map +1 -1
  355. package/dist/interaction/UserInteractionModeProvider.d.ts +1 -1
  356. package/dist/interaction/UserInteractionModeProvider.js +1 -1
  357. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  358. package/dist/interaction/_interaction.scss +279 -13
  359. package/dist/layout/LayoutAppBar.d.ts +1 -0
  360. package/dist/layout/LayoutAppBar.js +1 -0
  361. package/dist/layout/LayoutAppBar.js.map +1 -1
  362. package/dist/layout/LayoutNav.d.ts +9 -12
  363. package/dist/layout/LayoutNav.js +9 -12
  364. package/dist/layout/LayoutNav.js.map +1 -1
  365. package/dist/layout/LayoutWindowSplitter.d.ts +7 -8
  366. package/dist/layout/LayoutWindowSplitter.js +7 -8
  367. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  368. package/dist/layout/Main.d.ts +2 -1
  369. package/dist/layout/Main.js +2 -1
  370. package/dist/layout/Main.js.map +1 -1
  371. package/dist/layout/_layout.scss +106 -23
  372. package/dist/layout/useExpandableLayout.d.ts +1 -0
  373. package/dist/layout/useExpandableLayout.js +1 -0
  374. package/dist/layout/useExpandableLayout.js.map +1 -1
  375. package/dist/layout/useHorizontalLayoutTransition.d.ts +9 -6
  376. package/dist/layout/useHorizontalLayoutTransition.js +4 -1
  377. package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
  378. package/dist/layout/useLayoutAppBarHeight.d.ts +7 -10
  379. package/dist/layout/useLayoutAppBarHeight.js +7 -10
  380. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  381. package/dist/layout/useLayoutTree.d.ts +3 -0
  382. package/dist/layout/useLayoutTree.js +3 -0
  383. package/dist/layout/useLayoutTree.js.map +1 -1
  384. package/dist/layout/useLayoutWindowSplitter.d.ts +4 -2
  385. package/dist/layout/useLayoutWindowSplitter.js +4 -2
  386. package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
  387. package/dist/layout/useResizableLayout.d.ts +1 -0
  388. package/dist/layout/useResizableLayout.js +3 -1
  389. package/dist/layout/useResizableLayout.js.map +1 -1
  390. package/dist/layout/useTemporaryLayout.d.ts +1 -0
  391. package/dist/layout/useTemporaryLayout.js +1 -0
  392. package/dist/layout/useTemporaryLayout.js.map +1 -1
  393. package/dist/link/Link.d.ts +3 -1
  394. package/dist/link/Link.js +3 -1
  395. package/dist/link/Link.js.map +1 -1
  396. package/dist/link/SkipToMainContent.d.ts +22 -0
  397. package/dist/link/SkipToMainContent.js +22 -0
  398. package/dist/link/SkipToMainContent.js.map +1 -1
  399. package/dist/link/_link.scss +55 -6
  400. package/dist/list/List.d.ts +11 -1
  401. package/dist/list/List.js +5 -1
  402. package/dist/list/List.js.map +1 -1
  403. package/dist/list/ListItem.d.ts +22 -2
  404. package/dist/list/ListItem.js +6 -2
  405. package/dist/list/ListItem.js.map +1 -1
  406. package/dist/list/ListItemChildren.d.ts +3 -1
  407. package/dist/list/ListItemChildren.js +3 -1
  408. package/dist/list/ListItemChildren.js.map +1 -1
  409. package/dist/list/ListItemLink.d.ts +32 -1
  410. package/dist/list/ListItemLink.js +32 -1
  411. package/dist/list/ListItemLink.js.map +1 -1
  412. package/dist/list/ListSubheader.d.ts +2 -0
  413. package/dist/list/ListSubheader.js +2 -0
  414. package/dist/list/ListSubheader.js.map +1 -1
  415. package/dist/list/_list.scss +224 -1
  416. package/dist/list/listItemStyles.d.ts +0 -16
  417. package/dist/list/listItemStyles.js.map +1 -1
  418. package/dist/list/listStyles.d.ts +0 -6
  419. package/dist/list/listStyles.js.map +1 -1
  420. package/dist/media-queries/AppSizeProvider.d.ts +2 -0
  421. package/dist/media-queries/AppSizeProvider.js +2 -0
  422. package/dist/media-queries/AppSizeProvider.js.map +1 -1
  423. package/dist/media-queries/_media-queries.scss +111 -4
  424. package/dist/media-queries/useMediaQuery.d.ts +2 -0
  425. package/dist/media-queries/useMediaQuery.js +2 -0
  426. package/dist/media-queries/useMediaQuery.js.map +1 -1
  427. package/dist/menu/DropdownMenu.d.ts +5 -2
  428. package/dist/menu/DropdownMenu.js +5 -2
  429. package/dist/menu/DropdownMenu.js.map +1 -1
  430. package/dist/menu/Menu.d.ts +1 -0
  431. package/dist/menu/Menu.js +1 -0
  432. package/dist/menu/Menu.js.map +1 -1
  433. package/dist/menu/MenuBar.d.ts +4 -1
  434. package/dist/menu/MenuBar.js +4 -1
  435. package/dist/menu/MenuBar.js.map +1 -1
  436. package/dist/menu/MenuButton.d.ts +1 -0
  437. package/dist/menu/MenuButton.js +1 -0
  438. package/dist/menu/MenuButton.js.map +1 -1
  439. package/dist/menu/MenuItem.d.ts +1 -0
  440. package/dist/menu/MenuItem.js +1 -0
  441. package/dist/menu/MenuItem.js.map +1 -1
  442. package/dist/menu/MenuItemCircularProgress.d.ts +4 -6
  443. package/dist/menu/MenuItemCircularProgress.js +4 -6
  444. package/dist/menu/MenuItemCircularProgress.js.map +1 -1
  445. package/dist/menu/MenuItemGroup.d.ts +6 -7
  446. package/dist/menu/MenuItemGroup.js +6 -7
  447. package/dist/menu/MenuItemGroup.js.map +1 -1
  448. package/dist/menu/MenuItemSeparator.d.ts +1 -0
  449. package/dist/menu/MenuItemSeparator.js +1 -0
  450. package/dist/menu/MenuItemSeparator.js.map +1 -1
  451. package/dist/menu/MenuWidget.d.ts +0 -12
  452. package/dist/menu/MenuWidget.js +1 -12
  453. package/dist/menu/MenuWidget.js.map +1 -1
  454. package/dist/menu/_menu.scss +61 -0
  455. package/dist/menu/styles.d.ts +12 -0
  456. package/dist/menu/styles.js +14 -0
  457. package/dist/menu/styles.js.map +1 -0
  458. package/dist/menu/useContextMenu.d.ts +4 -1
  459. package/dist/menu/useContextMenu.js +4 -1
  460. package/dist/menu/useContextMenu.js.map +1 -1
  461. package/dist/movement/useKeyboardMovementProvider.d.ts +3 -3
  462. package/dist/movement/useKeyboardMovementProvider.js +3 -3
  463. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  464. package/dist/navigation/CollapsibleNavGroup.d.ts +1 -0
  465. package/dist/navigation/CollapsibleNavGroup.js +1 -0
  466. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  467. package/dist/navigation/DefaultNavigationRenderer.d.ts +1 -0
  468. package/dist/navigation/DefaultNavigationRenderer.js +1 -0
  469. package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
  470. package/dist/navigation/NavGroup.d.ts +1 -0
  471. package/dist/navigation/NavGroup.js +1 -0
  472. package/dist/navigation/NavGroup.js.map +1 -1
  473. package/dist/navigation/NavItem.d.ts +1 -0
  474. package/dist/navigation/NavItem.js +1 -0
  475. package/dist/navigation/NavItem.js.map +1 -1
  476. package/dist/navigation/NavItemButton.d.ts +1 -0
  477. package/dist/navigation/NavItemButton.js +1 -0
  478. package/dist/navigation/NavItemButton.js.map +1 -1
  479. package/dist/navigation/NavItemLink.d.ts +1 -0
  480. package/dist/navigation/NavItemLink.js +1 -0
  481. package/dist/navigation/NavItemLink.js.map +1 -1
  482. package/dist/navigation/NavSubheader.d.ts +1 -0
  483. package/dist/navigation/NavSubheader.js +1 -0
  484. package/dist/navigation/NavSubheader.js.map +1 -1
  485. package/dist/navigation/Navigation.d.ts +44 -0
  486. package/dist/navigation/Navigation.js +44 -0
  487. package/dist/navigation/Navigation.js.map +1 -1
  488. package/dist/navigation/_navigation.scss +47 -5
  489. package/dist/navigation/getTableOfContentsHeadings.d.ts +20 -0
  490. package/dist/navigation/getTableOfContentsHeadings.js +53 -0
  491. package/dist/navigation/getTableOfContentsHeadings.js.map +1 -0
  492. package/dist/navigation/navItemStyles.js +1 -1
  493. package/dist/navigation/navItemStyles.js.map +1 -1
  494. package/dist/navigation/types.d.ts +47 -0
  495. package/dist/navigation/types.js +1 -3
  496. package/dist/navigation/types.js.map +1 -1
  497. package/dist/navigation/useActiveHeadingId.d.ts +2 -12
  498. package/dist/navigation/useActiveHeadingId.js +1 -0
  499. package/dist/navigation/useActiveHeadingId.js.map +1 -1
  500. package/dist/navigation/useNavigationExpansion.d.ts +2 -0
  501. package/dist/navigation/useNavigationExpansion.js +2 -0
  502. package/dist/navigation/useNavigationExpansion.js.map +1 -1
  503. package/dist/navigation/useTableOfContentsHeadings.d.ts +3 -37
  504. package/dist/navigation/useTableOfContentsHeadings.js +18 -41
  505. package/dist/navigation/useTableOfContentsHeadings.js.map +1 -1
  506. package/dist/overlay/Overlay.d.ts +10 -1
  507. package/dist/overlay/Overlay.js +5 -2
  508. package/dist/overlay/Overlay.js.map +1 -1
  509. package/dist/overlay/_overlay.scss +35 -0
  510. package/dist/overlay/{overlayStyles.d.ts → styles.d.ts} +0 -6
  511. package/dist/overlay/{overlayStyles.js → styles.js} +1 -1
  512. package/dist/overlay/styles.js.map +1 -0
  513. package/dist/portal/Portal.d.ts +1 -0
  514. package/dist/portal/Portal.js +1 -0
  515. package/dist/portal/Portal.js.map +1 -1
  516. package/dist/portal/PortalContainerProvider.d.ts +1 -0
  517. package/dist/portal/PortalContainerProvider.js +1 -0
  518. package/dist/portal/PortalContainerProvider.js.map +1 -1
  519. package/dist/positioning/createHorizontalPosition.d.ts +6 -6
  520. package/dist/positioning/createHorizontalPosition.js +12 -12
  521. package/dist/positioning/createHorizontalPosition.js.map +1 -1
  522. package/dist/positioning/createVerticalPosition.d.ts +6 -6
  523. package/dist/positioning/createVerticalPosition.js +2 -2
  524. package/dist/positioning/createVerticalPosition.js.map +1 -1
  525. package/dist/positioning/useFixedPositioning.d.ts +1 -0
  526. package/dist/positioning/useFixedPositioning.js +1 -0
  527. package/dist/positioning/useFixedPositioning.js.map +1 -1
  528. package/dist/progress/CircularProgress.d.ts +3 -2
  529. package/dist/progress/CircularProgress.js +3 -2
  530. package/dist/progress/CircularProgress.js.map +1 -1
  531. package/dist/progress/LinearProgress.d.ts +3 -2
  532. package/dist/progress/LinearProgress.js +3 -2
  533. package/dist/progress/LinearProgress.js.map +1 -1
  534. package/dist/progress/_progress.scss +164 -38
  535. package/dist/responsive-item/ResponsiveItem.d.ts +4 -3
  536. package/dist/responsive-item/ResponsiveItem.js +4 -3
  537. package/dist/responsive-item/ResponsiveItem.js.map +1 -1
  538. package/dist/responsive-item/ResponsiveItemOverlay.d.ts +6 -4
  539. package/dist/responsive-item/ResponsiveItemOverlay.js +6 -4
  540. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  541. package/dist/responsive-item/_responsive-item.scss +89 -0
  542. package/dist/scroll/useScrollLock.d.ts +1 -0
  543. package/dist/scroll/useScrollLock.js +1 -0
  544. package/dist/scroll/useScrollLock.js.map +1 -1
  545. package/dist/searching/fuzzy.d.ts +2 -1
  546. package/dist/searching/fuzzy.js +2 -1
  547. package/dist/searching/fuzzy.js.map +1 -1
  548. package/dist/segmented-button/SegmentedButton.d.ts +3 -4
  549. package/dist/segmented-button/SegmentedButton.js +3 -4
  550. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  551. package/dist/segmented-button/SegmentedButtonContainer.d.ts +5 -6
  552. package/dist/segmented-button/SegmentedButtonContainer.js +7 -8
  553. package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
  554. package/dist/segmented-button/_segmented-button.scss +79 -33
  555. package/dist/segmented-button/segmentedButtonContainerStyles.d.ts +1 -1
  556. package/dist/segmented-button/segmentedButtonContainerStyles.js +1 -1
  557. package/dist/segmented-button/segmentedButtonContainerStyles.js.map +1 -1
  558. package/dist/sheet/Sheet.d.ts +14 -0
  559. package/dist/sheet/Sheet.js +2 -0
  560. package/dist/sheet/Sheet.js.map +1 -1
  561. package/dist/sheet/_sheet.scss +84 -0
  562. package/dist/sheet/styles.d.ts +19 -15
  563. package/dist/sheet/styles.js +6 -2
  564. package/dist/sheet/styles.js.map +1 -1
  565. package/dist/snackbar/DefaultToastRenderer.d.ts +1 -0
  566. package/dist/snackbar/DefaultToastRenderer.js +1 -0
  567. package/dist/snackbar/DefaultToastRenderer.js.map +1 -1
  568. package/dist/snackbar/Snackbar.d.ts +10 -9
  569. package/dist/snackbar/Snackbar.js +4 -1
  570. package/dist/snackbar/Snackbar.js.map +1 -1
  571. package/dist/snackbar/Toast.d.ts +8 -0
  572. package/dist/snackbar/Toast.js +1 -0
  573. package/dist/snackbar/Toast.js.map +1 -1
  574. package/dist/snackbar/ToastActionButton.d.ts +2 -1
  575. package/dist/snackbar/ToastActionButton.js +1 -0
  576. package/dist/snackbar/ToastActionButton.js.map +1 -1
  577. package/dist/snackbar/ToastCloseButton.d.ts +2 -1
  578. package/dist/snackbar/ToastCloseButton.js +1 -0
  579. package/dist/snackbar/ToastCloseButton.js.map +1 -1
  580. package/dist/snackbar/ToastContent.d.ts +1 -0
  581. package/dist/snackbar/ToastContent.js +1 -0
  582. package/dist/snackbar/ToastContent.js.map +1 -1
  583. package/dist/snackbar/ToastManager.d.ts +1 -1
  584. package/dist/snackbar/ToastManager.js +1 -1
  585. package/dist/snackbar/ToastManager.js.map +1 -1
  586. package/dist/snackbar/ToastManagerProvider.d.ts +1 -0
  587. package/dist/snackbar/ToastManagerProvider.js +1 -0
  588. package/dist/snackbar/ToastManagerProvider.js.map +1 -1
  589. package/dist/snackbar/_snackbar.scss +131 -3
  590. package/dist/snackbar/toastStyles.d.ts +0 -7
  591. package/dist/snackbar/toastStyles.js.map +1 -1
  592. package/dist/snackbar/useCurrentToastActions.d.ts +1 -0
  593. package/dist/snackbar/useCurrentToastActions.js +1 -0
  594. package/dist/snackbar/useCurrentToastActions.js.map +1 -1
  595. package/dist/storage/useStorage.d.ts +1 -0
  596. package/dist/storage/useStorage.js +1 -0
  597. package/dist/storage/useStorage.js.map +1 -1
  598. package/dist/suspense/CircularProgressSuspense.d.ts +2 -1
  599. package/dist/suspense/CircularProgressSuspense.js +2 -1
  600. package/dist/suspense/CircularProgressSuspense.js.map +1 -1
  601. package/dist/suspense/NullSuspense.d.ts +2 -1
  602. package/dist/suspense/NullSuspense.js +2 -1
  603. package/dist/suspense/NullSuspense.js.map +1 -1
  604. package/dist/table/StickyTableSection.d.ts +2 -0
  605. package/dist/table/StickyTableSection.js +2 -0
  606. package/dist/table/StickyTableSection.js.map +1 -1
  607. package/dist/table/Table.d.ts +8 -8
  608. package/dist/table/Table.js +8 -8
  609. package/dist/table/Table.js.map +1 -1
  610. package/dist/table/TableBody.d.ts +2 -0
  611. package/dist/table/TableBody.js +2 -0
  612. package/dist/table/TableBody.js.map +1 -1
  613. package/dist/table/TableCell.d.ts +6 -2
  614. package/dist/table/TableCell.js +2 -0
  615. package/dist/table/TableCell.js.map +1 -1
  616. package/dist/table/TableCheckbox.d.ts +11 -12
  617. package/dist/table/TableCheckbox.js +10 -11
  618. package/dist/table/TableCheckbox.js.map +1 -1
  619. package/dist/table/TableConfigurationProvider.js +1 -1
  620. package/dist/table/TableConfigurationProvider.js.map +1 -1
  621. package/dist/table/TableContainer.d.ts +2 -0
  622. package/dist/table/TableContainer.js +2 -0
  623. package/dist/table/TableContainer.js.map +1 -1
  624. package/dist/table/TableContainerProvider.js +1 -1
  625. package/dist/table/TableContainerProvider.js.map +1 -1
  626. package/dist/table/TableFooter.d.ts +2 -0
  627. package/dist/table/TableFooter.js +2 -0
  628. package/dist/table/TableFooter.js.map +1 -1
  629. package/dist/table/TableHeader.d.ts +2 -0
  630. package/dist/table/TableHeader.js +2 -0
  631. package/dist/table/TableHeader.js.map +1 -1
  632. package/dist/table/TableRadio.d.ts +13 -13
  633. package/dist/table/TableRadio.js +10 -10
  634. package/dist/table/TableRadio.js.map +1 -1
  635. package/dist/table/TableRow.d.ts +2 -0
  636. package/dist/table/TableRow.js +2 -0
  637. package/dist/table/TableRow.js.map +1 -1
  638. package/dist/table/_table.scss +209 -11
  639. package/dist/table/tableCellStyles.js +3 -2
  640. package/dist/table/tableCellStyles.js.map +1 -1
  641. package/dist/tabs/SimpleTabPanel.d.ts +2 -0
  642. package/dist/tabs/SimpleTabPanel.js +2 -0
  643. package/dist/tabs/SimpleTabPanel.js.map +1 -1
  644. package/dist/tabs/SimpleTabPanels.d.ts +2 -0
  645. package/dist/tabs/SimpleTabPanels.js +2 -0
  646. package/dist/tabs/SimpleTabPanels.js.map +1 -1
  647. package/dist/tabs/Tab.d.ts +19 -1
  648. package/dist/tabs/Tab.js +1 -1
  649. package/dist/tabs/Tab.js.map +1 -1
  650. package/dist/tabs/TabList.d.ts +1 -1
  651. package/dist/tabs/TabList.js +1 -1
  652. package/dist/tabs/TabList.js.map +1 -1
  653. package/dist/tabs/TabListScrollButton.d.ts +1 -1
  654. package/dist/tabs/TabListScrollButton.js.map +1 -1
  655. package/dist/tabs/_tabs.scss +142 -5
  656. package/dist/tabs/tabStyles.d.ts +0 -18
  657. package/dist/tabs/tabStyles.js.map +1 -1
  658. package/dist/tabs/useTabs.d.ts +4 -0
  659. package/dist/tabs/useTabs.js +3 -2
  660. package/dist/tabs/useTabs.js.map +1 -1
  661. package/dist/test-utils/jest-globals/match-media.d.ts +1 -2
  662. package/dist/test-utils/jest-globals/match-media.js +1 -1
  663. package/dist/test-utils/jest-globals/match-media.js.map +1 -1
  664. package/dist/test-utils/jest-globals/resize-observer.js +2 -2
  665. package/dist/test-utils/jest-globals/resize-observer.js.map +1 -1
  666. package/dist/test-utils/mocks/ResizeObserver.d.ts +7 -7
  667. package/dist/test-utils/mocks/ResizeObserver.js +7 -7
  668. package/dist/test-utils/mocks/ResizeObserver.js.map +1 -1
  669. package/dist/test-utils/mocks/match-media.d.ts +31 -0
  670. package/dist/test-utils/mocks/match-media.js.map +1 -1
  671. package/dist/test-utils/utils/createMatchMediaSpy.d.ts +40 -0
  672. package/dist/test-utils/{mocks/match-media-implementation.js → utils/createMatchMediaSpy.js} +33 -4
  673. package/dist/test-utils/utils/createMatchMediaSpy.js.map +1 -0
  674. package/dist/test-utils/vitest/match-media.d.ts +1 -2
  675. package/dist/test-utils/vitest/match-media.js +1 -1
  676. package/dist/test-utils/vitest/match-media.js.map +1 -1
  677. package/dist/test-utils/vitest/resize-observer.js +2 -2
  678. package/dist/test-utils/vitest/resize-observer.js.map +1 -1
  679. package/dist/theme/LocalStorageColorSchemeProvider.d.ts +6 -6
  680. package/dist/theme/LocalStorageColorSchemeProvider.js +6 -6
  681. package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
  682. package/dist/theme/ThemeProvider.d.ts +10 -11
  683. package/dist/theme/ThemeProvider.js +7 -9
  684. package/dist/theme/ThemeProvider.js.map +1 -1
  685. package/dist/theme/_a11y.scss +62 -62
  686. package/dist/theme/_colors.scss +283 -279
  687. package/dist/theme/_theme.scss +298 -249
  688. package/dist/theme/colors.d.ts +2 -2
  689. package/dist/theme/colors.js +2 -2
  690. package/dist/theme/colors.js.map +1 -1
  691. package/dist/theme/useColorScheme.d.ts +1 -1
  692. package/dist/theme/useColorScheme.js +1 -1
  693. package/dist/theme/useColorScheme.js.map +1 -1
  694. package/dist/tooltip/Tooltip.d.ts +12 -1
  695. package/dist/tooltip/Tooltip.js +6 -2
  696. package/dist/tooltip/Tooltip.js.map +1 -1
  697. package/dist/tooltip/TooltipHoverModeProvider.d.ts +1 -0
  698. package/dist/tooltip/TooltipHoverModeProvider.js +1 -0
  699. package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
  700. package/dist/tooltip/_tooltip.scss +109 -5
  701. package/dist/tooltip/constants.d.ts +13 -3
  702. package/dist/tooltip/constants.js +4 -4
  703. package/dist/tooltip/constants.js.map +1 -1
  704. package/dist/tooltip/{tooltipStyles.d.ts → styles.d.ts} +1 -1
  705. package/dist/tooltip/{tooltipStyles.js → styles.js} +1 -1
  706. package/dist/tooltip/styles.js.map +1 -0
  707. package/dist/tooltip/useTooltip.d.ts +8 -15
  708. package/dist/tooltip/useTooltip.js +8 -8
  709. package/dist/tooltip/useTooltip.js.map +1 -1
  710. package/dist/transition/CSSTransition.d.ts +3 -1
  711. package/dist/transition/CSSTransition.js +3 -1
  712. package/dist/transition/CSSTransition.js.map +1 -1
  713. package/dist/transition/Collapse.d.ts +1 -0
  714. package/dist/transition/Collapse.js +1 -0
  715. package/dist/transition/Collapse.js.map +1 -1
  716. package/dist/transition/CrossFade.d.ts +1 -0
  717. package/dist/transition/CrossFade.js +1 -0
  718. package/dist/transition/CrossFade.js.map +1 -1
  719. package/dist/transition/ScaleTransition.d.ts +4 -1
  720. package/dist/transition/ScaleTransition.js +4 -1
  721. package/dist/transition/ScaleTransition.js.map +1 -1
  722. package/dist/transition/SkeletonPlaceholder.d.ts +3 -2
  723. package/dist/transition/SkeletonPlaceholder.js +3 -2
  724. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  725. package/dist/transition/Slide.d.ts +1 -0
  726. package/dist/transition/Slide.js +1 -0
  727. package/dist/transition/Slide.js.map +1 -1
  728. package/dist/transition/SlideContainer.d.ts +10 -7
  729. package/dist/transition/SlideContainer.js +12 -8
  730. package/dist/transition/SlideContainer.js.map +1 -1
  731. package/dist/transition/_transition.scss +178 -6
  732. package/dist/transition/getTransitionCallbacks.d.ts +76 -0
  733. package/dist/transition/getTransitionCallbacks.js +57 -0
  734. package/dist/transition/getTransitionCallbacks.js.map +1 -0
  735. package/dist/transition/skeletonPlaceholderUtils.d.ts +4 -1
  736. package/dist/transition/skeletonPlaceholderUtils.js +4 -1
  737. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
  738. package/dist/transition/types.d.ts +26 -1
  739. package/dist/transition/types.js.map +1 -1
  740. package/dist/transition/useCSSTransition.d.ts +2 -0
  741. package/dist/transition/useCSSTransition.js +2 -0
  742. package/dist/transition/useCSSTransition.js.map +1 -1
  743. package/dist/transition/useCarousel.d.ts +6 -2
  744. package/dist/transition/useCarousel.js +11 -7
  745. package/dist/transition/useCarousel.js.map +1 -1
  746. package/dist/transition/useCollapseTransition.d.ts +7 -2
  747. package/dist/transition/useCollapseTransition.js +2 -0
  748. package/dist/transition/useCollapseTransition.js.map +1 -1
  749. package/dist/transition/useCrossFadeTransition.d.ts +22 -45
  750. package/dist/transition/useCrossFadeTransition.js +17 -49
  751. package/dist/transition/useCrossFadeTransition.js.map +1 -1
  752. package/dist/transition/useScaleTransition.d.ts +22 -16
  753. package/dist/transition/useScaleTransition.js +20 -14
  754. package/dist/transition/useScaleTransition.js.map +1 -1
  755. package/dist/transition/useSkeletonPlaceholder.d.ts +6 -3
  756. package/dist/transition/useSkeletonPlaceholder.js +3 -0
  757. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  758. package/dist/transition/useSlideTransition.d.ts +9 -3
  759. package/dist/transition/useSlideTransition.js +1 -0
  760. package/dist/transition/useSlideTransition.js.map +1 -1
  761. package/dist/transition/useTransition.d.ts +1 -0
  762. package/dist/transition/useTransition.js +3 -2
  763. package/dist/transition/useTransition.js.map +1 -1
  764. package/dist/tree/DefaultTreeItemRenderer.d.ts +1 -0
  765. package/dist/tree/DefaultTreeItemRenderer.js +1 -0
  766. package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
  767. package/dist/tree/Tree.d.ts +8 -9
  768. package/dist/tree/Tree.js +4 -3
  769. package/dist/tree/Tree.js.map +1 -1
  770. package/dist/tree/TreeItem.d.ts +1 -0
  771. package/dist/tree/TreeItem.js +1 -0
  772. package/dist/tree/TreeItem.js.map +1 -1
  773. package/dist/tree/_tree.scss +71 -1
  774. package/dist/tree/types.d.ts +1 -1
  775. package/dist/tree/types.js.map +1 -1
  776. package/dist/tree/useTree.d.ts +4 -2
  777. package/dist/tree/useTree.js +4 -2
  778. package/dist/tree/useTree.js.map +1 -1
  779. package/dist/tree/useTreeExpansion.d.ts +1 -0
  780. package/dist/tree/useTreeExpansion.js +1 -0
  781. package/dist/tree/useTreeExpansion.js.map +1 -1
  782. package/dist/tree/useTreeItems.d.ts +1 -0
  783. package/dist/tree/useTreeItems.js +1 -0
  784. package/dist/tree/useTreeItems.js.map +1 -1
  785. package/dist/tree/useTreeSelection.d.ts +1 -0
  786. package/dist/tree/useTreeSelection.js +1 -0
  787. package/dist/tree/useTreeSelection.js.map +1 -1
  788. package/dist/types.d.ts +1 -1
  789. package/dist/types.js.map +1 -1
  790. package/dist/typography/HighlightText.d.ts +76 -0
  791. package/dist/typography/HighlightText.js +60 -0
  792. package/dist/typography/HighlightText.js.map +1 -0
  793. package/dist/typography/HighlightTextMark.d.ts +16 -0
  794. package/dist/typography/HighlightTextMark.js +16 -0
  795. package/dist/typography/HighlightTextMark.js.map +1 -0
  796. package/dist/typography/Mark.d.ts +27 -0
  797. package/dist/typography/Mark.js +34 -0
  798. package/dist/typography/Mark.js.map +1 -0
  799. package/dist/typography/SrOnly.d.ts +3 -1
  800. package/dist/typography/SrOnly.js +3 -1
  801. package/dist/typography/SrOnly.js.map +1 -1
  802. package/dist/typography/TextContainer.d.ts +9 -1
  803. package/dist/typography/TextContainer.js +3 -1
  804. package/dist/typography/TextContainer.js.map +1 -1
  805. package/dist/typography/Typography.d.ts +2 -1
  806. package/dist/typography/Typography.js +2 -1
  807. package/dist/typography/Typography.js.map +1 -1
  808. package/dist/typography/WritingDirectionProvider.d.ts +8 -8
  809. package/dist/typography/WritingDirectionProvider.js +8 -8
  810. package/dist/typography/WritingDirectionProvider.js.map +1 -1
  811. package/dist/typography/_typography.scss +392 -51
  812. package/dist/typography/markStyles.d.ts +10 -0
  813. package/dist/typography/markStyles.js +11 -0
  814. package/dist/typography/markStyles.js.map +1 -0
  815. package/dist/typography/textContainerStyles.d.ts +2 -7
  816. package/dist/typography/textContainerStyles.js +2 -1
  817. package/dist/typography/textContainerStyles.js.map +1 -1
  818. package/dist/typography/typographyStyles.d.ts +2 -2
  819. package/dist/typography/typographyStyles.js +2 -2
  820. package/dist/typography/typographyStyles.js.map +1 -1
  821. package/dist/useAsyncFunction.d.ts +10 -68
  822. package/dist/useAsyncFunction.js +9 -67
  823. package/dist/useAsyncFunction.js.map +1 -1
  824. package/dist/useDebouncedFunction.d.ts +3 -1
  825. package/dist/useDebouncedFunction.js +3 -1
  826. package/dist/useDebouncedFunction.js.map +1 -1
  827. package/dist/useDropzone.d.ts +3 -2
  828. package/dist/useDropzone.js +3 -2
  829. package/dist/useDropzone.js.map +1 -1
  830. package/dist/useThrottledFunction.d.ts +3 -1
  831. package/dist/useThrottledFunction.js +3 -1
  832. package/dist/useThrottledFunction.js.map +1 -1
  833. package/dist/useUnmounted.d.ts +1 -1
  834. package/dist/useUnmounted.js +1 -1
  835. package/dist/useUnmounted.js.map +1 -1
  836. package/dist/utils/RenderRecursively.d.ts +1 -0
  837. package/dist/utils/RenderRecursively.js +1 -0
  838. package/dist/utils/RenderRecursively.js.map +1 -1
  839. package/dist/utils/applyRef.d.ts +1 -1
  840. package/dist/utils/applyRef.js +1 -1
  841. package/dist/utils/applyRef.js.map +1 -1
  842. package/dist/window-splitter/WindowSplitter.d.ts +11 -0
  843. package/dist/window-splitter/WindowSplitter.js +1 -0
  844. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  845. package/dist/window-splitter/_window-splitter.scss +46 -0
  846. package/dist/window-splitter/useWindowSplitter.d.ts +0 -10
  847. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  848. package/package.json +43 -17
  849. package/src/CoreProviders.tsx +1 -0
  850. package/src/NoSsr.tsx +3 -1
  851. package/src/RootHtml.tsx +1 -1
  852. package/src/SsrProvider.tsx +1 -0
  853. package/src/app-bar/AppBar.tsx +3 -1
  854. package/src/app-bar/AppBarTitle.tsx +2 -1
  855. package/src/autocomplete/Autocomplete.tsx +85 -3
  856. package/src/autocomplete/AutocompleteChip.tsx +1 -0
  857. package/src/autocomplete/AutocompleteCircularProgress.tsx +1 -0
  858. package/src/autocomplete/AutocompleteClearButton.tsx +3 -1
  859. package/src/autocomplete/AutocompleteDropdownButton.tsx +1 -0
  860. package/src/autocomplete/AutocompleteListboxChildren.tsx +2 -3
  861. package/src/autocomplete/autocompleteStyles.ts +11 -2
  862. package/src/autocomplete/types.ts +140 -86
  863. package/src/autocomplete/useAutocomplete.ts +21 -26
  864. package/src/autocomplete/utils.ts +6 -8
  865. package/src/avatar/Avatar.tsx +2 -1
  866. package/src/badge/Badge.tsx +8 -4
  867. package/src/box/Box.tsx +4 -3
  868. package/src/button/AsyncButton.tsx +4 -3
  869. package/src/button/Button.tsx +11 -9
  870. package/src/button/ButtonUnstyled.tsx +2 -1
  871. package/src/button/TooltippedButton.tsx +3 -2
  872. package/src/button/{buttonStyles.ts → styles.ts} +18 -0
  873. package/src/card/Card.tsx +9 -10
  874. package/src/card/CardContent.tsx +1 -0
  875. package/src/card/CardFooter.tsx +1 -0
  876. package/src/card/CardHeader.tsx +1 -0
  877. package/src/card/CardSubtitle.tsx +1 -0
  878. package/src/card/CardTitle.tsx +2 -1
  879. package/src/card/ClickableCard.tsx +3 -1
  880. package/src/chip/Chip.tsx +5 -3
  881. package/src/cssUtils.ts +1 -1
  882. package/src/dialog/Dialog.tsx +9 -10
  883. package/src/dialog/DialogContent.tsx +5 -5
  884. package/src/dialog/DialogFooter.tsx +5 -2
  885. package/src/dialog/DialogHeader.tsx +31 -5
  886. package/src/dialog/DialogTitle.tsx +8 -7
  887. package/src/dialog/FixedDialog.tsx +13 -12
  888. package/src/dialog/styles.ts +16 -10
  889. package/src/divider/Divider.tsx +3 -1
  890. package/src/divider/styles.ts +2 -2
  891. package/src/draggable/useDraggable.ts +1 -0
  892. package/src/error-boundary/ErrorBoundary.tsx +103 -0
  893. package/src/error-boundary/context.ts +16 -0
  894. package/src/error-boundary/types.ts +19 -0
  895. package/src/error-boundary/useErrorBoundary.ts +36 -0
  896. package/src/expansion-panel/ExpansionList.tsx +1 -0
  897. package/src/expansion-panel/ExpansionPanel.tsx +32 -0
  898. package/src/expansion-panel/ExpansionPanelHeader.tsx +10 -10
  899. package/src/expansion-panel/expansionPanelStyles.ts +33 -0
  900. package/src/expansion-panel/useExpansionList.ts +7 -8
  901. package/src/expansion-panel/useExpansionPanels.ts +7 -10
  902. package/src/files/FileInput.tsx +4 -2
  903. package/src/files/styles.ts +1 -1
  904. package/src/files/useFileUpload.ts +2 -0
  905. package/src/focus/useFocusContainer.ts +29 -43
  906. package/src/form/Checkbox.tsx +3 -1
  907. package/src/form/Fieldset.tsx +6 -35
  908. package/src/form/Form.tsx +2 -0
  909. package/src/form/FormMessage.tsx +2 -0
  910. package/src/form/FormMessageContainer.tsx +1 -0
  911. package/src/form/FormMessageCounter.tsx +2 -0
  912. package/src/form/InputToggle.tsx +4 -2
  913. package/src/form/Label.tsx +5 -54
  914. package/src/form/Legend.tsx +1 -0
  915. package/src/form/Listbox.tsx +1 -1
  916. package/src/form/MenuItemCheckbox.tsx +3 -1
  917. package/src/form/MenuItemFileInput.tsx +1 -0
  918. package/src/form/MenuItemInputToggle.tsx +3 -2
  919. package/src/form/MenuItemRadio.tsx +8 -8
  920. package/src/form/MenuItemSwitch.tsx +3 -1
  921. package/src/form/MenuItemTextField.tsx +1 -0
  922. package/src/form/NativeSelect.tsx +2 -0
  923. package/src/form/OptGroup.tsx +4 -1
  924. package/src/form/Option.tsx +2 -1
  925. package/src/form/Password.tsx +3 -1
  926. package/src/form/Radio.tsx +2 -0
  927. package/src/form/Select.tsx +6 -29
  928. package/src/form/Slider.tsx +9 -2
  929. package/src/form/SliderContainer.tsx +7 -15
  930. package/src/form/SliderMark.tsx +2 -13
  931. package/src/form/SliderMarkLabel.tsx +2 -5
  932. package/src/form/SliderThumb.tsx +2 -50
  933. package/src/form/SliderTrack.tsx +8 -18
  934. package/src/form/SliderValueTooltip.tsx +2 -10
  935. package/src/form/Switch.tsx +10 -1
  936. package/src/form/SwitchTrack.tsx +3 -6
  937. package/src/form/TextArea.tsx +10 -1
  938. package/src/form/TextField.tsx +3 -1
  939. package/src/form/TextFieldAddon.tsx +2 -59
  940. package/src/form/TextFieldContainer.tsx +14 -0
  941. package/src/form/fieldsetStyles.ts +35 -0
  942. package/src/form/formConfig.ts +29 -4
  943. package/src/form/labelStyles.ts +55 -0
  944. package/src/form/sliderStyles.ts +204 -0
  945. package/src/form/switchStyles.ts +36 -7
  946. package/src/form/textAreaStyles.ts +0 -7
  947. package/src/form/textFieldAddonStyles.ts +41 -0
  948. package/src/form/textFieldContainerStyles.ts +0 -14
  949. package/src/form/types.ts +25 -2
  950. package/src/form/useCheckboxGroup.ts +14 -0
  951. package/src/form/useCombobox.ts +78 -84
  952. package/src/form/useNumberField.ts +19 -7
  953. package/src/form/useRadioGroup.ts +9 -0
  954. package/src/form/useRangeSlider.ts +6 -1
  955. package/src/form/useSlider.ts +4 -1
  956. package/src/form/useTextField.ts +12 -1
  957. package/src/form/validation.ts +1 -0
  958. package/src/icon/FontIcon.tsx +1 -0
  959. package/src/icon/IconRotator.tsx +2 -0
  960. package/src/icon/MaterialIcon.tsx +2 -0
  961. package/src/icon/MaterialSymbol.tsx +3 -1
  962. package/src/icon/SVGIcon.tsx +2 -0
  963. package/src/icon/TextIconSpacing.tsx +6 -2
  964. package/src/icon/config.tsx +2 -2
  965. package/src/icon/material.ts +260 -17
  966. package/src/icon/styles.ts +5 -1
  967. package/src/interaction/Ripple.tsx +4 -4
  968. package/src/interaction/UserInteractionModeProvider.tsx +1 -1
  969. package/src/layout/LayoutAppBar.tsx +1 -0
  970. package/src/layout/LayoutNav.tsx +9 -12
  971. package/src/layout/LayoutWindowSplitter.tsx +7 -8
  972. package/src/layout/Main.tsx +2 -1
  973. package/src/layout/useExpandableLayout.ts +1 -0
  974. package/src/layout/useHorizontalLayoutTransition.ts +5 -2
  975. package/src/layout/useLayoutAppBarHeight.ts +7 -10
  976. package/src/layout/useLayoutTree.ts +3 -0
  977. package/src/layout/useLayoutWindowSplitter.ts +4 -2
  978. package/src/layout/useResizableLayout.ts +3 -0
  979. package/src/layout/useTemporaryLayout.ts +1 -0
  980. package/src/link/Link.tsx +3 -1
  981. package/src/link/SkipToMainContent.tsx +22 -0
  982. package/src/list/List.tsx +12 -1
  983. package/src/list/ListItem.tsx +23 -2
  984. package/src/list/ListItemChildren.tsx +3 -1
  985. package/src/list/ListItemLink.tsx +32 -1
  986. package/src/list/ListSubheader.tsx +2 -0
  987. package/src/list/listItemStyles.ts +0 -17
  988. package/src/list/listStyles.ts +0 -7
  989. package/src/media-queries/AppSizeProvider.tsx +2 -0
  990. package/src/media-queries/useMediaQuery.ts +2 -0
  991. package/src/menu/DropdownMenu.tsx +5 -2
  992. package/src/menu/Menu.tsx +1 -0
  993. package/src/menu/MenuBar.tsx +4 -1
  994. package/src/menu/MenuButton.tsx +1 -0
  995. package/src/menu/MenuItem.tsx +1 -0
  996. package/src/menu/MenuItemCircularProgress.tsx +4 -6
  997. package/src/menu/MenuItemGroup.tsx +6 -7
  998. package/src/menu/MenuItemSeparator.tsx +1 -0
  999. package/src/menu/MenuWidget.tsx +1 -21
  1000. package/src/menu/styles.ts +23 -0
  1001. package/src/menu/useContextMenu.ts +4 -1
  1002. package/src/movement/useKeyboardMovementProvider.ts +3 -3
  1003. package/src/navigation/CollapsibleNavGroup.tsx +1 -0
  1004. package/src/navigation/DefaultNavigationRenderer.tsx +1 -0
  1005. package/src/navigation/NavGroup.tsx +1 -0
  1006. package/src/navigation/NavItem.tsx +1 -0
  1007. package/src/navigation/NavItemButton.tsx +1 -0
  1008. package/src/navigation/NavItemLink.tsx +1 -0
  1009. package/src/navigation/NavSubheader.tsx +1 -0
  1010. package/src/navigation/Navigation.tsx +44 -0
  1011. package/src/navigation/getTableOfContentsHeadings.ts +70 -0
  1012. package/src/navigation/navItemStyles.ts +1 -1
  1013. package/src/navigation/types.ts +57 -0
  1014. package/src/navigation/useActiveHeadingId.ts +3 -15
  1015. package/src/navigation/useNavigationExpansion.ts +2 -0
  1016. package/src/navigation/useTableOfContentsHeadings.ts +22 -89
  1017. package/src/overlay/Overlay.tsx +12 -2
  1018. package/src/overlay/{overlayStyles.ts → styles.ts} +1 -7
  1019. package/src/portal/Portal.tsx +1 -0
  1020. package/src/portal/PortalContainerProvider.tsx +1 -0
  1021. package/src/positioning/createHorizontalPosition.ts +25 -19
  1022. package/src/positioning/createVerticalPosition.ts +10 -8
  1023. package/src/positioning/useFixedPositioning.ts +1 -0
  1024. package/src/progress/CircularProgress.tsx +3 -2
  1025. package/src/progress/LinearProgress.tsx +3 -2
  1026. package/src/responsive-item/ResponsiveItem.tsx +4 -3
  1027. package/src/responsive-item/ResponsiveItemOverlay.tsx +6 -4
  1028. package/src/scroll/useScrollLock.ts +1 -0
  1029. package/src/searching/fuzzy.ts +2 -1
  1030. package/src/segmented-button/SegmentedButton.tsx +3 -4
  1031. package/src/segmented-button/SegmentedButtonContainer.tsx +7 -8
  1032. package/src/segmented-button/segmentedButtonContainerStyles.ts +1 -1
  1033. package/src/sheet/Sheet.tsx +15 -0
  1034. package/src/sheet/styles.ts +10 -17
  1035. package/src/snackbar/DefaultToastRenderer.tsx +1 -0
  1036. package/src/snackbar/Snackbar.tsx +10 -9
  1037. package/src/snackbar/Toast.tsx +9 -0
  1038. package/src/snackbar/ToastActionButton.tsx +2 -1
  1039. package/src/snackbar/ToastCloseButton.tsx +2 -1
  1040. package/src/snackbar/ToastContent.tsx +1 -0
  1041. package/src/snackbar/{ToastManager.tsx → ToastManager.ts} +1 -1
  1042. package/src/snackbar/ToastManagerProvider.tsx +1 -0
  1043. package/src/snackbar/toastStyles.ts +0 -8
  1044. package/src/snackbar/useCurrentToastActions.ts +1 -0
  1045. package/src/storage/useStorage.ts +1 -0
  1046. package/src/suspense/CircularProgressSuspense.tsx +2 -1
  1047. package/src/suspense/NullSuspense.tsx +2 -1
  1048. package/src/table/StickyTableSection.tsx +2 -0
  1049. package/src/table/Table.tsx +8 -8
  1050. package/src/table/TableBody.tsx +2 -0
  1051. package/src/table/TableCell.tsx +6 -2
  1052. package/src/table/TableCheckbox.tsx +11 -12
  1053. package/src/table/TableContainer.tsx +2 -0
  1054. package/src/table/TableFooter.tsx +2 -0
  1055. package/src/table/TableHeader.tsx +2 -0
  1056. package/src/table/TableRadio.tsx +13 -13
  1057. package/src/table/TableRow.tsx +2 -0
  1058. package/src/table/tableCellStyles.ts +1 -1
  1059. package/src/tabs/SimpleTabPanel.tsx +2 -0
  1060. package/src/tabs/SimpleTabPanels.tsx +2 -0
  1061. package/src/tabs/Tab.tsx +21 -1
  1062. package/src/tabs/TabList.tsx +1 -1
  1063. package/src/tabs/TabListScrollButton.tsx +1 -1
  1064. package/src/tabs/tabStyles.ts +0 -20
  1065. package/src/tabs/useTabs.ts +7 -2
  1066. package/src/test-utils/jest-globals/match-media.ts +4 -3
  1067. package/src/test-utils/jest-globals/resize-observer.ts +2 -2
  1068. package/src/test-utils/mocks/ResizeObserver.ts +7 -7
  1069. package/src/test-utils/mocks/match-media.ts +32 -0
  1070. package/src/test-utils/{mocks/match-media-implementation.ts → utils/createMatchMediaSpy.ts} +34 -36
  1071. package/src/test-utils/vitest/match-media.ts +4 -3
  1072. package/src/test-utils/vitest/resize-observer.ts +2 -2
  1073. package/src/theme/LocalStorageColorSchemeProvider.tsx +6 -6
  1074. package/src/theme/ThemeProvider.tsx +10 -11
  1075. package/src/theme/colors.ts +2 -2
  1076. package/src/theme/useColorScheme.ts +1 -1
  1077. package/src/tooltip/Tooltip.tsx +14 -2
  1078. package/src/tooltip/TooltipHoverModeProvider.tsx +1 -0
  1079. package/src/tooltip/constants.ts +11 -11
  1080. package/src/tooltip/{tooltipStyles.ts → styles.ts} +1 -1
  1081. package/src/tooltip/useTooltip.ts +8 -16
  1082. package/src/transition/CSSTransition.tsx +3 -1
  1083. package/src/transition/Collapse.tsx +1 -0
  1084. package/src/transition/CrossFade.tsx +1 -0
  1085. package/src/transition/ScaleTransition.tsx +4 -1
  1086. package/src/transition/SkeletonPlaceholder.tsx +3 -2
  1087. package/src/transition/Slide.tsx +1 -0
  1088. package/src/transition/SlideContainer.tsx +15 -11
  1089. package/src/transition/getTransitionCallbacks.ts +140 -0
  1090. package/src/transition/skeletonPlaceholderUtils.ts +4 -1
  1091. package/src/transition/types.ts +28 -7
  1092. package/src/transition/useCSSTransition.ts +2 -0
  1093. package/src/transition/useCarousel.ts +11 -7
  1094. package/src/transition/useCollapseTransition.ts +4 -3
  1095. package/src/transition/useCrossFadeTransition.ts +23 -57
  1096. package/src/transition/useScaleTransition.ts +27 -19
  1097. package/src/transition/useSkeletonPlaceholder.ts +6 -3
  1098. package/src/transition/useSlideTransition.ts +14 -13
  1099. package/src/transition/useTransition.ts +3 -2
  1100. package/src/tree/DefaultTreeItemRenderer.tsx +1 -0
  1101. package/src/tree/Tree.tsx +8 -9
  1102. package/src/tree/TreeItem.tsx +1 -0
  1103. package/src/tree/types.ts +1 -1
  1104. package/src/tree/useTree.ts +4 -2
  1105. package/src/tree/useTreeExpansion.ts +1 -0
  1106. package/src/tree/useTreeItems.ts +1 -0
  1107. package/src/tree/useTreeSelection.ts +1 -0
  1108. package/src/types.ts +1 -1
  1109. package/src/typography/HighlightText.tsx +201 -0
  1110. package/src/typography/HighlightTextMark.tsx +25 -0
  1111. package/src/typography/Mark.tsx +41 -0
  1112. package/src/typography/SrOnly.tsx +3 -1
  1113. package/src/typography/TextContainer.tsx +10 -1
  1114. package/src/typography/Typography.tsx +2 -1
  1115. package/src/typography/WritingDirectionProvider.tsx +8 -8
  1116. package/src/typography/markStyles.ts +20 -0
  1117. package/src/typography/textContainerStyles.ts +2 -8
  1118. package/src/typography/typographyStyles.ts +2 -2
  1119. package/src/useAsyncFunction.ts +12 -68
  1120. package/src/useDebouncedFunction.ts +3 -1
  1121. package/src/useDropzone.ts +3 -2
  1122. package/src/useThrottledFunction.ts +3 -1
  1123. package/src/useUnmounted.ts +1 -1
  1124. package/src/utils/RenderRecursively.tsx +1 -0
  1125. package/src/utils/applyRef.ts +1 -1
  1126. package/src/window-splitter/WindowSplitter.tsx +12 -0
  1127. package/src/window-splitter/useWindowSplitter.ts +0 -11
  1128. package/dist/button/buttonStyles.js.map +0 -1
  1129. package/dist/button/buttonUnstyledStyles.d.ts +0 -10
  1130. package/dist/button/buttonUnstyledStyles.js +0 -11
  1131. package/dist/button/buttonUnstyledStyles.js.map +0 -1
  1132. package/dist/overlay/overlayStyles.js.map +0 -1
  1133. package/dist/test-utils/mocks/match-media-implementation.d.ts +0 -42
  1134. package/dist/test-utils/mocks/match-media-implementation.js.map +0 -1
  1135. package/dist/tooltip/tooltipStyles.js.map +0 -1
  1136. package/src/button/buttonUnstyledStyles.ts +0 -19
  1137. /package/src/table/{TableConfigurationProvider.tsx → TableConfigurationProvider.ts} +0 -0
  1138. /package/src/table/{TableContainerProvider.tsx → TableContainerProvider.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/types.ts"],"sourcesContent":["import {\n type CSSProperties,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type LabelHTMLAttributes,\n type ReactNode,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-form-active-color\"?: string;\n \"--rmd-form-focus-color\"?: string;\n }\n}\n\n/**\n * The supported themes for the `TextField`, `TextArea`, and `Select`\n * components.\n *\n * - \"none\" - display as an unstyled text field without any border or background\n * colors.\n * - \"underline\" - display with only an underline that gains the form active\n * color and animates from the left or right to the other side when the field\n * is focused.\n * - \"filled\" - an extension of the `\"underline\"` state that will also have a\n * slightly dark background applied.\n * - \"outline\" - outlines the entire text field in a border and applies the\n * active color as box shadow when the field is focused.\n */\nexport type FormTheme = \"none\" | \"underline\" | \"filled\" | \"outline\";\n\n/**\n * The direction that the underline should appear from when the theme is\n * `\"underline\"` or `\"filled\"`.\n */\nexport type FormUnderlineDirection = \"left\" | \"center\" | \"right\";\n\nexport interface FormThemeOptions {\n /**\n * The current theme type.\n *\n * @defaultValue `\"outline\"`\n */\n theme?: FormTheme;\n\n /**\n * The current underline direction.\n *\n * @defaultValue `\"left\"`\n */\n underlineDirection?: FormUnderlineDirection;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface FormConfiguration extends Required<FormThemeOptions> {\n /**\n * Set this to `false` if the `$disable-uncontrolled-input-toggles` variable\n * is set to `true` in the Sass configuration.\n *\n * Since the `checked` state only changes for the radio that has been clicked,\n * the previously checked radio would also be shown as checked with no way of\n * fixing it without controlling the radio component. When this flag is\n * enabled, the checked icons and state are handled through css instead of\n * `useState`.\n *\n * @defaultValue `true`\n */\n uncontrolledToggles: boolean;\n}\n\nexport interface FormComponentStates {\n /** @defaultValue `false` */\n error?: boolean;\n\n /** @defaultValue `false` */\n active?: boolean;\n\n /** @defaultValue `false` */\n disabled?: boolean;\n\n /** @defaultValue `false` */\n readOnly?: boolean;\n}\n\n/**\n * @since 6.0.0\n * @see https://html.spec.whatwg.org/multipage/forms.html#autofill\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values\n */\nexport type AutocompleteAttributeValue =\n | \"off\"\n | \"on\"\n | \"name\"\n | \"honorific-prefix\"\n | \"given-name\"\n | \"additional-name\"\n | \"family-name\"\n | \"honorific-suffix\"\n | \"nickname\"\n | \"email\"\n | \"username\"\n | \"new-password\"\n | \"current-password\"\n | \"one-time-code\"\n | \"organization-title\"\n | \"organization\"\n | \"street-address\"\n | \"address-line1\"\n | \"address-line2\"\n | \"address-line3\"\n | \"address-level1\"\n | \"address-level2\"\n | \"address-level3\"\n | \"address-level4\"\n | \"country\"\n | \"country-name\"\n | \"postal-code\"\n | \"cc-name\"\n | \"cc-given-name\"\n | \"cc-additional-name\"\n | \"cc-family-name\"\n | \"cc-number\"\n | \"cc-exp\"\n | \"cc-exp-month\"\n | \"cc-exp-year\"\n | \"cc-csc\"\n | \"cc-type\"\n | \"transaction-currency\"\n | \"transaction-amount\"\n | \"language\"\n | \"bday\"\n | \"bday-day\"\n | \"bday-month\"\n | \"bday-year\"\n | \"sex\"\n | \"tel\"\n | \"tel-country-code\"\n | \"tel-national\"\n | \"tek-area-code\"\n | \"tel-local\"\n | \"tel-extension\"\n | \"impp\"\n | \"url\"\n | \"photo\";\n\n/**\n * @since 6.0.0\n */\nexport interface UserAgentAutocompleteProps {\n /**\n * Set this to enable additional autocompletion suggestions for a user for\n * different form fields. Using this prop will update the\n * {@link UserAgentAutocompleteProps.name} and {@link autoComplete} to default to\n * this value.\n *\n * @example\n * ```tsx\n * <Form>\n * <TextField\n * label=\"Enter your credit card number\"\n * autoCompleteValue=\"cc-number\"\n * {...creditCardProps}\n * inputMode=\"number\"\n * />\n * <TextField\n * label=\"Name on card\"\n * autoCompleteValue=\"cc-name\"\n * {...creditCardNameProps}\n * />\n * <TextField\n * label=\"Security code\"\n * autoCompleteValue=\"cc-csc\"\n * {...securityCodeProps}\n * inputMode=\"number\"\n * />\n * <Button type=\"submit\">Submit</Button>\n * </Form>\n * ```\n *\n * @see https://html.spec.whatwg.org/multipage/forms.html#autofill\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values\n * @see {@link AutocompleteAttributeValue}\n * @see {@link autoComplete}\n * @see {@link UserAgentAutocompleteProps.name}\n */\n autoCompleteValue?: AutocompleteAttributeValue;\n\n /**\n * @see {@link autoCompleteValue}\n * @defaultValue `autoCompleteValue`\n */\n autoComplete?: InputHTMLAttributes<HTMLInputElement>[\"autoComplete\"];\n\n /**\n * @see {@link autoCompleteValue}\n * @defaultValue `autoCompleteValue`\n */\n name?: string;\n}\n\nexport interface FormMessageClassNameOptions {\n className?: string;\n\n /**\n * Boolean if the message should gain the error state which changes the text\n * color to `red` by default.\n *\n * @defaultValue `false`\n */\n error?: boolean;\n\n /**\n * The current theme for the related text field. This is really only used to\n * match the current horizontal padding of the text field.\n *\n * @defaultValue `\"outline\"`\n */\n theme?: FormTheme;\n}\n\nexport interface FormMessageProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"minLength\" | \"maxLength\">,\n FormMessageClassNameOptions {\n /**\n * If this component is acting as a form-level error message handler, the role\n * should be updated to be `\"alert\"` for additional accessibility.\n *\n * Note: when creating a form-level error message handler, the messages should\n * no longer appear as the user types and instead once the user tries to\n * submit the form. Having an alert role disrupts normal screen reader\n * behavior by immediately reading changes in this element.\n *\n * @defaultValue `undefined`\n */\n role?: \"alert\";\n\n /**\n * Boolean if the children should no longer be wrapped in a `<p>` tag. This\n * should normally only be disabled if using a custom error message wrapper or\n * the counter behavior is not being used. To get correct alignments of the\n * message and counter, the `children` must be wrapped in some element and\n * cannot be plain test.\n *\n * Note: this will always be considered `true` if the `role` is set to\n * `\"alert\"`.\n *\n * @defaultValue `false`\n */\n disableWrap?: boolean;\n\n /**\n * An optional style to apply to the `<p>` tag that surrounds the `children`.\n * This will not be used if `role=\"alert\"` or `disableWrap={true}`.\n */\n messageStyle?: CSSProperties;\n\n /**\n * An optional className to apply to the `<p>` tag that surrounds the\n * `children`. This will not be used if `role=\"alert\"` or\n * `disableWrap={true}`.\n */\n messageClassName?: string;\n}\n\n/**\n * Props that are used to automatically add a counter for the remaining letters\n * available for the text field. The counter will always be created to the right\n * of the optional message.\n *\n * The counter is really a simple string of: `${length} / ${maxLength}`.\n *\n * If you need additional customization, it is recommended to create your own\n * implementation such as:\n *\n * ```tsx\n * <FormMessage>\n * {errorMessage}\n * <MyCounter {...props} />\n * </FormMessage>\n * ```\n *\n * Note: this should not be used alongside form-level messages.\n *\n * @since 2.9.0 Renamed from `FormMessageCounterProps` to\n * `FormMessageInputLengthCounterProps` since a `FormMessageCounter` component\n * was added\n */\nexport interface FormMessageInputLengthCounterProps {\n /**\n * The current length of the value in the related text field.\n */\n length: number;\n\n /**\n * The max length allowed for the value in the related text field.\n */\n maxLength: number;\n\n /**\n * An optional style to apply to the counter wrapper element.\n */\n counterStyle?: CSSProperties;\n\n /**\n * An optional className to apply to the counter wrapper element.\n */\n counterClassName?: string;\n}\n\nexport interface FormMessageWithCounterProps\n extends FormMessageProps,\n FormMessageInputLengthCounterProps {}\n\n/**\n * @since 6.0.0\n */\nexport interface FormMessageWithoutCounterProps extends FormMessageProps {\n length?: never;\n maxLength?: never;\n counterStyle?: never;\n counterClassName?: never;\n}\n\nexport interface FormMessageContainerExtension {\n /**\n * If the extension doesn't actually want to render the `FormMessage`\n * component, these props are optional. It kind of eliminates the whole\n * purpose of this component though.\n */\n messageProps?: PropsWithRef<\n FormMessageProps & Partial<FormMessageInputLengthCounterProps>,\n HTMLDivElement\n >;\n\n /**\n * Any props (and an optional ref) to provide to the `<div>` surrounding the\n * children and `FormMessage` component.\n *\n * Note: This will not be used if the `messageProps` are not provided since\n * only the `children` will be returned without the container.\n */\n messageContainerProps?: PropsWithRef<\n HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n >;\n}\n\n/** @since 6.0.0 */\nexport interface LabelClassNameOptions {\n className?: string;\n\n /**\n * Set this to `true` to remove the `gap` style from the label.\n *\n * @see `$label-gap`\n * @defaultValue `false`\n */\n gap?: boolean;\n\n /**\n * Set this to `true` when the parent `TextFieldContainer` has the `dense`\n * spec enabled. This updates the floating styles to match the smaller height.\n *\n * @defaultValue `false`\n */\n dense?: boolean;\n\n /**\n * Set this to `true` to update the label's color to the error color.\n *\n * @see `$error-color`\n * @defaultValue `false`\n */\n error?: boolean;\n\n /**\n * Set this to `true` to update the label's color to the active color.\n *\n * @see `$active-color`\n * @defaultValue `false`\n */\n active?: boolean;\n\n /**\n * Set this to `true` if the label should gain `flex-direction: column`\n * styling.\n *\n * @defaultValue `false`\n */\n stacked?: boolean;\n\n /**\n * Set this to `true` to update the label's color to be the disabled color.\n *\n * @see `$disabled-color`\n * @defaultValue `false`\n */\n disabled?: boolean;\n\n /**\n * Set this to true when label can floating above an input, textarea, or\n * select inside of a `TextFieldContainer`.\n *\n * @defaultValue `false`\n */\n floating?: boolean;\n\n /**\n * Set this to true when label is currently floating above an input,\n * textarea, or selected inside of a `TextFieldContainer`.\n *\n * @see {@link active}\n * @defaultValue `active`\n */\n floatingActive?: boolean;\n\n /**\n * Set this to `true` to gain `flex-direction: row-reversed` styling. If the\n * {@link stacked} prop is also `true`, `flex-direction: column-reversed` will\n * be applied.\n *\n * @defaultValue `false`\n */\n reversed?: boolean;\n\n /**\n * @defaultValue `false`\n */\n inactive?: boolean;\n}\n\nexport interface LabelProps\n extends LabelHTMLAttributes<HTMLLabelElement>,\n LabelClassNameOptions {}\n\n/**\n * @since 6.0.0\n */\nexport interface ConfigurableTextFieldAddonProps\n extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Boolean if the addon should be presentational only and prevent pointer\n * events.\n *\n * @defaultValue `false`\n */\n pointerEvents?: boolean;\n}\n\n/**\n * @since 6.0.0 Added support for `leftAddonProps` and\n * `rightAddonProps`.\n */\nexport interface TextFieldContainerOptions\n extends FormThemeOptions,\n FormComponentStates {\n /**\n * Set this to `true` to enable the dense spec which reduces the height.\n *\n * @defaultValue `false`\n */\n dense?: boolean;\n\n /**\n * Set this to `true` to change the style from `display: flex` to\n * `display: inline-flex`.\n *\n * @defaultValue `false`\n */\n inline?: boolean;\n\n /**\n * This should generally be an icon or a button that will be placed before the\n * `TextField` or `TextArea`.\n */\n leftAddon?: ReactNode;\n\n /**\n * Any additional props to pass to the `<span>` surrounding the {@link leftAddon}.\n *\n * @since 6.0.0\n */\n leftAddonProps?: PropsWithRef<\n ConfigurableTextFieldAddonProps,\n HTMLSpanElement\n >;\n\n /**\n * @see {@link TextFieldAddonProps.disabled}\n *\n * @defaultValue `false`\n */\n disableLeftAddonStyles?: boolean;\n\n /**\n * This should generally be an icon or a button that will be placed after the\n * `TextField` or `TextArea`.\n */\n rightAddon?: ReactNode;\n\n /**\n * Any additional props to pass to the `<span>` surrounding the {@link rightAddon}.\n *\n * @since 6.0.0\n */\n rightAddonProps?: PropsWithRef<\n ConfigurableTextFieldAddonProps,\n HTMLSpanElement\n >;\n\n /**\n * @see {@link TextFieldAddonProps.disabled}\n *\n * @defaultValue `false`\n */\n disableRightAddonStyles?: boolean;\n}\n\nexport interface FormFieldOptions\n extends TextFieldContainerOptions,\n FormMessageContainerExtension {\n /**\n * An optional floating label to use with the text field. A label is generally\n * recommended for accessibility, but can be omitted if an `aria-label` or\n * `aria-labelledby` is provided.\n */\n label?: ReactNode;\n\n /**\n * Any additional props and/or ref that should be passed to the `<label>`\n * element when a {@link label} is provided.\n *\n * @example\n * ```tsx\n * labelProps={{\n * ref: labelRef,\n * style: {},\n * className: \"some-custom-class-name\",\n * onClick: (event) => {\n * // do something\n * }\n * }}\n * ```\n */\n labelProps?: PropsWithRef<LabelProps, HTMLLabelElement>;\n\n /**\n * A convenience prop to apply a custom style to a label. This is equivalent\n * to:\n *\n * ```ts\n * labelProps={{\n * style: // some style here\n * }}\n * ```\n */\n labelStyle?: CSSProperties;\n\n /**\n * A convenience prop to apply a custom className to a label. This is\n * equivalent to:\n *\n * ```ts\n * labelProps={{\n * className: \"some-class-name\",\n * }}\n * ```\n */\n labelClassName?: string;\n}\n"],"names":[],"mappings":"AA0gBA,WAmDC"}
1
+ {"version":3,"sources":["../../src/form/types.ts"],"sourcesContent":["import {\n type CSSProperties,\n type HTMLAttributes,\n type InputHTMLAttributes,\n type LabelHTMLAttributes,\n type ReactNode,\n} from \"react\";\n\nimport { type PropsWithRef } from \"../types.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-form-active-color\"?: string;\n \"--rmd-form-focus-color\"?: string;\n }\n}\n\n/**\n * The supported themes for the `TextField`, `TextArea`, and `Select`\n * components.\n *\n * - \"none\" - display as an unstyled text field without any border or background\n * colors.\n * - \"underline\" - display with only an underline that gains the form active\n * color and animates from the left or right to the other side when the field\n * is focused.\n * - \"filled\" - an extension of the `\"underline\"` state that will also have a\n * slightly dark background applied.\n * - \"outline\" - outlines the entire text field in a border and applies the\n * active color as box shadow when the field is focused.\n */\nexport type FormTheme = \"none\" | \"underline\" | \"filled\" | \"outline\";\n\n/**\n * The direction that the underline should appear from when the theme is\n * `\"underline\"` or `\"filled\"`.\n */\nexport type FormUnderlineDirection = \"left\" | \"center\" | \"right\";\n\nexport interface FormThemeOptions {\n /**\n * The current theme type.\n *\n * @defaultValue `\"outline\"`\n */\n theme?: FormTheme;\n\n /**\n * The current underline direction.\n *\n * @defaultValue `\"left\"`\n */\n underlineDirection?: FormUnderlineDirection;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface FormConfiguration extends Required<FormThemeOptions> {\n /**\n * Set this to `false` if the `$disable-uncontrolled-input-toggles` variable\n * is set to `true` in the Sass configuration.\n *\n * Since the `checked` state only changes for the radio that has been clicked,\n * the previously checked radio would also be shown as checked with no way of\n * fixing it without controlling the radio component. When this flag is\n * enabled, the checked icons and state are handled through css instead of\n * `useState`.\n *\n * @defaultValue `true`\n */\n uncontrolledToggles: boolean;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface FormComponentStates {\n /** @defaultValue `false` */\n error?: boolean;\n\n /** @defaultValue `false` */\n active?: boolean;\n\n /** @defaultValue `false` */\n disabled?: boolean;\n\n /** @defaultValue `false` */\n readOnly?: boolean;\n}\n\n/**\n * @since 6.0.0\n * @see https://html.spec.whatwg.org/multipage/forms.html#autofill\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values\n */\nexport type AutocompleteAttributeValue =\n | \"off\"\n | \"on\"\n | \"name\"\n | \"honorific-prefix\"\n | \"given-name\"\n | \"additional-name\"\n | \"family-name\"\n | \"honorific-suffix\"\n | \"nickname\"\n | \"email\"\n | \"username\"\n | \"new-password\"\n | \"current-password\"\n | \"one-time-code\"\n | \"organization-title\"\n | \"organization\"\n | \"street-address\"\n | \"address-line1\"\n | \"address-line2\"\n | \"address-line3\"\n | \"address-level1\"\n | \"address-level2\"\n | \"address-level3\"\n | \"address-level4\"\n | \"country\"\n | \"country-name\"\n | \"postal-code\"\n | \"cc-name\"\n | \"cc-given-name\"\n | \"cc-additional-name\"\n | \"cc-family-name\"\n | \"cc-number\"\n | \"cc-exp\"\n | \"cc-exp-month\"\n | \"cc-exp-year\"\n | \"cc-csc\"\n | \"cc-type\"\n | \"transaction-currency\"\n | \"transaction-amount\"\n | \"language\"\n | \"bday\"\n | \"bday-day\"\n | \"bday-month\"\n | \"bday-year\"\n | \"sex\"\n | \"tel\"\n | \"tel-country-code\"\n | \"tel-national\"\n | \"tek-area-code\"\n | \"tel-local\"\n | \"tel-extension\"\n | \"impp\"\n | \"url\"\n | \"photo\";\n\n/**\n * @since 6.0.0\n */\nexport interface UserAgentAutocompleteProps {\n /**\n * Set this to enable additional autocompletion suggestions for a user for\n * different form fields. Using this prop will update the\n * {@link UserAgentAutocompleteProps.name} and {@link autoComplete} to default to\n * this value.\n *\n * @example\n * ```tsx\n * <Form>\n * <TextField\n * label=\"Enter your credit card number\"\n * autoCompleteValue=\"cc-number\"\n * {...creditCardProps}\n * inputMode=\"number\"\n * />\n * <TextField\n * label=\"Name on card\"\n * autoCompleteValue=\"cc-name\"\n * {...creditCardNameProps}\n * />\n * <TextField\n * label=\"Security code\"\n * autoCompleteValue=\"cc-csc\"\n * {...securityCodeProps}\n * inputMode=\"number\"\n * />\n * <Button type=\"submit\">Submit</Button>\n * </Form>\n * ```\n *\n * @see https://html.spec.whatwg.org/multipage/forms.html#autofill\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete#values\n * @see {@link AutocompleteAttributeValue}\n * @see {@link autoComplete}\n * @see {@link UserAgentAutocompleteProps.name}\n */\n autoCompleteValue?: AutocompleteAttributeValue;\n\n /**\n * @see {@link autoCompleteValue}\n * @defaultValue `autoCompleteValue`\n */\n autoComplete?: InputHTMLAttributes<HTMLInputElement>[\"autoComplete\"];\n\n /**\n * @see {@link autoCompleteValue}\n * @defaultValue `autoCompleteValue`\n */\n name?: string;\n}\n\nexport interface FormMessageClassNameOptions {\n className?: string;\n\n /**\n * Boolean if the message should gain the error state which changes the text\n * color to `red` by default.\n *\n * @defaultValue `false`\n */\n error?: boolean;\n\n /**\n * The current theme for the related text field. This is really only used to\n * match the current horizontal padding of the text field.\n *\n * @defaultValue `\"outline\"`\n */\n theme?: FormTheme;\n}\n\nexport interface FormMessageProps\n extends Omit<HTMLAttributes<HTMLDivElement>, \"minLength\" | \"maxLength\">,\n FormMessageClassNameOptions {\n /**\n * If this component is acting as a form-level error message handler, the role\n * should be updated to be `\"alert\"` for additional accessibility.\n *\n * Note: when creating a form-level error message handler, the messages should\n * no longer appear as the user types and instead once the user tries to\n * submit the form. Having an alert role disrupts normal screen reader\n * behavior by immediately reading changes in this element.\n *\n * @defaultValue `undefined`\n */\n role?: \"alert\";\n\n /**\n * Boolean if the children should no longer be wrapped in a `<p>` tag. This\n * should normally only be disabled if using a custom error message wrapper or\n * the counter behavior is not being used. To get correct alignments of the\n * message and counter, the `children` must be wrapped in some element and\n * cannot be plain test.\n *\n * Note: this will always be considered `true` if the `role` is set to\n * `\"alert\"`.\n *\n * @defaultValue `false`\n */\n disableWrap?: boolean;\n\n /**\n * An optional style to apply to the `<p>` tag that surrounds the `children`.\n * This will not be used if `role=\"alert\"` or `disableWrap={true}`.\n */\n messageStyle?: CSSProperties;\n\n /**\n * An optional className to apply to the `<p>` tag that surrounds the\n * `children`. This will not be used if `role=\"alert\"` or\n * `disableWrap={true}`.\n */\n messageClassName?: string;\n}\n\n/**\n * Props that are used to automatically add a counter for the remaining letters\n * available for the text field. The counter will always be created to the right\n * of the optional message.\n *\n * The counter is really a simple string of: `${length} / ${maxLength}`.\n *\n * If you need additional customization, it is recommended to create your own\n * implementation such as:\n *\n * ```tsx\n * <FormMessage>\n * {errorMessage}\n * <MyCounter {...props} />\n * </FormMessage>\n * ```\n *\n * Note: this should not be used alongside form-level messages.\n *\n * @since 2.9.0 Renamed from `FormMessageCounterProps` to\n * `FormMessageInputLengthCounterProps` since a `FormMessageCounter` component\n * was added\n */\nexport interface FormMessageInputLengthCounterProps {\n /**\n * The current length of the value in the related text field.\n */\n length: number;\n\n /**\n * The max length allowed for the value in the related text field.\n */\n maxLength: number;\n\n /**\n * An optional style to apply to the counter wrapper element.\n */\n counterStyle?: CSSProperties;\n\n /**\n * An optional className to apply to the counter wrapper element.\n */\n counterClassName?: string;\n}\n\nexport interface FormMessageWithCounterProps\n extends FormMessageProps,\n FormMessageInputLengthCounterProps {}\n\n/**\n * @since 6.0.0\n */\nexport interface FormMessageWithoutCounterProps extends FormMessageProps {\n length?: never;\n maxLength?: never;\n counterStyle?: never;\n counterClassName?: never;\n}\n\nexport interface FormMessageContainerExtension {\n /**\n * If the extension doesn't actually want to render the `FormMessage`\n * component, these props are optional. It kind of eliminates the whole\n * purpose of this component though.\n */\n messageProps?: PropsWithRef<\n FormMessageProps & Partial<FormMessageInputLengthCounterProps>,\n HTMLDivElement\n >;\n\n /**\n * Any props (and an optional ref) to provide to the `<div>` surrounding the\n * children and `FormMessage` component.\n *\n * Note: This will not be used if the `messageProps` are not provided since\n * only the `children` will be returned without the container.\n */\n messageContainerProps?: PropsWithRef<\n HTMLAttributes<HTMLDivElement>,\n HTMLDivElement\n >;\n}\n\n/** @since 6.0.0 */\nexport interface LabelClassNameOptions {\n className?: string;\n\n /**\n * Set this to `true` to remove the `gap` style from the label.\n *\n * @see `$label-gap`\n * @defaultValue `false`\n */\n gap?: boolean;\n\n /**\n * Set this to `true` when the parent `TextFieldContainer` has the `dense`\n * spec enabled. This updates the floating styles to match the smaller height.\n *\n * @defaultValue `false`\n */\n dense?: boolean;\n\n /**\n * Set this to `true` to update the label's color to the error color.\n *\n * @see `$error-color`\n * @defaultValue `false`\n */\n error?: boolean;\n\n /**\n * Set this to `true` to update the label's color to the active color.\n *\n * @see `$active-color`\n * @defaultValue `false`\n */\n active?: boolean;\n\n /**\n * Set this to `true` if the label should gain `flex-direction: column`\n * styling.\n *\n * @defaultValue `false`\n */\n stacked?: boolean;\n\n /**\n * Set this to `true` to update the label's color to be the disabled color.\n *\n * @see `$disabled-color`\n * @defaultValue `false`\n */\n disabled?: boolean;\n\n /**\n * Set this to true when label can floating above an input, textarea, or\n * select inside of a `TextFieldContainer`.\n *\n * @defaultValue `false`\n */\n floating?: boolean;\n\n /**\n * Set this to true when label is currently floating above an input,\n * textarea, or selected inside of a `TextFieldContainer`.\n *\n * @see {@link active}\n * @defaultValue `active`\n */\n floatingActive?: boolean;\n\n /**\n * Set this to `true` to gain `flex-direction: row-reversed` styling. If the\n * {@link stacked} prop is also `true`, `flex-direction: column-reversed` will\n * be applied.\n *\n * @defaultValue `false`\n */\n reversed?: boolean;\n\n /**\n * @defaultValue `false`\n */\n inactive?: boolean;\n}\n\nexport interface LabelProps\n extends LabelHTMLAttributes<HTMLLabelElement>,\n LabelClassNameOptions {}\n\n/**\n * @since 6.0.0\n */\nexport interface ConfigurableTextFieldAddonProps\n extends HTMLAttributes<HTMLSpanElement> {\n /**\n * Boolean if the addon should be presentational only and prevent pointer\n * events.\n *\n * @defaultValue `false`\n */\n pointerEvents?: boolean;\n}\n\n/**\n * @since 6.0.0 Split props into `ConfigurableTextFieldAddonProps`\n */\nexport interface TextFieldAddonProps extends ConfigurableTextFieldAddonProps {\n /**\n * @defaultValue `false`\n */\n after?: boolean;\n\n /**\n * Set this to `true` if the addon should not be wrapped in a `<span>` with some\n * additional styles.\n *\n * @defaultValue `false`\n */\n disabled?: boolean;\n}\n\n/**\n * @since 6.0.0 Renamed the `leftChildren` / `rightChildren` props to\n * `leftAddon` / `rightAddon`. Renamed `isLeftAddon` / `isRightAddon` to\n * `disableLeftAddonStyles` / `disableRightAddonStyles`. Added\n * `leftAddonProps` / `rightAddonProps`. Removed `stretch`\n */\nexport interface TextFieldContainerOptions\n extends FormThemeOptions,\n FormComponentStates {\n /**\n * Set this to `true` to enable the dense spec which reduces the height.\n *\n * @defaultValue `false`\n */\n dense?: boolean;\n\n /**\n * Set this to `true` to change the style from `display: flex` to\n * `display: inline-flex`.\n *\n * @defaultValue `false`\n */\n inline?: boolean;\n\n /**\n * This should generally be an icon or a button that will be placed before the\n * `TextField` or `TextArea`.\n */\n leftAddon?: ReactNode;\n\n /**\n * Any additional props to pass to the `<span>` surrounding the {@link leftAddon}.\n *\n * @since 6.0.0\n */\n leftAddonProps?: PropsWithRef<\n ConfigurableTextFieldAddonProps,\n HTMLSpanElement\n >;\n\n /**\n * @see {@link TextFieldAddonProps.disabled}\n *\n * @defaultValue `false`\n */\n disableLeftAddonStyles?: boolean;\n\n /**\n * This should generally be an icon or a button that will be placed after the\n * `TextField` or `TextArea`.\n */\n rightAddon?: ReactNode;\n\n /**\n * Any additional props to pass to the `<span>` surrounding the {@link rightAddon}.\n *\n * @since 6.0.0\n */\n rightAddonProps?: PropsWithRef<\n ConfigurableTextFieldAddonProps,\n HTMLSpanElement\n >;\n\n /**\n * @see {@link TextFieldAddonProps.disabled}\n *\n * @defaultValue `false`\n */\n disableRightAddonStyles?: boolean;\n}\n\nexport interface FormFieldOptions\n extends TextFieldContainerOptions,\n FormMessageContainerExtension {\n /**\n * An optional floating label to use with the text field. A label is generally\n * recommended for accessibility, but can be omitted if an `aria-label` or\n * `aria-labelledby` is provided.\n */\n label?: ReactNode;\n\n /**\n * Any additional props and/or ref that should be passed to the `<label>`\n * element when a {@link label} is provided.\n *\n * @example\n * ```tsx\n * labelProps={{\n * ref: labelRef,\n * style: {},\n * className: \"some-custom-class-name\",\n * onClick: (event) => {\n * // do something\n * }\n * }}\n * ```\n */\n labelProps?: PropsWithRef<LabelProps, HTMLLabelElement>;\n\n /**\n * A convenience prop to apply a custom style to a label. This is equivalent\n * to:\n *\n * ```ts\n * labelProps={{\n * style: // some style here\n * }}\n * ```\n */\n labelStyle?: CSSProperties;\n\n /**\n * A convenience prop to apply a custom className to a label. This is\n * equivalent to:\n *\n * ```ts\n * labelProps={{\n * className: \"some-class-name\",\n * }}\n * ```\n */\n labelClassName?: string;\n}\n"],"names":[],"mappings":"AAiiBA,WAmDC"}
@@ -126,6 +126,8 @@ export interface CombinedCheckboxGroupReturnValue<V extends string> {
126
126
  * );
127
127
  * ```
128
128
  *
129
+ * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}
130
+ * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}
129
131
  * @since 6.0.0
130
132
  */
131
133
  export declare function useCheckboxGroup<V extends string>(options: CheckboxGroupOptions<V> & {
@@ -162,6 +164,8 @@ export declare function useCheckboxGroup<V extends string>(options: CheckboxGrou
162
164
  * );
163
165
  * ```
164
166
  *
167
+ * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}
168
+ * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}
165
169
  * @since 6.0.0
166
170
  */
167
171
  export declare function useCheckboxGroup<V extends string>(options: CheckboxGroupOptions<V> & {
@@ -189,6 +193,8 @@ export declare function useCheckboxGroup<V extends string>(options: CheckboxGrou
189
193
  * );
190
194
  * ```
191
195
  *
196
+ * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}
197
+ * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}
192
198
  * @since 6.0.0
193
199
  */
194
200
  export declare function useCheckboxGroup<V extends string>(options: CheckboxGroupOptions<V> & {
@@ -225,6 +231,8 @@ export declare function useCheckboxGroup<V extends string>(options: CheckboxGrou
225
231
  * );
226
232
  * ```
227
233
  *
234
+ * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}
235
+ * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}
228
236
  * @since 6.0.0
229
237
  */
230
238
  export declare function useCheckboxGroup<V extends string>(options: CheckboxGroupOptions<V> & {
@@ -2,7 +2,12 @@
2
2
  import { useCallback, useRef } from "react";
3
3
  import { useReadonlySet } from "../useReadonlySet.js";
4
4
  const EMPTY_LIST = [];
5
- export function useCheckboxGroup(options) {
5
+ /**
6
+ * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}
7
+ * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}
8
+ * @since 6.0.0
9
+ * @internal
10
+ */ export function useCheckboxGroup(options) {
6
11
  const { name, menu = false, values, defaultCheckedValues = EMPTY_LIST } = options;
7
12
  const { value: checkedValues, setValue: setCheckedValues, toggleValue } = useReadonlySet({
8
13
  defaultValue: defaultCheckedValues
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/useCheckboxGroup.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useRef } from \"react\";\n\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\nimport { useReadonlySet } from \"../useReadonlySet.js\";\n\nconst EMPTY_LIST = [] as const;\n\n/** @since 6.0.0 */\nexport interface CheckboxGroupOptions<V> {\n /**\n * A `name` to apply to all the checkboxes within the group. This is required\n * if the {@link menu} option is set to `true`.\n */\n name?: string;\n\n /**\n * Set this to `true` if using the `MenuItemCheckbox` component instead of the\n * `Checkbox` so the correct props can be provided.\n *\n * @defaultValue `false`\n */\n menu?: boolean;\n\n /**\n * This prop **must** be defined to enable the indeterminate checkbox feature\n * from the hook and should be a list of all the possible checkbox values in\n * the group. This will be used to select all values when the indeterminate\n * checkbox is checked and determine if all the checkboxes have manually be\n * selected.\n *\n * @example Indeterminate Behavior\n * ```tsx\n * const OPTIONS = [\n * { label: \"First\", value: \"a\" },\n * { label: \"Second\", value: \"b\" },\n * { label: \"Third\", value: \"c\" },\n * ] as const;\n * const VALUES = OPTIONS.map(({ value }) => value) as const;\n *\n * const {\n * getCheckboxProps,\n * getIndeterminateProps,\n * checkedValues,\n * } = useCheckboxGroup({ name: \"group\", values: VALUES });\n * ```\n */\n values?: readonly V[];\n\n /**\n * Set this to a list of checkbox values that should be checked by default.\n *\n * @defaultValue `[]`\n */\n defaultCheckedValues?: UseStateInitializer<readonly V[]>;\n}\n\n/** @since 6.0.0 */\nexport interface CheckboxGroupImplementation<V extends string> {\n reset: () => void;\n checkedValues: ReadonlySet<V>;\n setCheckedValues: UseStateSetter<ReadonlySet<V>>;\n getCheckboxProps: (value: V) => {\n name: string;\n value: V;\n checked: boolean;\n onChange: () => void;\n };\n}\n\n/** @since 6.0.0 */\nexport interface IndeterminateCheckboxGroupImplementation<V extends string>\n extends CheckboxGroupImplementation<V> {\n getIndeterminateProps: () => {\n \"aria-checked\": \"mixed\" | undefined;\n name: string;\n checked: boolean;\n indeterminate: boolean;\n onChange: () => void;\n };\n}\n\n/** @since 6.0.0 */\nexport interface MenuItemCheckboxGroupImplementation<V extends string> {\n reset: () => void;\n checkedValues: ReadonlySet<V>;\n setCheckedValues: UseStateSetter<ReadonlySet<V>>;\n getCheckboxProps: (value: V) => {\n checked: boolean;\n onCheckedChange: () => void;\n };\n}\n\n/** @since 6.0.0 */\nexport interface IndeterminateMenuItemCheckboxGroupImplementation<\n V extends string,\n> extends MenuItemCheckboxGroupImplementation<V> {\n getIndeterminateProps: () => {\n \"aria-checked\": \"mixed\" | undefined;\n checked: boolean;\n indeterminate: boolean;\n onCheckedChange: () => void;\n };\n}\n\n/** @since 6.0.0 */\nexport interface CombinedCheckboxGroupReturnValue<V extends string> {\n reset: () => void;\n checkedValues: ReadonlySet<V>;\n setCheckedValues: UseStateSetter<ReadonlySet<V>>;\n getCheckboxProps: (value: V) => {\n name?: string;\n value?: V;\n checked: boolean;\n onChange?: () => void;\n onCheckedChange?: () => void;\n };\n getIndeterminateProps?: () => {\n \"aria-checked\": \"mixed\" | undefined;\n name?: string;\n checked: boolean;\n indeterminate: boolean;\n onChange?: () => void;\n onCheckedChange?: () => void;\n };\n}\n\n/**\n * @example Checkbox Group\n * ```tsx\n * const { getCheckboxProps, checkedValues } = useCheckboxGroup({ name: \"example\" });\n *\n * return (\n * <>\n * <Checkbox {...getCheckboxProps(\"a\")}>\n * First\n * </Checkbox>\n * <Checkbox {...getCheckboxProps(\"b\")}>\n * Second\n * </Checkbox>\n * <Checkbox {...getCheckboxProps(\"c\")}>\n * Third\n * </Checkbox>\n * </>\n * );\n * ```\n *\n * @since 6.0.0\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V> & {\n menu?: false;\n name: string;\n values?: never;\n }\n): CheckboxGroupImplementation<V>;\n/**\n * @example Indeterminate Checkbox Group\n * ```tsx\n * const OPTIONS = [\n * { label: \"First\", value: \"a\" },\n * { label: \"Second\", value: \"b\" },\n * { label: \"Third\", value: \"c\" },\n * ] as const:\n * const VALUES = OPTIONS.map(({ value }) => value) as const;\n *\n * const {\n * getCheckboxProps,\n * getIndeterminateProps,\n * checkedValues\n * } = useCheckboxGroup({\n * name: \"example\",\n * values: VALUES,\n * });\n *\n * return (\n * <>\n * <Checkbox {...getIndeterminateProps()} label=\"Select all\" />\n * {VALUES.map(({ label, value }) => (\n * <Checkbox key={value} label={label} {...getCheckboxProps(value)} />\n * ))}\n * </>\n * );\n * ```\n *\n * @since 6.0.0\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V> & {\n menu?: false;\n name: string;\n values: readonly V[];\n }\n): IndeterminateCheckboxGroupImplementation<V>;\n/**\n * @example MenuItemCheckbox Group\n * ```tsx\n * const { getCheckboxProps, checkedValues } = useCheckboxGroup({ menu: true });\n *\n * return (\n * <>\n * <MenuItemCheckbox {...getCheckboxProps(\"a\")}>\n * First\n * </MenuItemCheckbox>\n * <MenuItemCheckbox {...getCheckboxProps(\"b\")}>\n * Second\n * </MenuItemCheckbox>\n * <MenuItemCheckbox {...getCheckboxProps(\"c\")}>\n * Third\n * </MenuItemCheckbox>\n * </>\n * );\n * ```\n *\n * @since 6.0.0\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V> & {\n menu: true;\n name?: never;\n values?: never;\n }\n): MenuItemCheckboxGroupImplementation<V>;\n/**\n * @example Indeterminate MenuItemCheckbox Group\n * ```tsx\n * const OPTIONS = [\n * { label: \"First\", value: \"a\" },\n * { label: \"Second\", value: \"b\" },\n * { label: \"Third\", value: \"c\" },\n * ] as const:\n * const VALUES = OPTIONS.map(({ value }) => value) as const;\n *\n * const { getCheckboxProps, getIndeterminateProps, checkedValues } = useCheckboxGroup({\n * menu: true,\n * values: VALUES,\n * });\n *\n * return (\n * <>\n * <MenuItemCheckbox {...getIndeterminateProps()}>\n * All\n * <MenuItemCheckbox>\n * {OPTIONS.map(({ label, value }) => (\n * <MenuItemCheckbox key={value} {...getCheckboxProps(value)}>\n * {label}\n * </MenuItemCheckbox>\n * ))}\n * </>\n * );\n * ```\n *\n * @since 6.0.0\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V> & {\n menu: true;\n name?: never;\n values: readonly V[];\n }\n): IndeterminateMenuItemCheckboxGroupImplementation<V>;\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V>\n): CombinedCheckboxGroupReturnValue<V> {\n const {\n name,\n menu = false,\n values,\n defaultCheckedValues = EMPTY_LIST,\n } = options;\n const {\n value: checkedValues,\n setValue: setCheckedValues,\n toggleValue,\n } = useReadonlySet({\n defaultValue: defaultCheckedValues,\n });\n const initial = useRef(checkedValues);\n\n let getIndeterminateProps: CombinedCheckboxGroupReturnValue<V>[\"getIndeterminateProps\"];\n if (values) {\n getIndeterminateProps = () => {\n const checked = checkedValues.size > 0;\n const indeterminate = checked && checkedValues.size < values.length;\n\n return {\n \"aria-checked\": indeterminate ? \"mixed\" : undefined,\n name,\n checked,\n indeterminate,\n [menu ? \"onCheckedChange\" : \"onChange\"]() {\n setCheckedValues((checkedValues) => {\n if (checkedValues.size === 0 || indeterminate) {\n return new Set(values);\n }\n\n return new Set();\n });\n },\n };\n };\n }\n\n return {\n reset: useCallback(() => {\n setCheckedValues(initial.current);\n }, [setCheckedValues]),\n checkedValues,\n setCheckedValues,\n getIndeterminateProps,\n getCheckboxProps(value) {\n return {\n name,\n value: menu ? undefined : value,\n checked: checkedValues.has(value),\n [menu ? \"onCheckedChange\" : \"onChange\"]() {\n toggleValue(value);\n },\n };\n },\n };\n}\n"],"names":["useCallback","useRef","useReadonlySet","EMPTY_LIST","useCheckboxGroup","options","name","menu","values","defaultCheckedValues","value","checkedValues","setValue","setCheckedValues","toggleValue","defaultValue","initial","getIndeterminateProps","checked","size","indeterminate","length","undefined","Set","reset","current","getCheckboxProps","has"],"mappings":"AAAA;AAEA,SAASA,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AAG5C,SAASC,cAAc,QAAQ,uBAAuB;AAEtD,MAAMC,aAAa,EAAE;AA+PrB,OAAO,SAASC,iBACdC,OAAgC;IAEhC,MAAM,EACJC,IAAI,EACJC,OAAO,KAAK,EACZC,MAAM,EACNC,uBAAuBN,UAAU,EAClC,GAAGE;IACJ,MAAM,EACJK,OAAOC,aAAa,EACpBC,UAAUC,gBAAgB,EAC1BC,WAAW,EACZ,GAAGZ,eAAe;QACjBa,cAAcN;IAChB;IACA,MAAMO,UAAUf,OAAOU;IAEvB,IAAIM;IACJ,IAAIT,QAAQ;QACVS,wBAAwB;YACtB,MAAMC,UAAUP,cAAcQ,IAAI,GAAG;YACrC,MAAMC,gBAAgBF,WAAWP,cAAcQ,IAAI,GAAGX,OAAOa,MAAM;YAEnE,OAAO;gBACL,gBAAgBD,gBAAgB,UAAUE;gBAC1ChB;gBACAY;gBACAE;gBACA,CAACb,OAAO,oBAAoB,WAAW;oBACrCM,iBAAiB,CAACF;wBAChB,IAAIA,cAAcQ,IAAI,KAAK,KAAKC,eAAe;4BAC7C,OAAO,IAAIG,IAAIf;wBACjB;wBAEA,OAAO,IAAIe;oBACb;gBACF;YACF;QACF;IACF;IAEA,OAAO;QACLC,OAAOxB,YAAY;YACjBa,iBAAiBG,QAAQS,OAAO;QAClC,GAAG;YAACZ;SAAiB;QACrBF;QACAE;QACAI;QACAS,kBAAiBhB,KAAK;YACpB,OAAO;gBACLJ;gBACAI,OAAOH,OAAOe,YAAYZ;gBAC1BQ,SAASP,cAAcgB,GAAG,CAACjB;gBAC3B,CAACH,OAAO,oBAAoB,WAAW;oBACrCO,YAAYJ;gBACd;YACF;QACF;IACF;AACF"}
1
+ {"version":3,"sources":["../../src/form/useCheckboxGroup.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback, useRef } from \"react\";\n\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\nimport { useReadonlySet } from \"../useReadonlySet.js\";\n\nconst EMPTY_LIST = [] as const;\n\n/** @since 6.0.0 */\nexport interface CheckboxGroupOptions<V> {\n /**\n * A `name` to apply to all the checkboxes within the group. This is required\n * if the {@link menu} option is set to `true`.\n */\n name?: string;\n\n /**\n * Set this to `true` if using the `MenuItemCheckbox` component instead of the\n * `Checkbox` so the correct props can be provided.\n *\n * @defaultValue `false`\n */\n menu?: boolean;\n\n /**\n * This prop **must** be defined to enable the indeterminate checkbox feature\n * from the hook and should be a list of all the possible checkbox values in\n * the group. This will be used to select all values when the indeterminate\n * checkbox is checked and determine if all the checkboxes have manually be\n * selected.\n *\n * @example Indeterminate Behavior\n * ```tsx\n * const OPTIONS = [\n * { label: \"First\", value: \"a\" },\n * { label: \"Second\", value: \"b\" },\n * { label: \"Third\", value: \"c\" },\n * ] as const;\n * const VALUES = OPTIONS.map(({ value }) => value) as const;\n *\n * const {\n * getCheckboxProps,\n * getIndeterminateProps,\n * checkedValues,\n * } = useCheckboxGroup({ name: \"group\", values: VALUES });\n * ```\n */\n values?: readonly V[];\n\n /**\n * Set this to a list of checkbox values that should be checked by default.\n *\n * @defaultValue `[]`\n */\n defaultCheckedValues?: UseStateInitializer<readonly V[]>;\n}\n\n/** @since 6.0.0 */\nexport interface CheckboxGroupImplementation<V extends string> {\n reset: () => void;\n checkedValues: ReadonlySet<V>;\n setCheckedValues: UseStateSetter<ReadonlySet<V>>;\n getCheckboxProps: (value: V) => {\n name: string;\n value: V;\n checked: boolean;\n onChange: () => void;\n };\n}\n\n/** @since 6.0.0 */\nexport interface IndeterminateCheckboxGroupImplementation<V extends string>\n extends CheckboxGroupImplementation<V> {\n getIndeterminateProps: () => {\n \"aria-checked\": \"mixed\" | undefined;\n name: string;\n checked: boolean;\n indeterminate: boolean;\n onChange: () => void;\n };\n}\n\n/** @since 6.0.0 */\nexport interface MenuItemCheckboxGroupImplementation<V extends string> {\n reset: () => void;\n checkedValues: ReadonlySet<V>;\n setCheckedValues: UseStateSetter<ReadonlySet<V>>;\n getCheckboxProps: (value: V) => {\n checked: boolean;\n onCheckedChange: () => void;\n };\n}\n\n/** @since 6.0.0 */\nexport interface IndeterminateMenuItemCheckboxGroupImplementation<\n V extends string,\n> extends MenuItemCheckboxGroupImplementation<V> {\n getIndeterminateProps: () => {\n \"aria-checked\": \"mixed\" | undefined;\n checked: boolean;\n indeterminate: boolean;\n onCheckedChange: () => void;\n };\n}\n\n/** @since 6.0.0 */\nexport interface CombinedCheckboxGroupReturnValue<V extends string> {\n reset: () => void;\n checkedValues: ReadonlySet<V>;\n setCheckedValues: UseStateSetter<ReadonlySet<V>>;\n getCheckboxProps: (value: V) => {\n name?: string;\n value?: V;\n checked: boolean;\n onChange?: () => void;\n onCheckedChange?: () => void;\n };\n getIndeterminateProps?: () => {\n \"aria-checked\": \"mixed\" | undefined;\n name?: string;\n checked: boolean;\n indeterminate: boolean;\n onChange?: () => void;\n onCheckedChange?: () => void;\n };\n}\n\n/**\n * @example Checkbox Group\n * ```tsx\n * const { getCheckboxProps, checkedValues } = useCheckboxGroup({ name: \"example\" });\n *\n * return (\n * <>\n * <Checkbox {...getCheckboxProps(\"a\")}>\n * First\n * </Checkbox>\n * <Checkbox {...getCheckboxProps(\"b\")}>\n * Second\n * </Checkbox>\n * <Checkbox {...getCheckboxProps(\"c\")}>\n * Third\n * </Checkbox>\n * </>\n * );\n * ```\n *\n * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}\n * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}\n * @since 6.0.0\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V> & {\n menu?: false;\n name: string;\n values?: never;\n }\n): CheckboxGroupImplementation<V>;\n/**\n * @example Indeterminate Checkbox Group\n * ```tsx\n * const OPTIONS = [\n * { label: \"First\", value: \"a\" },\n * { label: \"Second\", value: \"b\" },\n * { label: \"Third\", value: \"c\" },\n * ] as const:\n * const VALUES = OPTIONS.map(({ value }) => value) as const;\n *\n * const {\n * getCheckboxProps,\n * getIndeterminateProps,\n * checkedValues\n * } = useCheckboxGroup({\n * name: \"example\",\n * values: VALUES,\n * });\n *\n * return (\n * <>\n * <Checkbox {...getIndeterminateProps()} label=\"Select all\" />\n * {VALUES.map(({ label, value }) => (\n * <Checkbox key={value} label={label} {...getCheckboxProps(value)} />\n * ))}\n * </>\n * );\n * ```\n *\n * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}\n * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}\n * @since 6.0.0\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V> & {\n menu?: false;\n name: string;\n values: readonly V[];\n }\n): IndeterminateCheckboxGroupImplementation<V>;\n/**\n * @example MenuItemCheckbox Group\n * ```tsx\n * const { getCheckboxProps, checkedValues } = useCheckboxGroup({ menu: true });\n *\n * return (\n * <>\n * <MenuItemCheckbox {...getCheckboxProps(\"a\")}>\n * First\n * </MenuItemCheckbox>\n * <MenuItemCheckbox {...getCheckboxProps(\"b\")}>\n * Second\n * </MenuItemCheckbox>\n * <MenuItemCheckbox {...getCheckboxProps(\"c\")}>\n * Third\n * </MenuItemCheckbox>\n * </>\n * );\n * ```\n *\n * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}\n * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}\n * @since 6.0.0\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V> & {\n menu: true;\n name?: never;\n values?: never;\n }\n): MenuItemCheckboxGroupImplementation<V>;\n/**\n * @example Indeterminate MenuItemCheckbox Group\n * ```tsx\n * const OPTIONS = [\n * { label: \"First\", value: \"a\" },\n * { label: \"Second\", value: \"b\" },\n * { label: \"Third\", value: \"c\" },\n * ] as const:\n * const VALUES = OPTIONS.map(({ value }) => value) as const;\n *\n * const { getCheckboxProps, getIndeterminateProps, checkedValues } = useCheckboxGroup({\n * menu: true,\n * values: VALUES,\n * });\n *\n * return (\n * <>\n * <MenuItemCheckbox {...getIndeterminateProps()}>\n * All\n * <MenuItemCheckbox>\n * {OPTIONS.map(({ label, value }) => (\n * <MenuItemCheckbox key={value} {...getCheckboxProps(value)}>\n * {label}\n * </MenuItemCheckbox>\n * ))}\n * </>\n * );\n * ```\n *\n * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}\n * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}\n * @since 6.0.0\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V> & {\n menu: true;\n name?: never;\n values: readonly V[];\n }\n): IndeterminateMenuItemCheckboxGroupImplementation<V>;\n/**\n * @see {@link https://next.react-md.dev/components/Checkbox | Checkbox Demos}\n * @see {@link https://next.react-md.dev/hooks/use-checkbox-group | useCheckboxGroup Demos}\n * @since 6.0.0\n * @internal\n */\nexport function useCheckboxGroup<V extends string>(\n options: CheckboxGroupOptions<V>\n): CombinedCheckboxGroupReturnValue<V> {\n const {\n name,\n menu = false,\n values,\n defaultCheckedValues = EMPTY_LIST,\n } = options;\n const {\n value: checkedValues,\n setValue: setCheckedValues,\n toggleValue,\n } = useReadonlySet({\n defaultValue: defaultCheckedValues,\n });\n const initial = useRef(checkedValues);\n\n let getIndeterminateProps: CombinedCheckboxGroupReturnValue<V>[\"getIndeterminateProps\"];\n if (values) {\n getIndeterminateProps = () => {\n const checked = checkedValues.size > 0;\n const indeterminate = checked && checkedValues.size < values.length;\n\n return {\n \"aria-checked\": indeterminate ? \"mixed\" : undefined,\n name,\n checked,\n indeterminate,\n [menu ? \"onCheckedChange\" : \"onChange\"]() {\n setCheckedValues((checkedValues) => {\n if (checkedValues.size === 0 || indeterminate) {\n return new Set(values);\n }\n\n return new Set();\n });\n },\n };\n };\n }\n\n return {\n reset: useCallback(() => {\n setCheckedValues(initial.current);\n }, [setCheckedValues]),\n checkedValues,\n setCheckedValues,\n getIndeterminateProps,\n getCheckboxProps(value) {\n return {\n name,\n value: menu ? undefined : value,\n checked: checkedValues.has(value),\n [menu ? \"onCheckedChange\" : \"onChange\"]() {\n toggleValue(value);\n },\n };\n },\n };\n}\n"],"names":["useCallback","useRef","useReadonlySet","EMPTY_LIST","useCheckboxGroup","options","name","menu","values","defaultCheckedValues","value","checkedValues","setValue","setCheckedValues","toggleValue","defaultValue","initial","getIndeterminateProps","checked","size","indeterminate","length","undefined","Set","reset","current","getCheckboxProps","has"],"mappings":"AAAA;AAEA,SAASA,WAAW,EAAEC,MAAM,QAAQ,QAAQ;AAG5C,SAASC,cAAc,QAAQ,uBAAuB;AAEtD,MAAMC,aAAa,EAAE;AAuQrB;;;;;CAKC,GACD,OAAO,SAASC,iBACdC,OAAgC;IAEhC,MAAM,EACJC,IAAI,EACJC,OAAO,KAAK,EACZC,MAAM,EACNC,uBAAuBN,UAAU,EAClC,GAAGE;IACJ,MAAM,EACJK,OAAOC,aAAa,EACpBC,UAAUC,gBAAgB,EAC1BC,WAAW,EACZ,GAAGZ,eAAe;QACjBa,cAAcN;IAChB;IACA,MAAMO,UAAUf,OAAOU;IAEvB,IAAIM;IACJ,IAAIT,QAAQ;QACVS,wBAAwB;YACtB,MAAMC,UAAUP,cAAcQ,IAAI,GAAG;YACrC,MAAMC,gBAAgBF,WAAWP,cAAcQ,IAAI,GAAGX,OAAOa,MAAM;YAEnE,OAAO;gBACL,gBAAgBD,gBAAgB,UAAUE;gBAC1ChB;gBACAY;gBACAE;gBACA,CAACb,OAAO,oBAAoB,WAAW;oBACrCM,iBAAiB,CAACF;wBAChB,IAAIA,cAAcQ,IAAI,KAAK,KAAKC,eAAe;4BAC7C,OAAO,IAAIG,IAAIf;wBACjB;wBAEA,OAAO,IAAIe;oBACb;gBACF;YACF;QACF;IACF;IAEA,OAAO;QACLC,OAAOxB,YAAY;YACjBa,iBAAiBG,QAAQS,OAAO;QAClC,GAAG;YAACZ;SAAiB;QACrBF;QACAE;QACAI;QACAS,kBAAiBhB,KAAK;YACpB,OAAO;gBACLJ;gBACAI,OAAOH,OAAOe,YAAYZ;gBAC1BQ,SAASP,cAAcgB,GAAG,CAACjB;gBAC3B,CAACH,OAAO,oBAAoB,WAAW;oBACrCO,YAAYJ;gBACd;YACF;QACF;IACF;AACF"}
@@ -184,7 +184,6 @@ export interface ComboboxImplementation<ComboboxEl extends HTMLElement = HTMLInp
184
184
  * with reasonable defaults.
185
185
  */
186
186
  getMenuProps: (overrides?: ConfigurableComboboxMenuProps) => ComboboxMenuProps<PopupEl>;
187
- getTransitionCallbacks: (options: ComboboxTransitionOptions) => Required<ComboboxTransitionCallbacks>;
188
187
  }
189
188
  /**
190
189
  * @since 6.0.0
@@ -2,7 +2,7 @@
2
2
  import { useCallback, useRef } from "react";
3
3
  import { useKeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
4
4
  import { BELOW_CENTER_ANCHOR } from "../positioning/constants.js";
5
- import { TRANSITION_CONFIG } from "../transition/config.js";
5
+ import { getTransitionCallbacks } from "../transition/getTransitionCallbacks.js";
6
6
  import { useEnsuredId } from "../useEnsuredId.js";
7
7
  import { useEnsuredRef } from "../useEnsuredRef.js";
8
8
  import { useEnsuredState } from "../useEnsuredState.js";
@@ -64,6 +64,9 @@ const noop = ()=>{
64
64
  if (visible) {
65
65
  switch(event.key){
66
66
  case "Tab":
67
+ // do not stop propagation for tab so that shift+tab works correctly in dialogs
68
+ hide();
69
+ break;
67
70
  case "Escape":
68
71
  event.stopPropagation();
69
72
  hide();
@@ -105,65 +108,6 @@ const noop = ()=>{
105
108
  isNegativeOneAllowed,
106
109
  getDefaultFocusedIndex
107
110
  });
108
- const getTransitionCallbacks = (options = {})=>{
109
- const { onEntered, onEntering, onExiting, onExited, disableTransition } = options;
110
- const handleEntering = (callback = noop, skipped)=>(appearing)=>{
111
- callback(appearing);
112
- const popup = popupRef.current;
113
- if (!popup || skipped) {
114
- // Chrome does not trigger the scrollIntoView behavior correctly while
115
- // using a scale transition, so need to trigger this on the entered
116
- // flow to really make sure the item is in view.
117
- // An alternative would be to implement a custom scrollIntoView
118
- // behavior again like the previous versions of react-md, but this is
119
- // less lines of code
120
- const activeOption = document.getElementById(activeDescendantId);
121
- if (activeOption) {
122
- activeOption.scrollIntoView({
123
- block: "nearest"
124
- });
125
- }
126
- return;
127
- }
128
- const focusables = getFocusableElements(popup, true);
129
- const index = getEnterDefaultFocusedIndex({
130
- focusLast: focusLast.current,
131
- focusables,
132
- currentFocusIndex: currentFocusIndex.current
133
- });
134
- focusLast.current = false;
135
- currentFocusIndex.current = index;
136
- const option = focusables[index];
137
- if (!option) {
138
- return;
139
- }
140
- onFocusChange({
141
- index,
142
- element: option
143
- });
144
- option.scrollIntoView({
145
- block: "nearest"
146
- });
147
- setActiveDescendantId(option.id || "");
148
- };
149
- const handleExiting = (callback = noop, skipped)=>()=>{
150
- callback();
151
- if (!skipped) {
152
- // since the menu is unmounted or set to hidden while not visible, need
153
- // to clear the aria-activedescendant and current focus index when
154
- // hiding
155
- currentFocusIndex.current = -1;
156
- setActiveDescendantId("");
157
- }
158
- };
159
- const isTransitionCompleteSkipped = !disableTransition && !TRANSITION_CONFIG.disabled;
160
- return {
161
- onEntering: handleEntering(onEntering, false),
162
- onEntered: handleEntering(onEntered, isTransitionCompleteSkipped),
163
- onExiting: handleExiting(onExiting, false),
164
- onExited: handleExiting(onExited, isTransitionCompleteSkipped)
165
- };
166
- };
167
111
  const popupProps = {
168
112
  "aria-multiselectable": multiselect || undefined,
169
113
  id: popupId,
@@ -194,9 +138,48 @@ const noop = ()=>{
194
138
  currentFocusIndex,
195
139
  activeDescendantId,
196
140
  setActiveDescendantId,
197
- getTransitionCallbacks,
198
141
  getMenuProps (props = {}) {
199
- const { sheetProps, disableTransition } = props;
142
+ const { sheetProps, disableTransition, onEnter, onEntering, onEntered = noop, onExited, onExiting, onExit } = props;
143
+ // Chrome does not trigger the scrollIntoView behavior correctly while
144
+ // using a scale transition, so need to trigger this on the entered flow
145
+ // to really make sure the item is in view. An alternative would be to
146
+ // implement a custom scrollIntoView behavior again like the previous
147
+ // versions of react-md, but this is less lines of code
148
+ const attemptScroll = ()=>{
149
+ const activeOption = document.getElementById(activeDescendantId);
150
+ if (activeOption) {
151
+ activeOption.scrollIntoView({
152
+ block: "nearest"
153
+ });
154
+ }
155
+ };
156
+ const onEnterOnce = ()=>{
157
+ const popup = popupRef.current;
158
+ if (!popup) {
159
+ attemptScroll();
160
+ return;
161
+ }
162
+ const focusables = getFocusableElements(popup, true);
163
+ const index = getEnterDefaultFocusedIndex({
164
+ focusLast: focusLast.current,
165
+ focusables,
166
+ currentFocusIndex: currentFocusIndex.current
167
+ });
168
+ focusLast.current = false;
169
+ currentFocusIndex.current = index;
170
+ const option = focusables[index];
171
+ if (!option) {
172
+ return;
173
+ }
174
+ onFocusChange({
175
+ index,
176
+ element: option
177
+ });
178
+ option.scrollIntoView({
179
+ block: "nearest"
180
+ });
181
+ setActiveDescendantId(option.id || "");
182
+ };
200
183
  return {
201
184
  anchor: BELOW_CENTER_ANCHOR,
202
185
  width: "min",
@@ -205,11 +188,31 @@ const noop = ()=>{
205
188
  ...popupProps,
206
189
  visible,
207
190
  onRequestClose: hide,
208
- ...getTransitionCallbacks(props),
191
+ ...getTransitionCallbacks({
192
+ disableTransition,
193
+ onEnter,
194
+ onEntered: (appearing)=>{
195
+ onEntered(appearing);
196
+ attemptScroll();
197
+ },
198
+ onEntering,
199
+ onEnterOnce,
200
+ onExit,
201
+ onExiting,
202
+ onExited,
203
+ onExitOnce: ()=>{
204
+ // since the menu is unmounted or set to hidden while not visible, need
205
+ // to clear the aria-activedescendant and current focus index when
206
+ // hiding
207
+ currentFocusIndex.current = -1;
208
+ setActiveDescendantId("");
209
+ }
210
+ }),
209
211
  sheetProps: {
210
212
  ...sheetProps,
211
213
  ...getTransitionCallbacks({
212
214
  ...sheetProps,
215
+ onEnterOnce,
213
216
  disableTransition: sheetProps?.disableTransition ?? disableTransition
214
217
  })
215
218
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/form/useCombobox.ts"],"sourcesContent":["\"use client\";\n\nimport {\n type FocusEventHandler,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type InputHTMLAttributes,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type Ref,\n type RefCallback,\n type RefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nimport { type MenuProps } from \"../menu/Menu.js\";\nimport { type MenuSheetConfigurableProps } from \"../menu/MenuSheet.js\";\nimport {\n type GetDefaultFocusedIndex,\n type GetFocusableElements,\n type KeyboardMovementExtensionData,\n type KeyboardMovementProviderImplementation,\n type KeyboardMovementProviderOptions,\n} from \"../movement/types.js\";\nimport { useKeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { BELOW_CENTER_ANCHOR } from \"../positioning/constants.js\";\nimport {\n type PositionAnchor,\n type PositionWidth,\n} from \"../positioning/types.js\";\nimport { TRANSITION_CONFIG } from \"../transition/config.js\";\nimport {\n type TransitionCallbacks,\n type TransitionEnterHandler,\n type TransitionExitHandler,\n} from \"../transition/types.js\";\nimport {\n type NonNullMutableRef,\n type UseStateInitializer,\n type UseStateSetter,\n} from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useEnsuredState } from \"../useEnsuredState.js\";\nimport { tryToSubmitRelatedForm } from \"./utils.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @since 6.0.0\n */\nexport const getNonDisabledOptions = (\n container: HTMLElement\n): readonly HTMLElement[] => [\n ...container.querySelectorAll<HTMLLIElement>(\n '[role=\"option\"]:not([aria-disabled])'\n ),\n];\n\n/**\n * @since 6.0.0\n */\nexport type SupportedComboboxPopup = \"listbox\" | \"grid\" | \"dialog\";\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxKeyboardMovementData<\n E extends HTMLElement = HTMLInputElement,\n> extends KeyboardMovementExtensionData<E> {\n show: () => void;\n hide: () => void;\n visible: boolean;\n focusLast: NonNullMutableRef<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport type ExtendComboboxKeyDown<E extends HTMLElement = HTMLInputElement> = (\n movementData: ComboboxKeyboardMovementData<E>\n) => void;\n\n/**\n * @since 6.0.0\n */\nexport type ComboboxKeyboardMovementOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n> = Pick<\n KeyboardMovementProviderOptions<ComboboxEl>,\n | \"onClick\"\n | \"onFocus\"\n | \"onKeyDown\"\n | \"disabled\"\n | \"loopable\"\n | \"searchable\"\n | \"onFocusChange\"\n | \"isNegativeOneAllowed\"\n>;\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxVisibilityOptions {\n /**\n * This can be used to control the popup's visibility and **must** be used\n * along with {@link setVisible}.\n */\n visible?: boolean;\n\n /**\n * Used to control the popup's visibility and should generally be a `useState`\n * setter.\n *\n * @example Controlling the Visibility\n * ```tsx\n * const [visible, setVisible] = useState(false);\n *\n * useCombobox({\n * visible,\n * setVisible,\n * });\n * ```\n */\n setVisible?: UseStateSetter<boolean>;\n\n /**\n * Set this to `true` to have the combobox's popup visible by default.\n *\n * @defaultValue `false`\n */\n defaultVisible?: UseStateInitializer<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ConfigurableComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends ComboboxKeyboardMovementOptions<ComboboxEl>,\n ComboboxVisibilityOptions {\n /**\n * This is the {@link InputHTMLAttributes.form} attribute and is used to\n * attempt submitting a form when the enter key is pressed.\n */\n form?: string;\n\n /**\n * @defaultValue `\"combobox-popup-\" + useId()`\n */\n popupId?: string;\n popupRef?: Ref<PopupEl>;\n\n /**\n * @defaultValue `\"combobox-\" + useId()`\n */\n comboboxId?: string;\n comboboxRef?: Ref<ComboboxEl>;\n\n /**\n * @defaultValue `\"listbox\"`\n */\n popup?: \"listbox\" | \"grid\" | \"dialog\";\n\n /**\n * @defaultValue `false`\n */\n multiselect?: boolean;\n\n extendKeyDown?: ExtendComboboxKeyDown<ComboboxEl>;\n\n /**\n * @defaultValue {@link getNonDisabledOptions}\n */\n getFocusableElements?: GetFocusableElements;\n\n getDefaultFocusedIndex?: GetDefaultFocusedIndex;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxGetEnterDefaultFocusedIndexOptions {\n focusLast: boolean;\n focusables: readonly HTMLElement[];\n currentFocusIndex: number;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends ConfigurableComboboxOptions<ComboboxEl, PopupEl> {\n getEnterDefaultFocusedIndex: (\n options: ComboboxGetEnterDefaultFocusedIndexOptions\n ) => number;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxWidgetProps<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n> {\n \"aria-controls\": string;\n \"aria-disabled\": true | undefined;\n \"aria-expanded\": boolean;\n \"aria-haspopup\": SupportedComboboxPopup;\n id: string;\n ref: RefCallback<ComboboxEl>;\n role: \"combobox\";\n onClick: MouseEventHandler<ComboboxEl>;\n onFocus: FocusEventHandler<ComboboxEl>;\n onKeyDown: KeyboardEventHandler<ComboboxEl>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxWidgetPopupProps<\n PopupEl extends HTMLElement = HTMLElement,\n> {\n \"aria-multiselectable\": true | undefined;\n id: string;\n ref: RefCallback<PopupEl>;\n role: \"listbox\" | \"dialog\" | \"grid\";\n}\n\n/**\n * @since 6.0.0\n */\nexport type ComboboxTransitionCallbacks = Pick<\n TransitionCallbacks,\n \"onEntering\" | \"onEntered\" | \"onExiting\" | \"onExited\"\n>;\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxTransitionOptions extends ComboboxTransitionCallbacks {\n disableTransition?: boolean;\n}\n\n/**\n * @since 6.0.0\n */\nexport type ConfigurableComboboxMenuProps = Partial<\n Omit<MenuProps, \"visible\" | \"onRequestClose\" | keyof ComboboxWidgetPopupProps>\n>;\n\n/**\n * @since 6.0.0\n */\nexport interface ProvidedComboboxMenuProps<\n PopupEl extends HTMLElement = HTMLDivElement,\n> extends Required<ComboboxTransitionCallbacks>,\n ComboboxWidgetPopupProps<PopupEl> {\n visible: boolean;\n onRequestClose: () => void;\n /** @defaultValue `\"min\"` */\n width: PositionWidth;\n /** @defaultValue `BELOW_CENTER_ANCHOR` */\n anchor: PositionAnchor;\n fixedTo: RefObject<HTMLElement>;\n sheetProps: MenuSheetConfigurableProps &\n Required<ComboboxTransitionCallbacks>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxMenuProps<PopupEl extends HTMLElement = HTMLDivElement>\n extends Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>,\n ProvidedComboboxMenuProps<PopupEl> {}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxImplementation<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends KeyboardMovementProviderImplementation<ComboboxEl> {\n show: () => void;\n hide: () => void;\n visible: boolean;\n setVisible: UseStateSetter<boolean>;\n focusLast: NonNullMutableRef<boolean>;\n popupRef: RefObject<PopupEl>;\n popupProps: ComboboxWidgetPopupProps<PopupEl>;\n comboboxRef: RefObject<ComboboxEl>;\n comboboxProps: ComboboxWidgetProps<ComboboxEl>;\n /**\n * Since the combobox usually uses the `Menu` as a popup element, this is a\n * helper util to create the required props and merge any additional props\n * with reasonable defaults.\n */\n getMenuProps: (\n overrides?: ConfigurableComboboxMenuProps\n ) => ComboboxMenuProps<PopupEl>;\n getTransitionCallbacks: (\n options: ComboboxTransitionOptions\n ) => Required<ComboboxTransitionCallbacks>;\n}\n\n/**\n * @since 6.0.0\n */\nexport function useCombobox<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n>(\n options: ComboboxOptions<ComboboxEl, PopupEl>\n): ComboboxImplementation<ComboboxEl, PopupEl> {\n const {\n form,\n popup = \"listbox\",\n onClick = noop,\n onFocus,\n onKeyDown,\n searchable,\n multiselect,\n isNegativeOneAllowed,\n loopable,\n disabled,\n visible: propVisible,\n setVisible: propSetVisible,\n defaultVisible = false,\n comboboxId: propComboboxId,\n comboboxRef: propComboboxRef,\n popupId: propPopupId,\n popupRef: propPopupRef,\n onFocusChange = noop,\n extendKeyDown = noop,\n getFocusableElements = getNonDisabledOptions,\n getEnterDefaultFocusedIndex,\n getDefaultFocusedIndex,\n } = options;\n\n const [visible, setVisible] = useEnsuredState({\n value: propVisible,\n setValue: propSetVisible,\n defaultValue: defaultVisible,\n });\n const show = useCallback(() => {\n setVisible(true);\n }, [setVisible]);\n const hide = useCallback(() => {\n setVisible(false);\n }, [setVisible]);\n\n const popupId = useEnsuredId(propPopupId, \"combobox-popup\");\n const comboboxId = useEnsuredId(propComboboxId, \"combobox\");\n const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);\n const [popupRef, popupRefCallback] = useEnsuredRef(propPopupRef);\n const focusLast = useRef(false);\n const {\n movementProps,\n movementContext,\n currentFocusIndex,\n activeDescendantId,\n setActiveDescendantId,\n } = useKeyboardMovementProvider<ComboboxEl>({\n onFocus,\n onKeyDown,\n onClick(event) {\n onClick(event);\n if (disabled) {\n return;\n }\n\n show();\n },\n extendKeyDown(movementData) {\n extendKeyDown({\n ...movementData,\n show,\n hide,\n visible,\n focusLast,\n });\n const { event } = movementData;\n if (event.isPropagationStopped()) {\n return;\n }\n\n if (visible) {\n switch (event.key) {\n case \"Tab\":\n case \"Escape\":\n event.stopPropagation();\n hide();\n break;\n case \"Enter\":\n event.preventDefault();\n break;\n }\n\n // while visible, always use the default keyboard movement behavior\n return;\n }\n\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n event.preventDefault();\n event.stopPropagation();\n focusLast.current = event.key === \"ArrowUp\";\n show();\n break;\n case \"Enter\":\n tryToSubmitRelatedForm(event, form);\n break;\n }\n },\n disabled,\n loopable,\n searchable,\n onFocusChange,\n programmatic: true,\n includeDisabled: false,\n tabIndexBehavior: \"virtual\",\n getFocusableElements(container, programmatic) {\n const popup = popupRef.current;\n if (!popup) {\n return [];\n }\n\n return getFocusableElements(popup || container, programmatic);\n },\n isNegativeOneAllowed,\n getDefaultFocusedIndex,\n });\n const getTransitionCallbacks = (\n options: ComboboxTransitionOptions = {}\n ): Required<ComboboxTransitionCallbacks> => {\n const { onEntered, onEntering, onExiting, onExited, disableTransition } =\n options;\n\n const handleEntering =\n (callback: TransitionEnterHandler = noop, skipped: boolean) =>\n (appearing: boolean) => {\n callback(appearing);\n\n const popup = popupRef.current;\n if (!popup || skipped) {\n // Chrome does not trigger the scrollIntoView behavior correctly while\n // using a scale transition, so need to trigger this on the entered\n // flow to really make sure the item is in view.\n // An alternative would be to implement a custom scrollIntoView\n // behavior again like the previous versions of react-md, but this is\n // less lines of code\n const activeOption = document.getElementById(activeDescendantId);\n if (activeOption) {\n activeOption.scrollIntoView({ block: \"nearest\" });\n }\n return;\n }\n\n const focusables = getFocusableElements(popup, true);\n const index = getEnterDefaultFocusedIndex({\n focusLast: focusLast.current,\n focusables,\n currentFocusIndex: currentFocusIndex.current,\n });\n focusLast.current = false;\n currentFocusIndex.current = index;\n\n const option = focusables[index];\n if (!option) {\n return;\n }\n\n onFocusChange({\n index,\n element: option,\n });\n\n option.scrollIntoView({ block: \"nearest\" });\n setActiveDescendantId(option.id || \"\");\n };\n const handleExiting =\n (callback: TransitionExitHandler = noop, skipped: boolean) =>\n (): void => {\n callback();\n\n if (!skipped) {\n // since the menu is unmounted or set to hidden while not visible, need\n // to clear the aria-activedescendant and current focus index when\n // hiding\n currentFocusIndex.current = -1;\n setActiveDescendantId(\"\");\n }\n };\n\n const isTransitionCompleteSkipped =\n !disableTransition && !TRANSITION_CONFIG.disabled;\n\n return {\n onEntering: handleEntering(onEntering, false),\n onEntered: handleEntering(onEntered, isTransitionCompleteSkipped),\n onExiting: handleExiting(onExiting, false),\n onExited: handleExiting(onExited, isTransitionCompleteSkipped),\n };\n };\n\n const popupProps: ComboboxWidgetPopupProps<PopupEl> = {\n \"aria-multiselectable\": multiselect || undefined,\n id: popupId,\n ref: popupRefCallback,\n role: popup,\n };\n\n return {\n show,\n hide,\n visible,\n setVisible,\n focusLast,\n popupRef,\n popupProps,\n comboboxRef,\n comboboxProps: {\n ...movementProps,\n \"aria-controls\": popupId,\n \"aria-disabled\": disabled || undefined,\n \"aria-expanded\": visible,\n \"aria-haspopup\": popup,\n id: comboboxId,\n ref: comboboxRefCallback,\n role: \"combobox\",\n },\n movementProps,\n movementContext,\n currentFocusIndex,\n activeDescendantId,\n setActiveDescendantId,\n getTransitionCallbacks,\n getMenuProps(props = {}) {\n const { sheetProps, disableTransition } = props;\n return {\n anchor: BELOW_CENTER_ANCHOR,\n width: \"min\",\n fixedTo: comboboxRef,\n ...props,\n ...popupProps,\n visible,\n onRequestClose: hide,\n ...getTransitionCallbacks(props),\n sheetProps: {\n ...sheetProps,\n ...getTransitionCallbacks({\n ...sheetProps,\n disableTransition:\n sheetProps?.disableTransition ?? disableTransition,\n }),\n },\n };\n },\n };\n}\n"],"names":["useCallback","useRef","useKeyboardMovementProvider","BELOW_CENTER_ANCHOR","TRANSITION_CONFIG","useEnsuredId","useEnsuredRef","useEnsuredState","tryToSubmitRelatedForm","noop","getNonDisabledOptions","container","querySelectorAll","useCombobox","options","form","popup","onClick","onFocus","onKeyDown","searchable","multiselect","isNegativeOneAllowed","loopable","disabled","visible","propVisible","setVisible","propSetVisible","defaultVisible","comboboxId","propComboboxId","comboboxRef","propComboboxRef","popupId","propPopupId","popupRef","propPopupRef","onFocusChange","extendKeyDown","getFocusableElements","getEnterDefaultFocusedIndex","getDefaultFocusedIndex","value","setValue","defaultValue","show","hide","comboboxRefCallback","popupRefCallback","focusLast","movementProps","movementContext","currentFocusIndex","activeDescendantId","setActiveDescendantId","event","movementData","isPropagationStopped","key","stopPropagation","preventDefault","current","programmatic","includeDisabled","tabIndexBehavior","getTransitionCallbacks","onEntered","onEntering","onExiting","onExited","disableTransition","handleEntering","callback","skipped","appearing","activeOption","document","getElementById","scrollIntoView","block","focusables","index","option","element","id","handleExiting","isTransitionCompleteSkipped","popupProps","undefined","ref","role","comboboxProps","getMenuProps","props","sheetProps","anchor","width","fixedTo","onRequestClose"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/form/useCombobox.ts"],"sourcesContent":["\"use client\";\n\nimport {\n type FocusEventHandler,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n type InputHTMLAttributes,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type Ref,\n type RefCallback,\n type RefObject,\n useCallback,\n useRef,\n} from \"react\";\n\nimport { type MenuProps } from \"../menu/Menu.js\";\nimport { type MenuSheetConfigurableProps } from \"../menu/MenuSheet.js\";\nimport {\n type GetDefaultFocusedIndex,\n type GetFocusableElements,\n type KeyboardMovementExtensionData,\n type KeyboardMovementProviderImplementation,\n type KeyboardMovementProviderOptions,\n} from \"../movement/types.js\";\nimport { useKeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { BELOW_CENTER_ANCHOR } from \"../positioning/constants.js\";\nimport {\n type PositionAnchor,\n type PositionWidth,\n} from \"../positioning/types.js\";\nimport { getTransitionCallbacks } from \"../transition/getTransitionCallbacks.js\";\nimport { type TransitionCallbacks } from \"../transition/types.js\";\nimport {\n type NonNullMutableRef,\n type UseStateInitializer,\n type UseStateSetter,\n} from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useEnsuredState } from \"../useEnsuredState.js\";\nimport { tryToSubmitRelatedForm } from \"./utils.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @since 6.0.0\n */\nexport const getNonDisabledOptions = (\n container: HTMLElement\n): readonly HTMLElement[] => [\n ...container.querySelectorAll<HTMLLIElement>(\n '[role=\"option\"]:not([aria-disabled])'\n ),\n];\n\n/**\n * @since 6.0.0\n */\nexport type SupportedComboboxPopup = \"listbox\" | \"grid\" | \"dialog\";\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxKeyboardMovementData<\n E extends HTMLElement = HTMLInputElement,\n> extends KeyboardMovementExtensionData<E> {\n show: () => void;\n hide: () => void;\n visible: boolean;\n focusLast: NonNullMutableRef<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport type ExtendComboboxKeyDown<E extends HTMLElement = HTMLInputElement> = (\n movementData: ComboboxKeyboardMovementData<E>\n) => void;\n\n/**\n * @since 6.0.0\n */\nexport type ComboboxKeyboardMovementOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n> = Pick<\n KeyboardMovementProviderOptions<ComboboxEl>,\n | \"onClick\"\n | \"onFocus\"\n | \"onKeyDown\"\n | \"disabled\"\n | \"loopable\"\n | \"searchable\"\n | \"onFocusChange\"\n | \"isNegativeOneAllowed\"\n>;\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxVisibilityOptions {\n /**\n * This can be used to control the popup's visibility and **must** be used\n * along with {@link setVisible}.\n */\n visible?: boolean;\n\n /**\n * Used to control the popup's visibility and should generally be a `useState`\n * setter.\n *\n * @example Controlling the Visibility\n * ```tsx\n * const [visible, setVisible] = useState(false);\n *\n * useCombobox({\n * visible,\n * setVisible,\n * });\n * ```\n */\n setVisible?: UseStateSetter<boolean>;\n\n /**\n * Set this to `true` to have the combobox's popup visible by default.\n *\n * @defaultValue `false`\n */\n defaultVisible?: UseStateInitializer<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ConfigurableComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends ComboboxKeyboardMovementOptions<ComboboxEl>,\n ComboboxVisibilityOptions {\n /**\n * This is the {@link InputHTMLAttributes.form} attribute and is used to\n * attempt submitting a form when the enter key is pressed.\n */\n form?: string;\n\n /**\n * @defaultValue `\"combobox-popup-\" + useId()`\n */\n popupId?: string;\n popupRef?: Ref<PopupEl>;\n\n /**\n * @defaultValue `\"combobox-\" + useId()`\n */\n comboboxId?: string;\n comboboxRef?: Ref<ComboboxEl>;\n\n /**\n * @defaultValue `\"listbox\"`\n */\n popup?: \"listbox\" | \"grid\" | \"dialog\";\n\n /**\n * @defaultValue `false`\n */\n multiselect?: boolean;\n\n extendKeyDown?: ExtendComboboxKeyDown<ComboboxEl>;\n\n /**\n * @defaultValue {@link getNonDisabledOptions}\n */\n getFocusableElements?: GetFocusableElements;\n\n getDefaultFocusedIndex?: GetDefaultFocusedIndex;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxGetEnterDefaultFocusedIndexOptions {\n focusLast: boolean;\n focusables: readonly HTMLElement[];\n currentFocusIndex: number;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends ConfigurableComboboxOptions<ComboboxEl, PopupEl> {\n getEnterDefaultFocusedIndex: (\n options: ComboboxGetEnterDefaultFocusedIndexOptions\n ) => number;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxWidgetProps<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n> {\n \"aria-controls\": string;\n \"aria-disabled\": true | undefined;\n \"aria-expanded\": boolean;\n \"aria-haspopup\": SupportedComboboxPopup;\n id: string;\n ref: RefCallback<ComboboxEl>;\n role: \"combobox\";\n onClick: MouseEventHandler<ComboboxEl>;\n onFocus: FocusEventHandler<ComboboxEl>;\n onKeyDown: KeyboardEventHandler<ComboboxEl>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxWidgetPopupProps<\n PopupEl extends HTMLElement = HTMLElement,\n> {\n \"aria-multiselectable\": true | undefined;\n id: string;\n ref: RefCallback<PopupEl>;\n role: \"listbox\" | \"dialog\" | \"grid\";\n}\n\n/**\n * @since 6.0.0\n */\nexport type ComboboxTransitionCallbacks = Pick<\n TransitionCallbacks,\n \"onEntering\" | \"onEntered\" | \"onExiting\" | \"onExited\"\n>;\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxTransitionOptions extends ComboboxTransitionCallbacks {\n disableTransition?: boolean;\n}\n\n/**\n * @since 6.0.0\n */\nexport type ConfigurableComboboxMenuProps = Partial<\n Omit<MenuProps, \"visible\" | \"onRequestClose\" | keyof ComboboxWidgetPopupProps>\n>;\n\n/**\n * @since 6.0.0\n */\nexport interface ProvidedComboboxMenuProps<\n PopupEl extends HTMLElement = HTMLDivElement,\n> extends Required<ComboboxTransitionCallbacks>,\n ComboboxWidgetPopupProps<PopupEl> {\n visible: boolean;\n onRequestClose: () => void;\n /** @defaultValue `\"min\"` */\n width: PositionWidth;\n /** @defaultValue `BELOW_CENTER_ANCHOR` */\n anchor: PositionAnchor;\n fixedTo: RefObject<HTMLElement>;\n sheetProps: MenuSheetConfigurableProps &\n Required<ComboboxTransitionCallbacks>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxMenuProps<PopupEl extends HTMLElement = HTMLDivElement>\n extends Omit<ConfigurableComboboxMenuProps, keyof ProvidedComboboxMenuProps>,\n ProvidedComboboxMenuProps<PopupEl> {}\n\n/**\n * @since 6.0.0\n */\nexport interface ComboboxImplementation<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends KeyboardMovementProviderImplementation<ComboboxEl> {\n show: () => void;\n hide: () => void;\n visible: boolean;\n setVisible: UseStateSetter<boolean>;\n focusLast: NonNullMutableRef<boolean>;\n popupRef: RefObject<PopupEl>;\n popupProps: ComboboxWidgetPopupProps<PopupEl>;\n comboboxRef: RefObject<ComboboxEl>;\n comboboxProps: ComboboxWidgetProps<ComboboxEl>;\n /**\n * Since the combobox usually uses the `Menu` as a popup element, this is a\n * helper util to create the required props and merge any additional props\n * with reasonable defaults.\n */\n getMenuProps: (\n overrides?: ConfigurableComboboxMenuProps\n ) => ComboboxMenuProps<PopupEl>;\n}\n\n/**\n * @since 6.0.0\n */\nexport function useCombobox<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n>(\n options: ComboboxOptions<ComboboxEl, PopupEl>\n): ComboboxImplementation<ComboboxEl, PopupEl> {\n const {\n form,\n popup = \"listbox\",\n onClick = noop,\n onFocus,\n onKeyDown,\n searchable,\n multiselect,\n isNegativeOneAllowed,\n loopable,\n disabled,\n visible: propVisible,\n setVisible: propSetVisible,\n defaultVisible = false,\n comboboxId: propComboboxId,\n comboboxRef: propComboboxRef,\n popupId: propPopupId,\n popupRef: propPopupRef,\n onFocusChange = noop,\n extendKeyDown = noop,\n getFocusableElements = getNonDisabledOptions,\n getEnterDefaultFocusedIndex,\n getDefaultFocusedIndex,\n } = options;\n\n const [visible, setVisible] = useEnsuredState({\n value: propVisible,\n setValue: propSetVisible,\n defaultValue: defaultVisible,\n });\n const show = useCallback(() => {\n setVisible(true);\n }, [setVisible]);\n const hide = useCallback(() => {\n setVisible(false);\n }, [setVisible]);\n\n const popupId = useEnsuredId(propPopupId, \"combobox-popup\");\n const comboboxId = useEnsuredId(propComboboxId, \"combobox\");\n const [comboboxRef, comboboxRefCallback] = useEnsuredRef(propComboboxRef);\n const [popupRef, popupRefCallback] = useEnsuredRef(propPopupRef);\n const focusLast = useRef(false);\n const {\n movementProps,\n movementContext,\n currentFocusIndex,\n activeDescendantId,\n setActiveDescendantId,\n } = useKeyboardMovementProvider<ComboboxEl>({\n onFocus,\n onKeyDown,\n onClick(event) {\n onClick(event);\n if (disabled) {\n return;\n }\n\n show();\n },\n extendKeyDown(movementData) {\n extendKeyDown({\n ...movementData,\n show,\n hide,\n visible,\n focusLast,\n });\n const { event } = movementData;\n if (event.isPropagationStopped()) {\n return;\n }\n\n if (visible) {\n switch (event.key) {\n case \"Tab\":\n // do not stop propagation for tab so that shift+tab works correctly in dialogs\n hide();\n break;\n case \"Escape\":\n event.stopPropagation();\n hide();\n break;\n case \"Enter\":\n event.preventDefault();\n break;\n }\n\n // while visible, always use the default keyboard movement behavior\n return;\n }\n\n switch (event.key) {\n case \"ArrowUp\":\n case \"ArrowDown\":\n event.preventDefault();\n event.stopPropagation();\n focusLast.current = event.key === \"ArrowUp\";\n show();\n break;\n case \"Enter\":\n tryToSubmitRelatedForm(event, form);\n break;\n }\n },\n disabled,\n loopable,\n searchable,\n onFocusChange,\n programmatic: true,\n includeDisabled: false,\n tabIndexBehavior: \"virtual\",\n getFocusableElements(container, programmatic) {\n const popup = popupRef.current;\n if (!popup) {\n return [];\n }\n\n return getFocusableElements(popup || container, programmatic);\n },\n isNegativeOneAllowed,\n getDefaultFocusedIndex,\n });\n\n const popupProps: ComboboxWidgetPopupProps<PopupEl> = {\n \"aria-multiselectable\": multiselect || undefined,\n id: popupId,\n ref: popupRefCallback,\n role: popup,\n };\n\n return {\n show,\n hide,\n visible,\n setVisible,\n focusLast,\n popupRef,\n popupProps,\n comboboxRef,\n comboboxProps: {\n ...movementProps,\n \"aria-controls\": popupId,\n \"aria-disabled\": disabled || undefined,\n \"aria-expanded\": visible,\n \"aria-haspopup\": popup,\n id: comboboxId,\n ref: comboboxRefCallback,\n role: \"combobox\",\n },\n movementProps,\n movementContext,\n currentFocusIndex,\n activeDescendantId,\n setActiveDescendantId,\n getMenuProps(props = {}) {\n const {\n sheetProps,\n disableTransition,\n onEnter,\n onEntering,\n onEntered = noop,\n onExited,\n onExiting,\n onExit,\n } = props;\n\n // Chrome does not trigger the scrollIntoView behavior correctly while\n // using a scale transition, so need to trigger this on the entered flow\n // to really make sure the item is in view. An alternative would be to\n // implement a custom scrollIntoView behavior again like the previous\n // versions of react-md, but this is less lines of code\n const attemptScroll = (): void => {\n const activeOption = document.getElementById(activeDescendantId);\n if (activeOption) {\n activeOption.scrollIntoView({ block: \"nearest\" });\n }\n };\n const onEnterOnce = (): void => {\n const popup = popupRef.current;\n if (!popup) {\n attemptScroll();\n return;\n }\n\n const focusables = getFocusableElements(popup, true);\n const index = getEnterDefaultFocusedIndex({\n focusLast: focusLast.current,\n focusables,\n currentFocusIndex: currentFocusIndex.current,\n });\n focusLast.current = false;\n currentFocusIndex.current = index;\n\n const option = focusables[index];\n if (!option) {\n return;\n }\n\n onFocusChange({\n index,\n element: option,\n });\n\n option.scrollIntoView({ block: \"nearest\" });\n setActiveDescendantId(option.id || \"\");\n };\n\n return {\n anchor: BELOW_CENTER_ANCHOR,\n width: \"min\",\n fixedTo: comboboxRef,\n ...props,\n ...popupProps,\n visible,\n onRequestClose: hide,\n ...getTransitionCallbacks({\n disableTransition,\n onEnter,\n onEntered: (appearing) => {\n onEntered(appearing);\n attemptScroll();\n },\n onEntering,\n onEnterOnce,\n onExit,\n onExiting,\n onExited,\n onExitOnce: () => {\n // since the menu is unmounted or set to hidden while not visible, need\n // to clear the aria-activedescendant and current focus index when\n // hiding\n currentFocusIndex.current = -1;\n setActiveDescendantId(\"\");\n },\n }),\n sheetProps: {\n ...sheetProps,\n ...getTransitionCallbacks({\n ...sheetProps,\n onEnterOnce,\n disableTransition:\n sheetProps?.disableTransition ?? disableTransition,\n }),\n },\n };\n },\n };\n}\n"],"names":["useCallback","useRef","useKeyboardMovementProvider","BELOW_CENTER_ANCHOR","getTransitionCallbacks","useEnsuredId","useEnsuredRef","useEnsuredState","tryToSubmitRelatedForm","noop","getNonDisabledOptions","container","querySelectorAll","useCombobox","options","form","popup","onClick","onFocus","onKeyDown","searchable","multiselect","isNegativeOneAllowed","loopable","disabled","visible","propVisible","setVisible","propSetVisible","defaultVisible","comboboxId","propComboboxId","comboboxRef","propComboboxRef","popupId","propPopupId","popupRef","propPopupRef","onFocusChange","extendKeyDown","getFocusableElements","getEnterDefaultFocusedIndex","getDefaultFocusedIndex","value","setValue","defaultValue","show","hide","comboboxRefCallback","popupRefCallback","focusLast","movementProps","movementContext","currentFocusIndex","activeDescendantId","setActiveDescendantId","event","movementData","isPropagationStopped","key","stopPropagation","preventDefault","current","programmatic","includeDisabled","tabIndexBehavior","popupProps","undefined","id","ref","role","comboboxProps","getMenuProps","props","sheetProps","disableTransition","onEnter","onEntering","onEntered","onExited","onExiting","onExit","attemptScroll","activeOption","document","getElementById","scrollIntoView","block","onEnterOnce","focusables","index","option","element","anchor","width","fixedTo","onRequestClose","appearing","onExitOnce"],"mappings":"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"}
@@ -37,7 +37,8 @@ export interface NumberFieldHookOptions extends Omit<TextFieldHookOptions<HTMLIn
37
37
  *
38
38
  * @example Deferring Updates on Blur
39
39
  * ```tsx
40
- * import { TextField, useNumberField } from "@react-md/core";
40
+ * import { TextField } from "@react-md/core/form/TextField";
41
+ * import { useNumberField } from "@react-md/core/form/useNumberField";
41
42
  * import type { ReactElement } from "react";
42
43
  *
43
44
  * function Example(): ReactElement {
@@ -114,7 +115,8 @@ export interface ValidatedNumberFieldImplementation extends Omit<ValidatedTextFi
114
115
  /**
115
116
  * @example Enforce Number Value and No Error Messages
116
117
  * ```tsx
117
- * import { TextField, useNumberField } from "@react-md/core";
118
+ * import { TextField } from "@react-md/core/form/TextField";
119
+ * import { useNumberField } from "@react-md/core/form/useNumberField";
118
120
  * import type { ReactElement } from "react";
119
121
  *
120
122
  * function Example(): ReactElement {
@@ -133,6 +135,7 @@ export interface ValidatedNumberFieldImplementation extends Omit<ValidatedTextFi
133
135
  *
134
136
  * return <TextField {...fieldProps} label="Label" />;
135
137
  * }
138
+ * ```
136
139
  *
137
140
  * @see {@link useTextField}
138
141
  * @see {@link useNumberField} overrides for other examples.
@@ -150,7 +153,8 @@ export declare function useNumberField(options: NumberFieldHookOptions & {
150
153
  /**
151
154
  * @example No Error Messages
152
155
  * ```tsx
153
- * import { TextField, useNumberField } from "@react-md/core";
156
+ * import { TextField } from "@react-md/core/form/TextField";
157
+ * import { useNumberField } from "@react-md/core/form/useNumberField";
154
158
  * import type { ReactElement } from "react";
155
159
  *
156
160
  * function Example(): ReactElement {
@@ -180,7 +184,8 @@ export declare function useNumberField(options: NumberFieldHookOptions & {
180
184
  /**
181
185
  * @example Enforce Number Value
182
186
  * ```tsx
183
- * import { TextField, useNumberField } from "@react-md/core";
187
+ * import { TextField } from "@react-md/core/form/TextField";
188
+ * import { useNumberField } from "@react-md/core/form/useNumberField";
184
189
  * import type { ReactElement } from "react";
185
190
  *
186
191
  * function Example(): ReactElement {
@@ -202,7 +207,8 @@ export declare function useNumberField(options: NumberFieldHookOptions & {
202
207
  *
203
208
  * @example Enforce Number Value and Deferring Updates
204
209
  * ```tsx
205
- * import { TextField, useNumberField } from "@react-md/core";
210
+ * import { TextField } from "@react-md/core/form/TextField";
211
+ * import { useNumberField } from "@react-md/core/form/useNumberField";
206
212
  * import type { ReactElement } from "react";
207
213
  *
208
214
  * function Example(): ReactElement {
@@ -240,7 +246,8 @@ export declare function useNumberField(options: NumberFieldHookOptions & {
240
246
  *
241
247
  * @example Default Implementation
242
248
  * ```tsx
243
- * import { TextField, useNumberField } from "@react-md/core";
249
+ * import { TextField } from "@react-md/core/form/TextField";
250
+ * import { useNumberField } from "@react-md/core/form/useNumberField";
244
251
  * import type { ReactElement } from "react";
245
252
  *
246
253
  * function Example(): ReactElement {
@@ -262,7 +269,8 @@ export declare function useNumberField(options: NumberFieldHookOptions & {
262
269
  *
263
270
  * @example Adding Constraints
264
271
  * ```tsx
265
- * import { TextField, useNumberField } from "@react-md/core";
272
+ * import { TextField } from "@react-md/core/form/TextField";
273
+ * import { useNumberField } from "@react-md/core/form/useNumberField";
266
274
  * import type { ReactElement } from "react";
267
275
  *
268
276
  * function Example(): ReactElement {
@@ -279,6 +287,8 @@ export declare function useNumberField(options: NumberFieldHookOptions & {
279
287
  * ```
280
288
  *
281
289
  * @see https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation
290
+ * @see {@link https://next.react-md.dev/components/text-field#number | Number TextField Demos}
291
+ * @see {@link https://next.react-md.dev/hooks/use-number-field | useNumberField Demos}
282
292
  * @see {@link useTextField}
283
293
  */
284
294
  export declare function useNumberField(options: NumberFieldHookOptions): NumberFieldWithMessageImplementation;
@@ -7,6 +7,8 @@ const noop = ()=>{
7
7
  };
8
8
  /**
9
9
  * @internal
10
+ * @see {@link https://next.react-md.dev/components/text-field#number | Number TextField Demos}
11
+ * @see {@link https://next.react-md.dev/hooks/use-number-field | useNumberField Demos}
10
12
  * @see {@link useTextField}
11
13
  * @see {@link useNumberField} overrides for other examples.
12
14
  */ export function useNumberField(options) {