@ledgerhq/lumen-ui-react 0.1.35 → 0.1.37

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 (121) hide show
  1. package/dist/index.js +108 -109
  2. package/dist/lib/Components/AmountDisplay/AmountDisplay.d.ts +1 -1
  3. package/dist/lib/Components/AmountDisplay/AmountDisplay.d.ts.map +1 -1
  4. package/dist/lib/Components/AmountDisplay/AmountDisplay.js +117 -78
  5. package/dist/lib/Components/AmountDisplay/index.d.ts +1 -1
  6. package/dist/lib/Components/AmountDisplay/index.d.ts.map +1 -1
  7. package/dist/lib/Components/AmountDisplay/types.d.ts +16 -3
  8. package/dist/lib/Components/AmountDisplay/types.d.ts.map +1 -1
  9. package/dist/lib/Components/AmountInput/AmountInput.d.ts +1 -1
  10. package/dist/lib/Components/AmountInput/AmountInput.d.ts.map +1 -1
  11. package/dist/lib/Components/AmountInput/AmountInput.js +127 -77
  12. package/dist/lib/Components/AmountInput/types.d.ts +12 -0
  13. package/dist/lib/Components/AmountInput/types.d.ts.map +1 -1
  14. package/dist/lib/Components/Avatar/Avatar.d.ts +1 -1
  15. package/dist/lib/Components/Avatar/Avatar.d.ts.map +1 -1
  16. package/dist/lib/Components/Avatar/Avatar.js +47 -60
  17. package/dist/lib/Components/Button/BaseButton.d.ts +2 -2
  18. package/dist/lib/Components/Button/Button.js +10 -10
  19. package/dist/lib/Components/Card/Card.js +12 -12
  20. package/dist/lib/Components/DataTable/DataTable.js +2 -2
  21. package/dist/lib/Components/Divider/Divider.js +4 -4
  22. package/dist/lib/Components/DotCount/DotCount.js +4 -4
  23. package/dist/lib/Components/DotIcon/DotIcon.d.ts +3 -2
  24. package/dist/lib/Components/DotIcon/DotIcon.d.ts.map +1 -1
  25. package/dist/lib/Components/DotIcon/DotIcon.js +55 -40
  26. package/dist/lib/Components/DotIcon/types.d.ts +7 -1
  27. package/dist/lib/Components/DotIcon/types.d.ts.map +1 -1
  28. package/dist/lib/Components/DotIndicator/DotIndicator.js +14 -14
  29. package/dist/lib/Components/DotIndicator/types.d.ts +2 -2
  30. package/dist/lib/Components/DotSymbol/DotSymbol.d.ts +1 -1
  31. package/dist/lib/Components/DotSymbol/DotSymbol.d.ts.map +1 -1
  32. package/dist/lib/Components/DotSymbol/DotSymbol.js +50 -35
  33. package/dist/lib/Components/DotSymbol/types.d.ts +7 -1
  34. package/dist/lib/Components/DotSymbol/types.d.ts.map +1 -1
  35. package/dist/lib/Components/Icon/Icon.js +4 -4
  36. package/dist/lib/Components/Icon/createIcon.js +4 -4
  37. package/dist/lib/Components/InteractiveIcon/InteractiveIcon.js +4 -4
  38. package/dist/lib/Components/Link/Link.js +6 -6
  39. package/dist/lib/Components/ListItem/ListItem.js +3 -3
  40. package/dist/lib/Components/MediaButton/MediaButton.d.ts +3 -3
  41. package/dist/lib/Components/MediaButton/MediaButton.d.ts.map +1 -1
  42. package/dist/lib/Components/MediaButton/MediaButton.js +44 -42
  43. package/dist/lib/Components/MediaButton/types.d.ts +5 -5
  44. package/dist/lib/Components/MediaButton/types.d.ts.map +1 -1
  45. package/dist/lib/Components/MediaImage/MediaImage.d.ts +1 -1
  46. package/dist/lib/Components/MediaImage/MediaImage.d.ts.map +1 -1
  47. package/dist/lib/Components/MediaImage/MediaImage.js +45 -32
  48. package/dist/lib/Components/MediaImage/types.d.ts +7 -1
  49. package/dist/lib/Components/MediaImage/types.d.ts.map +1 -1
  50. package/dist/lib/Components/Menu/Menu.d.ts +11 -16
  51. package/dist/lib/Components/Menu/Menu.d.ts.map +1 -1
  52. package/dist/lib/Components/Menu/Menu.js +186 -125
  53. package/dist/lib/Components/Menu/types.d.ts +50 -145
  54. package/dist/lib/Components/Menu/types.d.ts.map +1 -1
  55. package/dist/lib/Components/NavBar/CoinCapsule.d.ts +2 -2
  56. package/dist/lib/Components/NavBar/CoinCapsule.d.ts.map +1 -1
  57. package/dist/lib/Components/NavBar/CoinCapsule.js +1 -1
  58. package/dist/lib/Components/NavBar/NavBar.d.ts +4 -4
  59. package/dist/lib/Components/NavBar/NavBar.d.ts.map +1 -1
  60. package/dist/lib/Components/NavBar/NavBar.js +34 -26
  61. package/dist/lib/Components/NavBar/types.d.ts +2 -2
  62. package/dist/lib/Components/NavBar/types.d.ts.map +1 -1
  63. package/dist/lib/Components/Popover/Popover.d.ts +2 -2
  64. package/dist/lib/Components/Popover/Popover.js +6 -6
  65. package/dist/lib/Components/Popover/types.d.ts +6 -3
  66. package/dist/lib/Components/Popover/types.d.ts.map +1 -1
  67. package/dist/lib/Components/SideBar/SideBar.js +9 -9
  68. package/dist/lib/Components/Skeleton/Skeleton.js +4 -4
  69. package/dist/lib/Components/Table/Table.js +1 -1
  70. package/dist/lib/Components/Table/utils/useThrottledScrollBottom.js +3 -3
  71. package/dist/lib/Symbols/Icons/Lightbulb.js +3 -3
  72. package/dist/libs/utils-shared/dist/index.js +107 -107
  73. package/dist/node_modules/@base-ui/react/esm/composite/item/CompositeItem.js +30 -0
  74. package/dist/node_modules/@base-ui/react/esm/composite/item/useCompositeItem.js +34 -0
  75. package/dist/node_modules/@base-ui/react/esm/context-menu/root/ContextMenuRootContext.js +14 -0
  76. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingFocusManager.js +10 -10
  77. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFocus.js +97 -0
  78. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +10 -10
  79. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +2 -2
  80. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/element.js +31 -20
  81. package/dist/node_modules/@base-ui/react/esm/menu/checkbox-item/MenuCheckboxItem.js +78 -0
  82. package/dist/node_modules/@base-ui/react/esm/menu/checkbox-item/MenuCheckboxItemContext.js +14 -0
  83. package/dist/node_modules/@base-ui/react/esm/menu/checkbox-item/MenuCheckboxItemDataAttributes.js +6 -0
  84. package/dist/node_modules/@base-ui/react/esm/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.js +44 -0
  85. package/dist/node_modules/@base-ui/react/esm/menu/group/MenuGroup.js +28 -0
  86. package/dist/node_modules/@base-ui/react/esm/menu/group/MenuGroupContext.js +14 -0
  87. package/dist/node_modules/@base-ui/react/esm/menu/group-label/MenuGroupLabel.js +29 -0
  88. package/dist/node_modules/@base-ui/react/esm/menu/item/MenuItem.js +47 -0
  89. package/dist/node_modules/@base-ui/react/esm/menu/item/useMenuItem.js +50 -0
  90. package/dist/node_modules/@base-ui/react/esm/menu/item/useMenuItemCommonProps.js +49 -0
  91. package/dist/node_modules/@base-ui/react/esm/menu/popup/MenuPopup.js +89 -0
  92. package/dist/node_modules/@base-ui/react/esm/menu/portal/MenuPortal.js +24 -0
  93. package/dist/node_modules/@base-ui/react/esm/menu/portal/MenuPortalContext.js +14 -0
  94. package/dist/node_modules/@base-ui/react/esm/menu/positioner/MenuPositioner.js +174 -0
  95. package/dist/node_modules/@base-ui/react/esm/menu/positioner/MenuPositionerContext.js +14 -0
  96. package/dist/node_modules/@base-ui/react/esm/menu/radio-group/MenuRadioGroup.js +45 -0
  97. package/dist/node_modules/@base-ui/react/esm/menu/radio-group/MenuRadioGroupContext.js +14 -0
  98. package/dist/node_modules/@base-ui/react/esm/menu/radio-item/MenuRadioItem.js +75 -0
  99. package/dist/node_modules/@base-ui/react/esm/menu/radio-item/MenuRadioItemContext.js +14 -0
  100. package/dist/node_modules/@base-ui/react/esm/menu/radio-item-indicator/MenuRadioItemIndicator.js +44 -0
  101. package/dist/node_modules/@base-ui/react/esm/menu/root/MenuRoot.js +271 -0
  102. package/dist/node_modules/@base-ui/react/esm/menu/root/MenuRootContext.js +14 -0
  103. package/dist/node_modules/@base-ui/react/esm/menu/store/MenuStore.js +109 -0
  104. package/dist/node_modules/@base-ui/react/esm/menu/submenu-root/MenuSubmenuRoot.js +21 -0
  105. package/dist/node_modules/@base-ui/react/esm/menu/submenu-root/MenuSubmenuRootContext.js +10 -0
  106. package/dist/node_modules/@base-ui/react/esm/menu/submenu-trigger/MenuSubmenuTrigger.js +101 -0
  107. package/dist/node_modules/@base-ui/react/esm/menu/trigger/MenuTrigger.js +207 -0
  108. package/dist/node_modules/@base-ui/react/esm/menu/utils/findRootOwnerId.js +10 -0
  109. package/dist/node_modules/@base-ui/react/esm/menu/utils/stateAttributesMapping.js +15 -0
  110. package/dist/node_modules/@base-ui/react/esm/menubar/MenubarContext.js +10 -0
  111. package/dist/node_modules/@base-ui/react/esm/popover/root/PopoverRoot.js +11 -11
  112. package/dist/node_modules/@base-ui/react/esm/popover/store/PopoverStore.js +7 -7
  113. package/dist/node_modules/@base-ui/react/esm/popover/trigger/PopoverTrigger.js +11 -11
  114. package/dist/node_modules/@base-ui/react/esm/utils/constants.js +11 -10
  115. package/dist/node_modules/@base-ui/react/esm/utils/reason-parts.js +11 -8
  116. package/dist/node_modules/@base-ui/react/esm/utils/useMixedToggleClickHandler.js +25 -0
  117. package/dist/node_modules/@base-ui/utils/esm/detectBrowser.js +7 -8
  118. package/dist/node_modules/@base-ui/utils/esm/fastHooks.js +43 -0
  119. package/dist/node_modules/@base-ui/utils/esm/store/useStore.js +54 -13
  120. package/dist/package.json +4 -5
  121. package/package.json +4 -5
