@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,23 +1,23 @@
|
|
|
1
|
-
import { spread as
|
|
2
|
-
import { splitProps as
|
|
3
|
-
import { cn as
|
|
4
|
-
import { Loader2 as
|
|
5
|
-
var
|
|
1
|
+
import { spread as h, mergeProps as m, insert as n, createComponent as t, memo as c, Dynamic as p, effect as d, className as g, template as u } from "solid-js/web";
|
|
2
|
+
import { splitProps as b, Show as l } from "solid-js";
|
|
3
|
+
import { cn as i } from "../../utils/cn.js";
|
|
4
|
+
import { Loader2 as x } from "../icons/index.js";
|
|
5
|
+
var f = /* @__PURE__ */ u("<span aria-hidden=true>"), y = /* @__PURE__ */ u("<button type=button data-floe-control=button data-floe-surface-part=action>");
|
|
6
6
|
const w = {
|
|
7
|
-
default: "bg-primary text-primary-foreground
|
|
8
|
-
primary: "bg-primary text-primary-foreground
|
|
9
|
-
secondary: "bg-
|
|
10
|
-
outline: "border border-
|
|
11
|
-
ghost: "hover:bg-
|
|
12
|
-
"ghost-destructive": "bg-transparent text-
|
|
13
|
-
destructive: "bg-error text-error-foreground
|
|
14
|
-
},
|
|
15
|
-
xs: "h-
|
|
16
|
-
sm: "h-
|
|
17
|
-
md: "h-
|
|
18
|
-
lg: "h-
|
|
19
|
-
icon: "h-
|
|
20
|
-
},
|
|
7
|
+
default: "bg-primary text-primary-foreground hover:bg-[color-mix(in_srgb,var(--primary)_92%,var(--primary-foreground))]",
|
|
8
|
+
primary: "bg-primary text-primary-foreground hover:bg-[color-mix(in_srgb,var(--primary)_92%,var(--primary-foreground))]",
|
|
9
|
+
secondary: "bg-[var(--floe-well)] text-foreground hover:bg-[var(--floe-well-strong)]",
|
|
10
|
+
outline: "border border-[var(--floe-line-strong)] bg-transparent text-foreground hover:bg-[var(--floe-state-hover)] hover:border-[color-mix(in_srgb,var(--foreground)_26%,transparent)]",
|
|
11
|
+
ghost: "bg-transparent text-[var(--floe-ink-soft)] hover:bg-[var(--floe-state-hover)] hover:text-foreground",
|
|
12
|
+
"ghost-destructive": "bg-transparent text-[var(--floe-ink-soft)] hover:bg-[color-mix(in_srgb,var(--error)_12%,transparent)] hover:text-error",
|
|
13
|
+
destructive: "bg-error text-error-foreground hover:bg-[color-mix(in_srgb,var(--error)_88%,var(--foreground))]"
|
|
14
|
+
}, _ = {
|
|
15
|
+
xs: "h-[var(--floe-control-height-xs)] px-2 text-[length:var(--floe-type-caption)] rounded-sm",
|
|
16
|
+
sm: "h-[var(--floe-control-height-sm)] px-2.5 text-[length:var(--floe-type-control)] rounded-md",
|
|
17
|
+
md: "h-[var(--floe-control-height-md)] px-3 text-[length:var(--floe-type-control)] rounded-control",
|
|
18
|
+
lg: "h-[var(--floe-control-height-lg)] px-3.5 text-[length:var(--floe-type-control)] rounded-control",
|
|
19
|
+
icon: "h-[var(--floe-control-height-md)] w-[var(--floe-control-height-md)] rounded-control"
|
|
20
|
+
}, k = {
|
|
21
21
|
xs: "w-3 h-3",
|
|
22
22
|
sm: "w-3.5 h-3.5",
|
|
23
23
|
md: "w-3.5 h-3.5",
|
|
@@ -25,48 +25,56 @@ const w = {
|
|
|
25
25
|
icon: "w-4 h-4"
|
|
26
26
|
};
|
|
27
27
|
function P(a) {
|
|
28
|
-
const [
|
|
28
|
+
const [r, v] = b(a, ["variant", "size", "loading", "icon", "class", "children", "disabled"]), s = () => k[r.size ?? "md"];
|
|
29
29
|
return (() => {
|
|
30
|
-
var
|
|
31
|
-
return
|
|
30
|
+
var o = y();
|
|
31
|
+
return h(o, m({
|
|
32
32
|
get "data-floe-surface"() {
|
|
33
|
-
return
|
|
33
|
+
return r.variant === "ghost" || r.variant === "ghost-destructive" || r.variant === "outline" ? void 0 : "flat";
|
|
34
34
|
},
|
|
35
35
|
get class() {
|
|
36
|
-
return
|
|
36
|
+
return i("inline-flex min-w-max items-center justify-center gap-1.5 whitespace-nowrap font-medium cursor-pointer", "tracking-[var(--floe-tracking-normal)]", "transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-[var(--floe-duration-fast)] ease-[var(--floe-ease-out)]", "active:scale-[var(--floe-press-scale)]", "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-[var(--floe-plane)]", "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed", w[r.variant ?? "default"], _[r.size ?? "md"], r.class);
|
|
37
37
|
},
|
|
38
38
|
get disabled() {
|
|
39
|
-
return
|
|
39
|
+
return r.disabled || r.loading;
|
|
40
40
|
},
|
|
41
41
|
get "aria-busy"() {
|
|
42
|
-
return
|
|
42
|
+
return r.loading || void 0;
|
|
43
43
|
}
|
|
44
|
-
},
|
|
44
|
+
}, v), !1, !0), n(o, t(l, {
|
|
45
45
|
get when() {
|
|
46
|
-
return
|
|
46
|
+
return r.icon || "loading" in a;
|
|
47
47
|
},
|
|
48
48
|
get children() {
|
|
49
|
-
var
|
|
50
|
-
return n(
|
|
49
|
+
var e = f();
|
|
50
|
+
return n(e, t(l, {
|
|
51
51
|
get when() {
|
|
52
|
-
return
|
|
52
|
+
return r.loading;
|
|
53
53
|
},
|
|
54
54
|
get fallback() {
|
|
55
|
-
return
|
|
55
|
+
return c(() => !!r.icon)() && t(p, {
|
|
56
56
|
get component() {
|
|
57
|
-
return
|
|
57
|
+
return r.icon;
|
|
58
58
|
},
|
|
59
59
|
class: "h-full w-full"
|
|
60
60
|
});
|
|
61
61
|
},
|
|
62
62
|
get children() {
|
|
63
|
-
return t(
|
|
63
|
+
return t(x, {
|
|
64
64
|
class: "h-full w-full animate-spin"
|
|
65
65
|
});
|
|
66
66
|
}
|
|
67
|
-
})),
|
|
67
|
+
})), d(() => g(e, i("inline-flex shrink-0 items-center justify-center", s()))), e;
|
|
68
68
|
}
|
|
69
|
-
}), null), n(
|
|
69
|
+
}), null), n(o, () => r.children, null), n(o, t(l, {
|
|
70
|
+
get when() {
|
|
71
|
+
return c(() => !r.icon)() && "loading" in a;
|
|
72
|
+
},
|
|
73
|
+
get children() {
|
|
74
|
+
var e = f();
|
|
75
|
+
return d(() => g(e, i("inline-flex shrink-0", s()))), e;
|
|
76
|
+
}
|
|
77
|
+
}), null), o;
|
|
70
78
|
})();
|
|
71
79
|
}
|
|
72
80
|
export {
|
|
@@ -1,79 +1,28 @@
|
|
|
1
1
|
import { type JSX } from 'solid-js';
|
|
2
|
-
export type CardVariant = 'default' | '
|
|
2
|
+
export type CardVariant = 'default' | 'interactive' | 'well';
|
|
3
3
|
export interface CardProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
4
|
+
/**
|
|
5
|
+
* `default` is a filled content plane on the canvas. `interactive` adds the
|
|
6
|
+
* language's hover lift and first elevation step for clickable cards.
|
|
7
|
+
* `well` recesses the card into its host, for grouped secondary content.
|
|
8
|
+
*/
|
|
4
9
|
variant?: CardVariant;
|
|
5
|
-
/** Enable 3D perspective tilt on hover (works best with hover-lift and spotlight variants) */
|
|
6
|
-
enableTilt?: boolean;
|
|
7
|
-
/** Custom gradient colors for gradient-border variant */
|
|
8
|
-
gradientColors?: string;
|
|
9
|
-
/** Glow color for glow variant */
|
|
10
|
-
glowColor?: string;
|
|
11
10
|
}
|
|
12
11
|
/**
|
|
13
|
-
*
|
|
12
|
+
* Card — a plane, not a box.
|
|
13
|
+
*
|
|
14
|
+
* Separation comes from the fill step against the canvas and from the gutter
|
|
15
|
+
* around it; the card itself carries no contour and no resting shadow. That is
|
|
16
|
+
* what keeps a page of cards calm instead of drawing a grid of rectangles.
|
|
14
17
|
*/
|
|
15
18
|
export declare function Card(props: CardProps): JSX.Element;
|
|
16
|
-
/**
|
|
17
|
-
* Card header component
|
|
18
|
-
*/
|
|
19
19
|
export type CardHeaderProps = JSX.HTMLAttributes<HTMLDivElement>;
|
|
20
20
|
export declare function CardHeader(props: CardHeaderProps): JSX.Element;
|
|
21
|
-
/**
|
|
22
|
-
* Card title component
|
|
23
|
-
*/
|
|
24
21
|
export type CardTitleProps = JSX.HTMLAttributes<HTMLHeadingElement>;
|
|
25
22
|
export declare function CardTitle(props: CardTitleProps): JSX.Element;
|
|
26
|
-
/**
|
|
27
|
-
* Card description component
|
|
28
|
-
*/
|
|
29
23
|
export type CardDescriptionProps = JSX.HTMLAttributes<HTMLParagraphElement>;
|
|
30
24
|
export declare function CardDescription(props: CardDescriptionProps): JSX.Element;
|
|
31
|
-
/**
|
|
32
|
-
* Card content component
|
|
33
|
-
*/
|
|
34
25
|
export type CardContentProps = JSX.HTMLAttributes<HTMLDivElement>;
|
|
35
26
|
export declare function CardContent(props: CardContentProps): JSX.Element;
|
|
36
|
-
/**
|
|
37
|
-
* Card footer component
|
|
38
|
-
*/
|
|
39
27
|
export type CardFooterProps = JSX.HTMLAttributes<HTMLDivElement>;
|
|
40
28
|
export declare function CardFooter(props: CardFooterProps): JSX.Element;
|
|
41
|
-
/**
|
|
42
|
-
* Interactive 3D Card with mouse tracking
|
|
43
|
-
*/
|
|
44
|
-
export interface Interactive3DCardProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
45
|
-
/** Intensity of the 3D effect (1-20, default 10) */
|
|
46
|
-
intensity?: number;
|
|
47
|
-
/** Enable shine effect */
|
|
48
|
-
shine?: boolean;
|
|
49
|
-
/** Border glow on hover */
|
|
50
|
-
borderGlow?: boolean;
|
|
51
|
-
}
|
|
52
|
-
export declare function Interactive3DCard(props: Interactive3DCardProps): JSX.Element;
|
|
53
|
-
/**
|
|
54
|
-
* Animated Border Card with rotating gradient
|
|
55
|
-
*/
|
|
56
|
-
export interface AnimatedBorderCardProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
57
|
-
/** Animation duration in seconds */
|
|
58
|
-
duration?: number;
|
|
59
|
-
/** Border width in pixels */
|
|
60
|
-
borderWidth?: number;
|
|
61
|
-
/** Gradient colors (Tailwind classes) */
|
|
62
|
-
colors?: string;
|
|
63
|
-
}
|
|
64
|
-
export declare function AnimatedBorderCard(props: AnimatedBorderCardProps): JSX.Element;
|
|
65
|
-
/**
|
|
66
|
-
* Neon Glow Card
|
|
67
|
-
*/
|
|
68
|
-
export interface NeonCardProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
69
|
-
/** Neon color (CSS color value) */
|
|
70
|
-
color?: string;
|
|
71
|
-
/** Pulse animation */
|
|
72
|
-
pulse?: boolean;
|
|
73
|
-
}
|
|
74
|
-
export declare function NeonCard(props: NeonCardProps): JSX.Element;
|
|
75
|
-
/**
|
|
76
|
-
* Morphing Card with blob-like background
|
|
77
|
-
*/
|
|
78
|
-
export type MorphCardProps = JSX.HTMLAttributes<HTMLDivElement>;
|
|
79
|
-
export declare function MorphCard(props: MorphCardProps): JSX.Element;
|
|
@@ -1,272 +1,99 @@
|
|
|
1
|
-
import { spread as
|
|
2
|
-
import { splitProps as
|
|
3
|
-
import { cn as
|
|
4
|
-
var
|
|
5
|
-
function
|
|
6
|
-
const [e, a] =
|
|
7
|
-
let c, s = null, _ = 0, y = 0;
|
|
8
|
-
const u = () => {
|
|
9
|
-
if (s = null, !c || !e.enableTilt && r() !== "spotlight") return;
|
|
10
|
-
const t = c.getBoundingClientRect(), o = _ - t.left, v = y - t.top;
|
|
11
|
-
if (e.enableTilt) {
|
|
12
|
-
const Y = t.width / 2, I = t.height / 2, R = (v - I) / 10, H = (Y - o) / 10;
|
|
13
|
-
g({
|
|
14
|
-
transform: `perspective(1000px) rotateX(${R}deg) rotateY(${H}deg) scale3d(1.02, 1.02, 1.02)`
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
r() === "spotlight" && X({
|
|
18
|
-
x: o,
|
|
19
|
-
y: v
|
|
20
|
-
});
|
|
21
|
-
}, M = (t) => {
|
|
22
|
-
if (c && !(!e.enableTilt && r() !== "spotlight") && (_ = t.clientX, y = t.clientY, s === null)) {
|
|
23
|
-
if (typeof requestAnimationFrame > "u") {
|
|
24
|
-
u();
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
s = requestAnimationFrame(u);
|
|
28
|
-
}
|
|
29
|
-
}, S = () => {
|
|
30
|
-
s !== null && typeof cancelAnimationFrame < "u" && (cancelAnimationFrame(s), s = null), e.enableTilt && g({
|
|
31
|
-
transform: "perspective(1000px) rotateX(0deg) rotateY(0deg) scale3d(1, 1, 1)"
|
|
32
|
-
});
|
|
33
|
-
}, [C, X] = F({
|
|
34
|
-
x: 0,
|
|
35
|
-
y: 0
|
|
36
|
-
});
|
|
37
|
-
B(() => {
|
|
38
|
-
s !== null && typeof cancelAnimationFrame < "u" && (cancelAnimationFrame(s), s = null);
|
|
39
|
-
});
|
|
40
|
-
const k = "rounded-[10px] duration-180 ease-out", P = () => e.enableTilt || r() === "hover-lift" ? "transition-[color,background-color,border-color,box-shadow,transform]" : "transition-[color,background-color,border-color]", j = {
|
|
41
|
-
default: "bg-card border border-border shadow-sm hover:shadow-sm",
|
|
42
|
-
"hover-lift": "bg-card border border-border shadow-sm hover:shadow-md hover:-translate-y-0.5",
|
|
43
|
-
"gradient-border": "relative bg-card overflow-hidden",
|
|
44
|
-
glass: "backdrop-blur-xl bg-card/30 border border-border/50 shadow-lg",
|
|
45
|
-
spotlight: "relative bg-card border border-border overflow-hidden",
|
|
46
|
-
shimmer: "relative bg-card border border-border overflow-hidden",
|
|
47
|
-
glow: "bg-card border border-border shadow-sm"
|
|
48
|
-
}, n = () => {
|
|
49
|
-
if (r() !== "gradient-border") return null;
|
|
50
|
-
const t = e.gradientColors ?? "from-primary via-accent to-secondary";
|
|
51
|
-
return [(() => {
|
|
52
|
-
var o = D();
|
|
53
|
-
return A(() => L(o, p("absolute inset-0 bg-gradient-to-r opacity-75", t, "animate-[gradient-rotate_3s_linear_infinite]"))), o;
|
|
54
|
-
})(), G()];
|
|
55
|
-
}, x = () => r() !== "spotlight" ? null : (() => {
|
|
56
|
-
var t = N();
|
|
57
|
-
return A((o) => z(t, "background", `radial-gradient(
|
|
58
|
-
400px circle at ${C().x}px ${C().y}px,
|
|
59
|
-
color-mix(in srgb, var(--primary) 18%, transparent),
|
|
60
|
-
transparent 40%
|
|
61
|
-
)`)), t;
|
|
62
|
-
})(), $ = () => r() !== "shimmer" ? null : Z(), w = () => {
|
|
63
|
-
if (r() !== "glow") return {};
|
|
64
|
-
const t = e.glowColor ?? "var(--glow)";
|
|
65
|
-
return {
|
|
66
|
-
"box-shadow": [`0 0 0 1px color-mix(in srgb, ${t} 55%, transparent)`, `0 0 16px -4px color-mix(in srgb, ${t} 50%, transparent)`, `0 0 28px -8px color-mix(in srgb, ${t} 28%, transparent)`].join(", ")
|
|
67
|
-
};
|
|
68
|
-
};
|
|
1
|
+
import { spread as l, mergeProps as n, insert as s, template as u } from "solid-js/web";
|
|
2
|
+
import { splitProps as o } from "solid-js";
|
|
3
|
+
import { cn as c } from "../../utils/cn.js";
|
|
4
|
+
var i = /* @__PURE__ */ u("<div>"), f = /* @__PURE__ */ u("<h3>"), p = /* @__PURE__ */ u("<p>");
|
|
5
|
+
function b(t) {
|
|
6
|
+
const [e, a] = o(t, ["variant", "class", "children"]), r = () => e.variant ?? "default";
|
|
69
7
|
return (() => {
|
|
70
|
-
var
|
|
71
|
-
|
|
72
|
-
var v = c;
|
|
73
|
-
return typeof v == "function" ? q(v, t) : c = t, m(t, b({
|
|
74
|
-
get "data-floe-card-variant"() {
|
|
75
|
-
return E(() => !!e.enableTilt)() ? "tilt" : r();
|
|
76
|
-
},
|
|
8
|
+
var d = i();
|
|
9
|
+
return l(d, n({
|
|
77
10
|
get "data-floe-surface"() {
|
|
78
|
-
return r() === "
|
|
11
|
+
return r() === "well" ? "inset" : void 0;
|
|
79
12
|
},
|
|
80
|
-
get
|
|
81
|
-
return
|
|
13
|
+
get "data-floe-card-variant"() {
|
|
14
|
+
return r();
|
|
15
|
+
},
|
|
16
|
+
get "data-floe-interactive"() {
|
|
17
|
+
return r() === "interactive" ? "lift" : void 0;
|
|
82
18
|
},
|
|
83
|
-
get style() {
|
|
84
|
-
return {
|
|
85
|
-
...typeof e.style == "object" ? e.style : {},
|
|
86
|
-
...d(),
|
|
87
|
-
...w(),
|
|
88
|
-
"transform-style": "preserve-3d"
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
}, a), !1, !0), i(t, n, o), i(t, x, o), i(t, $, o), i(o, () => e.children), A(() => L(o, p("relative z-10", r() === "gradient-border" && "relative"))), t;
|
|
92
|
-
})();
|
|
93
|
-
}
|
|
94
|
-
function le(l) {
|
|
95
|
-
const [e, a] = h(l, ["class", "children"]);
|
|
96
|
-
return (() => {
|
|
97
|
-
var r = T();
|
|
98
|
-
return m(r, b({
|
|
99
|
-
get class() {
|
|
100
|
-
return p("flex flex-col space-y-1.5 p-4", e.class);
|
|
101
|
-
}
|
|
102
|
-
}, a), !1, !0), i(r, () => e.children), r;
|
|
103
|
-
})();
|
|
104
|
-
}
|
|
105
|
-
function ae(l) {
|
|
106
|
-
const [e, a] = h(l, ["class", "children"]);
|
|
107
|
-
return (() => {
|
|
108
|
-
var r = K();
|
|
109
|
-
return m(r, b({
|
|
110
|
-
get class() {
|
|
111
|
-
return p("text-sm font-semibold leading-none tracking-tight", e.class);
|
|
112
|
-
}
|
|
113
|
-
}, a), !1, !0), i(r, () => e.children), r;
|
|
114
|
-
})();
|
|
115
|
-
}
|
|
116
|
-
function se(l) {
|
|
117
|
-
const [e, a] = h(l, ["class", "children"]);
|
|
118
|
-
return (() => {
|
|
119
|
-
var r = O();
|
|
120
|
-
return m(r, b({
|
|
121
19
|
get class() {
|
|
122
|
-
return
|
|
20
|
+
return c(
|
|
21
|
+
"rounded-card",
|
|
22
|
+
"bg-card text-card-foreground",
|
|
23
|
+
"duration-[var(--floe-duration-base)] ease-[var(--floe-ease-out)]",
|
|
24
|
+
r() === "default" && "border border-transparent",
|
|
25
|
+
r() === "well" && "bg-[var(--floe-well)] border border-transparent",
|
|
26
|
+
/* The rise and its shadow live in the interaction contract
|
|
27
|
+
* (`data-floe-interactive='lift'` in language.css), so every clickable
|
|
28
|
+
* plane in the app travels the same pixel through the same token. The
|
|
29
|
+
* class string keeps only what is specific to this card. */
|
|
30
|
+
r() === "interactive" && "border border-transparent cursor-pointer",
|
|
31
|
+
e.class
|
|
32
|
+
);
|
|
123
33
|
}
|
|
124
|
-
}, a), !1, !0),
|
|
34
|
+
}, a), !1, !0), s(d, () => e.children), d;
|
|
125
35
|
})();
|
|
126
36
|
}
|
|
127
|
-
function
|
|
128
|
-
const [e, a] =
|
|
37
|
+
function m(t) {
|
|
38
|
+
const [e, a] = o(t, ["class", "children"]);
|
|
129
39
|
return (() => {
|
|
130
|
-
var r =
|
|
131
|
-
return
|
|
40
|
+
var r = i();
|
|
41
|
+
return l(r, n({
|
|
132
42
|
get class() {
|
|
133
|
-
return
|
|
43
|
+
return c("flex flex-col gap-1 p-[var(--floe-pad-card)] pb-0", e.class);
|
|
134
44
|
}
|
|
135
|
-
}, a), !1, !0),
|
|
45
|
+
}, a), !1, !0), s(r, () => e.children), r;
|
|
136
46
|
})();
|
|
137
47
|
}
|
|
138
|
-
function
|
|
139
|
-
const [e, a] =
|
|
48
|
+
function _(t) {
|
|
49
|
+
const [e, a] = o(t, ["class", "children"]);
|
|
140
50
|
return (() => {
|
|
141
|
-
var r =
|
|
142
|
-
return
|
|
143
|
-
get class() {
|
|
144
|
-
return p("flex items-center p-4 pt-0", e.class);
|
|
145
|
-
}
|
|
146
|
-
}, a), !1, !0), i(r, () => e.children), r;
|
|
147
|
-
})();
|
|
148
|
-
}
|
|
149
|
-
function ce(l) {
|
|
150
|
-
const [e, a] = h(l, ["intensity", "shine", "borderGlow", "class", "children", "style"]), [r, d] = F(""), [g, c] = F({
|
|
151
|
-
x: 50,
|
|
152
|
-
y: 50
|
|
153
|
-
}), [s, _] = F(!1);
|
|
154
|
-
let y, u = null, M = 0, S = 0;
|
|
155
|
-
const C = () => e.intensity ?? 10, X = () => {
|
|
156
|
-
if (u = null, !y) return;
|
|
157
|
-
const n = y.getBoundingClientRect(), x = M - n.left, $ = S - n.top, w = n.width / 2, t = n.height / 2, o = ($ - t) / t * C(), v = (w - x) / w * C();
|
|
158
|
-
d(`perspective(1000px) rotateX(${-o}deg) rotateY(${v}deg)`), e.shine && c({
|
|
159
|
-
x: x / n.width * 100,
|
|
160
|
-
y: $ / n.height * 100
|
|
161
|
-
});
|
|
162
|
-
}, k = (n) => {
|
|
163
|
-
if (y && (M = n.clientX, S = n.clientY, u === null)) {
|
|
164
|
-
if (typeof requestAnimationFrame > "u") {
|
|
165
|
-
X();
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
u = requestAnimationFrame(X);
|
|
169
|
-
}
|
|
170
|
-
}, P = () => _(!0), j = () => {
|
|
171
|
-
u !== null && typeof cancelAnimationFrame < "u" && (cancelAnimationFrame(u), u = null), _(!1), d("perspective(1000px) rotateX(0deg) rotateY(0deg)");
|
|
172
|
-
};
|
|
173
|
-
return B(() => {
|
|
174
|
-
u !== null && typeof cancelAnimationFrame < "u" && (cancelAnimationFrame(u), u = null);
|
|
175
|
-
}), (() => {
|
|
176
|
-
var n = Q(), x = n.firstChild;
|
|
177
|
-
n.addEventListener("mouseleave", j), n.addEventListener("mouseenter", P), n.$$mousemove = k;
|
|
178
|
-
var $ = y;
|
|
179
|
-
return typeof $ == "function" ? q($, n) : y = n, m(n, b({
|
|
51
|
+
var r = f();
|
|
52
|
+
return l(r, n({
|
|
180
53
|
get class() {
|
|
181
|
-
return
|
|
182
|
-
},
|
|
183
|
-
get style() {
|
|
184
|
-
return {
|
|
185
|
-
...typeof e.style == "object" ? e.style : {},
|
|
186
|
-
transform: r(),
|
|
187
|
-
"transform-style": "preserve-3d"
|
|
188
|
-
};
|
|
54
|
+
return c("text-[length:var(--floe-type-body)] font-semibold leading-[var(--floe-line-heading)] tracking-[var(--floe-tracking-tight)]", e.class);
|
|
189
55
|
}
|
|
190
|
-
}, a), !1, !0),
|
|
191
|
-
var w = E(() => !!e.shine);
|
|
192
|
-
return () => w() && (() => {
|
|
193
|
-
var t = U();
|
|
194
|
-
return A((o) => {
|
|
195
|
-
var v = !!s(), Y = `radial-gradient(
|
|
196
|
-
circle at ${g().x}% ${g().y}%,
|
|
197
|
-
color-mix(in srgb, var(--primary) 18%, transparent) 0%,
|
|
198
|
-
transparent 50%
|
|
199
|
-
)`;
|
|
200
|
-
return v !== o.e && t.classList.toggle("opacity-100", o.e = v), Y !== o.t && z(t, "background", o.t = Y), o;
|
|
201
|
-
}, {
|
|
202
|
-
e: void 0,
|
|
203
|
-
t: void 0
|
|
204
|
-
}), t;
|
|
205
|
-
})();
|
|
206
|
-
})(), x), i(x, () => e.children), n;
|
|
56
|
+
}, a), !1, !0), s(r, () => e.children), r;
|
|
207
57
|
})();
|
|
208
58
|
}
|
|
209
|
-
function
|
|
210
|
-
const [e, a] =
|
|
59
|
+
function $(t) {
|
|
60
|
+
const [e, a] = o(t, ["class", "children"]);
|
|
211
61
|
return (() => {
|
|
212
|
-
var
|
|
213
|
-
return
|
|
62
|
+
var r = p();
|
|
63
|
+
return l(r, n({
|
|
214
64
|
get class() {
|
|
215
|
-
return
|
|
216
|
-
},
|
|
217
|
-
get style() {
|
|
218
|
-
return {
|
|
219
|
-
...typeof e.style == "object" ? e.style : {},
|
|
220
|
-
padding: `${d()}px`
|
|
221
|
-
};
|
|
65
|
+
return c("text-[length:var(--floe-type-supporting)] leading-[var(--floe-line-body)] text-[var(--floe-ink-soft)]", e.class);
|
|
222
66
|
}
|
|
223
|
-
}, a), !1, !0),
|
|
67
|
+
}, a), !1, !0), s(r, () => e.children), r;
|
|
224
68
|
})();
|
|
225
69
|
}
|
|
226
|
-
function
|
|
227
|
-
const [e, a] =
|
|
70
|
+
function x(t) {
|
|
71
|
+
const [e, a] = o(t, ["class", "children"]);
|
|
228
72
|
return (() => {
|
|
229
|
-
var
|
|
230
|
-
return
|
|
73
|
+
var r = i();
|
|
74
|
+
return l(r, n({
|
|
231
75
|
get class() {
|
|
232
|
-
return
|
|
233
|
-
},
|
|
234
|
-
get style() {
|
|
235
|
-
return {
|
|
236
|
-
...typeof e.style == "object" ? e.style : {},
|
|
237
|
-
"border-color": r(),
|
|
238
|
-
"box-shadow": [`0 0 4px color-mix(in srgb, ${r()} 80%, transparent)`, `0 0 14px color-mix(in srgb, ${r()} 50%, transparent)`, `0 0 28px color-mix(in srgb, ${r()} 30%, transparent)`, `inset 0 0 14px color-mix(in srgb, ${r()} 10%, transparent)`].join(", ")
|
|
239
|
-
};
|
|
76
|
+
return c("p-[var(--floe-pad-card)]", e.class);
|
|
240
77
|
}
|
|
241
|
-
}, a), !1, !0),
|
|
78
|
+
}, a), !1, !0), s(r, () => e.children), r;
|
|
242
79
|
})();
|
|
243
80
|
}
|
|
244
|
-
function
|
|
245
|
-
const [e, a] =
|
|
81
|
+
function C(t) {
|
|
82
|
+
const [e, a] = o(t, ["class", "children"]);
|
|
246
83
|
return (() => {
|
|
247
|
-
var r =
|
|
248
|
-
|
|
249
|
-
var c = d.nextSibling;
|
|
250
|
-
return m(r, b({
|
|
84
|
+
var r = i();
|
|
85
|
+
return l(r, n({
|
|
251
86
|
get class() {
|
|
252
|
-
return
|
|
253
|
-
},
|
|
254
|
-
get style() {
|
|
255
|
-
return e.style;
|
|
87
|
+
return c("flex items-center gap-[var(--floe-gap-control)] p-[var(--floe-pad-card)] pt-0", e.class);
|
|
256
88
|
}
|
|
257
|
-
}, a), !1, !0),
|
|
89
|
+
}, a), !1, !0), s(r, () => e.children), r;
|
|
258
90
|
})();
|
|
259
91
|
}
|
|
260
|
-
W(["mousemove"]);
|
|
261
92
|
export {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
ae as CardTitle,
|
|
269
|
-
ce as Interactive3DCard,
|
|
270
|
-
fe as MorphCard,
|
|
271
|
-
pe as NeonCard
|
|
93
|
+
b as Card,
|
|
94
|
+
x as CardContent,
|
|
95
|
+
$ as CardDescription,
|
|
96
|
+
C as CardFooter,
|
|
97
|
+
m as CardHeader,
|
|
98
|
+
_ as CardTitle
|
|
272
99
|
};
|