@mezzanine-ui/react 1.0.0-canary.9 → 1.0.0-rc.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 (487) hide show
  1. package/Accordion/Accordion.d.ts +23 -1
  2. package/Accordion/Accordion.js +59 -11
  3. package/Accordion/AccordionActions.d.ts +13 -0
  4. package/Accordion/AccordionActions.js +24 -0
  5. package/Accordion/AccordionContent.d.ts +9 -0
  6. package/Accordion/{AccordionDetails.js → AccordionContent.js} +4 -6
  7. package/Accordion/AccordionControlContext.d.ts +2 -2
  8. package/Accordion/AccordionGroup.d.ts +10 -0
  9. package/Accordion/AccordionGroup.js +26 -0
  10. package/Accordion/AccordionTitle.d.ts +14 -0
  11. package/Accordion/AccordionTitle.js +56 -0
  12. package/Accordion/index.d.ts +8 -4
  13. package/Accordion/index.js +4 -2
  14. package/Anchor/Anchor.d.ts +51 -18
  15. package/Anchor/Anchor.js +15 -15
  16. package/Anchor/AnchorGroup.d.ts +34 -0
  17. package/Anchor/AnchorGroup.js +37 -0
  18. package/Anchor/AnchorItem.d.ts +30 -0
  19. package/Anchor/AnchorItem.js +65 -0
  20. package/Anchor/index.d.ts +2 -0
  21. package/Anchor/index.js +1 -0
  22. package/Anchor/utils.d.ts +13 -0
  23. package/Anchor/utils.js +95 -0
  24. package/AutoComplete/AutoComplete.d.ts +236 -0
  25. package/AutoComplete/AutoComplete.js +579 -0
  26. package/AutoComplete/index.d.ts +2 -0
  27. package/AutoComplete/index.js +1 -0
  28. package/AutoComplete/useAutoCompleteCreation.d.ts +33 -0
  29. package/AutoComplete/useAutoCompleteCreation.js +201 -0
  30. package/AutoComplete/useAutoCompleteKeyboard.d.ts +31 -0
  31. package/AutoComplete/useAutoCompleteKeyboard.js +149 -0
  32. package/AutoComplete/useAutoCompleteSearch.d.ts +16 -0
  33. package/AutoComplete/useAutoCompleteSearch.js +69 -0
  34. package/AutoComplete/useCreationTracker.d.ts +17 -0
  35. package/AutoComplete/useCreationTracker.js +47 -0
  36. package/Backdrop/Backdrop.js +15 -19
  37. package/Badge/Badge.d.ts +6 -0
  38. package/Badge/Badge.js +2 -2
  39. package/Badge/typings.d.ts +9 -2
  40. package/Breadcrumb/Breadcrumb.js +16 -21
  41. package/Breadcrumb/BreadcrumbDropdown.d.ts +11 -0
  42. package/Breadcrumb/BreadcrumbDropdown.js +22 -0
  43. package/Breadcrumb/BreadcrumbItem.d.ts +2 -3
  44. package/Breadcrumb/BreadcrumbItem.js +13 -31
  45. package/Breadcrumb/BreadcrumbOverflowMenu.d.ts +7 -0
  46. package/Breadcrumb/BreadcrumbOverflowMenu.js +77 -0
  47. package/Breadcrumb/BreadcrumbOverflowMenuDropdown.d.ts +11 -0
  48. package/Breadcrumb/BreadcrumbOverflowMenuDropdown.js +21 -0
  49. package/Breadcrumb/BreadcrumbOverflowMenuItem.d.ts +3 -0
  50. package/Breadcrumb/BreadcrumbOverflowMenuItem.js +27 -0
  51. package/Breadcrumb/typings.d.ts +21 -39
  52. package/Button/Button.js +13 -11
  53. package/Button/index.d.ts +1 -1
  54. package/Button/typings.d.ts +27 -4
  55. package/Calendar/Calendar.js +2 -6
  56. package/Calendar/CalendarCell.d.ts +22 -0
  57. package/Calendar/CalendarCell.js +6 -2
  58. package/Calendar/CalendarControls.js +1 -1
  59. package/Calendar/CalendarDayOfWeek.js +3 -2
  60. package/Calendar/CalendarDays.js +6 -2
  61. package/Calendar/CalendarHalfYears.js +13 -7
  62. package/Calendar/CalendarMonths.js +13 -6
  63. package/Calendar/CalendarQuarters.js +13 -7
  64. package/Calendar/CalendarWeeks.js +87 -34
  65. package/Calendar/CalendarYears.js +13 -12
  66. package/Calendar/useCalendarControlModifiers.d.ts +1 -1
  67. package/Calendar/useCalendarControlModifiers.js +12 -12
  68. package/Calendar/useCalendarControls.d.ts +4 -4
  69. package/Calendar/useCalendarControls.js +33 -19
  70. package/Calendar/useRangeCalendarControls.d.ts +8 -8
  71. package/Calendar/useRangeCalendarControls.js +42 -31
  72. package/Card/BaseCard.d.ts +11 -0
  73. package/Card/BaseCard.js +48 -0
  74. package/Card/BaseCardSkeleton.d.ts +14 -0
  75. package/Card/BaseCardSkeleton.js +18 -0
  76. package/Card/CardGroup.d.ts +47 -0
  77. package/Card/CardGroup.js +147 -0
  78. package/Card/FourThumbnailCard.d.ts +14 -0
  79. package/Card/FourThumbnailCard.js +73 -0
  80. package/Card/FourThumbnailCardSkeleton.d.ts +14 -0
  81. package/Card/FourThumbnailCardSkeleton.js +20 -0
  82. package/Card/QuickActionCard.d.ts +12 -0
  83. package/Card/QuickActionCard.js +23 -0
  84. package/Card/QuickActionCardSkeleton.d.ts +14 -0
  85. package/Card/QuickActionCardSkeleton.js +18 -0
  86. package/Card/SingleThumbnailCard.d.ts +13 -0
  87. package/Card/SingleThumbnailCard.js +44 -0
  88. package/Card/SingleThumbnailCardSkeleton.d.ts +19 -0
  89. package/Card/SingleThumbnailCardSkeleton.js +18 -0
  90. package/Card/Thumbnail.d.ts +12 -0
  91. package/Card/Thumbnail.js +18 -0
  92. package/Card/ThumbnailCardInfo.d.ts +34 -0
  93. package/Card/ThumbnailCardInfo.js +43 -0
  94. package/Card/index.d.ts +43 -4
  95. package/Card/index.js +19 -2
  96. package/Card/typings.d.ts +442 -0
  97. package/Checkbox/Checkbox.d.ts +8 -0
  98. package/Checkbox/Checkbox.js +3 -2
  99. package/Checkbox/CheckboxGroup.js +1 -1
  100. package/Checkbox/index.d.ts +4 -5
  101. package/Checkbox/index.js +1 -5
  102. package/ContentHeader/ContentHeader.d.ts +112 -0
  103. package/ContentHeader/ContentHeader.js +54 -0
  104. package/ContentHeader/ContentHeaderResponsive.d.ts +9 -0
  105. package/ContentHeader/ContentHeaderResponsive.js +7 -0
  106. package/ContentHeader/index.d.ts +2 -0
  107. package/ContentHeader/index.js +1 -0
  108. package/ContentHeader/utils.d.ts +23 -0
  109. package/ContentHeader/utils.js +261 -0
  110. package/Cropper/Cropper.d.ts +66 -0
  111. package/Cropper/Cropper.js +115 -0
  112. package/Cropper/CropperElement.d.ts +10 -0
  113. package/Cropper/CropperElement.js +892 -0
  114. package/Cropper/index.d.ts +18 -0
  115. package/Cropper/index.js +8 -0
  116. package/Cropper/tools.d.ts +90 -0
  117. package/Cropper/tools.js +143 -0
  118. package/Cropper/typings.d.ts +69 -0
  119. package/Cropper/utils/cropper-calculations.d.ts +39 -0
  120. package/Cropper/utils/cropper-calculations.js +95 -0
  121. package/DateRangePicker/useDateRangeCalendarControls.js +8 -2
  122. package/DateTimePicker/DateTimePicker.d.ts +1 -1
  123. package/DateTimePicker/DateTimePicker.js +22 -5
  124. package/DateTimeRangePicker/DateTimeRangePicker.d.ts +34 -0
  125. package/DateTimeRangePicker/DateTimeRangePicker.js +118 -0
  126. package/DateTimeRangePicker/index.d.ts +2 -0
  127. package/DateTimeRangePicker/index.js +1 -0
  128. package/Description/Description.d.ts +30 -0
  129. package/Description/Description.js +13 -0
  130. package/Description/DescriptionContent.d.ts +41 -0
  131. package/Description/DescriptionContent.js +14 -0
  132. package/Description/DescriptionGroup.d.ts +13 -0
  133. package/Description/DescriptionGroup.js +12 -0
  134. package/Description/DescriptionTitle.d.ts +45 -0
  135. package/Description/DescriptionTitle.js +17 -0
  136. package/Description/index.d.ts +8 -0
  137. package/Description/index.js +4 -0
  138. package/Drawer/Drawer.d.ts +143 -1
  139. package/Drawer/Drawer.js +56 -4
  140. package/Dropdown/Dropdown.d.ts +215 -15
  141. package/Dropdown/Dropdown.js +365 -32
  142. package/Dropdown/DropdownAction.d.ts +50 -0
  143. package/Dropdown/DropdownAction.js +23 -0
  144. package/Dropdown/DropdownItem.d.ts +131 -0
  145. package/Dropdown/DropdownItem.js +485 -0
  146. package/Dropdown/DropdownItemCard.d.ts +107 -0
  147. package/Dropdown/DropdownItemCard.js +125 -0
  148. package/Dropdown/DropdownStatus.d.ts +22 -0
  149. package/Dropdown/DropdownStatus.js +29 -0
  150. package/Dropdown/dropdownKeydownHandler.d.ts +16 -0
  151. package/Dropdown/dropdownKeydownHandler.js +73 -0
  152. package/Dropdown/highlightText.d.ts +9 -0
  153. package/Dropdown/highlightText.js +36 -0
  154. package/Dropdown/index.d.ts +1 -1
  155. package/Dropdown/shortcutTextHandler.d.ts +24 -0
  156. package/Dropdown/shortcutTextHandler.js +171 -0
  157. package/Empty/Empty.js +2 -1
  158. package/Empty/icons/EmptyMainNotificationIcon.d.ts +4 -0
  159. package/Empty/icons/EmptyMainNotificationIcon.js +9 -0
  160. package/Empty/typings.d.ts +2 -2
  161. package/FilterArea/Filter.d.ts +32 -0
  162. package/FilterArea/Filter.js +23 -0
  163. package/FilterArea/FilterArea.d.ts +58 -0
  164. package/FilterArea/FilterArea.js +31 -0
  165. package/FilterArea/FilterLine.d.ts +11 -0
  166. package/FilterArea/FilterLine.js +13 -0
  167. package/FilterArea/index.d.ts +6 -0
  168. package/FilterArea/index.js +3 -0
  169. package/FloatingButton/FloatingButton.d.ts +21 -0
  170. package/FloatingButton/FloatingButton.js +18 -0
  171. package/FloatingButton/index.d.ts +2 -0
  172. package/FloatingButton/index.js +1 -0
  173. package/Form/FormControlContext.d.ts +2 -2
  174. package/Form/FormField.d.ts +79 -4
  175. package/Form/FormField.js +18 -6
  176. package/Form/FormGroup.d.ts +16 -0
  177. package/Form/FormGroup.js +15 -0
  178. package/Form/FormHintText.d.ts +24 -1
  179. package/Form/FormHintText.js +4 -4
  180. package/Form/FormLabel.d.ts +6 -3
  181. package/Form/FormLabel.js +5 -3
  182. package/Form/index.d.ts +2 -0
  183. package/Form/index.js +1 -0
  184. package/Form/useSelectValueControl.d.ts +3 -4
  185. package/Form/useSelectValueControl.js +51 -39
  186. package/Input/Input.d.ts +35 -7
  187. package/Input/Input.js +49 -16
  188. package/Input/PasswordStrengthIndicator/PasswordStrengthIndicator.js +1 -1
  189. package/Input/SelectButton/SelectButton.d.ts +25 -4
  190. package/Input/SelectButton/SelectButton.js +21 -9
  191. package/Input/index.d.ts +1 -1
  192. package/Layout/Layout.d.ts +16 -0
  193. package/Layout/Layout.js +37 -0
  194. package/Layout/LayoutContext.d.ts +7 -0
  195. package/Layout/LayoutContext.js +6 -0
  196. package/Layout/LayoutHost.d.ts +10 -0
  197. package/Layout/LayoutHost.js +24 -0
  198. package/Layout/LayoutMain.d.ts +8 -0
  199. package/Layout/LayoutMain.js +8 -0
  200. package/Layout/LayoutSidePanel.d.ts +14 -0
  201. package/Layout/LayoutSidePanel.js +90 -0
  202. package/Layout/index.d.ts +3 -0
  203. package/Layout/index.js +3 -0
  204. package/Message/Message.js +1 -1
  205. package/Modal/MediaPreviewModal.d.ts +65 -0
  206. package/Modal/MediaPreviewModal.js +175 -0
  207. package/Modal/Modal.d.ts +103 -11
  208. package/Modal/Modal.js +14 -9
  209. package/Modal/ModalBodyForVerification.d.ts +59 -0
  210. package/Modal/ModalBodyForVerification.js +99 -0
  211. package/Modal/ModalControl.d.ts +2 -2
  212. package/Modal/ModalControl.js +1 -1
  213. package/Modal/ModalFooter.d.ts +119 -1
  214. package/Modal/ModalFooter.js +15 -3
  215. package/Modal/ModalHeader.d.ts +26 -7
  216. package/Modal/ModalHeader.js +33 -7
  217. package/Modal/index.d.ts +6 -5
  218. package/Modal/index.js +2 -2
  219. package/Modal/useModalContainer.d.ts +12 -3
  220. package/Modal/useModalContainer.js +32 -6
  221. package/MultipleDatePicker/MultipleDatePicker.d.ts +62 -0
  222. package/MultipleDatePicker/MultipleDatePicker.js +176 -0
  223. package/MultipleDatePicker/MultipleDatePickerTrigger.d.ts +56 -0
  224. package/MultipleDatePicker/MultipleDatePickerTrigger.js +92 -0
  225. package/MultipleDatePicker/index.d.ts +6 -0
  226. package/MultipleDatePicker/index.js +3 -0
  227. package/MultipleDatePicker/useMultipleDatePickerValue.d.ts +55 -0
  228. package/MultipleDatePicker/useMultipleDatePickerValue.js +68 -0
  229. package/Navigation/Navigation.d.ts +22 -14
  230. package/Navigation/Navigation.js +76 -43
  231. package/Navigation/NavigationFooter.d.ts +10 -0
  232. package/Navigation/NavigationFooter.js +28 -0
  233. package/Navigation/NavigationHeader.d.ts +18 -0
  234. package/Navigation/NavigationHeader.js +16 -0
  235. package/Navigation/NavigationIconButton.d.ts +15 -0
  236. package/Navigation/NavigationIconButton.js +12 -0
  237. package/Navigation/NavigationOption.d.ts +40 -0
  238. package/Navigation/NavigationOption.js +89 -0
  239. package/Navigation/NavigationOptionCategory.d.ts +6 -0
  240. package/Navigation/NavigationOptionCategory.js +30 -0
  241. package/Navigation/NavigationOverflowMenu.d.ts +6 -0
  242. package/Navigation/NavigationOverflowMenu.js +90 -0
  243. package/Navigation/NavigationOverflowMenuOption.d.ts +7 -0
  244. package/Navigation/NavigationOverflowMenuOption.js +68 -0
  245. package/Navigation/NavigationUserMenu.d.ts +10 -0
  246. package/Navigation/NavigationUserMenu.js +26 -0
  247. package/Navigation/context.d.ts +16 -0
  248. package/Navigation/context.js +7 -0
  249. package/Navigation/index.d.ts +12 -6
  250. package/Navigation/index.js +6 -3
  251. package/Navigation/useCurrentPathname.d.ts +1 -0
  252. package/Navigation/useCurrentPathname.js +14 -0
  253. package/Navigation/useVisibleItems.d.ts +5 -0
  254. package/Navigation/useVisibleItems.js +54 -0
  255. package/NotificationCenter/NotificationCenter.d.ts +124 -0
  256. package/NotificationCenter/NotificationCenter.js +279 -0
  257. package/NotificationCenter/NotificationCenterDrawer.d.ts +67 -0
  258. package/NotificationCenter/NotificationCenterDrawer.js +128 -0
  259. package/NotificationCenter/index.d.ts +5 -0
  260. package/NotificationCenter/index.js +2 -0
  261. package/OverflowTooltip/index.d.ts +2 -2
  262. package/PageFooter/PageFooter.d.ts +19 -9
  263. package/PageFooter/PageFooter.js +10 -10
  264. package/PageHeader/PageHeader.d.ts +32 -25
  265. package/PageHeader/PageHeader.js +49 -43
  266. package/Pagination/Pagination.js +1 -1
  267. package/Pagination/PaginationPageSize.js +12 -2
  268. package/Picker/FormattedInput.d.ts +1 -1
  269. package/Picker/FormattedInput.js +2 -1
  270. package/Picker/PickerTriggerWithSeparator.d.ts +10 -0
  271. package/Picker/PickerTriggerWithSeparator.js +2 -2
  272. package/Picker/RangePickerTrigger.js +1 -1
  273. package/Picker/useDateInputFormatter.d.ts +6 -0
  274. package/Picker/useDateInputFormatter.js +4 -1
  275. package/Popper/Popper.js +2 -1
  276. package/ResultState/ResultState.d.ts +9 -0
  277. package/ResultState/ResultState.js +36 -4
  278. package/Scrollbar/Scrollbar.d.ts +9 -0
  279. package/Scrollbar/Scrollbar.js +79 -0
  280. package/Scrollbar/index.d.ts +2 -0
  281. package/Scrollbar/index.js +1 -0
  282. package/Scrollbar/typings.d.ts +47 -0
  283. package/Section/Section.d.ts +32 -0
  284. package/Section/Section.js +62 -0
  285. package/Section/index.d.ts +2 -0
  286. package/Select/Select.d.ts +36 -18
  287. package/Select/Select.js +155 -52
  288. package/Select/SelectTrigger.js +27 -11
  289. package/Select/index.d.ts +3 -12
  290. package/Select/index.js +1 -5
  291. package/Select/typings.d.ts +6 -5
  292. package/Select/useSelectTriggerTags.d.ts +1 -1
  293. package/Select/useSelectTriggerTags.js +9 -6
  294. package/Selection/Selection.js +1 -1
  295. package/Selection/SelectionGroup.d.ts +28 -0
  296. package/Separator/Separator.d.ts +14 -0
  297. package/Separator/Separator.js +17 -0
  298. package/Separator/index.d.ts +2 -0
  299. package/Separator/index.js +1 -0
  300. package/Table/Table.d.ts +2 -82
  301. package/Table/Table.js +293 -102
  302. package/Table/TableContext.d.ts +27 -52
  303. package/Table/components/TableActionsCell.d.ts +26 -0
  304. package/Table/components/TableActionsCell.js +86 -0
  305. package/Table/components/TableBody.d.ts +2 -5
  306. package/Table/components/TableBody.js +17 -19
  307. package/Table/components/TableBulkActions.d.ts +15 -0
  308. package/Table/components/TableBulkActions.js +26 -0
  309. package/Table/components/TableCell.d.ts +2 -0
  310. package/Table/components/TableCell.js +42 -10
  311. package/Table/components/TableColGroup.d.ts +1 -4
  312. package/Table/components/TableColGroup.js +24 -127
  313. package/Table/components/TableCollectableCell.d.ts +17 -0
  314. package/Table/components/TableCollectableCell.js +54 -0
  315. package/Table/components/TableColumnTitleMenu.d.ts +6 -0
  316. package/Table/components/TableColumnTitleMenu.js +20 -0
  317. package/Table/components/TableDragOrPinHandleCell.d.ts +20 -0
  318. package/Table/components/TableDragOrPinHandleCell.js +58 -0
  319. package/Table/components/TableExpandCell.d.ts +2 -0
  320. package/Table/components/TableExpandCell.js +8 -1
  321. package/Table/components/TableExpandedRow.js +13 -3
  322. package/Table/components/TableHeader.d.ts +2 -4
  323. package/Table/components/TableHeader.js +21 -22
  324. package/Table/components/TableResizeHandle.js +3 -7
  325. package/Table/components/TableRow.js +86 -27
  326. package/Table/components/TableSelectionCell.d.ts +5 -0
  327. package/Table/components/TableSelectionCell.js +13 -2
  328. package/Table/components/TableToggleableCell.d.ts +16 -0
  329. package/Table/components/TableToggleableCell.js +51 -0
  330. package/Table/components/index.d.ts +5 -1
  331. package/Table/components/index.js +4 -0
  332. package/Table/hooks/index.d.ts +1 -1
  333. package/Table/hooks/index.js +1 -1
  334. package/Table/hooks/typings.d.ts +18 -4
  335. package/Table/hooks/useTableDataSource.d.ts +2 -2
  336. package/Table/hooks/useTableExpansion.d.ts +2 -2
  337. package/Table/hooks/useTableExpansion.js +5 -11
  338. package/Table/hooks/useTableFixedOffsets.d.ts +7 -3
  339. package/Table/hooks/useTableFixedOffsets.js +71 -39
  340. package/Table/hooks/useTableResizedColumns.d.ts +2 -0
  341. package/Table/hooks/useTableResizedColumns.js +22 -0
  342. package/Table/hooks/useTableScroll.d.ts +10 -2
  343. package/Table/hooks/useTableScroll.js +56 -23
  344. package/Table/hooks/useTableSelection.js +32 -8
  345. package/Table/hooks/useTableVirtualization.d.ts +3 -2
  346. package/Table/hooks/useTableVirtualization.js +2 -8
  347. package/Table/index.d.ts +5 -4
  348. package/Table/index.js +8 -3
  349. package/Table/typings.d.ts +172 -0
  350. package/Table/utils/calculateColumnWidths.d.ts +28 -0
  351. package/Table/utils/calculateColumnWidths.js +80 -0
  352. package/Table/utils/index.d.ts +2 -0
  353. package/Table/utils/index.js +1 -0
  354. package/Table/utils/useTableRowSelection.d.ts +5 -5
  355. package/Table/utils/useTableRowSelection.js +20 -6
  356. package/Tag/TagGroup.d.ts +7 -2
  357. package/Tag/TagGroup.js +7 -4
  358. package/Tag/index.d.ts +2 -0
  359. package/Tag/index.js +1 -0
  360. package/TextField/TextField.d.ts +6 -1
  361. package/TextField/TextField.js +64 -10
  362. package/TimePanel/TimePanelColumn.js +30 -21
  363. package/TimeRangePicker/TimeRangePicker.d.ts +29 -0
  364. package/TimeRangePicker/TimeRangePicker.js +96 -0
  365. package/TimeRangePicker/index.d.ts +3 -0
  366. package/TimeRangePicker/index.js +2 -0
  367. package/TimeRangePicker/useTimeRangePickerValue.d.ts +30 -0
  368. package/TimeRangePicker/useTimeRangePickerValue.js +92 -0
  369. package/Transition/Rotate.js +2 -5
  370. package/Transition/Slide.d.ts +9 -2
  371. package/Transition/Slide.js +7 -4
  372. package/Transition/index.d.ts +0 -2
  373. package/Transition/index.js +0 -1
  374. package/Upload/UploadPictureCard.js +1 -1
  375. package/hooks/useElementHeight.d.ts +8 -0
  376. package/hooks/useElementHeight.js +41 -0
  377. package/index.d.ts +67 -49
  378. package/index.js +57 -42
  379. package/package.json +8 -6
  380. package/utils/format-number-with-commas.d.ts +4 -0
  381. package/utils/format-number-with-commas.js +27 -0
  382. package/utils/parse-number-with-commas.d.ts +4 -0
  383. package/utils/parse-number-with-commas.js +22 -0
  384. package/Accordion/AccordionDetails.d.ts +0 -9
  385. package/Accordion/AccordionSummary.d.ts +0 -18
  386. package/Accordion/AccordionSummary.js +0 -51
  387. package/Alert/Alert.d.ts +0 -20
  388. package/Alert/Alert.js +0 -18
  389. package/Alert/index.d.ts +0 -3
  390. package/Alert/index.js +0 -1
  391. package/AppBar/AppBar.d.ts +0 -14
  392. package/AppBar/AppBar.js +0 -33
  393. package/AppBar/AppBarBrand.d.ts +0 -4
  394. package/AppBar/AppBarBrand.js +0 -11
  395. package/AppBar/AppBarMain.d.ts +0 -4
  396. package/AppBar/AppBarMain.js +0 -11
  397. package/AppBar/AppBarSupport.d.ts +0 -4
  398. package/AppBar/AppBarSupport.js +0 -11
  399. package/AppBar/index.d.ts +0 -8
  400. package/AppBar/index.js +0 -4
  401. package/Card/Card.d.ts +0 -51
  402. package/Card/Card.js +0 -20
  403. package/Card/CardActions.d.ts +0 -34
  404. package/Card/CardActions.js +0 -15
  405. package/ConfirmActions/ConfirmActions.d.ts +0 -46
  406. package/ConfirmActions/ConfirmActions.js +0 -15
  407. package/ConfirmActions/index.d.ts +0 -2
  408. package/ConfirmActions/index.js +0 -1
  409. package/Menu/Menu.d.ts +0 -28
  410. package/Menu/Menu.js +0 -25
  411. package/Menu/MenuDivider.d.ts +0 -7
  412. package/Menu/MenuDivider.js +0 -14
  413. package/Menu/MenuItem.d.ts +0 -23
  414. package/Menu/MenuItem.js +0 -25
  415. package/Menu/MenuItemGroup.d.ts +0 -13
  416. package/Menu/MenuItemGroup.js +0 -14
  417. package/Menu/index.d.ts +0 -9
  418. package/Menu/index.js +0 -4
  419. package/Modal/ModalActions.d.ts +0 -9
  420. package/Modal/ModalActions.js +0 -20
  421. package/Modal/ModalBody.d.ts +0 -7
  422. package/Modal/ModalBody.js +0 -14
  423. package/Navigation/NavigationContext.d.ts +0 -5
  424. package/Navigation/NavigationContext.js +0 -8
  425. package/Navigation/NavigationItem.d.ts +0 -31
  426. package/Navigation/NavigationItem.js +0 -23
  427. package/Navigation/NavigationSubMenu.d.ts +0 -22
  428. package/Navigation/NavigationSubMenu.js +0 -50
  429. package/Notification/Notification.d.ts +0 -54
  430. package/Notification/Notification.js +0 -76
  431. package/Notification/index.d.ts +0 -3
  432. package/Notification/index.js +0 -1
  433. package/PageToolbar/PageToolbar.d.ts +0 -114
  434. package/PageToolbar/PageToolbar.js +0 -23
  435. package/PageToolbar/index.d.ts +0 -2
  436. package/PageToolbar/index.js +0 -1
  437. package/PageToolbar/utils.d.ts +0 -23
  438. package/PageToolbar/utils.js +0 -165
  439. package/Popconfirm/Popconfirm.d.ts +0 -16
  440. package/Popconfirm/Popconfirm.js +0 -15
  441. package/Popconfirm/index.d.ts +0 -2
  442. package/Popconfirm/index.js +0 -1
  443. package/Popover/Popover.d.ts +0 -23
  444. package/Popover/Popover.js +0 -35
  445. package/Popover/index.d.ts +0 -2
  446. package/Popover/index.js +0 -1
  447. package/Provider/ConfigProvider.d.ts +0 -9
  448. package/Provider/ConfigProvider.js +0 -14
  449. package/Provider/context.d.ts +0 -5
  450. package/Provider/context.js +0 -8
  451. package/Provider/index.d.ts +0 -4
  452. package/Provider/index.js +0 -2
  453. package/Select/AutoComplete.d.ts +0 -107
  454. package/Select/AutoComplete.js +0 -114
  455. package/Select/Option.d.ts +0 -18
  456. package/Select/Option.js +0 -45
  457. package/Select/TreeSelect.d.ts +0 -67
  458. package/Select/TreeSelect.js +0 -198
  459. package/Table/components/TableDragHandleCell.d.ts +0 -9
  460. package/Table/components/TableDragHandleCell.js +0 -37
  461. package/Table/hooks/useTableColumns.d.ts +0 -8
  462. package/Table/hooks/useTableColumns.js +0 -91
  463. package/Transition/SlideFade.d.ts +0 -17
  464. package/Transition/SlideFade.js +0 -95
  465. package/Tree/Tree.d.ts +0 -70
  466. package/Tree/Tree.js +0 -139
  467. package/Tree/TreeNode.d.ts +0 -40
  468. package/Tree/TreeNode.js +0 -50
  469. package/Tree/TreeNodeList.d.ts +0 -24
  470. package/Tree/TreeNodeList.js +0 -28
  471. package/Tree/getTreeNodeEntities.d.ts +0 -11
  472. package/Tree/getTreeNodeEntities.js +0 -92
  473. package/Tree/index.d.ts +0 -13
  474. package/Tree/index.js +0 -7
  475. package/Tree/toggleValue.d.ts +0 -4
  476. package/Tree/toggleValue.js +0 -19
  477. package/Tree/traverseTree.d.ts +0 -2
  478. package/Tree/traverseTree.js +0 -11
  479. package/Tree/typings.d.ts +0 -16
  480. package/Tree/useTreeExpandedValue.d.ts +0 -14
  481. package/Tree/useTreeExpandedValue.js +0 -33
  482. package/_internal/SlideFadeOverlay/SlideFadeOverlay.d.ts +0 -20
  483. package/_internal/SlideFadeOverlay/SlideFadeOverlay.js +0 -37
  484. package/_internal/SlideFadeOverlay/index.d.ts +0 -2
  485. package/_internal/SlideFadeOverlay/index.js +0 -1
  486. /package/{_internal/SlideFadeOverlay → hooks}/useTopStack.d.ts +0 -0
  487. /package/{_internal/SlideFadeOverlay → hooks}/useTopStack.js +0 -0
