@floegence/floe-webapp-core 0.86.60 → 0.86.63
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.
- package/dist/app/FloeRegistryContributions.js +0 -3
- package/dist/components/chat/blocks/BlockRenderer.js +1 -1
- package/dist/components/chat/blocks/CodeDiffBlock.js +56 -56
- package/dist/components/chat/blocks/ImageBlock.js +1 -1
- package/dist/components/chat/blocks/ToolCallBlock.js +57 -57
- package/dist/components/chat/status/ConnectionStatus.js +10 -10
- package/dist/components/deck/DeckCell.js +25 -25
- package/dist/components/deck/DeckContextMenu.js +20 -20
- package/dist/components/deck/DeckGrid.js +1 -1
- package/dist/components/deck/DeckTopBar.js +42 -42
- package/dist/components/deck/DropZonePreview.js +6 -6
- package/dist/components/deck/LayoutSelector.js +53 -53
- package/dist/components/deck/WidgetFrame.js +28 -28
- package/dist/components/deck/WidgetPalette.js +31 -31
- package/dist/components/deck/WidgetTypeSwitcher.js +31 -31
- package/dist/components/file-browser/Breadcrumb.js +27 -27
- package/dist/components/file-browser/DirectoryTree.js +15 -15
- package/dist/components/file-browser/DragPreview.js +58 -58
- package/dist/components/file-browser/FileBrowser.js +17 -17
- package/dist/components/file-browser/FileBrowserStatusBar.js +18 -18
- package/dist/components/file-browser/FileBrowserToolbar.js +27 -27
- package/dist/components/file-browser/FileContextMenu.js +47 -47
- package/dist/components/file-browser/FileGridView.js +53 -51
- package/dist/components/file-browser/FileItemDecorations.js +30 -27
- package/dist/components/file-browser/FileListView.js +114 -114
- package/dist/components/icons/ActivityRailIcons.d.ts +30 -0
- package/dist/components/icons/ActivityRailIcons.js +68 -0
- package/dist/components/icons/index.d.ts +1 -0
- package/dist/components/icons/index.js +1357 -1357
- package/dist/components/launchpad/Launchpad.js +14 -14
- package/dist/components/launchpad/LaunchpadGrid.js +7 -7
- package/dist/components/launchpad/LaunchpadItem.js +11 -11
- package/dist/components/launchpad/LaunchpadPagination.js +16 -16
- package/dist/components/launchpad/LaunchpadSearch.js +9 -9
- package/dist/components/layout/ActivityBar.js +61 -63
- package/dist/components/layout/DisplayModeSwitcher.d.ts +10 -0
- package/dist/components/layout/DisplayModeSwitcher.js +102 -33
- package/dist/components/layout/MobileNavigationPanel.js +36 -36
- package/dist/components/layout/MobileTabBar.js +39 -39
- package/dist/components/layout/Panel.js +16 -16
- package/dist/components/layout/ResizeHandle.js +19 -19
- package/dist/components/layout/Shell.d.ts +0 -6
- package/dist/components/layout/Shell.js +208 -254
- package/dist/components/layout/Sidebar.js +37 -36
- package/dist/components/layout/SidebarPane.js +19 -19
- package/dist/components/layout/ThemeToggle.d.ts +19 -0
- package/dist/components/layout/ThemeToggle.js +39 -0
- package/dist/components/layout/TopBar.js +16 -16
- package/dist/components/layout/TopBarIconButton.js +15 -15
- package/dist/components/layout/index.d.ts +1 -1
- package/dist/components/loading/LoadingOverlay.js +9 -9
- package/dist/components/loading/Skeleton.js +11 -11
- package/dist/components/ui/Button.js +44 -36
- package/dist/components/ui/Card.d.ts +11 -62
- package/dist/components/ui/Card.js +64 -237
- package/dist/components/ui/Checkbox.js +79 -79
- package/dist/components/ui/CommandPalette.js +56 -55
- package/dist/components/ui/Dialog.js +91 -93
- package/dist/components/ui/DirectoryInput.js +22 -22
- package/dist/components/ui/DirectoryPicker.js +8 -8
- package/dist/components/ui/Dropdown.js +89 -87
- package/dist/components/ui/FeedbackIndicator.js +57 -57
- package/dist/components/ui/FileOpenPicker.js +37 -37
- package/dist/components/ui/FileSavePicker.js +41 -41
- package/dist/components/ui/FloatingWindow.js +213 -205
- package/dist/components/ui/Form.js +76 -76
- package/dist/components/ui/HighlightBlock.js +14 -14
- package/dist/components/ui/Input.js +106 -109
- package/dist/components/ui/Pagination.js +86 -86
- package/dist/components/ui/Popover.d.ts +33 -0
- package/dist/components/ui/Popover.js +133 -0
- package/dist/components/ui/ProcessingIndicator.js +344 -345
- package/dist/components/ui/Progress.js +94 -97
- package/dist/components/ui/QuoteBlock.js +25 -25
- package/dist/components/ui/Radio.js +91 -91
- package/dist/components/ui/SegmentedControl.js +24 -24
- package/dist/components/ui/Stepper.js +68 -60
- package/dist/components/ui/Switch.js +25 -25
- package/dist/components/ui/Tabs.js +188 -163
- package/dist/components/ui/Tag.js +12 -9
- package/dist/components/ui/Tooltip.js +30 -30
- package/dist/components/ui/floatingPresence.d.ts +7 -0
- package/dist/components/ui/floatingPresence.js +80 -39
- package/dist/components/ui/index.d.ts +2 -1
- package/dist/components/ui/picker/DirectoryFavorites.js +27 -27
- package/dist/components/ui/picker/PickerBase.js +107 -107
- package/dist/context/ComponentRegistry.d.ts +0 -8
- package/dist/context/ComponentRegistry.js +61 -67
- package/dist/context/FloeConfigContext.d.ts +0 -6
- package/dist/context/FloeConfigContext.js +9 -15
- package/dist/context/NotificationContext.js +4 -4
- package/dist/context/ThemeContext.js +71 -70
- package/dist/context/index.d.ts +1 -1
- package/dist/display-mode.css +2 -45
- package/dist/floe.css +205 -43
- package/dist/full.js +701 -695
- package/dist/icons.js +112 -102
- package/dist/language.css +320 -0
- package/dist/layout.js +33 -35
- package/dist/primitives.css +23 -17
- package/dist/standalone.css +1 -0
- package/dist/styles/themes/classicSemanticTokens.d.ts +122 -122
- package/dist/styles/themes/classicSemanticTokens.js +140 -138
- package/dist/styles/themes/index.d.ts +3 -1
- package/dist/styles/themes/index.js +10 -10
- package/dist/styles/themes/presets.d.ts +2 -2
- package/dist/styles/themes/presets.js +34 -34
- package/dist/styles/tokens.d.ts +152 -68
- package/dist/styles/tokens.js +87 -49
- package/dist/styles.css +1 -1
- package/dist/surface.css +214 -117
- package/dist/themes/dark.css +64 -64
- package/dist/themes/light.css +64 -64
- package/dist/ui.css +171 -255
- package/dist/ui.js +176 -178
- package/dist/utils/hotInteraction.d.ts +7 -0
- package/dist/utils/hotInteraction.js +12 -12
- package/dist/widgets/TerminalWidget.js +28 -28
- package/dist/workbench-composition.css +15 -15
- package/package.json +1 -1
- package/dist/components/layout/BottomBar.d.ts +0 -29
- package/dist/components/layout/BottomBar.js +0 -70
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { insert as
|
|
1
|
+
import { insert as n, effect as d, setAttribute as f, className as s, setStyleProperty as u, memo as $, template as c, delegateEvents as _ } from "solid-js/web";
|
|
2
2
|
import "solid-js";
|
|
3
3
|
import { cn as v } from "../../utils/cn.js";
|
|
4
|
-
var
|
|
5
|
-
function
|
|
6
|
-
const t = () => e.collapsed ?? !1, a = () => e.width ?? 350,
|
|
4
|
+
var S = /* @__PURE__ */ c('<aside data-floe-shell-slot=sidebar data-floe-geometry-surface=shell-sidebar><div class="flex-1 overflow-auto overscroll-contain">'), k = /* @__PURE__ */ c("<div>"), C = /* @__PURE__ */ c("<section><div class=flex-1>"), q = /* @__PURE__ */ c('<div class="flex items-center justify-between px-2.5 py-2 text-caption font-semibold uppercase tracking-wider text-[var(--floe-ink-quiet)]"><span>'), I = /* @__PURE__ */ c('<button type=button data-floe-interactive=row><span class="flex-1 truncate text-left">'), L = /* @__PURE__ */ c("<span>");
|
|
5
|
+
function A(e) {
|
|
6
|
+
const t = () => e.collapsed ?? !1, a = () => e.width ?? 350, l = () => e.visibilityMotion ?? "animated";
|
|
7
7
|
return (() => {
|
|
8
|
-
var i =
|
|
9
|
-
return
|
|
10
|
-
var b =
|
|
11
|
-
return b !== r.e && f(i, "data-floe-sidebar-visibility-motion", r.e = b), h !== r.t &&
|
|
8
|
+
var i = S(), o = i.firstChild;
|
|
9
|
+
return n(o, () => e.children), n(i, () => e.resizer, null), d((r) => {
|
|
10
|
+
var b = l(), h = v("relative h-full flex flex-col shrink-0 min-h-0", "bg-sidebar text-sidebar-foreground", "border-r border-sidebar-border", "overflow-hidden", l() === "animated" && "transition-[width] duration-[var(--floe-duration-fast)] ease-out", e.class), m = t() ? "0px" : `${a()}px`, x = t() ? "hidden" : "visible", g = t() ? "0px" : void 0, w = e.ariaLabel, y = t() ? "true" : void 0;
|
|
11
|
+
return b !== r.e && f(i, "data-floe-sidebar-visibility-motion", r.e = b), h !== r.t && s(i, r.t = h), m !== r.a && u(i, "width", r.a = m), x !== r.o && u(i, "visibility", r.o = x), g !== r.i && u(i, "border-right-width", r.i = g), w !== r.n && f(i, "aria-label", r.n = w), y !== r.s && f(i, "aria-hidden", r.s = y), r;
|
|
12
12
|
}, {
|
|
13
13
|
e: void 0,
|
|
14
14
|
t: void 0,
|
|
@@ -20,53 +20,54 @@ function E(e) {
|
|
|
20
20
|
}), i;
|
|
21
21
|
})();
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function E(e) {
|
|
24
24
|
return (() => {
|
|
25
|
-
var t =
|
|
26
|
-
return
|
|
25
|
+
var t = k();
|
|
26
|
+
return n(t, () => e.children), d(() => s(t, v("p-2.5 space-y-3", e.class))), t;
|
|
27
27
|
})();
|
|
28
28
|
}
|
|
29
|
-
function
|
|
29
|
+
function N(e) {
|
|
30
30
|
return (() => {
|
|
31
|
-
var t =
|
|
32
|
-
return
|
|
31
|
+
var t = k();
|
|
32
|
+
return n(t, () => e.children), d(() => s(t, v("space-y-0.5", e.class))), t;
|
|
33
33
|
})();
|
|
34
34
|
}
|
|
35
|
-
function
|
|
35
|
+
function P(e) {
|
|
36
36
|
return (() => {
|
|
37
37
|
var t = C(), a = t.firstChild;
|
|
38
|
-
return
|
|
39
|
-
var
|
|
40
|
-
return () =>
|
|
41
|
-
var i =
|
|
42
|
-
return
|
|
38
|
+
return n(t, (() => {
|
|
39
|
+
var l = $(() => !!e.title);
|
|
40
|
+
return () => l() && (() => {
|
|
41
|
+
var i = q(), o = i.firstChild;
|
|
42
|
+
return n(o, () => e.title), n(i, () => e.actions, null), i;
|
|
43
43
|
})();
|
|
44
|
-
})(), a),
|
|
44
|
+
})(), a), n(a, () => e.children), d(() => s(t, v("flex flex-col", e.class))), t;
|
|
45
45
|
})();
|
|
46
46
|
}
|
|
47
47
|
function B(e) {
|
|
48
48
|
return (() => {
|
|
49
|
-
var t =
|
|
50
|
-
return t.$$click = () => e.onClick?.(),
|
|
51
|
-
var
|
|
52
|
-
return () =>
|
|
53
|
-
var i =
|
|
54
|
-
return
|
|
49
|
+
var t = I(), a = t.firstChild;
|
|
50
|
+
return t.$$click = () => e.onClick?.(), n(t, (() => {
|
|
51
|
+
var l = $(() => !!e.icon);
|
|
52
|
+
return () => l() && (() => {
|
|
53
|
+
var i = L();
|
|
54
|
+
return n(i, () => e.icon), d(() => s(i, v("flex-shrink-0 w-4 h-4 transition-colors duration-[var(--floe-duration-fast)] ease-[var(--floe-ease-out)]", e.active ? "text-[var(--floe-ink-soft)]" : "text-[var(--floe-ink-quiet)] group-hover:text-[var(--floe-ink)]"))), i;
|
|
55
55
|
})();
|
|
56
|
-
})(), a),
|
|
57
|
-
var i = v("w-full min-h-[var(--floe-row-height)] flex items-center gap-2
|
|
58
|
-
return i !==
|
|
56
|
+
})(), a), n(a, () => e.children), d((l) => {
|
|
57
|
+
var i = e.active ? "true" : void 0, o = v("group w-full min-h-[var(--floe-row-height)] flex items-center gap-2 pl-2.5 pr-2 mx-1 rounded-sm", "text-[length:var(--floe-type-control)] leading-[var(--floe-line-control)] cursor-pointer", "text-[var(--floe-ink-soft)]", "focus:outline-none focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-ring", e.active && "text-foreground font-medium", e.class), r = e.indent ? `${10 + e.indent * 10}px` : void 0;
|
|
58
|
+
return i !== l.e && f(t, "data-selected", l.e = i), o !== l.t && s(t, l.t = o), r !== l.a && u(t, "padding-left", l.a = r), l;
|
|
59
59
|
}, {
|
|
60
60
|
e: void 0,
|
|
61
|
-
t: void 0
|
|
61
|
+
t: void 0,
|
|
62
|
+
a: void 0
|
|
62
63
|
}), t;
|
|
63
64
|
})();
|
|
64
65
|
}
|
|
65
|
-
|
|
66
|
+
_(["click"]);
|
|
66
67
|
export {
|
|
67
|
-
|
|
68
|
-
|
|
68
|
+
A as Sidebar,
|
|
69
|
+
E as SidebarContent,
|
|
69
70
|
B as SidebarItem,
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
N as SidebarItemList,
|
|
72
|
+
P as SidebarSection
|
|
72
73
|
};
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
import { insert as
|
|
2
|
-
import { Show as
|
|
1
|
+
import { insert as o, createComponent as r, use as E, effect as S, className as d, setStyleProperty as _, setAttribute as b, template as s, delegateEvents as L } from "solid-js/web";
|
|
2
|
+
import { Show as a } from "solid-js";
|
|
3
3
|
import { useLayout as O } from "../../context/LayoutContext.js";
|
|
4
4
|
import { cn as c } from "../../utils/cn.js";
|
|
5
5
|
import { ResizeHandle as P } from "./ResizeHandle.js";
|
|
6
|
-
var
|
|
6
|
+
var q = /* @__PURE__ */ s('<div class="min-w-0 flex items-center gap-1.5">'), H = /* @__PURE__ */ s('<button type=button class="flex items-center justify-center w-5 h-5 rounded-xs cursor-pointer hover:bg-[var(--floe-state-hover)] focus:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-inset"aria-label="Close sidebar"><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 class="w-3.5 h-3.5"><path d="M18 6 6 18"></path><path d="m6 6 12 12">'), N = /* @__PURE__ */ s('<div class="flex min-w-0 items-center gap-1.5">'), D = /* @__PURE__ */ s('<aside data-floe-geometry-surface=sidebar-pane><div><div class="flex items-center justify-between px-3 py-2 border-b border-sidebar-border"><span class="text-caption font-semibold uppercase tracking-wider text-[var(--floe-ink-quiet)]"></span></div><div>'), F = /* @__PURE__ */ s("<div>");
|
|
7
7
|
function T(t) {
|
|
8
|
-
const A = O(), m = () => A.isMobile(),
|
|
8
|
+
const A = O(), m = () => A.isMobile(), w = () => t.width ?? 240, u = () => t.open ?? !0, l = () => m() && t.mobileOverlay !== !1 && u(), g = () => l() && typeof t.onClose == "function", B = () => l() && t.mobileBackdrop !== !1 && typeof t.onClose == "function", M = () => t.resizable && u() && !m() && typeof t.onResize == "function";
|
|
9
9
|
return [(() => {
|
|
10
|
-
var i = D(),
|
|
11
|
-
return
|
|
10
|
+
var i = D(), v = i.firstChild, f = v.firstChild, j = f.firstChild, h = f.nextSibling;
|
|
11
|
+
return o(j, () => t.title), o(f, r(a, {
|
|
12
12
|
get when() {
|
|
13
|
-
return t.headerActions ||
|
|
13
|
+
return t.headerActions || g();
|
|
14
14
|
},
|
|
15
15
|
get children() {
|
|
16
|
-
var e =
|
|
17
|
-
return
|
|
16
|
+
var e = N();
|
|
17
|
+
return o(e, r(a, {
|
|
18
18
|
get when() {
|
|
19
19
|
return t.headerActions;
|
|
20
20
|
},
|
|
21
21
|
get children() {
|
|
22
|
-
var n =
|
|
23
|
-
return
|
|
22
|
+
var n = q();
|
|
23
|
+
return o(n, () => t.headerActions), n;
|
|
24
24
|
}
|
|
25
|
-
}), null),
|
|
25
|
+
}), null), o(e, r(a, {
|
|
26
26
|
get when() {
|
|
27
|
-
return
|
|
27
|
+
return g();
|
|
28
28
|
},
|
|
29
29
|
get children() {
|
|
30
|
-
var n =
|
|
30
|
+
var n = H();
|
|
31
31
|
return n.$$click = () => t.onClose?.(), n;
|
|
32
32
|
}
|
|
33
33
|
}), null), e;
|
|
34
34
|
}
|
|
35
|
-
}), null), E((e) => t.bodyRef?.(e),
|
|
35
|
+
}), null), E((e) => t.bodyRef?.(e), h), o(h, () => t.children), o(i, r(a, {
|
|
36
36
|
get when() {
|
|
37
37
|
return M();
|
|
38
38
|
},
|
|
39
39
|
get children() {
|
|
40
|
-
return
|
|
40
|
+
return r(P, {
|
|
41
41
|
direction: "horizontal",
|
|
42
42
|
onResize: (e) => t.onResize?.(e),
|
|
43
43
|
get onResizeStart() {
|
|
@@ -49,8 +49,8 @@ function T(t) {
|
|
|
49
49
|
});
|
|
50
50
|
}
|
|
51
51
|
}), null), S((e) => {
|
|
52
|
-
var n = c("flex-shrink-0 border-r border-
|
|
53
|
-
return n !== e.e && d(i, e.e = n), x !== e.t && _(i, "width", e.t = x), y !== e.a &&
|
|
52
|
+
var n = c("flex-shrink-0 border-r border-[var(--floe-line)] bg-sidebar relative", "transition-[width,transform,box-shadow] duration-[var(--floe-duration-base)] ease-out", "overflow-hidden", l() && "absolute inset-y-0 left-0 z-10 shadow-[var(--floe-elevation-float)]", t.class), x = u() ? `${w()}px` : "0px", y = l() ? "dialog" : void 0, k = l() ? "true" : void 0, C = t.ariaLabel, z = c("h-full flex flex-col", t.innerClass), $ = `${w()}px`, R = c("flex-1 min-h-0 overflow-auto", t.bodyClass);
|
|
53
|
+
return n !== e.e && d(i, e.e = n), x !== e.t && _(i, "width", e.t = x), y !== e.a && b(i, "role", e.a = y), k !== e.o && b(i, "aria-modal", e.o = k), C !== e.i && b(i, "aria-label", e.i = C), z !== e.n && d(v, e.n = z), $ !== e.s && _(v, "width", e.s = $), R !== e.h && d(h, e.h = R), e;
|
|
54
54
|
}, {
|
|
55
55
|
e: void 0,
|
|
56
56
|
t: void 0,
|
|
@@ -61,7 +61,7 @@ function T(t) {
|
|
|
61
61
|
s: void 0,
|
|
62
62
|
h: void 0
|
|
63
63
|
}), i;
|
|
64
|
-
})(),
|
|
64
|
+
})(), r(a, {
|
|
65
65
|
get when() {
|
|
66
66
|
return B();
|
|
67
67
|
},
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface ThemeToggleProps {
|
|
2
|
+
/** Box class for the button; defaults to the 32px icon control. */
|
|
3
|
+
class?: string;
|
|
4
|
+
/** Box class for the 16px icon frame. */
|
|
5
|
+
glyphClass?: string;
|
|
6
|
+
/** Overrides the accessible name. Defaults to the action the click performs. */
|
|
7
|
+
label?: string;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Light/dark toggle.
|
|
12
|
+
*
|
|
13
|
+
* The two states are one control, so the icon performs the change rather than
|
|
14
|
+
* being swapped between frames: the outgoing glyph rotates a quarter turn and
|
|
15
|
+
* leaves upward while the incoming one arrives from below. Both live in the
|
|
16
|
+
* same 16px frame, so the button never changes size and nothing else on the
|
|
17
|
+
* bar moves. Reduced-motion users get the instant swap.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ThemeToggle(props: ThemeToggleProps): import("solid-js").JSX.Element;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { insert as k, createComponent as w, effect as T, setAttribute as x, className as a, template as p, delegateEvents as C } from "solid-js/web";
|
|
2
|
+
import { cn as r } from "../../utils/cn.js";
|
|
3
|
+
import { useTheme as S } from "../../context/ThemeContext.js";
|
|
4
|
+
import { Sun as j, Moon as A } from "../icons/index.js";
|
|
5
|
+
var D = /* @__PURE__ */ p("<button type=button data-floe-interactive=icon><span aria-hidden=true><span></span><span>");
|
|
6
|
+
function q(o) {
|
|
7
|
+
const s = S(), n = () => s.resolvedTheme() === "dark", c = () => o.label ?? (n() ? "Switch to light theme" : "Switch to dark theme"), f = (t, i) => r(
|
|
8
|
+
"absolute inset-0 flex items-center justify-center",
|
|
9
|
+
/* Tailwind's rotate/translate utilities write the individual properties,
|
|
10
|
+
* so the transition list has to name them; `transform` alone would leave
|
|
11
|
+
* the glyphs swapping instead of gliding. */
|
|
12
|
+
"transition-[opacity,rotate,translate] duration-[var(--floe-duration-base)] ease-[var(--floe-ease-out)]",
|
|
13
|
+
"motion-reduce:transition-none",
|
|
14
|
+
t ? "opacity-100 rotate-0 translate-y-0" : r("opacity-0", i === "up" ? "-translate-y-2 rotate-90" : "translate-y-2 -rotate-90")
|
|
15
|
+
);
|
|
16
|
+
return (() => {
|
|
17
|
+
var t = D(), i = t.firstChild, l = i.firstChild, v = l.nextSibling;
|
|
18
|
+
return t.$$click = () => s.toggleTheme(), k(l, w(j, {
|
|
19
|
+
class: "h-full w-full"
|
|
20
|
+
})), k(v, w(A, {
|
|
21
|
+
class: "h-full w-full"
|
|
22
|
+
})), T((e) => {
|
|
23
|
+
var d = o.disabled, u = c(), h = c(), m = r("inline-flex h-[var(--floe-control-height-md)] w-[var(--floe-control-height-md)] shrink-0 items-center justify-center rounded-control cursor-pointer", "text-[var(--floe-ink-soft)] hover:bg-[var(--floe-state-hover)] hover:text-foreground", "transition-colors duration-[var(--floe-duration-fast)] ease-[var(--floe-ease-out)]", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-[var(--floe-plane)]", "disabled:pointer-events-none disabled:opacity-50", o.class), b = r("relative block h-4 w-4 overflow-hidden", o.glyphClass), g = f(!n(), "up"), y = f(n(), "down");
|
|
24
|
+
return d !== e.e && (t.disabled = e.e = d), u !== e.t && x(t, "aria-label", e.t = u), h !== e.a && x(t, "title", e.a = h), m !== e.o && a(t, e.o = m), b !== e.i && a(i, e.i = b), g !== e.n && a(l, e.n = g), y !== e.s && a(v, e.s = y), e;
|
|
25
|
+
}, {
|
|
26
|
+
e: void 0,
|
|
27
|
+
t: void 0,
|
|
28
|
+
a: void 0,
|
|
29
|
+
o: void 0,
|
|
30
|
+
i: void 0,
|
|
31
|
+
n: void 0,
|
|
32
|
+
s: void 0
|
|
33
|
+
}), t;
|
|
34
|
+
})();
|
|
35
|
+
}
|
|
36
|
+
C(["click"]);
|
|
37
|
+
export {
|
|
38
|
+
q as ThemeToggle
|
|
39
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { insert as t, createComponent as
|
|
2
|
-
import { Show as
|
|
3
|
-
import { cn as
|
|
4
|
-
import { useCommand as
|
|
1
|
+
import { insert as t, createComponent as d, effect as y, className as v, setAttribute as $, template as i, delegateEvents as w } from "solid-js/web";
|
|
2
|
+
import { Show as h } from "solid-js";
|
|
3
|
+
import { cn as p } from "../../utils/cn.js";
|
|
4
|
+
import { useCommand as _ } from "../../context/CommandContext.js";
|
|
5
5
|
import { Search as C } from "../icons/index.js";
|
|
6
6
|
import { useResolvedFloeConfig as S } from "../../context/FloeConfigContext.js";
|
|
7
|
-
var B = /* @__PURE__ */
|
|
7
|
+
var B = /* @__PURE__ */ i('<span class="font-medium text-caption tracking-tight hidden sm:inline">'), E = /* @__PURE__ */ i('<kbd class="hidden md:inline text-caption px-1 py-0.5 rounded-xs bg-background/60 border border-[var(--floe-line)] font-mono shrink-0 leading-none">'), F = /* @__PURE__ */ i('<header data-floe-shell-slot=top-bar style=background-color:var(--activity-bar);border-bottom-color:var(--top-bar-border)><div class="h-10 flex items-center gap-2 px-3"><div class="flex items-center gap-2 flex-shrink-0"></div><button type=button><span class="flex-1 text-left hidden sm:inline truncate"></span></button><div class="flex items-center gap-0.5">'), j = /* @__PURE__ */ i('<div class="w-6 h-6 rounded-xs bg-primary flex items-center justify-center text-primary-foreground text-xs font-bold">F');
|
|
8
8
|
function R(o) {
|
|
9
|
-
const c =
|
|
9
|
+
const c = _(), a = S(), n = () => a.config.commands.palette.enabled;
|
|
10
10
|
return (() => {
|
|
11
|
-
var
|
|
12
|
-
return t(
|
|
11
|
+
var l = F(), x = l.firstChild, s = x.firstChild, r = s.nextSibling, f = r.firstChild, k = r.nextSibling;
|
|
12
|
+
return t(s, () => o.logo || j(), null), t(s, d(h, {
|
|
13
13
|
get when() {
|
|
14
14
|
return o.title;
|
|
15
15
|
},
|
|
@@ -17,9 +17,9 @@ function R(o) {
|
|
|
17
17
|
var e = B();
|
|
18
18
|
return t(e, () => o.title), e;
|
|
19
19
|
}
|
|
20
|
-
}), null), r.$$click = () => n() && c.open(), t(r,
|
|
20
|
+
}), null), r.$$click = () => n() && c.open(), t(r, d(C, {
|
|
21
21
|
class: "w-3 h-3 shrink-0"
|
|
22
|
-
}),
|
|
22
|
+
}), f), t(f, () => a.config.strings.topBar.searchPlaceholder), t(r, d(h, {
|
|
23
23
|
get when() {
|
|
24
24
|
return n();
|
|
25
25
|
},
|
|
@@ -28,22 +28,22 @@ function R(o) {
|
|
|
28
28
|
return t(e, () => c.getKeybindDisplay(a.config.commands.palette.keybind)), e;
|
|
29
29
|
}
|
|
30
30
|
}), null), t(k, () => o.actions), y((e) => {
|
|
31
|
-
var
|
|
31
|
+
var m = p(
|
|
32
32
|
// Safe-area padding must not be applied on a fixed-height element (border-box),
|
|
33
33
|
// otherwise the content gets squeezed on iOS notch devices.
|
|
34
|
-
"shrink-0 bg-background border-b border-
|
|
34
|
+
"shrink-0 bg-background border-b border-[var(--floe-line)] safe-top safe-left safe-right",
|
|
35
35
|
o.class
|
|
36
|
-
),
|
|
37
|
-
return
|
|
36
|
+
), b = o.ariaLabel, g = !n(), u = p("flex-1 max-w-sm flex items-center gap-2 h-[26px] px-2.5", n() ? "cursor-pointer" : "cursor-not-allowed", "text-caption text-[var(--floe-ink-soft)] tracking-tight", "bg-[var(--floe-well)] hover:bg-[var(--floe-well-strong)] rounded-control", "border border-[var(--floe-line)]", "transition-[background-color,border-color,color] duration-[var(--floe-duration-fast)] ease-[var(--floe-ease-in-out)]", "focus:outline-none focus-visible:ring-1 focus-visible:ring-ring", !n() && "opacity-50 hover:bg-transparent");
|
|
37
|
+
return m !== e.e && v(l, e.e = m), b !== e.t && $(l, "aria-label", e.t = b), g !== e.a && (r.disabled = e.a = g), u !== e.o && v(r, e.o = u), e;
|
|
38
38
|
}, {
|
|
39
39
|
e: void 0,
|
|
40
40
|
t: void 0,
|
|
41
41
|
a: void 0,
|
|
42
42
|
o: void 0
|
|
43
|
-
}),
|
|
43
|
+
}), l;
|
|
44
44
|
})();
|
|
45
45
|
}
|
|
46
|
-
|
|
46
|
+
w(["click"]);
|
|
47
47
|
export {
|
|
48
48
|
R as TopBar
|
|
49
49
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { createComponent as
|
|
2
|
-
import { splitProps as u, Show as
|
|
3
|
-
import { cn as
|
|
4
|
-
import { Tooltip as
|
|
5
|
-
var
|
|
6
|
-
function y(
|
|
7
|
-
const [e,
|
|
8
|
-
var t =
|
|
9
|
-
return i(t,
|
|
1
|
+
import { createComponent as r, spread as i, mergeProps as a, insert as s, template as c } from "solid-js/web";
|
|
2
|
+
import { splitProps as u, Show as d } from "solid-js";
|
|
3
|
+
import { cn as p } from "../../utils/cn.js";
|
|
4
|
+
import { Tooltip as f } from "../ui/Tooltip.js";
|
|
5
|
+
var b = /* @__PURE__ */ c("<button type=button>");
|
|
6
|
+
function y(l) {
|
|
7
|
+
const [e, n] = u(l, ["label", "children", "tooltip", "tooltipPlacement", "tooltipDelay", "class", "disabled"]), o = () => (() => {
|
|
8
|
+
var t = b();
|
|
9
|
+
return i(t, a({
|
|
10
10
|
get class() {
|
|
11
|
-
return
|
|
11
|
+
return p("inline-flex items-center justify-center", "w-[var(--floe-control-height-md)] h-[var(--floe-control-height-md)]", "rounded-control cursor-pointer", "text-[var(--floe-ink-soft)] hover:bg-[var(--floe-state-hover)]", "active:bg-[var(--floe-state-press)]", "transition-[background-color,color] duration-[var(--floe-duration-fast)] ease-[var(--floe-ease-out)]", "focus:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-inset", "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed", e.class);
|
|
12
12
|
},
|
|
13
13
|
get "aria-label"() {
|
|
14
14
|
return e.label;
|
|
@@ -16,17 +16,17 @@ function y(n) {
|
|
|
16
16
|
get disabled() {
|
|
17
17
|
return e.disabled;
|
|
18
18
|
}
|
|
19
|
-
},
|
|
19
|
+
}, n), !1, !0), s(t, () => e.children), t;
|
|
20
20
|
})();
|
|
21
|
-
return
|
|
21
|
+
return r(d, {
|
|
22
22
|
get when() {
|
|
23
23
|
return e.tooltip !== !1;
|
|
24
24
|
},
|
|
25
25
|
get fallback() {
|
|
26
|
-
return
|
|
26
|
+
return o();
|
|
27
27
|
},
|
|
28
28
|
get children() {
|
|
29
|
-
return
|
|
29
|
+
return r(f, {
|
|
30
30
|
get content() {
|
|
31
31
|
return e.tooltip ?? e.label;
|
|
32
32
|
},
|
|
@@ -37,7 +37,7 @@ function y(n) {
|
|
|
37
37
|
return e.tooltipDelay ?? 0;
|
|
38
38
|
},
|
|
39
39
|
get children() {
|
|
40
|
-
return
|
|
40
|
+
return o();
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
}
|
|
@@ -5,7 +5,6 @@ export type { BarItemContextMenuHandler, BarItemContextMenuRequest, BarItemConte
|
|
|
5
5
|
export { Sidebar, SidebarContent, SidebarItemList, SidebarSection, SidebarItem, type SidebarProps, type SidebarContentProps, type SidebarItemListProps, type SidebarSectionProps, type SidebarItemProps, } from './Sidebar';
|
|
6
6
|
export { TopBar, type TopBarProps } from './TopBar';
|
|
7
7
|
export { TopBarIconButton, type TopBarIconButtonProps } from './TopBarIconButton';
|
|
8
|
-
export { BottomBar, BottomBarItem, StatusIndicator, type BottomBarProps, type BottomBarItemProps, type StatusIndicatorProps, } from './BottomBar';
|
|
9
8
|
export { BottomBarCompanion, type BottomBarCompanionDismissReason, type BottomBarCompanionPhase, type BottomBarCompanionProps, } from './BottomBarCompanion';
|
|
10
9
|
export { MobileTabBar, type MobileTabBarItem, type MobileTabBarProps } from './MobileTabBar';
|
|
11
10
|
export { ResizeHandle, type ResizeHandleProps } from './ResizeHandle';
|
|
@@ -14,4 +13,5 @@ export { Panel, PanelHeader, PanelContent, type PanelProps, type PanelHeaderProp
|
|
|
14
13
|
export { KeepAliveStack, type KeepAliveStackProps, type KeepAliveView } from './KeepAliveStack';
|
|
15
14
|
export { DisplayModeSwitcher, sanitizeDisplayMode, type DisplayMode, type DisplayModeSwitcherProps, } from './DisplayModeSwitcher';
|
|
16
15
|
export { DisplayModePageShell, type DisplayModePageShellProps } from './DisplayModePageShell';
|
|
16
|
+
export { ThemeToggle, type ThemeToggleProps } from './ThemeToggle';
|
|
17
17
|
export { AppViewport, type AppViewportProps } from './AppViewport';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { insert as n, createComponent as r, effect as o, className as
|
|
1
|
+
import { insert as n, createComponent as r, effect as o, className as m, Portal as d, template as c } from "solid-js/web";
|
|
2
2
|
import { Show as l } from "solid-js";
|
|
3
|
-
import { cn as
|
|
4
|
-
import { SnakeLoader as
|
|
5
|
-
var g = /* @__PURE__ */ c('<p class="text-sm text-
|
|
6
|
-
function
|
|
3
|
+
import { cn as f } from "../../utils/cn.js";
|
|
4
|
+
import { SnakeLoader as u } from "./SnakeLoader.js";
|
|
5
|
+
var g = /* @__PURE__ */ c('<p class="text-sm text-[var(--floe-ink-soft)] processing-text-glow">'), b = /* @__PURE__ */ c('<div><div class=relative><div class="absolute -inset-8 rounded-full floe-loader-ambient"style="background:radial-gradient(circle, color-mix(in srgb, var(--primary) 12%, transparent) 0%, transparent 70%)">');
|
|
6
|
+
function p(e) {
|
|
7
7
|
const a = (() => {
|
|
8
8
|
var t = b(), i = t.firstChild;
|
|
9
|
-
return i.firstChild, n(i, r(
|
|
9
|
+
return i.firstChild, n(i, r(u, {
|
|
10
10
|
size: "lg"
|
|
11
11
|
}), null), n(t, r(l, {
|
|
12
12
|
get when() {
|
|
@@ -16,7 +16,7 @@ function k(e) {
|
|
|
16
16
|
var s = g();
|
|
17
17
|
return n(s, () => e.message), s;
|
|
18
18
|
}
|
|
19
|
-
}), null), o(() =>
|
|
19
|
+
}), null), o(() => m(t, f("flex flex-col items-center justify-center gap-4", "bg-background/80 backdrop-blur-sm", e.fullscreen ? "fixed inset-0 z-50" : "absolute inset-0", "animate-in fade-in", e.class))), t;
|
|
20
20
|
})();
|
|
21
21
|
return r(l, {
|
|
22
22
|
get when() {
|
|
@@ -29,7 +29,7 @@ function k(e) {
|
|
|
29
29
|
},
|
|
30
30
|
fallback: a,
|
|
31
31
|
get children() {
|
|
32
|
-
return r(
|
|
32
|
+
return r(d, {
|
|
33
33
|
children: a
|
|
34
34
|
});
|
|
35
35
|
}
|
|
@@ -38,5 +38,5 @@ function k(e) {
|
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
40
|
export {
|
|
41
|
-
|
|
41
|
+
p as LoadingOverlay
|
|
42
42
|
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { effect as i, className as u, insert as s, createComponent as r, template as f } from "solid-js/web";
|
|
2
2
|
import { For as h } from "solid-js";
|
|
3
3
|
import { cn as o } from "../../utils/cn.js";
|
|
4
|
-
var m = /* @__PURE__ */ f("<div>"), p = /* @__PURE__ */ f('<div><div class="flex items-center gap-3"><div class="space-y-2 flex-1">'),
|
|
4
|
+
var m = /* @__PURE__ */ f("<div>"), p = /* @__PURE__ */ f('<div><div class="flex items-center gap-3"><div class="space-y-2 flex-1">'), v = /* @__PURE__ */ f('<div class="flex items-center gap-3"><div class="flex-1 space-y-1">');
|
|
5
5
|
function c(n) {
|
|
6
6
|
return (() => {
|
|
7
7
|
var l = m();
|
|
8
8
|
return i(() => u(l, o("rounded-md floe-skeleton", n.class))), l;
|
|
9
9
|
})();
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
function _(n) {
|
|
12
12
|
const l = () => n.lines ?? 3, a = () => Array.from({
|
|
13
13
|
length: l()
|
|
14
14
|
}, (e, t) => t);
|
|
@@ -26,7 +26,7 @@ function v(n) {
|
|
|
26
26
|
})), i(() => u(e, o("space-y-2", n.class))), e;
|
|
27
27
|
})();
|
|
28
28
|
}
|
|
29
|
-
function
|
|
29
|
+
function x(n) {
|
|
30
30
|
return (() => {
|
|
31
31
|
var l = p(), a = l.firstChild, e = a.firstChild;
|
|
32
32
|
return s(a, r(c, {
|
|
@@ -35,12 +35,12 @@ function y(n) {
|
|
|
35
35
|
class: "h-4 w-1/3"
|
|
36
36
|
}), null), s(e, r(c, {
|
|
37
37
|
class: "h-3 w-1/4"
|
|
38
|
-
}), null), s(l, r(
|
|
38
|
+
}), null), s(l, r(_, {
|
|
39
39
|
lines: 2
|
|
40
|
-
}), null), i(() => u(l, o("rounded-
|
|
40
|
+
}), null), i(() => u(l, o("rounded-control border border-[var(--floe-line)] p-4 space-y-4", n.class))), l;
|
|
41
41
|
})();
|
|
42
42
|
}
|
|
43
|
-
function
|
|
43
|
+
function y(n) {
|
|
44
44
|
const l = () => n.count ?? 5, a = () => Array.from({
|
|
45
45
|
length: l()
|
|
46
46
|
}, (e, t) => t);
|
|
@@ -51,9 +51,9 @@ function x(n) {
|
|
|
51
51
|
return a();
|
|
52
52
|
},
|
|
53
53
|
children: () => (() => {
|
|
54
|
-
var t =
|
|
54
|
+
var t = v(), d = t.firstChild;
|
|
55
55
|
return s(t, r(c, {
|
|
56
|
-
class: "h-8 w-8 rounded"
|
|
56
|
+
class: "h-8 w-8 rounded-xs"
|
|
57
57
|
}), d), s(d, r(c, {
|
|
58
58
|
class: "h-4 w-2/3"
|
|
59
59
|
}), null), s(d, r(c, {
|
|
@@ -65,7 +65,7 @@ function x(n) {
|
|
|
65
65
|
}
|
|
66
66
|
export {
|
|
67
67
|
c as Skeleton,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
x as SkeletonCard,
|
|
69
|
+
y as SkeletonList,
|
|
70
|
+
_ as SkeletonText
|
|
71
71
|
};
|