@mezzanine-ui/react 0.15.3 → 1.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/Accordion/Accordion.js +1 -2
  2. package/Accordion/AccordionControlContext.js +1 -0
  3. package/Accordion/AccordionDetails.js +2 -2
  4. package/Accordion/AccordionSummary.d.ts +1 -1
  5. package/Accordion/AccordionSummary.js +11 -12
  6. package/Accordion/index.d.ts +6 -3
  7. package/Alert/Alert.js +1 -2
  8. package/Alert/index.d.ts +3 -2
  9. package/AlertBanner/AlertBanner.d.ts +93 -0
  10. package/AlertBanner/AlertBanner.js +154 -0
  11. package/AlertBanner/index.d.ts +2 -0
  12. package/AlertBanner/index.js +1 -0
  13. package/Anchor/Anchor.js +2 -3
  14. package/Anchor/index.d.ts +2 -1
  15. package/AppBar/AppBar.js +1 -2
  16. package/AppBar/AppBarBrand.js +1 -2
  17. package/AppBar/AppBarMain.js +1 -2
  18. package/AppBar/AppBarSupport.js +1 -2
  19. package/AppBar/index.d.ts +8 -4
  20. package/{Overlay/Overlay.d.ts → Backdrop/Backdrop.d.ts} +12 -16
  21. package/Backdrop/Backdrop.js +40 -0
  22. package/Backdrop/index.d.ts +2 -0
  23. package/Backdrop/index.js +1 -0
  24. package/Badge/Badge.d.ts +20 -14
  25. package/Badge/Badge.js +15 -18
  26. package/Badge/BadgeContainer.d.ts +1 -1
  27. package/Badge/BadgeContainer.js +2 -3
  28. package/Badge/index.d.ts +3 -2
  29. package/Badge/typings.d.ts +48 -0
  30. package/Breadcrumb/Breadcrumb.d.ts +6 -0
  31. package/Breadcrumb/Breadcrumb.js +25 -0
  32. package/Breadcrumb/BreadcrumbItem.d.ts +4 -0
  33. package/Breadcrumb/BreadcrumbItem.js +45 -0
  34. package/Breadcrumb/index.d.ts +2 -0
  35. package/Breadcrumb/index.js +1 -0
  36. package/Breadcrumb/typings.d.ts +70 -0
  37. package/Button/Button.js +24 -19
  38. package/Button/ButtonGroup.d.ts +6 -28
  39. package/Button/ButtonGroup.js +8 -18
  40. package/Button/index.d.ts +6 -12
  41. package/Button/index.js +2 -3
  42. package/Button/typings.d.ts +11 -26
  43. package/Calendar/Calendar.d.ts +31 -2
  44. package/Calendar/Calendar.js +75 -21
  45. package/Calendar/CalendarCell.d.ts +4 -0
  46. package/Calendar/CalendarCell.js +3 -3
  47. package/Calendar/CalendarConfigProviderDayjs.d.ts +21 -0
  48. package/Calendar/CalendarConfigProviderDayjs.js +15 -0
  49. package/Calendar/CalendarConfigProviderLuxon.d.ts +21 -0
  50. package/Calendar/CalendarConfigProviderLuxon.js +15 -0
  51. package/Calendar/CalendarConfigProviderMoment.d.ts +21 -0
  52. package/Calendar/CalendarConfigProviderMoment.js +15 -0
  53. package/Calendar/CalendarContext.d.ts +14 -7
  54. package/Calendar/CalendarContext.js +8 -13
  55. package/Calendar/CalendarControls.d.ts +16 -0
  56. package/Calendar/CalendarControls.js +3 -7
  57. package/Calendar/CalendarDayOfWeek.js +4 -3
  58. package/Calendar/CalendarDays.d.ts +9 -1
  59. package/Calendar/CalendarDays.js +63 -38
  60. package/Calendar/CalendarFooterActions.d.ts +13 -0
  61. package/Calendar/CalendarFooterActions.js +14 -0
  62. package/Calendar/CalendarFooterControl.d.ts +16 -0
  63. package/Calendar/CalendarFooterControl.js +14 -0
  64. package/Calendar/CalendarHalfYears.d.ts +39 -0
  65. package/Calendar/CalendarHalfYears.js +62 -0
  66. package/Calendar/CalendarMonths.js +17 -5
  67. package/Calendar/CalendarQuarters.d.ts +37 -0
  68. package/Calendar/CalendarQuarters.js +64 -0
  69. package/Calendar/CalendarQuickSelect.d.ts +21 -0
  70. package/Calendar/CalendarQuickSelect.js +15 -0
  71. package/Calendar/CalendarWeeks.d.ts +1 -1
  72. package/Calendar/CalendarWeeks.js +89 -44
  73. package/Calendar/CalendarYears.js +14 -4
  74. package/Calendar/RangeCalendar.d.ts +59 -0
  75. package/Calendar/RangeCalendar.js +232 -0
  76. package/Calendar/index.d.ts +33 -10
  77. package/Calendar/index.js +7 -0
  78. package/Calendar/useCalendarControlModifiers.d.ts +4 -4
  79. package/Calendar/useCalendarControlModifiers.js +40 -8
  80. package/Calendar/useCalendarControls.d.ts +2 -0
  81. package/Calendar/useCalendarControls.js +19 -2
  82. package/Calendar/useCalendarModeStack.js +1 -0
  83. package/Calendar/useRangeCalendarControls.d.ts +18 -0
  84. package/Calendar/useRangeCalendarControls.js +115 -0
  85. package/Card/Card.js +1 -2
  86. package/Card/CardActions.js +2 -3
  87. package/Card/index.d.ts +4 -2
  88. package/Checkbox/CheckAll.d.ts +16 -6
  89. package/Checkbox/CheckAll.js +41 -28
  90. package/Checkbox/Checkbox.d.ts +100 -22
  91. package/Checkbox/Checkbox.js +74 -18
  92. package/Checkbox/CheckboxGroup.d.ts +100 -18
  93. package/Checkbox/CheckboxGroup.js +169 -25
  94. package/Checkbox/CheckboxGroupContext.d.ts +0 -2
  95. package/Checkbox/CheckboxGroupContext.js +1 -0
  96. package/Checkbox/index.d.ts +16 -4
  97. package/Checkbox/index.js +6 -2
  98. package/Checkbox/typings.d.ts +37 -0
  99. package/ClearActions/ClearActions.d.ts +41 -0
  100. package/ClearActions/ClearActions.js +23 -0
  101. package/ClearActions/index.d.ts +3 -0
  102. package/ClearActions/index.js +5 -0
  103. package/ConfirmActions/ConfirmActions.d.ts +2 -1
  104. package/ConfirmActions/ConfirmActions.js +1 -2
  105. package/ConfirmActions/index.d.ts +2 -1
  106. package/DatePicker/DatePicker.d.ts +12 -1
  107. package/DatePicker/DatePicker.js +42 -11
  108. package/DatePicker/DatePickerCalendar.d.ts +3 -6
  109. package/DatePicker/DatePickerCalendar.js +38 -39
  110. package/DatePicker/index.d.ts +4 -2
  111. package/DateRangePicker/DateRangePicker.d.ts +18 -2
  112. package/DateRangePicker/DateRangePicker.js +144 -102
  113. package/DateRangePicker/DateRangePickerCalendar.d.ts +13 -9
  114. package/DateRangePicker/DateRangePickerCalendar.js +8 -96
  115. package/DateRangePicker/index.d.ts +6 -3
  116. package/DateRangePicker/useDateRangeCalendarControls.js +11 -6
  117. package/DateRangePicker/useDateRangePickerValue.d.ts +38 -15
  118. package/DateRangePicker/useDateRangePickerValue.js +142 -63
  119. package/DateTimePicker/DateTimePicker.d.ts +31 -10
  120. package/DateTimePicker/DateTimePicker.js +180 -96
  121. package/DateTimePicker/index.d.ts +2 -2
  122. package/DateTimePicker/index.js +0 -1
  123. package/Drawer/Drawer.js +3 -4
  124. package/Drawer/index.d.ts +2 -1
  125. package/Dropdown/Dropdown.js +13 -24
  126. package/Dropdown/index.d.ts +2 -1
  127. package/Empty/Empty.d.ts +1 -16
  128. package/Empty/Empty.js +37 -9
  129. package/Empty/icons/EmptyMainInitialDataIcon.d.ts +4 -0
  130. package/Empty/icons/EmptyMainInitialDataIcon.js +9 -0
  131. package/Empty/icons/EmptyMainResultIcon.d.ts +4 -0
  132. package/Empty/icons/EmptyMainResultIcon.js +9 -0
  133. package/Empty/icons/EmptyMainSystemIcon.d.ts +4 -0
  134. package/Empty/icons/EmptyMainSystemIcon.js +9 -0
  135. package/Empty/index.d.ts +2 -1
  136. package/Empty/typings.d.ts +52 -0
  137. package/Form/FormControlContext.js +1 -0
  138. package/Form/FormField.js +1 -2
  139. package/Form/FormHintText.d.ts +18 -0
  140. package/Form/FormHintText.js +17 -0
  141. package/Form/FormLabel.js +2 -2
  142. package/Form/index.d.ts +9 -5
  143. package/Form/index.js +1 -1
  144. package/Form/useAutoCompleteValueControl.js +2 -0
  145. package/Form/useCheckboxControlValue.js +0 -1
  146. package/Form/useInputWithClearControlValue.d.ts +1 -1
  147. package/Form/useInputWithTagsModeValue.d.ts +1 -1
  148. package/Form/useSelectValueControl.js +2 -0
  149. package/Icon/Icon.js +1 -2
  150. package/InlineMessage/InlineMessage.d.ts +33 -0
  151. package/InlineMessage/InlineMessage.js +42 -0
  152. package/InlineMessage/InlineMessageGroup.d.ts +24 -0
  153. package/InlineMessage/InlineMessageGroup.js +21 -0
  154. package/InlineMessage/index.d.ts +4 -0
  155. package/InlineMessage/index.js +2 -0
  156. package/Input/ActionButton/ActionButton.d.ts +26 -0
  157. package/Input/ActionButton/ActionButton.js +14 -0
  158. package/Input/ActionButton/index.d.ts +2 -0
  159. package/Input/ActionButton/index.js +1 -0
  160. package/Input/Input.d.ts +147 -42
  161. package/Input/Input.js +196 -31
  162. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.d.ts +31 -0
  163. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +18 -0
  164. package/Input/PasswordStrengthIndicator/index.d.ts +2 -0
  165. package/Input/PasswordStrengthIndicator/index.js +1 -0
  166. package/Input/SelectButton/SelectButton.d.ts +20 -0
  167. package/Input/SelectButton/SelectButton.js +21 -0
  168. package/Input/SelectButton/index.d.ts +2 -0
  169. package/Input/SelectButton/index.js +1 -0
  170. package/Input/SpinnerButton/SpinnerButton.d.ts +19 -0
  171. package/Input/SpinnerButton/SpinnerButton.js +14 -0
  172. package/Input/SpinnerButton/index.d.ts +2 -0
  173. package/Input/SpinnerButton/index.js +1 -0
  174. package/Input/index.d.ts +3 -2
  175. package/Menu/Menu.js +2 -2
  176. package/Menu/MenuDivider.js +1 -2
  177. package/Menu/MenuItem.js +1 -2
  178. package/Menu/MenuItemGroup.js +1 -2
  179. package/Menu/index.d.ts +8 -4
  180. package/Message/Message.d.ts +6 -4
  181. package/Message/Message.js +87 -11
  182. package/Message/MessageTimerController.d.ts +14 -0
  183. package/Message/MessageTimerController.js +27 -0
  184. package/Message/index.d.ts +3 -2
  185. package/Modal/Modal.js +3 -4
  186. package/Modal/ModalActions.js +2 -2
  187. package/Modal/ModalBody.js +1 -2
  188. package/Modal/ModalControl.js +1 -0
  189. package/Modal/ModalFooter.js +1 -2
  190. package/Modal/ModalHeader.js +3 -3
  191. package/Modal/index.d.ts +10 -5
  192. package/Modal/useModalContainer.d.ts +1 -1
  193. package/Modal/useModalContainer.js +2 -4
  194. package/Navigation/Navigation.js +38 -36
  195. package/Navigation/NavigationContext.js +1 -0
  196. package/Navigation/NavigationItem.js +2 -2
  197. package/Navigation/NavigationSubMenu.js +17 -28
  198. package/Navigation/index.d.ts +8 -4
  199. package/Notification/Notification.js +1 -3
  200. package/Notification/index.d.ts +3 -2
  201. package/Notifier/NotifierManager.d.ts +16 -3
  202. package/Notifier/NotifierManager.js +60 -18
  203. package/Notifier/createNotifier.d.ts +9 -0
  204. package/Notifier/createNotifier.js +3 -2
  205. package/Notifier/typings.d.ts +3 -1
  206. package/OverflowTooltip/OverflowCounterTag.d.ts +12 -0
  207. package/OverflowTooltip/OverflowCounterTag.js +48 -0
  208. package/OverflowTooltip/OverflowTooltip.d.ts +34 -0
  209. package/OverflowTooltip/OverflowTooltip.js +53 -0
  210. package/OverflowTooltip/index.d.ts +2 -0
  211. package/OverflowTooltip/index.js +2 -0
  212. package/PageFooter/PageFooter.d.ts +73 -8
  213. package/PageFooter/PageFooter.js +35 -5
  214. package/PageFooter/index.d.ts +2 -1
  215. package/PageHeader/PageHeader.d.ts +36 -0
  216. package/PageHeader/PageHeader.js +65 -0
  217. package/PageHeader/index.d.ts +2 -0
  218. package/PageHeader/index.js +1 -0
  219. package/PageToolbar/PageToolbar.d.ts +67 -0
  220. package/PageToolbar/PageToolbar.js +114 -0
  221. package/PageToolbar/index.d.ts +2 -0
  222. package/PageToolbar/index.js +1 -0
  223. package/Pagination/Pagination.d.ts +23 -29
  224. package/Pagination/Pagination.js +4 -6
  225. package/Pagination/PaginationItem.d.ts +1 -1
  226. package/Pagination/PaginationItem.js +7 -5
  227. package/Pagination/PaginationJumper.d.ts +7 -9
  228. package/Pagination/PaginationJumper.js +4 -7
  229. package/Pagination/PaginationPageSize.d.ts +8 -11
  230. package/Pagination/PaginationPageSize.js +6 -6
  231. package/Pagination/index.d.ts +8 -4
  232. package/Pagination/usePagination.d.ts +3 -1
  233. package/Pagination/usePagination.js +30 -21
  234. package/Picker/FormattedInput.d.ts +17 -0
  235. package/Picker/FormattedInput.js +74 -0
  236. package/Picker/MaskFormat.d.ts +39 -0
  237. package/Picker/MaskFormat.js +94 -0
  238. package/Picker/PickerTrigger.d.ts +14 -4
  239. package/Picker/PickerTrigger.js +18 -4
  240. package/Picker/PickerTriggerWithSeparator.d.ts +124 -0
  241. package/Picker/PickerTriggerWithSeparator.js +80 -0
  242. package/Picker/RangePickerTrigger.d.ts +57 -6
  243. package/Picker/RangePickerTrigger.js +66 -9
  244. package/Picker/formatUtils.d.ts +34 -0
  245. package/Picker/formatUtils.js +124 -0
  246. package/Picker/index.d.ts +17 -6
  247. package/Picker/index.js +4 -1
  248. package/Picker/useDateInputFormatter.d.ts +52 -0
  249. package/Picker/useDateInputFormatter.js +382 -0
  250. package/Picker/usePickerDocumentEventClose.d.ts +3 -3
  251. package/Picker/usePickerValue.d.ts +2 -3
  252. package/Picker/usePickerValue.js +8 -13
  253. package/Picker/useTabKeyClose.d.ts +1 -1
  254. package/Popconfirm/Popconfirm.js +3 -4
  255. package/Popconfirm/index.d.ts +2 -1
  256. package/Popover/Popover.js +5 -10
  257. package/Popover/index.d.ts +2 -1
  258. package/Popper/Popper.d.ts +15 -10
  259. package/Popper/Popper.js +89 -19
  260. package/Popper/index.d.ts +2 -1
  261. package/Portal/Portal.d.ts +13 -5
  262. package/Portal/Portal.js +26 -12
  263. package/Portal/index.d.ts +4 -1
  264. package/Portal/index.js +1 -0
  265. package/Portal/portalRegistry.d.ts +17 -0
  266. package/Portal/portalRegistry.js +92 -0
  267. package/Progress/Progress.d.ts +23 -30
  268. package/Progress/Progress.js +72 -23
  269. package/Progress/index.d.ts +3 -2
  270. package/Provider/ConfigProvider.d.ts +2 -1
  271. package/Provider/ConfigProvider.js +1 -0
  272. package/Provider/context.js +1 -0
  273. package/Radio/Radio.d.ts +1 -1
  274. package/Radio/Radio.js +3 -3
  275. package/Radio/RadioGroup.d.ts +1 -1
  276. package/Radio/RadioGroup.js +2 -3
  277. package/Radio/RadioGroupContext.js +1 -0
  278. package/Radio/index.d.ts +4 -2
  279. package/ResultState/ResultState.d.ts +52 -0
  280. package/ResultState/ResultState.js +24 -0
  281. package/ResultState/index.d.ts +2 -0
  282. package/ResultState/index.js +1 -0
  283. package/Select/AutoComplete.d.ts +3 -3
  284. package/Select/AutoComplete.js +6 -13
  285. package/Select/Option.js +2 -2
  286. package/Select/Select.d.ts +1 -1
  287. package/Select/Select.js +3 -3
  288. package/Select/SelectControlContext.js +1 -0
  289. package/Select/SelectTrigger.d.ts +1 -87
  290. package/Select/SelectTrigger.js +27 -23
  291. package/Select/SelectTriggerTags.d.ts +1 -1
  292. package/Select/SelectTriggerTags.js +48 -20
  293. package/Select/TreeSelect.d.ts +1 -1
  294. package/Select/TreeSelect.js +3 -3
  295. package/Select/index.d.ts +14 -7
  296. package/Select/typings.d.ts +99 -0
  297. package/Select/useSelectTriggerTags.d.ts +15 -8
  298. package/Select/useSelectTriggerTags.js +79 -43
  299. package/Selection/Selection.d.ts +98 -0
  300. package/Selection/Selection.js +46 -0
  301. package/Selection/index.d.ts +12 -0
  302. package/Selection/index.js +5 -0
  303. package/Skeleton/Skeleton.d.ts +10 -3
  304. package/Skeleton/Skeleton.js +13 -6
  305. package/Skeleton/index.d.ts +2 -1
  306. package/Slider/Slider.d.ts +44 -7
  307. package/Slider/Slider.js +18 -15
  308. package/Slider/index.d.ts +5 -3
  309. package/Slider/useSlider.d.ts +1 -1
  310. package/Slider/useSlider.js +1 -1
  311. package/Spin/Spin.d.ts +39 -0
  312. package/{Loading/Loading.js → Spin/Spin.js} +9 -10
  313. package/Spin/index.d.ts +2 -0
  314. package/Spin/index.js +1 -0
  315. package/Stepper/Step.d.ts +1 -35
  316. package/Stepper/Step.js +44 -10
  317. package/Stepper/Stepper.d.ts +1 -14
  318. package/Stepper/Stepper.js +50 -17
  319. package/Stepper/index.d.ts +5 -2
  320. package/Stepper/index.js +1 -0
  321. package/Stepper/typings.d.ts +77 -0
  322. package/Stepper/useStepDistance.d.ts +10 -0
  323. package/Stepper/useStepDistance.js +81 -0
  324. package/Stepper/useStepper.d.ts +21 -0
  325. package/Stepper/useStepper.js +26 -0
  326. package/Table/Table.d.ts +1 -1
  327. package/Table/Table.js +3 -4
  328. package/Table/TableBody.js +3 -2
  329. package/Table/TableBodyRow.js +1 -0
  330. package/Table/TableCell.js +1 -2
  331. package/Table/TableContext.js +1 -0
  332. package/Table/TableExpandedTable.js +1 -0
  333. package/Table/TableHeader.js +1 -0
  334. package/Table/draggable/useTableDraggable.d.ts +1 -1
  335. package/Table/editable/TableEditRenderWrapper.js +1 -0
  336. package/Table/expandable/TableExpandable.js +1 -1
  337. package/Table/index.d.ts +7 -4
  338. package/Table/pagination/TablePagination.d.ts +1 -1
  339. package/Table/pagination/TablePagination.js +1 -0
  340. package/Table/pagination/useTablePagination.d.ts +1 -1
  341. package/Table/pagination/useTablePagination.js +1 -0
  342. package/Table/refresh/TableRefresh.js +4 -3
  343. package/Table/rowSelection/TableRowSelection.js +3 -2
  344. package/Table/sorting/TableSortingIcon.js +2 -1
  345. package/Table/sorting/useTableSorting.js +1 -0
  346. package/Table/useTableFetchMore.js +1 -1
  347. package/Table/useTableScroll.d.ts +44 -14
  348. package/Table/useTableScroll.js +10 -8
  349. package/Tabs/Tab.js +1 -2
  350. package/Tabs/TabPane.js +2 -2
  351. package/Tabs/Tabs.js +10 -6
  352. package/Tabs/index.d.ts +6 -3
  353. package/Tabs/useTabsOverflow.d.ts +1 -1
  354. package/Tabs/useTabsOverflow.js +4 -3
  355. package/Tag/Tag.d.ts +2 -25
  356. package/Tag/Tag.js +24 -15
  357. package/Tag/TagGroup.d.ts +12 -0
  358. package/Tag/TagGroup.js +41 -0
  359. package/Tag/index.d.ts +2 -1
  360. package/Tag/typings.d.ts +78 -0
  361. package/TextField/TextField.d.ts +78 -20
  362. package/TextField/TextField.js +59 -24
  363. package/TextField/index.d.ts +2 -1
  364. package/Textarea/Textarea.d.ts +19 -51
  365. package/Textarea/Textarea.js +14 -21
  366. package/Textarea/index.d.ts +2 -2
  367. package/TimePanel/TimePanel.d.ts +1 -22
  368. package/TimePanel/TimePanel.js +32 -28
  369. package/TimePanel/TimePanelAction.d.ts +2 -8
  370. package/TimePanel/TimePanelAction.js +3 -4
  371. package/TimePanel/TimePanelColumn.d.ts +0 -13
  372. package/TimePanel/TimePanelColumn.js +10 -13
  373. package/TimePanel/index.d.ts +6 -3
  374. package/TimePicker/TimePicker.d.ts +10 -1
  375. package/TimePicker/TimePicker.js +87 -37
  376. package/TimePicker/TimePickerPanel.d.ts +1 -2
  377. package/TimePicker/TimePickerPanel.js +3 -4
  378. package/TimePicker/index.d.ts +4 -2
  379. package/Toggle/Toggle.d.ts +46 -0
  380. package/Toggle/Toggle.js +29 -0
  381. package/Toggle/index.d.ts +3 -0
  382. package/Toggle/index.js +1 -0
  383. package/Tooltip/Tooltip.d.ts +14 -3
  384. package/Tooltip/Tooltip.js +53 -18
  385. package/Tooltip/index.d.ts +2 -1
  386. package/Tooltip/useDelayMouseEnterLeave.d.ts +1 -2
  387. package/Tooltip/useDelayMouseEnterLeave.js +10 -13
  388. package/Transition/Collapse.d.ts +2 -0
  389. package/Transition/Collapse.js +7 -12
  390. package/Transition/Fade.js +5 -6
  391. package/Transition/Rotate.d.ts +42 -0
  392. package/Transition/Rotate.js +30 -0
  393. package/Transition/Scale.d.ts +13 -0
  394. package/Transition/{Grow.js → Scale.js} +19 -17
  395. package/Transition/Slide.d.ts +7 -0
  396. package/Transition/{Zoom.js → Slide.js} +14 -13
  397. package/Transition/SlideFade.d.ts +3 -0
  398. package/Transition/SlideFade.js +6 -6
  399. package/Transition/Transition.d.ts +3 -3
  400. package/Transition/Translate.d.ts +14 -0
  401. package/Transition/Translate.js +94 -0
  402. package/Transition/index.d.ts +16 -6
  403. package/Transition/index.js +4 -2
  404. package/Transition/useAutoTransitionDuration.d.ts +1 -1
  405. package/Transition/useAutoTransitionDuration.js +3 -3
  406. package/Transition/useSetNodeTransition.js +0 -2
  407. package/Tree/Tree.js +1 -2
  408. package/Tree/TreeNode.js +8 -8
  409. package/Tree/TreeNodeList.js +1 -2
  410. package/Tree/index.d.ts +10 -5
  411. package/Tree/typings.d.ts +2 -2
  412. package/Typography/Typography.d.ts +6 -9
  413. package/Typography/Typography.js +7 -9
  414. package/Typography/index.d.ts +4 -7
  415. package/Upload/Upload.d.ts +175 -0
  416. package/Upload/Upload.js +279 -0
  417. package/Upload/UploadItem.d.ts +82 -0
  418. package/Upload/UploadItem.js +118 -0
  419. package/Upload/UploadPictureCard.d.ts +110 -0
  420. package/Upload/UploadPictureCard.js +101 -0
  421. package/Upload/Uploader.d.ts +161 -0
  422. package/Upload/Uploader.js +120 -0
  423. package/Upload/index.d.ts +8 -6
  424. package/Upload/index.js +4 -5
  425. package/Upload/upload-utils.d.ts +41 -0
  426. package/Upload/upload-utils.js +65 -0
  427. package/_internal/InputCheck/InputCheck.js +1 -2
  428. package/_internal/InputCheck/InputCheckGroup.js +1 -2
  429. package/_internal/InputCheck/index.d.ts +4 -2
  430. package/_internal/InputTriggerPopper/InputTriggerPopper.js +16 -27
  431. package/_internal/InputTriggerPopper/index.d.ts +2 -1
  432. package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +2 -2
  433. package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +5 -29
  434. package/_internal/SlideFadeOverlay/index.d.ts +2 -1
  435. package/_internal/SlideFadeOverlay/useTopStack.js +1 -0
  436. package/dayjs.d.ts +21 -0
  437. package/dayjs.js +2 -0
  438. package/hooks/useClickAway.d.ts +1 -1
  439. package/hooks/useComposeRefs.js +1 -1
  440. package/hooks/useLastCallback.js +3 -1
  441. package/hooks/useScrollLock.d.ts +28 -0
  442. package/hooks/useScrollLock.js +134 -0
  443. package/index.d.ts +126 -58
  444. package/index.js +103 -90
  445. package/luxon.d.ts +21 -0
  446. package/luxon.js +2 -0
  447. package/moment.d.ts +21 -0
  448. package/moment.js +2 -0
  449. package/package.json +16 -20
  450. package/utils/composeRefs.js +0 -1
  451. package/utils/get-css-variable-value.d.ts +1 -0
  452. package/utils/get-css-variable-value.js +9 -0
  453. package/utils/jsx-types.d.ts +1 -1
  454. package/Button/IconButton.d.ts +0 -21
  455. package/Button/IconButton.js +0 -13
  456. package/DateTimePicker/DateTimePickerPanel.d.ts +0 -28
  457. package/DateTimePicker/DateTimePickerPanel.js +0 -50
  458. package/Form/FormMessage.d.ts +0 -7
  459. package/Form/FormMessage.js +0 -19
  460. package/Form/useInputWithTagsModeValue.js +0 -86
  461. package/Loading/Loading.d.ts +0 -33
  462. package/Loading/index.d.ts +0 -1
  463. package/Loading/index.js +0 -1
  464. package/Overlay/Overlay.js +0 -32
  465. package/Overlay/index.d.ts +0 -1
  466. package/Overlay/index.js +0 -1
  467. package/Picker/useRangePickerValue.d.ts +0 -23
  468. package/Picker/useRangePickerValue.js +0 -99
  469. package/Switch/Switch.d.ts +0 -43
  470. package/Switch/Switch.js +0 -29
  471. package/Switch/index.d.ts +0 -2
  472. package/Switch/index.js +0 -1
  473. package/Transition/Grow.d.ts +0 -12
  474. package/Transition/Zoom.d.ts +0 -7
  475. package/Upload/UploadButton.d.ts +0 -9
  476. package/Upload/UploadButton.js +0 -24
  477. package/Upload/UploadInput.d.ts +0 -20
  478. package/Upload/UploadInput.js +0 -24
  479. package/Upload/UploadPicture.d.ts +0 -49
  480. package/Upload/UploadPicture.js +0 -52
  481. package/Upload/UploadPictureBlock.d.ts +0 -20
  482. package/Upload/UploadPictureBlock.js +0 -82
  483. package/Upload/UploadPictureWall.d.ts +0 -81
  484. package/Upload/UploadPictureWall.js +0 -169
  485. package/Upload/UploadPictureWallItem.d.ts +0 -15
  486. package/Upload/UploadPictureWallItem.js +0 -18
  487. package/Upload/UploadResult.d.ts +0 -35
  488. package/Upload/UploadResult.js +0 -30
  489. package/utils/scroll-lock.d.ts +0 -2
  490. package/utils/scroll-lock.js +0 -24
