@react-fabric/core 1.0.0-beta.62 → 1.0.0-beta.63

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 (305) hide show
  1. package/css/components/_animations.css +7 -11
  2. package/css/components/_avatar.css +5 -5
  3. package/css/components/_badge.css +2 -1
  4. package/css/components/_breadcrumbs.css +5 -5
  5. package/css/components/_button.css +48 -14
  6. package/css/components/_card.css +9 -17
  7. package/css/components/_chip.css +0 -4
  8. package/css/components/_dropdown.css +1 -0
  9. package/css/components/_flyout.css +1 -1
  10. package/css/components/_media.css +2 -14
  11. package/css/components/_menu.css +1 -1
  12. package/css/components/_modal.css +1 -1
  13. package/css/components/_progress.css +1 -1
  14. package/css/components/_stepper.css +2 -1
  15. package/css/components/_tabPanel.css +4 -4
  16. package/css/core/_aside.css +3 -3
  17. package/css/core/_errorboundary.css +2 -10
  18. package/css/core/_page.css +1 -1
  19. package/css/core/_responsive.css +8 -0
  20. package/css/core/_viewport.css +1 -5
  21. package/css/reset/_reset.css +36 -41
  22. package/css/reset/_theme.css +214 -201
  23. package/css/styles.css +5 -0
  24. package/css/theme/_colors.css +14 -0
  25. package/css/theme/_utilities.css +103 -225
  26. package/css/theme/index.css +4 -6
  27. package/dist/cjs/components/actionLabel/ActionLabel.js +1 -1
  28. package/dist/cjs/components/animations/Animations.js +7 -7
  29. package/dist/cjs/components/avatar/Avatar.js +1 -1
  30. package/dist/cjs/components/avatar/AvatarGroup.js +1 -1
  31. package/dist/cjs/components/badge/Badge.js +5 -27
  32. package/dist/cjs/components/breadcrumbs/Breadcrumbs.js +1 -1
  33. package/dist/cjs/components/button/Button.js +7 -5
  34. package/dist/cjs/components/button/ButtonGroup.js +1 -1
  35. package/dist/cjs/components/button/ConfirmButton.js +7 -6
  36. package/dist/cjs/components/button/ToggleButtonGroup.js +1 -1
  37. package/dist/cjs/components/callout/Callout.js +8 -7
  38. package/dist/cjs/components/card/Card.js +3 -3
  39. package/dist/cjs/components/card/CardCover.js +1 -1
  40. package/dist/cjs/components/card/FlipContent.js +2 -2
  41. package/dist/cjs/components/chip/Chip.js +8 -7
  42. package/dist/cjs/components/collapsable/Collapsable.js +4 -3
  43. package/dist/cjs/components/divider/Divider.js +2 -2
  44. package/dist/cjs/components/dropdown/Dropdown.js +18 -16
  45. package/dist/cjs/components/empty/EmptyContent.js +1 -1
  46. package/dist/cjs/components/icon/Icon.js +2 -16
  47. package/dist/cjs/components/media/Media.js +13 -13
  48. package/dist/cjs/components/menu/ContextMenu.js +23 -13
  49. package/dist/cjs/components/menu/Menu.js +16 -12
  50. package/dist/cjs/components/menu/MenuItem.js +4 -3
  51. package/dist/cjs/components/meter/Meter.js +1 -1
  52. package/dist/cjs/components/navigator/Navigator.js +5 -5
  53. package/dist/cjs/components/panel/Panel.js +6 -4
  54. package/dist/cjs/components/panel/PanelGroup.js +3 -3
  55. package/dist/cjs/components/panel/PanelStack.js +5 -5
  56. package/dist/cjs/components/progress/ProgressBar.js +2 -2
  57. package/dist/cjs/components/progress/ProgressCircle.js +2 -2
  58. package/dist/cjs/components/tabpanel/Tab.js +6 -4
  59. package/dist/cjs/components/tabpanel/TabPanel.js +4 -4
  60. package/dist/cjs/context/Global.js +2 -55
  61. package/dist/cjs/context/NotificationCenter.js +38 -39
  62. package/dist/cjs/context/context.js +59 -0
  63. package/dist/cjs/core/aside/Aside.js +9 -7
  64. package/dist/cjs/core/boundary/ErrorBoundary.js +2 -4
  65. package/dist/cjs/core/page/Page.js +4 -1
  66. package/dist/cjs/core/responsive/Responsive.js +3 -2
  67. package/dist/cjs/core/theme/ThemeProvider.js +2 -2
  68. package/dist/cjs/core/viewport/Viewport.js +1 -1
  69. package/dist/cjs/hooks/useContextMenu.js +103 -0
  70. package/dist/cjs/hooks/useIsDark.js +6 -4
  71. package/dist/cjs/hooks/useNavigator.js +2 -2
  72. package/dist/cjs/hooks/useOverlayService.js +10 -42
  73. package/dist/cjs/hooks/usePropToggle.js +2 -2
  74. package/dist/cjs/hooks/useResize.js +8 -6
  75. package/dist/cjs/hooks/useResizeObserver.js +5 -5
  76. package/dist/cjs/hooks/useStepper.js +2 -6
  77. package/dist/cjs/hotkeys/HotKey.js +2 -2
  78. package/dist/cjs/hotkeys/HotKeyWrapper.js +8 -13
  79. package/dist/cjs/hotkeys/commons.js +1 -1
  80. package/dist/cjs/hotkeys/context.js +36 -0
  81. package/dist/cjs/index.js +9 -5
  82. package/dist/cjs/overlays/alert/Alert.js +6 -5
  83. package/dist/cjs/overlays/flyout/Flyout.js +8 -6
  84. package/dist/cjs/overlays/message/Message.js +5 -5
  85. package/dist/cjs/overlays/modal/Modal.js +5 -3
  86. package/dist/cjs/overlays/toast/Toast.js +4 -4
  87. package/dist/cjs/overlays/tooltip/Tooltip.js +2 -16
  88. package/dist/cjs/typography/Abbr.js +4 -5
  89. package/dist/cjs/typography/Anchor.js +2 -2
  90. package/dist/cjs/typography/Copy.js +2 -2
  91. package/dist/cjs/typography/Mark.js +2 -4
  92. package/dist/cjs/typography/Text.js +4 -4
  93. package/dist/cjs/typography/Title.js +2 -2
  94. package/dist/cjs/utils/cloneElement.js +4 -4
  95. package/dist/cjs/utils/getBadgeProps.js +51 -0
  96. package/dist/cjs/utils/getIconProps.js +42 -0
  97. package/dist/cjs/utils/getTooltipProps.js +45 -0
  98. package/dist/esm/components/actionLabel/ActionLabel.js +1 -1
  99. package/dist/esm/components/animations/Animations.js +7 -7
  100. package/dist/esm/components/avatar/Avatar.js +1 -1
  101. package/dist/esm/components/avatar/AvatarGroup.js +1 -1
  102. package/dist/esm/components/badge/Badge.js +7 -28
  103. package/dist/esm/components/breadcrumbs/Breadcrumbs.js +1 -1
  104. package/dist/esm/components/button/Button.js +8 -6
  105. package/dist/esm/components/button/ButtonGroup.js +3 -3
  106. package/dist/esm/components/button/ConfirmButton.js +8 -7
  107. package/dist/esm/components/button/ToggleButtonGroup.js +3 -3
  108. package/dist/esm/components/callout/Callout.js +8 -7
  109. package/dist/esm/components/card/Card.js +4 -4
  110. package/dist/esm/components/card/CardCover.js +1 -1
  111. package/dist/esm/components/card/FlipContent.js +2 -2
  112. package/dist/esm/components/chip/Chip.js +9 -8
  113. package/dist/esm/components/collapsable/Collapsable.js +4 -3
  114. package/dist/esm/components/divider/Divider.js +2 -2
  115. package/dist/esm/components/dropdown/Dropdown.js +19 -17
  116. package/dist/esm/components/empty/EmptyContent.js +1 -1
  117. package/dist/esm/components/icon/Icon.js +4 -17
  118. package/dist/esm/components/media/Media.js +13 -13
  119. package/dist/esm/components/menu/ContextMenu.js +24 -14
  120. package/dist/esm/components/menu/Menu.js +19 -15
  121. package/dist/esm/components/menu/MenuItem.js +5 -4
  122. package/dist/esm/components/meter/Meter.js +1 -1
  123. package/dist/esm/components/navigator/Navigator.js +6 -6
  124. package/dist/esm/components/panel/Panel.js +6 -4
  125. package/dist/esm/components/panel/PanelGroup.js +4 -4
  126. package/dist/esm/components/panel/PanelStack.js +6 -6
  127. package/dist/esm/components/progress/ProgressBar.js +2 -2
  128. package/dist/esm/components/progress/ProgressCircle.js +2 -2
  129. package/dist/esm/components/tabpanel/Tab.js +6 -4
  130. package/dist/esm/components/tabpanel/TabPanel.js +5 -5
  131. package/dist/esm/context/Global.js +3 -52
  132. package/dist/esm/context/NotificationCenter.js +38 -39
  133. package/dist/esm/context/context.js +56 -0
  134. package/dist/esm/core/aside/Aside.js +10 -8
  135. package/dist/esm/core/boundary/ErrorBoundary.js +1 -3
  136. package/dist/esm/core/page/Page.js +4 -1
  137. package/dist/esm/core/responsive/Responsive.js +3 -2
  138. package/dist/esm/core/theme/ThemeProvider.js +1 -1
  139. package/dist/esm/core/viewport/Viewport.js +1 -1
  140. package/dist/esm/hooks/useContextMenu.js +103 -0
  141. package/dist/esm/hooks/useIsDark.js +7 -5
  142. package/dist/esm/hooks/useNavigator.js +3 -3
  143. package/dist/esm/hooks/useOverlayService.js +8 -40
  144. package/dist/esm/hooks/usePropToggle.js +3 -3
  145. package/dist/esm/hooks/useResize.js +9 -7
  146. package/dist/esm/hooks/useResizeObserver.js +6 -6
  147. package/dist/esm/hooks/useStepper.js +2 -6
  148. package/dist/esm/hotkeys/HotKey.js +1 -1
  149. package/dist/esm/hotkeys/HotKeyWrapper.js +9 -12
  150. package/dist/esm/hotkeys/commons.js +1 -1
  151. package/dist/esm/hotkeys/context.js +35 -0
  152. package/dist/esm/index.js +7 -3
  153. package/dist/esm/overlays/alert/Alert.js +7 -6
  154. package/dist/esm/overlays/flyout/Flyout.js +9 -7
  155. package/dist/esm/overlays/message/Message.js +6 -6
  156. package/dist/esm/overlays/modal/Modal.js +6 -4
  157. package/dist/esm/overlays/toast/Toast.js +5 -5
  158. package/dist/esm/overlays/tooltip/Tooltip.js +4 -17
  159. package/dist/esm/typography/Abbr.js +4 -5
  160. package/dist/esm/typography/Anchor.js +2 -2
  161. package/dist/esm/typography/Copy.js +3 -3
  162. package/dist/esm/typography/Mark.js +2 -4
  163. package/dist/esm/typography/Text.js +5 -5
  164. package/dist/esm/typography/Title.js +2 -2
  165. package/dist/esm/utils/cloneElement.js +4 -4
  166. package/dist/esm/utils/getBadgeProps.js +51 -0
  167. package/dist/esm/utils/getIconProps.js +42 -0
  168. package/dist/esm/utils/getTooltipProps.js +45 -0
  169. package/dist/types/components/actionLabel/ActionLabel.d.ts +1 -1
  170. package/dist/types/components/animations/Animations.d.ts +6 -6
  171. package/dist/types/components/avatar/Avatar.d.ts +1 -1
  172. package/dist/types/components/avatar/AvatarGroup.d.ts +1 -1
  173. package/dist/types/components/badge/Badge.d.ts +2 -10
  174. package/dist/types/components/breadcrumbs/Breadcrumbs.d.ts +1 -1
  175. package/dist/types/components/button/Button.d.ts +1 -1
  176. package/dist/types/components/button/ButtonGroup.d.ts +1 -1
  177. package/dist/types/components/button/ConfirmButton.d.ts +1 -1
  178. package/dist/types/components/button/ToggleButtonGroup.d.ts +1 -1
  179. package/dist/types/components/callout/Callout.d.ts +7 -3
  180. package/dist/types/components/card/Card.d.ts +2 -2
  181. package/dist/types/components/card/CardCover.d.ts +1 -1
  182. package/dist/types/components/card/FlipContent.d.ts +1 -1
  183. package/dist/types/components/chip/Chip.d.ts +1 -1
  184. package/dist/types/components/collapsable/Collapsable.d.ts +1 -1
  185. package/dist/types/components/divider/Divider.d.ts +1 -1
  186. package/dist/types/components/dropdown/Dropdown.d.ts +7 -3
  187. package/dist/types/components/dropdown/DropdownTool.d.ts +1 -1
  188. package/dist/types/components/empty/EmptyContent.d.ts +3 -3
  189. package/dist/types/components/icon/Icon.d.ts +3 -4
  190. package/dist/types/components/index.d.ts +2 -2
  191. package/dist/types/components/media/Media.d.ts +2 -2
  192. package/dist/types/components/menu/ContextMenu.d.ts +1 -1
  193. package/dist/types/components/menu/Menu.d.ts +1 -1
  194. package/dist/types/components/menu/types.d.ts +1 -1
  195. package/dist/types/components/meter/Meter.d.ts +1 -1
  196. package/dist/types/components/navigator/Navigator.d.ts +1 -1
  197. package/dist/types/components/panel/Panel.d.ts +2 -2
  198. package/dist/types/components/panel/PanelGroup.d.ts +1 -1
  199. package/dist/types/components/panel/PanelStack.d.ts +1 -1
  200. package/dist/types/components/progress/ProgressBar.d.ts +1 -1
  201. package/dist/types/components/progress/ProgressCircle.d.ts +1 -1
  202. package/dist/types/components/tabpanel/Tab.d.ts +1 -1
  203. package/dist/types/components/tabpanel/TabPanel.d.ts +1 -1
  204. package/dist/types/context/Global.d.ts +0 -82
  205. package/dist/types/context/context.d.ts +85 -0
  206. package/dist/types/core/aside/Aside.d.ts +2 -2
  207. package/dist/types/core/responsive/Responsive.d.ts +5 -1
  208. package/dist/types/hooks/useContextMenu.d.ts +10 -0
  209. package/dist/types/hotkeys/HotKeyWrapper.d.ts +0 -9
  210. package/dist/types/hotkeys/context.d.ts +9 -0
  211. package/dist/types/index.d.ts +4 -2
  212. package/dist/types/overlays/alert/Alert.d.ts +2 -2
  213. package/dist/types/overlays/flyout/Flyout.d.ts +2 -2
  214. package/dist/types/overlays/message/Message.d.ts +2 -2
  215. package/dist/types/overlays/modal/Modal.d.ts +2 -2
  216. package/dist/types/overlays/toast/Toast.d.ts +2 -2
  217. package/dist/types/overlays/tooltip/Tooltip.d.ts +0 -3
  218. package/dist/types/types/index.d.ts +2 -2
  219. package/dist/types/typography/Abbr.d.ts +4 -8
  220. package/dist/types/typography/Anchor.d.ts +1 -1
  221. package/dist/types/typography/Copy.d.ts +1 -1
  222. package/dist/types/typography/Mark.d.ts +2 -2
  223. package/dist/types/typography/Text.d.ts +1 -1
  224. package/dist/types/typography/Title.d.ts +1 -1
  225. package/dist/types/utils/getBadgeProps.d.ts +9 -0
  226. package/dist/types/utils/getIconProps.d.ts +2 -0
  227. package/dist/types/utils/getTooltipProps.d.ts +4 -0
  228. package/dist/types/utils/index.d.ts +3 -0
  229. package/package.json +14 -15
  230. package/src/components/actionLabel/ActionLabel.tsx +1 -1
  231. package/src/components/animations/Animations.tsx +6 -6
  232. package/src/components/avatar/Avatar.tsx +1 -1
  233. package/src/components/avatar/AvatarGroup.tsx +1 -1
  234. package/src/components/badge/Badge.tsx +8 -46
  235. package/src/components/breadcrumbs/Breadcrumbs.tsx +1 -1
  236. package/src/components/button/Button.tsx +24 -54
  237. package/src/components/button/ButtonGroup.tsx +1 -1
  238. package/src/components/button/ConfirmButton.tsx +23 -20
  239. package/src/components/button/ToggleButtonGroup.tsx +1 -1
  240. package/src/components/callout/Callout.tsx +14 -19
  241. package/src/components/card/Card.tsx +9 -11
  242. package/src/components/card/CardCover.tsx +1 -1
  243. package/src/components/card/FlipContent.tsx +2 -2
  244. package/src/components/chip/Chip.tsx +16 -33
  245. package/src/components/collapsable/Collapsable.tsx +2 -2
  246. package/src/components/divider/Divider.tsx +1 -1
  247. package/src/components/dropdown/Dropdown.tsx +42 -72
  248. package/src/components/dropdown/DropdownTool.tsx +1 -1
  249. package/src/components/empty/EmptyContent.tsx +3 -3
  250. package/src/components/icon/Icon.tsx +5 -32
  251. package/src/components/index.ts +2 -2
  252. package/src/components/media/Media.tsx +3 -3
  253. package/src/components/menu/ContextMenu.tsx +30 -30
  254. package/src/components/menu/Menu.tsx +32 -61
  255. package/src/components/menu/MenuItem.tsx +9 -28
  256. package/src/components/menu/types.ts +1 -1
  257. package/src/components/meter/Meter.tsx +1 -1
  258. package/src/components/navigator/Navigator.tsx +5 -10
  259. package/src/components/panel/Panel.tsx +13 -54
  260. package/src/components/panel/PanelGroup.tsx +3 -4
  261. package/src/components/panel/PanelStack.tsx +20 -25
  262. package/src/components/progress/ProgressBar.tsx +2 -2
  263. package/src/components/progress/ProgressCircle.tsx +2 -2
  264. package/src/components/tabpanel/Tab.tsx +9 -28
  265. package/src/components/tabpanel/TabPanel.tsx +11 -14
  266. package/src/context/Global.tsx +18 -125
  267. package/src/context/NotificationCenter.tsx +0 -1
  268. package/src/context/context.ts +100 -0
  269. package/src/core/aside/Aside.tsx +18 -55
  270. package/src/core/boundary/ErrorBoundary.tsx +8 -37
  271. package/src/core/page/Page.tsx +3 -5
  272. package/src/core/responsive/Responsive.tsx +10 -34
  273. package/src/core/theme/ThemeProvider.tsx +2 -7
  274. package/src/core/viewport/Viewport.tsx +1 -1
  275. package/src/hooks/useContextMenu.tsx +131 -0
  276. package/src/hooks/useIsDark.ts +7 -5
  277. package/src/hooks/useNavigator.tsx +12 -15
  278. package/src/hooks/useOverlayService.tsx +3 -11
  279. package/src/hooks/usePropToggle.ts +3 -3
  280. package/src/hooks/useResize.ts +14 -17
  281. package/src/hooks/useResizeObserver.ts +21 -21
  282. package/src/hooks/useStepper.tsx +1 -1
  283. package/src/hotkeys/HotKey.tsx +1 -1
  284. package/src/hotkeys/HotKeyWrapper.tsx +81 -105
  285. package/src/hotkeys/commons.ts +2 -0
  286. package/src/hotkeys/context.ts +32 -0
  287. package/src/index.ts +4 -7
  288. package/src/overlays/alert/Alert.tsx +12 -16
  289. package/src/overlays/flyout/Flyout.tsx +32 -69
  290. package/src/overlays/message/Message.tsx +11 -15
  291. package/src/overlays/modal/Modal.tsx +23 -57
  292. package/src/overlays/toast/Toast.tsx +16 -15
  293. package/src/overlays/tooltip/Tooltip.tsx +6 -29
  294. package/src/types/global.d.ts +12 -0
  295. package/src/types/index.ts +2 -2
  296. package/src/typography/Abbr.tsx +11 -39
  297. package/src/typography/Anchor.tsx +1 -1
  298. package/src/typography/Copy.tsx +4 -4
  299. package/src/typography/Mark.tsx +2 -3
  300. package/src/typography/Text.tsx +8 -6
  301. package/src/typography/Title.tsx +1 -1
  302. package/src/utils/getBadgeProps.ts +45 -0
  303. package/src/utils/getIconProps.ts +35 -0
  304. package/src/utils/getTooltipProps.ts +38 -0
  305. package/src/utils/index.ts +3 -0
