@mezzanine-ui/react 0.16.0 → 1.0.0-alpha.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 (454) hide show
  1. package/Accordion/AccordionControlContext.js +1 -0
  2. package/Accordion/AccordionDetails.js +1 -0
  3. package/Accordion/AccordionSummary.js +10 -10
  4. package/Accordion/index.d.ts +6 -3
  5. package/Alert/index.d.ts +3 -2
  6. package/AlertBanner/AlertBanner.d.ts +93 -0
  7. package/AlertBanner/AlertBanner.js +154 -0
  8. package/AlertBanner/index.d.ts +2 -0
  9. package/AlertBanner/index.js +1 -0
  10. package/Anchor/Anchor.js +1 -1
  11. package/Anchor/index.d.ts +2 -1
  12. package/AppBar/index.d.ts +8 -4
  13. package/{Overlay/Overlay.d.ts → Backdrop/Backdrop.d.ts} +12 -16
  14. package/Backdrop/Backdrop.js +40 -0
  15. package/Backdrop/index.d.ts +2 -0
  16. package/Backdrop/index.js +1 -0
  17. package/Badge/Badge.d.ts +20 -14
  18. package/Badge/Badge.js +14 -16
  19. package/Badge/BadgeContainer.d.ts +1 -1
  20. package/Badge/BadgeContainer.js +1 -1
  21. package/Badge/index.d.ts +3 -2
  22. package/Badge/typings.d.ts +48 -0
  23. package/Breadcrumb/Breadcrumb.d.ts +6 -0
  24. package/Breadcrumb/Breadcrumb.js +25 -0
  25. package/Breadcrumb/BreadcrumbItem.d.ts +4 -0
  26. package/Breadcrumb/BreadcrumbItem.js +45 -0
  27. package/Breadcrumb/index.d.ts +2 -0
  28. package/Breadcrumb/index.js +1 -0
  29. package/Breadcrumb/typings.d.ts +70 -0
  30. package/Button/Button.js +24 -19
  31. package/Button/ButtonGroup.d.ts +6 -28
  32. package/Button/ButtonGroup.js +7 -16
  33. package/Button/index.d.ts +4 -10
  34. package/Button/index.js +2 -3
  35. package/Button/typings.d.ts +11 -26
  36. package/Calendar/Calendar.d.ts +31 -2
  37. package/Calendar/Calendar.js +74 -19
  38. package/Calendar/CalendarCell.d.ts +4 -0
  39. package/Calendar/CalendarCell.js +3 -3
  40. package/Calendar/CalendarConfigProviderDayjs.d.ts +21 -0
  41. package/Calendar/CalendarConfigProviderDayjs.js +15 -0
  42. package/Calendar/CalendarConfigProviderLuxon.d.ts +21 -0
  43. package/Calendar/CalendarConfigProviderLuxon.js +15 -0
  44. package/Calendar/CalendarConfigProviderMoment.d.ts +21 -0
  45. package/Calendar/CalendarConfigProviderMoment.js +15 -0
  46. package/Calendar/CalendarContext.d.ts +14 -7
  47. package/Calendar/CalendarContext.js +8 -13
  48. package/Calendar/CalendarControls.d.ts +16 -0
  49. package/Calendar/CalendarControls.js +3 -7
  50. package/Calendar/CalendarDayOfWeek.js +4 -3
  51. package/Calendar/CalendarDays.d.ts +9 -1
  52. package/Calendar/CalendarDays.js +63 -38
  53. package/Calendar/CalendarFooterActions.d.ts +13 -0
  54. package/Calendar/CalendarFooterActions.js +14 -0
  55. package/Calendar/CalendarFooterControl.d.ts +16 -0
  56. package/Calendar/CalendarFooterControl.js +14 -0
  57. package/Calendar/CalendarHalfYears.d.ts +39 -0
  58. package/Calendar/CalendarHalfYears.js +62 -0
  59. package/Calendar/CalendarMonths.js +16 -4
  60. package/Calendar/CalendarQuarters.d.ts +37 -0
  61. package/Calendar/CalendarQuarters.js +64 -0
  62. package/Calendar/CalendarQuickSelect.d.ts +21 -0
  63. package/Calendar/CalendarQuickSelect.js +15 -0
  64. package/Calendar/CalendarWeeks.d.ts +1 -1
  65. package/Calendar/CalendarWeeks.js +89 -44
  66. package/Calendar/CalendarYears.js +13 -3
  67. package/Calendar/RangeCalendar.d.ts +59 -0
  68. package/Calendar/RangeCalendar.js +232 -0
  69. package/Calendar/index.d.ts +33 -10
  70. package/Calendar/index.js +7 -0
  71. package/Calendar/useCalendarControlModifiers.d.ts +4 -4
  72. package/Calendar/useCalendarControlModifiers.js +40 -8
  73. package/Calendar/useCalendarControls.d.ts +2 -0
  74. package/Calendar/useCalendarControls.js +19 -2
  75. package/Calendar/useCalendarModeStack.js +1 -0
  76. package/Calendar/useRangeCalendarControls.d.ts +18 -0
  77. package/Calendar/useRangeCalendarControls.js +115 -0
  78. package/Card/CardActions.js +1 -1
  79. package/Card/index.d.ts +4 -2
  80. package/Checkbox/CheckAll.d.ts +16 -6
  81. package/Checkbox/CheckAll.js +40 -26
  82. package/Checkbox/Checkbox.d.ts +100 -22
  83. package/Checkbox/Checkbox.js +73 -16
  84. package/Checkbox/CheckboxGroup.d.ts +100 -18
  85. package/Checkbox/CheckboxGroup.js +169 -24
  86. package/Checkbox/CheckboxGroupContext.d.ts +0 -2
  87. package/Checkbox/CheckboxGroupContext.js +1 -0
  88. package/Checkbox/index.d.ts +16 -4
  89. package/Checkbox/index.js +6 -2
  90. package/Checkbox/typings.d.ts +37 -0
  91. package/ClearActions/ClearActions.d.ts +41 -0
  92. package/ClearActions/ClearActions.js +23 -0
  93. package/ClearActions/index.d.ts +3 -0
  94. package/ClearActions/index.js +5 -0
  95. package/ConfirmActions/ConfirmActions.d.ts +2 -1
  96. package/ConfirmActions/index.d.ts +2 -1
  97. package/DatePicker/DatePicker.d.ts +12 -1
  98. package/DatePicker/DatePicker.js +41 -9
  99. package/DatePicker/DatePickerCalendar.d.ts +2 -5
  100. package/DatePicker/DatePickerCalendar.js +37 -37
  101. package/DatePicker/index.d.ts +4 -2
  102. package/DateRangePicker/DateRangePicker.d.ts +18 -2
  103. package/DateRangePicker/DateRangePicker.js +143 -100
  104. package/DateRangePicker/DateRangePickerCalendar.d.ts +13 -9
  105. package/DateRangePicker/DateRangePickerCalendar.js +7 -94
  106. package/DateRangePicker/index.d.ts +6 -3
  107. package/DateRangePicker/useDateRangeCalendarControls.js +11 -6
  108. package/DateRangePicker/useDateRangePickerValue.d.ts +38 -15
  109. package/DateRangePicker/useDateRangePickerValue.js +142 -63
  110. package/DateTimePicker/DateTimePicker.d.ts +31 -10
  111. package/DateTimePicker/DateTimePicker.js +179 -94
  112. package/DateTimePicker/index.d.ts +2 -2
  113. package/DateTimePicker/index.js +0 -1
  114. package/Drawer/Drawer.js +2 -2
  115. package/Drawer/index.d.ts +2 -1
  116. package/Dropdown/Dropdown.js +12 -22
  117. package/Dropdown/index.d.ts +2 -1
  118. package/Empty/Empty.d.ts +1 -16
  119. package/Empty/Empty.js +36 -7
  120. package/Empty/icons/EmptyMainInitialDataIcon.d.ts +4 -0
  121. package/Empty/icons/EmptyMainInitialDataIcon.js +9 -0
  122. package/Empty/icons/EmptyMainResultIcon.d.ts +4 -0
  123. package/Empty/icons/EmptyMainResultIcon.js +9 -0
  124. package/Empty/icons/EmptyMainSystemIcon.d.ts +4 -0
  125. package/Empty/icons/EmptyMainSystemIcon.js +9 -0
  126. package/Empty/index.d.ts +2 -1
  127. package/Empty/typings.d.ts +52 -0
  128. package/Form/FormControlContext.js +1 -0
  129. package/Form/FormHintText.d.ts +18 -0
  130. package/Form/FormHintText.js +17 -0
  131. package/Form/FormLabel.js +1 -0
  132. package/Form/index.d.ts +9 -5
  133. package/Form/index.js +1 -1
  134. package/Form/useAutoCompleteValueControl.js +2 -0
  135. package/Form/useCheckboxControlValue.js +0 -1
  136. package/Form/useSelectValueControl.js +2 -0
  137. package/InlineMessage/InlineMessage.d.ts +33 -0
  138. package/InlineMessage/InlineMessage.js +42 -0
  139. package/InlineMessage/InlineMessageGroup.d.ts +24 -0
  140. package/InlineMessage/InlineMessageGroup.js +21 -0
  141. package/InlineMessage/index.d.ts +4 -0
  142. package/InlineMessage/index.js +2 -0
  143. package/Input/ActionButton/ActionButton.d.ts +26 -0
  144. package/Input/ActionButton/ActionButton.js +14 -0
  145. package/Input/ActionButton/index.d.ts +2 -0
  146. package/Input/ActionButton/index.js +1 -0
  147. package/Input/Input.d.ts +147 -42
  148. package/Input/Input.js +195 -27
  149. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.d.ts +31 -0
  150. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +18 -0
  151. package/Input/PasswordStrengthIndicator/index.d.ts +2 -0
  152. package/Input/PasswordStrengthIndicator/index.js +1 -0
  153. package/Input/SelectButton/SelectButton.d.ts +20 -0
  154. package/Input/SelectButton/SelectButton.js +21 -0
  155. package/Input/SelectButton/index.d.ts +2 -0
  156. package/Input/SelectButton/index.js +1 -0
  157. package/Input/SpinnerButton/SpinnerButton.d.ts +19 -0
  158. package/Input/SpinnerButton/SpinnerButton.js +14 -0
  159. package/Input/SpinnerButton/index.d.ts +2 -0
  160. package/Input/SpinnerButton/index.js +1 -0
  161. package/Input/index.d.ts +3 -2
  162. package/Menu/Menu.js +1 -0
  163. package/Menu/index.d.ts +8 -4
  164. package/Message/Message.d.ts +6 -4
  165. package/Message/Message.js +86 -9
  166. package/Message/MessageTimerController.d.ts +14 -0
  167. package/Message/MessageTimerController.js +27 -0
  168. package/Message/index.d.ts +3 -2
  169. package/Modal/Modal.js +2 -2
  170. package/Modal/ModalActions.js +1 -0
  171. package/Modal/ModalControl.js +1 -0
  172. package/Modal/ModalHeader.js +1 -0
  173. package/Modal/index.d.ts +10 -5
  174. package/Modal/useModalContainer.d.ts +1 -1
  175. package/Modal/useModalContainer.js +2 -4
  176. package/Navigation/Navigation.js +37 -34
  177. package/Navigation/NavigationContext.js +1 -0
  178. package/Navigation/NavigationItem.js +1 -0
  179. package/Navigation/NavigationSubMenu.js +16 -26
  180. package/Navigation/index.d.ts +8 -4
  181. package/Notification/Notification.js +0 -1
  182. package/Notification/index.d.ts +3 -2
  183. package/Notifier/NotifierManager.d.ts +15 -2
  184. package/Notifier/NotifierManager.js +60 -18
  185. package/Notifier/createNotifier.d.ts +9 -0
  186. package/Notifier/createNotifier.js +3 -2
  187. package/Notifier/typings.d.ts +3 -1
  188. package/OverflowTooltip/OverflowCounterTag.d.ts +12 -0
  189. package/OverflowTooltip/OverflowCounterTag.js +48 -0
  190. package/OverflowTooltip/OverflowTooltip.d.ts +34 -0
  191. package/OverflowTooltip/OverflowTooltip.js +53 -0
  192. package/OverflowTooltip/index.d.ts +2 -0
  193. package/OverflowTooltip/index.js +2 -0
  194. package/PageFooter/PageFooter.d.ts +73 -8
  195. package/PageFooter/PageFooter.js +34 -3
  196. package/PageFooter/index.d.ts +2 -1
  197. package/PageHeader/PageHeader.d.ts +36 -0
  198. package/PageHeader/PageHeader.js +65 -0
  199. package/PageHeader/index.d.ts +2 -0
  200. package/PageHeader/index.js +1 -0
  201. package/PageToolbar/PageToolbar.d.ts +67 -0
  202. package/PageToolbar/PageToolbar.js +114 -0
  203. package/PageToolbar/index.d.ts +2 -0
  204. package/PageToolbar/index.js +1 -0
  205. package/Pagination/Pagination.d.ts +23 -29
  206. package/Pagination/Pagination.js +3 -4
  207. package/Pagination/PaginationItem.d.ts +1 -1
  208. package/Pagination/PaginationItem.js +6 -3
  209. package/Pagination/PaginationJumper.d.ts +7 -9
  210. package/Pagination/PaginationJumper.js +3 -5
  211. package/Pagination/PaginationPageSize.d.ts +8 -11
  212. package/Pagination/PaginationPageSize.js +5 -4
  213. package/Pagination/index.d.ts +8 -4
  214. package/Pagination/usePagination.d.ts +3 -1
  215. package/Pagination/usePagination.js +30 -21
  216. package/Picker/FormattedInput.d.ts +17 -0
  217. package/Picker/FormattedInput.js +74 -0
  218. package/Picker/MaskFormat.d.ts +39 -0
  219. package/Picker/MaskFormat.js +94 -0
  220. package/Picker/PickerTrigger.d.ts +13 -3
  221. package/Picker/PickerTrigger.js +17 -2
  222. package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
  223. package/Picker/PickerTriggerWithSeparator.js +80 -0
  224. package/Picker/RangePickerTrigger.d.ts +55 -4
  225. package/Picker/RangePickerTrigger.js +65 -7
  226. package/Picker/formatUtils.d.ts +34 -0
  227. package/Picker/formatUtils.js +124 -0
  228. package/Picker/index.d.ts +17 -6
  229. package/Picker/index.js +4 -1
  230. package/Picker/useDateInputFormatter.d.ts +52 -0
  231. package/Picker/useDateInputFormatter.js +382 -0
  232. package/Picker/usePickerValue.d.ts +1 -2
  233. package/Picker/usePickerValue.js +8 -13
  234. package/Popconfirm/Popconfirm.js +1 -1
  235. package/Popconfirm/index.d.ts +2 -1
  236. package/Popover/Popover.js +4 -8
  237. package/Popover/index.d.ts +2 -1
  238. package/Popper/Popper.d.ts +15 -10
  239. package/Popper/Popper.js +88 -17
  240. package/Popper/index.d.ts +2 -1
  241. package/Portal/Portal.d.ts +13 -5
  242. package/Portal/Portal.js +25 -10
  243. package/Portal/index.d.ts +4 -1
  244. package/Portal/index.js +1 -0
  245. package/Portal/portalRegistry.d.ts +17 -0
  246. package/Portal/portalRegistry.js +92 -0
  247. package/Progress/Progress.d.ts +23 -30
  248. package/Progress/Progress.js +71 -21
  249. package/Progress/index.d.ts +3 -2
  250. package/Provider/ConfigProvider.d.ts +1 -0
  251. package/Provider/ConfigProvider.js +1 -0
  252. package/Provider/context.js +1 -0
  253. package/Radio/Radio.d.ts +1 -1
  254. package/Radio/Radio.js +2 -1
  255. package/Radio/RadioGroup.d.ts +1 -1
  256. package/Radio/RadioGroup.js +1 -1
  257. package/Radio/RadioGroupContext.js +1 -0
  258. package/Radio/index.d.ts +4 -2
  259. package/ResultState/ResultState.d.ts +52 -0
  260. package/ResultState/ResultState.js +24 -0
  261. package/ResultState/index.d.ts +2 -0
  262. package/ResultState/index.js +1 -0
  263. package/Select/AutoComplete.d.ts +1 -1
  264. package/Select/AutoComplete.js +2 -1
  265. package/Select/Option.js +1 -0
  266. package/Select/Select.d.ts +1 -1
  267. package/Select/Select.js +2 -1
  268. package/Select/SelectControlContext.js +1 -0
  269. package/Select/SelectTrigger.d.ts +1 -87
  270. package/Select/SelectTrigger.js +26 -21
  271. package/Select/SelectTriggerTags.d.ts +1 -1
  272. package/Select/SelectTriggerTags.js +47 -18
  273. package/Select/TreeSelect.d.ts +1 -1
  274. package/Select/TreeSelect.js +2 -1
  275. package/Select/index.d.ts +14 -7
  276. package/Select/typings.d.ts +99 -0
  277. package/Select/useSelectTriggerTags.d.ts +15 -8
  278. package/Select/useSelectTriggerTags.js +83 -44
  279. package/Selection/Selection.d.ts +98 -0
  280. package/Selection/Selection.js +46 -0
  281. package/Selection/index.d.ts +12 -0
  282. package/Selection/index.js +5 -0
  283. package/Skeleton/Skeleton.d.ts +10 -3
  284. package/Skeleton/Skeleton.js +12 -4
  285. package/Skeleton/index.d.ts +2 -1
  286. package/Slider/Slider.d.ts +44 -7
  287. package/Slider/Slider.js +17 -13
  288. package/Slider/index.d.ts +5 -3
  289. package/Spin/Spin.d.ts +39 -0
  290. package/{Loading/Loading.js → Spin/Spin.js} +9 -9
  291. package/Spin/index.d.ts +2 -0
  292. package/Spin/index.js +1 -0
  293. package/Stepper/Step.d.ts +1 -35
  294. package/Stepper/Step.js +43 -8
  295. package/Stepper/Stepper.d.ts +1 -14
  296. package/Stepper/Stepper.js +49 -15
  297. package/Stepper/index.d.ts +5 -2
  298. package/Stepper/index.js +1 -0
  299. package/Stepper/typings.d.ts +77 -0
  300. package/Stepper/useStepDistance.d.ts +10 -0
  301. package/Stepper/useStepDistance.js +81 -0
  302. package/Stepper/useStepper.d.ts +21 -0
  303. package/Stepper/useStepper.js +26 -0
  304. package/Table/Table.js +2 -2
  305. package/Table/TableBody.js +3 -2
  306. package/Table/TableBodyRow.js +1 -0
  307. package/Table/TableContext.js +1 -0
  308. package/Table/TableExpandedTable.js +1 -0
  309. package/Table/TableHeader.js +1 -0
  310. package/Table/editable/TableEditRenderWrapper.js +1 -0
  311. package/Table/expandable/TableExpandable.js +1 -1
  312. package/Table/index.d.ts +7 -4
  313. package/Table/pagination/TablePagination.js +1 -0
  314. package/Table/pagination/useTablePagination.js +1 -0
  315. package/Table/refresh/TableRefresh.js +3 -1
  316. package/Table/rowSelection/TableRowSelection.js +3 -2
  317. package/Table/sorting/TableSortingIcon.js +2 -1
  318. package/Table/sorting/useTableSorting.js +1 -0
  319. package/Table/useTableFetchMore.js +1 -1
  320. package/Table/useTableScroll.d.ts +4 -8
  321. package/Table/useTableScroll.js +9 -7
  322. package/Tabs/TabPane.js +1 -0
  323. package/Tabs/Tabs.js +9 -4
  324. package/Tabs/index.d.ts +6 -3
  325. package/Tabs/useTabsOverflow.js +4 -3
  326. package/Tag/Tag.d.ts +2 -25
  327. package/Tag/Tag.js +23 -13
  328. package/Tag/TagGroup.d.ts +12 -0
  329. package/Tag/TagGroup.js +41 -0
  330. package/Tag/index.d.ts +2 -1
  331. package/Tag/typings.d.ts +78 -0
  332. package/TextField/TextField.d.ts +78 -19
  333. package/TextField/TextField.js +58 -22
  334. package/TextField/index.d.ts +2 -1
  335. package/Textarea/Textarea.d.ts +19 -51
  336. package/Textarea/Textarea.js +13 -19
  337. package/Textarea/index.d.ts +2 -2
  338. package/TimePanel/TimePanel.d.ts +1 -22
  339. package/TimePanel/TimePanel.js +31 -26
  340. package/TimePanel/TimePanelAction.d.ts +2 -8
  341. package/TimePanel/TimePanelAction.js +2 -2
  342. package/TimePanel/TimePanelColumn.d.ts +0 -13
  343. package/TimePanel/TimePanelColumn.js +9 -11
  344. package/TimePanel/index.d.ts +6 -3
  345. package/TimePicker/TimePicker.d.ts +10 -1
  346. package/TimePicker/TimePicker.js +86 -35
  347. package/TimePicker/TimePickerPanel.d.ts +1 -2
  348. package/TimePicker/TimePickerPanel.js +2 -2
  349. package/TimePicker/index.d.ts +4 -2
  350. package/Toggle/Toggle.d.ts +46 -0
  351. package/Toggle/Toggle.js +29 -0
  352. package/Toggle/index.d.ts +3 -0
  353. package/Toggle/index.js +1 -0
  354. package/Tooltip/Tooltip.d.ts +13 -2
  355. package/Tooltip/Tooltip.js +56 -10
  356. package/Tooltip/index.d.ts +2 -1
  357. package/Tooltip/useDelayMouseEnterLeave.d.ts +1 -2
  358. package/Tooltip/useDelayMouseEnterLeave.js +10 -13
  359. package/Transition/Collapse.d.ts +2 -0
  360. package/Transition/Collapse.js +5 -6
  361. package/Transition/Fade.js +4 -4
  362. package/Transition/Rotate.d.ts +42 -0
  363. package/Transition/Rotate.js +30 -0
  364. package/Transition/Scale.d.ts +13 -0
  365. package/Transition/{Grow.js → Scale.js} +19 -16
  366. package/Transition/Slide.d.ts +7 -0
  367. package/Transition/{Zoom.js → Slide.js} +14 -12
  368. package/Transition/SlideFade.d.ts +3 -0
  369. package/Transition/SlideFade.js +5 -4
  370. package/Transition/Transition.d.ts +2 -2
  371. package/Transition/Translate.d.ts +14 -0
  372. package/Transition/Translate.js +94 -0
  373. package/Transition/index.d.ts +16 -6
  374. package/Transition/index.js +4 -2
  375. package/Transition/useAutoTransitionDuration.d.ts +1 -1
  376. package/Transition/useAutoTransitionDuration.js +3 -3
  377. package/Transition/useSetNodeTransition.js +0 -2
  378. package/Tree/TreeNode.js +7 -6
  379. package/Tree/index.d.ts +10 -5
  380. package/Typography/Typography.d.ts +6 -9
  381. package/Typography/Typography.js +7 -9
  382. package/Typography/index.d.ts +2 -5
  383. package/Upload/Upload.d.ts +175 -0
  384. package/Upload/Upload.js +279 -0
  385. package/Upload/UploadItem.d.ts +82 -0
  386. package/Upload/UploadItem.js +118 -0
  387. package/Upload/UploadPictureCard.d.ts +110 -0
  388. package/Upload/UploadPictureCard.js +101 -0
  389. package/Upload/Uploader.d.ts +161 -0
  390. package/Upload/Uploader.js +120 -0
  391. package/Upload/index.d.ts +8 -6
  392. package/Upload/index.js +4 -5
  393. package/Upload/upload-utils.d.ts +41 -0
  394. package/Upload/upload-utils.js +65 -0
  395. package/_internal/InputCheck/index.d.ts +4 -2
  396. package/_internal/InputTriggerPopper/InputTriggerPopper.js +15 -25
  397. package/_internal/InputTriggerPopper/index.d.ts +2 -1
  398. package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +2 -2
  399. package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +4 -27
  400. package/_internal/SlideFadeOverlay/index.d.ts +2 -1
  401. package/_internal/SlideFadeOverlay/useTopStack.js +1 -0
  402. package/dayjs.d.ts +21 -0
  403. package/dayjs.js +2 -0
  404. package/hooks/useComposeRefs.js +1 -1
  405. package/hooks/useLastCallback.js +3 -1
  406. package/hooks/useScrollLock.d.ts +28 -0
  407. package/hooks/useScrollLock.js +134 -0
  408. package/index.d.ts +126 -58
  409. package/index.js +93 -80
  410. package/luxon.d.ts +21 -0
  411. package/luxon.js +2 -0
  412. package/moment.d.ts +21 -0
  413. package/moment.js +2 -0
  414. package/package.json +13 -17
  415. package/utils/composeRefs.js +0 -1
  416. package/utils/get-css-variable-value.d.ts +1 -0
  417. package/utils/get-css-variable-value.js +9 -0
  418. package/Button/IconButton.d.ts +0 -21
  419. package/Button/IconButton.js +0 -13
  420. package/DateTimePicker/DateTimePickerPanel.d.ts +0 -28
  421. package/DateTimePicker/DateTimePickerPanel.js +0 -49
  422. package/Form/FormMessage.d.ts +0 -7
  423. package/Form/FormMessage.js +0 -18
  424. package/Form/useInputWithTagsModeValue.js +0 -86
  425. package/Loading/Loading.d.ts +0 -33
  426. package/Loading/index.d.ts +0 -1
  427. package/Loading/index.js +0 -1
  428. package/Overlay/Overlay.js +0 -31
  429. package/Overlay/index.d.ts +0 -1
  430. package/Overlay/index.js +0 -1
  431. package/Picker/useRangePickerValue.d.ts +0 -23
  432. package/Picker/useRangePickerValue.js +0 -99
  433. package/Switch/Switch.d.ts +0 -43
  434. package/Switch/Switch.js +0 -28
  435. package/Switch/index.d.ts +0 -2
  436. package/Switch/index.js +0 -1
  437. package/Transition/Grow.d.ts +0 -12
  438. package/Transition/Zoom.d.ts +0 -7
  439. package/Upload/UploadButton.d.ts +0 -9
  440. package/Upload/UploadButton.js +0 -23
  441. package/Upload/UploadInput.d.ts +0 -20
  442. package/Upload/UploadInput.js +0 -24
  443. package/Upload/UploadPicture.d.ts +0 -49
  444. package/Upload/UploadPicture.js +0 -51
  445. package/Upload/UploadPictureBlock.d.ts +0 -20
  446. package/Upload/UploadPictureBlock.js +0 -81
  447. package/Upload/UploadPictureWall.d.ts +0 -81
  448. package/Upload/UploadPictureWall.js +0 -168
  449. package/Upload/UploadPictureWallItem.d.ts +0 -15
  450. package/Upload/UploadPictureWallItem.js +0 -18
  451. package/Upload/UploadResult.d.ts +0 -35
  452. package/Upload/UploadResult.js +0 -29
  453. package/utils/scroll-lock.d.ts +0 -2
  454. package/utils/scroll-lock.js +0 -24
