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,74 @@
1
+ import * as React from 'react';
2
+ import { type MPAvatarShape } from '../avatar/MPAvatar.js';
3
+ import type { MPColor, MPSize, MPVariant } from '../../types.js';
4
+ export interface MPAvatarGroupProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color'> {
5
+ /**
6
+ * How many avatars are drawn before the rest become a count. Left out, every
7
+ * one of them is drawn.
8
+ */
9
+ max?: number;
10
+ /**
11
+ * How many there are altogether, when the group was handed only the first few.
12
+ *
13
+ * Without it the count is worked out from the children, which is right only
14
+ * when all of them were passed — and a list of forty faces that ships four
15
+ * `<img>`s and a number is exactly why this prop exists.
16
+ */
17
+ total?: number;
18
+ /**
19
+ * How far each avatar sits under the one before it — a number in pixels, or
20
+ * any CSS length. Left out it is a fraction of `size`, which keeps the overlap
21
+ * looking the same at every rung.
22
+ */
23
+ overlap?: number | string;
24
+ /**
25
+ * Passed to every avatar in the group.
26
+ * @default 'md'
27
+ */
28
+ size?: MPSize;
29
+ /**
30
+ * Passed to every avatar in the group.
31
+ * @default 'circle'
32
+ */
33
+ shape?: MPAvatarShape;
34
+ /**
35
+ * Passed to every avatar in the group.
36
+ * @default 'tonal'
37
+ */
38
+ variant?: MPVariant;
39
+ /**
40
+ * Passed to every avatar in the group.
41
+ * @default 'primary'
42
+ */
43
+ color?: MPColor;
44
+ /** The avatars. */
45
+ children?: React.ReactNode;
46
+ }
47
+ /**
48
+ * A stack of avatars, overlapping, with the ones that did not fit as a count.
49
+ *
50
+ * `size`, `shape`, `variant` and `color` are set once here rather than on every
51
+ * avatar — a stack whose fourth face is a rung out is not a stack — and an
52
+ * avatar's own prop still wins, which is what lets one of them be marked out
53
+ * from the rest.
54
+ *
55
+ * ## The ring is not decoration
56
+ *
57
+ * Two circles of similar tone laid over each other have no edge between them at
58
+ * all, and the stack reads as one smeared shape. The ring is drawn in the page's
59
+ * own `surface`, so it is the background showing through rather than a colour of
60
+ * its own — which is what puts the near avatar in front instead of putting a
61
+ * white line on it.
62
+ *
63
+ * `isolate` on the group is the other half: it makes the first avatar's ring
64
+ * paint against the page rather than against whatever the group happens to be
65
+ * stacked over.
66
+ *
67
+ * ## The first avatar is on top
68
+ *
69
+ * The order is the DOM order, and each avatar is drawn under the one before it.
70
+ * A stack read from the start is therefore read front to back, so the person the
71
+ * group is *about* comes first rather than last — and under RTL the whole thing
72
+ * flips on its own, because the overlap is a logical margin.
73
+ */
74
+ export declare const MPAvatarGroup: React.ForwardRefExoticComponent<MPAvatarGroupProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{jsx as r,jsxs as a}from"react/jsx-runtime";import*as e from"react";import{MPAvatar as t}from"../avatar/MPAvatar.js";import{MPAvatarGroupContext as i}from"../../internal/avatar-group.js";const o={xs:"0.625rem",sm:"0.75rem",md:"1.125rem",lg:"1.25rem",xl:"1.5rem"};export const MPAvatarGroup=/*@__PURE__*/e.forwardRef(function({max:l,total:m,overlap:n,size:s="md",shape:c="circle",variant:p="tonal",color:v="primary",className:d,style:f,children:h,...u},x){const g=e.useMemo(()=>({size:s,shape:c,variant:p,color:v}),[s,c,p,v]),j=e.Children.toArray(h),y=void 0===l?j:j.slice(0,Math.max(0,l)),M=m??j.length,z=Math.max(0,M-y.length);return r(i.Provider,{value:g,children:a("div",{ref:x,"data-mp-size":s,className:["mp-avatar-group isolate inline-flex items-center align-middle","[&>*:not(:first-child)]:[margin-inline-start:calc(var(--_mp-avatar-overlap)*-1)]","ring-mp-surface [&>*]:ring-2",d??""].filter(Boolean).join(" "),style:{"--_mp-avatar-overlap":void 0===n?o[s]:"number"==typeof n?`${n}px`:n,...f},...u,children:[y,z>0?r(t,{initials:`+${z}`}):null]})})});
@@ -0,0 +1,2 @@
1
+ export { MPAvatarGroup } from './MPAvatarGroup.js';
2
+ export type { MPAvatarGroupProps } from './MPAvatarGroup.js';
@@ -0,0 +1 @@
1
+ export{MPAvatarGroup}from"./MPAvatarGroup.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPColor, MPCorner, MPSize, MPVariant } from '../../types';
2
+ import type { MPColor, MPCorner, MPSize, MPVariant } from '../../types.js';
3
3
  export interface MPBadgeProps extends Omit<React.ComponentPropsWithoutRef<'span'>, 'color' | 'content'> {
4
4
  /**
5
5
  * What the badge says — usually a count, sometimes a word.
@@ -1 +1,2 @@
1
- import{jsx as e,Fragment as t,jsxs as m}from"react/jsx-runtime";import*as a from"react";import{accentSlots as n}from"../../internal/accent";import{hasContent as s}from"../../internal/scale";import{VISUALLY_HIDDEN as i}from"../../internal/visually-hidden";const l={xs:"h-3 min-w-3",sm:"h-3.5 min-w-3.5",md:"h-4 min-w-4",lg:"h-5 min-w-5",xl:"h-6 min-w-6"},o={xs:"size-1",sm:"size-1.5",md:"size-1.5",lg:"size-2",xl:"size-2.5"},r={xs:"text-mp-label-small",sm:"text-mp-label-small",md:"text-mp-label-small",lg:"text-mp-label-medium",xl:"text-mp-label-medium"},d={xs:"px-1",sm:"px-1",md:"px-1.5",lg:"px-1.5",xl:"px-2"},p={xs:{badge:"-mt-1.5 -mb-1.5 -ms-1.5 -me-1.5",dot:"-mt-0.5 -mb-0.5 -ms-0.5 -me-0.5"},sm:{badge:"-mt-1.5 -mb-1.5 -ms-1.5 -me-1.5",dot:"-mt-0.5 -mb-0.5 -ms-0.5 -me-0.5"},md:{badge:"-mt-2 -mb-2 -ms-2 -me-2",dot:"-mt-1 -mb-1 -ms-1 -me-1"},lg:{badge:"-mt-2.5 -mb-2.5 -ms-2.5 -me-2.5",dot:"-mt-1 -mb-1 -ms-1 -me-1"},xl:{badge:"-mt-3 -mb-3 -ms-3 -me-3",dot:"-mt-1.5 -mb-1.5 -ms-1.5 -me-1.5"}},c={"top-start":"top-0 start-0","top-end":"top-0 end-0","bottom-start":"bottom-0 start-0","bottom-end":"bottom-0 end-0"},b={"top-start":"mt-[7%] ms-[7%]","top-end":"mt-[7%] me-[7%]","bottom-start":"mb-[7%] ms-[7%]","bottom-end":"mb-[7%] me-[7%]"},x={filled:"bg-(--_mp-accent) text-(--_mp-on-accent)",tonal:"bg-(--_mp-accent-container) text-(--_mp-on-accent-container)",elevated:"shadow-mp-1 bg-mp-surface-container-low text-(--_mp-accent)",outlined:"border-mp-outline border bg-mp-surface-container text-(--_mp-accent)",text:"text-(--_mp-accent) bg-transparent"};export const MPBadge=/*@__PURE__*/a.forwardRef(function({variant:a="filled",size:u="md",color:g="error",content:f,max:h=99,dot:v=!1,showZero:w=!1,invisible:y=!1,placement:z="top-end",overlap:_="square",label:j,className:N,style:k,children:B,...$},q){const F=s(B),M=!s(f)||0===f&&!w,P=v||M,R=y||M&&!v,Z=["mp-badge pointer-events-none z-10 inline-flex shrink-0 items-center justify-center","rounded-mp-full tabular-nums whitespace-nowrap",x[a],P?o[u]:[l[u],r[u],d[u]].join(" "),F?`absolute ${c[z]}`:"relative align-middle",F?P?p[u].dot:p[u].badge:"",F&&"circle"===_?b[z]:"","transition-[opacity,scale,visibility] duration-(--mp-sys-motion-duration-short4)","ease-mp-standard",R?"invisible scale-0 opacity-0":"",N??""].filter(Boolean).join(" "),A=function(e,t){return"number"==typeof e&&e>t?`${t}+`:e}(f,h),C=e("span",{ref:q,"data-mp-size":u,"data-mp-variant":a,className:Z,style:{...n(g),...k},"aria-hidden":!!R||void 0,...$,children:M&&!v?null:m(t,{children:[P||j?e("span",{className:i,children:j??A}):null,P?null:e("span",{"aria-hidden":!!j||void 0,children:A})]})});return F?m("span",{className:"relative inline-flex shrink-0 align-middle",children:[B,C]}):C});
1
+ "use client";
2
+ import{jsx as e,Fragment as t,jsxs as m}from"react/jsx-runtime";import*as a from"react";import{accentSlots as n}from"../../internal/accent.js";import{hasContent as s}from"../../internal/scale.js";import{VISUALLY_HIDDEN as i}from"../../internal/visually-hidden.js";const l={xs:"h-3 min-w-3",sm:"h-3.5 min-w-3.5",md:"h-4 min-w-4",lg:"h-5 min-w-5",xl:"h-6 min-w-6"},o={xs:"size-1",sm:"size-1.5",md:"size-1.5",lg:"size-2",xl:"size-2.5"},r={xs:"text-mp-label-small",sm:"text-mp-label-small",md:"text-mp-label-small",lg:"text-mp-label-medium",xl:"text-mp-label-medium"},d={xs:"px-1",sm:"px-1",md:"px-1.5",lg:"px-1.5",xl:"px-2"},p={xs:{badge:"-mt-1.5 -mb-1.5 -ms-1.5 -me-1.5",dot:"-mt-0.5 -mb-0.5 -ms-0.5 -me-0.5"},sm:{badge:"-mt-1.5 -mb-1.5 -ms-1.5 -me-1.5",dot:"-mt-0.5 -mb-0.5 -ms-0.5 -me-0.5"},md:{badge:"-mt-2 -mb-2 -ms-2 -me-2",dot:"-mt-1 -mb-1 -ms-1 -me-1"},lg:{badge:"-mt-2.5 -mb-2.5 -ms-2.5 -me-2.5",dot:"-mt-1 -mb-1 -ms-1 -me-1"},xl:{badge:"-mt-3 -mb-3 -ms-3 -me-3",dot:"-mt-1.5 -mb-1.5 -ms-1.5 -me-1.5"}},c={"top-start":"top-0 start-0","top-end":"top-0 end-0","bottom-start":"bottom-0 start-0","bottom-end":"bottom-0 end-0"},b={"top-start":"mt-[7%] ms-[7%]","top-end":"mt-[7%] me-[7%]","bottom-start":"mb-[7%] ms-[7%]","bottom-end":"mb-[7%] me-[7%]"},x={filled:"bg-(--_mp-accent) text-(--_mp-on-accent)",tonal:"bg-(--_mp-accent-container) text-(--_mp-on-accent-container)",elevated:"shadow-mp-1 bg-mp-surface-container-low text-(--_mp-accent)",outlined:"border-mp-outline border bg-mp-surface-container text-(--_mp-accent)",text:"text-(--_mp-accent) bg-transparent"};export const MPBadge=/*@__PURE__*/a.forwardRef(function({variant:a="filled",size:u="md",color:g="error",content:f,max:h=99,dot:v=!1,showZero:w=!1,invisible:j=!1,placement:y="top-end",overlap:z="square",label:_,className:N,style:k,children:B,...$},q){const F=s(B),M=!s(f)||0===f&&!w,P=v||M,R=j||M&&!v,Z=["mp-badge pointer-events-none z-10 inline-flex shrink-0 items-center justify-center","rounded-mp-full tabular-nums whitespace-nowrap",x[a],P?o[u]:[l[u],r[u],d[u]].join(" "),F?`absolute ${c[y]}`:"relative align-middle",F?P?p[u].dot:p[u].badge:"",F&&"circle"===z?b[y]:"","transition-[opacity,scale,visibility] duration-(--mp-sys-motion-duration-short4)","ease-mp-standard",R?"invisible scale-0 opacity-0":"",N??""].filter(Boolean).join(" "),A=function(e,t){return"number"==typeof e&&e>t?`${t}+`:e}(f,h),C=e("span",{ref:q,"data-mp-size":u,"data-mp-variant":a,className:Z,style:{...n(g),...k},"aria-hidden":!!R||void 0,...$,children:M&&!v?null:m(t,{children:[P||_?e("span",{className:i,children:_??A}):null,P?null:e("span",{"aria-hidden":!!_||void 0,children:A})]})});return F?m("span",{className:"relative inline-flex shrink-0 align-middle",children:[B,C]}):C});
@@ -1,2 +1,2 @@
1
- export { MPBadge } from './MPBadge';
2
- export type { MPBadgeProps } from './MPBadge';
1
+ export { MPBadge } from './MPBadge.js';
2
+ export type { MPBadgeProps } from './MPBadge.js';
@@ -1 +1 @@
1
- export{MPBadge}from"./MPBadge";
1
+ export{MPBadge}from"./MPBadge.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
  /**
4
4
  * The props are a `<figure>`'s rather than a `<blockquote>`'s, which is a
5
5
  * consequence of where the drawing happens: everything a caller passes lands on
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{accentSlots as r}from"../../internal/accent";import{hasContent as n,META_TEXT as i,SHEET_PAD as l}from"../../internal/scale";const o={xs:"text-mp-body-medium",sm:"text-mp-body-large",md:"text-mp-title-large",lg:"text-mp-headline-small",xl:"text-mp-headline-medium"},c="border-s-2 [border-inline-start-color:var(--_mp-accent)]",s={filled:"bg-(--_mp-accent) text-(--_mp-on-accent)",tonal:"bg-(--_mp-accent-container) text-(--_mp-on-accent-container)",elevated:"shadow-mp-1 bg-mp-surface-container-low text-mp-on-surface",outlined:"border-mp-outline-variant border border-s-2 bg-transparent text-mp-on-surface",text:"bg-transparent text-mp-on-surface"};function m(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"size-full",children:e("path",{d:"M6.4 3.6c-2.3.9-3.7 2.8-3.7 5.1 0 2 1.2 3.3 2.8 3.3 1.4 0 2.5-1 2.5-2.4 0-1.3-.9-2.2-2.1-2.2-.2 0-.4 0-.6.1.3-1 1.1-1.8 2.2-2.3l-1.1-1.6ZM13.3 3.6c-2.3.9-3.7 2.8-3.7 5.1 0 2 1.2 3.3 2.8 3.3 1.4 0 2.5-1 2.5-2.4 0-1.3-.9-2.2-2.1-2.2-.2 0-.4 0-.6.1.3-1 1.1-1.8 2.2-2.3l-1.1-1.6Z",fill:"currentColor"})})}export const MPBlockquote=/*@__PURE__*/a.forwardRef(function({variant:a="text",size:d="md",color:p="primary",author:u,source:f,cite:x,icon:h,className:b,style:g,children:v,...y},N){const j=n(u)||n(f),w=void 0===h?e(m,{}):h,z="text"!==a,_=["mp-blockquote flex flex-col",o[d],c,z?"rounded-mp-md rounded-s-none":"",s[a],z?l[d]:"ps-4",b??""].filter(Boolean).join(" "),k=t("blockquote",{cite:x,children:[n(w)?e("span",{"aria-hidden":"true",className:"mb-1 block size-[2em] opacity-38",children:w}):null,v]}),q={...r(p),...g};return j?t("figure",{ref:N,"data-mp-size":d,"data-mp-variant":a,className:_,style:q,...y,children:[k,t("figcaption",{className:["mt-2 flex flex-wrap items-baseline gap-x-1.5",z?"opacity-80":"text-mp-on-surface-variant",i].join(" "),children:[n(u)?t("span",{className:"font-medium",children:[e("span",{"aria-hidden":"true",children:"— "}),u]}):null,n(f)?e("cite",{className:"not-italic",children:f}):null]})]}):e("div",{ref:N,"data-mp-size":d,"data-mp-variant":a,className:_,style:q,...y,children:k})});
1
+ "use client";
2
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import*as a from"react";import{accentSlots as r}from"../../internal/accent.js";import{hasContent as n,META_TEXT as i,SHEET_PAD as l}from"../../internal/scale.js";const o={xs:"text-mp-body-medium",sm:"text-mp-body-large",md:"text-mp-title-large",lg:"text-mp-headline-small",xl:"text-mp-headline-medium"},c="border-s-2 [border-inline-start-color:var(--_mp-accent)]",s={filled:"bg-(--_mp-accent) text-(--_mp-on-accent)",tonal:"bg-(--_mp-accent-container) text-(--_mp-on-accent-container)",elevated:"shadow-mp-1 bg-mp-surface-container-low text-mp-on-surface",outlined:"border-mp-outline-variant border border-s-2 bg-transparent text-mp-on-surface",text:"bg-transparent text-mp-on-surface"};function m(){return e("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"size-full",children:e("path",{d:"M6.4 3.6c-2.3.9-3.7 2.8-3.7 5.1 0 2 1.2 3.3 2.8 3.3 1.4 0 2.5-1 2.5-2.4 0-1.3-.9-2.2-2.1-2.2-.2 0-.4 0-.6.1.3-1 1.1-1.8 2.2-2.3l-1.1-1.6ZM13.3 3.6c-2.3.9-3.7 2.8-3.7 5.1 0 2 1.2 3.3 2.8 3.3 1.4 0 2.5-1 2.5-2.4 0-1.3-.9-2.2-2.1-2.2-.2 0-.4 0-.6.1.3-1 1.1-1.8 2.2-2.3l-1.1-1.6Z",fill:"currentColor"})})}export const MPBlockquote=/*@__PURE__*/a.forwardRef(function({variant:a="text",size:d="md",color:p="primary",author:u,source:f,cite:x,icon:h,className:b,style:g,children:v,...y},N){const j=n(u)||n(f),w=void 0===h?e(m,{}):h,z="text"!==a,_=["mp-blockquote flex flex-col",o[d],c,z?"rounded-mp-md rounded-s-none":"",s[a],z?l[d]:"ps-4",b??""].filter(Boolean).join(" "),k=t("blockquote",{cite:x,children:[n(w)?e("span",{"aria-hidden":"true",className:"mb-1 block size-[2em] opacity-38",children:w}):null,v]}),q={...r(p),...g};return j?t("figure",{ref:N,"data-mp-size":d,"data-mp-variant":a,className:_,style:q,...y,children:[k,t("figcaption",{className:["mt-2 flex flex-wrap items-baseline gap-x-1.5",z?"opacity-80":"text-mp-on-surface-variant",i].join(" "),children:[n(u)?t("span",{className:"font-medium",children:[e("span",{"aria-hidden":"true",children:"— "}),u]}):null,n(f)?e("cite",{className:"not-italic",children:f}):null]})]}):e("div",{ref:N,"data-mp-size":d,"data-mp-variant":a,className:_,style:q,...y,children:k})});
@@ -1,2 +1,2 @@
1
- export { MPBlockquote } from './MPBlockquote';
2
- export type { MPBlockquoteProps } from './MPBlockquote';
1
+ export { MPBlockquote } from './MPBlockquote.js';
2
+ export type { MPBlockquoteProps } from './MPBlockquote.js';
@@ -1 +1 @@
1
- export{MPBlockquote}from"./MPBlockquote";
1
+ export{MPBlockquote}from"./MPBlockquote.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 { MPPosition, MPSize } from '../../types';
3
+ import type { MPPosition, MPSize } from '../../types.js';
4
4
  /** A destination's value. The same restraint `MPTabs` puts on a tab's. */
5
5
  export type MPBottomNavigationValue = string | number;
6
6
  /**
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import*as l from"react";import{useRender as n}from"@base-ui/react/use-render";import{MPStateLayer as o}from"../../internal/StateLayer";import{hasContent as i}from"../../internal/scale";import{VISUALLY_HIDDEN as s}from"../../internal/visually-hidden";const r=/*@__PURE__*/l.createContext({value:null,change:()=>{},size:"md",labels:"all",disabled:!1}),m={xs:"h-14",sm:"h-16",md:"h-20",lg:"h-22",xl:"h-24"},d={xs:{box:"h-6 w-12",open:"w-12",shut:"w-6"},sm:{box:"h-7 w-14",open:"w-14",shut:"w-7"},md:{box:"h-8 w-16",open:"w-16",shut:"w-8"},lg:{box:"h-9 w-18",open:"w-18",shut:"w-9"},xl:{box:"h-10 w-20",open:"w-20",shut:"w-10"}},u={xs:20,sm:22,md:24,lg:26,xl:28},c={xs:"text-mp-label-small",sm:"text-mp-label-small",md:"text-mp-label-medium",lg:"text-mp-label-medium",xl:"text-mp-label-large"},p={xs:"gap-0.5",sm:"gap-0.5",md:"gap-1",lg:"gap-1",xl:"gap-1.5"},f={static:"",absolute:"absolute inset-x-0 bottom-0 z-30",sticky:"sticky bottom-0 z-30",fixed:"fixed inset-x-0 bottom-0 z-40"};export const MPBottomNavigation=/*@__PURE__*/l.forwardRef(function({value:t,defaultValue:a=null,onValueChange:o,position:i="fixed",labels:s="all",size:d="md",divider:u=!1,safeArea:c=!0,disabled:p=!1,label:b,render:x,className:h,children:v,...g},w){const[y,z]=l.useState(a),N=void 0!==t,j=N?t:y,k=l.useCallback(e=>{N||z(e),o?.(e)},[N,o]),C=l.useMemo(()=>({value:j??null,change:k,size:d,labels:s,disabled:p}),[j,k,d,s,p]);return n({render:x??e("nav",{}),ref:w,props:{"aria-label":b,"data-mp-size":d,className:["mp-bottom-navigation bg-mp-surface-container text-mp-on-surface box-border w-full",u?"border-mp-outline-variant border-t":"",f[i],c?"pb-[env(safe-area-inset-bottom)]":"",h??""].filter(Boolean).join(" "),children:e(r.Provider,{value:C,children:e("div",{className:`flex w-full items-stretch ${m[d]}`,children:v})}),...g}})});export const MPBottomNavigationItem=/*@__PURE__*/l.forwardRef(function({value:n,icon:m,activeIcon:f,href:b,disabled:x=!1,className:h,children:v,onClick:g,...w},y){const z=l.useContext(r),N=x||z.disabled,j=null!==z.value&&z.value===n,k="all"===z.labels||"selected"===z.labels&&j,C=["mp-bottom-navigation__item group flex min-w-0 flex-1 flex-col items-center justify-center","box-border appearance-none bg-transparent px-1 font-[inherit] no-underline select-none",p[z.size],"outline-mp-secondary focus-visible:outline-2 focus-visible:-outline-offset-2","focus-visible:outline-solid outline-none",N?"text-mp-on-surface/38 cursor-default":j?"text-mp-on-surface cursor-pointer":"text-mp-on-surface-variant cursor-pointer",h??""].filter(Boolean).join(" "),B=t(a,{children:[i(m)||i(f)?t("span",{className:["relative flex shrink-0 items-center justify-center overflow-hidden","rounded-mp-full","transition-[color] duration-(--mp-sys-motion-duration-short4)",d[z.size].box,j&&!N?"text-mp-on-secondary-container":""].filter(Boolean).join(" "),children:[N?null:e("span",{"aria-hidden":"true",className:["pointer-events-none absolute inset-y-0 left-1/2 -translate-x-1/2","rounded-mp-full bg-mp-secondary-container","transition-[width,opacity] duration-(--mp-sys-motion-duration-short4)","ease-mp-standard",j?`${d[z.size].open} opacity-100`:`${d[z.size].shut} opacity-0`].join(" ")}),N?null:e(o,{}),e("span",{className:"relative flex items-center justify-center",style:{width:u[z.size],height:u[z.size]},children:j?f??m:m})]}):null,i(v)?e("span",{className:k?`max-w-full truncate ${c[z.size]}`:s,children:v}):null]}),$=e=>{N?e.preventDefault():(z.change(n),g?.(e))};return b?e("a",{ref:y,href:N?void 0:b,"aria-current":j?"page":void 0,"aria-disabled":N||void 0,className:C,onClick:$,...w,children:B}):e("button",{ref:y,type:"button",disabled:N,"aria-current":j?"page":void 0,className:C,onClick:$,...w,children:B})});
1
+ "use client";
2
+ import{jsx as e,jsxs as t,Fragment as a}from"react/jsx-runtime";import*as l from"react";import{useRender as n}from"@base-ui/react/use-render";import{MPStateLayer as o}from"../../internal/StateLayer.js";import{hasContent as s}from"../../internal/scale.js";import{VISUALLY_HIDDEN as i}from"../../internal/visually-hidden.js";const r=/*@__PURE__*/l.createContext({value:null,change:()=>{},size:"md",labels:"all",disabled:!1}),m={xs:"h-14",sm:"h-16",md:"h-20",lg:"h-22",xl:"h-24"},d={xs:{box:"h-6 w-12",open:"w-12",shut:"w-6"},sm:{box:"h-7 w-14",open:"w-14",shut:"w-7"},md:{box:"h-8 w-16",open:"w-16",shut:"w-8"},lg:{box:"h-9 w-18",open:"w-18",shut:"w-9"},xl:{box:"h-10 w-20",open:"w-20",shut:"w-10"}},u={xs:20,sm:22,md:24,lg:26,xl:28},c={xs:"text-mp-label-small",sm:"text-mp-label-small",md:"text-mp-label-medium",lg:"text-mp-label-medium",xl:"text-mp-label-large"},p={xs:"gap-0.5",sm:"gap-0.5",md:"gap-1",lg:"gap-1",xl:"gap-1.5"},f={static:"",absolute:"absolute inset-x-0 bottom-0 z-30",sticky:"sticky bottom-0 z-30",fixed:"fixed inset-x-0 bottom-0 z-40"};export const MPBottomNavigation=/*@__PURE__*/l.forwardRef(function({value:t,defaultValue:a=null,onValueChange:o,position:s="fixed",labels:i="all",size:d="md",divider:u=!1,safeArea:c=!0,disabled:p=!1,label:b,render:x,className:h,children:v,...g},w){const[y,z]=l.useState(a),j=void 0!==t,N=j?t:y,k=l.useCallback(e=>{j||z(e),o?.(e)},[j,o]),C=l.useMemo(()=>({value:N??null,change:k,size:d,labels:i,disabled:p}),[N,k,d,i,p]);return n({render:x??e("nav",{}),ref:w,props:{"aria-label":b,"data-mp-size":d,className:["mp-bottom-navigation bg-mp-surface-container text-mp-on-surface box-border w-full",u?"border-mp-outline-variant border-t":"",f[s],c?"pb-[env(safe-area-inset-bottom)]":"",h??""].filter(Boolean).join(" "),children:e(r.Provider,{value:C,children:e("div",{className:`flex w-full items-stretch ${m[d]}`,children:v})}),...g}})});export const MPBottomNavigationItem=/*@__PURE__*/l.forwardRef(function({value:n,icon:m,activeIcon:f,href:b,disabled:x=!1,className:h,children:v,onClick:g,...w},y){const z=l.useContext(r),j=x||z.disabled,N=null!==z.value&&z.value===n,k="all"===z.labels||"selected"===z.labels&&N,C=["mp-bottom-navigation__item group flex min-w-0 flex-1 flex-col items-center justify-center","box-border appearance-none bg-transparent px-1 font-[inherit] no-underline select-none",p[z.size],"outline-mp-secondary focus-visible:outline-2 focus-visible:-outline-offset-2","focus-visible:outline-solid outline-none",j?"text-mp-on-surface/38 cursor-default":N?"text-mp-on-surface cursor-pointer":"text-mp-on-surface-variant cursor-pointer",h??""].filter(Boolean).join(" "),B=t(a,{children:[s(m)||s(f)?t("span",{className:["relative flex shrink-0 items-center justify-center overflow-hidden","rounded-mp-full","transition-[color] duration-(--mp-sys-motion-duration-short4)",d[z.size].box,N&&!j?"text-mp-on-secondary-container":""].filter(Boolean).join(" "),children:[j?null:e("span",{"aria-hidden":"true",className:["pointer-events-none absolute inset-y-0 left-1/2 -translate-x-1/2","rounded-mp-full bg-mp-secondary-container","transition-[width,opacity] duration-(--mp-sys-motion-duration-short4)","ease-mp-standard",N?`${d[z.size].open} opacity-100`:`${d[z.size].shut} opacity-0`].join(" ")}),j?null:e(o,{}),e("span",{className:"relative flex items-center justify-center",style:{width:u[z.size],height:u[z.size]},children:N?f??m:m})]}):null,s(v)?e("span",{className:k?`max-w-full truncate ${c[z.size]}`:i,children:v}):null]}),$=e=>{j?e.preventDefault():(z.change(n),g?.(e))};return b?e("a",{ref:y,href:j?void 0:b,"aria-current":N?"page":void 0,"aria-disabled":j||void 0,className:C,onClick:$,...w,children:B}):e("button",{ref:y,type:"button",disabled:j,"aria-current":N?"page":void 0,className:C,onClick:$,...w,children:B})});
@@ -1,2 +1,2 @@
1
- export { MPBottomNavigation, MPBottomNavigationItem } from './MPBottomNavigation';
2
- export type { MPBottomNavigationItemProps, MPBottomNavigationLabels, MPBottomNavigationProps, MPBottomNavigationValue } from './MPBottomNavigation';
1
+ export { MPBottomNavigation, MPBottomNavigationItem } from './MPBottomNavigation.js';
2
+ export type { MPBottomNavigationItemProps, MPBottomNavigationLabels, MPBottomNavigationProps, MPBottomNavigationValue } from './MPBottomNavigation.js';
@@ -1 +1 @@
1
- export{MPBottomNavigation,MPBottomNavigationItem}from"./MPBottomNavigation";
1
+ export{MPBottomNavigation,MPBottomNavigationItem}from"./MPBottomNavigation.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 { MPSize, MPVariant } from '../../types';
3
+ import type { MPSize, MPVariant } from '../../types.js';
4
4
  export interface MPBoxProps extends React.ComponentPropsWithoutRef<'div'> {
5
5
  /**
6
6
  * How much surface the sheet paints.
@@ -1 +1 @@
1
- import*as r from"react";import{useRender as e}from"@base-ui/react/use-render";import{SHEET_PAD as a}from"../../internal/scale";import{CONTAINER_SURFACE as o}from"../../internal/surface";export const MPBox=/*@__PURE__*/r.forwardRef(function({variant:r="outlined",size:n="md",padded:t=!0,render:d,className:i,children:m,...s},p){return e({render:d,ref:p,props:{"data-mp-size":n,"data-mp-variant":r,className:["mp-box rounded-mp-md block","box-border",t?a[n]:"",o[r],"text-mp-on-surface",i??""].filter(Boolean).join(" "),children:m,...s}})});
1
+ import*as r from"react";import{useRender as e}from"@base-ui/react/use-render";import{SHEET_PAD as a}from"../../internal/scale.js";import{CONTAINER_SURFACE as o}from"../../internal/surface.js";export const MPBox=/*@__PURE__*/r.forwardRef(function({variant:r="outlined",size:n="md",padded:t=!0,render:d,className:i,children:m,...s},p){return e({render:d,ref:p,props:{"data-mp-size":n,"data-mp-variant":r,className:["mp-box rounded-mp-md block","box-border",t?a[n]:"",o[r],"text-mp-on-surface",i??""].filter(Boolean).join(" "),children:m,...s}})});
@@ -1,2 +1,2 @@
1
- export { MPBox } from './MPBox';
2
- export type { MPBoxProps } from './MPBox';
1
+ export { MPBox } from './MPBox.js';
2
+ export type { MPBoxProps } from './MPBox.js';
@@ -1 +1 @@
1
- export{MPBox}from"./MPBox";
1
+ export{MPBox}from"./MPBox.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
  /**
4
4
  * What is drawn between two steps of the trail.
5
5
  *
@@ -45,15 +45,21 @@ export interface MPBreadcrumbProps extends Omit<React.ComponentPropsWithoutRef<'
45
45
  */
46
46
  expandable?: boolean;
47
47
  /**
48
- * The name the trail is announced by.
49
- * @default 'Breadcrumb'
48
+ * The name the trail is announced by. Defaults to the word for it in `locale`.
50
49
  */
51
50
  label?: string;
52
51
  /**
53
- * What the `…` is announced as.
54
- * @default 'Show hidden steps'
52
+ * What the `…` is announced as. Defaults to the wording in `locale`.
55
53
  */
56
54
  expandLabel?: string;
55
+ /**
56
+ * Which language those two are written in. Falls back to the nearest
57
+ * `MPLocaleProvider`, then to English.
58
+ *
59
+ * Neither is ever drawn — the steps are the caller's own words — so without it
60
+ * a Korean page announces its trail in English.
61
+ */
62
+ locale?: string;
57
63
  /**
58
64
  * Publishes the trail as schema.org `BreadcrumbList` microdata, which is what
59
65
  * a search engine reads to draw the trail under a result instead of the bare
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as n,Fragment as t}from"react/jsx-runtime";import*as r from"react";import{MPIcon as o}from"../icon/MPIcon";import{ArrowRightIcon as i,ChevronRightIcon as a,MoreIcon as s}from"../../constants/icons";import{accentSlots as l}from"../../internal/accent";import{CONTROL_GAP as c,hasContent as m,PROSE_TEXT as d}from"../../internal/scale";const u=/*@__PURE__*/r.createContext({size:"md",last:!1,position:null}),p={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-2.5",xl:"gap-3"},h={xs:"rounded-mp-xs",sm:"rounded-mp-xs",md:"rounded-mp-xs",lg:"rounded-mp-sm",xl:"rounded-mp-sm"};const f=["chevron","arrow","slash","dot"];export const MPBreadcrumb=/*@__PURE__*/r.forwardRef(function({size:t="md",color:c="primary",separator:m="chevron",maxItems:h,itemsBeforeCollapse:x=1,itemsAfterCollapse:b=1,expandable:v=!0,label:g="Breadcrumb",expandLabel:N="Show hidden steps",structuredData:y=!1,className:k,style:B,children:j,...w},z){const[C,P]=r.useState(!1),M=r.Children.toArray(j).filter(r.isValidElement),I=M.length,S=M.some(e=>!0===e.props.current),L=!C&&!y&&void 0!==h&&I>Math.max(h,1)&&I-x-b>1?[...M.slice(0,Math.max(0,x)),null,...M.slice(I-Math.max(0,b))]:M,_="string"==typeof(A=m)&&f.includes(A)?function(n){switch(n){case"chevron":return e(o,{icon:a,size:"1.1em",className:"rtl:rotate-180"});case"arrow":return e(o,{icon:i,size:"1em",className:"rtl:rotate-180"});case"slash":return e("span",{"aria-hidden":"true",children:"/"});case"dot":return e("span",{"aria-hidden":"true",children:"·"});default:return null}}(m):m;var A;const E=r.useMemo(()=>Array.from({length:L.length},(e,n)=>({size:t,last:!S&&n===L.length-1,position:y?n+1:null})),[t,S,L.length,y]),F=["rounded-mp-xs text-mp-on-surface-variant inline-flex items-center px-0.5","appearance-none border-0 bg-transparent font-[inherit]","transition-[background-color,color] duration-(--mp-sys-motion-duration-short4)",v?["cursor-pointer hover:bg-(--_mp-accent-container) hover:text-(--_mp-on-accent-container)","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-1","focus-visible:outline-solid outline-none"].join(" "):""].filter(Boolean).join(" ");return e("nav",{ref:z,"aria-label":g,"data-mp-size":t,className:["mp-breadcrumb flex",d[t],k??""].filter(Boolean).join(" "),style:{...l(c),...B},...w,children:e("ol",{role:"list",itemScope:y||void 0,itemType:y?"https://schema.org/BreadcrumbList":void 0,className:`flex list-none flex-wrap items-center p-0 ${p[t]}`,children:L.map((t,i)=>n(r.Fragment,{children:[i>0?e("li",{"aria-hidden":"true",className:"text-mp-on-surface-variant flex shrink-0 items-center select-none",children:_}):null,t?e(u.Provider,{value:E[i],children:t}):e("li",{className:"flex shrink-0 items-center",children:v?e("button",{type:"button",className:F,"aria-label":N,onClick:()=>P(!0),children:e(o,{icon:s,size:"1.1em"})}):e("span",{className:F,"aria-hidden":"true",children:e(o,{icon:s,size:"1.1em"})})})]},t?t.key??i:"fold"))})})});export const MPBreadcrumbItem=/*@__PURE__*/r.forwardRef(function({href:o,onClick:i,startIcon:a,endIcon:s,current:l,disabled:d=!1,className:p,children:f,...x},b){const{size:v,last:g,position:N}=r.useContext(u),y=l??g,k=Boolean(o||i)&&!y&&!d,B=null!==N,j=["inline-flex min-w-0 items-center px-1 no-underline","appearance-none border-0 bg-transparent font-[inherit] text-[inherit]",c[v],h[v],"transition-[background-color,color] duration-(--mp-sys-motion-duration-short4)",d?"text-mp-on-surface/38 cursor-default":y?"text-mp-on-surface font-medium":k?["text-mp-on-surface-variant cursor-pointer","hover:bg-(--_mp-accent-container) hover:text-(--_mp-on-accent-container)","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-1","focus-visible:outline-solid outline-none"].join(" "):"text-mp-on-surface-variant"].filter(Boolean).join(" "),w=n(t,{children:[m(a)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:a}):null,e("span",{className:"truncate",itemProp:B?"name":void 0,children:f}),m(s)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:s}):null]});return n("li",{ref:b,itemProp:B?"itemListElement":void 0,itemScope:B||void 0,itemType:B?"https://schema.org/ListItem":void 0,className:["flex min-w-0 items-center",p??""].filter(Boolean).join(" "),...x,children:[B?e("meta",{itemProp:"position",content:String(N)}):null,k&&o?e("a",{href:o,itemProp:B?"item":void 0,className:j,onClick:i,children:w}):k?e("button",{type:"button",className:j,onClick:i,children:w}):e("span",{className:j,"aria-current":y?"page":void 0,"aria-disabled":d||void 0,children:w})]})});
1
+ "use client";
2
+ import{jsx as e,jsxs as n,Fragment as t}from"react/jsx-runtime";import*as r from"react";import{MPIcon as o}from"../icon/MPIcon.js";import{ArrowRightIcon as i,ChevronRightIcon as a,MoreIcon as s}from"../../constants/icons.js";import{accentSlots as l}from"../../internal/accent.js";import{useMPLocale as c,useMPMessages as m}from"../../internal/locale.js";import{BREADCRUMB as d}from"../../internal/messages/breadcrumb.js";import{CONTROL_GAP as u,hasContent as p,PROSE_TEXT as h}from"../../internal/scale.js";const f=/*@__PURE__*/r.createContext({size:"md",last:!1,position:null}),x={xs:"gap-1",sm:"gap-1.5",md:"gap-2",lg:"gap-2.5",xl:"gap-3"},b={xs:"rounded-mp-xs",sm:"rounded-mp-xs",md:"rounded-mp-xs",lg:"rounded-mp-sm",xl:"rounded-mp-sm"};const v=["chevron","arrow","slash","dot"];export const MPBreadcrumb=/*@__PURE__*/r.forwardRef(function({size:t="md",color:u="primary",separator:p="chevron",maxItems:b,itemsBeforeCollapse:g=1,itemsAfterCollapse:N=1,expandable:j=!0,label:y,expandLabel:k,locale:z,structuredData:B=!1,className:C,style:w,children:P,...M},I){const L=m(d,c(z)),[S,_]=r.useState(!1),A=r.Children.toArray(P).filter(r.isValidElement),E=A.length,F=A.some(e=>!0===e.props.current),R=!S&&!B&&void 0!==b&&E>Math.max(b,1)&&E-g-N>1?[...A.slice(0,Math.max(0,g)),null,...A.slice(E-Math.max(0,N))]:A,T="string"==typeof(D=p)&&v.includes(D)?function(n){switch(n){case"chevron":return e(o,{icon:a,size:"1.1em",className:"rtl:rotate-180"});case"arrow":return e(o,{icon:i,size:"1em",className:"rtl:rotate-180"});case"slash":return e("span",{"aria-hidden":"true",children:"/"});case"dot":return e("span",{"aria-hidden":"true",children:"·"});default:return null}}(p):p;var D;const V=r.useMemo(()=>Array.from({length:R.length},(e,n)=>({size:t,last:!F&&n===R.length-1,position:B?n+1:null})),[t,F,R.length,B]),$=["rounded-mp-xs text-mp-on-surface-variant inline-flex items-center px-0.5","appearance-none border-0 bg-transparent font-[inherit]","transition-[background-color,color] duration-(--mp-sys-motion-duration-short4)",j?["cursor-pointer hover:bg-(--_mp-accent-container) hover:text-(--_mp-on-accent-container)","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-1","focus-visible:outline-solid outline-none"].join(" "):""].filter(Boolean).join(" ");return e("nav",{ref:I,"aria-label":y??L.label,"data-mp-size":t,className:["mp-breadcrumb flex",h[t],C??""].filter(Boolean).join(" "),style:{...l(u),...w},...M,children:e("ol",{role:"list",itemScope:B||void 0,itemType:B?"https://schema.org/BreadcrumbList":void 0,className:`flex list-none flex-wrap items-center p-0 ${x[t]}`,children:R.map((t,i)=>n(r.Fragment,{children:[i>0?e("li",{"aria-hidden":"true",className:"text-mp-on-surface-variant flex shrink-0 items-center select-none",children:T}):null,t?e(f.Provider,{value:V[i],children:t}):e("li",{className:"flex shrink-0 items-center",children:j?e("button",{type:"button",className:$,"aria-label":k??L.expand,onClick:()=>_(!0),children:e(o,{icon:s,size:"1.1em"})}):e("span",{className:$,"aria-hidden":"true",children:e(o,{icon:s,size:"1.1em"})})})]},t?t.key??i:"fold"))})})});export const MPBreadcrumbItem=/*@__PURE__*/r.forwardRef(function({href:o,onClick:i,startIcon:a,endIcon:s,current:l,disabled:c=!1,className:m,children:d,...h},x){const{size:v,last:g,position:N}=r.useContext(f),j=l??g,y=Boolean(o||i)&&!j&&!c,k=null!==N,z=["inline-flex min-w-0 items-center px-1 no-underline","appearance-none border-0 bg-transparent font-[inherit] text-[inherit]",u[v],b[v],"transition-[background-color,color] duration-(--mp-sys-motion-duration-short4)",c?"text-mp-on-surface/38 cursor-default":j?"text-mp-on-surface font-medium":y?["text-mp-on-surface-variant cursor-pointer","hover:bg-(--_mp-accent-container) hover:text-(--_mp-on-accent-container)","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-1","focus-visible:outline-solid outline-none"].join(" "):"text-mp-on-surface-variant"].filter(Boolean).join(" "),B=n(t,{children:[p(a)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:a}):null,e("span",{className:"truncate",itemProp:k?"name":void 0,children:d}),p(s)?e("span",{className:"flex h-[1lh] shrink-0 items-center",children:s}):null]});return n("li",{ref:x,itemProp:k?"itemListElement":void 0,itemScope:k||void 0,itemType:k?"https://schema.org/ListItem":void 0,className:["flex min-w-0 items-center",m??""].filter(Boolean).join(" "),...h,children:[k?e("meta",{itemProp:"position",content:String(N)}):null,y&&o?e("a",{href:o,itemProp:k?"item":void 0,className:z,onClick:i,children:B}):y?e("button",{type:"button",className:z,onClick:i,children:B}):e("span",{className:z,"aria-current":j?"page":void 0,"aria-disabled":c||void 0,children:B})]})});
@@ -1,2 +1,2 @@
1
- export { MPBreadcrumb, MPBreadcrumbItem } from './MPBreadcrumb';
2
- export type { MPBreadcrumbItemProps, MPBreadcrumbProps, MPBreadcrumbSeparator } from './MPBreadcrumb';
1
+ export { MPBreadcrumb, MPBreadcrumbItem } from './MPBreadcrumb.js';
2
+ export type { MPBreadcrumbItemProps, MPBreadcrumbProps, MPBreadcrumbSeparator } from './MPBreadcrumb.js';
@@ -1 +1 @@
1
- export{MPBreadcrumb,MPBreadcrumbItem}from"./MPBreadcrumb";
1
+ export{MPBreadcrumb,MPBreadcrumbItem}from"./MPBreadcrumb.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPColor, MPStyleProps, MPVariant } from '../../types';
2
+ import type { MPColor, MPStyleProps, MPVariant } from '../../types.js';
3
3
  export interface MPButtonProps extends MPStyleProps, Omit<React.ComponentPropsWithoutRef<'button'>, 'color'> {
4
4
  /**
5
5
  * How much surface the button paints.
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as o}from"react/jsx-runtime";import*as t from"react";import{Button as n}from"@base-ui/react/button";import{MPIcon as r}from"../icon/MPIcon";import{SpinnerIcon as a}from"../../constants/icons";import{accentSlots as i}from"../../internal/accent";import{MPButtonGroupContext as s}from"../../internal/button-group";import{useMPLocale as l,useMPMessages as c}from"../../internal/locale";import{MPStateLayer as m}from"../../internal/StateLayer";import{CONTROL_GAP as p,CONTROL_HEIGHT as d,CONTROL_ICON as u,CONTROL_PAD_X as f,CONTROL_SQUARE as b,CONTROL_TEXT as x,hasContent as g}from"../../internal/scale";const v={filled:"bg-(--_mp-accent) text-(--_mp-on-accent)",tonal:"bg-(--_mp-accent-container) text-(--_mp-on-accent-container)",elevated:"shadow-mp-1 hover:shadow-mp-2 bg-mp-surface-container-low text-(--_mp-accent)",outlined:"border-mp-outline border bg-transparent text-(--_mp-accent)",text:"bg-transparent text-(--_mp-accent)"},h={filled:"bg-mp-on-surface/12 text-mp-on-surface/38",tonal:"bg-mp-on-surface/12 text-mp-on-surface/38",elevated:"bg-mp-on-surface/12 text-mp-on-surface/38 shadow-none",outlined:"border-mp-on-surface/12 border bg-transparent text-mp-on-surface/38",text:"bg-transparent text-mp-on-surface/38"};export const MPButton=/*@__PURE__*/t.forwardRef(function({variant:w,size:y,color:_,disabled:j,startIcon:k,endIcon:z,loading:B=!1,loadingLabel:C,locale:I,fullWidth:N=!1,type:P="button",className:L,style:M,children:D,onClick:R,...S},W){const $=l(I),q=c("common",$),A=t.useContext(s),E=w??A?.variant??"filled",F=y??A?.size??"md",G=_??A?.color??"primary",H=j??A?.disabled??!1,J=!g(D);return o(n,{ref:W,type:P,disabled:H,"aria-busy":B||void 0,"aria-disabled":B||void 0,"data-mp-size":F,"data-mp-variant":E,"data-loading":B||void 0,className:["mp-button group relative inline-flex shrink-0 items-center justify-center","rounded-mp-full box-border overflow-hidden align-middle whitespace-nowrap select-none","cursor-pointer appearance-none font-[inherit]","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none","transition-[background-color,border-color,box-shadow,color]","duration-(--mp-sys-motion-duration-short4)",d[F],x[F],p[F],J?`${b[F]} px-0`:f[F],H?h[E]:v[E],H?"cursor-default":"",B?"cursor-progress":"",N?"w-full":"",L??""].filter(Boolean).join(" "),style:{...i(G),...M},onClick:e=>{if(B)return e.preventDefault(),void e.stopPropagation();R?.(e)},...S,children:[H?null:e(m,{}),B?e(r,{icon:a,size:u[F],label:C??q.loading,className:"animate-spin"}):k,D,z]})});
1
+ "use client";
2
+ import{jsx as e,jsxs as o}from"react/jsx-runtime";import*as t from"react";import{Button as n}from"@base-ui/react/button";import{MPIcon as r}from"../icon/MPIcon.js";import{SpinnerIcon as a}from"../../constants/icons.js";import{accentSlots as i}from"../../internal/accent.js";import{MPButtonGroupContext as s}from"../../internal/button-group.js";import{useMPLocale as l,useMPMessages as c}from"../../internal/locale.js";import{COMMON as m}from"../../internal/messages/common.js";import{MPStateLayer as p}from"../../internal/StateLayer.js";import{CONTROL_GAP as d,CONTROL_HEIGHT as u,CONTROL_ICON as f,CONTROL_PAD_X as b,CONTROL_SQUARE as g,CONTROL_TEXT as x,hasContent as v}from"../../internal/scale.js";const h={filled:"bg-(--_mp-accent) text-(--_mp-on-accent)",tonal:"bg-(--_mp-accent-container) text-(--_mp-on-accent-container)",elevated:"shadow-mp-1 hover:shadow-mp-2 bg-mp-surface-container-low text-(--_mp-accent)",outlined:"border-mp-outline border bg-transparent text-(--_mp-accent)",text:"bg-transparent text-(--_mp-accent)"},j={filled:"bg-mp-on-surface/12 text-mp-on-surface/38",tonal:"bg-mp-on-surface/12 text-mp-on-surface/38",elevated:"bg-mp-on-surface/12 text-mp-on-surface/38 shadow-none",outlined:"border-mp-on-surface/12 border bg-transparent text-mp-on-surface/38",text:"bg-transparent text-mp-on-surface/38"};export const MPButton=/*@__PURE__*/t.forwardRef(function({variant:w,size:y,color:_,disabled:k,startIcon:z,endIcon:B,loading:C=!1,loadingLabel:I,locale:N,fullWidth:P=!1,type:L="button",className:M,style:D,children:R,onClick:S,...W},$){const q=l(N),A=c(m,q),E=t.useContext(s),F=w??E?.variant??"filled",G=y??E?.size??"md",H=_??E?.color??"primary",J=k??E?.disabled??!1,K=C||v(z),O=!(v(R)||K&&v(B));return o(n,{ref:$,type:L,disabled:J,"aria-busy":C||void 0,"aria-disabled":C||void 0,"data-mp-size":G,"data-mp-variant":F,"data-loading":C||void 0,className:["mp-button group relative inline-flex shrink-0 items-center justify-center","rounded-mp-full box-border overflow-hidden align-middle whitespace-nowrap select-none","cursor-pointer appearance-none font-[inherit]","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none","transition-[background-color,border-color,box-shadow,color]","duration-(--mp-sys-motion-duration-short4)",u[G],x[G],d[G],O?`${g[G]} px-0`:b[G],J?j[F]:h[F],J?"cursor-default":"",C?"cursor-progress":"",P?"w-full":"",M??""].filter(Boolean).join(" "),style:{...i(H),...D},onClick:e=>{if(C)return e.preventDefault(),void e.stopPropagation();S?.(e)},...W,children:[J?null:e(p,{}),C?e(r,{icon:a,size:f[G],label:I??A.loading,className:"animate-spin"}):z,R,B]})});
@@ -1,2 +1,2 @@
1
- export { MPButton } from './MPButton';
2
- export type { MPButtonProps } from './MPButton';
1
+ export { MPButton } from './MPButton.js';
2
+ export type { MPButtonProps } from './MPButton.js';
@@ -1 +1 @@
1
- export{MPButton}from"./MPButton";
1
+ export{MPButton}from"./MPButton.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { MPColor, MPOrientation, MPStyleProps, MPVariant } from '../../types';
2
+ import type { MPColor, MPOrientation, MPStyleProps, MPVariant } from '../../types.js';
3
3
  export interface MPButtonGroupProps extends MPStyleProps, Omit<React.ComponentPropsWithoutRef<'div'>, 'color'> {
4
4
  /**
5
5
  * Which way the buttons run.
@@ -12,6 +12,15 @@ export interface MPButtonGroupProps extends MPStyleProps, Omit<React.ComponentPr
12
12
  color?: MPColor;
13
13
  /** Disables every button in the group at once. */
14
14
  disabled?: boolean;
15
+ /**
16
+ * The group's name is `aria-label` through the rest props, and is worth
17
+ * setting whenever the run is a *set* rather than a row that happens to be
18
+ * adjacent — "Alignment", "Text style".
19
+ *
20
+ * A screen reader announces the boundaries of a `role="group"` either way; the
21
+ * name is what makes crossing that boundary mean something rather than being
22
+ * an interruption between two buttons.
23
+ */
15
24
  children?: React.ReactNode;
16
25
  }
17
26
  /**
@@ -1 +1,2 @@
1
- import{jsx as o}from"react/jsx-runtime";import*as r from"react";import{MPButtonGroupContext as e}from"../../internal/button-group";const t={horizontal:"[&>*:not(:first-child)]:rounded-s-mp-sm [&>*:not(:last-child)]:rounded-e-mp-sm",vertical:"[&>*:not(:first-child)]:rounded-t-mp-sm [&>*:not(:last-child)]:rounded-b-mp-sm"};export const MPButtonGroup=/*@__PURE__*/r.forwardRef(function({variant:i,size:l,color:n,disabled:a,orientation:s="horizontal",fullWidth:d=!1,className:c,children:m,...u},f){const p=r.useMemo(()=>({variant:i,size:l,color:n,disabled:a}),[i,l,n,a]);return o(e.Provider,{value:p,children:o("div",{ref:f,role:"group","data-mp-orientation":s,className:["mp-button-group inline-flex gap-0.5 align-middle","vertical"===s?"flex-col":"flex-row",t[s],"[&>*]:relative [&>*:focus-visible]:z-10",d?"flex w-full [&>*]:flex-1":"",c??""].filter(Boolean).join(" "),...u,children:m})})});
1
+ "use client";
2
+ import{jsx as e}from"react/jsx-runtime";import*as o from"react";import{GROUP_JOIN as r,MPButtonGroupContext as i}from"../../internal/button-group.js";export const MPButtonGroup=/*@__PURE__*/o.forwardRef(function({variant:l,size:t,color:a,disabled:n,orientation:s="horizontal",fullWidth:f=!1,className:c,children:u,...d},m){const p=o.useMemo(()=>({variant:l,size:t,color:a,disabled:n}),[l,t,a,n]);return e(i.Provider,{value:p,children:e("div",{ref:m,role:"group","data-mp-orientation":s,className:["mp-button-group inline-flex gap-0.5 align-middle","vertical"===s?"flex-col":"flex-row",r[s],"[&>*]:relative [&>*:focus-visible]:z-10",f?"flex w-full [&>*]:flex-1":"",c??""].filter(Boolean).join(" "),...d,children:u})})});
@@ -1,2 +1,2 @@
1
- export { MPButtonGroup } from './MPButtonGroup';
2
- export type { MPButtonGroupProps } from './MPButtonGroup';
1
+ export { MPButtonGroup } from './MPButtonGroup.js';
2
+ export type { MPButtonGroupProps } from './MPButtonGroup.js';
@@ -1 +1 @@
1
- export{MPButtonGroup}from"./MPButtonGroup";
1
+ export{MPButtonGroup}from"./MPButtonGroup.js";
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import { type MPBoxProps } from '../box/MPBox';
2
+ import { type MPBoxProps } from '../box/MPBox.js';
3
3
  export interface MPCardProps extends Omit<MPBoxProps, 'title' | 'padded'> {
4
4
  /**
5
5
  * The card's heading.
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as l,Fragment as a}from"react/jsx-runtime";import*as r from"react";import{MPBox as n}from"../box/MPBox";import{hasContent as i,META_TEXT as o,PROSE_TEXT as t,SHEET_GAP as c,SHEET_PAD_X as s,SHEET_PAD_Y as d,SHEET_TITLE as m}from"../../internal/scale";export const MPCard=/*@__PURE__*/r.forwardRef(function({size:r="md",title:f,subtitle:u,headerAction:p,media:x,footer:h,dividers:_=!1,className:v,children:N,...w},b){const k=s[r],$=d[r],g=_?`${k} ${$}`:k,j=i(f)||i(u)||i(p),y=i(x),B=[j?{key:"header",className:"mp-card__header flex items-start gap-3",content:l(a,{children:[i(f)||i(u)?l("div",{className:"flex min-w-0 flex-1 flex-col",children:[i(f)?e("div",{className:`mp-card__title ${m[r]}`,children:f}):null,i(u)?e("div",{className:`text-mp-on-surface-variant ${o}`,children:u}):null]}):null,i(p)?e("div",{className:"ms-auto shrink-0",children:p}):null]})}:null,i(N)?{key:"content",className:`mp-card__body min-w-0 ${t[r]}`,content:N}:null,i(h)?{key:"footer",className:"mp-card__footer flex flex-wrap items-center gap-2",content:h}:null].filter(e=>null!==e);return l(n,{ref:b,size:r,padded:!1,className:["mp-card flex flex-col",y?"overflow-hidden":"",v??""].filter(Boolean).join(" "),...w,children:[y?e("div",{className:"mp-card__media [&_img]:block [&_img]:w-full [&_video]:block [&_video]:w-full",children:x}):null,B.length>0?e("div",{className:["flex min-w-0 flex-col",_?"":`${$} ${c[r]}`].filter(Boolean).join(" "),children:B.map((l,a)=>e("div",{className:[g,l.className,_&&a>0?"border-mp-outline-variant border-t":""].filter(Boolean).join(" "),children:l.content},l.key))}):null]})});
1
+ "use client";
2
+ import{jsx as e,jsxs as l,Fragment as a}from"react/jsx-runtime";import*as r from"react";import{MPBox as n}from"../box/MPBox.js";import{hasContent as i,META_TEXT as o,PROSE_TEXT as t,SHEET_GAP as s,SHEET_PAD_X as c,SHEET_PAD_Y as d,SHEET_TITLE as m}from"../../internal/scale.js";export const MPCard=/*@__PURE__*/r.forwardRef(function({size:r="md",title:f,subtitle:u,headerAction:p,media:x,footer:h,dividers:_=!1,className:v,children:N,...j},w){const b=c[r],k=d[r],$=_?`${b} ${k}`:b,g=i(f)||i(u)||i(p),y=i(x),B=[g?{key:"header",className:"mp-card__header flex items-start gap-3",content:l(a,{children:[i(f)||i(u)?l("div",{className:"flex min-w-0 flex-1 flex-col",children:[i(f)?e("div",{className:`mp-card__title ${m[r]}`,children:f}):null,i(u)?e("div",{className:`text-mp-on-surface-variant ${o}`,children:u}):null]}):null,i(p)?e("div",{className:"ms-auto shrink-0",children:p}):null]})}:null,i(N)?{key:"content",className:`mp-card__body min-w-0 ${t[r]}`,content:N}:null,i(h)?{key:"footer",className:"mp-card__footer flex flex-wrap items-center gap-2",content:h}:null].filter(e=>null!==e);return l(n,{ref:w,size:r,padded:!1,className:["mp-card flex flex-col",y?"overflow-hidden":"",v??""].filter(Boolean).join(" "),...j,children:[y?e("div",{className:"mp-card__media [&_img]:block [&_img]:w-full [&_video]:block [&_video]:w-full",children:x}):null,B.length>0?e("div",{className:["flex min-w-0 flex-col",_?"":`${k} ${s[r]}`].filter(Boolean).join(" "),children:B.map((l,a)=>e("div",{className:[$,l.className,_&&a>0?"border-mp-outline-variant border-t":""].filter(Boolean).join(" "),children:l.content},l.key))}):null]})});
@@ -1,2 +1,2 @@
1
- export { MPCard } from './MPCard';
2
- export type { MPCardProps } from './MPCard';
1
+ export { MPCard } from './MPCard.js';
2
+ export type { MPCardProps } from './MPCard.js';
@@ -1 +1 @@
1
- export{MPCard}from"./MPCard";
1
+ export{MPCard}from"./MPCard.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 MPCarouselProps extends Omit<React.ComponentPropsWithoutRef<'div'>, 'color' | 'defaultValue' | 'onChange'> {
4
4
  /** Which slide is showing, counted from 0. Use with `onValueChange`. */
5
5
  value?: number;
@@ -62,20 +62,25 @@ export interface MPCarouselProps extends Omit<React.ComponentPropsWithoutRef<'di
62
62
  * @default 'primary'
63
63
  */
64
64
  color?: MPColor;
65
- /**
66
- * The carousel's accessible name.
67
- * @default 'Carousel'
68
- */
65
+ /** The carousel's accessible name. Defaults to the word for it in `locale`. */
69
66
  label?: string;
70
- /** @default 'Previous slide' */
67
+ /** Defaults to the wording in `locale`. */
71
68
  previousLabel?: string;
72
- /** @default 'Next slide' */
69
+ /** The same. */
73
70
  nextLabel?: string;
74
71
  /**
75
72
  * How one slide is named to a screen reader, and how its mark is labelled.
76
- * @default (index, count) => `Slide ${index} of ${count}`
73
+ * Defaults to the wording in `locale` with the two numbers set into it.
77
74
  */
78
75
  slideLabel?: (index: number, count: number) => string;
76
+ /**
77
+ * Which language the carousel's own names are written in. Falls back to the
78
+ * nearest `MPLocaleProvider`, then to English.
79
+ *
80
+ * Nothing here is ever drawn — the strip is pictures and the arrows are
81
+ * chevrons — so without it a Korean page reads its slides out in English.
82
+ */
83
+ locale?: string;
79
84
  /** The slides. Every top-level child becomes one. */
80
85
  children?: React.ReactNode;
81
86
  }
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as t from"react";import{MPIconButton as n}from"../icon-button/MPIconButton";import{MPIcon as o}from"../icon/MPIcon";import{ChevronLeftIcon as a,ChevronRightIcon as i}from"../../constants/icons";import{accentSlots as l}from"../../internal/accent";import{CONTROL_ICON as s}from"../../internal/scale";import{CONTAINER_SURFACE as c}from"../../internal/surface";import{VISUALLY_HIDDEN as u}from"../../internal/visually-hidden";const d={xs:"start-1 end-1",sm:"start-1.5 end-1.5",md:"start-2 end-2",lg:"start-3 end-3",xl:"start-4 end-4"},m={xs:{rest:"h-1 w-1",current:"h-1 w-3",gap:"gap-1"},sm:{rest:"h-1 w-1",current:"h-1 w-3.5",gap:"gap-1"},md:{rest:"h-1.5 w-1.5",current:"h-1.5 w-4",gap:"gap-1.5"},lg:{rest:"h-1.5 w-1.5",current:"h-1.5 w-5",gap:"gap-2"},xl:{rest:"h-2 w-2",current:"h-2 w-6",gap:"gap-2"}},f=(e,r)=>`Slide ${e} of ${r}`;export const MPCarousel=/*@__PURE__*/t.forwardRef(function({value:p,defaultValue:h=0,onValueChange:b,loop:v=!0,autoPlay:w=!1,interval:g=5e3,arrows:x=!0,indicators:N=!0,variant:y="outlined",size:M="md",color:k="primary",label:R="Carousel",previousLabel:j="Previous slide",nextLabel:C="Next slide",slideLabel:P=f,className:z,style:I,children:$,...L},E){const S=t.Children.toArray($),T=S.length,[A,B]=t.useState(h),F=Math.min(Math.max(p??A,0),Math.max(T-1,0)),V=t.useRef(null),W=t.useRef([]),q=t.useRef(!1),_=t.useRef(!1),D=t.useRef(!1),[G,H]=t.useState(!1),J=t.useRef(F),K=t.useRef(b);J.current=F,K.current=b;const O=t.useCallback((e,r=!1)=>{if(0===T)return;const t=v?(e%T+T)%T:Math.min(Math.max(e,0),T-1);q.current=r,void 0===p&&B(t),t!==J.current&&K.current?.(t)},[T,v,p]);t.useEffect(()=>{if(q.current)return void(q.current=!1);if(!_.current)return void(_.current=!0);W.current[F]?.scrollIntoView({block:"nearest",inline:"start"}),D.current=!0;const e=window.setTimeout(()=>{D.current=!1},700);return()=>window.clearTimeout(e)},[F]),t.useEffect(()=>{if(!w||G||T<2)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;const e=window.setInterval(()=>{document.hidden||O(J.current+1)},g);return()=>window.clearInterval(e)},[w,G,T,g,O]);const Q=t.useRef(0);t.useEffect(()=>()=>cancelAnimationFrame(Q.current),[]);const U=F<=0,X=F>=T-1;return r("div",{ref:E,role:"region","aria-roledescription":"carousel","aria-label":R,"data-mp-size":M,"data-mp-variant":y,className:["mp-carousel flex w-full flex-col",z??""].filter(Boolean).join(" "),style:{...l(k),...I},onPointerEnter:()=>H(!0),onPointerLeave:()=>H(!1),onFocus:()=>H(!0),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||H(!1)},...L,children:[r("div",{className:["relative min-w-0 overflow-hidden","rounded-mp-md box-border",c[y],"text-mp-on-surface"].join(" "),children:[e("div",{ref:V,tabIndex:0,role:"group","aria-label":R,className:["flex min-w-0 snap-x snap-mandatory overflow-x-auto scroll-smooth","motion-reduce:scroll-auto","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","outline-mp-secondary focus-visible:outline-2 focus-visible:-outline-offset-2","focus-visible:outline-solid outline-none"].join(" "),onScroll:()=>{Q.current||(Q.current=requestAnimationFrame(()=>{Q.current=0;const e=V.current;if(!e||0===e.clientWidth||D.current)return;const r=Math.round(Math.abs(e.scrollLeft)/e.clientWidth);r!==J.current&&r>=0&&r<T&&O(r,!0)}))},children:S.map((r,t)=>e("div",{ref:e=>{W.current[t]=e,W.current.length=T},role:"group","aria-roledescription":"slide","aria-label":P(t+1,T),className:"w-full shrink-0 grow-0 basis-full snap-start",children:r},t))}),x&&T>1?r("div",{className:`pointer-events-none absolute inset-y-0 flex items-center ${d[M]}`,children:[e(n,{variant:"filled",size:M,color:k,label:j,disabled:!v&&U,className:"pointer-events-auto",icon:e(o,{icon:a,size:s[M],className:"rtl:rotate-180"}),onClick:()=>O(F-1)}),e("span",{className:"flex-1"}),e(n,{variant:"filled",size:M,color:k,label:C,disabled:!v&&X,className:"pointer-events-auto",icon:e(o,{icon:i,size:s[M],className:"rtl:rotate-180"}),onClick:()=>O(F+1)})]}):null]}),N&&T>1?e("div",{className:`flex shrink-0 items-center justify-center pt-2 ${m[M].gap}`,children:S.map((r,t)=>e("button",{type:"button","aria-label":P(t+1,T),"aria-current":t===F?"true":void 0,className:["rounded-mp-full cursor-pointer appearance-none border-0 p-0","transition-[width,background-color] duration-(--mp-sys-motion-duration-short4)","ease-mp-standard motion-reduce:transition-none","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none",t===F?`${m[M].current} bg-(--_mp-accent)`:`${m[M].rest} bg-mp-outline-variant hover:bg-mp-outline`].join(" "),onClick:()=>O(t)},t))}):null,e("span",{className:u,"aria-live":w?"off":"polite",children:T>0?P(F+1,T):""})]})});
1
+ "use client";
2
+ import{jsx as e,jsxs as r}from"react/jsx-runtime";import*as t from"react";import{MPIconButton as n}from"../icon-button/MPIconButton.js";import{MPIcon as o}from"../icon/MPIcon.js";import{ChevronLeftIcon as a,ChevronRightIcon as i}from"../../constants/icons.js";import{accentSlots as s}from"../../internal/accent.js";import{fillMessage as l}from"../../internal/i18n.js";import{useMPLocale as c,useMPMessages as u}from"../../internal/locale.js";import{CAROUSEL as d}from"../../internal/messages/carousel.js";import{CONTROL_ICON as m}from"../../internal/scale.js";import{CONTAINER_SURFACE as f}from"../../internal/surface.js";import{VISUALLY_HIDDEN as p}from"../../internal/visually-hidden.js";const h={xs:"start-1 end-1",sm:"start-1.5 end-1.5",md:"start-2 end-2",lg:"start-3 end-3",xl:"start-4 end-4"},b={xs:{rest:"h-1 w-1",current:"h-1 w-3",gap:"gap-1"},sm:{rest:"h-1 w-1",current:"h-1 w-3.5",gap:"gap-1"},md:{rest:"h-1.5 w-1.5",current:"h-1.5 w-4",gap:"gap-1.5"},lg:{rest:"h-1.5 w-1.5",current:"h-1.5 w-5",gap:"gap-2"},xl:{rest:"h-2 w-2",current:"h-2 w-6",gap:"gap-2"}};export const MPCarousel=/*@__PURE__*/t.forwardRef(function({value:v,defaultValue:w=0,onValueChange:g,loop:x=!0,autoPlay:j=!1,interval:N=5e3,arrows:y=!0,indicators:M=!0,variant:k="outlined",size:R="md",color:C="primary",label:z,previousLabel:I,nextLabel:P,slideLabel:S,locale:L,className:E,style:T,children:$,...A},B){const F=u(d,c(L)),V=z??F.label,W=S??((e,r)=>l(F.slide,{index:String(e),total:String(r)})),q=t.Children.toArray($),_=q.length,[D,G]=t.useState(w),H=Math.min(Math.max(v??D,0),Math.max(_-1,0)),J=t.useRef(null),K=t.useRef([]),O=t.useRef(!1),Q=t.useRef(!1),U=t.useRef(!1),[X,Y]=t.useState(!1),[Z,ee]=t.useState(!1),re=X||Z,te=t.useRef(H),ne=t.useRef(g);te.current=H,ne.current=g;const oe=t.useCallback((e,r=!1)=>{if(0===_)return;const t=x?(e%_+_)%_:Math.min(Math.max(e,0),_-1);O.current=r,void 0===v&&G(t),t!==te.current&&ne.current?.(t)},[_,x,v]);t.useEffect(()=>{if(O.current)return void(O.current=!1);if(!Q.current)return void(Q.current=!0);K.current[H]?.scrollIntoView({block:"nearest",inline:"start"}),U.current=!0;const e=window.setTimeout(()=>{U.current=!1},700);return()=>window.clearTimeout(e)},[H]),t.useEffect(()=>{if(!j||re||_<2)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return;const e=window.setInterval(()=>{document.hidden||oe(te.current+1)},N);return()=>window.clearInterval(e)},[j,re,_,N,oe]);const ae=t.useRef(0);t.useEffect(()=>()=>cancelAnimationFrame(ae.current),[]);const ie=H<=0,se=H>=_-1;return r("div",{ref:B,role:"region","aria-roledescription":"carousel","aria-label":V,"data-mp-size":R,"data-mp-variant":k,className:["mp-carousel flex w-full flex-col",E??""].filter(Boolean).join(" "),style:{...s(C),...T},onPointerEnter:()=>Y(!0),onPointerLeave:()=>Y(!1),onFocus:()=>ee(!0),onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||ee(!1)},...A,children:[r("div",{className:["relative min-w-0 overflow-hidden","rounded-mp-md box-border",f[k],"text-mp-on-surface"].join(" "),children:[e("div",{ref:J,tabIndex:0,role:"group","aria-label":V,className:["flex min-w-0 snap-x snap-mandatory overflow-x-auto scroll-smooth","motion-reduce:scroll-auto","[scrollbar-width:none] [&::-webkit-scrollbar]:hidden","outline-mp-secondary focus-visible:outline-2 focus-visible:-outline-offset-2","focus-visible:outline-solid outline-none"].join(" "),onScroll:()=>{ae.current||(ae.current=requestAnimationFrame(()=>{ae.current=0;const e=J.current;if(!e||0===e.clientWidth||U.current)return;const r=Math.round(Math.abs(e.scrollLeft)/e.clientWidth);r!==te.current&&r>=0&&r<_&&oe(r,!0)}))},children:q.map((r,t)=>e("div",{ref:e=>{K.current[t]=e,K.current.length=_},role:"group","aria-roledescription":"slide","aria-label":W(t+1,_),className:"w-full shrink-0 grow-0 basis-full snap-start",children:r},t))}),y&&_>1?r("div",{className:`pointer-events-none absolute inset-y-0 flex items-center ${h[R]}`,children:[e(n,{variant:"filled",size:R,color:C,label:I??F.previous,disabled:!x&&ie,className:"pointer-events-auto",icon:e(o,{icon:a,size:m[R],className:"rtl:rotate-180"}),onClick:()=>oe(H-1)}),e("span",{className:"flex-1"}),e(n,{variant:"filled",size:R,color:C,label:P??F.next,disabled:!x&&se,className:"pointer-events-auto",icon:e(o,{icon:i,size:m[R],className:"rtl:rotate-180"}),onClick:()=>oe(H+1)})]}):null]}),M&&_>1?e("div",{className:`flex shrink-0 items-center justify-center pt-2 ${b[R].gap}`,children:q.map((r,t)=>e("button",{type:"button","aria-label":W(t+1,_),"aria-current":t===H?"true":void 0,className:["rounded-mp-full cursor-pointer appearance-none border-0 p-0","transition-[width,background-color] duration-(--mp-sys-motion-duration-short4)","ease-mp-standard motion-reduce:transition-none","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none",t===H?`${b[R].current} bg-(--_mp-accent)`:`${b[R].rest} bg-mp-outline-variant hover:bg-mp-outline`].join(" "),onClick:()=>oe(t)},t))}):null,e("span",{className:p,"aria-live":j?"off":"polite",children:_>0?W(H+1,_):""})]})});
@@ -1,2 +1,2 @@
1
- export { MPCarousel } from './MPCarousel';
2
- export type { MPCarouselProps } from './MPCarousel';
1
+ export { MPCarousel } from './MPCarousel.js';
2
+ export type { MPCarouselProps } from './MPCarousel.js';
@@ -1 +1 @@
1
- export{MPCarousel}from"./MPCarousel";
1
+ export{MPCarousel}from"./MPCarousel.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
  /**
4
4
  * Whose message this is.
5
5
  *
@@ -17,9 +17,22 @@ export type MPChatBubbleSide = 'start' | 'end';
17
17
  * colour family.
18
18
  */
19
19
  export type MPChatBubbleStatus = 'sending' | 'sent' | 'delivered' | 'read' | 'failed';
20
- /** What a link inside a message unfurls to. */
20
+ /**
21
+ * What a link inside a message unfurls to.
22
+ *
23
+ * This is the one shape in the library whose contents typically come from
24
+ * **somebody else** — a preview is attached to a message another person sent —
25
+ * so `url` is checked before it is rendered rather than trusted. See the note on
26
+ * `LinkPreview` below.
27
+ */
21
28
  export interface MPChatBubblePreview {
22
- /** Where the card goes. */
29
+ /**
30
+ * Where the card goes.
31
+ *
32
+ * Only `http:`, `https:`, `mailto:`, `tel:` and relative URLs are rendered.
33
+ * Anything else — `javascript:`, `data:` — draws the card without a link
34
+ * rather than handing the reader a one-click script execution.
35
+ */
23
36
  url: string;
24
37
  /** The page's title. */
25
38
  title?: React.ReactNode;
@@ -1 +1,2 @@
1
- import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as a from"react";import{MPIcon as r}from"../icon/MPIcon";import{CheckIcon as l,ClockIcon as t,ErrorIcon as i,LinkIcon as o}from"../../constants/icons";import{accentSlots as s}from"../../internal/accent";import{useMPLocale as c,useMPMessages as m}from"../../internal/locale";import{hasContent as d,META_TEXT as p,PROSE_TEXT as u}from"../../internal/scale";import{VISUALLY_HIDDEN as f}from"../../internal/visually-hidden";const h={xs:"px-2 py-1",sm:"px-2.5 py-1.5",md:"px-3 py-2",lg:"px-3.5 py-2.5",xl:"px-4 py-3"},b={start:"[border-start-start-radius:var(--mp-sys-shape-corner-extra-small)]",end:"[border-start-end-radius:var(--mp-sys-shape-corner-extra-small)]"},x={filled:"bg-(--_mp-accent) text-(--_mp-on-accent)",tonal:"bg-(--_mp-accent-container) text-(--_mp-on-accent-container)",elevated:"shadow-mp-1 bg-mp-surface-container-low text-mp-on-surface",outlined:"border-mp-outline-variant border bg-transparent text-mp-on-surface",text:"bg-mp-surface-container-low text-mp-on-surface"};function v(){return n("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"size-full",children:[e("path",{d:"m1.5 8.5 2.75 2.75L9.5 6",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"}),e("path",{d:"M7 10.75 8.25 12l5.25-5.25",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})}const g={sending:e(r,{icon:t,size:"1.15em"}),sent:e(r,{icon:l,size:"1.15em"}),delivered:e("span",{className:"block size-[1.15em]",children:e(v,{})}),read:e("span",{className:"block size-[1.15em]",children:e(v,{})}),failed:e(r,{icon:i,size:"1.15em"})},N={sending:"text-mp-on-surface-variant",sent:"text-mp-on-surface-variant",delivered:"text-mp-on-surface-variant",read:"text-(--_mp-accent)",failed:"text-mp-error"},w=["rounded-mp-sm block overflow-hidden border no-underline","[border-color:color-mix(in_oklab,currentColor_18%,transparent)]","[background-color:color-mix(in_oklab,currentColor_7%,transparent)]","hover:[background-color:color-mix(in_oklab,currentColor_12%,transparent)]","transition-[background-color] duration-(--mp-sys-motion-duration-short4) ease-mp-standard","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none"].join(" "),y=["shrink-0 opacity-0","transition-opacity duration-(--mp-sys-motion-duration-short4) ease-mp-standard","group-hover/bubble:opacity-100 group-focus-within/bubble:opacity-100","[@media(hover:none)]:opacity-100"].join(" ");export const MPChatBubble=/*@__PURE__*/a.forwardRef(function({side:a="start",name:r,time:l,avatar:t,status:i,statusLabel:o,typing:v=!1,media:w,preview:j,actions:z,locale:C,variant:L="tonal",size:B="md",color:$="primary",className:M,style:P,children:W,...I},R){const T=c(C),q=m("chat",T),A="end"===a,D=d(r)||d(l),E=v||d(W)||Boolean(j);return n("div",{ref:R,"data-mp-size":B,"data-mp-variant":L,"data-mp-side":a,className:["mp-chat-bubble group/bubble flex w-full items-start gap-2",A?"flex-row-reverse":"",M??""].filter(Boolean).join(" "),style:{...s($),...P},...I,children:[d(t)?e("div",{className:"shrink-0",children:t}):null,n("div",{className:["flex min-w-0 max-w-[min(100%,32rem)] flex-col gap-1",A?"items-end":"items-start"].join(" "),children:[D?n("div",{className:`flex items-baseline gap-2 ${p}`,children:[d(r)?e("span",{className:"font-medium",children:r}):null,d(l)?e("span",{className:"text-mp-on-surface-variant",children:l}):null]}):null,n("div",{className:"flex min-w-0 items-center gap-1 "+(A?"flex-row-reverse":""),children:[n("div",{className:["mp-chat-bubble__sheet rounded-mp-xl flex min-w-0 flex-col overflow-hidden","box-border",b[a],x[L],u[B]].join(" "),children:[d(w)?e("div",{className:"[&_img]:block [&_img]:w-full [&_video]:block [&_video]:w-full",children:w}):null,E?n("div",{className:`flex min-w-0 flex-col gap-2 ${h[B]}`,children:[v?e(k,{label:q.typing}):d(W)?e("div",{className:"min-w-0 break-words whitespace-pre-line",children:W}):null,j?e(_,{preview:j}):null]}):null]}),d(z)?e("div",{className:y,children:z}):null]}),i?n("div",{className:`flex items-center gap-1 ${p} ${N[i]}`,children:[g[i],e("span",{className:f,children:o??q[i]})]}):null]})]})});function k({label:a}){return n("div",{className:"flex items-center gap-1 py-[0.35em]",role:"status",children:[[0,1,2].map(n=>e("span",{"aria-hidden":"true",className:"mp-chat-typing size-[0.45em] rounded-full bg-current",style:{"--_mp-index":n}},n)),e("span",{className:f,children:a})]})}function _({preview:a}){const{url:l,title:t,description:i,image:s,site:c,newTab:m=!1}=a;return n("a",{href:l,target:m?"_blank":void 0,rel:m?"noopener noreferrer":void 0,className:w,children:[s?e("img",{src:s,alt:"",className:"block h-28 w-full object-cover"}):null,n("div",{className:"flex flex-col gap-0.5 p-2",children:[d(c)?n("span",{className:"flex items-center gap-1 text-[0.85em] opacity-70",children:[e(r,{icon:o,size:"1em"}),e("span",{className:"truncate",children:c})]}):null,d(t)?e("span",{className:"font-medium",children:t}):null,d(i)?e("span",{className:"line-clamp-2 text-[0.9em] opacity-80",children:i}):null]})]})}
1
+ "use client";
2
+ import{jsx as e,jsxs as n}from"react/jsx-runtime";import*as r from"react";import{MPIcon as a}from"../icon/MPIcon.js";import{CheckIcon as l,ClockIcon as i,ErrorIcon as t,LinkIcon as s}from"../../constants/icons.js";import{accentSlots as o}from"../../internal/accent.js";import{useMPLocale as c,useMPMessages as m}from"../../internal/locale.js";import{linkRel as d,safeHref as p}from"../../internal/link.js";import{CHAT as u}from"../../internal/messages/chat.js";import{hasContent as f,META_TEXT as h,PROSE_TEXT as b}from"../../internal/scale.js";import{VISUALLY_HIDDEN as x}from"../../internal/visually-hidden.js";const v={xs:"px-2 py-1",sm:"px-2.5 py-1.5",md:"px-3 py-2",lg:"px-3.5 py-2.5",xl:"px-4 py-3"},g={start:"[border-start-start-radius:var(--mp-sys-shape-corner-extra-small)]",end:"[border-start-end-radius:var(--mp-sys-shape-corner-extra-small)]"},y={filled:"bg-(--_mp-accent) text-(--_mp-on-accent)",tonal:"bg-(--_mp-accent-container) text-(--_mp-on-accent-container)",elevated:"shadow-mp-1 bg-mp-surface-container-low text-mp-on-surface",outlined:"border-mp-outline-variant border bg-transparent text-mp-on-surface",text:"bg-mp-surface-container-low text-mp-on-surface"};function N(){return n("svg",{viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",className:"size-full",children:[e("path",{d:"m1.5 8.5 2.75 2.75L9.5 6",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"}),e("path",{d:"M7 10.75 8.25 12l5.25-5.25",stroke:"currentColor",strokeWidth:"1.75",strokeLinecap:"round",strokeLinejoin:"round"})]})}const w={sending:e(a,{icon:i,size:"1.15em"}),sent:e(a,{icon:l,size:"1.15em"}),delivered:e("span",{className:"block size-[1.15em]",children:e(N,{})}),read:e("span",{className:"block size-[1.15em]",children:e(N,{})}),failed:e(a,{icon:t,size:"1.15em"})},k={sending:"text-mp-on-surface-variant",sent:"text-mp-on-surface-variant",delivered:"text-mp-on-surface-variant",read:"text-(--_mp-accent)",failed:"text-mp-error"},j=/*@__PURE__*/["rounded-mp-sm block overflow-hidden border no-underline","[border-color:color-mix(in_oklab,currentColor_18%,transparent)]","[background-color:color-mix(in_oklab,currentColor_7%,transparent)]","hover:[background-color:color-mix(in_oklab,currentColor_12%,transparent)]","transition-[background-color] duration-(--mp-sys-motion-duration-short4) ease-mp-standard","outline-mp-secondary focus-visible:outline-2 focus-visible:outline-offset-2","focus-visible:outline-solid outline-none"].join(" "),_=/*@__PURE__*/["shrink-0 opacity-0","transition-opacity duration-(--mp-sys-motion-duration-short4) ease-mp-standard","group-hover/bubble:opacity-100 group-focus-within/bubble:opacity-100","[@media(hover:none)]:opacity-100"].join(" ");export const MPChatBubble=/*@__PURE__*/r.forwardRef(function({side:r="start",name:a,time:l,avatar:i,status:t,statusLabel:s,typing:d=!1,media:p,preview:N,actions:j,locale:L,variant:B="tonal",size:$="md",color:M="primary",className:P,style:W,children:I,...R},T){const q=c(L),A=m(u,q),D="end"===r,E=f(a)||f(l),F=d||f(I)||Boolean(N);return n("div",{ref:T,"data-mp-size":$,"data-mp-variant":B,"data-mp-side":r,className:["mp-chat-bubble group/bubble flex w-full items-start gap-2",D?"flex-row-reverse":"",P??""].filter(Boolean).join(" "),style:{...o(M),...W},...R,children:[f(i)?e("div",{className:"shrink-0",children:i}):null,n("div",{className:["flex min-w-0 max-w-[min(100%,32rem)] flex-col gap-1",D?"items-end":"items-start"].join(" "),children:[E?n("div",{className:`flex items-baseline gap-2 ${h}`,children:[f(a)?e("span",{className:"font-medium",children:a}):null,f(l)?e("span",{className:"text-mp-on-surface-variant",children:l}):null]}):null,n("div",{className:"flex min-w-0 items-center gap-1 "+(D?"flex-row-reverse":""),children:[n("div",{className:["mp-chat-bubble__sheet rounded-mp-xl flex min-w-0 flex-col overflow-hidden","box-border",g[r],y[B],b[$]].join(" "),children:[f(p)?e("div",{className:"[&_img]:block [&_img]:w-full [&_video]:block [&_video]:w-full",children:p}):null,F?n("div",{className:`flex min-w-0 flex-col gap-2 ${v[$]}`,children:[d?e(z,{label:A.typing}):f(I)?e("div",{className:"min-w-0 break-words whitespace-pre-line",children:I}):null,N?e(C,{preview:N}):null]}):null]}),f(j)?e("div",{className:_,children:j}):null]}),t?n("div",{className:`flex items-center gap-1 ${h} ${k[t]}`,children:[w[t],e("span",{className:x,children:s??A[t]})]}):null]})]})});function z({label:r}){return n("div",{className:"flex items-center gap-1 py-[0.35em]",role:"status",children:[[0,1,2].map(n=>e("span",{"aria-hidden":"true",className:"mp-chat-typing size-[0.45em] rounded-full bg-current",style:{"--_mp-index":n}},n)),e("span",{className:x,children:r})]})}function C({preview:r}){const{url:l,title:i,description:t,image:o,site:c,newTab:m=!1}=r,u=m?"_blank":void 0;return n("a",{href:p(l),target:u,rel:d(u,void 0),className:j,children:[o?e("img",{src:o,alt:"",loading:"lazy",decoding:"async",referrerPolicy:"no-referrer",width:640,height:112,className:"block h-28 w-full object-cover"}):null,n("div",{className:"flex flex-col gap-0.5 p-2",children:[f(c)?n("span",{className:"flex items-center gap-1 text-[0.85em] opacity-70",children:[e(a,{icon:s,size:"1em"}),e("span",{className:"truncate",children:c})]}):null,f(i)?e("span",{className:"font-medium",children:i}):null,f(t)?e("span",{className:"line-clamp-2 text-[0.9em] opacity-80",children:t}):null]})]})}
@@ -1,2 +1,2 @@
1
- export { MPChatBubble } from './MPChatBubble';
2
- export type { MPChatBubblePreview, MPChatBubbleProps, MPChatBubbleSide, MPChatBubbleStatus } from './MPChatBubble';
1
+ export { MPChatBubble } from './MPChatBubble.js';
2
+ export type { MPChatBubblePreview, MPChatBubbleProps, MPChatBubbleSide, MPChatBubbleStatus } from './MPChatBubble.js';
@@ -1 +1 @@
1
- export{MPChatBubble}from"./MPChatBubble";
1
+ export{MPChatBubble}from"./MPChatBubble.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
  export interface MPCheckboxProps {
4
4
  /** Whether the box is ticked. Use with `onCheckedChange` for a controlled box. */
5
5
  checked?: boolean;