material-plus-ui 1.3.0 → 1.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 (551) hide show
  1. package/README.md +4 -3
  2. package/dist/components/accordion/MPAccordion.d.ts +1 -1
  3. package/dist/components/accordion/MPAccordion.js +2 -1
  4. package/dist/components/accordion/index.d.ts +2 -2
  5. package/dist/components/accordion/index.js +1 -1
  6. package/dist/components/alert/MPAlert.d.ts +27 -1
  7. package/dist/components/alert/MPAlert.js +2 -1
  8. package/dist/components/alert/index.d.ts +2 -2
  9. package/dist/components/alert/index.js +1 -1
  10. package/dist/components/animate-appear/MPAnimateAppear.d.ts +1 -1
  11. package/dist/components/animate-appear/MPAnimateAppear.js +2 -1
  12. package/dist/components/animate-appear/index.d.ts +2 -2
  13. package/dist/components/animate-appear/index.js +1 -1
  14. package/dist/components/animate-blink/MPAnimateBlink.d.ts +1 -1
  15. package/dist/components/animate-blink/MPAnimateBlink.js +1 -1
  16. package/dist/components/animate-blink/index.d.ts +2 -2
  17. package/dist/components/animate-blink/index.js +1 -1
  18. package/dist/components/animate-fade/MPAnimateFade.d.ts +1 -1
  19. package/dist/components/animate-fade/MPAnimateFade.js +1 -1
  20. package/dist/components/animate-fade/index.d.ts +2 -2
  21. package/dist/components/animate-fade/index.js +1 -1
  22. package/dist/components/animate-grow/MPAnimateGrow.d.ts +1 -1
  23. package/dist/components/animate-grow/MPAnimateGrow.js +1 -1
  24. package/dist/components/animate-grow/index.d.ts +2 -2
  25. package/dist/components/animate-grow/index.js +1 -1
  26. package/dist/components/animate-headline/MPAnimateHeadline.d.ts +1 -1
  27. package/dist/components/animate-headline/MPAnimateHeadline.js +2 -1
  28. package/dist/components/animate-headline/index.d.ts +2 -2
  29. package/dist/components/animate-headline/index.js +1 -1
  30. package/dist/components/animate-lighting/MPAnimateLighting.d.ts +1 -1
  31. package/dist/components/animate-lighting/MPAnimateLighting.js +1 -1
  32. package/dist/components/animate-lighting/index.d.ts +2 -2
  33. package/dist/components/animate-lighting/index.js +1 -1
  34. package/dist/components/animate-marquee/MPAnimateMarquee.d.ts +1 -1
  35. package/dist/components/animate-marquee/MPAnimateMarquee.js +2 -1
  36. package/dist/components/animate-marquee/index.d.ts +2 -2
  37. package/dist/components/animate-marquee/index.js +1 -1
  38. package/dist/components/animate-rotate/MPAnimateRotate.d.ts +1 -1
  39. package/dist/components/animate-rotate/MPAnimateRotate.js +1 -1
  40. package/dist/components/animate-rotate/index.d.ts +2 -2
  41. package/dist/components/animate-rotate/index.js +1 -1
  42. package/dist/components/animate-slide/MPAnimateSlide.d.ts +1 -1
  43. package/dist/components/animate-slide/MPAnimateSlide.js +1 -1
  44. package/dist/components/animate-slide/index.d.ts +2 -2
  45. package/dist/components/animate-slide/index.js +1 -1
  46. package/dist/components/animate-typing/MPAnimateTyping.d.ts +1 -1
  47. package/dist/components/animate-typing/MPAnimateTyping.js +2 -1
  48. package/dist/components/animate-typing/index.d.ts +2 -2
  49. package/dist/components/animate-typing/index.js +1 -1
  50. package/dist/components/animate-zoom/MPAnimateZoom.d.ts +1 -1
  51. package/dist/components/animate-zoom/MPAnimateZoom.js +1 -1
  52. package/dist/components/animate-zoom/index.d.ts +2 -2
  53. package/dist/components/animate-zoom/index.js +1 -1
  54. package/dist/components/aspect-ratio/MPAspectRatio.d.ts +1 -1
  55. package/dist/components/aspect-ratio/MPAspectRatio.js +1 -1
  56. package/dist/components/aspect-ratio/index.d.ts +2 -2
  57. package/dist/components/aspect-ratio/index.js +1 -1
  58. package/dist/components/avatar/MPAvatar.d.ts +1 -1
  59. package/dist/components/avatar/MPAvatar.js +2 -1
  60. package/dist/components/avatar/index.d.ts +2 -2
  61. package/dist/components/avatar/index.js +1 -1
  62. package/dist/components/avatar-group/MPAvatarGroup.d.ts +74 -0
  63. package/dist/components/avatar-group/MPAvatarGroup.js +2 -0
  64. package/dist/components/avatar-group/index.d.ts +2 -0
  65. package/dist/components/avatar-group/index.js +1 -0
  66. package/dist/components/badge/MPBadge.d.ts +1 -1
  67. package/dist/components/badge/MPBadge.js +2 -1
  68. package/dist/components/badge/index.d.ts +2 -2
  69. package/dist/components/badge/index.js +1 -1
  70. package/dist/components/blockquote/MPBlockquote.d.ts +1 -1
  71. package/dist/components/blockquote/MPBlockquote.js +2 -1
  72. package/dist/components/blockquote/index.d.ts +2 -2
  73. package/dist/components/blockquote/index.js +1 -1
  74. package/dist/components/bottom-navigation/MPBottomNavigation.d.ts +1 -1
  75. package/dist/components/bottom-navigation/MPBottomNavigation.js +2 -1
  76. package/dist/components/bottom-navigation/index.d.ts +2 -2
  77. package/dist/components/bottom-navigation/index.js +1 -1
  78. package/dist/components/box/MPBox.d.ts +1 -1
  79. package/dist/components/box/MPBox.js +1 -1
  80. package/dist/components/box/index.d.ts +2 -2
  81. package/dist/components/box/index.js +1 -1
  82. package/dist/components/breadcrumb/MPBreadcrumb.d.ts +11 -5
  83. package/dist/components/breadcrumb/MPBreadcrumb.js +2 -1
  84. package/dist/components/breadcrumb/index.d.ts +2 -2
  85. package/dist/components/breadcrumb/index.js +1 -1
  86. package/dist/components/button/MPButton.d.ts +1 -1
  87. package/dist/components/button/MPButton.js +2 -1
  88. package/dist/components/button/index.d.ts +2 -2
  89. package/dist/components/button/index.js +1 -1
  90. package/dist/components/button-group/MPButtonGroup.d.ts +10 -1
  91. package/dist/components/button-group/MPButtonGroup.js +2 -1
  92. package/dist/components/button-group/index.d.ts +2 -2
  93. package/dist/components/button-group/index.js +1 -1
  94. package/dist/components/card/MPCard.d.ts +1 -1
  95. package/dist/components/card/MPCard.js +2 -1
  96. package/dist/components/card/index.d.ts +2 -2
  97. package/dist/components/card/index.js +1 -1
  98. package/dist/components/carousel/MPCarousel.d.ts +13 -8
  99. package/dist/components/carousel/MPCarousel.js +2 -1
  100. package/dist/components/carousel/index.d.ts +2 -2
  101. package/dist/components/carousel/index.js +1 -1
  102. package/dist/components/chat-bubble/MPChatBubble.d.ts +16 -3
  103. package/dist/components/chat-bubble/MPChatBubble.js +2 -1
  104. package/dist/components/chat-bubble/index.d.ts +2 -2
  105. package/dist/components/chat-bubble/index.js +1 -1
  106. package/dist/components/checkbox/MPCheckbox.d.ts +1 -1
  107. package/dist/components/checkbox/MPCheckbox.js +2 -1
  108. package/dist/components/checkbox/index.d.ts +2 -2
  109. package/dist/components/checkbox/index.js +1 -1
  110. package/dist/components/chip/MPChip.d.ts +1 -1
  111. package/dist/components/chip/MPChip.js +2 -1
  112. package/dist/components/chip/index.d.ts +2 -2
  113. package/dist/components/chip/index.js +1 -1
  114. package/dist/components/collapsible/MPCollapsible.d.ts +1 -1
  115. package/dist/components/collapsible/MPCollapsible.js +2 -1
  116. package/dist/components/collapsible/index.d.ts +2 -2
  117. package/dist/components/collapsible/index.js +1 -1
  118. package/dist/components/color-picker/MPColorPicker.d.ts +22 -19
  119. package/dist/components/color-picker/MPColorPicker.js +2 -1
  120. package/dist/components/color-picker/index.d.ts +2 -2
  121. package/dist/components/color-picker/index.js +1 -1
  122. package/dist/components/combobox/MPCombobox.d.ts +23 -5
  123. package/dist/components/combobox/MPCombobox.js +2 -1
  124. package/dist/components/combobox/index.d.ts +2 -2
  125. package/dist/components/combobox/index.js +1 -1
  126. package/dist/components/command-palette/MPCommandPalette.d.ts +132 -0
  127. package/dist/components/command-palette/MPCommandPalette.js +2 -0
  128. package/dist/components/command-palette/index.d.ts +2 -0
  129. package/dist/components/command-palette/index.js +1 -0
  130. package/dist/components/container/MPContainer.d.ts +1 -1
  131. package/dist/components/container/MPContainer.js +1 -1
  132. package/dist/components/container/index.d.ts +2 -2
  133. package/dist/components/container/index.js +1 -1
  134. package/dist/components/date-picker/MPDatePicker.d.ts +3 -3
  135. package/dist/components/date-picker/MPDatePicker.js +2 -1
  136. package/dist/components/date-picker/index.d.ts +2 -2
  137. package/dist/components/date-picker/index.js +1 -1
  138. package/dist/components/date-range-picker/MPDateRangePicker.d.ts +3 -3
  139. package/dist/components/date-range-picker/MPDateRangePicker.js +2 -1
  140. package/dist/components/date-range-picker/index.d.ts +2 -2
  141. package/dist/components/date-range-picker/index.js +1 -1
  142. package/dist/components/date-time-picker/MPDateTimePicker.d.ts +9 -4
  143. package/dist/components/date-time-picker/MPDateTimePicker.js +2 -1
  144. package/dist/components/date-time-picker/index.d.ts +2 -2
  145. package/dist/components/date-time-picker/index.js +1 -1
  146. package/dist/components/dialog/MPDialog.d.ts +1 -1
  147. package/dist/components/dialog/MPDialog.js +2 -1
  148. package/dist/components/dialog/index.d.ts +2 -2
  149. package/dist/components/dialog/index.js +1 -1
  150. package/dist/components/divider/MPDivider.d.ts +1 -1
  151. package/dist/components/divider/MPDivider.js +2 -1
  152. package/dist/components/divider/index.d.ts +2 -2
  153. package/dist/components/divider/index.js +1 -1
  154. package/dist/components/drawer/MPDrawer.d.ts +1 -1
  155. package/dist/components/drawer/MPDrawer.js +2 -1
  156. package/dist/components/drawer/index.d.ts +2 -2
  157. package/dist/components/drawer/index.js +1 -1
  158. package/dist/components/empty/MPEmpty.d.ts +1 -1
  159. package/dist/components/empty/MPEmpty.js +2 -1
  160. package/dist/components/empty/index.d.ts +2 -2
  161. package/dist/components/empty/index.js +1 -1
  162. package/dist/components/fieldset/MPFieldset.d.ts +52 -0
  163. package/dist/components/fieldset/MPFieldset.js +2 -0
  164. package/dist/components/fieldset/index.d.ts +2 -0
  165. package/dist/components/fieldset/index.js +1 -0
  166. package/dist/components/file-picker/MPFilePicker.d.ts +5 -4
  167. package/dist/components/file-picker/MPFilePicker.js +2 -1
  168. package/dist/components/file-picker/index.d.ts +2 -2
  169. package/dist/components/file-picker/index.js +1 -1
  170. package/dist/components/floating-action-button/MPFloatingActionButton.d.ts +1 -1
  171. package/dist/components/floating-action-button/MPFloatingActionButton.js +2 -1
  172. package/dist/components/floating-action-button/index.d.ts +2 -2
  173. package/dist/components/floating-action-button/index.js +1 -1
  174. package/dist/components/footer/MPFooter.d.ts +94 -0
  175. package/dist/components/footer/MPFooter.js +2 -0
  176. package/dist/components/footer/index.d.ts +2 -0
  177. package/dist/components/footer/index.js +1 -0
  178. package/dist/components/form/MPForm.d.ts +73 -0
  179. package/dist/components/form/MPForm.js +2 -0
  180. package/dist/components/form/index.d.ts +2 -0
  181. package/dist/components/form/index.js +1 -0
  182. package/dist/components/grid/MPGrid.d.ts +1 -1
  183. package/dist/components/grid/MPGrid.js +1 -0
  184. package/dist/components/grid/index.d.ts +2 -2
  185. package/dist/components/grid/index.js +1 -1
  186. package/dist/components/header/MPHeader.d.ts +122 -0
  187. package/dist/components/header/MPHeader.js +2 -0
  188. package/dist/components/header/index.d.ts +2 -0
  189. package/dist/components/header/index.js +1 -0
  190. package/dist/components/highlight/MPHighlight.d.ts +9 -2
  191. package/dist/components/highlight/MPHighlight.js +2 -1
  192. package/dist/components/highlight/index.d.ts +2 -2
  193. package/dist/components/highlight/index.js +1 -1
  194. package/dist/components/icon/MPIcon.d.ts +1 -1
  195. package/dist/components/icon/MPIcon.js +1 -0
  196. package/dist/components/icon/index.d.ts +2 -2
  197. package/dist/components/icon/index.js +1 -1
  198. package/dist/components/icon-button/MPIconButton.d.ts +1 -1
  199. package/dist/components/icon-button/MPIconButton.js +2 -1
  200. package/dist/components/icon-button/index.d.ts +2 -2
  201. package/dist/components/icon-button/index.js +1 -1
  202. package/dist/components/list/MPList.d.ts +1 -1
  203. package/dist/components/list/MPList.js +2 -1
  204. package/dist/components/list/index.d.ts +2 -2
  205. package/dist/components/list/index.js +1 -1
  206. package/dist/components/locale/MPLocaleProvider.d.ts +1 -1
  207. package/dist/components/locale/MPLocaleProvider.js +2 -1
  208. package/dist/components/locale/index.d.ts +2 -2
  209. package/dist/components/locale/index.js +1 -1
  210. package/dist/components/menu/MPMenu.d.ts +1 -1
  211. package/dist/components/menu/MPMenu.js +2 -1
  212. package/dist/components/menu/index.d.ts +2 -2
  213. package/dist/components/menu/index.js +1 -1
  214. package/dist/components/menubar/MPMenubar.d.ts +82 -0
  215. package/dist/components/menubar/MPMenubar.js +2 -0
  216. package/dist/components/menubar/index.d.ts +2 -0
  217. package/dist/components/menubar/index.js +1 -0
  218. package/dist/components/navigation-menu/MPNavigationMenu.d.ts +151 -0
  219. package/dist/components/navigation-menu/MPNavigationMenu.js +2 -0
  220. package/dist/components/navigation-menu/index.d.ts +2 -0
  221. package/dist/components/navigation-menu/index.js +1 -0
  222. package/dist/components/number-field/MPNumberField.d.ts +13 -4
  223. package/dist/components/number-field/MPNumberField.js +2 -1
  224. package/dist/components/number-field/index.d.ts +2 -2
  225. package/dist/components/number-field/index.js +1 -1
  226. package/dist/components/otp-field/MPOtpField.d.ts +1 -1
  227. package/dist/components/otp-field/MPOtpField.js +2 -1
  228. package/dist/components/otp-field/index.d.ts +2 -2
  229. package/dist/components/otp-field/index.js +1 -1
  230. package/dist/components/overlay/MPOverlay.d.ts +9 -3
  231. package/dist/components/overlay/MPOverlay.js +2 -1
  232. package/dist/components/overlay/index.d.ts +2 -2
  233. package/dist/components/overlay/index.js +1 -1
  234. package/dist/components/page-layout/MPPageLayout.d.ts +145 -0
  235. package/dist/components/page-layout/MPPageLayout.js +2 -0
  236. package/dist/components/page-layout/index.d.ts +2 -0
  237. package/dist/components/page-layout/index.js +1 -0
  238. package/dist/components/pagination/MPPagination.d.ts +2 -2
  239. package/dist/components/pagination/MPPagination.js +2 -1
  240. package/dist/components/pagination/index.d.ts +2 -2
  241. package/dist/components/pagination/index.js +1 -1
  242. package/dist/components/panes/MPPanes.d.ts +1 -1
  243. package/dist/components/panes/MPPanes.js +2 -1
  244. package/dist/components/panes/index.d.ts +2 -2
  245. package/dist/components/panes/index.js +1 -1
  246. package/dist/components/pill/MPPill.d.ts +1 -1
  247. package/dist/components/pill/MPPill.js +2 -1
  248. package/dist/components/pill/index.d.ts +2 -2
  249. package/dist/components/pill/index.js +1 -1
  250. package/dist/components/popover/MPPopover.d.ts +1 -1
  251. package/dist/components/popover/MPPopover.js +2 -1
  252. package/dist/components/popover/index.d.ts +2 -2
  253. package/dist/components/popover/index.js +1 -1
  254. package/dist/components/progress-box/MPProgressBox.d.ts +2 -2
  255. package/dist/components/progress-box/MPProgressBox.js +2 -1
  256. package/dist/components/progress-box/index.d.ts +2 -2
  257. package/dist/components/progress-box/index.js +1 -1
  258. package/dist/components/progress-circular/MPProgressCircular.d.ts +2 -2
  259. package/dist/components/progress-circular/MPProgressCircular.js +2 -1
  260. package/dist/components/progress-circular/index.d.ts +2 -2
  261. package/dist/components/progress-circular/index.js +1 -1
  262. package/dist/components/progress-linear/MPProgressLinear.d.ts +2 -2
  263. package/dist/components/progress-linear/MPProgressLinear.js +2 -1
  264. package/dist/components/progress-linear/index.d.ts +2 -2
  265. package/dist/components/progress-linear/index.js +1 -1
  266. package/dist/components/radio-group/MPRadioGroup.d.ts +1 -1
  267. package/dist/components/radio-group/MPRadioGroup.js +2 -1
  268. package/dist/components/radio-group/index.d.ts +2 -2
  269. package/dist/components/radio-group/index.js +1 -1
  270. package/dist/components/rating/MPRating.d.ts +2 -2
  271. package/dist/components/rating/MPRating.js +2 -1
  272. package/dist/components/rating/index.d.ts +2 -2
  273. package/dist/components/rating/index.js +1 -1
  274. package/dist/components/segmented-button/MPSegmentedButton.d.ts +1 -1
  275. package/dist/components/segmented-button/MPSegmentedButton.js +2 -1
  276. package/dist/components/segmented-button/index.d.ts +2 -2
  277. package/dist/components/segmented-button/index.js +1 -1
  278. package/dist/components/select/MPSelect.d.ts +13 -2
  279. package/dist/components/select/MPSelect.js +2 -1
  280. package/dist/components/select/index.d.ts +2 -2
  281. package/dist/components/select/index.js +1 -1
  282. package/dist/components/shortcut/MPShortcut.d.ts +1 -1
  283. package/dist/components/shortcut/MPShortcut.js +2 -1
  284. package/dist/components/shortcut/index.d.ts +2 -2
  285. package/dist/components/shortcut/index.js +1 -1
  286. package/dist/components/sidebar/MPSidebar.d.ts +160 -0
  287. package/dist/components/sidebar/MPSidebar.js +2 -0
  288. package/dist/components/sidebar/MPSidebarTrigger.d.ts +45 -0
  289. package/dist/components/sidebar/MPSidebarTrigger.js +2 -0
  290. package/dist/components/sidebar/index.d.ts +4 -0
  291. package/dist/components/sidebar/index.js +1 -0
  292. package/dist/components/skeleton/MPSkeleton.d.ts +1 -1
  293. package/dist/components/skeleton/MPSkeleton.js +2 -1
  294. package/dist/components/skeleton/index.d.ts +2 -2
  295. package/dist/components/skeleton/index.js +1 -1
  296. package/dist/components/slider/MPSlider.d.ts +1 -1
  297. package/dist/components/slider/MPSlider.js +2 -1
  298. package/dist/components/slider/index.d.ts +2 -2
  299. package/dist/components/slider/index.js +1 -1
  300. package/dist/components/snackbar/MPSnackbar.d.ts +1 -1
  301. package/dist/components/snackbar/MPSnackbar.js +2 -1
  302. package/dist/components/snackbar/index.d.ts +2 -2
  303. package/dist/components/snackbar/index.js +1 -1
  304. package/dist/components/spoiler/MPSpoiler.d.ts +1 -1
  305. package/dist/components/spoiler/MPSpoiler.js +2 -1
  306. package/dist/components/spoiler/index.d.ts +2 -2
  307. package/dist/components/spoiler/index.js +1 -1
  308. package/dist/components/switch/MPSwitch.d.ts +1 -1
  309. package/dist/components/switch/MPSwitch.js +2 -1
  310. package/dist/components/switch/index.d.ts +2 -2
  311. package/dist/components/switch/index.js +1 -1
  312. package/dist/components/table/MPTable.d.ts +28 -6
  313. package/dist/components/table/MPTable.js +2 -1
  314. package/dist/components/table/index.d.ts +2 -2
  315. package/dist/components/table/index.js +1 -1
  316. package/dist/components/tabs/MPTabs.d.ts +1 -1
  317. package/dist/components/tabs/MPTabs.js +2 -1
  318. package/dist/components/tabs/index.d.ts +2 -2
  319. package/dist/components/tabs/index.js +1 -1
  320. package/dist/components/text-field/MPTextField.d.ts +15 -4
  321. package/dist/components/text-field/MPTextField.js +2 -1
  322. package/dist/components/text-field/index.d.ts +2 -2
  323. package/dist/components/text-field/index.js +1 -1
  324. package/dist/components/text-link/MPTextLink.d.ts +8 -2
  325. package/dist/components/text-link/MPTextLink.js +2 -1
  326. package/dist/components/text-link/index.d.ts +2 -2
  327. package/dist/components/text-link/index.js +1 -1
  328. package/dist/components/time-picker/MPTimePicker.d.ts +7 -3
  329. package/dist/components/time-picker/MPTimePicker.js +2 -1
  330. package/dist/components/time-picker/index.d.ts +2 -2
  331. package/dist/components/time-picker/index.js +1 -1
  332. package/dist/components/timeline/MPTimeline.d.ts +1 -1
  333. package/dist/components/timeline/MPTimeline.js +2 -1
  334. package/dist/components/timeline/index.d.ts +2 -2
  335. package/dist/components/timeline/index.js +1 -1
  336. package/dist/components/toggle/MPToggle.d.ts +72 -0
  337. package/dist/components/toggle/MPToggle.js +2 -0
  338. package/dist/components/toggle/index.d.ts +2 -0
  339. package/dist/components/toggle/index.js +1 -0
  340. package/dist/components/toggle-group/MPToggleGroup.d.ts +74 -0
  341. package/dist/components/toggle-group/MPToggleGroup.js +2 -0
  342. package/dist/components/toggle-group/index.d.ts +2 -0
  343. package/dist/components/toggle-group/index.js +1 -0
  344. package/dist/components/tooltip/MPTooltip.d.ts +1 -1
  345. package/dist/components/tooltip/MPTooltip.js +2 -1
  346. package/dist/components/tooltip/index.d.ts +2 -2
  347. package/dist/components/tooltip/index.js +1 -1
  348. package/dist/components/transfer/MPTransfer.d.ts +98 -0
  349. package/dist/components/transfer/MPTransfer.js +2 -0
  350. package/dist/components/transfer/index.d.ts +2 -0
  351. package/dist/components/transfer/index.js +1 -0
  352. package/dist/components/typography/MPTypography.d.ts +1 -1
  353. package/dist/components/typography/MPTypography.js +2 -1
  354. package/dist/components/typography/index.d.ts +2 -2
  355. package/dist/components/typography/index.js +1 -1
  356. package/dist/constants/glyphs.d.ts +72 -0
  357. package/dist/constants/glyphs.js +2 -0
  358. package/dist/constants/icons.d.ts +32 -60
  359. package/dist/constants/icons.js +1 -1
  360. package/dist/index.d.ts +91 -78
  361. package/dist/index.js +1 -1
  362. package/dist/internal/Calendar.d.ts +3 -3
  363. package/dist/internal/Calendar.js +2 -1
  364. package/dist/internal/FieldOutline.d.ts +1 -1
  365. package/dist/internal/FieldOutline.js +2 -1
  366. package/dist/internal/Picker.d.ts +2 -2
  367. package/dist/internal/Picker.js +2 -1
  368. package/dist/internal/StateLayer.js +1 -0
  369. package/dist/internal/SupportingText.d.ts +1 -1
  370. package/dist/internal/SupportingText.js +2 -1
  371. package/dist/internal/WidthSizer.js +1 -0
  372. package/dist/internal/accent.d.ts +1 -1
  373. package/dist/internal/animate.d.ts +1 -18
  374. package/dist/internal/animate.js +2 -1
  375. package/dist/internal/avatar-group.d.ts +22 -0
  376. package/dist/internal/avatar-group.js +2 -0
  377. package/dist/internal/button-group.d.ts +20 -1
  378. package/dist/internal/button-group.js +2 -1
  379. package/dist/internal/color.d.ts +0 -5
  380. package/dist/internal/color.js +1 -1
  381. package/dist/internal/date.d.ts +1 -1
  382. package/dist/internal/date.js +1 -1
  383. package/dist/internal/i18n.d.ts +245 -14
  384. package/dist/internal/i18n.js +1 -1
  385. package/dist/internal/keys.d.ts +72 -0
  386. package/dist/internal/keys.js +2 -0
  387. package/dist/internal/length.d.ts +42 -0
  388. package/dist/internal/length.js +1 -0
  389. package/dist/internal/link.d.ts +44 -0
  390. package/dist/internal/link.js +1 -0
  391. package/dist/internal/locale.d.ts +27 -3
  392. package/dist/internal/locale.js +2 -1
  393. package/dist/internal/menu.d.ts +1 -1
  394. package/dist/internal/menu.js +1 -0
  395. package/dist/internal/messages/alert.d.ts +3 -0
  396. package/dist/internal/messages/alert.js +1 -0
  397. package/dist/internal/messages/breadcrumb.d.ts +3 -0
  398. package/dist/internal/messages/breadcrumb.js +1 -0
  399. package/dist/internal/messages/carousel.d.ts +3 -0
  400. package/dist/internal/messages/carousel.js +1 -0
  401. package/dist/internal/messages/chat.d.ts +3 -0
  402. package/dist/internal/messages/chat.js +1 -0
  403. package/dist/internal/messages/color-picker.d.ts +3 -0
  404. package/dist/internal/messages/color-picker.js +1 -0
  405. package/dist/internal/messages/combobox.d.ts +3 -0
  406. package/dist/internal/messages/combobox.js +1 -0
  407. package/dist/internal/messages/command.d.ts +3 -0
  408. package/dist/internal/messages/command.js +1 -0
  409. package/dist/internal/messages/common.d.ts +3 -0
  410. package/dist/internal/messages/common.js +1 -0
  411. package/dist/internal/messages/empty.d.ts +3 -0
  412. package/dist/internal/messages/empty.js +1 -0
  413. package/dist/internal/messages/file-picker.d.ts +3 -0
  414. package/dist/internal/messages/file-picker.js +1 -0
  415. package/dist/internal/messages/layout.d.ts +3 -0
  416. package/dist/internal/messages/layout.js +1 -0
  417. package/dist/internal/messages/number-field.d.ts +3 -0
  418. package/dist/internal/messages/number-field.js +1 -0
  419. package/dist/internal/messages/overlay.d.ts +3 -0
  420. package/dist/internal/messages/overlay.js +1 -0
  421. package/dist/internal/messages/pagination.d.ts +3 -0
  422. package/dist/internal/messages/pagination.js +1 -0
  423. package/dist/internal/messages/picker.d.ts +3 -0
  424. package/dist/internal/messages/picker.js +1 -0
  425. package/dist/internal/messages/rating.d.ts +3 -0
  426. package/dist/internal/messages/rating.js +1 -0
  427. package/dist/internal/messages/spoiler.d.ts +3 -0
  428. package/dist/internal/messages/spoiler.js +1 -0
  429. package/dist/internal/messages/table.d.ts +3 -0
  430. package/dist/internal/messages/table.js +1 -0
  431. package/dist/internal/messages/text-field.d.ts +3 -0
  432. package/dist/internal/messages/text-field.js +1 -0
  433. package/dist/internal/messages/text-link.d.ts +3 -0
  434. package/dist/internal/messages/text-link.js +1 -0
  435. package/dist/internal/messages/transfer.d.ts +3 -0
  436. package/dist/internal/messages/transfer.js +1 -0
  437. package/dist/internal/page-layout.d.ts +182 -0
  438. package/dist/internal/page-layout.js +2 -0
  439. package/dist/internal/progress.d.ts +1 -1
  440. package/dist/internal/scale.d.ts +18 -1
  441. package/dist/internal/scale.js +1 -1
  442. package/dist/internal/surface.d.ts +1 -1
  443. package/dist/internal/surface.js +1 -1
  444. package/dist/locales/ar.d.ts +1 -1
  445. package/dist/locales/ar.js +1 -1
  446. package/dist/locales/de.d.ts +1 -1
  447. package/dist/locales/de.js +1 -1
  448. package/dist/locales/es.d.ts +1 -1
  449. package/dist/locales/es.js +1 -1
  450. package/dist/locales/fr.d.ts +1 -1
  451. package/dist/locales/fr.js +1 -1
  452. package/dist/locales/hi.d.ts +1 -1
  453. package/dist/locales/hi.js +1 -1
  454. package/dist/locales/id.d.ts +1 -1
  455. package/dist/locales/id.js +1 -1
  456. package/dist/locales/index.d.ts +19 -19
  457. package/dist/locales/index.js +1 -1
  458. package/dist/locales/it.d.ts +1 -1
  459. package/dist/locales/it.js +1 -1
  460. package/dist/locales/ja.d.ts +1 -1
  461. package/dist/locales/ja.js +1 -1
  462. package/dist/locales/ko.d.ts +1 -1
  463. package/dist/locales/ko.js +1 -1
  464. package/dist/locales/nl.d.ts +1 -1
  465. package/dist/locales/nl.js +1 -1
  466. package/dist/locales/pl.d.ts +1 -1
  467. package/dist/locales/pl.js +1 -1
  468. package/dist/locales/pt.d.ts +1 -1
  469. package/dist/locales/pt.js +1 -1
  470. package/dist/locales/ru.d.ts +1 -1
  471. package/dist/locales/ru.js +1 -1
  472. package/dist/locales/th.d.ts +1 -1
  473. package/dist/locales/th.js +1 -1
  474. package/dist/locales/tr.d.ts +1 -1
  475. package/dist/locales/tr.js +1 -1
  476. package/dist/locales/vi.d.ts +1 -1
  477. package/dist/locales/vi.js +1 -1
  478. package/dist/locales/zh-hans.d.ts +1 -1
  479. package/dist/locales/zh-hans.js +1 -1
  480. package/dist/locales/zh-hant.d.ts +1 -1
  481. package/dist/locales/zh-hant.js +1 -1
  482. package/dist/styles/accordion.css +1 -1
  483. package/dist/styles/alert.css +1 -1
  484. package/dist/styles/avatar-group.css +2 -0
  485. package/dist/styles/avatar.css +1 -1
  486. package/dist/styles/badge.css +1 -1
  487. package/dist/styles/blockquote.css +1 -1
  488. package/dist/styles/bottom-navigation.css +1 -1
  489. package/dist/styles/box.css +1 -1
  490. package/dist/styles/breadcrumb.css +1 -1
  491. package/dist/styles/button-group.css +1 -1
  492. package/dist/styles/button.css +1 -1
  493. package/dist/styles/card.css +1 -1
  494. package/dist/styles/carousel.css +1 -1
  495. package/dist/styles/chat-bubble.css +1 -1
  496. package/dist/styles/checkbox.css +1 -1
  497. package/dist/styles/chip.css +1 -1
  498. package/dist/styles/collapsible.css +1 -1
  499. package/dist/styles/color-picker.css +1 -1
  500. package/dist/styles/combobox.css +1 -1
  501. package/dist/styles/command-palette.css +2 -0
  502. package/dist/styles/date-picker.css +1 -1
  503. package/dist/styles/date-range-picker.css +1 -1
  504. package/dist/styles/date-time-picker.css +1 -1
  505. package/dist/styles/dialog.css +1 -1
  506. package/dist/styles/divider.css +1 -1
  507. package/dist/styles/drawer.css +1 -1
  508. package/dist/styles/empty.css +1 -1
  509. package/dist/styles/fieldset.css +2 -0
  510. package/dist/styles/file-picker.css +1 -1
  511. package/dist/styles/floating-action-button.css +1 -1
  512. package/dist/styles/footer.css +2 -0
  513. package/dist/styles/form.css +2 -0
  514. package/dist/styles/header.css +2 -0
  515. package/dist/styles/highlight.css +1 -1
  516. package/dist/styles/icon-button.css +1 -1
  517. package/dist/styles/list.css +1 -1
  518. package/dist/styles/locale.css +1 -1
  519. package/dist/styles/menu.css +1 -1
  520. package/dist/styles/menubar.css +2 -0
  521. package/dist/styles/navigation-menu.css +2 -0
  522. package/dist/styles/number-field.css +1 -1
  523. package/dist/styles/otp-field.css +1 -1
  524. package/dist/styles/overlay.css +1 -1
  525. package/dist/styles/page-layout.css +2 -0
  526. package/dist/styles/pagination.css +1 -1
  527. package/dist/styles/panes.css +1 -1
  528. package/dist/styles/pill.css +1 -1
  529. package/dist/styles/popover.css +1 -1
  530. package/dist/styles/progress-box.css +1 -1
  531. package/dist/styles/progress-circular.css +1 -1
  532. package/dist/styles/progress-linear.css +1 -1
  533. package/dist/styles/radio-group.css +1 -1
  534. package/dist/styles/segmented-button.css +1 -1
  535. package/dist/styles/select.css +1 -1
  536. package/dist/styles/sidebar.css +2 -0
  537. package/dist/styles/skeleton.css +1 -1
  538. package/dist/styles/slider.css +1 -1
  539. package/dist/styles/spoiler.css +1 -1
  540. package/dist/styles/switch.css +1 -1
  541. package/dist/styles/table.css +1 -1
  542. package/dist/styles/tabs.css +1 -1
  543. package/dist/styles/text-field.css +1 -1
  544. package/dist/styles/text-link.css +1 -1
  545. package/dist/styles/time-picker.css +1 -1
  546. package/dist/styles/timeline.css +1 -1
  547. package/dist/styles/toggle-group.css +2 -0
  548. package/dist/styles/toggle.css +2 -0
  549. package/dist/styles/transfer.css +2 -0
  550. package/dist/styles.css +1 -1
  551. package/package.json +12 -10
