@floegence/floe-webapp-core 0.86.58 → 0.86.62

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/components/chat/blocks/BlockRenderer.js +1 -1
  2. package/dist/components/chat/blocks/CodeDiffBlock.js +56 -56
  3. package/dist/components/chat/blocks/ImageBlock.js +1 -1
  4. package/dist/components/chat/blocks/ToolCallBlock.js +57 -57
  5. package/dist/components/chat/status/ConnectionStatus.js +10 -10
  6. package/dist/components/deck/DeckCell.js +25 -25
  7. package/dist/components/deck/DeckContextMenu.js +20 -20
  8. package/dist/components/deck/DeckGrid.js +1 -1
  9. package/dist/components/deck/DeckTopBar.js +42 -42
  10. package/dist/components/deck/DropZonePreview.js +6 -6
  11. package/dist/components/deck/LayoutSelector.js +53 -53
  12. package/dist/components/deck/WidgetFrame.js +28 -28
  13. package/dist/components/deck/WidgetPalette.js +31 -31
  14. package/dist/components/deck/WidgetTypeSwitcher.js +31 -31
  15. package/dist/components/file-browser/Breadcrumb.js +27 -27
  16. package/dist/components/file-browser/DirectoryTree.js +15 -15
  17. package/dist/components/file-browser/DragPreview.js +58 -58
  18. package/dist/components/file-browser/FileBrowser.js +17 -17
  19. package/dist/components/file-browser/FileBrowserStatusBar.js +18 -18
  20. package/dist/components/file-browser/FileBrowserToolbar.js +27 -27
  21. package/dist/components/file-browser/FileContextMenu.js +47 -47
  22. package/dist/components/file-browser/FileGridView.js +53 -51
  23. package/dist/components/file-browser/FileItemDecorations.js +30 -27
  24. package/dist/components/file-browser/FileListView.js +114 -114
  25. package/dist/components/icons/index.js +1357 -1357
  26. package/dist/components/launchpad/Launchpad.js +14 -14
  27. package/dist/components/launchpad/LaunchpadGrid.js +7 -7
  28. package/dist/components/launchpad/LaunchpadItem.js +11 -11
  29. package/dist/components/launchpad/LaunchpadPagination.js +16 -16
  30. package/dist/components/launchpad/LaunchpadSearch.js +9 -9
  31. package/dist/components/layout/ActivityBar.js +52 -55
  32. package/dist/components/layout/BottomBar.js +17 -17
  33. package/dist/components/layout/MobileNavigationPanel.js +36 -36
  34. package/dist/components/layout/MobileTabBar.js +39 -39
  35. package/dist/components/layout/Panel.js +16 -16
  36. package/dist/components/layout/ResizeHandle.js +19 -19
  37. package/dist/components/layout/Shell.js +50 -50
  38. package/dist/components/layout/Sidebar.js +37 -36
  39. package/dist/components/layout/SidebarPane.js +19 -19
  40. package/dist/components/layout/TopBar.js +16 -16
  41. package/dist/components/layout/TopBarIconButton.js +15 -15
  42. package/dist/components/loading/LoadingOverlay.js +9 -9
  43. package/dist/components/loading/Skeleton.js +11 -11
  44. package/dist/components/ui/Button.js +36 -36
  45. package/dist/components/ui/Card.d.ts +11 -62
  46. package/dist/components/ui/Card.js +64 -237
  47. package/dist/components/ui/Checkbox.js +79 -79
  48. package/dist/components/ui/CommandPalette.js +56 -55
  49. package/dist/components/ui/Dialog.js +91 -93
  50. package/dist/components/ui/DirectoryInput.js +22 -22
  51. package/dist/components/ui/DirectoryPicker.js +8 -8
  52. package/dist/components/ui/Dropdown.js +89 -87
  53. package/dist/components/ui/FeedbackIndicator.js +57 -57
  54. package/dist/components/ui/FileOpenPicker.js +37 -37
  55. package/dist/components/ui/FileSavePicker.js +41 -41
  56. package/dist/components/ui/FloatingWindow.js +266 -261
  57. package/dist/components/ui/Form.js +76 -76
  58. package/dist/components/ui/HighlightBlock.js +14 -14
  59. package/dist/components/ui/Input.js +106 -109
  60. package/dist/components/ui/Pagination.js +86 -86
  61. package/dist/components/ui/Popover.d.ts +33 -0
  62. package/dist/components/ui/Popover.js +133 -0
  63. package/dist/components/ui/ProcessingIndicator.js +344 -345
  64. package/dist/components/ui/Progress.js +94 -97
  65. package/dist/components/ui/QuoteBlock.js +25 -25
  66. package/dist/components/ui/Radio.js +91 -91
  67. package/dist/components/ui/SegmentedControl.js +24 -24
  68. package/dist/components/ui/Stepper.js +68 -60
  69. package/dist/components/ui/Switch.js +25 -25
  70. package/dist/components/ui/Tabs.js +99 -87
  71. package/dist/components/ui/Tag.js +12 -9
  72. package/dist/components/ui/Tooltip.js +30 -30
  73. package/dist/components/ui/floatingPresence.d.ts +7 -0
  74. package/dist/components/ui/floatingPresence.js +80 -39
  75. package/dist/components/ui/index.d.ts +2 -1
  76. package/dist/components/ui/picker/DirectoryFavorites.js +27 -27
  77. package/dist/components/ui/picker/PickerBase.js +107 -107
  78. package/dist/context/NotificationContext.js +4 -4
  79. package/dist/context/ThemeContext.js +71 -70
  80. package/dist/floe.css +205 -43
  81. package/dist/full.js +650 -652
  82. package/dist/language.css +320 -0
  83. package/dist/primitives.css +23 -17
  84. package/dist/standalone.css +1 -0
  85. package/dist/styles/themes/classicSemanticTokens.d.ts +122 -122
  86. package/dist/styles/themes/classicSemanticTokens.js +140 -138
  87. package/dist/styles/themes/index.d.ts +3 -1
  88. package/dist/styles/themes/index.js +10 -10
  89. package/dist/styles/themes/presets.d.ts +2 -2
  90. package/dist/styles/themes/presets.js +34 -34
  91. package/dist/styles/tokens.d.ts +152 -68
  92. package/dist/styles/tokens.js +87 -49
  93. package/dist/styles.css +1 -1
  94. package/dist/surface.css +161 -116
  95. package/dist/themes/dark.css +64 -64
  96. package/dist/themes/light.css +64 -64
  97. package/dist/ui.css +171 -255
  98. package/dist/ui.js +176 -178
  99. package/dist/utils/hotInteraction.d.ts +7 -0
  100. package/dist/utils/hotInteraction.js +12 -12
  101. package/dist/widgets/TerminalWidget.js +28 -28
  102. package/dist/workbench-composition.css +15 -15
  103. package/package.json +1 -1
