@box-kite/react 2.2.16 → 2.2.18

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 (76) hide show
  1. package/.claude/rules/box-kite-rules.md +3 -3
  2. package/.claude/skills/box-kite/SKILL.md +3 -3
  3. package/.claude/skills/box-kite/references/components.md +1 -1
  4. package/.claude/skills/box-kite/references/styling.md +1 -1
  5. package/.cursor/rules/box-kite.mdc +3 -3
  6. package/AGENTS.md +3 -3
  7. package/BOX_AI_CONTEXT.md +2 -2
  8. package/BOX_KITE_AI_CONTEXT.md +2 -2
  9. package/behavior.cjs +1 -1
  10. package/behavior.mjs +62 -62
  11. package/catalog.cjs +1 -1
  12. package/catalog.mjs +3 -3
  13. package/client.cjs +1 -1
  14. package/client.mjs +15 -15
  15. package/components/accordion.cjs +1 -1
  16. package/components/accordion.mjs +1 -1
  17. package/components/calendar.cjs +1 -1
  18. package/components/calendar.mjs +1 -1
  19. package/components/combobox.cjs +1 -1
  20. package/components/combobox.mjs +1 -1
  21. package/components/dashboard.cjs +1 -1
  22. package/components/dashboard.mjs +1 -1
  23. package/components/dataGrid.cjs +2 -2
  24. package/components/dataGrid.mjs +11 -11
  25. package/components/dateField.cjs +1 -1
  26. package/components/dateField.mjs +1 -1
  27. package/components/datePicker.cjs +1 -1
  28. package/components/datePicker.mjs +198 -198
  29. package/components/dialog.cjs +1 -1
  30. package/components/dialog.mjs +140 -132
  31. package/components/form.cjs +1 -1
  32. package/components/form.mjs +1 -1
  33. package/components/menu.cjs +1 -1
  34. package/components/menu.mjs +120 -119
  35. package/components/overlay.cjs +1 -1
  36. package/components/overlay.mjs +5 -4
  37. package/components/popover.cjs +1 -1
  38. package/components/popover.mjs +50 -49
  39. package/components/presence.cjs +1 -1
  40. package/components/presence.mjs +1 -1
  41. package/components/radioGroup.cjs +1 -1
  42. package/components/radioGroup.mjs +1 -1
  43. package/components/semantics.d.ts +29 -29
  44. package/components/slider.cjs +1 -1
  45. package/components/slider.mjs +1 -1
  46. package/components/sortableList.cjs +1 -1
  47. package/components/sortableList.mjs +1 -1
  48. package/components/swipeItem.cjs +1 -1
  49. package/components/swipeItem.mjs +12 -12
  50. package/components/tabs.cjs +1 -1
  51. package/components/tabs.mjs +2 -2
  52. package/components/toaster.cjs +1 -1
  53. package/components/toaster.mjs +133 -115
  54. package/components/tooltip.cjs +1 -1
  55. package/components/tooltip.mjs +1 -1
  56. package/components/virtualList.cjs +1 -1
  57. package/components/virtualList.mjs +1 -1
  58. package/docs/props.md +2 -2
  59. package/interactionListening.cjs +1 -1
  60. package/interactionListening.mjs +3 -3
  61. package/layer.cjs +1 -1
  62. package/layer.mjs +17 -14
  63. package/motion.cjs +1 -1
  64. package/motion.mjs +30 -20
  65. package/package.json +40 -40
  66. package/placement.cjs +1 -1
  67. package/placement.mjs +10 -10
  68. package/platform.cjs +1 -1
  69. package/platform.mjs +18 -11
  70. package/react/animation/useHeldContent.d.ts +6 -0
  71. package/react/animation/usePresence.d.ts +4 -0
  72. package/react-shared.cjs +1 -1
  73. package/react-shared.mjs +1 -1
  74. package/scrolling.cjs +1 -1
  75. package/scrolling.mjs +1 -1
  76. package/utils/dom/domUtils.d.ts +7 -0