@@ -1,15 +1,80 @@
1
- import { ReactNode } from 'react';
2
- import { ConfirmActionsProps } from '../ConfirmActions';
3
1
  import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
4
- export interface PageFooterProps extends NativeElementPropsWithoutKeyAndRef<'footer'>, Pick<ConfirmActionsProps, 'cancelButtonProps' | 'cancelText' | 'confirmButtonProps' | 'confirmText' | 'danger' | 'loading' | 'hideCancelButton' | 'hideConfirmButton' | 'onCancel' | 'onConfirm'> {
2
+ import type { ButtonProps } from '../Button';
3
+ /**
4
+ * Single button configuration - only primary button is allowed
5
+ */
6
+ type SingleButtonAction = {
7
+ secondaryButton?: never;
8
+ primaryButton: ButtonProps;
9
+ };
10
+ /**
11
+ * Two buttons configuration - both secondary and primary buttons
12
+ */
13
+ type TwoButtonsAction = {
14
+ secondaryButton: ButtonProps;
15
+ primaryButton: ButtonProps;
16
+ };
17
+ /**
18
+ * Actions can be either single button or two buttons
19
+ */
20
+ export type PageFooterActions = SingleButtonAction | TwoButtonsAction;
21
+ export type PageFooterType = 'standard' | 'overflow' | 'information';
22
+ type PageFooterBaseProps = NativeElementPropsWithoutKeyAndRef<'footer'> & {
5
23
  /**
6
- * The className of action wrapper.
24
+ * Action buttons configuration for primary and secondary actions.
25
+ * Renders buttons in the order: secondary (left), primary (right).
7
26
  */
8
- actionClassName?: string;
27
+ actions?: PageFooterActions;
9
28
  /**
10
- * The action element in the left.
29
+ * The className of annotation wrapper.
11
30
  */
12
- children?: ReactNode;
13
- }
31
+ annotationClassName?: string;
32
+ /**
33
+ * The warning message in the middle.
34
+ */
35
+ warningMessage?: string;
36
+ };
37
+ type PageFooterStandardProps = PageFooterBaseProps & {
38
+ /**
39
+ * The type of PageFooter annotation.
40
+ * @default 'standard'
41
+ */
42
+ type?: 'standard';
43
+ /**
44
+ * Standard type: A ghost button with text.
45
+ * Children of the button.
46
+ */
47
+ annotation?: string;
48
+ /**
49
+ * Standard type: Button click handler.
50
+ */
51
+ onAnnotationClick?: ButtonProps['onClick'];
52
+ };
53
+ type PageFooterOverflowProps = PageFooterBaseProps & {
54
+ /**
55
+ * The type of PageFooter annotation.
56
+ */
57
+ type: 'overflow';
58
+ /**
59
+ * Overflow type: Icon for the icon-only button.
60
+ * @TODO Consider Dropdown integration after Dropdown redesign.
61
+ */
62
+ annotation?: ButtonProps['icon'];
63
+ /**
64
+ * Overflow type: Button click handler.
65
+ */
66
+ onAnnotationClick?: ButtonProps['onClick'];
67
+ };
68
+ type PageFooterInformationProps = PageFooterBaseProps & {
69
+ /**
70
+ * The type of PageFooter annotation.
71
+ */
72
+ type: 'information';
73
+ /**
74
+ * Information type: Plain text to display.
75
+ */
76
+ annotation?: string;
77
+ };
78
+ export type PageFooterProps = PageFooterStandardProps | PageFooterOverflowProps | PageFooterInformationProps;
14
79
  declare const PageFooter: import("react").ForwardRefExoticComponent<PageFooterProps & import("react").RefAttributes<HTMLElement>>;
