@react-fabric/core 1.0.0-beta.5 → 1.0.0-beta.52

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 (419) 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/{src/components/animations/Animations.module.css → css/components/_animations.css} +9 -9
  4. package/{src/components/avatar/Avatar.module.css → css/components/_avatar.css} +11 -11
  5. package/{src/components/badge/Badge.module.css → css/components/_badge.css} +19 -17
  6. package/{src/components/breadcrumbs/Breadcrumbs.module.css → css/components/_breadcrumbs.css} +49 -44
  7. package/{src/components/button/Button.module.css → css/components/_button.css} +69 -79
  8. package/{src/components/card/Card.module.css → css/components/_card.css} +50 -28
  9. package/{src/components/chip/Chip.module.css → css/components/_chip.css} +14 -10
  10. package/{src/components/collapsable/Collapsable.module.css → css/components/_collapsable.css} +3 -3
  11. package/css/components/_divider.css +38 -0
  12. package/{src/components/dropdown/Dropdown.module.css → css/components/_dropdown.css} +2 -2
  13. package/{src/overlays/flyout/Flyout.module.css → css/components/_flyout.css} +6 -6
  14. package/{src/components/icon/Icon.module.css → css/components/_icon.css} +8 -5
  15. package/{src/components/media/Media.module.css → css/components/_media.css} +17 -17
  16. package/{src/components/menu/Menu.module.css → css/components/_menu.css} +19 -20
  17. package/{src/overlays/message/Message.module.css → css/components/_message.css} +2 -2
  18. package/{src/components/meter/Meter.module.css → css/components/_meter.css} +10 -10
  19. package/{src/overlays/modal/Modal.module.css → css/components/_modal.css} +8 -8
  20. package/{src/components/panel/Panel.module.css → css/components/_panel.css} +17 -17
  21. package/{src/components/progress/Progress.module.css → css/components/_progress.css} +7 -10
  22. package/{src/components/tabpanel/TabPanel.module.css → css/components/_tabPanel.css} +73 -84
  23. package/{src/overlays/toast/Toast.module.css → css/components/_toast.css} +2 -2
  24. package/css/components/_tooltip.css +29 -0
  25. package/{src/core/content/Content.module.css → css/components/index.css} +25 -18
  26. package/{src/core/aside/Aside.module.css → css/core/_aside.css} +56 -42
  27. package/{src/core/section/Section.module.css → css/core/_content.css} +5 -3
  28. package/{src/core/boundary/ErrorBoundary.module.css → css/core/_errorboundary.css} +9 -9
  29. package/{src/core/headfoot/HeadFoot.module.css → css/core/_headfoot.css} +4 -10
  30. package/{src/core/page/Page.module.css → css/core/_page.css} +10 -14
  31. package/{src/core/responsive/Responsive.module.css → css/core/_responsive.css} +10 -10
  32. package/css/core/_section.css +28 -0
  33. package/{src/core/theme/Theme.module.css → css/core/_theme.css} +3 -3
  34. package/{src/typography/Typography.module.css → css/core/_typography.css} +14 -12
  35. package/{src/core/viewport/Viewport.module.css → css/core/_viewport.css} +7 -3
  36. package/css/core/index.css +33 -0
  37. package/css/reset/_gradients.css +8 -8
  38. package/css/reset/_reset.css +42 -224
  39. package/css/reset/_text.css +14 -29
  40. package/css/reset/_theme.css +331 -52
  41. package/css/reset/index.css +4 -4
  42. package/css/styles.css +7 -6
  43. package/css/theme/_colors.css +320 -0
  44. package/css/theme/_utilities.css +530 -0
  45. package/css/theme/index.css +45 -0
  46. package/dist/cjs/components/actionLabel/ActionLabel.js +26 -8
  47. package/dist/cjs/components/animations/Animations.js +118 -24
  48. package/dist/cjs/components/avatar/Avatar.js +43 -16
  49. package/dist/cjs/components/avatar/AvatarGroup.js +22 -4
  50. package/dist/cjs/components/badge/Badge.js +35 -6
  51. package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +39 -8
  52. package/dist/cjs/components/button/Button.js +42 -15
  53. package/dist/cjs/components/button/ButtonGroup.js +30 -3
  54. package/dist/cjs/components/button/ConfirmButton.js +32 -4
  55. package/dist/cjs/components/button/ToggleButtonGroup.js +41 -15
  56. package/dist/cjs/components/callout/Callout.js +44 -4
  57. package/dist/cjs/components/card/Card.js +48 -10
  58. package/dist/cjs/components/card/CardCover.js +36 -5
  59. package/dist/cjs/components/card/FlipContent.js +56 -0
  60. package/dist/cjs/components/chip/Chip.js +32 -7
  61. package/dist/cjs/components/collapsable/Collapsable.js +32 -6
  62. package/dist/cjs/components/divider/Divider.js +30 -7
  63. package/dist/cjs/components/dropdown/Dropdown.js +48 -9
  64. package/dist/cjs/components/dropdown/DropdownTool.js +4 -3
  65. package/dist/cjs/components/empty/EmptyContent.js +35 -5
  66. package/dist/cjs/components/icon/Icon.js +44 -16
  67. package/dist/cjs/components/media/Media.js +172 -75
  68. package/dist/cjs/components/menu/ContextMenu.js +49 -10
  69. package/dist/cjs/components/menu/Menu.js +74 -21
  70. package/dist/cjs/components/menu/MenuItem.js +51 -16
  71. package/dist/cjs/components/meter/Meter.js +26 -3
  72. package/dist/cjs/components/navigator/Navigator.js +48 -13
  73. package/dist/cjs/components/panel/Panel.js +47 -9
  74. package/dist/cjs/components/panel/PanelGroup.js +25 -2
  75. package/dist/cjs/components/panel/PanelStack.js +31 -0
  76. package/dist/cjs/components/progress/ProgressBar.js +31 -9
  77. package/dist/cjs/components/progress/ProgressCircle.js +29 -7
  78. package/dist/cjs/components/tabpanel/Tab.js +89 -38
  79. package/dist/cjs/components/tabpanel/TabPanel.js +53 -16
  80. package/dist/cjs/context/Global.js +28 -1
  81. package/dist/cjs/context/NotificationCenter.js +3 -3
  82. package/dist/cjs/core/aside/Aside.js +49 -11
  83. package/dist/cjs/core/boundary/ErrorBoundary.js +23 -8
  84. package/dist/cjs/core/boundary/ErrorIcon.js +1 -2
  85. package/dist/cjs/core/content/Content.js +15 -8
  86. package/dist/cjs/core/headfoot/HeadFoot.js +44 -20
  87. package/dist/cjs/core/page/Page.js +40 -29
  88. package/dist/cjs/core/responsive/Responsive.js +59 -6
  89. package/dist/cjs/core/section/Section.js +1 -2
  90. package/dist/cjs/core/theme/ThemeProvider.js +32 -10
  91. package/dist/cjs/core/viewport/Viewport.js +18 -2
  92. package/dist/cjs/hooks/useControlledValue.js +12 -0
  93. package/dist/cjs/hooks/useDebounce.js +14 -1
  94. package/dist/cjs/hooks/useEffectDebugger.js +54 -2
  95. package/dist/cjs/hooks/useIsDark.js +8 -0
  96. package/dist/cjs/hooks/useIsRtl.js +12 -0
  97. package/dist/cjs/hooks/useNavigator.js +6 -4
  98. package/dist/cjs/hooks/useOverlayService.js +24 -0
  99. package/dist/cjs/hooks/usePropToggle.js +16 -5
  100. package/dist/cjs/hooks/useResize.js +18 -0
  101. package/dist/cjs/hooks/useResizeObserver.js +20 -1
  102. package/dist/cjs/hooks/useStorage.js +39 -0
  103. package/dist/cjs/hotkeys/HotKeyLabel.js +1 -1
  104. package/dist/cjs/hotkeys/HotKeyWrapper.js +3 -1
  105. package/dist/cjs/index.js +8 -2
  106. package/dist/cjs/overlays/alert/Alert.js +20 -14
  107. package/dist/cjs/overlays/flyout/Flyout.js +49 -60
  108. package/dist/cjs/overlays/message/Message.js +6 -3
  109. package/dist/cjs/overlays/modal/Modal.js +16 -12
  110. package/dist/cjs/overlays/toast/Toast.js +17 -9
  111. package/dist/cjs/overlays/tooltip/Tooltip.js +24 -11
  112. package/dist/cjs/types/icons.js +10 -1
  113. package/dist/cjs/typography/Abbr.js +32 -6
  114. package/dist/cjs/typography/{Link.js → Anchor.js} +23 -5
  115. package/dist/cjs/typography/Mark.js +22 -4
  116. package/dist/cjs/typography/Text.js +30 -5
  117. package/dist/cjs/typography/Title.js +19 -4
  118. package/dist/cjs/utils/cloneElement.js +47 -0
  119. package/dist/cjs/utils/getColor.js +1 -18
  120. package/dist/esm/components/actionLabel/ActionLabel.js +26 -8
  121. package/dist/esm/components/animations/Animations.js +119 -25
  122. package/dist/esm/components/avatar/Avatar.js +44 -17
  123. package/dist/esm/components/avatar/AvatarGroup.js +22 -4
  124. package/dist/esm/components/badge/Badge.js +36 -7
  125. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +39 -8
  126. package/dist/esm/components/button/Button.js +42 -15
  127. package/dist/esm/components/button/ButtonGroup.js +31 -4
  128. package/dist/esm/components/button/ConfirmButton.js +32 -4
  129. package/dist/esm/components/button/ToggleButtonGroup.js +42 -16
  130. package/dist/esm/components/callout/Callout.js +44 -4
  131. package/dist/esm/components/card/Card.js +49 -11
  132. package/dist/esm/components/card/CardCover.js +36 -5
  133. package/dist/esm/components/card/FlipContent.js +56 -0
  134. package/dist/esm/components/chip/Chip.js +33 -8
  135. package/dist/esm/components/collapsable/Collapsable.js +32 -6
  136. package/dist/esm/components/divider/Divider.js +31 -8
  137. package/dist/esm/components/dropdown/Dropdown.js +48 -9
  138. package/dist/esm/components/dropdown/DropdownTool.js +4 -3
  139. package/dist/esm/components/empty/EmptyContent.js +35 -5
  140. package/dist/esm/components/icon/Icon.js +44 -16
  141. package/dist/esm/components/media/Media.js +173 -76
  142. package/dist/esm/components/menu/ContextMenu.js +51 -12
  143. package/dist/esm/components/menu/Menu.js +76 -23
  144. package/dist/esm/components/menu/MenuItem.js +45 -10
  145. package/dist/esm/components/meter/Meter.js +26 -3
  146. package/dist/esm/components/navigator/Navigator.js +48 -13
  147. package/dist/esm/components/panel/Panel.js +47 -9
  148. package/dist/esm/components/panel/PanelGroup.js +25 -2
  149. package/dist/esm/components/panel/PanelStack.js +31 -0
  150. package/dist/esm/components/progress/ProgressBar.js +31 -9
  151. package/dist/esm/components/progress/ProgressCircle.js +29 -7
  152. package/dist/esm/components/tabpanel/Tab.js +90 -39
  153. package/dist/esm/components/tabpanel/TabPanel.js +53 -16
  154. package/dist/esm/context/Global.js +28 -1
  155. package/dist/esm/context/NotificationCenter.js +3 -3
  156. package/dist/esm/core/aside/Aside.js +49 -11
  157. package/dist/esm/core/boundary/ErrorBoundary.js +23 -8
  158. package/dist/esm/core/boundary/ErrorIcon.js +1 -2
  159. package/dist/esm/core/content/Content.js +15 -8
  160. package/dist/esm/core/headfoot/HeadFoot.js +44 -20
  161. package/dist/esm/core/page/Page.js +40 -29
  162. package/dist/esm/core/responsive/Responsive.js +59 -6
  163. package/dist/esm/core/section/Section.js +1 -2
  164. package/dist/esm/core/theme/ThemeProvider.js +32 -10
  165. package/dist/esm/core/viewport/Viewport.js +18 -2
  166. package/dist/esm/hooks/useControlledValue.js +12 -0
  167. package/dist/esm/hooks/useDebounce.js +14 -1
  168. package/dist/esm/hooks/useEffectDebugger.js +54 -2
  169. package/dist/esm/hooks/useIsDark.js +8 -0
  170. package/dist/esm/hooks/useIsRtl.js +12 -0
  171. package/dist/esm/hooks/useNavigator.js +7 -5
  172. package/dist/esm/hooks/useOverlayService.js +24 -0
  173. package/dist/esm/hooks/usePropToggle.js +16 -5
  174. package/dist/esm/hooks/useResize.js +18 -0
  175. package/dist/esm/hooks/useResizeObserver.js +20 -1
  176. package/dist/esm/hooks/useStorage.js +39 -0
  177. package/dist/esm/hotkeys/HotKeyLabel.js +1 -1
  178. package/dist/esm/hotkeys/HotKeyWrapper.js +3 -1
  179. package/dist/esm/index.js +4 -1
  180. package/dist/esm/overlays/alert/Alert.js +21 -15
  181. package/dist/esm/overlays/flyout/Flyout.js +52 -63
  182. package/dist/esm/overlays/message/Message.js +7 -4
  183. package/dist/esm/overlays/modal/Modal.js +17 -13
  184. package/dist/esm/overlays/toast/Toast.js +18 -10
  185. package/dist/esm/overlays/tooltip/Tooltip.js +24 -11
  186. package/dist/esm/types/icons.js +10 -1
  187. package/dist/esm/typography/Abbr.js +32 -6
  188. package/dist/esm/typography/{Link.js → Anchor.js} +24 -6
  189. package/dist/esm/typography/Mark.js +22 -4
  190. package/dist/esm/typography/Text.js +31 -6
  191. package/dist/esm/typography/Title.js +20 -5
  192. package/dist/esm/utils/cloneElement.js +47 -0
  193. package/dist/esm/utils/getColor.js +2 -16
  194. package/dist/types/components/actionLabel/ActionLabel.d.ts +23 -4
  195. package/dist/types/components/animations/Animations.d.ts +84 -5
  196. package/dist/types/components/avatar/Avatar.d.ts +29 -5
  197. package/dist/types/components/avatar/AvatarGroup.d.ts +19 -1
  198. package/dist/types/components/badge/Badge.d.ts +30 -1
  199. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +31 -2
  200. package/dist/types/components/button/Button.d.ts +29 -6
  201. package/dist/types/components/button/ButtonGroup.d.ts +28 -3
  202. package/dist/types/components/button/ConfirmButton.d.ts +28 -3
  203. package/dist/types/components/button/ToggleButtonGroup.d.ts +39 -11
  204. package/dist/types/components/callout/Callout.d.ts +29 -3
  205. package/dist/types/components/card/Card.d.ts +42 -4
  206. package/dist/types/components/card/CardCover.d.ts +25 -0
  207. package/dist/types/components/card/FlipContent.d.ts +28 -0
  208. package/dist/types/components/chip/Chip.d.ts +24 -4
  209. package/dist/types/components/collapsable/Collapsable.d.ts +33 -3
  210. package/dist/types/components/divider/Divider.d.ts +30 -7
  211. package/dist/types/components/dropdown/Dropdown.d.ts +40 -1
  212. package/dist/types/components/dropdown/DropdownTool.d.ts +27 -1
  213. package/dist/types/components/empty/EmptyContent.d.ts +32 -3
  214. package/dist/types/components/icon/Icon.d.ts +32 -6
  215. package/dist/types/components/index.d.ts +2 -1
  216. package/dist/types/components/media/Media.d.ts +56 -2
  217. package/dist/types/components/menu/ContextMenu.d.ts +21 -2
  218. package/dist/types/components/menu/Menu.d.ts +29 -0
  219. package/dist/types/components/menu/MenuItem.d.ts +22 -2
  220. package/dist/types/components/menu/types.d.ts +3 -2
  221. package/dist/types/components/meter/Meter.d.ts +24 -0
  222. package/dist/types/components/navigator/Navigator.d.ts +29 -4
  223. package/dist/types/components/panel/Panel.d.ts +37 -1
  224. package/dist/types/components/panel/PanelGroup.d.ts +24 -0
  225. package/dist/types/components/panel/PanelStack.d.ts +31 -0
  226. package/dist/types/components/progress/ProgressBar.d.ts +23 -3
  227. package/dist/types/components/progress/ProgressCircle.d.ts +22 -3
  228. package/dist/types/components/tabpanel/Tab.d.ts +36 -5
  229. package/dist/types/components/tabpanel/TabPanel.d.ts +43 -1
  230. package/dist/types/context/Global.d.ts +24 -1
  231. package/dist/types/core/aside/Aside.d.ts +38 -1
  232. package/dist/types/core/boundary/ErrorBoundary.d.ts +18 -2
  233. package/dist/types/core/content/Content.d.ts +9 -3
  234. package/dist/types/core/headfoot/HeadFoot.d.ts +41 -9
  235. package/dist/types/core/page/Page.d.ts +29 -4
  236. package/dist/types/core/responsive/Responsive.d.ts +58 -3
  237. package/dist/types/core/section/Section.d.ts +16 -1
  238. package/dist/types/core/theme/ThemeProvider.d.ts +25 -5
  239. package/dist/types/core/viewport/Viewport.d.ts +15 -1
  240. package/dist/types/hooks/useControlledValue.d.ts +13 -2
  241. package/dist/types/hooks/useDebounce.d.ts +12 -0
  242. package/dist/types/hooks/useEffectDebugger.d.ts +49 -0
  243. package/dist/types/hooks/useIsDark.d.ts +8 -0
  244. package/dist/types/hooks/useIsRtl.d.ts +12 -0
  245. package/dist/types/hooks/useNavigator.d.ts +18 -1
  246. package/dist/types/hooks/useOverlayService.d.ts +28 -9
  247. package/dist/types/hooks/usePropToggle.d.ts +16 -5
  248. package/dist/types/hooks/useResize.d.ts +19 -1
  249. package/dist/types/hooks/useResizeObserver.d.ts +20 -1
  250. package/dist/types/hooks/useStorage.d.ts +38 -0
  251. package/dist/types/index.d.ts +3 -0
  252. package/dist/types/overlays/alert/Alert.d.ts +2 -3
  253. package/dist/types/overlays/flyout/Flyout.d.ts +3 -2
  254. package/dist/types/overlays/message/Message.d.ts +2 -3
  255. package/dist/types/overlays/modal/Modal.d.ts +12 -3
  256. package/dist/types/overlays/toast/Toast.d.ts +2 -3
  257. package/dist/types/overlays/tooltip/Tooltip.d.ts +2 -2
  258. package/dist/types/types/icons.d.ts +10 -1
  259. package/dist/types/types/index.d.ts +26 -6
  260. package/dist/types/typography/Abbr.d.ts +34 -4
  261. package/dist/types/typography/Anchor.d.ts +42 -0
  262. package/dist/types/typography/Copy.d.ts +15 -0
  263. package/dist/types/typography/Mark.d.ts +22 -4
  264. package/dist/types/typography/Text.d.ts +27 -1
  265. package/dist/types/typography/Title.d.ts +16 -1
  266. package/dist/types/typography/index.d.ts +1 -1
  267. package/dist/types/utils/cloneElement.d.ts +2 -0
  268. package/dist/types/utils/getColor.d.ts +1 -4
  269. package/dist/types/utils/index.d.ts +1 -0
  270. package/package.json +11 -13
  271. package/src/components/actionLabel/ActionLabel.tsx +38 -11
  272. package/src/components/animations/Animations.tsx +118 -33
  273. package/src/components/avatar/Avatar.tsx +106 -91
  274. package/src/components/avatar/AvatarGroup.tsx +23 -5
  275. package/src/components/badge/Badge.tsx +41 -9
  276. package/src/components/breadcrumbs/Breadcrumbs.tsx +42 -9
  277. package/src/components/button/Button.tsx +50 -23
  278. package/src/components/button/ButtonGroup.tsx +33 -7
  279. package/src/components/button/ConfirmButton.tsx +41 -7
  280. package/src/components/button/ToggleButtonGroup.tsx +74 -47
  281. package/src/components/callout/Callout.tsx +55 -12
  282. package/src/components/card/Card.tsx +64 -15
  283. package/src/components/card/CardCover.tsx +36 -6
  284. package/src/components/card/FlipContent.tsx +90 -0
  285. package/src/components/chip/Chip.tsx +39 -13
  286. package/src/components/collapsable/Collapsable.tsx +38 -7
  287. package/src/components/divider/Divider.tsx +42 -16
  288. package/src/components/dropdown/Dropdown.tsx +46 -11
  289. package/src/components/dropdown/DropdownTool.tsx +30 -3
  290. package/src/components/empty/EmptyContent.tsx +47 -6
  291. package/src/components/icon/Icon.tsx +85 -68
  292. package/src/components/index.ts +2 -1
  293. package/src/components/media/Media.tsx +195 -106
  294. package/src/components/menu/ContextMenu.tsx +55 -11
  295. package/src/components/menu/Menu.tsx +85 -30
  296. package/src/components/menu/MenuItem.tsx +40 -9
  297. package/src/components/menu/types.ts +3 -2
  298. package/src/components/meter/Meter.tsx +26 -3
  299. package/src/components/navigator/Navigator.tsx +58 -7
  300. package/src/components/panel/Panel.tsx +47 -9
  301. package/src/components/panel/PanelGroup.tsx +25 -2
  302. package/src/components/panel/PanelStack.tsx +31 -0
  303. package/src/components/progress/ProgressBar.tsx +33 -14
  304. package/src/components/progress/ProgressCircle.tsx +29 -13
  305. package/src/components/tabpanel/Tab.tsx +112 -64
  306. package/src/components/tabpanel/TabPanel.tsx +67 -12
  307. package/src/context/Global.tsx +28 -1
  308. package/src/context/NotificationCenter.tsx +3 -3
  309. package/src/core/aside/Aside.tsx +50 -12
  310. package/src/core/boundary/ErrorBoundary.tsx +25 -8
  311. package/src/core/boundary/ErrorIcon.tsx +1 -2
  312. package/src/core/content/Content.tsx +23 -13
  313. package/src/core/headfoot/HeadFoot.tsx +42 -35
  314. package/src/core/page/Page.tsx +44 -6
  315. package/src/core/responsive/Responsive.tsx +66 -8
  316. package/src/core/section/Section.tsx +17 -3
  317. package/src/core/theme/ThemeProvider.tsx +35 -14
  318. package/src/core/viewport/Viewport.tsx +16 -3
  319. package/src/hooks/useControlledValue.tsx +12 -0
  320. package/src/hooks/useDebounce.ts +13 -1
  321. package/src/hooks/useEffectDebugger.ts +50 -2
  322. package/src/hooks/useIsDark.ts +8 -0
  323. package/src/hooks/useIsRtl.ts +12 -0
  324. package/src/hooks/useNavigator.tsx +28 -5
  325. package/src/hooks/useOverlayService.tsx +36 -6
  326. package/src/hooks/usePropToggle.ts +16 -5
  327. package/src/hooks/useResize.ts +19 -1
  328. package/src/hooks/useResizeObserver.ts +32 -9
  329. package/src/hooks/useStorage.ts +38 -0
  330. package/src/hotkeys/HotKeyLabel.tsx +1 -1
  331. package/src/hotkeys/HotKeyWrapper.tsx +3 -1
  332. package/src/index.ts +4 -0
  333. package/src/overlays/alert/Alert.tsx +28 -32
  334. package/src/overlays/flyout/Flyout.tsx +71 -84
  335. package/src/overlays/message/Message.tsx +10 -7
  336. package/src/overlays/modal/Modal.tsx +37 -15
  337. package/src/overlays/toast/Toast.tsx +18 -27
  338. package/src/overlays/tooltip/Tooltip.tsx +43 -18
  339. package/src/types/icons.ts +18 -3
  340. package/src/types/index.ts +268 -27
  341. package/src/typography/Abbr.tsx +44 -11
  342. package/src/typography/{Link.tsx → Anchor.tsx} +26 -14
  343. package/src/typography/Copy.tsx +15 -0
  344. package/src/typography/Mark.tsx +24 -10
  345. package/src/typography/Text.tsx +31 -13
  346. package/src/typography/Title.tsx +18 -7
  347. package/src/typography/index.ts +1 -1
  348. package/src/{overlays/tooltip/Tooltip.module.css → utils/cloneElement.ts} +21 -27
  349. package/src/utils/getColor.ts +1 -17
  350. package/src/utils/index.ts +1 -0
  351. package/css/index.js +0 -250
  352. package/css/tailwind/colors.ts +0 -158
  353. package/dist/cjs/components/actionLabel/ActionLabel.module.css +0 -1
  354. package/dist/cjs/components/animations/Animations.module.css +0 -1
  355. package/dist/cjs/components/avatar/Avatar.module.css +0 -1
  356. package/dist/cjs/components/badge/Badge.module.css +0 -1
  357. package/dist/cjs/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  358. package/dist/cjs/components/button/Button.module.css +0 -1
  359. package/dist/cjs/components/card/Card.module.css +0 -1
  360. package/dist/cjs/components/chip/Chip.module.css +0 -1
  361. package/dist/cjs/components/collapsable/Collapsable.module.css +0 -1
  362. package/dist/cjs/components/dropdown/Dropdown.module.css +0 -1
  363. package/dist/cjs/components/icon/Icon.module.css +0 -1
  364. package/dist/cjs/components/media/Media.module.css +0 -1
  365. package/dist/cjs/components/menu/Menu.module.css +0 -1
  366. package/dist/cjs/components/meter/Meter.module.css +0 -1
  367. package/dist/cjs/components/panel/Panel.module.css +0 -1
  368. package/dist/cjs/components/progress/Progress.module.css +0 -1
  369. package/dist/cjs/components/tabpanel/TabPanel.module.css +0 -1
  370. package/dist/cjs/core/aside/Aside.module.css +0 -1
  371. package/dist/cjs/core/boundary/ErrorBoundary.module.css +0 -1
  372. package/dist/cjs/core/content/Content.module.css +0 -1
  373. package/dist/cjs/core/headfoot/HeadFoot.module.css +0 -1
  374. package/dist/cjs/core/page/Page.module.css +0 -1
  375. package/dist/cjs/core/responsive/Responsive.module.css +0 -1
  376. package/dist/cjs/core/section/Section.module.css +0 -1
  377. package/dist/cjs/core/theme/Theme.module.css +0 -1
  378. package/dist/cjs/core/viewport/Viewport.module.css +0 -1
  379. package/dist/cjs/overlays/alert/Alert.module.css +0 -1
  380. package/dist/cjs/overlays/flyout/Flyout.module.css +0 -1
  381. package/dist/cjs/overlays/message/Message.module.css +0 -1
  382. package/dist/cjs/overlays/modal/Modal.module.css +0 -1
  383. package/dist/cjs/overlays/toast/Toast.module.css +0 -1
  384. package/dist/cjs/overlays/tooltip/Tooltip.module.css +0 -1
  385. package/dist/cjs/typography/Typography.module.css +0 -1
  386. package/dist/esm/components/actionLabel/ActionLabel.module.css +0 -1
  387. package/dist/esm/components/animations/Animations.module.css +0 -1
  388. package/dist/esm/components/avatar/Avatar.module.css +0 -1
  389. package/dist/esm/components/badge/Badge.module.css +0 -1
  390. package/dist/esm/components/breadcrumbs/Breadcrumbs.module.css +0 -1
  391. package/dist/esm/components/button/Button.module.css +0 -1
  392. package/dist/esm/components/card/Card.module.css +0 -1
  393. package/dist/esm/components/chip/Chip.module.css +0 -1
  394. package/dist/esm/components/collapsable/Collapsable.module.css +0 -1
  395. package/dist/esm/components/dropdown/Dropdown.module.css +0 -1
  396. package/dist/esm/components/icon/Icon.module.css +0 -1
  397. package/dist/esm/components/media/Media.module.css +0 -1
  398. package/dist/esm/components/menu/Menu.module.css +0 -1
  399. package/dist/esm/components/meter/Meter.module.css +0 -1
  400. package/dist/esm/components/panel/Panel.module.css +0 -1
  401. package/dist/esm/components/progress/Progress.module.css +0 -1
  402. package/dist/esm/components/tabpanel/TabPanel.module.css +0 -1
  403. package/dist/esm/core/aside/Aside.module.css +0 -1
  404. package/dist/esm/core/boundary/ErrorBoundary.module.css +0 -1
  405. package/dist/esm/core/content/Content.module.css +0 -1
  406. package/dist/esm/core/headfoot/HeadFoot.module.css +0 -1
  407. package/dist/esm/core/page/Page.module.css +0 -1
  408. package/dist/esm/core/responsive/Responsive.module.css +0 -1
  409. package/dist/esm/core/section/Section.module.css +0 -1
  410. package/dist/esm/core/theme/Theme.module.css +0 -1
  411. package/dist/esm/core/viewport/Viewport.module.css +0 -1
  412. package/dist/esm/overlays/alert/Alert.module.css +0 -1
  413. package/dist/esm/overlays/flyout/Flyout.module.css +0 -1
  414. package/dist/esm/overlays/message/Message.module.css +0 -1
  415. package/dist/esm/overlays/modal/Modal.module.css +0 -1
  416. package/dist/esm/overlays/toast/Toast.module.css +0 -1
  417. package/dist/esm/overlays/tooltip/Tooltip.module.css +0 -1
  418. package/dist/esm/typography/Typography.module.css +0 -1
  419. package/dist/types/typography/Link.d.ts +0 -25