@@ -1 +1 @@
1
- "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../react-shared.cjs"),t=require("../platform.cjs"),n=require("../client.cjs"),r=require("../effects.cjs"),i=require("../box.cjs"),a=require("../behavior.cjs"),o=require("../identity.cjs"),s=require("../reporting.cjs"),c=require("./semantics.cjs");let l=require("react"),u=require("react/jsx-runtime");var d=0;function f(e){let{classNames:i,styleElements:a}=n.i({overflow:`hidden`},!1),o=i.slice(1).join(` `);return r.n(()=>{let n=t.n();if(!(!e||!n||!o))return d+=1,n.classList.add(o),()=>{--d,d===0&&n.classList.remove(o)}},[e,o]),a}var p=(0,l.createContext)(null);function m(e){let t=(0,l.useContext)(p);if(!t)throw Error(`<${e}> must be rendered inside a <Dialog>.`);return t}function h(e,t){return(0,u.jsx)(_,{role:`dialog`,...e,elementRef:t})}function g(e,t){return(0,u.jsx)(_,{role:`alertdialog`,...e,modal:!0,dismissible:!1,elementRef:t})}function _(e){let{role:n,trigger:c,children:d,open:m,defaultOpen:h=!1,onOpenChange:g,label:_,labelledBy:y,describedBy:b,modal:x=!0,dismissible:S=!0,lockScroll:C=x,initialFocus:w,elementRef:T,props:E,...D}=e,O=o.t(`dialog`),k=D.id??O,[A,j]=s.a({value:m,defaultValue:h,onChange:g,interaction:{component:n===`alertdialog`?`alertDialog`:`dialog`,type:`openChange`}}),[M,N]=(0,l.useState)(null),P=(0,l.useCallback)(e=>{N(e),t.l(T,e)},[T]),[F,I]=(0,l.useState)(null),[L,R]=(0,l.useState)(!1),[z,B]=(0,l.useState)({title:0,description:0}),V=f(A&&C);a.n({enabled:A,returnTo:F});let H=(0,l.useCallback)(e=>(B(t=>({...t,[e]:t[e]+1})),()=>B(t=>({...t,[e]:t[e]-1}))),[]),U=(0,l.useMemo)(()=>({titleId:`${k}-title`,descriptionId:`${k}-description`,register:H}),[k,H]);v({dialog:M,isOpen:A,domOpen:L,setDomOpen:R,setOpen:j,modal:x,dismissible:S,triggerElement:F}),r.n(()=>{let e=t.f(w);!A||!e||e.focus()},[A,w]);let W=a.a(e=>{j(e=>!e,{reason:`trigger`,event:e})}),G=(0,l.useMemo)(()=>({ref:I,props:{"aria-expanded":A,"aria-haspopup":`dialog`,"aria-controls":A?k:void 0,onClick:W}}),[k,W,A]),K=D;return(0,u.jsxs)(u.Fragment,{children:[V,c?.(G),(0,u.jsx)(p.Provider,{value:U,children:(0,u.jsx)(i.default,{ref:P,tag:`dialog`,component:`dialog`,...K,id:k,props:{role:n,"aria-label":z.title||y?void 0:_,"aria-labelledby":y??(z.title?U.titleId:void 0),"aria-describedby":b??(z.description?U.descriptionId:void 0),...E},children:d})})]})}function v(e){let{dialog:n,isOpen:i,domOpen:o,setDomOpen:s,setOpen:c,modal:u,dismissible:d,triggerElement:f}=e,p=(0,l.useRef)(`imperative`),m=t.s(),h=d?`any`:`closerequest`;r.n(()=>{!n||i===o||(s(i),i?u?n.showModal():n.show():n.close())},[n,i,o,u,s]),r.n(()=>{if(!n)return;let e=new AbortController;return n.addEventListener(`close`,e=>{s(!1),c(!1,{reason:p.current,event:e}),p.current=`imperative`},{signal:e.signal}),()=>e.abort()},[n,s,c]),r.n(()=>{if(!(!n||!m))return n.setAttribute(`closedby`,h),()=>n.removeAttribute(`closedby`)},[n,m,h]),r.n(()=>{if(!i||!n)return;let e=new AbortController,r=(t,n)=>document.addEventListener(t,n,{signal:e.signal,capture:!0});return r(`keydown`,e=>{e.key===`Escape`&&(p.current=`escape`)}),r(`pointerdown`,e=>{t.p(e,[f])?p.current=`trigger`:!t.p(e,[n])||y(n,e)?p.current=`outside-pointer`:p.current=`imperative`}),()=>e.abort()},[i,n,f]),a.r({enabled:i&&!u&&!m,inside:[n],escapeKey:!0,outsidePointer:!1,onDismiss:(e,t)=>c(!1,{reason:`escape`,event:t})}),r.n(()=>{if(!n||!i||!d||m)return;let e=new AbortController;return document.addEventListener(`pointerdown`,e=>{t.p(e,[f])||t.p(e,[n])&&!y(n,e)||c(!1,{reason:`outside-pointer`,event:e})},{signal:e.signal,capture:!0}),()=>e.abort()},[n,i,d,m,f,c])}function y(e,t){let n=e.getBoundingClientRect();return t.clientX<n.left||t.clientX>n.right||t.clientY<n.top||t.clientY>n.bottom}function b(e){let t=m(`Dialog.Title`);return r.n(()=>t.register(`title`),[t]),(0,u.jsx)(c.H2,{id:t.titleId,component:`dialog.title`,...e})}function x(e){let t=m(`Dialog.Description`);return r.n(()=>t.register(`description`),[t]),(0,u.jsx)(c.P,{id:t.descriptionId,component:`dialog.description`,...e})}b.displayName=`Dialog.Title`,x.displayName=`Dialog.Description`;var S={Title:b,Description:x},C=Object.assign(e.f(h,`Dialog`),S),w=Object.assign(e.f(g,`AlertDialog`),S);exports.AlertDialog=w,exports.default=C;
1
+ "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../react-shared.cjs"),t=require("../platform.cjs"),n=require("../client.cjs"),r=require("../effects.cjs"),i=require("../box.cjs"),a=require("../behavior.cjs"),o=require("../identity.cjs"),s=require("../reporting.cjs"),c=require("../motion.cjs"),l=require("./semantics.cjs");let u=require("react"),d=require("react/jsx-runtime");var f=0;function p(e){let{classNames:i,styleElements:a}=n.i({overflow:`hidden`},!1),o=i.slice(1).join(` `);return r.n(()=>{let n=t.n();if(!(!e||!n||!o))return f+=1,n.classList.add(o),()=>{--f,f===0&&n.classList.remove(o)}},[e,o]),a}var m=(0,u.createContext)(null);function h(e){let t=(0,u.useContext)(m);if(!t)throw Error(`<${e}> must be rendered inside a <Dialog>.`);return t}function g(e,t){return(0,d.jsx)(v,{role:`dialog`,...e,elementRef:t})}function _(e,t){return(0,d.jsx)(v,{role:`alertdialog`,...e,modal:!0,dismissible:!1,elementRef:t})}function v(e){let{role:n,trigger:l,children:f,open:h,defaultOpen:g=!1,onOpenChange:_,label:v,labelledBy:b,describedBy:x,modal:S=!0,dismissible:C=!0,lockScroll:w=S,initialFocus:T,elementRef:E,props:D,...O}=e,k=o.t(`dialog`),A=O.id??k,[j,M]=s.a({value:h,defaultValue:g,onChange:_,interaction:{component:n===`alertdialog`?`alertDialog`:`dialog`,type:`openChange`}}),[N,P]=(0,u.useState)(null),F=(0,u.useCallback)(e=>{P(e),t.d(E,e)},[E]),[I,L]=(0,u.useState)(null),[R,z]=(0,u.useState)(!1),[B,V]=(0,u.useState)({title:0,description:0}),H=p(j&&w);a.n({enabled:j,returnTo:I});let U=c.t(f,j,N),W=(0,u.useCallback)(e=>(V(t=>({...t,[e]:t[e]+1})),()=>V(t=>({...t,[e]:t[e]-1}))),[]),G=(0,u.useMemo)(()=>({titleId:`${A}-title`,descriptionId:`${A}-description`,register:W}),[A,W]);y({dialog:N,isOpen:j,domOpen:R,setDomOpen:z,setOpen:M,modal:S,dismissible:C,triggerElement:I}),r.n(()=>{let e=t.m(T);!j||!e||e.focus()},[j,T]);let K=a.a(e=>{M(e=>!e,{reason:`trigger`,event:e})}),q=(0,u.useMemo)(()=>({ref:L,props:{"aria-expanded":j,"aria-haspopup":`dialog`,"aria-controls":j?A:void 0,onClick:K}}),[A,K,j]),J=O;return(0,d.jsxs)(d.Fragment,{children:[H,l?.(q),(0,d.jsx)(m.Provider,{value:G,children:(0,d.jsx)(i.default,{ref:F,tag:`dialog`,component:`dialog`,...J,id:A,props:{role:n,"aria-label":B.title||b?void 0:v,"aria-labelledby":b??(B.title?G.titleId:void 0),"aria-describedby":x??(B.description?G.descriptionId:void 0),...D},children:U})})]})}function y(e){let{dialog:n,isOpen:i,domOpen:o,setDomOpen:s,setOpen:c,modal:l,dismissible:d,triggerElement:f}=e,p=(0,u.useRef)(`imperative`),m=t.s(),h=d?`any`:`closerequest`;r.n(()=>{!n||i===o||(s(i),i?l?n.showModal():n.show():n.close())},[n,i,o,l,s]),r.n(()=>{if(!(!n||!i||!l))return t.u(n,!0),()=>t.u(n,!1)},[n,i,l]),r.n(()=>{if(!n)return;let e=new AbortController;return n.addEventListener(`close`,e=>{s(!1),c(!1,{reason:p.current,event:e}),p.current=`imperative`},{signal:e.signal}),()=>e.abort()},[n,s,c]),r.n(()=>{if(!(!n||!m))return n.setAttribute(`closedby`,h),()=>n.removeAttribute(`closedby`)},[n,m,h]),r.n(()=>{if(!i||!n)return;let e=new AbortController,r=(t,n)=>document.addEventListener(t,n,{signal:e.signal,capture:!0});return r(`keydown`,e=>{e.key===`Escape`&&(p.current=`escape`)}),r(`pointerdown`,e=>{t.h(e,[f])?p.current=`trigger`:!t.h(e,[n])||b(n,e)?p.current=`outside-pointer`:p.current=`imperative`}),()=>e.abort()},[i,n,f]),a.r({enabled:i&&!l&&!m,inside:[n],escapeKey:!0,outsidePointer:!1,onDismiss:(e,t)=>c(!1,{reason:`escape`,event:t})}),r.n(()=>{if(!n||!i||!d||m)return;let e=new AbortController;return document.addEventListener(`pointerdown`,e=>{t.h(e,[f])||t.h(e,[n])&&!b(n,e)||c(!1,{reason:`outside-pointer`,event:e})},{signal:e.signal,capture:!0}),()=>e.abort()},[n,i,d,m,f,c])}function b(e,t){if(t.target!==e)return!1;let n=e.getBoundingClientRect();return t.clientX<n.left||t.clientX>n.right||t.clientY<n.top||t.clientY>n.bottom}function x(e){let t=h(`Dialog.Title`);return r.n(()=>t.register(`title`),[t]),(0,d.jsx)(l.H2,{id:t.titleId,component:`dialog.title`,...e})}function S(e){let t=h(`Dialog.Description`);return r.n(()=>t.register(`description`),[t]),(0,d.jsx)(l.P,{id:t.descriptionId,component:`dialog.description`,...e})}x.displayName=`Dialog.Title`,S.displayName=`Dialog.Description`;var C={Title:x,Description:S},w=Object.assign(e.f(g,`Dialog`),C),T=Object.assign(e.f(_,`AlertDialog`),C);exports.AlertDialog=T,exports.default=w;
@@ -1,43 +1,44 @@
1
1
  "use client";
