@ledgerhq/lumen-ui-react 0.1.34 → 0.1.36

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 (103) hide show
  1. package/dist/index.js +187 -182
  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/Card/types.d.ts +1 -1
  10. package/dist/lib/Components/DescriptionItem/DescriptionItem.d.ts +45 -0
  11. package/dist/lib/Components/DescriptionItem/DescriptionItem.d.ts.map +1 -0
  12. package/dist/lib/Components/DescriptionItem/DescriptionItem.js +98 -0
  13. package/dist/lib/Components/DescriptionItem/index.d.ts +3 -0
  14. package/dist/lib/Components/DescriptionItem/index.d.ts.map +1 -0
  15. package/dist/lib/Components/DescriptionItem/types.d.ts +58 -0
  16. package/dist/lib/Components/DescriptionItem/types.d.ts.map +1 -0
  17. package/dist/lib/Components/DotIcon/DotIcon.d.ts +1 -1
  18. package/dist/lib/Components/DotIcon/DotIcon.d.ts.map +1 -1
  19. package/dist/lib/Components/DotIcon/DotIcon.js +48 -37
  20. package/dist/lib/Components/DotIcon/types.d.ts +6 -0
  21. package/dist/lib/Components/DotIcon/types.d.ts.map +1 -1
  22. package/dist/lib/Components/DotSymbol/DotSymbol.d.ts +1 -1
  23. package/dist/lib/Components/DotSymbol/DotSymbol.d.ts.map +1 -1
  24. package/dist/lib/Components/DotSymbol/DotSymbol.js +42 -31
  25. package/dist/lib/Components/DotSymbol/types.d.ts +6 -0
  26. package/dist/lib/Components/DotSymbol/types.d.ts.map +1 -1
  27. package/dist/lib/Components/MediaButton/MediaButton.d.ts +3 -3
  28. package/dist/lib/Components/MediaButton/MediaButton.d.ts.map +1 -1
  29. package/dist/lib/Components/MediaButton/MediaButton.js +42 -40
  30. package/dist/lib/Components/MediaButton/types.d.ts +5 -5
  31. package/dist/lib/Components/MediaButton/types.d.ts.map +1 -1
  32. package/dist/lib/Components/MediaImage/MediaImage.d.ts +1 -1
  33. package/dist/lib/Components/MediaImage/MediaImage.d.ts.map +1 -1
  34. package/dist/lib/Components/MediaImage/MediaImage.js +40 -29
  35. package/dist/lib/Components/MediaImage/types.d.ts +6 -0
  36. package/dist/lib/Components/MediaImage/types.d.ts.map +1 -1
  37. package/dist/lib/Components/Menu/Menu.d.ts +11 -16
  38. package/dist/lib/Components/Menu/Menu.d.ts.map +1 -1
  39. package/dist/lib/Components/Menu/Menu.js +186 -125
  40. package/dist/lib/Components/Menu/types.d.ts +50 -145
  41. package/dist/lib/Components/Menu/types.d.ts.map +1 -1
  42. package/dist/lib/Components/NavBar/CoinCapsule.d.ts +2 -2
  43. package/dist/lib/Components/NavBar/CoinCapsule.d.ts.map +1 -1
  44. package/dist/lib/Components/NavBar/CoinCapsule.js +4 -4
  45. package/dist/lib/Components/NavBar/NavBar.d.ts +4 -4
  46. package/dist/lib/Components/NavBar/NavBar.d.ts.map +1 -1
  47. package/dist/lib/Components/NavBar/NavBar.js +10 -2
  48. package/dist/lib/Components/NavBar/types.d.ts +2 -2
  49. package/dist/lib/Components/NavBar/types.d.ts.map +1 -1
  50. package/dist/lib/Components/Popover/Popover.d.ts +2 -2
  51. package/dist/lib/Components/Popover/types.d.ts +6 -3
  52. package/dist/lib/Components/Popover/types.d.ts.map +1 -1
  53. package/dist/lib/Components/index.d.ts +2 -1
  54. package/dist/lib/Components/index.d.ts.map +1 -1
  55. package/dist/node_modules/@base-ui/react/esm/composite/item/CompositeItem.js +30 -0
  56. package/dist/node_modules/@base-ui/react/esm/composite/item/useCompositeItem.js +34 -0
  57. package/dist/node_modules/@base-ui/react/esm/context-menu/root/ContextMenuRootContext.js +14 -0
  58. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/components/FloatingFocusManager.js +10 -10
  59. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useFocus.js +97 -0
  60. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverFloatingInteraction.js +10 -10
  61. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/hooks/useHoverReferenceInteraction.js +2 -2
  62. package/dist/node_modules/@base-ui/react/esm/floating-ui-react/utils/element.js +31 -20
  63. package/dist/node_modules/@base-ui/react/esm/menu/checkbox-item/MenuCheckboxItem.js +78 -0
  64. package/dist/node_modules/@base-ui/react/esm/menu/checkbox-item/MenuCheckboxItemContext.js +14 -0
  65. package/dist/node_modules/@base-ui/react/esm/menu/checkbox-item/MenuCheckboxItemDataAttributes.js +6 -0
  66. package/dist/node_modules/@base-ui/react/esm/menu/checkbox-item-indicator/MenuCheckboxItemIndicator.js +44 -0
  67. package/dist/node_modules/@base-ui/react/esm/menu/group/MenuGroup.js +28 -0
  68. package/dist/node_modules/@base-ui/react/esm/menu/group/MenuGroupContext.js +14 -0
  69. package/dist/node_modules/@base-ui/react/esm/menu/group-label/MenuGroupLabel.js +29 -0
  70. package/dist/node_modules/@base-ui/react/esm/menu/item/MenuItem.js +47 -0
  71. package/dist/node_modules/@base-ui/react/esm/menu/item/useMenuItem.js +50 -0
  72. package/dist/node_modules/@base-ui/react/esm/menu/item/useMenuItemCommonProps.js +49 -0
  73. package/dist/node_modules/@base-ui/react/esm/menu/popup/MenuPopup.js +89 -0
  74. package/dist/node_modules/@base-ui/react/esm/menu/portal/MenuPortal.js +24 -0
  75. package/dist/node_modules/@base-ui/react/esm/menu/portal/MenuPortalContext.js +14 -0
  76. package/dist/node_modules/@base-ui/react/esm/menu/positioner/MenuPositioner.js +174 -0
  77. package/dist/node_modules/@base-ui/react/esm/menu/positioner/MenuPositionerContext.js +14 -0
  78. package/dist/node_modules/@base-ui/react/esm/menu/radio-group/MenuRadioGroup.js +45 -0
  79. package/dist/node_modules/@base-ui/react/esm/menu/radio-group/MenuRadioGroupContext.js +14 -0
  80. package/dist/node_modules/@base-ui/react/esm/menu/radio-item/MenuRadioItem.js +75 -0
  81. package/dist/node_modules/@base-ui/react/esm/menu/radio-item/MenuRadioItemContext.js +14 -0
  82. package/dist/node_modules/@base-ui/react/esm/menu/radio-item-indicator/MenuRadioItemIndicator.js +44 -0
  83. package/dist/node_modules/@base-ui/react/esm/menu/root/MenuRoot.js +271 -0
  84. package/dist/node_modules/@base-ui/react/esm/menu/root/MenuRootContext.js +14 -0
  85. package/dist/node_modules/@base-ui/react/esm/menu/store/MenuStore.js +109 -0
  86. package/dist/node_modules/@base-ui/react/esm/menu/submenu-root/MenuSubmenuRoot.js +21 -0
  87. package/dist/node_modules/@base-ui/react/esm/menu/submenu-root/MenuSubmenuRootContext.js +10 -0
  88. package/dist/node_modules/@base-ui/react/esm/menu/submenu-trigger/MenuSubmenuTrigger.js +101 -0
  89. package/dist/node_modules/@base-ui/react/esm/menu/trigger/MenuTrigger.js +207 -0
  90. package/dist/node_modules/@base-ui/react/esm/menu/utils/findRootOwnerId.js +10 -0
  91. package/dist/node_modules/@base-ui/react/esm/menu/utils/stateAttributesMapping.js +15 -0
  92. package/dist/node_modules/@base-ui/react/esm/menubar/MenubarContext.js +10 -0
  93. package/dist/node_modules/@base-ui/react/esm/popover/root/PopoverRoot.js +11 -11
  94. package/dist/node_modules/@base-ui/react/esm/popover/store/PopoverStore.js +7 -7
  95. package/dist/node_modules/@base-ui/react/esm/popover/trigger/PopoverTrigger.js +11 -11
  96. package/dist/node_modules/@base-ui/react/esm/utils/constants.js +11 -10
  97. package/dist/node_modules/@base-ui/react/esm/utils/reason-parts.js +11 -8
  98. package/dist/node_modules/@base-ui/react/esm/utils/useMixedToggleClickHandler.js +25 -0
  99. package/dist/node_modules/@base-ui/utils/esm/detectBrowser.js +7 -8
  100. package/dist/node_modules/@base-ui/utils/esm/fastHooks.js +43 -0
  101. package/dist/node_modules/@base-ui/utils/esm/store/useStore.js +54 -13
  102. package/dist/package.json +2 -3
  103. package/package.json +4 -5