@@ -8,13 +8,47 @@ var classNames = require('classnames');
8
8
  var react = require('react');
9
9
  var icons = require('../../types/icons.js');
10
10
  var Button = require('../button/Button.js');
11
- var Media_module = require('./Media.module.css');
11
+ var Icon = require('../icon/Icon.js');
12
12
  var jsxRuntime = require('react/jsx-runtime');
13
13
 
14
14
  var _excluded = ["src", "alt", "reel", "fit", "className"],
15
15
  _excluded2 = ["src", "poster", "reel", "autoPlay", "playOnHover", "fit", "className"];
16
16
  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
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 cover = {
19
+ fill: "object-fill",
20
+ cover: "object-cover",
21
+ contain: "object-contain"
22
+ };
23
+ var loadIndicator = /*#__PURE__*/jsxRuntime.jsx("div", {
24
+ className: classNames("fabric-mediaPlaceholder", "absolute z-1 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-4xl text-gray animate-pulse"),
25
+ children: "\u25CF\u25CF\u25CF"
26
+ });
27
+
28
+ /**
29
+ * Component for displaying images with optional reel decoration.
30
+ * A versatile media component that supports images and videos with various display options.
31
+ * It can display images with a reel decoration, handle loading states, and show error icons if the media fails to load.
32
+ * This component is useful for displaying images in a visually appealing way, with support for lazy loading and error handling.
33
+ * It automatically adjusts the display based on the provided fit property, allowing for different styles such as cover, contain, or fill.
34
+ *
35
+ * @param {ImageProps | VideoProps} props - The properties for the Media component.
36
+ * @returns {JSX.Element} The rendered Media component.
37
+ *
38
+ * @example
39
+ * ```jsx
40
+ * <Image
41
+ * src="image.jpg"
42
+ * alt="Example Image"
43
+ * reel={true}
44
+ * fit="cover"
45
+ * className="custom-class"
46
+ * />
47
+ * // Renders an image with reel decoration, cover fit, and a custom class name.
48
+ * ```
49
+ *
50
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-media--docs} for more details.
51
+ */
18
52
  var Image = function Image(_ref) {
19
53
  var src = _ref.src,
20
54
  alt = _ref.alt,
@@ -27,31 +61,74 @@ var Image = function Image(_ref) {
27
61
  _useState2 = _slicedToArray(_useState, 2),
28
62
  colorSet = _useState2[0],
29
63
  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
- });
64
+ var _useState3 = react.useState(false),
65
+ _useState4 = _slicedToArray(_useState3, 2),
66
+ loaded = _useState4[0],
67
+ setLoaded = _useState4[1];
68
+ var _useState5 = react.useState(false),
69
+ _useState6 = _slicedToArray(_useState5, 2),
70
+ errored = _useState6[0],
71
+ setErrored = _useState6[1];
72
+ react.useEffect(function () {
73
+ setLoaded(false);
74
+ setErrored(false);
35
75
  }, [src]);