2
2
  import { f as e } from "../react-shared.mjs";
3
- import { f as t, l as n, n as r, p as i, s as a } from "../platform.mjs";
4
- import { i as o } from "../client.mjs";
5
- import { n as s } from "../effects.mjs";
6
- import c from "../box.mjs";
7
- import { a as l, n as u, r as d } from "../behavior.mjs";
8
- import { t as f } from "../identity.mjs";
9
- import { a as p } from "../reporting.mjs";
10
- import { H2 as m, P as h } from "./semantics.mjs";
11
- import { createContext as g, useCallback as _, useContext as v, useMemo as y, useRef as b, useState as x } from "react";
12
- import { Fragment as S, jsx as C, jsxs as w } from "react/jsx-runtime";
3
+ import { d as t, h as n, m as r, n as i, s as a, u as o } from "../platform.mjs";
4
+ import { i as s } from "../client.mjs";
5
+ import { n as c } from "../effects.mjs";
6
+ import l from "../box.mjs";
7
+ import { a as u, n as d, r as f } from "../behavior.mjs";
8
+ import { t as p } from "../identity.mjs";
9
+ import { a as m } from "../reporting.mjs";
10
+ import { t as h } from "../motion.mjs";
11
+ import { H2 as g, P as _ } from "./semantics.mjs";
12
+ import { createContext as v, useCallback as y, useContext as b, useMemo as x, useRef as S, useState as C } from "react";
13
+ import { Fragment as w, jsx as T, jsxs as E } from "react/jsx-runtime";
13
14
  //#region src/react/dialog/useScrollLock.ts
