@box-kite/react 2.2.17 → 2.3.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 (80) hide show
  1. package/.claude/rules/box-kite-rules.md +6 -4
  2. package/.claude/skills/box-kite/SKILL.md +6 -4
  3. package/.claude/skills/box-kite/references/components.md +1 -1
  4. package/.claude/skills/box-kite/references/patterns.md +1 -1
  5. package/.claude/skills/box-kite/references/styling.md +2 -2
  6. package/.cursor/rules/box-kite.mdc +6 -4
  7. package/AGENTS.md +6 -4
  8. package/BOX_AI_CONTEXT.md +40 -3
  9. package/BOX_KITE_AI_CONTEXT.md +40 -3
  10. package/behavior.cjs +1 -1
  11. package/behavior.mjs +62 -62
  12. package/box.cjs +1 -1
  13. package/box.d.ts +1 -0
  14. package/box.mjs +1 -1
  15. package/catalog.cjs +1 -1
  16. package/catalog.mjs +4 -4
  17. package/client.cjs +1 -1
  18. package/client.mjs +11 -11
  19. package/components/accordion.cjs +1 -1
  20. package/components/accordion.mjs +1 -1
  21. package/components/calendar.cjs +1 -1
  22. package/components/calendar.mjs +21 -20
  23. package/components/combobox.cjs +1 -1
  24. package/components/combobox.mjs +1 -1
  25. package/components/dashboard.cjs +1 -1
  26. package/components/dashboard.mjs +12 -12
  27. package/components/dataGrid.cjs +2 -2
  28. package/components/dataGrid.mjs +5 -5
  29. package/components/dateField.cjs +1 -1
  30. package/components/dateField.mjs +6 -6
  31. package/components/datePicker.cjs +1 -1
  32. package/components/datePicker.mjs +118 -116
  33. package/components/dialog.cjs +1 -1
  34. package/components/dialog.d.ts +1 -1
  35. package/components/dialog.mjs +108 -101
  36. package/components/dropdown.cjs +1 -1
  37. package/components/dropdown.mjs +8 -3
  38. package/components/form.cjs +1 -1
  39. package/components/form.mjs +1 -1
  40. package/components/menu.cjs +1 -1
  41. package/components/menu.mjs +10 -10
  42. package/components/overlay.cjs +1 -1
  43. package/components/overlay.mjs +5 -5
  44. package/components/popover.cjs +1 -1
  45. package/components/popover.d.ts +8 -2
  46. package/components/popover.mjs +58 -55
  47. package/components/radioGroup.cjs +1 -1
  48. package/components/radioGroup.mjs +1 -1
  49. package/components/slider.cjs +1 -1
  50. package/components/slider.mjs +8 -8
  51. package/components/sortableList.cjs +1 -1
  52. package/components/sortableList.mjs +1 -1
  53. package/components/swipeItem.cjs +1 -1
  54. package/components/swipeItem.mjs +10 -10
  55. package/components/tabs.cjs +1 -1
  56. package/components/tabs.mjs +9 -9
  57. package/components/toaster.cjs +1 -1
  58. package/components/toaster.mjs +133 -115
  59. package/components/tooltip.cjs +1 -1
  60. package/components/tooltip.mjs +1 -1
  61. package/components/virtualList.cjs +1 -1
  62. package/components/virtualList.mjs +1 -1
  63. package/docs/props.md +6 -6
  64. package/interactionListening.cjs +1 -1
  65. package/interactionListening.mjs +1 -1
  66. package/layer.cjs +1 -1
  67. package/layer.mjs +17 -14
  68. package/package.json +2 -2
  69. package/placement.cjs +1 -1
  70. package/placement.mjs +10 -10
  71. package/platform.cjs +1 -1
  72. package/platform.mjs +23 -11
  73. package/react-shared.cjs +1 -1
  74. package/react-shared.mjs +1 -1
  75. package/rsc.cjs +1 -1
  76. package/rsc.d.ts +1 -0
  77. package/rsc.mjs +1 -1
  78. package/scrolling.cjs +1 -1
  79. package/scrolling.mjs +1 -1
  80. package/utils/dom/domUtils.d.ts +9 -0
@@ -1,44 +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 { t as m } from "../motion.mjs";
11
- import { H2 as h, P as g } from "./semantics.mjs";
12
- import { createContext as _, useCallback as v, useContext as y, useMemo as b, useRef as x, useState as S } from "react";
13
- import { Fragment as C, jsx as w, jsxs as T } from "react/jsx-runtime";
3
+ import { d as t, g as n, h 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";
14
14
  //#region src/react/dialog/useScrollLock.ts
15
- var E = 0;
16
- function D(e) {
17
- let { classNames: t, styleElements: n } = o({ overflow: "hidden" }, !1), i = t.slice(1).join(" ");
18
- return s(() => {
19
- let t = r();
20
- if (!(!e || !t || !i)) return E += 1, t.classList.add(i), () => {
21
- --E, E === 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);
22
22
  };
23
- }, [e, i]), n;
23
+ }, [e, r]), n;
24
24
  }
25
25
  //#endregion
26
26
  //#region src/components/dialog.tsx