@@ -0,0 +1,49 @@
1
+ import * as p from "react";
2
+ import { isMac as C } from "../../../../utils/esm/detectBrowser.js";
3
+ import { useContextMenuRootContext as d } from "../../context-menu/root/ContextMenuRootContext.js";
4
+ import { itemPress as g } from "../../utils/reason-parts.js";
5
+ function b(M) {
6
+ const {
7
+ closeOnClick: m,
8
+ highlighted: a,
9
+ id: f,
10
+ nodeId: n,
11
+ store: r,
12
+ typingRef: l,
13
+ itemRef: i,
14
+ itemMetadata: u
15
+ } = M, {
16
+ events: s
17
+ } = r.useState("floatingTreeRoot"), e = d(!0), o = e !== void 0;
18
+ return p.useMemo(() => ({
19
+ id: f,
20
+ role: "menuitem",
21
+ tabIndex: a ? 0 : -1,
22
+ onKeyDown(t) {
23
+ t.key === " " && l?.current && t.preventDefault();
24
+ },
25
+ onMouseMove(t) {
26
+ n && s.emit("itemhover", {
27
+ nodeId: n,
28
+ target: t.currentTarget
29
+ });
30
+ },
31
+ onClick(t) {
32
+ m && s.emit("close", {
33
+ domEvent: t,
34
+ reason: g
35
+ });
36
+ },
37
+ onMouseUp(t) {
38
+ if (e) {
39
+ const c = e.initialCursorPointRef.current;
40
+ if (e.initialCursorPointRef.current = null, o && c && Math.abs(t.clientX - c.x) <= 1 && Math.abs(t.clientY - c.y) <= 1 || o && !C && t.button === 2)
41
+ return;
42
+ }
43
+ i.current && r.context.allowMouseUpTriggerRef.current && (!o || t.button === 2) && (!u || u.type === "regular-item") && i.current.click();
44
+ }
45
+ }), [m, a, f, s, n, r, l, i, e, o, u]);
46
+ }
47
+ export {
48
+ b as useMenuItemCommonProps
49
+ };
@@ -0,0 +1,89 @@
1
+ import * as a from "react";
2
+ import { useMenuRootContext as I } from "../root/MenuRootContext.js";
3
+ import { useMenuPositionerContext as N } from "../positioner/MenuPositionerContext.js";
4
+ import { useRenderElement as w } from "../../utils/useRenderElement.js";
5
+ import { popupStateMapping as k } from "../../utils/popupStateMapping.js";
6
+ import { transitionStatusMapping as G } from "../../utils/stateAttributesMapping.js";
7
+ import { useOpenChangeComplete as K } from "../../utils/useOpenChangeComplete.js";
8
+ import { createChangeEventDetails as _ } from "../../utils/createBaseUIEventDetails.js";
9
+ import { useToolbarRootContext as j } from "../../toolbar/root/ToolbarRootContext.js";
10
+ import { COMPOSITE_KEYS as A } from "../../composite/composite.js";
11
+ import { getDisabledMountTransitionStyles as H } from "../../utils/getDisabledMountTransitionStyles.js";
12
+ import { jsx as V } from "react/jsx-runtime";
13
+ import { useHoverFloatingInteraction as Y } from "../../floating-ui-react/hooks/useHoverFloatingInteraction.js";
14
+ import { FloatingFocusManager as q } from "../../floating-ui-react/components/FloatingFocusManager.js";
15
+ import { outsidePress as z } from "../../utils/reason-parts.js";
16
+ const B = {
17
+ ...k,
18
+ ...G
19
+ }, J = /* @__PURE__ */ a.forwardRef(function(u, f) {
20
+ const {
21
+ render: Q,
22
+ className: U,
23
+ finalFocus: i,
24
+ ...d
25
+ } = u, {
26
+ store: e
27
+ } = I(), {
28
+ side: g,
29
+ align: S
30
+ } = N(), C = j() != null, s = e.useState("open"), p = e.useState("transitionStatus"), b = e.useState("popupProps"), E = e.useState("mounted"), x = e.useState("instantType"), y = e.useState("activeTriggerElement"), t = e.useState("parent"), R = e.useState("lastOpenChangeReason"), F = e.useState("rootId"), c = e.useState("floatingRootContext"), n = e.useState("floatingTreeRoot"), T = e.useState("closeDelay"), v = e.useState("activeTriggerElement"), r = t.type === "context-menu";
31
+ K({
32
+ open: s,
33
+ ref: e.context.popupRef,
34
+ onComplete() {
35
+ s && e.context.onOpenChangeComplete?.(!0);
36
+ }
37
+ }), a.useEffect(() => {
38
+ function o(m) {
39
+ e.setOpen(!1, _(m.reason, m.domEvent));
40
+ }
41
+ return n.events.on("close", o), () => {
42
+ n.events.off("close", o);
43
+ };
44
+ }, [n.events, e]);
45
+ const M = e.useState("hoverEnabled"), h = e.useState("disabled");
46
+ Y(c, {
47
+ enabled: M && !h && !r && t.type !== "menubar",
48
+ closeDelay: T
49
+ });
50
+ const P = {
51
+ transitionStatus: p,
52
+ side: g,
53
+ align: S,
54
+ open: s,
55
+ nested: t.type === "menu",
56
+ instant: x
57
+ }, O = a.useCallback((o) => {
58
+ e.set("popupElement", o);
59
+ }, [e]), D = w("div", u, {
60
+ state: P,
61
+ ref: [f, e.context.popupRef, O],
62
+ stateAttributesMapping: B,
63
+ props: [b, {
64
+ onKeyDown(o) {
65
+ C && A.has(o.key) && o.stopPropagation();
66
+ }
67
+ }, H(p), d, {
68
+ "data-rootownerid": F
69
+ }]
70
+ });
71
+ let l = t.type === void 0 || r;
72
+ return (y || t.type === "menubar" && R !== z) && (l = !0), /* @__PURE__ */ V(q, {
73
+ context: c,
74
+ modal: r,
75
+ disabled: !E,
76
+ returnFocus: i === void 0 ? l : i,
77
+ initialFocus: t.type !== "menu",
78
+ restoreFocus: !0,
79
+ externalTree: t.type !== "menubar" ? n : void 0,
80
+ previousFocusableElement: v,
81
+ nextFocusableElement: t.type === void 0 ? e.context.triggerFocusTargetRef : void 0,
82
+ beforeContentFocusGuardRef: t.type === void 0 ? e.context.beforeContentFocusGuardRef : void 0,
83
+ children: D
84
+ });
85
+ });
86
+ process.env.NODE_ENV !== "production" && (J.displayName = "MenuPopup");
87
+ export {
88
+ J as MenuPopup
89
+ };
@@ -0,0 +1,24 @@
1
+ import * as s from "react";
2
+ import { useMenuRootContext as a } from "../root/MenuRootContext.js";
3
+ import { MenuPortalContext as l } from "./MenuPortalContext.js";
4
+ import { jsx as t } from "react/jsx-runtime";
5
+ import { FloatingPortal as m } from "../../floating-ui-react/components/FloatingPortal.js";
6
+ const d = /* @__PURE__ */ s.forwardRef(function(e, r) {
7
+ const {
8
+ keepMounted: o = !1,
9
+ ...n
10
+ } = e, {
11
+ store: u
12
+ } = a();
13
+ return u.useState("mounted") || o ? /* @__PURE__ */ t(l.Provider, {
14
+ value: o,
15
+ children: /* @__PURE__ */ t(m, {
16
+ ref: r,
17
+ ...n
18
+ })
19
+ }) : null;
20
+ });
21
+ process.env.NODE_ENV !== "production" && (d.displayName = "MenuPortal");
22
+ export {
23
+ d as MenuPortal
24
+ };
@@ -0,0 +1,14 @@
1
+ import n 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 = "MenuPortalContext");
5
+ function s() {
6
+ const e = o.useContext(t);
7
+ if (e === void 0)
8
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: <Menu.Portal> is missing." : n(32));
9
+ return e;
10
+ }
11
+ export {
12
+ t as MenuPortalContext,
13
+ s as useMenuPortalContext
14
+ };
@@ -0,0 +1,174 @@
1
+ import * as a from "react";
2
+ import { inertValue as re } from "../../../../utils/esm/inertValue.js";
3
+ import { useIsoLayoutEffect as se } from "../../../../utils/esm/useIsoLayoutEffect.js";
4
+ import { useTimeout as ie } from "../../../../utils/esm/useTimeout.js";
5
+ import { MenuPositionerContext as ae } from "./MenuPositionerContext.js";
6
+ import { useMenuRootContext as le } from "../root/MenuRootContext.js";
7
+ import { useAnchorPositioning as ce } from "../../utils/useAnchorPositioning.js";
8
+ import { useRenderElement as de } from "../../utils/useRenderElement.js";
9
+ import { popupStateMapping as fe } from "../../utils/popupStateMapping.js";
10
+ import { CompositeList as ue } from "../../composite/list/CompositeList.js";
11
+ import { InternalBackdrop as pe } from "../../utils/InternalBackdrop.js";
12
+ import { useMenuPortalContext as me } from "../portal/MenuPortalContext.js";
13
+ import { DROPDOWN_COLLISION_AVOIDANCE as ge, POPUP_COLLISION_AVOIDANCE as he } from "../../utils/constants.js";
14
+ import { getDisabledMountTransitionStyles as Se } from "../../utils/getDisabledMountTransitionStyles.js";
15
+ import { useContextMenuRootContext as ve } from "../../context-menu/root/ContextMenuRootContext.js";
16
+ import { createChangeEventDetails as v } from "../../utils/createBaseUIEventDetails.js";
17
+ import { adaptiveOrigin as ye } from "../../utils/adaptiveOriginMiddleware.js";
18
+ import { useAnimationsFinished as Oe } from "../../utils/useAnimationsFinished.js";
19
+ import { jsxs as xe, jsx as x } from "react/jsx-runtime";
20
+ import { FloatingNode as Ie } from "../../floating-ui-react/components/FloatingTree.js";
21
+ import { triggerHover as Pe, siblingOpen as y } from "../../utils/reason-parts.js";
22
+ const Re = /* @__PURE__ */ a.forwardRef(function(f, D) {
23
+ const {
24
+ anchor: I,
25
+ positionMethod: k = "absolute",
26
+ className: Ee,
27
+ render: Ne,
28
+ side: P,
29
+ align: L,
30
+ sideOffset: V = 0,
31
+ alignOffset: _ = 0,
32
+ collisionBoundary: B = "clipping-ancestors",
33
+ collisionPadding: H = 5,
34
+ arrowPadding: U = 5,
35
+ sticky: F = !1,
36
+ disableAnchorTracking: j = !1,
37
+ collisionAvoidance: W = ge,
38
+ ...q
39
+ } = f, {
40
+ store: e
41
+ } = le(), z = me(), G = ve(!0), o = e.useState("parent"), R = e.useState("floatingRootContext"), s = e.useState("floatingTreeRoot"), m = e.useState("mounted"), i = e.useState("open"), J = e.useState("modal"), g = e.useState("activeTriggerElement"), K = e.useState("transitionStatus"), Q = e.useState("positionerElement"), X = e.useState("instantType"), Y = e.useState("hasViewport"), Z = e.useState("lastOpenChangeReason"), l = e.useState("floatingNodeId"), C = e.useState("floatingParentNodeId"), E = R.useState("domReferenceElement"), N = a.useRef(null), M = Oe(Q, !1, !1);
42
+ let b = I, A = V, w = _, h = L, S = W;
43
+ o.type === "context-menu" && (b = I ?? o.context?.anchor, h = h ?? "start", !P && h !== "center" && (w = f.alignOffset ?? 2, A = f.sideOffset ?? -5));
44
+ let u = P, p = h;
45
+ o.type === "menu" ? (u = u ?? "inline-end", p = p ?? "start", S = f.collisionAvoidance ?? he) : o.type === "menubar" && (u = u ?? "bottom", p = p ?? "start");
46
+ const T = o.type === "context-menu", n = ce({
47
+ anchor: b,
48
+ floatingRootContext: R,
49
+ positionMethod: G ? "fixed" : k,
50
+ mounted: m,
51
+ side: u,
52
+ sideOffset: A,
53
+ align: p,
54
+ alignOffset: w,
55
+ arrowPadding: T ? 0 : U,
56
+ collisionBoundary: B,
57
+ collisionPadding: H,
58
+ sticky: F,
59
+ nodeId: l,
60
+ keepMounted: z,
61
+ disableAnchorTracking: j,
62
+ collisionAvoidance: S,
63
+ shiftCrossAxis: T && !("side" in S && S.side === "flip"),
64
+ externalTree: s,
65
+ adaptiveOrigin: Y ? ye : void 0
66
+ }), $ = a.useMemo(() => {
67
+ const t = {};
68
+ return i || (t.pointerEvents = "none"), {
69
+ role: "presentation",
70
+ hidden: !m,
71
+ style: {
72
+ ...n.positionerStyles,
73
+ ...t
74
+ }
75
+ };
76
+ }, [i, m, n.positionerStyles]);
77
+ a.useEffect(() => {
78
+ function t(r) {
79
+ r.open && (r.parentNodeId === l && e.set("hoverEnabled", !1), r.nodeId !== l && r.parentNodeId === e.select("floatingParentNodeId") && e.setOpen(!1, v(y)));
80
+ }
81
+ return s.events.on("menuopenchange", t), () => {
82
+ s.events.off("menuopenchange", t);
83
+ };
84
+ }, [e, s.events, l]), a.useEffect(() => {
85
+ if (e.select("floatingParentNodeId") == null)
86
+ return;
87
+ function t(r) {
88
+ if (r.open || r.nodeId !== e.select("floatingParentNodeId"))
89
+ return;
90
+ const c = r.reason ?? y;
91
+ e.setOpen(!1, v(c));
92
+ }
93
+ return s.events.on("menuopenchange", t), () => {
94
+ s.events.off("menuopenchange", t);
95
+ };
96
+ }, [s.events, e]);
97
+ const d = ie();
98
+ a.useEffect(() => {
99
+ i || d.clear();
100
+ }, [i, d]), a.useEffect(() => {
101
+ function t(r) {
102
+ if (!(!i || r.nodeId !== e.select("floatingParentNodeId")))
103
+ if (r.target && g && g !== r.target) {
104
+ const c = e.select("closeDelay");
105
+ c > 0 ? d.isStarted() || d.start(c, () => {
106
+ e.setOpen(!1, v(y));
107
+ }) : e.setOpen(!1, v(y));
108
+ } else
109
+ d.clear();
110
+ }
111
+ return s.events.on("itemhover", t), () => {
112
+ s.events.off("itemhover", t);
113
+ };
114
+ }, [s.events, i, g, e, d]), a.useEffect(() => {
115
+ const t = {
116
+ open: i,
117
+ nodeId: l,
118
+ parentNodeId: C,
119
+ reason: e.select("lastOpenChangeReason")
120
+ };
121
+ s.events.emit("menuopenchange", t);
122
+ }, [s.events, i, e, l, C]), se(() => {
123
+ const t = E, r = N.current;
124
+ if (t && (N.current = t), r && t && t !== r) {
125
+ e.set("instantType", void 0);
126
+ const c = new AbortController();
127
+ return M(() => {
128
+ e.set("instantType", "trigger-change");
129
+ }, c.signal), () => {
130
+ c.abort();
131
+ };
132
+ }
133
+ }, [E, M, e]);
134
+ const ee = {
135
+ open: i,
136
+ side: n.side,
137
+ align: n.align,
138
+ anchorHidden: n.anchorHidden,
139
+ nested: o.type === "menu",
140
+ instant: X
141
+ }, te = a.useMemo(() => ({
142
+ side: n.side,
143
+ align: n.align,
144
+ arrowRef: n.arrowRef,
145
+ arrowUncentered: n.arrowUncentered,
146
+ arrowStyles: n.arrowStyles,
147
+ nodeId: n.context.nodeId
148
+ }), [n.side, n.align, n.arrowRef, n.arrowUncentered, n.arrowStyles, n.context.nodeId]), ne = de("div", f, {
149
+ state: ee,
150
+ stateAttributesMapping: fe,
151
+ ref: [D, e.useStateSetter("positionerElement")],
152
+ props: [$, Se(K), q]
153
+ }), oe = m && o.type !== "menu" && (o.type !== "menubar" && J && Z !== Pe || o.type === "menubar" && o.context.modal);
154
+ let O = null;
155
+ return o.type === "menubar" ? O = o.context.contentElement : o.type === void 0 && (O = g), /* @__PURE__ */ xe(ae.Provider, {
156
+ value: te,
157
+ children: [oe && /* @__PURE__ */ x(pe, {
158
+ ref: o.type === "context-menu" || o.type === "nested-context-menu" ? o.context.internalBackdropRef : null,
159
+ inert: re(!i),
160
+ cutout: O
161
+ }), /* @__PURE__ */ x(Ie, {
162
+ id: l,
163
+ children: /* @__PURE__ */ x(ue, {
164
+ elementsRef: e.context.itemDomElements,
165
+ labelsRef: e.context.itemLabels,
166
+ children: ne
167
+ })
168
+ })]
169
+ });
170
+ });
171
+ process.env.NODE_ENV !== "production" && (Re.displayName = "MenuPositioner");
172
+ export {
173
+ Re as MenuPositioner
174
+ };
@@ -0,0 +1,14 @@
1
+ import i 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 = "MenuPositionerContext");
5
+ function s(n) {
6
+ const e = o.useContext(t);
7
+ if (e === void 0 && !n)
8
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: MenuPositionerContext is missing. MenuPositioner parts must be placed within <Menu.Positioner>." : i(33));
9
+ return e;
10
+ }
11
+ export {
12
+ t as MenuPositionerContext,
13
+ s as useMenuPositionerContext
14
+ };
@@ -0,0 +1,45 @@
1
+ import * as o from "react";
2
+ import { useControlled as v } from "../../../../utils/esm/useControlled.js";
3
+ import { useStableCallback as l } from "../../../../utils/esm/useStableCallback.js";
4
+ import { MenuRadioGroupContext as M } from "./MenuRadioGroupContext.js";
5
+ import { useRenderElement as V } from "../../utils/useRenderElement.js";
6
+ import { jsx as G } from "react/jsx-runtime";
7
+ const b = /* @__PURE__ */ o.memo(/* @__PURE__ */ o.forwardRef(function(r, s) {
8
+ const {
9
+ render: h,
10
+ className: x,
11
+ value: d,
12
+ defaultValue: i,
13
+ onValueChange: p,
14
+ disabled: e = !1,
15
+ ...m
16
+ } = r, [a, c] = v({
17
+ controlled: d,
18
+ default: i,
19
+ name: "MenuRadioGroup"
20
+ }), f = l(p), n = l((t, u) => {
21
+ f?.(t, u), !u.isCanceled && c(t);
22
+ }), R = V("div", r, {
23
+ state: {
24
+ disabled: e
25
+ },
26
+ ref: s,
27
+ props: {
28
+ role: "group",
29
+ "aria-disabled": e || void 0,
30
+ ...m
31
+ }
32
+ }), C = o.useMemo(() => ({
33
+ value: a,
34
+ setValue: n,
35
+ disabled: e
36
+ }), [a, n, e]);
37
+ return /* @__PURE__ */ G(M.Provider, {
38
+ value: C,
39
+ children: R
40
+ });
41
+ }));
42
+ process.env.NODE_ENV !== "production" && (b.displayName = "MenuRadioGroup");
43
+ export {
44
+ b as MenuRadioGroup
45
+ };
@@ -0,0 +1,14 @@
1
+ import n from "../../../../utils/esm/formatErrorMessage.js";
2
+ import * as e from "react";
3
+ const t = /* @__PURE__ */ e.createContext(void 0);
4
+ process.env.NODE_ENV !== "production" && (t.displayName = "MenuRadioGroupContext");
5
+ function i() {
6
+ const o = e.useContext(t);
7
+ if (o === void 0)
8
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: MenuRadioGroupContext is missing. MenuRadioGroup parts must be placed within <Menu.RadioGroup>." : n(34));
9
+ return o;
10
+ }
11
+ export {
12
+ t as MenuRadioGroupContext,
13
+ i as useMenuRadioGroupContext
14
+ };
@@ -0,0 +1,75 @@
1
+ import * as a from "react";
2
+ import { useStableCallback as S } from "../../../../utils/esm/useStableCallback.js";
3
+ import { useMenuRootContext as V } from "../root/MenuRootContext.js";
4
+ import { useRenderElement as A } from "../../utils/useRenderElement.js";
5
+ import { useBaseUiId as D } from "../../utils/useBaseUiId.js";
6
+ import { useMenuRadioGroupContext as O } from "../radio-group/MenuRadioGroupContext.js";
7
+ import { MenuRadioItemContext as U } from "./MenuRadioItemContext.js";
8
+ import { itemMapping as B } from "../utils/stateAttributesMapping.js";
9
+ import { useCompositeListItem as G } from "../../composite/list/useCompositeListItem.js";
10
+ import { useMenuItem as L, REGULAR_ITEM as _ } from "../item/useMenuItem.js";
11
+ import { useMenuPositionerContext as j } from "../positioner/MenuPositionerContext.js";
12
+ import { createChangeEventDetails as w } from "../../utils/createBaseUIEventDetails.js";
13
+ import { jsx as y } from "react/jsx-runtime";
14
+ import { itemPress as T } from "../../utils/reason-parts.js";
15
+ const q = /* @__PURE__ */ a.forwardRef(function(s, d) {
16
+ const {
17
+ render: F,
18
+ className: H,
19
+ id: l,
20
+ label: u,
21
+ nativeButton: c = !1,
22
+ disabled: p = !1,
23
+ closeOnClick: f = !1,
24
+ value: r,
25
+ ...M
26
+ } = s, n = G({
27
+ label: u
28
+ }), v = j(!0), C = D(l), {
29
+ store: e
30
+ } = V(), t = e.useState("isActive", n.index), I = e.useState("itemProps"), {
31
+ value: R,
32
+ setValue: b,
33
+ disabled: P
34
+ } = O(), o = P || p, i = R === r, {
35
+ getItemProps: h,
36
+ itemRef: x
37
+ } = L({
38
+ closeOnClick: f,
39
+ disabled: o,
40
+ highlighted: t,
41
+ id: C,
42
+ store: e,
43
+ nativeButton: c,
44
+ nodeId: v?.nodeId,
45
+ itemMetadata: _
46
+ }), m = a.useMemo(() => ({
47
+ disabled: o,
48
+ highlighted: t,
49
+ checked: i
50
+ }), [o, t, i]), g = S((k) => {
51
+ const N = {
52
+ ...w(T, k.nativeEvent),
53
+ preventUnmountOnClose: () => {
54
+ }
55
+ };
56
+ b(r, N);
57
+ }), E = A("div", s, {
58
+ state: m,
59
+ stateAttributesMapping: B,
60
+ props: [I, {
61
+ role: "menuitemradio",
62
+ "aria-checked": i,
63
+ onClick: g
64
+ }, M, h],
65
+ ref: [x, d, n.ref]
66
+ });
67
+ return /* @__PURE__ */ y(U.Provider, {
68
+ value: m,
69
+ children: E
70
+ });
71
+ });
72
+ process.env.NODE_ENV !== "production" && (q.displayName = "MenuRadioItem");
73
+ export {
74
+ q as MenuRadioItem
75
+ };
@@ -0,0 +1,14 @@
1
+ import n from "../../../../utils/esm/formatErrorMessage.js";
2
+ import * as t from "react";
3
+ const o = /* @__PURE__ */ t.createContext(void 0);
4
+ process.env.NODE_ENV !== "production" && (o.displayName = "MenuRadioItemContext");
5
+ function r() {
6
+ const e = t.useContext(o);
7
+ if (e === void 0)
8
+ throw new Error(process.env.NODE_ENV !== "production" ? "Base UI: MenuRadioItemContext is missing. MenuRadioItem parts must be placed within <Menu.RadioItem>." : n(35));
9
+ return e;
10
+ }
11
+ export {
12
+ o as MenuRadioItemContext,
13
+ r as useMenuRadioItemContext
14
+ };
@@ -0,0 +1,44 @@
1
+ import * as o from "react";
2
+ import { useMenuRadioItemContext as m } from "../radio-item/MenuRadioItemContext.js";
3
+ import { useRenderElement as p } from "../../utils/useRenderElement.js";
4
+ import { itemMapping as u } from "../utils/stateAttributesMapping.js";
5
+ import { useTransitionStatus as f } from "../../utils/useTransitionStatus.js";
6
+ import { useOpenChangeComplete as l } from "../../utils/useOpenChangeComplete.js";
7
+ const h = /* @__PURE__ */ o.forwardRef(function(t, i) {
8
+ const {
9
+ render: M,
10
+ className: g,
11
+ keepMounted: r = !1,
12
+ ...a
13
+ } = t, e = m(), n = o.useRef(null), {
14
+ transitionStatus: s,
15
+ setMounted: d
16
+ } = f(e.checked);
17
+ l({
18
+ open: e.checked,
19
+ ref: n,
20
+ onComplete() {
21
+ e.checked || d(!1);
22
+ }
23
+ });
24
+ const c = {
25
+ checked: e.checked,
26
+ disabled: e.disabled,
27
+ highlighted: e.highlighted,
28
+ transitionStatus: s
29
+ };
30
+ return p("span", t, {
31
+ state: c,
32
+ stateAttributesMapping: u,
33
+ ref: [i, n],
34
+ props: {
35
+ "aria-hidden": !0,
36
+ ...a
37
+ },
38
+ enabled: r || e.checked
39
+ });
40
+ });
41
+ process.env.NODE_ENV !== "production" && (h.displayName = "MenuRadioItemIndicator");
42
+ export {
43
+ h as MenuRadioItemIndicator
44
+ };