@@ -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 };
@@ -14,6 +14,5 @@ const InputCheck = forwardRef(function InputCheck(props, ref) {
14
14
  [inputCheckClasses.withLabel]: !!children,
15
15
  }, className), htmlFor: htmlFor, children: [jsx("span", { className: inputCheckClasses.control, children: control }), children && jsx("span", { className: inputCheckClasses.label, children: children })] }));
16
16
  });
17
- var InputCheck$1 = InputCheck;
18
17
 
19
- export { InputCheck$1 as default };
18
+ export { InputCheck as default };
@@ -10,6 +10,5 @@ const InputCheckGroup = forwardRef(function InputCheckGroup(props, ref) {
10
10
  const { children, className, orientation = 'horizontal', ...rest } = props;
11
11
  return (jsx("div", { ...rest, ref: ref, "aria-orientation": orientation, className: cx(inputCheckGroupClasses.host, inputCheckGroupClasses.orientation(orientation), className), children: children }));
12
12
  });
13
- var InputCheckGroup$1 = InputCheckGroup;
14
13
 
15
- export { InputCheckGroup$1 as default };
14
+ export { InputCheckGroup as default };
@@ -1,3 +1,5 @@
1
1
  export type { InputCheckSize, InputCheckGroupOrientation, } from '@mezzanine-ui/core/_internal/input-check';