@@ -1,15 +1,15 @@
1
1
  import { createComponent as d, Portal as ce, spread as de, mergeProps as me, insert as M, effect as R, setStyleProperty as fe, template as C, Dynamic as Me, memo as ae, className as Ce, setAttribute as E, use as W, delegateEvents as ke } from "solid-js/web";
2
- import { createSignal as z, createMemo as ue, createEffect as H, onCleanup as Q, untrack as J, on as Se, Show as F, For as he } from "solid-js";
2
+ import { createSignal as z, createMemo as le, createEffect as H, onCleanup as Q, untrack as J, on as Se, Show as F, For as he } from "solid-js";
3
3
  import { cn as ee } from "../../utils/cn.js";
4
4
  import { deferAfterPaint as Ee } from "../../utils/defer.js";
5
5
  import { ChevronLeft as Le, ChevronRight as Pe } from "../icons/index.js";
6
- import { focusMenuItem as X, moveMenuFocus as le, calculateSubmenuPosition as Re, clampMenuPosition as $e } from "../ui/menuUtils.js";
6
+ import { focusMenuItem as X, moveMenuFocus as ue, calculateSubmenuPosition as Re, clampMenuPosition as $e } from "../ui/menuUtils.js";
7
7
  import { LOCAL_INTERACTION_SURFACE_ATTR as ve, CANVAS_WHEEL_INTERACTIVE_ATTR as ge } from "../ui/localInteractionSurface.js";
8
8
  import { readSurfaceSafeArea as Ie, resolveFloatingBoundary as Ae } from "../ui/surfaceFloatingBoundary.js";
9
9
  import { resolveSurfacePortalHost as _e, readFreshInteractionSnapshot as De, projectSurfacePortalPosition as Fe, resolveSurfacePortalScale as Te, isSurfacePortalMode as Be, resolveSurfacePortalMount as je } from "../ui/dialogSurfaceScope.js";
10
10
  import { useResolvedFloeConfig as Ve } from "../../context/FloeConfigContext.js";
11
11
  import { useFileBrowser as He } from "./FileBrowserContext.js";
