@react-md/core 6.3.3 → 6.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/dist/CoreProviders.d.ts +1 -0
  2. package/dist/CoreProviders.js.map +1 -1
  3. package/dist/_base.scss +3 -0
  4. package/dist/_core.scss +1 -0
  5. package/dist/_utils.scss +15 -7
  6. package/dist/app-bar/AppBar.js.map +1 -1
  7. package/dist/app-bar/AppBarTitle.js.map +1 -1
  8. package/dist/autocomplete/AutocompleteListboxChildren.js.map +1 -1
  9. package/dist/autocomplete/types.js.map +1 -1
  10. package/dist/autocomplete/utils.js.map +1 -1
  11. package/dist/avatar/Avatar.js.map +1 -1
  12. package/dist/box/_box.scss +20 -1
  13. package/dist/box/styles.d.ts +39 -0
  14. package/dist/box/styles.js +39 -0
  15. package/dist/box/styles.js.map +1 -1
  16. package/dist/button/Button.js.map +1 -1
  17. package/dist/button/FloatingActionButton.js.map +1 -1
  18. package/dist/card/Card.js.map +1 -1
  19. package/dist/card/CardContent.js.map +1 -1
  20. package/dist/card/ClickableCard.js.map +1 -1
  21. package/dist/chip/Chip.js.map +1 -1
  22. package/dist/datetime/NativeDateField.js.map +1 -1
  23. package/dist/datetime/NativeTimeField.js.map +1 -1
  24. package/dist/datetime/useDateField.js.map +1 -1
  25. package/dist/datetime/useTimeField.js.map +1 -1
  26. package/dist/dialog/Dialog.js.map +1 -1
  27. package/dist/dialog/DialogContainer.js.map +1 -1
  28. package/dist/dialog/DialogContent.js.map +1 -1
  29. package/dist/dialog/DialogFooter.js.map +1 -1
  30. package/dist/divider/Divider.js.map +1 -1
  31. package/dist/draggable/useDraggable.js.map +1 -1
  32. package/dist/draggable/utils.js.map +1 -1
  33. package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
  34. package/dist/files/FileInput.js.map +1 -1
  35. package/dist/files/useFileUpload.js.map +1 -1
  36. package/dist/files/validation.js.map +1 -1
  37. package/dist/focus/useFocusContainer.js.map +1 -1
  38. package/dist/form/Fieldset.d.ts +19 -0
  39. package/dist/form/Fieldset.js +22 -2
  40. package/dist/form/Fieldset.js.map +1 -1
  41. package/dist/form/FormMessageContainer.js.map +1 -1
  42. package/dist/form/FormMessageCounter.js.map +1 -1
  43. package/dist/form/InputToggle.js.map +1 -1
  44. package/dist/form/Legend.d.ts +27 -5
  45. package/dist/form/Legend.js +39 -6
  46. package/dist/form/Legend.js.map +1 -1
  47. package/dist/form/Listbox.js.map +1 -1
  48. package/dist/form/ListboxProvider.js.map +1 -1
  49. package/dist/form/NativeSelect.js.map +1 -1
  50. package/dist/form/Password.js.map +1 -1
  51. package/dist/form/ResizingTextAreaWrapper.js.map +1 -1
  52. package/dist/form/Select.js.map +1 -1
  53. package/dist/form/Slider.js.map +1 -1
  54. package/dist/form/SliderContainer.js.map +1 -1
  55. package/dist/form/SliderThumb.js.map +1 -1
  56. package/dist/form/SliderTrack.js.map +1 -1
  57. package/dist/form/SliderValueMarks.js.map +1 -1
  58. package/dist/form/Switch.js.map +1 -1
  59. package/dist/form/TextArea.js.map +1 -1
  60. package/dist/form/TextField.js.map +1 -1
  61. package/dist/form/TextFieldContainer.js.map +1 -1
  62. package/dist/form/_fieldset.scss +7 -0
  63. package/dist/form/_legend.scss +68 -0
  64. package/dist/form/_text-field.scss +39 -4
  65. package/dist/form/fieldsetStyles.d.ts +6 -1
  66. package/dist/form/fieldsetStyles.js +3 -2
  67. package/dist/form/fieldsetStyles.js.map +1 -1
  68. package/dist/form/inputToggleStyles.js.map +1 -1
  69. package/dist/form/labelStyles.d.ts +1 -1
  70. package/dist/form/labelStyles.js +1 -1
  71. package/dist/form/labelStyles.js.map +1 -1
  72. package/dist/form/legendStyles.d.ts +83 -0
  73. package/dist/form/legendStyles.js +25 -0
  74. package/dist/form/legendStyles.js.map +1 -0
  75. package/dist/form/selectUtils.js.map +1 -1
  76. package/dist/form/textFieldContainerStyles.js.map +1 -1
  77. package/dist/form/types.d.ts +28 -6
  78. package/dist/form/types.js.map +1 -1
  79. package/dist/form/useCheckboxGroup.js.map +1 -1
  80. package/dist/form/useCombobox.js.map +1 -1
  81. package/dist/form/useNumberField.js +16 -19
  82. package/dist/form/useNumberField.js.map +1 -1
  83. package/dist/form/useRangeSlider.js.map +1 -1
  84. package/dist/form/useSlider.js.map +1 -1
  85. package/dist/form/useTextField.d.ts +1 -1
  86. package/dist/form/useTextField.js.map +1 -1
  87. package/dist/hoverMode/useHoverMode.js.map +1 -1
  88. package/dist/icon/FontIcon.js.map +1 -1
  89. package/dist/icon/IconRotator.js.map +1 -1
  90. package/dist/icon/MaterialIcon.js.map +1 -1
  91. package/dist/icon/MaterialSymbol.js.map +1 -1
  92. package/dist/icon/SVGIcon.js.map +1 -1
  93. package/dist/icon/config.d.ts +0 -1
  94. package/dist/icon/config.js +10 -7
  95. package/dist/icon/config.js.map +1 -1
  96. package/dist/icon/materialConfig.js.map +1 -1
  97. package/dist/icon/styles.js.map +1 -1
  98. package/dist/interaction/UserInteractionModeProvider.js +6 -4
  99. package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
  100. package/dist/interaction/types.js.map +1 -1
  101. package/dist/interaction/useElementInteraction.js.map +1 -1
  102. package/dist/layout/LayoutAppBar.d.ts +6 -6
  103. package/dist/layout/LayoutAppBar.js +6 -6
  104. package/dist/layout/LayoutAppBar.js.map +1 -1
  105. package/dist/layout/LayoutNav.js.map +1 -1
  106. package/dist/layout/LayoutWindowSplitter.js.map +1 -1
  107. package/dist/layout/Main.js.map +1 -1
  108. package/dist/layout/useExpandableLayout.js +43 -0
  109. package/dist/layout/useExpandableLayout.js.map +1 -1
  110. package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
  111. package/dist/layout/useLayoutTree.js.map +1 -1
  112. package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
  113. package/dist/layout/useResizableLayout.js.map +1 -1
  114. package/dist/link/Link.js.map +1 -1
  115. package/dist/link/SkipToMainContent.js +19 -21
  116. package/dist/link/SkipToMainContent.js.map +1 -1
  117. package/dist/list/List.js.map +1 -1
  118. package/dist/list/ListItem.js.map +1 -1
  119. package/dist/list/ListItemAddon.js.map +1 -1
  120. package/dist/list/ListItemLink.js.map +1 -1
  121. package/dist/list/ListSubheader.js.map +1 -1
  122. package/dist/list/getListItemHeight.js.map +1 -1
  123. package/dist/list/listItemStyles.js.map +1 -1
  124. package/dist/list/types.js.map +1 -1
  125. package/dist/media-queries/AppSizeProvider.d.ts +2 -0
  126. package/dist/media-queries/AppSizeProvider.js +3 -2
  127. package/dist/media-queries/AppSizeProvider.js.map +1 -1
  128. package/dist/media-queries/appSize.d.ts +3 -0
  129. package/dist/media-queries/appSize.js +3 -1
  130. package/dist/media-queries/appSize.js.map +1 -1
  131. package/dist/media-queries/config.d.ts +11 -0
  132. package/dist/media-queries/config.js +26 -0
  133. package/dist/media-queries/config.js.map +1 -0
  134. package/dist/menu/DropdownMenu.js.map +1 -1
  135. package/dist/menu/Menu.js.map +1 -1
  136. package/dist/menu/MenuItemButton.js.map +1 -1
  137. package/dist/menu/MenuItemFileInput.js.map +1 -1
  138. package/dist/menu/MenuItemInputToggle.js.map +1 -1
  139. package/dist/menu/MenuItemSeparator.js.map +1 -1
  140. package/dist/menu/MenuVisibilityProvider.js.map +1 -1
  141. package/dist/menu/MenuWidget.js.map +1 -1
  142. package/dist/menu/useContextMenu.js.map +1 -1
  143. package/dist/movement/types.d.ts +28 -3
  144. package/dist/movement/types.js.map +1 -1
  145. package/dist/movement/useKeyboardMovementProvider.js +96 -47
  146. package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
  147. package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
  148. package/dist/navigation/NavItem.js.map +1 -1
  149. package/dist/navigation/NavItemButton.js.map +1 -1
  150. package/dist/navigation/NavItemLink.js.map +1 -1
  151. package/dist/navigation/getTableOfContentsHeadings.js.map +1 -1
  152. package/dist/navigation/types.js.map +1 -1
  153. package/dist/overlay/Overlay.js.map +1 -1
  154. package/dist/positioning/createHorizontalPosition.js.map +1 -1
  155. package/dist/positioning/createVerticalPosition.js.map +1 -1
  156. package/dist/positioning/useFixedPositioning.js.map +1 -1
  157. package/dist/progress/CircularProgress.js.map +1 -1
  158. package/dist/progress/LinearProgress.js.map +1 -1
  159. package/dist/progress/linearProgressStyles.js.map +1 -1
  160. package/dist/responsive-item/ResponsiveItem.js.map +1 -1
  161. package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
  162. package/dist/searching/caseInsensitive.js.map +1 -1
  163. package/dist/segmented-button/SegmentedButton.js.map +1 -1
  164. package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
  165. package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
  166. package/dist/sheet/Sheet.js.map +1 -1
  167. package/dist/snackbar/Toast.js.map +1 -1
  168. package/dist/spinbutton/SpinButton.d.ts +16 -0
  169. package/dist/spinbutton/SpinButton.js +55 -0
  170. package/dist/spinbutton/SpinButton.js.map +1 -0
  171. package/dist/spinbutton/SpinButtonGroupProvider.d.ts +17 -0
  172. package/dist/spinbutton/SpinButtonGroupProvider.js +19 -0
  173. package/dist/spinbutton/SpinButtonGroupProvider.js.map +1 -0
  174. package/dist/spinbutton/defaults.d.ts +9 -0
  175. package/dist/spinbutton/defaults.js +25 -0
  176. package/dist/spinbutton/defaults.js.map +1 -0
  177. package/dist/spinbutton/types.d.ts +324 -0
  178. package/dist/spinbutton/types.js +5 -0
  179. package/dist/spinbutton/types.js.map +1 -0
  180. package/dist/spinbutton/useSpinButton.d.ts +5 -0
  181. package/dist/spinbutton/useSpinButton.js +260 -0
  182. package/dist/spinbutton/useSpinButton.js.map +1 -0
  183. package/dist/spinbutton/useSpinButtonGroupProvider.d.ts +27 -0
  184. package/dist/spinbutton/useSpinButtonGroupProvider.js +49 -0
  185. package/dist/spinbutton/useSpinButtonGroupProvider.js.map +1 -0
  186. package/dist/spinbutton/utils/deselectNode.d.ts +5 -0
  187. package/dist/spinbutton/utils/deselectNode.js +17 -0
  188. package/dist/spinbutton/utils/deselectNode.js.map +1 -0
  189. package/dist/spinbutton/utils/resolveInputEvent.d.ts +30 -0
  190. package/dist/spinbutton/utils/resolveInputEvent.js +53 -0
  191. package/dist/spinbutton/utils/resolveInputEvent.js.map +1 -0
  192. package/dist/spinbutton/utils/selectNode.d.ts +5 -0
  193. package/dist/spinbutton/utils/selectNode.js +15 -0
  194. package/dist/spinbutton/utils/selectNode.js.map +1 -0
  195. package/dist/table/StickyTableSection.js.map +1 -1
  196. package/dist/table/Table.js.map +1 -1
  197. package/dist/table/TableBody.js.map +1 -1
  198. package/dist/table/TableCellContent.js.map +1 -1
  199. package/dist/table/TableCheckbox.js.map +1 -1
  200. package/dist/table/TableFooter.js.map +1 -1
  201. package/dist/table/TableHeader.js.map +1 -1
  202. package/dist/table/TableRadio.js.map +1 -1
  203. package/dist/table/TableRow.js.map +1 -1
  204. package/dist/table/useStickyTableSection.js.map +1 -1
  205. package/dist/tabs/SimpleTabPanel.js.map +1 -1
  206. package/dist/tabs/SimpleTabPanels.js.map +1 -1
  207. package/dist/tabs/Tab.js.map +1 -1
  208. package/dist/tabs/TabList.js.map +1 -1
  209. package/dist/tabs/TabListScrollButton.js.map +1 -1
  210. package/dist/tabs/useMaxTabPanelHeight.js.map +1 -1
  211. package/dist/test-utils/data-testid.js.map +1 -1
  212. package/dist/test-utils/mocks/match-media.js +5 -5
  213. package/dist/test-utils/mocks/match-media.js.map +1 -1
  214. package/dist/test-utils/vitest/timers.d.ts +1 -1
  215. package/dist/test-utils/vitest/timers.js +1 -1
  216. package/dist/test-utils/vitest/timers.js.map +1 -1
  217. package/dist/tooltip/Tooltip.js.map +1 -1
  218. package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
  219. package/dist/tooltip/useTooltip.js.map +1 -1
  220. package/dist/transition/CSSTransition.js.map +1 -1
  221. package/dist/transition/Collapse.js.map +1 -1
  222. package/dist/transition/CrossFade.js.map +1 -1
  223. package/dist/transition/ScaleTransition.js.map +1 -1
  224. package/dist/transition/SkeletonPlaceholder.js.map +1 -1
  225. package/dist/transition/Slide.js.map +1 -1
  226. package/dist/transition/SlideContainer.js.map +1 -1
  227. package/dist/transition/types.js.map +1 -1
  228. package/dist/transition/useCollapseTransition.js.map +1 -1
  229. package/dist/transition/useCrossFadeTransition.js.map +1 -1
  230. package/dist/transition/useMaxWidthTransition.js.map +1 -1
  231. package/dist/transition/useScaleTransition.js.map +1 -1
  232. package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
  233. package/dist/tree/Tree.js.map +1 -1
  234. package/dist/tree/TreeItem.js.map +1 -1
  235. package/dist/tree/TreeProvider.js.map +1 -1
  236. package/dist/tree/styles.js.map +1 -1
  237. package/dist/tree/types.js.map +1 -1
  238. package/dist/tree/useTreeMovement.js.map +1 -1
  239. package/dist/typography/HighlightTextMark.js.map +1 -1
  240. package/dist/typography/Mark.js.map +1 -1
  241. package/dist/typography/TextContainer.js.map +1 -1
  242. package/dist/typography/Typography.js.map +1 -1
  243. package/dist/typography/_typography.scss +0 -1
  244. package/dist/useElementSize.js.map +1 -1
  245. package/dist/useIntersectionObserver.js.map +1 -1
  246. package/dist/useMutationObserver.js.map +1 -1
  247. package/dist/useWindowSize.js.map +1 -1
  248. package/dist/utils/getNumberOfDigits.d.ts +7 -0
  249. package/dist/utils/getNumberOfDigits.js +11 -0
  250. package/dist/utils/getNumberOfDigits.js.map +1 -0
  251. package/dist/utils/nearest.js +2 -1
  252. package/dist/utils/nearest.js.map +1 -1
  253. package/dist/utils/useDevEffect.d.ts +7 -0
  254. package/dist/utils/useDevEffect.js +8 -0
  255. package/dist/utils/useDevEffect.js.map +1 -0
  256. package/dist/window-splitter/WindowSplitter.js +3 -2
  257. package/dist/window-splitter/WindowSplitter.js.map +1 -1
  258. package/dist/window-splitter/_window-splitter.scss +60 -12
  259. package/dist/window-splitter/styles.d.ts +9 -0
  260. package/dist/window-splitter/styles.js +3 -2
  261. package/dist/window-splitter/styles.js.map +1 -1
  262. package/dist/window-splitter/useWindowSplitter.js.map +1 -1
  263. package/package.json +38 -30
  264. package/src/CoreProviders.tsx +1 -0
  265. package/src/app-bar/AppBar.tsx +1 -2
  266. package/src/app-bar/AppBarTitle.tsx +1 -2
  267. package/src/autocomplete/AutocompleteListboxChildren.tsx +3 -1
  268. package/src/autocomplete/types.ts +24 -19
  269. package/src/autocomplete/utils.ts +9 -6
  270. package/src/avatar/Avatar.tsx +2 -1
  271. package/src/box/styles.ts +39 -0
  272. package/src/button/Button.tsx +2 -1
  273. package/src/button/FloatingActionButton.tsx +2 -1
  274. package/src/card/Card.tsx +2 -1
  275. package/src/card/CardContent.tsx +1 -2
  276. package/src/card/ClickableCard.tsx +1 -2
  277. package/src/chip/Chip.tsx +2 -1
  278. package/src/datetime/NativeDateField.tsx +2 -1
  279. package/src/datetime/NativeTimeField.tsx +2 -1
  280. package/src/datetime/useDateField.ts +13 -8
  281. package/src/datetime/useTimeField.ts +13 -8
  282. package/src/dialog/Dialog.tsx +2 -1
  283. package/src/dialog/DialogContainer.tsx +1 -2
  284. package/src/dialog/DialogContent.tsx +1 -2
  285. package/src/dialog/DialogFooter.tsx +1 -2
  286. package/src/divider/Divider.tsx +1 -2
  287. package/src/draggable/useDraggable.ts +4 -4
  288. package/src/draggable/utils.ts +4 -2
  289. package/src/expansion-panel/ExpansionPanelHeader.tsx +1 -2
  290. package/src/files/FileInput.tsx +2 -1
  291. package/src/files/useFileUpload.ts +6 -6
  292. package/src/files/validation.ts +1 -2
  293. package/src/focus/useFocusContainer.ts +4 -4
  294. package/src/form/Fieldset.tsx +25 -3
  295. package/src/form/FormMessageContainer.tsx +1 -2
  296. package/src/form/FormMessageCounter.tsx +1 -2
  297. package/src/form/InputToggle.tsx +3 -3
  298. package/src/form/Legend.tsx +55 -10
  299. package/src/form/Listbox.tsx +1 -2
  300. package/src/form/ListboxProvider.ts +3 -2
  301. package/src/form/NativeSelect.tsx +2 -1
  302. package/src/form/Password.tsx +4 -2
  303. package/src/form/ResizingTextAreaWrapper.tsx +1 -2
  304. package/src/form/Select.tsx +2 -1
  305. package/src/form/Slider.tsx +2 -1
  306. package/src/form/SliderContainer.tsx +1 -2
  307. package/src/form/SliderThumb.tsx +6 -3
  308. package/src/form/SliderTrack.tsx +2 -1
  309. package/src/form/SliderValueMarks.tsx +1 -2
  310. package/src/form/Switch.tsx +2 -1
  311. package/src/form/TextArea.tsx +1 -2
  312. package/src/form/TextField.tsx +2 -1
  313. package/src/form/TextFieldContainer.tsx +1 -2
  314. package/src/form/fieldsetStyles.ts +18 -3
  315. package/src/form/inputToggleStyles.ts +4 -2
  316. package/src/form/labelStyles.ts +1 -1
  317. package/src/form/legendStyles.ts +132 -0
  318. package/src/form/selectUtils.ts +3 -2
  319. package/src/form/textFieldContainerStyles.ts +1 -2
  320. package/src/form/types.ts +35 -17
  321. package/src/form/useCheckboxGroup.ts +3 -2
  322. package/src/form/useCombobox.ts +8 -3
  323. package/src/form/useNumberField.ts +36 -35
  324. package/src/form/useRangeSlider.ts +1 -2
  325. package/src/form/useSlider.ts +1 -2
  326. package/src/form/useTextField.ts +9 -4
  327. package/src/hoverMode/useHoverMode.ts +4 -8
  328. package/src/icon/FontIcon.tsx +1 -2
  329. package/src/icon/IconRotator.tsx +1 -2
  330. package/src/icon/MaterialIcon.tsx +2 -1
  331. package/src/icon/MaterialSymbol.tsx +2 -1
  332. package/src/icon/SVGIcon.tsx +1 -2
  333. package/src/icon/config.tsx +10 -7
  334. package/src/icon/materialConfig.ts +1 -2
  335. package/src/icon/styles.ts +1 -2
  336. package/src/interaction/UserInteractionModeProvider.tsx +9 -4
  337. package/src/interaction/types.ts +1 -2
  338. package/src/interaction/useElementInteraction.tsx +3 -2
  339. package/src/layout/LayoutAppBar.tsx +6 -6
  340. package/src/layout/LayoutNav.tsx +2 -1
  341. package/src/layout/LayoutWindowSplitter.tsx +2 -1
  342. package/src/layout/Main.tsx +1 -2
  343. package/src/layout/useExpandableLayout.ts +63 -5
  344. package/src/layout/useHorizontalLayoutTransition.ts +1 -2
  345. package/src/layout/useLayoutTree.ts +2 -2
  346. package/src/layout/useLayoutWindowSplitter.ts +6 -6
  347. package/src/layout/useResizableLayout.ts +3 -6
  348. package/src/link/Link.tsx +1 -2
  349. package/src/link/SkipToMainContent.tsx +20 -23
  350. package/src/list/List.tsx +1 -2
  351. package/src/list/ListItem.tsx +2 -1
  352. package/src/list/ListItemAddon.tsx +2 -1
  353. package/src/list/ListItemLink.tsx +2 -1
  354. package/src/list/ListSubheader.tsx +1 -2
  355. package/src/list/getListItemHeight.ts +8 -9
  356. package/src/list/listItemStyles.ts +1 -2
  357. package/src/list/types.ts +1 -2
  358. package/src/media-queries/AppSizeProvider.tsx +8 -10
  359. package/src/media-queries/appSize.ts +3 -0
  360. package/src/media-queries/config.ts +41 -0
  361. package/src/menu/DropdownMenu.tsx +4 -5
  362. package/src/menu/Menu.tsx +2 -1
  363. package/src/menu/MenuItemButton.tsx +1 -2
  364. package/src/menu/MenuItemFileInput.tsx +2 -1
  365. package/src/menu/MenuItemInputToggle.tsx +3 -3
  366. package/src/menu/MenuItemSeparator.tsx +2 -1
  367. package/src/menu/MenuVisibilityProvider.tsx +4 -2
  368. package/src/menu/MenuWidget.tsx +1 -2
  369. package/src/menu/useContextMenu.ts +4 -2
  370. package/src/movement/types.ts +52 -13
  371. package/src/movement/useKeyboardMovementProvider.ts +77 -38
  372. package/src/navigation/CollapsibleNavGroup.tsx +1 -2
  373. package/src/navigation/NavItem.tsx +1 -2
  374. package/src/navigation/NavItemButton.tsx +2 -1
  375. package/src/navigation/NavItemLink.tsx +2 -1
  376. package/src/navigation/getTableOfContentsHeadings.ts +1 -2
  377. package/src/navigation/types.ts +1 -2
  378. package/src/overlay/Overlay.tsx +2 -1
  379. package/src/positioning/createHorizontalPosition.ts +10 -12
  380. package/src/positioning/createVerticalPosition.ts +10 -11
  381. package/src/positioning/useFixedPositioning.ts +6 -3
  382. package/src/progress/CircularProgress.tsx +2 -1
  383. package/src/progress/LinearProgress.tsx +2 -1
  384. package/src/progress/linearProgressStyles.ts +1 -2
  385. package/src/responsive-item/ResponsiveItem.tsx +1 -2
  386. package/src/responsive-item/ResponsiveItemOverlay.tsx +2 -1
  387. package/src/searching/caseInsensitive.ts +2 -4
  388. package/src/segmented-button/SegmentedButton.tsx +2 -1
  389. package/src/segmented-button/SegmentedButtonContainer.tsx +2 -1
  390. package/src/segmented-button/segmentedButtonStyles.ts +1 -2
  391. package/src/sheet/Sheet.tsx +1 -2
  392. package/src/snackbar/Toast.tsx +2 -1
  393. package/src/spinbutton/SpinButton.tsx +98 -0
  394. package/src/spinbutton/SpinButtonGroupProvider.tsx +32 -0
  395. package/src/spinbutton/defaults.ts +45 -0
  396. package/src/spinbutton/types.ts +413 -0
  397. package/src/spinbutton/useSpinButton.ts +311 -0
  398. package/src/spinbutton/useSpinButtonGroupProvider.ts +104 -0
  399. package/src/spinbutton/utils/deselectNode.ts +17 -0
  400. package/src/spinbutton/utils/resolveInputEvent.ts +112 -0
  401. package/src/spinbutton/utils/selectNode.ts +15 -0
  402. package/src/table/StickyTableSection.tsx +2 -1
  403. package/src/table/Table.tsx +1 -2
  404. package/src/table/TableBody.tsx +2 -1
  405. package/src/table/TableCellContent.tsx +1 -2
  406. package/src/table/TableCheckbox.tsx +1 -2
  407. package/src/table/TableFooter.tsx +1 -2
  408. package/src/table/TableHeader.tsx +1 -2
  409. package/src/table/TableRadio.tsx +1 -2
  410. package/src/table/TableRow.tsx +1 -2
  411. package/src/table/useStickyTableSection.tsx +1 -2
  412. package/src/tabs/SimpleTabPanel.tsx +2 -1
  413. package/src/tabs/SimpleTabPanels.tsx +2 -1
  414. package/src/tabs/Tab.tsx +3 -6
  415. package/src/tabs/TabList.tsx +2 -1
  416. package/src/tabs/TabListScrollButton.tsx +1 -2
  417. package/src/tabs/useMaxTabPanelHeight.ts +7 -4
  418. package/src/test-utils/data-testid.ts +1 -2
  419. package/src/test-utils/mocks/match-media.ts +5 -10
  420. package/src/test-utils/vitest/timers.ts +1 -1
  421. package/src/tooltip/Tooltip.tsx +2 -1
  422. package/src/tooltip/TooltipHoverModeProvider.tsx +1 -2
  423. package/src/tooltip/useTooltip.ts +9 -5
  424. package/src/transition/CSSTransition.tsx +2 -1
  425. package/src/transition/Collapse.tsx +4 -2
  426. package/src/transition/CrossFade.tsx +2 -1
  427. package/src/transition/ScaleTransition.tsx +2 -1
  428. package/src/transition/SkeletonPlaceholder.tsx +1 -2
  429. package/src/transition/Slide.tsx +2 -1
  430. package/src/transition/SlideContainer.tsx +1 -2
  431. package/src/transition/types.ts +15 -16
  432. package/src/transition/useCollapseTransition.ts +6 -5
  433. package/src/transition/useCrossFadeTransition.ts +3 -2
  434. package/src/transition/useMaxWidthTransition.ts +1 -2
  435. package/src/transition/useScaleTransition.ts +3 -2
  436. package/src/transition/useSkeletonPlaceholder.ts +1 -2
  437. package/src/tree/Tree.tsx +2 -1
  438. package/src/tree/TreeItem.tsx +2 -1
  439. package/src/tree/TreeProvider.tsx +4 -4
  440. package/src/tree/styles.ts +1 -2
  441. package/src/tree/types.ts +1 -2
  442. package/src/tree/useTreeMovement.ts +1 -2
  443. package/src/typography/HighlightTextMark.tsx +1 -2
  444. package/src/typography/Mark.tsx +1 -2
  445. package/src/typography/TextContainer.tsx +1 -2
  446. package/src/typography/Typography.tsx +1 -2
  447. package/src/useElementSize.ts +7 -4
  448. package/src/useIntersectionObserver.ts +3 -2
  449. package/src/useMutationObserver.ts +3 -2
  450. package/src/useWindowSize.ts +4 -2
  451. package/src/utils/getNumberOfDigits.ts +18 -0
  452. package/src/utils/nearest.ts +2 -1
  453. package/src/utils/useDevEffect.ts +9 -0
  454. package/src/window-splitter/WindowSplitter.tsx +5 -2
  455. package/src/window-splitter/styles.ts +13 -2
  456. package/src/window-splitter/useWindowSplitter.ts +3 -1
