@mortenbrudvik/waveui 0.11.0 → 0.12.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 (116) hide show
  1. package/README.md +97 -2
  2. package/dist/components/button/Link.cjs +1 -1
  3. package/dist/components/button/Link.cjs.map +1 -1
  4. package/dist/components/button/Link.mjs +4 -4
  5. package/dist/components/data-display/AvatarGroup.cjs +1 -1
  6. package/dist/components/data-display/AvatarGroup.cjs.map +1 -1
  7. package/dist/components/data-display/AvatarGroup.mjs +10 -10
  8. package/dist/components/data-display/InfoButton.cjs +1 -1
  9. package/dist/components/data-display/InfoButton.cjs.map +1 -1
  10. package/dist/components/data-display/InfoButton.mjs +12 -12
  11. package/dist/components/feedback/Toaster.cjs +1 -1
  12. package/dist/components/feedback/Toaster.cjs.map +1 -1
  13. package/dist/components/feedback/Toaster.mjs +235 -235
  14. package/dist/components/feedback/Toaster.mjs.map +1 -1
  15. package/dist/components/input/Combobox.cjs +1 -1
  16. package/dist/components/input/Combobox.cjs.map +1 -1
  17. package/dist/components/input/Combobox.mjs +176 -175
  18. package/dist/components/input/Combobox.mjs.map +1 -1
  19. package/dist/components/input/DatePicker.cjs +1 -1
  20. package/dist/components/input/DatePicker.cjs.map +1 -1
  21. package/dist/components/input/DatePicker.mjs +188 -187
  22. package/dist/components/input/DatePicker.mjs.map +1 -1
  23. package/dist/components/input/Dropdown.cjs +1 -1
  24. package/dist/components/input/Dropdown.cjs.map +1 -1
  25. package/dist/components/input/Dropdown.mjs +41 -40
  26. package/dist/components/input/Dropdown.mjs.map +1 -1
  27. package/dist/components/input/Option.cjs +1 -1
  28. package/dist/components/input/Option.cjs.map +1 -1
  29. package/dist/components/input/Option.mjs +89 -87
  30. package/dist/components/input/Option.mjs.map +1 -1
  31. package/dist/components/input/TagPicker.root.cjs +1 -1
  32. package/dist/components/input/TagPicker.root.cjs.map +1 -1
  33. package/dist/components/input/TagPicker.root.mjs +136 -135
  34. package/dist/components/input/TagPicker.root.mjs.map +1 -1
  35. package/dist/components/input/TimePicker.cjs +1 -1
  36. package/dist/components/input/TimePicker.cjs.map +1 -1
  37. package/dist/components/input/TimePicker.mjs +156 -154
  38. package/dist/components/input/TimePicker.mjs.map +1 -1
  39. package/dist/components/navigation/Menu.popover.cjs +1 -1
  40. package/dist/components/navigation/Menu.popover.cjs.map +1 -1
  41. package/dist/components/navigation/Menu.popover.mjs +137 -127
  42. package/dist/components/navigation/Menu.popover.mjs.map +1 -1
  43. package/dist/components/navigation/Menu.root.cjs +1 -1
  44. package/dist/components/navigation/Menu.root.cjs.map +1 -1
  45. package/dist/components/navigation/Menu.root.mjs +4 -4
  46. package/dist/components/overlays/Dialog.cjs +1 -1
  47. package/dist/components/overlays/Dialog.cjs.map +1 -1
  48. package/dist/components/overlays/Dialog.mjs +123 -123
  49. package/dist/components/overlays/Dialog.mjs.map +1 -1
  50. package/dist/components/overlays/Drawer.panel.cjs +1 -1
  51. package/dist/components/overlays/Drawer.panel.cjs.map +1 -1
  52. package/dist/components/overlays/Drawer.panel.mjs +12 -12
  53. package/dist/components/overlays/Drawer.panel.mjs.map +1 -1
  54. package/dist/components/overlays/Popover.cjs +1 -1
  55. package/dist/components/overlays/Popover.cjs.map +1 -1
  56. package/dist/components/overlays/Popover.mjs +173 -162
  57. package/dist/components/overlays/Popover.mjs.map +1 -1
  58. package/dist/components/overlays/TeachingPopover.cjs +1 -1
  59. package/dist/components/overlays/TeachingPopover.cjs.map +1 -1
  60. package/dist/components/overlays/TeachingPopover.mjs +96 -91
  61. package/dist/components/overlays/TeachingPopover.mjs.map +1 -1
  62. package/dist/components/overlays/Tooltip.cjs +1 -1
  63. package/dist/components/overlays/Tooltip.cjs.map +1 -1
  64. package/dist/components/overlays/Tooltip.mjs +47 -47
  65. package/dist/components/overlays/Tooltip.mjs.map +1 -1
  66. package/dist/components/portal/Portal.cjs +1 -1
  67. package/dist/components/portal/Portal.cjs.map +1 -1
  68. package/dist/components/portal/Portal.mjs +5 -5
  69. package/dist/components/table/DataGrid.cjs +1 -1
  70. package/dist/components/table/DataGrid.cjs.map +1 -1
  71. package/dist/components/table/DataGrid.mjs +1 -1
  72. package/dist/hooks/useDismiss.cjs.map +1 -1
  73. package/dist/hooks/useDismiss.mjs.map +1 -1
  74. package/dist/hooks/useFocusTrap.cjs.map +1 -1
  75. package/dist/hooks/useFocusTrap.mjs.map +1 -1
  76. package/dist/hooks/useFocusVisible.cjs +2 -0
  77. package/dist/hooks/useFocusVisible.cjs.map +1 -0
  78. package/dist/hooks/useFocusVisible.mjs +49 -0
  79. package/dist/hooks/useFocusVisible.mjs.map +1 -0
  80. package/dist/hooks/useFocusableGroup.cjs +2 -0
  81. package/dist/hooks/useFocusableGroup.cjs.map +1 -0
  82. package/dist/hooks/useFocusableGroup.mjs +70 -0
  83. package/dist/hooks/useFocusableGroup.mjs.map +1 -0
  84. package/dist/hooks/useModalLayer.cjs +1 -1
  85. package/dist/hooks/useModalLayer.cjs.map +1 -1
  86. package/dist/hooks/useModalLayer.mjs +4 -4
  87. package/dist/hooks/useModalOpen.cjs +2 -0
  88. package/dist/hooks/useModalOpen.cjs.map +1 -0
  89. package/dist/hooks/useModalOpen.mjs +14 -0
  90. package/dist/hooks/useModalOpen.mjs.map +1 -0
  91. package/dist/hooks/usePopupPosition.cjs +1 -1
  92. package/dist/hooks/usePopupPosition.cjs.map +1 -1
  93. package/dist/hooks/usePopupPosition.mjs +82 -53
  94. package/dist/hooks/usePopupPosition.mjs.map +1 -1
  95. package/dist/hooks/useResolvedTarget.cjs +2 -0
  96. package/dist/hooks/useResolvedTarget.cjs.map +1 -0
  97. package/dist/hooks/useResolvedTarget.mjs +37 -0
  98. package/dist/hooks/useResolvedTarget.mjs.map +1 -0
  99. package/dist/hooks/useRovingGrid.cjs +1 -1
  100. package/dist/hooks/useRovingGrid.cjs.map +1 -1
  101. package/dist/hooks/useRovingGrid.mjs +8 -57
  102. package/dist/hooks/useRovingGrid.mjs.map +1 -1
  103. package/dist/hooks/useRovingTabIndex.cjs +1 -1
  104. package/dist/hooks/useRovingTabIndex.cjs.map +1 -1
  105. package/dist/hooks/useRovingTabIndex.mjs +142 -107
  106. package/dist/hooks/useRovingTabIndex.mjs.map +1 -1
  107. package/dist/index.cjs +1 -1
  108. package/dist/index.d.cts +814 -18
  109. package/dist/index.d.ts +814 -18
  110. package/dist/index.mjs +120 -108
  111. package/dist/lib/layers.cjs +1 -1
  112. package/dist/lib/layers.cjs.map +1 -1
  113. package/dist/lib/layers.mjs +112 -109
  114. package/dist/lib/layers.mjs.map +1 -1
  115. package/dist/styles.css +1 -1
  116. package/package.json +1 -1
