@floegence/floe-webapp-core 0.51.0 → 0.52.1

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.
@@ -1,28 +1,29 @@
1
- import { setAttribute as m, insert as v, createComponent as l, Portal as W, use as I, spread as G, mergeProps as J, effect as F, className as O, template as $, memo as z, delegateEvents as te } from "solid-js/web";
2
- import { createSignal as j, createMemo as ne, createEffect as Q, onCleanup as re, Show as y, Index as V } from "solid-js";
3
- import { cn as k } from "../../utils/cn.js";
1
+ import { setAttribute as f, insert as g, createComponent as l, Portal as W, use as I, spread as G, mergeProps as J, effect as F, className as O, template as P, memo as z, delegateEvents as te } from "solid-js/web";
2
+ import { createSignal as _, createMemo as ne, createEffect as Q, onCleanup as re, Show as y, Index as V } from "solid-js";
3
+ import { cn as M } from "../../utils/cn.js";
4
4
  import { deferNonBlocking as oe } from "../../utils/defer.js";
5
- import { ChevronDown as ie, Check as ae, ChevronRight as ue } from "../icons/index.js";
6
- import { focusMenuItem as D, MENU_ITEM_SELECTOR as le, moveMenuFocus as U, calculateMenuPosition as de, calculateSubmenuPosition as ce } from "./menuUtils.js";
5
+ import { ChevronDown as ae, Check as ie, ChevronRight as ue } from "../icons/index.js";
6
+ import { focusMenuItem as p, MENU_ITEM_SELECTOR as le, moveMenuFocus as U, calculateMenuPosition as se, calculateSubmenuPosition as de } from "./menuUtils.js";
7
7
  import { LOCAL_INTERACTION_SURFACE_ATTR as X } from "./localInteractionSurface.js";
8
8
  import { createFloatingPresence as Y } from "./floatingPresence.js";