@@ -0,0 +1,45 @@
1
+ import * as React from 'react';
2
+ import { type MPIconButtonProps } from '../icon-button/MPIconButton.js';
3
+ import { type MPPageCollapse, type MPSidebarSide } from '../../internal/page-layout.js';
4
+ export interface MPSidebarTriggerProps extends Omit<MPIconButtonProps, 'icon' | 'label'> {
5
+ /**
6
+ * Which of the layout's two sidebars it opens.
7
+ * @default 'start'
8
+ */
9
+ side?: MPSidebarSide;
10
+ /**
11
+ * The width below which the button appears — the same one the sidebar
12
+ * collapses at, since the button exists exactly while the column does not.
13
+ * Inherited from the [MPPageLayout](./page-layout), which is where it should
14
+ * be set.
15
+ */
16
+ collapseBelow?: MPPageCollapse;
17
+ /** The glyph. Three lines, unless something else is given. */
18
+ icon?: React.ReactNode;
19
+ /**
20
+ * What it does, in words. Defaults to "Open sidebar" / "Close sidebar" in
21
+ * `locale`, and it changes with the state because the button does.
22
+ */
23
+ label?: string;
24
+ /** Which language that word is in. Inherited from the layout. */
25
+ locale?: string;
26
+ }
27
+ /**
28
+ * The button that brings back an [MPSidebar](#mpsidebar) the window has become
29
+ * too narrow to hold.
30
+ *
31
+ * It is drawn only while that is true, and the "while" is a **media query**
32
+ * rather than a piece of state: the button carries a class that hides it from
33
+ * the breakpoint up. That matters more than it looks — a trigger whose presence
34
+ * depended on `matchMedia` would be missing from the markup a server sends and
35
+ * would pop into the header a moment after the page arrived, on every phone,
36
+ * every time.
37
+ *
38
+ * Put it in an [MPHeader](./header)'s `brand` slot, ahead of the mark, which is
39
+ * where thirty years of hamburgers have taught readers to look for it.
40
+ *
41
+ * It has to be inside an [MPPageLayout](./page-layout) to have something to
42
+ * open: outside one there is no sidebar it could be talking about, and it
43
+ * renders nothing at all rather than a button that does nothing.
44
+ */
45
+ export declare const MPSidebarTrigger: React.ForwardRefExoticComponent<MPSidebarTriggerProps & React.RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as o}from"react/jsx-runtime";import*as e from"react";import{MPIcon as r}from"../icon/MPIcon.js";import{MPIconButton as n}from"../icon-button/MPIconButton.js";import{MenuIcon as t}from"../../constants/icons.js";import{useMPLocale as a,useMPMessages as i}from"../../internal/locale.js";import{LAYOUT as s}from"../../internal/messages/layout.js";import{COLLAPSED_ONLY as l,MPPageLayoutContext as c}from"../../internal/page-layout.js";export const MPSidebarTrigger=/*@__PURE__*/e.forwardRef(function({side:m="start",collapseBelow:p,icon:f,label:u,locale:j,className:d,onClick:b,...g},x){const B=e.useContext(c),w=a(j??B.locale),C=i(s,w);if(!B.present)return null;const M=p??B.collapseBelow,P=B.open[m];return o(n,{ref:x,icon:f??o(r,{icon:t}),label:u??(P?C.closeSidebar:C.openSidebar),"aria-expanded":P,className:["mp-sidebar-trigger",l[M],d??""].filter(Boolean).join(" "),onClick:o=>{B.setOpen(m,!P),b?.(o)},...g})});
@@ -0,0 +1,4 @@
1
+ export { MPSidebar } from './MPSidebar.js';
2
+ export type { MPSidebarProps, MPSidebarSide } from './MPSidebar.js';
3
+ export { MPSidebarTrigger } from './MPSidebarTrigger.js';
4
+ export type { MPSidebarTriggerProps } from './MPSidebarTrigger.js';
@@ -0,0 +1 @@
1
+ export{MPSidebar}from"./MPSidebar.js";export{MPSidebarTrigger}from"./MPSidebarTrigger.js";
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useRender } from '@base-ui/react/use-render';
3
- import type { MPColor, MPSize } from '../../types';
3
+ import type { MPColor, MPSize } from '../../types.js';
4
4
  /**
5
5
  * What the placeholder is standing in for.
6
6
  *
@@ -1 +1,2 @@
1
- import{jsx as e}from"react/jsx-runtime";import*as r from"react";import{useRender as l}from"@base-ui/react/use-render";import{CONTROL_SQUARE as o}from"../../internal/scale";const a={xs:"h-3",sm:"h-3.5",md:"h-4",lg:"h-4",xl:"h-5.5"},n={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-2",xl:"gap-1.5"},i={xs:"h-12",sm:"h-16",md:"h-20",lg:"h-28",xl:"h-36"},t="overflow-hidden bg-(--_mp-placeholder)";function s(e){if(void 0!==e)return"number"==typeof e?`${e}px`:e}export const MPSkeleton=/*@__PURE__*/r.forwardRef(function({shape:r="line",lines:m=1,size:d="md",color:p,width:c,height:h,animated:f=!0,label:u,render:x,className:g,style:w,...v},b){const y=f?"animate-pulse motion-reduce:animate-none":"",$="circle"===r?`rounded-mp-full shrink-0 ${o[d]}`:"rect"===r?`rounded-mp-md w-full ${void 0===h?i[d]:""}`:`rounded-mp-xs w-full ${a[d]}`,j=u?{role:"status","aria-busy":!0,"aria-label":u}:{"aria-hidden":!0},k="line"===r&&m>1;return l({render:x,ref:b,props:{"data-mp-size":d,className:(k?["mp-skeleton flex w-full flex-col",n[d],g??""]:["mp-skeleton",t,y,$,g??""]).filter(Boolean).join(" "),style:{"--_mp-placeholder":p?`var(--_mp-color-${p}-container)`:"var(--_mp-color-surface-container-highest)",width:s(c),height:k?void 0:s(h),...w},...j,...k?{children:Array.from({length:m},(r,l)=>e("div",{className:[t,y,"rounded-mp-xs",a[d],l===m-1?"w-3/5":"w-full"].filter(Boolean).join(" ")},l))}:null,...v}})});
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import*as r from"react";import{useRender as l}from"@base-ui/react/use-render";import{CONTROL_SQUARE as o}from"../../internal/scale.js";import{cssLength as a}from"../../internal/length.js";const n={xs:"h-3",sm:"h-3.5",md:"h-4",lg:"h-4",xl:"h-5.5"},s={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-2",xl:"gap-1.5"},i={xs:"h-12",sm:"h-16",md:"h-20",lg:"h-28",xl:"h-36"},t="overflow-hidden bg-(--_mp-placeholder)";export const MPSkeleton=/*@__PURE__*/r.forwardRef(function({shape:r="line",lines:m=1,size:d="md",color:p,width:h,height:c,animated:f=!0,label:u,render:g,className:x,style:w,...j},v){const b=f?"animate-pulse motion-reduce:animate-none":"",k="circle"===r?`rounded-mp-full shrink-0 ${o[d]}`:"rect"===r?`rounded-mp-md w-full ${void 0===c?i[d]:""}`:`rounded-mp-xs w-full ${n[d]}`,y=u?{role:"status","aria-busy":!0,"aria-label":u}:{"aria-hidden":!0},$="line"===r&&m>1;return l({render:g,ref:v,props:{"data-mp-size":d,className:($?["mp-skeleton flex w-full flex-col",s[d],x??""]:["mp-skeleton",t,b,k,x??""]).filter(Boolean).join(" "),style:{"--_mp-placeholder":p?`var(--_mp-color-${p}-container)`:"var(--_mp-color-surface-container-highest)",width:a(h),height:$?void 0:a(c),...w},...y,...$?{children:Array.from({length:m},(r,l)=>e("div",{className:[t,b,"rounded-mp-xs",n[d],l===m-1?"w-3/5":"w-full"].filter(Boolean).join(" ")},l))}:null,...j}})});
@@ -1,2 +1,2 @@
1
- export { MPSkeleton } from './MPSkeleton';
2
- export type { MPSkeletonProps, MPSkeletonShape } from './MPSkeleton';
1
+ export { MPSkeleton } from './MPSkeleton.js';
2
+ export type { MPSkeletonProps, MPSkeletonShape } from './MPSkeleton.js';
@@ -1 +1 @@
1
- export{MPSkeleton}from"./MPSkeleton";
1
+ export{MPSkeleton}from"./MPSkeleton.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPColor, MPOrientation, MPSize } from '../../types';
2
+ import type { MPColor, MPOrientation, MPSize } from '../../types.js';
3
3
  export interface MPSliderProps {
4
4
  /**
5
5
  * The value, or the values. An array is what makes it a range slider — there is
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as s from"react";import{Slider as a}from"@base-ui/react/slider";import{accentSlots as t}from"../../internal/accent";import{MPStateLayer as n}from"../../internal/StateLayer";import{META_TEXT as i,hasContent as o}from"../../internal/scale";const l={xs:{thickness:"h-0.5",cross:"w-0.5",handle:"size-3.5",strip:"h-8",stripCross:"w-8"},sm:{thickness:"h-[3px]",cross:"w-[3px]",handle:"size-4",strip:"h-9",stripCross:"w-9"},md:{thickness:"h-1",cross:"w-1",handle:"size-5",strip:"h-10",stripCross:"w-10"},lg:{thickness:"h-1.5",cross:"w-1.5",handle:"size-6",strip:"h-11",stripCross:"w-11"},xl:{thickness:"h-2",cross:"w-2",handle:"size-7",strip:"h-12",stripCross:"w-12"}},c=["duration-(--mp-sys-motion-duration-short2) ease-mp-standard","motion-reduce:transition-none"].join(" "),m={xs:"size-8",sm:"size-9",md:"size-10",lg:"size-11",xl:"size-12"};export const MPSlider=/*@__PURE__*/s.forwardRef(function({value:s,defaultValue:u,onValueChange:p,onValueCommitted:d,min:f=0,max:h=100,step:g=1,label:x,description:b,showValue:w=!1,format:j,orientation:y="horizontal",size:z="md",color:v="primary",disabled:C=!1,name:N,"aria-label":_},k){const V="vertical"===y,$=l[z],A=s??u,B=Array.isArray(A)?A.length:1;return r(a.Root,{ref:k,value:s,defaultValue:u,onValueChange:e=>p?.(e),onValueCommitted:e=>d?.(e),min:f,max:h,step:g,disabled:C,orientation:y,format:j,name:N,"data-mp-size":z,className:["mp-slider flex",V?"w-fit flex-col items-center gap-2":"w-full flex-col gap-1",C?"cursor-default":""].filter(Boolean).join(" "),style:t(v),children:[o(x)||w?r("div",{className:["flex w-full items-baseline gap-2",i].join(" "),children:[o(x)?e(a.Label,{className:C?"text-mp-on-surface/38":"text-mp-on-surface-variant",children:x}):null,w?e(a.Value,{className:["ms-auto tabular-nums",C?"text-mp-on-surface/38":"text-mp-on-surface"].join(" ")}):null]}):null,e(a.Control,{className:["mp-slider__control group/rail flex touch-none items-center justify-center select-none",V?`${$.stripCross} h-40 flex-col`:`w-full ${$.strip}`,C?"":"cursor-pointer"].filter(Boolean).join(" "),children:r(a.Track,{className:["mp-slider__track rounded-mp-full relative",V?`${$.cross} h-full`:`${$.thickness} w-full`,C?"bg-mp-on-surface/12":"bg-mp-surface-container-highest"].join(" "),children:[e(a.Indicator,{className:["rounded-mp-full","[transition-property:inset-inline-start,width,bottom,height]",c,"group-data-dragging/rail:transition-none",C?"bg-mp-on-surface/38":"bg-(--_mp-accent)"].join(" ")}),Array.from({length:B},(r,s)=>e(a.Thumb,{index:s,"aria-label":o(x)?void 0:_,className:["mp-slider__handle group rounded-mp-full relative outline-none","[transition-property:inset-inline-start,bottom]",c,"data-dragging:transition-none",$.handle,C?"bg-mp-on-surface/38 cursor-default":"bg-(--_mp-accent) cursor-grab active:cursor-grabbing"].join(" "),children:C?null:e(n,{layer:["top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full",m[z],"bg-(--_mp-accent)"].join(" "),className:"group-data-dragging:opacity-16"})},s))]})}),o(b)?e("div",{className:[i,C?"text-mp-on-surface/38":"text-mp-on-surface-variant"].join(" "),children:b}):null]})});
1
+ "use client";
2
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as s from"react";import{Slider as a}from"@base-ui/react/slider";import{accentSlots as t}from"../../internal/accent.js";import{MPStateLayer as n}from"../../internal/StateLayer.js";import{META_TEXT as i,hasContent as o}from"../../internal/scale.js";const l={xs:{thickness:"h-0.5",cross:"w-0.5",handle:"size-3.5",strip:"h-8",stripCross:"w-8"},sm:{thickness:"h-[3px]",cross:"w-[3px]",handle:"size-4",strip:"h-9",stripCross:"w-9"},md:{thickness:"h-1",cross:"w-1",handle:"size-5",strip:"h-10",stripCross:"w-10"},lg:{thickness:"h-1.5",cross:"w-1.5",handle:"size-6",strip:"h-11",stripCross:"w-11"},xl:{thickness:"h-2",cross:"w-2",handle:"size-7",strip:"h-12",stripCross:"w-12"}},c=/*@__PURE__*/["duration-(--mp-sys-motion-duration-short2) ease-mp-standard","motion-reduce:transition-none"].join(" "),m={xs:"size-8",sm:"size-9",md:"size-10",lg:"size-11",xl:"size-12"};export const MPSlider=/*@__PURE__*/s.forwardRef(function({value:d,defaultValue:u,onValueChange:p,onValueCommitted:f,min:h=0,max:g=100,step:x=1,label:b,description:w,showValue:j=!1,format:y,orientation:z="horizontal",size:v="md",color:C="primary",disabled:N=!1,name:_,"aria-label":k},V){const $="vertical"===z,A=l[v],B=s.useId(),I=d??u,L=Array.isArray(I)?I.length:1;return r(a.Root,{ref:V,value:d,defaultValue:u,onValueChange:e=>p?.(e),onValueCommitted:e=>f?.(e),min:h,max:g,step:x,disabled:N,orientation:z,format:y,name:_,"data-mp-size":v,className:["mp-slider flex",$?"w-fit flex-col items-center gap-2":"w-full flex-col gap-1",N?"cursor-default":""].filter(Boolean).join(" "),style:t(C),children:[o(b)||j?r("div",{className:["flex w-full items-baseline gap-2",i].join(" "),children:[o(b)?e(a.Label,{className:N?"text-mp-on-surface/38":"text-mp-on-surface-variant",children:b}):null,j?e(a.Value,{className:["ms-auto tabular-nums",N?"text-mp-on-surface/38":"text-mp-on-surface"].join(" ")}):null]}):null,e(a.Control,{className:["mp-slider__control group/rail flex touch-none items-center justify-center select-none",$?`${A.stripCross} h-40 flex-col`:`w-full ${A.strip}`,N?"":"cursor-pointer"].filter(Boolean).join(" "),children:r(a.Track,{className:["mp-slider__track rounded-mp-full relative",$?`${A.cross} h-full`:`${A.thickness} w-full`,N?"bg-mp-on-surface/12":"bg-mp-surface-container-highest"].join(" "),children:[e(a.Indicator,{className:["rounded-mp-full","[transition-property:inset-inline-start,width,bottom,height]",c,"group-data-dragging/rail:transition-none",N?"bg-mp-on-surface/38":"bg-(--_mp-accent)"].join(" ")}),Array.from({length:L},(r,s)=>e(a.Thumb,{index:s,"aria-label":o(b)?void 0:k,"aria-describedby":o(w)?B:void 0,className:["mp-slider__handle group rounded-mp-full relative outline-none","[transition-property:inset-inline-start,bottom]",c,"data-dragging:transition-none",A.handle,N?"bg-mp-on-surface/38 cursor-default":"bg-(--_mp-accent) cursor-grab active:cursor-grabbing"].join(" "),children:N?null:e(n,{layer:["top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full",m[v],"bg-(--_mp-accent)"].join(" "),className:"group-data-dragging:opacity-16"})},s))]})}),o(w)?e("div",{id:B,className:[i,N?"text-mp-on-surface/38":"text-mp-on-surface-variant"].join(" "),children:w}):null]})});
@@ -1,2 +1,2 @@
1
- export { MPSlider } from './MPSlider';
2
- export type { MPSliderProps } from './MPSlider';
1
+ export { MPSlider } from './MPSlider.js';
2
+ export type { MPSliderProps } from './MPSlider.js';
@@ -1 +1 @@
1
- export{MPSlider}from"./MPSlider";
1
+ export{MPSlider}from"./MPSlider.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPAlign, MPColor, MPSize } from '../../types';
2
+ import type { MPAlign, MPColor, MPSize } from '../../types.js';
3
3
  /**
4
4
  * Where the stack sits.
5
5
  *
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Toast as s}from"@base-ui/react/toast";import{MPIcon as i}from"../icon/MPIcon";import{CloseIcon as n}from"../../constants/icons";import{accentSlots as r}from"../../internal/accent";import{useMPLocale as a,useMPMessages as l}from"../../internal/locale";import{MPStateLayer as c}from"../../internal/StateLayer";import{PORTAL_LAYER as m}from"../../internal/surface";const p={"top-start":"top-0 items-start","top-center":"top-0 items-center","top-end":"top-0 items-end","bottom-start":"bottom-0 flex-col-reverse items-start","bottom-center":"bottom-0 flex-col-reverse items-center","bottom-end":"bottom-0 flex-col-reverse items-end"},d=["transition-[opacity,translate] duration-(--mp-sys-motion-duration-short4)","ease-mp-standard","data-starting-style:opacity-0 data-ending-style:opacity-0"].join(" "),u={top:"motion-safe:data-starting-style:-translate-y-full motion-safe:data-ending-style:-translate-y-full",bottom:"motion-safe:data-starting-style:translate-y-full motion-safe:data-ending-style:translate-y-full"},f={xs:"text-mp-body-small",sm:"text-mp-body-small",md:"text-mp-body-medium",lg:"text-mp-body-medium",xl:"text-mp-body-large"},x={xs:"min-h-9 gap-1.5 py-1.5 ps-3 pe-1.5",sm:"min-h-10 gap-2 py-2 ps-3.5 pe-2",md:"min-h-12 gap-2 py-2.5 ps-4 pe-2",lg:"min-h-14 gap-3 py-3 ps-5 pe-2.5",xl:"min-h-16 gap-3 py-3.5 pe-3 ps-6"},b={xs:16,sm:18,md:20,lg:22,xl:24};function y(e){const{color:t,icon:o,message:s,actionLabel:i,onAction:n,...r}=e;return{...r,title:s,data:{color:t,icon:o},actionProps:void 0===i?void 0:{children:i,onClick:n}}}export function useMPSnackbar(){const e=s.useToastManager();return o.useMemo(()=>({add:t=>e.add(y(t)),close:t=>e.close(t),update:(t,o)=>e.update(t,y(o)),promise:(t,o)=>e.promise(t,{loading:y(o.loading),success:e=>y("function"==typeof o.success?o.success(e):o.success),error:e=>y("function"==typeof o.error?o.error(e):o.error)}),snackbars:e.toasts}),[e])}function h({toast:o,color:a,size:l,showClose:m,closeLabel:p,swipeDirection:y,edge:h}){const g=o.data?.color??a,v=o.data?.icon,w={"--_mp-plate":g?`var(--_mp-color-${g}-container)`:"var(--_mp-color-inverse-surface)","--_mp-on-plate":g?`var(--_mp-color-on-${g}-container)`:"var(--_mp-color-inverse-on-surface)","--_mp-plate-action":g?`var(--_mp-color-${g})`:"var(--_mp-color-inverse-primary)",...g?r(g):null};return t(s.Root,{toast:o,swipeDirection:y,"data-mp-size":l,className:["mp-snackbar rounded-mp-xs shadow-mp-3 pointer-events-auto flex w-full items-center","bg-(--_mp-plate) text-(--_mp-on-plate) outline-none",x[l],f[l],d,u[h],"data-limited:hidden"].join(" "),style:w,children:[v?e("span",{className:"flex shrink-0 items-center",children:v}):null,e(s.Title,{render:e("span",{}),className:"min-w-0 flex-1 py-0.5 ps-1 [min-inline-size:min(280px,100%)]"}),e(s.Action,{className:["text-mp-label-large flex shrink-0 cursor-pointer items-center","rounded-mp-full h-8 px-3 text-(--_mp-plate-action)","transition-colors duration-(--mp-sys-motion-duration-short4)","hover:bg-(--_mp-plate-action)/8 focus-visible:bg-(--_mp-plate-action)/10","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none"].join(" ")}),m?t(s.Close,{"aria-label":p,className:["group rounded-mp-full relative flex size-8 shrink-0 cursor-pointer","items-center justify-center text-(--_mp-on-plate)","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none"].join(" "),children:[e(c,{}),e(i,{icon:n,size:b[l]})]}):null]})}function g({position:t,width:o,...i}){const{toasts:n}=s.useToastManager(),r=t.startsWith("top")?"top":"bottom",a=["top"===r?"up":"down","left","right"];return e(s.Portal,{children:e(s.Viewport,{className:[m,"pointer-events-none fixed inset-x-0 flex flex-col gap-2 p-4",p[t]].join(" "),children:n.map(t=>e("div",{className:"w-full",style:{maxWidth:"number"==typeof o?`${o}px`:o},children:e(h,{toast:t,swipeDirection:a,edge:r,...i})},t.id))})})}export function MPSnackbarProvider({color:o,position:i="bottom-start",timeout:n=5e3,limit:r=3,width:c=600,size:m="md",showClose:p=!0,closeLabel:d,locale:u,children:f}){const x=a(u),b=l("common",x);return t(s.Provider,{timeout:n,limit:r,children:[f,e(g,{position:i,width:c,color:o,size:m,showClose:p,closeLabel:d??b.close})]})}
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Toast as s}from"@base-ui/react/toast";import{MPIcon as i}from"../icon/MPIcon.js";import{CloseIcon as n}from"../../constants/icons.js";import{accentSlots as r}from"../../internal/accent.js";import{useMPLocale as a,useMPMessages as l}from"../../internal/locale.js";import{COMMON as m}from"../../internal/messages/common.js";import{MPStateLayer as c}from"../../internal/StateLayer.js";import{cssLength as p}from"../../internal/length.js";import{PORTAL_LAYER as d}from"../../internal/surface.js";const u={"top-start":"top-0 items-start","top-center":"top-0 items-center","top-end":"top-0 items-end","bottom-start":"bottom-0 flex-col-reverse items-start","bottom-center":"bottom-0 flex-col-reverse items-center","bottom-end":"bottom-0 flex-col-reverse items-end"},f=/*@__PURE__*/["transition-[opacity,translate] duration-(--mp-sys-motion-duration-short4)","ease-mp-standard","data-starting-style:opacity-0 data-ending-style:opacity-0"].join(" "),x={top:"motion-safe:data-starting-style:-translate-y-full motion-safe:data-ending-style:-translate-y-full",bottom:"motion-safe:data-starting-style:translate-y-full motion-safe:data-ending-style:translate-y-full"},b={xs:"text-mp-body-small",sm:"text-mp-body-small",md:"text-mp-body-medium",lg:"text-mp-body-medium",xl:"text-mp-body-large"},y={xs:"min-h-9 gap-1.5 py-1.5 ps-3 pe-1.5",sm:"min-h-10 gap-2 py-2 ps-3.5 pe-2",md:"min-h-12 gap-2 py-2.5 ps-4 pe-2",lg:"min-h-14 gap-3 py-3 ps-5 pe-2.5",xl:"min-h-16 gap-3 py-3.5 pe-3 ps-6"},h={xs:16,sm:18,md:20,lg:22,xl:24};function g(e){const{color:t,icon:o,message:s,actionLabel:i,onAction:n,...r}=e;return{...r,title:s,data:{color:t,icon:o},actionProps:void 0===i?void 0:{children:i,onClick:n}}}export function useMPSnackbar(){const e=s.useToastManager();return o.useMemo(()=>({add:t=>e.add(g(t)),close:t=>e.close(t),update:(t,o)=>e.update(t,g(o)),promise:(t,o)=>e.promise(t,{loading:g(o.loading),success:e=>g("function"==typeof o.success?o.success(e):o.success),error:e=>g("function"==typeof o.error?o.error(e):o.error)}),snackbars:e.toasts}),[e])}function v({toast:o,color:a,size:l,showClose:m,closeLabel:p,swipeDirection:d,edge:u}){const g=o.data?.color??a,v=o.data?.icon,j={"--_mp-plate":g?`var(--_mp-color-${g}-container)`:"var(--_mp-color-inverse-surface)","--_mp-on-plate":g?`var(--_mp-color-on-${g}-container)`:"var(--_mp-color-inverse-on-surface)","--_mp-plate-action":g?`var(--_mp-color-${g})`:"var(--_mp-color-inverse-primary)",...g?r(g):null};return t(s.Root,{toast:o,swipeDirection:d,"data-mp-size":l,className:["mp-snackbar rounded-mp-xs shadow-mp-3 pointer-events-auto flex w-full items-center","bg-(--_mp-plate) text-(--_mp-on-plate) outline-none",y[l],b[l],f,x[u],"data-limited:hidden"].join(" "),style:j,children:[v?e("span",{className:"flex shrink-0 items-center",children:v}):null,e(s.Title,{render:e("span",{}),className:"min-w-0 flex-1 py-0.5 ps-1 [min-inline-size:min(280px,100%)]"}),e(s.Action,{className:["text-mp-label-large flex shrink-0 cursor-pointer items-center","rounded-mp-full h-8 px-3 text-(--_mp-plate-action)","transition-colors duration-(--mp-sys-motion-duration-short4)","hover:bg-(--_mp-plate-action)/8 focus-visible:bg-(--_mp-plate-action)/10","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none"].join(" ")}),m?t(s.Close,{"aria-label":p,className:["group rounded-mp-full relative flex size-8 shrink-0 cursor-pointer","items-center justify-center text-(--_mp-on-plate)","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none"].join(" "),children:[e(c,{}),e(i,{icon:n,size:h[l]})]}):null]})}function j({position:t,width:o,...i}){const{toasts:n}=s.useToastManager(),r=t.startsWith("top")?"top":"bottom",a=["top"===r?"up":"down","left","right"];return e(s.Portal,{children:e(s.Viewport,{className:[d,"pointer-events-none fixed inset-x-0 flex flex-col gap-2 p-4",u[t]].join(" "),children:n.map(t=>e("div",{className:"w-full",style:{maxWidth:p(o)},children:e(v,{toast:t,swipeDirection:a,edge:r,...i})},t.id))})})}export function MPSnackbarProvider({color:o,position:i="bottom-start",timeout:n=5e3,limit:r=3,width:c=600,size:p="md",showClose:d=!0,closeLabel:u,locale:f,children:x}){const b=a(f),y=l(m,b);return t(s.Provider,{timeout:n,limit:r,children:[x,e(j,{position:i,width:c,color:o,size:p,showClose:d,closeLabel:u??y.close})]})}
@@ -1,2 +1,2 @@
1
- export { MPSnackbarProvider, useMPSnackbar } from './MPSnackbar';
2
- export type { MPSnackbarData, MPSnackbarOptions, MPSnackbarPosition, MPSnackbarProviderProps } from './MPSnackbar';
1
+ export { MPSnackbarProvider, useMPSnackbar } from './MPSnackbar.js';
2
+ export type { MPSnackbarData, MPSnackbarOptions, MPSnackbarPosition, MPSnackbarProviderProps } from './MPSnackbar.js';
@@ -1 +1 @@
1
- export{MPSnackbarProvider,useMPSnackbar}from"./MPSnackbar";
1
+ export{MPSnackbarProvider,useMPSnackbar}from"./MPSnackbar.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPColor, MPSize, MPVariant } from '../../types';
2
+ import type { MPColor, MPSize, MPVariant } from '../../types.js';
3
3
  export interface MPSpoilerProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'onChange'> {
4
4
  /** Whether the content is uncovered. Use with `onRevealedChange` to control it. */
5
5
  revealed?: boolean;
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{MPButton as o}from"../button/MPButton";import{inertProps as i}from"../../internal/inert";import{useMPLocale as n,useMPMessages as t}from"../../internal/locale";import{hasContent as l,META_TEXT as d,SHEET_PAD as s,SHEET_PAD_X as c,SHEET_PAD_Y as m}from"../../internal/scale";import{CONTAINER_SURFACE as p}from"../../internal/surface";const f="[background-color:color-mix(in_oklab,var(--_mp-color-surface)_55%,transparent)]";export const MPSpoiler=/*@__PURE__*/a.forwardRef(function({revealed:u,defaultRevealed:v=!1,onRevealedChange:x,locale:h,label:b,hideLabel:j,description:N,action:g,reversible:y=!1,maxHeight:z,blur:k=10,padded:w=!0,variant:B="outlined",size:C="md",color:R="primary",className:_,children:H,...M},P){const S=n(h),$=t("spoiler",S),I=a.useId(),[L,q]=a.useState(v),A=u??L,D=e=>{void 0===u&&q(e),x?.(e)},E=!1===N?null:N??$.notice;return r("div",{ref:P,"data-mp-size":C,"data-mp-variant":B,"data-mp-revealed":A||void 0,className:["mp-spoiler rounded-mp-md relative isolate overflow-hidden","box-border",p[B],"text-mp-on-surface",_??""].filter(Boolean).join(" "),...M,children:[e("div",{id:I,className:["min-w-0",w?s[C]:"","transition-[filter] duration-(--mp-sys-motion-duration-short4) ease-mp-standard","motion-reduce:transition-none",A?"":"select-none"].filter(Boolean).join(" "),style:{filter:A?void 0:`blur(${k}px)`,maxHeight:A?void 0:z,overflow:A?void 0:"hidden"},...i(!A),children:H}),A?null:r("div",{className:["absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 text-center",s[C],f].join(" "),children:[l(E)?e("p",{className:`text-mp-on-surface-variant m-0 ${d}`,children:E}):null,g??e(o,{variant:"tonal",size:C,color:R,onClick:()=>D(!0),"aria-expanded":!1,"aria-controls":I,children:b??$.reveal})]}),A&&y?e("div",{className:["flex justify-end",c[C],m[C],"pt-0"].join(" "),children:e(o,{variant:"text",size:C,color:R,onClick:()=>D(!1),"aria-expanded":!0,"aria-controls":I,children:j??$.hide})}):null]})});
1
+ "use client";
2
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as a from"react";import{MPButton as o}from"../button/MPButton.js";import{inertProps as i}from"../../internal/inert.js";import{useMPLocale as n,useMPMessages as t}from"../../internal/locale.js";import{SPOILER as l}from"../../internal/messages/spoiler.js";import{hasContent as s,META_TEXT as d,SHEET_PAD as c,SHEET_PAD_X as m,SHEET_PAD_Y as p}from"../../internal/scale.js";import{CONTAINER_SURFACE as f}from"../../internal/surface.js";const u="[background-color:color-mix(in_oklab,var(--_mp-color-surface)_55%,transparent)]";export const MPSpoiler=/*@__PURE__*/a.forwardRef(function({revealed:v,defaultRevealed:x=!1,onRevealedChange:h,locale:j,label:b,hideLabel:g,description:N,action:y,reversible:z=!1,maxHeight:k,blur:w=10,padded:B=!0,variant:C="outlined",size:R="md",color:_="primary",className:H,children:M,...P},S){const $=n(j),I=t(l,$),L=a.useId(),[q,A]=a.useState(x),D=v??q,E=e=>{void 0===v&&A(e),h?.(e)},F=!1===N?null:N??I.notice;return r("div",{ref:S,"data-mp-size":R,"data-mp-variant":C,"data-mp-revealed":D||void 0,className:["mp-spoiler rounded-mp-md relative isolate overflow-hidden","box-border",f[C],"text-mp-on-surface",H??""].filter(Boolean).join(" "),...P,children:[e("div",{id:L,className:["min-w-0",B?c[R]:"","transition-[filter] duration-(--mp-sys-motion-duration-short4) ease-mp-standard","motion-reduce:transition-none",D?"":"select-none"].filter(Boolean).join(" "),style:{filter:D?void 0:`blur(${w}px)`,maxHeight:D?void 0:k,overflow:D?void 0:"hidden"},...i(!D),children:M}),D?null:r("div",{className:["absolute inset-0 z-10 flex flex-col items-center justify-center gap-2 text-center",c[R],u].join(" "),children:[s(F)?e("p",{className:`text-mp-on-surface-variant m-0 ${d}`,children:F}):null,y??e(o,{variant:"tonal",size:R,color:_,onClick:()=>E(!0),"aria-expanded":!1,"aria-controls":L,children:b??I.reveal})]}),D&&z?e("div",{className:["flex justify-end",m[R],p[R],"pt-0"].join(" "),children:e(o,{variant:"text",size:R,color:_,onClick:()=>E(!1),"aria-expanded":!0,"aria-controls":L,children:g??I.hide})}):null]})});
@@ -1,2 +1,2 @@
1
- export { MPSpoiler } from './MPSpoiler';
2
- export type { MPSpoilerProps } from './MPSpoiler';
1
+ export { MPSpoiler } from './MPSpoiler.js';
2
+ export type { MPSpoilerProps } from './MPSpoiler.js';
@@ -1 +1 @@
1
- export{MPSpoiler}from"./MPSpoiler";
1
+ export{MPSpoiler}from"./MPSpoiler.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPColor, MPSize } from '../../types';
2
+ import type { MPColor, MPSize } from '../../types.js';
3
3
  /** Which side of the track the label sits on. */
4
4
  export type MPSwitchLabelPlacement = 'start' | 'end';
5
5
  export interface MPSwitchProps {
@@ -1 +1,2 @@
1
- import{jsx as e,Fragment as t,jsxs as a}from"react/jsx-runtime";import*as r from"react";import{Switch as n}from"@base-ui/react/switch";import{Field as i}from"@base-ui/react/field";import{MPIcon as s}from"../icon/MPIcon";import{CheckIcon as o,CloseIcon as c}from"../../constants/icons";import{accentSlots as l}from"../../internal/accent";import{MPStateLayer as d}from"../../internal/StateLayer";import{MPSupportingText as h}from"../../internal/SupportingText";import{PROSE_TEXT as m,hasContent as p}from"../../internal/scale";const u={xs:{track:"h-5 w-8",thumb:"left-[5px] size-2.5 data-checked:left-[15px] data-checked:size-3.5",halo:"size-8",glyph:8},sm:{track:"h-6 w-10",thumb:"left-1.5 size-3 data-checked:left-[19px] data-checked:size-[18px]",halo:"size-9",glyph:10},md:{track:"h-8 w-13",thumb:"left-2 size-4 data-checked:left-6 data-checked:size-6",halo:"size-10",glyph:14},lg:{track:"h-9 w-15",thumb:"left-[9px] size-[18px] data-checked:left-7 data-checked:size-7",halo:"size-11",glyph:16},xl:{track:"h-10 w-17",thumb:"left-2.5 size-5 data-checked:left-[33px] data-checked:size-[30px]",halo:"size-12",glyph:18}};export const MPSwitch=/*@__PURE__*/r.forwardRef(function({checked:f,defaultChecked:g,onCheckedChange:k,label:b,description:x,errorMessage:y,icons:z=!1,labelPlacement:j="end",size:w="md",color:N="primary",required:_=!1,disabled:C=!1,readOnly:M=!1,name:v,id:P,fullWidth:R=!1},S){const W=p(y),q=W?"error":N,F=u[w],I=r.useId(),L=P??I,O=e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(n.Root,{ref:S,id:L,name:v,checked:f,defaultChecked:g,required:_,disabled:C,readOnly:M,onCheckedChange:e=>k?.(e),className:["mp-switch__track group relative box-border inline-flex shrink-0 p-0","rounded-mp-full appearance-none font-[inherit] outline-none","transition-[background-color,box-shadow]","duration-(--mp-sys-motion-duration-short4) ease-mp-standard",F.track,C?["bg-mp-surface-container-highest inset-ring-2 inset-ring-mp-on-surface/12","cursor-default","data-checked:bg-mp-on-surface/12 data-checked:inset-ring-0"].join(" "):[M?"cursor-default":"cursor-pointer","bg-mp-surface-container-highest inset-ring-2",W?"inset-ring-mp-error":"inset-ring-mp-outline","data-checked:inset-ring-0 data-checked:bg-(--_mp-accent)"].join(" ")].join(" "),children:a(n.Thumb,{className:["mp-switch__thumb absolute top-1/2 flex -translate-y-1/2 items-center justify-center","rounded-full","transition-[left,width,height,background-color]","duration-(--mp-sys-motion-duration-short4) ease-mp-standard",F.thumb,C?"bg-mp-on-surface/38 data-checked:bg-mp-surface-container-highest":[W?"bg-mp-error":"bg-mp-outline","data-checked:bg-(--_mp-on-accent)"].join(" ")].join(" "),children:[C?null:e(d,{layer:["top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full",F.halo,"bg-mp-on-surface group-data-checked:bg-(--_mp-accent)"].join(" ")}),z?a(t,{children:[e("span",{className:["absolute inset-0 flex items-center justify-center","transition-opacity duration-(--mp-sys-motion-duration-short4)","ease-mp-standard opacity-0 group-data-checked:opacity-100",C?"text-mp-surface-container-highest":"text-(--_mp-accent)"].join(" "),children:e(s,{icon:o,size:F.glyph,strokeWidth:3})}),e("span",{className:["absolute inset-0 flex items-center justify-center","text-mp-surface-container-highest","transition-opacity duration-(--mp-sys-motion-duration-short4)","ease-mp-standard group-data-checked:opacity-0"].join(" "),children:e(s,{icon:c,size:F.glyph,strokeWidth:3})})]}):null]})})}),T=p(b)||p(x)||W?a("span",{className:["flex min-w-0 flex-col gap-0.5","start"===j?"flex-1":""].filter(Boolean).join(" "),children:[p(b)?a(i.Label,{htmlFor:L,className:["leading-[1.4]",C?"text-mp-on-surface/38 cursor-default":M?"text-mp-on-surface":"text-mp-on-surface cursor-pointer"].join(" "),children:[b,_?e("span",{"aria-hidden":"true",children:" *"}):null]}):null,e(h,{description:x,errorMessage:y})]}):null;return e(i.Root,{className:["mp-switch align-top",R?"flex w-full":"inline-flex"].join(" "),disabled:C,invalid:W,"data-mp-size":w,style:l(q),children:e("div",{className:["flex w-full items-start gap-3",m[w]].join(" "),children:a(t,"start"===j?{children:[T,O]}:{children:[O,T]})})})});
1
+ "use client";
2
+ import{jsx as e,Fragment as t,jsxs as a}from"react/jsx-runtime";import*as r from"react";import{Switch as n}from"@base-ui/react/switch";import{Field as i}from"@base-ui/react/field";import{MPIcon as s}from"../icon/MPIcon.js";import{CheckIcon as o,CloseIcon as c}from"../../constants/icons.js";import{accentSlots as l}from"../../internal/accent.js";import{MPStateLayer as d}from"../../internal/StateLayer.js";import{MPSupportingText as h}from"../../internal/SupportingText.js";import{PROSE_TEXT as m,hasContent as p}from"../../internal/scale.js";const u={xs:{track:"h-5 w-8",thumb:"start-[5px] size-2.5 data-checked:start-[15px] data-checked:size-3.5",halo:"size-8",glyph:8},sm:{track:"h-6 w-10",thumb:"start-1.5 size-3 data-checked:start-[19px] data-checked:size-[18px]",halo:"size-9",glyph:10},md:{track:"h-8 w-13",thumb:"start-2 size-4 data-checked:start-6 data-checked:size-6",halo:"size-10",glyph:14},lg:{track:"h-9 w-15",thumb:"start-[9px] size-[18px] data-checked:start-7 data-checked:size-7",halo:"size-11",glyph:16},xl:{track:"h-10 w-17",thumb:"start-2.5 size-5 data-checked:start-[33px] data-checked:size-[30px]",halo:"size-12",glyph:18}};export const MPSwitch=/*@__PURE__*/r.forwardRef(function({checked:f,defaultChecked:g,onCheckedChange:k,label:b,description:x,errorMessage:y,icons:j=!1,labelPlacement:z="end",size:w="md",color:N="primary",required:_=!1,disabled:C=!1,readOnly:M=!1,name:v,id:P,fullWidth:R=!1},S){const W=p(y),q=W?"error":N,F=u[w],I=r.useId(),L=P??I,O=e("span",{className:"flex h-[1lh] shrink-0 items-center",children:e(n.Root,{ref:S,id:L,name:v,checked:f,defaultChecked:g,required:_,disabled:C,readOnly:M,onCheckedChange:e=>k?.(e),className:["mp-switch__track group relative box-border inline-flex shrink-0 p-0","rounded-mp-full appearance-none font-[inherit] outline-none","transition-[background-color,box-shadow]","duration-(--mp-sys-motion-duration-short4) ease-mp-standard",F.track,C?["bg-mp-surface-container-highest inset-ring-2 inset-ring-mp-on-surface/12","cursor-default","data-checked:bg-mp-on-surface/12 data-checked:inset-ring-0"].join(" "):[M?"cursor-default":"cursor-pointer","bg-mp-surface-container-highest inset-ring-2",W?"inset-ring-mp-error":"inset-ring-mp-outline","data-checked:inset-ring-0 data-checked:bg-(--_mp-accent)"].join(" ")].join(" "),children:a(n.Thumb,{className:["mp-switch__thumb absolute top-1/2 flex -translate-y-1/2 items-center justify-center","rounded-full","transition-[inset-inline-start,width,height,background-color]","duration-(--mp-sys-motion-duration-short4) ease-mp-standard",F.thumb,C?"bg-mp-on-surface/38 data-checked:bg-mp-surface-container-highest":[W?"bg-mp-error":"bg-mp-outline","data-checked:bg-(--_mp-on-accent)"].join(" ")].join(" "),children:[C?null:e(d,{layer:["top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full",F.halo,"bg-mp-on-surface group-data-checked:bg-(--_mp-accent)"].join(" ")}),j?a(t,{children:[e("span",{className:["absolute inset-0 flex items-center justify-center","transition-opacity duration-(--mp-sys-motion-duration-short4)","ease-mp-standard opacity-0 group-data-checked:opacity-100",C?"text-mp-surface-container-highest":"text-(--_mp-accent)"].join(" "),children:e(s,{icon:o,size:F.glyph,strokeWidth:3})}),e("span",{className:["absolute inset-0 flex items-center justify-center","text-mp-surface-container-highest","transition-opacity duration-(--mp-sys-motion-duration-short4)","ease-mp-standard group-data-checked:opacity-0"].join(" "),children:e(s,{icon:c,size:F.glyph,strokeWidth:3})})]}):null]})})}),T=p(b)||p(x)||W?a("span",{className:["flex min-w-0 flex-col gap-0.5","start"===z?"flex-1":""].filter(Boolean).join(" "),children:[p(b)?a(i.Label,{htmlFor:L,className:["leading-[1.4]",C?"text-mp-on-surface/38 cursor-default":M?"text-mp-on-surface":"text-mp-on-surface cursor-pointer"].join(" "),children:[b,_?e("span",{"aria-hidden":"true",children:" *"}):null]}):null,e(h,{description:x,errorMessage:y})]}):null;return e(i.Root,{className:["mp-switch align-top",R?"flex w-full":"inline-flex"].join(" "),disabled:C,invalid:W,"data-mp-size":w,style:l(q),children:e("div",{className:["flex w-full items-start gap-3",m[w]].join(" "),children:a(t,"start"===z?{children:[T,O]}:{children:[O,T]})})})});
@@ -1,2 +1,2 @@
1
- export { MPSwitch } from './MPSwitch';
2
- export type { MPSwitchLabelPlacement, MPSwitchProps } from './MPSwitch';
1
+ export { MPSwitch } from './MPSwitch.js';
2
+ export type { MPSwitchLabelPlacement, MPSwitchProps } from './MPSwitch.js';
@@ -1 +1 @@
1
- export{MPSwitch}from"./MPSwitch";
1
+ export{MPSwitch}from"./MPSwitch.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPAlign, MPColor, MPSize, MPVariant } from '../../types';
2
+ import type { MPAlign, MPColor, MPSize, MPVariant } from '../../types.js';
3
3
  /** Which edge the text in a column lines up against. */
4
4
  export type MPTableAlign = MPAlign;
5
5
  /**
@@ -32,14 +32,31 @@ export interface MPTableColumn<Row> {
32
32
  align?: MPTableAlign;
33
33
  /**
34
34
  * Renders the cell. Without it the cell is `row[key]` rendered as-is, which
35
- * covers strings and numbers and nothing else.
35
+ * covers strings, numbers and elements.
36
+ *
37
+ * Anything else — a `Date`, a nested object, an array — draws an empty cell
38
+ * rather than being handed to React, which would throw. Reach for this the
39
+ * moment a column holds something that is not already text.
36
40
  */
37
41
  render?: (row: Row, index: number) => React.ReactNode;
38
42
  }
39
43
  export interface MPTableProps<Row> extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'children'> {
40
44
  /** The columns, in the order they appear. */
41
45
  headers: readonly MPTableColumn<Row>[];
42
- /** The rows. */
46
+ /**
47
+ * The rows. *
48
+ * ## How long a list this holds
49
+ *
50
+ * Every row is rendered, and there is no windowing. That is the right default
51
+ * — windowing costs a measured container, a scroll listener and a row height
52
+ * the component would have to decide for the caller — and it has a ceiling: a
53
+ * few hundred rows is nothing, a few thousand is a visible pause when the list
54
+ * opens, and past that the answer is a narrower list rather than a faster one.
55
+ *
56
+ * A list somebody has to scroll ten thousand rows of is a list that wanted a
57
+ * filter. Where it genuinely is that long, window it yourself and pass the
58
+ * slice.
59
+ */
43
60
  items: readonly Row[];
44
61
  /**
45
62
  * A stable key per row. Defaults to the row's index, which is fine for a
@@ -49,10 +66,15 @@ export interface MPTableProps<Row> extends Omit<React.ComponentPropsWithoutRef<'
49
66
  /** Shown above the table, and read out as its accessible name. */
50
67
  caption?: React.ReactNode;
51
68
  /**
52
- * What to show instead of rows when `items` is empty.
53
- * @default 'No data'
69
+ * What to show instead of rows when `items` is empty. Defaults to the wording
70
+ * in `locale`.
54
71
  */
55
72
  empty?: React.ReactNode;
73
+ /**
74
+ * Which language that line is written in. Falls back to the nearest
75
+ * `MPLocaleProvider`, then to English.
76
+ */
77
+ locale?: string;
56
78
  /**
57
79
  * Tints every other row. Useful for a wide table where the eye has to track
58
80
  * across; noise on a narrow one.
@@ -117,4 +139,4 @@ export interface MPTableProps<Row> extends Omit<React.ComponentPropsWithoutRef<'
117
139
  * than a ref on the scroll container is worth — and a caller who needs one can
118
140
  * put it on a `<div>` of their own around this.
119
141
  */
120
- export declare function MPTable<Row>({ headers, items, getRowKey, caption, empty, striped, hoverable, stickyHeader, onRowClick, variant, size, color, className, style, ...props }: MPTableProps<Row>): React.JSX.Element;
142
+ export declare function MPTable<Row>({ headers, items, getRowKey, caption, empty, locale: localeProp, striped, hoverable, stickyHeader, onRowClick, variant, size, color, className, style, ...props }: MPTableProps<Row>): React.JSX.Element;
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import{accentSlots as r}from"../../internal/accent";import{META_TEXT as o}from"../../internal/scale";import{CONTAINER_SURFACE as l}from"../../internal/surface";const a={xs:"0.625rem",sm:"0.75rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},n={xs:"0.375rem",sm:"0.625rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},i={xs:"text-mp-body-small",sm:"text-mp-body-small",md:"text-mp-body-medium",lg:"text-mp-body-medium",xl:"text-mp-body-large"},m={xs:"text-mp-label-medium",sm:"text-mp-label-medium",md:"text-mp-title-small",lg:"text-mp-title-small",xl:"text-mp-title-medium"},s=["[--_mp-row:transparent]","transition-[background-color] duration-(--mp-sys-motion-duration-short4)"].join(" ");export function MPTable({headers:c,items:d,getRowKey:p,caption:u,empty:x="No data",striped:y=!1,hoverable:f=!1,stickyHeader:v=!1,onRowClick:h,variant:b="outlined",size:g="md",color:w="primary",className:k,style:N,...j}){const _=a[g],$=n[g],C=Boolean(h),A=f||C,B={padding:`${$} ${_}`},z={...B,backgroundColor:"var(--_mp-color-surface-container)"},T={borderTop:"1px solid var(--_mp-color-outline-variant)",backgroundColor:"var(--_mp-row)"};return e("div",{"data-mp-size":g,"data-mp-variant":b,className:["mp-table rounded-mp-md overflow-x-auto",l[b],k??""].filter(Boolean).join(" "),style:{...r(w),...N},...j,children:t("table",{className:`text-mp-on-surface w-full text-start ${i[g]}`,style:{borderCollapse:"collapse"},children:[u?e("caption",{className:`text-mp-on-surface-variant ${o}`,style:{...B,textAlign:"start"},children:u}):null,e("colgroup",{children:c.map(t=>{return e("col",{style:void 0===t.width?void 0:{width:(r=t.width,"number"==typeof r?`${r}px`:r)}},t.key);var r})}),e("thead",{children:e("tr",{children:c.map(t=>e("th",{scope:"col",className:["text-mp-on-surface-variant whitespace-nowrap",m[g],v?"sticky top-0 z-10":""].filter(Boolean).join(" "),style:{...z,textAlign:t.align??"start"},children:t.label??t.key},t.key))})}),e("tbody",{children:0===d.length?e("tr",{className:s,style:T,children:e("td",{colSpan:c.length,className:"text-mp-on-surface-variant",style:{padding:`2rem ${_}`,textAlign:"center"},children:x})}):d.map((t,r)=>e("tr",{className:[s,y&&r%2==1?"[--_mp-row:var(--_mp-color-surface-container-low)]":"",A?"hover:[--_mp-row:var(--_mp-color-surface-container)]":"",C?["cursor-pointer","outline-mp-secondary focus-visible:outline-2","focus-visible:-outline-offset-2 focus-visible:outline-solid outline-none"].join(" "):""].filter(Boolean).join(" "),style:T,tabIndex:C?0:void 0,onClick:h?()=>h(t,r):void 0,onKeyDown:h?e=>{"Enter"!==e.key&&" "!==e.key||e.target===e.currentTarget&&(e.preventDefault(),h(t,r))}:void 0,children:c.map(o=>e("td",{style:{...B,textAlign:o.align??"start"},children:o.render?o.render(t,r):t[o.key]},o.key))},p?p(t,r):r))})]})})}
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as r from"react";import{accentSlots as l}from"../../internal/accent.js";import{useMPLocale as o,useMPMessages as a}from"../../internal/locale.js";import{TABLE as n}from"../../internal/messages/table.js";import{cssLength as i}from"../../internal/length.js";import{META_TEXT as m}from"../../internal/scale.js";import{CONTAINER_SURFACE as s}from"../../internal/surface.js";const c={xs:"0.625rem",sm:"0.75rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},d={xs:"0.375rem",sm:"0.625rem",md:"1rem",lg:"1.25rem",xl:"1.5rem"},p={xs:"text-mp-body-small",sm:"text-mp-body-small",md:"text-mp-body-medium",lg:"text-mp-body-medium",xl:"text-mp-body-large"},u={xs:"text-mp-label-medium",sm:"text-mp-label-medium",md:"text-mp-title-small",lg:"text-mp-title-small",xl:"text-mp-title-medium"},x=/*@__PURE__*/["[--_mp-row:transparent]","transition-[background-color] duration-(--mp-sys-motion-duration-short4)"].join(" ");function y(e){if(null==e)return null;const t=typeof e;return"string"===t||"number"===t||"bigint"===t||"boolean"===t||r.isValidElement(e)?e:null}export function MPTable({headers:r,items:f,getRowKey:b,caption:g,empty:h,locale:v,striped:w=!1,hoverable:j=!1,stickyHeader:k=!1,onRowClick:N,variant:_="outlined",size:C="md",color:$="primary",className:A,style:B,...z}){const T=a(n,o(v)),D=c[C],E=d[C],K=Boolean(N),R=j||K,H={padding:`${E} ${D}`},I={...H,backgroundColor:"var(--_mp-color-surface-container)"},M={borderTop:"1px solid var(--_mp-color-outline-variant)",backgroundColor:"var(--_mp-row)"};return e("div",{"data-mp-size":C,"data-mp-variant":_,className:["mp-table rounded-mp-md overflow-x-auto",s[_],A??""].filter(Boolean).join(" "),style:{...l($),...B},...z,children:t("table",{className:`text-mp-on-surface w-full text-start ${p[C]}`,style:{borderCollapse:"collapse"},children:[g?e("caption",{className:`text-mp-on-surface-variant ${m}`,style:{...H,textAlign:"start"},children:g}):null,e("colgroup",{children:r.map(t=>e("col",{style:void 0===t.width?void 0:{width:i(t.width)}},t.key))}),e("thead",{children:e("tr",{children:r.map(t=>e("th",{scope:"col",className:["text-mp-on-surface-variant whitespace-nowrap",u[C],k?"sticky top-0 z-10":""].filter(Boolean).join(" "),style:{...I,textAlign:t.align??"start"},children:t.label??t.key},t.key))})}),e("tbody",{children:0===f.length?e("tr",{className:x,style:M,children:e("td",{colSpan:r.length,className:"text-mp-on-surface-variant",style:{padding:`2rem ${D}`,textAlign:"center"},children:h??T.empty})}):f.map((t,l)=>e("tr",{className:[x,w&&l%2==1?"[--_mp-row:var(--_mp-color-surface-container-low)]":"",R?"hover:[--_mp-row:var(--_mp-color-surface-container)]":"",K?["cursor-pointer","outline-mp-secondary focus-visible:outline-2","focus-visible:-outline-offset-2 focus-visible:outline-solid outline-none"].join(" "):""].filter(Boolean).join(" "),style:M,tabIndex:K?0:void 0,onClick:N?()=>N(t,l):void 0,onKeyDown:N?e=>{"Enter"!==e.key&&" "!==e.key||e.target===e.currentTarget&&(e.preventDefault(),N(t,l))}:void 0,children:r.map(r=>e("td",{style:{...H,textAlign:r.align??"start"},children:r.render?r.render(t,l):y(t[r.key])},r.key))},b?b(t,l):l))})]})})}
@@ -1,2 +1,2 @@
1
- export { MPTable } from './MPTable';
2
- export type { MPTableAlign, MPTableColumn, MPTableProps } from './MPTable';
1
+ export { MPTable } from './MPTable.js';
2
+ export type { MPTableAlign, MPTableColumn, MPTableProps } from './MPTable.js';
@@ -1 +1 @@
1
- export{MPTable}from"./MPTable";
1
+ export{MPTable}from"./MPTable.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPColor, MPStyleProps } from '../../types';
2
+ import type { MPColor, MPStyleProps } from '../../types.js';
3
3
  /**
4
4
  * MD3's two kinds of tab.
5
5
  *
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Tabs as i}from"@base-ui/react/tabs";import{accentSlots as o}from"../../internal/accent";import{MPStateLayer as n}from"../../internal/StateLayer";import{CONTROL_GAP as r,hasContent as l,SHEET_GAP as s}from"../../internal/scale";const c=/*@__PURE__*/a.createContext({variant:"primary",size:"md",iconPosition:"top",fullWidth:!1}),m={xs:"h-8",sm:"h-10",md:"h-12",lg:"h-14",xl:"h-16"},u={xs:"h-11",sm:"h-13",md:"h-16",lg:"h-18",xl:"h-20"},d={xs:"text-mp-label-medium",sm:"text-mp-label-large",md:"text-mp-title-small",lg:"text-mp-title-small",xl:"text-mp-title-medium"},p={xs:"px-3",sm:"px-3.5",md:"px-4",lg:"px-5",xl:"px-6"},f={xs:12,sm:14,md:16,lg:20,xl:24},h={xs:18,sm:20,md:24,lg:24,xl:28};function x(e,t,i,o=""){a.Children.toArray(e).forEach(e=>{if(!a.isValidElement(e))return void(l(e)&&t.push(e));if(e.type===a.Fragment)return void x(e.props.children,t,i,`${o}${String(e.key)}/`);const n=o?a.cloneElement(e,{key:`${o}${String(e.key)}`}):e;e.type===MPTabPanel?i.push(n):t.push(n)})}export const MPTabs=/*@__PURE__*/a.forwardRef(function({variant:n="primary",color:r="primary",size:l="md",value:m,defaultValue:u,onValueChange:d,iconPosition:p,activateOnFocus:h=!1,loopFocus:v=!0,divider:b=!0,fullWidth:y=!1,className:_,style:g,children:w,"aria-label":j,...P},N){const k=p??("primary"===n?"top":"start"),M=a.useMemo(()=>({variant:n,size:l,iconPosition:k,fullWidth:y}),[n,l,k,y]),$=[],z=[];return x(w,$,z),e(c.Provider,{value:M,children:t(i.Root,{ref:N,value:m,defaultValue:u,onValueChange:e=>d?.(e),"data-mp-size":l,"data-mp-variant":n,className:["mp-tabs flex min-w-0 flex-col",s[l],_??""].filter(Boolean).join(" "),style:{...o(r),"--_mp-tab-inset":`${f[l]}px`,...g},...P,children:[t(i.List,{"aria-label":j,activateOnFocus:h,loopFocus:v,className:["mp-tabs__list relative flex shrink-0",b?"border-mp-outline-variant border-b":"",y?"w-full":"","overflow-x-auto overflow-y-hidden"].filter(Boolean).join(" "),children:[$,e(i.Indicator,{className:["mp-tabs__indicator pointer-events-none absolute bottom-0","bg-(--_mp-accent)","primary"===n?["h-0.75 rounded-t-full","left-[calc(var(--active-tab-left)_+_var(--_mp-tab-inset))]","w-[calc(var(--active-tab-width)_-_2_*_var(--_mp-tab-inset))]"].join(" "):"left-(--active-tab-left) h-0.5 w-(--active-tab-width)","[transition-property:left,width]","duration-(--mp-sys-motion-duration-short4) ease-mp-standard"].join(" ")})]}),z]})})});export const MPTab=/*@__PURE__*/a.forwardRef(function({value:o,icon:s,disabled:f=!1,className:x,children:v,...b},y){const{variant:_,size:g,iconPosition:w,fullWidth:j}=a.useContext(c),P="top"===w&&l(s);return t(i.Tab,{ref:y,value:o,disabled:f,className:["mp-tabs__tab group relative flex shrink-0 items-center justify-center","box-border appearance-none bg-transparent font-[inherit] whitespace-nowrap select-none","overflow-hidden outline-none","transition-[color] duration-(--mp-sys-motion-duration-short4) ease-mp-standard",P?`flex-col gap-1 ${u[g]}`:`flex-row ${m[g]}`,P?"":r[g],d[g],p[g],f?"text-mp-on-surface/38 cursor-default":["text-mp-on-surface-variant cursor-pointer","primary"===_?"data-active:text-(--_mp-accent)":"data-active:text-mp-on-surface"].join(" "),"outline-mp-secondary focus-visible:outline-2 focus-visible:-outline-offset-2","focus-visible:outline-solid",j?"flex-1":"",x??""].filter(Boolean).join(" "),...b,children:[f?null:e(n,{}),l(s)?e("span",{className:"relative flex shrink-0 items-center justify-center",style:{width:h[g],height:h[g]},children:s}):null,l(v)?e("span",{className:"relative truncate",children:v}):null]})});export const MPTabPanel=/*@__PURE__*/a.forwardRef(function({value:t,keepMounted:a=!1,className:o,children:n,...r},l){return e(i.Panel,{ref:l,value:t,keepMounted:a,className:["mp-tabs__panel text-mp-on-surface min-w-0 flex-1","rounded-mp-xs outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none","transition-opacity duration-(--mp-sys-motion-duration-short4) ease-mp-standard","data-starting-style:opacity-0",o??""].filter(Boolean).join(" "),...r,children:n})});
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{Tabs as i}from"@base-ui/react/tabs";import{accentSlots as o}from"../../internal/accent.js";import{MPStateLayer as n}from"../../internal/StateLayer.js";import{CONTROL_GAP as r,hasContent as l,SHEET_GAP as s}from"../../internal/scale.js";const c=/*@__PURE__*/a.createContext({variant:"primary",size:"md",iconPosition:"top",fullWidth:!1}),m={xs:"h-8",sm:"h-10",md:"h-12",lg:"h-14",xl:"h-16"},u={xs:"h-11",sm:"h-13",md:"h-16",lg:"h-18",xl:"h-20"},d={xs:"text-mp-label-medium",sm:"text-mp-label-large",md:"text-mp-title-small",lg:"text-mp-title-small",xl:"text-mp-title-medium"},p={xs:"px-3",sm:"px-3.5",md:"px-4",lg:"px-5",xl:"px-6"},f={xs:12,sm:14,md:16,lg:20,xl:24},h={xs:18,sm:20,md:24,lg:24,xl:28};function x(e,t,i,o=""){a.Children.toArray(e).forEach(e=>{if(!a.isValidElement(e))return void(l(e)&&t.push(e));if(e.type===a.Fragment)return void x(e.props.children,t,i,`${o}${String(e.key)}/`);const n=o?a.cloneElement(e,{key:`${o}${String(e.key)}`}):e;e.type===MPTabPanel?i.push(n):t.push(n)})}export const MPTabs=/*@__PURE__*/a.forwardRef(function({variant:n="primary",color:r="primary",size:l="md",value:m,defaultValue:u,onValueChange:d,iconPosition:p,activateOnFocus:h=!1,loopFocus:v=!0,divider:b=!0,fullWidth:y=!1,className:_,style:g,children:w,"aria-label":j,...P},N){const k=p??("primary"===n?"top":"start"),M=a.useMemo(()=>({variant:n,size:l,iconPosition:k,fullWidth:y}),[n,l,k,y]),$=[],z=[];return x(w,$,z),e(c.Provider,{value:M,children:t(i.Root,{ref:N,value:m,defaultValue:u,onValueChange:e=>d?.(e),"data-mp-size":l,"data-mp-variant":n,className:["mp-tabs flex min-w-0 flex-col",s[l],_??""].filter(Boolean).join(" "),style:{...o(r),"--_mp-tab-inset":`${f[l]}px`,...g},...P,children:[t(i.List,{"aria-label":j,activateOnFocus:h,loopFocus:v,className:["mp-tabs__list relative flex shrink-0",b?"border-mp-outline-variant border-b":"",y?"w-full":"","overflow-x-auto overflow-y-hidden"].filter(Boolean).join(" "),children:[$,e(i.Indicator,{className:["mp-tabs__indicator pointer-events-none absolute bottom-0","bg-(--_mp-accent)","primary"===n?["h-0.75 rounded-t-full","left-[calc(var(--active-tab-left)_+_var(--_mp-tab-inset))]","w-[calc(var(--active-tab-width)_-_2_*_var(--_mp-tab-inset))]"].join(" "):"left-(--active-tab-left) h-0.5 w-(--active-tab-width)","[transition-property:left,width]","duration-(--mp-sys-motion-duration-short4) ease-mp-standard"].join(" ")})]}),z]})})});export const MPTab=/*@__PURE__*/a.forwardRef(function({value:o,icon:s,disabled:f=!1,className:x,children:v,...b},y){const{variant:_,size:g,iconPosition:w,fullWidth:j}=a.useContext(c),P="top"===w&&l(s);return t(i.Tab,{ref:y,value:o,disabled:f,className:["mp-tabs__tab group relative flex shrink-0 items-center justify-center","box-border appearance-none bg-transparent font-[inherit] whitespace-nowrap select-none","overflow-hidden outline-none","transition-[color] duration-(--mp-sys-motion-duration-short4) ease-mp-standard",P?`flex-col gap-1 ${u[g]}`:`flex-row ${m[g]}`,P?"":r[g],d[g],p[g],f?"text-mp-on-surface/38 cursor-default":["text-mp-on-surface-variant cursor-pointer","primary"===_?"data-active:text-(--_mp-accent)":"data-active:text-mp-on-surface"].join(" "),"outline-mp-secondary focus-visible:outline-2 focus-visible:-outline-offset-2","focus-visible:outline-solid",j?"flex-1":"",x??""].filter(Boolean).join(" "),...b,children:[f?null:e(n,{}),l(s)?e("span",{className:"relative flex shrink-0 items-center justify-center",style:{width:h[g],height:h[g]},children:s}):null,l(v)?e("span",{className:"relative truncate",children:v}):null]})});export const MPTabPanel=/*@__PURE__*/a.forwardRef(function({value:t,keepMounted:a=!1,className:o,children:n,...r},l){return e(i.Panel,{ref:l,value:t,keepMounted:a,className:["mp-tabs__panel text-mp-on-surface min-w-0 flex-1","rounded-mp-xs outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none","transition-opacity duration-(--mp-sys-motion-duration-short4) ease-mp-standard","data-starting-style:opacity-0",o??""].filter(Boolean).join(" "),...r,children:n})});
@@ -1,2 +1,2 @@
1
- export { MPTab, MPTabPanel, MPTabs } from './MPTabs';
2
- export type { MPTabIconPosition, MPTabPanelProps, MPTabProps, MPTabsProps, MPTabsVariant, MPTabValue } from './MPTabs';
1
+ export { MPTab, MPTabPanel, MPTabs } from './MPTabs.js';
2
+ export type { MPTabIconPosition, MPTabPanelProps, MPTabProps, MPTabsProps, MPTabsVariant, MPTabValue } from './MPTabs.js';
@@ -1 +1 @@
1
- export{MPTab,MPTabPanel,MPTabs}from"./MPTabs";
1
+ export{MPTab,MPTabPanel,MPTabs}from"./MPTabs.js";
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
- import type { MPMessages } from '../../internal/i18n';
3
- import type { MPStyleProps } from '../../types';
2
+ import type { MPMessages } from '../../internal/i18n.js';
3
+ import type { MPStyleProps } from '../../types.js';
4
4
  /** The input modes this field is built for. */
5
5
  export type MPTextFieldType = 'email' | 'password' | 'text';
6
6
  export interface MPTextFieldProps extends MPStyleProps {
@@ -110,8 +110,19 @@ export interface MPTextFieldProps extends MPStyleProps {
110
110
  */
111
111
  onChange?: (value: string) => void;
112
112
  /**
113
- * Called when Enter is pressed. On a single-line field Enter is then
114
- * swallowed, so a form is submitted once rather than also natively.
113
+ * Called when Enter is pressed.
114
+ *
115
+ * On a single-line field the key is then swallowed, so a surrounding form is
116
+ * submitted once rather than also natively.
117
+ *
118
+ * On a **multiline** field it is not, and both things happen: this fires *and*
119
+ * a newline is inserted. That is deliberate — the prop reports the keystroke
120
+ * rather than deciding what the field does with it — but it is worth knowing
121
+ * before wiring it to something that sends. `disableEnterKey` is what makes
122
+ * Enter a submission there and nothing else.
123
+ *
124
+ * Never called for the Enter that commits an IME composition: that keystroke
125
+ * belongs to the input method, not to the form.
115
126
  */
116
127
  onSubmit?: () => void;
117
128
  /**
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Field as n}from"@base-ui/react/field";import{MPIcon as a}from"../icon/MPIcon";import{MPFieldLabel as r,MPFieldOutline as l,useFloatingLabel as i}from"../../internal/FieldOutline";import{VisibilityIcon as s,VisibilityOffIcon as d}from"../../constants/icons";import{useMPLocale as p,useMPMessages as c}from"../../internal/locale";const u={xs:{padding:"px-2",control:"py-1.5",text:"text-mp-body-medium",icon:16},sm:{padding:"px-3",control:"py-2.5",text:"text-mp-body-medium",icon:18},md:{padding:"px-4",control:"py-4",text:"text-mp-body-large",icon:20},lg:{padding:"px-4",control:"py-5",text:"text-mp-body-large",icon:22},xl:{padding:"px-5",control:"py-6",text:"text-mp-body-large",icon:24}};export const MPTextField=/*@__PURE__*/o.forwardRef(function({value:m,name:f,type:x="text",placeholder:b,autoComplete:g,label:y,floatingLabel:h=!0,onChange:v,onFormReset:w,onSubmit:C,errorMessage:k="",required:j=!1,fullWidth:z=!1,readOnly:E=!1,autoFocus:F=!1,size:M="md",disabled:N=!1,disableEnterKey:P=!1,rows:S,maxLength:q,startIcon:D,resizable:L=!1,id:R,locale:I,passwordLabels:O},B){const K=p(I),U=c("textField",K,O),_=o.useRef(null),[T,W]=o.useState(!1),[$,A]=o.useState(!1),[G,H]=o.useState(m),J=o.useId(),Q=R??J,V=!!S,X=k.length>0,Y=u[M],Z=$?G:m,{shrunk:ee,focusProps:te}=i({floating:h&&!!y,filled:Z.length>0,pinned:!!D}),oe=o.useCallback(e=>{_.current=e,"function"==typeof B?B(e):B&&(B.current=e)},[B]),ne=e=>{e.preventDefault()};return o.useEffect(()=>{$||H(m)},[m,$]),o.useEffect(()=>{F&&!window.matchMedia("(max-width: 599.95px)").matches&&_.current?.focus()},[]),t(n.Root,{className:["mp-text-field group relative",z?"w-full":"inline-block","align-top"].join(" "),disabled:N,invalid:X,"data-mp-size":M,...te,children:[t("div",{className:["relative flex w-full items-center gap-2",Y.padding,V?"py-2":""].filter(Boolean).join(" "),children:[e(l,{label:y,required:j,notched:ee}),D?e("span",{className:"text-mp-on-surface-variant group-data-disabled:text-mp-on-surface/38 flex shrink-0 items-center",children:D}):null,e(n.Control,{render:V?e("textarea",{rows:S}):e("input",{}),id:Q,name:f,type:V?void 0:T?"text":x,required:j,readOnly:E,disabled:N,autoComplete:g,placeholder:ee?b:void 0,maxLength:q,value:Z,ref:oe,className:[`${Y.text} text-mp-on-surface w-full min-w-0 flex-1`,"font-[family-name:var(--mp-sys-typescale-body-large-font)]","appearance-none border-0 bg-transparent px-0 outline-none","caret-mp-primary",Y.control,V?"py-0":"",V&&L?"resize-y":"resize-none","group-data-disabled:text-mp-on-surface/38","placeholder:text-mp-on-surface-variant group-data-disabled:placeholder:text-mp-on-surface/38"].filter(Boolean).join(" "),onChange:e=>{w?.();const t=e.target.value;$&&H(t),v?.(t)},onCompositionStart:()=>{A(!0),H(m)},onCompositionUpdate:e=>{H(e.target.value)},onCompositionEnd:e=>{A(!1);const t=e.target.value;w?.(),v?.(t),H(t)},onKeyDown:e=>{if("Enter"===e.key){if(function(e){const t=e.nativeEvent;return t.isComposing||229===t.keyCode}(e))return;C?.(),V&&!P||e.preventDefault()}}}),"password"!==x||V?null:e("button",{type:"button","aria-label":T?U.hidePassword:U.showPassword,onClick:()=>W(e=>!e),onMouseDown:ne,onMouseUp:ne,disabled:N,className:["text-mp-on-surface-variant -mr-1 flex shrink-0 items-center justify-center","cursor-pointer appearance-none border-0 bg-transparent p-1 font-[inherit]","rounded-full outline-none","hover:text-mp-on-surface focus-visible:text-mp-primary","disabled:text-mp-on-surface/38 disabled:cursor-default"].join(" "),children:e(a,{icon:T?s:d,size:Y.icon})}),y?e(r,{size:M,label:y,required:j,htmlFor:Q,shrunk:ee,multiline:V}):null]}),X?e(n.Error,{match:!0,className:["mp-text-field__support text-mp-body-small text-mp-error mt-1 block",Y.padding,"group-data-disabled:text-mp-on-surface/38"].join(" "),children:k}):null]})});
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as o from"react";import{Field as n}from"@base-ui/react/field";import{MPIcon as r}from"../icon/MPIcon.js";import{MPFieldLabel as a,MPFieldOutline as i,useFloatingLabel as l}from"../../internal/FieldOutline.js";import{MPSupportingText as s}from"../../internal/SupportingText.js";import{VisibilityIcon as d,VisibilityOffIcon as p}from"../../constants/icons.js";import{useMPLocale as u,useMPMessages as c}from"../../internal/locale.js";import{TEXT_FIELD as m}from"../../internal/messages/text-field.js";const f={xs:{padding:"px-2",control:"py-1.5",text:"text-mp-body-medium",icon:16},sm:{padding:"px-3",control:"py-2.5",text:"text-mp-body-medium",icon:18},md:{padding:"px-4",control:"py-4",text:"text-mp-body-large",icon:20},lg:{padding:"px-4",control:"py-5",text:"text-mp-body-large",icon:22},xl:{padding:"px-5",control:"py-6",text:"text-mp-body-large",icon:24}};export const MPTextField=/*@__PURE__*/o.forwardRef(function({value:x,name:b,type:g="text",placeholder:y,autoComplete:h,label:v,floatingLabel:w=!0,onChange:j,onFormReset:C,onSubmit:k,errorMessage:z="",required:M=!1,fullWidth:E=!1,readOnly:N=!1,autoFocus:S=!1,size:F="md",disabled:P=!1,disableEnterKey:q=!1,rows:D,maxLength:L,startIcon:R,resizable:I=!1,id:O,locale:B,passwordLabels:K},T){const U=u(B),$=c(m,U,K),_=o.useRef(null),[W,A]=o.useState(!1),[G,H]=o.useState(!1),[J,Q]=o.useState(x),V=o.useId(),X=O??V,Y=!!D,Z=z.length>0,ee=f[F],te=G?J:x,{shrunk:oe,focusProps:ne}=l({floating:w&&!!v,filled:te.length>0,pinned:!!R}),re=o.useCallback(e=>{_.current=e,"function"==typeof T?T(e):T&&(T.current=e)},[T]),ae=e=>{e.preventDefault()};return o.useEffect(()=>{G||Q(x)},[x,G]),o.useEffect(()=>{S&&!window.matchMedia("(max-width: 599.95px)").matches&&_.current?.focus()},[]),t(n.Root,{className:["mp-text-field group relative",E?"w-full":"inline-block","align-top"].join(" "),disabled:P,invalid:Z,"data-mp-size":F,...ne,children:[t("div",{className:["relative flex w-full items-center gap-2",ee.padding,Y?"py-2":""].filter(Boolean).join(" "),children:[e(i,{label:v,required:M,notched:oe}),R?e("span",{className:"text-mp-on-surface-variant group-data-disabled:text-mp-on-surface/38 flex shrink-0 items-center",children:R}):null,e(n.Control,{render:Y?e("textarea",{rows:D}):e("input",{}),id:X,name:b,type:Y?void 0:W?"text":g,required:M,readOnly:N,disabled:P,autoComplete:h,placeholder:oe?y:void 0,maxLength:L,value:te,ref:re,className:[`${ee.text} text-mp-on-surface w-full min-w-0 flex-1`,"font-[family-name:var(--mp-sys-typescale-body-large-font)]","appearance-none border-0 bg-transparent px-0 outline-none","caret-mp-primary",ee.control,Y?"py-0":"",Y&&I?"resize-y":"resize-none","group-data-disabled:text-mp-on-surface/38","placeholder:text-mp-on-surface-variant group-data-disabled:placeholder:text-mp-on-surface/38"].filter(Boolean).join(" "),onChange:e=>{C?.();const t=e.target.value;G&&Q(t),j?.(t)},onCompositionStart:()=>{H(!0),Q(x)},onCompositionUpdate:e=>{Q(e.target.value)},onCompositionEnd:e=>{H(!1);const t=e.target.value;C?.(),j?.(t),Q(t)},onKeyDown:e=>{if("Enter"===e.key){if(function(e){const t=e.nativeEvent;return t.isComposing||229===t.keyCode}(e))return;k?.(),Y&&!q||e.preventDefault()}}}),"password"!==g||Y?null:e("button",{type:"button","aria-label":W?$.hidePassword:$.showPassword,onClick:()=>A(e=>!e),onMouseDown:ae,onMouseUp:ae,disabled:P,className:["text-mp-on-surface-variant -me-1 flex shrink-0 items-center justify-center","cursor-pointer appearance-none border-0 bg-transparent p-1 font-[inherit]","rounded-full","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-1","focus-visible:outline-solid outline-none","hover:text-mp-on-surface focus-visible:text-mp-primary","disabled:text-mp-on-surface/38 disabled:cursor-default"].join(" "),children:e(r,{icon:W?d:p,size:ee.icon})}),v?e(a,{size:F,label:v,required:M,htmlFor:X,shrunk:oe,multiline:Y}):null]}),e(s,{errorMessage:z,className:`mp-text-field__support mt-1 ${ee.padding}`})]})});
@@ -1,2 +1,2 @@
1
- export { MPTextField } from './MPTextField';
2
- export type { MPTextFieldProps, MPTextFieldType } from './MPTextField';
1
+ export { MPTextField } from './MPTextField.js';
2
+ export type { MPTextFieldProps, MPTextFieldType } from './MPTextField.js';
@@ -1 +1 @@
1
- export{MPTextField}from"./MPTextField";
1
+ export{MPTextField}from"./MPTextField.js";
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useRender } from '@base-ui/react/use-render';
3
- import type { MPColor, MPSize } from '../../types';
3
+ import type { MPColor, MPSize } from '../../types.js';
4
4
  /**
5
5
  * When the line under a link is drawn.
6
6
  *
@@ -53,9 +53,15 @@ export interface MPTextLinkProps extends Omit<React.ComponentPropsWithoutRef<'a'
53
53
  /**
54
54
  * What a screen reader hears after the label when `newTab` is on. A link
55
55
  * without it says nothing of its own, so this changes nothing there.
56
- * @default 'Opens in a new tab'
56
+ *
57
+ * Defaults to the wording in `locale`.
57
58
  */
58
59
  newTabLabel?: string;
60
+ /**
61
+ * Which language that wording is in. Falls back to the nearest
62
+ * `MPLocaleProvider`, then to English.
63
+ */
64
+ locale?: string;
59
65
  /**
60
66
  * Renders something other than an `<a>` — the `Link` a router brings, most of
61
67
  * the time. `href` still goes through, so `render={<NextLink href="…" />}`
@@ -1 +1,2 @@
1
- import{jsx as e,Fragment as n,jsxs as o}from"react/jsx-runtime";import*as r from"react";import{useRender as i}from"@base-ui/react/use-render";import{MPIcon as t}from"../icon/MPIcon";import{ExternalLinkIcon as l,LinkIcon as s}from"../../constants/icons";import{accentSlots as a}from"../../internal/accent";import{PROSE_TEXT as c}from"../../internal/scale";import{VISUALLY_HIDDEN as m}from"../../internal/visually-hidden";const p={always:"[&.mp-link]:underline",hover:"[&.mp-link]:no-underline [&.mp-link]:hover:underline",none:"[&.mp-link]:no-underline"},d=["[&.mp-link]:[text-underline-offset:0.2em]","[&.mp-link]:[text-decoration-thickness:0.08em]","[&.mp-link]:[text-decoration-color:color-mix(in_oklab,currentColor_45%,transparent)]","[&.mp-link]:hover:[text-decoration-color:currentColor]"].join(" ");export const MPTextLink=/*@__PURE__*/r.forwardRef(function({href:r,underline:u="always",color:f,size:k,newTab:h=!1,icon:x,newTabLabel:b="Opens in a new tab",render:v,className:y,style:w,children:j,..._},g){const N=h?"_blank":_.target,T="_blank"===N,z=x??T,C=!0===z?e(t,{icon:T?l:s,size:"0.95em"}):z,L=["mp-link cursor-pointer","transition-[color,text-decoration-color]","duration-(--mp-sys-motion-duration-short4)","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid focus-visible:rounded-mp-xs outline-none",k?c[k]:"",p[u],d,f?"[&.mp-link]:text-(--_mp-accent)":"[&.mp-link]:text-inherit",y??""].filter(Boolean).join(" ");return i({render:v??e("a",{}),ref:g,props:{href:r,target:N,rel:T?"noopener noreferrer":void 0,className:L,style:f?{...a(f),...w}:w,children:o(n,{children:[j,C?e("span",{className:"ms-[0.25em] inline-flex align-baseline",children:C}):null,T?o(n,{children:[" ",e("span",{className:m,children:b})]}):null]}),..._}})});
1
+ "use client";
2
+ import{jsx as e,Fragment as n,jsxs as r}from"react/jsx-runtime";import*as o from"react";import{useRender as i}from"@base-ui/react/use-render";import{MPIcon as l}from"../icon/MPIcon.js";import{ExternalLinkIcon as t,LinkIcon as s}from"../../constants/icons.js";import{accentSlots as a}from"../../internal/accent.js";import{linkRel as m}from"../../internal/link.js";import{useMPLocale as c,useMPMessages as p}from"../../internal/locale.js";import{TEXT_LINK as u}from"../../internal/messages/text-link.js";import{PROSE_TEXT as d}from"../../internal/scale.js";import{VISUALLY_HIDDEN as f}from"../../internal/visually-hidden.js";const k={always:"[&.mp-link]:underline",hover:"[&.mp-link]:no-underline [&.mp-link]:hover:underline",none:"[&.mp-link]:no-underline"},x=/*@__PURE__*/["[&.mp-link]:[text-underline-offset:0.2em]","[&.mp-link]:[text-decoration-thickness:0.08em]","[&.mp-link]:[text-decoration-color:color-mix(in_oklab,currentColor_45%,transparent)]","[&.mp-link]:hover:[text-decoration-color:currentColor]"].join(" ");export const MPTextLink=/*@__PURE__*/o.forwardRef(function({href:o,underline:h="always",color:b,size:j,newTab:v=!1,icon:y,newTabLabel:w,locale:g,render:_,className:N,style:T,children:z,...C},L){const M=p(u,c(g)),P=v?"_blank":C.target,B="_blank"===P,F=y??B,I=!0===F?e(l,{icon:B?t:s,size:"0.95em"}):F,R=["mp-link cursor-pointer","transition-[color,text-decoration-color]","duration-(--mp-sys-motion-duration-short4)","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid focus-visible:rounded-mp-xs outline-none",j?d[j]:"",k[h],x,b?"[&.mp-link]:text-(--_mp-accent)":"[&.mp-link]:text-inherit",N??""].filter(Boolean).join(" ");return i({render:_??e("a",{}),ref:L,props:{href:o,target:P,rel:m(P,C.rel),className:R,style:b?{...a(b),...T}:T,children:r(n,{children:[z,I?e("span",{className:"ms-[0.25em] inline-flex align-baseline",children:I}):null,B?r(n,{children:[" ",e("span",{className:f,children:w??M.newTab})]}):null]}),...C}})});
@@ -1,2 +1,2 @@
1
- export { MPTextLink } from './MPTextLink';
2
- export type { MPTextLinkProps, MPTextLinkUnderline } from './MPTextLink';
1
+ export { MPTextLink } from './MPTextLink.js';
2
+ export type { MPTextLinkProps, MPTextLinkUnderline } from './MPTextLink.js';
@@ -1 +1 @@
1
- export{MPTextLink}from"./MPTextLink";
1
+ export{MPTextLink}from"./MPTextLink.js";
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
- import { type MPPickerLabels } from '../../internal/Calendar';
3
- import { type MPPickerShellProps } from '../../internal/Picker';
4
- import { type MPTimeUnit } from '../../internal/date';
2
+ import { type MPPickerLabels } from '../../internal/Calendar.js';
3
+ import { type MPPickerShellProps } from '../../internal/Picker.js';
4
+ import { type MPTimeUnit } from '../../internal/date.js';
5
5
  /**
6
6
  * Which column of the clock a row belongs to.
7
7
  *
@@ -44,6 +44,10 @@ export interface MPTimePickerProps extends MPPickerShellProps {
44
44
  showSeconds?: boolean;
45
45
  /**
46
46
  * How far apart the rows of each column are.
47
+ *
48
+ * Rounded, and held between 1 and the column's own span: a step of nought has
49
+ * no number of rows at all, and one wider than the column leaves the single
50
+ * row it can offer.
47
51
  * @default 1
48
52
  */
49
53
  hourStep?: number;
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import*as n from"react";import{MPButton as l}from"../button/MPButton";import{MPIcon as r}from"../icon/MPIcon";import{ClockIcon as t}from"../../constants/icons";import{MPTimeGrid as a}from"../../internal/Calendar";import{FOOTER_SIZE as i,MPPickerFooter as s,MPPickerShell as c,useDisplaySamples as u}from"../../internal/Picker";import{useMPLocale as d,useMPMessages as m}from"../../internal/locale";import{CONTROL_ICON as p}from"../../internal/scale";import{formatDate as h,isHour12 as f,isValidDate as g,secondsOfDay as S,timeUnitSpan as b,toISOTime as v,withPlaceholder as C,withTime as x}from"../../internal/date";export const MPTimePicker=/*@__PURE__*/n.forwardRef(function({value:k,defaultValue:w,onValueChange:z,open:D,defaultOpen:O,onOpenChange:y,referenceDate:P,minTime:T,maxTime:M,shouldDisableTime:j,hour12:I,showSeconds:V=!1,hourStep:B=1,minuteStep:N=1,secondStep:R=1,locale:F,format:H,placeholder:q,clearable:A=!1,showNowButton:E=!0,closeOnSelect:G=!1,labels:J,name:K,size:L="md",color:Q="primary",readOnly:U=!1,disabled:W=!1,startIcon:X,...Y},Z){const $=d(F),_=m("picker",$,J),ee=I??f($),[oe,ne]=n.useState(w??null),le=void 0!==k?k:oe,[re,te]=n.useState(O??!1),ae=D??re,[ie]=n.useState(()=>P??new Date),se=e=>{e&&(U||W)||(void 0===D&&te(e),y?.(e))},ce=e=>{void 0===k&&ne(e),z?.(e)},ue=n.useCallback((e,o)=>{const[n,l]=b(o,e);return!!(g(T)&&l<S(T))||(!!(g(M)&&n>S(M))||(j?.(e,o)??!1))},[T,M,j]),de=H??{hour:"numeric",minute:"2-digit",hour12:ee,...V?{second:"2-digit"}:{}},me=new Date,pe=x(P??ie,{hours:me.getHours(),minutes:me.getMinutes(),seconds:V?me.getSeconds():0}),he=E||A||!G,fe=C(u($,de),q);return e(c,{...Y,slug:"time-picker",size:L,color:Q,readOnly:U,disabled:W,triggerRef:Z,startIcon:void 0===X?e(r,{icon:t,size:p[L]}):X,display:g(le)?h(le,$,de):q??"",samples:fe,empty:!g(le),clearable:A,onClear:()=>ce(null),open:ae,onOpenChange:se,labels:_,hiddenValues:K?[{name:K,value:g(le)?v(le,V):""}]:void 0,children:o("div",{className:"flex flex-col "+(he?"gap-1.5":""),children:[e(a,{size:L,locale:$,value:g(le)?le:null,referenceDate:P??ie,onChange:e=>{ce(e),G&&se(!1)},hour12:ee,showSeconds:V,hourStep:B,minuteStep:N,secondStep:R,shouldDisableTime:ue,labels:_,autoFocus:!0}),he?o(s,{children:[A?e(l,{variant:"text",size:i[L],color:Q,onClick:()=>{ce(null),se(!1)},children:_.clear}):null,E?e(l,{variant:"text",size:i[L],color:Q,disabled:ue(pe,"second"),onClick:()=>{ce(pe),se(!1)},children:_.now}):null,G?null:e(l,{variant:"filled",size:i[L],color:Q,onClick:()=>se(!1),children:_.done})]}):null]})})});
1
+ "use client";
2
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";import*as n from"react";import{MPButton as l}from"../button/MPButton.js";import{MPIcon as r}from"../icon/MPIcon.js";import{ClockIcon as t}from"../../constants/icons.js";import{MPTimeGrid as a}from"../../internal/Calendar.js";import{FOOTER_SIZE as i,MPPickerFooter as s,MPPickerShell as c,useDisplaySamples as u}from"../../internal/Picker.js";import{useMPLocale as m,useMPMessages as d}from"../../internal/locale.js";import{PICKER as p}from"../../internal/messages/picker.js";import{CONTROL_ICON as h}from"../../internal/scale.js";import{formatDate as f,isHour12 as g,isValidDate as S,secondsOfDay as b,timeUnitSpan as j,toISOTime as v,withPlaceholder as C,withTime as x}from"../../internal/date.js";export const MPTimePicker=/*@__PURE__*/n.forwardRef(function({value:k,defaultValue:w,onValueChange:z,open:D,defaultOpen:O,onOpenChange:y,referenceDate:P,minTime:T,maxTime:M,shouldDisableTime:I,hour12:V,showSeconds:B=!1,hourStep:N=1,minuteStep:R=1,secondStep:F=1,locale:H,format:q,placeholder:A,clearable:E=!1,showNowButton:G=!0,closeOnSelect:J=!1,labels:K,name:L,size:Q="md",color:U="primary",readOnly:W=!1,disabled:X=!1,startIcon:Y,...Z},$){const _=m(H),ee=d(p,_,K),oe=V??g(_),[ne,le]=n.useState(w??null),re=void 0!==k?k:ne,[te,ae]=n.useState(O??!1),ie=D??te,[se]=n.useState(()=>P??new Date),ce=e=>{e&&(W||X)||(void 0===D&&ae(e),y?.(e))},ue=e=>{void 0===k&&le(e),z?.(e)},me=n.useCallback((e,o)=>{const[n,l]=j(o,e);return!!(S(T)&&l<b(T))||(!!(S(M)&&n>b(M))||(I?.(e,o)??!1))},[T,M,I]),de=q??{hour:"numeric",minute:"2-digit",hour12:oe,...B?{second:"2-digit"}:{}},pe=new Date,he=x(P??se,{hours:pe.getHours(),minutes:pe.getMinutes(),seconds:B?pe.getSeconds():0}),fe=G||E||!J,ge=C(u(_,de),A);return e(c,{...Z,slug:"time-picker",size:Q,color:U,readOnly:W,disabled:X,triggerRef:$,startIcon:void 0===Y?e(r,{icon:t,size:h[Q]}):Y,display:S(re)?f(re,_,de):A??"",samples:ge,empty:!S(re),clearable:E,onClear:()=>ue(null),open:ie,onOpenChange:ce,labels:ee,hiddenValues:L?[{name:L,value:S(re)?v(re,B):""}]:void 0,children:o("div",{className:"flex flex-col "+(fe?"gap-1.5":""),children:[e(a,{size:Q,locale:_,value:S(re)?re:null,referenceDate:P??se,onChange:e=>{ue(e),J&&ce(!1)},hour12:oe,showSeconds:B,hourStep:N,minuteStep:R,secondStep:F,shouldDisableTime:me,labels:ee,autoFocus:!0}),fe?o(s,{children:[E?e(l,{variant:"text",size:i[Q],color:U,onClick:()=>{ue(null),ce(!1)},children:ee.clear}):null,G?e(l,{variant:"text",size:i[Q],color:U,disabled:me(he,"second"),onClick:()=>{ue(he),ce(!1)},children:ee.now}):null,J?null:e(l,{variant:"filled",size:i[Q],color:U,onClick:()=>ce(!1),children:ee.done})]}):null]})})});
@@ -1,2 +1,2 @@
1
- export { MPTimePicker } from './MPTimePicker';
2
- export type { MPTimePickerProps, MPTimeUnit } from './MPTimePicker';
1
+ export { MPTimePicker } from './MPTimePicker.js';
2
+ export type { MPTimePickerProps, MPTimeUnit } from './MPTimePicker.js';
@@ -1 +1 @@
1
- export{MPTimePicker}from"./MPTimePicker";
1
+ export{MPTimePicker}from"./MPTimePicker.js";
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { useRender } from '@base-ui/react/use-render';
3
- import type { MPColor, MPOrientation, MPSize } from '../../types';
3
+ import type { MPColor, MPOrientation, MPSize } from '../../types.js';
4
4
  /**
5
5
  * How far along one item is.
6
6
  *