@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.
Files changed (122) hide show
  1. package/dist/app/FloeRegistryContributions.js +0 -3
  2. package/dist/components/chat/blocks/BlockRenderer.js +1 -1
  3. package/dist/components/chat/blocks/CodeDiffBlock.js +56 -56
  4. package/dist/components/chat/blocks/ImageBlock.js +1 -1
  5. package/dist/components/chat/blocks/ToolCallBlock.js +57 -57
  6. package/dist/components/chat/status/ConnectionStatus.js +10 -10
  7. package/dist/components/deck/DeckCell.js +25 -25
  8. package/dist/components/deck/DeckContextMenu.js +20 -20
  9. package/dist/components/deck/DeckGrid.js +1 -1
  10. package/dist/components/deck/DeckTopBar.js +42 -42
  11. package/dist/components/deck/DropZonePreview.js +6 -6
  12. package/dist/components/deck/LayoutSelector.js +53 -53
  13. package/dist/components/deck/WidgetFrame.js +28 -28
  14. package/dist/components/deck/WidgetPalette.js +31 -31
  15. package/dist/components/deck/WidgetTypeSwitcher.js +31 -31
  16. package/dist/components/file-browser/Breadcrumb.js +27 -27
  17. package/dist/components/file-browser/DirectoryTree.js +15 -15
  18. package/dist/components/file-browser/DragPreview.js +58 -58
  19. package/dist/components/file-browser/FileBrowser.js +17 -17
  20. package/dist/components/file-browser/FileBrowserStatusBar.js +18 -18
  21. package/dist/components/file-browser/FileBrowserToolbar.js +27 -27
  22. package/dist/components/file-browser/FileContextMenu.js +47 -47
  23. package/dist/components/file-browser/FileGridView.js +53 -51
  24. package/dist/components/file-browser/FileItemDecorations.js +30 -27
  25. package/dist/components/file-browser/FileListView.js +114 -114
  26. package/dist/components/icons/ActivityRailIcons.d.ts +30 -0
  27. package/dist/components/icons/ActivityRailIcons.js +68 -0
  28. package/dist/components/icons/index.d.ts +1 -0
  29. package/dist/components/icons/index.js +1357 -1357
  30. package/dist/components/launchpad/Launchpad.js +14 -14
  31. package/dist/components/launchpad/LaunchpadGrid.js +7 -7
  32. package/dist/components/launchpad/LaunchpadItem.js +11 -11
  33. package/dist/components/launchpad/LaunchpadPagination.js +16 -16
  34. package/dist/components/launchpad/LaunchpadSearch.js +9 -9
  35. package/dist/components/layout/ActivityBar.js +61 -63
  36. package/dist/components/layout/DisplayModeSwitcher.d.ts +10 -0
  37. package/dist/components/layout/DisplayModeSwitcher.js +102 -33
  38. package/dist/components/layout/MobileNavigationPanel.js +36 -36
  39. package/dist/components/layout/MobileTabBar.js +39 -39
  40. package/dist/components/layout/Panel.js +16 -16
  41. package/dist/components/layout/ResizeHandle.js +19 -19
  42. package/dist/components/layout/Shell.d.ts +0 -6
  43. package/dist/components/layout/Shell.js +208 -254
  44. package/dist/components/layout/Sidebar.js +37 -36
  45. package/dist/components/layout/SidebarPane.js +19 -19
  46. package/dist/components/layout/ThemeToggle.d.ts +19 -0
  47. package/dist/components/layout/ThemeToggle.js +39 -0
  48. package/dist/components/layout/TopBar.js +16 -16
  49. package/dist/components/layout/TopBarIconButton.js +15 -15
  50. package/dist/components/layout/index.d.ts +1 -1
  51. package/dist/components/loading/LoadingOverlay.js +9 -9
  52. package/dist/components/loading/Skeleton.js +11 -11
  53. package/dist/components/ui/Button.js +44 -36
  54. package/dist/components/ui/Card.d.ts +11 -62
  55. package/dist/components/ui/Card.js +64 -237
  56. package/dist/components/ui/Checkbox.js +79 -79
  57. package/dist/components/ui/CommandPalette.js +56 -55
  58. package/dist/components/ui/Dialog.js +91 -93
  59. package/dist/components/ui/DirectoryInput.js +22 -22
  60. package/dist/components/ui/DirectoryPicker.js +8 -8
  61. package/dist/components/ui/Dropdown.js +89 -87
  62. package/dist/components/ui/FeedbackIndicator.js +57 -57
  63. package/dist/components/ui/FileOpenPicker.js +37 -37
  64. package/dist/components/ui/FileSavePicker.js +41 -41
  65. package/dist/components/ui/FloatingWindow.js +213 -205
  66. package/dist/components/ui/Form.js +76 -76
  67. package/dist/components/ui/HighlightBlock.js +14 -14
  68. package/dist/components/ui/Input.js +106 -109
  69. package/dist/components/ui/Pagination.js +86 -86
  70. package/dist/components/ui/Popover.d.ts +33 -0
  71. package/dist/components/ui/Popover.js +133 -0
  72. package/dist/components/ui/ProcessingIndicator.js +344 -345
  73. package/dist/components/ui/Progress.js +94 -97
  74. package/dist/components/ui/QuoteBlock.js +25 -25
  75. package/dist/components/ui/Radio.js +91 -91
  76. package/dist/components/ui/SegmentedControl.js +24 -24
  77. package/dist/components/ui/Stepper.js +68 -60
  78. package/dist/components/ui/Switch.js +25 -25
  79. package/dist/components/ui/Tabs.js +188 -163
  80. package/dist/components/ui/Tag.js +12 -9
  81. package/dist/components/ui/Tooltip.js +30 -30
  82. package/dist/components/ui/floatingPresence.d.ts +7 -0
  83. package/dist/components/ui/floatingPresence.js +80 -39
  84. package/dist/components/ui/index.d.ts +2 -1
  85. package/dist/components/ui/picker/DirectoryFavorites.js +27 -27
  86. package/dist/components/ui/picker/PickerBase.js +107 -107
  87. package/dist/context/ComponentRegistry.d.ts +0 -8
  88. package/dist/context/ComponentRegistry.js +61 -67
  89. package/dist/context/FloeConfigContext.d.ts +0 -6
  90. package/dist/context/FloeConfigContext.js +9 -15
  91. package/dist/context/NotificationContext.js +4 -4
  92. package/dist/context/ThemeContext.js +71 -70
  93. package/dist/context/index.d.ts +1 -1
  94. package/dist/display-mode.css +2 -45
  95. package/dist/floe.css +205 -43
  96. package/dist/full.js +701 -695
  97. package/dist/icons.js +112 -102
  98. package/dist/language.css +320 -0
  99. package/dist/layout.js +33 -35
  100. package/dist/primitives.css +23 -17
  101. package/dist/standalone.css +1 -0
  102. package/dist/styles/themes/classicSemanticTokens.d.ts +122 -122
  103. package/dist/styles/themes/classicSemanticTokens.js +140 -138
  104. package/dist/styles/themes/index.d.ts +3 -1
  105. package/dist/styles/themes/index.js +10 -10
  106. package/dist/styles/themes/presets.d.ts +2 -2
  107. package/dist/styles/themes/presets.js +34 -34
  108. package/dist/styles/tokens.d.ts +152 -68
  109. package/dist/styles/tokens.js +87 -49
  110. package/dist/styles.css +1 -1
  111. package/dist/surface.css +214 -117
  112. package/dist/themes/dark.css +64 -64
  113. package/dist/themes/light.css +64 -64
  114. package/dist/ui.css +171 -255
  115. package/dist/ui.js +176 -178
  116. package/dist/utils/hotInteraction.d.ts +7 -0
  117. package/dist/utils/hotInteraction.js +12 -12
  118. package/dist/widgets/TerminalWidget.js +28 -28
  119. package/dist/workbench-composition.css +15 -15
  120. package/package.json +1 -1
  121. package/dist/components/layout/BottomBar.d.ts +0 -29
  122. package/dist/components/layout/BottomBar.js +0 -70