9
- import { resolveSurfacePortalHost as se, projectSurfacePortalPosition as fe, resolveSurfacePortalBoundaryRect as me, isSurfacePortalMode as ge, resolveSurfacePortalMount as ve } from "./dialogSurfaceScope.js";
10
- var B = /* @__PURE__ */ $("<div>"), he = /* @__PURE__ */ $("<div><div role=button aria-haspopup=menu data-floe-dropdown-trigger>"), Z = /* @__PURE__ */ $('<div class="my-1 h-px bg-border"role=separator>'), be = /* @__PURE__ */ $('<button type=button role=menuitem><span class="w-3.5 h-3.5 flex items-center justify-center"></span><span class="flex-1 text-left">'), we = /* @__PURE__ */ $("<div class=relative>"), ye = /* @__PURE__ */ $('<span class="w-3.5 h-3.5 flex items-center justify-center">'), xe = /* @__PURE__ */ $("<span>");
11
- let Se = 0, Me = 0;
12
- function ke(e, f) {
9
+ import { useOverlayMask as ce } from "../../hooks/useOverlayMask.js";
10
+ import { resolveSurfacePortalHost as fe, projectSurfacePortalPosition as me, resolveSurfacePortalBoundaryRect as ge, isSurfacePortalMode as ve, resolveSurfacePortalMount as be } from "./dialogSurfaceScope.js";
11
+ var H = /* @__PURE__ */ P("<div>"), he = /* @__PURE__ */ P("<div><div role=button aria-haspopup=menu data-floe-dropdown-trigger>"), Z = /* @__PURE__ */ P('<div class="my-1 h-px bg-border"role=separator>'), we = /* @__PURE__ */ P('<button type=button role=menuitem><span class="w-3.5 h-3.5 flex items-center justify-center"></span><span class="flex-1 text-left">'), ye = /* @__PURE__ */ P("<div class=relative>"), xe = /* @__PURE__ */ P('<span class="w-3.5 h-3.5 flex items-center justify-center">'), Se = /* @__PURE__ */ P("<span>");
12
+ let Me = 0, ke = 0;
13
+ function Pe(e, c) {
13
14
  switch (e) {
14
15
  case "Enter":
15
16
  case " ":
16
- return f.open ? {
17
+ return c.open ? {
17
18
  nextOpen: !1
18
19
  } : {
19
20
  nextOpen: !0,
20
- focusMode: f.hasSelection ? "selected" : "first"
21
+ focusMode: c.hasSelection ? "selected" : "first"
21
22
  };
22
23
  case "ArrowDown":
23
24
  return {
24
25
  nextOpen: !0,
25
- focusMode: f.hasSelection ? "selected" : "first"
26
+ focusMode: c.hasSelection ? "selected" : "first"
26
27
  };
27
28
  case "ArrowUp":
28
29
  return {
@@ -33,146 +34,165 @@ function ke(e, f) {
33
34
  return null;
34
35
  }
35
36
  }
36
- function Pe(e) {
37
- const [f, c] = j(!1), a = Y({
38
- open: f,
37
+ function $e(e) {
38
+ const [c, d] = _(!1), o = Y({
39
+ open: c,
39
40
  exitDurationMs: 100
40
- }), [q, P] = j({
41
+ }), [B, k] = _({
41
42
  x: -9999,
42
43
  y: -9999
43
44
  });
44
- let x, w;
45
- const h = `floe-dropdown-${Se += 1}`, C = `${h}-menu`, b = ne(() => a.mounted() ? se() : {
45
+ let v, h;
46
+ const b = `floe-dropdown-${Me += 1}`, $ = `${b}-menu`, w = ne(() => o.mounted() ? fe({
47
+ owner: v
48
+ }) : {
46
49
  host: null,
47
50
  boundaryHost: null,
48
51
  mountHost: null,
49
52
  mode: "global"
50
- }), g = {
51
- mount: () => ve(b()),
52
- isSurfaceMode: () => ge(b()),
53
- boundaryRect: () => me(b()),
54
- projectPosition: (o) => fe(o, b())
53
+ }), m = {
54
+ mount: () => be(w()),
55
+ isSurfaceMode: () => ve(w()),
56
+ boundaryRect: () => ge(w()),
57
+ projectPosition: (r) => me(r, w())
55
58
  }, A = () => {
56
- if (!x || !w) return;
57
- const o = x.getBoundingClientRect(), r = w.getBoundingClientRect(), i = de(o, r, e.align ?? "start", g.boundaryRect());
58
- P(i);
59
+ d(!1), requestAnimationFrame(() => v?.focus());
60
+ };
61
+ ce({
62
+ open: o.mounted,
63
+ root: () => h,
64
+ containsTarget: (r) => !!(r instanceof Element ? r : document.activeElement)?.closest(`[data-floe-dropdown="${b}"]`),
65
+ onClose: A,
66
+ onEscapeOutside: A,
67
+ lockBodyScroll: !1,
68
+ trapFocus: !1,
69
+ autoFocus: !1,
70
+ restoreFocus: !1,
71
+ blockHotkeys: !1,
72
+ closeOnEscape: "inside",
73
+ escapeKeyPhase: "bubble"
74
+ });
75
+ const C = () => {
76
+ if (!v || !h) return;
77
+ const r = v.getBoundingClientRect(), n = h.getBoundingClientRect(), i = se(r, n, e.align ?? "start", m.boundaryRect());
78
+ k(i);
59
79
  };
60
80
  Q(() => {
61
- if (!a.mounted()) {
62
- P({
81
+ if (!o.mounted()) {
82
+ k({
63
83
  x: -9999,
64
84
  y: -9999
65
85
  });
66
86
  return;
67
87
  }
68
- if (!f()) return;
69
- const o = (i) => {
70
- const t = i.target;
71
- t && typeof t.closest == "function" && t.closest(`[data-floe-dropdown="${h}"]`) || c(!1);
72
- }, r = (i) => {
73
- i.key === "Escape" && (c(!1), requestAnimationFrame(() => x?.focus()));
88
+ if (!c()) return;
89
+ const r = (n) => {
90
+ const i = n.target;
91
+ i && typeof i.closest == "function" && i.closest(`[data-floe-dropdown="${b}"]`) || d(!1);
74
92
  };
75
- document.addEventListener("pointerdown", o, !0), document.addEventListener("keydown", r), requestAnimationFrame(() => {
76
- A(), D(w, e.value ? "selected" : "first");
93
+ document.addEventListener("pointerdown", r, !0), requestAnimationFrame(() => {
94
+ C(), p(h, e.value ? "selected" : "first");
77
95
  }), re(() => {
78
- document.removeEventListener("pointerdown", o, !0), document.removeEventListener("keydown", r);
96
+ document.removeEventListener("pointerdown", r, !0);
79
97
  });
80
98
  });
81
- const L = (o) => {
82
- const r = e.onSelect;
83
- o.keepOpen || c(!1), oe(() => r(o.id));
84
- }, T = (o, r = "first") => {
85
- e.disabled || (c(o), requestAnimationFrame(() => {
86
- A(), D(w, r);
99
+ const j = (r) => {
100
+ const n = e.onSelect;
101
+ r.keepOpen || (d(!1), v?.focus({
102
+ preventScroll: !0
103
+ })), oe(() => n(r.id));
104
+ }, R = (r, n = "first") => {
105
+ e.disabled || (d(r), requestAnimationFrame(() => {
106
+ C(), p(h, n);
87
107
  }));
88
- }, p = (o) => {
108
+ }, T = (r) => {
89
109
  if (e.disabled) return;
90
- const r = ke(o.key, {
91
- open: f(),
110
+ const n = Pe(r.key, {
111
+ open: c(),
92
112
  hasSelection: !!e.value
93
113
  });
94
- if (r) {
95
- if (o.preventDefault(), !r.nextOpen) {
96
- c(!1);
114
+ if (n) {
115
+ if (r.preventDefault(), !n.nextOpen) {
116
+ d(!1);
97
117
  return;
98
118
  }
99
- T(!0, r.focusMode ?? "first");
119
+ R(!0, n.focusMode ?? "first");
100
120
  }
101
- }, _ = (o) => {
102
- const r = o.target, i = r?.closest('[role="menu"]'), t = r?.closest(le);
103
- switch (o.key) {
121
+ }, q = (r) => {
122
+ const n = r.target, i = n?.closest('[role="menu"]'), t = n?.closest(le);
123
+ switch (r.key) {
104
124
  case "ArrowDown":
105
- o.preventDefault(), U(i, t, 1);
125
+ r.preventDefault(), U(i, t, 1);
106
126
  return;
107
127
  case "ArrowUp":
108
- o.preventDefault(), U(i, t, -1);
128
+ r.preventDefault(), U(i, t, -1);
109
129
  return;
110
130
  case "Home":
111
- o.preventDefault(), D(i, "first");
131
+ r.preventDefault(), p(i, "first");
112
132
  return;
113
133
  case "End":
114
- o.preventDefault(), D(i, "last");
134
+ r.preventDefault(), p(i, "last");
115
135
  return;
116
136
  case "Tab":
117
- c(!1);
137
+ r.preventDefault(), d(!1), v?.focus();
118
138
  return;
119
139
  default:
120
140
  return;
121
141
  }
122
142
  };
123
143
  return (() => {
124
- var o = he(), r = o.firstChild;
125
- m(o, "data-floe-dropdown", h), r.$$keydown = p, r.$$click = () => {
144
+ var r = he(), n = r.firstChild;
145
+ f(r, "data-floe-dropdown", b), n.$$keydown = T, n.$$click = () => {
126
146
  if (!e.disabled) {
127
- if (f()) {
128
- c(!1);
147
+ if (c()) {
148
+ d(!1);
129
149
  return;
130
150
  }
131
- T(!0, e.value ? "selected" : "first");
151
+ R(!0, e.value ? "selected" : "first");
132
152
  }
133
153
  };
134
- var i = x;
135
- return typeof i == "function" ? I(i, r) : x = r, m(r, "aria-controls", C), v(r, () => e.trigger), v(o, l(y, {
154
+ var i = v;
155
+ return typeof i == "function" ? I(i, n) : v = n, f(n, "aria-controls", $), g(n, () => e.trigger), g(r, l(y, {
136
156
  get when() {
137
- return a.mounted();
157
+ return o.mounted();
138
158
  },
139
159
  get children() {
140
160
  return l(W, {
141
161
  get mount() {
142
- return g.mount();
162
+ return m.mount();
143
163
  },
144
164
  get children() {
145
- var t = B(), n = w;
146
- return typeof n == "function" ? I(n, t) : w = t, m(t, "data-floe-dropdown", h), G(t, J({
165
+ var t = H(), s = h;
166
+ return typeof s == "function" ? I(s, t) : h = t, f(t, "data-floe-dropdown", b), G(t, J({
147
167
  get class() {
148
- return k(g.isSurfaceMode() ? "absolute z-20 min-w-36 py-0.5" : "fixed z-50 min-w-36 py-0.5", "bg-popover text-popover-foreground", "rounded border border-border shadow-md", "floe-floating-presence floe-floating-menu");
168
+ return M(m.isSurfaceMode() ? "absolute z-20 min-w-36 py-0.5" : "fixed z-50 min-w-36 py-0.5", "bg-popover text-popover-foreground", "rounded border border-border shadow-md", "floe-floating-presence floe-floating-menu");
149
169
  },
150
170
  get "data-floating-presence"() {
151
- return a.state();
171
+ return o.state();
152
172
  },
153
173
  get "aria-hidden"() {
154
- return a.exiting() ? "true" : void 0;
174
+ return o.exiting() ? "true" : void 0;
155
175
  }
156
176
  }, () => ({
157
- [X]: g.isSurfaceMode() ? "true" : void 0
177
+ [X]: m.isSurfaceMode() ? "true" : void 0
158
178
  }), {
159
179
  get style() {
160
180
  return {
161
- left: `${g.projectPosition(q()).x}px`,
162
- top: `${g.projectPosition(q()).y}px`
181
+ left: `${m.projectPosition(B()).x}px`,
182
+ top: `${m.projectPosition(B()).y}px`
163
183
  };
164
184
  },
165
185
  role: "menu",
166
186
  "data-floe-surface": "floating",
167
- id: C,
168
- onKeyDown: _
169
- }), !1, !0), v(t, l(V, {
187
+ id: $,
188
+ onKeyDown: q
189
+ }), !1, !0), g(t, l(V, {
170
190
  get each() {
171
191
  return e.items;
172
192
  },
173
- children: (d) => l(y, {
193
+ children: (u) => l(y, {
174
194
  get when() {
175
- return !d().separator;
195
+ return !u().separator;
176
196
  },
177
197
  get fallback() {
178
198
  return Z();
@@ -180,15 +200,15 @@ function Pe(e) {
180
200
  get children() {
181
201
  return l(ee, {
182
202
  get item() {
183
- return d();
203
+ return u();
184
204
  },
185
205
  get selected() {
186
- return e.value === d().id;
206
+ return e.value === u().id;
187
207
  },
188
- onSelect: L,
189
- onCloseMenu: () => c(!1),
190
- dropdownId: h,
191
- portalLayout: g
208
+ onSelect: j,
209
+ onCloseMenu: () => d(!1),
210
+ dropdownId: b,
211
+ portalLayout: m
192
212
  });
193
213
  }
194
214
  })
@@ -197,8 +217,8 @@ function Pe(e) {
197
217
  });
198
218
  }
199
219
  }), null), F((t) => {
200
- var n = k("relative inline-block", e.class), d = k("cursor-pointer", e.triggerClass, e.disabled && "pointer-events-none opacity-50"), s = e.disabled ? -1 : 0, S = f(), u = e.triggerAriaLabel, M = e.disabled ? "true" : void 0, R = e.triggerInputSurface ? "true" : void 0, E = e.triggerInputSurface ? "inset" : void 0;
201
- return n !== t.e && O(o, t.e = n), d !== t.t && O(r, t.t = d), s !== t.a && m(r, "tabindex", t.a = s), S !== t.o && m(r, "aria-expanded", t.o = S), u !== t.i && m(r, "aria-label", t.i = u), M !== t.n && m(r, "aria-disabled", t.n = M), R !== t.s && m(r, "data-floe-input-surface", t.s = R), E !== t.h && m(r, "data-floe-surface", t.h = E), t;
220
+ var s = M("relative inline-block", e.class), u = M("cursor-pointer", e.triggerClass, e.disabled && "pointer-events-none opacity-50"), x = e.disabled ? -1 : 0, a = c(), S = e.triggerAriaLabel, E = e.disabled ? "true" : void 0, D = e.triggerInputSurface ? "true" : void 0, L = e.triggerInputSurface ? "inset" : void 0;
221
+ return s !== t.e && O(r, t.e = s), u !== t.t && O(n, t.t = u), x !== t.a && f(n, "tabindex", t.a = x), a !== t.o && f(n, "aria-expanded", t.o = a), S !== t.i && f(n, "aria-label", t.i = S), E !== t.n && f(n, "aria-disabled", t.n = E), D !== t.s && f(n, "data-floe-input-surface", t.s = D), L !== t.h && f(n, "data-floe-surface", t.h = L), t;
202
222
  }, {
203
223
  e: void 0,
204
224
  t: void 0,
@@ -208,110 +228,110 @@ function Pe(e) {
208
228
  n: void 0,
209
229
  s: void 0,
210
230
  h: void 0
211
- }), o;
231
+ }), r;
212
232
  })();
213
233
  }
214
234
  function ee(e) {
215
- const [f, c] = j(!1), a = () => e.item.children && e.item.children.length > 0, P = Y({
216
- open: () => !!(f() && a()),
235
+ const [c, d] = _(!1), o = () => e.item.children && e.item.children.length > 0, k = Y({
236
+ open: () => !!(c() && o()),
217
237
  exitDurationMs: 100
218
- }), [x, w] = j({
238
+ }), [v, h] = _({
219
239
  x: -9999,
220
240
  y: -9999
221
241
  });
222
- let h, C, b, g;
223
- const A = `floe-dropdown-item-${Me += 1}`;
242
+ let b, $, w, m;
243
+ const A = `floe-dropdown-item-${ke += 1}`;
224
244
  Q(() => {
225
- P.mounted() || w({
245
+ k.mounted() || h({
226
246
  x: -9999,
227
247
  y: -9999
228
248
  });
229
249
  });
230
- const L = () => {
231
- if (!h || !b) return;
232
- const i = h.getBoundingClientRect(), t = b.getBoundingClientRect(), n = ce(i, t, e.portalLayout.boundaryRect());
233
- w(n);
234
- }, T = () => {
235
- a() && (clearTimeout(g), g = setTimeout(() => {
236
- c(!0), requestAnimationFrame(L);
250
+ const C = () => {
251
+ if (!b || !w) return;
252
+ const n = b.getBoundingClientRect(), i = w.getBoundingClientRect(), t = de(n, i, e.portalLayout.boundaryRect());
253
+ h(t);
254
+ }, j = () => {
255
+ o() && (clearTimeout(m), m = setTimeout(() => {
256
+ d(!0), requestAnimationFrame(C);
237
257
  }, 100));
238
- }, p = () => {
239
- a() && (clearTimeout(g), g = void 0, !e.item.keepOpen && (g = setTimeout(() => {
240
- c(!1);
258
+ }, R = () => {
259
+ o() && (clearTimeout(m), m = void 0, !e.item.keepOpen && (m = setTimeout(() => {
260
+ d(!1);
241
261
  }, 150)));
242
- }, _ = (i) => {
262
+ }, T = (n) => {
243
263
  if (!e.item.disabled) {
244
264
  if (e.item.content && e.item.keepOpen) {
245
- i.stopPropagation();
265
+ n.stopPropagation();
246
266
  return;
247
267
  }
248
- a() ? (c((t) => !t), requestAnimationFrame(L)) : e.item.content || e.onSelect(e.item);
268
+ o() ? (d((i) => !i), requestAnimationFrame(C)) : e.item.content || e.onSelect(e.item);
249
269
  }
250
- }, o = (i = "first") => {
251
- a() && (c(!0), requestAnimationFrame(() => {
252
- L(), D(b, i);
270
+ }, q = (n = "first") => {
271
+ o() && (d(!0), requestAnimationFrame(() => {
272
+ C(), p(w, n);
253
273
  }));
254
274
  }, r = () => {
255
- c(!1), requestAnimationFrame(() => C?.focus());
275
+ d(!1), requestAnimationFrame(() => $?.focus());
256
276
  };
257
277
  return (() => {
258
- var i = we();
259
- i.addEventListener("mouseleave", p), i.addEventListener("mouseenter", T);
260
- var t = h;
261
- return typeof t == "function" ? I(t, i) : h = i, v(i, l(y, {
278
+ var n = ye();
279
+ n.addEventListener("mouseleave", R), n.addEventListener("mouseenter", j);
280
+ var i = b;
281
+ return typeof i == "function" ? I(i, n) : b = n, g(n, l(y, {
262
282
  get when() {
263
283
  return e.item.content;
264
284
  },
265
285
  get children() {
266
- var n = B();
267
- return n.$$click = _, v(n, e.item.content), F((d) => {
268
- var s = k("w-full px-2 py-1.5", e.item.tone === "danger" && "text-destructive", e.item.disabled && "opacity-50 pointer-events-none"), S = e.item.tone ?? "default";
269
- return s !== d.e && O(n, d.e = s), S !== d.t && m(n, "data-tone", d.t = S), d;
286
+ var t = H();
287
+ return t.$$click = T, g(t, e.item.content), F((s) => {
288
+ var u = M("w-full px-2 py-1.5", e.item.tone === "danger" && "text-destructive", e.item.disabled && "opacity-50 pointer-events-none"), x = e.item.tone ?? "default";
289
+ return u !== s.e && O(t, s.e = u), x !== s.t && f(t, "data-tone", s.t = x), s;
270
290
  }, {
271
291
  e: void 0,
272
292
  t: void 0
273
- }), n;
293
+ }), t;
274
294
  }
275
- }), null), v(i, l(y, {
295
+ }), null), g(n, l(y, {
276
296
  get when() {
277
297
  return !e.item.content;
278
298
  },
279
299
  get children() {
280
- var n = be(), d = n.firstChild, s = d.nextSibling;
281
- n.$$keydown = (u) => {
282
- e.item.disabled || a() && ((u.key === "ArrowRight" || u.key === "Enter" || u.key === " ") && (u.preventDefault(), o("first")), u.key === "ArrowLeft" && (u.preventDefault(), r()));
283
- }, n.$$click = _;
284
- var S = C;
285
- return typeof S == "function" ? I(S, n) : C = n, m(n, "id", A), v(d, l(y, {
300
+ var t = we(), s = t.firstChild, u = s.nextSibling;
301
+ t.$$keydown = (a) => {
302
+ e.item.disabled || o() && ((a.key === "ArrowRight" || a.key === "Enter" || a.key === " ") && (a.preventDefault(), q("first")), a.key === "ArrowLeft" && (a.preventDefault(), r()));
303
+ }, t.$$click = T;
304
+ var x = $;
305
+ return typeof x == "function" ? I(x, t) : $ = t, f(t, "id", A), g(s, l(y, {
286
306
  get when() {
287
- return z(() => !!e.selected)() && !a();
307
+ return z(() => !!e.selected)() && !o();
288
308
  },
289
309
  get children() {
290
- return l(ae, {
310
+ return l(ie, {
291
311
  class: "w-3 h-3"
292
312
  });
293
313
  }
294
- })), v(n, l(y, {
314
+ })), g(t, l(y, {
295
315
  get when() {
296
316
  return e.item.icon;
297
317
  },
298
318
  keyed: !0,
299
- children: (u) => (() => {
300
- var M = ye();
301
- return v(M, u), M;
319
+ children: (a) => (() => {
320
+ var S = xe();
321
+ return g(S, a), S;
302
322
  })()
303
- }), s), v(s, () => e.item.label), v(n, l(y, {
323
+ }), u), g(u, () => e.item.label), g(t, l(y, {
304
324
  get when() {
305
- return a();
325
+ return o();
306
326
  },
307
327
  get children() {
308
328
  return l(ue, {
309
329
  class: "w-3 h-3 text-muted-foreground"
310
330
  });
311
331
  }
312
- }), null), F((u) => {
313
- var M = k("w-full flex items-center gap-1.5 px-2 py-1 text-xs", "transition-colors duration-75", "focus:outline-none focus:bg-accent", e.item.tone === "danger" && "text-destructive", e.item.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-accent cursor-pointer"), R = e.item.disabled, E = a() ? "menu" : void 0, H = a() ? f() : void 0, K = e.selected && !a() ? "true" : void 0, N = e.item.tone ?? "default";
314
- return M !== u.e && O(n, u.e = M), R !== u.t && (n.disabled = u.t = R), E !== u.a && m(n, "aria-haspopup", u.a = E), H !== u.o && m(n, "aria-expanded", u.o = H), K !== u.i && m(n, "data-floe-selected", u.i = K), N !== u.n && m(n, "data-tone", u.n = N), u;
332
+ }), null), F((a) => {
333
+ var S = M("w-full flex items-center gap-1.5 px-2 py-1 text-xs", "transition-colors duration-75", "focus:outline-none focus:bg-accent", e.item.tone === "danger" && "text-destructive", e.item.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-accent cursor-pointer"), E = e.item.disabled, D = o() ? "menu" : void 0, L = o() ? c() : void 0, K = e.selected && !o() ? "true" : void 0, N = e.item.tone ?? "default";
334
+ return S !== a.e && O(t, a.e = S), E !== a.t && (t.disabled = a.t = E), D !== a.a && f(t, "aria-haspopup", a.a = D), L !== a.o && f(t, "aria-expanded", a.o = L), K !== a.i && f(t, "data-floe-selected", a.i = K), N !== a.n && f(t, "data-tone", a.n = N), a;
315
335
  }, {
316
336
  e: void 0,
317
337
  t: void 0,
@@ -319,11 +339,11 @@ function ee(e) {
319
339
  o: void 0,
320
340
  i: void 0,
321
341
  n: void 0
322
- }), n;
342
+ }), t;
323
343
  }
324
- }), null), v(i, l(y, {
344
+ }), null), g(n, l(y, {
325
345
  get when() {
326
- return z(() => !!P.mounted())() && a();
346
+ return z(() => !!k.mounted())() && o();
327
347
  },
328
348
  get children() {
329
349
  return l(W, {
@@ -331,46 +351,46 @@ function ee(e) {
331
351
  return e.portalLayout.mount();
332
352
  },
333
353
  get children() {
334
- var n = B(), d = b;
335
- return typeof d == "function" ? I(d, n) : b = n, G(n, J({
354
+ var t = H(), s = w;
355
+ return typeof s == "function" ? I(s, t) : w = t, G(t, J({
336
356
  get class() {
337
- return k(e.portalLayout.isSurfaceMode() ? "absolute z-20 min-w-36 py-0.5" : "fixed z-50 min-w-36 py-0.5", "bg-popover text-popover-foreground", "rounded border border-border shadow-md", "floe-floating-presence floe-floating-menu floe-floating-submenu");
357
+ return M(e.portalLayout.isSurfaceMode() ? "absolute z-20 min-w-36 py-0.5" : "fixed z-50 min-w-36 py-0.5", "bg-popover text-popover-foreground", "rounded border border-border shadow-md", "floe-floating-presence floe-floating-menu floe-floating-submenu");
338
358
  },
339
359
  get "data-floe-dropdown"() {
340
360
  return e.dropdownId;
341
361
  },
342
362
  get "data-floating-presence"() {
343
- return P.state();
363
+ return k.state();
344
364
  },
345
365
  get "aria-hidden"() {
346
- return P.exiting() ? "true" : void 0;
366
+ return k.exiting() ? "true" : void 0;
347
367
  }
348
368
  }, () => ({
349
369
  [X]: e.portalLayout.isSurfaceMode() ? "true" : void 0
350
370
  }), {
351
371
  get style() {
352
372
  return {
353
- left: `${e.portalLayout.projectPosition(x()).x}px`,
354
- top: `${e.portalLayout.projectPosition(x()).y}px`
373
+ left: `${e.portalLayout.projectPosition(v()).x}px`,
374
+ top: `${e.portalLayout.projectPosition(v()).y}px`
355
375
  };
356
376
  },
357
377
  role: "menu",
358
378
  "data-floe-surface": "floating",
359
379
  "aria-labelledby": A,
360
380
  onMouseEnter: () => {
361
- clearTimeout(g);
381
+ clearTimeout(m);
362
382
  },
363
- onMouseLeave: p,
364
- onKeyDown: (s) => {
365
- s.key !== "ArrowLeft" && s.key !== "Escape" || (s.preventDefault(), s.stopPropagation(), r());
383
+ onMouseLeave: R,
384
+ onKeyDown: (u) => {
385
+ u.key !== "ArrowLeft" && u.key !== "Escape" || (u.preventDefault(), u.stopPropagation(), r());
366
386
  }
367
- }), !1, !0), v(n, l(V, {
387
+ }), !1, !0), g(t, l(V, {
368
388
  get each() {
369
389
  return e.item.children;
370
390
  },
371
- children: (s) => l(y, {
391
+ children: (u) => l(y, {
372
392
  get when() {
373
- return !s().separator;
393
+ return !u().separator;
374
394
  },
375
395
  get fallback() {
376
396
  return Z();
@@ -378,7 +398,7 @@ function ee(e) {
378
398
  get children() {
379
399
  return l(ee, {
380
400
  get item() {
381
- return s();
401
+ return u();
382
402
  },
383
403
  selected: !1,
384
404
  get onSelect() {
@@ -396,33 +416,33 @@ function ee(e) {
396
416
  });
397
417
  }
398
418
  })
399
- })), n;
419
+ })), t;
400
420
  }
401
421
  });
402
422
  }
403
- }), null), i;
423
+ }), null), n;
404
424
  })();
405
425
  }
406
- function Te(e) {
407
- const f = () => e.options.find((a) => a.value === e.value), c = () => e.options.map((a) => ({
408
- id: a.value,
409
- label: a.label
426
+ function Fe(e) {
427
+ const c = () => e.options.find((o) => o.value === e.value), d = () => e.options.map((o) => ({
428
+ id: o.value,
429
+ label: o.label
410
430
  }));
411
- return l(Pe, {
431
+ return l($e, {
412
432
  triggerInputSurface: !0,
413
433
  get triggerClass() {
414
- return k("flex items-center justify-between gap-2 h-8 px-2.5 w-full", "rounded border border-input bg-background text-xs shadow-sm", "transition-colors duration-100", e.class);
434
+ return M("flex items-center justify-between gap-2 h-8 px-2.5 w-full", "rounded border border-input bg-background text-xs shadow-sm", "transition-colors duration-100", e.class);
415
435
  },
416
436
  get trigger() {
417
437
  return [(() => {
418
- var a = xe();
419
- return v(a, () => f()?.label ?? e.placeholder ?? "Select..."), F(() => O(a, k("truncate", !f() && "text-muted-foreground"))), a;
420
- })(), l(ie, {
438
+ var o = Se();
439
+ return g(o, () => c()?.label ?? e.placeholder ?? "Select..."), F(() => O(o, M("truncate", !c() && "text-muted-foreground"))), o;
440
+ })(), l(ae, {
421
441
  class: "w-3.5 h-3.5 text-muted-foreground"
422
442
  })];
423
443
  },
424
444
  get items() {
425
- return c();
445
+ return d();
426
446
  },
427
447
  get value() {
428
448
  return e.value;
@@ -437,7 +457,7 @@ function Te(e) {
437
457
  }
438
458
  te(["click", "keydown"]);
439
459
  export {
440
- Pe as Dropdown,
441
- Te as Select,
442
- ke as resolveDropdownTriggerKeyAction
460
+ $e as Dropdown,
461
+ Fe as Select,
462
+ Pe as resolveDropdownTriggerKeyAction
443
463
  };