@mezzanine-ui/react 0.16.0 → 1.0.0-beta.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 (547) 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 +53 -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 +75 -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.d.ts +47 -6
  115. package/Drawer/Drawer.js +36 -11
  116. package/Drawer/index.d.ts +2 -1
  117. package/Dropdown/Dropdown.js +12 -22
  118. package/Dropdown/index.d.ts +2 -1
  119. package/Empty/Empty.d.ts +1 -16
  120. package/Empty/Empty.js +59 -7
  121. package/Empty/icons/EmptyMainInitialDataIcon.d.ts +4 -0
  122. package/Empty/icons/EmptyMainInitialDataIcon.js +9 -0
  123. package/Empty/icons/EmptyMainResultIcon.d.ts +4 -0
  124. package/Empty/icons/EmptyMainResultIcon.js +9 -0
  125. package/Empty/icons/EmptyMainSystemIcon.d.ts +4 -0
  126. package/Empty/icons/EmptyMainSystemIcon.js +9 -0
  127. package/Empty/index.d.ts +2 -1
  128. package/Empty/typings.d.ts +61 -0
  129. package/Form/FormControlContext.js +1 -0
  130. package/Form/FormHintText.d.ts +18 -0
  131. package/Form/FormHintText.js +17 -0
  132. package/Form/FormLabel.js +1 -0
  133. package/Form/index.d.ts +9 -5
  134. package/Form/index.js +1 -1
  135. package/Form/useAutoCompleteValueControl.js +2 -0
  136. package/Form/useCheckboxControlValue.js +0 -1
  137. package/Form/useSelectValueControl.js +2 -0
  138. package/InlineMessage/InlineMessage.d.ts +33 -0
  139. package/InlineMessage/InlineMessage.js +42 -0
  140. package/InlineMessage/InlineMessageGroup.d.ts +24 -0
  141. package/InlineMessage/InlineMessageGroup.js +21 -0
  142. package/InlineMessage/index.d.ts +4 -0
  143. package/InlineMessage/index.js +2 -0
  144. package/Input/ActionButton/ActionButton.d.ts +26 -0
  145. package/Input/ActionButton/ActionButton.js +14 -0
  146. package/Input/ActionButton/index.d.ts +2 -0
  147. package/Input/ActionButton/index.js +1 -0
  148. package/Input/Input.d.ts +147 -42
  149. package/Input/Input.js +195 -27
  150. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.d.ts +31 -0
  151. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +18 -0
  152. package/Input/PasswordStrengthIndicator/index.d.ts +2 -0
  153. package/Input/PasswordStrengthIndicator/index.js +1 -0
  154. package/Input/SelectButton/SelectButton.d.ts +20 -0
  155. package/Input/SelectButton/SelectButton.js +21 -0
  156. package/Input/SelectButton/index.d.ts +2 -0
  157. package/Input/SelectButton/index.js +1 -0
  158. package/Input/SpinnerButton/SpinnerButton.d.ts +19 -0
  159. package/Input/SpinnerButton/SpinnerButton.js +14 -0
  160. package/Input/SpinnerButton/index.d.ts +2 -0
  161. package/Input/SpinnerButton/index.js +1 -0
  162. package/Input/index.d.ts +3 -2
  163. package/Menu/Menu.js +1 -0
  164. package/Menu/index.d.ts +8 -4
  165. package/Message/Message.d.ts +6 -4
  166. package/Message/Message.js +86 -9
  167. package/Message/MessageTimerController.d.ts +14 -0
  168. package/Message/MessageTimerController.js +27 -0
  169. package/Message/index.d.ts +3 -2
  170. package/Modal/Modal.js +2 -2
  171. package/Modal/ModalActions.js +1 -0
  172. package/Modal/ModalControl.js +1 -0
  173. package/Modal/ModalHeader.js +1 -0
  174. package/Modal/index.d.ts +10 -5
  175. package/Modal/useModalContainer.d.ts +1 -1
  176. package/Modal/useModalContainer.js +2 -4
  177. package/Navigation/Navigation.js +37 -34
  178. package/Navigation/NavigationContext.js +1 -0
  179. package/Navigation/NavigationItem.js +1 -0
  180. package/Navigation/NavigationSubMenu.js +16 -26
  181. package/Navigation/index.d.ts +8 -4
  182. package/Notification/Notification.js +0 -1
  183. package/Notification/index.d.ts +3 -2
  184. package/Notifier/NotifierManager.d.ts +15 -2
  185. package/Notifier/NotifierManager.js +60 -18
  186. package/Notifier/createNotifier.d.ts +9 -0
  187. package/Notifier/createNotifier.js +3 -2
  188. package/Notifier/typings.d.ts +3 -1
  189. package/OverflowTooltip/OverflowCounterTag.d.ts +12 -0
  190. package/OverflowTooltip/OverflowCounterTag.js +48 -0
  191. package/OverflowTooltip/OverflowTooltip.d.ts +34 -0
  192. package/OverflowTooltip/OverflowTooltip.js +53 -0
  193. package/OverflowTooltip/index.d.ts +2 -0
  194. package/OverflowTooltip/index.js +2 -0
  195. package/PageFooter/PageFooter.d.ts +73 -8
  196. package/PageFooter/PageFooter.js +34 -3
  197. package/PageFooter/index.d.ts +2 -1
  198. package/PageHeader/PageHeader.d.ts +40 -0
  199. package/PageHeader/PageHeader.js +70 -0
  200. package/PageHeader/index.d.ts +2 -0
  201. package/PageHeader/index.js +1 -0
  202. package/PageToolbar/PageToolbar.d.ts +114 -0
  203. package/PageToolbar/PageToolbar.js +23 -0
  204. package/PageToolbar/index.d.ts +2 -0
  205. package/PageToolbar/index.js +1 -0
  206. package/PageToolbar/utils.d.ts +23 -0
  207. package/PageToolbar/utils.js +165 -0
  208. package/Pagination/Pagination.d.ts +23 -29
  209. package/Pagination/Pagination.js +3 -4
  210. package/Pagination/PaginationItem.d.ts +1 -1
  211. package/Pagination/PaginationItem.js +4 -3
  212. package/Pagination/PaginationJumper.d.ts +7 -9
  213. package/Pagination/PaginationJumper.js +3 -5
  214. package/Pagination/PaginationPageSize.d.ts +8 -11
  215. package/Pagination/PaginationPageSize.js +5 -4
  216. package/Pagination/index.d.ts +8 -4
  217. package/Pagination/usePagination.d.ts +3 -1
  218. package/Pagination/usePagination.js +12 -21
  219. package/Picker/FormattedInput.d.ts +17 -0
  220. package/Picker/FormattedInput.js +74 -0
  221. package/Picker/MaskFormat.d.ts +39 -0
  222. package/Picker/MaskFormat.js +94 -0
  223. package/Picker/PickerTrigger.d.ts +13 -3
  224. package/Picker/PickerTrigger.js +17 -2
  225. package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
  226. package/Picker/PickerTriggerWithSeparator.js +80 -0
  227. package/Picker/RangePickerTrigger.d.ts +55 -4
  228. package/Picker/RangePickerTrigger.js +65 -7
  229. package/Picker/formatUtils.d.ts +34 -0
  230. package/Picker/formatUtils.js +124 -0
  231. package/Picker/index.d.ts +17 -6
  232. package/Picker/index.js +4 -1
  233. package/Picker/useDateInputFormatter.d.ts +52 -0
  234. package/Picker/useDateInputFormatter.js +382 -0
  235. package/Picker/usePickerValue.d.ts +1 -2
  236. package/Picker/usePickerValue.js +8 -13
  237. package/Popconfirm/Popconfirm.js +1 -1
  238. package/Popconfirm/index.d.ts +2 -1
  239. package/Popover/Popover.js +4 -8
  240. package/Popover/index.d.ts +2 -1
  241. package/Popper/Popper.d.ts +15 -10
  242. package/Popper/Popper.js +88 -17
  243. package/Popper/index.d.ts +2 -1
  244. package/Portal/Portal.d.ts +13 -5
  245. package/Portal/Portal.js +25 -10
  246. package/Portal/index.d.ts +4 -1
  247. package/Portal/index.js +1 -0
  248. package/Portal/portalRegistry.d.ts +17 -0
  249. package/Portal/portalRegistry.js +92 -0
  250. package/Progress/Progress.d.ts +23 -30
  251. package/Progress/Progress.js +71 -21
  252. package/Progress/index.d.ts +3 -2
  253. package/Provider/ConfigProvider.d.ts +1 -0
  254. package/Provider/ConfigProvider.js +1 -0
  255. package/Provider/context.js +1 -0
  256. package/Radio/Radio.d.ts +37 -4
  257. package/Radio/Radio.js +23 -12
  258. package/Radio/RadioGroup.d.ts +37 -8
  259. package/Radio/RadioGroup.js +6 -5
  260. package/Radio/RadioGroupContext.d.ts +2 -1
  261. package/Radio/RadioGroupContext.js +1 -0
  262. package/Radio/index.d.ts +5 -3
  263. package/ResultState/ResultState.d.ts +52 -0
  264. package/ResultState/ResultState.js +24 -0
  265. package/ResultState/index.d.ts +2 -0
  266. package/ResultState/index.js +1 -0
  267. package/Select/AutoComplete.d.ts +1 -1
  268. package/Select/AutoComplete.js +2 -1
  269. package/Select/Option.js +1 -0
  270. package/Select/Select.d.ts +1 -1
  271. package/Select/Select.js +2 -1
  272. package/Select/SelectControlContext.js +1 -0
  273. package/Select/SelectTrigger.d.ts +1 -87
  274. package/Select/SelectTrigger.js +26 -21
  275. package/Select/SelectTriggerTags.d.ts +1 -1
  276. package/Select/SelectTriggerTags.js +47 -18
  277. package/Select/TreeSelect.d.ts +1 -1
  278. package/Select/TreeSelect.js +2 -1
  279. package/Select/index.d.ts +14 -7
  280. package/Select/typings.d.ts +99 -0
  281. package/Select/useSelectTriggerTags.d.ts +15 -8
  282. package/Select/useSelectTriggerTags.js +83 -44
  283. package/Selection/Selection.d.ts +98 -0
  284. package/Selection/Selection.js +46 -0
  285. package/Selection/index.d.ts +12 -0
  286. package/Selection/index.js +5 -0
  287. package/Skeleton/Skeleton.d.ts +10 -3
  288. package/Skeleton/Skeleton.js +12 -4
  289. package/Skeleton/index.d.ts +2 -1
  290. package/Slider/Slider.d.ts +44 -7
  291. package/Slider/Slider.js +17 -13
  292. package/Slider/index.d.ts +5 -3
  293. package/Spin/Spin.d.ts +39 -0
  294. package/{Loading/Loading.js → Spin/Spin.js} +9 -9
  295. package/Spin/index.d.ts +2 -0
  296. package/Spin/index.js +1 -0
  297. package/Stepper/Step.d.ts +1 -35
  298. package/Stepper/Step.js +43 -8
  299. package/Stepper/Stepper.d.ts +1 -14
  300. package/Stepper/Stepper.js +49 -15
  301. package/Stepper/index.d.ts +5 -2
  302. package/Stepper/index.js +1 -0
  303. package/Stepper/typings.d.ts +77 -0
  304. package/Stepper/useStepDistance.d.ts +10 -0
  305. package/Stepper/useStepDistance.js +81 -0
  306. package/Stepper/useStepper.d.ts +21 -0
  307. package/Stepper/useStepper.js +26 -0
  308. package/Tab/Tab.d.ts +32 -0
  309. package/Tab/Tab.js +57 -0
  310. package/Tab/TabItem.d.ts +27 -0
  311. package/Tab/TabItem.js +18 -0
  312. package/Tab/index.d.ts +4 -0
  313. package/Tab/index.js +2 -0
  314. package/Table/Table.d.ts +75 -94
  315. package/Table/Table.js +216 -161
  316. package/Table/TableContext.d.ts +114 -51
  317. package/Table/TableContext.js +22 -3
  318. package/Table/components/TableBody.d.ts +5 -0
  319. package/Table/components/TableBody.js +102 -0
  320. package/Table/components/TableCell.d.ts +17 -0
  321. package/Table/components/TableCell.js +74 -0
  322. package/Table/components/TableColGroup.d.ts +4 -0
  323. package/Table/components/TableColGroup.js +206 -0
  324. package/Table/components/TableDragHandleCell.d.ts +9 -0
  325. package/Table/components/TableDragHandleCell.js +37 -0
  326. package/Table/components/TableExpandCell.d.ts +11 -0
  327. package/Table/components/TableExpandCell.js +44 -0
  328. package/Table/components/TableExpandedRow.d.ts +9 -0
  329. package/Table/components/TableExpandedRow.js +46 -0
  330. package/Table/components/TableHeader.d.ts +4 -0
  331. package/Table/components/TableHeader.js +125 -0
  332. package/Table/components/TablePagination.d.ts +3 -0
  333. package/Table/components/TablePagination.js +11 -0
  334. package/Table/components/TableResizeHandle.d.ts +13 -0
  335. package/Table/components/TableResizeHandle.js +115 -0
  336. package/Table/components/TableRow.d.ts +12 -0
  337. package/Table/components/TableRow.js +126 -0
  338. package/Table/components/TableSelectionCell.d.ts +13 -0
  339. package/Table/components/TableSelectionCell.js +35 -0
  340. package/Table/components/index.d.ts +10 -0
  341. package/Table/components/index.js +10 -0
  342. package/Table/hooks/index.d.ts +9 -0
  343. package/Table/hooks/index.js +8 -0
  344. package/Table/hooks/typings.d.ts +14 -0
  345. package/Table/hooks/useTableColumns.d.ts +8 -0
  346. package/Table/hooks/useTableColumns.js +91 -0
  347. package/Table/hooks/useTableDataSource.d.ts +57 -0
  348. package/Table/hooks/useTableDataSource.js +183 -0
  349. package/Table/hooks/useTableExpansion.d.ts +7 -0
  350. package/Table/hooks/useTableExpansion.js +52 -0
  351. package/Table/hooks/useTableFixedOffsets.d.ts +29 -0
  352. package/Table/hooks/useTableFixedOffsets.js +241 -0
  353. package/Table/hooks/useTableScroll.d.ts +12 -0
  354. package/Table/hooks/useTableScroll.js +58 -0
  355. package/Table/hooks/useTableSelection.d.ts +7 -0
  356. package/Table/hooks/useTableSelection.js +94 -0
  357. package/Table/hooks/useTableSorting.d.ts +6 -0
  358. package/Table/hooks/useTableSorting.js +32 -0
  359. package/Table/hooks/useTableVirtualization.d.ts +22 -0
  360. package/Table/hooks/useTableVirtualization.js +115 -0
  361. package/Table/index.d.ts +7 -7
  362. package/Table/index.js +22 -6
  363. package/Table/utils/index.d.ts +2 -0
  364. package/Table/utils/index.js +1 -0
  365. package/Table/utils/useTableRowSelection.d.ts +18 -0
  366. package/Table/utils/useTableRowSelection.js +63 -0
  367. package/Tag/Tag.d.ts +2 -25
  368. package/Tag/Tag.js +23 -13
  369. package/Tag/TagGroup.d.ts +12 -0
  370. package/Tag/TagGroup.js +41 -0
  371. package/Tag/index.d.ts +2 -1
  372. package/Tag/typings.d.ts +78 -0
  373. package/TextField/TextField.d.ts +78 -19
  374. package/TextField/TextField.js +58 -22
  375. package/TextField/index.d.ts +2 -1
  376. package/Textarea/Textarea.d.ts +19 -51
  377. package/Textarea/Textarea.js +13 -19
  378. package/Textarea/index.d.ts +2 -2
  379. package/TimePanel/TimePanel.d.ts +1 -22
  380. package/TimePanel/TimePanel.js +31 -26
  381. package/TimePanel/TimePanelAction.d.ts +2 -8
  382. package/TimePanel/TimePanelAction.js +2 -2
  383. package/TimePanel/TimePanelColumn.d.ts +0 -13
  384. package/TimePanel/TimePanelColumn.js +9 -11
  385. package/TimePanel/index.d.ts +6 -3
  386. package/TimePicker/TimePicker.d.ts +10 -1
  387. package/TimePicker/TimePicker.js +86 -35
  388. package/TimePicker/TimePickerPanel.d.ts +1 -2
  389. package/TimePicker/TimePickerPanel.js +2 -2
  390. package/TimePicker/index.d.ts +4 -2
  391. package/Toggle/Toggle.d.ts +46 -0
  392. package/Toggle/Toggle.js +29 -0
  393. package/Toggle/index.d.ts +3 -0
  394. package/Toggle/index.js +1 -0
  395. package/Tooltip/Tooltip.d.ts +13 -2
  396. package/Tooltip/Tooltip.js +56 -10
  397. package/Tooltip/index.d.ts +2 -1
  398. package/Tooltip/useDelayMouseEnterLeave.d.ts +1 -2
  399. package/Tooltip/useDelayMouseEnterLeave.js +10 -13
  400. package/Transition/Collapse.d.ts +2 -0
  401. package/Transition/Collapse.js +5 -6
  402. package/Transition/Fade.js +4 -4
  403. package/Transition/Rotate.d.ts +42 -0
  404. package/Transition/Rotate.js +30 -0
  405. package/Transition/Scale.d.ts +13 -0
  406. package/Transition/{Grow.js → Scale.js} +19 -16
  407. package/Transition/Slide.d.ts +7 -0
  408. package/Transition/{Zoom.js → Slide.js} +14 -12
  409. package/Transition/SlideFade.d.ts +3 -0
  410. package/Transition/SlideFade.js +5 -4
  411. package/Transition/Transition.d.ts +2 -2
  412. package/Transition/Translate.d.ts +14 -0
  413. package/Transition/Translate.js +94 -0
  414. package/Transition/index.d.ts +16 -6
  415. package/Transition/index.js +4 -2
  416. package/Transition/useAutoTransitionDuration.d.ts +1 -1
  417. package/Transition/useAutoTransitionDuration.js +3 -3
  418. package/Transition/useSetNodeTransition.js +0 -2
  419. package/Tree/TreeNode.js +7 -6
  420. package/Tree/index.d.ts +10 -5
  421. package/Typography/Typography.d.ts +6 -9
  422. package/Typography/Typography.js +7 -9
  423. package/Typography/index.d.ts +2 -5
  424. package/Upload/Upload.d.ts +175 -0
  425. package/Upload/Upload.js +279 -0
  426. package/Upload/UploadItem.d.ts +82 -0
  427. package/Upload/UploadItem.js +118 -0
  428. package/Upload/UploadPictureCard.d.ts +110 -0
  429. package/Upload/UploadPictureCard.js +101 -0
  430. package/Upload/Uploader.d.ts +161 -0
  431. package/Upload/Uploader.js +120 -0
  432. package/Upload/index.d.ts +8 -6
  433. package/Upload/index.js +4 -5
  434. package/Upload/upload-utils.d.ts +41 -0
  435. package/Upload/upload-utils.js +65 -0
  436. package/_internal/InputCheck/InputCheck.d.ts +15 -1
  437. package/_internal/InputCheck/InputCheck.js +6 -2
  438. package/_internal/InputCheck/InputCheckGroup.d.ts +11 -1
  439. package/_internal/InputCheck/InputCheckGroup.js +4 -2
  440. package/_internal/InputCheck/index.d.ts +4 -2
  441. package/_internal/InputTriggerPopper/InputTriggerPopper.js +15 -25
  442. package/_internal/InputTriggerPopper/index.d.ts +2 -1
  443. package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +3 -3
  444. package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +5 -28
  445. package/_internal/SlideFadeOverlay/index.d.ts +2 -1
  446. package/_internal/SlideFadeOverlay/useTopStack.js +1 -0
  447. package/dayjs.d.ts +21 -0
  448. package/dayjs.js +2 -0
  449. package/hooks/useComposeRefs.js +1 -1
  450. package/hooks/useLastCallback.js +3 -1
  451. package/hooks/useScrollLock.d.ts +28 -0
  452. package/hooks/useScrollLock.js +134 -0
  453. package/index.d.ts +128 -58
  454. package/index.js +90 -80
  455. package/luxon.d.ts +21 -0
  456. package/luxon.js +2 -0
  457. package/moment.d.ts +21 -0
  458. package/moment.js +2 -0
  459. package/package.json +14 -17
  460. package/utils/composeRefs.js +0 -1
  461. package/utils/flatten-children.d.ts +12 -0
  462. package/utils/flatten-children.js +37 -0
  463. package/utils/get-css-variable-value.d.ts +2 -0
  464. package/utils/get-css-variable-value.js +12 -0
  465. package/Button/IconButton.d.ts +0 -21
  466. package/Button/IconButton.js +0 -13
  467. package/DateTimePicker/DateTimePickerPanel.d.ts +0 -28
  468. package/DateTimePicker/DateTimePickerPanel.js +0 -49
  469. package/Form/FormMessage.d.ts +0 -7
  470. package/Form/FormMessage.js +0 -18
  471. package/Form/useInputWithTagsModeValue.js +0 -86
  472. package/Loading/Loading.d.ts +0 -33
  473. package/Loading/index.d.ts +0 -1
  474. package/Loading/index.js +0 -1
  475. package/Overlay/Overlay.js +0 -31
  476. package/Overlay/index.d.ts +0 -1
  477. package/Overlay/index.js +0 -1
  478. package/Picker/useRangePickerValue.d.ts +0 -23
  479. package/Picker/useRangePickerValue.js +0 -99
  480. package/Switch/Switch.d.ts +0 -43
  481. package/Switch/Switch.js +0 -28
  482. package/Switch/index.d.ts +0 -2
  483. package/Switch/index.js +0 -1
  484. package/Table/TableBody.d.ts +0 -10
  485. package/Table/TableBody.js +0 -30
  486. package/Table/TableBodyRow.d.ts +0 -11
  487. package/Table/TableBodyRow.js +0 -64
  488. package/Table/TableCell.d.ts +0 -19
  489. package/Table/TableCell.js +0 -24
  490. package/Table/TableExpandedTable.d.ts +0 -11
  491. package/Table/TableExpandedTable.js +0 -28
  492. package/Table/TableHeader.d.ts +0 -3
  493. package/Table/TableHeader.js +0 -35
  494. package/Table/draggable/useTableDraggable.d.ts +0 -14
  495. package/Table/draggable/useTableDraggable.js +0 -64
  496. package/Table/editable/TableEditRenderWrapper.d.ts +0 -7
  497. package/Table/editable/TableEditRenderWrapper.js +0 -15
  498. package/Table/expandable/TableExpandable.d.ts +0 -27
  499. package/Table/expandable/TableExpandable.js +0 -24
  500. package/Table/pagination/TablePagination.d.ts +0 -10
  501. package/Table/pagination/TablePagination.js +0 -25
  502. package/Table/pagination/useTablePagination.d.ts +0 -8
  503. package/Table/pagination/useTablePagination.js +0 -29
  504. package/Table/refresh/TableRefresh.d.ts +0 -10
  505. package/Table/refresh/TableRefresh.js +0 -20
  506. package/Table/rowSelection/TableRowSelection.d.ts +0 -18
  507. package/Table/rowSelection/TableRowSelection.js +0 -92
  508. package/Table/rowSelection/useTableRowSelection.d.ts +0 -6
  509. package/Table/rowSelection/useTableRowSelection.js +0 -53
  510. package/Table/sorting/TableSortingIcon.d.ts +0 -10
  511. package/Table/sorting/TableSortingIcon.js +0 -32
  512. package/Table/sorting/useTableSorting.d.ts +0 -11
  513. package/Table/sorting/useTableSorting.js +0 -120
  514. package/Table/useTableFetchMore.d.ts +0 -10
  515. package/Table/useTableFetchMore.js +0 -50
  516. package/Table/useTableLoading.d.ts +0 -5
  517. package/Table/useTableLoading.js +0 -19
  518. package/Table/useTableScroll.d.ts +0 -596
  519. package/Table/useTableScroll.js +0 -294
  520. package/Tabs/Tab.d.ts +0 -18
  521. package/Tabs/Tab.js +0 -16
  522. package/Tabs/TabPane.d.ts +0 -14
  523. package/Tabs/TabPane.js +0 -18
  524. package/Tabs/Tabs.d.ts +0 -39
  525. package/Tabs/Tabs.js +0 -47
  526. package/Tabs/index.d.ts +0 -3
  527. package/Tabs/index.js +0 -3
  528. package/Tabs/useTabsOverflow.d.ts +0 -8
  529. package/Tabs/useTabsOverflow.js +0 -61
  530. package/Transition/Grow.d.ts +0 -12
  531. package/Transition/Zoom.d.ts +0 -7
  532. package/Upload/UploadButton.d.ts +0 -9
  533. package/Upload/UploadButton.js +0 -23
  534. package/Upload/UploadInput.d.ts +0 -20
  535. package/Upload/UploadInput.js +0 -24
  536. package/Upload/UploadPicture.d.ts +0 -49
  537. package/Upload/UploadPicture.js +0 -51
  538. package/Upload/UploadPictureBlock.d.ts +0 -20
  539. package/Upload/UploadPictureBlock.js +0 -81
  540. package/Upload/UploadPictureWall.d.ts +0 -81
  541. package/Upload/UploadPictureWall.js +0 -168
  542. package/Upload/UploadPictureWallItem.d.ts +0 -15
  543. package/Upload/UploadPictureWallItem.js +0 -18
  544. package/Upload/UploadResult.d.ts +0 -35
  545. package/Upload/UploadResult.js +0 -29
  546. package/utils/scroll-lock.d.ts +0 -2
  547. 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,40 @@
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>> | null | undefined | false;
8
+ /**
9
+ * Props for the PageHeader component.
10
+ * Extends native HTML header element props.
11
+ */
12
+ export type PageHeaderProps = NativeElementPropsWithoutKeyAndRef<'header'> & {
13
+ /** Optional back button properties */
14
+ onBackClick?: () => void;
15
+ /** Optional description text displayed below the title */
16
+ description?: string;
17
+ /** Main title text for the page header */
18
+ title: string;
19
+ /** HTML element type for the title (defaults to 'h2') */
20
+ titleComponent?: TypographyProps['component'];
21
+ /** Child components: Breadcrumb, PageToolbar, Button, or component with href prop */
22
+ children?: PageHeaderChild | PageHeaderChild[];
23
+ };
24
+ /**
25
+ * PageHeader component displays a page title with optional breadcrumb navigation,
26
+ * description, back button, and action toolbar.
27
+ */
28
+ declare const PageHeader: import("react").ForwardRefExoticComponent<NativeElementPropsWithoutKeyAndRef<"header"> & {
29
+ /** Optional back button properties */
30
+ onBackClick?: () => void;
31
+ /** Optional description text displayed below the title */
32
+ description?: string;
33
+ /** Main title text for the page header */
34
+ title: string;
35
+ /** HTML element type for the title (defaults to 'h2') */
36
+ titleComponent?: TypographyProps["component"];
37
+ /** Child components: Breadcrumb, PageToolbar, Button, or component with href prop */
38
+ children?: PageHeaderChild | PageHeaderChild[];
39
+ } & import("react").RefAttributes<HTMLElement>>;
40
+ export default PageHeader;
@@ -0,0 +1,70 @@
1
+ import { jsx, jsxs } 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, onBackClick, title, titleComponent = 'h2', ...rest } = props;
61
+ const { backButtonOrLink, breadcrumb, pageToolbar } = getBreadcrumbAndToolbar(children);
62
+ // prop onBack takes precedence over backButtonOrLink
63
+ const backButton = onBackClick ? (jsx(Button, { icon: {
64
+ position: 'icon-only',
65
+ src: ChevronLeftIcon,
66
+ }, onClick: onBackClick, size: "sub", variant: "base-tertiary" })) : (backButtonOrLink);
67
+ 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: [backButton && jsx("div", { children: backButton }), 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] })] }));
68
+ });
69
+
70
+ 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,114 @@
1
+ import { ReactElement } from 'react';
2
+ import { ButtonProps } from '../Button';
3
+ import { SearchInputProps } from '../Input';
4
+ import { SelectProps } from '../Select';
5
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
6
+ import { IconDefinition } from '@mezzanine-ui/icons';
7
+ type SegmentedControlProps = {
8
+ mock: 'SegmentedControlProps';
9
+ };
10
+ type PageToolbarChild = ReactElement<SearchInputProps | SelectProps | SegmentedControlProps | ButtonProps> | null | false | undefined;
11
+ /**
12
+ * Props for the PageToolbar component.
13
+ *
14
+ * PageToolbar provides a flexible toolbar layout for page-level actions,
15
+ * including filter components, action buttons, and utility buttons.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <PageToolbar
20
+ * size="main"
21
+ * filter={{ variant: 'search', placeholder: 'Search...' }}
22
+ * actions={{
23
+ * primaryButton: { children: 'Save' },
24
+ * secondaryButton: { children: 'Cancel' },
25
+ * }}
26
+ * utilities={[{ icon: { src: settingsIcon }, title: 'Settings' }]}
27
+ * />
28
+ * ```
29
+ */
30
+ export type PageToolbarProps = Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'children'> & {
31
+ /**
32
+ * Button configuration for primary, secondary, and destructive actions. <br />
33
+ * Automatically applies proper styling and order. <br />
34
+ */
35
+ actions?: {
36
+ destructiveButton?: ButtonProps;
37
+ primaryButton?: ButtonProps;
38
+ secondaryButton?: ButtonProps;
39
+ };
40
+ /**
41
+ * Children elements: <br />
42
+ * - Filter component (SearchInput, Select, or SegmentedControl) <br />
43
+ * - Action buttons `<Button />` <br />
44
+ * - Icon-only utility buttons `<Button icon="..." />` <br />
45
+ * <br />
46
+ * Can mix and match the above children. <br />
47
+ * The order of children does not matter as they will be arranged properly. <br />
48
+ * When conflicting with other props, props take priority over children. <br />
49
+ */
50
+ children?: PageToolbarChild[] | PageToolbarChild;
51
+ /** Filter component (SearchInput, Select, or SegmentedControl) */
52
+ filter?: {
53
+ variant: 'search' | 'select' | 'segmentedControl';
54
+ } & (SearchInputProps | SelectProps | SegmentedControlProps);
55
+ /**
56
+ * Size variant of the toolbar. <br />
57
+ * Affects the size of buttons and filter component. <br />
58
+ */
59
+ size?: 'main' | 'sub';
60
+ /**
61
+ * Icon-only utility buttons `<Button icon="..." />`. <br />
62
+ * They usually appear as smaller buttons with only an icon and no text.
63
+ */
64
+ utilities?: (ButtonProps & {
65
+ icon: {
66
+ src: IconDefinition;
67
+ };
68
+ })[];
69
+ };
70
+ /**
71
+ * PageToolbar component provides a flexible toolbar with filter, action buttons, and utility icons.
72
+ * Commonly used in page headers for primary user actions.
73
+ */
74
+ declare const PageToolbar: import("react").ForwardRefExoticComponent<Omit<NativeElementPropsWithoutKeyAndRef<"div">, "children"> & {
75
+ /**
76
+ * Button configuration for primary, secondary, and destructive actions. <br />
77
+ * Automatically applies proper styling and order. <br />
78
+ */
79
+ actions?: {
80
+ destructiveButton?: ButtonProps;
81
+ primaryButton?: ButtonProps;
82
+ secondaryButton?: ButtonProps;
83
+ };
84
+ /**
85
+ * Children elements: <br />
86
+ * - Filter component (SearchInput, Select, or SegmentedControl) <br />
87
+ * - Action buttons `<Button />` <br />
88
+ * - Icon-only utility buttons `<Button icon="..." />` <br />
89
+ * <br />
90
+ * Can mix and match the above children. <br />
91
+ * The order of children does not matter as they will be arranged properly. <br />
92
+ * When conflicting with other props, props take priority over children. <br />
93
+ */
94
+ children?: PageToolbarChild[] | PageToolbarChild;
95
+ /** Filter component (SearchInput, Select, or SegmentedControl) */
96
+ filter?: {
97
+ variant: "search" | "select" | "segmentedControl";
98
+ } & (SearchInputProps | SelectProps | SegmentedControlProps);
99
+ /**
100
+ * Size variant of the toolbar. <br />
101
+ * Affects the size of buttons and filter component. <br />
102
+ */
103
+ size?: "main" | "sub";
104
+ /**
105
+ * Icon-only utility buttons `<Button icon="..." />`. <br />
106
+ * They usually appear as smaller buttons with only an icon and no text.
107
+ */
108
+ utilities?: (ButtonProps & {
109
+ icon: {
110
+ src: IconDefinition;
111
+ };
112
+ })[];
113
+ } & import("react").RefAttributes<HTMLDivElement>>;
114
+ export default PageToolbar;
@@ -0,0 +1,23 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { pageToolbarClasses } from '@mezzanine-ui/core/page-toolbar';
4
+ import { renderFilterProp, renderActionsProp, renderIconButtonsProp, resolvePageToolbarChild } from './utils.js';
5
+ import ButtonGroup from '../Button/ButtonGroup.js';
6
+ import cx from 'clsx';
7
+
8
+ /**
9
+ * PageToolbar component provides a flexible toolbar with filter, action buttons, and utility icons.
10
+ * Commonly used in page headers for primary user actions.
11
+ */
12
+ const PageToolbar = forwardRef(function PageToolbar(props, ref) {
13
+ const { actions, children, className, filter, size = 'main', utilities, ...rest } = props;
14
+ const renderFilter = renderFilterProp(filter, size);
15
+ const renderActions = actions ? renderActionsProp(actions, size) : null;
16
+ const renderUtilities = utilities
17
+ ? renderIconButtonsProp(utilities, size)
18
+ : null;
19
+ const { filter: filterFromChildren, actions: actionsFromChildren, utilities: utilitiesFromChildren, } = resolvePageToolbarChild(children, size);
20
+ return (jsxs("div", { ...rest, className: cx(pageToolbarClasses.host, pageToolbarClasses.size(size), className), ref: ref, children: [renderFilter || filterFromChildren, jsx(ButtonGroup, { children: renderActions || actionsFromChildren }), jsx(ButtonGroup, { children: renderUtilities || utilitiesFromChildren })] }));
21
+ });
22
+
23
+ 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';
@@ -0,0 +1,23 @@
1
+ import { ReactElement } from 'react';
2
+ import { ButtonProps, ButtonGroupChild } from '../Button';
3
+ import { PageToolbarProps } from './PageToolbar';
4
+ type ToolbarButtonVariant = 'base-primary' | 'base-secondary' | 'destructive-secondary';
5
+ /**
6
+ * Renders a button from either ButtonProps or a React element.
7
+ * Applies the specified size and variant to the button.
8
+ */
9
+ export declare const renderButton: (button: ButtonProps | ButtonGroupChild | undefined, size: ButtonProps["size"], variant: ToolbarButtonVariant) => ReactElement<ButtonProps> | null;
10
+ export declare const renderFilterProp: (prop: PageToolbarProps["filter"], size: "main" | "sub") => import("react/jsx-runtime").JSX.Element | null;
11
+ export declare const renderIconButtonWithProps: (child: ReactElement<ButtonProps>, size: ButtonProps["size"]) => ReactElement<ButtonProps>;
12
+ export declare const renderIconButtonsProp: (utilities: PageToolbarProps["utilities"], size: ButtonProps["size"]) => ButtonGroupChild | ButtonGroupChild[];
13
+ /**
14
+ * Renders action buttons based on the actions configuration.
15
+ * Supports both structured actions object and single button element/props.
16
+ */
17
+ export declare const renderActionsProp: (actions: PageToolbarProps["actions"], size: ButtonProps["size"]) => ButtonGroupChild | ButtonGroupChild[];
18
+ export declare const resolvePageToolbarChild: (children: PageToolbarProps["children"], size: "main" | "sub") => {
19
+ filter: null;
20
+ actions: [ButtonGroupChild, ButtonGroupChild, ButtonGroupChild];
21
+ utilities: ButtonGroupChild[];
22
+ };
23
+ export {};
@@ -0,0 +1,165 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { Children, isValidElement, cloneElement } from 'react';
3
+ import Button from '../Button/Button.js';
4
+ import { flattenChildren } from '../utils/flatten-children.js';
5
+ import Input from '../Input/Input.js';
6
+ import Select from '../Select/Select.js';
7
+
8
+ /**
9
+ * Renders a button from either ButtonProps or a React element.
10
+ * Applies the specified size and variant to the button.
11
+ */
12
+ const renderButton = (button, size, variant) => {
13
+ if (!button) {
14
+ return null;
15
+ }
16
+ if (isValidElement(button)) {
17
+ return cloneElement(button, {
18
+ size,
19
+ variant,
20
+ key: variant,
21
+ });
22
+ }
23
+ return jsx(Button, { ...button, size: size, variant: variant }, variant);
24
+ };
25
+ const withSize = (target, size) => {
26
+ return cloneElement(target, { size });
27
+ };
28
+ const renderFilterProp = (prop, size) => {
29
+ if (!prop) {
30
+ return null;
31
+ }
32
+ const { variant } = prop;
33
+ if (variant === 'search') {
34
+ return (jsx(Input, { ...prop, size: size, variant: "search" }));
35
+ }
36
+ if (variant === 'select') {
37
+ return jsx(Select, { ...prop, size: size });
38
+ }
39
+ if (variant === 'segmentedControl') {
40
+ console.warn('SegmentedControl component is not implemented yet.');
41
+ return null;
42
+ }
43
+ return null;
44
+ };
45
+ const renderIconButtonWithProps = (child, size) => {
46
+ const { icon } = child.props;
47
+ return cloneElement(child, {
48
+ icon: icon
49
+ ? {
50
+ ...icon,
51
+ position: 'icon-only',
52
+ }
53
+ : undefined,
54
+ size,
55
+ variant: 'base-secondary',
56
+ });
57
+ };
58
+ const renderIconButtonsProp = (utilities, size) => {
59
+ const result = [];
60
+ utilities === null || utilities === void 0 ? void 0 : utilities.forEach((buttonProps) => {
61
+ result.push(jsx(Button, { ...buttonProps, size: size, icon: {
62
+ ...buttonProps.icon,
63
+ position: 'icon-only',
64
+ }, variant: "base-secondary" }));
65
+ });
66
+ return result;
67
+ };
68
+ /**
69
+ * Renders action buttons based on the actions configuration.
70
+ * Supports both structured actions object and single button element/props.
71
+ */
72
+ const renderActionsProp = (actions, size) => {
73
+ if (actions &&
74
+ ('primaryButton' in actions ||
75
+ 'secondaryButton' in actions ||
76
+ 'destructiveButton' in actions)) {
77
+ return [
78
+ renderButton(actions.destructiveButton, size, 'destructive-secondary'),
79
+ renderButton(actions.secondaryButton, size, 'base-secondary'),
80
+ renderButton(actions.primaryButton, size, 'base-primary'),
81
+ ].filter(Boolean);
82
+ }
83
+ return jsx(Button, { ...actions, size: size, variant: "base-primary" });
84
+ };
85
+ const resolvePageToolbarChild = (children, size) => {
86
+ let filter = null;
87
+ const actions = [
88
+ null,
89
+ null,
90
+ null,
91
+ ];
92
+ const buttonsWithoutVariant = [];
93
+ const utilities = [];
94
+ if (children) {
95
+ const flatChildren = flattenChildren(children);
96
+ Children.forEach(flatChildren, (child) => {
97
+ var _a;
98
+ if (!isValidElement(child)) {
99
+ return;
100
+ }
101
+ const { type, props } = child;
102
+ // is filter
103
+ if (type === Input && props.variant === 'search') {
104
+ filter = withSize(child, size);
105
+ }
106
+ else if (type === Select) {
107
+ // TODO: waiting size prop Select
108
+ filter = withSize(child, size);
109
+ }
110
+ else if (type.toString() === 'SegmentedControl') {
111
+ console.warn('SegmentedControl component is not implemented yet.');
112
+ }
113
+ // is utilities (icon button)
114
+ else if (type === Button &&
115
+ ((_a = props.icon) === null || _a === void 0 ? void 0 : _a.position) === 'icon-only') {
116
+ utilities.push(renderIconButtonWithProps(child, size));
117
+ }
118
+ // is actions (normal button)
119
+ else if (type === Button && props.variant) {
120
+ // with variant prop
121
+ const variant = props.variant;
122
+ if (variant !== 'base-primary' &&
123
+ variant !== 'base-secondary' &&
124
+ variant !== 'destructive-secondary') {
125
+ return;
126
+ }
127
+ const buttonElement = renderButton(child, size, variant);
128
+ if (variant === 'destructive-secondary') {
129
+ actions[0] = buttonElement;
130
+ }
131
+ else if (variant === 'base-secondary') {
132
+ actions[1] = buttonElement;
133
+ }
134
+ else if (variant === 'base-primary') {
135
+ actions[2] = buttonElement;
136
+ }
137
+ }
138
+ else if (type === Button) {
139
+ // without variant prop
140
+ buttonsWithoutVariant.push(child);
141
+ }
142
+ });
143
+ // Fill the buttons from left to right according to the number of buttons passed in,
144
+ // and ensure that the button on the right has a higher priority
145
+ const fillIndexStartWith = 3 -
146
+ buttonsWithoutVariant.length -
147
+ (actions[0] ? 1 : 0) -
148
+ (actions[1] ? 1 : 0) -
149
+ (actions[2] ? 1 : 0);
150
+ buttonsWithoutVariant.forEach((button) => {
151
+ if (fillIndexStartWith <= 0 && !actions[0]) {
152
+ actions[0] = renderButton(button, size, 'destructive-secondary');
153
+ }
154
+ else if (fillIndexStartWith <= 1 && !actions[1]) {
155
+ actions[1] = renderButton(button, size, 'base-secondary');
156
+ }
157
+ else if (fillIndexStartWith <= 2 && !actions[2]) {
158
+ actions[2] = renderButton(button, size, 'base-primary');
159
+ }
160
+ });
161
+ }
162
+ return { filter, actions, utilities };
163
+ };
164
+
165
+ export { renderActionsProp, renderButton, renderFilterProp, renderIconButtonWithProps, renderIconButtonsProp, resolvePageToolbarChild };