36
76
  return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
37
77
  "data-ref": "image",
38
- className: classNames(Media_module.mediaContainer, "relative overflow-hidden bg-gray inline-block", reel && Media_module.mediaReel, className),
78
+ className: classNames("fabric-mediaContainer", "relative overflow-hidden inline-block", reel && "fabric-mediaReel", className),
39
79
  "data-colorset": colorSet
40
80
  }, aria), {}, {
41
- children: [loadIndicator, /*#__PURE__*/jsxRuntime.jsx("img", {
81
+ children: [!loaded && !errored && loadIndicator, !errored && /*#__PURE__*/jsxRuntime.jsx("img", {
42
82
  alt: alt !== null && alt !== void 0 ? alt : src,
43
83
  src: src,
44
84
  loading: "lazy",
45
85
  crossOrigin: "anonymous",
46
- className: classNames(Media_module.media, "pointer-events-none w-full h-full", fit && "object-".concat(fit)),
86
+ className: classNames("fabric-media", "pointer-events-none w-full h-full", cover[fit]),
47
87
  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();
88
+ setLoaded(true);
50
89
  setColorSet(utilities.getImageColorset(e.currentTarget));
90
+ },
91
+ onError: function onError() {
92
+ return setErrored(true);
51
93
  }
94
+ }), errored && /*#__PURE__*/jsxRuntime.jsx(Icon.Icon, {
95
+ size: "2rem",
96
+ className: "absolute text-tint-300 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
97
+ icon: icons.CoreIcons.mediaImageBroken
52
98
  })]
53
99
  }));