@@ -0,0 +1,103 @@
1
+ 'use client';
2
+
3
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
+ import { useFloatingNodeId, useFloating, autoUpdate, offset, flip, useClick, useDismiss, useInteractions, FloatingPortal, FloatingOverlay, FloatingFocusManager } from '@floating-ui/react';
6
+ import { useState, useEffectEvent, useRef, cloneElement } from 'react';
7
+ import { jsx } from 'react/jsx-runtime';
8
+
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
+ /**
12
+ * A hook 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 hook 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 hook.
17
+ * @returns {[React.ReactElement | null, (e: MouseEvent) => void]} An array containing the rendered ContextMenu component (or null if not open) and the function to handle right-click events.
18
+ */
19
+ var useContextMenu = function useContextMenu(menu) {
20
+ var _refs$domReference$cu, _refs$domReference$cu2;
21
+ var _useState = useState(false),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ isOpen = _useState2[0],
24
+ setIsOpen = _useState2[1];
25
+ var nodeId = useFloatingNodeId();
26
+ var _useFloating = useFloating({
27
+ open: isOpen,
28
+ nodeId: nodeId,
29
+ onOpenChange: function onOpenChange(open, evt, reason) {
30
+ var target = evt === null || evt === void 0 ? void 0 : evt.target;
31
+ if (!(target !== null && target !== void 0 && target.closest(".menu-list"))) setIsOpen(open);
32
+ },
33
+ strategy: "fixed",
34
+ placement: "bottom-start",
35
+ whileElementsMounted: autoUpdate,
36
+ middleware: [offset(8), flip()]
37
+ }),
38
+ refs = _useFloating.refs,
39
+ floatingStyles = _useFloating.floatingStyles,
40
+ context = _useFloating.context;
41
+ var click = useClick(context, {
42
+ toggle: true,
43
+ ignoreMouse: true
44
+ });
45
+ var dismiss = useDismiss(context, {
46
+ bubbles: true
47
+ });
48
+ var _useInteractions = useInteractions([dismiss, click]),
49
+ getFloatingProps = _useInteractions.getFloatingProps;
50
+ var handleClick = useEffectEvent(function (e) {
51
+ var virtual = {
52
+ getBoundingClientRect: function getBoundingClientRect() {
53
+ return {
54
+ width: 0,
55
+ height: 0,
56
+ x: e.clientX,
57
+ y: e.clientY,
58
+ top: e.clientY,
59
+ left: e.clientX,
60
+ right: e.clientX,
61
+ bottom: e.clientY
62
+ };
63
+ }
64
+ };
65
+ refs.setReference(virtual);
66
+ setIsOpen(true);
67
+ e.nativeEvent.stopImmediatePropagation();
68
+ e.preventDefault();
69
+ return false;
70
+ });
71
+ var tryClosing = useRef(function (e) {
72
+ var _e$target;
73
+ if (!((_e$target = e.target) !== null && _e$target !== void 0 && _e$target.closest("[data-dropdown-dismiss='false']"))) setTimeout(function () {
74
+ return setIsOpen(false);
75
+ }, 50);
76
+ });
77
+ return [isOpen && /*#__PURE__*/jsx(FloatingPortal, {
78
+ 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,
79
+ children: /*#__PURE__*/jsx(FloatingOverlay, {
80
+ lockScroll: true,
81
+ style: {
82
+ zIndex: "var(--z-overlay-mask)",
83
+ position: "absolute",
84
+ overflow: "hidden"
85
+ },
86
+ children: /*#__PURE__*/jsx(FloatingFocusManager, {
87
+ context: context,
88
+ children: /*#__PURE__*/cloneElement(menu, _objectSpread(_objectSpread({}, getFloatingProps()), {}, {
89
+ style: _objectSpread(_objectSpread({}, floatingStyles), {}, {
90
+ borderRadius: "var(--rounding)",
91
+ zIndex: "var(--z-popover)",
92
+ fontSize: "0.875rem"
93
+ }),
94
+ className: "bg-default outline rounded-capped shadow-lg",
95
+ ref: refs.setFloating,
96
+ onMouseUp: tryClosing.current
97
+ }))
98
+ })
99
+ })
100
+ }), handleClick];
101
+ };
102
+
103
+ export { useContextMenu };
@@ -1,7 +1,8 @@
1
1
  'use client';
