@react-fabric/core 1.0.0-beta.9 → 1.0.2

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 (592) hide show
  1. package/{src/components/actionLabel/ActionLabel.module.css → css/components/_actionLabel.css} +4 -4
  2. package/{src/overlays/alert/Alert.module.css → css/components/_alert.css} +3 -3
  3. package/css/components/_animations.css +52 -0
  4. package/css/components/_avatar.css +89 -0
  5. package/css/components/_button.css +218 -0
  6. package/css/components/_buttonGroup.css +62 -0
  7. package/css/components/_callout.css +32 -0
  8. package/css/components/_card.css +167 -0
  9. package/css/components/_chip.css +125 -0
  10. package/css/components/_collapsable.css +32 -0
  11. package/{src/overlays/message/Message.module.css → css/components/_divider.css} +11 -10
  12. package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +3 -2
  13. package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +15 -9
  14. package/css/components/_media.css +102 -0
  15. package/{src/components/menu/Menu.module.css → css/components/_menu.css} +21 -20
  16. package/{src/components/meter/Meter.module.css → css/components/_meter.css} +15 -20
  17. package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +9 -9
  18. package/{src/components/panel/Panel.module.css → css/components/_panel.css} +19 -19
  19. package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
  20. package/css/components/_sonner.css +431 -0
  21. package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +125 -85
  22. package/css/components/_titlebar.css +48 -0
  23. package/css/components/index.css +47 -0
  24. package/css/core/_aside.css +176 -0
  25. package/css/core/_content.css +31 -0
  26. package/css/core/_errorboundary.css +55 -0
  27. package/css/core/_responsive.css +45 -0
  28. package/css/core/_typography.css +69 -0
  29. package/css/core/_viewport.css +33 -0
  30. package/{src/hooks/useClientService.tsx → css/core/index.css} +7 -7
  31. package/css/reset/_gradients.css +36 -33
  32. package/css/reset/_reset.css +206 -300
  33. package/css/reset/_text.css +31 -61
  34. package/css/reset/_theme.css +467 -81
  35. package/css/reset/index.css +23 -21
  36. package/css/styles.css +30 -23
  37. package/css/theme/_colors.css +445 -0
  38. package/css/theme/_utilities.css +528 -0
  39. package/css/theme/_variants.css +128 -0
  40. package/css/theme/index.css +55 -0
  41. package/dist/cjs/components/actionLabel/ActionLabel.js +25 -12
  42. package/dist/cjs/{overlays → components}/alert/Alert.js +76 -53
  43. package/dist/cjs/components/animations/Indicator.js +66 -0
  44. package/dist/cjs/components/animations/Loader.js +77 -0
  45. package/dist/cjs/components/animations/LoadingBars.js +37 -0
  46. package/dist/cjs/components/animations/LoadingLine.js +59 -0
  47. package/dist/cjs/components/animations/LoadingSpinner.js +37 -0
  48. package/dist/cjs/components/animations/Skeleton.js +88 -0
  49. package/dist/cjs/components/avatar/Avatar.js +41 -20
  50. package/dist/cjs/components/avatar/AvatarGroup.js +37 -16
  51. package/dist/cjs/components/badge/Badge.js +90 -68
  52. package/dist/cjs/components/button/Button.js +198 -136
  53. package/dist/cjs/components/button/ButtonGroup.js +86 -21
  54. package/dist/cjs/components/button/ConfirmButton.js +55 -41
  55. package/dist/cjs/components/button/ToggleButtonGroup.js +84 -32
  56. package/dist/cjs/components/callout/Callout.js +56 -25
  57. package/dist/cjs/components/card/Card.js +90 -42
  58. package/dist/cjs/components/card/CardCover.js +38 -27
  59. package/dist/cjs/components/card/FlipContent.js +47 -0
  60. package/dist/cjs/components/chip/Chip.js +80 -37
  61. package/dist/cjs/components/collapsable/Collapsable.js +62 -31
  62. package/dist/cjs/components/divider/Divider.js +58 -24
  63. package/dist/cjs/components/dropdown/Dropdown.js +92 -45
  64. package/dist/cjs/components/dropdown/DropdownTool.js +6 -7
  65. package/dist/cjs/components/effect/GlassEffect.js +259 -0
  66. package/dist/cjs/components/effect/MatteEffect.js +127 -0
  67. package/dist/cjs/components/effect/StyleEffect.js +43 -0
  68. package/dist/cjs/components/empty/EmptyContent.js +37 -49
  69. package/dist/cjs/components/flyout/Flyout.js +170 -0
  70. package/dist/cjs/components/hotkey/HotKey.js +42 -0
  71. package/dist/cjs/components/icon/Icon.js +81 -80
  72. package/dist/cjs/components/media/Media.js +154 -77
  73. package/dist/cjs/components/menu/ContextMenu.js +45 -20
  74. package/dist/cjs/components/menu/Menu.js +98 -38
  75. package/dist/cjs/components/menu/MenuItem.js +102 -74
  76. package/dist/cjs/components/meter/Meter.js +35 -12
  77. package/dist/cjs/components/modal/Modal.js +152 -0
  78. package/dist/cjs/components/navigator/Navigator.js +81 -36
  79. package/dist/cjs/components/panel/Panel.js +115 -60
  80. package/dist/cjs/components/panel/PanelGroup.js +42 -16
  81. package/dist/cjs/components/panel/PanelStack.js +47 -16
  82. package/dist/cjs/components/pillbox/Pillbox.js +118 -0
  83. package/dist/cjs/components/progress/ProgressBar.js +30 -14
  84. package/dist/cjs/components/progress/ProgressCircle.js +27 -11
  85. package/dist/cjs/components/tabpanel/Tab.js +53 -37
  86. package/dist/cjs/components/tabpanel/TabPanel.js +74 -28
  87. package/dist/cjs/components/titlebar/Titlebar.js +52 -0
  88. package/dist/cjs/components/tooltip/Tooltip.js +180 -0
  89. package/dist/cjs/context/Global.js +159 -80
  90. package/dist/cjs/context/ModalManager.js +60 -0
  91. package/dist/cjs/context/context.js +43 -0
  92. package/dist/cjs/core/areaToggle/AreaToggle.js +41 -0
  93. package/dist/cjs/core/aside/Aside.js +178 -83
  94. package/dist/cjs/core/boundary/ErrorBoundary.js +37 -34
  95. package/dist/cjs/core/boundary/ErrorIcon.js +32 -19
  96. package/dist/cjs/core/content/Content.js +26 -37
  97. package/dist/cjs/core/headfoot/HeadFoot.js +133 -35
  98. package/dist/cjs/core/layout/Layout.js +28 -0
  99. package/dist/cjs/core/responsive/Responsive.js +62 -26
  100. package/dist/cjs/core/theme/ThemeProvider.js +35 -41
  101. package/dist/cjs/core/viewport/Viewport.js +26 -22
  102. package/dist/cjs/hooks/useClientService.js +39 -18
  103. package/dist/cjs/hooks/useContextMenu.js +103 -0
  104. package/dist/cjs/hooks/useControlledValue.js +13 -7
  105. package/dist/cjs/hooks/useDebounce.js +37 -21
  106. package/dist/cjs/hooks/useEffectDebugger.js +79 -60
  107. package/dist/cjs/hooks/useIsDark.js +34 -26
  108. package/dist/cjs/hooks/useIsRtl.js +13 -3
  109. package/dist/cjs/hooks/useNavigator.js +12 -9
  110. package/dist/cjs/hooks/useNotificationService.js +199 -0
  111. package/dist/cjs/hooks/useOverlayService.js +82 -41
  112. package/dist/cjs/hooks/usePropState.js +41 -0
  113. package/dist/cjs/hooks/usePropToggle.js +32 -26
  114. package/dist/cjs/hooks/useResize.js +47 -38
  115. package/dist/cjs/hooks/useResizeObserver.js +26 -7
  116. package/dist/cjs/hooks/useStorage.js +29 -16
  117. package/dist/cjs/i18n/index.js +25 -23
  118. package/dist/cjs/index.js +142 -94
  119. package/dist/cjs/typography/Abbr.js +43 -20
  120. package/dist/cjs/typography/Anchor.js +39 -0
  121. package/dist/cjs/typography/Copy.js +28 -28
  122. package/dist/cjs/typography/Kbd.js +43 -0
  123. package/dist/cjs/typography/Mark.js +34 -17
  124. package/dist/cjs/typography/Text.js +36 -54
  125. package/dist/cjs/typography/Title.js +17 -40
  126. package/dist/cjs/utils/calculateDimensions.js +38 -23
  127. package/dist/cjs/utils/cloneElement.js +64 -0
  128. package/dist/cjs/{core/section/Section.js → utils/getBadgeProps.js} +25 -21
  129. package/dist/cjs/utils/getColor.js +42 -36
  130. package/dist/cjs/utils/getIconProps.js +63 -0
  131. package/dist/cjs/utils/getTooltipProps.js +66 -0
  132. package/dist/cjs/utils/nodeCheck.js +4 -4
  133. package/dist/esm/components/actionLabel/ActionLabel.js +25 -12
  134. package/dist/esm/{overlays → components}/alert/Alert.js +73 -50
  135. package/dist/esm/components/animations/Indicator.js +66 -0
  136. package/dist/esm/components/animations/Loader.js +77 -0
  137. package/dist/esm/components/animations/LoadingBars.js +37 -0
  138. package/dist/esm/components/animations/LoadingLine.js +59 -0
  139. package/dist/esm/components/animations/LoadingSpinner.js +37 -0
  140. package/dist/esm/components/animations/Skeleton.js +88 -0
  141. package/dist/esm/components/avatar/Avatar.js +42 -21
  142. package/dist/esm/components/avatar/AvatarGroup.js +37 -16
  143. package/dist/esm/components/badge/Badge.js +93 -70
  144. package/dist/esm/components/button/Button.js +199 -137
  145. package/dist/esm/components/button/ButtonGroup.js +87 -22
  146. package/dist/esm/components/button/ConfirmButton.js +58 -44
  147. package/dist/esm/components/button/ToggleButtonGroup.js +86 -34
  148. package/dist/esm/components/callout/Callout.js +56 -25
  149. package/dist/esm/components/card/Card.js +92 -44
  150. package/dist/esm/components/card/CardCover.js +38 -27
  151. package/dist/esm/components/card/FlipContent.js +47 -0
  152. package/dist/esm/components/chip/Chip.js +81 -38
  153. package/dist/esm/components/collapsable/Collapsable.js +63 -32
  154. package/dist/esm/components/divider/Divider.js +59 -25
  155. package/dist/esm/components/dropdown/Dropdown.js +95 -48
  156. package/dist/esm/components/dropdown/DropdownTool.js +6 -7
  157. package/dist/esm/components/effect/GlassEffect.js +259 -0
  158. package/dist/esm/components/effect/MatteEffect.js +127 -0
  159. package/dist/esm/components/effect/StyleEffect.js +43 -0
  160. package/dist/esm/components/empty/EmptyContent.js +38 -50
  161. package/dist/esm/components/flyout/Flyout.js +170 -0
  162. package/dist/esm/components/hotkey/HotKey.js +42 -0
  163. package/dist/esm/components/icon/Icon.js +83 -82
  164. package/dist/esm/components/media/Media.js +156 -79
  165. package/dist/esm/components/menu/ContextMenu.js +46 -21
  166. package/dist/esm/components/menu/Menu.js +101 -41
  167. package/dist/esm/components/menu/MenuItem.js +98 -70
  168. package/dist/esm/components/meter/Meter.js +36 -13
  169. package/dist/esm/components/modal/Modal.js +152 -0
  170. package/dist/esm/components/navigator/Navigator.js +81 -36
  171. package/dist/esm/components/panel/Panel.js +117 -62
  172. package/dist/esm/components/panel/PanelGroup.js +43 -17
  173. package/dist/esm/components/panel/PanelStack.js +48 -17
  174. package/dist/esm/components/pillbox/Pillbox.js +118 -0
  175. package/dist/esm/components/progress/ProgressBar.js +31 -15
  176. package/dist/esm/components/progress/ProgressCircle.js +28 -12
  177. package/dist/esm/components/tabpanel/Tab.js +54 -38
  178. package/dist/esm/components/tabpanel/TabPanel.js +75 -29
  179. package/dist/esm/components/titlebar/Titlebar.js +52 -0
  180. package/dist/esm/components/tooltip/Tooltip.js +180 -0
  181. package/dist/esm/context/Global.js +161 -78
  182. package/dist/esm/context/ModalManager.js +60 -0
  183. package/dist/esm/context/context.js +40 -0
  184. package/dist/esm/core/areaToggle/AreaToggle.js +41 -0
  185. package/dist/esm/core/aside/Aside.js +179 -84
  186. package/dist/esm/core/boundary/ErrorBoundary.js +38 -35
  187. package/dist/esm/core/boundary/ErrorIcon.js +32 -19
  188. package/dist/esm/core/content/Content.js +26 -37
  189. package/dist/esm/core/headfoot/HeadFoot.js +134 -36
  190. package/dist/esm/core/layout/Layout.js +28 -0
  191. package/dist/esm/core/responsive/Responsive.js +62 -26
  192. package/dist/esm/core/theme/ThemeProvider.js +36 -42
  193. package/dist/esm/core/viewport/Viewport.js +26 -22
  194. package/dist/esm/hooks/useClientService.js +39 -18
  195. package/dist/esm/hooks/useContextMenu.js +103 -0
  196. package/dist/esm/hooks/useControlledValue.js +14 -8
  197. package/dist/esm/hooks/useDebounce.js +37 -21
  198. package/dist/esm/hooks/useEffectDebugger.js +81 -62
  199. package/dist/esm/hooks/useIsDark.js +34 -26
  200. package/dist/esm/hooks/useIsRtl.js +13 -3
  201. package/dist/esm/hooks/useNavigator.js +13 -10
  202. package/dist/esm/hooks/useNotificationService.js +199 -0
  203. package/dist/esm/hooks/useOverlayService.js +83 -42
  204. package/dist/esm/hooks/usePropState.js +40 -0
  205. package/dist/esm/hooks/usePropToggle.js +33 -27
  206. package/dist/esm/hooks/useResize.js +48 -39
  207. package/dist/esm/hooks/useResizeObserver.js +27 -8
  208. package/dist/esm/hooks/useStorage.js +30 -17
  209. package/dist/esm/i18n/index.js +23 -21
  210. package/dist/esm/index.js +87 -44
  211. package/dist/esm/typography/Abbr.js +45 -22
  212. package/dist/esm/typography/Anchor.js +39 -0
  213. package/dist/esm/typography/Copy.js +28 -28
  214. package/dist/esm/typography/Kbd.js +43 -0
  215. package/dist/esm/typography/Mark.js +35 -18
  216. package/dist/esm/typography/Text.js +39 -57
  217. package/dist/esm/typography/Title.js +17 -40
  218. package/dist/esm/utils/calculateDimensions.js +38 -23
  219. package/dist/esm/utils/cloneElement.js +64 -0
  220. package/dist/esm/{core/section/Section.js → utils/getBadgeProps.js} +25 -21
  221. package/dist/esm/utils/getColor.js +43 -34
  222. package/dist/esm/utils/getIconProps.js +63 -0
  223. package/dist/esm/utils/getTooltipProps.js +66 -0
  224. package/dist/esm/utils/nodeCheck.js +4 -4
  225. package/dist/types/components/actionLabel/ActionLabel.d.ts +20 -7
  226. package/dist/types/components/alert/Alert.d.ts +74 -0
  227. package/dist/types/components/animations/Indicator.d.ts +57 -0
  228. package/dist/types/components/animations/Loader.d.ts +65 -0
  229. package/dist/types/components/animations/LoadingBars.d.ts +61 -0
  230. package/dist/types/components/animations/LoadingLine.d.ts +43 -0
  231. package/dist/types/components/animations/LoadingSpinner.d.ts +61 -0
  232. package/dist/types/components/animations/Skeleton.d.ts +61 -0
  233. package/dist/types/components/avatar/Avatar.d.ts +70 -19
  234. package/dist/types/components/avatar/AvatarGroup.d.ts +51 -14
  235. package/dist/types/components/badge/Badge.d.ts +64 -14
  236. package/dist/types/components/button/Button.d.ts +72 -55
  237. package/dist/types/components/button/ButtonGroup.d.ts +86 -24
  238. package/dist/types/components/button/ConfirmButton.d.ts +21 -7
  239. package/dist/types/components/button/ToggleButtonGroup.d.ts +88 -44
  240. package/dist/types/components/callout/Callout.d.ts +58 -7
  241. package/dist/types/components/card/Card.d.ts +66 -25
  242. package/dist/types/components/card/CardCover.d.ts +52 -7
  243. package/dist/types/components/card/FlipContent.d.ts +50 -0
  244. package/dist/types/components/chip/Chip.d.ts +72 -20
  245. package/dist/types/components/collapsable/Collapsable.d.ts +55 -15
  246. package/dist/types/components/divider/Divider.d.ts +25 -8
  247. package/dist/types/components/dropdown/Dropdown.d.ts +42 -9
  248. package/dist/types/components/dropdown/DropdownTool.d.ts +22 -4
  249. package/dist/types/components/effect/GlassEffect.d.ts +5 -0
  250. package/dist/types/components/effect/MatteEffect.d.ts +40 -0
  251. package/dist/types/components/effect/StyleEffect.d.ts +27 -0
  252. package/dist/types/components/empty/EmptyContent.d.ts +53 -9
  253. package/dist/types/components/flyout/Flyout.d.ts +60 -0
  254. package/dist/types/components/hotkey/HotKey.d.ts +41 -0
  255. package/dist/types/components/icon/Icon.d.ts +74 -24
  256. package/dist/types/components/media/Media.d.ts +72 -4
  257. package/dist/types/components/menu/ContextMenu.d.ts +22 -5
  258. package/dist/types/components/menu/Menu.d.ts +26 -2
  259. package/dist/types/components/menu/MenuItem.d.ts +19 -4
  260. package/dist/types/components/menu/types.d.ts +23 -14
  261. package/dist/types/components/meter/Meter.d.ts +23 -3
  262. package/dist/types/components/modal/Modal.d.ts +52 -0
  263. package/dist/types/components/navigator/Navigator.d.ts +30 -4
  264. package/dist/types/components/panel/Panel.d.ts +43 -23
  265. package/dist/types/components/panel/PanelGroup.d.ts +22 -3
  266. package/dist/types/components/panel/PanelStack.d.ts +28 -2
  267. package/dist/types/components/pillbox/Pillbox.d.ts +95 -0
  268. package/dist/types/components/progress/ProgressBar.d.ts +19 -4
  269. package/dist/types/components/progress/ProgressCircle.d.ts +18 -4
  270. package/dist/types/components/tabpanel/Tab.d.ts +42 -10
  271. package/dist/types/components/tabpanel/TabPanel.d.ts +47 -7
  272. package/dist/types/components/titlebar/Titlebar.d.ts +54 -0
  273. package/dist/types/components/tooltip/Tooltip.d.ts +76 -0
  274. package/dist/types/context/Global.d.ts +39 -69
  275. package/dist/types/context/ModalManager.d.ts +30 -0
  276. package/dist/types/context/context.d.ts +107 -0
  277. package/dist/types/core/areaToggle/AreaToggle.d.ts +33 -0
  278. package/dist/types/core/aside/Aside.d.ts +75 -20
  279. package/dist/types/core/boundary/ErrorBoundary.d.ts +43 -4
  280. package/dist/types/core/boundary/ErrorIcon.d.ts +38 -1
  281. package/dist/types/core/content/Content.d.ts +38 -6
  282. package/dist/types/core/headfoot/HeadFoot.d.ts +48 -14
  283. package/dist/types/core/layout/Layout.d.ts +38 -0
  284. package/dist/types/core/responsive/Responsive.d.ts +45 -15
  285. package/dist/types/core/theme/ThemeProvider.d.ts +35 -11
  286. package/dist/types/core/viewport/Viewport.d.ts +27 -3
  287. package/dist/types/hooks/useClientService.d.ts +43 -1
  288. package/dist/types/hooks/useContextMenu.d.ts +10 -0
  289. package/dist/types/hooks/useControlledValue.d.ts +28 -4
  290. package/dist/types/hooks/useDebounce.d.ts +38 -2
  291. package/dist/types/hooks/useEffectDebugger.d.ts +73 -4
  292. package/dist/types/hooks/useIsDark.d.ts +6 -0
  293. package/dist/types/hooks/useIsRtl.d.ts +35 -1
  294. package/dist/types/hooks/useNavigator.d.ts +37 -2
  295. package/dist/types/hooks/useNotificationService.d.ts +60 -0
  296. package/dist/types/hooks/useOverlayService.d.ts +28 -8
  297. package/dist/types/hooks/usePropState.d.ts +26 -0
  298. package/dist/types/hooks/usePropToggle.d.ts +41 -7
  299. package/dist/types/hooks/useResize.d.ts +46 -4
  300. package/dist/types/hooks/useResizeObserver.d.ts +45 -3
  301. package/dist/types/hooks/useStorage.d.ts +32 -2
  302. package/dist/types/i18n/index.d.ts +27 -3
  303. package/dist/types/index.d.ts +106 -18
  304. package/dist/types/types/colors.d.ts +29 -0
  305. package/dist/types/types/index.d.ts +216 -76
  306. package/dist/types/typography/Abbr.d.ts +51 -6
  307. package/dist/types/typography/Anchor.d.ts +41 -0
  308. package/dist/types/typography/Copy.d.ts +36 -2
  309. package/dist/types/typography/Kbd.d.ts +40 -0
  310. package/dist/types/typography/Mark.d.ts +44 -7
  311. package/dist/types/typography/Text.d.ts +40 -24
  312. package/dist/types/typography/Title.d.ts +37 -26
  313. package/dist/types/typography/types.d.ts +32 -0
  314. package/dist/types/utils/calculateDimensions.d.ts +50 -6
  315. package/dist/types/utils/cloneElement.d.ts +41 -0
  316. package/dist/types/utils/getBadgeProps.d.ts +16 -0
  317. package/dist/types/utils/getColor.d.ts +43 -4
  318. package/dist/types/utils/getIconProps.d.ts +45 -0
  319. package/dist/types/utils/getTooltipProps.d.ts +47 -0
  320. package/dist/types/utils/index.d.ts +28 -0
  321. package/dist/types/utils/nodeCheck.d.ts +1 -2
  322. package/package.json +30 -21
  323. package/src/components/actionLabel/ActionLabel.tsx +28 -39
  324. package/src/components/alert/Alert.tsx +261 -0
  325. package/src/components/animations/Indicator.tsx +75 -0
  326. package/src/components/animations/Loader.tsx +89 -0
  327. package/src/components/animations/LoadingBars.tsx +70 -0
  328. package/src/components/animations/LoadingLine.tsx +51 -0
  329. package/src/components/animations/LoadingSpinner.tsx +70 -0
  330. package/src/components/animations/Skeleton.tsx +100 -0
  331. package/src/components/avatar/Avatar.tsx +89 -70
  332. package/src/components/avatar/AvatarGroup.tsx +65 -74
  333. package/src/components/badge/Badge.tsx +141 -108
  334. package/src/components/button/Button.tsx +223 -238
  335. package/src/components/button/ButtonGroup.tsx +117 -77
  336. package/src/components/button/ConfirmButton.tsx +60 -90
  337. package/src/components/button/ToggleButtonGroup.tsx +134 -120
  338. package/src/components/callout/Callout.tsx +81 -59
  339. package/src/components/card/Card.tsx +131 -113
  340. package/src/components/card/CardCover.tsx +61 -61
  341. package/src/components/card/FlipContent.tsx +78 -0
  342. package/src/components/chip/Chip.tsx +139 -99
  343. package/src/components/collapsable/Collapsable.tsx +79 -77
  344. package/src/components/divider/Divider.tsx +74 -53
  345. package/src/components/dropdown/Dropdown.tsx +109 -106
  346. package/src/components/dropdown/DropdownTool.tsx +29 -12
  347. package/src/components/effect/GlassEffect.tsx +221 -0
  348. package/src/components/effect/MatteEffect.tsx +99 -0
  349. package/src/components/effect/StyleEffect.tsx +36 -0
  350. package/src/components/empty/EmptyContent.tsx +60 -99
  351. package/src/components/flyout/Flyout.tsx +257 -0
  352. package/src/components/hotkey/HotKey.tsx +57 -0
  353. package/src/components/icon/Icon.tsx +131 -130
  354. package/src/components/media/Media.tsx +184 -154
  355. package/src/components/menu/ContextMenu.tsx +56 -39
  356. package/src/components/menu/Menu.tsx +121 -84
  357. package/src/components/menu/MenuItem.tsx +87 -69
  358. package/src/components/menu/types.ts +23 -28
  359. package/src/components/meter/Meter.tsx +34 -17
  360. package/src/components/modal/Modal.tsx +226 -0
  361. package/src/components/navigator/Navigator.tsx +93 -38
  362. package/src/components/panel/Panel.tsx +123 -131
  363. package/src/components/panel/PanelGroup.tsx +49 -43
  364. package/src/components/panel/PanelStack.tsx +63 -62
  365. package/src/components/pillbox/Pillbox.tsx +208 -0
  366. package/src/components/progress/ProgressBar.tsx +33 -33
  367. package/src/components/progress/ProgressCircle.tsx +29 -37
  368. package/src/components/tabpanel/Tab.tsx +84 -73
  369. package/src/components/tabpanel/TabPanel.tsx +102 -51
  370. package/src/components/titlebar/Titlebar.tsx +115 -0
  371. package/src/components/tooltip/Tooltip.tsx +255 -0
  372. package/src/context/Global.tsx +148 -148
  373. package/src/context/ModalManager.tsx +68 -0
  374. package/src/context/context.ts +111 -0
  375. package/src/core/areaToggle/AreaToggle.tsx +45 -0
  376. package/src/core/aside/Aside.tsx +200 -155
  377. package/src/core/boundary/ErrorBoundary.tsx +50 -68
  378. package/src/core/boundary/ErrorIcon.tsx +34 -32
  379. package/src/core/content/Content.tsx +41 -50
  380. package/src/core/headfoot/HeadFoot.tsx +162 -81
  381. package/src/core/layout/Layout.tsx +54 -0
  382. package/src/core/responsive/Responsive.tsx +91 -98
  383. package/src/core/theme/ThemeProvider.tsx +45 -56
  384. package/src/core/viewport/Viewport.tsx +25 -27
  385. package/src/hooks/useClientService.ts +47 -0
  386. package/src/hooks/useContextMenu.tsx +131 -0
  387. package/src/hooks/useControlledValue.ts +47 -0
  388. package/src/hooks/useDebounce.ts +41 -24
  389. package/src/hooks/useEffectDebugger.ts +105 -94
  390. package/src/hooks/useIsDark.ts +10 -24
  391. package/src/hooks/useIsRtl.ts +32 -20
  392. package/src/hooks/useNavigator.tsx +41 -26
  393. package/src/hooks/useNotificationService.tsx +239 -0
  394. package/src/hooks/useOverlayService.tsx +67 -20
  395. package/src/hooks/usePropState.ts +52 -0
  396. package/src/hooks/usePropToggle.ts +54 -47
  397. package/src/hooks/useResize.ts +69 -45
  398. package/src/hooks/useResizeObserver.ts +59 -34
  399. package/src/hooks/useStorage.ts +40 -48
  400. package/src/i18n/index.ts +24 -25
  401. package/src/index.ts +115 -44
  402. package/src/types/colors.ts +49 -0
  403. package/src/types/global.d.ts +40 -17
  404. package/src/types/index.ts +243 -155
  405. package/src/typography/Abbr.tsx +62 -59
  406. package/src/typography/Anchor.tsx +63 -0
  407. package/src/typography/Copy.tsx +39 -29
  408. package/src/typography/Kbd.tsx +50 -0
  409. package/src/typography/Mark.tsx +56 -51
  410. package/src/typography/Text.tsx +57 -128
  411. package/src/typography/Title.tsx +36 -108
  412. package/src/typography/types.ts +27 -17
  413. package/src/utils/calculateDimensions.ts +50 -40
  414. package/src/utils/cloneElement.ts +61 -0
  415. package/src/{core/content/Content.module.css → utils/getBadgeProps.ts} +20 -15
  416. package/src/utils/getColor.ts +42 -36
  417. package/src/utils/getIconProps.ts +58 -0
  418. package/src/utils/getTooltipProps.ts +59 -0
  419. package/src/utils/index.ts +23 -17
  420. package/src/utils/nodeCheck.ts +4 -8
  421. package/css/flags.rect.css +0 -1607
  422. package/css/flags.wavy.css +0 -1606
  423. package/css/index.js +0 -250
  424. package/css/tailwind/colors.ts +0 -158
  425. package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
  426. package/dist/cjs/components/animations/Animations.js +0 -142
  427. package/dist/cjs/components/animations/Animations.module.css +0 -1
  428. package/dist/cjs/components/avatar/Avatar.module.css +0 -1
  429. package/dist/cjs/components/badge/Badge.module.css +0 -1
  430. package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +0 -71
  431. package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  432. package/dist/cjs/components/button/Button.module.css +0 -1
  433. package/dist/cjs/components/card/Card.module.css +0 -1
  434. package/dist/cjs/components/chip/Chip.module.css +0 -1
  435. package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
  436. package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
  437. package/dist/cjs/components/icon/Icon.module.css +0 -1
  438. package/dist/cjs/components/media/Media.module.css +0 -1
  439. package/dist/cjs/components/menu/Menu.module.css +0 -1
  440. package/dist/cjs/components/meter/Meter.module.css +0 -1
  441. package/dist/cjs/components/panel/Panel.module.css +0 -1
  442. package/dist/cjs/components/progress/Progress.module.css +0 -1
  443. package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
  444. package/dist/cjs/context/NotificationCenter.js +0 -254
  445. package/dist/cjs/core/aside/Aside.module.css +0 -1
  446. package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
  447. package/dist/cjs/core/content/Content.module.css +0 -1
  448. package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
  449. package/dist/cjs/core/page/Page.js +0 -66
  450. package/dist/cjs/core/page/Page.module.css +0 -1
  451. package/dist/cjs/core/responsive/Responsive.module.css +0 -1
  452. package/dist/cjs/core/section/Section.module.css +0 -1
  453. package/dist/cjs/core/theme/Theme.module.css +0 -1
  454. package/dist/cjs/core/viewport/Viewport.module.css +0 -1
  455. package/dist/cjs/hotkeys/HotKey.js +0 -47
  456. package/dist/cjs/hotkeys/HotKeyLabel.js +0 -52
  457. package/dist/cjs/hotkeys/HotKeyWrapper.js +0 -98
  458. package/dist/cjs/hotkeys/commons.js +0 -56
  459. package/dist/cjs/overlays/alert/Alert.module.css +0 -1
  460. package/dist/cjs/overlays/flyout/Flyout.js +0 -152
  461. package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
  462. package/dist/cjs/overlays/message/Message.js +0 -84
  463. package/dist/cjs/overlays/message/Message.module.css +0 -1
  464. package/dist/cjs/overlays/modal/Modal.js +0 -132
  465. package/dist/cjs/overlays/modal/Modal.module.css +0 -1
  466. package/dist/cjs/overlays/toast/Toast.js +0 -166
  467. package/dist/cjs/overlays/toast/Toast.module.css +0 -1
  468. package/dist/cjs/overlays/tooltip/Tooltip.js +0 -133
  469. package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
  470. package/dist/cjs/types/icons.js +0 -200
  471. package/dist/cjs/typography/Link.js +0 -55
  472. package/dist/cjs/typography/Typography.module.css +0 -1
  473. package/dist/cjs/typography/types.js +0 -42
  474. package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
  475. package/dist/esm/components/animations/Animations.js +0 -138
  476. package/dist/esm/components/animations/Animations.module.css +0 -1
  477. package/dist/esm/components/avatar/Avatar.module.css +0 -1
  478. package/dist/esm/components/badge/Badge.module.css +0 -1
  479. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +0 -71
  480. package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  481. package/dist/esm/components/button/Button.module.css +0 -1
  482. package/dist/esm/components/card/Card.module.css +0 -1
  483. package/dist/esm/components/chip/Chip.module.css +0 -1
  484. package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
  485. package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
  486. package/dist/esm/components/icon/Icon.module.css +0 -1
  487. package/dist/esm/components/media/Media.module.css +0 -1
  488. package/dist/esm/components/menu/Menu.module.css +0 -1
  489. package/dist/esm/components/meter/Meter.module.css +0 -1
  490. package/dist/esm/components/panel/Panel.module.css +0 -1
  491. package/dist/esm/components/progress/Progress.module.css +0 -1
  492. package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
  493. package/dist/esm/context/NotificationCenter.js +0 -254
  494. package/dist/esm/core/aside/Aside.module.css +0 -1
  495. package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
  496. package/dist/esm/core/content/Content.module.css +0 -1
  497. package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
  498. package/dist/esm/core/page/Page.js +0 -66
  499. package/dist/esm/core/page/Page.module.css +0 -1
  500. package/dist/esm/core/responsive/Responsive.module.css +0 -1
  501. package/dist/esm/core/section/Section.module.css +0 -1
  502. package/dist/esm/core/theme/Theme.module.css +0 -1
  503. package/dist/esm/core/viewport/Viewport.module.css +0 -1
  504. package/dist/esm/hotkeys/HotKey.js +0 -47
  505. package/dist/esm/hotkeys/HotKeyLabel.js +0 -52
  506. package/dist/esm/hotkeys/HotKeyWrapper.js +0 -96
  507. package/dist/esm/hotkeys/commons.js +0 -56
  508. package/dist/esm/overlays/alert/Alert.module.css +0 -1
  509. package/dist/esm/overlays/flyout/Flyout.js +0 -152
  510. package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
  511. package/dist/esm/overlays/message/Message.js +0 -84
  512. package/dist/esm/overlays/message/Message.module.css +0 -1
  513. package/dist/esm/overlays/modal/Modal.js +0 -132
  514. package/dist/esm/overlays/modal/Modal.module.css +0 -1
  515. package/dist/esm/overlays/toast/Toast.js +0 -166
  516. package/dist/esm/overlays/toast/Toast.module.css +0 -1
  517. package/dist/esm/overlays/tooltip/Tooltip.js +0 -132
  518. package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
  519. package/dist/esm/types/icons.js +0 -202
  520. package/dist/esm/typography/Link.js +0 -55
  521. package/dist/esm/typography/Typography.module.css +0 -1
  522. package/dist/esm/typography/types.js +0 -41
  523. package/dist/types/components/animations/Animations.d.ts +0 -23
  524. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +0 -17
  525. package/dist/types/components/index.d.ts +0 -33
  526. package/dist/types/context/NotificationCenter.d.ts +0 -11
  527. package/dist/types/core/index.d.ts +0 -9
  528. package/dist/types/core/page/Page.d.ts +0 -23
  529. package/dist/types/core/section/Section.d.ts +0 -7
  530. package/dist/types/hotkeys/HotKey.d.ts +0 -2
  531. package/dist/types/hotkeys/HotKeyLabel.d.ts +0 -2
  532. package/dist/types/hotkeys/HotKeyWrapper.d.ts +0 -11
  533. package/dist/types/hotkeys/commons.d.ts +0 -28
  534. package/dist/types/overlays/alert/Alert.d.ts +0 -41
  535. package/dist/types/overlays/flyout/Flyout.d.ts +0 -57
  536. package/dist/types/overlays/index.d.ts +0 -6
  537. package/dist/types/overlays/message/Message.d.ts +0 -21
  538. package/dist/types/overlays/modal/Modal.d.ts +0 -53
  539. package/dist/types/overlays/toast/Toast.d.ts +0 -33
  540. package/dist/types/overlays/tooltip/Tooltip.d.ts +0 -18
  541. package/dist/types/types/icons.d.ts +0 -197
  542. package/dist/types/typography/Link.d.ts +0 -25
  543. package/dist/types/typography/index.d.ts +0 -6
  544. package/src/components/animations/Animations.module.css +0 -253
  545. package/src/components/animations/Animations.tsx +0 -196
  546. package/src/components/avatar/Avatar.module.css +0 -90
  547. package/src/components/badge/Badge.module.css +0 -165
  548. package/src/components/breadcrumbs/Breadcrumbs.module.css +0 -189
  549. package/src/components/breadcrumbs/Breadcrumbs.tsx +0 -109
  550. package/src/components/button/Button.module.css +0 -375
  551. package/src/components/card/Card.module.css +0 -152
  552. package/src/components/chip/Chip.module.css +0 -118
  553. package/src/components/collapsable/Collapsable.module.css +0 -30
  554. package/src/components/icon/Icon.module.css +0 -71
  555. package/src/components/index.ts +0 -62
  556. package/src/components/media/Media.module.css +0 -112
  557. package/src/context/NotificationCenter.tsx +0 -223
  558. package/src/core/aside/Aside.module.css +0 -231
  559. package/src/core/boundary/ErrorBoundary.module.css +0 -65
  560. package/src/core/headfoot/HeadFoot.module.css +0 -38
  561. package/src/core/index.ts +0 -32
  562. package/src/core/page/Page.module.css +0 -46
  563. package/src/core/page/Page.tsx +0 -101
  564. package/src/core/responsive/Responsive.module.css +0 -85
  565. package/src/core/section/Section.module.css +0 -28
  566. package/src/core/section/Section.tsx +0 -54
  567. package/src/core/theme/Theme.module.css +0 -30
  568. package/src/core/viewport/Viewport.module.css +0 -32
  569. package/src/hooks/useControlledValue.tsx +0 -43
  570. package/src/hotkeys/HotKey.tsx +0 -39
  571. package/src/hotkeys/HotKeyLabel.tsx +0 -61
  572. package/src/hotkeys/HotKeyWrapper.tsx +0 -137
  573. package/src/hotkeys/commons.ts +0 -74
  574. package/src/overlays/alert/Alert.tsx +0 -252
  575. package/src/overlays/flyout/Flyout.tsx +0 -283
  576. package/src/overlays/index.ts +0 -29
  577. package/src/overlays/message/Message.tsx +0 -107
  578. package/src/overlays/modal/Modal.tsx +0 -244
  579. package/src/overlays/toast/Toast.module.css +0 -37
  580. package/src/overlays/toast/Toast.tsx +0 -216
  581. package/src/overlays/tooltip/Tooltip.module.css +0 -53
  582. package/src/overlays/tooltip/Tooltip.tsx +0 -200
  583. package/src/types/icons.ts +0 -426
  584. package/src/typography/Link.tsx +0 -113
  585. package/src/typography/Typography.module.css +0 -68
  586. package/src/typography/index.ts +0 -29
  587. /package/dist/cjs/i18n/{ar.json.js → ar/core.json.js} +0 -0
  588. /package/dist/cjs/i18n/{en.json.js → en/core.json.js} +0 -0
  589. /package/dist/esm/i18n/{ar.json.js → ar/core.json.js} +0 -0
  590. /package/dist/esm/i18n/{en.json.js → en/core.json.js} +0 -0
  591. /package/src/i18n/{ar.json → ar/core.json} +0 -0
  592. /package/src/i18n/{en.json → en/core.json} +0 -0
