@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
@@ -0,0 +1,110 @@
1
+ import { MouseEventHandler } from 'react';
2
+ import { UploadItemStatus, UploadPictureCardImageFit, UploadPictureCardSize } from '@mezzanine-ui/core/upload';
3
+ import type { IconDefinition } from '@mezzanine-ui/icons';
4
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
5
+ export interface UploadPictureCardAriaLabels {
6
+ /**
7
+ * Aria label for cancel upload button.
8
+ * @default 'Cancel upload'
9
+ */
10
+ cancelUpload?: string;
11
+ /**
12
+ * Aria label for uploading status.
13
+ * @default 'Uploading'
14
+ */
15
+ uploading?: string;
16
+ /**
17
+ * Aria label for zoom in button.
18
+ * @default 'Zoom in image'
19
+ */
20
+ zoomIn?: string;
21
+ /**
22
+ * Aria label for download button.
23
+ * @default 'Download file'
24
+ */
25
+ download?: string;
26
+ /**
27
+ * Aria label for delete button.
28
+ * @default 'Delete file'
29
+ */
30
+ delete?: string;
31
+ /**
32
+ * Aria label for reload/retry button.
33
+ * @default 'Retry upload'
34
+ */
35
+ reload?: string;
36
+ }
37
+ export interface UploadPictureCardProps extends NativeElementPropsWithoutKeyAndRef<'div'> {
38
+ /**
39
+ * Aria labels for accessibility. Allows customization for internationalization.
40
+ */
41
+ ariaLabels?: UploadPictureCardAriaLabels;
42
+ /**
43
+ * The file to display.
44
+ * Required when displaying local files (before upload).
45
+ * Optional when `url` is provided for already uploaded files.
46
+ */
47
+ file?: File;
48
+ /**
49
+ * The URL of the uploaded file.
50
+ * When provided, this will be used instead of creating a blob URL from `file`.
51
+ * Useful for displaying files that have already been uploaded to the server.
52
+ *
53
+ * @note If only `url` is provided (without `file`), the file type will be inferred
54
+ * from the URL extension. For accurate type detection, provide `file` when available.
55
+ */
56
+ url?: string;
57
+ /**
58
+ * The id of the file id to identify the file.
59
+ */
60
+ id?: string;
61
+ /**
62
+ * The status of the upload picture card.
63
+ * @default 'loading'
64
+ */
65
+ status?: UploadItemStatus;
66
+ /**
67
+ * The size of the upload picture card.
68
+ * @default 'main'
69
+ */
70
+ size?: UploadPictureCardSize;
71
+ /**
72
+ * The image fit of the upload picture card.
73
+ * @default 'cover'
74
+ */
75
+ imageFit?: UploadPictureCardImageFit;
76
+ /**
77
+ * Whether the upload picture card is disabled.
78
+ * @default false
79
+ */
80
+ disabled?: boolean;
81
+ /**
82
+ * Error message to display when status is 'error'.
83
+ */
84
+ errorMessage?: string;
85
+ /**
86
+ * Error icon to display when status is 'error'.
87
+ */
88
+ errorIcon?: IconDefinition;
89
+ /**
90
+ * When delete icon is clicked, this callback will be fired.
91
+ */
92
+ onDelete?: MouseEventHandler;
93
+ /**
94
+ * When zoom in icon is clicked, this callback will be fired.
95
+ */
96
+ onZoomIn?: MouseEventHandler;
97
+ /**
98
+ * When download icon is clicked, this callback will be fired.
99
+ */
100
+ onDownload?: MouseEventHandler;
101
+ /**
102
+ * When reload icon is clicked, this callback will be fired.
103
+ */
104
+ onReload?: MouseEventHandler;
105
+ }
106
+ /**
107
+ * The react component for `mezzanine` upload picture card.
108
+ */
109
+ declare const UploadPictureCard: import("react").ForwardRefExoticComponent<UploadPictureCardProps & import("react").RefAttributes<HTMLDivElement>>;
110
+ export default UploadPictureCard;
@@ -0,0 +1,101 @@
1
+ 'use client';
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import { forwardRef, useMemo, useState, useEffect } from 'react';
4
+ import { uploadPictureCardClasses } from '@mezzanine-ui/core/upload';
5
+ import { ImageIcon, FileIcon, SpinnerIcon, ZoomInIcon, DownloadIcon, TrashIcon, ResetIcon } from '@mezzanine-ui/icons';
6
+ import Button from '../Button/Button.js';
7
+ import ClearActions from '../ClearActions/ClearActions.js';
8
+ import Typography from '../Typography/Typography.js';
9
+ import { isImageFile } from './upload-utils.js';
10
+ import Icon from '../Icon/Icon.js';
11
+ import cx from 'clsx';
12
+
13
+ /**
14
+ * The react component for `mezzanine` upload picture card.
15
+ */
16
+ const UploadPictureCard = forwardRef(function UploadPictureCard(props, ref) {
17
+ var _a;
18
+ const { ariaLabels, className, file, url, status = 'loading', imageFit = 'cover', size = 'main', disabled = false, errorMessage, errorIcon, onDelete, onZoomIn, onDownload, onReload, ...rest } = props;
19
+ const defaultAriaLabels = {
20
+ cancelUpload: 'Cancel upload',
21
+ uploading: 'Uploading',
22
+ zoomIn: 'Zoom in image',
23
+ download: 'Download file',
24
+ delete: 'Delete file',
25
+ reload: 'Retry upload',
26
+ };
27
+ const labels = { ...defaultAriaLabels, ...ariaLabels };
28
+ const isImage = useMemo(() => {
29
+ return isImageFile(file, url);
30
+ }, [file, url]);
31
+ const fileName = useMemo(() => {
32
+ var _a;
33
+ if (((_a = props.file) === null || _a === void 0 ? void 0 : _a.name) && !props.url)
34
+ return props.file.name;
35
+ if (props.url) {
36
+ try {
37
+ const url = new URL(props.url);
38
+ const pathname = url.pathname;
39
+ const filename = pathname.split('/').pop() || '';
40
+ return filename;
41
+ }
42
+ catch (_b) {
43
+ const urlWithoutQuery = props.url.split('?')[0].split('#')[0];
44
+ return urlWithoutQuery.split('/').pop() || '';
45
+ }
46
+ }
47
+ return '';
48
+ }, [(_a = props.file) === null || _a === void 0 ? void 0 : _a.name, props.url]);
49
+ const [imageUrl, setImageUrl] = useState('');
50
+ const errorIconContent = useMemo(() => {
51
+ if (errorIcon) {
52
+ return errorIcon;
53
+ }
54
+ return isImage ? ImageIcon : FileIcon;
55
+ }, [isImage, errorIcon]);
56
+ const errorMessageContent = useMemo(() => {
57
+ if (errorMessage) {
58
+ return errorMessage;
59
+ }
60
+ return fileName ? fileName : 'Upload error';
61
+ }, [fileName, errorMessage]);
62
+ // Warn if both file and url are missing
63
+ useEffect(() => {
64
+ if (!file && !url) {
65
+ console.warn('UploadPictureCard: Both `file` and `url` props are missing. At least one should be provided to display the upload picture card.');
66
+ }
67
+ }, [file, url]);
68
+ useEffect(() => {
69
+ if (url && isImage) {
70
+ setImageUrl(url);
71
+ return undefined;
72
+ }
73
+ if (file && isImage) {
74
+ try {
75
+ const blobUrl = URL.createObjectURL(file);
76
+ setImageUrl(blobUrl);
77
+ return () => {
78
+ URL.revokeObjectURL(blobUrl);
79
+ };
80
+ }
81
+ catch (error) {
82
+ console.error('Failed to create object URL for image:', error);
83
+ setImageUrl('');
84
+ }
85
+ }
86
+ else {
87
+ setImageUrl('');
88
+ }
89
+ return undefined;
90
+ }, [file, url, isImage]);
91
+ if (!isImage && size === 'minor') {
92
+ console.warn('UploadPictureCard: minor size is not supported for non-image files');
93
+ return null;
94
+ }
95
+ return (jsx("div", { className: cx(uploadPictureCardClasses.host, uploadPictureCardClasses.size(size), disabled && uploadPictureCardClasses.disabled, className), "aria-disabled": disabled, ref: ref, role: "group", tabIndex: disabled ? -1 : 0, ...rest, children: jsxs("div", { className: uploadPictureCardClasses.container, children: [isImage && imageUrl && status !== 'error' && (jsx("img", { alt: fileName, src: imageUrl, style: {
96
+ objectFit: imageFit,
97
+ objectPosition: 'center',
98
+ } })), status === 'done' && size !== 'minor' && !isImage && (jsxs("div", { className: uploadPictureCardClasses.content, children: [jsx(Icon, { icon: FileIcon, color: "brand", size: 16 }), jsx(Typography, { className: uploadPictureCardClasses.name, ellipsis: true, children: fileName })] })), status === 'error' && size !== 'minor' && (jsxs("div", { className: uploadPictureCardClasses.errorMessage, role: "alert", "aria-live": "polite", children: [jsx(Icon, { icon: errorIconContent, color: "error", size: 16 }), jsx(Typography, { className: uploadPictureCardClasses.errorMessageText, children: errorMessageContent })] })), jsxs("div", { className: cx(uploadPictureCardClasses.actions, uploadPictureCardClasses.actionsStatus(status)), children: [status === 'loading' && size !== 'minor' && (jsxs(Fragment, { children: [jsx(ClearActions, { type: "embedded", variant: "contrast", onClick: onDelete, className: uploadPictureCardClasses.clearActionsIcon, "aria-label": labels.cancelUpload }), jsx("div", { className: uploadPictureCardClasses.loadingIcon, "aria-label": labels.uploading, children: jsx(Icon, { icon: SpinnerIcon, color: "fixed-light", spin: true, size: 32 }) })] })), status === 'done' && size !== 'minor' && (jsx(Fragment, { children: jsx("div", { className: uploadPictureCardClasses.tools, children: jsxs("div", { className: uploadPictureCardClasses.toolsContent, children: [jsx(Button, { variant: "base-secondary", size: "minor", icon: { position: 'icon-only', src: ZoomInIcon }, onClick: onZoomIn, "aria-label": labels.zoomIn }), jsx(Button, { variant: "base-secondary", size: "minor", icon: { position: 'icon-only', src: DownloadIcon }, onClick: onDownload, "aria-label": labels.download }), jsx(Button, { variant: "base-secondary", size: "minor", icon: { position: 'icon-only', src: TrashIcon }, onClick: onDelete, "aria-label": labels.delete })] }) }) })), status === 'error' && size !== 'minor' && (jsx(Fragment, { children: jsx("div", { className: uploadPictureCardClasses.tools, children: jsxs("div", { className: uploadPictureCardClasses.toolsContent, children: [jsx(Button, { variant: "base-secondary", size: "minor", icon: { position: 'icon-only', src: ResetIcon }, onClick: onReload, "aria-label": labels.reload }), jsx(Button, { variant: "base-secondary", size: "minor", icon: { position: 'icon-only', src: TrashIcon }, onClick: onDelete, "aria-label": labels.delete })] }) }) })), size === 'minor' && (jsx(Icon, { icon: ZoomInIcon, color: "fixed-light", size: 24 }))] })] }) }));
99
+ });
100
+
101
+ export { UploadPictureCard as default };
@@ -0,0 +1,161 @@
1
+ import { ChangeEventHandler, ReactNode, Ref } from 'react';
2
+ import { type UploaderHintType, type UploadPictureControl, type UploadType } from '@mezzanine-ui/core/upload';
3
+ import { type IconDefinition } from '@mezzanine-ui/icons';
4
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
5
+ type UploaderInputElementProps = Omit<NativeElementPropsWithoutKeyAndRef<'input'>, 'accept' | 'disabled' | 'multiple' | 'onChange' | 'type' | `aria-${'disabled'}`> & {
6
+ /**
7
+ * The id attribute can be provided via inputProps, but it's recommended to use the `id` prop directly.
8
+ * If both are provided, the `id` prop takes precedence.
9
+ */
10
+ id?: string;
11
+ /**
12
+ * The name attribute can be provided via inputProps, but it's recommended to use the `name` prop directly.
13
+ * If both are provided, the `name` prop takes precedence.
14
+ */
15
+ name?: string;
16
+ };
17
+ export interface UploaderHint {
18
+ /**
19
+ * The label text of the hint.
20
+ */
21
+ label: string;
22
+ /**
23
+ * The icon element of the hint.
24
+ */
25
+ type?: UploaderHintType;
26
+ }
27
+ export interface UploaderLabel {
28
+ /**
29
+ * Label text for upload state.
30
+ */
31
+ uploadLabel?: string;
32
+ /**
33
+ * Label text for uploading state.
34
+ */
35
+ uploadingLabel?: string;
36
+ /**
37
+ * Label text for success state.
38
+ */
39
+ success?: string;
40
+ /**
41
+ * Label text for error state.
42
+ */
43
+ error?: string;
44
+ /**
45
+ * Label text for "Click to upload" when isFillWidth is true.
46
+ * @default 'Click to upload'
47
+ */
48
+ clickToUpload?: string;
49
+ }
50
+ export interface UploaderIcon {
51
+ /**
52
+ * Icon for upload action.
53
+ */
54
+ upload?: IconDefinition;
55
+ /**
56
+ * Icon for error state.
57
+ */
58
+ error?: ReactNode;
59
+ /**
60
+ * Icon for success state.
61
+ */
62
+ success?: ReactNode;
63
+ /**
64
+ * Icon for zoom action.
65
+ */
66
+ zoom?: ReactNode;
67
+ /**
68
+ * Icon for document.
69
+ */
70
+ document?: ReactNode;
71
+ /**
72
+ * Icon for download action.
73
+ */
74
+ download?: ReactNode;
75
+ /**
76
+ * Icon for reload action.
77
+ */
78
+ reload?: ReactNode;
79
+ /**
80
+ * Icon for delete action.
81
+ */
82
+ delete?: ReactNode;
83
+ }
84
+ export interface UploaderProps extends Omit<NativeElementPropsWithoutKeyAndRef<'label'>, 'onChange'> {
85
+ /**
86
+ * The accept attributes of native input element.
87
+ * @example 'image/*', '.pdf,.doc,.docx'
88
+ */
89
+ accept?: string;
90
+ /**
91
+ * Whether the input is disabled.
92
+ * @default false
93
+ */
94
+ disabled?: boolean;
95
+ /**
96
+ * The id of input element.
97
+ */
98
+ id?: string;
99
+ /**
100
+ * Whether to fill the width of the container.
101
+ * @default false
102
+ */
103
+ isFillWidth?: boolean;
104
+ /**
105
+ * Since at Mezzanine we use a host element to wrap our input, most derived props will be passed to the host element.
106
+ * If you need direct control to the input element, use this prop to provide to it.
107
+ */
108
+ inputProps?: UploaderInputElementProps;
109
+ /**
110
+ * The react ref passed to input element.
111
+ */
112
+ inputRef?: React.Ref<HTMLInputElement>;
113
+ /**
114
+ * The name attribute of the input element.
115
+ */
116
+ name?: string;
117
+ /**
118
+ * Whether can select multiple files to upload.
119
+ * @default false
120
+ */
121
+ multiple?: boolean;
122
+ /**
123
+ * The type for upload component.
124
+ * @default 'base'
125
+ * @example 'base' | 'button'
126
+ */
127
+ type?: UploadType;
128
+ /**
129
+ * Array of hints to display with the upload component.
130
+ */
131
+ hints?: UploaderHint[];
132
+ /**
133
+ * Label configuration for different states.
134
+ */
135
+ label?: UploaderLabel;
136
+ /**
137
+ * Icon configuration for different actions and states.
138
+ */
139
+ icon?: UploaderIcon;
140
+ /**
141
+ * Provide `controllerRef` if you need detail data of file.
142
+ */
143
+ controllerRef?: Ref<UploadPictureControl | null>;
144
+ /**
145
+ * Invoked by input change event.
146
+ */
147
+ onChange?: ChangeEventHandler<HTMLInputElement>;
148
+ /**
149
+ * Fired after user selected files.
150
+ */
151
+ onUpload?: (files: File[]) => void;
152
+ /**
153
+ * Fired after user deletes file.
154
+ */
155
+ onDelete?: () => void;
156
+ }
157
+ /**
158
+ * The react component for `mezzanine` uploader.
159
+ */
160
+ declare const Uploader: import("react").ForwardRefExoticComponent<UploaderProps & import("react").RefAttributes<HTMLLabelElement>>;
161
+ export default Uploader;
@@ -0,0 +1,120 @@
1
+ 'use client';
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import { forwardRef, useId, useRef, useState, useMemo } from 'react';
4
+ import { uploaderClasses } from '@mezzanine-ui/core/upload';
5
+ import { UploadIcon } from '@mezzanine-ui/icons';
6
+ import Button from '../Button/Button.js';
7
+ import Typography from '../Typography/Typography.js';
8
+ import { composeRefs } from '../utils/composeRefs.js';
9
+ import Icon from '../Icon/Icon.js';
10
+ import cx from 'clsx';
11
+
12
+ /**
13
+ * The react component for `mezzanine` uploader.
14
+ */
15
+ const Uploader = forwardRef(function Uploader(props, ref) {
16
+ var _a, _b, _c;
17
+ const { accept, className, disabled = false, id, inputProps, inputRef: inputRefProp, isFillWidth = false, multiple = false, name, type, hints, label: labelConfig, icon: iconConfig, controllerRef: _controllerRef, onChange: onChangeProp, onUpload, onDelete: _onDelete, ...rest } = props;
18
+ const { name: nameFromInputProps, id: idFromInputProps, ...restInputProps } = inputProps || {};
19
+ // Generate unique id if not provided
20
+ const generatedId = useId();
21
+ const finalInputId = (_a = id !== null && id !== void 0 ? id : idFromInputProps) !== null && _a !== void 0 ? _a : generatedId;
22
+ const inputElementRef = useRef(null);
23
+ const [isDragging, setIsDragging] = useState(false);
24
+ const composedInputRef = useMemo(() => composeRefs([inputRefProp, inputElementRef]), [inputRefProp]);
25
+ const resolvedName = (_b = name !== null && name !== void 0 ? name : nameFromInputProps) !== null && _b !== void 0 ? _b : finalInputId;
26
+ const handleChange = (event) => {
27
+ if (onChangeProp) {
28
+ onChangeProp(event);
29
+ }
30
+ if (onUpload) {
31
+ const { files: fileList } = event.target;
32
+ if (fileList) {
33
+ const files = [];
34
+ for (let i = 0; i < fileList.length; i += 1) {
35
+ files.push(fileList[i]);
36
+ }
37
+ onUpload(files);
38
+ }
39
+ }
40
+ // Reset input value to allow selecting the same file again
41
+ event.currentTarget.value = '';
42
+ };
43
+ const handleDragOver = (event) => {
44
+ if (disabled || type === 'button') {
45
+ return;
46
+ }
47
+ event.preventDefault();
48
+ event.stopPropagation();
49
+ };
50
+ const handleDragEnter = (event) => {
51
+ if (disabled || type === 'button') {
52
+ return;
53
+ }
54
+ event.preventDefault();
55
+ event.stopPropagation();
56
+ setIsDragging(true);
57
+ };
58
+ const handleDragLeave = (event) => {
59
+ if (disabled || type === 'button') {
60
+ return;
61
+ }
62
+ // Only clear dragging state if leaving the label itself (not a child)
63
+ const rect = event.currentTarget.getBoundingClientRect();
64
+ const x = event.clientX;
65
+ const y = event.clientY;
66
+ if (x < rect.left ||
67
+ x > rect.right ||
68
+ y < rect.top ||
69
+ y > rect.bottom) {
70
+ setIsDragging(false);
71
+ }
72
+ };
73
+ const handleDrop = (event) => {
74
+ if (disabled || type === 'button') {
75
+ return;
76
+ }
77
+ event.preventDefault();
78
+ event.stopPropagation();
79
+ setIsDragging(false);
80
+ const { dataTransfer } = event;
81
+ if ((dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.files) && dataTransfer.files.length > 0) {
82
+ const files = [];
83
+ for (let i = 0; i < dataTransfer.files.length; i += 1) {
84
+ files.push(dataTransfer.files[i]);
85
+ }
86
+ if (onUpload) {
87
+ onUpload(files);
88
+ }
89
+ // Note: We cannot directly set input.files from drag & drop
90
+ // The onChange event will not be triggered for drag & drop
91
+ // If onChange is needed, it should be handled via onUpload callback
92
+ }
93
+ };
94
+ const uploadIcon = useMemo(() => {
95
+ var _a;
96
+ const icon = (_a = iconConfig === null || iconConfig === void 0 ? void 0 : iconConfig.upload) !== null && _a !== void 0 ? _a : UploadIcon;
97
+ return jsx(Icon, { className: uploaderClasses.uploadIcon, icon: icon });
98
+ }, [iconConfig]);
99
+ const uploadLabel = (labelConfig === null || labelConfig === void 0 ? void 0 : labelConfig.uploadLabel)
100
+ ? labelConfig === null || labelConfig === void 0 ? void 0 : labelConfig.uploadLabel
101
+ : isFillWidth
102
+ ? 'Drag the file here or'
103
+ : 'Upload';
104
+ const clickToUploadLabel = (_c = labelConfig === null || labelConfig === void 0 ? void 0 : labelConfig.clickToUpload) !== null && _c !== void 0 ? _c : 'Click to upload';
105
+ const handleClickToUpload = (event) => {
106
+ event.preventDefault();
107
+ event.stopPropagation();
108
+ if (!disabled && inputElementRef.current) {
109
+ inputElementRef.current.click();
110
+ }
111
+ };
112
+ return (jsx("label", { className: cx(uploaderClasses.host, type && uploaderClasses.type(type), type !== 'button' && isFillWidth && uploaderClasses.fillWidth, isDragging && uploaderClasses.dragging, type !== 'button' && disabled && uploaderClasses.disabled, className), onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, onDragOver: handleDragOver, onDrop: handleDrop, ref: ref, ...rest, children: jsxs(Fragment, { children: [type === 'base'
113
+ && isFillWidth
114
+ && jsxs("div", { className: uploaderClasses.uploadContent, children: [uploadIcon, jsxs(Typography, { className: uploaderClasses.uploadLabel, children: [uploadLabel && jsxs(Fragment, { children: [uploadLabel, ' '] }), jsx("span", { className: uploaderClasses.clickToUpload, children: clickToUploadLabel })] }), hints === null || hints === void 0 ? void 0 : hints.map((hint, index) => (jsx(Typography, { className: uploaderClasses.fillWidthHints, children: hint.label }, index)))] }), type === 'base'
115
+ && !isFillWidth
116
+ && jsxs("div", { className: uploaderClasses.uploadContent, children: [uploadIcon, jsx(Typography, { className: uploaderClasses.uploadLabel, children: uploadLabel })] }), type === 'button'
117
+ && (jsxs(Button, { disabled: disabled, onClick: handleClickToUpload, children: [uploadIcon, jsx(Typography, { children: uploadLabel })] })), jsx("input", { ...restInputProps, accept: accept, "aria-disabled": disabled, className: uploaderClasses.input, disabled: disabled, id: finalInputId, multiple: multiple, name: resolvedName, onChange: handleChange, ref: composedInputRef, type: "file" })] }) }));
118
+ });
119
+
120
+ export { Uploader as default };
package/Upload/index.d.ts CHANGED
@@ -1,6 +1,8 @@
1
- export type { UploadResultSize, UploadResultStatus, } from '@mezzanine-ui/core/upload';
2
- export { UploadButtonProps, default as UploadButton } from './UploadButton';
3
- export { UploadPictureControl, UploadPictureProps, default as UploadPicture, } from './UploadPicture';
4
- export { UploadPictureBlockProps, default as UploadPictureBlock, } from './UploadPictureBlock';
5
- export { UploadPictureWallControl, UploadPictureWallProps, default as UploadPictureWall, } from './UploadPictureWall';
6
- export { UploadResultProps, default as UploadResult } from './UploadResult';
1
+ export { default as Upload } from './Upload';
2
+ export type { UploadFile, UploadProps } from './Upload';
3
+ export { default as Uploader } from './Uploader';
4
+ export type { UploaderProps } from './Uploader';
5
+ export { default as UploadItem } from './UploadItem';
6
+ export type { UploadItemProps } from './UploadItem';
7
+ export { default as UploadPictureCard } from './UploadPictureCard';
8
+ export type { UploadPictureCardProps } from './UploadPictureCard';
package/Upload/index.js CHANGED
@@ -1,5 +1,4 @@
1
- export { default as UploadButton } from './UploadButton.js';
2
- export { default as UploadPicture } from './UploadPicture.js';
3
- export { default as UploadPictureBlock } from './UploadPictureBlock.js';
4
- export { default as UploadPictureWall } from './UploadPictureWall.js';
5
- export { default as UploadResult } from './UploadResult.js';
1
+ export { default as Upload } from './Upload.js';
2
+ export { default as Uploader } from './Uploader.js';
3
+ export { default as UploadItem } from './UploadItem.js';
4
+ export { default as UploadPictureCard } from './UploadPictureCard.js';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Resolves the file type from a File object or URL.
3
+ * Prefers file.type if available, otherwise infers from URL extension.
4
+ *
5
+ * @param file - The File object (optional)
6
+ * @param url - The URL string (optional)
7
+ * @returns The resolved MIME type string, or empty string if unable to determine
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * // From file object
12
+ * resolveFileType(file, undefined) // 'image/jpeg'
13
+ *
14
+ * // From URL
15
+ * resolveFileType(undefined, 'https://example.com/image.jpg') // 'image/jpeg'
16
+ *
17
+ * // Neither provided
18
+ * resolveFileType(undefined, undefined) // ''
19
+ * ```
20
+ */
21
+ export declare function resolveFileType(file?: File, url?: string): string;
22
+ /**
23
+ * Checks if a file is an image based on File object or URL.
24
+ *
25
+ * @param file - The File object (optional)
26
+ * @param url - The URL string (optional)
27
+ * @returns true if the file is an image, false otherwise
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * // From file object
32
+ * isImageFile(file, undefined) // true if file.type starts with 'image/'
33
+ *
34
+ * // From URL
35
+ * isImageFile(undefined, 'https://example.com/image.jpg') // true
36
+ *
37
+ * // Neither provided
38
+ * isImageFile(undefined, undefined) // false
39
+ * ```
40
+ */
41
+ export declare function isImageFile(file?: File, url?: string): boolean;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Supported image file extensions.
3
+ */
4
+ const IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'svg', 'bmp', 'ico'];
5
+ /**
6
+ * Resolves the file type from a File object or URL.
7
+ * Prefers file.type if available, otherwise infers from URL extension.
8
+ *
9
+ * @param file - The File object (optional)
10
+ * @param url - The URL string (optional)
11
+ * @returns The resolved MIME type string, or empty string if unable to determine
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // From file object
16
+ * resolveFileType(file, undefined) // 'image/jpeg'
17
+ *
18
+ * // From URL
19
+ * resolveFileType(undefined, 'https://example.com/image.jpg') // 'image/jpeg'
20
+ *
21
+ * // Neither provided
22
+ * resolveFileType(undefined, undefined) // ''
23
+ * ```
24
+ */
25
+ function resolveFileType(file, url) {
26
+ var _a;
27
+ // Prefer file.type if available
28
+ if (file === null || file === void 0 ? void 0 : file.type) {
29
+ return file.type;
30
+ }
31
+ // Infer from URL extension if URL is provided
32
+ if (url) {
33
+ const extension = (_a = url.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
34
+ if (extension && IMAGE_EXTENSIONS.includes(extension)) {
35
+ // Normalize jpg to jpeg
36
+ return `image/${extension === 'jpg' ? 'jpeg' : extension}`;
37
+ }
38
+ }
39
+ return '';
40
+ }
41
+ /**
42
+ * Checks if a file is an image based on File object or URL.
43
+ *
44
+ * @param file - The File object (optional)
45
+ * @param url - The URL string (optional)
46
+ * @returns true if the file is an image, false otherwise
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * // From file object
51
+ * isImageFile(file, undefined) // true if file.type starts with 'image/'
52
+ *
53
+ * // From URL
54
+ * isImageFile(undefined, 'https://example.com/image.jpg') // true
55
+ *
56
+ * // Neither provided
57
+ * isImageFile(undefined, undefined) // false
58
+ * ```
59
+ */
60
+ function isImageFile(file, url) {
61
+ const fileType = resolveFileType(file, url);
62
+ return fileType.startsWith('image/');
63
+ }
64
+
65
+ export { isImageFile, resolveFileType };
@@ -20,9 +20,23 @@ export interface InputCheckProps extends Omit<NativeElementPropsWithoutKeyAndRef
20
20
  * @default false
21
21
  */
22
22
  error?: boolean;
23
+ /**
24
+ * Whether the input check is focused.
25
+ * @default false
26
+ */
27
+ focused?: boolean;
28
+ /**
29
+ * Support text of input check.
30
+ */
31
+ hint?: string;
32
+ /**
33
+ * Whether the input check use segment style.
34
+ * @default false
35
+ */
36
+ segmentedStyle?: boolean;
23
37
  /**
24
38
  * The size of input check.
25
- * @default 'medium'
39
+ * @default 'main'
26
40
  */
27
41
  size?: InputCheckSize;
28
42
  }