15
80
  export default PageFooter;
@@ -1,12 +1,43 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { forwardRef } from 'react';
3
3
  import { pageFooterClasses } from '@mezzanine-ui/core/page-footer';
4
- import ConfirmActions from '../ConfirmActions/ConfirmActions.js';
4
+ import Button from '../Button/Button.js';
5
+ import ButtonGroup from '../Button/ButtonGroup.js';
6
+ import Typography from '../Typography/Typography.js';
5
7
  import cx from 'clsx';
6
8
 
7
9
  const PageFooter = forwardRef(function PageFooter(props, ref) {
8
- const { className, actionClassName, cancelButtonProps, cancelText, children, danger, loading, confirmButtonProps, confirmText, hideCancelButton, hideConfirmButton, onCancel, onConfirm, ...rest } = props;
9
- return (jsxs("footer", { ref: ref, ...rest, className: cx(pageFooterClasses.host, className), children: [jsx("div", { className: actionClassName, children: children }), jsx(ConfirmActions, { cancelText: cancelText, confirmText: confirmText, cancelButtonProps: cancelButtonProps, confirmButtonProps: confirmButtonProps, danger: danger, hideCancelButton: hideCancelButton, hideConfirmButton: hideConfirmButton, loading: loading, onCancel: onCancel, onConfirm: onConfirm })] }));
10
+ var _a;
11
+ const { actions, annotation, annotationClassName, className, type = 'standard', warningMessage, ...rest } = props;
12
+ // Filter out onAnnotationClick from rest props to avoid React warnings
13
+ if ('onAnnotationClick' in rest) {
14
+ delete rest.onAnnotationClick;
15
+ }
16
+ const { children: primaryButtonText, ...restPrimaryButtonProps } = (_a = actions === null || actions === void 0 ? void 0 : actions.primaryButton) !== null && _a !== void 0 ? _a : {};
17
+ // Render annotation based on type
18
+ const renderAnnotation = () => {
19
+ if (!annotation)
20
+ return null;
21
+ switch (type) {
22
+ case 'standard': {
23
+ return (jsx(Button, { onClick: 'onAnnotationClick' in props
24
+ ? props.onAnnotationClick
25
+ : undefined, size: "main", variant: "base-ghost", children: annotation }));
26
+ }
27
+ case 'overflow': {
28
+ // @TODO Consider Dropdown integration after Dropdown redesign
29
+ return (jsx(Button, { icon: annotation, onClick: 'onAnnotationClick' in props
30
+ ? props.onAnnotationClick
31
+ : undefined, size: "main", variant: "base-ghost" }));
32
+ }
33
+ case 'information': {
34
+ return (jsx(Typography, { color: "text-neutral", variant: "caption", children: annotation }));
35
+ }
36
+ default:
37
+ return null;
38
+ }
39
+ };
40
+ return (jsxs("footer", { ref: ref, ...rest, className: cx(pageFooterClasses.host, className), children: [jsx("div", { className: cx(pageFooterClasses.annotation, annotationClassName), children: renderAnnotation() }), jsx("div", { className: pageFooterClasses.message, children: warningMessage ? (jsx(Typography, { variant: "caption", color: "text-warning", align: "right", children: warningMessage })) : null }), jsxs(ButtonGroup, { children: [(actions === null || actions === void 0 ? void 0 : actions.secondaryButton) && (jsx(Button, { size: "main", variant: "base-secondary", ...actions.secondaryButton })), jsx(Button, { size: "main", variant: "base-primary", ...restPrimaryButtonProps, children: primaryButtonText || 'Button' })] })] }));
10
41
  });