@@ -10,16 +10,17 @@ import { useId as c } from "../../hooks/useId.mjs";
10
10
  import { focusElement as te, getFirstTabbable as l, isConnectedAndFocusable as u } from "../../lib/focus.mjs";
11
11
  import { useMergedRefs as d } from "../../hooks/useMergedRefs.mjs";
12
12
  import { useIsClient as f } from "../../hooks/useIsClient.mjs";
13
- import { useDismiss as ne } from "../../hooks/useDismiss.mjs";
14
- import { Portal as p } from "../portal/Portal.mjs";
15
- import { usePopupPosition as re } from "../../hooks/usePopupPosition.mjs";
13
+ import { resolvePositioning as ne, usePopupPosition as re } from "../../hooks/usePopupPosition.mjs";
14
+ import { useDismiss as p } from "../../hooks/useDismiss.mjs";
16
15
  import { useRestoreFocus as m } from "../../hooks/useRestoreFocus.mjs";
17
- import { useHoverIntent as h } from "../../hooks/useHoverIntent.mjs";
18
- import { PopoverBeak as g, getTabbableThrough as _, isFocusInSurfaceTree as v, usePopoverTabOrder as y } from "./Popover.shared.mjs";
19
- import { getTriggerFocusTarget as b, useTriggerElement as x, useTriggerFocusRef as S } from "../../hooks/useTriggerElement.mjs";
20
- import { useContextMenuAnchor as ie } from "../../hooks/useContextMenuAnchor.mjs";
16
+ import { Portal as h } from "../portal/Portal.mjs";
17
+ import { useHoverIntent as g } from "../../hooks/useHoverIntent.mjs";
18
+ import { PopoverBeak as _, getTabbableThrough as v, isFocusInSurfaceTree as y, usePopoverTabOrder as ie } from "./Popover.shared.mjs";
19
+ import { getTriggerFocusTarget as b, useTriggerElement as x, useTriggerFocusRef as ae } from "../../hooks/useTriggerElement.mjs";
20
+ import { usePopupTarget as S } from "../../hooks/useResolvedTarget.mjs";
21
+ import { useContextMenuAnchor as oe } from "../../hooks/useContextMenuAnchor.mjs";
21
22
  import * as C from "react";