2
2
 
3
3
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useState, useCallback } from 'react';
4
+ import { debounce } from '@react-fabric/utilities';
5
+ import { useState, useEffectEvent } from 'react';
5
6
  import { useLayoutEffectDebugger } from './useEffectDebugger.js';
6
7
 
7
8
  /**
@@ -17,19 +18,20 @@ var useIsDark = function useIsDark() {
17
18
  _useState2 = _slicedToArray(_useState, 2),
18
19
  isDark = _useState2[0],
19
20
  setDark = _useState2[1];
20
- var checkTheme = useCallback(function () {
21
+ var checkTheme = useEffectEvent(function () {
21
22
  var _ref = getComputedStyle(document.documentElement).backgroundColor.match(/\d?\d?\d/g),
22
23
  _ref2 = _slicedToArray(_ref, 1),
23
24
  r = _ref2[0];
24
25
  setDark(+r < 50);
25
- }, []);
26
+ });
26
27
  useLayoutEffectDebugger(function () {
27
28
  if (MutationObserver) {
28
- var ob = new MutationObserver(checkTheme);
29
+ var cb = debounce(checkTheme, 100);
30
+ var ob = new MutationObserver(cb);
29
31
  ob.observe(document.documentElement, {
30
32
  attributes: true
31
33
  });
32
- checkTheme();
34
+ cb();
33
35
  return function () {
34
36
  ob.disconnect();
35
37
  };
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useState, useCallback, useMemo } from 'react';
4
+ import { useState, useEffectEvent, useMemo } from 'react';
5
5
  import { jsxs } from 'react/jsx-runtime';
6
6
 
7
7
  var useNavigator = function useNavigator() {
@@ -11,7 +11,7 @@ var useNavigator = function useNavigator() {
11
11
  _useState2 = _slicedToArray(_useState, 2),
12
12
  currentIndex = _useState2[0],
13
13
  setCurrentIndex = _useState2[1];
14
- var onNavigate = useCallback(function (dir) {
14
+ var onNavigate = useEffectEvent(function (dir) {
15
15
  setCurrentIndex(function (prevValue) {
16
16
  if (dir === -1) {
17
17
  return prevValue > 0 ? prevValue - 1 : totalCount - 1;
@@ -21,7 +21,7 @@ var useNavigator = function useNavigator() {
21
21
  }
22
22
  return prevValue;
23
23
  });
24
- }, [totalCount]);
24
+ });
25
25
  var headLabel = useMemo(function () {
26
26
  return /*#__PURE__*/jsxs("span", {
27
27
  className: "text-muted leading-none select-none",
@@ -6,43 +6,12 @@ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
6
6
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
7
7
  import _regeneratorRuntime from '@babel/runtime/regenerator';
8
8
  import { useState, useRef } from 'react';
9
+ import { EMPTY_FC } from '@react-fabric/utilities';
9
10
  import { jsx } from 'react/jsx-runtime';
10
11
 
11
12
  var _excluded = ["onClose"];
12
13
  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; }
13
14
  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; }
