@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
package/Select/index.d.ts CHANGED
@@ -1,9 +1,16 @@
1
1
  export * from './typings';
2
2
  export { SelectControlContext } from './SelectControlContext';
3
- export { SelectTriggerProps, SelectTriggerInputProps, default as SelectTrigger, } from './SelectTrigger';
4
- export { SelectTriggerTagsProps, default as SelectTriggerTags, } from './SelectTriggerTags';
5
- export { SelectProps, default } from './Select';
6
- export { OptionProps, default as Option } from './Option';
7
- export { MenuItemGroupProps as OptionGroupProps, default as OptionGroup, } from '../Menu/MenuItemGroup';
8
- export { TreeSelectProps, default as TreeSelect } from './TreeSelect';
9
- export { AutoCompleteProps, default as AutoComplete } from './AutoComplete';
3
+ export { default as SelectTrigger } from './SelectTrigger';
4
+ export type { SelectTriggerProps, SelectTriggerInputProps, } from './SelectTrigger';
5
+ export { default as SelectTriggerTags } from './SelectTriggerTags';
6
+ export type { SelectTriggerTagsProps } from './SelectTriggerTags';
7
+ export type { SelectProps } from './Select';
8
+ export { default } from './Select';
9
+ export { default as Option } from './Option';
10
+ export type { OptionProps } from './Option';
11
+ export { default as OptionGroup } from '../Menu/MenuItemGroup';
12
+ export type { MenuItemGroupProps as OptionGroupProps } from '../Menu/MenuItemGroup';
13
+ export type { TreeSelectProps } from './TreeSelect';
14
+ export { default as TreeSelect } from './TreeSelect';
15
+ export type { AutoCompleteProps } from './AutoComplete';
16
+ export { default as AutoComplete } from './AutoComplete';
@@ -1,3 +1,8 @@
1
+ import { ReactElement, Ref } from 'react';
2
+ import Icon, { IconProps } from '../Icon';
3
+ import { SelectTriggerType } from '@mezzanine-ui/core/select';
4
+ import { TextFieldProps } from '../TextField';
5
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
1
6
  export interface SelectValue<T = string> {
2
7
  id: T;
3
8
  name: string;
@@ -10,3 +15,97 @@ export interface SelectControl<T = string> {
10
15
  value: SelectValue<T>[] | SelectValue<T> | null;
11
16
  onChange: (v: SelectValue<T> | null) => SelectValue<T>[] | SelectValue<T> | null;
12
17
  }
18
+ export type SelectTriggerInputProps = Omit<NativeElementPropsWithoutKeyAndRef<'input'>, 'autoComplete' | 'children' | 'defaultValue' | 'disabled' | 'required' | 'type' | 'value' | `aria-${'autocomplete' | 'disabled' | 'haspopup' | 'multiline' | 'required'}`>;
19
+ export interface SelectTriggerBaseProps extends Omit<TextFieldProps, 'active' | 'children' | 'defaultChecked' | 'suffix' | 'typing' | 'disabled' | 'readonly'> {
20
+ /**
21
+ * Controls the chevron icon layout.
22
+ */
23
+ active?: boolean;
24
+ /**
25
+ * Whether the input is disabled.
26
+ * @default false
27
+ */
28
+ disabled?: boolean;
29
+ /**
30
+ * force hide suffixAction icons
31
+ */
32
+ forceHideSuffixActionIcon?: boolean;
33
+ /**
34
+ * The ref for SelectTrigger root.
35
+ */
36
+ innerRef?: Ref<HTMLDivElement>;
37
+ /**
38
+ * Other props you may provide to input element.
39
+ */
40
+ inputProps?: SelectTriggerInputProps;
41
+ /**
42
+ * The ref object for input element.
43
+ */
44
+ inputRef?: Ref<HTMLInputElement>;
45
+ /**
46
+ * The click handler for the cross icon on tags
47
+ */
48
+ onTagClose?: (target: SelectValue) => void;
49
+ /** Placeholder text when not selected */
50
+ placeholder?: string;
51
+ /**
52
+ * Whether the input is readonly.
53
+ * @default false
54
+ */
55
+ readOnly?: boolean;
56
+ /**
57
+ * Whether the input is required.
58
+ * @default false
59
+ */
60
+ required?: boolean;
61
+ searchText?: string;
62
+ showTextInputAfterTags?: boolean;
63
+ /** Suffix icon click event handler */
64
+ suffixAction?: VoidFunction;
65
+ /** Customize suffix icon */
66
+ suffixActionIcon?: ReactElement<IconProps, typeof Icon>;
67
+ /** Type default/error of the SelectTrigger */
68
+ type?: SelectTriggerType;
69
+ }
70
+ export type SelectTriggerSingleProps = SelectTriggerBaseProps & {
71
+ /**
72
+ * Controls the layout of trigger.
73
+ * @default single
74
+ */
75
+ mode?: 'single';
76
+ /**
77
+ * Only available on multiple selector
78
+ */
79
+ overflowStrategy?: never;
80
+ /**
81
+ * The value of selection.
82
+ * @default undefined
83
+ */
84
+ value?: SelectValue;
85
+ /**
86
+ * Provide if you have a customize value rendering logic.
87
+ * By default will have a comma between values.
88
+ */
89
+ renderValue?: (value?: SelectValue | null) => string;
90
+ };
91
+ export type SelectTriggerMultipleProps = SelectTriggerBaseProps & {
92
+ /**
93
+ * Controls the layout of trigger.
94
+ * @default single
95
+ */
96
+ mode: 'multiple';
97
+ /**
98
+ * Tag overflow strategy:
99
+ * - counter: collapse extra tags into a counter tag showing the remaining count.
100
+ * - wrap: wrap to new lines to display all tags.
101
+ * @default counter
102
+ */
103
+ overflowStrategy?: 'counter' | 'wrap';
104
+ /**
105
+ * The value of selection.
106
+ * @default undefined
107
+ */
108
+ value?: SelectValue[];
109
+ };
110
+ export type SelectTriggerComponentProps = SelectTriggerSingleProps | SelectTriggerMultipleProps;
111
+ export type SelectTriggerProps = Omit<SelectTriggerComponentProps, 'innerRef'>;
@@ -1,19 +1,26 @@
1
- import { RefObject, type JSX } from 'react';
1
+ import { JSX, RefObject } from 'react';
2
2
  import { TagSize } from '@mezzanine-ui/core/tag';
3
3
  import { SelectValue } from './typings';
4
4
  export interface UseSelectTriggerTagsProps {
5
- controlRef: RefObject<HTMLDivElement | undefined>;
5
+ /**
6
+ * Enable ellipsis calculation.
7
+ */
8
+ enabled?: boolean;
9
+ /**
10
+ * The ref for wrapper that defines available width.
11
+ */
12
+ containerRef: RefObject<HTMLDivElement | null>;
13
+ /**
14
+ * Container ref of the visible tags list.
15
+ */
16
+ tagsRef: RefObject<HTMLDivElement | null>;
6
17
  size?: TagSize;
7
18
  value?: SelectValue[];
8
19
  }
9
20
  export interface UseSelectTriggerTagsValue {
21
+ overflowSelections: SelectValue[];
10
22
  renderFakeTags: () => JSX.Element | null;
11
23
  takeCount: number;
24
+ visibleSelections: SelectValue[];
12
25
  }
13
- export declare function calcTakeCount({ tagsWidths, maxWidth, ellipsisTagWidth, setTakeCount, }: {
14
- tagsWidths: number[];
15
- maxWidth: number;
16
- ellipsisTagWidth: number;
17
- setTakeCount: (count: number) => void;
18
- }): void;
19
26
  export declare function useSelectTriggerTags(props: UseSelectTriggerTagsProps): UseSelectTriggerTagsValue;
@@ -1,58 +1,97 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useState, useEffect } from 'react';
3
- import take from 'lodash/take';
2
+ import { useState, useRef, useCallback, useLayoutEffect, useEffect } from 'react';
3
+ import { selectClasses } from '@mezzanine-ui/core/select';
4
4
  import Tag from '../Tag/Tag.js';