@@ -1,5 +1,13 @@
1
+ import React from 'react';
1
2
  import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
3
+ import { AccordionTitleProps } from './AccordionTitle';
2
4
  export interface AccordionProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'onChange'> {
5
+ /**
6
+ * The content of the component. <br />
7
+ * The first child will be treated as the title of the accordion, and the rest will be treated as the content of the accordion.
8
+ * You can also use `title` prop to set the title of the accordion, then all children will be treated as the content of the accordion.
9
+ */
10
+ children: React.ReactNode;
3
11
  /**
4
12
  * If true, expands the accordion by default.
5
13
  * @default false
@@ -18,6 +26,20 @@ export interface AccordionProps extends Omit<NativeElementPropsWithoutKeyAndRef<
18
26
  * Callback fired when the expand/collapse state is changed.
19
27
  */
20
28
  onChange?(e: boolean): void;
29
+ /**
30
+ * The size of accordion.
31
+ * @default 'main'
32
+ */
33
+ size?: 'main' | 'sub';
34
+ /**
35
+ * The title of accordion.
36
+ */
37
+ title?: string;
38
+ /**
39
+ * The actions displayed on the right side of the accordion title. <br />
40
+ * Only `Button` or `Dropdown` is allowed.
41
+ */
42
+ actions?: AccordionTitleProps['actions'];
21
43
  }
