@react-md/core 1.0.0-next.16 → 1.0.0-next.18

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 (665) hide show
  1. package/dist/_box-shadows.scss +76 -0
  2. package/dist/_colors.scss +279 -277
  3. package/dist/_core.scss +107 -16
  4. package/dist/_object-fit.scss +86 -0
  5. package/dist/_utils.scss +246 -72
  6. package/dist/app-bar/AppBar.d.ts +1 -90
  7. package/dist/app-bar/AppBar.js +1 -40
  8. package/dist/app-bar/AppBar.js.map +1 -1
  9. package/dist/app-bar/AppBarTitle.d.ts +1 -27
  10. package/dist/app-bar/AppBarTitle.js +1 -15
  11. package/dist/app-bar/AppBarTitle.js.map +1 -1
  12. package/dist/app-bar/_app-bar.scss +156 -25
  13. package/dist/app-bar/styles.d.ts +117 -0
  14. package/dist/app-bar/styles.js +55 -0
  15. package/dist/app-bar/styles.js.map +1 -0
  16. package/dist/autocomplete/Autocomplete.d.ts +8 -79
  17. package/dist/autocomplete/Autocomplete.js +112 -83
  18. package/dist/autocomplete/Autocomplete.js.map +1 -1
  19. package/dist/autocomplete/AutocompleteChip.d.ts +8 -0
  20. package/dist/autocomplete/AutocompleteChip.js +34 -0
  21. package/dist/autocomplete/AutocompleteChip.js.map +1 -0
  22. package/dist/autocomplete/AutocompleteCircularProgress.d.ts +5 -11
  23. package/dist/autocomplete/AutocompleteCircularProgress.js +4 -0
  24. package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -1
  25. package/dist/autocomplete/AutocompleteClearButton.d.ts +9 -0
  26. package/dist/autocomplete/AutocompleteClearButton.js +29 -0
  27. package/dist/autocomplete/AutocompleteClearButton.js.map +1 -0
  28. package/dist/autocomplete/AutocompleteDropdownButton.d.ts +4 -26
  29. package/dist/autocomplete/AutocompleteDropdownButton.js +5 -1
  30. package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -1
  31. package/dist/autocomplete/AutocompleteListboxChildren.d.ts +22 -0
  32. package/dist/autocomplete/AutocompleteListboxChildren.js +37 -0
  33. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -0
  34. package/dist/autocomplete/_autocomplete.scss +362 -34
  35. package/dist/autocomplete/autocompleteStyles.d.ts +22 -0
  36. package/dist/autocomplete/autocompleteStyles.js +17 -8
  37. package/dist/autocomplete/autocompleteStyles.js.map +1 -1
  38. package/dist/autocomplete/defaults.d.ts +9 -9
  39. package/dist/autocomplete/defaults.js +13 -13
  40. package/dist/autocomplete/defaults.js.map +1 -1
  41. package/dist/autocomplete/types.d.ts +554 -56
  42. package/dist/autocomplete/types.js.map +1 -1
  43. package/dist/autocomplete/useAutocomplete.d.ts +22 -0
  44. package/dist/autocomplete/useAutocomplete.js +281 -0
  45. package/dist/autocomplete/useAutocomplete.js.map +1 -0
  46. package/dist/autocomplete/utils.d.ts +81 -0
  47. package/dist/autocomplete/utils.js +108 -0
  48. package/dist/autocomplete/utils.js.map +1 -0
  49. package/dist/avatar/_avatar.scss +93 -2
  50. package/dist/badge/Badge.d.ts +1 -20
  51. package/dist/badge/Badge.js +1 -14
  52. package/dist/badge/Badge.js.map +1 -1
  53. package/dist/badge/_badge.scss +90 -3
  54. package/dist/badge/styles.d.ts +26 -0
  55. package/dist/badge/styles.js +18 -0
  56. package/dist/badge/styles.js.map +1 -0
  57. package/dist/box/Box.js +2 -1
  58. package/dist/box/Box.js.map +1 -1
  59. package/dist/box/_box.scss +130 -17
  60. package/dist/box/styles.d.ts +6 -0
  61. package/dist/box/styles.js +2 -1
  62. package/dist/box/styles.js.map +1 -1
  63. package/dist/button/AsyncButton.d.ts +1 -1
  64. package/dist/button/AsyncButton.js.map +1 -1
  65. package/dist/button/Button.d.ts +2 -1
  66. package/dist/button/Button.js +2 -1
  67. package/dist/button/Button.js.map +1 -1
  68. package/dist/button/_button.scss +157 -25
  69. package/dist/card/Card.d.ts +16 -0
  70. package/dist/card/Card.js +11 -3
  71. package/dist/card/Card.js.map +1 -1
  72. package/dist/card/ClickableCard.d.ts +2 -1
  73. package/dist/card/ClickableCard.js +5 -2
  74. package/dist/card/ClickableCard.js.map +1 -1
  75. package/dist/card/_card.scss +90 -19
  76. package/dist/card/styles.d.ts +0 -7
  77. package/dist/card/styles.js +2 -3
  78. package/dist/card/styles.js.map +1 -1
  79. package/dist/chip/Chip.d.ts +2 -1
  80. package/dist/chip/Chip.js +2 -1
  81. package/dist/chip/Chip.js.map +1 -1
  82. package/dist/chip/_chip.scss +45 -22
  83. package/dist/chip/styles.d.ts +12 -10
  84. package/dist/chip/styles.js.map +1 -1
  85. package/dist/cssUtils.js.map +1 -1
  86. package/dist/delegateEvent.d.ts +2 -2
  87. package/dist/delegateEvent.js.map +1 -1
  88. package/dist/dialog/Dialog.d.ts +8 -21
  89. package/dist/dialog/Dialog.js +27 -27
  90. package/dist/dialog/Dialog.js.map +1 -1
  91. package/dist/dialog/FixedDialog.d.ts +1 -3
  92. package/dist/dialog/FixedDialog.js +0 -8
  93. package/dist/dialog/FixedDialog.js.map +1 -1
  94. package/dist/dialog/_dialog.scss +67 -13
  95. package/dist/dialog/styles.d.ts +56 -0
  96. package/dist/dialog/styles.js +29 -2
  97. package/dist/dialog/styles.js.map +1 -1
  98. package/dist/divider/Divider.d.ts +0 -11
  99. package/dist/divider/Divider.js.map +1 -1
  100. package/dist/divider/_divider.scss +7 -1
  101. package/dist/divider/styles.d.ts +11 -0
  102. package/dist/divider/styles.js.map +1 -1
  103. package/dist/draggable/useDraggable.d.ts +6 -6
  104. package/dist/draggable/useDraggable.js.map +1 -1
  105. package/dist/draggable/utils.d.ts +3 -3
  106. package/dist/draggable/utils.js.map +1 -1
  107. package/dist/expansion-panel/ExpansionPanel.d.ts +1 -1
  108. package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
  109. package/dist/expansion-panel/_expansion-panel.scss +5 -1
  110. package/dist/expansion-panel/useExpansionPanels.js +12 -24
  111. package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
  112. package/dist/{form → files}/FileInput.d.ts +3 -6
  113. package/dist/{form → files}/FileInput.js +3 -6
  114. package/dist/files/FileInput.js.map +1 -0
  115. package/dist/files/_files.scss +22 -0
  116. package/dist/files/styles.d.ts +5 -0
  117. package/dist/files/styles.js +7 -0
  118. package/dist/files/styles.js.map +1 -0
  119. package/dist/{form → files}/useFileUpload.d.ts +7 -9
  120. package/dist/{form → files}/useFileUpload.js +5 -7
  121. package/dist/files/useFileUpload.js.map +1 -0
  122. package/dist/files/utils.d.ts +169 -0
  123. package/dist/files/utils.js +114 -0
  124. package/dist/files/utils.js.map +1 -0
  125. package/dist/{form/fileUtils.d.ts → files/validation.d.ts} +11 -176
  126. package/dist/{form/fileUtils.js → files/validation.js} +10 -135
  127. package/dist/files/validation.js.map +1 -0
  128. package/dist/focus/useFocusContainer.d.ts +2 -2
  129. package/dist/focus/useFocusContainer.js.map +1 -1
  130. package/dist/focus/utils.js.map +1 -1
  131. package/dist/form/FormMessage.js.map +1 -1
  132. package/dist/form/FormMessageContainer.js +4 -2
  133. package/dist/form/FormMessageContainer.js.map +1 -1
  134. package/dist/form/InputToggle.d.ts +2 -1
  135. package/dist/form/InputToggle.js +2 -1
  136. package/dist/form/InputToggle.js.map +1 -1
  137. package/dist/form/InputToggleIcon.js.map +1 -1
  138. package/dist/form/Label.js +2 -2
  139. package/dist/form/Label.js.map +1 -1
  140. package/dist/form/Listbox.d.ts +24 -0
  141. package/dist/form/Listbox.js +46 -0
  142. package/dist/form/Listbox.js.map +1 -0
  143. package/dist/form/ListboxProvider.d.ts +21 -0
  144. package/dist/form/{useListboxProvider.js → ListboxProvider.js} +1 -1
  145. package/dist/form/ListboxProvider.js.map +1 -0
  146. package/dist/form/MenuItemTextField.js +1 -2
  147. package/dist/form/MenuItemTextField.js.map +1 -1
  148. package/dist/form/NativeSelect.js +7 -4
  149. package/dist/form/NativeSelect.js.map +1 -1
  150. package/dist/form/Option.d.ts +49 -10
  151. package/dist/form/Option.js +11 -9
  152. package/dist/form/Option.js.map +1 -1
  153. package/dist/form/Password.js.map +1 -1
  154. package/dist/form/Select.d.ts +2 -2
  155. package/dist/form/Select.js +81 -85
  156. package/dist/form/Select.js.map +1 -1
  157. package/dist/form/SelectedOption.js +2 -1
  158. package/dist/form/SelectedOption.js.map +1 -1
  159. package/dist/form/Slider.d.ts +4 -4
  160. package/dist/form/Slider.js +6 -2
  161. package/dist/form/Slider.js.map +1 -1
  162. package/dist/form/SliderThumb.d.ts +3 -3
  163. package/dist/form/SliderThumb.js.map +1 -1
  164. package/dist/form/SliderValueMarks.d.ts +2 -2
  165. package/dist/form/SliderValueMarks.js.map +1 -1
  166. package/dist/form/SliderValueTooltip.js.map +1 -1
  167. package/dist/form/TextArea.js +1 -2
  168. package/dist/form/TextArea.js.map +1 -1
  169. package/dist/form/TextField.js +1 -2
  170. package/dist/form/TextField.js.map +1 -1
  171. package/dist/form/TextFieldContainer.js +1 -2
  172. package/dist/form/TextFieldContainer.js.map +1 -1
  173. package/dist/form/_form.scss +193 -124
  174. package/dist/form/formMessageContainerStyles.d.ts +10 -0
  175. package/dist/form/formMessageContainerStyles.js +11 -0
  176. package/dist/form/formMessageContainerStyles.js.map +1 -0
  177. package/dist/form/inputToggleStyles.js.map +1 -1
  178. package/dist/form/optionStyles.d.ts +1 -0
  179. package/dist/form/optionStyles.js +2 -2
  180. package/dist/form/optionStyles.js.map +1 -1
  181. package/dist/form/selectUtils.js.map +1 -1
  182. package/dist/form/sliderUtils.d.ts +1 -1
  183. package/dist/form/sliderUtils.js.map +1 -1
  184. package/dist/form/textFieldContainerStyles.d.ts +0 -2
  185. package/dist/form/textFieldContainerStyles.js +1 -2
  186. package/dist/form/textFieldContainerStyles.js.map +1 -1
  187. package/dist/form/types.d.ts +3 -10
  188. package/dist/form/types.js.map +1 -1
  189. package/dist/form/useCheckboxGroup.d.ts +17 -17
  190. package/dist/form/useCheckboxGroup.js +9 -17
  191. package/dist/form/useCheckboxGroup.js.map +1 -1
  192. package/dist/form/useCombobox.d.ts +56 -21
  193. package/dist/form/useCombobox.js +19 -4
  194. package/dist/form/useCombobox.js.map +1 -1
  195. package/dist/form/useEditableCombobox.d.ts +24 -4
  196. package/dist/form/useEditableCombobox.js +5 -0
  197. package/dist/form/useEditableCombobox.js.map +1 -1
  198. package/dist/form/useNumberField.js.map +1 -1
  199. package/dist/form/useRadioGroup.d.ts +6 -6
  200. package/dist/form/useRadioGroup.js.map +1 -1
  201. package/dist/form/useResizingTextArea.js.map +1 -1
  202. package/dist/form/useSelectCombobox.d.ts +3 -4
  203. package/dist/form/useSelectCombobox.js.map +1 -1
  204. package/dist/form/useTextField.d.ts +1 -1
  205. package/dist/form/useTextField.js.map +1 -1
  206. package/dist/form/useTextFieldContainerAddons.js.map +1 -1
  207. package/dist/hoverMode/useHoverMode.d.ts +3 -3
  208. package/dist/hoverMode/useHoverMode.js.map +1 -1
  209. package/dist/hoverMode/useHoverModeProvider.d.ts +4 -4
  210. package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
  211. package/dist/icon/FontIcon.d.ts +4 -2
  212. package/dist/icon/FontIcon.js.map +1 -1
  213. package/dist/icon/TextIconSpacing.d.ts +3 -1
  214. package/dist/icon/TextIconSpacing.js.map +1 -1
  215. package/dist/icon/_icon.scss +151 -2
  216. package/dist/icon/iconConfig.d.ts +10 -0
  217. package/dist/icon/iconConfig.js +7 -0
  218. package/dist/icon/iconConfig.js.map +1 -1
  219. package/dist/icon/materialConfig.js.map +1 -1
  220. package/dist/icon/styles.js.map +1 -1
  221. package/dist/interaction/UserInteractionModeProvider.d.ts +5 -5
  222. package/dist/interaction/UserInteractionModeProvider.js +12 -8
  223. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  224. package/dist/interaction/types.d.ts +20 -2
  225. package/dist/interaction/types.js.map +1 -1
  226. package/dist/interaction/useElementInteraction.d.ts +7 -1
  227. package/dist/interaction/useElementInteraction.js +1 -2
  228. package/dist/interaction/useElementInteraction.js.map +1 -1
  229. package/dist/interaction/utils.d.ts +2 -2
  230. package/dist/interaction/utils.js +2 -2
  231. package/dist/interaction/utils.js.map +1 -1
  232. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  233. package/dist/layout/_layout.scss +23 -10
  234. package/dist/layout/useExpandableLayout.d.ts +3 -3
  235. package/dist/layout/useExpandableLayout.js.map +1 -1
  236. package/dist/layout/useLayoutAppBarHeight.d.ts +2 -3
  237. package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
  238. package/dist/layout/useTemporaryLayout.d.ts +2 -2
  239. package/dist/layout/useTemporaryLayout.js.map +1 -1
  240. package/dist/link/SkipToMainContent.js.map +1 -1
  241. package/dist/list/ListItem.d.ts +2 -1
  242. package/dist/list/ListItem.js +2 -1
  243. package/dist/list/ListItem.js.map +1 -1
  244. package/dist/list/ListItemChildren.js.map +1 -1
  245. package/dist/list/ListItemLink.d.ts +2 -1
  246. package/dist/list/ListItemLink.js +2 -1
  247. package/dist/list/ListItemLink.js.map +1 -1
  248. package/dist/list/_list.scss +6 -5
  249. package/dist/media-queries/_media-queries.scss +12 -0
  250. package/dist/media-queries/appSize.js.map +1 -1
  251. package/dist/media-queries/useMediaQuery.js +3 -1
  252. package/dist/media-queries/useMediaQuery.js.map +1 -1
  253. package/dist/menu/DropdownMenu.js.map +1 -1
  254. package/dist/menu/Menu.d.ts +8 -3
  255. package/dist/menu/Menu.js +2 -1
  256. package/dist/menu/Menu.js.map +1 -1
  257. package/dist/menu/MenuItemButton.js +6 -2
  258. package/dist/menu/MenuItemButton.js.map +1 -1
  259. package/dist/menu/useContextMenu.d.ts +3 -3
  260. package/dist/menu/useContextMenu.js.map +1 -1
  261. package/dist/movement/types.d.ts +5 -5
  262. package/dist/movement/types.js.map +1 -1
  263. package/dist/navigation/CollapsibleNavGroup.d.ts +5 -3
  264. package/dist/navigation/CollapsibleNavGroup.js +3 -4
  265. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  266. package/dist/navigation/DefaultNavigationRenderer.d.ts +1 -2
  267. package/dist/navigation/DefaultNavigationRenderer.js +6 -2
  268. package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
  269. package/dist/navigation/NavItemButton.d.ts +1 -1
  270. package/dist/navigation/NavItemButton.js +1 -0
  271. package/dist/navigation/NavItemButton.js.map +1 -1
  272. package/dist/navigation/NavItemLink.d.ts +3 -2
  273. package/dist/navigation/NavItemLink.js +6 -2
  274. package/dist/navigation/NavItemLink.js.map +1 -1
  275. package/dist/navigation/NavSubheader.d.ts +2 -3
  276. package/dist/navigation/NavSubheader.js.map +1 -1
  277. package/dist/navigation/Navigation.d.ts +1 -1
  278. package/dist/navigation/Navigation.js.map +1 -1
  279. package/dist/navigation/_navigation.scss +6 -5
  280. package/dist/navigation/types.d.ts +54 -6
  281. package/dist/navigation/types.js.map +1 -1
  282. package/dist/navigation/useActiveHeadingId.d.ts +1 -1
  283. package/dist/navigation/useActiveHeadingId.js.map +1 -1
  284. package/dist/navigation/useNavigationExpansion.d.ts +104 -0
  285. package/dist/navigation/useNavigationExpansion.js +77 -0
  286. package/dist/navigation/useNavigationExpansion.js.map +1 -0
  287. package/dist/navigation/utils.d.ts +13 -0
  288. package/dist/navigation/utils.js +36 -0
  289. package/dist/navigation/utils.js.map +1 -0
  290. package/dist/objectFit.d.ts +69 -0
  291. package/dist/objectFit.js +52 -0
  292. package/dist/objectFit.js.map +1 -0
  293. package/dist/overlay/_overlay.scss +2 -1
  294. package/dist/positioning/useFixedPositioning.d.ts +17 -4
  295. package/dist/positioning/useFixedPositioning.js +10 -5
  296. package/dist/positioning/useFixedPositioning.js.map +1 -1
  297. package/dist/positioning/utils.js.map +1 -1
  298. package/dist/progress/LinearProgress.js.map +1 -1
  299. package/dist/progress/_progress.scss +20 -14
  300. package/dist/responsive-item/ResponsiveItem.d.ts +64 -0
  301. package/dist/responsive-item/ResponsiveItem.js +68 -0
  302. package/dist/responsive-item/ResponsiveItem.js.map +1 -0
  303. package/dist/responsive-item/ResponsiveItemOverlay.d.ts +1 -19
  304. package/dist/responsive-item/ResponsiveItemOverlay.js +1 -12
  305. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  306. package/dist/responsive-item/_responsive-item.scss +110 -133
  307. package/dist/responsive-item/responsiveItemOverlayStyles.d.ts +19 -0
  308. package/dist/responsive-item/responsiveItemOverlayStyles.js +14 -0
  309. package/dist/responsive-item/responsiveItemOverlayStyles.js.map +1 -0
  310. package/dist/responsive-item/responsiveItemStyles.d.ts +52 -0
  311. package/dist/responsive-item/responsiveItemStyles.js +15 -0
  312. package/dist/responsive-item/responsiveItemStyles.js.map +1 -0
  313. package/dist/scroll/useScrollLock.d.ts +5 -0
  314. package/dist/scroll/useScrollLock.js.map +1 -1
  315. package/dist/searching/utils.d.ts +2 -2
  316. package/dist/searching/utils.js.map +1 -1
  317. package/dist/segmented-button/SegmentedButton.d.ts +2 -1
  318. package/dist/segmented-button/SegmentedButton.js +2 -1
  319. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  320. package/dist/segmented-button/_segmented-button.scss +6 -6
  321. package/dist/sheet/_sheet.scss +18 -6
  322. package/dist/snackbar/ToastManager.js +15 -5
  323. package/dist/snackbar/ToastManager.js.map +1 -1
  324. package/dist/snackbar/_snackbar.scss +30 -17
  325. package/dist/snackbar/useCurrentToastActions.d.ts +5 -5
  326. package/dist/snackbar/useCurrentToastActions.js.map +1 -1
  327. package/dist/table/_table.scss +15 -3
  328. package/dist/table/tableCellStyles.d.ts +7 -3
  329. package/dist/table/tableCellStyles.js +2 -2
  330. package/dist/table/tableCellStyles.js.map +1 -1
  331. package/dist/tabs/Tab.d.ts +2 -1
  332. package/dist/tabs/Tab.js +2 -1
  333. package/dist/tabs/Tab.js.map +1 -1
  334. package/dist/tabs/TabList.d.ts +2 -2
  335. package/dist/tabs/TabList.js.map +1 -1
  336. package/dist/tabs/TabListScrollButton.d.ts +1 -1
  337. package/dist/tabs/TabListScrollButton.js +1 -1
  338. package/dist/tabs/TabListScrollButton.js.map +1 -1
  339. package/dist/tabs/_tabs.scss +30 -9
  340. package/dist/tabs/getTabListScrollToOptions.d.ts +18 -0
  341. package/dist/tabs/getTabListScrollToOptions.js +19 -0
  342. package/dist/tabs/getTabListScrollToOptions.js.map +1 -0
  343. package/dist/tabs/tabStyles.d.ts +3 -0
  344. package/dist/tabs/tabStyles.js.map +1 -1
  345. package/dist/tabs/useTabList.d.ts +1 -8
  346. package/dist/tabs/useTabList.js +1 -0
  347. package/dist/tabs/useTabList.js.map +1 -1
  348. package/dist/tabs/useTabs.d.ts +6 -6
  349. package/dist/tabs/useTabs.js.map +1 -1
  350. package/dist/tabs/utils.d.ts +0 -18
  351. package/dist/tabs/utils.js +0 -15
  352. package/dist/tabs/utils.js.map +1 -1
  353. package/dist/test-utils/ResizeObserver.d.ts +11 -12
  354. package/dist/test-utils/ResizeObserver.js +11 -12
  355. package/dist/test-utils/ResizeObserver.js.map +1 -1
  356. package/dist/test-utils/matchMedia.d.ts +3 -3
  357. package/dist/test-utils/matchMedia.js +6 -6
  358. package/dist/test-utils/matchMedia.js.map +1 -1
  359. package/dist/test-utils/polyfills/TextDecoder.js +0 -1
  360. package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
  361. package/dist/test-utils/timers.d.ts +9 -5
  362. package/dist/test-utils/timers.js +5 -5
  363. package/dist/test-utils/timers.js.map +1 -1
  364. package/dist/theme/LocalStorageColorSchemeProvider.d.ts +1 -1
  365. package/dist/theme/LocalStorageColorSchemeProvider.js +2 -1
  366. package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
  367. package/dist/theme/ThemeProvider.js +3 -1
  368. package/dist/theme/ThemeProvider.js.map +1 -1
  369. package/dist/theme/_a11y.scss +86 -13
  370. package/dist/theme/_colors.scss +279 -277
  371. package/dist/theme/_theme.scss +308 -37
  372. package/dist/theme/isColorScheme.d.ts +16 -0
  373. package/dist/theme/isColorScheme.js +19 -0
  374. package/dist/theme/isColorScheme.js.map +1 -0
  375. package/dist/theme/types.d.ts +53 -1
  376. package/dist/theme/types.js +1 -23
  377. package/dist/theme/types.js.map +1 -1
  378. package/dist/theme/useCSSVariables.d.ts +2 -19
  379. package/dist/theme/useCSSVariables.js.map +1 -1
  380. package/dist/theme/useColorScheme.d.ts +1 -35
  381. package/dist/theme/useColorScheme.js.map +1 -1
  382. package/dist/theme/useColorSchemeMetaTag.d.ts +1 -1
  383. package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
  384. package/dist/theme/useColorSchemeProvider.d.ts +1 -1
  385. package/dist/theme/useColorSchemeProvider.js +1 -1
  386. package/dist/theme/useColorSchemeProvider.js.map +1 -1
  387. package/dist/theme/{usePrefersColorScheme.js → usePrefersDarkScheme.js} +1 -1
  388. package/dist/theme/usePrefersDarkScheme.js.map +1 -0
  389. package/dist/theme/utils.js.map +1 -1
  390. package/dist/tooltip/useTooltip.d.ts +14 -9
  391. package/dist/tooltip/useTooltip.js +2 -1
  392. package/dist/tooltip/useTooltip.js.map +1 -1
  393. package/dist/transition/_transition.scss +16 -9
  394. package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
  395. package/dist/transition/types.d.ts +1 -1
  396. package/dist/transition/types.js.map +1 -1
  397. package/dist/transition/useCarousel.d.ts +3 -3
  398. package/dist/transition/useCarousel.js.map +1 -1
  399. package/dist/transition/useCollapseTransition.js.map +1 -1
  400. package/dist/transition/useTransition.js +1 -0
  401. package/dist/transition/useTransition.js.map +1 -1
  402. package/dist/transition/utils.js.map +1 -1
  403. package/dist/tree/TreeItem.d.ts +2 -1
  404. package/dist/tree/TreeItem.js +4 -3
  405. package/dist/tree/TreeItem.js.map +1 -1
  406. package/dist/tree/TreeItemExpander.js.map +1 -1
  407. package/dist/tree/_tree.scss +8 -6
  408. package/dist/tree/useTreeExpansion.d.ts +1 -1
  409. package/dist/tree/useTreeExpansion.js +6 -18
  410. package/dist/tree/useTreeExpansion.js.map +1 -1
  411. package/dist/tree/useTreeSelection.d.ts +1 -1
  412. package/dist/tree/useTreeSelection.js +7 -25
  413. package/dist/tree/useTreeSelection.js.map +1 -1
  414. package/dist/tree/utils.d.ts +1 -1
  415. package/dist/tree/utils.js.map +1 -1
  416. package/dist/types.d.ts +12 -4
  417. package/dist/types.js.map +1 -1
  418. package/dist/typography/WritingDirectionProvider.d.ts +1 -1
  419. package/dist/typography/WritingDirectionProvider.js.map +1 -1
  420. package/dist/typography/_typography.scss +94 -37
  421. package/dist/typography/typographyStyles.js.map +1 -1
  422. package/dist/useDebouncedFunction.d.ts +1 -5
  423. package/dist/useDebouncedFunction.js +3 -1
  424. package/dist/useDebouncedFunction.js.map +1 -1
  425. package/dist/useDropzone.d.ts +4 -4
  426. package/dist/useDropzone.js.map +1 -1
  427. package/dist/useEnsuredId.js.map +1 -1
  428. package/dist/useIntersectionObserver.d.ts +5 -5
  429. package/dist/useIntersectionObserver.js.map +1 -1
  430. package/dist/useLocalStorage.d.ts +3 -3
  431. package/dist/useLocalStorage.js +1 -1
  432. package/dist/useLocalStorage.js.map +1 -1
  433. package/dist/useMutationObserver.d.ts +1 -1
  434. package/dist/useMutationObserver.js.map +1 -1
  435. package/dist/useOrientation.js +3 -1
  436. package/dist/useOrientation.js.map +1 -1
  437. package/dist/usePageInactive.d.ts +2 -2
  438. package/dist/usePageInactive.js.map +1 -1
  439. package/dist/useReadonlySet.d.ts +76 -0
  440. package/dist/useReadonlySet.js +72 -0
  441. package/dist/useReadonlySet.js.map +1 -0
  442. package/dist/useResizeListener.d.ts +1 -1
  443. package/dist/useResizeListener.js.map +1 -1
  444. package/dist/useResizeObserver.d.ts +19 -0
  445. package/dist/useResizeObserver.js +19 -0
  446. package/dist/useResizeObserver.js.map +1 -1
  447. package/dist/useThrottledFunction.d.ts +1 -5
  448. package/dist/useThrottledFunction.js +3 -1
  449. package/dist/useThrottledFunction.js.map +1 -1
  450. package/dist/useToggle.d.ts +3 -3
  451. package/dist/useToggle.js.map +1 -1
  452. package/dist/utils/RenderRecursively.d.ts +2 -2
  453. package/dist/utils/RenderRecursively.js.map +1 -1
  454. package/dist/utils/alphaNumericSort.d.ts +5 -5
  455. package/dist/utils/alphaNumericSort.js.map +1 -1
  456. package/dist/utils/bem.d.ts +1 -1
  457. package/dist/utils/bem.js +1 -1
  458. package/dist/utils/bem.js.map +1 -1
  459. package/dist/utils/debounce.d.ts +5 -0
  460. package/dist/utils/debounce.js +17 -0
  461. package/dist/utils/debounce.js.map +1 -0
  462. package/dist/utils/nearest.js.map +1 -1
  463. package/dist/utils/parseCssLengthUnit.js.map +1 -1
  464. package/dist/utils/throttle.d.ts +5 -0
  465. package/dist/utils/throttle.js +30 -0
  466. package/dist/utils/throttle.js.map +1 -0
  467. package/dist/utils/wait.js +3 -1
  468. package/dist/utils/wait.js.map +1 -1
  469. package/dist/window-splitter/WindowSplitter.d.ts +37 -15
  470. package/dist/window-splitter/WindowSplitter.js +38 -17
  471. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  472. package/dist/window-splitter/_window-splitter.scss +32 -14
  473. package/dist/window-splitter/styles.d.ts +14 -0
  474. package/dist/window-splitter/styles.js +18 -0
  475. package/dist/window-splitter/styles.js.map +1 -0
  476. package/package.json +25 -24
  477. package/src/app-bar/AppBar.tsx +1 -170
  478. package/src/app-bar/AppBarTitle.tsx +1 -44
  479. package/src/app-bar/styles.ts +206 -0
  480. package/src/autocomplete/Autocomplete.tsx +194 -211
  481. package/src/autocomplete/AutocompleteChip.tsx +48 -0
  482. package/src/autocomplete/AutocompleteCircularProgress.tsx +6 -17
  483. package/src/autocomplete/AutocompleteClearButton.tsx +44 -0
  484. package/src/autocomplete/AutocompleteDropdownButton.tsx +16 -37
  485. package/src/autocomplete/AutocompleteListboxChildren.tsx +68 -0
  486. package/src/autocomplete/autocompleteStyles.ts +48 -9
  487. package/src/autocomplete/defaults.ts +26 -17
  488. package/src/autocomplete/types.ts +744 -61
  489. package/src/autocomplete/useAutocomplete.ts +428 -0
  490. package/src/autocomplete/utils.ts +211 -0
  491. package/src/badge/Badge.tsx +1 -39
  492. package/src/badge/styles.ts +45 -0
  493. package/src/box/Box.tsx +11 -9
  494. package/src/box/styles.ts +14 -5
  495. package/src/button/AsyncButton.tsx +1 -1
  496. package/src/button/Button.tsx +5 -1
  497. package/src/card/Card.tsx +35 -4
  498. package/src/card/ClickableCard.tsx +9 -2
  499. package/src/card/styles.ts +1 -10
  500. package/src/chip/Chip.tsx +6 -1
  501. package/src/chip/styles.ts +12 -10
  502. package/src/delegateEvent.ts +5 -5
  503. package/src/dialog/Dialog.tsx +48 -61
  504. package/src/dialog/FixedDialog.tsx +1 -11
  505. package/src/dialog/styles.ts +97 -0
  506. package/src/divider/Divider.tsx +0 -12
  507. package/src/divider/styles.ts +12 -0
  508. package/src/draggable/useDraggable.ts +17 -10
  509. package/src/draggable/utils.ts +3 -3
  510. package/src/expansion-panel/ExpansionPanel.tsx +1 -1
  511. package/src/expansion-panel/useExpansionPanels.ts +18 -27
  512. package/src/{form → files}/FileInput.tsx +7 -15
  513. package/src/files/styles.ts +10 -0
  514. package/src/{form → files}/useFileUpload.ts +30 -34
  515. package/src/files/utils.ts +234 -0
  516. package/src/{form/fileUtils.ts → files/validation.ts} +15 -244
  517. package/src/focus/useFocusContainer.ts +16 -8
  518. package/src/form/FormMessageContainer.tsx +2 -2
  519. package/src/form/InputToggle.tsx +5 -1
  520. package/src/form/Label.tsx +18 -18
  521. package/src/form/Listbox.tsx +87 -0
  522. package/src/form/ListboxProvider.ts +37 -0
  523. package/src/form/MenuItemTextField.tsx +1 -2
  524. package/src/form/NativeSelect.tsx +14 -10
  525. package/src/form/Option.tsx +74 -22
  526. package/src/form/Select.tsx +89 -85
  527. package/src/form/SelectedOption.tsx +2 -0
  528. package/src/form/Slider.tsx +14 -11
  529. package/src/form/SliderThumb.tsx +4 -4
  530. package/src/form/SliderValueMarks.tsx +4 -4
  531. package/src/form/TextArea.tsx +6 -8
  532. package/src/form/TextField.tsx +0 -2
  533. package/src/form/TextFieldContainer.tsx +9 -11
  534. package/src/form/formMessageContainerStyles.ts +22 -0
  535. package/src/form/optionStyles.ts +7 -2
  536. package/src/form/sliderUtils.ts +1 -1
  537. package/src/form/textFieldContainerStyles.ts +9 -14
  538. package/src/form/types.ts +3 -11
  539. package/src/form/useCheckboxGroup.ts +28 -36
  540. package/src/form/useCombobox.ts +86 -38
  541. package/src/form/useEditableCombobox.ts +43 -8
  542. package/src/form/useRadioGroup.ts +6 -6
  543. package/src/form/useSelectCombobox.ts +4 -4
  544. package/src/form/useTextField.ts +1 -1
  545. package/src/hoverMode/useHoverMode.ts +3 -3
  546. package/src/hoverMode/useHoverModeProvider.ts +4 -4
  547. package/src/icon/FontIcon.tsx +4 -2
  548. package/src/icon/TextIconSpacing.tsx +1 -1
  549. package/src/icon/iconConfig.tsx +12 -0
  550. package/src/interaction/UserInteractionModeProvider.tsx +12 -8
  551. package/src/interaction/types.ts +21 -2
  552. package/src/interaction/useElementInteraction.tsx +9 -2
  553. package/src/interaction/utils.ts +7 -7
  554. package/src/layout/useExpandableLayout.ts +3 -3
  555. package/src/layout/useLayoutAppBarHeight.ts +3 -4
  556. package/src/layout/useTemporaryLayout.ts +2 -2
  557. package/src/list/ListItem.tsx +5 -1
  558. package/src/list/ListItemLink.tsx +5 -1
  559. package/src/media-queries/useMediaQuery.ts +2 -1
  560. package/src/menu/Menu.tsx +11 -3
  561. package/src/menu/MenuItemButton.tsx +7 -1
  562. package/src/menu/useContextMenu.ts +3 -3
  563. package/src/movement/types.ts +5 -5
  564. package/src/navigation/CollapsibleNavGroup.tsx +16 -8
  565. package/src/navigation/DefaultNavigationRenderer.tsx +8 -6
  566. package/src/navigation/NavItemButton.tsx +2 -1
  567. package/src/navigation/NavItemLink.tsx +11 -3
  568. package/src/navigation/NavSubheader.tsx +1 -1
  569. package/src/navigation/Navigation.tsx +1 -1
  570. package/src/navigation/types.ts +60 -10
  571. package/src/navigation/useActiveHeadingId.ts +1 -1
  572. package/src/navigation/useNavigationExpansion.ts +170 -0
  573. package/src/navigation/utils.ts +47 -0
  574. package/src/objectFit.ts +88 -0
  575. package/src/positioning/useFixedPositioning.ts +34 -11
  576. package/src/responsive-item/ResponsiveItem.tsx +96 -0
  577. package/src/responsive-item/ResponsiveItemOverlay.tsx +6 -46
  578. package/src/responsive-item/responsiveItemOverlayStyles.ts +46 -0
  579. package/src/responsive-item/responsiveItemStyles.ts +81 -0
  580. package/src/scroll/useScrollLock.ts +6 -0
  581. package/src/searching/utils.ts +3 -3
  582. package/src/segmented-button/SegmentedButton.tsx +5 -1
  583. package/src/snackbar/ToastManager.tsx +16 -5
  584. package/src/snackbar/useCurrentToastActions.ts +5 -5
  585. package/src/table/tableCellStyles.ts +10 -6
  586. package/src/tabs/Tab.tsx +4 -1
  587. package/src/tabs/TabList.tsx +2 -2
  588. package/src/tabs/TabListScrollButton.tsx +4 -4
  589. package/src/tabs/getTabListScrollToOptions.ts +37 -0
  590. package/src/tabs/tabStyles.ts +4 -0
  591. package/src/tabs/useTabList.ts +2 -9
  592. package/src/tabs/useTabs.ts +6 -6
  593. package/src/tabs/utils.ts +0 -38
  594. package/src/test-utils/ResizeObserver.ts +11 -12
  595. package/src/test-utils/matchMedia.ts +7 -7
  596. package/src/test-utils/polyfills/TextDecoder.ts +0 -1
  597. package/src/test-utils/timers.ts +10 -7
  598. package/src/theme/LocalStorageColorSchemeProvider.tsx +4 -4
  599. package/src/theme/ThemeProvider.tsx +3 -3
  600. package/src/theme/isColorScheme.ts +22 -0
  601. package/src/theme/types.ts +67 -1
  602. package/src/theme/useCSSVariables.ts +7 -30
  603. package/src/theme/useColorScheme.ts +1 -40
  604. package/src/theme/useColorSchemeMetaTag.ts +1 -1
  605. package/src/theme/useColorSchemeProvider.ts +2 -2
  606. package/src/tooltip/useTooltip.ts +17 -9
  607. package/src/transition/types.ts +1 -1
  608. package/src/transition/useCarousel.ts +3 -3
  609. package/src/transition/useTransition.ts +1 -0
  610. package/src/tree/TreeItem.tsx +7 -1
  611. package/src/tree/TreeItemExpander.tsx +1 -1
  612. package/src/tree/useTreeExpansion.ts +7 -25
  613. package/src/tree/useTreeSelection.ts +8 -32
  614. package/src/tree/utils.ts +6 -2
  615. package/src/types.ts +20 -4
  616. package/src/typography/WritingDirectionProvider.tsx +1 -1
  617. package/src/useDebouncedFunction.ts +4 -9
  618. package/src/useDropzone.ts +4 -4
  619. package/src/useIntersectionObserver.ts +5 -5
  620. package/src/useLocalStorage.ts +6 -6
  621. package/src/useMutationObserver.ts +1 -1
  622. package/src/useOrientation.ts +3 -1
  623. package/src/usePageInactive.ts +2 -2
  624. package/src/useReadonlySet.ts +122 -0
  625. package/src/useResizeListener.ts +1 -1
  626. package/src/useResizeObserver.ts +19 -0
  627. package/src/useThrottledFunction.ts +6 -9
  628. package/src/useToggle.ts +3 -3
  629. package/src/utils/RenderRecursively.tsx +2 -2
  630. package/src/utils/alphaNumericSort.ts +5 -5
  631. package/src/utils/bem.ts +1 -1
  632. package/src/utils/debounce.ts +22 -0
  633. package/src/utils/throttle.ts +38 -0
  634. package/src/utils/wait.ts +5 -1
  635. package/src/window-splitter/WindowSplitter.tsx +38 -43
  636. package/src/window-splitter/styles.ts +42 -0
  637. package/dist/autocomplete/FilterAutocompleteOptions.d.ts +0 -8
  638. package/dist/autocomplete/FilterAutocompleteOptions.js +0 -57
  639. package/dist/autocomplete/FilterAutocompleteOptions.js.map +0 -1
  640. package/dist/dialog/DialogContainer.d.ts +0 -14
  641. package/dist/dialog/DialogContainer.js +0 -20
  642. package/dist/dialog/DialogContainer.js.map +0 -1
  643. package/dist/form/FileInput.js.map +0 -1
  644. package/dist/form/fileUtils.js.map +0 -1
  645. package/dist/form/useFileUpload.js.map +0 -1
  646. package/dist/form/useListboxProvider.d.ts +0 -31
  647. package/dist/form/useListboxProvider.js.map +0 -1
  648. package/dist/navigation/getHrefFromParents.d.ts +0 -5
  649. package/dist/navigation/getHrefFromParents.js +0 -13
  650. package/dist/navigation/getHrefFromParents.js.map +0 -1
  651. package/dist/responsive-item/ResponsiveItemContainer.d.ts +0 -115
  652. package/dist/responsive-item/ResponsiveItemContainer.js +0 -80
  653. package/dist/responsive-item/ResponsiveItemContainer.js.map +0 -1
  654. package/dist/responsive-item/styles.d.ts +0 -34
  655. package/dist/responsive-item/styles.js +0 -17
  656. package/dist/responsive-item/styles.js.map +0 -1
  657. package/dist/theme/usePrefersColorScheme.js.map +0 -1
  658. package/src/autocomplete/FilterAutocompleteOptions.tsx +0 -86
  659. package/src/dialog/DialogContainer.tsx +0 -28
  660. package/src/form/useListboxProvider.ts +0 -45
  661. package/src/navigation/getHrefFromParents.ts +0 -15
  662. package/src/responsive-item/ResponsiveItemContainer.tsx +0 -174
  663. package/src/responsive-item/styles.ts +0 -58
  664. /package/dist/theme/{usePrefersColorScheme.d.ts → usePrefersDarkScheme.d.ts} +0 -0
  665. /package/src/theme/{usePrefersColorScheme.ts → usePrefersDarkScheme.ts} +0 -0