11
42
 
12
43
  export { PageFooter as default };
@@ -1 +1,2 @@
1
- export { PageFooterProps, default } from './PageFooter';
1
+ export type { PageFooterProps } from './PageFooter';
2
+ export { default } from './PageFooter';
@@ -0,0 +1,36 @@
1
+ import { HTMLAttributes, ReactElement } from 'react';
2
+ import { BreadcrumbProps } from '../Breadcrumb';
3
+ import { ButtonProps } from '../Button';
4
+ import { PageToolbarProps } from '../PageToolbar';
5
+ import { TypographyProps } from '../Typography';
6
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
7
+ type PageHeaderChild = ReactElement<BreadcrumbProps> | ReactElement<PageToolbarProps> | ReactElement<ButtonProps> | ReactElement<HTMLAttributes<HTMLAnchorElement>>;
8
+ /**
9
+ * Props for the PageHeader component.
10
+ * Extends native HTML header element props.
11
+ */
12
+ export type PageHeaderProps = NativeElementPropsWithoutKeyAndRef<'header'> & {
13
+ /** Optional description text displayed below the title */
14
+ description?: string;
15
+ /** Main title text for the page header */
16
+ title: string;
17
+ /** HTML element type for the title (defaults to 'h2') */
18
+ titleComponent?: TypographyProps['component'];
19
+ /** Child components: Breadcrumb, PageToolbar, Button, or component with href prop */
20
+ children?: PageHeaderChild | PageHeaderChild[];
21
+ };
22
+ /**
23
+ * PageHeader component displays a page title with optional breadcrumb navigation,
24
+ * description, back button, and action toolbar.
25
+ */
26
+ declare const PageHeader: import("react").ForwardRefExoticComponent<NativeElementPropsWithoutKeyAndRef<"header"> & {
27
+ /** Optional description text displayed below the title */
28
+ description?: string;
29
+ /** Main title text for the page header */
30
+ title: string;
31
+ /** HTML element type for the title (defaults to 'h2') */
32
+ titleComponent?: TypographyProps["component"];
33
+ /** Child components: Breadcrumb, PageToolbar, Button, or component with href prop */
34
+ children?: PageHeaderChild | PageHeaderChild[];
35
+ } & import("react").RefAttributes<HTMLElement>>;
36
+ export default PageHeader;
@@ -0,0 +1,65 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, Children, isValidElement, cloneElement } from 'react';
3
+ import { ChevronLeftIcon } from '@mezzanine-ui/icons';
4
+ import { pageHeaderClasses } from '@mezzanine-ui/core/page-header';
5
+ import Button from '../Button/Button.js';
6
+ import Typography from '../Typography/Typography.js';
7
+ import Breadcrumb from '../Breadcrumb/Breadcrumb.js';
8
+ import PageToolbar from '../PageToolbar/PageToolbar.js';
9
+ import cx from 'clsx';
10
+
11
+ const getBreadcrumbAndToolbar = (children) => {
12
+ let breadcrumb;
13
+ let pageToolbar;
14
+ let backButtonOrLink;
15
+ const childrenArray = Children.toArray(children);
16
+ if (children) {
17
+ childrenArray.forEach((child) => {
18
+ if (!isValidElement(child))
19
+ return;
20
+ if (child.type === Breadcrumb) {
21
+ breadcrumb = child;
22
+ }
23
+ else if (child.type === PageToolbar) {
24
+ pageToolbar = cloneElement(child, {
25
+ size: 'main',
26
+ });
27
+ }
28
+ else if (child.type === Button) {
29
+ backButtonOrLink = cloneElement(child, {
30
+ icon: {
31
+ position: 'icon-only',
32
+ src: ChevronLeftIcon,
33
+ },
34
+ size: 'sub',
35
+ variant: 'base-tertiary',
36
+ });
37
+ }
38
+ else if (child.type === 'a') {
39
+ backButtonOrLink = cloneElement(child, {
40
+ children: (jsx(Button, { component: 'div', icon: {
41
+ position: 'icon-only',
42
+ src: ChevronLeftIcon,
43
+ }, size: "sub", variant: "base-tertiary" })),
44
+ });
45
+ }
46
+ else {
47
+ if (process.env.NODE_ENV !== 'production') {
48
+ console.warn('PageHeader only accepts Breadcrumb, PageToolbar, Button or component with href prop as its children.');
49
+ }
50
+ }
51
+ });
52
+ }
53
+ return { breadcrumb, backButtonOrLink, pageToolbar };
54
+ };
55
+ /**
56
+ * PageHeader component displays a page title with optional breadcrumb navigation,
57
+ * description, back button, and action toolbar.
58
+ */
59
+ const PageHeader = forwardRef(function PageHeader(props, ref) {
60
+ const { children, className, description, title, titleComponent = 'h2', ...rest } = props;
61
+ const { backButtonOrLink, breadcrumb, pageToolbar } = getBreadcrumbAndToolbar(children);
62
+ return (jsxs("header", { ...rest, className: cx(pageHeaderClasses.host, className), ref: ref, children: [breadcrumb, jsxs("span", { className: pageHeaderClasses.headerContent, children: [jsxs("span", { className: pageHeaderClasses.pageTitleWithIcon, children: [backButtonOrLink && jsx("div", { children: backButtonOrLink }), jsxs("div", { className: pageHeaderClasses.pageTitleText, children: [jsx(Typography, { align: "left", color: "text-neutral-solid", component: titleComponent, variant: "h2", children: title }), description && (jsx(Typography, { align: "left", color: "text-neutral", component: "p", variant: "caption", children: description }))] })] }), pageToolbar] })] }));
63
+ });
64
+
65
+ export { PageHeader as default };
@@ -0,0 +1,2 @@
1
+ export type { PageHeaderProps } from './PageHeader';
2
+ export { default } from './PageHeader';
@@ -0,0 +1 @@
1
+ export { default } from './PageHeader.js';
@@ -0,0 +1,67 @@
1
+ import { ReactElement } from 'react';
2
+ import { ButtonGroupChild, ButtonProps } from '../Button';
3
+ import { SearchInputProps } from '../Input';
4
+ import { SelectProps } from '../Select';
5
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
6
+ type SegmentedControlProps = {
7
+ mock: 'SegmentedControlProps';
8
+ };
9
+ /**
10
+ * Actions configuration for PageToolbar.
11
+ * Can be either an object with specific button types or a single button element/props.
12
+ */
13
+ type PageToolbarActions = {
14
+ destructiveButton?: ReactElement<ButtonProps> | ButtonProps;
15
+ primaryButton?: ReactElement<ButtonProps> | ButtonProps;
16
+ secondaryButton?: ReactElement<ButtonProps> | ButtonProps;
17
+ } | ReactElement<ButtonProps> | ButtonProps;
18
+ /**
19
+ * Props for the PageToolbar component.
20
+ */
21
+ export type PageToolbarProps = NativeElementPropsWithoutKeyAndRef<'div'> & {
22
+ /**
23
+ * Button configuration for primary, secondary, and destructive actions. <br />
24
+ * Automatically applies proper styling and order. <br />
25
+ */
26
+ actions: PageToolbarActions;
27
+ /** Filter component (SearchInput, Select, or SegmentedControl) */
28
+ filter?: ReactElement<SearchInputProps | SelectProps | SegmentedControlProps>;
29
+ /**
30
+ * Size variant of the toolbar. <br />
31
+ * Affects the size of buttons and filter component. <br />
32
+ */
33
+ size?: 'main' | 'sub';
34
+ /**
35
+ * Icon-only utility buttons `<Button title="..." icon="..." />`. <br />
36
+ * Wrapped with Tooltip automatically. <br />
37
+ * Supports a single Button or a Fragment of Buttons. <br />
38
+ * `<> <Button ... /> <Button ... /> </>` <br />
39
+ */
40
+ utilities?: ButtonGroupChild;
41
+ };
42
+ /**
43
+ * PageToolbar component provides a flexible toolbar with filter, action buttons, and utility icons.
44
+ * Commonly used in page headers for primary user actions.
45
+ */
46
+ declare const PageToolbar: import("react").ForwardRefExoticComponent<NativeElementPropsWithoutKeyAndRef<"div"> & {
47
+ /**
48
+ * Button configuration for primary, secondary, and destructive actions. <br />
49
+ * Automatically applies proper styling and order. <br />
50
+ */
51
+ actions: PageToolbarActions;
52
+ /** Filter component (SearchInput, Select, or SegmentedControl) */
53
+ filter?: ReactElement<SearchInputProps | SelectProps | SegmentedControlProps>;
54
+ /**
55
+ * Size variant of the toolbar. <br />
56
+ * Affects the size of buttons and filter component. <br />
57
+ */
58
+ size?: "main" | "sub";
59
+ /**
60
+ * Icon-only utility buttons `<Button title="..." icon="..." />`. <br />
61
+ * Wrapped with Tooltip automatically. <br />
62
+ * Supports a single Button or a Fragment of Buttons. <br />
63
+ * `<> <Button ... /> <Button ... /> </>` <br />
64
+ */
65
+ utilities?: ButtonGroupChild;
66
+ } & import("react").RefAttributes<HTMLDivElement>>;
67
+ export default PageToolbar;
@@ -0,0 +1,114 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef, isValidElement, cloneElement, Fragment, Children } from 'react';
3
+ import { pageToolbarClasses } from '@mezzanine-ui/core/page-toolbar';
4
+ import Button from '../Button/Button.js';
5
+ import ButtonGroup from '../Button/ButtonGroup.js';
6
+ import Tooltip from '../Tooltip/Tooltip.js';
7
+ import cx from 'clsx';
8
+
9
+ /**
10
+ * Renders a button from either ButtonProps or a React element.
11
+ * Applies the specified size and variant to the button.
12
+ */
13
+ const renderButton = (button, size, variant) => {
14
+ if (!button) {
15
+ return null;
16
+ }
17
+ if (isValidElement(button)) {
18
+ return cloneElement(button, {
19
+ size,
20
+ variant,
21
+ key: variant,
22
+ });
23
+ }
24
+ return jsx(Button, { ...button, size: size, variant: variant }, variant);
25
+ };
26
+ /**
27
+ * Clones filter component with the specified size prop.
28
+ */
29
+ const withSize = (target, size) => {
30
+ if (!target) {
31
+ return null;
32
+ }
33
+ if (isValidElement(target)) {
34
+ return cloneElement(target, { size });
35
+ }
36
+ return target;
37
+ };
38
+ /**
39
+ * Wraps an icon button with a Tooltip.
40
+ * Uses the button's title prop or children text as tooltip content.
41
+ */
42
+ const createIconButtonWithTooltip = (child, size, index = 0) => {
43
+ const { children, title, ...childProps } = child.props;
44
+ const tooltipText = title || (typeof children === 'string' ? children : undefined);
45
+ return (jsx(Tooltip, { title: tooltipText, children: (tooltipProps) => cloneElement(child, {
46
+ ...tooltipProps,
47
+ icon: childProps.icon
48
+ ? {
49
+ ...childProps.icon,
50
+ position: 'icon-only',
51
+ }
52
+ : undefined,
53
+ size,
54
+ title: undefined,
55
+ variant: 'base-secondary',
56
+ }) }, childProps.id || tooltipText || index));
57
+ };
58
+ /**
59
+ * Renders utility icon buttons wrapped in tooltips.
60
+ * Handles both single Button elements and Fragment containing multiple Buttons.
61
+ */
62
+ const renderIconButtons = (utilities, size) => {
63
+ if (!utilities) {
64
+ return null;
65
+ }
66
+ if (!isValidElement(utilities)) {
67
+ return null;
68
+ }
69
+ if (utilities.type === Fragment) {
70
+ const children = Children.map(utilities.props.children, (child, index) => {
71
+ if (!isValidElement(child) || child.type !== Button) {
72
+ return null;
73
+ }
74
+ return createIconButtonWithTooltip(child, size, index);
75
+ });
76
+ return children === null || children === void 0 ? void 0 : children.filter(Boolean);
77
+ }
78
+ if (utilities.type === Button) {
79
+ return createIconButtonWithTooltip(utilities, size);
80
+ }
81
+ return null;
82
+ };
83
+ /**
84
+ * Renders action buttons based on the actions configuration.
85
+ * Supports both structured actions object and single button element/props.
86
+ */
87
+ const renderActions = (actions, size) => {
88
+ if ('primaryButton' in actions ||
89
+ 'secondaryButton' in actions ||
90
+ 'destructiveButton' in actions) {
91
+ return [
92
+ renderButton(actions.destructiveButton, size, 'destructive-secondary'),
93
+ renderButton(actions.secondaryButton, size, 'base-secondary'),
94
+ renderButton(actions.primaryButton, size, 'base-primary'),
95
+ ].filter(Boolean);
96
+ }
97
+ if (isValidElement(actions)) {
98
+ return renderButton(actions, size, 'base-primary');
99
+ }
100
+ return jsx(Button, { ...actions, size: size, variant: "base-primary" });
101
+ };
102
+ /**
103
+ * PageToolbar component provides a flexible toolbar with filter, action buttons, and utility icons.
104
+ * Commonly used in page headers for primary user actions.
105
+ */
106
+ const PageToolbar = forwardRef(function PageToolbar(props, ref) {
107
+ const { actions, className, filter, size = 'main', utilities, ...rest } = props;
108
+ const filterWithSize = withSize(filter, size);
109
+ const fragmentActions = renderActions(actions, size);
110
+ const fragmentUtilities = renderIconButtons(utilities, size);
111
+ return (jsxs("div", { ...rest, className: cx(pageToolbarClasses.host, pageToolbarClasses.size(size), className), ref: ref, children: [filterWithSize, jsx(ButtonGroup, { children: fragmentActions }), jsx(ButtonGroup, { children: fragmentUtilities })] }));
112
+ });
113
+
114
+ export { PageToolbar as default };
@@ -0,0 +1,2 @@
1
+ export type { PageToolbarProps } from './PageToolbar';
2
+ export { default } from './PageToolbar';
@@ -0,0 +1 @@
1
+ export { default } from './PageToolbar.js';
@@ -17,74 +17,68 @@ export interface PaginationProps extends Omit<DetailedHTMLProps<HTMLAttributes<H
17
17
  */