14
- // return the blank function since state functionality will execute if the value is function
15
- var EMPTY_FC = function EMPTY_FC() {
16
- return function () {
17
- return null;
18
- };
19
- };
20
-
21
- /**
22
- * Hook to manage overlay components like modals or flyouts.
23
- * It provides a way to open an overlay with specified properties and handle its closure.
24
- * This hook returns the current overlay component and a function to open it with props.
25
- * It is useful for scenarios where you need to display overlays dynamically,
26
- * such as modals, flyouts, or any other overlay components in a React application.
27
- * The `openOverlay` function returns a promise that resolves with the result
28
- * of the overlay when it is closed, allowing you to handle the result in a controlled manner.
29
- *
30
- * @param ModalOrFlyout - The component to be used as an overlay.
31
- * @param toggleOpen - If true, calling `openOverlay` while an overlay is already open will close the existing one instead of opening a new one.
32
- * @returns An array containing the current overlay, a function to open it, and a boolean indicating if the overlay is open.
33
- *
34
- * @example
35
- * ```jsx
36
- * const [Overlay, openOverlay] = useOverlayService(MyModalComponent);
37
- * // To open the overlay:
38
- * const handleOpen = async () => {
39
- * const result = await openOverlay({ title: "My Modal", content: "Hello World" });
40
- * console.log(result); // Handle the result from the overlay
41
- * };
42
- * <button onClick={handleOpen}>Open Modal</button>
43
- * <Overlay />
44
- * ```
45
- */
46
15
  var useOverlayService = function useOverlayService(ModalOrFlyout) {
47
16
  var _useState = useState(EMPTY_FC),
48
17
  _useState2 = _slicedToArray(_useState, 2),
@@ -50,22 +19,22 @@ var useOverlayService = function useOverlayService(ModalOrFlyout) {
50
19
  setOverlay = _useState2[1];
51
20
  var existingOpenPromise = useRef(null);
52
21
  var openOverlay = /*#__PURE__*/function () {
53
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
22
+ var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
54
23
  var _ref2,
55
24
  onClose,
56
25
  outerProps,
57
26
  _args = arguments;
58
- return _regeneratorRuntime.wrap(function _callee$(_context) {
27
+ return _regeneratorRuntime.wrap(function (_context) {
59
28
  while (1) switch (_context.prev = _context.next) {
60
29
  case 0:
61
30
  _ref2 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, onClose = _ref2.onClose, outerProps = _objectWithoutProperties(_ref2, _excluded);
62
31
  if (!existingOpenPromise.current) {
63
- _context.next = 3;
32
+ _context.next = 1;
64
33
  break;
65
34
  }
66
35
  return _context.abrupt("return");
67
- case 3:
68
- _context.next = 5;
36
+ case 1:
37
+ _context.next = 2;
69
38
  return new Promise(function (resolve) {
70
39
  existingOpenPromise.current = function (args) {
71
40
  setOverlay(EMPTY_FC);
@@ -73,7 +42,6 @@ var useOverlayService = function useOverlayService(ModalOrFlyout) {
73
42
  onClose === null || onClose === void 0 || onClose(args);
74
43
  existingOpenPromise.current = null;
75
44
  };
76
- // eslint-disable-next-line react/display-name
77
45
  setOverlay(function () {
78
46
  return function (overrideProps) {
79
47
  return /*#__PURE__*/jsx(ModalOrFlyout, _objectSpread(_objectSpread(_objectSpread({}, outerProps), overrideProps), {}, {
@@ -82,9 +50,9 @@ var useOverlayService = function useOverlayService(ModalOrFlyout) {
82
50
  };
83
51
  });
84
52
  });
85
- case 5:
53
+ case 2:
86
54
  return _context.abrupt("return", _context.sent);
87
- case 6:
55
+ case 3:
88
56
  case "end":
89
57
  return _context.stop();
90
58
  }
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useRef, useState, useCallback } from 'react';
4
+ import { useRef, useState, useEffectEvent } from 'react';
5
5
  import { useLayoutEffectDebugger } from './useEffectDebugger.js';
6
6
 
7
7
  /**
@@ -39,12 +39,12 @@ var usePropToggle = function usePropToggle() {
39
39
  }, [isOn], "usePropToggle");
40
40
 
41
41
  /** ***************** toggle handler *******************/
42
- var doToggle = useCallback(function () {
42
+ var doToggle = useEffectEvent(function () {
43
43
  if ((onToggle === null || onToggle === void 0 ? void 0 : onToggle(!toggleOn, key)) !== false) {
44
44
  toggleRef.current = !toggleOn;
45
45
  setToggleOn(!toggleOn);
46
46
  }
47
- }, [toggleOn, onToggle, key]);
47
+ });
48
48
  return [toggleOn, doToggle, toggleRef];
49
49
  };
50
50
 
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
 
3
- import { useRef, useCallback } from 'react';
3
+ import { useRef, useCallback, useEffectEvent } from 'react';
4
4
  import { useIsRtl } from './useIsRtl.js';
5
5
 
6
6
  /*
@@ -59,14 +59,16 @@ var useResize = function useResize(onResize, _ref) {
59
59
  /** ***************** check if reverse enabled of RTL *******************/
60
60
  var reversed = ((isRtl ? 1 : 0) ^ (isReverse ? 1 : 0)) === 1;
61
61
  var box = (_refEl$current = refEl.current) === null || _refEl$current === void 0 ? void 0 : _refEl$current.getBoundingClientRect();
62
- var x = (evt.clientX - (reversed ? box.left : box.right)) * (reversed ? -1 : 1);
63
- var y = evt.clientY - box.bottom;
62
+ var diffX = (box.left + box.right) / 2 * (reversed ? -1 : 1);
63
+ var diffY = (box.top + box.bottom) / 2;
64
+ var x = evt.clientX - diffX;
65
+ var y = evt.clientY - diffY;
64
66
  onResize({
65
67
  x: x,
66
68
  y: y
67
69
  });
68
70
  }
69
- }, [onResize, isRtl, isReverse]);
71
+ }, [isRtl, isReverse, onResize]);
70
72
 
71
73
  /** ***************** dettach handlers on mouseup *******************/
72
74
  var onResizeEnd = useCallback(function () {
@@ -74,16 +76,16 @@ var useResize = function useResize(onResize, _ref) {
74
76
  document.removeEventListener("mousemove", onResizing);
75
77
  document.removeEventListener("mouseup", onResizeEnd);
76
78
  onEnd === null || onEnd === void 0 || onEnd();
77
- }, [onEnd, onResizing]);
79
+ }, [onResizing, onEnd]);
78
80
 
79
81
  /** ***************** attach handlers on mousedown *******************/
80
- var onResizeStart = useCallback(function (e) {
82
+ var onResizeStart = useEffectEvent(function (e) {
81
83
  e.preventDefault();
82
84
  document.body.style.cursor = isVertical ? "row-resize" : "col-resize";
83
85
  document.addEventListener("mousemove", onResizing);
84
86
  document.addEventListener("mouseup", onResizeEnd);
85
87
  onStart === null || onStart === void 0 || onStart();
86
- }, [onResizing, onResizeEnd, onStart]);
88
+ });
87
89
  return {
88
90
  ref: refEl,
89
91
  onMouseDown: onResizeStart
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
3
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
- import { useRef, useTransition, useEffect } from 'react';
4
+ import { useRef, useTransition, useEffectEvent } from 'react';
5
5
  import ResizeObserver from 'resize-observer-polyfill';
6
- import { useDebounce } from './useDebounce.js';
6
+ import { useEffectDebugger } from './useEffectDebugger.js';
7
7
 
8
8
  /**
9
9
  * Custom hook to observe size changes of an element using ResizeObserver.
@@ -29,7 +29,7 @@ var useResizeObserver = function useResizeObserver(onResize) {
29
29
  var _useTransition = useTransition(),
30
30
  _useTransition2 = _slicedToArray(_useTransition, 2),
31
31
  startTransition = _useTransition2[1];
32
- var callbackResize = useDebounce(function () {
32
+ var callbackResize = useEffectEvent(function () {
33
33
  startTransition(function () {
34
34
  if (onResize && ref.current != null) {
35
35
  var _ref$current = ref.current,
@@ -41,8 +41,8 @@ var useResizeObserver = function useResizeObserver(onResize) {
41
41
  });
42
42
  }
43
43
  });
44
- }, [onResize], 0);
45
- useEffect(function () {
44
+ });
45
+ useEffectDebugger(function () {
46
46
  if (ref.current != null) {
47
47
  var ob = new ResizeObserver(callbackResize);
48
48
  ob.observe(ref.current);
@@ -50,7 +50,7 @@ var useResizeObserver = function useResizeObserver(onResize) {
50
50
  ob.disconnect();
51
51
  };
52
52
  }
53
- }, [callbackResize, ref]);
53
+ }, [], "useResizeObserver");
54
54
  return ref;
55
55
  };
56
56
 
@@ -11,7 +11,6 @@ import './useEffectDebugger.js';
11
11
  import 'boring-avatars';
12
12
  import { Icon } from '../components/icon/Icon.js';
13
13
  import '@floating-ui/react';
14
- import '../hotkeys/HotKeyWrapper.js';
15
14
  import 'react-i18next';
16
15
  import '@babel/runtime/helpers/toConsumableArray';
17
16
  import '@babel/runtime/helpers/classCallCheck';
@@ -19,12 +18,9 @@ import '@babel/runtime/helpers/createClass';
19
18
  import '@babel/runtime/helpers/possibleConstructorReturn';
20
19
  import '@babel/runtime/helpers/getPrototypeOf';
21
20
  import '@babel/runtime/helpers/inherits';
22
- import 'i18next';
23
- import '@babel/runtime/helpers/asyncToGenerator';
24
- import '@babel/runtime/regenerator';
25
- import 'react-dom';
26
21
  import '../components/media/Media.js';
27
22
  import '@babel/runtime/helpers/toArray';
23
+ import '../hotkeys/HotKeyWrapper.js';
28
24
 
29
25
  var useStepper = function useStepper(_ref) {
30
26
  var steps = _ref.steps,
@@ -39,7 +35,7 @@ var useStepper = function useStepper(_ref) {
39
35
  }, [steps]);
40
36
  var stepper = useMemo(function () {
41
37
  return /*#__PURE__*/jsx("div", {
42
- className: "fabric-stepper bg-base flex-1 flex justify-center py-1 px-2 overflow-x-auto",
38
+ className: "fabric-stepper bg-default flex-1 flex justify-center py-1 px-2 overflow-x-auto",
43
39
  children: steps.map(function (child, index) {
44
40
  return /*#__PURE__*/jsxs("div", {
45
41
  className: "fabric-stepper--pill",
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { useEffectDebugger } from '../hooks/useEffectDebugger.js';
4
- import { useHotKeys } from './HotKeyWrapper.js';
4
+ import { useHotKeys } from './context.js';
5
5
 
6
6
  /*
7
7
  * React Fabric
@@ -1,20 +1,17 @@
1
1
  'use client';
2
2
 
3
3
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
4
- import { memo, useRef, useCallback, createContext, useContext } from 'react';
4
+ import { memo, useRef, useEffectEvent, useCallback } from 'react';
5
5
  import { useEffectDebugger } from '../hooks/useEffectDebugger.js';
6
6
  import { reduceHotKey } from './commons.js';
7
+ import { HotKeysContext } from './context.js';
7
8
  import { jsx } from 'react/jsx-runtime';
8
9
 
9
- var HotKeysContext = /*#__PURE__*/createContext({});
10
- var useHotKeys = function useHotKeys() {
11
- return useContext(HotKeysContext);
12
- };
13
10
  var HotKeyWrapper = /*#__PURE__*/memo(function (_ref) {
14
11
  var children = _ref.children;
15
12
  var refEl = useRef(null);
16
13
  var keyList = useRef([]);
17
- var addHotKey = useCallback(function (keyCombo, handler) {
14
+ var addHotKey = useEffectEvent(function (keyCombo, handler) {
18
15
  var global = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
19
16
  return keyList.current = [].concat(_toConsumableArray(keyList.current.filter(function (_ref2) {
20
17
  var _key = _ref2._key;
@@ -24,14 +21,14 @@ var HotKeyWrapper = /*#__PURE__*/memo(function (_ref) {
24
21
  handler: handler,
25
22
  global: global
26
23
  })]);
27
- }, []);
28
- var removeHotKey = useCallback(function (key) {
24
+ });
25
+ var removeHotKey = useEffectEvent(function (key) {
29
26
  return keyList.current = _toConsumableArray(keyList.current.filter(function (_ref3) {
30
27
  var _key = _ref3._key;
31
28
  return _key !== key;
32
29
  }));
33
- }, []);
34
- var handler = useCallback(function (items, event) {
30
+ });
31
+ var handler = useEffectEvent(function (items, event) {
35
32
  if (items.length === 0) return;
36
33
  var keyCode = event.key,
37
34
  code = event.code,
@@ -55,7 +52,7 @@ var HotKeyWrapper = /*#__PURE__*/memo(function (_ref) {
55
52
  event.preventDefault();
56
53
  event.stopImmediatePropagation();
57
54
  }
58
- }, []);
55
+ });
59
56
  var handleGlobal = useCallback(function (event) {
60
57
  handler(keyList.current.filter(function (i) {
61
58
  return i.global;
@@ -95,4 +92,4 @@ var HotKeyWrapper = /*#__PURE__*/memo(function (_ref) {
95
92
  });
96
93
  HotKeyWrapper.displayName = "HotKeyProvider";
97
94
 
98
- export { HotKeyWrapper, HotKeysContext, useHotKeys };
95
+ export { HotKeyWrapper };
@@ -47,7 +47,7 @@ var reduceHotKey = function reduceHotKey(_ref) {
47
47
  } else if (e.trim().toLowerCase() === "shift") {
48
48
  item.shift = true;
49
49
  } else {
50
- if (e.trim().toLowerCase() === "left") item.key = "arrowleft";else if (e.trim().toLowerCase() === "right") item.key = "arrowright";else if (e.trim().toLowerCase() === "up") item.key = "arrowup";else if (e.trim().toLowerCase() === "down") item.key = "arrowdown";else if (e.trim().toLowerCase().startsWith("del")) item.key = "delete";else if (e.trim().toLowerCase().startsWith("esc")) item.key = "escape";else item.key = e.trim().toLowerCase();
50
+ if (e.trim().toLowerCase() === "left") item.key = "arrowleft";else if (e.trim().toLowerCase() === "right") item.key = "arrowright";else if (e.trim().toLowerCase() === "up") item.key = "arrowup";else if (e.trim().toLowerCase() === "down") item.key = "arrowdown";else if (e.trim().toLowerCase().startsWith("del")) item.key = "delete";else if (e.trim().toLowerCase().startsWith("esc")) item.key = "escape";else if (e.trim().toLowerCase().startsWith("plus")) item.key = "+";else if (e.trim().toLowerCase().startsWith("minus")) item.key = "-";else item.key = e.trim().toLowerCase();
51
51
  }
52
52
  });
53
53
  return item;
@@ -0,0 +1,35 @@
1
+ 'use client';
2
+
3
+ import { createContext, useContext } from 'react';
4
+
5
+ /*
6
+ * React Fabric
7
+ * @version: 1.0.0
8
+ *
9
+ *
10
+ * The MIT License (MIT)
11
+ * Copyright (c) 2026 Adarsh Pastakia
12
+ *
13
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
14
+ * and associated documentation files (the "Software"), to deal in the Software without restriction,
15
+ * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
16
+ * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
17
+ * subject to the following conditions:
18
+ *
19
+ * The above copyright notice and this permission notice shall be included in all copies or substantial
20
+ * portions of the Software.
21
+ *
22
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
23
+ * TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
24
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
25
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
+ */
27
+
28
+
29
+ /** @internal */
30
+ var HotKeysContext = /*#__PURE__*/createContext({});
31
+ var useHotKeys = function useHotKeys() {
32
+ return useContext(HotKeysContext);
33
+ };
34
+
35
+ export { HotKeysContext, useHotKeys };
package/dist/esm/index.js CHANGED
@@ -4,7 +4,7 @@ export { ActionLabel } from './components/actionLabel/ActionLabel.js';
4
4
  export { AnimationIndicator, AnimationLoader, LoadingBars, LoadingLine, LoadingSpinner, Skeleton } from './components/animations/Animations.js';
5
5
  export { Avatar } from './components/avatar/Avatar.js';
6
6
  export { AvatarGroup } from './components/avatar/AvatarGroup.js';
7
- export { Badge, getBadgeProps } from './components/badge/Badge.js';
7
+ export { Badge } from './components/badge/Badge.js';
8
8
  export { Breadcrumbs } from './components/breadcrumbs/Breadcrumbs.js';
9
9
  export { Button } from './components/button/Button.js';
10
10
  export { ButtonGroup } from './components/button/ButtonGroup.js';
@@ -20,7 +20,7 @@ export { Divider } from './components/divider/Divider.js';
20
20
  export { Dropdown, DropdownDismiss } from './components/dropdown/Dropdown.js';
21
21
  export { DropdownTool } from './components/dropdown/DropdownTool.js';
22
22
  export { EmptyContent } from './components/empty/EmptyContent.js';
23
- export { Icon, getIconProps } from './components/icon/Icon.js';
23
+ export { Icon } from './components/icon/Icon.js';
24
24
  export { Image, Video } from './components/media/Media.js';
25
25
  export { ContextMenu } from './components/menu/ContextMenu.js';
26
26
  export { Menu } from './components/menu/Menu.js';
@@ -52,7 +52,9 @@ import 'react';
52
52
  import 'react-i18next';
53
53
  export { Title } from './typography/Title.js';
54
54
  export { cloneChildren } from './utils/cloneElement.js';
55
+ export { getBadgeProps } from './utils/getBadgeProps.js';
55
56
  import '@react-fabric/utilities';
57
+ export { getIconProps } from './utils/getIconProps.js';
56
58
  import 'react/jsx-runtime';
57
59
  export { Flyout } from './overlays/flyout/Flyout.js';
58
60
  export { Modal } from './overlays/modal/Modal.js';
@@ -63,6 +65,7 @@ export { Copy } from './typography/Copy.js';
63
65
  export { Mark } from './typography/Mark.js';
64
66
  export { Text } from './typography/Text.js';
65
67
  export { useClientService } from './hooks/useClientService.js';
68
+ export { useContextMenu } from './hooks/useContextMenu.js';
66
69
  export { useDebounce } from './hooks/useDebounce.js';
67
70
  export { useEffectDebugger, useLayoutEffectDebugger, useMemoDebugger } from './hooks/useEffectDebugger.js';
68
71
  export { useIsDark } from './hooks/useIsDark.js';
@@ -76,4 +79,5 @@ export { useLocalStorage, useSessionStorage } from './hooks/useStorage.js';
76
79
  export { HotKey } from './hotkeys/HotKey.js';
77
80
  export { HotKeyLabel } from './hotkeys/HotKeyLabel.js';
78
81
  export { HotKeyWrapper } from './hotkeys/HotKeyWrapper.js';
79
- export { ApplicationProvider, useApplicationContext, useGlobals, useNotificationService } from './context/Global.js';
82
+ export { useApplicationContext, useNotificationService } from './context/context.js';
83
+ export { ApplicationProvider } from './context/Global.js';
@@ -4,15 +4,15 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
4
4
  import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
5
5
  import { useFloating, useDismiss, useRole, useInteractions, FloatingPortal, FloatingOverlay, FloatingFocusManager } from '@floating-ui/react';
6
6
  import classNames from 'classnames';
7
- import { useState, useMemo, useCallback, useLayoutEffect } from 'react';
7
+ import { useState, useMemo, useEffectEvent, useLayoutEffect } from 'react';
8
8
  import { useTranslation } from 'react-i18next';
9
9
  import { AnimationIndicator } from '../../components/animations/Animations.js';
10
10
  import { Button } from '../../components/button/Button.js';
11
11
  import { Icon } from '../../components/icon/Icon.js';
12
12
  import { Title } from '../../typography/Title.js';
13
13
  import { jsx, jsxs } from 'react/jsx-runtime';
14
- import { getColor } from '../../utils/getColor.js';
15
14
  import '@react-fabric/utilities';
15
+ import { getColor } from '../../utils/getColor.js';
16
16
 
17
17
  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; }
18
18
  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; }
@@ -85,12 +85,12 @@ var Alert = function Alert(_ref) {
85
85
  });
86
86
  }
87
87
  }, [color, type, icon, iconSrc, rtlFlip]);
88
- var handleClose = useCallback(function (ret) {
88
+ var handleClose = useEffectEvent(function (ret) {
89
89
  refs.floating.current && (refs.floating.current.dataset.show = "false");
90
90
  setTimeout(function () {
91
91
  onClose(ret);
92
92
  }, 250);
93
- }, [onClose]);
93
+ });
94
94
  useLayoutEffect(function () {
95
95
  setTimeout(function () {
96
96
  return refs.floating.current && (refs.floating.current.dataset.show = "true");
@@ -105,9 +105,10 @@ var Alert = function Alert(_ref) {
105
105
  className: "bg-tint-100/50 backdrop-blur-sm grid place-items-center",
106
106
  children: /*#__PURE__*/jsx(FloatingFocusManager, {
107
107
  context: context,
108
+ modal: true,
108
109
  children: /*#__PURE__*/jsxs("dialog", _objectSpread(_objectSpread({
109
110
  role: "alertdialog",
110
- className: classNames("fabric-alert", "grid bg-base border-2 pointer-events-auto overflow-hidden rounded-capped select-none", "min-w-72 max-w-sm p-6 relative outline-0 shadow-lg"),
111
+ className: classNames("fabric-alert", "grid bg-default border-2 pointer-events-auto overflow-hidden rounded-capped select-none", "min-w-72 max-w-sm p-6 relative outline-0 shadow-lg"),
111
112
  style: {
112
113
  borderColor: getColor("".concat(color, "-300"))
113
114
  },
@@ -170,7 +171,7 @@ var Alert = function Alert(_ref) {
170
171
  children: okLabel !== null && okLabel !== void 0 ? okLabel : t("action.ok", "OK")
171
172
  })]
172
173
  }), /*#__PURE__*/jsx("div", {
173
- className: "absolute top-2 end-2",
174
+ className: "absolute top-2 inset-e-2",
174
175
  children: /*#__PURE__*/jsx(Button, {
175
176
  size: "sm",
176
177
  variant: "link",