@@ -69,7 +69,7 @@ export interface LocalStorageHookOptions<T> {
69
69
  /**
70
70
  * @since 6.0.0
71
71
  */
72
- export const defaultLocalStorageSerializer = <T>(value: T): string =>
72
+ export const defaultLocalStorageSerializer = (value: unknown): string =>
73
73
  typeof value === "string" ? value : `${value}`;
74
74
 
75
75
  /** @since 6.0.0 */
@@ -135,7 +135,7 @@ export const getItemFromStorage = <T>(
135
135
  key,
136
136
  fallback,
137
137
  storage = localStorage,
138
- deserializer = JSON.parse,
138
+ deserializer = JSON.parse as LocalStorageDeserializer<T>,
139
139
  } = options;
140
140
  if (!key) {
141
141
  return fallback;
@@ -144,7 +144,7 @@ export const getItemFromStorage = <T>(
144
144
  try {
145
145
  const value = storage.getItem(key);
146
146
  return !value ? fallback : deserializer(value);
147
- } catch (e) {
147
+ } catch {
148
148
  return fallback;
149
149
  }
150
150
  };
@@ -255,7 +255,7 @@ export interface LocalStorageHookReturnValue<T> {
255
255
  /**
256
256
  * Remove the item from local storage.
257
257
  */
258
- remove(): void;
258
+ remove: () => void;
259
259
 
260
260
  /**
261
261
  * Manually persist the current {@link value} into local storage. This is only
@@ -291,7 +291,7 @@ export interface LocalStorageHookReturnValue<T> {
291
291
  * }
292
292
  * ```
293
293
  */
294
- persist(): void;
294
+ persist: () => void;
295
295
  }
296
296
 
297
297
  /**
@@ -456,7 +456,7 @@ export function useLocalStorage<T>(
456
456
  const serializer =
457
457
  options.serializer ??
458
458
  (raw ? defaultLocalStorageSerializer : JSON.stringify);
459
- const deserializer =
459
+ const deserializer: LocalStorageDeserializer<T> =
460
460
  options.deserializer ??
461
461
  (raw && typeof initialValue === "string" ? identity : JSON.parse);
462
462
 
@@ -14,7 +14,7 @@ export interface MutationObserverHookOptions<E extends HTMLElement>
14
14
  */
15
15
  disabled?: boolean;
16
16
 
17
- onObserved(mutation: MutationRecord): void;
17
+ onObserved: (mutation: MutationRecord) => void;
18
18
  }
19
19
 
20
20
  /**
@@ -40,7 +40,9 @@ export const getOrientationType = (): OrientationType => {
40
40
  export function useOrientation(): OrientationType {
41
41
  const [orientation, setOrientation] = useState(getOrientationType);
42
42
  useEffect(() => {
43
- const handler = (): void => setOrientation(getOrientationType());
43
+ const handler = (): void => {
44
+ setOrientation(getOrientationType());
45
+ };
44
46
 
45
47
  const { orientation } = window.screen;
46
48
  if (orientation) {
@@ -36,7 +36,7 @@ export interface PageInactiveOptions {
36
36
  * This will be called whenever the page activity changes based on the
37
37
  * {@link PageInactiveType}.
38
38
  */
39
- onChange(active: boolean): void;
39
+ onChange: (active: boolean) => void;
40
40
 
41
41
  /**
42
42
  * This will be fired whenever the {@link disabled} state is `true` which can
@@ -47,7 +47,7 @@ export interface PageInactiveOptions {
47
47
  *
48
48
  * @defaultValue `() => {}`
49
49
  */
50
- onDisabledCleanup?(): void;
50
+ onDisabledCleanup?: () => void;
51
51
  }
