lecom-ui 4.1.9 → 4.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/dist/_virtual/_commonjsHelpers.js +5 -0
  2. package/dist/_virtual/index.js +7 -0
  3. package/dist/components/Accordion/Accordion.js +40 -37
  4. package/dist/components/Button/Button.js +10 -9
  5. package/dist/components/Button/CustomButton.js +6 -5
  6. package/dist/components/Card/Card.js +7 -6
  7. package/dist/components/Checkbox/Checkbox.js +35 -30
  8. package/dist/components/CustomIcon/Icons/CadastroFacil.js +15 -5
  9. package/dist/components/CustomIcon/Icons/LogoLecom.js +15 -12
  10. package/dist/components/CustomIcon/Icons/LogoLecomBrand.js +8 -5
  11. package/dist/components/CustomIcon/Icons/ModoTeste.js +13 -5
  12. package/dist/components/CustomIcon/Icons/Rpa.js +17 -5
  13. package/dist/components/DataTable/DataTable.js +33 -158
  14. package/dist/components/Dialog/Dialog.js +40 -31
  15. package/dist/components/DropdownMenu/DropdownMenu.js +55 -46
  16. package/dist/components/Header/Header.js +51 -35
  17. package/dist/components/Header/HelpMenu.js +52 -41
  18. package/dist/components/Header/ImgBrand.js +5 -8
  19. package/dist/components/Header/ModulesMenu.js +63 -50
  20. package/dist/components/Header/SocialMenu.js +5 -6
  21. package/dist/components/Header/UserMenu.js +81 -51
  22. package/dist/components/Input/Input.js +11 -2
  23. package/dist/components/Layout/Layout.js +62 -45
  24. package/dist/components/Notification/Notification.js +9 -8
  25. package/dist/components/Notification/NotificationBase.js +5 -5
  26. package/dist/components/Notification/NotificationCallout.js +33 -27
  27. package/dist/components/Notification/NotificationCloseButton.js +4 -3
  28. package/dist/components/Notification/NotificationContent.js +24 -18
  29. package/dist/components/Notification/NotificationIcon.js +9 -6
  30. package/dist/components/Notification/NotificationInline.js +23 -20
  31. package/dist/components/Notification/NotificationToast.js +28 -25
  32. package/dist/components/Notification/useNotificationToast.js +0 -1
  33. package/dist/components/Popover/Popover.js +8 -7
  34. package/dist/components/ScrollArea/ScrollArea.js +18 -15
  35. package/dist/components/Select/Select.js +63 -54
  36. package/dist/components/Separator/Separator.js +5 -4
  37. package/dist/components/Sheet/Sheet.js +35 -26
  38. package/dist/components/Sidebar/Sidebar.js +112 -95
  39. package/dist/components/Skeleton/Skeleton.js +2 -2
  40. package/dist/components/Table/Table.js +15 -26
  41. package/dist/components/Tag/Tag.js +6 -5
  42. package/dist/components/Tooltip/Tooltip.js +17 -15
  43. package/dist/components/Typography/Typography.js +6 -7
  44. package/dist/hooks/use-mobile.js +1 -1
  45. package/dist/i18n/index.js +4 -53
  46. package/dist/i18n/locales/en_us.js +4 -3
  47. package/dist/i18n/locales/es_es.js +4 -3
  48. package/dist/i18n/locales/index.js +4 -4
  49. package/dist/i18n/locales/pt_br.js +4 -3
  50. package/dist/index.d.ts +108 -304
  51. package/dist/index.js +1 -12
  52. package/dist/lib/utils.js +2 -2
  53. package/dist/node_modules/@floating-ui/core/dist/floating-ui.core.js +806 -0
  54. package/dist/node_modules/@floating-ui/dom/dist/floating-ui.dom.js +726 -0
  55. package/dist/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.js +347 -0
  56. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.js +154 -0
  57. package/dist/node_modules/@floating-ui/utils/dist/floating-ui.utils.js +136 -0
  58. package/dist/node_modules/@radix-ui/number/dist/index.js +6 -0
  59. package/dist/node_modules/@radix-ui/primitive/dist/index.js +11 -0
  60. package/dist/node_modules/@radix-ui/react-accordion/dist/index.js +303 -0
  61. package/dist/node_modules/@radix-ui/react-arrow/dist/index.js +25 -0
  62. package/dist/node_modules/@radix-ui/react-checkbox/dist/index.js +157 -0
  63. package/dist/node_modules/@radix-ui/react-collapsible/dist/index.js +144 -0
  64. package/dist/node_modules/@radix-ui/react-collection/dist/index.js +68 -0
  65. package/dist/node_modules/@radix-ui/react-compose-refs/dist/index.js +39 -0
  66. package/dist/node_modules/@radix-ui/react-context/dist/index.js +79 -0
  67. package/dist/node_modules/@radix-ui/react-dialog/dist/index.js +319 -0
  68. package/dist/node_modules/@radix-ui/react-direction/dist/index.js +11 -0
  69. package/dist/node_modules/@radix-ui/react-dismissable-layer/dist/index.js +211 -0
  70. package/dist/node_modules/@radix-ui/react-dropdown-menu/dist/index.js +265 -0
  71. package/dist/node_modules/@radix-ui/react-focus-guards/dist/index.js +29 -0
  72. package/dist/node_modules/@radix-ui/react-focus-scope/dist/index.js +207 -0
  73. package/dist/node_modules/@radix-ui/react-id/dist/index.js +15 -0
  74. package/dist/node_modules/@radix-ui/react-menu/dist/index.js +831 -0
  75. package/dist/node_modules/@radix-ui/react-popover/dist/index.js +296 -0
  76. package/dist/node_modules/@radix-ui/react-popper/dist/index.js +278 -0
  77. package/dist/node_modules/@radix-ui/react-portal/dist/index.js +17 -0
  78. package/dist/node_modules/@radix-ui/react-presence/dist/index.js +130 -0
  79. package/dist/node_modules/@radix-ui/react-primitive/dist/index.js +41 -0
  80. package/dist/node_modules/@radix-ui/react-roving-focus/dist/index.js +220 -0
  81. package/dist/node_modules/@radix-ui/react-scroll-area/dist/index.js +718 -0
  82. package/dist/node_modules/@radix-ui/react-select/dist/index.js +1143 -0
  83. package/dist/node_modules/@radix-ui/react-separator/dist/index.js +30 -0
  84. package/dist/node_modules/@radix-ui/react-slot/dist/index.js +81 -0
  85. package/dist/node_modules/@radix-ui/react-tooltip/dist/index.js +476 -0
  86. package/dist/node_modules/@radix-ui/react-use-callback-ref/dist/index.js +12 -0
  87. package/dist/node_modules/@radix-ui/react-use-controllable-state/dist/index.js +46 -0
  88. package/dist/node_modules/@radix-ui/react-use-escape-keydown/dist/index.js +18 -0
  89. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +7 -0
  90. package/dist/node_modules/@radix-ui/react-use-previous/dist/index.js +15 -0
  91. package/dist/node_modules/@radix-ui/react-use-size/dist/index.js +40 -0
  92. package/dist/node_modules/@radix-ui/react-visually-hidden/dist/index.js +35 -0
  93. package/dist/node_modules/@tanstack/react-table/build/lib/index.js +74 -0
  94. package/dist/node_modules/@tanstack/table-core/build/lib/index.js +3023 -0
  95. package/dist/node_modules/aria-hidden/dist/es2015/index.js +136 -0
  96. package/dist/node_modules/class-variance-authority/dist/index.js +44 -0
  97. package/dist/node_modules/clsx/dist/clsx.js +3 -0
  98. package/dist/node_modules/get-nonce/dist/es2015/index.js +8 -0
  99. package/dist/node_modules/hex-color-opacity/lib/index.js +22 -0
  100. package/dist/node_modules/i18next/dist/esm/i18next.js +2228 -0
  101. package/dist/node_modules/lucide-react/dist/esm/Icon.js +44 -0
  102. package/dist/node_modules/lucide-react/dist/esm/createLucideIcon.js +26 -0
  103. package/dist/node_modules/lucide-react/dist/esm/defaultAttributes.js +20 -0
  104. package/dist/node_modules/lucide-react/dist/esm/icons/check.js +13 -0
  105. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-down.js +15 -0
  106. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-right.js +15 -0
  107. package/dist/node_modules/lucide-react/dist/esm/icons/chevron-up.js +13 -0
  108. package/dist/node_modules/lucide-react/dist/esm/icons/circle-alert.js +17 -0
  109. package/dist/node_modules/lucide-react/dist/esm/icons/circle-check.js +16 -0
  110. package/dist/node_modules/lucide-react/dist/esm/icons/circle-help.js +17 -0
  111. package/dist/node_modules/lucide-react/dist/esm/icons/circle.js +15 -0
  112. package/dist/node_modules/lucide-react/dist/esm/icons/info.js +17 -0
  113. package/dist/node_modules/lucide-react/dist/esm/icons/menu.js +17 -0
  114. package/dist/node_modules/lucide-react/dist/esm/icons/message-square.js +15 -0
  115. package/dist/node_modules/lucide-react/dist/esm/icons/minus.js +13 -0
  116. package/dist/node_modules/lucide-react/dist/esm/icons/panel-left.js +16 -0
  117. package/dist/node_modules/lucide-react/dist/esm/icons/triangle-alert.js +23 -0
  118. package/dist/node_modules/lucide-react/dist/esm/icons/user.js +16 -0
  119. package/dist/node_modules/lucide-react/dist/esm/icons/x.js +16 -0
  120. package/dist/node_modules/lucide-react/dist/esm/shared/src/utils.js +13 -0
  121. package/dist/node_modules/react-i18next/dist/es/context.js +18 -0
  122. package/dist/node_modules/react-i18next/dist/es/defaults.js +21 -0
  123. package/dist/node_modules/react-i18next/dist/es/i18nInstance.js +7 -0
  124. package/dist/node_modules/react-i18next/dist/es/initReactI18next.js +12 -0
  125. package/dist/node_modules/react-i18next/dist/es/unescape.js +27 -0
  126. package/dist/node_modules/react-i18next/dist/es/useTranslation.js +112 -0
  127. package/dist/node_modules/react-i18next/dist/es/utils.js +63 -0
  128. package/dist/node_modules/react-remove-scroll/dist/es2015/Combination.js +9 -0
  129. package/dist/node_modules/react-remove-scroll/dist/es2015/SideEffect.js +160 -0
  130. package/dist/node_modules/react-remove-scroll/dist/es2015/UI.js +38 -0
  131. package/dist/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js +21 -0
  132. package/dist/node_modules/react-remove-scroll/dist/es2015/handleScroll.js +109 -0
  133. package/dist/node_modules/react-remove-scroll/dist/es2015/medium.js +5 -0
  134. package/dist/node_modules/react-remove-scroll/dist/es2015/sidecar.js +7 -0
  135. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/component.js +56 -0
  136. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/constants.js +10 -0
  137. package/dist/node_modules/react-remove-scroll-bar/dist/es2015/utils.js +31 -0
  138. package/dist/node_modules/react-style-singleton/dist/es2015/component.js +19 -0
  139. package/dist/node_modules/react-style-singleton/dist/es2015/hook.js +25 -0
  140. package/dist/node_modules/react-style-singleton/dist/es2015/singleton.js +51 -0
  141. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +2493 -0
  142. package/dist/node_modules/tslib/tslib.es6.js +56 -0
  143. package/dist/node_modules/use-callback-ref/dist/es2015/assignRef.js +24 -0
  144. package/dist/node_modules/use-callback-ref/dist/es2015/useMergeRef.js +48 -0
  145. package/dist/node_modules/use-callback-ref/dist/es2015/useRef.js +42 -0
  146. package/dist/node_modules/use-color-luminance/index.es.js +105 -0
  147. package/dist/node_modules/use-sidecar/dist/es2015/exports.js +21 -0
  148. package/dist/node_modules/use-sidecar/dist/es2015/medium.js +77 -0
  149. package/dist/plugin/typographies.ts +146 -152
  150. package/dist/style.min.css +1 -1
  151. package/dist/utils/cookie.js +9 -6
  152. package/package.json +11 -3