@@ -4,18 +4,48 @@ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
6
  var utilities = require('@react-fabric/utilities');
7
- var classNames = require('classnames');
8
7
  var react = require('react');
9
- var icons = require('../../types/icons.js');
8
+ var usePropState = require('../../hooks/usePropState.js');
10
9
  var Button = require('../button/Button.js');
11
- var Media_module = require('./Media.module.css');
10
+ var Icon = require('../icon/Icon.js');
12
11
  var jsxRuntime = require('react/jsx-runtime');
13
12
 
14
13
  var _excluded = ["src", "alt", "reel", "fit", "className"],
15
14
  _excluded2 = ["src", "poster", "reel", "autoPlay", "playOnHover", "fit", "className"];
16
15
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
- var Image = function Image(_ref) {
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17
+ var cover = {
18
+ fill: "object-fill",
19
+ cover: "object-cover",
20
+ contain: "object-contain"
21
+ };
22
+ var loadIndicator = /*#__PURE__*/jsxRuntime.jsx("div", {
23
+ className: utilities.cn("fabric-mediaPlaceholder", "absolute z-1 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-sm text-gray"),
24
+ children: /*#__PURE__*/jsxRuntime.jsx("i", {
25
+ className: "icon-[svg-spinners--pulse-rings-2]"
26
+ })
27
+ });
28
+
29
+ /**
30
+ * Component for displaying images with optional reel decoration.
31
+ * A versatile media component that supports images and videos with various display options.
32
+ * It can display images with a reel decoration, handle loading states, and show error icons if the media fails to load.
33
+ * This component is useful for displaying images in a visually appealing way, with support for lazy loading and error handling.
34
+ * It automatically adjusts the display based on the provided fit property, allowing for different styles such as cover, contain, or fill.
35
+ *
36
+ * @example
37
+ * ```jsx
38
+ * <Image
39
+ * src="image.jpg"
40
+ * alt="Example Image"
41
+ * reel={true}
42
+ * fit="cover"
43
+ * className="custom-class"
44
+ * />
45
+ * // Renders an image with reel decoration, cover fit, and a custom class name.
46
+ * ```
47
+ */
48
+ function Image(_ref) {
19
49
  var src = _ref.src,
20
50
  alt = _ref.alt,
21
51
  reel = _ref.reel,
@@ -27,32 +57,66 @@ var Image = function Image(_ref) {
27
57
  _useState2 = _slicedToArray(_useState, 2),
28
58
  colorSet = _useState2[0],
29
59
  setColorSet = _useState2[1];
30
- var loadIndicator = react.useMemo(function () {
31
- return /*#__PURE__*/jsxRuntime.jsx("div", {
32
- className: classNames(Media_module.mediaPlaceholder, "absolute z-1 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-4xl text-gray animate-pulse"),
33
- children: "\u25CF\u25CF\u25CF"
34
- });
35
- }, [src]);
60
+ var _usePropWatcher = usePropState.usePropWatcher(false, src),
61
+ _usePropWatcher2 = _slicedToArray(_usePropWatcher, 2),
62
+ loaded = _usePropWatcher2[0],
63
+ setLoaded = _usePropWatcher2[1];
64
+ var _usePropWatcher3 = usePropState.usePropWatcher(false, src),
65
+ _usePropWatcher4 = _slicedToArray(_usePropWatcher3, 2),
66
+ errored = _usePropWatcher4[0],
67
+ setErrored = _usePropWatcher4[1];
36
68
  return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
37
69
  "data-ref": "image",
38
- className: classNames(Media_module.mediaContainer, "relative overflow-hidden bg-gray inline-block", reel && Media_module.mediaReel, className),
70
+ className: utilities.cn("fabric-mediaContainer", "relative overflow-hidden inline-block", reel && "fabric-mediaReel", className),
39
71
  "data-colorset": colorSet
40
72
  }, aria), {}, {
41
- children: [loadIndicator, /*#__PURE__*/jsxRuntime.jsx("img", {
73
+ children: [!loaded && !errored && loadIndicator, !errored && /*#__PURE__*/jsxRuntime.jsx("img", {
42
74
  alt: alt !== null && alt !== void 0 ? alt : src,
43
75
  src: src,
44
76
  loading: "lazy",
45
77
  crossOrigin: "anonymous",
46
- className: classNames(Media_module.media, "pointer-events-none w-full h-full", fit && "object-".concat(fit)),
78
+ className: utilities.cn("fabric-media", "pointer-events-none w-full h-full", cover[fit]),
47
79
  onLoad: function onLoad(e) {
48
- var _e$currentTarget$prev;
49
- (_e$currentTarget$prev = e.currentTarget.previousElementSibling) === null || _e$currentTarget$prev === void 0 || _e$currentTarget$prev.remove();
80
+ setLoaded(true);
50
81
  setColorSet(utilities.getImageColorset(e.currentTarget));
82
+ },
83
+ onError: function onError() {
84
+ return setErrored(true);
51
85
  }
86
+ }), errored && /*#__PURE__*/jsxRuntime.jsx(Icon.Icon, {
87
+ size: "2rem",
88
+ className: "absolute text-tint-300 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
89
+ icon: "icon-[mdi--image-off-outline]"
52
90
  })]
53
91
  }));
54
- };
55
- var Video = function Video(_ref2) {
92
+ }
93
+
94
+ /**
95
+ * Component for displaying videos with optional controls and reel decoration.
96
+ * A versatile video component that supports autoplay, hover play, and various display options.
97
+ * It can display videos with a reel decoration, handle loading states, and show error icons if the video fails to load.
98
+ * This component is useful for displaying videos in a visually appealing way, with support for controls, autoplay, and error handling.
99
+ * It automatically adjusts the display based on the provided fit property, allowing for different styles such as cover, contain, or fill.
100
+ * It also includes controls for play/pause and volume, enhancing user interaction with the video content.
101
+ * This component is ideal for media-rich applications where video content needs to be displayed with user-friendly controls and visual effects.
102
+ * It supports features like autoplay, play on hover, and custom fit options for the video display.
103
+ * It also includes a reel decoration for a more engaging visual presentation.
104
+ *
105
+ * @example
106
+ * ```jsx
107
+ * <Video
108
+ * src="video.mp4"
109
+ * poster="poster.jpg"
110
+ * reel={true}
111
+ * autoPlay={true}
112
+ * playOnHover={true}
113
+ * fit="cover"
114
+ * className="custom-class"
115
+ * />
116
+ * // Renders a video with reel decoration, autoplay, play on hover, cover fit, and a custom class name.
117
+ * ```
118
+ */
119
+ function Video(_ref2) {
56
120
  var src = _ref2.src,
57
121
  poster = _ref2.poster,
58
122
  reel = _ref2.reel,
@@ -63,6 +127,14 @@ var Video = function Video(_ref2) {
63
127
  className = _ref2.className,
64
128
  aria = _objectWithoutProperties(_ref2, _excluded2);
65
129
  var videoRef = react.useRef(null);
130
+ var _usePropWatcher5 = usePropState.usePropWatcher(false, src),
131
+ _usePropWatcher6 = _slicedToArray(_usePropWatcher5, 2),
132
+ loaded = _usePropWatcher6[0],
133
+ setLoaded = _usePropWatcher6[1];
134
+ var _usePropWatcher7 = usePropState.usePropWatcher(false, src),
135
+ _usePropWatcher8 = _slicedToArray(_usePropWatcher7, 2),
136
+ errored = _usePropWatcher8[0],
137
+ setErrored = _usePropWatcher8[1];
66
138
  var _useState3 = react.useState(true),
67
139
  _useState4 = _slicedToArray(_useState3, 2),
68
140
  state = _useState4[0],
@@ -73,77 +145,82 @@ var Video = function Video(_ref2) {
73
145
  setVolume = _useState6[1];
74
146
  return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
75
147
  "data-ref": "video",
76
- className: classNames(Media_module.mediaContainer, "relative overflow-hidden bg-gray inline-block", reel && Media_module.mediaReel, className),
148
+ className: utilities.cn("fabric-mediaContainer", "relative overflow-hidden inline-block", reel && "fabric-mediaReel", className),
77
149
  onMouseEnter: function onMouseEnter() {
78
150
  var _videoRef$current;
79
- playOnHover && ((_videoRef$current = videoRef.current) === null || _videoRef$current === void 0 ? void 0 : _videoRef$current.play());
151
+ if (playOnHover) void ((_videoRef$current = videoRef.current) === null || _videoRef$current === void 0 ? void 0 : _videoRef$current.play());
80
152
  },
81
153
  onMouseLeave: function onMouseLeave() {
82
154
  var _videoRef$current2;
83
- playOnHover && ((_videoRef$current2 = videoRef.current) === null || _videoRef$current2 === void 0 ? void 0 : _videoRef$current2.pause());
155
+ if (playOnHover) (_videoRef$current2 = videoRef.current) === null || _videoRef$current2 === void 0 || _videoRef$current2.pause();
84
156
  }
85
157
  }, aria), {}, {
86
- children: [/*#__PURE__*/jsxRuntime.jsx("div", {
87
- className: classNames(Media_module.mediaPlaceholder, "absolute z-1 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-5xl animate-pulse"),
88
- children: "\u25CF\u25CF\u25CF"
89
- }), /*#__PURE__*/jsxRuntime.jsxs("video", {
90
- loop: true,
91
- ref: videoRef,
92
- controls: false,
93
- poster: poster,
94
- autoPlay: autoPlay,
95
- className: classNames(Media_module.media, "pointer-events-none w-full h-full", fit && "object-".concat(fit)),
96
- onPlay: function onPlay() {
97
- return setState(true);
98
- },
99
- onPause: function onPause() {
100
- return setState(false);
101
- },
102
- onVolumeChange: function onVolumeChange(e) {
103
- return setVolume(!!e.currentTarget.volume);
104
- },
105
- onLoadedData: function onLoadedData(e) {
106
- var _e$currentTarget$prev2;
107
- e.currentTarget.volume = 0;
108
- (_e$currentTarget$prev2 = e.currentTarget.previousElementSibling) === null || _e$currentTarget$prev2 === void 0 || _e$currentTarget$prev2.remove();
109
- },
110
- children: [/*#__PURE__*/jsxRuntime.jsx("source", {
111
- src: src
112
- }), /*#__PURE__*/jsxRuntime.jsx("track", {
113
- kind: "captions"
114
- })]
115
- }), /*#__PURE__*/jsxRuntime.jsxs("div", {
116
- "data-inner-clickable": true,
117
- className: classNames(Media_module.mediaControls, "absolute bottom-6 end-6 rounded-full flex flex-col"),
118
- children: [/*#__PURE__*/jsxRuntime.jsx(Button.Button, {
119
- rounded: true,
120
- variant: "link",
121
- className: Media_module.mediaControlPlaceholder,
122
- icon: icons.CoreIcons.ellipsis,
123
- "aria-label": "controls"
124
- }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
125
- rounded: true,
126
- variant: "link",
127
- "aria-label": "controls",
128
- className: Media_module.mediaControlAction,
129
- onClick: function onClick() {
130
- videoRef.current && (videoRef.current.volume = videoRef.current.volume ? 0 : 1);
158
+ children: [!loaded && !errored && loadIndicator, !errored && /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
159
+ children: [/*#__PURE__*/jsxRuntime.jsxs("video", {
160
+ loop: true,
161
+ ref: videoRef,
162
+ controls: false,
163
+ poster: poster,
164
+ autoPlay: autoPlay,
165
+ className: utilities.cn("fabric-media", "pointer-events-none w-full h-full", fit && "object-".concat(fit)),
166
+ onPlay: function onPlay() {
167
+ return setState(true);
168
+ },
169
+ onPause: function onPause() {
170
+ return setState(false);
131
171
  },
132
- icon: volume ? icons.CoreIcons.volumeOn : icons.CoreIcons.volumeOff
133
- }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
134
- rounded: true,
135
- variant: "link",
136
- "aria-label": "controls",
137
- className: Media_module.mediaControlAction,
138
- onClick: function onClick() {
139
- var _videoRef$current3, _videoRef$current4, _videoRef$current5;
140
- (_videoRef$current3 = videoRef.current) !== null && _videoRef$current3 !== void 0 && _videoRef$current3.paused ? (_videoRef$current4 = videoRef.current) === null || _videoRef$current4 === void 0 ? void 0 : _videoRef$current4.play() : (_videoRef$current5 = videoRef.current) === null || _videoRef$current5 === void 0 ? void 0 : _videoRef$current5.pause();
172
+ onVolumeChange: function onVolumeChange(e) {
173
+ return setVolume(!!e.currentTarget.volume);
141
174
  },
142
- icon: state ? icons.CoreIcons.pause : icons.CoreIcons.play
175
+ onLoadedData: function onLoadedData(e) {
176
+ e.currentTarget.volume = 0;
177
+ setLoaded(true);
178
+ },
179
+ onError: function onError() {
180
+ return setErrored(true);
181
+ },
182
+ children: [/*#__PURE__*/jsxRuntime.jsx("source", {
183
+ src: src
184
+ }), /*#__PURE__*/jsxRuntime.jsx("track", {
185
+ kind: "captions"
186
+ })]
187
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
188
+ "data-inner-clickable": true,
189
+ className: utilities.cn("fabric-mediaControls", "absolute bottom-6 inset-e-6 rounded-full flex flex-col"),
190
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button.Button, {
191
+ rounded: true,
192
+ variant: "link",
193
+ className: "fabric-mediaControlPlaceholder",
194
+ icon: "icon-[mdi--dots-vertical]",
195
+ "aria-label": "controls"
196
+ }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
197
+ rounded: true,
198
+ variant: "link",
199
+ "aria-label": "controls",
200
+ className: "fabric-mediaControlAction",
201
+ onClick: function onClick() {
202
+ if (videoRef.current) videoRef.current.volume = videoRef.current.volume ? 0 : 1;
203
+ },
204
+ icon: volume ? "icon-[mdi--volume]" : "icon-[mdi--volume-mute]"
205
+ }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
206
+ rounded: true,
207
+ variant: "link",
208
+ "aria-label": "controls",
209
+ className: "fabric-mediaControlAction",
210
+ onClick: function onClick() {
211
+ var _videoRef$current3, _videoRef$current4, _videoRef$current5;
212
+ void ((_videoRef$current3 = videoRef.current) !== null && _videoRef$current3 !== void 0 && _videoRef$current3.paused ? (_videoRef$current4 = videoRef.current) === null || _videoRef$current4 === void 0 ? void 0 : _videoRef$current4.play() : (_videoRef$current5 = videoRef.current) === null || _videoRef$current5 === void 0 ? void 0 : _videoRef$current5.pause());
213
+ },
214
+ icon: state ? "icon-[mdi--pause]" : "icon-[mdi--play]"
215
+ })]
143
216
  })]
217
+ }), errored && /*#__PURE__*/jsxRuntime.jsx(Icon.Icon, {
218
+ size: "2rem",
219
+ className: "absolute text-tint-300 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
220
+ icon: "icon-[mdi--video-off-outline]"
144
221
  })]
145
222
  }));
