@floegence/floe-webapp-core 0.86.60 → 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 +213 -205
  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,50 +1,53 @@
1
- import { createComponent as f, insert as l, effect as x, setAttribute as c, className as b, template as p } from "solid-js/web";
2
- import { Show as S } from "solid-js";
3
- import { cn as w } from "../../utils/cn.js";
4
- var v = /* @__PURE__ */ p("<span aria-hidden=true>");
5
- const E = ["default", "primary", "info", "success", "warning", "error", "muted"], h = {
1
+ import { createComponent as m, insert as u, effect as x, setAttribute as s, className as v, template as b } from "solid-js/web";
2
+ import { Show as w } from "solid-js";
3
+ import { cn as S } from "../../utils/cn.js";
4
+ var p = /* @__PURE__ */ b("<span aria-hidden=true>");
5
+ const h = ["default", "primary", "info", "success", "warning", "error", "muted"], E = {
6
6
  default: "bg-foreground text-background",
7
7
  primary: "bg-primary text-primary-foreground",
8
8
  info: "bg-info text-info-foreground",
9
9
  success: "bg-success text-success-foreground",
10
10
  warning: "bg-warning text-warning-foreground",
11
11
  error: "bg-error text-error-foreground",
12
- muted: "bg-muted text-muted-foreground"
13
- }, A = {
12
+ muted: "bg-[var(--floe-well)] text-[var(--floe-ink-soft)]"
13
+ }, y = {
14
14
  default: "",
15
- primary: "text-primary",
15
+ primary: "text-[var(--floe-accent-ink)]",
16
16
  info: "text-info",
17
17
  success: "text-success",
18
18
  warning: "text-warning",
19
19
  error: "text-error",
20
- muted: "text-muted-foreground"
21
- }, y = {
22
- xs: "-left-0.5 -top-0.5 h-2 min-w-2 px-[1px] text-[5px] ring-[0.5px]",
23
- sm: "-left-1 -top-1 h-3.5 min-w-3.5 px-[3px] text-[7px] ring-1 shadow-sm",
24
- md: "-left-1 -top-1 h-4 min-w-4 px-1 text-[8px] ring-1 shadow-sm"
20
+ muted: "text-[var(--floe-ink-soft)]"
21
+ }, A = {
22
+ /* Chip type is a ladder step, not a per-size invention: 5/7/8px were three
23
+ * hand-picked values below the caption floor. `nano` for the smallest chip,
24
+ * `micro` above it. */
25
+ xs: "-left-0.5 -top-0.5 h-2 min-w-2 px-[1px] text-[length:var(--floe-type-nano)] ring-[0.5px]",
26
+ sm: "-left-1 -top-1 h-3.5 min-w-3.5 px-[3px] text-[length:var(--floe-type-micro)] ring-1 shadow-[var(--floe-elevation-raised)]",
27
+ md: "-left-1 -top-1 h-4 min-w-4 px-1 text-[length:var(--floe-type-micro)] ring-1 shadow-[var(--floe-elevation-raised)]"
25
28
  };
26
- function d(e) {
29
+ function c(e) {
27
30
  const r = String(e ?? "").trim();
28
- return E.includes(r) ? r : "default";
31
+ return h.includes(r) ? r : "default";
29
32
  }
30
33
  function C(e) {
31
34
  return String(e.decoration?.badge?.label ?? "").trim().slice(0, 2).toUpperCase();
32
35
  }
33
- function _(e) {
34
- const r = d(e.decoration?.nameTone);
35
- return A[r];
36
+ function T(e) {
37
+ const r = c(e.decoration?.nameTone);
38
+ return y[r];
36
39
  }
37
- function z(e) {
38
- const r = () => C(e.item), o = () => d(e.item.decoration?.badge?.tone), u = () => String(e.item.decoration?.badge?.title ?? "").trim() || void 0, m = () => e.size ?? "sm";
39
- return f(S, {
40
+ function _(e) {
41
+ const r = () => C(e.item), o = () => c(e.item.decoration?.badge?.tone), f = () => String(e.item.decoration?.badge?.title ?? "").trim() || void 0, d = () => e.size ?? "sm";
42
+ return m(w, {
40
43
  get when() {
41
44
  return r();
42
45
  },
43
46
  children: (g) => (() => {
44
- var n = v();
45
- return l(n, g), x((t) => {
46
- var i = u(), a = o(), s = w("pointer-events-none absolute z-10 inline-flex items-center justify-center rounded-full ring-background/90", "font-black leading-none", y[m()], h[o()], e.class);
47
- return i !== t.e && c(n, "title", t.e = i), a !== t.t && c(n, "data-file-browser-decoration-badge", t.t = a), s !== t.a && b(n, t.a = s), t;
47
+ var n = p();
48
+ return u(n, g), x((t) => {
49
+ var i = f(), a = o(), l = S("pointer-events-none absolute z-10 inline-flex items-center justify-center rounded-full ring-background/90", "font-black leading-none", A[d()], E[o()], e.class);
50
+ return i !== t.e && s(n, "title", t.e = i), a !== t.t && s(n, "data-file-browser-decoration-badge", t.t = a), l !== t.a && v(n, t.a = l), t;
48
51
  }, {
49
52
  e: void 0,
50
53
  t: void 0,
@@ -54,6 +57,6 @@ function z(e) {
54
57
  });
55
58
  }
56
59
  export {
57
- z as FileItemDecorationBadge,
58
- _ as fileItemDecorationNameClass
60
+ _ as FileItemDecorationBadge,
61
+ T as fileItemDecorationNameClass
59
62
  };
@@ -1,10 +1,10 @@
1
- import { use as K, insert as f, createComponent as d, effect as p, className as N, setStyleProperty as T, addEventListener as ue, style as _e, setAttribute as ze, template as I, spread as ye, mergeProps as Re, memo as xe, delegateEvents as Pe } from "solid-js/web";
2
- import { createSignal as J, createEffect as me, onCleanup as ae, createMemo as se, Show as _, For as ce, untrack as pe } from "solid-js";
1
+ import { use as K, insert as f, createComponent as d, effect as p, className as N, setStyleProperty as T, addEventListener as ue, style as _e, setAttribute as ye, template as I, spread as ze, mergeProps as Re, memo as xe, delegateEvents as Pe } from "solid-js/web";
2
+ import { createSignal as J, createEffect as me, onCleanup as le, createMemo as se, Show as _, For as ce, untrack as pe } from "solid-js";
3
3
  import { Skeleton as j } from "../loading/Skeleton.js";
4
4
  import { cn as W } from "../../utils/cn.js";
5
5
  import { useMediaQuery as fe } from "../../hooks/useMediaQuery.js";
6
- import { useResizeObserver as Fe } from "../../hooks/useResizeObserver.js";
7
- import { useVirtualWindow as ke } from "../../hooks/useVirtualWindow.js";
6
+ import { useResizeObserver as ke } from "../../hooks/useResizeObserver.js";
7
+ import { useVirtualWindow as Fe } from "../../hooks/useVirtualWindow.js";
8
8
  import { useFileBrowser as we } from "./FileBrowserContext.js";
9
9
  import { useFileBrowserDrag as Te } from "../../context/FileBrowserDragContext.js";
10
10
  import { FileItemIcon as Ae } from "./FileIcons.js";
@@ -16,19 +16,19 @@ import { fileBrowserTouchTargetAttrs as Be } from "./touchInteractionGuard.js";
16
16
  import { createItemContextMenuEvent as Ne } from "./contextMenuEvent.js";
17
17
  import { createFileBrowserMarqueeSelection as Oe, FILE_BROWSER_MARQUEE_OVERLAY_CLASS as qe } from "./useFileBrowserMarqueeSelection.js";
18
18
  import { isPrimaryModKeyPressed as he } from "../../utils/keybind.js";
19
- var be = /* @__PURE__ */ I("<span>"), Xe = /* @__PURE__ */ I('<mark class="bg-warning/40 text-inherit rounded-sm">'), Ye = /* @__PURE__ */ I('<div><button type=button class="group w-full flex items-center justify-start text-left px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors">Modified'), Ve = /* @__PURE__ */ I('<div class=shrink-0><button type=button class="group w-full flex items-center justify-start text-left px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors">Size'), ve = /* @__PURE__ */ I("<div>"), Ge = /* @__PURE__ */ I('<div><div aria-hidden=true class="absolute invisible pointer-events-none w-px h-[var(--floe-row-height)]"></div><div data-file-list-header class="flex items-center border-b border-border text-[11px] text-muted-foreground font-medium"><div><button type=button class="group w-full flex items-center min-w-0 px-3 py-2 cursor-pointer hover:bg-muted/50 transition-colors"><span class="flex items-center gap-2 min-w-0"><span class="flex-shrink-0 w-4 h-4"aria-hidden=true></span><span class="flex items-center min-w-0"><span class=truncate>Name</span></span></span></button></div></div><div class="relative flex-1 min-h-0 overflow-auto">'), Ue = /* @__PURE__ */ I("<div aria-hidden=true>"), Z = /* @__PURE__ */ I('<div class="shrink-0 px-3 py-1 text-left text-muted-foreground truncate">'), Qe = /* @__PURE__ */ I('<div data-file-browser-placeholder data-file-list-row class="w-full h-[var(--floe-row-height)] flex items-center text-[length:var(--floe-type-control)] leading-[var(--floe-line-control)]"><div class="flex items-center gap-2 flex-1 min-w-0 px-3 py-1">'), je = /* @__PURE__ */ I('<span>No files matching "<!>"'), Ke = /* @__PURE__ */ I('<button type=button class="px-2 py-1 rounded bg-muted hover:bg-muted/80 transition-colors">Clear Filter'), Je = /* @__PURE__ */ I('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-muted-foreground">'), Ze = /* @__PURE__ */ I("<span>This folder is empty"), et = /* @__PURE__ */ I('<button type=button data-file-list-row><div class="flex items-center gap-2 flex-1 min-w-0 px-3 py-1"><span class="relative flex-shrink-0 w-4 h-4">');
19
+ var be = /* @__PURE__ */ I("<span>"), Xe = /* @__PURE__ */ I('<mark class="bg-warning/40 text-inherit rounded-sm">'), Ye = /* @__PURE__ */ I('<div><button type=button class="group w-full flex items-center justify-start text-left px-3 py-2 cursor-pointer hover:bg-[var(--floe-state-hover)] transition-colors">Modified'), Ve = /* @__PURE__ */ I('<div class=shrink-0><button type=button class="group w-full flex items-center justify-start text-left px-3 py-2 cursor-pointer hover:bg-[var(--floe-state-hover)] transition-colors">Size'), ve = /* @__PURE__ */ I("<div>"), Ge = /* @__PURE__ */ I('<div><div aria-hidden=true class="absolute invisible pointer-events-none w-px h-[var(--floe-row-height)]"></div><div data-file-list-header class="flex items-center border-b border-[var(--floe-line)] text-caption text-[var(--floe-ink-soft)] font-medium"><div><button type=button class="group w-full flex items-center min-w-0 px-3 py-2 cursor-pointer hover:bg-[var(--floe-state-hover)] transition-colors"><span class="flex items-center gap-2 min-w-0"><span class="flex-shrink-0 w-4 h-4"aria-hidden=true></span><span class="flex items-center min-w-0"><span class=truncate>Name</span></span></span></button></div></div><div class="relative flex-1 min-h-0 overflow-auto">'), Ue = /* @__PURE__ */ I("<div aria-hidden=true>"), Z = /* @__PURE__ */ I('<div class="shrink-0 px-3 py-1 text-left text-[var(--floe-ink-soft)] truncate">'), Qe = /* @__PURE__ */ I('<div data-file-browser-placeholder data-file-list-row class="w-full h-[var(--floe-row-height)] flex items-center text-[length:var(--floe-type-control)] leading-[var(--floe-line-control)]"><div class="flex items-center gap-2 flex-1 min-w-0 px-3 py-1">'), je = /* @__PURE__ */ I('<span>No files matching "<!>"'), Ke = /* @__PURE__ */ I('<button type=button class="px-2 py-1 rounded-xs bg-[var(--floe-well)] hover:bg-[var(--floe-state-press)] transition-colors">Clear Filter'), Je = /* @__PURE__ */ I('<div class="flex flex-col items-center justify-center h-32 gap-2 text-xs text-[var(--floe-ink-soft)]">'), Ze = /* @__PURE__ */ I("<span>This folder is empty"), et = /* @__PURE__ */ I('<button type=button data-file-list-row><div class="flex items-center gap-2 flex-1 min-w-0 px-3 py-1"><span class="relative flex-shrink-0 w-4 h-4">');
20
20
  const tt = "w-full h-[var(--floe-row-height)] flex items-center text-[length:var(--floe-type-control)] leading-[var(--floe-line-control)]";
21
21
  function nt(e) {
22
- const l = se(() => {
22
+ const a = se(() => {
23
23
  if (!e.match || e.match.matchedIndices.length === 0)
24
24
  return [{
25
25
  text: e.name,
26
26
  highlight: !1
27
27
  }];
28
- const w = [], k = new Set(e.match.matchedIndices);
28
+ const w = [], F = new Set(e.match.matchedIndices);
29
29
  let M = "", D = !1;
30
30
  for (let b = 0; b < e.name.length; b++) {
31
- const S = k.has(b);
31
+ const S = F.has(b);
32
32
  b === 0 ? (D = S, M = e.name[b]) : S === D ? M += e.name[b] : (w.push({
33
33
  text: M,
34
34
  highlight: D
@@ -43,25 +43,25 @@ function nt(e) {
43
43
  var w = be();
44
44
  return f(w, d(ce, {
45
45
  get each() {
46
- return l();
46
+ return a();
47
47
  },
48
- children: (k) => d(_, {
48
+ children: (F) => d(_, {
49
49
  get when() {
50
- return k.highlight;
50
+ return F.highlight;
51
51
  },
52
52
  get fallback() {
53
- return xe(() => k.text);
53
+ return xe(() => F.text);
54
54
  },
55
55
  get children() {
56
56
  var M = Xe();
57
- return f(M, () => k.text), M;
57
+ return f(M, () => F.text), M;
58
58
  }
59
59
  })
60
60
  })), p(() => N(w, W("truncate", e.class))), w;
61
61
  })();
62
62
  }
63
63
  function $t(e) {
64
- const l = we(), w = Te(), k = () => (e.enableDragDrop ?? !0) && !!w, M = () => e.instanceId ?? "default", [D, b] = J(null), [S, O] = J(28);
64
+ const a = we(), w = Te(), F = () => (e.enableDragDrop ?? !0) && !!w, M = () => e.instanceId ?? "default", [D, b] = J(null), [S, O] = J(28);
65
65
  me(() => {
66
66
  const t = D();
67
67
  if (!t) return;
@@ -71,21 +71,21 @@ function $t(e) {
71
71
  u > 0 && O(u);
72
72
  };
73
73
  if (o(), typeof ResizeObserver > "u") return;
74
- const a = new ResizeObserver(o);
75
- a.observe(t), ae(() => a.disconnect());
74
+ const l = new ResizeObserver(o);
75
+ l.observe(t), le(() => l.disconnect());
76
76
  });
77
- const y = ke({
78
- count: () => l.currentFiles().length,
77
+ const z = Fe({
78
+ count: () => a.currentFiles().length,
79
79
  itemSize: S,
80
80
  overscan: 12
81
81
  }), C = se(() => {
82
82
  const {
83
83
  start: t,
84
84
  end: o
85
- } = y.range();
86
- return l.currentFiles().slice(t, o);
85
+ } = z.range();
86
+ return a.currentFiles().slice(t, o);
87
87
  }), A = /* @__PURE__ */ new Map();
88
- let R = null, z = 0;
88
+ let R = null, y = 0;
89
89
  const ee = (t, o) => {
90
90
  if (o) {
91
91
  A.set(t, o);
@@ -94,42 +94,42 @@ function $t(e) {
94
94
  A.delete(t);
95
95
  }, G = (t) => {
96
96
  if (!R) return;
97
- const o = t * S(), a = o + S(), u = R.scrollTop, g = u + R.clientHeight;
97
+ const o = t * S(), l = o + S(), u = R.scrollTop, g = u + R.clientHeight;
98
98
  if (o < u) {
99
- R.scrollTop = o, y.onScroll();
99
+ R.scrollTop = o, z.onScroll();
100
100
  return;
101
101
  }
102
- a > g && (R.scrollTop = Math.max(0, a - R.clientHeight), y.onScroll());
102
+ l > g && (R.scrollTop = Math.max(0, l - R.clientHeight), z.onScroll());
103
103
  };
104
104
  me(() => {
105
- const t = l.revealRequest(), o = l.currentFiles();
105
+ const t = a.revealRequest(), o = a.currentFiles();
106
106
  if (C(), !t) return;
107
- const a = o.findIndex((h) => h.id === t.targetId);
108
- if (a < 0) return;
107
+ const l = o.findIndex((h) => h.id === t.targetId);
108
+ if (l < 0) return;
109
109
  if (!A.get(t.targetId)) {
110
- G(a);
110
+ G(l);
111
111
  return;
112
112
  }
113
- typeof cancelAnimationFrame == "function" && z && (cancelAnimationFrame(z), z = 0);
113
+ typeof cancelAnimationFrame == "function" && y && (cancelAnimationFrame(y), y = 0);
114
114
  const g = () => {
115
- l.revealRequest()?.requestId === t.requestId && (A.get(t.targetId)?.scrollIntoView({
115
+ a.revealRequest()?.requestId === t.requestId && (A.get(t.targetId)?.scrollIntoView({
116
116
  block: "nearest",
117
117
  inline: "nearest"
118
- }), l.selectItem(t.targetId, !1), l.consumeRevealRequest(t.requestId));
118
+ }), a.selectItem(t.targetId, !1), a.consumeRevealRequest(t.requestId));
119
119
  };
120
120
  if (typeof requestAnimationFrame == "function") {
121
- z = requestAnimationFrame(() => {
122
- z = 0, g();
121
+ y = requestAnimationFrame(() => {
122
+ y = 0, g();
123
123
  });
124
124
  return;
125
125
  }
126
126
  queueMicrotask(g);
127
- }), ae(() => {
128
- typeof cancelAnimationFrame == "function" && z && cancelAnimationFrame(z);
127
+ }), le(() => {
128
+ typeof cancelAnimationFrame == "function" && y && cancelAnimationFrame(y);
129
129
  });
130
130
  const P = (t) => {
131
- const o = l.sortConfig();
132
- l.setSortConfig({
131
+ const o = a.sortConfig();
132
+ a.setSortConfig({
133
133
  field: t,
134
134
  direction: o.field === t && o.direction === "asc" ? "desc" : "asc"
135
135
  });
@@ -140,60 +140,60 @@ function $t(e) {
140
140
  }) : "-", X = Oe({
141
141
  getContainer: () => R,
142
142
  getOverlayHost: () => R,
143
- getVisibleItemIdsInOrder: () => l.currentFiles().map((t) => t.id),
143
+ getVisibleItemIdsInOrder: () => a.currentFiles().map((t) => t.id),
144
144
  getElementForId: (t) => A.get(t) ?? null,
145
- getSelectedIds: () => [...l.selectedItems()],
146
- replaceSelection: (t, o) => l.replaceSelection(t, o),
147
- clearSelection: l.clearSelection
145
+ getSelectedIds: () => [...a.selectedItems()],
146
+ replaceSelection: (t, o) => a.replaceSelection(t, o),
147
+ clearSelection: a.clearSelection
148
148
  }), Y = (t) => {
149
- const o = () => l.sortConfig(), a = () => o().field === t.field;
149
+ const o = () => a.sortConfig(), l = () => o().field === t.field;
150
150
  return (() => {
151
151
  var u = be();
152
152
  return f(u, d(We, {
153
153
  get class() {
154
- return W("w-3 h-3 transition-transform duration-150", a() && o().direction === "asc" && "rotate-180");
154
+ return W("w-3 h-3 transition-transform duration-[var(--floe-duration-fast)]", l() && o().direction === "asc" && "rotate-180");
155
155
  }
156
- })), p(() => N(u, W("ml-1 transition-all duration-150", a() ? "opacity-100" : "opacity-0 group-hover:opacity-40"))), u;
156
+ })), p(() => N(u, W("ml-1 transition-opacity duration-[var(--floe-duration-fast)]", l() ? "opacity-100" : "opacity-0 group-hover:opacity-40"))), u;
157
157
  })();
158
- }, U = fe("(min-width: 640px)"), ne = fe("(min-width: 768px)"), [ie, H] = J(null), Q = Fe(ie, {
158
+ }, U = fe("(min-width: 640px)"), ne = fe("(min-width: 768px)"), [ie, H] = J(null), Q = ke(ie, {
159
159
  preserveWhenHidden: !0
160
- }), L = (t, o, a) => Math.max(o, Math.min(a, t)), v = se(() => {
161
- const t = Q()?.width ?? 0, o = U(), a = ne(), u = l.listColumnRatios(), g = 160, h = 120, x = 80, n = 128, s = 96;
160
+ }), L = (t, o, l) => Math.max(o, Math.min(l, t)), v = se(() => {
161
+ const t = Q()?.width ?? 0, o = U(), l = ne(), u = a.listColumnRatios(), g = 160, h = 120, x = 80, n = 128, s = 96;
162
162
  if (!o || t <= 0)
163
163
  return {
164
164
  width: t,
165
165
  showModified: o,
166
- showSize: a,
166
+ showSize: l,
167
167
  minName: g,
168
168
  minModified: h,
169
169
  minSize: x,
170
170
  modifiedWidth: n,
171
171
  sizeWidth: s
172
172
  };
173
- if (!a) {
173
+ if (!l) {
174
174
  const m = u.size, $ = Math.max(0, 1 - m);
175
- let F = ($ > 0 ? u.modifiedAt / $ : u.modifiedAt) * t;
176
- return F = L(F, h, Math.max(h, t - g)), {
175
+ let k = ($ > 0 ? u.modifiedAt / $ : u.modifiedAt) * t;
176
+ return k = L(k, h, Math.max(h, t - g)), {
177
177
  width: t,
178
178
  showModified: o,
179
- showSize: a,
179
+ showSize: l,
180
180
  minName: g,
181
181
  minModified: h,
182
182
  minSize: x,
183
- modifiedWidth: F,
183
+ modifiedWidth: k,
184
184
  sizeWidth: 0
185
185
  };
186
186
  }
187
187
  let r = Math.max(h, u.modifiedAt * t), i = Math.max(x, u.size * t);
188
188
  const c = Math.max(0, t - g);
189
189
  if (r + i > c) {
190
- const m = r + i - c, $ = Math.max(0, r - h), F = Math.max(0, i - x), E = $ + F;
191
- E > 0 && (r -= m * ($ / E), i -= m * (F / E));
190
+ const m = r + i - c, $ = Math.max(0, r - h), k = Math.max(0, i - x), E = $ + k;
191
+ E > 0 && (r -= m * ($ / E), i -= m * (k / E));
192
192
  }
193
193
  return r = Math.max(h, r), i = Math.max(x, i), {
194
194
  width: t,
195
195
  showModified: o,
196
- showSize: a,
196
+ showSize: l,
197
197
  minName: g,
198
198
  minModified: h,
199
199
  minSize: x,
@@ -204,43 +204,43 @@ function $t(e) {
204
204
  const o = v();
205
205
  if (!o.showModified || o.width <= 0) return;
206
206
  if (!o.showSize) {
207
- const m = l.listColumnRatios().size, $ = Math.max(0, 1 - m);
207
+ const m = a.listColumnRatios().size, $ = Math.max(0, 1 - m);
208
208
  if ($ <= 0) return;
209
- const F = o.width, E = o.modifiedWidth, de = Math.max(0, F - E), Se = o.minName - de, Ce = E - o.minModified, le = L(t, Se, Ce);
210
- if (le === 0) return;
211
- const $e = de + le, Ie = E - le, Me = $e / F * $, De = Ie / F * $;
212
- l.setListColumnRatios({
209
+ const k = o.width, E = o.modifiedWidth, de = Math.max(0, k - E), Se = o.minName - de, Ce = E - o.minModified, ae = L(t, Se, Ce);
210
+ if (ae === 0) return;
211
+ const $e = de + ae, Ie = E - ae, Me = $e / k * $, De = Ie / k * $;
212
+ a.setListColumnRatios({
213
213
  name: Me,
214
214
  modifiedAt: De,
215
215
  size: m
216
216
  });
217
217
  return;
218
218
  }
219
- const a = o.width, u = o.modifiedWidth, g = o.sizeWidth, h = Math.max(0, a - u - g), x = o.minName - h, n = u - o.minModified, s = L(t, x, n);
219
+ const l = o.width, u = o.modifiedWidth, g = o.sizeWidth, h = Math.max(0, l - u - g), x = o.minName - h, n = u - o.minModified, s = L(t, x, n);
220
220
  if (s === 0) return;
221
221
  const r = h + s, i = u - s;
222
- l.setListColumnRatios({
223
- name: r / a,
224
- modifiedAt: i / a,
225
- size: g / a
222
+ a.setListColumnRatios({
223
+ name: r / l,
224
+ modifiedAt: i / l,
225
+ size: g / l
226
226
  });
227
227
  }, oe = (t) => {
228
228
  const o = v();
229
229
  if (!o.showSize || o.width <= 0) return;
230
- const a = o.width, u = o.modifiedWidth, g = o.sizeWidth, h = o.minModified - u, x = g - o.minSize, n = L(t, h, x);
230
+ const l = o.width, u = o.modifiedWidth, g = o.sizeWidth, h = o.minModified - u, x = g - o.minSize, n = L(t, h, x);
231
231
  if (n === 0) return;
232
- const s = u + n, r = g - n, i = Math.max(0, a - s - r);
233
- l.setListColumnRatios({
234
- name: i / a,
235
- modifiedAt: s / a,
236
- size: r / a
232
+ const s = u + n, r = g - n, i = Math.max(0, l - s - r);
233
+ a.setListColumnRatios({
234
+ name: i / l,
235
+ modifiedAt: s / l,
236
+ size: r / l
237
237
  });
238
238
  };
239
239
  return (() => {
240
- var t = Ge(), o = t.firstChild, a = o.nextSibling, u = a.firstChild, g = u.firstChild, h = g.firstChild, x = h.firstChild, n = x.nextSibling;
240
+ var t = Ge(), o = t.firstChild, l = o.nextSibling, u = l.firstChild, g = u.firstChild, h = g.firstChild, x = h.firstChild, n = x.nextSibling;
241
241
  n.firstChild;
242
- var s = a.nextSibling;
243
- return K(b, o), K(H, a), g.$$click = () => P("name"), f(n, d(Y, {
242
+ var s = l.nextSibling;
243
+ return K(b, o), K(H, l), g.$$click = () => P("name"), f(n, d(Y, {
244
244
  field: "name"
245
245
  }), null), f(u, d(_, {
246
246
  get when() {
@@ -252,7 +252,7 @@ function $t(e) {
252
252
  onResize: re
253
253
  });
254
254
  }
255
- }), null), f(a, d(_, {
255
+ }), null), f(l, d(_, {
256
256
  get when() {
257
257
  return v().showModified;
258
258
  },
@@ -271,14 +271,14 @@ function $t(e) {
271
271
  });
272
272
  }
273
273
  }), null), p((c) => {
274
- var m = W("relative shrink-0", v().showSize && "border-r border-border"), $ = `${B()}px`;
274
+ var m = W("relative shrink-0", v().showSize && "border-r border-[var(--floe-line)]"), $ = `${B()}px`;
275
275
  return m !== c.e && N(r, c.e = m), $ !== c.t && T(r, "width", c.t = $), c;
276
276
  }, {
277
277
  e: void 0,
278
278
  t: void 0
279
279
  }), r;
280
280
  }
281
- }), null), f(a, d(_, {
281
+ }), null), f(l, d(_, {
282
282
  get when() {
283
283
  return v().showSize;
284
284
  },
@@ -288,8 +288,8 @@ function $t(e) {
288
288
  field: "size"
289
289
  }), null), p((c) => T(r, "width", `${V()}px`)), r;
290
290
  }
291
- }), null), ue(s, "pointerdown", X.onPointerDown, !0), ue(s, "scroll", y.onScroll), K((r) => {
292
- R = r, y.scrollRef(r), l.setScrollContainer(r);
291
+ }), null), ue(s, "pointerdown", X.onPointerDown, !0), ue(s, "scroll", z.onScroll), K((r) => {
292
+ R = r, z.scrollRef(r), a.setScrollContainer(r);
293
293
  }, s), f(s, d(_, {
294
294
  get when() {
295
295
  return !e.initializing;
@@ -337,14 +337,14 @@ function $t(e) {
337
337
  get children() {
338
338
  return d(_, {
339
339
  get when() {
340
- return l.currentFiles().length > 0;
340
+ return a.currentFiles().length > 0;
341
341
  },
342
342
  get fallback() {
343
343
  return (() => {
344
344
  var r = Je();
345
345
  return f(r, d(_, {
346
346
  get when() {
347
- return l.filterQueryApplied().trim();
347
+ return a.filterQueryApplied().trim();
348
348
  },
349
349
  get fallback() {
350
350
  return Ze();
@@ -352,10 +352,10 @@ function $t(e) {
352
352
  get children() {
353
353
  return [(() => {
354
354
  var i = je(), c = i.firstChild, m = c.nextSibling;
355
- return m.nextSibling, f(i, () => l.filterQueryApplied(), m), i;
355
+ return m.nextSibling, f(i, () => a.filterQueryApplied(), m), i;
356
356
  })(), (() => {
357
357
  var i = Ke();
358
- return i.$$click = () => l.setFilterQuery(""), i;
358
+ return i.$$click = () => a.setFilterQuery(""), i;
359
359
  })()];
360
360
  }
361
361
  })), r;
@@ -387,13 +387,13 @@ function $t(e) {
387
387
  return M();
388
388
  },
389
389
  get enableDragDrop() {
390
- return k();
390
+ return F();
391
391
  },
392
392
  dragContext: w,
393
393
  registerRow: ee
394
394
  })
395
395
  })), p((i) => {
396
- var c = `${y.paddingTop()}px`, m = `${y.paddingBottom()}px`;
396
+ var c = `${z.paddingTop()}px`, m = `${z.paddingBottom()}px`;
397
397
  return c !== i.e && T(r, "padding-top", i.e = c), m !== i.t && T(r, "padding-bottom", i.t = m), i;
398
398
  }, {
399
399
  e: void 0,
@@ -411,8 +411,8 @@ function $t(e) {
411
411
  return N(i, qe), p((c) => _e(i, r(), c)), i;
412
412
  })()
413
413
  }), null), p((r) => {
414
- var i = W("relative flex flex-col h-full min-h-0", e.class), c = e.initializing || void 0, m = W("relative flex-1 min-w-0", v().showModified && "border-r border-border");
415
- return i !== r.e && N(t, r.e = i), c !== r.t && ze(t, "aria-busy", r.t = c), m !== r.a && N(u, r.a = m), r;
414
+ var i = W("relative flex flex-col h-full min-h-0", e.class), c = e.initializing || void 0, m = W("relative flex-1 min-w-0", v().showModified && "border-r border-[var(--floe-line)]");
415
+ return i !== r.e && N(t, r.e = i), c !== r.t && ye(t, "aria-busy", r.t = c), m !== r.a && N(u, r.a = m), r;
416
416
  }, {
417
417
  e: void 0,
418
418
  t: void 0,
@@ -421,12 +421,12 @@ function $t(e) {
421
421
  })();
422
422
  }
423
423
  function it(e) {
424
- const l = we(), w = () => l.isSelected(e.item.id), k = () => l.getFilterMatchForId(e.item.id), M = pe(() => e.item), D = He(l, M, {
424
+ const a = we(), w = () => a.isSelected(e.item.id), F = () => a.getFilterMatchForId(e.item.id), M = pe(() => e.item), D = He(a, M, {
425
425
  source: "list"
426
426
  });
427
- let b, S = null, O = 0, y = 0, C = !1;
427
+ let b, S = null, O = 0, z = 0, C = !1;
428
428
  const A = 5, R = 500;
429
- let z = null;
429
+ let y = null;
430
430
  const [ee, G] = J(!1), P = () => b === "touch" || b === "pen", te = () => e.item.type === "folder", q = () => te() && e.enableDragDrop && e.dragContext, X = () => {
431
431
  if (!q() || !e.dragContext) return !1;
432
432
  const n = e.dragContext.dragState();
@@ -436,7 +436,7 @@ function it(e) {
436
436
  const n = e.dragContext.dragState();
437
437
  return n.isDragging ? n.draggedItems.some((s) => s.item.id === e.item.id) : !1;
438
438
  }, U = () => {
439
- z !== null && (clearTimeout(z), z = null);
439
+ y !== null && (clearTimeout(y), y = null);
440
440
  }, ne = () => {
441
441
  typeof document > "u" || (document.removeEventListener("pointermove", L, !0), document.removeEventListener("pointerup", v, !0), document.removeEventListener("pointercancel", B, !0));
442
442
  }, ie = () => {
@@ -444,16 +444,16 @@ function it(e) {
444
444
  }, H = (n) => {
445
445
  U(), ne(), C && e.dragContext && e.dragContext.endDrag(n), S = null, C = !1;
446
446
  };
447
- ae(() => {
447
+ le(() => {
448
448
  e.registerRow(e.item.id, null), H(!1);
449
449
  });
450
450
  const Q = (n, s) => {
451
451
  if (!e.enableDragDrop || !e.dragContext || C) return;
452
- C = !0, w() || l.selectItem(e.item.id, !1);
453
- const r = l.getSelectedItemsList(), c = (r.length > 0 && w() ? r : [e.item]).map((m) => ({
452
+ C = !0, w() || a.selectItem(e.item.id, !1);
453
+ const r = a.getSelectedItemsList(), c = (r.length > 0 && w() ? r : [e.item]).map((m) => ({
454
454
  item: m,
455
455
  sourceInstanceId: e.instanceId,
456
- sourcePath: l.currentPath()
456
+ sourcePath: a.currentPath()
457
457
  }));
458
458
  if (P() && "vibrate" in navigator)
459
459
  try {
@@ -463,7 +463,7 @@ function it(e) {
463
463
  e.dragContext.startDrag(c, n, s);
464
464
  }, L = (n) => {
465
465
  if (S !== n.pointerId) return;
466
- const s = n.clientX - O, r = n.clientY - y, i = Math.sqrt(s * s + r * r);
466
+ const s = n.clientX - O, r = n.clientY - z, i = Math.sqrt(s * s + r * r);
467
467
  if (P() && !C && i > 10) {
468
468
  H(!1);
469
469
  return;
@@ -474,8 +474,8 @@ function it(e) {
474
474
  }, B = (n) => {
475
475
  S === n.pointerId && (D.onPointerCancel(), H(!1));
476
476
  }, V = (n) => {
477
- b = n.pointerType, D.onPointerDown(n), !(n.pointerType === "mouse" && n.button !== 0) && (!e.enableDragDrop || !e.dragContext || (S = n.pointerId, O = n.clientX, y = n.clientY, C = !1, ie(), P() && (U(), z = setTimeout(() => {
478
- S !== null && !C && Q(O, y);
477
+ b = n.pointerType, D.onPointerDown(n), !(n.pointerType === "mouse" && n.button !== 0) && (!e.enableDragDrop || !e.dragContext || (S = n.pointerId, O = n.clientX, z = n.clientY, C = !1, ie(), P() && (U(), y = setTimeout(() => {
478
+ S !== null && !C && Q(O, z);
479
479
  }, R))));
480
480
  }, re = (n) => {
481
481
  b = n.pointerType, D.onPointerMove(n);
@@ -502,22 +502,22 @@ function it(e) {
502
502
  }
503
503
  if (!D.consumeClickSuppression(n)) {
504
504
  if (P()) {
505
- l.openItem(e.item);
505
+ a.openItem(e.item);
506
506
  return;
507
507
  }
508
508
  if (n.shiftKey) {
509
- l.selectRangeTo(e.item.id, he(n));
509
+ a.selectRangeTo(e.item.id, he(n));
510
510
  return;
511
511
  }
512
- l.selectItem(e.item.id, he(n));
512
+ a.selectItem(e.item.id, he(n));
513
513
  }
514
- }, a = () => {
515
- P() || l.openItem(e.item);
514
+ }, l = () => {
515
+ P() || a.openItem(e.item);
516
516
  }, u = (n) => {
517
517
  if (n.preventDefault(), n.stopPropagation(), P()) return;
518
- l.ensureContextMenuSelection(e.item.id);
519
- const s = l.getSelectedItemsList(), r = s.length > 0 ? s : [e.item];
520
- l.showContextMenu(Ne({
518
+ a.ensureContextMenuSelection(e.item.id);
519
+ const s = a.getSelectedItemsList(), r = s.length > 0 ? s : [e.item];
520
+ a.showContextMenu(Ne({
521
521
  x: n.clientX,
522
522
  y: n.clientY,
523
523
  triggerItem: e.item,
@@ -529,7 +529,7 @@ function it(e) {
529
529
  var n = et(), s = n.firstChild, r = s.firstChild;
530
530
  return K((i) => {
531
531
  e.registerRow(e.item.id, i);
532
- }, n), ye(n, Re({
532
+ }, n), ze(n, Re({
533
533
  get "data-file-browser-item-id"() {
534
534
  return e.item.id;
535
535
  },
@@ -538,7 +538,7 @@ function it(e) {
538
538
  }
539
539
  }, Be, {
540
540
  onClick: o,
541
- onDblClick: a,
541
+ onDblClick: l,
542
542
  onContextMenu: u,
543
543
  onPointerDown: V,
544
544
  onPointerMove: re,
@@ -548,14 +548,14 @@ function it(e) {
548
548
  return W(
549
549
  tt,
550
550
  "group cursor-pointer",
551
- "transition-all duration-150 ease-out",
552
- "hover:bg-accent/50",
551
+ "transition-[background-color,transform,opacity,box-shadow] duration-[var(--floe-duration-fast)] ease-out",
552
+ "hover:bg-[var(--floe-state-selected)]",
553
553
  "focus:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-ring",
554
- w() && "bg-accent text-accent-foreground",
554
+ w() && "bg-[var(--floe-state-selected)] text-accent-foreground",
555
555
  // Drag state styling - being dragged items become translucent
556
556
  Y() && "opacity-40 scale-[0.98]",
557
557
  // Drop target styling - enhanced visual feedback
558
- x() && X() && ["bg-primary/15 outline outline-2 outline-primary/60", "scale-[1.01] shadow-sm shadow-primary/10"],
558
+ x() && X() && ["bg-primary/15 outline outline-2 outline-primary/60", "scale-[1.01] shadow-[var(--floe-elevation-raised)]"],
559
559
  x() && !X() && ["bg-destructive/10 outline outline-2 outline-dashed outline-destructive/50"]
560
560
  );
561
561
  }
@@ -575,7 +575,7 @@ function it(e) {
575
575
  return e.item.name;
576
576
  },
577
577
  get match() {
578
- return k();
578
+ return F();
579
579
  },
580
580
  get class() {
581
581
  return Ee(e.item);