5
5
 
6
- function calcTakeCount({ tagsWidths, maxWidth, ellipsisTagWidth, setTakeCount, }) {
7
- let targetCount = 0;
8
- for (let count = 0; count <= tagsWidths.length; count += 1) {
9
- const prevTotal = take(tagsWidths, count).reduce((prev, curr) => prev + curr, 0);
10
- const nowTotal = take(tagsWidths, count + 1).reduce((prev, curr) => prev + curr, 0);
11
- targetCount = count;
12
- if (prevTotal <= maxWidth && nowTotal >= maxWidth && maxWidth > 0) {
13
- if (prevTotal + ellipsisTagWidth > maxWidth) {
14
- targetCount -= 1;
15
- }
16
- break;
17
- }
18
- }
19
- setTakeCount(targetCount);
6
+ const fakeTagClassName = 'mzn-select-trigger__fake-tag';
7
+ const fakeEllipsisClassName = 'mzn-select-trigger__fake-ellipsis';
8
+ function getFullWidth(element) {
9
+ const rect = element.getBoundingClientRect();
10
+ const style = window.getComputedStyle(element);
11
+ const marginStart = parseFloat(style.marginInlineStart || style.marginLeft || '0') || 0;
12
+ const marginEnd = parseFloat(style.marginInlineEnd || style.marginRight || '0') || 0;
13
+ return rect.width + marginStart + marginEnd;
20
14
  }
21
15
  function useSelectTriggerTags(props) {
22
- const { controlRef, value, size } = props;
23
- const [tagsWidths, setTagsWidths] = useState([]);
24
- const [takeCount, setTakeCount] = useState(0);
25
- const mznFakeTagClassName = 'mzn-fake-tag';
26
- const mznFakeEllipsisTagClassName = 'mzn-fake-ellipsis-tag';
27
- useEffect(() => {
28
- var _a, _b, _c;
29
- const elements = (_a = controlRef.current) === null || _a === void 0 ? void 0 : _a.getElementsByClassName(mznFakeTagClassName);
30
- const ellipsisTagElement = (_b = controlRef.current) === null || _b === void 0 ? void 0 : _b.getElementsByClassName(mznFakeEllipsisTagClassName)[0];
31
- if ((elements === null || elements === void 0 ? void 0 : elements.length) && ellipsisTagElement) {
32
- const tagsWidthsArray = Array.from(elements).map((e) => e.clientWidth);
33
- const parentWidth = ((_c = controlRef.current) === null || _c === void 0 ? void 0 : _c.clientWidth) || 0;
34
- const maxWidth = parentWidth * 0.7;
35
- const ellipsisTagWidth = ellipsisTagElement.clientWidth;
36
- setTagsWidths(tagsWidthsArray);
37
- calcTakeCount({
38
- tagsWidths: tagsWidthsArray,
39
- maxWidth,
40
- ellipsisTagWidth,
41
- setTakeCount,
42
- });
16
+ const { containerRef, tagsRef, value = [], size, enabled = false } = props;
17
+ const [takeCount, setTakeCount] = useState(value.length);
18
+ const fakeContainerRef = useRef(null);
19
+ const measure = useCallback(() => {
20
+ var _a, _b;
21
+ if (!enabled) {
22
+ setTakeCount(value.length);
23
+ return;
43
24
  }
44
- }, [value, controlRef]);
25
+ const container = (_a = containerRef.current) !== null && _a !== void 0 ? _a : tagsRef.current;
26
+ const fakeContainer = fakeContainerRef.current;
27
+ if (!container || !fakeContainer) {
28
+ setTakeCount(value.length);
29
+ return;
30
+ }
31
+ const fakeTags = Array.from(fakeContainer.getElementsByClassName(fakeTagClassName));
32
+ const fakeEllipsis = fakeContainer.getElementsByClassName(fakeEllipsisClassName)[0];
33
+ if (!fakeTags.length) {
34
+ setTakeCount(0);
35
+ return;
36
+ }
37
+ const computedStyleTarget = (_b = tagsRef.current) !== null && _b !== void 0 ? _b : container;
38
+ const containerWidth = container.clientWidth;
39
+ const style = computedStyleTarget
40
+ ? window.getComputedStyle(computedStyleTarget)
41
+ : null;
42
+ const paddingLeft = style ? parseFloat(style.paddingLeft) || 0 : 0;
43
+ const paddingRight = style ? parseFloat(style.paddingRight) || 0 : 0;
44
+ const maxWidth = containerWidth - paddingLeft - paddingRight;
45
+ const ellipsisWidth = fakeEllipsis ? getFullWidth(fakeEllipsis) : 0;
46
+ let nextCount = fakeTags.length;
47
+ let consumedWidth = 0;
48
+ for (let i = 0; i < fakeTags.length; i += 1) {
49
+ const tagWidth = getFullWidth(fakeTags[i]);
50
+ const hasOverflow = fakeTags.length - (i + 1) > 0;
51
+ const reservedWidth = hasOverflow ? ellipsisWidth : 0;
52
+ if (consumedWidth + tagWidth + reservedWidth > maxWidth) {
53
+ nextCount = i;
54
+ break;
55
+ }
56
+ consumedWidth += tagWidth;
57
+ nextCount = i + 1;
58
+ }
59
+ setTakeCount(nextCount);
60
+ }, [containerRef, enabled, tagsRef, value.length]);
61
+ useLayoutEffect(() => {
62
+ measure();
63
+ }, [value, size, enabled, measure]);
64
+ useEffect(() => {
65
+ if (!enabled)
66
+ return;
67
+ const container = tagsRef.current;
68
+ if (!container)
69
+ return;
70
+ const observer = new ResizeObserver(() => {
71
+ measure();
72
+ });
73
+ observer.observe(container);
74
+ return () => observer.disconnect();
75
+ }, [enabled, containerRef, tagsRef, value.length, measure]);
45
76
  const renderFakeTags = () => {
46
- if (value && value.length === tagsWidths.length)
77
+ if (!enabled || !value.length)
47
78
  return null;
48
- return (jsxs("div", { style: {
79
+ return (jsxs("div", { "aria-hidden": true, className: selectClasses.triggerTags, ref: fakeContainerRef, style: {
49
80
  position: 'absolute',
50
- visibility: 'hidden',
51
81
  pointerEvents: 'none',
82
+ visibility: 'hidden',
52
83
  opacity: 0,
53
- }, children: [value === null || value === void 0 ? void 0 : value.map((selection) => (jsx(Tag, { className: mznFakeTagClassName, closable: true, disabled: true, size: size, children: selection.name }, selection.id))), jsx(Tag, { disabled: true, className: mznFakeEllipsisTagClassName, size: size, children: "+99..." })] }));
84
+ inset: 0,
85
+ }, children: [value.map((selection) => (jsx("span", { className: fakeTagClassName, children: jsx(Tag, { disabled: true, label: selection.name, onClose: () => { }, size: size, type: "dismissable" }) }, `fake-${selection.id}`))), jsx("span", { className: fakeEllipsisClassName, children: jsx(Tag, { count: 99, size: size, type: "overflow-counter" }) })] }));
86
+ };
87
+ const visibleSelections = value.slice(0, takeCount);
88
+ const overflowSelections = value.slice(takeCount);
89
+ return {
90
+ overflowSelections,
91
+ renderFakeTags,
92
+ takeCount,
93
+ visibleSelections,
54
94
  };
55
- return { renderFakeTags, takeCount };
56
95
  }
57
96
 
58
- export { calcTakeCount, useSelectTriggerTags };
97
+ export { useSelectTriggerTags };
@@ -0,0 +1,98 @@
1
+ import { ChangeEventHandler, MouseEvent, Ref } from 'react';
2
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
3
+ import { SelectionDirection, SelectionImageObjectFit, SelectionType } from '@mezzanine-ui/core/selection';
4
+ import type { IconDefinition } from '@mezzanine-ui/icons';
5
+ export interface SelectionPropsBase extends Omit<NativeElementPropsWithoutKeyAndRef<'label'>, 'onChange'> {
6
+ /**
7
+ * Whether the selection is checked.
8
+ */
9
+ checked?: boolean;
10
+ /**
11
+ * Whether the selection is checked by default.
12
+ * @default false
13
+ */
14
+ defaultChecked?: boolean;
15
+ /**
16
+ * The type of selection.
17
+ * @default 'radio'
18
+ */
19
+ selector: SelectionType;
20
+ /**
21
+ * If true, selection will be disabled
22
+ * @default false
23
+ */
24
+ disabled?: boolean;
25
+ /**
26
+ * The direction of selection.
27
+ * @default 'horizontal'
28
+ */
29
+ direction?: SelectionDirection;
30
+ /**
31
+ * The image of selection. Supports image URL.
32
+ */
33
+ image?: string;
34
+ /**
35
+ * The object fit of selection image.
36
+ * @default 'cover'
37
+ */
38
+ imageObjectFit?: SelectionImageObjectFit;
39
+ /**
40
+ * The custom icon of selection.
41
+ */
42
+ customIcon?: IconDefinition;
43
+ /**
44
+ * The name of selection.
45
+ *
46
+ * @important When using with react-hook-form or inside a RadioGroup/CheckboxGroup, this prop is recommended.
47
+ */
48
+ name?: string;
49
+ /**
50
+ * The id of the input element.
51
+ */
52
+ id?: string;
53
+ /**
54
+ * The accessible text of selection.
55
+ */
56
+ text: string;
57
+ /**
58
+ * The accessible description of selection.
59
+ */
60
+ supportingText?: string;
61
+ /**
62
+ * Whether the selection is readonly.
63
+ * @default false
64
+ */
65
+ readonly?: boolean;
66
+ /**
67
+ * The value of selection.
68
+ *
69
+ * @important This prop is required when selection is inside a RadioGroup/CheckboxGroup.
70
+ * It is also recommended when integrating with react-hook-form.
71
+ */
72
+ value?: string;
73
+ /**
74
+ * The react ref passed to input element.
75
+ *
76
+ * @important When using with react-hook-form's `register`, pass the ref through this prop:
77
+ * ```tsx
78
+ * const { register } = useForm();
79
+ * <Selection inputRef={register('fieldName').ref} name="fieldName" />
80
+ * ```
81
+ */
82
+ inputRef?: Ref<HTMLInputElement>;
83
+ /**
84
+ * Invoked by input change event.
85
+ */
86
+ onChange?: ChangeEventHandler<HTMLInputElement>;
87
+ }
88
+ export interface SelectionProps extends SelectionPropsBase {
89
+ /**
90
+ * Callback when the selection is clicked.
91
+ */
92
+ onClick?: (event: MouseEvent<HTMLLabelElement>) => void;
93
+ }
94
+ /**
95
+ * The react component for `mezzanine` selection.
96
+ */
97
+ declare const Selection: import("react").ForwardRefExoticComponent<SelectionProps & import("react").RefAttributes<HTMLLabelElement>>;
98
+ export default Selection;
@@ -0,0 +1,46 @@
1
+ 'use client';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useId, useMemo } from 'react';
4
+ import Typography from '../Typography/Typography.js';
5
+ import { selectionClasses } from '@mezzanine-ui/core/selection';
6
+ import { FileIcon } from '@mezzanine-ui/icons';
7
+ import Icon from '../Icon/Icon.js';
8
+ import cx from 'clsx';
9
+
10
+ // Icon size constant for Selection component
11
+ // Note: This value is component-specific and doesn't have a corresponding design token
12
+ const SELECTION_ICON_SIZE = 26;
13
+ /**
14
+ * The react component for `mezzanine` selection.
15
+ */
16
+ const Selection = forwardRef(function Selection(props, ref) {
17
+ const { checked: checkedProp, className, defaultChecked = false, disabled = false, direction = 'horizontal', id, image, imageObjectFit = 'cover', inputRef: inputRefProp, name, onChange: onChangeProp, readonly = false, selector = 'radio', supportingText, text, value, customIcon, onClick, ...rest } = props;
18
+ const generatedId = useId();
19
+ const inputId = id !== null && id !== void 0 ? id : generatedId;
20
+ const textId = useMemo(() => `${inputId}-text`, [inputId]);
21
+ const supportingTextId = useMemo(() => `${inputId}-supporting-text`, [inputId]);
22
+ const isRadioOrCheckbox = selector === 'radio' || selector === 'checkbox';
23
+ const onInputChange = (event) => {
24
+ onChangeProp === null || onChangeProp === void 0 ? void 0 : onChangeProp(event);
25
+ };
26
+ const haveImage = useMemo(() => Boolean(image && typeof image === 'string' && image.trim().length > 0), [image]);
27
+ if (!text) {
28
+ console.error('Selection: `text` (title) is required.');
29
+ return null;
30
+ }
31
+ if (!supportingText) {
32
+ console.warn('Selection: `supportingText` is optional but strongly recommended for better accessibility.');
33
+ }
34
+ return (jsxs("label", { ...rest, ref: ref, htmlFor: inputId, className: cx(selectionClasses.host, selectionClasses.direction(direction), {
35
+ [selectionClasses.disabled]: disabled,
36
+ [selectionClasses.readonly]: readonly,
37
+ }, className), ...(disabled && { 'aria-disabled': true }), ...(onClick && { onClick }), children: [jsxs("div", { className: selectionClasses.container, children: [haveImage
38
+ ? jsx("img", { src: image, alt: text, className: selectionClasses.selectionImage, style: { objectFit: imageObjectFit } })
39
+ : jsx(Icon, { "aria-hidden": "true", className: selectionClasses.icon, color: "neutral-solid", icon: customIcon || FileIcon, size: SELECTION_ICON_SIZE }), jsxs("div", { className: selectionClasses.content, children: [jsx(Typography, { id: textId, color: "text-neutral-solid", variant: "body-highlight", className: selectionClasses.text, children: text }), supportingText && (jsx(Typography, { id: supportingTextId, color: "text-neutral", variant: "caption", className: selectionClasses.supportingText, children: supportingText }))] })] }), !readonly && (jsx("input", { ref: inputRefProp, type: selector, name: name, id: inputId, className: selectionClasses.input, disabled: disabled, ...(checkedProp !== undefined
40
+ ? { checked: checkedProp }
41
+ : { defaultChecked }), value: value, onChange: onInputChange, ...(isRadioOrCheckbox && checkedProp !== undefined
42
+ ? { 'aria-checked': checkedProp }
43
+ : {}), "aria-labelledby": textId, "aria-describedby": supportingText ? supportingTextId : undefined }))] }));
44
+ });
45
+
46
+ export { Selection as default };
@@ -0,0 +1,12 @@
1
+ import { PropsWithoutRef, ReactElement, RefAttributes } from 'react';
2
+ import Selection, { SelectionProps, SelectionPropsBase } from './Selection';
3
+ export type { SelectionDirection, SelectionType, } from '@mezzanine-ui/core/selection';
4
+ export type { SelectionProps, SelectionPropsBase };
5
+ /**
6
+ * @remark
7
+ * Add type alias here for parsable to react docgen typescript.
8
+ */
9
+ type GenericSelection = (props: PropsWithoutRef<SelectionProps> & RefAttributes<HTMLLabelElement>) => ReactElement<any>;
10
+ export { Selection };
11
+ declare const _default: GenericSelection;
12
+ export default _default;
@@ -0,0 +1,5 @@
1
+ import Selection from './Selection.js';
2
+
3
+
4
+
5
+ export { Selection, Selection as default };
@@ -1,16 +1,23 @@
1
1
  import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
2
+ import { TypographySemanticType } from '../Typography';
2
3
  export interface SkeletonProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'children'> {
4
+ /**
5
+ * Whether the skeleton should be circular.
6
+ */
7
+ circle?: boolean;
3
8
  /**
4
9
  * Height of the skeleton.
10
+ * @default 100%
5
11
  */
6
12
  height?: number | string;
7
13
  /**
8
- * Type of the skeleton.
9
- * @default 'rectangle'
14
+ * Typography variant for strip skeleton height calculation.
15
+ * Only effective when circle and height are not set.
10
16
  */
11
- type?: 'rectangle' | 'circle';
17
+ variant?: TypographySemanticType;
12
18
  /**
13
19
  * Width of the skeleton.
20
+ * @default 100%
14
21
  */
15
22
  width?: number | string;
16
23
  }
@@ -7,12 +7,20 @@ import cx from 'clsx';
7
7
  * The react component for `mezzanine` Skeleton.
8
8
  */
9
9
  const Skeleton = forwardRef(function Skeleton(props, ref) {
10
- const { className, height: skeletonHeight, style: skeletonStyle, type, width: skeletonWidth, ...rest } = props;
11
- return (jsx("div", { ...rest, ref: ref, className: cx(skeletonClasses.host, type === 'circle' && skeletonClasses.circle, className), style: {
12
- width: skeletonWidth,
10
+ const { circle, className, height: skeletonHeight, style: skeletonStyle, variant, width: skeletonWidth, ...rest } = props;
11
+ // strip type
12
+ if (!skeletonHeight && !circle && variant) {
13
+ return (jsx("div", { ...rest, ref: ref, className: cx(skeletonClasses.host, skeletonClasses.type(variant), className), style: {
14
+ width: skeletonWidth,
15
+ ...skeletonStyle,
16
+ }, children: jsx("span", { className: skeletonClasses.bg }) }));
17
+ }
18
+ // circle / square type
19
+ return (jsx("div", { ...rest, ref: ref, className: cx(skeletonClasses.host, skeletonClasses.bg, circle && skeletonClasses.circle, className), style: {
13
20
  height: skeletonHeight,
21
+ width: skeletonWidth,
14
22
  ...skeletonStyle,
15
- }, ...rest }));
23
+ } }));
16
24
  });
17
25
 
18
26
  export { Skeleton as default };
@@ -1 +1,2 @@
1
- export { SkeletonProps, default } from './Skeleton';
1
+ export type { SkeletonProps } from './Skeleton';
2
+ export { default } from './Skeleton';
@@ -2,12 +2,17 @@ import { Ref } from 'react';
2
2
  import { RangeSliderValue, SingleSliderValue } from '@mezzanine-ui/core/slider';
3
3
  import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
4
4
  import { UseRangeSliderProps, UseSingleSliderProps } from './useSlider';
5
+ import { IconDefinition } from '@mezzanine-ui/icons';
5
6
  export interface SliderBaseProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'defaultChecked' | 'defaultValue' | 'onChange'> {
6
7
  /**
7
8
  * Whether the slider is disabled.
8
9
  * @default false
9
10
  */
10
11
  disabled?: boolean;
12
+ /**
13
+ * The ref for Slider root.
14
+ */
15
+ innerRef?: Ref<HTMLDivElement>;
11
16
  /**
12
17
  * The maximum permitted value
13
18
  * @default 100
@@ -24,20 +29,52 @@ export interface SliderBaseProps extends Omit<NativeElementPropsWithoutKeyAndRef
24
29
  */
25
30
  step?: number;
26
31
  /**
27
- * Will render input if `withInput` is `true`.
32
+ * Whether to show tick marks on the slider.
33
+ * If a number is given, it represents the number of equally spaced segments between min and max to display tick marks (excluding min and max).
34
+ * If a number array is given, the values represent the actual slider values at which to show the tick marks (not percentages).
35
+ * @example
36
+ * 3 // means show tick marks at values 25, 50, and 75 (for min=0, max=100)
37
+ * [20, 50, 80] // means show tick marks at values 20, 50, and 80
28
38
  */
29
- withInput?: boolean;
39
+ withTick?: number | number[];
40
+ }
41
+ export type SliderWithInputProps = SliderBaseProps & {
42
+ prefixIcon?: never;
43
+ suffixIcon?: never;
30
44
  /**
31
- * The ref for Slider root.
45
+ * Whether to show input box to allow user to input value.
32
46
  */
33
- innerRef?: Ref<HTMLDivElement>;
34
- }
35
- export type SingleSliderProps = SliderBaseProps & {
47
+ withInput: true;
48
+ };
49
+ export type SliderWithIconProps = SliderBaseProps & {
50
+ /**
51
+ * Set prefix icon.
52
+ */
53
+ prefixIcon: IconDefinition;
54
+ /**
55
+ * Set suffix icon.
56
+ */
57
+ suffixIcon: IconDefinition;
58
+ withInput?: never;
59
+ };
60
+ export type SliderWithoutAddonsProps = SliderBaseProps & {
61
+ prefixIcon?: never;
62
+ suffixIcon?: never;
63
+ withInput?: never;
64
+ };
65
+ export type SliderAddonProps = SliderWithInputProps | SliderWithIconProps | SliderWithoutAddonsProps;
66
+ export type SingleSliderProps = SliderAddonProps & {
36
67
  onChange?: (value: SingleSliderValue) => void;
68
+ /**
69
+ * The value of the slider.
70
+ */
37
71
  value: UseSingleSliderProps['value'];
38
72
  };
39
- export type RangeSliderProps = SliderBaseProps & {
73
+ export type RangeSliderProps = SliderAddonProps & {
40
74
  onChange?: (value: RangeSliderValue) => void;
75
+ /**
76
+ * The value of the slider.
77
+ */
41
78
  value: UseRangeSliderProps['value'];
42
79
  };
43
80
  export type SliderComponentProps = SingleSliderProps | RangeSliderProps;