@@ -0,0 +1,271 @@
1
+ import * as r from "react";
2
+ import { useTimeout as Q } from "../../../../utils/esm/useTimeout.js";
3
+ import { useStableCallback as ke } from "../../../../utils/esm/useStableCallback.js";
4
+ import { useId as we } from "../../../../utils/esm/useId.js";
5
+ import { useIsoLayoutEffect as W } from "../../../../utils/esm/useIsoLayoutEffect.js";
6
+ import { useOnFirstRender as Fe } from "../../../../utils/esm/useOnFirstRender.js";
7
+ import { useScrollLock as Ae } from "../../../../utils/esm/useScrollLock.js";
8
+ import { EMPTY_ARRAY as He } from "../../../../utils/esm/empty.js";
9
+ import { fastComponent as Ue } from "../../../../utils/esm/fastHooks.js";
10
+ import { useMenuRootContext as Ke, MenuRootContext as _e } from "./MenuRootContext.js";
11
+ import { useMenubarContext as Le } from "../../menubar/MenubarContext.js";
12
+ import { TYPEAHEAD_RESET_MS as Ve } from "../../utils/constants.js";
13
+ import { useDirection as De } from "../../direction-provider/DirectionContext.js";
14
+ import { useOpenInteractionType as Ye } from "../../utils/useOpenInteractionType.js";
15
+ import { createChangeEventDetails as je } from "../../utils/createBaseUIEventDetails.js";
16
+ import { useContextMenuRootContext as qe } from "../../context-menu/root/ContextMenuRootContext.js";
17
+ import { MenuStore as Be } from "../store/MenuStore.js";
18
+ import { useMenuSubmenuRootContext as $e } from "../submenu-root/MenuSubmenuRootContext.js";
19
+ import { jsx as X } from "react/jsx-runtime";
20
+ import { useFloatingNodeId as ze, useFloatingParentNodeId as Ge, FloatingTree as Je } from "../../floating-ui-react/components/FloatingTree.js";
21
+ import { useImplicitActiveTrigger as Qe, useOpenStateTransitions as We } from "../../utils/popups/popupStoreUtils.js";
22
+ import { useSyncedFloatingRootContext as Xe } from "../../floating-ui-react/hooks/useSyncedFloatingRootContext.js";
23
+ import { useDismiss as Ze } from "../../floating-ui-react/hooks/useDismiss.js";
24
+ import { useRole as et } from "../../floating-ui-react/hooks/useRole.js";
25
+ import { useListNavigation as tt } from "../../floating-ui-react/hooks/useListNavigation.js";
26
+ import { useTypeahead as ot } from "../../floating-ui-react/hooks/useTypeahead.js";
27
+ import { useInteractions as nt } from "../../floating-ui-react/hooks/useInteractions.js";
28
+ import { triggerHover as Z, triggerFocus as ee, focusOut as rt, listNavigation as st, siblingOpen as it, triggerPress as at, itemPress as ut, escapeKey as ct, imperativeAction as lt } from "../../utils/reason-parts.js";
29
+ import { mergeProps as te } from "../../merge-props/mergeProps.js";
30
+ const pt = Ue(function(oe) {
31
+ const {
32
+ children: v,
33
+ open: C,
34
+ onOpenChange: ne,
35
+ onOpenChangeComplete: re,
36
+ defaultOpen: N = !1,
37
+ disabled: se = !1,
38
+ modal: k,
39
+ loopFocus: ie = !0,
40
+ orientation: ae = "vertical",
41
+ actionsRef: ue,
42
+ closeParentOnEsc: ce = !1,
43
+ handle: le,
44
+ triggerId: w,
45
+ defaultTriggerId: F = null,
46
+ highlightItemOnHover: pe = !0
47
+ } = oe, u = qe(!0), a = Ke(!0), I = Le(), A = $e(), T = r.useMemo(() => A && a ? {
48
+ type: "menu",
49
+ store: a.store
50
+ } : I ? {
51
+ type: "menubar",
52
+ context: I
53
+ } : u && !a ? {
54
+ type: "context-menu",
55
+ context: u
56
+ } : {
57
+ type: void 0
58
+ }, [u, a, I, A]), e = Be.useStore(le?.store, {
59
+ open: N,
60
+ openProp: C,
61
+ activeTriggerId: F,
62
+ triggerIdProp: w,
63
+ parent: T
64
+ });
65
+ Fe(() => {
66
+ C === void 0 && e.state.open === !1 && N === !0 && e.update({
67
+ open: !0,
68
+ activeTriggerId: F
69
+ });
70
+ }), e.useControlledProp("openProp", C), e.useControlledProp("triggerIdProp", w), e.useContextCallback("onOpenChangeComplete", re);
71
+ const m = e.useState("floatingTreeRoot"), x = ze(m), P = Ge();
72
+ W(() => {
73
+ u && !a ? e.update({
74
+ parent: {
75
+ type: "context-menu",
76
+ context: u
77
+ },
78
+ floatingNodeId: x,
79
+ floatingParentNodeId: P
80
+ }) : a && e.update({
81
+ floatingNodeId: x,
82
+ floatingParentNodeId: P
83
+ });
84
+ }, [u, a, x, P, e]);
85
+ const i = e.useState("open"), H = e.useState("activeTriggerElement"), b = e.useState("positionerElement"), U = e.useState("hoverEnabled"), de = e.useState("modal"), K = e.useState("disabled"), _ = e.useState("lastOpenChangeReason"), n = e.useState("parent"), l = e.useState("activeIndex"), me = e.useState("payload"), fe = e.useState("floatingParentNodeId"), E = r.useRef(null), R = fe != null;
86
+ let p;
87
+ process.env.NODE_ENV !== "production" && n.type !== void 0 && k !== void 0 && console.warn("Base UI: The `modal` prop is not supported on nested menus. It will be ignored."), e.useSyncedValues({
88
+ disabled: se,
89
+ modal: n.type === void 0 ? k : void 0,
90
+ rootId: we()
91
+ });
92
+ const {
93
+ openMethod: ge,
94
+ triggerProps: f
95
+ } = Ye(i);
96
+ Qe(e);
97
+ const {
98
+ forceUnmount: L
99
+ } = We(i, e, () => {
100
+ e.update({
101
+ allowMouseEnter: !1,
102
+ stickIfOpen: !0
103
+ });
104
+ }), h = r.useRef(n.type !== "context-menu"), M = Q();
105
+ r.useEffect(() => {
106
+ if (i || (E.current = null), n.type === "context-menu") {
107
+ if (!i) {
108
+ M.clear(), h.current = !1;
109
+ return;
110
+ }
111
+ M.start(500, () => {
112
+ h.current = !0;
113
+ });
114
+ }
115
+ }, [M, i, n.type]), Ae(i && de && _ !== Z && ge !== "touch", b), W(() => {
116
+ !i && !U && e.set("hoverEnabled", !0);
117
+ }, [i, U, e]);
118
+ const g = r.useRef(!0), V = Q(), d = ke((t, o) => {
119
+ const s = o.reason;
120
+ if (i === t && o.trigger === H && _ === s || (o.preventUnmountOnClose = () => {
121
+ e.set("preventUnmountingOnClose", !0);
122
+ }, !t && o.trigger == null && (o.trigger = H ?? void 0), ne?.(t, o), o.isCanceled))
123
+ return;
124
+ const Se = {
125
+ open: t,
126
+ nativeEvent: o.event,
127
+ reason: o.reason,
128
+ nested: R
129
+ };
130
+ p?.emit("openchange", Se);
131
+ const y = o.event;
132
+ if (t === !1 && y?.type === "click" && y.pointerType === "touch" && !g.current)
133
+ return;
134
+ if (!t && l !== null) {
135
+ const Ne = e.context.itemDomElements.current[l];
136
+ queueMicrotask(() => {
137
+ Ne?.setAttribute("tabindex", "-1");
138
+ });
139
+ }
140
+ t && s === ee ? (g.current = !1, V.start(300, () => {
141
+ g.current = !0;
142
+ })) : (g.current = !0, V.clear());
143
+ const G = (s === at || s === ut) && y.detail === 0 && y?.isTrusted, Oe = !t && (s === ct || s == null), O = {
144
+ open: t,
145
+ openChangeReason: s
146
+ };
147
+ E.current = o.event ?? null;
148
+ const J = o.trigger?.id ?? null;
149
+ (J || t) && (O.activeTriggerId = J, O.activeTriggerElement = o.trigger ?? null), e.update(O), n.type === "menubar" && (s === ee || s === rt || s === Z || s === st || s === it) ? e.set("instantType", "group") : G || Oe ? e.set("instantType", G ? "click" : "dismiss") : e.set("instantType", void 0);
150
+ }), D = r.useCallback((t) => {
151
+ const o = je(t);
152
+ return o.preventUnmountOnClose = () => {
153
+ e.set("preventUnmountingOnClose", !0);
154
+ }, o;
155
+ }, [e]), Y = r.useCallback(() => {
156
+ e.setOpen(!1, D(lt));
157
+ }, [e, D]);
158
+ r.useImperativeHandle(ue, () => ({
159
+ unmount: L,
160
+ close: Y
161
+ }), [L, Y]);
162
+ let S;
163
+ n.type === "context-menu" && (S = n.context), r.useImperativeHandle(S?.positionerRef, () => b, [b]), r.useImperativeHandle(S?.actionsRef, () => ({
164
+ setOpen: d
165
+ }), [d]);
166
+ const c = Xe({
167
+ popupStore: e,
168
+ onOpenChange: d
169
+ });
170
+ p = c.context.events, r.useEffect(() => {
171
+ const t = ({
172
+ open: o,
173
+ eventDetails: s
174
+ }) => d(o, s);
175
+ return p.on("setOpen", t), () => {
176
+ p?.off("setOpen", t);
177
+ };
178
+ }, [p, d]);
179
+ const ye = Ze(c, {
180
+ enabled: !K,
181
+ bubbles: {
182
+ escapeKey: ce && n.type === "menu"
183
+ },
184
+ outsidePress() {
185
+ return n.type !== "context-menu" || E.current?.type === "contextmenu" ? !0 : h.current;
186
+ },
187
+ externalTree: R ? m : void 0
188
+ }), ve = et(c, {
189
+ role: "menu"
190
+ }), Ce = De(), Ie = r.useCallback((t) => {
191
+ e.select("activeIndex") !== t && e.set("activeIndex", t);
192
+ }, [e]), Te = tt(c, {
193
+ enabled: !K,
194
+ listRef: e.context.itemDomElements,
195
+ activeIndex: l,
196
+ nested: n.type !== void 0,
197
+ loopFocus: ie,
198
+ orientation: ae,
199
+ parentOrientation: n.type === "menubar" ? n.context.orientation : void 0,
200
+ rtl: Ce === "rtl",
201
+ disabledIndices: He,
202
+ onNavigate: Ie,
203
+ openOnArrowKeyDown: n.type !== "context-menu",
204
+ externalTree: R ? m : void 0,
205
+ focusItemOnHover: pe
206
+ }), xe = r.useCallback((t) => {
207
+ e.context.typingRef.current = t;
208
+ }, [e]), Pe = ot(c, {
209
+ listRef: e.context.itemLabels,
210
+ elementsRef: e.context.itemDomElements,
211
+ activeIndex: l,
212
+ resetMs: Ve,
213
+ onMatch: (t) => {
214
+ i && t !== l && e.set("activeIndex", t);
215
+ },
216
+ onTypingChange: xe
217
+ }), {
218
+ getReferenceProps: j,
219
+ getFloatingProps: q,
220
+ getItemProps: B,
221
+ getTriggerProps: $
222
+ } = nt([ye, ve, Te, Pe]), be = r.useMemo(() => {
223
+ const t = te(j(), {
224
+ onMouseMove() {
225
+ e.set("allowMouseEnter", !0);
226
+ }
227
+ }, f);
228
+ return delete t.role, t;
229
+ }, [j, e, f]), Ee = r.useMemo(() => {
230
+ const t = $();
231
+ if (!t)
232
+ return t;
233
+ const o = te(t, f);
234
+ return delete o.role, delete o["aria-controls"], o;
235
+ }, [$, f]), Re = r.useMemo(() => q({
236
+ onMouseMove() {
237
+ e.set("allowMouseEnter", !0), n.type === "menu" && e.set("hoverEnabled", !1);
238
+ },
239
+ onClick() {
240
+ e.select("hoverEnabled") && e.set("hoverEnabled", !1);
241
+ },
242
+ onKeyDown(t) {
243
+ const o = e.select("keyboardEventRelay");
244
+ o && !t.isPropagationStopped() && o(t);
245
+ }
246
+ }), [q, n.type, e]), he = r.useMemo(() => B(), [B]);
247
+ e.useSyncedValues({
248
+ floatingRootContext: c,
249
+ activeTriggerProps: be,
250
+ inactiveTriggerProps: Ee,
251
+ popupProps: Re,
252
+ itemProps: he
253
+ });
254
+ const Me = r.useMemo(() => ({
255
+ store: e,
256
+ parent: T
257
+ }), [e, T]), z = /* @__PURE__ */ X(_e.Provider, {
258
+ value: Me,
259
+ children: typeof v == "function" ? v({
260
+ payload: me
261
+ }) : v
262
+ });
263
+ return n.type === void 0 || n.type === "context-menu" ? /* @__PURE__ */ X(Je, {
264
+ externalTree: m,
265
+ children: z
266
+ }) : z;
267
+ });
268
+ process.env.NODE_ENV !== "production" && (pt.displayName = "MenuRoot");
269
+ export {
270
+ pt as MenuRoot
271
+ };
@@ -0,0 +1,14 @@
1
+ import r from "../../../../utils/esm/formatErrorMessage.js";
2
+ import * as o from "react";
3
+ const t = /* @__PURE__ */ o.createContext(void 0);
4
+ process.env.NODE_ENV !== "production" && (t.displayName = "MenuRootContext");
5
+ function i(n) {
6
+ const e = o.useContext(t);
7
+ if (e === void 0 && !n)
8
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: MenuRootContext is missing. Menu parts must be placed within <Menu.Root>." : r(36));
9
+ return e;
10
+ }
11
+ export {
12
+ t as MenuRootContext,
13
+ i as useMenuRootContext
14
+ };
@@ -0,0 +1,109 @@
1
+ import * as i from "react";
2
+ import { EMPTY_OBJECT as c } from "../../../../utils/esm/empty.js";
3
+ import { useRefWithInit as p } from "../../../../utils/esm/useRefWithInit.js";
4
+ import { FloatingTreeStore as R } from "../../floating-ui-react/components/FloatingTreeStore.js";
5
+ import { popupStoreSelectors as g, createInitialPopupStoreState as y } from "../../utils/popups/store.js";
6
+ import { ReactStore as m } from "../../../../utils/esm/store/ReactStore.js";
7
+ import { PopupTriggerMap as b } from "../../utils/popups/popupTriggerMap.js";
8
+ import { createSelector as t } from "../../../../utils/esm/store/createSelector.js";
9
+ const I = {
10
+ ...g,
11
+ disabled: t((e) => e.parent.type === "menubar" && e.parent.context.disabled || e.disabled),
12
+ modal: t((e) => (e.parent.type === void 0 || e.parent.type === "context-menu") && (e.modal ?? !0)),
13
+ allowMouseEnter: t((e) => e.allowMouseEnter),
14
+ stickIfOpen: t((e) => e.stickIfOpen),
15
+ parent: t((e) => e.parent),
16
+ rootId: t((e) => e.parent.type === "menu" ? e.parent.store.select("rootId") : e.parent.type !== void 0 ? e.parent.context.rootId : e.rootId),
17
+ activeIndex: t((e) => e.activeIndex),
18
+ isActive: t((e, r) => e.activeIndex === r),
19
+ hoverEnabled: t((e) => e.hoverEnabled),
20
+ instantType: t((e) => e.instantType),
21
+ lastOpenChangeReason: t((e) => e.openChangeReason),
22
+ floatingTreeRoot: t((e) => e.parent.type === "menu" ? e.parent.store.select("floatingTreeRoot") : e.floatingTreeRoot),
23
+ floatingNodeId: t((e) => e.floatingNodeId),
24
+ floatingParentNodeId: t((e) => e.floatingParentNodeId),
25
+ itemProps: t((e) => e.itemProps),
26
+ closeDelay: t((e) => e.closeDelay),
27
+ hasViewport: t((e) => e.hasViewport),
28
+ keyboardEventRelay: t((e) => {
29
+ if (e.keyboardEventRelay)
30
+ return e.keyboardEventRelay;
31
+ if (e.parent.type === "menu")
32
+ return e.parent.store.select("keyboardEventRelay");
33
+ })
34
+ };
35
+ class f extends m {
36
+ constructor(r) {
37
+ super({
38
+ ...T(),
39
+ ...r
40
+ }, {
41
+ positionerRef: /* @__PURE__ */ i.createRef(),
42
+ popupRef: /* @__PURE__ */ i.createRef(),
43
+ typingRef: {
44
+ current: !1
45
+ },
46
+ itemDomElements: {
47
+ current: []
48
+ },
49
+ itemLabels: {
50
+ current: []
51
+ },
52
+ allowMouseUpTriggerRef: {
53
+ current: !1
54
+ },
55
+ triggerFocusTargetRef: /* @__PURE__ */ i.createRef(),
56
+ beforeContentFocusGuardRef: /* @__PURE__ */ i.createRef(),
57
+ onOpenChangeComplete: void 0,
58
+ triggerElements: new b()
59
+ }, I), this.unsubscribeParentListener = this.observe("parent", (o) => {
60
+ if (this.unsubscribeParentListener?.(), o.type === "menu") {
61
+ let n = o.store.select("rootId"), a = o.store.select("floatingTreeRoot"), l = o.store.select("keyboardEventRelay");
62
+ this.unsubscribeParentListener = o.store.subscribe(() => {
63
+ const s = o.store.select("rootId"), u = o.store.select("floatingTreeRoot"), d = o.store.select("keyboardEventRelay");
64
+ n === s && a === u && l === d || (n = s, a = u, l = d, this.notifyAll());
65
+ }), this.context.allowMouseUpTriggerRef = o.store.context.allowMouseUpTriggerRef;
66
+ return;
67
+ }
68
+ o.type !== void 0 && (this.context.allowMouseUpTriggerRef = o.context.allowMouseUpTriggerRef), this.unsubscribeParentListener = null;
69
+ });
70
+ }
71
+ setOpen(r, o) {
72
+ this.state.floatingRootContext.context.events.emit("setOpen", {
73
+ open: r,
74
+ eventDetails: o
75
+ });
76
+ }
77
+ static useStore(r, o) {
78
+ const n = p(() => new f(o)).current;
79
+ return r ?? n;
80
+ }
81
+ unsubscribeParentListener = null;
82
+ }
83
+ function T() {
84
+ return {
85
+ ...y(),
86
+ disabled: !1,
87
+ modal: !0,
88
+ allowMouseEnter: !1,
89
+ stickIfOpen: !0,
90
+ parent: {
91
+ type: void 0
92
+ },
93
+ rootId: void 0,
94
+ activeIndex: null,
95
+ hoverEnabled: !0,
96
+ instantType: void 0,
97
+ openChangeReason: null,
98
+ floatingTreeRoot: new R(),
99
+ floatingNodeId: void 0,
100
+ floatingParentNodeId: null,
101
+ itemProps: c,
102
+ keyboardEventRelay: void 0,
103
+ closeDelay: 0,
104
+ hasViewport: !1
105
+ };
106
+ }
107
+ export {
108
+ f as MenuStore
109
+ };
@@ -0,0 +1,21 @@
1
+ import * as r from "react";
2
+ import { MenuRoot as u } from "../root/MenuRoot.js";
3
+ import { useMenuRootContext as m } from "../root/MenuRootContext.js";
4
+ import { MenuSubmenuRootContext as i } from "./MenuSubmenuRootContext.js";
5
+ import { useMenuSubmenuRootContext as a } from "./MenuSubmenuRootContext.js";
6
+ import { jsx as e } from "react/jsx-runtime";
7
+ function M(t) {
8
+ const o = m().store, n = r.useMemo(() => ({
9
+ parentMenu: o
10
+ }), [o]);
11
+ return /* @__PURE__ */ e(i.Provider, {
12
+ value: n,
13
+ children: /* @__PURE__ */ e(u, {
14
+ ...t
15
+ })
16
+ });
17
+ }
18
+ export {
19
+ M as MenuSubmenuRoot,
20
+ a as useMenuSubmenuRootContext
21
+ };
@@ -0,0 +1,10 @@
1
+ import * as e from "react";
2
+ const t = /* @__PURE__ */ e.createContext(void 0);
3
+ process.env.NODE_ENV !== "production" && (t.displayName = "MenuSubmenuRootContext");
4
+ function n() {
5
+ return e.useContext(t);
6
+ }
7
+ export {
8
+ t as MenuSubmenuRootContext,
9
+ n as useMenuSubmenuRootContext
10
+ };
@@ -0,0 +1,101 @@
1
+ import U from "../../../../utils/esm/formatErrorMessage.js";
2
+ import * as r from "react";
3
+ import { useMenuRootContext as _ } from "../root/MenuRootContext.js";
4
+ import { useBaseUiId as L } from "../../utils/useBaseUiId.js";
5
+ import { triggerOpenStateMapping as j } from "../../utils/popupStateMapping.js";
6
+ import { useCompositeListItem as q } from "../../composite/list/useCompositeListItem.js";
7
+ import { useMenuItem as z } from "../item/useMenuItem.js";
8
+ import { useRenderElement as F } from "../../utils/useRenderElement.js";
9
+ import { useMenuPositionerContext as G } from "../positioner/MenuPositionerContext.js";
10
+ import { useMenuSubmenuRootContext as J } from "../submenu-root/MenuSubmenuRootContext.js";
11
+ import { useTriggerRegistration as K } from "../../utils/popups/popupStoreUtils.js";
12
+ import { useHoverReferenceInteraction as Q } from "../../floating-ui-react/hooks/useHoverReferenceInteraction.js";
13
+ import { safePolygon as W } from "../../floating-ui-react/safePolygon.js";
14
+ import { useClick as X } from "../../floating-ui-react/hooks/useClick.js";
15
+ import { useInteractions as Y } from "../../floating-ui-react/hooks/useInteractions.js";
16
+ const Z = /* @__PURE__ */ r.forwardRef(function(c, v) {
17
+ const {
18
+ render: ee,
19
+ className: te,
20
+ label: oe,
21
+ id: M,
22
+ nativeButton: I = !1,
23
+ openOnHover: l = !0,
24
+ delay: m = 100,
25
+ closeDelay: n = 0,
26
+ disabled: S = !1,
27
+ ...T
28
+ } = c, s = q(), x = G(), {
29
+ store: e
30
+ } = _(), i = L(M), g = e.useState("open"), p = e.useState("floatingRootContext"), E = e.useState("floatingTreeRoot"), d = K(i, e), C = r.useCallback((o) => {
31
+ const H = d(o);
32
+ return o !== null && e.select("open") && e.select("activeTriggerId") == null && e.update({
33
+ activeTriggerId: i,
34
+ activeTriggerElement: o,
35
+ closeDelay: n
36
+ }), H;
37
+ }, [d, n, e, i]), f = r.useRef(null), P = r.useCallback((o) => {
38
+ f.current = o, e.set("activeTriggerElement", o);
39
+ }, [e]), b = J();
40
+ if (!b?.parentMenu)
41
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: <Menu.SubmenuTrigger> must be placed in <Menu.SubmenuRoot>." : U(37));
42
+ e.useSyncedValue("closeDelay", n);
43
+ const t = b.parentMenu, y = t.useState("itemProps"), a = t.useState("isActive", s.index), h = r.useMemo(() => ({
44
+ type: "submenu-trigger",
45
+ setActive() {
46
+ t.set("activeIndex", s.index);
47
+ }
48
+ }), [t, s.index]), k = e.useState("disabled"), u = S || k, {
49
+ getItemProps: O,
50
+ itemRef: w
51
+ } = z({
52
+ closeOnClick: !1,
53
+ disabled: u,
54
+ highlighted: a,
55
+ id: i,
56
+ store: e,
57
+ typingRef: t.context.typingRef,
58
+ nativeButton: I,
59
+ itemMetadata: h,
60
+ nodeId: x?.nodeId
61
+ }), N = e.useState("hoverEnabled"), D = t.useState("allowMouseEnter"), B = Q(p, {
62
+ enabled: N && l && !u,
63
+ handleClose: W({
64
+ blockPointerEvents: !0
65
+ }),
66
+ mouseOnly: !0,
67
+ move: !0,
68
+ restMs: m,
69
+ delay: D ? {
70
+ open: m,
71
+ close: n
72
+ } : 0,
73
+ triggerElementRef: f,
74
+ externalTree: E
75
+ }), A = X(p, {
76
+ enabled: !u,
77
+ event: "mousedown",
78
+ toggle: !l,
79
+ ignoreMouse: l,
80
+ stickIfOpen: !1
81
+ }), V = Y([A]), R = e.useState("triggerProps", !0);
82
+ return delete R.id, F("div", c, {
83
+ state: {
84
+ disabled: u,
85
+ highlighted: a,
86
+ open: g
87
+ },
88
+ stateAttributesMapping: j,
89
+ props: [V.getReferenceProps(), B, R, y, {
90
+ tabIndex: g || a ? 0 : -1,
91
+ onBlur() {
92
+ a && t.set("activeIndex", null);
93
+ }
94
+ }, T, O],
95
+ ref: [v, s.ref, w, C, P]
96
+ });
97
+ });
98
+ process.env.NODE_ENV !== "production" && (Z.displayName = "MenuSubmenuTrigger");
99
+ export {
100
+ Z as MenuSubmenuTrigger
101
+ };