54
100
  };
101
+
102
+ /**
103
+ * Component for displaying videos with optional controls and reel decoration.
104
+ * A versatile video component that supports autoplay, hover play, and various display options.
105
+ * It can display videos with a reel decoration, handle loading states, and show error icons if the video fails to load.
106
+ * This component is useful for displaying videos in a visually appealing way, with support for controls, autoplay, and error handling.
107
+ * It automatically adjusts the display based on the provided fit property, allowing for different styles such as cover, contain, or fill.
108
+ * It also includes controls for play/pause and volume, enhancing user interaction with the video content.
109
+ * This component is ideal for media-rich applications where video content needs to be displayed with user-friendly controls and visual effects.
110
+ * It supports features like autoplay, play on hover, and custom fit options for the video display.
111
+ * It also includes a reel decoration for a more engaging visual presentation.
112
+ *
113
+ * @param {VideoProps} props - The properties for the Video component.
114
+ * @returns {JSX.Element} The rendered Video component.
115
+ *
116
+ * @example
117
+ * ```jsx
118
+ * <Video
119
+ * src="video.mp4"
120
+ * poster="poster.jpg"
121
+ * reel={true}
122
+ * autoPlay={true}
123
+ * playOnHover={true}
124
+ * fit="cover"
125
+ * className="custom-class"
126
+ * />
127
+ * // Renders a video with reel decoration, autoplay, play on hover, cover fit, and a custom class name.
128
+ * ```
129
+ *
130
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-video--docs} for more details.
131
+ */
55
132
  var Video = function Video(_ref2) {
56
133
  var src = _ref2.src,
57
134
  poster = _ref2.poster,
@@ -63,17 +140,32 @@ var Video = function Video(_ref2) {
63
140
  className = _ref2.className,
64
141
  aria = _objectWithoutProperties(_ref2, _excluded2);
65
142
  var videoRef = react.useRef(null);
66
- var _useState3 = react.useState(true),
67
- _useState4 = _slicedToArray(_useState3, 2),
68
- state = _useState4[0],
69
- setState = _useState4[1];
70
- var _useState5 = react.useState(false),
71
- _useState6 = _slicedToArray(_useState5, 2),
72
- volume = _useState6[0],
73
- setVolume = _useState6[1];
143
+ var _useState7 = react.useState(false),
144
+ _useState8 = _slicedToArray(_useState7, 2),
145
+ loaded = _useState8[0],
146
+ setLoaded = _useState8[1];
147
+ var _useState9 = react.useState(false),
148
+ _useState10 = _slicedToArray(_useState9, 2),
149
+ errored = _useState10[0],
150
+ setErrored = _useState10[1];
151
+ react.useEffect(function () {
152
+ setLoaded(false);
153
+ setErrored(false);
154
+ }, [src]);
155
+ var _useState11 = react.useState(true),
156
+ _useState12 = _slicedToArray(_useState11, 2),
157
+ state = _useState12[0],
158
+ setState = _useState12[1];
159
+ var _useState13 = react.useState(false),
160
+ _useState14 = _slicedToArray(_useState13, 2),
161
+ volume = _useState14[0],
162
+ setVolume = _useState14[1];
163
+ react.useEffect(function () {
164
+ setErrored(false);
165
+ }, [src]);
74
166
  return /*#__PURE__*/jsxRuntime.jsxs("div", _objectSpread(_objectSpread({
75
167
  "data-ref": "video",
76
- className: classNames(Media_module.mediaContainer, "relative overflow-hidden bg-gray inline-block", reel && Media_module.mediaReel, className),
168
+ className: classNames("fabric-mediaContainer", "relative overflow-hidden inline-block", reel && "fabric-mediaReel", className),
77
169
  onMouseEnter: function onMouseEnter() {
78
170
  var _videoRef$current;
79
171
  playOnHover && ((_videoRef$current = videoRef.current) === null || _videoRef$current === void 0 ? void 0 : _videoRef$current.play());
@@ -83,64 +175,69 @@ var Video = function Video(_ref2) {
83
175
  playOnHover && ((_videoRef$current2 = videoRef.current) === null || _videoRef$current2 === void 0 ? void 0 : _videoRef$current2.pause());
84
176
  }
85
177
  }, 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);
178
+ children: [!loaded && !errored && loadIndicator, !errored && /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
179
+ children: [/*#__PURE__*/jsxRuntime.jsxs("video", {
180
+ loop: true,
181
+ ref: videoRef,
182
+ controls: false,
183
+ poster: poster,
184
+ autoPlay: autoPlay,
185
+ className: classNames("fabric-media", "pointer-events-none w-full h-full", fit && "object-".concat(fit)),
186
+ onPlay: function onPlay() {
187
+ return setState(true);
188
+ },
189
+ onPause: function onPause() {
190
+ return setState(false);
191
+ },
192
+ onVolumeChange: function onVolumeChange(e) {
193
+ return setVolume(!!e.currentTarget.volume);
194
+ },
195
+ onLoadedData: function onLoadedData(e) {
196
+ e.currentTarget.volume = 0;
197
+ setLoaded(true);
131
198
  },
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();
199
+ onError: function onError() {
200
+ return setErrored(true);
141
201
  },
142
- icon: state ? icons.CoreIcons.pause : icons.CoreIcons.play
202
+ children: [/*#__PURE__*/jsxRuntime.jsx("source", {
203
+ src: src
204
+ }), /*#__PURE__*/jsxRuntime.jsx("track", {
205
+ kind: "captions"
206
+ })]
207
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
208
+ "data-inner-clickable": true,
209
+ className: classNames("fabric-mediaControls", "absolute bottom-6 end-6 rounded-full flex flex-col"),
210
+ children: [/*#__PURE__*/jsxRuntime.jsx(Button.Button, {
211
+ rounded: true,
212
+ variant: "link",
213
+ className: "fabric-mediaControlPlaceholder",
214
+ icon: icons.CoreIcons.ellipsis,
215
+ "aria-label": "controls"
216
+ }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
217
+ rounded: true,
218
+ variant: "link",
219
+ "aria-label": "controls",
220
+ className: "fabric-mediaControlAction",
221
+ onClick: function onClick() {
222
+ videoRef.current && (videoRef.current.volume = videoRef.current.volume ? 0 : 1);
223
+ },
224
+ icon: volume ? icons.CoreIcons.volumeOn : icons.CoreIcons.volumeOff
225
+ }), /*#__PURE__*/jsxRuntime.jsx(Button.Button, {
226
+ rounded: true,
227
+ variant: "link",
228
+ "aria-label": "controls",
229
+ className: "fabric-mediaControlAction",
230
+ onClick: function onClick() {
231
+ var _videoRef$current3, _videoRef$current4, _videoRef$current5;
232
+ (_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();
233
+ },
234
+ icon: state ? icons.CoreIcons.pause : icons.CoreIcons.play
235
+ })]
143
236
  })]
237
+ }), errored && /*#__PURE__*/jsxRuntime.jsx(Icon.Icon, {
238
+ size: "2rem",
239
+ className: "absolute text-tint-300 top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2",
240
+ icon: icons.CoreIcons.mediaVideoBroken
144
241
  })]
145
242
  }));