22
- declare const Accordion: import("react").ForwardRefExoticComponent<AccordionProps & import("react").RefAttributes<HTMLDivElement>>;
44
+ declare const Accordion: React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
23
45
  export default Accordion;
@@ -1,12 +1,54 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { forwardRef, useState, useCallback, Children, useMemo } from 'react';
2
+ import React, { forwardRef, useState, useCallback, useMemo, cloneElement } from 'react';
3
3
  import { accordionClasses } from '@mezzanine-ui/core/accordion';
4
4
  import { AccordionControlContext } from './AccordionControlContext.js';
5
+ import { MOTION_EASING, MOTION_DURATION } from '@mezzanine-ui/system/motion';
6
+ import AccordionTitle from './AccordionTitle.js';
7
+ import { flattenChildren } from '../utils/flatten-children.js';
8
+ import AccordionContent from './AccordionContent.js';
9
+ import Fade from '../Transition/Fade.js';
5
10
  import cx from 'clsx';
6
11
 
12
+ const resolveChildren = (children) => {
13
+ let title = null;
14
+ let content = null;
15
+ const restContentChildren = [];
16
+ flattenChildren(children).forEach((child) => {
17
+ if (React.isValidElement(child) && child.type === AccordionTitle) {
18
+ if (title) {
19
+ console.warn('[Mezzanine][Accordion] Only one AccordionTitle is allowed as children of Accordion.');
20
+ }
21
+ title = child;
22
+ }
23
+ else if (React.isValidElement(child) && child.type === AccordionContent) {
24
+ if (content) {
25
+ console.warn('[Mezzanine][Accordion] Only one AccordionContent is allowed as children of Accordion.');
26
+ }
27
+ content = child;
28
+ }
29
+ else {
30
+ restContentChildren.push(child);
31
+ }
32
+ });
33
+ if (restContentChildren.length > 0) {
34
+ if (content || title) {
35
+ console.warn('[Mezzanine][Accordion] When <AccordionTitle> or <AccordionContent> is used as children. Please wrap other children with AccordionContent.');
36
+ }
37
+ if (!content) {
38
+ content = jsx(AccordionContent, {});
39
+ }
40
+ content = cloneElement(content, {
41
+ children: [content.props.children, ...restContentChildren],
42
+ });
43
+ }
44
+ return {
45
+ title,
46
+ content,
47
+ };
48
+ };
7
49
  const Accordion = forwardRef(function Accordion(props, ref) {
8
- const { className, children: childrenProp, defaultExpanded = false, disabled = false, expanded: expandedProp, onChange, ...rest } = props;
9
- const [expanded, toggleExpanded] = useState(defaultExpanded || false);
50
+ const { actions, children: childrenProp, className, defaultExpanded = false, disabled = false, expanded: expandedProp, onChange, size = 'main', title, ...rest } = props;
51
+ const [expanded, toggleExpanded] = useState(defaultExpanded !== null && defaultExpanded !== void 0 ? defaultExpanded : false);
10
52
  const onToggleExpanded = useCallback((newStatus) => {
11
53
  if (typeof onChange === 'function') {
12
54
  onChange(newStatus);
@@ -15,20 +57,26 @@ const Accordion = forwardRef(function Accordion(props, ref) {
15
57
  toggleExpanded(newStatus);
16
58
  }
17
59
  }, [onChange]);
18
- const [summary, ...children] = Children.toArray(childrenProp);
60
+ const { title: resolvedTitle, content: resolvedContent } = useMemo(() => resolveChildren(childrenProp), [childrenProp]);
19
61
  const contextValue = useMemo(() => {
20
- var _a, _b;
62
+ var _a, _b, _c;
21
63
  return ({
22
- detailsId: ((_a = summary === null || summary === void 0 ? void 0 : summary.props) === null || _a === void 0 ? void 0 : _a.id)
23
- ? `${summary.props.id}-details`
64
+ contentId: resolvedTitle && ((_a = resolvedTitle === null || resolvedTitle === void 0 ? void 0 : resolvedTitle.props) === null || _a === void 0 ? void 0 : _a.id)
65
+ ? `${resolvedTitle.props.id}-content`
24
66
  : undefined,
25
67
  disabled,
26
- expanded: expandedProp || expanded,
27
- summaryId: (_b = summary === null || summary === void 0 ? void 0 : summary.props) === null || _b === void 0 ? void 0 : _b.id,
68
+ expanded: expandedProp !== null && expandedProp !== void 0 ? expandedProp : expanded,
69
+ titleId: (_c = (resolvedTitle && ((_b = resolvedTitle === null || resolvedTitle === void 0 ? void 0 : resolvedTitle.props) === null || _b === void 0 ? void 0 : _b.id))) !== null && _c !== void 0 ? _c : undefined,
28
70
  toggleExpanded: onToggleExpanded,
29
71
  });
30
- }, [disabled, expandedProp, expanded, onToggleExpanded, summary]);
31
- return (jsx("div", { ...rest, ref: ref, className: cx(accordionClasses.host, className), children: jsxs(AccordionControlContext.Provider, { value: contextValue, children: [summary, children] }) }));
72
+ }, [disabled, expandedProp, expanded, onToggleExpanded, resolvedTitle]);
73
+ return (jsx("div", { ...rest, ref: ref, className: cx(accordionClasses.host, accordionClasses.size(size), className), children: jsxs(AccordionControlContext.Provider, { value: contextValue, children: [title ? (jsx(AccordionTitle, { actions: actions, children: title })) : (resolvedTitle), jsx(Fade, { duration: {
74
+ enter: MOTION_DURATION.moderate,
75
+ exit: MOTION_DURATION.moderate,
76
+ }, easing: {
77
+ enter: MOTION_EASING.entrance,
78
+ exit: MOTION_EASING.exit,
79
+ }, in: expandedProp !== null && expandedProp !== void 0 ? expandedProp : expanded, children: jsx("div", { children: resolvedContent }) })] }) }));
32
80
  });