18
18
  current?: number;
19
19
  /**
20
- * Whether the fields is disabled.
21
- * @default false
20
+ * If `true`, the fields are disabled.
22
21
  */
23
- disabled?: boolean;
24
- /**
25
- * If `true`, hide the next-page button.
26
- * @default false
27
- */
28
- hideNextButton?: boolean;
29
- /**
30
- * If `true`, hide the previous-page button.
31
- * @default false
32
- */
33
- hidePreviousButton?: boolean;
22
+ disabled?: true;
34
23
  /**
35
24
  * The hint text displayed in front of jumper `input`.
36
25
  */
37
26
  hintText?: string;
38
27
  /**
39
- * The hint displayed in the jumper `input` before the user enters a value.
28
+ * The placeholder displayed in the jumper input before the user enters a value.
40
29
  */
41
30
  inputPlaceholder?: string;
42
31
  /**
43
32
  * Render the item.
44
- * @param {PaginationRenderItemParams} params The props to spread on a PaginationItem.
33
+ * @param {PaginationItemProps} item The props to spread on a PaginationItem.
45
34
  * @returns {ReactNode}
46
35
  * @default (item) => <PaginationItem {...item} />
47
36
  */
48
37
  itemRender?: (item: PaginationItemProps) => ReactNode;
49
38
  /**
50
39
  * Callback fired when the page is changed.
51
- *
52
- * @param {number} page The page active.
40
+ * @param {number} page The active page number.
53
41
  */