@@ -1,23 +1,23 @@
1
- import { spread as u, mergeProps as g, insert as n, createComponent as t, memo as m, Dynamic as h, effect as b, className as f, template as d } from "solid-js/web";
2
- import { splitProps as p, Show as i } from "solid-js";
3
- import { cn as s } from "../../utils/cn.js";
4
- import { Loader2 as v } from "../icons/index.js";
5
- var x = /* @__PURE__ */ d("<span aria-hidden=true>"), y = /* @__PURE__ */ d("<button type=button data-floe-control=button data-floe-surface-part=action>");
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 shadow-sm hover:bg-primary/90 active:bg-primary/80",
8
- primary: "bg-primary text-primary-foreground shadow-sm hover:bg-primary/90 active:bg-primary/80",
9
- secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80 active:bg-secondary/70",
10
- outline: "border border-border bg-background shadow-sm hover:bg-accent hover:text-accent-foreground active:bg-accent/80",
11
- ghost: "hover:bg-accent hover:text-accent-foreground active:bg-accent/80",
12
- "ghost-destructive": "bg-transparent text-muted-foreground hover:bg-error hover:text-error-foreground active:bg-error/80",
13
- destructive: "bg-error text-error-foreground shadow-sm hover:bg-error/90 active:bg-error/80"
14
- }, z = {
15
- xs: "h-6 px-2 text-[11px] rounded",
16
- sm: "h-7 px-2.5 text-xs rounded",
17
- md: "h-8 px-3 text-xs rounded-md",
18
- lg: "h-9 px-4 text-sm rounded-md",
19
- icon: "h-8 w-8 rounded-md"
20
- }, S = {
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 [e, c] = p(a, ["variant", "size", "loading", "icon", "class", "children", "disabled"]), l = () => S[e.size ?? "md"];
28
+ const [r, v] = b(a, ["variant", "size", "loading", "icon", "class", "children", "disabled"]), s = () => k[r.size ?? "md"];
29
29
  return (() => {
30
- var r = y();
31
- return u(r, g({
30
+ var o = y();
31
+ return h(o, m({
32
32
  get "data-floe-surface"() {
33
- return e.variant === "ghost" || e.variant === "ghost-destructive" ? void 0 : "raised";
33
+ return r.variant === "ghost" || r.variant === "ghost-destructive" || r.variant === "outline" ? void 0 : "flat";
34
34
  },
35
35
  get class() {
36
- return s("inline-flex min-w-max items-center justify-center gap-1.5 whitespace-nowrap font-medium cursor-pointer", "transition-[color,background-color,border-color] duration-120", "focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", "disabled:pointer-events-none disabled:opacity-50 disabled:cursor-not-allowed", w[e.variant ?? "default"], z[e.size ?? "md"], e.class);
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 e.disabled || e.loading;
39
+ return r.disabled || r.loading;
40
40
  },
41
41
  get "aria-busy"() {
42
- return e.loading || void 0;
42
+ return r.loading || void 0;
43
43
  }
44
- }, c), !1, !0), n(r, t(i, {
44
+ }, v), !1, !0), n(o, t(l, {
45
45
  get when() {
46
- return e.icon || "loading" in a;
46
+ return r.icon || "loading" in a;
47
47
  },
48
48
  get children() {
49
- var o = x();
50
- return n(o, t(i, {
49
+ var e = f();
50
+ return n(e, t(l, {
51
51
  get when() {
52
- return e.loading;
52
+ return r.loading;
53
53
  },
54
54
  get fallback() {
55
- return m(() => !!e.icon)() && t(h, {
55
+ return c(() => !!r.icon)() && t(p, {
56
56
  get component() {
57
- return e.icon;
57
+ return r.icon;
58
58
  },
59
59
  class: "h-full w-full"
60
60
  });
61
61
  },
62
62
  get children() {
63
- return t(v, {
63
+ return t(x, {
64
64
  class: "h-full w-full animate-spin"
65
65
  });
66
66
  }
67
- })), b(() => f(o, s("inline-flex shrink-0 items-center justify-center", l()))), o;
67
+ })), d(() => g(e, i("inline-flex shrink-0 items-center justify-center", s()))), e;
68
68
  }
69
- }), null), n(r, () => e.children, null), r;
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' | 'hover-lift' | 'gradient-border' | 'glass' | 'spotlight' | 'shimmer' | 'glow';
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
- * Base Card component
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 m, mergeProps as b, insert as i, effect as A, setStyleProperty as z, memo as E, className as L, template as f, use as q, delegateEvents as W } from "solid-js/web";
2
- import { splitProps as h, createSignal as F, onCleanup as B } from "solid-js";
3
- import { cn as p } from "../../utils/cn.js";
4
- var D = /* @__PURE__ */ f('<div style="background-size:200% 200%;animation:gradient-shift 3s ease infinite">'), G = /* @__PURE__ */ f('<div class="absolute inset-[1px] rounded-[7px] bg-card">'), N = /* @__PURE__ */ f('<div class="pointer-events-none absolute inset-0 opacity-0 transition-opacity duration-300 group-hover:opacity-100">'), Z = /* @__PURE__ */ f('<div class="absolute inset-0 -translate-x-full animate-[shimmer_2s_infinite]"style="background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--primary) 12%, transparent), transparent)">'), J = /* @__PURE__ */ f("<div><div>"), T = /* @__PURE__ */ f("<div>"), K = /* @__PURE__ */ f("<h3>"), O = /* @__PURE__ */ f("<p>"), Q = /* @__PURE__ */ f('<div><div class="relative z-10"style=transform:translateZ(20px)>'), U = /* @__PURE__ */ f('<div class="pointer-events-none absolute inset-0 z-20 opacity-0 transition-opacity duration-300">'), V = /* @__PURE__ */ f('<div><div class="absolute inset-0"style="background:conic-gradient(from 0deg, var(--primary), var(--accent), var(--secondary), var(--primary))"></div><div class="relative rounded-[10px] bg-card h-full">'), ee = /* @__PURE__ */ f('<div><div class="absolute inset-0 -z-10 overflow-hidden"><div class="absolute -top-1/2 -left-1/2 w-full h-full rounded-full bg-primary/20"style="animation:morph 8s ease-in-out infinite;filter:blur(40px)"></div><div class="absolute -bottom-1/2 -right-1/2 w-full h-full rounded-full bg-accent/20"style="animation:morph 8s ease-in-out infinite reverse;filter:blur(40px)"></div></div><div class="relative z-10">');
5
- function oe(l) {
6
- const [e, a] = h(l, ["variant", "enableTilt", "gradientColors", "glowColor", "class", "children", "style"]), r = () => e.variant ?? "default", [d, g] = F({});
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 t = J(), o = t.firstChild;
71
- t.addEventListener("mouseleave", S), t.$$mousemove = M;
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() === "default" && !e.enableTilt ? "raised" : void 0;
11
+ return r() === "well" ? "inset" : void 0;
79
12
  },
80
- get class() {
81
- return p(k, P(), j[r()], r() === "spotlight" && "group", e.class);
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 p("text-xs text-muted-foreground", e.class);
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), i(r, () => e.children), r;
34
+ }, a), !1, !0), s(d, () => e.children), d;
125
35
  })();
126
36
  }
127
- function ie(l) {
128
- const [e, a] = h(l, ["class", "children"]);
37
+ function m(t) {
38
+ const [e, a] = o(t, ["class", "children"]);
129
39
  return (() => {
130
- var r = T();
131
- return m(r, b({
40
+ var r = i();
41
+ return l(r, n({
132
42
  get class() {
133
- return p("p-4 pt-0", e.class);
43
+ return c("flex flex-col gap-1 p-[var(--floe-pad-card)] pb-0", e.class);
134
44
  }
135
- }, a), !1, !0), i(r, () => e.children), r;
45
+ }, a), !1, !0), s(r, () => e.children), r;
136
46
  })();
137
47
  }
138
- function de(l) {
139
- const [e, a] = h(l, ["class", "children"]);
48
+ function _(t) {
49
+ const [e, a] = o(t, ["class", "children"]);
140
50
  return (() => {
141
- var r = T();
142
- return m(r, b({
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 p("relative rounded-xl bg-card border border-border overflow-hidden", "transition-all duration-200 ease-out", e.borderGlow && s() && "shadow-[0_0_18px_-6px_var(--glow)]", e.class);
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), i(n, (() => {
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 ue(l) {
210
- const [e, a] = h(l, ["duration", "borderWidth", "colors", "class", "children", "style"]), r = () => e.duration ?? 3, d = () => e.borderWidth ?? 2;
59
+ function $(t) {
60
+ const [e, a] = o(t, ["class", "children"]);
211
61
  return (() => {
212
- var g = V(), c = g.firstChild, s = c.nextSibling;
213
- return m(g, b({
62
+ var r = p();
63
+ return l(r, n({
214
64
  get class() {
215
- return p("relative rounded-xl p-[2px] overflow-hidden", e.class);
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), i(s, () => e.children), A((_) => z(c, "animation", `spin ${r()}s linear infinite`)), g;
67
+ }, a), !1, !0), s(r, () => e.children), r;
224
68
  })();
225
69
  }
226
- function pe(l) {
227
- const [e, a] = h(l, ["color", "pulse", "class", "children", "style"]), r = () => e.color ?? "var(--glow)";
70
+ function x(t) {
71
+ const [e, a] = o(t, ["class", "children"]);
228
72
  return (() => {
229
- var d = T();
230
- return m(d, b({
73
+ var r = i();
74
+ return l(r, n({
231
75
  get class() {
232
- return p("relative rounded-xl bg-card border-2 transition-shadow duration-300", e.pulse && "animate-pulse", e.class);
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), i(d, () => e.children), d;
78
+ }, a), !1, !0), s(r, () => e.children), r;
242
79
  })();
243
80
  }
244
- function fe(l) {
245
- const [e, a] = h(l, ["class", "children", "style"]);
81
+ function C(t) {
82
+ const [e, a] = o(t, ["class", "children"]);
246
83
  return (() => {
247
- var r = ee(), d = r.firstChild, g = d.firstChild;
248
- g.nextSibling;
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 p("relative rounded-2xl bg-card/80 backdrop-blur-sm border border-border overflow-hidden", e.class);
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), i(c, () => e.children), r;
89
+ }, a), !1, !0), s(r, () => e.children), r;
258
90
  })();
259
91
  }
260
- W(["mousemove"]);
261
92
  export {
262
- ue as AnimatedBorderCard,
263
- oe as Card,
264
- ie as CardContent,
265
- se as CardDescription,
266
- de as CardFooter,
267
- le as CardHeader,
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
  };