33
81
 
34
82
  export { Accordion as default };
@@ -0,0 +1,13 @@
1
+ import { ReactElement } from 'react';
2
+ import { ButtonGroupProps, ButtonProps } from '../Button';
3
+ import { DropdownProps } from '../Dropdown';
4
+ type AccordionActionsChild = ReactElement<DropdownProps> | ReactElement<ButtonProps> | null | undefined | false;
5
+ export interface AccordionActionsProps extends Omit<ButtonGroupProps, 'children'> {
6
+ /**
7
+ * The content of the component. <br />
8
+ * Only `Button` or `Dropdown` is allowed.
9
+ */
10
+ children?: AccordionActionsChild | AccordionActionsChild[];
11
+ }
12
+ declare const AccordionActions: React.FC<AccordionActionsProps>;
13
+ export default AccordionActions;
@@ -0,0 +1,24 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { isValidElement } from 'react';
4
+ import Button from '../Button/Button.js';
5
+ import ButtonGroup from '../Button/ButtonGroup.js';
6
+ import { flattenChildren } from '../utils/flatten-children.js';
7
+ import { accordionClasses } from '@mezzanine-ui/core/accordion';
8
+ import Dropdown from '../Dropdown/Dropdown.js';
9
+ import cx from 'clsx';
10
+
11
+ const AccordionActions = ({ children, className, ...rest }) => {
12
+ const filteredChildren = flattenChildren(children).map((child) => {
13
+ if (isValidElement(child) &&
14
+ child.type !== Button &&
15
+ child.type !== Dropdown) {
16
+ console.warn('[Mezzanine][Accordion] Only Button or Dropdown is allowed as the child of AccordionActions.');
17
+ return null;
18
+ }
19
+ return child;
20
+ });
21
+ return (jsx(ButtonGroup, { className: cx(accordionClasses.titleActions, className), ...rest, children: filteredChildren }));
22
+ };
23
+
24
+ export { AccordionActions as default };
@@ -0,0 +1,9 @@
1
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
2
+ export interface AccordionContentProps extends NativeElementPropsWithoutKeyAndRef<'div'> {
3
+ /**
4
+ * If true, expands the content, otherwise collapse it.
5
+ */
6
+ expanded?: boolean;
7
+ }
8
+ declare const AccordionContent: import("react").ForwardRefExoticComponent<AccordionContentProps & import("react").RefAttributes<HTMLDivElement>>;
9
+ export default AccordionContent;
@@ -6,9 +6,9 @@ import { AccordionControlContext } from './AccordionControlContext.js';
6
6
  import Collapse from '../Transition/Collapse.js';