27
- var O = _(null);
28
- function k(e) {
29
- let t = y(O);
27
+ var k = v(null);
28
+ function A(e) {
29
+ let t = b(k);
30
30
  if (!t) throw Error(`<${e}> must be rendered inside a <Dialog>.`);
31
31
  return t;
32
32
  }
33
- function A(e, t) {
34
- return /* @__PURE__ */ w(M, {
33
+ function j(e, t) {
34
+ return /* @__PURE__ */ T(N, {
35
35
  role: "dialog",
36
36
  ...e,
37
37
  elementRef: t
38
38
  });
39
39
  }
40
- function j(e, t) {
41
- return /* @__PURE__ */ w(M, {
40
+ function M(e, t) {
41
+ return /* @__PURE__ */ T(N, {
42
42
  role: "alertdialog",
43
43
  ...e,
44
44
  modal: !0,
@@ -46,55 +46,55 @@ function j(e, t) {
46
46
  elementRef: t
47
47
  });
48
48
  }
49
- function M(e) {
50
- let { role: r, trigger: i, children: a, open: o, defaultOpen: d = !1, onOpenChange: h, label: g, labelledBy: _, describedBy: y, modal: x = !0, dismissible: E = !0, lockScroll: k = x, initialFocus: A, elementRef: j, props: M, ...P } = e, F = f("dialog"), I = P.id ?? F, [L, R] = 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({
51
51
  value: o,
52
- defaultValue: d,
53
- onChange: h,
52
+ defaultValue: s,
53
+ onChange: f,
54
54
  interaction: {
55
- component: r === "alertdialog" ? "alertDialog" : "dialog",
55
+ component: n === "alertdialog" ? "alertDialog" : "dialog",
56
56
  type: "openChange"
57
57
  }
58
- }), [z, B] = S(null), V = v((e) => {
59
- B(e), n(j, e);
60
- }, [j]), [H, U] = S(null), [W, G] = S(!1), [K, q] = S({
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({
61
61
  title: 0,
62
62
  description: 0
63
- }), J = D(L && k);
64
- u({
63
+ }), J = O(L && D);
64
+ d({
65
65
  enabled: L,
66
66
  returnTo: H
67
67
  });
68
- let Y = m(a, L, z), X = v((e) => (q((t) => ({
68
+ let Y = h(a, L, z), X = y((e) => (q((t) => ({
69
69
  ...t,
70
70
  [e]: t[e] + 1
71
71
  })), () => q((t) => ({
72
72
  ...t,
73
73
  [e]: t[e] - 1
74
- }))), []), Z = b(() => ({
74
+ }))), []), Z = x(() => ({
75
75
  titleId: `${I}-title`,
76
76
  descriptionId: `${I}-description`,
77
77
  register: X
78
78
  }), [I, X]);
79
- N({
79
+ P({
80
80
  dialog: z,
81
81
  isOpen: L,
82
82
  domOpen: W,
83
83
  setDomOpen: G,
84
84
  setOpen: R,
85
- modal: x,
86
- dismissible: E,
85
+ modal: b,
86
+ dismissible: S,
87
87
  triggerElement: H
88
- }), s(() => {
89
- let e = t(A);
88
+ }), c(() => {
89
+ let e = r(A);
90
90
  !L || !e || e.focus();
91
91
  }, [L, A]);
92
- let Q = l((e) => {
92
+ let Q = u((e) => {
93
93
  R((e) => !e, {
94
94
  reason: "trigger",
95
95
  event: e
96
96
  });
97
- }), $ = b(() => ({
97
+ }), $ = x(() => ({
98
98
  ref: U,
99
99
  props: {
100
100
  "aria-expanded": L,
@@ -106,23 +106,23 @@ function M(e) {
106
106
  I,
107
107
  Q,
108
108
  L
109
- ]), ee = P;
110
- return /* @__PURE__ */ T(C, { children: [
109
+ ]), ee = N;
110
+ return /* @__PURE__ */ E(w, { children: [
111
111
  J,
112
112
  i?.($),
113
- /* @__PURE__ */ w(O.Provider, {
113
+ /* @__PURE__ */ T(k.Provider, {
114
114
  value: Z,
115
- children: /* @__PURE__ */ w(c, {
115
+ children: /* @__PURE__ */ T(l, {
116
116
  ref: V,
117
117
  tag: "dialog",
118
118
  component: "dialog",
119
119
  ...ee,
120
120
  id: I,
121
121
  props: {
122
- role: r,
122
+ role: n,
123
123
  "aria-label": K.title || _ ? void 0 : g,
124
124
  "aria-labelledby": _ ?? (K.title ? Z.titleId : void 0),
125
- "aria-describedby": y ?? (K.description ? Z.descriptionId : void 0),
125
+ "aria-describedby": v ?? (K.description ? Z.descriptionId : void 0),
126
126
  ...M
127
127
  },
128
128
  children: Y
@@ -130,64 +130,70 @@ function M(e) {
130
130
  })
131
131
  ] });
132
132
  }
133
- function N(e) {
134
- let { dialog: t, isOpen: n, domOpen: r, setDomOpen: o, setOpen: c, modal: l, dismissible: u, triggerElement: f } = e, p = x("imperative"), m = a(), h = u ? "any" : "closerequest";
135
- s(() => {
136
- !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());
137
137
  }, [
138
138
  t,
139
- n,
140
139
  r,
141
- l,
142
- o
143
- ]), 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(() => {
144
150
  if (!t) return;
145
151
  let e = new AbortController();
146
152
  return t.addEventListener("close", (e) => {
147
- o(!1), c(!1, {
148
- reason: p.current,
153
+ s(!1), l(!1, {
154
+ reason: m.current,
149
155
  event: e
150
- }), p.current = "imperative";
156
+ }), m.current = "imperative";
151
157
  }, { signal: e.signal }), () => e.abort();
152
158
  }, [
153
159
  t,
154
- o,
155
- c
156
- ]), s(() => {
157
- 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");
158
164
  }, [
159
165
  t,
160
- m,
161
- h
162
- ]), s(() => {
163
- if (!n || !t) return;
164
- 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, {
165
171
  signal: e.signal,
166
172
  capture: !0
167
173
  });
168
- return r("keydown", (e) => {
169
- e.key === "Escape" && (p.current = "escape");
170
- }), r("pointerdown", (e) => {
171
- i(e, [f]) ? p.current = "trigger" : !i(e, [t]) || P(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";
172
178
  }), () => e.abort();
173
179
  }, [
174
- n,
180
+ r,
175
181
  t,
176
- f
177
- ]), d({
178
- enabled: n && !l && !m,
182
+ p
183
+ ]), f({
184
+ enabled: r && !u && !h,
179
185
  inside: [t],
180
186
  escapeKey: !0,
181
187
  outsidePointer: !1,
182
- onDismiss: (e, t) => c(!1, {
188
+ onDismiss: (e, t) => l(!1, {
183
189
  reason: "escape",
184
190
  event: t
185
191
  })
186
- }), s(() => {
187
- if (!t || !n || !u || m) return;
192
+ }), c(() => {
193
+ if (!t || !r || !d || h) return;
188
194
  let e = new AbortController();
189
195
  return document.addEventListener("pointerdown", (e) => {
190
- i(e, [f]) || i(e, [t]) && !P(t, e) || c(!1, {
196
+ n(e, [p]) || n(e, [t]) && !F(t, e) || l(!1, {
191
197
  reason: "outside-pointer",
192
198
  event: e
193
199
  });
@@ -197,37 +203,38 @@ function N(e) {
197
203
  }), () => e.abort();
198
204
  }, [
199
205
  t,
200
- n,
201
- u,
202
- m,
203
- f,
204
- c
206
+ r,
207
+ d,
208
+ h,
209
+ p,
210
+ l
205
211
  ]);
206
212
  }
207
- function P(e, t) {
213
+ function F(e, t) {
214
+ if (t.target !== e) return !1;
208
215
  let n = e.getBoundingClientRect();
209
216
  return t.clientX < n.left || t.clientX > n.right || t.clientY < n.top || t.clientY > n.bottom;
210
217
  }
211
- function F(e) {
212
- let t = k("Dialog.Title");
213
- return s(() => t.register("title"), [t]), /* @__PURE__ */ w(h, {
218
+ function I(e) {
219
+ let t = A("Dialog.Title");
220
+ return c(() => t.register("title"), [t]), /* @__PURE__ */ T(g, {
214
221
  id: t.titleId,
215
222
  component: "dialog.title",
216
223
  ...e
217
224
  });
218
225
  }
219
- function I(e) {
220
- let t = k("Dialog.Description");
221
- return s(() => t.register("description"), [t]), /* @__PURE__ */ w(g, {
226
+ function L(e) {
227
+ let t = A("Dialog.Description");
228
+ return c(() => t.register("description"), [t]), /* @__PURE__ */ T(_, {
222
229
  id: t.descriptionId,
223
230
  component: "dialog.description",
224
231
  ...e
225
232
  });
226
233
  }
227
- F.displayName = "Dialog.Title", I.displayName = "Dialog.Description";
228
- var L = {
229
- Title: F,
230
- Description: I
231
- }, R = Object.assign(e(A, "Dialog"), L), z = Object.assign(e(j, "AlertDialog"), L);
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);
232
239
  //#endregion
233
- export { z as AlertDialog, R 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("../effects.cjs"),t=require("../box.cjs"),n=require("../behavior.cjs"),r=require("../identity.cjs"),i=require("../reporting.cjs"),a=require("./baseSvg.cjs"),o=require("./button.cjs"),s=require("./flex.cjs"),c=require("./checkbox.cjs"),l=require("./overlay.cjs"),u=require("./presence.cjs"),d=require("./textbox.cjs");let f=require("react"),p=require("react/jsx-runtime");var m=(0,f.createContext)(null);function h(){let e=(0,f.useContext)(m);if(!e)throw Error(`Dropdown sub-components must be used within Dropdown`);return e}var ee={item:`dropdown.item`,unselect:`dropdown.unselect`,selectAll:`dropdown.selectAll`};function g({row:e,index:n}){let{valueToUse:r,multiple:i,variant:a,showCheckbox:o,selectRow:s,optionId:l,activeIndex:u,rowRef:d,isRowDisabled:f}=h(),m=e.kind===`item`,g=f(n),_=m?r.includes(e.element.props.value):e.kind===`unselect`&&r.length===0,{value:v,onClick:y,children:b,...x}=e.element.props,S=o&&i&&m;return(0,p.jsx)(t.default,{ref:d(n),component:ee[e.kind],variant:[a,m?{multiple:i,highlighted:n===u}:{highlighted:n===u}],selected:_,...x,id:l(n),children:S?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(c.default,{readOnly:!0,checked:_,me:2,props:{tabIndex:-1,"aria-hidden":!0}}),b]}):b,props:{role:`option`,...g?{"aria-disabled":!0}:{},...x.props,onClick:g?void 0:e=>{y?.(e),s(n,e)}}})}var _=(0,f.memo)(g,(e,t)=>e.row.element===t.row.element&&e.index===t.index);function v(e,t,n){return e?{role:`listbox`,"aria-labelledby":n,...t?{"aria-multiselectable":!0}:{}}:{role:`status`}}function y(e){let{presence:n,rows:r,emptyItem:i,triggerRef:a,popupRef:o,listboxId:s,labelledBy:c,itemsProps:u}=e,{present:d,ref:m,props:ee}=n,{multiple:g,variant:y}=h(),[x,S]=(0,f.useState)(!1),te=(0,f.useCallback)(e=>S(e===`top`),[]);return(0,p.jsx)(l.default,{ref:o,anchor:a,side:`bottom`,align:`start`,offset:.5,onSideChange:te,children:(0,p.jsxs)(t.default,{ref:m,component:`dropdown.items`,...u,variant:[y,{closed:!d&&!x,closedUp:!d&&x}],id:s,props:{...v(r.length>0,g,c),...ee},children:[r.map((e,t)=>(0,p.jsx)(_,{row:e,index:t},b(e,t))),r.length===0&&i&&(0,p.jsx)(t.default,{component:`dropdown.emptyItem`,variant:y,...i.props})]})})}function b(e,t){return e.kind===`item`?e.element.props.value:`${e.kind}-${t}`}y.displayName=`DropdownItems`;function x({id:e,value:t,onValueChange:n,placeholder:r,inputRef:i,comboboxProps:a,onOpen:o}){let c=(0,f.useCallback)(e=>n(e.target.value),[n]),l=(0,f.useCallback)(e=>{e.stopPropagation(),o(e)},[o]);return(0,p.jsx)(s.default,{ai:`center`,position:`absolute`,inset:0,p:3,children:(0,p.jsx)(d.default,{clean:!0,id:e,value:t,placeholder:r,onChange:c,ref:i,color:`currentColor`,width:`fit`,props:{role:`combobox`,"aria-autocomplete":`list`,autoComplete:`off`,spellCheck:!1,...a,onClick:l}})})}function S(e){if(e==null)return``;if(typeof e==`object`){let t=e.props?.children;return t==null?``:typeof t==`object`?(Array.isArray(t)?t:[t]).map(e=>S(e)).join(``):t.toString()}return e.toString()}function te(e){return e==null?[]:Array.isArray(e)?e:[e]}function ne(e){let t=e?.props?.disabled;return(Array.isArray(t)?t[0]:t)===!0}function re(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey}var ie=new Set([` `,`Home`,`End`,`ArrowLeft`,`ArrowRight`]);function ae(c,l){let{name:h,defaultValue:ee,value:g,defaultOpen:_,multiple:v=!1,isSearchable:b,searchPlaceholder:ae,children:C,hideIcon:w,showCheckbox:oe=!1,label:T,labelProps:se,itemsProps:ce,iconProps:le,onValueChange:ue,onChange:de,props:fe,...E}=c,D=(0,f.useRef)(void 0),pe=n.a((e,t)=>{ue?.(v?e:e[0],t),de?.(D.current,e)}),me=`value`in c,he=(0,f.useMemo)(()=>me?te(g):void 0,[me,g]),[O,k]=i.a({value:he,defaultValue:()=>te(ee),onChange:pe,interaction:{component:`dropdown`,type:`valueChange`}}),[ge,_e]=(0,f.useState)(null),[A,ve]=i.a({defaultValue:!!_,interaction:{component:`dropdown`,type:`openChange`}}),j=(0,f.useRef)(null),ye=(0,f.useCallback)(e=>{j.current=e},[]),be=(0,f.useRef)(null),M=(0,f.useRef)(null),N=r.t(`dropdown`),P=E.id??`${N}-trigger`,xe=`${N}-listbox`,F=`${N}-label`,Se=T!=null&&T!==!1,Ce=(0,f.useCallback)(e=>`${N}-option-${e}`,[N]),I=n.a((e,t,n)=>ve(e,{reason:t,event:n})),L=n.a((e,t,n=!1)=>{I(!1,e,t),n||_e(null)}),R=(0,f.useMemo)(()=>(Array.isArray(C)?C:[C]).flatMap(e=>e).filter(Boolean),[C]),z=(0,f.useMemo)(()=>R.filter(e=>e.type?.displayName===`DropdownItem`),[R]),we=(0,f.useMemo)(()=>{let e=new Map;for(let t of z)e.set(t,S(t));return e},[z]),B=(0,f.useCallback)(e=>we.get(e)??S(e),[we]),Te=b?ge??``:``,V=(0,f.useMemo)(()=>Te?z.filter(e=>B(e).toLowerCase().includes(Te.toLowerCase())):z,[Te,z,B]),H=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownUnselect`),[R]),U=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownSelectAll`),[R]),Ee=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownEmptyItem`),[R]),W=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownDisplay`),[R]),G=(0,f.useMemo)(()=>!b||W?``:z.filter(e=>O.includes(e.props.value)).map(e=>B(e)).join(`, `),[b,W,z,O,B]),De=!!(U&&v&&V.length>O.length),Oe=!!(H&&V.length>0&&!De),K=(0,f.useMemo)(()=>{let e=[];Oe&&H&&e.push({kind:`unselect`,element:H}),De&&U&&e.push({kind:`selectAll`,element:U});for(let t of V)e.push({kind:`item`,element:t});return e},[Oe,H,De,U,V]),q=(0,f.useCallback)(e=>ne(K[e]?.element),[K]),ke=(0,f.useCallback)(e=>{let t=K[e];return t?B(t.element):``},[K,B]),Ae=(0,f.useMemo)(()=>{if(b&&(A||G!==``))return null;if(W)return typeof W.props.children==`function`?W.props.children(O,A):W.props.children;let e=V.filter(e=>O.includes(e.props.value));if(v&&e.length>1)return e.map(e=>B(e)).join(`, `);let t=e.at(0);return t?.props.children??t?.props.value??(v?null:H?.props.children)},[v,V,O,H,A,b,G,W,B]),je=(0,f.useCallback)((e,...t)=>{if(t.length===0)D.current=void 0,k([],{reason:`clear`,event:e});else if(v&&t.length>1)D.current=void 0,k(t.map(e=>e.props.value),{reason:`select-all`,event:e});else if(t.length===1){let n=t[0];if(D.current=n.props.value,v){let t=O.filter(e=>e!==n.props.value),r=t.length!==O.length;r||t.push(n.props.value),k(t,{reason:r?`deselect`:`select`,event:e})}else k([n.props.value],{reason:`select`,event:e})}e.stopPropagation(),v?b&&setTimeout(()=>M.current?.focus(),0):L(`select`,e)},[v,b,O,k,L]),J=n.a((e,t)=>{let n=K[e];!n||q(e)||(n.kind===`unselect`?je(t):n.kind===`selectAll`?je(t,...z):je(t,n.element))}),Me=e=>{let t=e===`first`?1:-1;for(let n=e===`first`?0:K.length-1;n>=0&&n<K.length;n+=t)if(!q(n))return n;return-1},Y=e=>{let t=K.findIndex(e=>e.kind===`item`&&O.includes(e.element.props.value));return t!==-1&&!q(t)?t:e===`none`?-1:Me(e)},X=n.t({count:K.length,focusItems:!1,defaultActiveIndex:_?Y(`none`):-1,isDisabled:q,textOf:b?void 0:ke,onSelect:J}),Ne=X.setActiveIndex,Pe=(0,f.useCallback)(e=>Ne(-1,{reason:`programmatic`,event:e}),[Ne]);n.r({enabled:A,inside:[j,be],onDismiss:(e,t)=>L(e,t,e===`escape`)}),n.n({enabled:A,returnTo:b?M:j}),(0,f.useEffect)(()=>{A&&M.current?.focus()},[A]);let Z=X.activeIndex,Fe=X.activeItem;e.n(()=>{!A||Z===-1||Fe()?.scrollIntoView?.({block:`nearest`})},[A,Z,Fe]);let Q=(e,t)=>{I(!0,t.type===`keydown`?`keyboard`:`trigger`,t),X.setActiveIndex(e,{reason:`programmatic`,event:t})},Ie=n.a(e=>{A?L(`trigger`,e):Q(Y(`none`),e)}),Le=n.a(e=>{A||Q(Y(`none`),e)}),Re=n.a(e=>{_e(e),A||I(!0,`input`),Pe()}),ze=e=>{let{key:t}=e;if(b){if(t===`ArrowDown`||t===`ArrowUp`){e.preventDefault(),Q(Y(t===`ArrowUp`?`last`:e.altKey?`none`:`first`),e);return}t===`Escape`&&_e(``);return}if(t===`ArrowDown`||t===`Enter`||t===` `){e.preventDefault(),Q(Y(e.altKey?`none`:`first`),e);return}if(t===`ArrowUp`){e.preventDefault(),Q(Y(`last`),e);return}if(t===`Home`||t===`End`){e.preventDefault(),Q(Me(t===`Home`?`first`:`last`),e);return}re(e)&&(I(!0,`input`,e),X.onKeyDown(e))},Be=n.a(e=>{if(fe?.onKeyDown?.(e),!e.defaultPrevented){if(!A){ze(e);return}if(e.key===`Tab`){!v&&X.activeIndex!==-1&&J(X.activeIndex,e),L(`tab`,e);return}if(e.altKey&&e.key===`ArrowUp`){e.preventDefault(),X.activeIndex!==-1&&J(X.activeIndex,e),L(`keyboard`,e);return}if(b&&ie.has(e.key)){Pe(e);return}X.onKeyDown(e)}}),$=K.length>0||!!Ee,Ve=A&&Z!==-1&&$?Ce(Z):void 0,He=X.itemProps,Ue=(0,f.useMemo)(()=>({valueToUse:O,multiple:v,variant:E.variant,showCheckbox:oe,selectRow:J,optionId:Ce,activeIndex:Z,rowRef:e=>He(e).ref,isRowDisabled:q}),[O,v,E.variant,oe,J,Ce,Z,He,q]),We={"aria-expanded":A,"aria-controls":A&&$?xe:void 0,"aria-activedescendant":Ve,"aria-labelledby":Se?F:void 0,...fe,onKeyDown:Be},Ge=O.map(e=>{let t=JSON.stringify(e);return(0,p.jsx)(d.default,{ref:l,name:h,type:`hidden`,value:t??``},t)}),Ke=!w&&(0,p.jsx)(s.default,{component:`dropdown.icon`,...le,children:(0,p.jsx)(a.default,{viewBox:`0 0 10 6`,width:`0.6rem`,rotate:A?180:0,children:(0,p.jsx)(`path`,{stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`2`,d:`m1 1 4 4 4-4`})})}),qe=$&&(0,p.jsx)(u.default,{present:A,children:e=>(0,p.jsx)(y,{presence:e,rows:K,emptyItem:Ee,triggerRef:j,popupRef:be,listboxId:xe,labelledBy:Se?F:P,itemsProps:ce})}),Je=b?(0,p.jsxs)(t.default,{ref:ye,component:`dropdown`,props:{onClick:Ie},position:`relative`,pe:w?void 0:6,minWidth:A?36:void 0,width:`fit-content`,...E,id:void 0,children:[Ge,(0,p.jsx)(x,{id:P,value:ge??G,onValueChange:Re,placeholder:A?ae:void 0,inputRef:M,comboboxProps:We,onOpen:Le}),Ae??(0,p.jsx)(t.default,{tag:`span`,visibility:`hidden`,children:G||`\xA0`}),Ke]}):(0,p.jsxs)(o.default,{ref:ye,onClick:Ie,component:`dropdown`,type:`button`,props:{tabIndex:0,role:`combobox`,...We},position:`relative`,pe:w?void 0:6,width:`fit-content`,...E,id:P,children:[Ge,Ae??`\xA0`,Ke]});return(0,p.jsx)(m.Provider,{value:Ue,children:Se?(0,p.jsxs)(s.default,{d:`column`,gap:1,width:`fit-content`,...se,children:[(0,p.jsx)(t.default,{tag:`span`,id:F,children:T}),Je,qe]}):(0,p.jsxs)(p.Fragment,{children:[Je,qe]})})}function C(e){let t=e=>null;return t.displayName=e,t}var w=(0,f.forwardRef)(ae);w.Item=C(`DropdownItem`),w.Unselect=C(`DropdownUnselect`),w.SelectAll=C(`DropdownSelectAll`),w.EmptyItem=C(`DropdownEmptyItem`),w.Display=C(`DropdownDisplay`),w.displayName=`Dropdown`,exports.default=w;
1
+ "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../effects.cjs"),t=require("../box.cjs"),n=require("../behavior.cjs"),r=require("../identity.cjs"),i=require("../reporting.cjs"),a=require("./baseSvg.cjs"),o=require("./button.cjs"),s=require("./flex.cjs"),c=require("./checkbox.cjs"),l=require("./overlay.cjs"),u=require("./presence.cjs"),d=require("./textbox.cjs");let f=require("react"),p=require("react/jsx-runtime");var m=(0,f.createContext)(null);function h(){let e=(0,f.useContext)(m);if(!e)throw Error(`Dropdown sub-components must be used within Dropdown`);return e}var ee={item:`dropdown.item`,unselect:`dropdown.unselect`,selectAll:`dropdown.selectAll`};function g({row:e,index:n}){let{valueToUse:r,multiple:i,variant:a,showCheckbox:o,selectRow:s,optionId:l,activeIndex:u,rowRef:d,isRowDisabled:f}=h(),m=e.kind===`item`,g=f(n),_=m?r.includes(e.element.props.value):e.kind===`unselect`&&r.length===0,{value:v,onClick:y,children:b,...x}=e.element.props,S=o&&i&&m;return(0,p.jsx)(t.default,{ref:d(n),component:ee[e.kind],variant:[a,m?{multiple:i,highlighted:n===u}:{highlighted:n===u}],selected:_,...x,id:l(n),children:S?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(c.default,{readOnly:!0,checked:_,me:2,props:{tabIndex:-1,"aria-hidden":!0}}),b]}):b,props:{role:`option`,...g?{"aria-disabled":!0}:{},...x.props,onClick:g?void 0:e=>{y?.(e),s(n,e)}}})}var _=(0,f.memo)(g,(e,t)=>e.row.element===t.row.element&&e.index===t.index);function v(e,t,n){return e?{role:`listbox`,"aria-labelledby":n,...t?{"aria-multiselectable":!0}:{}}:{role:`status`}}function y(e){let{presence:n,rows:r,emptyItem:i,triggerRef:a,popupRef:o,listboxId:s,labelledBy:c,itemsProps:u}=e,{present:d,ref:m,props:ee}=n,{multiple:g,variant:y}=h(),[x,S]=(0,f.useState)(!1),te=(0,f.useCallback)(e=>S(e===`top`),[]);return(0,p.jsx)(l.default,{ref:o,anchor:a,side:`bottom`,align:`start`,offset:.5,onSideChange:te,children:(0,p.jsxs)(t.default,{ref:m,component:`dropdown.items`,...u,variant:[y,{closed:!d&&!x,closedUp:!d&&x}],id:s,props:{...v(r.length>0,g,c),...ee},children:[r.map((e,t)=>(0,p.jsx)(_,{row:e,index:t},b(e,t))),r.length===0&&i&&(0,p.jsx)(t.default,{component:`dropdown.emptyItem`,variant:y,...i.props})]})})}function b(e,t){return e.kind===`item`?e.element.props.value:`${e.kind}-${t}`}y.displayName=`DropdownItems`;function x({id:e,value:t,onValueChange:n,placeholder:r,inputRef:i,comboboxProps:a,onOpen:o}){let c=(0,f.useCallback)(e=>n(e.target.value),[n]),l=(0,f.useCallback)(e=>{e.stopPropagation(),o(e)},[o]);return(0,p.jsx)(s.default,{ai:`center`,position:`absolute`,inset:0,p:3,children:(0,p.jsx)(d.default,{clean:!0,id:e,value:t,placeholder:r,onChange:c,ref:i,color:`currentColor`,width:`fit`,props:{role:`combobox`,"aria-autocomplete":`list`,autoComplete:`off`,spellCheck:!1,...a,onClick:l}})})}function S(e){if(e==null)return``;if(typeof e==`object`){let t=e.props?.children;return t==null?``:typeof t==`object`?(Array.isArray(t)?t:[t]).map(e=>S(e)).join(``):t.toString()}return e.toString()}function te(e){return e==null?[]:Array.isArray(e)?e:[e]}function ne(e){let t=e?.props?.disabled;return(Array.isArray(t)?t[0]:t)===!0}function re(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey}var ie=new Set([` `,`Home`,`End`,`ArrowLeft`,`ArrowRight`]);function ae(c,l){let{name:h,defaultValue:ee,value:g,defaultOpen:_,multiple:v=!1,isSearchable:b,searchPlaceholder:ae,children:C,hideIcon:w,showCheckbox:oe=!1,label:T,labelProps:se,itemsProps:ce,iconProps:le,onValueChange:ue,onChange:de,props:fe,...E}=c,D=(0,f.useRef)(void 0),pe=n.a((e,t)=>{ue?.(v?e:e[0],t),de?.(D.current,e)}),me=`value`in c,he=(0,f.useMemo)(()=>me?te(g):void 0,[me,g]),[O,k]=i.a({value:he,defaultValue:()=>te(ee),onChange:pe,interaction:{component:`dropdown`,type:`valueChange`}}),[ge,_e]=(0,f.useState)(null),[A,ve]=i.a({defaultValue:!!_,interaction:{component:`dropdown`,type:`openChange`}}),j=(0,f.useRef)(null),ye=(0,f.useCallback)(e=>{j.current=e},[]),be=(0,f.useRef)(null),M=(0,f.useRef)(null),N=r.t(`dropdown`),P=E.id??`${N}-trigger`,xe=`${N}-listbox`,F=`${N}-label`,Se=T!=null&&T!==!1,Ce=(0,f.useCallback)(e=>`${N}-option-${e}`,[N]),I=n.a((e,t,n)=>ve(e,{reason:t,event:n})),L=n.a((e,t,n=!1)=>{I(!1,e,t),n||_e(null)}),R=(0,f.useMemo)(()=>(Array.isArray(C)?C:[C]).flatMap(e=>e).filter(Boolean),[C]),z=(0,f.useMemo)(()=>R.filter(e=>e.type?.displayName===`DropdownItem`),[R]),we=(0,f.useMemo)(()=>{let e=new Map;for(let t of z)e.set(t,S(t));return e},[z]),B=(0,f.useCallback)(e=>we.get(e)??S(e),[we]),Te=b?ge??``:``,V=(0,f.useMemo)(()=>Te?z.filter(e=>B(e).toLowerCase().includes(Te.toLowerCase())):z,[Te,z,B]),H=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownUnselect`),[R]),U=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownSelectAll`),[R]),Ee=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownEmptyItem`),[R]),W=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownDisplay`),[R]),G=(0,f.useMemo)(()=>!b||W?``:z.filter(e=>O.includes(e.props.value)).map(e=>B(e)).join(`, `),[b,W,z,O,B]),De=!!(U&&v&&V.length>O.length),Oe=!!(H&&V.length>0&&!De),K=(0,f.useMemo)(()=>{let e=[];Oe&&H&&e.push({kind:`unselect`,element:H}),De&&U&&e.push({kind:`selectAll`,element:U});for(let t of V)e.push({kind:`item`,element:t});return e},[Oe,H,De,U,V]),q=(0,f.useCallback)(e=>ne(K[e]?.element),[K]),ke=(0,f.useCallback)(e=>{let t=K[e];return t?B(t.element):``},[K,B]),Ae=(0,f.useMemo)(()=>{if(b&&(A||G!==``))return null;if(W)return typeof W.props.children==`function`?W.props.children(O,A):W.props.children;let e=V.filter(e=>O.includes(e.props.value));if(v&&e.length>1)return e.map(e=>B(e)).join(`, `);let t=e.at(0);return t?.props.children??t?.props.value??(v?null:H?.props.children)},[v,V,O,H,A,b,G,W,B]),je=(0,f.useCallback)((e,...t)=>{if(t.length===0)D.current=void 0,k([],{reason:`clear`,event:e});else if(v&&t.length>1)D.current=void 0,k(t.map(e=>e.props.value),{reason:`select-all`,event:e});else if(t.length===1){let n=t[0];if(D.current=n.props.value,v){let t=O.filter(e=>e!==n.props.value),r=t.length!==O.length;r||t.push(n.props.value),k(t,{reason:r?`deselect`:`select`,event:e})}else k([n.props.value],{reason:`select`,event:e})}e.stopPropagation(),v?b&&setTimeout(()=>M.current?.focus(),0):L(`select`,e)},[v,b,O,k,L]),J=n.a((e,t)=>{let n=K[e];!n||q(e)||(n.kind===`unselect`?je(t):n.kind===`selectAll`?je(t,...z):je(t,n.element))}),Me=e=>{let t=e===`first`?1:-1;for(let n=e===`first`?0:K.length-1;n>=0&&n<K.length;n+=t)if(!q(n))return n;return-1},Y=e=>{let t=K.findIndex(e=>e.kind===`item`&&O.includes(e.element.props.value));return t!==-1&&!q(t)?t:e===`none`?-1:Me(e)},X=n.t({count:K.length,focusItems:!1,defaultActiveIndex:_?Y(`none`):-1,isDisabled:q,textOf:b?void 0:ke,onSelect:J}),Ne=X.setActiveIndex,Pe=(0,f.useCallback)(e=>Ne(-1,{reason:`programmatic`,event:e}),[Ne]);n.r({enabled:A,inside:[j,be],onDismiss:(e,t)=>L(e,t,e===`escape`)}),n.n({enabled:A,returnTo:b?M:j}),(0,f.useEffect)(()=>{A&&M.current?.focus()},[A]);let Z=X.activeIndex,Fe=X.activeItem;e.n(()=>{!A||Z===-1||Fe()?.scrollIntoView?.({block:`nearest`})},[A,Z,Fe]);let Q=(e,t)=>{I(!0,t.type===`keydown`?`keyboard`:`trigger`,t),X.setActiveIndex(e,{reason:`programmatic`,event:t})},Ie=n.a(e=>{A?L(`trigger`,e):Q(Y(`none`),e)}),Le=n.a(e=>{A||Q(Y(`none`),e)}),Re=n.a(e=>{_e(e),A||I(!0,`input`),Pe()}),ze=e=>{let{key:t}=e;if(b){if(t===`ArrowDown`||t===`ArrowUp`){e.preventDefault(),Q(Y(t===`ArrowUp`?`last`:e.altKey?`none`:`first`),e);return}t===`Escape`&&_e(``);return}if(t===`ArrowDown`||t===`Enter`||t===` `){e.preventDefault(),Q(Y(e.altKey?`none`:`first`),e);return}if(t===`ArrowUp`){e.preventDefault(),Q(Y(`last`),e);return}if(t===`Home`||t===`End`){e.preventDefault(),Q(Me(t===`Home`?`first`:`last`),e);return}re(e)&&(I(!0,`input`,e),X.onKeyDown(e))},Be=n.a(e=>{if(fe?.onKeyDown?.(e),!e.defaultPrevented){if(!A){ze(e);return}if(e.key===`Tab`){!v&&X.activeIndex!==-1&&J(X.activeIndex,e),L(`tab`,e);return}if(e.altKey&&e.key===`ArrowUp`){e.preventDefault(),X.activeIndex!==-1&&J(X.activeIndex,e),L(`keyboard`,e);return}if(b&&ie.has(e.key)){Pe(e);return}X.onKeyDown(e)}}),$=K.length>0||!!Ee,Ve=A&&Z!==-1&&$?Ce(Z):void 0,He=X.itemProps,Ue=(0,f.useMemo)(()=>({valueToUse:O,multiple:v,variant:E.variant,showCheckbox:oe,selectRow:J,optionId:Ce,activeIndex:Z,rowRef:e=>He(e).ref,isRowDisabled:q}),[O,v,E.variant,oe,J,Ce,Z,He,q]),We={"aria-expanded":A,"aria-controls":A&&$?xe:void 0,"aria-activedescendant":Ve,"aria-labelledby":Se?F:void 0,...fe,onKeyDown:Be},Ge=O.map(e=>{let t=JSON.stringify(e);return(0,p.jsx)(d.default,{ref:l,name:h,type:`hidden`,value:t??``},t)}),Ke=!w&&(0,p.jsx)(s.default,{component:`dropdown.icon`,...le,children:(0,p.jsx)(a.default,{viewBox:`0 0 10 6`,width:`0.6rem`,rotate:A?180:0,children:(0,p.jsx)(`path`,{stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`2`,d:`m1 1 4 4 4-4`})})}),qe=$&&(0,p.jsx)(u.default,{present:A,children:e=>(0,p.jsx)(y,{presence:e,rows:K,emptyItem:Ee,triggerRef:j,popupRef:be,listboxId:xe,labelledBy:Se?F:P,itemsProps:ce})}),Je=b?(0,p.jsxs)(t.default,{ref:ye,component:`dropdown`,props:{onClick:Ie},position:`relative`,display:`inline-flex`,ai:`center`,pe:w?void 0:6,minWidth:A?36:void 0,width:`fit-content`,...E,id:void 0,children:[Ge,(0,p.jsx)(x,{id:P,value:ge??G,onValueChange:Re,placeholder:A?ae:void 0,inputRef:M,comboboxProps:We,onOpen:Le}),(0,p.jsx)(t.default,{tag:`span`,overflow:`hidden`,textOverflow:`ellipsis`,minWidth:0,visibility:Ae==null?`hidden`:void 0,children:Ae??(G||`\xA0`)}),Ke]}):(0,p.jsxs)(o.default,{ref:ye,onClick:Ie,component:`dropdown`,type:`button`,props:{tabIndex:0,role:`combobox`,...We},position:`relative`,pe:w?void 0:6,width:`fit-content`,...E,id:P,children:[Ge,Ae??`\xA0`,Ke]});return(0,p.jsx)(m.Provider,{value:Ue,children:Se?(0,p.jsxs)(s.default,{d:`column`,gap:1,width:`fit-content`,...se,children:[(0,p.jsx)(t.default,{tag:`span`,id:F,children:T}),Je,qe]}):(0,p.jsxs)(p.Fragment,{children:[Je,qe]})})}function C(e){let t=e=>null;return t.displayName=e,t}var w=(0,f.forwardRef)(ae);w.Item=C(`DropdownItem`),w.Unselect=C(`DropdownUnselect`),w.SelectAll=C(`DropdownSelectAll`),w.EmptyItem=C(`DropdownEmptyItem`),w.Display=C(`DropdownDisplay`),w.displayName=`Dropdown`,exports.default=w;
@@ -432,6 +432,8 @@ function E(u, te) {
432
432
  component: "dropdown",
433
433
  props: { onClick: We },
434
434
  position: "relative",
435
+ display: "inline-flex",
436
+ ai: "center",
435
437
  pe: T ? void 0 : 6,
436
438
  minWidth: N ? 36 : void 0,
437
439
  width: "fit-content",
@@ -448,10 +450,13 @@ function E(u, te) {
448
450
  comboboxProps: $e,
449
451
  onOpen: Ge
450
452
  }),
451
- Re ?? /* @__PURE__ */ b(t, {
453
+ /* @__PURE__ */ b(t, {
452
454
  tag: "span",
453
- visibility: "hidden",
454
- children: K || "\xA0"
455
+ overflow: "hidden",
456
+ textOverflow: "ellipsis",
457
+ minWidth: 0,
458
+ visibility: Re == null ? "hidden" : void 0,
459
+ children: Re ?? (K || "\xA0")
455
460
  }),
456
461
  tt
457
462
  ]
@@ -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"),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.l(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.m(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.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`;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;
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._(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.g(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._(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;
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { f as e } from "../react-shared.mjs";
3
- import { l as t, m as n, p as r } from "../platform.mjs";
3
+ import { _ as t, d as n, g as r } from "../platform.mjs";
4
4
  import { n as i } from "../effects.mjs";
5
5
  import a from "../box.mjs";
6
6
  import { a as o, i as s } from "../behavior.mjs";
@@ -120,7 +120,7 @@ function j(e, t) {
120
120
  }
121
121
  function M(e) {
122
122
  let { layer: r, side: i, align: s, offset: c, flip: d, matchWidth: f, label: p, labelledBy: g, contentProps: v, closeSelf: y, elementRef: x, children: S, ...w } = e, { platform: T, isOpen: D, id: k, triggerElement: A, setPanel: j } = r, M = _((e) => {
123
- j(e), t(x, e);
123
+ j(e), n(x, e);
124
124
  }, [j, x]), N = O("Menu"), P = b({
125
125
  query: "",
126
126
  at: 0
@@ -137,11 +137,11 @@ function M(e) {
137
137
  "aria-labelledby": g,
138
138
  tabIndex: -1,
139
139
  onKeyDown: o((e) => {
140
- let t = e.currentTarget;
141
- if (!E.owns(t, e.target)) return;
142
- let r = E.items(t), i = r.indexOf(document.activeElement), a = (t) => {
140
+ let n = e.currentTarget;
141
+ if (!E.owns(n, e.target)) return;
142
+ let r = E.items(n), i = r.indexOf(document.activeElement), a = (t) => {
143
143
  t && (e.preventDefault(), t.focus());
144
- }, o = n(t) ? "ArrowRight" : "ArrowLeft";
144
+ }, o = t(n) ? "ArrowRight" : "ArrowLeft";
145
145
  switch (e.key) {
146
146
  case "ArrowDown": return a(E.step(r, i, 1));
147
147
  case "ArrowUp": return a(E.step(r, i, -1));
@@ -194,7 +194,7 @@ function M(e) {
194
194
  children: S
195
195
  }) : null;
196
196
  }
197
- function N(e, t) {
197
+ function N(e, n) {
198
198
  let { label: s, children: l, disabled: u, side: d = "end", align: m = "start", offset: h = 0, flip: g = !0, itemProps: _, props: v, ...b } = e, x = O("Menu.Sub"), T = c("menu-sub"), A = o((e) => {
199
199
  (E.items(e)[0] ?? e).focus();
200
200
  }), j = o((e, t) => {
@@ -231,8 +231,8 @@ function N(e, t) {
231
231
  L.setOpen
232
232
  ]);
233
233
  let R = o((e) => {
234
- let t = n(e.currentTarget) ? "ArrowLeft" : "ArrowRight";
235
- u || e.key !== t || (e.preventDefault(), L.setOpen(!0, {
234
+ let n = t(e.currentTarget) ? "ArrowLeft" : "ArrowRight";
235
+ u || e.key !== n || (e.preventDefault(), L.setOpen(!0, {
236
236
  reason: "trigger",
237
237
  event: e
238
238
  }), I("openChange", !0, {
@@ -284,7 +284,7 @@ function N(e, t) {
284
284
  contentProps: v,
285
285
  closeSelf: (e) => L.setOpen(!1, e),
286
286
  ...b,
287
- elementRef: t,
287
+ elementRef: n,
288
288
  children: l
289
289
  })
290
290
  })] });
@@ -1 +1 @@
1
- "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../platform.cjs"),t=require("../client.cjs"),n=require("../effects.cjs"),r=require("../box.cjs"),i=require("../placement.cjs"),a=require("../layer.cjs");let o=require("react"),s=require("react/jsx-runtime"),c=require("react-dom");function l(l,u){let{side:d=`bottom`,align:f=`center`,offset:p=0,flip:m=!0,onSideChange:h,anchor:g,contentRef:_,matchWidth:v=!0,...y}=l,[b,x]=(0,o.useState)(null),[S,C]=(0,o.useState)(!1),w=(0,o.useRef)(null),T=a.n(),E=(0,o.useRef)(null),D=t.t(!T),O=i.t({side:d,align:f,offset:p,flip:m,matchWidth:v,anchor:g??b,trackSide:!!h});n.n(()=>{let t=E.current;!T||!e.c()||!t||!t.isConnected||t.matches(`:popover-open`)||t.showPopover()}),n.n(()=>{if(T)return;let t=e.f(g)??b;C(!!t&&e.m(t))},[g,b,T]),n.n(()=>{w.current!==O.side&&(w.current=O.side,h?.(O.side))});let k=O.layerProps.ref,A=(0,o.useCallback)(t=>{k?.(t),E.current=t,e.l(u,t)},[k,u]),j=(0,s.jsx)(r.default,{...O.layerProps,ref:A,transition:`none`,overflow:`visible`,props:T?{popover:`manual`}:{dir:S?`rtl`:`ltr`},children:(0,s.jsx)(r.default,{ref:_,...y})});return(0,s.jsxs)(s.Fragment,{children:[!g&&(0,s.jsx)(r.default,{ref:x}),T?j:D&&(0,c.createPortal)(j,D)]})}var u=(0,o.forwardRef)(l);u.displayName=`Overlay`,exports.default=u;
1
+ "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../platform.cjs"),t=require("../client.cjs"),n=require("../effects.cjs"),r=require("../box.cjs"),i=require("../placement.cjs"),a=require("../layer.cjs");let o=require("react"),s=require("react/jsx-runtime"),c=require("react-dom");function l(l,u){let{side:d=`bottom`,align:f=`center`,offset:p=0,flip:m=!0,onSideChange:h,anchor:g,contentRef:_,matchWidth:v=!0,...y}=l,[b,x]=(0,o.useState)(null),[S,C]=(0,o.useState)(!1),w=(0,o.useRef)(null),T=a.n(),E=(0,o.useRef)(null),D=t.t(!T),O=i.t({side:d,align:f,offset:p,flip:m,matchWidth:v,anchor:g??b,trackSide:!!h});n.n(()=>{let t=E.current;!T||!e.c()||!t||!t.isConnected||t.matches(`:popover-open`)||t.showPopover()}),n.n(()=>{if(T)return;let t=e.h(g)??b;C(!!t&&e._(t))},[g,b,T]),n.n(()=>{w.current!==O.side&&(w.current=O.side,h?.(O.side))});let k=O.layerProps.ref,A=(0,o.useCallback)(t=>{k?.(t),E.current=t,e.d(u,t)},[k,u]),j=(0,s.jsx)(r.default,{...O.layerProps,ref:A,transition:`none`,overflow:`visible`,props:T?{popover:`manual`}:{dir:S?`rtl`:`ltr`},children:(0,s.jsx)(r.default,{ref:_,...y})});return(0,s.jsxs)(s.Fragment,{children:[!g&&(0,s.jsx)(r.default,{ref:x}),T?j:D&&(0,c.createPortal)(j,D)]})}var u=(0,o.forwardRef)(l);u.displayName=`Overlay`,exports.default=u;
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { c as e, f as t, l as n, m as r } from "../platform.mjs";
2
+ import { _ as e, c as t, d as n, h as r } from "../platform.mjs";
3
3
  import { t as i } from "../client.mjs";
4
4
  import { n as a } from "../effects.mjs";
5
5
  import o from "../box.mjs";
@@ -20,12 +20,12 @@ function _(l, _) {
20
20
  trackSide: !!S
21
21
  });
22
22
  a(() => {
23
- let t = N.current;
24
- !M || !e() || !t || !t.isConnected || t.matches(":popover-open") || t.showPopover();
23
+ let e = N.current;
24
+ !M || !t() || !e || !e.isConnected || e.matches(":popover-open") || e.showPopover();
25
25
  }), a(() => {
26
26
  if (M) return;
27
- let e = t(C) ?? D;
28
- A(!!e && r(e));
27
+ let t = r(C) ?? D;
28
+ A(!!t && e(t));
29
29
  }, [
30
30
  C,
31
31
  D,
@@ -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("../behavior.cjs"),i=require("../placement.cjs"),a=require("../layer.cjs"),o=require("./overlay.cjs"),s=require("../motion.cjs");let c=require("react"),l=require("react/jsx-runtime");function u(e,u){let{trigger:d,children:f,open:p,defaultOpen:m=!1,onOpenChange:h,label:g,labelledBy:_,side:v=`bottom`,align:y=`center`,offset:b=2,flip:x=!0,matchWidth:S=!1,autoFocus:C=!0,props:w,...T}=e,E=r.a(e=>{!C||e.contains(document.activeElement)||e.focus()}),{platform:D,isOpen:O,id:k,trigger:A,triggerElement:j,setPanel:M,panelElement:N}=a.t({haspopup:`dialog`,idPrefix:`popover`,id:T.id,interaction:{component:`popover`,type:`openChange`},open:p,defaultOpen:m,onOpenChange:h,onOpened:E}),P=i.t({side:v,align:y,offset:b,flip:x,matchWidth:S,anchor:j}),F=s.t(f,O,N),I=(0,c.useCallback)(e=>{M(e),t.l(u,e)},[M,u]),L={"aria-label":g,"aria-labelledby":_},R=T;return D?(0,l.jsxs)(l.Fragment,{children:[d(A),(0,l.jsx)(n.default,{ref:I,component:`popover`,...R,variant:[R.variant,{topLayer:!0}],...P.layerProps,id:k,props:{popover:`auto`,role:`dialog`,...L,tabIndex:-1,...w},children:F})]}):(0,l.jsxs)(l.Fragment,{children:[d(A),O&&(0,l.jsx)(o.default,{contentRef:I,anchor:j,side:v,align:y,offset:b,flip:x,matchWidth:S,component:`popover`,...R,id:k,props:{role:`dialog`,...L,tabIndex:-1,...w},children:f})]})}var d=e.f(u,`Popover`);exports.default=d;
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("../behavior.cjs"),i=require("../placement.cjs"),a=require("../layer.cjs"),o=require("./overlay.cjs"),s=require("../motion.cjs");let c=require("react"),l=require("react/jsx-runtime");function u(e,u){let{trigger:d,children:f,open:p,defaultOpen:m=!1,onOpenChange:h,label:g,labelledBy:_,side:v=`bottom`,align:y=`center`,offset:b=2,flip:x=!0,matchWidth:S=!1,autoFocus:C=!0,initialFocus:w,props:T,...E}=e,D=r.a(e=>{if(!C)return;let n=t.h(w);if(n)return n.focus();e.contains(document.activeElement)||(t.m(e)??e).focus()}),{platform:O,isOpen:k,id:A,trigger:j,triggerElement:M,setPanel:N,panelElement:P}=a.t({haspopup:`dialog`,idPrefix:`popover`,id:E.id,interaction:{component:`popover`,type:`openChange`},open:p,defaultOpen:m,onOpenChange:h,onOpened:D}),F=i.t({side:v,align:y,offset:b,flip:x,matchWidth:S,anchor:M}),I=s.t(f,k,P),L=(0,c.useCallback)(e=>{N(e),t.d(u,e)},[N,u]),R={"aria-label":g,"aria-labelledby":_},z=E;return O?(0,l.jsxs)(l.Fragment,{children:[d(j),(0,l.jsx)(n.default,{ref:L,component:`popover`,...z,variant:[z.variant,{topLayer:!0}],...F.layerProps,id:A,props:{popover:`auto`,role:`dialog`,...R,tabIndex:-1,...T},children:I})]}):(0,l.jsxs)(l.Fragment,{children:[d(j),k&&(0,l.jsx)(o.default,{contentRef:L,anchor:M,side:v,align:y,offset:b,flip:x,matchWidth:S,component:`popover`,...z,id:A,props:{role:`dialog`,...R,tabIndex:-1,...T},children:f})]})}var d=e.f(u,`Popover`);exports.default=d;
@@ -3,6 +3,7 @@ import { ChangeHandler } from '../react/a11y/useControllableState';
3
3
  import { PopoverReason, PopoverTrigger as PopoverLayerTrigger, PopoverTriggerAttributes as PopoverLayerTriggerAttributes } from '../react/popover/usePopoverLayer';
4
4
  import { ComponentsAndVariants } from '@box-kite/core/types';
5
5
  import { AnchorAlign, AnchorSide } from '../utils/anchor/anchorUtils';
6
+ import { ElementLike } from '../utils/dom/domUtils';
6
7
  export type { PopoverReason };
7
8
  /** The DOM attributes the trigger has to carry. */
8
9
  export type PopoverTriggerAttributes = PopoverLayerTriggerAttributes<'dialog'>;
@@ -51,10 +52,15 @@ interface Props<TKey extends keyof ComponentsAndVariants> extends PopoverBoxProp
51
52
  /** Whether the panel is at least as wide as its trigger. Default `false` — a panel sizes to its content. */
52
53
  matchWidth?: boolean;
53
54
  /**
54
- * Whether opening moves focus into the panel. Default `true`, which is what APG asks of a dialog. An
55
- * `autofocus` attribute inside wins: the browser applies it first and this only acts on what is left.
55
+ * Whether opening moves focus into the panel: onto its first control, or the panel itself when it has
56
+ * none. Default `true`, which is what APG asks of a dialog.
56
57
  */
57
58
  autoFocus?: boolean;
59
+ /**
60
+ * Where focus lands on open, instead of the first control — a field whose text should be selected, or a
61
+ * static element at the top of a long panel. React writes no `autofocus` attribute, so this is the way.
62
+ */
63
+ initialFocus?: ElementLike;
58
64
  }
59
65
  declare const Popover: <TKey extends keyof ComponentsAndVariants = "popover">(props: Props<TKey>) => React.ReactNode;
60
66
  export default Popover;