@@ -0,0 +1,211 @@
1
+ import * as React from 'react';
2
+ import { composeEventHandlers } from '../../primitive/dist/index.js';
3
+ import { Primitive, dispatchDiscreteCustomEvent } from '../../react-primitive/dist/index.js';
4
+ import { useComposedRefs } from '../../react-compose-refs/dist/index.js';
5
+ import { useCallbackRef } from '../../react-use-callback-ref/dist/index.js';
6
+ import { useEscapeKeydown } from '../../react-use-escape-keydown/dist/index.js';
7
+ import { jsx } from 'react/jsx-runtime';
8
+
9
+ var DISMISSABLE_LAYER_NAME = "DismissableLayer";
10
+ var CONTEXT_UPDATE = "dismissableLayer.update";
11
+ var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
12
+ var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
13
+ var originalBodyPointerEvents;
14
+ var DismissableLayerContext = React.createContext({
15
+ layers: /* @__PURE__ */ new Set(),
16
+ layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
17
+ branches: /* @__PURE__ */ new Set()
18
+ });
19
+ var DismissableLayer = React.forwardRef(
20
+ (props, forwardedRef) => {
21
+ const {
22
+ disableOutsidePointerEvents = false,
23
+ onEscapeKeyDown,
24
+ onPointerDownOutside,
25
+ onFocusOutside,
26
+ onInteractOutside,
27
+ onDismiss,
28
+ ...layerProps
29
+ } = props;
30
+ const context = React.useContext(DismissableLayerContext);
31
+ const [node, setNode] = React.useState(null);
32
+ const ownerDocument = node?.ownerDocument ?? globalThis?.document;
33
+ const [, force] = React.useState({});
34
+ const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
35
+ const layers = Array.from(context.layers);
36
+ const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
37
+ const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
38
+ const index = node ? layers.indexOf(node) : -1;
39
+ const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
40
+ const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
41
+ const pointerDownOutside = usePointerDownOutside((event) => {
42
+ const target = event.target;
43
+ const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));
44
+ if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
45
+ onPointerDownOutside?.(event);
46
+ onInteractOutside?.(event);
47
+ if (!event.defaultPrevented) onDismiss?.();
48
+ }, ownerDocument);
49
+ const focusOutside = useFocusOutside((event) => {
50
+ const target = event.target;
51
+ const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));
52
+ if (isFocusInBranch) return;
53
+ onFocusOutside?.(event);
54
+ onInteractOutside?.(event);
55
+ if (!event.defaultPrevented) onDismiss?.();
56
+ }, ownerDocument);
57
+ useEscapeKeydown((event) => {
58
+ const isHighestLayer = index === context.layers.size - 1;
59
+ if (!isHighestLayer) return;
60
+ onEscapeKeyDown?.(event);
61
+ if (!event.defaultPrevented && onDismiss) {
62
+ event.preventDefault();
63
+ onDismiss();
64
+ }
65
+ }, ownerDocument);
66
+ React.useEffect(() => {
67
+ if (!node) return;
68
+ if (disableOutsidePointerEvents) {
69
+ if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
70
+ originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
71
+ ownerDocument.body.style.pointerEvents = "none";
72
+ }
73
+ context.layersWithOutsidePointerEventsDisabled.add(node);
74
+ }
75
+ context.layers.add(node);
76
+ dispatchUpdate();
77
+ return () => {
78
+ if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {
79
+ ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;
80
+ }
81
+ };
82
+ }, [node, ownerDocument, disableOutsidePointerEvents, context]);
83
+ React.useEffect(() => {
84
+ return () => {
85
+ if (!node) return;
86
+ context.layers.delete(node);
87
+ context.layersWithOutsidePointerEventsDisabled.delete(node);
88
+ dispatchUpdate();
89
+ };
90
+ }, [node, context]);
91
+ React.useEffect(() => {
92
+ const handleUpdate = () => force({});
93
+ document.addEventListener(CONTEXT_UPDATE, handleUpdate);
94
+ return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
95
+ }, []);
96
+ return /* @__PURE__ */ jsx(
97
+ Primitive.div,
98
+ {
99
+ ...layerProps,
100
+ ref: composedRefs,
101
+ style: {
102
+ pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : void 0,
103
+ ...props.style
104
+ },
105
+ onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),
106
+ onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),
107
+ onPointerDownCapture: composeEventHandlers(
108
+ props.onPointerDownCapture,
109
+ pointerDownOutside.onPointerDownCapture
110
+ )
111
+ }
112
+ );
113
+ }
114
+ );
115
+ DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
116
+ var BRANCH_NAME = "DismissableLayerBranch";
117
+ var DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {
118
+ const context = React.useContext(DismissableLayerContext);
119
+ const ref = React.useRef(null);
120
+ const composedRefs = useComposedRefs(forwardedRef, ref);
121
+ React.useEffect(() => {
122
+ const node = ref.current;
123
+ if (node) {
124
+ context.branches.add(node);
125
+ return () => {
126
+ context.branches.delete(node);
127
+ };
128
+ }
129
+ }, [context.branches]);
130
+ return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });
131
+ });
132
+ DismissableLayerBranch.displayName = BRANCH_NAME;
133
+ function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
134
+ const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);
135
+ const isPointerInsideReactTreeRef = React.useRef(false);
136
+ const handleClickRef = React.useRef(() => {
137
+ });
138
+ React.useEffect(() => {
139
+ const handlePointerDown = (event) => {
140
+ if (event.target && !isPointerInsideReactTreeRef.current) {
141
+ let handleAndDispatchPointerDownOutsideEvent2 = function() {
142
+ handleAndDispatchCustomEvent(
143
+ POINTER_DOWN_OUTSIDE,
144
+ handlePointerDownOutside,
145
+ eventDetail,
146
+ { discrete: true }
147
+ );
148
+ };
149
+ const eventDetail = { originalEvent: event };
150
+ if (event.pointerType === "touch") {
151
+ ownerDocument.removeEventListener("click", handleClickRef.current);
152
+ handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
153
+ ownerDocument.addEventListener("click", handleClickRef.current, { once: true });
154
+ } else {
155
+ handleAndDispatchPointerDownOutsideEvent2();
156
+ }
157
+ } else {
158
+ ownerDocument.removeEventListener("click", handleClickRef.current);
159
+ }
160
+ isPointerInsideReactTreeRef.current = false;
161
+ };
162
+ const timerId = window.setTimeout(() => {
163
+ ownerDocument.addEventListener("pointerdown", handlePointerDown);
164
+ }, 0);
165
+ return () => {
166
+ window.clearTimeout(timerId);
167
+ ownerDocument.removeEventListener("pointerdown", handlePointerDown);
168
+ ownerDocument.removeEventListener("click", handleClickRef.current);
169
+ };
170
+ }, [ownerDocument, handlePointerDownOutside]);
171
+ return {
172
+ // ensures we check React component tree (not just DOM tree)
173
+ onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true
174
+ };
175
+ }
176
+ function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
177
+ const handleFocusOutside = useCallbackRef(onFocusOutside);
178
+ const isFocusInsideReactTreeRef = React.useRef(false);
179
+ React.useEffect(() => {
180
+ const handleFocus = (event) => {
181
+ if (event.target && !isFocusInsideReactTreeRef.current) {
182
+ const eventDetail = { originalEvent: event };
183
+ handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
184
+ discrete: false
185
+ });
186
+ }
187
+ };
188
+ ownerDocument.addEventListener("focusin", handleFocus);
189
+ return () => ownerDocument.removeEventListener("focusin", handleFocus);
190
+ }, [ownerDocument, handleFocusOutside]);
191
+ return {
192
+ onFocusCapture: () => isFocusInsideReactTreeRef.current = true,
193
+ onBlurCapture: () => isFocusInsideReactTreeRef.current = false
194
+ };
195
+ }
196
+ function dispatchUpdate() {
197
+ const event = new CustomEvent(CONTEXT_UPDATE);
198
+ document.dispatchEvent(event);
199
+ }
200
+ function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
201
+ const target = detail.originalEvent.target;
202
+ const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });
203
+ if (handler) target.addEventListener(name, handler, { once: true });
204
+ if (discrete) {
205
+ dispatchDiscreteCustomEvent(target, event);
206
+ } else {
207
+ target.dispatchEvent(event);
208
+ }
209
+ }
210
+
211
+ export { DismissableLayer, DismissableLayerBranch };
@@ -0,0 +1,265 @@
1
+ import * as React from 'react';
2
+ import { composeEventHandlers } from '../../primitive/dist/index.js';
3
+ import { composeRefs } from '../../react-compose-refs/dist/index.js';
4
+ import { createContextScope } from '../../react-context/dist/index.js';
5
+ import { useControllableState } from '../../react-use-controllable-state/dist/index.js';
6
+ import { Primitive } from '../../react-primitive/dist/index.js';
7
+ import { createMenuScope, SubTrigger, SubContent, Portal, Content as Content2$1, Item as Item2$1, CheckboxItem, ItemIndicator, RadioItem, Label, Separator, Root as Root3, Anchor as Anchor2, Group, Sub, RadioGroup, Arrow as Arrow2 } from '../../react-menu/dist/index.js';
8
+ import { useId } from '../../react-id/dist/index.js';
9
+ import { jsx } from 'react/jsx-runtime';
10
+
11
+ var DROPDOWN_MENU_NAME = "DropdownMenu";
12
+ var [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(
13
+ DROPDOWN_MENU_NAME,
14
+ [createMenuScope]
15
+ );
16
+ var useMenuScope = createMenuScope();
17
+ var [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);
18
+ var DropdownMenu = (props) => {
19
+ const {
20
+ __scopeDropdownMenu,
21
+ children,
22
+ dir,
23
+ open: openProp,
24
+ defaultOpen,
25
+ onOpenChange,
26
+ modal = true
27
+ } = props;
28
+ const menuScope = useMenuScope(__scopeDropdownMenu);
29
+ const triggerRef = React.useRef(null);
30
+ const [open = false, setOpen] = useControllableState({
31
+ prop: openProp,
32
+ defaultProp: defaultOpen,
33
+ onChange: onOpenChange
34
+ });
35
+ return /* @__PURE__ */ jsx(
36
+ DropdownMenuProvider,
37
+ {
38
+ scope: __scopeDropdownMenu,
39
+ triggerId: useId(),
40
+ triggerRef,
41
+ contentId: useId(),
42
+ open,
43
+ onOpenChange: setOpen,
44
+ onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),
45
+ modal,
46
+ children: /* @__PURE__ */ jsx(Root3, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })
47
+ }
48
+ );
49
+ };
50
+ DropdownMenu.displayName = DROPDOWN_MENU_NAME;
51
+ var TRIGGER_NAME = "DropdownMenuTrigger";
52
+ var DropdownMenuTrigger = React.forwardRef(
53
+ (props, forwardedRef) => {
54
+ const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;
55
+ const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);
56
+ const menuScope = useMenuScope(__scopeDropdownMenu);
57
+ return /* @__PURE__ */ jsx(Anchor2, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(
58
+ Primitive.button,
59
+ {
60
+ type: "button",
61
+ id: context.triggerId,
62
+ "aria-haspopup": "menu",
63
+ "aria-expanded": context.open,
64
+ "aria-controls": context.open ? context.contentId : void 0,
65
+ "data-state": context.open ? "open" : "closed",
66
+ "data-disabled": disabled ? "" : void 0,
67
+ disabled,
68
+ ...triggerProps,
69
+ ref: composeRefs(forwardedRef, context.triggerRef),
70
+ onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {
71
+ if (!disabled && event.button === 0 && event.ctrlKey === false) {
72
+ context.onOpenToggle();
73
+ if (!context.open) event.preventDefault();
74
+ }
75
+ }),
76
+ onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {
77
+ if (disabled) return;
78
+ if (["Enter", " "].includes(event.key)) context.onOpenToggle();
79
+ if (event.key === "ArrowDown") context.onOpenChange(true);
80
+ if (["Enter", " ", "ArrowDown"].includes(event.key)) event.preventDefault();
81
+ })
82
+ }
83
+ ) });
84
+ }
85
+ );
86
+ DropdownMenuTrigger.displayName = TRIGGER_NAME;
87
+ var PORTAL_NAME = "DropdownMenuPortal";
88
+ var DropdownMenuPortal = (props) => {
89
+ const { __scopeDropdownMenu, ...portalProps } = props;
90
+ const menuScope = useMenuScope(__scopeDropdownMenu);
91
+ return /* @__PURE__ */ jsx(Portal, { ...menuScope, ...portalProps });
92
+ };
93
+ DropdownMenuPortal.displayName = PORTAL_NAME;
94
+ var CONTENT_NAME = "DropdownMenuContent";
95
+ var DropdownMenuContent = React.forwardRef(
96
+ (props, forwardedRef) => {
97
+ const { __scopeDropdownMenu, ...contentProps } = props;
98
+ const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);
99
+ const menuScope = useMenuScope(__scopeDropdownMenu);
100
+ const hasInteractedOutsideRef = React.useRef(false);
101
+ return /* @__PURE__ */ jsx(
102
+ Content2$1,
103
+ {
104
+ id: context.contentId,
105
+ "aria-labelledby": context.triggerId,
106
+ ...menuScope,
107
+ ...contentProps,
108
+ ref: forwardedRef,
109
+ onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {
110
+ if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();
111
+ hasInteractedOutsideRef.current = false;
112
+ event.preventDefault();
113
+ }),
114
+ onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {
115
+ const originalEvent = event.detail.originalEvent;
116
+ const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;
117
+ const isRightClick = originalEvent.button === 2 || ctrlLeftClick;
118
+ if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;
119
+ }),
120
+ style: {
121
+ ...props.style,
122
+ // re-namespace exposed content custom properties
123
+ ...{
124
+ "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
125
+ "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
126
+ "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
127
+ "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
128
+ "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
129
+ }
130
+ }
131
+ }
132
+ );
133
+ }
134
+ );
135
+ DropdownMenuContent.displayName = CONTENT_NAME;
136
+ var GROUP_NAME = "DropdownMenuGroup";
137
+ var DropdownMenuGroup = React.forwardRef(
138
+ (props, forwardedRef) => {
139
+ const { __scopeDropdownMenu, ...groupProps } = props;
140
+ const menuScope = useMenuScope(__scopeDropdownMenu);
141
+ return /* @__PURE__ */ jsx(Group, { ...menuScope, ...groupProps, ref: forwardedRef });
142
+ }
143
+ );
144
+ DropdownMenuGroup.displayName = GROUP_NAME;
145
+ var LABEL_NAME = "DropdownMenuLabel";
146
+ var DropdownMenuLabel = React.forwardRef(
147
+ (props, forwardedRef) => {
148
+ const { __scopeDropdownMenu, ...labelProps } = props;
149
+ const menuScope = useMenuScope(__scopeDropdownMenu);
150
+ return /* @__PURE__ */ jsx(Label, { ...menuScope, ...labelProps, ref: forwardedRef });
151
+ }
152
+ );
153
+ DropdownMenuLabel.displayName = LABEL_NAME;
154
+ var ITEM_NAME = "DropdownMenuItem";
155
+ var DropdownMenuItem = React.forwardRef(
156
+ (props, forwardedRef) => {
157
+ const { __scopeDropdownMenu, ...itemProps } = props;
158
+ const menuScope = useMenuScope(__scopeDropdownMenu);
159
+ return /* @__PURE__ */ jsx(Item2$1, { ...menuScope, ...itemProps, ref: forwardedRef });
160
+ }
161
+ );
162
+ DropdownMenuItem.displayName = ITEM_NAME;
163
+ var CHECKBOX_ITEM_NAME = "DropdownMenuCheckboxItem";
164
+ var DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {
165
+ const { __scopeDropdownMenu, ...checkboxItemProps } = props;
166
+ const menuScope = useMenuScope(__scopeDropdownMenu);
167
+ return /* @__PURE__ */ jsx(CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });
168
+ });
169
+ DropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;
170
+ var RADIO_GROUP_NAME = "DropdownMenuRadioGroup";
171
+ var DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {
172
+ const { __scopeDropdownMenu, ...radioGroupProps } = props;
173
+ const menuScope = useMenuScope(__scopeDropdownMenu);
174
+ return /* @__PURE__ */ jsx(RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });
175
+ });
176
+ DropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;
177
+ var RADIO_ITEM_NAME = "DropdownMenuRadioItem";
178
+ var DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {
179
+ const { __scopeDropdownMenu, ...radioItemProps } = props;
180
+ const menuScope = useMenuScope(__scopeDropdownMenu);
181
+ return /* @__PURE__ */ jsx(RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });
182
+ });
183
+ DropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;
184
+ var INDICATOR_NAME = "DropdownMenuItemIndicator";
185
+ var DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {
186
+ const { __scopeDropdownMenu, ...itemIndicatorProps } = props;
187
+ const menuScope = useMenuScope(__scopeDropdownMenu);
188
+ return /* @__PURE__ */ jsx(ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });
189
+ });
190
+ DropdownMenuItemIndicator.displayName = INDICATOR_NAME;
191
+ var SEPARATOR_NAME = "DropdownMenuSeparator";
192
+ var DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {
193
+ const { __scopeDropdownMenu, ...separatorProps } = props;
194
+ const menuScope = useMenuScope(__scopeDropdownMenu);
195
+ return /* @__PURE__ */ jsx(Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });
196
+ });
197
+ DropdownMenuSeparator.displayName = SEPARATOR_NAME;
198
+ var ARROW_NAME = "DropdownMenuArrow";
199
+ var DropdownMenuArrow = React.forwardRef(
200
+ (props, forwardedRef) => {
201
+ const { __scopeDropdownMenu, ...arrowProps } = props;
202
+ const menuScope = useMenuScope(__scopeDropdownMenu);
203
+ return /* @__PURE__ */ jsx(Arrow2, { ...menuScope, ...arrowProps, ref: forwardedRef });
204
+ }
205
+ );
206
+ DropdownMenuArrow.displayName = ARROW_NAME;
207
+ var DropdownMenuSub = (props) => {
208
+ const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;
209
+ const menuScope = useMenuScope(__scopeDropdownMenu);
210
+ const [open = false, setOpen] = useControllableState({
211
+ prop: openProp,
212
+ defaultProp: defaultOpen,
213
+ onChange: onOpenChange
214
+ });
215
+ return /* @__PURE__ */ jsx(Sub, { ...menuScope, open, onOpenChange: setOpen, children });
216
+ };
217
+ var SUB_TRIGGER_NAME = "DropdownMenuSubTrigger";
218
+ var DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {
219
+ const { __scopeDropdownMenu, ...subTriggerProps } = props;
220
+ const menuScope = useMenuScope(__scopeDropdownMenu);
221
+ return /* @__PURE__ */ jsx(SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });
222
+ });
223
+ DropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;
224
+ var SUB_CONTENT_NAME = "DropdownMenuSubContent";
225
+ var DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {
226
+ const { __scopeDropdownMenu, ...subContentProps } = props;
227
+ const menuScope = useMenuScope(__scopeDropdownMenu);
228
+ return /* @__PURE__ */ jsx(
229
+ SubContent,
230
+ {
231
+ ...menuScope,
232
+ ...subContentProps,
233
+ ref: forwardedRef,
234
+ style: {
235
+ ...props.style,
236
+ // re-namespace exposed content custom properties
237
+ ...{
238
+ "--radix-dropdown-menu-content-transform-origin": "var(--radix-popper-transform-origin)",
239
+ "--radix-dropdown-menu-content-available-width": "var(--radix-popper-available-width)",
240
+ "--radix-dropdown-menu-content-available-height": "var(--radix-popper-available-height)",
241
+ "--radix-dropdown-menu-trigger-width": "var(--radix-popper-anchor-width)",
242
+ "--radix-dropdown-menu-trigger-height": "var(--radix-popper-anchor-height)"
243
+ }
244
+ }
245
+ }
246
+ );
247
+ });
248
+ DropdownMenuSubContent.displayName = SUB_CONTENT_NAME;
249
+ var Root2 = DropdownMenu;
250
+ var Trigger = DropdownMenuTrigger;
251
+ var Portal2 = DropdownMenuPortal;
252
+ var Content2 = DropdownMenuContent;
253
+ var Group2 = DropdownMenuGroup;
254
+ var Label2 = DropdownMenuLabel;
255
+ var Item2 = DropdownMenuItem;
256
+ var CheckboxItem2 = DropdownMenuCheckboxItem;
257
+ var RadioGroup2 = DropdownMenuRadioGroup;
258
+ var RadioItem2 = DropdownMenuRadioItem;
259
+ var ItemIndicator2 = DropdownMenuItemIndicator;
260
+ var Separator2 = DropdownMenuSeparator;
261
+ var Sub2 = DropdownMenuSub;
262
+ var SubTrigger2 = DropdownMenuSubTrigger;
263
+ var SubContent2 = DropdownMenuSubContent;
264
+
265
+ export { CheckboxItem2 as CheckboxItem, Content2 as Content, DropdownMenu, DropdownMenuArrow, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuItemIndicator, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Group2 as Group, Item2 as Item, ItemIndicator2 as ItemIndicator, Label2 as Label, Portal2 as Portal, RadioGroup2 as RadioGroup, RadioItem2 as RadioItem, Root2 as Root, Separator2 as Separator, Sub2 as Sub, SubContent2 as SubContent, SubTrigger2 as SubTrigger, Trigger, createDropdownMenuScope };
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+
3
+ var count = 0;
4
+ function useFocusGuards() {
5
+ React.useEffect(() => {
6
+ const edgeGuards = document.querySelectorAll("[data-radix-focus-guard]");
7
+ document.body.insertAdjacentElement("afterbegin", edgeGuards[0] ?? createFocusGuard());
8
+ document.body.insertAdjacentElement("beforeend", edgeGuards[1] ?? createFocusGuard());
9
+ count++;
10
+ return () => {
11
+ if (count === 1) {
12
+ document.querySelectorAll("[data-radix-focus-guard]").forEach((node) => node.remove());
13
+ }
14
+ count--;
15
+ };
16
+ }, []);
17
+ }
18
+ function createFocusGuard() {
19
+ const element = document.createElement("span");
20
+ element.setAttribute("data-radix-focus-guard", "");
21
+ element.tabIndex = 0;
22
+ element.style.outline = "none";
23
+ element.style.opacity = "0";
24
+ element.style.position = "fixed";
25
+ element.style.pointerEvents = "none";
26
+ return element;
27
+ }
28
+
29
+ export { useFocusGuards };