14
- var T = 0;
15
- function E(e) {
16
- let { classNames: t, styleElements: n } = o({ overflow: "hidden" }, !1), i = t.slice(1).join(" ");
17
- return s(() => {
18
- let t = r();
19
- if (!(!e || !t || !i)) return T += 1, t.classList.add(i), () => {
20
- --T, T === 0 && t.classList.remove(i);
15
+ var D = 0;
16
+ function O(e) {
17
+ let { classNames: t, styleElements: n } = s({ overflow: "hidden" }, !1), r = t.slice(1).join(" ");
18
+ return c(() => {
19
+ let t = i();
20
+ if (!(!e || !t || !r)) return D += 1, t.classList.add(r), () => {
21
+ --D, D === 0 && t.classList.remove(r);
21
22
  };
22
- }, [e, i]), n;
23
+ }, [e, r]), n;
23
24
  }
24
25
  //#endregion
25
26
  //#region src/components/dialog.tsx
26
- var D = g(null);
27
- function O(e) {
28
- let t = v(D);
27
+ var k = v(null);
28
+ function A(e) {
29
+ let t = b(k);
29
30
  if (!t) throw Error(`<${e}> must be rendered inside a <Dialog>.`);
30
31
  return t;
31
32
  }
32
- function k(e, t) {
33
- return /* @__PURE__ */ C(j, {
33
+ function j(e, t) {
34
+ return /* @__PURE__ */ T(N, {
34
35
  role: "dialog",
35
36
  ...e,
36
37
  elementRef: t
37
38
  });
38
39
  }
39
- function A(e, t) {
40
- return /* @__PURE__ */ C(j, {
40
+ function M(e, t) {
41
+ return /* @__PURE__ */ T(N, {
41
42
  role: "alertdialog",
42
43
  ...e,
43
44
  modal: !0,
@@ -45,148 +46,154 @@ function A(e, t) {
45
46
  elementRef: t
46
47
  });
47
48
  }
48
- function j(e) {
49
- let { role: r, trigger: i, children: a, open: o, defaultOpen: d = !1, onOpenChange: m, label: h, labelledBy: g, describedBy: v, modal: b = !0, dismissible: T = !0, lockScroll: O = b, initialFocus: k, elementRef: A, props: j, ...N } = e, P = f("dialog"), F = N.id ?? P, [I, L] = p({
49
+ function N(e) {
50
+ let { role: n, trigger: i, children: a, open: o, defaultOpen: s = !1, onOpenChange: f, label: g, labelledBy: _, describedBy: v, modal: b = !0, dismissible: S = !0, lockScroll: D = b, initialFocus: A, elementRef: j, props: M, ...N } = e, F = p("dialog"), I = N.id ?? F, [L, R] = m({
50
51
  value: o,
51
- defaultValue: d,
52
- onChange: m,
52
+ defaultValue: s,
53
+ onChange: f,
53
54
  interaction: {
54
- component: r === "alertdialog" ? "alertDialog" : "dialog",
55
+ component: n === "alertdialog" ? "alertDialog" : "dialog",
55
56
  type: "openChange"
56
57
  }
57
- }), [R, z] = x(null), B = _((e) => {
58
- z(e), n(A, e);
59
- }, [A]), [V, H] = x(null), [U, W] = x(!1), [G, K] = x({
58
+ }), [z, B] = C(null), V = y((e) => {
59
+ B(e), t(j, e);
60
+ }, [j]), [H, U] = C(null), [W, G] = C(!1), [K, q] = C({
60
61
  title: 0,
61
62
  description: 0
62
- }), q = E(I && O);
63
- u({
64
- enabled: I,
65
- returnTo: V
63
+ }), J = O(L && D);
64
+ d({
65
+ enabled: L,
66
+ returnTo: H
66
67
  });
67
- let J = _((e) => (K((t) => ({
68
+ let Y = h(a, L, z), X = y((e) => (q((t) => ({
68
69
  ...t,
69
70
  [e]: t[e] + 1
70
- })), () => K((t) => ({
71
+ })), () => q((t) => ({
71
72
  ...t,
72
73
  [e]: t[e] - 1
73
- }))), []), Y = y(() => ({
74
- titleId: `${F}-title`,
75
- descriptionId: `${F}-description`,
76
- register: J
77
- }), [F, J]);
78
- M({
79
- dialog: R,
80
- isOpen: I,
81
- domOpen: U,
82
- setDomOpen: W,
83
- setOpen: L,
74
+ }))), []), Z = x(() => ({
75
+ titleId: `${I}-title`,
76
+ descriptionId: `${I}-description`,
77
+ register: X
78
+ }), [I, X]);
79
+ P({
80
+ dialog: z,
81
+ isOpen: L,
82
+ domOpen: W,
83
+ setDomOpen: G,
84
+ setOpen: R,
84
85
  modal: b,
85
- dismissible: T,
86
- triggerElement: V
87
- }), s(() => {
88
- let e = t(k);
89
- !I || !e || e.focus();
90
- }, [I, k]);
91
- let X = l((e) => {
92
- L((e) => !e, {
86
+ dismissible: S,
87
+ triggerElement: H
88
+ }), c(() => {
89
+ let e = r(A);
90
+ !L || !e || e.focus();
91
+ }, [L, A]);
92
+ let Q = u((e) => {
93
+ R((e) => !e, {
93
94
  reason: "trigger",
94
95
  event: e
95
96
  });
96
- }), Z = y(() => ({
97
- ref: H,
97
+ }), $ = x(() => ({
98
+ ref: U,
98
99
  props: {
99
- "aria-expanded": I,
100
+ "aria-expanded": L,
100
101
  "aria-haspopup": "dialog",
101
- "aria-controls": I ? F : void 0,
102
- onClick: X
102
+ "aria-controls": L ? I : void 0,
103
+ onClick: Q
103
104
  }
104
105
  }), [
105
- F,
106
- X,
107
- I
108
- ]), Q = N;
109
- return /* @__PURE__ */ w(S, { children: [
110
- q,
111
- i?.(Z),
112
- /* @__PURE__ */ C(D.Provider, {
113
- value: Y,
114
- children: /* @__PURE__ */ C(c, {
115
- ref: B,
106
+ I,
107
+ Q,
108
+ L
109
+ ]), ee = N;
110
+ return /* @__PURE__ */ E(w, { children: [
111
+ J,
112
+ i?.($),
113
+ /* @__PURE__ */ T(k.Provider, {
114
+ value: Z,
115
+ children: /* @__PURE__ */ T(l, {
116
+ ref: V,
116
117
  tag: "dialog",
117
118
  component: "dialog",
118
- ...Q,
119
- id: F,
119
+ ...ee,
120
+ id: I,
120
121
  props: {
121
- role: r,
122
- "aria-label": G.title || g ? void 0 : h,
123
- "aria-labelledby": g ?? (G.title ? Y.titleId : void 0),
124
- "aria-describedby": v ?? (G.description ? Y.descriptionId : void 0),
125
- ...j
122
+ role: n,
123
+ "aria-label": K.title || _ ? void 0 : g,
124
+ "aria-labelledby": _ ?? (K.title ? Z.titleId : void 0),
125
+ "aria-describedby": v ?? (K.description ? Z.descriptionId : void 0),
126
+ ...M
126
127
  },
127
- children: a
128
+ children: Y
128
129
  })
129
130
  })
130
131
  ] });
131
132
  }
132
- function M(e) {
133
- let { dialog: t, isOpen: n, domOpen: r, setDomOpen: o, setOpen: c, modal: l, dismissible: u, triggerElement: f } = e, p = b("imperative"), m = a(), h = u ? "any" : "closerequest";
134
- s(() => {
135
- !t || n === r || (o(n), n ? l ? t.showModal() : t.show() : t.close());
133
+ function P(e) {
134
+ let { dialog: t, isOpen: r, domOpen: i, setDomOpen: s, setOpen: l, modal: u, dismissible: d, triggerElement: p } = e, m = S("imperative"), h = a(), g = d ? "any" : "closerequest";
135
+ c(() => {
136
+ !t || r === i || (s(r), r ? u ? t.showModal() : t.show() : t.close());
136
137
  }, [
137
138
  t,
138
- n,
139
139
  r,
140
- l,
141
- o
142
- ]), s(() => {
140
+ i,
141
+ u,
142
+ s
143
+ ]), c(() => {
144
+ if (!(!t || !r || !u)) return o(t, !0), () => o(t, !1);
145
+ }, [
146
+ t,
147
+ r,
148
+ u
149
+ ]), c(() => {
143
150
  if (!t) return;
144
151
  let e = new AbortController();
145
152
  return t.addEventListener("close", (e) => {
146
- o(!1), c(!1, {
147
- reason: p.current,
153
+ s(!1), l(!1, {
154
+ reason: m.current,
148
155
  event: e
149
- }), p.current = "imperative";
156
+ }), m.current = "imperative";
150
157
  }, { signal: e.signal }), () => e.abort();
151
158
  }, [
152
159
  t,
153
- o,
154
- c
155
- ]), s(() => {
156
- if (!(!t || !m)) return t.setAttribute("closedby", h), () => t.removeAttribute("closedby");
160
+ s,
161
+ l
162
+ ]), c(() => {
163
+ if (!(!t || !h)) return t.setAttribute("closedby", g), () => t.removeAttribute("closedby");
157
164
  }, [
158
165
  t,
159
- m,
160
- h
161
- ]), s(() => {
162
- if (!n || !t) return;
163
- let e = new AbortController(), r = (t, n) => document.addEventListener(t, n, {
166
+ h,
167
+ g
168
+ ]), c(() => {
169
+ if (!r || !t) return;
170
+ let e = new AbortController(), i = (t, n) => document.addEventListener(t, n, {
164
171
  signal: e.signal,
165
172
  capture: !0
166
173
  });
167
- return r("keydown", (e) => {
168
- e.key === "Escape" && (p.current = "escape");
169
- }), r("pointerdown", (e) => {
170
- i(e, [f]) ? p.current = "trigger" : !i(e, [t]) || N(t, e) ? p.current = "outside-pointer" : p.current = "imperative";
174
+ return i("keydown", (e) => {
175
+ e.key === "Escape" && (m.current = "escape");
176
+ }), i("pointerdown", (e) => {
177
+ n(e, [p]) ? m.current = "trigger" : !n(e, [t]) || F(t, e) ? m.current = "outside-pointer" : m.current = "imperative";
171
178
  }), () => e.abort();
172
179
  }, [
173
- n,
180
+ r,
174
181
  t,
175
- f
176
- ]), d({
177
- enabled: n && !l && !m,
182
+ p
183
+ ]), f({
184
+ enabled: r && !u && !h,
178
185
  inside: [t],
179
186
  escapeKey: !0,
180
187
  outsidePointer: !1,
181
- onDismiss: (e, t) => c(!1, {
188
+ onDismiss: (e, t) => l(!1, {
182
189
  reason: "escape",
183
190
  event: t
184
191
  })
185
- }), s(() => {
186
- if (!t || !n || !u || m) return;
192
+ }), c(() => {
193
+ if (!t || !r || !d || h) return;
187
194
  let e = new AbortController();
188
195
  return document.addEventListener("pointerdown", (e) => {
189
- i(e, [f]) || i(e, [t]) && !N(t, e) || c(!1, {
196
+ n(e, [p]) || n(e, [t]) && !F(t, e) || l(!1, {
190
197
  reason: "outside-pointer",
191
198
  event: e
192
199
  });
@@ -196,37 +203,38 @@ function M(e) {
196
203
  }), () => e.abort();
197
204
  }, [
198
205
  t,
199
- n,
200
- u,
201
- m,
202
- f,
203
- c
206
+ r,
207
+ d,
208
+ h,
209
+ p,
210
+ l
204
211
  ]);
205
212
  }
206
- function N(e, t) {
213
+ function F(e, t) {
214
+ if (t.target !== e) return !1;
207
215
  let n = e.getBoundingClientRect();
208
216
  return t.clientX < n.left || t.clientX > n.right || t.clientY < n.top || t.clientY > n.bottom;
209
217
  }
210
- function P(e) {
211
- let t = O("Dialog.Title");
212
- return s(() => t.register("title"), [t]), /* @__PURE__ */ C(m, {
218
+ function I(e) {
219
+ let t = A("Dialog.Title");
220
+ return c(() => t.register("title"), [t]), /* @__PURE__ */ T(g, {
213
221
  id: t.titleId,
214
222
  component: "dialog.title",
215
223
  ...e
216
224
  });
217
225
  }
218
- function F(e) {
219
- let t = O("Dialog.Description");
220
- return s(() => t.register("description"), [t]), /* @__PURE__ */ C(h, {
226
+ function L(e) {
227
+ let t = A("Dialog.Description");
228
+ return c(() => t.register("description"), [t]), /* @__PURE__ */ T(_, {
221
229
  id: t.descriptionId,
222
230
  component: "dialog.description",
223
231
  ...e
224
232
  });
225
233
  }
226
- P.displayName = "Dialog.Title", F.displayName = "Dialog.Description";
227
- var I = {
228
- Title: P,
229
- Description: F
230
- }, L = Object.assign(e(k, "Dialog"), I), R = Object.assign(e(A, "AlertDialog"), I);
234
+ I.displayName = "Dialog.Title", L.displayName = "Dialog.Description";
235
+ var R = {
236
+ Title: I,
237
+ Description: L
238
+ }, z = Object.assign(e(j, "Dialog"), R), B = Object.assign(e(M, "AlertDialog"), R);
231
239
  //#endregion
232
- export { R as AlertDialog, L as default };
240
+ export { B as AlertDialog, z as default };
@@ -1 +1 @@
1
- "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../react-shared.cjs"),t=require("../platform.cjs"),n=require("../box.cjs"),r=require("../reporting.cjs");let i=require("react");var a;(function(e){function t(e){if(!e)throw Error(`[box-kite] <Form> read its entries with no <form> element: its ref never reached the element.`);let t=Array.from(e.elements).reduce((e,t)=>{let n=t.name;return n?(e[n]||(e[n]=[]),e[n].push(t),e):e},{});return Object.entries(t).reduce((e,[t,r])=>{if(r.length===1){let i=r[0];n(e,t,i.type===`checkbox`||i.type===`radio`?i.checked:i.value)}else n(e,t,r.reduce((e,t)=>(t.type===`checkbox`||t.type===`radio`?t.checked&&e.push(t.value):e.push(t.value),e),[]));return e},{})}e.getFormEntries=t;function n(e,t,n){if(t.includes(`.`)){let r=t.split(`.`),i=e;r.forEach((e,t)=>{if(r.length>t+1){let t=e.match(/^(.+)\[(\d)\]$/);if(t){let[,e,n]=t;i[e]=i[e]||[],i[e][n]=i[e][n]||{},i=i[e][n]}else i[e]=i[e]||{},i=i[e]}else i[e]=n})}else e[t]=n}})(a||={});var o=a;function s(e,a){let{onSubmit:s,props:c,...l}=e,u=(0,i.useRef)(null),d=r.i(`form`),{ref:f,...p}=c??{},m=(0,i.useCallback)(e=>{u.current=e,t.l(a,e),t.l(f,e)},[a,f]),h=(0,i.useCallback)(e=>{e.preventDefault();let t=o.getFormEntries(u.current??e.currentTarget);s(t,e),d(`submit`,Object.keys(t),{reason:`submit`,event:e})},[s,d]);return n.useBoxElement({tag:`form`,...l,props:{...p,onSubmit:h}},m)}var c=e.f(s,`Form`);exports.default=c;
1
+ "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../react-shared.cjs"),t=require("../platform.cjs"),n=require("../box.cjs"),r=require("../reporting.cjs");let i=require("react");var a;(function(e){function t(e){if(!e)throw Error(`[box-kite] <Form> read its entries with no <form> element: its ref never reached the element.`);let t=Array.from(e.elements).reduce((e,t)=>{let n=t.name;return n?(e[n]||(e[n]=[]),e[n].push(t),e):e},{});return Object.entries(t).reduce((e,[t,r])=>{if(r.length===1){let i=r[0];n(e,t,i.type===`checkbox`||i.type===`radio`?i.checked:i.value)}else n(e,t,r.reduce((e,t)=>(t.type===`checkbox`||t.type===`radio`?t.checked&&e.push(t.value):e.push(t.value),e),[]));return e},{})}e.getFormEntries=t;function n(e,t,n){if(t.includes(`.`)){let r=t.split(`.`),i=e;r.forEach((e,t)=>{if(r.length>t+1){let t=e.match(/^(.+)\[(\d)\]$/);if(t){let[,e,n]=t;i[e]=i[e]||[],i[e][n]=i[e][n]||{},i=i[e][n]}else i[e]=i[e]||{},i=i[e]}else i[e]=n})}else e[t]=n}})(a||={});var o=a;function s(e,a){let{onSubmit:s,props:c,...l}=e,u=(0,i.useRef)(null),d=r.i(`form`),{ref:f,...p}=c??{},m=(0,i.useCallback)(e=>{u.current=e,t.d(a,e),t.d(f,e)},[a,f]),h=(0,i.useCallback)(e=>{e.preventDefault();let t=o.getFormEntries(u.current??e.currentTarget);s(t,e),d(`submit`,Object.keys(t),{reason:`submit`,event:e})},[s,d]);return n.useBoxElement({tag:`form`,...l,props:{...p,onSubmit:h}},m)}var c=e.f(s,`Form`);exports.default=c;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { f as e } from "../react-shared.mjs";
3
- import { l as t } from "../platform.mjs";
3
+ import { d as t } from "../platform.mjs";
4
4
  import { useBoxElement as n } from "../box.mjs";
5
5
  import { i as r } from "../reporting.mjs";
6
6
  import { useCallback as i, useRef as a } from "react";
@@ -1 +1 @@
1
- "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../react-shared.cjs"),t=require("../platform.cjs"),n=require("../effects.cjs"),r=require("../box.cjs"),i=require("../behavior.cjs"),a=require("../identity.cjs"),o=require("../keyboard.cjs"),s=require("../placement.cjs"),c=require("../reporting.cjs"),l=require("../layer.cjs"),u=require("./overlay.cjs");let d=require("react"),f=require("react/jsx-runtime");var p;(function(e){let t=e.ITEM_SELECTOR=`[role="menuitem"],[role="menuitemcheckbox"],[role="menuitemradio"]`;function n(e,t){return t instanceof Element&&t.closest(`[role="menu"]`)===e}e.owns=n;function r(e){return[...e.querySelectorAll(t)].filter(t=>n(e,t))}e.items=r;function i(e){return e.getAttribute(`aria-disabled`)===`true`}e.isDisabled=i;function a(e){return e.getAttribute(`aria-haspopup`)===`menu`}e.isSubTrigger=a;function s(e,t,n){if(e.length!==0)return e[t<0?n>0?0:e.length-1:((t+n)%e.length+e.length)%e.length]}e.step=s;function c(e,t,n){let r=o.t.target(t,n,e.length,t=>e[t].textContent??``);return r<0?void 0:e[r]}e.typeaheadTarget=c})(p||={});var m=p,h=(0,d.createContext)(null);function g(e){let t=(0,d.useContext)(h);if(!t)throw Error(`<${e}> must be rendered inside a <Menu>.`);return t}function _(e){let[t,n]=(0,d.useState)([]);return{panels:t,registerLayer:(0,d.useCallback)(t=>{n(e=>[...e,t]);let r=e?.(t);return()=>{n(e=>e.filter(e=>e!==t)),r?.()}},[e])}}var v=(0,d.createContext)(null);function y(e,t){let{trigger:n,children:r,open:a,defaultOpen:o=!1,onOpenChange:s,label:c,labelledBy:u,side:p=`bottom`,align:g=`start`,offset:v=1,flip:y=!0,matchWidth:x=!1,props:S,...C}=e,w=(0,d.useRef)(`first`),T=i.a(e=>{let t=m.items(e),n=w.current===`last`?t[t.length-1]:t[0];w.current=`first`,(n??e).focus()}),{panels:E,registerLayer:D}=_(),O=l.t({haspopup:`menu`,idPrefix:`menu`,id:C.id,open:a,defaultOpen:o,onOpenChange:s,interaction:{component:`menu`,type:`openChange`},onOpened:T,inside:E}),k=i.a(e=>{(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),w.current=e.key===`ArrowUp`?`last`:`first`,O.isOpen&&O.panelElement?T(O.panelElement):O.setOpen(!0,{reason:`trigger`,event:e}))}),A=(0,d.useMemo)(()=>({ref:O.trigger.ref,props:{...O.trigger.props,onKeyDown:k}}),[k,O.trigger]),j=i.a(e=>O.setOpen(!1,e)),M=(0,d.useMemo)(()=>({open:O.isOpen,closeAll:j,registerLayer:D}),[j,O.isOpen,D]);return(0,f.jsxs)(f.Fragment,{children:[n(A),(0,f.jsx)(h.Provider,{value:M,children:(0,f.jsx)(b,{layer:O,side:p,align:g,offset:v,flip:y,matchWidth:x,label:c,labelledBy:u??(c?void 0:O.triggerId),contentProps:S,...C,elementRef:t,children:r})})]})}function b(e){let{layer:n,side:a,align:c,offset:l,flip:p,matchWidth:h,label:_,labelledBy:v,contentProps:y,closeSelf:b,elementRef:x,children:S,...C}=e,{platform:w,isOpen:T,id:E,triggerElement:D,setPanel:O}=n,k=(0,d.useCallback)(e=>{O(e),t.l(x,e)},[O,x]),A=g(`Menu`),j=(0,d.useRef)({query:``,at:0}),M=s.t({side:a,align:c,offset:l,flip:p,matchWidth:h,anchor:D}),N={role:`menu`,"aria-label":_,"aria-labelledby":v,tabIndex:-1,onKeyDown:i.a(e=>{let n=e.currentTarget;if(!m.owns(n,e.target))return;let r=m.items(n),i=r.indexOf(document.activeElement),a=t=>{t&&(e.preventDefault(),t.focus())},s=t.m(n)?`ArrowRight`:`ArrowLeft`;switch(e.key){case`ArrowDown`:return a(m.step(r,i,1));case`ArrowUp`:return a(m.step(r,i,-1));case`Home`:return a(r[0]);case`End`:return a(r[r.length-1]);case`Tab`:return A.closeAll({reason:`tab`,event:e});case s:return b?(e.preventDefault(),b({reason:`trigger`,event:e})):void 0}if(o.t.isPrintable(e)){let t=o.t.push(j.current,e.key,e.timeStamp);a(m.typeaheadTarget(r,t,i))}}),onPointerOver:i.a(e=>{let t=e.currentTarget,n=e.target?.closest(m.ITEM_SELECTOR);!n||!m.owns(t,n)||n===document.activeElement||n.focus()}),...y};return w?(0,f.jsx)(r.default,{ref:k,component:`menu`,...C,variant:[C.variant,{topLayer:!0}],...M.layerProps,id:E,props:{popover:`auto`,...N},children:S}):T?(0,f.jsx)(u.default,{contentRef:k,anchor:D,side:a,align:c,offset:l,flip:p,matchWidth:h,component:`menu`,...C,id:E,props:N,children:S}):null}function x(e,o){let{label:s,children:u,disabled:p,side:v=`end`,align:y=`start`,offset:x=0,flip:C=!0,itemProps:w,props:T,...E}=e,D=g(`Menu.Sub`),O=a.t(`menu-sub`),k=i.a(e=>{(m.items(e)[0]??e).focus()}),A=i.a((e,t)=>{e&&t?.focus()}),{panels:j,registerLayer:M}=_(D.registerLayer),N=c.i(`menu.sub`),P=l.t({haspopup:`menu`,idPrefix:`menu-sub`,id:E.id,onOpened:k,onClosing:A,inside:j});n.n(()=>{if(!(!P.isOpen||!P.panelElement))return D.registerLayer(P.panelElement)},[P.isOpen,P.panelElement,D.registerLayer]),n.n(()=>{D.open||P.setOpen(!1,{reason:`imperative`})},[D.open,P.setOpen]),n.n(()=>{if(!P.isOpen)return;let e=new AbortController;return document.addEventListener(`focusin`,e=>{t.p(e,[P.panelElement,P.triggerElement])||P.setOpen(!1,{reason:`imperative`,event:e})},{signal:e.signal}),()=>e.abort()},[P.isOpen,P.panelElement,P.triggerElement,P.setOpen]);let F=i.a(e=>{let n=t.m(e.currentTarget)?`ArrowLeft`:`ArrowRight`;p||e.key!==n||(e.preventDefault(),P.setOpen(!0,{reason:`trigger`,event:e}),N(`openChange`,!0,{reason:`keyboard`,event:e,item:S(s)}))}),I=i.a(e=>{p||P.setOpen(!0,{reason:`trigger`,event:e})}),L=(0,d.useMemo)(()=>({open:P.isOpen,closeAll:D.closeAll,registerLayer:M}),[P.isOpen,D.closeAll,M]);return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(r.default,{tag:`button`,ref:p?void 0:P.trigger.ref,component:`menu.item`,variant:{sub:!0},id:O,props:{type:`button`,role:`menuitem`,tabIndex:-1,"aria-disabled":p||void 0,...P.trigger.props,...w,onKeyDown:F,onPointerEnter:I},children:[s,(0,f.jsx)(r.default,{component:`menu.arrow`})]}),!p&&(0,f.jsx)(h.Provider,{value:L,children:(0,f.jsx)(b,{layer:P,side:v,align:y,offset:x,flip:C,matchWidth:!1,labelledBy:O,contentProps:T,closeSelf:e=>P.setOpen(!1,e),...E,elementRef:o,children:u})})]})}var S=(e,t)=>t??(typeof e==`string`?e:void 0);function C(e){let{onSelect:t,disabled:n,closeOnSelect:a=!0,value:o,props:s,children:l,...u}=e,d=g(`Menu.Item`),p=c.i(`menu.item`),m=i.a(e=>{n||(t?.(e),p(`select`,S(l,o),{reason:`select`,event:e}),a&&d.closeAll({reason:`select`,event:e}))});return(0,f.jsx)(r.default,{tag:`button`,component:`menu.item`,...u,props:{type:`button`,role:`menuitem`,tabIndex:-1,"aria-disabled":n||void 0,...s,onClick:m},children:l})}function w(e){let{checked:t,defaultChecked:n=!1,onCheckedChange:a,disabled:o,closeOnSelect:s=!1,value:l,props:u,children:d,...p}=e,m=g(`Menu.CheckboxItem`),[h,_]=i.i({value:t,defaultValue:n,onChange:a}),v=c.i(`menu.checkboxItem`),y=i.a(e=>{o||(_(!h,{reason:`select`,event:e}),v(`checkedChange`,!h,{reason:`select`,event:e,item:S(d,l)}),s&&m.closeAll({reason:`select`,event:e}))});return(0,f.jsxs)(r.default,{tag:`button`,component:`menu.item`,...p,props:{type:`button`,role:`menuitemcheckbox`,tabIndex:-1,"aria-checked":h,"aria-disabled":o||void 0,...u,onClick:y},children:[(0,f.jsx)(r.default,{component:`menu.indicator`,children:h&&(0,f.jsx)(r.default,{component:`menu.check`})}),d]})}function T(e){let{label:t,value:n,defaultValue:r=``,onValueChange:a,children:o,...s}=e,[l,u]=c.a({value:n,defaultValue:r,onChange:a,interaction:{component:`menu.radioGroup`,type:`valueChange`}}),p=i.a((e,t)=>u(e,{reason:`select`,event:t})),m=(0,d.useMemo)(()=>({value:l,select:p}),[l,p]);return(0,f.jsx)(v.Provider,{value:m,children:(0,f.jsx)(D,{label:t,...s,children:o})})}function E(e){let{value:t,disabled:n,closeOnSelect:a=!1,props:o,children:s,...c}=e,l=g(`Menu.RadioItem`),u=(0,d.useContext)(v);if(!u)throw Error(`<Menu.RadioItem> must be rendered inside a <Menu.RadioGroup>.`);let p=u.value===t,m=i.a(e=>{n||(u.select(t,e),a&&l.closeAll({reason:`select`,event:e}))});return(0,f.jsxs)(r.default,{tag:`button`,component:`menu.item`,...c,props:{type:`button`,role:`menuitemradio`,tabIndex:-1,"aria-checked":p,"aria-disabled":n||void 0,...o,onClick:m},children:[(0,f.jsx)(r.default,{component:`menu.indicator`,children:p&&(0,f.jsx)(r.default,{component:`menu.dot`})}),s]})}function D(e){let{label:t,props:n,children:i,...o}=e,s=a.t(`menu-group`);return(0,f.jsxs)(r.default,{component:`menu.group`,...o,props:{role:`group`,"aria-labelledby":t?s:void 0,...n},children:[t&&(0,f.jsx)(r.default,{component:`menu.label`,id:s,props:{role:`presentation`},children:t}),i]})}function O(e){let{props:t,...n}=e;return(0,f.jsx)(r.default,{component:`menu.separator`,...n,props:{role:`separator`,...t}})}C.displayName=`Menu.Item`,w.displayName=`Menu.CheckboxItem`,T.displayName=`Menu.RadioGroup`,E.displayName=`Menu.RadioItem`,D.displayName=`Menu.Group`,O.displayName=`Menu.Separator`;var k=Object.assign(e.f(y,`Menu`),{Item:C,CheckboxItem:w,RadioGroup:T,RadioItem:E,Group:D,Separator:O,Sub:e.f(x,`Menu.Sub`)});exports.default=k;
1
+ "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../react-shared.cjs"),t=require("../platform.cjs"),n=require("../effects.cjs"),r=require("../box.cjs"),i=require("../behavior.cjs"),a=require("../identity.cjs"),o=require("../keyboard.cjs"),s=require("../placement.cjs"),c=require("../reporting.cjs"),l=require("../layer.cjs"),u=require("./overlay.cjs"),d=require("../motion.cjs");let f=require("react"),p=require("react/jsx-runtime");var m;(function(e){let t=e.ITEM_SELECTOR=`[role="menuitem"],[role="menuitemcheckbox"],[role="menuitemradio"]`;function n(e,t){return t instanceof Element&&t.closest(`[role="menu"]`)===e}e.owns=n;function r(e){return[...e.querySelectorAll(t)].filter(t=>n(e,t))}e.items=r;function i(e){return e.getAttribute(`aria-disabled`)===`true`}e.isDisabled=i;function a(e){return e.getAttribute(`aria-haspopup`)===`menu`}e.isSubTrigger=a;function s(e,t,n){if(e.length!==0)return e[t<0?n>0?0:e.length-1:((t+n)%e.length+e.length)%e.length]}e.step=s;function c(e,t,n){let r=o.t.target(t,n,e.length,t=>e[t].textContent??``);return r<0?void 0:e[r]}e.typeaheadTarget=c})(m||={});var h=m,g=(0,f.createContext)(null);function _(e){let t=(0,f.useContext)(g);if(!t)throw Error(`<${e}> must be rendered inside a <Menu>.`);return t}function v(e){let[t,n]=(0,f.useState)([]);return{panels:t,registerLayer:(0,f.useCallback)(t=>{n(e=>[...e,t]);let r=e?.(t);return()=>{n(e=>e.filter(e=>e!==t)),r?.()}},[e])}}var y=(0,f.createContext)(null);function b(e,t){let{trigger:n,children:r,open:a,defaultOpen:o=!1,onOpenChange:s,label:c,labelledBy:u,side:d=`bottom`,align:m=`start`,offset:_=1,flip:y=!0,matchWidth:b=!1,props:S,...C}=e,w=(0,f.useRef)(`first`),T=i.a(e=>{let t=h.items(e),n=w.current===`last`?t[t.length-1]:t[0];w.current=`first`,(n??e).focus()}),{panels:E,registerLayer:D}=v(),O=l.t({haspopup:`menu`,idPrefix:`menu`,id:C.id,open:a,defaultOpen:o,onOpenChange:s,interaction:{component:`menu`,type:`openChange`},onOpened:T,inside:E}),k=i.a(e=>{(e.key===`ArrowDown`||e.key===`ArrowUp`)&&(e.preventDefault(),w.current=e.key===`ArrowUp`?`last`:`first`,O.isOpen&&O.panelElement?T(O.panelElement):O.setOpen(!0,{reason:`trigger`,event:e}))}),A=(0,f.useMemo)(()=>({ref:O.trigger.ref,props:{...O.trigger.props,onKeyDown:k}}),[k,O.trigger]),j=i.a(e=>O.setOpen(!1,e)),M=(0,f.useMemo)(()=>({open:O.isOpen,closeAll:j,registerLayer:D}),[j,O.isOpen,D]);return(0,p.jsxs)(p.Fragment,{children:[n(A),(0,p.jsx)(g.Provider,{value:M,children:(0,p.jsx)(x,{layer:O,side:d,align:m,offset:_,flip:y,matchWidth:b,label:c,labelledBy:u??(c?void 0:O.triggerId),contentProps:S,...C,elementRef:t,children:r})})]})}function x(e){let{layer:n,side:a,align:c,offset:l,flip:m,matchWidth:g,label:v,labelledBy:y,contentProps:b,closeSelf:x,elementRef:S,children:C,...w}=e,{platform:T,isOpen:E,id:D,triggerElement:O,setPanel:k}=n,A=(0,f.useCallback)(e=>{k(e),t.d(S,e)},[k,S]),j=_(`Menu`),M=(0,f.useRef)({query:``,at:0}),N=s.t({side:a,align:c,offset:l,flip:m,matchWidth:g,anchor:O}),P=d.t(C,E,n.panelElement),F={role:`menu`,"aria-label":v,"aria-labelledby":y,tabIndex:-1,onKeyDown:i.a(e=>{let n=e.currentTarget;if(!h.owns(n,e.target))return;let r=h.items(n),i=r.indexOf(document.activeElement),a=t=>{t&&(e.preventDefault(),t.focus())},s=t.g(n)?`ArrowRight`:`ArrowLeft`;switch(e.key){case`ArrowDown`:return a(h.step(r,i,1));case`ArrowUp`:return a(h.step(r,i,-1));case`Home`:return a(r[0]);case`End`:return a(r[r.length-1]);case`Tab`:return j.closeAll({reason:`tab`,event:e});case s:return x?(e.preventDefault(),x({reason:`trigger`,event:e})):void 0}if(o.t.isPrintable(e)){let t=o.t.push(M.current,e.key,e.timeStamp);a(h.typeaheadTarget(r,t,i))}}),onPointerOver:i.a(e=>{let t=e.currentTarget,n=e.target?.closest(h.ITEM_SELECTOR);!n||!h.owns(t,n)||n===document.activeElement||n.focus()}),...b};return T?(0,p.jsx)(r.default,{ref:A,component:`menu`,...w,variant:[w.variant,{topLayer:!0}],...N.layerProps,id:D,props:{popover:`auto`,...F},children:P}):E?(0,p.jsx)(u.default,{contentRef:A,anchor:O,side:a,align:c,offset:l,flip:m,matchWidth:g,component:`menu`,...w,id:D,props:F,children:C}):null}function S(e,o){let{label:s,children:u,disabled:d,side:m=`end`,align:y=`start`,offset:b=0,flip:S=!0,itemProps:w,props:T,...E}=e,D=_(`Menu.Sub`),O=a.t(`menu-sub`),k=i.a(e=>{(h.items(e)[0]??e).focus()}),A=i.a((e,t)=>{e&&t?.focus()}),{panels:j,registerLayer:M}=v(D.registerLayer),N=c.i(`menu.sub`),P=l.t({haspopup:`menu`,idPrefix:`menu-sub`,id:E.id,onOpened:k,onClosing:A,inside:j});n.n(()=>{if(!(!P.isOpen||!P.panelElement))return D.registerLayer(P.panelElement)},[P.isOpen,P.panelElement,D.registerLayer]),n.n(()=>{D.open||P.setOpen(!1,{reason:`imperative`})},[D.open,P.setOpen]),n.n(()=>{if(!P.isOpen)return;let e=new AbortController;return document.addEventListener(`focusin`,e=>{t.h(e,[P.panelElement,P.triggerElement])||P.setOpen(!1,{reason:`imperative`,event:e})},{signal:e.signal}),()=>e.abort()},[P.isOpen,P.panelElement,P.triggerElement,P.setOpen]);let F=i.a(e=>{let n=t.g(e.currentTarget)?`ArrowLeft`:`ArrowRight`;d||e.key!==n||(e.preventDefault(),P.setOpen(!0,{reason:`trigger`,event:e}),N(`openChange`,!0,{reason:`keyboard`,event:e,item:C(s)}))}),I=i.a(e=>{d||P.setOpen(!0,{reason:`trigger`,event:e})}),L=(0,f.useMemo)(()=>({open:P.isOpen,closeAll:D.closeAll,registerLayer:M}),[P.isOpen,D.closeAll,M]);return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(r.default,{tag:`button`,ref:d?void 0:P.trigger.ref,component:`menu.item`,variant:{sub:!0},id:O,props:{type:`button`,role:`menuitem`,tabIndex:-1,"aria-disabled":d||void 0,...P.trigger.props,...w,onKeyDown:F,onPointerEnter:I},children:[s,(0,p.jsx)(r.default,{component:`menu.arrow`})]}),!d&&(0,p.jsx)(g.Provider,{value:L,children:(0,p.jsx)(x,{layer:P,side:m,align:y,offset:b,flip:S,matchWidth:!1,labelledBy:O,contentProps:T,closeSelf:e=>P.setOpen(!1,e),...E,elementRef:o,children:u})})]})}var C=(e,t)=>t??(typeof e==`string`?e:void 0);function w(e){let{onSelect:t,disabled:n,closeOnSelect:a=!0,value:o,props:s,children:l,...u}=e,d=_(`Menu.Item`),f=c.i(`menu.item`),m=i.a(e=>{n||(t?.(e),f(`select`,C(l,o),{reason:`select`,event:e}),a&&d.closeAll({reason:`select`,event:e}))});return(0,p.jsx)(r.default,{tag:`button`,component:`menu.item`,...u,props:{type:`button`,role:`menuitem`,tabIndex:-1,"aria-disabled":n||void 0,...s,onClick:m},children:l})}function T(e){let{checked:t,defaultChecked:n=!1,onCheckedChange:a,disabled:o,closeOnSelect:s=!1,value:l,props:u,children:d,...f}=e,m=_(`Menu.CheckboxItem`),[h,g]=i.i({value:t,defaultValue:n,onChange:a}),v=c.i(`menu.checkboxItem`),y=i.a(e=>{o||(g(!h,{reason:`select`,event:e}),v(`checkedChange`,!h,{reason:`select`,event:e,item:C(d,l)}),s&&m.closeAll({reason:`select`,event:e}))});return(0,p.jsxs)(r.default,{tag:`button`,component:`menu.item`,...f,props:{type:`button`,role:`menuitemcheckbox`,tabIndex:-1,"aria-checked":h,"aria-disabled":o||void 0,...u,onClick:y},children:[(0,p.jsx)(r.default,{component:`menu.indicator`,children:h&&(0,p.jsx)(r.default,{component:`menu.check`})}),d]})}function E(e){let{label:t,value:n,defaultValue:r=``,onValueChange:a,children:o,...s}=e,[l,u]=c.a({value:n,defaultValue:r,onChange:a,interaction:{component:`menu.radioGroup`,type:`valueChange`}}),d=i.a((e,t)=>u(e,{reason:`select`,event:t})),m=(0,f.useMemo)(()=>({value:l,select:d}),[l,d]);return(0,p.jsx)(y.Provider,{value:m,children:(0,p.jsx)(O,{label:t,...s,children:o})})}function D(e){let{value:t,disabled:n,closeOnSelect:a=!1,props:o,children:s,...c}=e,l=_(`Menu.RadioItem`),u=(0,f.useContext)(y);if(!u)throw Error(`<Menu.RadioItem> must be rendered inside a <Menu.RadioGroup>.`);let d=u.value===t,m=i.a(e=>{n||(u.select(t,e),a&&l.closeAll({reason:`select`,event:e}))});return(0,p.jsxs)(r.default,{tag:`button`,component:`menu.item`,...c,props:{type:`button`,role:`menuitemradio`,tabIndex:-1,"aria-checked":d,"aria-disabled":n||void 0,...o,onClick:m},children:[(0,p.jsx)(r.default,{component:`menu.indicator`,children:d&&(0,p.jsx)(r.default,{component:`menu.dot`})}),s]})}function O(e){let{label:t,props:n,children:i,...o}=e,s=a.t(`menu-group`);return(0,p.jsxs)(r.default,{component:`menu.group`,...o,props:{role:`group`,"aria-labelledby":t?s:void 0,...n},children:[t&&(0,p.jsx)(r.default,{component:`menu.label`,id:s,props:{role:`presentation`},children:t}),i]})}function k(e){let{props:t,...n}=e;return(0,p.jsx)(r.default,{component:`menu.separator`,...n,props:{role:`separator`,...t}})}w.displayName=`Menu.Item`,T.displayName=`Menu.CheckboxItem`,E.displayName=`Menu.RadioGroup`,D.displayName=`Menu.RadioItem`,O.displayName=`Menu.Group`,k.displayName=`Menu.Separator`;var A=Object.assign(e.f(b,`Menu`),{Item:w,CheckboxItem:T,RadioGroup:E,RadioItem:D,Group:O,Separator:k,Sub:e.f(S,`Menu.Sub`)});exports.default=A;