52
52
 
53
53
  /**
@@ -0,0 +1,122 @@
1
+ "use client";
2
+ import { useCallback, useState } from "react";
3
+ import { type UseStateSetter, type UseStateInitializer } from "./types.js";
4
+
5
+ /**
6
+ * @since 6.0.0
7
+ */
8
+ export interface ReadonlySetOptions<T> {
9
+ /**
10
+ * Sets the behavior for when the
11
+ * {@link ReadonlySetImplementation.toggleValue} is triggered and mostly for
12
+ * internal usage. The default behavior (`"multiple"`) is to work how most
13
+ * would expect:
14
+ * - If the item does not exist in the set, add it.
15
+ * - If the item exists in the set, remove it.
16
+ *
17
+ * Setting this to `"single"` makes it so that only a single item can be in
18
+ * the set at once and will toggle like normal:
19
+ * - If the item does not exist in the set, return a new set only including
20
+ * the item.
21
+ * - If the item exists in the set, return an empty set.
22
+ * An example usage is the `useExpansionPanels` to allow only a single panel
23
+ * to be expanded at a time.
24
+ *
25
+ * Setting this to `"single-select"` makes it so that only a single item can
26
+ * be in the set at once but will not toggle:
27
+ * - If the item does not exist in the set, return a new set only including
28
+ * the item.
29
+ * - If the item exists in the set, do nothing
30
+ * An example usage is the `useTreeSelection` to always require at least one
31
+ * tree item to be selected. It is impossible to deselect an item.
32
+ *
33
+ * @defaultValue `"multiple"`
34
+ */
35
+ toggleType?: "single" | "multiple" | "single-select";
36
+ defaultValue?: UseStateInitializer<ReadonlySet<T> | readonly T[]>;
37
+ }
38
+
39
+ /**
40
+ * @since 6.0.0
41
+ */
42
+ export interface ReadonlySetImplementation<T> {
43
+ value: ReadonlySet<T>;
44
+ setValue: UseStateSetter<ReadonlySet<T>>;
45
+ toggleValue: (item: T) => void;
46
+ }
47
+
48
+ /**
49
+ * This is most likely an internal only hook to manage state for a
50
+ * `ReadonlySet`. You most likely want to use one of the other hooks that
51
+ * leverage this instead:
52
+ *
53
+ * - `useCheckboxGroup`
54
+ * - `useExpansionPanels`
55
+ * - `useTreeSelection`
56
+ * - `useTreeExpansion`
57
+ * - etc
58
+ *
59
+ * @example Simple Example
60
+ * ```tsx
61
+ * import { cnb } from "cnbuilder";
62
+ * import { useReadonlySet } from "@react-md/core/useReadonlySet";
63
+ *
64
+ * function Example() {
65
+ * const { value, toggleValue } = useReadonlySet();
66
+ *
67
+ * return (
68
+ * <>
69
+ * {someList.map((item) => (
70
+ * <div key={item.id} className={cnb(value.has(item.id) && styles.selected)}>
71
+ * {item.name}
72
+ * <Button onClick={() => toggleValue(item.id)}>Button</Button>
73
+ * </div>
74
+ * ))}
75
+ * </>
76
+ * );
77
+ * }
78
+ * ```
79
+ * @since 6.0.0
80
+ */
81
+ export function useReadonlySet<T>(
82
+ options: ReadonlySetOptions<T> = {}
83
+ ): ReadonlySetImplementation<T> {
84
+ const { defaultValue, toggleType = "multiple" } = options;
85
+ const [value, setValue] = useState<ReadonlySet<T>>(() => {
86
+ const initial =
87
+ defaultValue instanceof Function ? defaultValue() : (defaultValue ?? []);
88
+
89
+ return new Set(initial);
90
+ });
91
+
92
+ const toggleValue = useCallback(
93
+ (item: T) => {
94
+ setValue((prevValue) => {
95
+ const exists = prevValue.has(item);
96
+ if (toggleType === "single") {
97
+ return new Set(exists ? [] : [item]);
98
+ }
99
+
100
+ if (toggleType === "single-select") {
101
+ return exists ? prevValue : new Set([item]);
102
+ }
103
+
104
+ const nextValue = new Set(prevValue);
105
+ if (exists) {
106
+ nextValue.delete(item);
107
+ } else {
108
+ nextValue.add(item);
109
+ }
110
+
111
+ return nextValue;
112
+ });
113
+ },
114
+ [toggleType]
115
+ );
116
+
117
+ return {
118
+ value,
119
+ setValue,
120
+ toggleValue,
121
+ };
122
+ }
@@ -33,7 +33,7 @@ export interface ResizeListenerOptions extends AddEventListenerOptions {
33
33
  * This function will be called whenever the resize event is fired on the
34
34
  * `window`. This should be wrapped in `useCallback`.
35
35
  */
36
- onUpdate(event: Event): void;
36
+ onUpdate: (event: Event) => void;
37
37
  }