54
42
  onChange?: (page: number) => void;
55
43
  /**
56
- * Callback fired when the page size is changed
57
- *
58
- * @param {number} pageSize
44
+ * Callback fired when the page size is changed.
45
+ * @param {number} pageSize The new page size.
59
46
  */
60
47
  onChangePageSize?: PaginationPageSizeProps['onChange'];
61
48
  /**
62
- * Number of data per page
49
+ * Number of items per page.
63
50
  * @default 10
64
51
  */
65
52
  pageSize?: PaginationPageSizeProps['value'];
66
53
  /**
67
- * Label display before page size selector
54
+ * Label displayed before page size selector.
68
55
  */
69
56
  pageSizeLabel?: PaginationPageSizeProps['label'];
70
57
  /**
71
- * Page size options to render
58
+ * Page size options to render.
72
59
  */
73
60
  pageSizeOptions?: PaginationPageSizeProps['options'];
74
61
  /**
75
- * Page size unit after `select`
62
+ * Render custom result summary.
63
+ * @param {number} from Start index of current page.
64
+ * @param {number} to End index of current page.
65
+ * @param {number} total Total number of items.
66
+ * @returns {string}
67
+ * @example (from, to, total) => `目前顯示 ${from}-${to} 筆,共 ${total} 筆資料`
76
68
  */