2
- export { InputCheckProps, default } from './InputCheck';
3
- export { InputCheckGroupProps, default as InputCheckGroup, } from './InputCheckGroup';
2
+ export { default } from './InputCheck';
3
+ export type { InputCheckProps } from './InputCheck';
4
+ export { default as InputCheckGroup } from './InputCheckGroup';
5
+ export type { InputCheckGroupProps } from './InputCheckGroup';
@@ -1,47 +1,36 @@
1
1
  import { jsx } from 'react/jsx-runtime';
2
2
  import { inputTriggerPopperClasses } from '@mezzanine-ui/core/_internal/input-trigger-popper';
3
+ import { offset, size } from '@floating-ui/react-dom';
3
4
  import { forwardRef } from 'react';
4
5
  import Fade from '../../Transition/Fade.js';
5
6
  import Popper from '../../Popper/Popper.js';
6
7
  import cx from 'clsx';
7
8
 
9
+ // Middleware to make the popper have the same min-width as the reference element
10
+ const sameWidthMiddleware = size({
11
+ apply({ rects, elements }) {
12
+ Object.assign(elements.floating.style, {
13
+ minWidth: `${rects.reference.width}px`,
14
+ });
15
+ },
16
+ });
8
17
  /**
9
18
  * The react component for `mezzanine` input popper.
10
19
  */