@@ -7,12 +7,16 @@ import cx from 'clsx';
7
7
  * The react component for `mezzanine` input check.
8
8
  */
9
9
  const InputCheck = forwardRef(function InputCheck(props, ref) {
10
- const { children, className, control, disabled, error, htmlFor, size = 'medium', ...rest } = props;
10
+ const { children, className, control, disabled, error, focused, hint, htmlFor, segmentedStyle = false, size = 'main', ...rest } = props;
11
11
  return (jsxs("label", { ...rest, ref: ref, className: cx(inputCheckClasses.host, inputCheckClasses.size(size), {
12
12
  [inputCheckClasses.disabled]: disabled,
13
13
  [inputCheckClasses.error]: error,
14
+ [inputCheckClasses.segmented]: segmentedStyle,
14
15
  [inputCheckClasses.withLabel]: !!children,
15
- }, className), htmlFor: htmlFor, children: [jsx("span", { className: inputCheckClasses.control, children: control }), children && jsx("span", { className: inputCheckClasses.label, children: children })] }));
16
+ }, className), htmlFor: htmlFor, children: [jsx("span", { className: cx(inputCheckClasses.control, {
17
+ [inputCheckClasses.controlFocused]: focused,
18
+ [inputCheckClasses.controlSegmented]: segmentedStyle,
19
+ }), children: control }), children && (jsxs("span", { className: inputCheckClasses.label, children: [children, hint && jsx("span", { className: inputCheckClasses.hint, children: hint })] }))] }));
16
20
  });
17
21
 
18
22
  export { InputCheck as default };