77
- pageSizeUnit?: PaginationPageSizeProps['unit'];
69
+ renderResultSummary?: (from: number, to: number, total: number) => string;
78
70
  /**
79
- * Render custom page size option name
71
+ * Render custom page size option name.
80
72
  */
81
73
  renderPageSizeOptionName?: PaginationPageSizeProps['renderOptionName'];
82
74
  /**
83
- * Show jumper or not.
75
+ * If `true`, show jumper.
76
+ * @default false
84
77
  */
85
78
  showJumper?: boolean;
86
79
  /**
87
- * Ship page size or not
80
+ * If `true`, show page size options.
81
+ * @default false
88
82
  */
89
83
  showPageSizeOptions?: boolean;
90
84
  /**
@@ -93,7 +87,7 @@ export interface PaginationProps extends Omit<DetailedHTMLProps<HTMLAttributes<H
93
87
  */
94
88
  siblingCount?: number;
95
89
  /**
96
- * Items total count.
90
+ * Total number of items.
97
91
  * @default 0
98
92
  */
99
93
  total?: number;
@@ -5,25 +5,24 @@ import PaginationItem from './PaginationItem.js';
5
5
  import PaginationJumper from './PaginationJumper.js';
6
6
  import PaginationPageSize from './PaginationPageSize.js';
