@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
@@ -2,6 +2,12 @@
2
2
  import { useEffect } from "react";
3
3
  import { getScrollbarWidth } from "./getScrollbarWidth.js";
4
4
 
5
+ declare module "react" {
6
+ interface CSSProperties {
7
+ "--rmd-scrollbar-size"?: string;
8
+ }
9
+ }
10
+
5
11
  export const SCROLLBAR_SIZE_VAR = "--rmd-scrollbar-size";
6
12
 
7
13
  // this is really just so that nested dialogs will work correctly. Only the
@@ -7,8 +7,8 @@ import { type BaseSearchOptions } from "./types.js";
7
7
  * @internal
8
8
  */
9
9
  export const defaultExtractor =
10
- <T>(name: string) =>
11
- (item: T): string => {
10
+ (name: string) =>
11
+ (item: unknown): string => {
12
12
  if (typeof item === "string") {
13
13
  return item;
14
14
  }
@@ -24,7 +24,7 @@ export const defaultExtractor =
24
24
  */
25
25
  export interface SearchOptions<T> extends BaseSearchOptions<T> {
26
26
  type: "search" | "filter";
27
- filter(query: string, value: string): boolean;
27
+ filter: (query: string, value: string) => boolean;
28
28
  extractor: TextExtractor<T>;
29
29
  }
30
30
 
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from "react";
3
3
  import { getIcon } from "../icon/iconConfig.js";
4
+ import { type ComponentWithRippleProps } from "../interaction/types.js";
4
5
  import { useElementInteraction } from "../interaction/useElementInteraction.js";
5
6
  import { useHigherContrastChildren } from "../interaction/useHigherContrastChildren.js";
6
7
  import { useMaxWidthTransition } from "../transition/useMaxWidthTransition.js";
@@ -10,7 +11,8 @@ import { segmentedButton } from "./segmentedButtonStyles.js";
10
11
  * @since 6.0.0
11
12
  */
12
13
  export interface SegmentedButtonProps
13
- extends ButtonHTMLAttributes<HTMLButtonElement> {
14
+ extends ButtonHTMLAttributes<HTMLButtonElement>,
15
+ ComponentWithRippleProps {
14
16
  /**
15
17
  * Set this to `true` to apply selected styles and an optional
16
18
  * {@link selectedIcon}
@@ -126,6 +128,7 @@ export const SegmentedButton = forwardRef<
126
128
  onTouchEnd,
127
129
  onTouchMove,
128
130
  disabled,
131
+ disableRipple,
129
132
  ...remaining
130
133
  } = props;
131
134
 
@@ -138,6 +141,7 @@ export const SegmentedButton = forwardRef<
138
141
  disableTransition: disableSelectedTransition,
139
142
  });
140
143
  const { pressedClassName, handlers, ripples } = useElementInteraction({
144
+ mode: disableRipple ? "none" : undefined,
141
145
  onBlur,
142
146
  onClick,
143
147
  onKeyDown,
@@ -542,8 +542,9 @@ export const toastManager = new ToastManager();
542
542
  * @see {@link ToastManager.addToast}
543
543
  * @since 6.0.0
544
544
  */
545
- export const addToast: ToastManager["addToast"] = (toast) =>
545
+ export const addToast: ToastManager["addToast"] = (toast) => {
546
546
  toastManager.addToast(toast);
547
+ };
547
548
 
548
549
  /**
549
550
  * @see {@link ToastManager.startRemoveTimeout}
@@ -551,23 +552,33 @@ export const addToast: ToastManager["addToast"] = (toast) =>
551
552
  */
552
553
  export const startRemoveToastTimeout: ToastManager["startRemoveTimeout"] = (
553
554
  toastId
554
- ) => toastManager.startRemoveTimeout(toastId);
555
+ ) => {
556
+ toastManager.startRemoveTimeout(toastId);
557
+ };
555
558
 
556
559
  /**
557
560
  * @see {@link ToastManager.popToast}
558
561
  * @since 6.0.0
559
562
  */
560
- export const popToast: ToastManager["popToast"] = () => toastManager.popToast();
563
+ export const popToast: ToastManager["popToast"] = () => {
564
+ toastManager.popToast();
565
+ };
561
566
 
562
567
  /**
563
568
  * @see {@link ToastManager.removeToast}
564
569
  * @since 6.0.0
565
570
  */
566
- export const removeToast: ToastManager["removeToast"] = (toastId, transition) =>
571
+ export const removeToast: ToastManager["removeToast"] = (
572
+ toastId,
573
+ transition
574
+ ) => {
567
575
  toastManager.removeToast(toastId, transition);
576
+ };
568
577
 
569
578
  /**
570
579
  * @see {@link ToastManager.clearToasts}
571
580
  * @since 6.0.0
572
581
  */
573
- export const clearToasts = (): void => toastManager.clearToasts();
582
+ export const clearToasts = (): void => {
583
+ toastManager.clearToasts();
584
+ };
@@ -9,15 +9,15 @@ import { createContext, useContext } from "react";
9
9
  */
10
10
  export interface CurrentToastActions {
11
11
  /** @see {@link ToastManager.clearTimer} */
12
- clearTimer(): void;
12
+ clearTimer: () => void;
13
13
  /** @see {@link ToastManager.removeToast} */
14
- removeToast(transition: boolean): void;
14
+ removeToast: (transition: boolean) => void;
15
15
  /** @see {@link ToastManager.startRemoveTimeout} */
16
- startRemoveTimeout(): void;
16
+ startRemoveTimeout: () => void;
17
17
  /** @see {@link ToastManager.pauseRemoveTimeout} */
18
- pauseRemoveTimeout(): void;
18
+ pauseRemoveTimeout: () => void;
19
19
  /** @see {@link ToastManager.resumeRemoveTimeout} */
20
- resumeRemoveTimeout(): void;
20
+ resumeRemoveTimeout: () => void;
21
21
  }
22
22
 
23
23
  const context = createContext<CurrentToastActions | null>(null);
@@ -12,14 +12,18 @@ export interface TableCellClassNameOptions {
12
12
  /**
13
13
  * Set this to `true` if the cell is rendered as a `<th>` so that the correct
14
14
  * sticky styles can be applied.
15
+ *
16
+ * @defaultValue `false`
15
17
  */
16
- header: boolean;
18
+ header?: boolean;
17
19
 
18
20
  /**
19
21
  * Set this to true if the cell is rendered in a `<thead>` so that the correct
20
22
  * sticky styles can be applied.
23
+ *
24
+ * @defaultValue `header`
21
25
  */
22
- isInTableHeader: boolean;
26
+ isInTableHeader?: boolean;
23
27
 
24
28
  /** @defaultValue `false` */
25
29
  grow?: boolean;
@@ -45,17 +49,17 @@ export interface TableCellClassNameOptions {
45
49
  /**
46
50
  * @since 6.0.0
47
51
  */
48
- export function tableCell(options: TableCellClassNameOptions): string {
52
+ export function tableCell(options: TableCellClassNameOptions = {}): string {
49
53
  const {
50
54
  grow,
51
55
  sticky,
52
56
  header,
53
57
  inputToggle,
54
- hAlign,
55
- vAlign,
58
+ hAlign = "left",
59
+ vAlign = "middle",
56
60
  lineWrap = true,
57
61
  padding = "horizontal",
58
- isInTableHeader,
62
+ isInTableHeader = header,
59
63
  className,
60
64
  } = options;
61
65
 
package/src/tabs/Tab.tsx CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  type ReactElement,
6
6
  type ReactNode,
7
7
  } from "react";
8
+ import { type ComponentWithRippleProps } from "../interaction/types.js";
8
9
  import { useElementInteraction } from "../interaction/useElementInteraction.js";
9
10
  import { useHigherContrastChildren } from "../interaction/useHigherContrastChildren.js";
10
11
  import { type CustomLinkComponent } from "../link/Link.js";
@@ -20,7 +21,7 @@ import { type TabListProps } from "./TabList.js";
20
21
  /**
21
22
  * @since 6.0.0
22
23
  */
23
- export interface BaseTabProps {
24
+ export interface BaseTabProps extends ComponentWithRippleProps {
24
25
  /**
25
26
  * Set this to `true` if the tab is currently active.
26
27
  *
@@ -126,6 +127,7 @@ export function Tab(props: TabProps): ReactElement {
126
127
  onTouchStart,
127
128
  onTouchEnd,
128
129
  onTouchMove,
130
+ disableRipple,
129
131
  ...remaining
130
132
  } = props as TabButtonProps;
131
133
  const { disabled } = props as TabButtonProps;
@@ -133,6 +135,7 @@ export function Tab(props: TabProps): ReactElement {
133
135
  const id = useEnsuredId(propId, "tab");
134
136
  const { activeDescendantId } = useKeyboardMovementContext();
135
137
  const { ripples, handlers } = useElementInteraction({
138
+ mode: disableRipple ? "none" : undefined,
136
139
  onBlur,
137
140
  onClick,
138
141
  onKeyDown,
@@ -8,13 +8,13 @@ import {
8
8
  } from "react";
9
9
  import { useAppSize } from "../media-queries/AppSizeProvider.js";
10
10
  import { KeyboardMovementProvider } from "../movement/useKeyboardMovementProvider.js";
11
+ import { type GetTabListScrollToOptions } from "./getTabListScrollToOptions.js";
11
12
  import {
12
13
  TabListScrollButton,
13
14
  type BaseTabListScrollButtonProps,
14
15
  } from "./TabListScrollButton.js";
15
16
  import { tabList, type TabsAlignment } from "./tabListStyles.js";
16
17
  import { useTabList } from "./useTabList.js";
17
- import { type GetTabListScrollToOptions } from "./utils.js";
18
18
 
19
19
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
20
20
  import { type useTabs } from "./useTabs.js";
@@ -24,7 +24,7 @@ import { type useTabs } from "./useTabs.js";
24
24
  */
25
25
  export interface TabListProps extends HTMLAttributes<HTMLDivElement> {
26
26
  activeIndex: number;
27
- setActiveIndex(nextActiveIndex: number): void;
27
+ setActiveIndex: (nextActiveIndex: number) => void;
28
28
 
29
29
  /**
30
30
  * @defaultValue `"left"`
@@ -13,14 +13,14 @@ import { type PropsWithRef } from "../types.js";
13
13
  import { useDir } from "../typography/WritingDirectionProvider.js";
14
14
  import { useIntersectionObserver } from "../useIntersectionObserver.js";
15
15
  import { applyRef } from "../utils/applyRef.js";
16
+ import {
17
+ getTabListScrollToOptions,
18
+ type GetTabListScrollToOptions,
19
+ } from "./getTabListScrollToOptions.js";
16
20
  import {
17
21
  tabListScrollButton,
18
22
  tabListScrollButtonContainer,
19
23
  } from "./tabListScrollButtonStyles.js";
20
- import {
21
- getTabListScrollToOptions,
22
- type GetTabListScrollToOptions,
23
- } from "./utils.js";
24
24
 
25
25
  /**
26
26
  * @internal
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @since 6.0.0
3
+ */
4
+ export interface TabListScrollToOptions {
5
+ isRTL: boolean;
6
+ animate: boolean;
7
+ vertical: boolean;
8
+ increment: boolean;
9
+ container: HTMLElement;
10
+ }
11
+
12
+ /**
13
+ * @since 6.0.0
14
+ */
15
+ export type GetTabListScrollToOptions = (
16
+ options: TabListScrollToOptions
17
+ ) => ScrollToOptions | undefined;
18
+
19
+ /**
20
+ * @since 6.0.0
21
+ */
22
+ export const getTabListScrollToOptions: GetTabListScrollToOptions = (
23
+ options
24
+ ) => {
25
+ const { isRTL, animate, vertical, increment, container } = options;
26
+ const { scrollLeft, scrollTop, scrollWidth, scrollHeight } = container;
27
+ const currentScroll = vertical ? scrollTop : scrollLeft;
28
+ const scrollDistance = vertical ? scrollHeight : scrollWidth;
29
+ const amount = (scrollDistance / 10) * (increment ? 1 : -1);
30
+ const distance = currentScroll + amount * (vertical || !isRTL ? 1 : -1);
31
+
32
+ return {
33
+ left: vertical ? undefined : distance,
34
+ top: vertical ? distance : undefined,
35
+ behavior: animate ? "smooth" : "auto",
36
+ };
37
+ };
@@ -9,6 +9,10 @@ declare module "react" {
9
9
  "--rmd-tab-active-color"?: string;
10
10
  "--rmd-tab-inactive-color"?: string;
11
11
  "--rmd-tab-disabled-color"?: string;
12
+
13
+ "--rmd-tab-size"?: string;
14
+ "--rmd-tab-offset"?: string | number;
15
+ "--rmd-tab-indicator-background"?: string;
12
16
  }
13
17
  }
14
18
 
@@ -18,14 +18,6 @@ import { useEnsuredRef } from "../useEnsuredRef.js";
18
18
  import { useResizeObserver } from "../useResizeObserver.js";
19
19
  import { getTabRoleOnly, scrollTabIntoView } from "./utils.js";
20
20
 
21
- declare module "react" {
22
- interface CSSProperties {
23
- "--rmd-tab-size"?: string;
24
- "--rmd-tab-offset"?: string | number;
25
- "--rmd-tab-indicator-background"?: string;
26
- }
27
- }
28
-
29
21
  const TAB_SIZE_VAR = "--rmd-tab-size";
30
22
  const TAB_OFFSET_VAR = "--rmd-tab-offset";
31
23
 
@@ -43,7 +35,7 @@ export interface TabListHookOptions {
43
35
  ref: Ref<HTMLDivElement> | undefined;
44
36
  style: CSSProperties | undefined;
45
37
  activeIndex: number;
46
- setActiveIndex(nextActiveIndex: number): void;
38
+ setActiveIndex: (nextActiveIndex: number) => void;
47
39
  scrollButtons: boolean;
48
40
  activationMode: "manual" | "automatic";
49
41
  vertical: boolean;
@@ -115,6 +107,7 @@ export function useTabList(
115
107
  // this is kind of hacky -- the styles should update when switching between
116
108
  // RTL, but the RTL state isn't required for any styles. Just reference it
117
109
  // so that the hooks eslint rule doesn't show a warning...
110
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
118
111
  isRTL;
119
112
 
120
113
  const activeTab = getTabRoleOnly(entry.target)[activeIndex];
@@ -136,11 +136,11 @@ export interface TabsImplementation<TabValue extends string | number = number> {
136
136
  direction: SlideDirection;
137
137
  setDirection: UseStateSetter<SlideDirection>;
138
138
  activeTab?: TabValue;
139
- setActiveTab?(nextActiveTab: TabValue): void;
140
- getTabProps(tabValue: TabValue): ProvidedTabProps;
141
- getTabListProps(): ProvidedTabListProps;
142
- getTabPanelProps(tabValue: TabValue): ProvidedTabPanelProps;
143
- getTabPanelsProps<E extends HTMLElement>(): ProvidedTabPanelsProps<E>;
139
+ setActiveTab?: (nextActiveTab: TabValue) => void;
140
+ getTabProps: (tabValue: TabValue) => ProvidedTabProps;
141
+ getTabListProps: () => ProvidedTabListProps;
142
+ getTabPanelProps: (tabValue: TabValue) => ProvidedTabPanelProps;
143
+ getTabPanelsProps: <E extends HTMLElement>() => ProvidedTabPanelsProps<E>;
144
144
  }
145
145
 
146
146
  /**
@@ -180,7 +180,7 @@ export interface TabsImplementation<TabValue extends string | number = number> {
180
180
  *
181
181
  * @since 6.0.0
182
182
  */
183
- export function useTabs(): TabsImplementation<number> & {
183
+ export function useTabs(): TabsImplementation & {
184
184
  activeTab: number;
185
185
  setActiveTab: number;
186
186
  };
package/src/tabs/utils.ts CHANGED
@@ -44,41 +44,3 @@ export const scrollTabIntoView = (options: ScrollOptions): void => {
44
44
  container[scrollAttribute] = elementStart - firstOffset;
45
45
  }
46
46
  };
47
-
48
- /**
49
- * @since 6.0.0
50
- */
51
- export interface TabListScrollToOptions {
52
- isRTL: boolean;
53
- animate: boolean;
54
- vertical: boolean;
55
- increment: boolean;
56
- container: HTMLElement;
57
- }
58
-
59
- /**
60
- * @since 6.0.0
61
- */
62
- export type GetTabListScrollToOptions = (
63
- options: TabListScrollToOptions
64
- ) => ScrollToOptions | undefined;
65
-
66
- /**
67
- * @since 6.0.0
68
- */
69
- export const getTabListScrollToOptions: GetTabListScrollToOptions = (
70
- options
71
- ) => {
72
- const { isRTL, animate, vertical, increment, container } = options;
73
- const { scrollLeft, scrollTop, scrollWidth, scrollHeight } = container;
74
- const currentScroll = vertical ? scrollTop : scrollLeft;
75
- const scrollDistance = vertical ? scrollHeight : scrollWidth;
76
- const amount = (scrollDistance / 10) * (increment ? 1 : -1);
77
- const distance = currentScroll + amount * (vertical || !isRTL ? 1 : -1);
78
-
79
- return {
80
- left: vertical ? undefined : distance,
81
- top: vertical ? distance : undefined,
82
- behavior: animate ? "smooth" : "auto",
83
- };
84
- };
@@ -217,14 +217,14 @@ export interface SetupResizeObserverMockOptions {
217
217
  *
218
218
  * @example Main Usage
219
219
  * ```tsx
220
- * import { useCallback, useState } from "react";
221
220
  * import {
222
221
  * cleanupResizeObserverAfterEach,
223
222
  * render,
224
223
  * screen,
225
224
  * setupResizeObserverMock,
226
225
  * } from "@react-md/core/test-utils";
227
- * import { useResizeObserver } from "@react-md/core";
226
+ * import { useResizeObserver } from "@react-md/core/useResizeObserver";
227
+ * import { useCallback, useState } from "react";
228
228
  *
229
229
  * function ExampleComponent() {
230
230
  * const [size, setSize] = useState({ height: 0, width: 0 });
@@ -234,7 +234,7 @@ export interface SetupResizeObserverMockOptions {
234
234
  * height: entry.contentRect.height,
235
235
  * width: entry.contentRect.width,
236
236
  * });
237
- * });
237
+ * }, []),
238
238
  * });
239
239
  *
240
240
  * return (
@@ -250,10 +250,10 @@ export interface SetupResizeObserverMockOptions {
250
250
  * describe("ExampleComponent", () => {
251
251
  * it("should do stuff", () => {
252
252
  * const observer = setupResizeObserverMock();
253
- * render(<ExampleComponent />)
253
+ * render(<ExampleComponent />);
254
254
  *
255
255
  * const size = screen.getByTestId("size");
256
- * const resizeTarget = screen.getByTestId("resize-target")
256
+ * const resizeTarget = screen.getByTestId("resize-target");
257
257
  *
258
258
  * // jsdom sets all element sizes to 0 by default
259
259
  * expect(size).toHaveTextContent(JSON.stringify({ height: 0, width: 0 }));
@@ -265,19 +265,18 @@ export interface SetupResizeObserverMockOptions {
265
265
  * expect(size).toHaveTextContent(JSON.stringify({ height: 100, width: 100 }));
266
266
  *
267
267
  * // or you can mock the `getBoundingClientRect` result
268
- * jest.spyOn(resizeTarget, "getBoundingClientRect")
269
- * .mockReturnValue({
270
- * ...document.body.getBoundingClientRect(),
271
- * height: 200,
272
- * width: 200,
273
- * }):
268
+ * jest.spyOn(resizeTarget, "getBoundingClientRect").mockReturnValue({
269
+ * ...document.body.getBoundingClientRect(),
270
+ * height: 200,
271
+ * width: 200,
272
+ * });
274
273
  *
275
274
  * act(() => {
276
275
  * observer.resizeElement(resizeTarget);
277
276
  * });
278
277
  * expect(size).toHaveTextContent(JSON.stringify({ height: 200, width: 200 }));
279
278
  * });
280
- * })
279
+ * });
281
280
  * ```
282
281
  *
283
282
  * @since 6.0.0
@@ -36,7 +36,7 @@ export type MatchMediaMatcher = (query: string) => boolean;
36
36
  * @returns `true` for phone media queries
37
37
  */
38
38
  export const matchPhone: MatchMediaMatcher = (query) =>
39
- query.includes(`${DEFAULT_PHONE_MAX_WIDTH}`);
39
+ query.includes(DEFAULT_PHONE_MAX_WIDTH);
40
40
 
41
41
  /**
42
42
  * @see {@link spyOnMatchMedia} for usage
@@ -44,7 +44,7 @@ export const matchPhone: MatchMediaMatcher = (query) =>
44
44
  * @returns `true` for tablet media queries
45
45
  */
46
46
  export const matchTablet: MatchMediaMatcher = (query) =>
47
- query.includes(`${DEFAULT_TABLET_MIN_WIDTH}`);
47
+ query.includes(DEFAULT_TABLET_MIN_WIDTH);
48
48
 
49
49
  /**
50
50
  * @see {@link spyOnMatchMedia} for usage
@@ -52,7 +52,7 @@ export const matchTablet: MatchMediaMatcher = (query) =>
52
52
  * @returns `true` for desktop media queries
53
53
  */
54
54
  export const matchDesktop: MatchMediaMatcher = (query) =>
55
- query.includes(`${DEFAULT_DESKTOP_MIN_WIDTH}`);
55
+ query.includes(DEFAULT_DESKTOP_MIN_WIDTH);
56
56
 
57
57
  /**
58
58
  * @see {@link spyOnMatchMedia} for usage
@@ -60,7 +60,7 @@ export const matchDesktop: MatchMediaMatcher = (query) =>
60
60
  * @returns `true` for large desktop media queries
61
61
  */
62
62
  export const matchLargeDesktop: MatchMediaMatcher = (query) =>
63
- query.includes(`${DEFAULT_DESKTOP_LARGE_MIN_WIDTH}`);
63
+ query.includes(DEFAULT_DESKTOP_LARGE_MIN_WIDTH);
64
64
 
65
65
  /**
66
66
  * @see {@link spyOnMatchMedia} for usage
@@ -101,13 +101,13 @@ export type MatchMediaSpiedFunction = jest.SpiedFunction<
101
101
  * // expect phone results
102
102
  * ```
103
103
  */
104
- changeViewport(matcher: MatchMediaMatcher, disableAct?: boolean): void;
104
+ changeViewport: (matcher: MatchMediaMatcher, disableAct?: boolean) => void;
105
105
  };
106
106
 
107
107
  /**
108
108
  * @example Default Behavior
109
109
  * ```tsx
110
- * import { matchPhone, render, spyOnMatchMedia } from "@react-md/test-utils";
110
+ * import { matchPhone, render, spyOnMatchMedia } from "@react-md/core/test-utils";
111
111
  *
112
112
  * const matchMedia = spyOnMatchMedia();
113
113
  * render(<Test />);
@@ -120,7 +120,7 @@ export type MatchMediaSpiedFunction = jest.SpiedFunction<
120
120
  *
121
121
  * @example Set Default Media
122
122
  * ```tsx
123
- * import { matchPhone, render, spyOnMatchMedia } from "@react-md/test-utils";
123
+ * import { matchPhone, render, spyOnMatchMedia } from "@react-md/core/test-utils";
124
124
  *
125
125
  * const matchMedia = spyOnMatchMedia(matchPhone);
126
126
  * render(<Test />);
@@ -1,7 +1,6 @@
1
1
  import { TextDecoder } from "node:util";
2
2
 
3
3
  if (typeof global.TextDecoder === "undefined") {
4
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
5
4
  // @ts-expect-error browser TextDecoder does not support `null` while `node:util` does
6
5
  global.TextDecoder = TextDecoder;
7
6
  }
@@ -1,13 +1,18 @@
1
1
  import { jest } from "@jest/globals";
2
2
 
3
+ /**
4
+ * @since 6.0.0
5
+ */
6
+ export type RafSpy = jest.SpiedFunction<typeof requestAnimationFrame>;
7
+
3
8
  /**
4
9
  * @example
5
10
  * ```ts
6
- * import { useImmediateRaf } from "@react-md/core/test-utils";
11
+ * import { testImmediateRaf } from "@react-md/core/test-utils";
7
12
  *
8
13
  * describe("some test suite", () => {
9
14
  * it("should test something with requestAnimationFrame", () => {
10
- * const raf = useImmediateRaf();
15
+ * const raf = testImmediateRaf();
11
16
  *
12
17
  * // do some testing with requestAnimationFrame
13
18
  *
@@ -19,7 +24,7 @@ import { jest } from "@jest/globals";
19
24
  *
20
25
  * @example Automatic Cleanup
21
26
  * ```ts
22
- * import { useImmediateRaf } from "@react-md/core/test-utils";
27
+ * import { testImmediateRaf } from "@react-md/core/test-utils";
23
28
  *
24
29
  * afterEach(() => {
25
30
  * jest.restoreAllMocks();
@@ -27,7 +32,7 @@ import { jest } from "@jest/globals";
27
32
  *
28
33
  * describe("some test suite", () => {
29
34
  * it("should test something with requestAnimationFrame", () => {
30
- * const raf = useImmediateRaf();
35
+ * const raf = testImmediateRaf();
31
36
  *
32
37
  * // do some testing with requestAnimationFrame
33
38
  * });
@@ -36,9 +41,7 @@ import { jest } from "@jest/globals";
36
41
  *
37
42
  * @since 6.0.0
38
43
  */
39
- export const useImmediateRaf = (): jest.SpiedFunction<
40
- typeof requestAnimationFrame
41
- > =>
44
+ export const testImmediateRaf = (): RafSpy =>
42
45
  jest.spyOn(window, "requestAnimationFrame").mockImplementation((cb) => {
43
46
  cb(0);
44
47
  return 0;
@@ -1,8 +1,10 @@
1
1
  "use client";
2
2
  import { type ReactElement, type ReactNode } from "react";
3
3
  import { useLocalStorage } from "../useLocalStorage.js";
4
- import { ColorSchemeProvider, type ColorSchemeMode } from "./useColorScheme.js";
4
+ import { type ColorSchemeMode } from "./types.js";
5
+ import { ColorSchemeProvider } from "./useColorScheme.js";
5
6
  import { useColorSchemeProvider } from "./useColorSchemeProvider.js";
7
+ import { isColorSchemeMode } from "./isColorScheme.js";
6
8
 
7
9
  /**
8
10
  * @since 6.0.0
@@ -115,9 +117,7 @@ export function LocalStorageColorSchemeProvider(
115
117
  key: localStorageKey,
116
118
  defaultValue: defaultColorSchemeMode,
117
119
  deserializer: (item) =>
118
- item === "light" || item === "dark" || item === "system"
119
- ? item
120
- : defaultColorSchemeMode,
120
+ isColorSchemeMode(item) ? item : defaultColorSchemeMode,
121
121
  });
122
122
 
123
123
  const value = useColorSchemeProvider({
@@ -384,9 +384,9 @@ export function ThemeProvider(props: ThemeProviderProps): ReactElement {
384
384
  // NOTE: This will not be correct the first time a new theme is lazy-loaded
385
385
  // and applied. It might be good to have a way to manually force this flow
386
386
  // again?
387
- const frame = window.requestAnimationFrame(() =>
388
- setDerivedTheme(getDerivedTheme(document.documentElement))
389
- );
387
+ const frame = window.requestAnimationFrame(() => {
388
+ setDerivedTheme(getDerivedTheme(document.documentElement));
389
+ });
390
390
 
391
391
  return () => {
392
392
  window.cancelAnimationFrame(frame);
@@ -0,0 +1,22 @@
1
+ import { type ColorSchemeMode, type ColorScheme } from "./types.js";
2
+
3
+ /**
4
+ * A type assertion helper to check if a value is a valid {@link ColorScheme}
5
+ * when it is pulled from unknown sources (like local storage).
6
+ *
7
+ * @since 6.0.0
8
+ */
9
+ export function isColorScheme(value: unknown): value is ColorScheme {
10
+ return value === "light" || value === "dark";
11
+ }
12
+
13
+ /**
14
+ * A type assertion helper to check if a value is a valid
15
+ * {@link ColorSchemeMode} when it is pulled from unknown sources (like local
16
+ * storage).
17
+ *
18
+ * @since 6.0.0
19
+ */
20
+ export function isColorSchemeMode(value: unknown): value is ColorSchemeMode {
21
+ return isColorScheme(value) || value === "system";
22
+ }