22
- import { jsx as w, jsxs as T } from "react/jsx-runtime";
23
+ import { Fragment as se, jsx as w, jsxs as T } from "react/jsx-runtime";
23
24
  //#region src/components/overlays/Popover.tsx
24
25
  var E = C.createContext(null);
25
26
  E.displayName = "PopoverContext";
@@ -54,64 +55,71 @@ function O() {
54
55
  style: {}
55
56
  },
56
57
  arrowStyles: {},
57
- placedSide: "bottom"
58
+ placedSide: "bottom",
59
+ fitViewport: !1
58
60
  }, D;
59
61
  }
60
62
  function k(e) {
61
63
  return C.useContext(E) || (n(e, "Popover"), O());
62
64
  }
63
- function A(e, t) {
65
+ function ce(e, t) {
64
66
  let n = (t ?? "").split(/\s+/).filter((t) => t && e.getElementById(t));
65
67
  return n.length > 0 ? n.join(" ") : void 0;
66
68
  }
67
- function j(e, t) {
69
+ function A(e, t) {
68
70
  if (!e) return t;
69
71
  let n = e.ownerDocument, r = (t ? n.getElementById(t) : null) ?? b(e) ?? e;
70
- return A(n, r.getAttribute("aria-labelledby")) ?? (r.id || e.id || void 0);
72
+ return ce(n, r.getAttribute("aria-labelledby")) ?? (r.id || e.id || void 0);
71
73
  }
72
- function ae(e, t) {
74
+ function j(e, t) {
73
75
  return t.split(/\s+/).some((t) => {
74
76
  let n = t ? e.getElementById(t) : null;
75
77
  return n ? n.getAttribute("aria-label")?.trim() || n.textContent?.trim() ? !0 : !!n.querySelector("[aria-label]:not([aria-label=\"\"]), [alt]:not([alt=\"\"]), [title]:not([title=\"\"])") : !1;
76
78
  });
77
79
  }
78
- var oe = () => () => {};
79
- function M(e) {
80
+ var M = () => () => {};
81
+ function le(e) {
80
82
  return !!e && typeof e.nodeType == "number";
81
83
  }
82
- function se(e) {
84
+ function ue(e) {
83
85
  return { get current() {
84
86
  return e();
85
87
  } };
86
88
  }
87
- function ce(e, t, n) {
88
- return b(e) ?? _(e, t, n);
89
+ function de(e, t, n) {
90
+ return b(e) ?? v(e, t, n);
89
91
  }
90
- var N = ({ open: e, defaultOpen: t, onOpenChange: n, side: ee = "bottom", align: i = "start", ignoreOutsideRefs: a, openOnHover: p = !1, openDelay: g = 250, closeDelay: _ = 500, openOnContext: x = !1, target: T, children: D }) => {
91
- let [O, k] = s(e, t ?? !1, n), A = C.useRef(!1), j = o((e) => {
92
- A.current = !1, k(e);
93
- }), ae = C.useCallback(() => A.current, []), oe = f(), N = O && oe, [P, F] = C.useState("other"), [I, L] = C.useState(!1), [R, le] = C.useState(N), z = P;
94
- N !== R && (le(N), N && (z = I ? "hover" : "other")), z !== P && F(z), I && L(!1);
95
- let B = c("popover-content"), [V, ue] = C.useState(void 0), H = V ?? B, de = c("popover-trigger"), [U, fe] = C.useState(void 0), [W, pe] = C.useState(null), [G, me] = C.useState(null), K = C.useRef(null), q = C.useRef(null), he = C.useRef(null), ge = M(T) ? T : null, J = C.useRef(null);
92
+ var N = ({ open: e, defaultOpen: t, onOpenChange: n, side: ee = "bottom", align: i = "start", ignoreOutsideRefs: a, openOnHover: h = !1, openDelay: _ = 250, closeDelay: v = 500, openOnContext: x = !1, target: se, positioning: T, children: D }) => {
93
+ let { target: O, pending: k } = S("Popover", se, T), [ce, A] = s(e, t ?? !1, n), j = C.useRef(!1), M = o((e) => {
94
+ j.current = !1, A(e);
95
+ }), N = C.useCallback(() => j.current, []), P = f(), F = ce && P, [I, L] = C.useState("other"), [fe, R] = C.useState(!1), [z, B] = C.useState(F), V = I;
96
+ F !== z && (B(F), F && (V = fe ? "hover" : "other")), V !== I && L(V), fe && R(!1);
97
+ let pe = c("popover-content"), [me, H] = C.useState(void 0), U = me ?? pe, he = c("popover-trigger"), [ge, _e] = C.useState(void 0), [W, ve] = C.useState(null), [G, ye] = C.useState(null), K = C.useRef(null), q = C.useRef(null), be = C.useRef(null), xe = le(O) ? O : null, J = C.useRef(null);
96
98
  C.useInsertionEffect(() => {
97
- J.current = ge;
98
- }, [ge]);
99
- let { setReference: _e, setFloating: ve, floatingProps: ye, arrowStyles: be, side: xe } = re({
100
- open: N,
99
+ J.current = xe;
100
+ }, [xe]);
101
+ let { setReference: Se, setFloating: Ce, floatingProps: Y, arrowStyles: we, side: Te } = re({
102
+ open: F,
101
103
  side: ee,
102
104
  align: i,
103
- offset: 8,
104
- arrowRef: he
105
- }), Se = C.useRef(null), Y = o(() => {
106
- let e = x ? Se.current?.current : null;
105
+ arrowRef: be,
106
+ ...ne(T, { offset: 8 })
107
+ }), Ee = C.useMemo(() => k ? {
108
+ ...Y,
109
+ style: {
110
+ ...Y.style,
111
+ visibility: "hidden"
112
+ }
113
+ } : Y, [k, Y]), De = C.useRef(null), Oe = o(() => {
114
+ let e = x ? De.current?.current : null;
107
115
  if (e && u(e)) return e;
108
116
  let t = K.current, n = t ? b(t) : null;
109
117
  if (n) return n;
110
118
  let r = J.current;
111
119
  return r && u(r) ? r : t;
112
- }), Ce = C.useMemo(() => se(Y), [Y]), we = o((e) => !(e.ctrlKey && K.current?.contains(e.target))), { layerId: X } = ne({
113
- open: N,
114
- onDismiss: () => j(!1),
120
+ }), ke = C.useMemo(() => ue(Oe), [Oe]), Ae = o((e) => !(e.ctrlKey && K.current?.contains(e.target))), { layerId: X } = p({
121
+ open: F,
122
+ onDismiss: () => M(!1),
115
123
  refs: x ? [
116
124
  q,
117
125
  J,
@@ -122,144 +130,146 @@ var N = ({ open: e, defaultOpen: t, onOpenChange: n, side: ee = "bottom", align:
122
130
  J,
123
131
  ...a ?? []
124
132
  ],
125
- anchorRef: Ce,
133
+ anchorRef: ke,
126
134
  kind: "popover",
127
- outsidePress: !x || we
128
- }), Z = C.useRef(!1), { anchor: Te, fromContext: Ee, origin: De, opener: Q, triggerHandlers: Oe, surfaceHandlers: ke } = ie({
135
+ outsidePress: !x || Ae
136
+ }), Z = C.useRef(!1), { anchor: je, fromContext: Me, origin: Ne, opener: Q, triggerHandlers: Pe, surfaceHandlers: Fe } = oe({
129
137
  enabled: x,
130
- open: N,
138
+ open: F,
131
139
  trigger: G,
132
140
  layerId: X,
133
141
  onOpen: (e) => {
134
- Z.current = e === "keyboard", j(!0);
142
+ Z.current = e === "keyboard", M(!0);
135
143
  },
136
- onClose: () => j(!1)
144
+ onClose: () => M(!1)
137
145
  });
138
146
  C.useInsertionEffect(() => {
139
- Se.current = Q;
147
+ De.current = Q;
140
148
  }, [Q]);
141
- let Ae = S(K);
149
+ let Ie = ae(K);
142
150
  m({
143
- enabled: N,
151
+ enabled: F,
144
152
  container: W,
145
- triggerRef: x ? void 0 : Ae,
153
+ triggerRef: x ? void 0 : Ie,
146
154
  finalFocusRef: x ? Q : void 0,
147
- fallback: Y,
155
+ fallback: Oe,
148
156
  onlyIfFocusInside: !0,
149
- isHoverClose: ae
157
+ isHoverClose: N
150
158
  }), C.useLayoutEffect(() => {
151
- N && (A.current = !1);
152
- }, [N]);
153
- let je = d(K, me), Me = d(q, pe, ve);
159
+ F && (j.current = !1);
160
+ }, [F]);
161
+ let Le = d(K, ye), Re = d(q, ve, Ce);
154
162
  C.useLayoutEffect(() => {
155
- _e(Ee ? Te ?? (G && (b(G) ?? G)) : T ?? G);
163
+ Se(Me ? je ?? (G && (b(G) ?? G)) : O ?? G);
156
164
  }, [
157
- Te,
158
- Ee,
159
- T,
165
+ je,
166
+ Me,
167
+ O,
160
168
  G,
161
- _e
169
+ Se
162
170
  ]), C.useLayoutEffect(() => {
163
171
  if (Z.current) {
164
- if (!N) {
172
+ if (!F) {
165
173
  Z.current = !1;
166
174
  return;
167
175
  }
168
176
  W && (Z.current = !1, te(l(W) ?? W, { preventScroll: !0 }));
169
177
  }
170
178
  }), C.useEffect(() => {
171
- p && x && r("Popover:hover-and-context", "Popover: `openOnHover` is ignored with `openOnContext`: a context popover opens on a right click, Shift+F10 or the ContextMenu key, not on hover.");
172
- }, [p, x]);
173
- let $ = p && !x, Ne = o(() => z === "hover" && !v(q.current, X)), { triggerHandlers: Pe, surfaceHandlers: Fe, cancel: Ie } = h({
179
+ h && x && r("Popover:hover-and-context", "Popover: `openOnHover` is ignored with `openOnContext`: a context popover opens on a right click, Shift+F10 or the ContextMenu key, not on hover.");
180
+ }, [h, x]);
181
+ let $ = h && !x, ze = o(() => V === "hover" && !y(q.current, X)), { triggerHandlers: Be, surfaceHandlers: Ve, cancel: He } = g({
174
182
  enabled: $,
175
- open: N,
176
- openDelay: g,
177
- closeDelay: _,
183
+ open: F,
184
+ openDelay: _,
185
+ closeDelay: v,
178
186
  trigger: G,
179
187
  surface: W,
180
188
  onOpen: () => {
181
- L(!0), j(!0);
189
+ R(!0), M(!0);
182
190
  },
183
191
  onClose: () => {
184
- A.current = !0, k(!1);
192
+ j.current = !0, A(!1);
185
193
  },
186
- canClose: Ne
187
- }), Le = o(() => {
188
- Ie(), N && z === "hover" ? F("other") : j((e) => !e);
189
- }), Re = o(() => {
194
+ canClose: ze
195
+ }), Ue = o(() => {
196
+ He(), F && V === "hover" ? L("other") : M((e) => !e);
197
+ }), We = o(() => {
190
198
  let e = K.current, t = x ? Q.current : null;
191
199
  return t && e?.contains(t) ? t : e ?? J.current;
192
- }), ze = C.useMemo(() => se(Re), [Re]), Be = o((e) => {
193
- if (e.key !== "Tab" || e.shiftKey || !N) return;
200
+ }), Ge = C.useMemo(() => ue(We), [We]), Ke = o((e) => {
201
+ if (e.key !== "Tab" || e.shiftKey || !F) return;
194
202
  if (x) {
195
- let t = Re();
203
+ let t = We();
196
204
  if (!t || e.target !== (b(t) ?? t)) return;
197
205
  }
198
206
  let t = q.current, n = t ? l(t) : null;
199
207
  n && (e.preventDefault(), n.focus());
200
- }), Ve = y({
201
- enabled: N,
208
+ }), qe = ie({
209
+ enabled: F,
202
210
  surface: W,
203
- anchorRef: ze,
204
- getPreviousStop: ce
205
- }), He = Ee && De === "keyboard", Ue = C.useMemo(() => ({
206
- open: N,
207
- setOpen: j,
208
- contentId: H,
209
- setCustomContentId: ue,
210
- triggerId: de,
211
- resolvedTriggerId: U,
212
- setResolvedTriggerId: fe,
211
+ anchorRef: Ge,
212
+ getPreviousStop: de
213
+ }), Je = Me && Ne === "keyboard", Ye = C.useMemo(() => ({
214
+ open: F,
215
+ setOpen: M,
216
+ contentId: U,
217
+ setCustomContentId: H,
218
+ triggerId: he,
219
+ resolvedTriggerId: ge,
220
+ setResolvedTriggerId: _e,
213
221
  triggerRef: K,
214
222
  triggerElement: G,
215
- triggerElementRef: je,
216
- surfaceElementRef: Me,
217
- arrowRef: he,
218
- onTriggerClick: Le,
219
- onTriggerKeyDown: Be,
220
- hoverTriggerHandlers: $ ? Pe : null,
221
- hoverSurfaceHandlers: $ ? Fe : null,
223
+ triggerElementRef: Le,
224
+ surfaceElementRef: Re,
225
+ arrowRef: be,
226
+ onTriggerClick: Ue,
227
+ onTriggerKeyDown: Ke,
228
+ hoverTriggerHandlers: $ ? Be : null,
229
+ hoverSurfaceHandlers: $ ? Ve : null,
222
230
  contextMode: x,
223
- contextTriggerHandlers: x ? Oe : null,
224
- onContentContextMenu: ke.onContextMenu,
225
- keyboardContext: He,
226
- onContentKeyDown: Ve,
231
+ contextTriggerHandlers: x ? Pe : null,
232
+ onContentContextMenu: Fe.onContextMenu,
233
+ keyboardContext: Je,
234
+ onContentKeyDown: qe,
227
235
  layerId: X,
228
- floatingProps: ye,
229
- arrowStyles: be,
230
- placedSide: xe
236
+ floatingProps: Ee,
237
+ arrowStyles: we,
238
+ placedSide: Te,
239
+ fitViewport: T?.fitViewport === !0
231
240
  }), [
232
- N,
233
- j,
234
- H,
235
- de,
241
+ F,
242
+ M,
236
243
  U,
244
+ he,
245
+ ge,
237
246
  G,
238
- je,
239
- Me,
240
247
  Le,
241
- Be,
248
+ Re,
249
+ Ue,
250
+ Ke,
242
251
  $,
252
+ Be,
253
+ Ve,
254
+ x,
243
255
  Pe,
244
256
  Fe,
245
- x,
246
- Oe,
247
- ke,
248
- He,
249
- Ve,
257
+ Je,
258
+ qe,
250
259
  X,
251
- ye,
252
- be,
253
- xe
260
+ Ee,
261
+ we,
262
+ Te,
263
+ T?.fitViewport
254
264
  ]);
255
265
  return /* @__PURE__ */ w(E.Provider, {
256
- value: Ue,
266
+ value: Ye,
257
267
  children: D
258
268
  });
259
269
  };
260
270
  N.displayName = "Popover";
261
271
  var P = ({ children: e, asChild: t, id: n, onClick: r, onKeyDown: ee, onContextMenu: a, onPointerEnter: o, onPointerMove: s, onPointerLeave: c, ref: te, ...l }) => {
262
- let { open: u, contentId: f, triggerId: ne, triggerElementRef: p, setResolvedTriggerId: re, onTriggerClick: m, onTriggerKeyDown: h, hoverTriggerHandlers: g, contextMode: _, contextTriggerHandlers: v } = k("Popover.Trigger"), y = d(te, p), b = {
272
+ let { open: u, contentId: f, triggerId: ne, triggerElementRef: re, setResolvedTriggerId: p, onTriggerClick: m, onTriggerKeyDown: h, hoverTriggerHandlers: g, contextMode: _, contextTriggerHandlers: v } = k("Popover.Trigger"), y = d(te, re), ie = {
263
273
  ...l,
264
274
  id: n ?? ne,
265
275
  "aria-haspopup": "dialog",
@@ -273,83 +283,84 @@ var P = ({ children: e, asChild: t, id: n, onClick: r, onKeyDown: ee, onContextM
273
283
  onPointerLeave: g ? i(c, g.onPointerLeave) : c,
274
284
  ref: y
275
285
  };
276
- return x(e, b, {
286
+ return x(e, ie, {
277
287
  componentName: "Popover.Trigger",
278
288
  asChild: t,
279
- onResolvedId: re,
289
+ onResolvedId: p,
280
290
  omitStateAria: _
281
291
  });
282
292
  };
283
293
  P.displayName = "PopoverTrigger";
284
- var F = ({ children: n, title: o, id: s, className: te, style: l, "aria-label": u, "aria-labelledby": f, onKeyDown: ne, onContextMenu: re, onPointerEnter: m, onPointerLeave: h, ref: _, ...v }) => {
285
- let { open: y, contentId: b, setCustomContentId: x, resolvedTriggerId: S, triggerRef: ie, triggerElement: E, surfaceElementRef: D, arrowRef: O, layerId: A, floatingProps: M, arrowStyles: se, placedSide: ce, onContentKeyDown: N, hoverSurfaceHandlers: P, contextMode: F, onContentContextMenu: I, keyboardContext: L } = k("Popover.Content"), R = c("popover-title"), le = d(_, D), z = ee(o), B = f === void 0 && !u && !z, V = y && B && !F, ue = C.useCallback((e) => {
286
- if (!V || !E || typeof MutationObserver > "u") return oe();
294
+ var F = ({ children: n, title: o, id: s, className: te, style: l, "aria-label": u, "aria-labelledby": f, onKeyDown: ne, onContextMenu: re, onPointerEnter: p, onPointerLeave: m, ref: g, ...v }) => {
295
+ let { open: y, contentId: ie, setCustomContentId: b, resolvedTriggerId: x, triggerRef: ae, triggerElement: S, surfaceElementRef: oe, arrowRef: E, layerId: D, floatingProps: O, arrowStyles: ce, placedSide: le, fitViewport: ue, onContentKeyDown: de, hoverSurfaceHandlers: N, contextMode: P, onContentContextMenu: F, keyboardContext: I } = k("Popover.Content"), L = c("popover-title"), fe = d(g, oe), R = ee(o), z = f === void 0 && !u && !R, B = y && z && !P, V = C.useCallback((e) => {
296
+ if (!B || !S || typeof MutationObserver > "u") return M();
287
297
  let t = new MutationObserver(e);
288
- return t.observe(E, {
298
+ return t.observe(S, {
289
299
  attributes: !0,
290
300
  attributeFilter: ["id", "aria-labelledby"],
291
301
  childList: !0,
292
302
  subtree: !0
293
303
  }), () => t.disconnect();
294
- }, [V, E]), H = C.useSyncExternalStore(ue, () => V ? j(E, S) : void 0, () => V ? S : void 0), de = f ?? (u ? void 0 : z ? R : H), U = s || void 0;
295
- return C.useEffect(() => (x(U), () => x(void 0)), [U, x]), C.useEffect(() => {
296
- y && B && F && t && r("Popover.Content:name", "Popover.Content: the popover has no accessible name. A context popover (openOnContext) is not named by its region: pass `title`, `aria-label` or `aria-labelledby`.");
304
+ }, [B, S]), pe = C.useSyncExternalStore(V, () => B ? A(S, x) : void 0, () => B ? x : void 0), me = f ?? (u ? void 0 : R ? L : pe), H = s || void 0;
305
+ if (C.useEffect(() => (b(H), () => b(void 0)), [H, b]), C.useEffect(() => {
306
+ y && z && P && t && r("Popover.Content:name", "Popover.Content: the popover has no accessible name. A context popover (openOnContext) is not named by its region: pass `title`, `aria-label` or `aria-labelledby`.");
297
307
  }, [
298
308
  y,
299
- B,
300
- F
309
+ z,
310
+ P
301
311
  ]), C.useEffect(() => {
302
- if (!V || !t) return;
303
- let e = ie.current;
312
+ if (!B || !t) return;
313
+ let e = ae.current;
304
314
  if (!e) {
305
315
  r("Popover.Content:name", "Popover.Content: the popover has no accessible name. Pass `title`, `aria-label` or `aria-labelledby`, or open it from a Popover.Trigger.");
306
316
  return;
307
317
  }
308
- let n = j(e, S);
309
- n ? ae(e.ownerDocument, n) || r("Popover.Content:trigger-name", "Popover.Content: the popover is named by its trigger, but the trigger has no text to name it (an icon-only trigger needs `aria-label`, or `aria-labelledby` pointing at text), so the popover has no accessible name. Name the trigger, or pass `title`, `aria-label` or `aria-labelledby`.") : r("Popover.Content:trigger-id", "Popover.Content: the popover is named by its trigger, but the trigger element has no `id` (a render-prop child of Popover.Trigger must spread the `id` it receives), so the popover has no accessible name. Spread every trigger prop onto the element, or pass `title`, `aria-label` or `aria-labelledby`.");
318
+ let n = A(e, x);
319
+ n ? j(e.ownerDocument, n) || r("Popover.Content:trigger-name", "Popover.Content: the popover is named by its trigger, but the trigger has no text to name it (an icon-only trigger needs `aria-label`, or `aria-labelledby` pointing at text), so the popover has no accessible name. Name the trigger, or pass `title`, `aria-label` or `aria-labelledby`.") : r("Popover.Content:trigger-id", "Popover.Content: the popover is named by its trigger, but the trigger element has no `id` (a render-prop child of Popover.Trigger must spread the `id` it receives), so the popover has no accessible name. Spread every trigger prop onto the element, or pass `title`, `aria-label` or `aria-labelledby`.");
310
320
  }, [
311
- V,
312
- S,
313
- ie,
314
- H
315
- ]), y ? /* @__PURE__ */ w(p, {
316
- layerId: A,
321
+ B,
322
+ x,
323
+ ae,
324
+ pe
325
+ ]), !y) return null;
326
+ let U = /* @__PURE__ */ T(se, { children: [R && /* @__PURE__ */ w("h2", {
327
+ id: L,
328
+ className: e(a.title, "mb-2 text-subtitle-2 font-semibold"),
329
+ children: o
330
+ }), n] });
331
+ return /* @__PURE__ */ w(h, {
332
+ layerId: D,
317
333
  children: /* @__PURE__ */ T("div", {
318
334
  role: "dialog",
319
335
  "aria-label": u,
320
- "aria-labelledby": de,
321
- tabIndex: L ? -1 : void 0,
336
+ "aria-labelledby": me,
337
+ tabIndex: I ? -1 : void 0,
322
338
  ...v,
323
- ref: le,
324
- id: U ?? b,
325
- "data-side": M["data-side"],
326
- "data-align": M["data-align"],
339
+ ref: fe,
340
+ id: H ?? ie,
341
+ "data-side": O["data-side"],
342
+ "data-align": O["data-align"],
327
343
  style: {
328
344
  ...l,
329
- ...M.style
345
+ ...O.style
330
346
  },
331
- onKeyDown: i(ne, N),
332
- onContextMenu: i(re, I),
333
- onPointerEnter: P ? i(m, P.onPointerEnter) : m,
334
- onPointerLeave: P ? i(h, P.onPointerLeave) : h,
347
+ onKeyDown: i(ne, de),
348
+ onContextMenu: i(re, F),
349
+ onPointerEnter: N ? i(p, N.onPointerEnter) : p,
350
+ onPointerLeave: N ? i(m, N.onPointerLeave) : m,
335
351
  className: e(a.root, "w-64 rounded-md border border-border bg-background p-4 text-body-1 font-normal text-foreground normal-case tracking-normal text-start shadow-4", te),
336
- children: [
337
- /* @__PURE__ */ w(g, {
338
- ref: O,
339
- side: ce,
340
- style: se,
341
- "data-wave-popover-arrow": "",
342
- className: a.beak
343
- }),
344
- z && /* @__PURE__ */ w("h2", {
345
- id: R,
346
- className: e(a.title, "mb-2 text-subtitle-2 font-semibold"),
347
- children: o
348
- }),
349
- n
350
- ]
352
+ children: [/* @__PURE__ */ w(_, {
353
+ ref: E,
354
+ side: le,
355
+ style: ce,
356
+ "data-wave-popover-arrow": "",
357
+ className: a.beak
358
+ }), ue ? /* @__PURE__ */ w("div", {
359
+ className: "overflow-y-auto max-h-[calc(var(--wave-popup-available-height)-2rem-2px)]",
360
+ children: U
361
+ }) : U]
351
362
  })
352
- }) : null;
363
+ });
353
364
  };
354
365
  F.displayName = "PopoverContent";
355
366
  var I = /* @__PURE__ */ Object.assign(N, {