38
38
 
39
39
  /**
@@ -194,6 +194,25 @@ export interface ResizeObserverHookOptions<E extends HTMLElement> {
194
194
  * For most cases you can use the {@link useElementSize} instead, but this hook
195
195
  * can be used for more complex behavior with the {@link ResizeObserverEntry}.
196
196
  *
197
+ * @example Simple Example
198
+ * ```tsx
199
+ * import { useResizeObserver } from "@react-md/core/useResizeObserver";
200
+ * import { useCallback, useState, type ReactElement } from "react";
201
+ *
202
+ * function Example(): ReactElement {
203
+ * const elementRef = useResizeObserver({
204
+ * onUpdate: useCallback((entry) => {
205
+ * const element = entry.target;
206
+ * const { height, width } = entry.contentRect;
207
+ * const { inlineSize, blockSize } = entry.borderBoxSize[0]O
208
+ * // do something
209
+ * }, []),
210
+ * });
211
+ *
212
+ * return <div ref={elementRef}>{...whatever...}</div>
213
+ * }
214
+ * ```
215
+ *
197
216
  * @since 2.3.0
198
217
  * @since 6.0.0 The API was updated to match the `useIntersectionObserver`
199
218
  * implementation -- accepts only a single object parameter and returns a
@@ -1,15 +1,8 @@
1
1
  "use client";
2
2
  import { useEffect, useMemo, useRef } from "react";
3
- import { type AnyFunction, type CancelableFunction } from "./types.js";
3
+ import { type AnyFunction, type ThrottledFunction } from "./types.js";
4
4
  import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect.js";
5
5
 
6
- /**
7
- * @since 6.0.0
8
- */
9
- export type ThrottledFunction<F extends AnyFunction> = CancelableFunction<
10
- (...args: Parameters<F>) => ReturnType<F>
11
- >;
12
-
13
6
  /**
14
7
  * Creates a function that will only be called once every X milliseconds.
15
8
  *
@@ -113,19 +106,23 @@ export function useThrottledFunction<F extends AnyFunction>(
113
106
  const remaining = wait - (now - lastCalledTime.current);
114
107
  if (remaining <= 0 || remaining > wait) {
115
108
  lastCalledTime.current = now;
109
+
116
110
  result.current = funcRef.current(...args.current);
117
111
  } else if (!timeout.current) {
118
112
  timeout.current = window.setTimeout(() => {
119
113
  lastCalledTime.current = Date.now();
120
114
  timeout.current = undefined;
121
115
  // should exist by this time
116
+
122
117
  result.current = funcRef.current(...(args.current as Parameters<F>));
123
118
  }, remaining);
124
119
  }
125
120
 
126
121
  return result.current as ReturnType<F>;
127
122
  };
128
- throttled.cancel = () => window.clearTimeout(timeout.current);
123
+ throttled.cancel = () => {
124
+ window.clearTimeout(timeout.current);
125
+ };
129
126
 
130
127
  return throttled;
131
128
  }, [wait]);
package/src/useToggle.ts CHANGED
@@ -8,9 +8,9 @@ import { type UseStateInitializer, type UseStateSetter } from "./types.js";
8
8
  export interface ToggleImplementation {
9
9
  toggled: boolean;
10
10
  setToggled: UseStateSetter<boolean>;
11
- toggle(): void;
12
- enable(): void;
13
- disable(): void;
11
+ toggle: () => void;
12
+ enable: () => void;
13
+ disable: () => void;
14
14
  }
15
15
 
16
16
  /**
@@ -95,9 +95,9 @@ export interface RenderRecursivelyProps<
95
95
  * ```
96
96
  *
97
97
  * @see {@link getRecursiveItemKey}
98
- * @defaultValue `({ index, depth }) => ${depth}-${index}`.
98
+ * @defaultValue `` ({ index, depth }) => `${depth}-${index}` ``
99
99
  */