12
- var ze = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><rect width=14 height=14 x=8 y=8 rx=2 ry=2></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2">'), Oe = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><rect width=14 height=16 x=5 y=4 rx=2></rect><path d="M9 4.5h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v.5a1 1 0 0 0 1 1Z">'), Ne = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m12 3-1.9 5.8a2 2 0 0 1-1.3 1.3L3 12l5.8 1.9a2 2 0 0 1 1.3 1.3L12 21l1.9-5.8a2 2 0 0 1 1.3-1.3L21 12l-5.8-1.9a2 2 0 0 1-1.3-1.3Z">'), qe = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"></path><path d="M8 10v4"></path><path d="M12 10v2"></path><path d="M16 10v6">'), Ze = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M12 3v18"></path><path d="m8 7-4 4 4 4"></path><path d="m16 7 4 4-4 4">'), Ke = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2">'), Ue = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"></path><path d="m15 5 4 4">'), We = /* @__PURE__ */ C('<span class="shrink-0 text-[10px] text-muted-foreground opacity-60">'), we = /* @__PURE__ */ C("<div>"), Qe = /* @__PURE__ */ C('<div class=relative><button type=button role=menuitem><span class="min-w-0 flex-1 text-left [overflow-wrap:anywhere]">'), ye = /* @__PURE__ */ C('<div class="my-1 h-px bg-border"role=separator>'), Ge = /* @__PURE__ */ C('<button type=button role=menuitem class="flex w-full items-center gap-2 border-b px-3 py-1.5 text-xs cursor-pointer hover:bg-accent focus-visible:bg-accent focus:outline-none"><span></span><span class="min-w-0 flex-1 truncate text-right text-muted-foreground">');
12
+ var ze = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><rect width=14 height=14 x=8 y=8 rx=2 ry=2></rect><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2">'), Oe = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><rect width=14 height=16 x=5 y=4 rx=2></rect><path d="M9 4.5h6a1 1 0 0 0 1-1V3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v.5a1 1 0 0 0 1 1Z">'), Ne = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="m12 3-1.9 5.8a2 2 0 0 1-1.3 1.3L3 12l5.8 1.9a2 2 0 0 1 1.3 1.3L12 21l1.9-5.8a2 2 0 0 1 1.3-1.3L21 12l-5.8-1.9a2 2 0 0 1-1.3-1.3Z">'), qe = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"></path><path d="M8 10v4"></path><path d="M12 10v2"></path><path d="M16 10v6">'), Ze = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M12 3v18"></path><path d="m8 7-4 4 4 4"></path><path d="m16 7 4 4-4 4">'), Ke = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M3 6h18"></path><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"></path><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2">'), Ue = /* @__PURE__ */ C('<svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z"></path><path d="m15 5 4 4">'), We = /* @__PURE__ */ C('<span class="shrink-0 text-caption text-[var(--floe-ink-soft)] opacity-60">'), we = /* @__PURE__ */ C("<div>"), Qe = /* @__PURE__ */ C('<div class=relative><button type=button role=menuitem><span class="min-w-0 flex-1 text-left [overflow-wrap:anywhere]">'), ye = /* @__PURE__ */ C('<div class="my-1 h-px bg-border"role=separator>'), Ge = /* @__PURE__ */ C('<button type=button role=menuitem class="flex w-full items-center gap-2 border-b px-3 py-1.5 text-xs cursor-pointer hover:bg-[var(--floe-state-selected)] focus-visible:bg-[var(--floe-state-selected)] focus:outline-none"><span></span><span class="min-w-0 flex-1 truncate text-right text-[var(--floe-ink-soft)]">');
13
13
  const Je = (e) => (() => {
14
14
  var t = ze();
15
15
  return R(() => E(t, "class", e.class)), t;
@@ -136,10 +136,10 @@ function be(e, t) {
136
136
  const s = e.target, a = s?.closest('[role="menu"]'), g = s?.closest('[role="menuitem"]');
137
137
  switch (e.key) {
138
138
  case "ArrowDown":
139
- e.preventDefault(), le(a, g, 1);
139
+ e.preventDefault(), ue(a, g, 1);
140
140
  return;
141
141
  case "ArrowUp":
142
- e.preventDefault(), le(a, g, -1);
142
+ e.preventDefault(), ue(a, g, -1);
143
143
  return;
144
144
  case "Home":
145
145
  e.preventDefault(), X(a, "first");
@@ -177,7 +177,7 @@ function G(e, t) {
177
177
  const s = e.target;
178
178
  return typeof Element < "u" && s instanceof Element ? !!s.closest(`[data-floe-context-menu="${t}"]`) : !1;
179
179
  }
180
- function ut(e) {
180
+ function lt(e) {
181
181
  const {
182
182
  ownerWindow: t,
183
183
  contextMenuId: s,
@@ -204,42 +204,42 @@ function xe(e) {
204
204
  });
205
205
  const h = () => (e.item.children?.length ?? 0) > 0, A = () => t().phase !== "closed", _ = () => te(t()), N = () => {
206
206
  if (!a) return pe;
207
- const l = a.getBoundingClientRect();
207
+ const u = a.getBoundingClientRect();
208
208
  return {
209
- x: l.right,
210
- y: l.top
209
+ x: u.right,
210
+ y: u.top
211
211
  };
212
- }, V = (l, u) => {
213
- if (!a || !f) return l;
212
+ }, V = (u, l) => {
213
+ if (!a || !f) return u;
214
214
  const p = a.getBoundingClientRect(), L = f.getBoundingClientRect();
215
- return Re(p, L, u);
215
+ return Re(p, L, l);
216
216
  }, k = () => {
217
217
  v && (clearTimeout(v), v = void 0);
218
218
  }, S = () => {
219
219
  oe(w), w = void 0;
220
220
  }, q = () => {
221
221
  oe($), $ = void 0;
222
- }, j = (l = "first") => {
222
+ }, j = (u = "first") => {
223
223
  if (!h() || e.item.disabled) return;
224
224
  if (k(), S(), q(), e.portalLayout.touch()) {
225
- e.portalLayout.enterChild([...e.path, e.item], l);
225
+ e.portalLayout.enterChild([...e.path, e.item], u);
226
226
  return;
227
227
  }
228
- const u = ++O, p = N(), L = e.portalLayout.boundaryRect;
229
- s(T("measuring", u, p)), w = ne(() => J(() => {
230
- if (w = void 0, O !== u) return;
228
+ const l = ++O, p = N(), L = e.portalLayout.boundaryRect;
229
+ s(T("measuring", l, p)), w = ne(() => J(() => {
230
+ if (w = void 0, O !== l) return;
231
231
  const P = L(), n = a?.getBoundingClientRect(), o = f?.getBoundingClientRect();
232
232
  if (n && o && o.width > 0 && Math.max(P.right - n.right - 8, n.left - P.left - 8) < o.width) {
233
233
  y({
234
234
  restoreFocus: !1
235
- }), e.portalLayout.enterChild([...e.path, e.item], l);
235
+ }), e.portalLayout.enterChild([...e.path, e.item], u);
236
236
  return;
237
237
  }
238
238
  const r = V(p, P);
239
- s(T("positioned", u, p, r)), X(f, l);
239
+ s(T("positioned", l, p, r)), X(f, u);
240
240
  }));
241
- }, y = (l = {}) => {
242
- k(), S(), s(T("closed", ++O)), (l.restoreFocus ?? !0) && (q(), $ = ne(() => {
241
+ }, y = (u = {}) => {
242
+ k(), S(), s(T("closed", ++O)), (u.restoreFocus ?? !0) && (q(), $ = ne(() => {
243
243
  $ = void 0, g?.focus();
244
244
  }));
245
245
  }, Y = () => {
@@ -252,10 +252,10 @@ function xe(e) {
252
252
  restoreFocus: !1
253
253
  });
254
254
  }, 150));
255
- }, K = (l) => {
255
+ }, K = (u) => {
256
256
  if (!e.item.disabled) {
257
257
  if (h()) {
258
- l.preventDefault(), l.stopPropagation(), A() ? y() : j("first");
258
+ u.preventDefault(), u.stopPropagation(), A() ? y() : j("first");
259
259
  return;
260
260
  }
261
261
  e.onSelect(e.item, e.menu);
@@ -266,14 +266,14 @@ function xe(e) {
266
266
  });
267
267
  const U = () => e.portalLayout.projectPosition(t().position);
268
268
  return (() => {
269
- var l = Qe(), u = l.firstChild, p = u.firstChild;
270
- l.addEventListener("mouseleave", b), l.addEventListener("mouseenter", Y);
269
+ var u = Qe(), l = u.firstChild, p = l.firstChild;
270
+ u.addEventListener("mouseleave", b), u.addEventListener("mouseenter", Y);
271
271
  var L = a;
272
- typeof L == "function" ? W(L, l) : a = l, u.$$keydown = (n) => {
272
+ typeof L == "function" ? W(L, u) : a = u, l.$$keydown = (n) => {
273
273
  e.item.disabled || !h() || (n.key === "ArrowRight" || n.key === "Enter" || n.key === " ") && (n.preventDefault(), j("first"));
274
- }, u.$$click = K;
274
+ }, l.$$click = K;
275
275
  var P = g;
276
- return typeof P == "function" ? W(P, u) : g = u, M(u, d(F, {
276
+ return typeof P == "function" ? W(P, l) : g = l, M(l, d(F, {
277
277
  get when() {
278
278
  return e.item.icon;
279
279
  },
@@ -283,7 +283,7 @@ function xe(e) {
283
283
  },
284
284
  class: "w-3.5 h-3.5 shrink-0 opacity-60"
285
285
  })
286
- }), p), M(p, () => e.item.label), M(u, d(F, {
286
+ }), p), M(p, () => e.item.label), M(l, d(F, {
287
287
  get when() {
288
288
  return ae(() => !!e.item.shortcut)() && !h();
289
289
  },
@@ -291,16 +291,16 @@ function xe(e) {
291
291
  var n = We();
292
292
  return M(n, () => e.item.shortcut), n;
293
293
  }
294
- }), null), M(u, d(F, {
294
+ }), null), M(l, d(F, {
295
295
  get when() {
296
296
  return h();
297
297
  },
298
298
  get children() {
299
299
  return d(Pe, {
300
- class: "w-3 h-3 shrink-0 text-muted-foreground"
300
+ class: "w-3 h-3 shrink-0 text-[var(--floe-ink-soft)]"
301
301
  });
302
302
  }
303
- }), null), M(l, d(F, {
303
+ }), null), M(u, d(F, {
304
304
  get when() {
305
305
  return ae(() => !!A())() && h();
306
306
  },
@@ -314,7 +314,7 @@ function xe(e) {
314
314
  return typeof o == "function" ? W(o, n) : f = n, de(n, me(() => e.portalLayout.scrollViewportProps(), {
315
315
  onScroll: () => I((r) => r + 1),
316
316
  get class() {
317
- return ee(e.portalLayout.isSurfaceMode() ? "absolute z-20 py-1" : "fixed z-50 py-1", "bg-popover border border-border rounded-lg shadow-lg overflow-y-auto overscroll-contain touch-pan-y motion-reduce:animate-none", _() && "animate-in fade-in slide-in-from-left-1");
317
+ return ee(e.portalLayout.isSurfaceMode() ? "absolute z-20 py-1" : "fixed z-50 py-1", "bg-popover border border-[var(--floe-line)] rounded-control shadow-[var(--floe-elevation-float)] overflow-y-auto overscroll-contain touch-pan-y motion-reduce:animate-none", _() && "animate-in fade-in slide-in-from-left-1");
318
318
  },
319
319
  get "data-floe-context-menu"() {
320
320
  return e.contextMenuId;
@@ -382,8 +382,8 @@ function xe(e) {
382
382
  });
383
383
  }
384
384
  }), null), R((n) => {
385
- var o = e.item.disabled || !h() && e.item.type === "rename" && e.menu.items.length > 1, r = ee("w-full flex items-center gap-2 px-3 py-1.5 text-xs cursor-pointer", "transition-colors duration-75", "hover:bg-accent hover:text-accent-foreground", "focus:outline-none focus-visible:bg-accent focus-visible:text-accent-foreground", "disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-transparent", e.item.type === "delete" && "text-error hover:bg-error/10 hover:text-error"), i = e.item.id, m = e.portalLayout.touch() ? "44px" : void 0, x = h() ? "menu" : void 0, D = h() ? A() : void 0;
386
- return o !== n.e && (u.disabled = n.e = o), r !== n.t && Ce(u, n.t = r), i !== n.a && E(u, "data-file-menu-item", n.a = i), m !== n.o && fe(u, "min-height", n.o = m), x !== n.i && E(u, "aria-haspopup", n.i = x), D !== n.n && E(u, "aria-expanded", n.n = D), n;
385
+ var o = e.item.disabled || !h() && e.item.type === "rename" && e.menu.items.length > 1, r = ee("w-full flex items-center gap-2 px-3 py-1.5 text-xs cursor-pointer", "transition-colors duration-[var(--floe-duration-instant)]", "hover:bg-[var(--floe-state-selected)] hover:text-accent-foreground", "focus:outline-none focus-visible:bg-[var(--floe-state-selected)] focus-visible:text-accent-foreground", "disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-transparent", e.item.type === "delete" && "text-error hover:bg-error/10 hover:text-error"), i = e.item.id, m = e.portalLayout.touch() ? "44px" : void 0, x = h() ? "menu" : void 0, D = h() ? A() : void 0;
386
+ return o !== n.e && (l.disabled = n.e = o), r !== n.t && Ce(l, n.t = r), i !== n.a && E(l, "data-file-menu-item", n.a = i), m !== n.o && fe(l, "min-height", n.o = m), x !== n.i && E(l, "aria-haspopup", n.i = x), D !== n.n && E(l, "aria-expanded", n.n = D), n;
387
387
  }, {
388
388
  e: void 0,
389
389
  t: void 0,
@@ -391,7 +391,7 @@ function xe(e) {
391
391
  o: void 0,
392
392
  i: void 0,
393
393
  n: void 0
394
- }), l;
394
+ }), u;
395
395
  })();
396
396
  }
397
397
  function bt(e) {
@@ -399,14 +399,14 @@ function bt(e) {
399
399
  let $ = null, B = "first", I;
400
400
  const h = typeof window > "u" || typeof document > "u", A = `floe-context-menu-${rt += 1}`, [_, N] = z(T("closed"));
401
401
  let V, k = 0;
402
- const S = ue(() => t.contextMenu() ? _e({
402
+ const S = le(() => t.contextMenu() ? _e({
403
403
  owner: e.owner
404
404
  }) : {
405
405
  host: null,
406
406
  boundaryHost: null,
407
407
  mountHost: null,
408
408
  mode: "global"
409
- }), q = ue(() => (t.contextMenu(), Ie())), j = () => Ae(S(), e.boundary, q()), y = {
409
+ }), q = le(() => (t.contextMenu(), Ie())), j = () => Ae(S(), e.boundary, q()), y = {
410
410
  mount: () => je(S()),
411
411
  isSurfaceMode: () => Be(S()),
412
412
  boundaryRect: () => j() ?? {
@@ -464,16 +464,16 @@ function bt(e) {
464
464
  Ee(() => {
465
465
  st(n, r, i, o);
466
466
  });
467
- }, l = (n) => {
467
+ }, u = (n) => {
468
468
  if (!I) return n;
469
469
  const o = I.getBoundingClientRect();
470
470
  return $e(n, o, y.boundaryRect());
471
- }, u = () => {
471
+ }, l = () => {
472
472
  oe(V), V = void 0;
473
473
  };
474
474
  H(() => {
475
475
  if (h || !t.contextMenu()) return;
476
- const n = ut({
476
+ const n = lt({
477
477
  ownerWindow: window,
478
478
  contextMenuId: A,
479
479
  onDismiss: (o) => b(o === "escape")
@@ -487,11 +487,11 @@ function bt(e) {
487
487
  v([]), B = "first";
488
488
  const o = De()?.target, r = o?.closest("button, [tabindex], a[href]") ?? o;
489
489
  $ = e.owner ?? (r instanceof HTMLElement ? r : !h && document.activeElement instanceof HTMLElement ? document.activeElement : null), g(typeof window < "u" && !!window.matchMedia?.(`${s.config.layout.mobileQuery}, (pointer: coarse)`).matches);
490
- }), n || (u(), N(T("closed", ++k)));
490
+ }), n || (l(), N(T("closed", ++k)));
491
491
  }), H(() => {
492
492
  const n = t.contextMenu();
493
493
  if (f(), e.boundary, !n) return;
494
- u();
494
+ l();
495
495
  const o = ++k, r = {
496
496
  x: n.x,
497
497
  y: n.y
@@ -503,7 +503,7 @@ function bt(e) {
503
503
  b();
504
504
  return;
505
505
  }
506
- const m = l(r);
506
+ const m = u(r);
507
507
  N(T("positioned", o, r, m));
508
508
  const x = B, D = Array.from(I?.querySelectorAll("[data-file-menu-item]") ?? []).find((Z) => Z.dataset.fileMenuItem === x);
509
509
  D ? D.focus({
@@ -541,14 +541,14 @@ function bt(e) {
541
541
  x?.disconnect(), re?.disconnect(), document.removeEventListener("focusin", o, !0), window.visualViewport?.removeEventListener("resize", n), window.visualViewport?.removeEventListener("scroll", n), window.removeEventListener("blur", n);
542
542
  });
543
543
  }), Q(() => {
544
- u();
544
+ l();
545
545
  });
546
546
  const p = () => te(_()), L = () => y.projectPosition(_().position), P = (n) => (() => {
547
547
  var o = we(), r = I;
548
548
  return typeof r == "function" ? W(r, o) : I = o, de(o, me(() => e.scrollViewportProps, {
549
549
  onScroll: () => O((i) => i + 1),
550
550
  get class() {
551
- return ee(y.isSurfaceMode() ? "absolute z-20 py-1" : "fixed z-50 py-1", "bg-popover border border-border rounded-lg shadow-lg overflow-y-auto overscroll-contain touch-pan-y motion-reduce:animate-none", p() && (a() ? "animate-in fade-in" : "animate-in fade-in zoom-in-95"));
551
+ return ee(y.isSurfaceMode() ? "absolute z-20 py-1" : "fixed z-50 py-1", "bg-popover border border-[var(--floe-line)] rounded-control shadow-[var(--floe-elevation-float)] overflow-y-auto overscroll-contain touch-pan-y motion-reduce:animate-none", p() && (a() ? "animate-in fade-in" : "animate-in fade-in zoom-in-95"));
552
552
  },
553
553
  "data-floe-context-menu": A
554
554
  }, () => ({
@@ -636,5 +636,5 @@ export {
636
636
  bt as FileContextMenu,
637
637
  it as createDefaultContextMenuItems,
638
638
  st as dispatchContextMenuAction,
639
- ut as installContextMenuDismissListeners
639
+ lt as installContextMenuDismissListeners
640
640
  };
@@ -13,8 +13,8 @@ import { fileBrowserTouchTargetAttrs as ye } from "./touchInteractionGuard.js";
13
13
  import { createItemContextMenuEvent as Me } from "./contextMenuEvent.js";
14
14
  import { createFileBrowserMarqueeSelection as Te, FILE_BROWSER_MARQUEE_OVERLAY_CLASS as Pe } from "./useFileBrowserMarqueeSelection.js";
15
15
  import { isPrimaryModKeyPressed as ie } from "../../utils/keybind.js";
16
- var Ee = /* @__PURE__ */ D('<mark class="bg-warning/40 text-inherit rounded-sm">'), Fe = /* @__PURE__ */ D('<div class="grid gap-2">'), $e = /* @__PURE__ */ D('<div><div class=p-3><div class="w-full h-0"aria-hidden=true>'), Le = /* @__PURE__ */ D('<div aria-hidden=true class="grid gap-2">'), Re = /* @__PURE__ */ D('<div data-file-browser-placeholder class="relative flex flex-col items-center gap-2 p-3 rounded-lg h-28"><div class="w-12 h-12 flex items-center justify-center rounded-lg relative"></div><span class="block w-full min-w-0 truncate px-1 text-xs text-center">'), Ae = /* @__PURE__ */ D('<span>No files matching "<!>"'), ke = /* @__PURE__ */ D('<button type=button class="px-2 py-1 rounded bg-muted hover:bg-muted/80 transition-colors">Clear Filter'), pe = /* @__PURE__ */ D('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-muted-foreground">'), He = /* @__PURE__ */ D("<span>This folder is empty"), qe = /* @__PURE__ */ D("<div>"), Be = /* @__PURE__ */ D('<div class="absolute top-1.5 right-1.5 w-4 h-4 rounded-full bg-primary flex items-center justify-center"><svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=3 stroke-linecap=round stroke-linejoin=round class="w-2.5 h-2.5 text-primary-foreground"><polyline points="20 6 9 17 4 12">'), Ge = /* @__PURE__ */ D('<button type=button><div class="w-12 h-12 flex items-center justify-center rounded-lg relative"></div><span></span><div>');
17
- const Oe = "relative flex flex-col items-center gap-2 p-3 rounded-lg h-28", Xe = "block w-full min-w-0 truncate px-1 text-xs text-center";
16
+ var Ee = /* @__PURE__ */ D('<mark class="bg-warning/40 text-inherit rounded-sm">'), Fe = /* @__PURE__ */ D('<div class="grid gap-2">'), $e = /* @__PURE__ */ D('<div><div class=p-3><div class="w-full h-0"aria-hidden=true>'), Le = /* @__PURE__ */ D('<div aria-hidden=true class="grid gap-2">'), ke = /* @__PURE__ */ D('<div data-file-browser-placeholder class="relative flex flex-col items-center gap-2 p-3 rounded-control h-28"><div class="w-12 h-12 flex items-center justify-center rounded-control relative"></div><span class="block w-full min-w-0 truncate px-1 text-xs text-center">'), Re = /* @__PURE__ */ D('<span>No files matching "<!>"'), Ae = /* @__PURE__ */ D('<button type=button class="px-2 py-1 rounded-xs bg-[var(--floe-well)] hover:bg-[var(--floe-state-press)] transition-colors">Clear Filter'), pe = /* @__PURE__ */ D('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-[var(--floe-ink-soft)]">'), He = /* @__PURE__ */ D("<span>This folder is empty"), qe = /* @__PURE__ */ D("<div>"), Be = /* @__PURE__ */ D('<div class="absolute top-1.5 right-1.5 w-4 h-4 rounded-full bg-primary flex items-center justify-center"><svg xmlns=http://www.w3.org/2000/svg viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=3 stroke-linecap=round stroke-linejoin=round class="w-2.5 h-2.5 text-primary-foreground"><polyline points="20 6 9 17 4 12">'), Ge = /* @__PURE__ */ D('<button type=button><div class="w-12 h-12 flex items-center justify-center rounded-control relative"></div><span></span><div>');
17
+ const Oe = "relative flex flex-col items-center gap-2 p-3 rounded-control h-28", Xe = "block w-full min-w-0 truncate px-1 text-xs text-center";
18
18
  function Ne(e) {
19
19
  const a = W(() => {
20
20
  if (!e.match || e.match.matchedIndices.length === 0)
@@ -55,18 +55,18 @@ function Ne(e) {
55
55
  });
56
56
  }
57
57
  function ot(e) {
58
- const a = le(), d = be(), M = () => (e.enableDragDrop ?? !0) && !!d, _ = () => e.instanceId ?? "default", h = 112, u = 8, b = 180, T = 2, R = 6, [v, z] = ae(null), V = Ie(v, {
58
+ const a = le(), d = be(), M = () => (e.enableDragDrop ?? !0) && !!d, _ = () => e.instanceId ?? "default", h = 112, u = 8, b = 180, T = 2, k = 6, [v, z] = ae(null), V = Ie(v, {
59
59
  preserveWhenHidden: !0
60
60
  }), m = W(() => {
61
61
  const n = V()?.width ?? 0;
62
62
  if (n <= 0) return T;
63
63
  const l = Math.floor((n + u) / (b + u));
64
- return Math.max(T, Math.min(R, l));
65
- }), F = () => h + u, s = we({
64
+ return Math.max(T, Math.min(k, l));
65
+ }), F = () => h + u, c = we({
66
66
  count: () => Math.ceil(a.currentFiles().length / Math.max(1, m())),
67
67
  itemSize: F,
68
68
  overscan: 2
69
- }), U = () => s.range().start * m(), A = () => Math.min(a.currentFiles().length, s.range().end * m()), k = W(() => a.currentFiles().slice(U(), A())), P = /* @__PURE__ */ new Map(), B = (n, l) => {
69
+ }), U = () => c.range().start * m(), R = () => Math.min(a.currentFiles().length, c.range().end * m()), A = W(() => a.currentFiles().slice(U(), R())), P = /* @__PURE__ */ new Map(), B = (n, l) => {
70
70
  if (l) {
71
71
  P.set(n, l);
72
72
  return;
@@ -82,21 +82,21 @@ function ot(e) {
82
82
  }
83
83
  if (n === $) return;
84
84
  const l = F(), i = Math.floor(f.scrollTop / Math.max(1, l)) * Math.max(1, $), r = Math.floor(i / Math.max(1, n));
85
- f.scrollTop = r * l, s.onScroll(), $ = n;
85
+ f.scrollTop = r * l, c.onScroll(), $ = n;
86
86
  });
87
87
  const G = (n) => {
88
88
  if (!f) return;
89
- const S = Math.floor(n / Math.max(1, m())) * F(), i = S + F(), r = f.scrollTop, c = r + f.clientHeight;
89
+ const S = Math.floor(n / Math.max(1, m())) * F(), i = S + F(), r = f.scrollTop, s = r + f.clientHeight;
90
90
  if (S < r) {
91
- f.scrollTop = S, s.onScroll();
91
+ f.scrollTop = S, c.onScroll();
92
92
  return;
93
93
  }
94
- i > c && (f.scrollTop = Math.max(0, i - f.clientHeight), s.onScroll());
94
+ i > s && (f.scrollTop = Math.max(0, i - f.clientHeight), c.onScroll());
95
95
  };
96
96
  ne(() => {
97
97
  const n = a.revealRequest(), l = a.currentFiles();
98
- if (m(), k(), !n) return;
99
- const S = l.findIndex((c) => c.id === n.targetId);
98
+ if (m(), A(), !n) return;
99
+ const S = l.findIndex((s) => s.id === n.targetId);
100
100
  if (S < 0) return;
101
101
  if (!P.get(n.targetId)) {
102
102
  G(S);
@@ -130,8 +130,8 @@ function ot(e) {
130
130
  });
131
131
  return (() => {
132
132
  var n = $e(), l = n.firstChild, S = l.firstChild;
133
- return te(n, "pointerdown", p.onPointerDown, !0), te(n, "scroll", s.onScroll), Q((i) => {
134
- f = i, s.scrollRef(i), a.setScrollContainer(i);
133
+ return te(n, "pointerdown", p.onPointerDown, !0), te(n, "scroll", c.onScroll), Q((i) => {
134
+ f = i, c.scrollRef(i), a.setScrollContainer(i);
135
135
  }, n), Q((i) => z(i), S), w(l, g(L, {
136
136
  get when() {
137
137
  return !e.initializing;
@@ -146,11 +146,11 @@ function ot(e) {
146
146
  });
147
147
  },
148
148
  children: () => (() => {
149
- var r = Re(), c = r.firstChild, y = c.nextSibling;
150
- return w(c, g(re, {
151
- class: "h-10 w-10 rounded-lg"
149
+ var r = ke(), s = r.firstChild, y = s.nextSibling;
150
+ return w(s, g(re, {
151
+ class: "h-10 w-10 rounded-control"
152
152
  })), w(y, g(re, {
153
- class: "mx-auto h-4 w-24 max-w-full"
153
+ class: "mx-auto h-[var(--floe-line-caption)] w-24 max-w-full"
154
154
  })), r;
155
155
  })()
156
156
  })), H((r) => q(i, "grid-template-columns", `repeat(${m()}, minmax(0, 1fr))`)), i;
@@ -173,10 +173,10 @@ function ot(e) {
173
173
  },
174
174
  get children() {
175
175
  return [(() => {
176
- var r = Ae(), c = r.firstChild, y = c.nextSibling;
176
+ var r = Re(), s = r.firstChild, y = s.nextSibling;
177
177
  return y.nextSibling, w(r, () => a.filterQueryApplied(), y), r;
178
178
  })(), (() => {
179
- var r = ke();
179
+ var r = Ae();
180
180
  return r.$$click = () => a.setFilterQuery(""), r;
181
181
  })()];
182
182
  }
@@ -187,7 +187,7 @@ function ot(e) {
187
187
  var i = Fe();
188
188
  return w(i, g(K, {
189
189
  get each() {
190
- return k();
190
+ return A();
191
191
  },
192
192
  children: (r) => g(Ye, {
193
193
  item: r,
@@ -201,8 +201,8 @@ function ot(e) {
201
201
  registerTile: B
202
202
  })
203
203
  })), H((r) => {
204
- var c = `repeat(${m()}, minmax(0, 1fr))`, y = `${s.paddingTop()}px`, O = `${s.paddingBottom()}px`;
205
- return c !== r.e && q(i, "grid-template-columns", r.e = c), y !== r.t && q(i, "padding-top", r.t = y), O !== r.a && q(i, "padding-bottom", r.a = O), r;
204
+ var s = `repeat(${m()}, minmax(0, 1fr))`, y = `${c.paddingTop()}px`, O = `${c.paddingBottom()}px`;
205
+ return s !== r.e && q(i, "grid-template-columns", r.e = s), y !== r.t && q(i, "padding-top", r.t = y), O !== r.a && q(i, "padding-bottom", r.a = O), r;
206
206
  }, {
207
207
  e: void 0,
208
208
  t: void 0,
@@ -217,11 +217,11 @@ function ot(e) {
217
217
  },
218
218
  children: (i) => (() => {
219
219
  var r = qe();
220
- return Y(r, Pe), H((c) => ue(r, i(), c)), r;
220
+ return Y(r, Pe), H((s) => ue(r, i(), s)), r;
221
221
  })()
222
222
  }), null), H((i) => {
223
- var r = N("relative h-full min-h-0 overflow-auto", e.class), c = e.initializing || void 0;
224
- return r !== i.e && Y(n, i.e = r), c !== i.t && ge(n, "aria-busy", i.t = c), i;
223
+ var r = N("relative h-full min-h-0 overflow-auto", e.class), s = e.initializing || void 0;
224
+ return r !== i.e && Y(n, i.e = r), s !== i.t && ge(n, "aria-busy", i.t = s), i;
225
225
  }, {
226
226
  e: void 0,
227
227
  t: void 0
@@ -232,11 +232,11 @@ function Ye(e) {
232
232
  const a = le(), d = () => a.isSelected(e.item.id), M = () => a.getFilterMatchForId(e.item.id), _ = xe(() => e.item), h = _e(a, _, {
233
233
  source: "grid"
234
234
  });
235
- let u, b = null, T = 0, R = 0, v = !1;
235
+ let u, b = null, T = 0, k = 0, v = !1;
236
236
  const z = 5, V = 500;
237
237
  let m = null;
238
- const [F, j] = ae(!1), s = () => u === "touch" || u === "pen", U = () => e.item.type === "folder", A = () => U() && e.enableDragDrop && e.dragContext, k = () => {
239
- if (!A() || !e.dragContext) return !1;
238
+ const [F, j] = ae(!1), c = () => u === "touch" || u === "pen", U = () => e.item.type === "folder", R = () => U() && e.enableDragDrop && e.dragContext, A = () => {
239
+ if (!R() || !e.dragContext) return !1;
240
240
  const t = e.dragContext.dragState();
241
241
  return t.isDragging ? e.dragContext.canDropOn(t.draggedItems, e.item.path, e.item, e.instanceId) : !1;
242
242
  }, P = () => {
@@ -263,7 +263,7 @@ function Ye(e) {
263
263
  sourceInstanceId: e.instanceId,
264
264
  sourcePath: a.currentPath()
265
265
  }));
266
- if (s() && "vibrate" in navigator)
266
+ if (c() && "vibrate" in navigator)
267
267
  try {
268
268
  navigator.vibrate(50);
269
269
  } catch {
@@ -271,24 +271,24 @@ function Ye(e) {
271
271
  e.dragContext.startDrag(I, t, o);
272
272
  }, p = (t) => {
273
273
  if (b !== t.pointerId) return;
274
- const o = t.clientX - T, x = t.clientY - R, E = Math.sqrt(o * o + x * x);
275
- if (s() && !v && E > 10) {
274
+ const o = t.clientX - T, x = t.clientY - k, E = Math.sqrt(o * o + x * x);
275
+ if (c() && !v && E > 10) {
276
276
  C(!1);
277
277
  return;
278
278
  }
279
- !s() && !v && E > z && G(t.clientX, t.clientY), v && e.dragContext && e.dragContext.updateDrag(t.clientX, t.clientY);
279
+ !c() && !v && E > z && G(t.clientX, t.clientY), v && e.dragContext && e.dragContext.updateDrag(t.clientX, t.clientY);
280
280
  }, n = (t) => {
281
281
  b === t.pointerId && (h.onPointerUp(), C(!0));
282
282
  }, l = (t) => {
283
283
  b === t.pointerId && (h.onPointerCancel(), C(!1));
284
284
  }, S = (t) => {
285
- u = t.pointerType, h.onPointerDown(t), !(t.pointerType === "mouse" && t.button !== 0) && (!e.enableDragDrop || !e.dragContext || (b = t.pointerId, T = t.clientX, R = t.clientY, v = !1, $(), s() && (B(), m = setTimeout(() => {
286
- b !== null && !v && G(T, R);
285
+ u = t.pointerType, h.onPointerDown(t), !(t.pointerType === "mouse" && t.button !== 0) && (!e.enableDragDrop || !e.dragContext || (b = t.pointerId, T = t.clientX, k = t.clientY, v = !1, $(), c() && (B(), m = setTimeout(() => {
286
+ b !== null && !v && G(T, k);
287
287
  }, V))));
288
288
  }, i = (t) => {
289
289
  u = t.pointerType, h.onPointerMove(t);
290
290
  }, r = (t) => {
291
- if (!A() || !e.dragContext) return;
291
+ if (!R() || !e.dragContext) return;
292
292
  const o = e.dragContext.dragState();
293
293
  if (!o.isDragging) return;
294
294
  j(!0);
@@ -298,7 +298,7 @@ function Ye(e) {
298
298
  targetPath: e.item.path,
299
299
  targetItem: e.item
300
300
  }, x, I);
301
- }, c = (t) => {
301
+ }, s = (t) => {
302
302
  if (!e.dragContext) return;
303
303
  j(!1);
304
304
  const o = e.dragContext.dragState();
@@ -309,7 +309,7 @@ function Ye(e) {
309
309
  return;
310
310
  }
311
311
  if (!h.consumeClickSuppression(t)) {
312
- if (s()) {
312
+ if (c()) {
313
313
  a.openItem(e.item);
314
314
  return;
315
315
  }
@@ -320,9 +320,9 @@ function Ye(e) {
320
320
  a.selectItem(e.item.id, ie(t));
321
321
  }
322
322
  }, O = () => {
323
- s() || a.openItem(e.item);
324
- }, ce = (t) => {
325
- if (t.preventDefault(), t.stopPropagation(), s()) return;
323
+ c() || a.openItem(e.item);
324
+ }, se = (t) => {
325
+ if (t.preventDefault(), t.stopPropagation(), c()) return;
326
326
  a.ensureContextMenuSelection(e.item.id);
327
327
  const o = a.getSelectedItemsList(), x = o.length > 0 ? o : [e.item];
328
328
  a.showContextMenu(Me({
@@ -332,7 +332,7 @@ function Ye(e) {
332
332
  items: x,
333
333
  source: "grid"
334
334
  }));
335
- }, se = () => e.dragContext?.dragState(), de = () => se()?.isDragging ?? !1, J = () => F() && de() && A();
335
+ }, ce = () => e.dragContext?.dragState(), de = () => ce()?.isDragging ?? !1, J = () => F() && de() && R();
336
336
  return (() => {
337
337
  var t = Ge(), o = t.firstChild, x = o.nextSibling, E = x.nextSibling;
338
338
  return Q((I) => {
@@ -350,25 +350,27 @@ function Ye(e) {
350
350
  },
351
351
  onClick: y,
352
352
  onDblClick: O,
353
- onContextMenu: ce,
353
+ onContextMenu: se,
354
354
  onPointerDown: S,
355
355
  onPointerMove: i,
356
356
  onPointerEnter: r,
357
- onPointerLeave: c,
357
+ onPointerLeave: s,
358
358
  get class() {
359
359
  return N(
360
360
  Oe,
361
361
  "group cursor-pointer",
362
- "transition-all duration-150 ease-out",
363
- "hover:bg-accent/50 hover:scale-[1.02]",
362
+ "transition-[background-color,transform,opacity,box-shadow] duration-[var(--floe-duration-fast)] ease-out",
363
+ /* Hover is the fill, not a zoom: a tile that grows under the pointer
364
+ * makes the grid shift. Press settles on the shared scale step. */
365
+ "hover:bg-[var(--floe-state-selected)]",
364
366
  "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2",
365
- "active:scale-[0.98]",
366
- d() && "bg-accent ring-2 ring-primary/50",
367
+ "active:scale-[var(--floe-press-scale)]",
368
+ d() && "bg-[var(--floe-state-selected)] ring-2 ring-primary/50",
367
369
  // Drag state styling - being dragged items become translucent and shrink
368
370
  P() && "opacity-40 scale-90",
369
371
  // Drop target styling - enhanced visual feedback for folders
370
- J() && k() && ["bg-primary/15 ring-2 ring-primary/60", "scale-105 shadow-lg shadow-primary/15"],
371
- J() && !k() && ["bg-destructive/10 ring-2 ring-dashed ring-destructive/50"]
372
+ J() && A() && ["bg-primary/15 ring-2 ring-primary/60", "scale-105 shadow-[var(--floe-elevation-float)]"],
373
+ J() && !A() && ["bg-destructive/10 ring-2 ring-dashed ring-destructive/50"]
372
374
  );
373
375
  }
374
376
  }), !1, !0), w(t, g(L, {
@@ -397,7 +399,7 @@ function Ye(e) {
397
399
  return M();
398
400
  }
399
401
  })), H((I) => {
400
- var X = N(Xe, "transition-colors duration-150", Se(e.item), d() && "font-medium"), Z = N("absolute inset-0 rounded-lg opacity-0 transition-opacity duration-300", "group-hover:opacity-100", "pointer-events-none"), ee = e.item.type === "folder" ? "radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--warning) 8%, transparent), transparent 70%)" : "radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--primary) 5%, transparent), transparent 70%)";
402
+ var X = N(Xe, "transition-colors duration-[var(--floe-duration-fast)]", Se(e.item), d() && "font-medium"), Z = N("absolute inset-0 rounded-control opacity-0 transition-opacity duration-[var(--floe-duration-slow)]", "group-hover:opacity-100", "pointer-events-none"), ee = e.item.type === "folder" ? "radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--warning) 8%, transparent), transparent 70%)" : "radial-gradient(circle at 50% 30%, color-mix(in srgb, var(--primary) 5%, transparent), transparent 70%)";
401
403
  return X !== I.e && Y(x, I.e = X), Z !== I.t && Y(E, I.t = Z), ee !== I.a && q(E, "background", I.a = ee), I;
402
404
  }, {
403
405
  e: void 0,