11
20
  const InputTriggerPopper = forwardRef(function InputTriggerPopper(props, ref) {
12
21
  const { anchor, children, className, fadeProps, open, options, sameWidth, ...restPopperProps } = props;
13
- const { modifiers = [], ...restPopperOptions } = options || {};
14
- const sameWidthModifier = {
15
- name: 'sameWidth',
16
- enabled: true,
17
- phase: 'beforeWrite',
18
- requires: ['computeStyles'],
19
- fn: ({ state }) => {
20
- const reassignState = state;
21
- reassignState.styles.popper.minWidth = `${state.rects.reference.width}px`;
22
- },
23
- effect: ({ state }) => {
24
- const reassignState = state;
25
- reassignState.elements.popper.style.minWidth = `${state.elements.reference.getBoundingClientRect().width}px`;
26
- },
27
- };
28
- return (jsx(Fade, { ...fadeProps, in: open, ref: ref, children: jsx(Popper, { ...restPopperProps, open: true, anchor: anchor, className: cx(inputTriggerPopperClasses.host, className),
22
+ const { middleware = [], ...restPopperOptions } = options || {};
23
+ return (jsx(Fade, { ...fadeProps, in: open, ref: ref, children: jsx(Popper, { ...restPopperProps, open: true, anchor: anchor, className: cx(inputTriggerPopperClasses.host, className), disablePortal: true,
29
24
  /** Prevent event bubble (Because popper may use portal, then click away function would be buggy) */
30
25
  onClick: (e) => e.stopPropagation(), onTouchStart: (e) => e.stopPropagation(), onTouchMove: (e) => e.stopPropagation(), onTouchEnd: (e) => e.stopPropagation(), options: {
31
26
  placement: 'bottom-start',
32
27
  ...restPopperOptions,
33
- modifiers: [
34
- {
35
- name: 'offset',
36
- options: {
37
- offset: [0, 4],
38
- },
39
- },
40
- ...(sameWidth ? [sameWidthModifier] : []),
41
- ...modifiers,
28
+ middleware: [
29
+ offset({ mainAxis: 4 }),
30
+ ...(sameWidth ? [sameWidthMiddleware] : []),
31
+ ...middleware,
42
32
  ],
43
33
  }, children: children }) }));
44
34
  });
45
- var InputTriggerPopper$1 = InputTriggerPopper;
46
35
 
47
- export { InputTriggerPopper$1 as default };
36
+ export { InputTriggerPopper as default };
@@ -1 +1,2 @@
1
- export { InputTriggerPopperProps, default } from './InputTriggerPopper';
1
+ export { default } from './InputTriggerPopper';
2
+ export type { InputTriggerPopperProps } from './InputTriggerPopper';
@@ -1,7 +1,7 @@
1
1
  import { NativeElementPropsWithoutKeyAndRef } from '../../utils/jsx-types';
2
- import { OverlayProps } from '../../Overlay';
2
+ import { BackdropProps } from '../../Backdrop';
3
3
  import { SlideFadeProps, SlideFadeDirection } from '../../Transition';
4
- export interface SlideFadeOverlayProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'children'>, Pick<OverlayProps, 'container' | 'disableCloseOnBackdropClick' | 'disablePortal' | 'invisibleBackdrop' | 'hideBackdrop' | 'onBackdropClick' | 'onClose' | 'open'>, Pick<SlideFadeProps, 'children'> {
4
+ export interface SlideFadeOverlayProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'children'>, Pick<BackdropProps, 'container' | 'disableCloseOnBackdropClick' | 'disablePortal' | 'onBackdropClick' | 'onClose' | 'open'>, Pick<SlideFadeProps, 'children'> {
5
5
  /**
6
6
  * Control slide fade in direction
7
7
  * @default 'down'