100
- getItemKey?(options: RecursiveItemKeyOptions<Item>): string;
100
+ getItemKey?: (options: RecursiveItemKeyOptions<Item>) => string;
101
101
  }
102
102
 
103
103
  /**
@@ -25,9 +25,9 @@ export interface AlphaNumericSortOptions<T> {
25
25
  *
26
26
  * const items: Item[] = [{ name: 'Hello' }, { name: 'World' }];
27
27
  *
28
- * `alphaNumericSort(items, {
29
- * extractor: item => item.name,
30
- * })`
28
+ * alphaNumericSort(items, {
29
+ * extractor: (item) => item.name,
30
+ * });
31
31
  * ```
32
32
  *
33
33
  * For javascript developers, this will throw an error in dev mode if an
@@ -58,7 +58,7 @@ export interface AlphaNumericSortOptions<T> {
58
58
  * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Collator/Collator
59
59
  * @defaultValue `new Intl.Collator("en-US", { numeric: true, caseFirst: "upper" }).compare`
60
60
  */
61
- compare?(a: string, b: string): number;
61
+ compare?: (a: string, b: string) => number;
62
62
 
63
63
  /**
64
64
  * Setting this to `true` will return the list in descending order instead of
@@ -95,7 +95,7 @@ export function alphaNumericSort<T extends string>(
95
95
  * const items: Item[] = [{ name: "World" }, { name: "Hello" }];
96
96
  *
97
97
  * const sorted = alphaNumericSort(items, {
98
- * extractor: item => item.name,
98
+ * extractor: (item) => item.name,
99
99
  * });
100
100
  * // sorted == [{ name: "Hello" }, { name: "World" }]
101
101
  * ```
package/src/utils/bem.ts CHANGED
@@ -26,7 +26,7 @@ export type BEMResult = (
26
26
  * Applies the BEM styled class name to an element.
27
27
  *
28
28
  * @example Simple Example
29
- * ```jsx
29
+ * ```tsx
30
30
  * import { bem } from "@react-md/core":
31
31
  *
32
32
  * const styles = bem("my-component"):
@@ -0,0 +1,22 @@
1
+ import { type AnyFunction, type DebouncedFunction } from "../types.js";
2
+
3
+ /**
4
+ * @since 6.0.0
5
+ */
6
+ export function debounce<F extends AnyFunction>(
7
+ fn: F,
8
+ duration: number
9
+ ): DebouncedFunction<F> {
10
+ let timeout: NodeJS.Timeout | undefined;
11
+ const debounced: DebouncedFunction<F> = (...args) => {
12
+ clearTimeout(timeout);
13
+ timeout = setTimeout(() => {
14
+ fn(...args);
15
+ }, duration);
16
+ };
17
+ debounced.cancel = () => {
18
+ clearTimeout(timeout);
19
+ };
20
+
21
+ return debounced;
22
+ }
@@ -0,0 +1,38 @@
1
+ import { type AnyFunction, type ThrottledFunction } from "../types.js";
2
+
3
+ /**
4
+ * @since 6.0.0
5
+ */
6
+ export function throttle<F extends AnyFunction>(
7
+ fn: F,
8
+ wait: number
9
+ ): ThrottledFunction<F> {
10
+ let args: Parameters<F>;
11
+ let result: ReturnType<F>;
12
+ let timeout: NodeJS.Timeout | undefined;
13
+ let lastCalledTime = 0;
14
+
15
+ const throttled: ThrottledFunction<F> = (...nextArgs) => {
16
+ args = nextArgs;
17
+
18
+ const now = Date.now();
19
+ const remaining = wait - (now - lastCalledTime);
20
+ if (remaining <= 0 || remaining > wait) {
21
+ lastCalledTime = now;
22
+ result = fn(...args);
23
+ } else if (!timeout) {
24
+ timeout = setTimeout(() => {
25
+ lastCalledTime = Date.now();
26
+ timeout = undefined;
27
+ result = fn(...args);
28
+ }, remaining);
29
+ }
30
+
31
+ return result;
32
+ };
33
+ throttled.cancel = () => {
34
+ clearTimeout(timeout);
35
+ };
36
+
37
+ return throttled;
38
+ }
package/src/utils/wait.ts CHANGED
@@ -14,4 +14,8 @@
14
14
  * @since 6.0.0