7
7
  import { usePagination } from './usePagination.js';
8
+ import Typography from '../Typography/Typography.js';
8
9
  import cx from 'clsx';
9
10
 
10
11
  /**
11
12
  * The react component for `mezzanine` pagination.
12
13
  */
13
14
  const Pagination = forwardRef((props, ref) => {
14
- const { className, boundaryCount = 1, buttonText, current = 1, disabled = false, hideNextButton = false, hidePreviousButton = false, hintText, inputPlaceholder, itemRender = (item) => jsx(PaginationItem, { ...item }), onChange, onChangePageSize, pageSize = 10, pageSizeLabel, pageSizeOptions, pageSizeUnit, renderPageSizeOptionName, showJumper = false, showPageSizeOptions = false, siblingCount = 1, total = 0, ...rest } = props;
15
+ const { boundaryCount = 1, buttonText, className, current = 1, disabled, hintText, inputPlaceholder, itemRender = (item) => jsx(PaginationItem, { ...item }), onChange, onChangePageSize, pageSize = 10, pageSizeLabel, pageSizeOptions, renderPageSizeOptionName, renderResultSummary, showJumper = false, showPageSizeOptions = false, siblingCount = 1, total = 0, ...rest } = props;
15
16
  const { items } = usePagination({
16
17
  boundaryCount,
17
18
  current,
18
19
  disabled,
19
- hideNextButton,
20
- hidePreviousButton,
21
20
  onChange,
22
21
  pageSize,
23
22
  siblingCount,
24
23
  total,
25
24
  });
26
- return (jsx("nav", { ...rest, ref: ref, "aria-label": "pagination navigation", className: cx(paginationClasses.host, className), children: jsxs("ul", { className: paginationClasses.container, children: [showPageSizeOptions && (jsx("li", { className: paginationClasses.pageSize, children: jsx(PaginationPageSize, { disabled: disabled, label: pageSizeLabel, onChange: onChangePageSize, options: pageSizeOptions, renderOptionName: renderPageSizeOptionName, unit: pageSizeUnit, value: pageSize }) })), items.map((item, index) => (jsx("li", { className: paginationClasses.item, children: itemRender(item) }, index))), showJumper && (jsx("li", { className: paginationClasses.jumper, children: jsx(PaginationJumper, { buttonText: buttonText, disabled: disabled, hintText: hintText, inputPlaceholder: inputPlaceholder, onChange: onChange, pageSize: pageSize, total: total }) }))] }) }));
25
+ return (jsxs("nav", { ...rest, ref: ref, "aria-label": "pagination navigation", className: cx(paginationClasses.host, className), children: [renderResultSummary && (jsx(Typography, { variant: "label-primary", children: renderResultSummary(pageSize * (current - 1) + 1, Math.min(pageSize * current, total), total) })), jsxs("ul", { className: paginationClasses.container, children: [showPageSizeOptions && (jsx("li", { className: paginationClasses.pageSize, children: jsx(PaginationPageSize, { disabled: disabled, label: pageSizeLabel, onChange: onChangePageSize, options: pageSizeOptions, renderOptionName: renderPageSizeOptionName, value: pageSize }) })), jsx("li", { children: jsx("ul", { className: paginationClasses.itemList, children: items.map((item, index) => (jsx("li", { className: paginationClasses.item, children: itemRender(item) }, index))) }) }), showJumper && (jsx("li", { className: paginationClasses.jumper, children: jsx(PaginationJumper, { buttonText: buttonText, disabled: disabled, hintText: hintText, inputPlaceholder: inputPlaceholder, onChange: onChange, pageSize: pageSize, total: total }) }))] })] }));
27
26
  });
28
27
 
29
28
  export { Pagination as default };
@@ -18,7 +18,7 @@ export interface PaginationItemProps extends Omit<DetailedHTMLProps<HTMLAttribut
18
18
  */
19
19
  page?: number;
20
20
  /**
21
- * Whether the field type.
21
+ * The type of pagination item.
22
22
  * @default 'page'
23
23
  */
24
24
  type?: PaginationItemType;
@@ -1,7 +1,8 @@
1
1
  import { forwardRef, createElement } from 'react';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { paginationItemClasses } from '@mezzanine-ui/core/pagination';
4
- import { ChevronLeftIcon, ChevronRightIcon } from '@mezzanine-ui/icons';
4
+ import { DotHorizontalIcon, DoubleChevronRightIcon, DoubleChevronLeftIcon, ChevronLeftIcon, ChevronRightIcon } from '@mezzanine-ui/icons';
5
+ import Typography from '../Typography/Typography.js';
5
6
  import Icon from '../Icon/Icon.js';
6
7
  import cx from 'clsx';
7
8
 
@@ -10,16 +11,18 @@ const PaginationItem = forwardRef((props, ref) => {
10
11
  const icons = {
11
12
  next: ChevronRightIcon,
12
13
  previous: ChevronLeftIcon,
14
+ first: DoubleChevronLeftIcon,
15
+ last: DoubleChevronRightIcon,
13
16
  };
14
17
  const ButtonIcon = icons[type];
15
18
  return type === 'ellipsis' ? (jsx("div", { ...rest, ref: ref, className: cx(paginationItemClasses.host, paginationItemClasses.ellipsis, {
16
19
  [paginationItemClasses.disabled]: disabled,
17
- }, className), children: "..." })) : (createElement("button", { ...rest, ref: ref, key: page, disabled: disabled, className: cx(paginationItemClasses.host, paginationItemClasses.button, {
20
+ }, className), children: jsx(Icon, { icon: DotHorizontalIcon }) })) : (createElement("button", { ...rest, ref: ref, key: page, disabled: disabled, className: cx(paginationItemClasses.host, paginationItemClasses.button, {
18
21
  [paginationItemClasses.active]: active,
19
22
  [paginationItemClasses.disabled]: disabled,
20
23
  }, className), type: "button" },
21
24
  ButtonIcon && jsx(Icon, { icon: ButtonIcon }),
22
- type === 'page' && page));
25
+ type === 'page' && (jsx(Typography, { variant: "label-primary", children: page }))));
23
26
  });
24
27
 
25
28
  export { PaginationItem as default };