@@ -43,6 +43,8 @@ export function useUserInteractionMode(): UserInteractionMode {
43
43
  /** @internal */
44
44
  const TOUCH_TIMEOUT = 1200;
45
45
 
46
+ const DATE_NOW = (): number => Date.now();
47
+
46
48
  export interface UserInteractionModeProviderProps {
47
49
  children: ReactNode;
48
50
  }
@@ -84,7 +86,10 @@ export interface UserInteractionModeProviderProps {
84
86
  export function UserInteractionModeProvider(
85
87
  props: UserInteractionModeProviderProps
86
88
  ): ReactElement {
87
- const { children } = props;
89
+ const { children, now = DATE_NOW } =
90
+ props as UserInteractionModeProviderProps & {
91
+ now?: () => number;
92
+ };
88
93
  const { __root } = useContext(context);
89
94
  if (__root) {
90
95
  throw new Error(
@@ -145,7 +150,7 @@ export function UserInteractionModeProvider(
145
150
  };
146
151
 
147
152
  const handleTouchStart = (): void => {
148
- lastTouchTime.current = Date.now();
153
+ lastTouchTime.current = now();
149
154
  isTouchContextMenu.current = false;
150
155
  setMode("touch");
151
156
  };
@@ -153,7 +158,7 @@ export function UserInteractionModeProvider(
153
158
  const handleMouseMove = (): void => {
154
159
  if (
155
160
  isTouchContextMenu.current ||
156
- Date.now() - lastTouchTime.current < TOUCH_TIMEOUT
161
+ now() - lastTouchTime.current < TOUCH_TIMEOUT
157
162
  ) {
158
163
  isTouchContextMenu.current = false;
159
164
  return;
@@ -189,7 +194,7 @@ export function UserInteractionModeProvider(
189
194
  window.removeEventListener("contextmenu", handleContextMenu, true);
190
195
  }
191
196
  };
192
- }, [mode]);
197
+ }, [mode, now]);
193
198
 
194
199
  const value = useMemo<UserInteractionModeContext>(
195
200
  () => ({
@@ -187,8 +187,7 @@ export interface RippleTransitionCallbacks {
187
187
  * @since 6.0.0
188
188
  * @internal
189
189
  */
190
- export interface ProvidedRippleContainerProps
191
- extends RippleTransitionCallbacks {
190
+ export interface ProvidedRippleContainerProps extends RippleTransitionCallbacks {
192
191
  ripples: RippleStateList;
193
192
  }
194
193
 
@@ -34,8 +34,9 @@ declare module "react" {
34
34
  export const PRESSED_CLASS_NAME = "rmd-pressed";
35
35
 
36
36
  /** @since 6.0.0 */
37
- export interface ElementInteractionOptions<E extends HTMLElement>
38
- extends Partial<ElementInteractionHandlers<E>> {
37
+ export interface ElementInteractionOptions<
38
+ E extends HTMLElement,
39
+ > extends Partial<ElementInteractionHandlers<E>> {
39
40
  /**
40
41
  * This can be used to override the {@link INTERACTION_CONFIG.mode}
41
42
  *
@@ -42,21 +42,21 @@ export interface LayoutAppBarProps extends AppBarProps {
42
42
  *
43
43
  * @example Static Height
44
44
  * ```scss
45
- * @use "everything";
45
+ * @use "everything" as *;
46
46
  *
47
47
  * :root {
48
- * @include everything.layout-set-var(header-height, everything.$app-bar-height);
48
+ * @include layout-set-var(header-height, $app-bar-height);
49
49
  * }
50
50
  * ```
51
51
  *
52
52
  * @example Media Query Height Changes
53
53
  * ```scss
54
- * @use "everything";
54
+ * @use "everything" as *;
55
55
  *
56
56
  * :root {
57
- * @include everything.layout-set-var(header-height, everything.$app-bar-height);
58
- * @include everything.tablet-media {
59
- * @include everything.layout-set-var(header-height, everything.$app-bar-dense-height);
57
+ * @include layout-set-var(header-height, $app-bar-height);
58
+ * @include tablet-media {
59
+ * @include layout-set-var(header-height, $app-bar-dense-height);
60
60
  * }
61
61
  * }
62
62
  * ```
@@ -22,7 +22,8 @@ import { layoutNav } from "./layoutNavStyles.js";
22
22
  * @since 6.0.0
23
23
  */
24
24
  export interface LayoutNavProps
25
- extends HTMLAttributes<HTMLDivElement>,
25
+ extends
26
+ HTMLAttributes<HTMLDivElement>,
26
27
  BaseSheetClassNameOptions,
27
28
  TransitionCallbacks,
28
29
  TransitionActions {
@@ -18,7 +18,8 @@ import {
18
18
  * @since 6.0.0
19
19
  */
20
20
  export interface LayoutWindowSplitterProps
21
- extends WindowSplitterWidgetProps<HTMLButtonElement>,
21
+ extends
22
+ WindowSplitterWidgetProps<HTMLButtonElement>,
22
23
  Omit<
23
24
  BaseWindowSplitterProps,
24
25
  keyof WindowSplitterWidgetProps<HTMLButtonElement>
@@ -27,8 +27,7 @@ export type CustomMainElement = ElementType<
27
27
  * @since 6.0.0
28
28
  */
29
29
  export interface MainProps
30
- extends HTMLAttributes<HTMLElement>,
31
- MainClassNameOptions {
30
+ extends HTMLAttributes<HTMLElement>, MainClassNameOptions {
32
31
  /**
33
32
  * @defaultValue `"main"`
34
33
  */
@@ -6,10 +6,12 @@ import { useSsr } from "../SsrProvider.js";
6
6
  import { useAppSize } from "../media-queries/AppSizeProvider.js";
7
7
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
8
8
  import { type AppSize } from "../media-queries/appSize.js";
9
+ import { MEDIA_QUERY_CONFIG } from "../media-queries/config.js";
9
10
  import { useMediaQuery } from "../media-queries/useMediaQuery.js";
10
11
  import { type CSSTransitionElementProps } from "../transition/types.js";
11
12
  import { type CssPosition, type UseStateInitializer } from "../types.js";
12
13
  import { useToggle } from "../useToggle.js";
14
+ import { useDevEffect } from "../utils/useDevEffect.js";
13
15
  import { type LayoutNavProps } from "./LayoutNav.js";
14
16
  import {
15
17
  type HorizontalLayoutTransitionOptions,
@@ -26,6 +28,8 @@ import {
26
28
  useTemporaryLayout,
27
29
  } from "./useTemporaryLayout.js";
28
30
 
31
+ let loggedOnce = false;
32
+
29
33
  /**
30
34
  * @since 6.0.0
31
35
  */
@@ -78,7 +82,8 @@ export interface ExpandableLayoutOptions extends TemporaryLayoutOptions {
78
82
  * @since 6.0.0
79
83
  */
80
84
  export interface ProvidedLayoutMainProps
81
- extends ProvidedTemporaryLayoutMainProps,
85
+ extends
86
+ ProvidedTemporaryLayoutMainProps,
82
87
  CSSTransitionElementProps<HTMLElement> {}
83
88
 
84
89
  /**
@@ -98,16 +103,14 @@ export type ProvidedLayoutAppBarProps = ProvidedTemporaryLayoutAppBarProps &
98
103
  /**
99
104
  * @since 6.0.0
100
105
  */
101
- export interface ProvidedExpandableLayoutNavToggleProps
102
- extends ProvidedLayoutNavToggleProps {
106
+ export interface ProvidedExpandableLayoutNavToggleProps extends ProvidedLayoutNavToggleProps {
103
107
  className: string;
104
108
  }
105
109
 
106
110
  /**
107
111
  * @since 6.0.0
108
112
  */
109
- export interface ExpandableLayoutImplementation
110
- extends TemporaryLayoutImplementation {
113
+ export interface ExpandableLayoutImplementation extends TemporaryLayoutImplementation {
111
114
  temporary: boolean;
112
115
  persistent: boolean;
113
116
  expanded: boolean;
@@ -264,6 +267,61 @@ export function useExpandableLayout(
264
267
  ? isPhone || (temporaryUntil === "desktop" && !isDesktop)
265
268
  : !matches;
266
269
 
270
+ useDevEffect(() => {
271
+ if (process.env.NODE_ENV === "test") {
272
+ return;
273
+ }
274
+
275
+ let query: string;
276
+ if (temporaryUntil === "tablet" || temporaryUntil === "desktop") {
277
+ const minWidth =
278
+ temporaryUntil === "tablet"
279
+ ? MEDIA_QUERY_CONFIG.tabletMinWidth
280
+ : MEDIA_QUERY_CONFIG.desktopMinWidth;
281
+ query = `screen and (min-width: ${minWidth})`;
282
+ } else {
283
+ query = temporaryUntil;
284
+ }
285
+
286
+ const timeout = window.setTimeout(() => {
287
+ let found = false;
288
+ for (let i = 0; i < document.styleSheets.length; i++) {
289
+ const sheet = document.styleSheets[i];
290
+
291
+ try {
292
+ const rules = sheet.cssRules;
293
+ for (let j = 0; j < rules.length; j++) {
294
+ const rule = rules[j];
295
+ if (
296
+ rule.cssText.includes(".rmd-layout") &&
297
+ rule.cssText.includes(`@media ${query}`)
298
+ ) {
299
+ found = true;
300
+ return;
301
+ }
302
+ }
303
+ } catch {
304
+ //
305
+ }
306
+ }
307
+
308
+ if (!found && !loggedOnce) {
309
+ loggedOnce = true;
310
+ // eslint-disable-next-line no-console
311
+ console.error(
312
+ `The react-md expandable layout has set \`temporaryUntil: "${temporaryUntil}"\` but the corresponding styles have not been found.` +
313
+ " This usually means the `$layout-navigation-breakpoint` or `temporaryUntil` value should be updated match.\n\n" +
314
+ "See https://react-md.dev/getting-started/layout#updating-the-layout-to-be-temporary-until-a-specific-breakpoint-optional " +
315
+ "for more information."
316
+ );
317
+ }
318
+ }, 3000);
319
+
320
+ return () => {
321
+ window.clearTimeout(timeout);
322
+ };
323
+ }, [temporaryUntil]);
324
+
267
325
  return {
268
326
  visible,
269
327
  temporary,
@@ -25,8 +25,7 @@ export const DEFAULT_HORIZONTAL_LAYOUT_TRANSITION_CLASSNAMES = {
25
25
  /**
26
26
  * @since 6.0.0
27
27
  */
28
- export interface HorizontalLayoutTransitionOptions
29
- extends PreconfiguredCSSTransitionOptions<HTMLElement> {
28
+ export interface HorizontalLayoutTransitionOptions extends PreconfiguredCSSTransitionOptions<HTMLElement> {
30
29
  /**
31
30
  * @see {@link DEFAULT_SHEET_TIMEOUT}
32
31
  * @defaultValue `DEFAULT_SHEET_TIMEOUT`
@@ -87,8 +87,8 @@ export interface LayoutTreeOptions<
87
87
  */
88
88
  export interface LayoutTreeImplementation<
89
89
  T extends TreeItemNode = DefaultTreeItemNode,
90
- > extends Pick<TreeProps<T>, "data">,
91
- TreeImplementation {}
90
+ >
91
+ extends Pick<TreeProps<T>, "data">, TreeImplementation {}
92
92
 
93
93
  /**
94
94
  * Before considering to use a `Tree` for site navigation, it is important to
@@ -13,8 +13,10 @@ import {
13
13
  /**
14
14
  * @since 6.0.0
15
15
  */
16
- export interface LayoutWindowSplitterOptions
17
- extends Omit<WindowSplitterOptions, "min" | "max"> {
16
+ export interface LayoutWindowSplitterOptions extends Omit<
17
+ WindowSplitterOptions,
18
+ "min" | "max"
19
+ > {
18
20
  /**
19
21
  * @see {@link WindowSplitterOptions.min}
20
22
  * @defaultValue `96`
@@ -51,8 +53,7 @@ export interface LayoutWindowSplitterOptions
51
53
  /**
52
54
  * @since 6.0.0
53
55
  */
54
- export interface ProvidedLayoutWindowSplitterProps
55
- extends WindowSplitterWidgetProps<HTMLButtonElement> {
56
+ export interface ProvidedLayoutWindowSplitterProps extends WindowSplitterWidgetProps<HTMLButtonElement> {
56
57
  /** @defaultValue {@link WindowSplitterImplementation.value} */
57
58
  navWidth: number;
58
59
  }
@@ -60,8 +61,7 @@ export interface ProvidedLayoutWindowSplitterProps
60
61
  /**
61
62
  * @since 6.0.0
62
63
  */
63
- export interface LayoutWindowSplitterImplementation
64
- extends WindowSplitterImplementation {
64
+ export interface LayoutWindowSplitterImplementation extends WindowSplitterImplementation {
65
65
  splitterProps: ProvidedLayoutWindowSplitterProps;
66
66
  }
67
67
 
@@ -16,8 +16,7 @@ import {
16
16
  * @since 6.0.0
17
17
  */
18
18
  export interface ResizableLayoutOptions
19
- extends ExpandableLayoutOptions,
20
- LayoutWindowSplitterOptions {
19
+ extends ExpandableLayoutOptions, LayoutWindowSplitterOptions {
21
20
  /**
22
21
  * This id will be used as the `aria-controls` prop for the
23
22
  * `LayoutWindowSplitter` and should be applied to the `LayoutNav` as an `id`.
@@ -30,16 +29,14 @@ export interface ResizableLayoutOptions
30
29
  /**
31
30
  * @since 6.0.0
32
31
  */
33
- export interface ProvidedResizableLayoutNavProps
34
- extends ProvidedLayoutNavProps {
32
+ export interface ProvidedResizableLayoutNavProps extends ProvidedLayoutNavProps {
35
33
  id: string;
36
34
  }
37
35
 
38
36
  /**
39
37
  * @since 6.0.0
40
38
  */
41
- export interface ResizableLayoutImplementation
42
- extends ExpandableLayoutImplementation {
39
+ export interface ResizableLayoutImplementation extends ExpandableLayoutImplementation {
43
40
  expandableNavProps: ProvidedResizableLayoutNavProps;
44
41
  windowSplitterProps: LayoutWindowSplitterProps;
45
42
  }
package/src/link/Link.tsx CHANGED
@@ -23,8 +23,7 @@ export type CustomLinkComponent =
23
23
  * @since 6.0.0 Renamed `flexCentered` to `flex`.
24
24
  */
25
25
  export interface LinkProps
26
- extends AnchorHTMLAttributes<HTMLAnchorElement>,
27
- LinkClassNameOptions {
26
+ extends AnchorHTMLAttributes<HTMLAnchorElement>, LinkClassNameOptions {
28
27
  /**
29
28
  * All links **must** have a valid href.
30
29
  */
@@ -1,7 +1,8 @@
1
1
  "use client";
2
2
 
3
- import { type ReactNode, forwardRef, useEffect, useRef } from "react";
3
+ import { type ReactNode, forwardRef, useRef } from "react";
4
4
 
5
+ import { useDevEffect } from "../utils/useDevEffect.js";
5
6
  import { Link, type LinkProps } from "./Link.js";
6
7
  import {
7
8
  type SkipToMainContentClassNameOptions,
@@ -21,8 +22,7 @@ const getMainElement = (mainId: string): HTMLElement | null =>
21
22
  * @since 6.0.0 The `mainId` is optional
22
23
  */
23
24
  export interface SkipToMainContentProps
24
- extends Omit<LinkProps, "href">,
25
- SkipToMainContentClassNameOptions {
25
+ extends Omit<LinkProps, "href">, SkipToMainContentClassNameOptions {
26
26
  /**
27
27
  * @since 6.0.0 Changed default value from `"skip-to-main-content"`
28
28
  * @defaultValue `"skip-to-main"`
@@ -95,30 +95,27 @@ export const SkipToMainContent = forwardRef<
95
95
  // want to warn the developer about missing main element in development
96
96
  // immediately to help prevent errors, but in production this can be lazy
97
97
  // initialized only once a keyboard user focuses and clicks this element
98
- if (process.env.NODE_ENV !== "production") {
99
- // eslint-disable-next-line react-hooks/rules-of-hooks
100
- useEffect(() => {
101
- mainNodeRef.current = getMainElement(mainId);
98
+ useDevEffect(() => {
99
+ mainNodeRef.current = getMainElement(mainId);
102
100
 
103
- if (!mainNodeRef.current) {
104
- const foundMainId = document.querySelector('main,[role="main"]')?.id;
105
- let message = `Unable to find a main element to focus`;
106
- if (mainId) {
107
- message += ` with an id of "${mainId}"`;
101
+ if (!mainNodeRef.current) {
102
+ const foundMainId = document.querySelector('main,[role="main"]')?.id;
103
+ let message = `Unable to find a main element to focus`;
104
+ if (mainId) {
105
+ message += ` with an id of "${mainId}"`;
108
106
 
109
- if (foundMainId) {
110
- message += ` but a main element was found with an id of "${foundMainId}".`;
111
- }
107
+ if (foundMainId) {
108
+ message += ` but a main element was found with an id of "${foundMainId}".`;
112
109
  }
113
- if (!foundMainId) {
114
- message +=
115
- '. There should be at least one <main> element or an element with role="main" on the page for accessibility.';
116
- }
117
-
118
- throw new Error(message);
119
110
  }
120
- }, [mainId]);
121
- }
111
+ if (!foundMainId) {
112
+ message +=
113
+ '. There should be at least one <main> element or an element with role="main" on the page for accessibility.';
114
+ }
115
+
116
+ throw new Error(message);
117
+ }
118
+ }, [mainId]);
122
119
 
123
120
  return (
124
121
  <Link
package/src/list/List.tsx CHANGED
@@ -8,8 +8,7 @@ export type ListElement = HTMLUListElement | HTMLOListElement;
8
8
  * @since 6.3.1 Extends the ListClassNameOptions
9
9
  */
10
10
  export interface ListProps
11
- extends HTMLAttributes<ListElement>,
12
- ListClassNameOptions {
11
+ extends HTMLAttributes<ListElement>, ListClassNameOptions {
13
12
  /**
14
13
  * @defaultValue `"none"`
15
14
  */
@@ -19,7 +19,8 @@ import { type ListItemChildrenProps } from "./types.js";
19
19
  * @since 6.3.1 Extends the BaseListItemClassNameOptions
20
20
  */
21
21
  export interface ListItemProps
22
- extends HTMLAttributes<HTMLLIElement>,
22
+ extends
23
+ HTMLAttributes<HTMLLIElement>,
23
24
  ListItemChildrenProps,
24
25
  BaseListItemClassNameOptions,
25
26
  ComponentWithRippleProps {
@@ -10,7 +10,8 @@ import {
10
10
  } from "./listItemStyles.js";
11
11
 
12
12
  export interface ListItemAddonProps
13
- extends Omit<TextIconSpacingProps, "icon" | "iconAfter" | "forceIconWrap">,
13
+ extends
14
+ Omit<TextIconSpacingProps, "icon" | "iconAfter" | "forceIconWrap">,
14
15
  ListItemAddonClassNameOptions {
15
16
  /**
16
17
  * The addon that should be rendered.
@@ -17,7 +17,8 @@ import { type ListItemClassNameOptions, listItem } from "./listItemStyles.js";
17
17
  import { type ListItemChildrenProps } from "./types.js";
18
18
 
19
19
  export interface ListItemLinkProps
20
- extends AnchorHTMLAttributes<HTMLAnchorElement>,
20
+ extends
21
+ AnchorHTMLAttributes<HTMLAnchorElement>,
21
22
  ListItemClassNameOptions,
22
23
  ListItemChildrenProps,
23
24
  ComponentWithRippleProps {
@@ -35,8 +35,7 @@ export function listSubheader(
35
35
  * @since 6.0.0 The `role` prop defaults to `"presentation"`
36
36
  */
37
37
  export interface ListSubheaderProps
38
- extends HTMLAttributes<HTMLLIElement>,
39
- ListSubheaderClassNameOptions {
38
+ extends HTMLAttributes<HTMLLIElement>, ListSubheaderClassNameOptions {
40
39
  /**
41
40
  * @defaultValue `"presentation"`
42
41
  */
@@ -4,15 +4,14 @@ import type { ListItemChildrenProps, ListItemHeight } from "./types.js";
4
4
  * @since 6.0.0
5
5
  * @internal
6
6
  */
7
- export interface ListItemHeightOptions
8
- extends Pick<
9
- ListItemChildrenProps,
10
- | "leftAddon"
11
- | "rightAddon"
12
- | "leftAddonType"
13
- | "rightAddonType"
14
- | "secondaryText"
15
- > {
7
+ export interface ListItemHeightOptions extends Pick<
8
+ ListItemChildrenProps,
9
+ | "leftAddon"
10
+ | "rightAddon"
11
+ | "leftAddonType"
12
+ | "rightAddonType"
13
+ | "secondaryText"
14
+ > {
16
15
  /**
17
16
  * @see {@link ListItemHeight}
18
17
  */
@@ -72,8 +72,7 @@ export interface ListItemClassNameOptions extends BaseListItemClassNameOptions {
72
72
  }
73
73
 
74
74
  /** @since 6.0.0 */
75
- export interface InternalListItemClassNameOptions
76
- extends ListItemClassNameOptions {
75
+ export interface InternalListItemClassNameOptions extends ListItemClassNameOptions {
77
76
  /**
78
77
  * @defaultValue `false`
79
78
  */
package/src/list/types.ts CHANGED
@@ -227,5 +227,4 @@ export interface ListItemChildrenTextProps {
227
227
  * @since 6.0.0 Renamed `textChildren` to `disableTextChildren`
228
228
  */
229
229
  export interface ListItemChildrenProps
230
- extends ListItemChildrenTextProps,
231
- ListItemChildrenAddonProps {}
230
+ extends ListItemChildrenTextProps, ListItemChildrenAddonProps {}
@@ -14,12 +14,8 @@ import {
14
14
  type AppSize,
15
15
  type AppSizeQueries,
16
16
  DEFAULT_APP_SIZE,
17
- DEFAULT_DESKTOP_LARGE_MIN_WIDTH,
18
- DEFAULT_DESKTOP_MIN_WIDTH,
19
- DEFAULT_PHONE_MAX_WIDTH,
20
- DEFAULT_TABLET_MAX_WIDTH,
21
- DEFAULT_TABLET_MIN_WIDTH,
22
17
  } from "./appSize.js";
18
+ import { MEDIA_QUERY_CONFIG } from "./config.js";
23
19
  import { useMediaQuery } from "./useMediaQuery.js";
24
20
 
25
21
  /** @internal */
@@ -71,6 +67,8 @@ export function useAppSize(): Readonly<AppSize> {
71
67
  * @since 6.0.0 Renamed from `AppSizeListenerProps`.
72
68
  * @since 6.0.0 Removed the `onChange` prop
73
69
  * @since 6.0.0 Renamed `defaultSize` to `ssrSize`
70
+ * @since 6.4.0 Deprecated the `AppSizeQueries` in favor
71
+ * of the `MEDIA_QUERY_CONFIG`
74
72
  */
75
73
  export interface AppSizeProviderProps extends AppSizeQueries {
76
74
  /**
@@ -95,11 +93,11 @@ export interface AppSizeProviderProps extends AppSizeQueries {
95
93
  export function AppSizeProvider(props: AppSizeProviderProps): ReactElement {
96
94
  const {
97
95
  ssrSize = DEFAULT_APP_SIZE,
98
- phoneMaxWidth = DEFAULT_PHONE_MAX_WIDTH,
99
- tabletMinWidth = DEFAULT_TABLET_MIN_WIDTH,
100
- tabletMaxWidth = DEFAULT_TABLET_MAX_WIDTH,
101
- desktopMinWidth = DEFAULT_DESKTOP_MIN_WIDTH,
102
- desktopLargeMinWidth = DEFAULT_DESKTOP_LARGE_MIN_WIDTH,
96
+ phoneMaxWidth = MEDIA_QUERY_CONFIG.phoneMaxWidth,
97
+ tabletMinWidth = MEDIA_QUERY_CONFIG.tabletMinWidth,
98
+ tabletMaxWidth = MEDIA_QUERY_CONFIG.tabletMaxWidth,
99
+ desktopMinWidth = MEDIA_QUERY_CONFIG.desktopMinWidth,
100
+ desktopLargeMinWidth = MEDIA_QUERY_CONFIG.desktopLargeMinWidth,
103
101
  children,
104
102
  } = props;
105
103
  const { __root } = useContext(context);
@@ -62,6 +62,9 @@ export interface AppSizeQueries {
62
62
  desktopLargeMinWidth?: QuerySize;
63
63
  }
64
64
 
65
+ /**
66
+ * @deprecated Use `MEDIA_QUERY_CONFIG` instead.
67
+ */
65
68
  export const DEFAULT_APP_SIZE_QUERIES: Readonly<AppSizeQueries> = {
66
69
  phoneMaxWidth: DEFAULT_PHONE_MAX_WIDTH,
67
70
  tabletMinWidth: DEFAULT_TABLET_MIN_WIDTH,
@@ -0,0 +1,41 @@
1
+ import {
2
+ type AppSizeQueries,
3
+ DEFAULT_DESKTOP_LARGE_MIN_WIDTH,
4
+ DEFAULT_DESKTOP_MIN_WIDTH,
5
+ DEFAULT_PHONE_MAX_WIDTH,
6
+ DEFAULT_TABLET_MAX_WIDTH,
7
+ DEFAULT_TABLET_MIN_WIDTH,
8
+ } from "./appSize.js";
9
+
10
+ /** @since 6.4.0 */
11
+ export type MediaQueryConfig = Required<AppSizeQueries>;
12
+
13
+ /**
14
+ * @since 6.4.0
15
+ */
16
+ export const MEDIA_QUERY_CONFIG: MediaQueryConfig = {
17
+ phoneMaxWidth: DEFAULT_PHONE_MAX_WIDTH,
18
+ tabletMinWidth: DEFAULT_TABLET_MIN_WIDTH,
19
+ tabletMaxWidth: DEFAULT_TABLET_MAX_WIDTH,
20
+ desktopMinWidth: DEFAULT_DESKTOP_MIN_WIDTH,
21
+ desktopLargeMinWidth: DEFAULT_DESKTOP_LARGE_MIN_WIDTH,
22
+ };
23
+
24
+ /**
25
+ * @since 6.4.0
26
+ */
27
+ export function configureMediaQueries(
28
+ queries: Readonly<Partial<MediaQueryConfig>>
29
+ ): void {
30
+ if (process.env.NODE_ENV !== "production") {
31
+ Object.entries(queries).forEach(([name, value]) => {
32
+ if (!(name in MEDIA_QUERY_CONFIG)) {
33
+ throw new Error(`${name} is an invalid react-md media query.`);
34
+ }
35
+
36
+ MEDIA_QUERY_CONFIG[name as keyof MediaQueryConfig] = value;
37
+ });
38
+ } else {
39
+ Object.assign(MEDIA_QUERY_CONFIG, queries);
40
+ }
41
+ }
@@ -29,7 +29,8 @@ import { MenuVisibilityProvider } from "./MenuVisibilityProvider.js";
29
29
  import { useMenuBarContext } from "./useMenuBarProvider.js";
30
30
 
31
31
  export interface BaseDropdownMenuProps
32
- extends MenuConfiguration,
32
+ extends
33
+ MenuConfiguration,
33
34
  MenuListConvenienceProps,
34
35
  MenuSheetConvenienceProps,
35
36
  MenuConvenienceProps {
@@ -37,12 +38,10 @@ export interface BaseDropdownMenuProps
37
38
  }
38
39
 
39
40
  export interface DropdownMenuButtonProps
40
- extends MenuButtonProps,
41
- BaseDropdownMenuProps {}
41
+ extends MenuButtonProps, BaseDropdownMenuProps {}
42
42
 
43
43
  export interface DropdownMenuItemButtonProps
44
- extends MenuItemButtonProps,
45
- BaseDropdownMenuProps {}
44
+ extends MenuItemButtonProps, BaseDropdownMenuProps {}
46
45
 
47
46
  /**
48
47
  * @since 6.0.0
package/src/menu/Menu.tsx CHANGED
@@ -215,7 +215,8 @@ export type MenuFixedPositioningOptions = Omit<
215
215
  * @since 6.0.0 Updated to use the latest Menu, Transition, and Portal API.
216
216
  */
217
217
  export interface MenuProps
218
- extends HTMLAttributes<HTMLDivElement>,
218
+ extends
219
+ HTMLAttributes<HTMLDivElement>,
219
220
  MenuConfiguration,
220
221
  MenuConfigurationProps,
221
222
  MenuFixedPositioningOptions,
@@ -23,8 +23,7 @@ const noop = (): void => {
23
23
  * @since 5.0.0
24
24
  */
25
25
  export interface MenuItemButtonProps
26
- extends BaseMenuButtonProps,
27
- MenuItemProps {}
26
+ extends BaseMenuButtonProps, MenuItemProps {}
28
27
 
29
28
  /**
30
29
  * **Client Component**
@@ -19,7 +19,8 @@ const noop = (): void => {
19
19
  * implementation.
20
20
  */
21
21
  export interface MenuItemFileInputProps
22
- extends Omit<MenuItemProps, "onChange">,
22
+ extends
23
+ Omit<MenuItemProps, "onChange">,
23
24
  Pick<
24
25
  InputHTMLAttributes<HTMLInputElement>,
25
26
  "accept" | "capture" | "multiple"