15
15
  */
16
16
  export const wait = (ms: number): Promise<void> =>
17
- new Promise((resolve) => setTimeout(() => resolve(), ms));
17
+ new Promise((resolve) =>
18
+ setTimeout(() => {
19
+ resolve();
20
+ }, ms)
21
+ );
@@ -1,51 +1,10 @@
1
- import { cnb } from "cnbuilder";
2
1
  import { forwardRef, type ButtonHTMLAttributes } from "react";
3
2
  import { type LabelRequiredForA11y } from "../types.js";
4
- import { bem } from "../utils/bem.js";
3
+ import { windowSplitter } from "./styles.js";
5
4
 
6
5
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
7
6
  import { type useWindowSplitter } from "./useWindowSplitter.js";
8
7
 
9
- const styles = bem("rmd-window-splitter");
10
-
11
- /**
12
- * @since 6.0.0
13
- */
14
- export interface WindowSplitterClassNameOptions {
15
- className?: string;
16
- dragging?: boolean;
17
- reversed?: boolean;
18
- vertical?: boolean;
19
- disableFixed?: boolean;
20
- }
21
-
22
- /**
23
- * @since 6.0.0
24
- */
25
- export function windowSplitter(
26
- options: WindowSplitterClassNameOptions = {}
27
- ): string {
28
- const {
29
- vertical = false,
30
- dragging,
31
- reversed,
32
- disableFixed,
33
- className,
34
- } = options;
35
-
36
- return cnb(
37
- styles({
38
- h: !vertical,
39
- hr: !vertical && reversed,
40
- v: vertical,
41
- vr: vertical && reversed,
42
- a: disableFixed,
43
- dragging,
44
- }),
45
- className
46
- );
47
- }
48
-
49
8
  /**
50
9
  * @since 6.0.0
51
10
  * @see {@link https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/}
@@ -85,7 +44,43 @@ export type WindowSplitterProps = LabelRequiredForA11y<BaseWindowSplitterProps>;
85
44
  * The `WindowSplitter` should be used with the `useWindowSplitter` hook to
86
45
  * resize parts of a layout.
87
46
  *
88
- * @see {@link useWindowSplitter} for an example usage
47
+ * See the `useResizableLayout` hook if the entire page layout should be
48
+ * resizable.
49
+ *
50
+ * @example Simple Example
51
+ * ```tsx
52
+ * "use client";
53
+ * import { WindowSplitter } from "@react-md/core/window-splitter/WindowSplitter";
54
+ * import { useWindowSplitter } from "@react-md/core/window-splitter/useWindowSplitter";
55
+ * import { useId, type ReactElement } from "react";
56
+ *
57
+ * export function Example(): ReactElement {
58
+ * const panelId = useId();
59
+ * const { value, splitterProps } = useWindowSplitter({
60
+ * min: 120,
61
+ * max: 380,
62
+ * });
63
+ *
64
+ * return (
65
+ * <div
66
+ * style={{
67
+ * "--rmd-window-splitter-position": `${value}px`,
68
+ * display: "grid",
69
+ * gridTemplateColumns: "var(--rmd-window-splitter-position, 120px) 1fr",
70
+ * }}
71
+ * >
72
+ * <div>Panel 1</div>
73
+ * <WindowSplitter
74
+ * {...splitterProps}
75
+ * aria-controls={panelId}
76
+ * aria-labelledby={panelId}
77
+ * />
78
+ * <div>Panel 2</div>
79
+ * </div>
80
+ * );
81
+ * }
82
+ * ```
83
+ *
89
84
  * @since 6.0.0
90
85
  */