146
- };
223
+ }
147
224
 
148
225
  exports.Image = Image;
149
226
  exports.Video = Video;
@@ -7,8 +7,22 @@ var react = require('react');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
 
9
9
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
10
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
- var ContextMenu = function ContextMenu(_ref) {
10
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11
+ /**
12
+ * A component that provides a context menu that appears on right-click.
13
+ * It uses the Floating UI library to manage the positioning and interactions of the menu.
14
+ * This component is useful for creating custom context menus that can be triggered by right-clicking on elements.
15
+ *
16
+ * @example
17
+ * ```jsx
18
+ * <ContextMenu
19
+ * menu={<Menu items={[{ label: "Option 1" }, { label: "Option 2" }]} />}
20
+ * >
21
+ * <div className="context-menu-target">Right-click me!</div>
22
+ * </ContextMenu>
23
+ * ```
24
+ */
25
+ function ContextMenu(_ref) {
12
26
  var _refs$domReference$cu, _refs$domReference$cu2;
13
27
  var children = _ref.children,
14
28
  menu = _ref.menu,
@@ -21,7 +35,7 @@ var ContextMenu = function ContextMenu(_ref) {
21
35
  var _useFloating = react$1.useFloating({
22
36
  open: isOpen,
23
37
  nodeId: nodeId,
24
- onOpenChange: function onOpenChange(open, evt, reason) {
38
+ onOpenChange: function onOpenChange(open, evt) {
25
39
  var target = evt === null || evt === void 0 ? void 0 : evt.target;
26
40
  if (!(target !== null && target !== void 0 && target.closest(".menu-list"))) setIsOpen(open);
27
41
  },
@@ -42,7 +56,7 @@ var ContextMenu = function ContextMenu(_ref) {
42
56
  });
43
57
  var _useInteractions = react$1.useInteractions([dismiss, click]),
44
58
  getFloatingProps = _useInteractions.getFloatingProps;
45
- var handleClick = react.useRef(function (e) {
59
+ var handleClickRef = react.useRef(function (e) {
46
60
  var virtual = {
47
61
  getBoundingClientRect: function getBoundingClientRect() {
48
62
  return {
@@ -66,39 +80,50 @@ var ContextMenu = function ContextMenu(_ref) {
66
80
  var wrapperRef = react.useRef(null);
67
81
  react.useEffect(function () {
68
82
  var el = wrapperRef.current;
83
+ var handler = handleClickRef.current;
69
84
  if (el && !disabled) {
70
85
  var _el$parentElement;
71
- el === null || el === void 0 || (_el$parentElement = el.parentElement) === null || _el$parentElement === void 0 || _el$parentElement.addEventListener("contextmenu", handleClick.current);
86
+ el === null || el === void 0 || (_el$parentElement = el.parentElement) === null || _el$parentElement === void 0 || _el$parentElement.addEventListener("contextmenu", handler);
72
87
  return function () {
73
88
  var _el$parentElement2;
74
- el === null || el === void 0 || (_el$parentElement2 = el.parentElement) === null || _el$parentElement2 === void 0 || _el$parentElement2.removeEventListener("contextmenu", handleClick.current);
89
+ el === null || el === void 0 || (_el$parentElement2 = el.parentElement) === null || _el$parentElement2 === void 0 || _el$parentElement2.removeEventListener("contextmenu", handler);
75
90
  };
76
91
  }
77
92
  }, [disabled]);
78
- var tryClosing = react.useRef(function (e) {
93
+ var tryClosingRef = react.useRef(function (e) {
79
94
  var _e$target;
80
- if ((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.closest("[data-dropdown-dismiss='true']")) setTimeout(function () {
95
+ if (!((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.closest("[data-dropdown-dismiss='false']"))) setTimeout(function () {
81
96
  return setIsOpen(false);
82
97
  }, 50);
83
98
  });
84
99
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
85
100
  className: "contents",
86
101
  ref: wrapperRef,
87
- onMouseUpCapture: tryClosing.current,
88
102
  children: [children, isOpen && /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingPortal, {
89
103
  root: (_refs$domReference$cu = (_refs$domReference$cu2 = refs.domReference.current) === null || _refs$domReference$cu2 === void 0 ? void 0 : _refs$domReference$cu2.closest(".theme-base")) !== null && _refs$domReference$cu !== void 0 ? _refs$domReference$cu : undefined,
90
- children: /*#__PURE__*/react.cloneElement(menu, _objectSpread(_objectSpread({}, getFloatingProps()), {}, {
91
- style: _objectSpread(_objectSpread({}, floatingStyles), {}, {
92
- borderRadius: "var(--rounding)",
93
- zIndex: "var(--z-popover)",
94
- fontSize: "0.875rem"
95
- }),
96
- className: "bg-base outline rounded-capped shadow-lg",
97
- ref: refs.setFloating,
98
- onMouseUp: tryClosing.current
99
- }))
104
+ children: /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingOverlay, {
105
+ lockScroll: true,
106
+ style: {
107
+ zIndex: "var(--z-overlay-mask)",
108
+ position: "absolute",
109
+ overflow: "hidden"
110
+ },
111
+ children: /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingFocusManager, {
112
+ context: context,
113
+ children: /*#__PURE__*/react.cloneElement(menu, _objectSpread(_objectSpread({}, getFloatingProps()), {}, {
114
+ style: _objectSpread(_objectSpread({}, floatingStyles), {}, {
115
+ borderRadius: "var(--rounding)",
116
+ zIndex: "var(--z-popover)",
117
+ fontSize: "0.875rem"
118
+ }),
119
+ className: "bg-default outline rounded-capped shadow-lg",
120
+ ref: refs.floating,
121
+ onMouseUp: tryClosingRef.current
122
+ }))
123
+ })
124
+ })
100
125
  })]
101
126
  });
102
- };
127
+ }
103
128
 
104
129
  exports.ContextMenu = ContextMenu;
@@ -5,25 +5,30 @@ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
5
  var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
6
6
  var react = require('@floating-ui/react');
7
7
  var utilities = require('@react-fabric/utilities');
8
- var classNames = require('classnames');
9
8
  var react$1 = require('react');
10
- var icons = require('../../types/icons.js');
9
+ var cloneElement = require('../../utils/cloneElement.js');
11
10
  var nodeCheck = require('../../utils/nodeCheck.js');
12
11
  var MenuItem = require('./MenuItem.js');
13
12
  var jsxRuntime = require('react/jsx-runtime');
14
13
 
15
- var _excluded = ["children", "minimal", "menuClassName", "onClick", "ref"];
14
+ var _excluded = ["children", "minimal", "className", "forDropdown", "onClick", "trigger", "ref", "onMouseUp", "onMouseDown", "style"];
16
15
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
17
  // FIXME: refactor menu implementation to differentiate between static and floating menus, implement context wrapper for each menu level
19
18
 
20
- var MenuComponent = function MenuComponent(_ref) {
21
- var _refs$domReference$cu, _refs$domReference$cu2;
19
+ function MenuComponent(_ref) {
20
+ var _refs$domReference$cu, _refs$domReference$cu2, _cloneChildren;
22
21
  var children = _ref.children,
23
22
  minimal = _ref.minimal,
24
- menuClassName = _ref.menuClassName,
23
+ className = _ref.className,
24
+ forDropdown = _ref.forDropdown,
25
25
  onClick = _ref.onClick,
26
+ _ref$trigger = _ref.trigger,
27
+ trigger = _ref$trigger === void 0 ? "hover" : _ref$trigger,
26
28
  ref = _ref.ref,
29
+ onMouseUp = _ref.onMouseUp,
30
+ onMouseDown = _ref.onMouseDown,
31
+ style = _ref.style,
27
32
  rest = _objectWithoutProperties(_ref, _excluded);
28
33
  var _useState = react$1.useState(false),
29
34
  _useState2 = _slicedToArray(_useState, 2),
@@ -38,12 +43,13 @@ var MenuComponent = function MenuComponent(_ref) {
38
43
  var tree = react.useFloatingTree();
39
44
  var nodeId = react.useFloatingNodeId();
40
45
  var parentId = react.useFloatingParentNodeId();
41
- var isNested = parentId !== null;
46
+ var isNested = parentId !== null && !forDropdown;
42
47
  var _useFloating = react.useFloating({
43
- nodeId: nodeId,
48
+ nodeId: "menu-".concat(nodeId),
44
49
  open: !isNested || isOpen,
45
50
  onOpenChange: function onOpenChange(open, event, reason) {
46
- isNested && setIsOpen(open);
51
+ if (isNested) setIsOpen(open);
52
+ if (reason === "outside-press" && trigger === "click") tree === null || tree === void 0 || tree.events.emit("close");
47
53
  },
48
54
  placement: isNested ? "right-start" : "bottom-start",
49
55
  middleware: [react.offset({
@@ -56,6 +62,7 @@ var MenuComponent = function MenuComponent(_ref) {
56
62
  refs = _useFloating.refs,
57
63
  context = _useFloating.context;
58
64
  var hover = react.useHover(context, {
65
+ enabled: trigger === "hover",
59
66
  delay: {
60
67
  open: 75
61
68
  },
@@ -64,8 +71,9 @@ var MenuComponent = function MenuComponent(_ref) {
64
71
  })
65
72
  });
66
73
  var click = react.useClick(context, {
67
- toggle: true,
68
- ignoreMouse: true
74
+ event: "mousedown",
75
+ toggle: trigger === "click" || !isNested,
76
+ ignoreMouse: trigger === "hover" && !isNested
69
77
  });
70
78
  var role = react.useRole(context, {
71
79
  role: "menu"
@@ -119,66 +127,91 @@ var MenuComponent = function MenuComponent(_ref) {
119
127
  });
120
128
  }
121
129
  }, [tree, isOpen, nodeId, parentId]);
122
- var handleClick = react$1.useCallback(function (e) {
130
+ var handleClick = function handleClick(e) {
123
131
  var el = e.target;
124
132
  if (el.dataset.id) {
125
133
  onClick === null || onClick === void 0 || onClick(el.dataset.id);
126
134
  }
127
- }, [onClick]);
135
+ };
128
136
  var Wrapper = isNested ? react.FloatingPortal : react$1.Fragment;
129
137
  var wrapperProps = isNested ? {
130
138
  root: (_refs$domReference$cu = (_refs$domReference$cu2 = refs.domReference.current) === null || _refs$domReference$cu2 === void 0 ? void 0 : _refs$domReference$cu2.closest(".theme-base")) !== null && _refs$domReference$cu !== void 0 ? _refs$domReference$cu : undefined
131
139
  } : {};
132
140
  react$1.useEffect(function () {
133
- setTimeout(function () {
134
- var _refs$floating$curren;
135
- return (_refs$floating$curren = refs.floating.current) === null || _refs$floating$curren === void 0 || (_refs$floating$curren = _refs$floating$curren.querySelector("[data-active=\"true\"]")) === null || _refs$floating$curren === void 0 ? void 0 : _refs$floating$curren.scrollIntoView({
141
+ var tmr = setTimeout(function () {
142
+ var _elementsRef$current$, _refs$floating$curren;
143
+ (_elementsRef$current$ = elementsRef.current[0]) === null || _elementsRef$current$ === void 0 || _elementsRef$current$.focus();
144
+ (_refs$floating$curren = refs.floating.current) === null || _refs$floating$curren === void 0 || (_refs$floating$curren = _refs$floating$curren.querySelector("[data-active=\"true\"]")) === null || _refs$floating$curren === void 0 || _refs$floating$curren.scrollIntoView({
136
145
  block: "nearest"
137
146
  });
138
147
  }, 100);
139
- }, [isOpen]);
148
+ return function () {
149
+ clearTimeout(tmr);
150
+ };
151
+ }, [isOpen, refs.floating]);
152
+ react$1.useEffect(function () {
153
+ if ((!isNested || isOpen) && activeIndex) {
154
+ var tmr = setTimeout(function () {
155
+ var _elementsRef$current$2;
156
+ (_elementsRef$current$2 = elementsRef.current[activeIndex]) === null || _elementsRef$current$2 === void 0 || _elementsRef$current$2.scrollIntoView({
157
+ block: "nearest"
158
+ });
159
+ }, 100);
160
+ return function () {
161
+ clearTimeout(tmr);
162
+ };
163
+ }
164
+ }, [isOpen, activeIndex, isNested]);
140
165
  return /*#__PURE__*/jsxRuntime.jsxs(react.FloatingNode, {
141
166
  id: nodeId,
142
167
  children: [isNested && /*#__PURE__*/jsxRuntime.jsx(MenuItem.MenuItem, _objectSpread(_objectSpread({}, getReferenceProps(_objectSpread(_objectSpread({}, rest), {}, {
143
168
  id: undefined,
169
+ // @ts-expect-error ignore
144
170
  "data-dropdown-dismiss": false,
145
171
  onClick: function onClick(e) {
146
172
  e.stopPropagation();
147
173
  return false;
148
174
  }
149
175
  }))), {}, {
150
- "data-open": isOpen,
176
+ "data-open": isOpen
177
+ // @ts-expect-error ignore
178
+ ,
151
179
  minimal: minimal,
152
- altIcon: icons.CoreIcons.chevronRight,
153
- ref: utilities.mergeRefs(refs.setReference, ref)
180
+ altIcon: "icon-[mdi--menu-right]",
181
+ ref: utilities.mergeRefs(refs.reference, ref)
154
182
  })), /*#__PURE__*/jsxRuntime.jsx(react.FloatingList, {
155
183
  elementsRef: elementsRef,
156
184
  labelsRef: labelsRef,
157
185
  children: (!isNested || isOpen) && /*#__PURE__*/jsxRuntime.jsxs(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
158
186
  children: [isNested && /*#__PURE__*/jsxRuntime.jsx(react.FloatingOverlay, {}), /*#__PURE__*/jsxRuntime.jsx(react.FloatingFocusManager, {
159
187
  context: context,
160
- modal: !isNested,
188
+ closeOnFocusOut: true,
161
189
  initialFocus: isNested ? -1 : 0,
162
190
  returnFocus: !isNested,
163
191
  children: /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
164
- className: classNames(menuClassName, "flex flex-col bg-base p-1 menu-list", isNested && "outline shadow-lg rounded-capped max-h-96 overflow-auto scroll-thin z-[var(--z-popover)]"),
165
- autoFocus: true,
166
- ref: utilities.mergeRefs(isNested ? refs.setFloating : ref)
192
+ className: utilities.cn(className, "flex flex-col p-1 menu-list", isNested && "outline shadow-lg rounded-capped max-h-[60vh] overflow-auto scroll-thin z-(--z-popover)"),
193
+ ref: utilities.mergeRefs(isNested ? refs.floating : ref)
167
194
  }, getFloatingProps({
168
- onClick: isNested ? undefined : handleClick
195
+ onClick: isNested ? undefined : handleClick,
196
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
197
+ onMouseDown: onMouseDown,
198
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
199
+ onMouseUp: onMouseUp
169
200
  })), {}, {
170
- style: !isNested ? rest.style : floatingStyles,
171
- children: react$1.Children.map(children, function (child, index) {
172
- if (child) {
173
- labelsRef.current[index] = child.props.label;
174
- return /*#__PURE__*/react$1.cloneElement(child, nodeCheck.nodeCheck(child, MenuItem.MenuItem, Menu, MenuComponent) ? _objectSpread({
201
+ style: !isNested ? style : floatingStyles,
202
+ children: (_cloneChildren = cloneElement.cloneChildren(children)) === null || _cloneChildren === void 0 ? void 0 : _cloneChildren.map(function (child, index) {
203
+ if (/*#__PURE__*/react$1.isValidElement(child)) {
204
+ var childEl = child;
205
+ labelsRef.current[index] = childEl.props.label;
206
+ return /*#__PURE__*/react$1.cloneElement(childEl, nodeCheck.nodeCheck(child, MenuItem.MenuItem, Menu, MenuComponent) ? _objectSpread({
207
+ // @ts-expect-error ignore
175
208
  minimal: !isNested && minimal,
176
209
  "data-focus": activeIndex === index,
177
210
  ref: function ref(el) {
178
211
  return elementsRef.current[index] = el;
179
212
  }
180
213
  }, getItemProps({
181
- onClick: child.props.onClick,
214
+ onClick: childEl.props.onClick,
182
215
  tabIndex: activeIndex === index ? 0 : -1
183
216
  })) : {});
184
217
  }
@@ -188,17 +221,44 @@ var MenuComponent = function MenuComponent(_ref) {
188
221
  }))
189
222
  })]
190
223
  });
191
- };
192
- var Menu = function Menu(props) {
224
+ }
225
+
226
+ /**
227
+ * A component that displays a menu with items, supports nested menus and various interactions.
228
+ * It can be triggered by hover or click events, and allows for custom styling and behavior.
229
+ * This component is designed to be used within a Floating UI context, allowing for dynamic positioning and interaction handling.
230
+ * It can be nested within other menus to create complex menu structures.
231
+ *
232
+ * @example
233
+ * ```jsx
234
+ * <Menu
235
+ * className="my-menu"
236
+ * trigger="click"
237
+ * onClick={(id) => console.log(`Clicked item with id: ${id}`)}
238
+ * >
239
+ * <MenuItem id="item1" label="Item 1" />
240
+ * <MenuItem id="item2" label="Item 2" />
241
+ * <MenuItem id="item3" label="Item 3">
242
+ * <Menu>
243
+ * <MenuItem id="subitem1" label="Sub Item 1" />
244
+ * <MenuItem id="subitem2" label="Sub Item 2" />
245
+ * </Menu>
246
+ * </MenuItem>
247
+ * </Menu>
248
+ * ```
249
+ */
250
+ function Menu(props) {
193
251
  var parentId = react.useFloatingParentNodeId();
252
+ var tree = react.useFloatingTree();
253
+ if (tree) {
254
+ return /*#__PURE__*/jsxRuntime.jsx(MenuComponent, _objectSpread({}, props));
255
+ }
194
256
  if (parentId === null) {
195
257
  return /*#__PURE__*/jsxRuntime.jsx(react.FloatingTree, {
196
- children: /*#__PURE__*/jsxRuntime.jsx(MenuComponent, _objectSpread(_objectSpread({}, props), {}, {
197
- menuClassName: props.className
198
- }))
258
+ children: /*#__PURE__*/jsxRuntime.jsx(MenuComponent, _objectSpread({}, props))
199
259
  });
200
260
  }
201
261
  return /*#__PURE__*/jsxRuntime.jsx(MenuComponent, _objectSpread({}, props));
202
- };
262
+ }
203
263
 
204
264
  exports.Menu = Menu;