7
7
  import cx from 'clsx';
8
8
 
9
- const AccordionDetails = forwardRef(function AccordionDetails(props, ref) {
9
+ const AccordionContent = forwardRef(function AccordionContent(props, ref) {
10
10
  const { className, children, expanded: expandedProp, ...rest } = props;
11
- const { detailsId, expanded, summaryId } = useContext(AccordionControlContext) || {};
11
+ const { contentId: detailsId, expanded, titleId: summaryId, } = useContext(AccordionControlContext) || {};
12
12
  const ariaProps = useMemo(() => {
13
13
  if (summaryId && detailsId) {
14
14
  return {
@@ -18,9 +18,7 @@ const AccordionDetails = forwardRef(function AccordionDetails(props, ref) {
18
18
  }
19
19
  return {};
20
20
  }, [summaryId, detailsId]);
21
- return (jsx(Collapse, { style: { width: '100%' }, in: expandedProp || expanded, children: jsx("div", { ...rest, ...ariaProps, ref: ref, className: cx(accordionClasses.details, {
22
- [accordionClasses.detailsExpanded]: expandedProp || expanded,
23
- }, className), role: "region", children: children }) }));
21
+ return (jsx(Collapse, { style: { width: '100%' }, in: expandedProp || expanded, children: jsx("div", { ...rest, ...ariaProps, ref: ref, className: cx(accordionClasses.content, className), role: "region", children: children }) }));
24
22
  });
25
23
 
26
- export { AccordionDetails as default };
24
+ export { AccordionContent as default };
@@ -1,8 +1,8 @@
1
1
  export interface AccordionControlContextValue {
2
- detailsId?: string;
2
+ contentId?: string;
3
3
  disabled: boolean;
4
4
  expanded: boolean;
5
- summaryId?: string;
5
+ titleId?: string;
6
6
  toggleExpanded(e: boolean): void;
7
7
  }
8
8
  export declare const AccordionControlContext: import("react").Context<AccordionControlContextValue | undefined>;
@@ -0,0 +1,10 @@
1
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
2
+ export interface AccordionGroupProps extends NativeElementPropsWithoutKeyAndRef<'div'> {
3
+ /**
4
+ * The size of accordion group, which will be passed to each Accordion in the group.
5
+ * @default 'main'
6
+ */
7
+ size?: 'main' | 'sub';
8
+ }
9
+ declare const AccordionGroup: import("react").ForwardRefExoticComponent<AccordionGroupProps & import("react").RefAttributes<HTMLDivElement>>;
10
+ export default AccordionGroup;
@@ -0,0 +1,26 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useMemo, isValidElement } from 'react';
4
+ import { accordionGroupClasses } from '@mezzanine-ui/core/accordion';
5
+ import { flattenChildren } from '../utils/flatten-children.js';
6
+ import Accordion from './Accordion.js';
7
+ import cx from 'clsx';
8
+
9
+ const AccordionGroup = forwardRef(function AccordionGroup(props, ref) {
10
+ const { className, children, size, ...rest } = props;
11
+ const childrenWithSize = useMemo(() => flattenChildren(children).map((child) => {
12
+ if (isValidElement(child) && child.type === Accordion) {
13
+ return {
14
+ ...child,
15
+ props: {
16
+ ...child.props,
17
+ size,
18
+ },
19
+ };
20
+ }
21
+ return child;
22
+ }), [children, size]);
23
+ return (jsx("div", { ...rest, ref: ref, className: cx(accordionGroupClasses.host, className), children: childrenWithSize }));
24
+ });
25
+
26
+ export { AccordionGroup as default };
@@ -0,0 +1,14 @@
1
+ import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
2
+ import { AccordionActionsProps } from './AccordionActions';
3
+ export interface AccordionTitleProps extends NativeElementPropsWithoutKeyAndRef<'div'> {
4
+ /**
5
+ * Custom ChevronRight icon className.
6
+ */
7
+ iconClassName?: string;
8
+ /**
9
+ * Custom suffix actions.
10
+ */
11
+ actions?: AccordionActionsProps;
12
+ }
13
+ declare const AccordionTitle: import("react").ForwardRefExoticComponent<AccordionTitleProps & import("react").RefAttributes<HTMLDivElement>>;
14
+ export default AccordionTitle;
@@ -0,0 +1,56 @@
1
+ 'use client';
2
+ import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { forwardRef, useContext, useCallback, useMemo, isValidElement } from 'react';
4
+ import { ChevronRightIcon } from '@mezzanine-ui/icons';
5
+ import { accordionClasses } from '@mezzanine-ui/core/accordion';
6
+ import { AccordionControlContext } from './AccordionControlContext.js';
7
+ import { flattenChildren } from '../utils/flatten-children.js';
8
+ import AccordionActions from './AccordionActions.js';
9
+ import Rotate from '../Transition/Rotate.js';
10
+ import Icon from '../Icon/Icon.js';
11
+ import cx from 'clsx';
12
+
13
+ const resolveChildren = (children) => {
14
+ const mainPartChildren = [];
15
+ const actionsChildren = [];
16
+ flattenChildren(children).forEach((child) => {
17
+ if (isValidElement(child) && child.type === AccordionActions) {
18
+ actionsChildren.push(child);
19
+ }
20
+ else {
21
+ mainPartChildren.push(child);
22
+ }
23
+ });
24
+ return { mainPartChildren, actionsChildren };
25
+ };
26
+ const AccordionTitle = forwardRef(function AccordionTitle(props, ref) {
27
+ const { className, children, iconClassName: iconClassNameProp, actions: suffixActions, ...rest } = props;
28
+ const { contentId, disabled, expanded, toggleExpanded } = useContext(AccordionControlContext) || {};
29
+ const onToggle = useCallback((e) => {
30
+ e.stopPropagation();
31
+ if (typeof toggleExpanded === 'function' && !disabled) {
32
+ toggleExpanded(!expanded);
33
+ }
34
+ }, [disabled, expanded, toggleExpanded]);
35
+ const ariaProps = useMemo(() => {
36
+ let result = {
37
+ 'aria-expanded': expanded,
38
+ };
39
+ if (contentId) {
40
+ result = {
41
+ ...result,
42
+ 'aria-controls': contentId,
43
+ };
44
+ }
45
+ return result;
46
+ }, [contentId, expanded]);
47
+ const { mainPartChildren, actionsChildren } = useMemo(() => resolveChildren(children), [children]);
48
+ return (jsxs("div", { ...rest, ref: ref, className: cx(accordionClasses.title, {
49
+ [accordionClasses.titleExpanded]: expanded,
50
+ [accordionClasses.titleDisabled]: disabled,
51
+ }, className), children: [jsxs("button", { className: accordionClasses.titleMainPart, disabled: disabled, onClick: onToggle, type: "button", ...ariaProps, children: [jsx(Rotate, { in: expanded, degrees: -90, children: jsx(Icon, { size: 16, className: cx(accordionClasses.titleIcon, {
52
+ [accordionClasses.titleIconDisabled]: disabled,
53
+ }, iconClassNameProp), icon: ChevronRightIcon }) }), mainPartChildren] }), suffixActions ? (jsx(AccordionActions, { ...suffixActions })) : (actionsChildren)] }));
54
+ });
55
+
56
+ export { AccordionTitle as default };
@@ -1,6 +1,10 @@
1
1
  export type { AccordionProps } from './Accordion';
2
2
  export { default } from './Accordion';
3
- export { default as AccordionSummary } from './AccordionSummary';
4
- export type { AccordionSummaryProps } from './AccordionSummary';
5
- export { default as AccordionDetails } from './AccordionDetails';
6
- export type { AccordionDetailsProps } from './AccordionDetails';
3
+ export { default as AccordionTitle } from './AccordionTitle';
4
+ export type { AccordionTitleProps } from './AccordionTitle';
5
+ export { default as AccordionContent } from './AccordionContent';
6
+ export type { AccordionContentProps } from './AccordionContent';
7
+ export { default as AccordionActions } from './AccordionActions';
8
+ export type { AccordionActionsProps } from './AccordionActions';
9
+ export { default as AccordionGroup } from './AccordionGroup';
10
+ export type { AccordionGroupProps } from './AccordionGroup';
@@ -1,3 +1,5 @@
1
1
  export { default } from './Accordion.js';
2
- export { default as AccordionSummary } from './AccordionSummary.js';
3
- export { default as AccordionDetails } from './AccordionDetails.js';
2
+ export { default as AccordionTitle } from './AccordionTitle.js';
3
+ export { default as AccordionContent } from './AccordionContent.js';
4
+ export { default as AccordionActions } from './AccordionActions.js';
5
+ export { default as AccordionGroup } from './AccordionGroup.js';
@@ -1,30 +1,63 @@
1
- import { NativeElementPropsWithoutKeyAndRef } from '../utils/jsx-types';
2
- export interface AnchorProps extends Omit<NativeElementPropsWithoutKeyAndRef<'div'>, 'onClick'> {
3
- /** The current active anchor ID */
4
- activeAnchorId?: string;
5
- /** Whether apply ellipsis or not
6
- * @default false
1
+ import { ReactElement } from 'react';
2
+ import { AnchorItemData } from './AnchorItem';
3
+ export interface AnchorPropsWithAnchors {
4
+ /**
5
+ * ```tsx
6
+ * interface AnchorItemData {
7
+ * autoScrollTo?: boolean;
8
+ * children?: AnchorItemData[];
9
+ * disabled?: boolean;
10
+ * href: string;
11
+ * id: string;
12
+ * name: string;
13
+ * onClick?: VoidFunction;
14
+ * title?: string;
15
+ * }
16
+ * ```
17
+ */
18
+ anchors: AnchorItemData[];
19
+ children?: never;
20
+ }
21
+ export interface AnchorPropsWithChildren {
22
+ anchors?: never;
23
+ /**
24
+ * Whether to enable smooth scrolling to the target element when clicked.
25
+ */
26
+ autoScrollTo?: boolean;
27
+ /**
28
+ * Use nested `<Anchor>` components to create hierarchical navigation. <br />
29
+ * Only accepts `<Anchor>` components and text content as children. <br />
30
+ * ```tsx
31
+ * <AnchorGroup>
32
+ * <Anchor href="#acr1">ACR 1</Anchor>
33
+ * <Anchor href="#acr2">
34
+ * anchor 2
35
+ * <Anchor href="#acr2-1">ACR 2-1</Anchor>
36
+ * <Anchor href="#acr2-2">ACR 2-2</Anchor>
37
+ * </Anchor>
38
+ * </AnchorGroup>
39
+ * ```
7
40
  */
8
- ellipsis?: boolean;
41
+ children: string | ReactElement<AnchorPropsWithChildren, typeof Anchor> | Array<string | ReactElement<AnchorPropsWithChildren, typeof Anchor>>;
9
42
  /**
10
- * Anchor list.
43
+ * Whether the anchor is disabled.<br>
44
+ * If parent anchor is disabled, all its children will be disabled too. <br />
11
45
  */
12
- list: {
13
- id: string;
14
- name: string;
15
- }[];
46
+ disabled?: boolean;
16
47
  /**
17
- * The maximum width for anchor container. This might be useful when you need to set `ellipsis: true`.
48
+ * Required when used as child component.
18
49
  */
19
- maxWidth?: number;
50
+ href?: string;
20
51
  /**
21
52
  * Trigger when user click on any anchor.
22
53
  */
23
- onClick?: (nextAnchorId: string) => void;
54
+ onClick?: VoidFunction;
55
+ title?: string;
24
56
  }
57
+ export type AnchorProps = AnchorPropsWithAnchors | AnchorPropsWithChildren;
25
58
  /**
26
- * The react component for `mezzanine` anchor.
27
- * This component should always be full width of its parent.
59
+ * The `mezzanine` Anchor component provides navigation menu for page sections with automatic hash tracking.
60
+ * Nested structure supports up to 3 levels; deeper levels will be ignored.
28
61
  */
29
- declare const Anchor: import("react").ForwardRefExoticComponent<AnchorProps & import("react").RefAttributes<HTMLDivElement>>;
62
+ declare function Anchor(props: AnchorProps): import("react/jsx-runtime").JSX.Element;
30
63
  export default Anchor;
package/Anchor/Anchor.js CHANGED
@@ -1,20 +1,20 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { forwardRef } from 'react';
3
- import { anchorClasses } from '@mezzanine-ui/core/anchor';
4
- import Typography from '../Typography/Typography.js';
5
- import cx from 'clsx';
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { Fragment } from 'react';
4
+ import AnchorItem from './AnchorItem.js';
5
+ import { parseChildren } from './utils.js';
6
6
 
7
7
  /**
8
- * The react component for `mezzanine` anchor.
9
- * This component should always be full width of its parent.
8
+ * The `mezzanine` Anchor component provides navigation menu for page sections with automatic hash tracking.
9
+ * Nested structure supports up to 3 levels; deeper levels will be ignored.
10
10
  */
11
- const Anchor = forwardRef(function Anchor(props, ref) {
12
- const { activeAnchorId, className, ellipsis = false, list, maxWidth, onClick, style, ...rest } = props;
13
- const resolvedStyle = {
14
- ...(style || {}),
15
- ...(maxWidth ? { maxWidth: `${maxWidth}px` } : {}),
16
- };
17
- return (jsxs("div", { ref: ref, className: cx(anchorClasses.host, className), style: resolvedStyle, ...rest, children: [jsx("div", { className: anchorClasses.bar }), list.map((anchor) => (jsx("button", { type: "button", onClick: () => onClick === null || onClick === void 0 ? void 0 : onClick(anchor.id), className: cx(anchorClasses.anchor, activeAnchorId === anchor.id && anchorClasses.anchorActive), children: jsx(Typography, { variant: "input3", color: "inherit", ellipsis: ellipsis, children: anchor.name }) }, anchor.id)))] }));
18
- });
11
+ function Anchor(props) {
12
+ const anchorItems = 'anchors' in props && props.anchors
13
+ ? props.anchors
14
+ : 'children' in props && props.children
15
+ ? parseChildren(props.children, Anchor)
16
+ : [];
17
+ return (jsx(Fragment, { children: anchorItems.map((anchorItem) => (jsx(AnchorItem, { autoScrollTo: anchorItem.autoScrollTo, disabled: anchorItem.disabled, href: anchorItem.href, id: anchorItem.id, name: anchorItem.name, onClick: anchorItem.onClick, subAnchors: anchorItem.children, title: anchorItem.title }, anchorItem.id))) }));
18
+ }
19
19
 
20
20
  export { Anchor as default };
@@ -0,0 +1,34 @@
1
+ import { ReactElement } from 'react';
2
+ import Anchor from './Anchor';
3
+ import type { AnchorPropsWithAnchors, AnchorPropsWithChildren } from './Anchor';
4
+ type AnchorElement = ReactElement<AnchorPropsWithChildren, typeof Anchor>;
5
+ type AnchorChildren = AnchorElement | AnchorElement[];
6
+ export type AnchorGroupPropsWithAnchors = AnchorPropsWithAnchors;
7
+ export interface AnchorGroupPropsWithChildren {
8
+ anchors?: never;
9
+ children: AnchorChildren;
10
+ }
11
+ type AnchorGroupBaseProps = AnchorGroupPropsWithAnchors | AnchorGroupPropsWithChildren;
12
+ export type AnchorGroupProps = AnchorGroupBaseProps & {
13
+ className?: string;
14
+ };
15
+ /**
16
+ * The `mezzanine` AnchorGroup component renders a group of anchor links,
17
+ * configured via an `anchors` prop or parsed from `Anchor` child components.
18
+ *
19
+ * ```tsx
20
+ * <AnchorGroup>
21
+ * <Anchor href="#section1">Section 1</Anchor>
22
+ * <Anchor href="#section2">Section 2</Anchor>
23
+ * </AnchorGroup>
24
+ * ```
25
+ *
26
+ * ```tsx
27
+ * <AnchorGroup anchors={[
28
+ * { id: 'section1', name: 'Section 1', href: '#section1' },
29
+ * { id: 'section2', name: 'Section 2', href: '#section2' }
30
+ * ]} />
31
+ * ```
32
+ */
33
+ declare const AnchorGroup: import("react").ForwardRefExoticComponent<AnchorGroupProps & import("react").RefAttributes<HTMLDivElement>>;
34
+ export default AnchorGroup;
@@ -0,0 +1,37 @@
1
+ 'use client';
2
+ import { jsx } from 'react/jsx-runtime';
3
+ import { forwardRef } from 'react';
4
+ import { anchorClasses } from '@mezzanine-ui/core/anchor';
5
+ import Anchor from './Anchor.js';
6
+ import { parseChildren } from './utils.js';
7
+ import cx from 'clsx';
8
+
9
+ /**
10
+ * The `mezzanine` AnchorGroup component renders a group of anchor links,
11
+ * configured via an `anchors` prop or parsed from `Anchor` child components.
12
+ *
13
+ * ```tsx
14
+ * <AnchorGroup>
15
+ * <Anchor href="#section1">Section 1</Anchor>
16
+ * <Anchor href="#section2">Section 2</Anchor>
17
+ * </AnchorGroup>
18
+ * ```
19
+ *
20
+ * ```tsx
21
+ * <AnchorGroup anchors={[
22
+ * { id: 'section1', name: 'Section 1', href: '#section1' },
23
+ * { id: 'section2', name: 'Section 2', href: '#section2' }
24
+ * ]} />
25
+ * ```
26
+ */
27
+ const AnchorGroup = forwardRef(function AnchorGroup(props, ref) {
28
+ const { className } = props;
29
+ const anchorItems = 'anchors' in props && props.anchors
30
+ ? props.anchors
31
+ : 'children' in props && props.children
32
+ ? parseChildren(props.children, Anchor)
33
+ : [];
34
+ return (jsx("div", { ref: ref, className: cx(anchorClasses.host, className), children: jsx(Anchor, { anchors: anchorItems }) }));
35
+ });
36
+
37
+ export { AnchorGroup as default };
@@ -0,0 +1,30 @@
1
+ export interface AnchorItemData {
2
+ autoScrollTo?: boolean;
3
+ children?: AnchorItemData[];
4
+ disabled?: boolean;
5
+ href: string;
6
+ id: string;
7
+ name: string;
8
+ onClick?: VoidFunction;
9
+ title?: string;
10
+ }
11
+ export interface AnchorItemProps {
12
+ autoScrollTo?: boolean;
13
+ className?: string;
14
+ disabled?: boolean;
15
+ href: string;
16
+ id: string;
17
+ level?: number;
18
+ name: string;
19
+ onClick?: VoidFunction;
20
+ parentAutoScrollTo?: boolean;
21
+ parentDisabled?: boolean;
22
+ subAnchors?: AnchorItemData[];
23
+ title?: string;
24
+ }
25
+ /**
26
+ * Individual anchor link with hash tracking and smooth scrolling.
27
+ * Tracks active state from URL hash and inherits disabled state from parent.
28
+ */
29
+ declare function AnchorItem({ autoScrollTo, className, disabled, href, id: _id, level, name, onClick, parentAutoScrollTo, parentDisabled, subAnchors, title, }: AnchorItemProps): import("react/jsx-runtime").JSX.Element;
30
+ export default AnchorItem;
@@ -0,0 +1,65 @@
1
+ 'use client';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+ import { useState, useEffect } from 'react';
4
+ import { anchorClasses } from '@mezzanine-ui/core/anchor';
5
+ import Typography from '../Typography/Typography.js';
6
+ import cx from 'clsx';
7
+
8
+ const MAX_CHILDREN_PER_LEVEL = 3;
9
+ /**
10
+ * Custom hook to track window.location.hash changes
11
+ */
12
+ function useHash() {
13
+ const [hash, setHash] = useState(() => typeof window !== 'undefined' ? window.location.hash : '');
14
+ useEffect(() => {
15
+ const handleHashChange = () => {
16
+ setHash(window.location.hash);
17
+ };
18
+ window.addEventListener('hashchange', handleHashChange);
19
+ return () => {
20
+ window.removeEventListener('hashchange', handleHashChange);
21
+ };
22
+ }, []);
23
+ return hash;
24
+ }
25
+ /**
26
+ * Individual anchor link with hash tracking and smooth scrolling.
27
+ * Tracks active state from URL hash and inherits disabled state from parent.
28
+ */
29
+ function AnchorItem({ autoScrollTo, className, disabled, href, id: _id, level = 1, name, onClick, parentAutoScrollTo = false, parentDisabled = false, subAnchors, title, }) {
30
+ const renderableChildren = subAnchors && subAnchors.length > 0 && level < MAX_CHILDREN_PER_LEVEL
31
+ ? subAnchors.slice(0, MAX_CHILDREN_PER_LEVEL)
32
+ : undefined;
33
+ const currentHash = useHash();
34
+ const hashIndex = href.indexOf('#');
35
+ const itemHash = hashIndex !== -1 ? href.slice(hashIndex) : '';
36
+ const isActive = itemHash && currentHash === itemHash;
37
+ const isAutoScrollTo = parentAutoScrollTo || autoScrollTo;
38
+ const isDisabled = parentDisabled || disabled;
39
+ const handleClick = (event) => {
40
+ if (isDisabled) {
41
+ event.preventDefault();
42
+ return;
43
+ }
44
+ // If href contains a hash, handle navigation manually to ensure hashchange event fires
45
+ if (itemHash && typeof window !== 'undefined') {
46
+ event.preventDefault();
47
+ // Update the hash in the URL only if it's different
48
+ if (window.location.hash !== itemHash) {
49
+ window.history.pushState(null, '', itemHash);
50
+ window.dispatchEvent(new HashChangeEvent('hashchange'));
51
+ }
52
+ // Scroll to the target element if it exists and autoScrollTo is enabled
53
+ if (isAutoScrollTo) {
54
+ const targetElement = document.querySelector(itemHash);
55
+ if (targetElement) {
56
+ targetElement.scrollIntoView({ behavior: 'smooth', block: 'start' });
57
+ }
58
+ }
59
+ }
60
+ onClick === null || onClick === void 0 ? void 0 : onClick();
61
+ };
62
+ return (jsxs(Fragment, { children: [jsx("a", { "aria-disabled": isDisabled, className: cx(anchorClasses.anchorItem, isActive && anchorClasses.anchorItemActive, isDisabled && anchorClasses.anchorItemDisabled, className), href: href, onClick: handleClick, tabIndex: isDisabled ? -1 : undefined, title: title, children: jsx(Typography, { color: "inherit", variant: "label-primary", children: name }) }), renderableChildren && (jsx("div", { className: anchorClasses.nested, children: renderableChildren.map((child) => (jsx(AnchorItem, { autoScrollTo: child.autoScrollTo, className: cx(level === 1 && anchorClasses.nestedLevel1, level === 2 && anchorClasses.nestedLevel2), disabled: child.disabled, href: child.href, id: child.id, level: level + 1, name: child.name, onClick: child.onClick, parentAutoScrollTo: isAutoScrollTo, parentDisabled: isDisabled, subAnchors: child.children, title: child.title }, child.id))) }))] }));
63
+ }
64
+
65
+ export { AnchorItem as default };