91
86
  export const WindowSplitter = forwardRef<
@@ -0,0 +1,42 @@
1
+ import { cnb } from "cnbuilder";
2
+ import { bem } from "../utils/bem.js";
3
+
4
+ const styles = bem("rmd-window-splitter");
5
+
6
+ /**
7
+ * @since 6.0.0
8
+ */
9
+ export interface WindowSplitterClassNameOptions {
10
+ className?: string;
11
+ dragging?: boolean;
12
+ reversed?: boolean;
13
+ vertical?: boolean;
14
+ disableFixed?: boolean;
15
+ }
16
+
17
+ /**
18
+ * @since 6.0.0
19
+ */
20
+ export function windowSplitter(
21
+ options: WindowSplitterClassNameOptions = {}
22
+ ): string {
23
+ const {
24
+ vertical = false,
25
+ dragging,
26
+ reversed,
27
+ disableFixed,
28
+ className,
29
+ } = options;
30
+
31
+ return cnb(
32
+ styles({
33
+ h: !vertical,
34
+ hr: !vertical && reversed,
35
+ v: vertical,
36
+ vr: vertical && reversed,
37
+ a: disableFixed,
38
+ dragging,
39
+ }),
40
+ className
41
+ );
42
+ }
@@ -1,8 +0,0 @@
1
- import { type ReactElement, type RefObject } from "react";
2
- import { type EditableHTMLElement } from "../form/utils.js";
3
- import { type AutocompleteOptionsProps } from "./types.js";
4
- export interface FilterAutocompleteOptionsProps<T> extends AutocompleteOptionsProps<T> {
5
- query: string;
6
- comboboxRef: RefObject<EditableHTMLElement>;
7
- }
8
- export declare function FilterAutocompleteOptions<T>(props: FilterAutocompleteOptionsProps<T>): ReactElement;
@@ -1,57 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { useMemo } from "react";
4
- import { triggerManualChangeEvent } from "../form/utils.js";
5
- import { ListSubheader } from "../list/ListSubheader.js";
6
- import { MenuItem } from "../menu/MenuItem.js";
7
- import { defaultAutocompleteExtractor, defaultAutocompleteFilter, defaultAutocompleteOptionProps } from "./defaults.js";
8
- const noop = ()=>{
9
- // do nothing
10
- };
11
- export function FilterAutocompleteOptions(props) {
12
- const { query, filter = defaultAutocompleteFilter, options, extractor = defaultAutocompleteExtractor, whitespace = "keep", comboboxRef, disableFilter, onAutocomplete = noop, getOptionProps = defaultAutocompleteOptionProps, clearOnAutocomplete, noOptionsChildren = /*#__PURE__*/ _jsx(ListSubheader, {
13
- children: "No Options"
14
- }) } = props;
15
- const filtered = useMemo(()=>{
16
- if (disableFilter) {
17
- return options;
18
- }
19
- return filter({
20
- list: options,
21
- query,
22
- extractor,
23
- whitespace
24
- });
25
- }, [
26
- disableFilter,
27
- extractor,
28
- filter,
29
- options,
30
- query,
31
- whitespace
32
- ]);
33
- return /*#__PURE__*/ _jsxs(_Fragment, {
34
- children: [
35
- !filtered.length && noOptionsChildren,
36
- filtered.map((option, index)=>{
37
- const label = extractor(option);
38
- const optionProps = getOptionProps({
39
- index,
40
- option
41
- });
42
- return /*#__PURE__*/ _jsx(MenuItem, {
43
- role: "option",
44
- ...optionProps,
45
- onClick: (event)=>{
46
- optionProps?.onClick?.(event);
47
- triggerManualChangeEvent(comboboxRef.current, clearOnAutocomplete ? "" : label);
48
- onAutocomplete(option);
49
- },
50
- children: optionProps?.children ?? label
51
- }, label);
52
- })
53
- ]
54
- });
55
- }
56
-
57
- //# sourceMappingURL=FilterAutocompleteOptions.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/autocomplete/FilterAutocompleteOptions.tsx"],"sourcesContent":["\"use client\";\nimport { useMemo, type ReactElement, type RefObject } from \"react\";\nimport {\n triggerManualChangeEvent,\n type EditableHTMLElement,\n} from \"../form/utils.js\";\nimport { ListSubheader } from \"../list/ListSubheader.js\";\nimport { MenuItem } from \"../menu/MenuItem.js\";\nimport {\n defaultAutocompleteExtractor,\n defaultAutocompleteFilter,\n defaultAutocompleteOptionProps,\n} from \"./defaults.js\";\nimport { type AutocompleteOptionsProps } from \"./types.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\nexport interface FilterAutocompleteOptionsProps<T>\n extends AutocompleteOptionsProps<T> {\n query: string;\n comboboxRef: RefObject<EditableHTMLElement>;\n}\n\nexport function FilterAutocompleteOptions<T>(\n props: FilterAutocompleteOptionsProps<T>\n): ReactElement {\n const {\n query,\n filter = defaultAutocompleteFilter,\n options,\n extractor = defaultAutocompleteExtractor,\n whitespace = \"keep\",\n comboboxRef,\n disableFilter,\n onAutocomplete = noop,\n getOptionProps = defaultAutocompleteOptionProps,\n clearOnAutocomplete,\n noOptionsChildren = <ListSubheader>No Options</ListSubheader>,\n } = props;\n const filtered = useMemo(() => {\n if (disableFilter) {\n return options;\n }\n\n return filter({\n list: options,\n query,\n extractor,\n whitespace,\n });\n }, [disableFilter, extractor, filter, options, query, whitespace]);\n\n return (\n <>\n {!filtered.length && noOptionsChildren}\n {filtered.map((option, index) => {\n const label = extractor(option);\n const optionProps = getOptionProps({\n index,\n option,\n });\n\n return (\n <MenuItem\n key={label}\n role=\"option\"\n {...optionProps}\n onClick={(event) => {\n optionProps?.onClick?.(event);\n\n triggerManualChangeEvent(\n comboboxRef.current,\n clearOnAutocomplete ? \"\" : label\n );\n onAutocomplete(option);\n }}\n >\n {optionProps?.children ?? label}\n </MenuItem>\n );\n })}\n </>\n );\n}\n"],"names":["useMemo","triggerManualChangeEvent","ListSubheader","MenuItem","defaultAutocompleteExtractor","defaultAutocompleteFilter","defaultAutocompleteOptionProps","noop","FilterAutocompleteOptions","props","query","filter","options","extractor","whitespace","comboboxRef","disableFilter","onAutocomplete","getOptionProps","clearOnAutocomplete","noOptionsChildren","filtered","list","length","map","option","index","label","optionProps","role","onClick","event","current","children"],"mappings":"AAAA;;AACA,SAASA,OAAO,QAA2C,QAAQ;AACnE,SACEC,wBAAwB,QAEnB,mBAAmB;AAC1B,SAASC,aAAa,QAAQ,2BAA2B;AACzD,SAASC,QAAQ,QAAQ,sBAAsB;AAC/C,SACEC,4BAA4B,EAC5BC,yBAAyB,EACzBC,8BAA8B,QACzB,gBAAgB;AAGvB,MAAMC,OAAO;AACX,aAAa;AACf;AAQA,OAAO,SAASC,0BACdC,KAAwC;IAExC,MAAM,EACJC,KAAK,EACLC,SAASN,yBAAyB,EAClCO,OAAO,EACPC,YAAYT,4BAA4B,EACxCU,aAAa,MAAM,EACnBC,WAAW,EACXC,aAAa,EACbC,iBAAiBV,IAAI,EACrBW,iBAAiBZ,8BAA8B,EAC/Ca,mBAAmB,EACnBC,kCAAoB,KAAClB;kBAAc;MAA0B,EAC9D,GAAGO;IACJ,MAAMY,WAAWrB,QAAQ;QACvB,IAAIgB,eAAe;YACjB,OAAOJ;QACT;QAEA,OAAOD,OAAO;YACZW,MAAMV;YACNF;YACAG;YACAC;QACF;IACF,GAAG;QAACE;QAAeH;QAAWF;QAAQC;QAASF;QAAOI;KAAW;IAEjE,qBACE;;YACG,CAACO,SAASE,MAAM,IAAIH;YACpBC,SAASG,GAAG,CAAC,CAACC,QAAQC;gBACrB,MAAMC,QAAQd,UAAUY;gBACxB,MAAMG,cAAcV,eAAe;oBACjCQ;oBACAD;gBACF;gBAEA,qBACE,KAACtB;oBAEC0B,MAAK;oBACJ,GAAGD,WAAW;oBACfE,SAAS,CAACC;wBACRH,aAAaE,UAAUC;wBAEvB9B,yBACEc,YAAYiB,OAAO,EACnBb,sBAAsB,KAAKQ;wBAE7BV,eAAeQ;oBACjB;8BAECG,aAAaK,YAAYN;mBAbrBA;YAgBX;;;AAGN"}
@@ -1,14 +0,0 @@
1
- import { type HTMLAttributes, type ReactElement, type ReactNode } from "react";
2
- /**
3
- * @since 6.0.0
4
- * @internal
5
- */
6
- export interface DialogContainerProps extends HTMLAttributes<HTMLDivElement> {
7
- enabled: boolean;
8
- children: ReactNode;
9
- }
10
- /**
11
- * @since 6.0.0
12
- * @internal
13
- */
14
- export declare function DialogContainer(props: DialogContainerProps): ReactElement;