146
243
  };
@@ -8,16 +8,42 @@ 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
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
+ /**
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
+ * @param {ContextMenuProps} props - The properties for the ContextMenu component.
17
+ * @returns {JSX.Element} The rendered ContextMenu component.
18
+ *
19
+ * @example
20
+ * ```jsx
21
+ * <ContextMenu
22
+ * menu={<Menu items={[{ label: "Option 1" }, { label: "Option 2" }]} />}
23
+ * >
24
+ * <div className="context-menu-target">Right-click me!</div>
25
+ * </ContextMenu>
26
+ * ```
27
+ *
28
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-menu--docs}
29
+ */
11
30
  var ContextMenu = function ContextMenu(_ref) {
31
+ var _refs$domReference$cu, _refs$domReference$cu2;
12
32
  var children = _ref.children,
13
- menu = _ref.menu;
33
+ menu = _ref.menu,
34
+ disabled = _ref.disabled;
14
35
  var _useState = react.useState(false),
15
36
  _useState2 = _slicedToArray(_useState, 2),
16
37
  isOpen = _useState2[0],
17
38
  setIsOpen = _useState2[1];
39
+ var nodeId = react$1.useFloatingNodeId();
18
40
  var _useFloating = react$1.useFloating({
19
41
  open: isOpen,
20
- onOpenChange: setIsOpen,
42
+ nodeId: nodeId,
43
+ onOpenChange: function onOpenChange(open, evt, reason) {
44
+ var target = evt === null || evt === void 0 ? void 0 : evt.target;
45
+ if (!(target !== null && target !== void 0 && target.closest(".menu-list"))) setIsOpen(open);
46
+ },
21
47
  strategy: "fixed",
22
48
  placement: "bottom-start",
23
49
  whileElementsMounted: react$1.autoUpdate,
@@ -26,8 +52,13 @@ var ContextMenu = function ContextMenu(_ref) {
26
52
  refs = _useFloating.refs,
27
53
  floatingStyles = _useFloating.floatingStyles,
28
54
  context = _useFloating.context;
29
- var click = react$1.useClick(context, {});
30
- var dismiss = react$1.useDismiss(context, {});
55
+ var click = react$1.useClick(context, {
56
+ toggle: true,
57
+ ignoreMouse: true
58
+ });
59
+ var dismiss = react$1.useDismiss(context, {
60
+ bubbles: true
61
+ });
31
62
  var _useInteractions = react$1.useInteractions([dismiss, click]),
32
63
  getFloatingProps = _useInteractions.getFloatingProps;
33
64
  var handleClick = react.useRef(function (e) {
@@ -51,11 +82,18 @@ var ContextMenu = function ContextMenu(_ref) {
51
82
  e.preventDefault();
52
83
  return false;
53
84
  });
54
- var wrapperRef = react.useRef(function (el) {
55
- var _el$parentElement, _el$parentElement2;
56
- el === null || el === void 0 || (_el$parentElement = el.parentElement) === null || _el$parentElement === void 0 || _el$parentElement.removeEventListener("contextmenu", handleClick.current);
57
- el === null || el === void 0 || (_el$parentElement2 = el.parentElement) === null || _el$parentElement2 === void 0 || _el$parentElement2.addEventListener("contextmenu", handleClick.current);
58
- });
85
+ var wrapperRef = react.useRef(null);
86
+ react.useEffect(function () {
87
+ var el = wrapperRef.current;
88
+ if (el && !disabled) {
89
+ var _el$parentElement;
90
+ el === null || el === void 0 || (_el$parentElement = el.parentElement) === null || _el$parentElement === void 0 || _el$parentElement.addEventListener("contextmenu", handleClick.current);
91
+ return function () {
92
+ var _el$parentElement2;
93
+ el === null || el === void 0 || (_el$parentElement2 = el.parentElement) === null || _el$parentElement2 === void 0 || _el$parentElement2.removeEventListener("contextmenu", handleClick.current);
94
+ };
95
+ }
96
+ }, [disabled]);
59
97
  var tryClosing = react.useRef(function (e) {
60
98
  var _e$target;
61
99
  if ((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.closest("[data-dropdown-dismiss='true']")) setTimeout(function () {
@@ -64,9 +102,10 @@ var ContextMenu = function ContextMenu(_ref) {
64
102
  });
65
103
  return /*#__PURE__*/jsxRuntime.jsxs("div", {
66
104
  className: "contents",
67
- ref: wrapperRef.current,
105
+ ref: wrapperRef,
68
106
  onMouseUpCapture: tryClosing.current,
69
107
  children: [children, isOpen && /*#__PURE__*/jsxRuntime.jsx(react$1.FloatingPortal, {
108
+ 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,
70
109
  children: /*#__PURE__*/react.cloneElement(menu, _objectSpread(_objectSpread({}, getFloatingProps()), {}, {
71
110
  style: _objectSpread(_objectSpread({}, floatingStyles), {}, {
72
111
  borderRadius: "var(--rounding)",
@@ -7,12 +7,14 @@ var react = require('@floating-ui/react');
7
7
  var utilities = require('@react-fabric/utilities');
8
8
  var classNames = require('classnames');
9
9
  var react$1 = require('react');
10
+ var HotKeyWrapper = require('../../hotkeys/HotKeyWrapper.js');
10
11
  var icons = require('../../types/icons.js');
12
+ var cloneElement = require('../../utils/cloneElement.js');
11
13
  var nodeCheck = require('../../utils/nodeCheck.js');
12
14
  var MenuItem = require('./MenuItem.js');
13
15
  var jsxRuntime = require('react/jsx-runtime');
14
16
 
15
- var _excluded = ["children", "minimal", "menuClassName", "onClick", "ref"];
17
+ var _excluded = ["children", "minimal", "menuClassName", "onClick", "trigger", "ref"];
16
18
  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
19
  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
20
  // FIXME: refactor menu implementation to differentiate between static and floating menus, implement context wrapper for each menu level
@@ -23,6 +25,8 @@ var MenuComponent = function MenuComponent(_ref) {
23
25
  minimal = _ref.minimal,
24
26
  menuClassName = _ref.menuClassName,
25
27
  onClick = _ref.onClick,
28
+ _ref$trigger = _ref.trigger,
29
+ trigger = _ref$trigger === void 0 ? "hover" : _ref$trigger,
26
30
  ref = _ref.ref,
27
31
  rest = _objectWithoutProperties(_ref, _excluded);
28
32
  var _useState = react$1.useState(false),
@@ -44,6 +48,7 @@ var MenuComponent = function MenuComponent(_ref) {
44
48
  open: !isNested || isOpen,
45
49
  onOpenChange: function onOpenChange(open, event, reason) {
46
50
  isNested && setIsOpen(open);
51
+ if (reason === "outside-press" && trigger === "click") tree === null || tree === void 0 || tree.events.emit("close");
47
52
  },
48
53
  placement: isNested ? "right-start" : "bottom-start",
49
54
  middleware: [react.offset({
@@ -56,6 +61,7 @@ var MenuComponent = function MenuComponent(_ref) {
56
61
  refs = _useFloating.refs,
57
62
  context = _useFloating.context;
58
63
  var hover = react.useHover(context, {
64
+ enabled: trigger === "hover",
59
65
  delay: {
60
66
  open: 75
61
67
  },
@@ -64,8 +70,9 @@ var MenuComponent = function MenuComponent(_ref) {
64
70
  })
65
71
  });
66
72
  var click = react.useClick(context, {
67
- toggle: true,
68
- ignoreMouse: true
73
+ event: "mousedown",
74
+ toggle: trigger === "click" || !isNested,
75
+ ignoreMouse: trigger === "hover" && !isNested
69
76
  });
70
77
  var role = react.useRole(context, {
71
78
  role: "menu"
@@ -137,6 +144,16 @@ var MenuComponent = function MenuComponent(_ref) {
137
144
  });
138
145
  }, 100);
139
146
  }, [isOpen]);
147
+ react$1.useEffect(function () {
148
+ if ((!isNested || isOpen) && activeIndex) {
149
+ setTimeout(function () {
150
+ var _elementsRef$current$;
151
+ (_elementsRef$current$ = elementsRef.current[activeIndex]) === null || _elementsRef$current$ === void 0 || _elementsRef$current$.scrollIntoView({
152
+ block: "nearest"
153
+ });
154
+ }, 100);
155
+ }
156
+ }, [isOpen, activeIndex]);
140
157
  return /*#__PURE__*/jsxRuntime.jsxs(react.FloatingNode, {
141
158
  id: nodeId,
142
159
  children: [isNested && /*#__PURE__*/jsxRuntime.jsx(MenuItem.MenuItem, _objectSpread(_objectSpread({}, getReferenceProps(_objectSpread(_objectSpread({}, rest), {}, {
@@ -155,21 +172,21 @@ var MenuComponent = function MenuComponent(_ref) {
155
172
  elementsRef: elementsRef,
156
173
  labelsRef: labelsRef,
157
174
  children: (!isNested || isOpen) && /*#__PURE__*/jsxRuntime.jsxs(Wrapper, _objectSpread(_objectSpread({}, wrapperProps), {}, {
158
- children: [isNested && /*#__PURE__*/jsxRuntime.jsx(react.FloatingOverlay, {}), /*#__PURE__*/jsxRuntime.jsx(react.FloatingFocusManager, {
159
- context: context,
160
- modal: !isNested,
161
- initialFocus: isNested ? -1 : 0,
162
- returnFocus: !isNested,
163
- 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(refs.setFloating, isNested ? undefined : ref)
167
- }, getFloatingProps({
168
- onClick: isNested ? undefined : handleClick
169
- })), {}, {
170
- style: !isNested ? rest.style : floatingStyles,
171
- children: react$1.Children.map(children, function (child, index) {
172
- if (child) {
175
+ children: [isNested && /*#__PURE__*/jsxRuntime.jsx(react.FloatingOverlay, {}), /*#__PURE__*/jsxRuntime.jsx(HotKeyWrapper.HotKeyWrapper, {
176
+ children: /*#__PURE__*/jsxRuntime.jsx(react.FloatingFocusManager, {
177
+ context: context,
178
+ modal: !isNested,
179
+ initialFocus: isNested ? -1 : 0,
180
+ returnFocus: !isNested,
181
+ children: /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({
182
+ 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-(--z-popover)"),
183
+ autoFocus: true,
184
+ ref: utilities.mergeRefs(isNested ? refs.setFloating : ref)
185
+ }, getFloatingProps({
186
+ onClick: isNested ? undefined : handleClick
187
+ })), {}, {
188
+ style: !isNested ? rest.style : floatingStyles,
189
+ children: cloneElement.cloneChildren(children, function (child, index) {
173
190
  labelsRef.current[index] = child.props.label;
174
191
  return /*#__PURE__*/react$1.cloneElement(child, nodeCheck.nodeCheck(child, MenuItem.MenuItem, Menu, MenuComponent) ? _objectSpread({
175
192
  minimal: !isNested && minimal,
@@ -181,16 +198,52 @@ var MenuComponent = function MenuComponent(_ref) {
181
198
  onClick: child.props.onClick,
182
199
  tabIndex: activeIndex === index ? 0 : -1
183
200
  })) : {});
184
- }
185
- })
186
- }))
201
+ })
202
+ }))
203
+ })
187
204
  })]
188
205
  }))
189
206
  })]
190
207
  });
191
208
  };
209
+
210
+ /**
211
+ * A component that displays a menu with items, supports nested menus and various interactions.
212
+ * It can be triggered by hover or click events, and allows for custom styling and behavior.
213
+ * This component is designed to be used within a Floating UI context, allowing for dynamic positioning and interaction handling.
214
+ * It can be nested within other menus to create complex menu structures.
215
+ *
216
+ * @param {MenuProps} props - The properties for the Menu component.
217
+ * @returns {JSX.Element} The rendered Menu component.
218
+ *
219
+ * @example
220
+ * ```jsx
221
+ * <Menu
222
+ * className="my-menu"
223
+ * trigger="click"
224
+ * onClick={(id) => console.log(`Clicked item with id: ${id}`)}
225
+ * >
226
+ * <MenuItem id="item1" label="Item 1" />
227
+ * <MenuItem id="item2" label="Item 2" />
228
+ * <MenuItem id="item3" label="Item 3">
229
+ * <Menu>
230
+ * <MenuItem id="subitem1" label="Sub Item 1" />
231
+ * <MenuItem id="subitem2" label="Sub Item 2" />
232
+ * </Menu>
233
+ * </MenuItem>
234
+ * </Menu>
235
+ * ```
236
+ *
237
+ * @see {@link https://adarshpastakia.github.io/react-fabric/?path=/docs/core-components-menu--docs} for more details.
238
+ */
192
239
  var Menu = function Menu(props) {
193
240
  var parentId = react.useFloatingParentNodeId();
241
+ var tree = react.useFloatingTree();
242
+ if (tree) {
243
+ return /*#__PURE__*/jsxRuntime.jsx(MenuComponent, _objectSpread(_objectSpread({}, props), {}, {
244
+ menuClassName: props.className
245
+ }));
246
+ }
194
247
  if (parentId === null) {
195
248
  return /*#__PURE__*/jsxRuntime.jsx(react.FloatingTree, {
196
249
  children: /*#__PURE__*/jsxRuntime.jsx(MenuComponent, _objectSpread(_objectSpread({}, props), {}, {