@glinui/ui 0.1.0

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 (244) hide show
  1. package/dist/components/accordion.d.ts +42 -0
  2. package/dist/components/accordion.d.ts.map +1 -0
  3. package/dist/components/accordion.js +85 -0
  4. package/dist/components/alert-dialog.d.ts +30 -0
  5. package/dist/components/alert-dialog.d.ts.map +1 -0
  6. package/dist/components/alert-dialog.js +53 -0
  7. package/dist/components/alert.d.ts +15 -0
  8. package/dist/components/alert.d.ts.map +1 -0
  9. package/dist/components/alert.js +39 -0
  10. package/dist/components/animated-gradient.d.ts +11 -0
  11. package/dist/components/animated-gradient.d.ts.map +1 -0
  12. package/dist/components/animated-gradient.js +23 -0
  13. package/dist/components/aurora-background.d.ts +15 -0
  14. package/dist/components/aurora-background.d.ts.map +1 -0
  15. package/dist/components/aurora-background.js +26 -0
  16. package/dist/components/avatar.d.ts +54 -0
  17. package/dist/components/avatar.d.ts.map +1 -0
  18. package/dist/components/avatar.js +92 -0
  19. package/dist/components/badge.d.ts +13 -0
  20. package/dist/components/badge.d.ts.map +1 -0
  21. package/dist/components/badge.js +32 -0
  22. package/dist/components/blur-fade.d.ts +17 -0
  23. package/dist/components/blur-fade.d.ts.map +1 -0
  24. package/dist/components/blur-fade.js +48 -0
  25. package/dist/components/blur-spotlight.d.ts +13 -0
  26. package/dist/components/blur-spotlight.d.ts.map +1 -0
  27. package/dist/components/blur-spotlight.js +58 -0
  28. package/dist/components/border-beam.d.ts +11 -0
  29. package/dist/components/border-beam.d.ts.map +1 -0
  30. package/dist/components/border-beam.js +14 -0
  31. package/dist/components/button.d.ts +17 -0
  32. package/dist/components/button.d.ts.map +1 -0
  33. package/dist/components/button.js +33 -0
  34. package/dist/components/card.d.ts +39 -0
  35. package/dist/components/card.d.ts.map +1 -0
  36. package/dist/components/card.js +81 -0
  37. package/dist/components/checkbox.d.ts +14 -0
  38. package/dist/components/checkbox.d.ts.map +1 -0
  39. package/dist/components/checkbox.js +58 -0
  40. package/dist/components/chip.d.ts +15 -0
  41. package/dist/components/chip.d.ts.map +1 -0
  42. package/dist/components/chip.js +35 -0
  43. package/dist/components/chromatic-text.d.ts +11 -0
  44. package/dist/components/chromatic-text.d.ts.map +1 -0
  45. package/dist/components/chromatic-text.js +22 -0
  46. package/dist/components/code.d.ts +13 -0
  47. package/dist/components/code.d.ts.map +1 -0
  48. package/dist/components/code.js +27 -0
  49. package/dist/components/command.d.ts +89 -0
  50. package/dist/components/command.d.ts.map +1 -0
  51. package/dist/components/command.js +123 -0
  52. package/dist/components/counter.d.ts +19 -0
  53. package/dist/components/counter.d.ts.map +1 -0
  54. package/dist/components/counter.js +28 -0
  55. package/dist/components/data-table.d.ts +38 -0
  56. package/dist/components/data-table.d.ts.map +1 -0
  57. package/dist/components/data-table.js +183 -0
  58. package/dist/components/depth-card.d.ts +15 -0
  59. package/dist/components/depth-card.d.ts.map +1 -0
  60. package/dist/components/depth-card.js +52 -0
  61. package/dist/components/dot-pattern.d.ts +10 -0
  62. package/dist/components/dot-pattern.d.ts.map +1 -0
  63. package/dist/components/dot-pattern.js +10 -0
  64. package/dist/components/dropdown-menu.d.ts +74 -0
  65. package/dist/components/dropdown-menu.d.ts.map +1 -0
  66. package/dist/components/dropdown-menu.js +90 -0
  67. package/dist/components/floating-panel.d.ts +17 -0
  68. package/dist/components/floating-panel.d.ts.map +1 -0
  69. package/dist/components/floating-panel.js +57 -0
  70. package/dist/components/glass-breadcrumb.d.ts +17 -0
  71. package/dist/components/glass-breadcrumb.d.ts.map +1 -0
  72. package/dist/components/glass-breadcrumb.js +14 -0
  73. package/dist/components/glass-card.d.ts +20 -0
  74. package/dist/components/glass-card.d.ts.map +1 -0
  75. package/dist/components/glass-card.js +36 -0
  76. package/dist/components/glass-dock.d.ts +21 -0
  77. package/dist/components/glass-dock.d.ts.map +1 -0
  78. package/dist/components/glass-dock.js +54 -0
  79. package/dist/components/glass-navbar.d.ts +21 -0
  80. package/dist/components/glass-navbar.d.ts.map +1 -0
  81. package/dist/components/glass-navbar.js +43 -0
  82. package/dist/components/glass-toggle.d.ts +15 -0
  83. package/dist/components/glass-toggle.d.ts.map +1 -0
  84. package/dist/components/glass-toggle.js +32 -0
  85. package/dist/components/glow-border.d.ts +13 -0
  86. package/dist/components/glow-border.d.ts.map +1 -0
  87. package/dist/components/glow-border.js +10 -0
  88. package/dist/components/gradient-mesh.d.ts +13 -0
  89. package/dist/components/gradient-mesh.d.ts.map +1 -0
  90. package/dist/components/gradient-mesh.js +25 -0
  91. package/dist/components/heading.d.ts +18 -0
  92. package/dist/components/heading.d.ts.map +1 -0
  93. package/dist/components/heading.js +28 -0
  94. package/dist/components/hover-card.d.ts +32 -0
  95. package/dist/components/hover-card.d.ts.map +1 -0
  96. package/dist/components/hover-card.js +28 -0
  97. package/dist/components/icon-frame.d.ts +13 -0
  98. package/dist/components/icon-frame.d.ts.map +1 -0
  99. package/dist/components/icon-frame.js +27 -0
  100. package/dist/components/input.d.ts +13 -0
  101. package/dist/components/input.d.ts.map +1 -0
  102. package/dist/components/input.js +38 -0
  103. package/dist/components/kbd.d.ts +13 -0
  104. package/dist/components/kbd.d.ts.map +1 -0
  105. package/dist/components/kbd.js +27 -0
  106. package/dist/components/label.d.ts +13 -0
  107. package/dist/components/label.d.ts.map +1 -0
  108. package/dist/components/label.js +27 -0
  109. package/dist/components/light-leak.d.ts +15 -0
  110. package/dist/components/light-leak.d.ts.map +1 -0
  111. package/dist/components/light-leak.js +29 -0
  112. package/dist/components/link.d.ts +15 -0
  113. package/dist/components/link.d.ts.map +1 -0
  114. package/dist/components/link.js +32 -0
  115. package/dist/components/liquid-button.d.ts +17 -0
  116. package/dist/components/liquid-button.d.ts.map +1 -0
  117. package/dist/components/liquid-button.js +18 -0
  118. package/dist/components/magnetic-cta.d.ts +18 -0
  119. package/dist/components/magnetic-cta.d.ts.map +1 -0
  120. package/dist/components/magnetic-cta.js +46 -0
  121. package/dist/components/marquee.d.ts +10 -0
  122. package/dist/components/marquee.d.ts.map +1 -0
  123. package/dist/components/marquee.js +16 -0
  124. package/dist/components/meteor-shower.d.ts +11 -0
  125. package/dist/components/meteor-shower.d.ts.map +1 -0
  126. package/dist/components/meteor-shower.js +39 -0
  127. package/dist/components/modal.d.ts +30 -0
  128. package/dist/components/modal.d.ts.map +1 -0
  129. package/dist/components/modal.js +39 -0
  130. package/dist/components/morphing-tabs.d.ts +22 -0
  131. package/dist/components/morphing-tabs.d.ts.map +1 -0
  132. package/dist/components/morphing-tabs.js +72 -0
  133. package/dist/components/number-ticker.d.ts +11 -0
  134. package/dist/components/number-ticker.d.ts.map +1 -0
  135. package/dist/components/number-ticker.js +66 -0
  136. package/dist/components/orbiting-circles.d.ts +21 -0
  137. package/dist/components/orbiting-circles.d.ts.map +1 -0
  138. package/dist/components/orbiting-circles.js +24 -0
  139. package/dist/components/particle-field.d.ts +19 -0
  140. package/dist/components/particle-field.d.ts.map +1 -0
  141. package/dist/components/particle-field.js +41 -0
  142. package/dist/components/popover.d.ts +27 -0
  143. package/dist/components/popover.d.ts.map +1 -0
  144. package/dist/components/popover.js +52 -0
  145. package/dist/components/prism-border.d.ts +13 -0
  146. package/dist/components/prism-border.d.ts.map +1 -0
  147. package/dist/components/prism-border.js +16 -0
  148. package/dist/components/progress.d.ts +58 -0
  149. package/dist/components/progress.d.ts.map +1 -0
  150. package/dist/components/progress.js +108 -0
  151. package/dist/components/pulsating-button.d.ts +13 -0
  152. package/dist/components/pulsating-button.d.ts.map +1 -0
  153. package/dist/components/pulsating-button.js +40 -0
  154. package/dist/components/radio-group.d.ts +27 -0
  155. package/dist/components/radio-group.d.ts.map +1 -0
  156. package/dist/components/radio-group.js +58 -0
  157. package/dist/components/retro-grid.d.ts +13 -0
  158. package/dist/components/retro-grid.d.ts.map +1 -0
  159. package/dist/components/retro-grid.js +17 -0
  160. package/dist/components/reveal-text.d.ts +17 -0
  161. package/dist/components/reveal-text.d.ts.map +1 -0
  162. package/dist/components/reveal-text.js +61 -0
  163. package/dist/components/ripple-button.d.ts +11 -0
  164. package/dist/components/ripple-button.d.ts.map +1 -0
  165. package/dist/components/ripple-button.js +47 -0
  166. package/dist/components/ripple.d.ts +13 -0
  167. package/dist/components/ripple.d.ts.map +1 -0
  168. package/dist/components/ripple.js +24 -0
  169. package/dist/components/select.d.ts +24 -0
  170. package/dist/components/select.d.ts.map +1 -0
  171. package/dist/components/select.js +30 -0
  172. package/dist/components/separator.d.ts +29 -0
  173. package/dist/components/separator.d.ts.map +1 -0
  174. package/dist/components/separator.js +84 -0
  175. package/dist/components/sheet.d.ts +41 -0
  176. package/dist/components/sheet.d.ts.map +1 -0
  177. package/dist/components/sheet.js +85 -0
  178. package/dist/components/shimmer-button.d.ts +13 -0
  179. package/dist/components/shimmer-button.d.ts.map +1 -0
  180. package/dist/components/shimmer-button.js +32 -0
  181. package/dist/components/skeleton.d.ts +17 -0
  182. package/dist/components/skeleton.d.ts.map +1 -0
  183. package/dist/components/skeleton.js +42 -0
  184. package/dist/components/slider.d.ts +14 -0
  185. package/dist/components/slider.d.ts.map +1 -0
  186. package/dist/components/slider.js +89 -0
  187. package/dist/components/sonner.d.ts +14 -0
  188. package/dist/components/sonner.d.ts.map +1 -0
  189. package/dist/components/sonner.js +70 -0
  190. package/dist/components/spotlight-card.d.ts +11 -0
  191. package/dist/components/spotlight-card.d.ts.map +1 -0
  192. package/dist/components/spotlight-card.js +39 -0
  193. package/dist/components/spotlight.d.ts +19 -0
  194. package/dist/components/spotlight.d.ts.map +1 -0
  195. package/dist/components/spotlight.js +23 -0
  196. package/dist/components/status-dot.d.ts +24 -0
  197. package/dist/components/status-dot.d.ts.map +1 -0
  198. package/dist/components/status-dot.js +46 -0
  199. package/dist/components/switch.d.ts +42 -0
  200. package/dist/components/switch.d.ts.map +1 -0
  201. package/dist/components/switch.js +77 -0
  202. package/dist/components/table.d.ts +69 -0
  203. package/dist/components/table.d.ts.map +1 -0
  204. package/dist/components/table.js +176 -0
  205. package/dist/components/tabs.d.ts +34 -0
  206. package/dist/components/tabs.d.ts.map +1 -0
  207. package/dist/components/tabs.js +75 -0
  208. package/dist/components/text-reveal.d.ts +6 -0
  209. package/dist/components/text-reveal.d.ts.map +1 -0
  210. package/dist/components/text-reveal.js +56 -0
  211. package/dist/components/text.d.ts +13 -0
  212. package/dist/components/text.d.ts.map +1 -0
  213. package/dist/components/text.js +27 -0
  214. package/dist/components/textarea.d.ts +13 -0
  215. package/dist/components/textarea.d.ts.map +1 -0
  216. package/dist/components/textarea.js +37 -0
  217. package/dist/components/toast.d.ts +23 -0
  218. package/dist/components/toast.d.ts.map +1 -0
  219. package/dist/components/toast.js +36 -0
  220. package/dist/components/tooltip.d.ts +35 -0
  221. package/dist/components/tooltip.d.ts.map +1 -0
  222. package/dist/components/tooltip.js +34 -0
  223. package/dist/components/tree.d.ts +50 -0
  224. package/dist/components/tree.d.ts.map +1 -0
  225. package/dist/components/tree.js +77 -0
  226. package/dist/components/typewriter.d.ts +25 -0
  227. package/dist/components/typewriter.d.ts.map +1 -0
  228. package/dist/components/typewriter.js +109 -0
  229. package/dist/components/word-rotate.d.ts +11 -0
  230. package/dist/components/word-rotate.d.ts.map +1 -0
  231. package/dist/components/word-rotate.js +29 -0
  232. package/dist/index.d.ts +80 -0
  233. package/dist/index.d.ts.map +1 -0
  234. package/dist/index.js +79 -0
  235. package/dist/lib/cn.d.ts +3 -0
  236. package/dist/lib/cn.d.ts.map +1 -0
  237. package/dist/lib/cn.js +5 -0
  238. package/dist/lib/use-liquid-glass.d.ts +46 -0
  239. package/dist/lib/use-liquid-glass.d.ts.map +1 -0
  240. package/dist/lib/use-liquid-glass.js +144 -0
  241. package/dist/lib/use-prefers-reduced-motion.d.ts +2 -0
  242. package/dist/lib/use-prefers-reduced-motion.d.ts.map +1 -0
  243. package/dist/lib/use-prefers-reduced-motion.js +23 -0
  244. package/package.json +72 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gradient-mesh.d.ts","sourceRoot":"","sources":["../../src/components/gradient-mesh.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,iBAAkB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC7E,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,eAAO,MAAM,YAAY,0FAyDxB,CAAA"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../lib/cn";
4
+ export const GradientMesh = React.forwardRef(({ className, children, colors = ["#a855f7", "#ec4899", "#6366f1", "#06b6d4"], duration = 10, blur = 60, intensity = 0.6, style, ...props }, ref) => {
5
+ const meshLayers = React.useMemo(() => {
6
+ return colors.map((color, i) => ({
7
+ id: i,
8
+ color,
9
+ x: 25 + ((i * 50) / colors.length),
10
+ y: 25 + ((i * 35) % 50),
11
+ size: 50 + (i % 3) * 20,
12
+ }));
13
+ }, [colors]);
14
+ return (_jsxs("div", { ref: ref, "aria-hidden": true, className: cn("pointer-events-none absolute inset-0 overflow-hidden", className), style: style, ...props, children: [_jsx("div", { className: "absolute inset-0", style: { filter: `blur(${blur}px)`, opacity: intensity }, children: meshLayers.map((layer) => (_jsx("div", { className: "absolute animate-mesh-shift motion-reduce:[animation:none] [background-size:200%_200%]", style: {
15
+ "--mesh-duration": `${duration + layer.id * 2}s`,
16
+ width: `${layer.size}%`,
17
+ height: `${layer.size}%`,
18
+ left: `${layer.x}%`,
19
+ top: `${layer.y}%`,
20
+ background: `radial-gradient(circle at center, ${layer.color}, transparent 70%)`,
21
+ transform: "translate(-50%, -50%)",
22
+ animationDelay: `${-layer.id * (duration / colors.length)}s`,
23
+ } }, layer.id))) }), children] }));
24
+ });
25
+ GradientMesh.displayName = "GradientMesh";
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
4
+ declare const headingVariants: (props?: ({
5
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
6
+ size?: "sm" | "md" | "lg" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export type HeadingProps = React.HTMLAttributes<HTMLHeadingElement> & VariantProps<typeof headingVariants> & {
9
+ level?: HeadingLevel;
10
+ };
11
+ export declare const Heading: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLHeadingElement> & VariantProps<(props?: ({
12
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
13
+ size?: "sm" | "md" | "lg" | null | undefined;
14
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
15
+ level?: HeadingLevel;
16
+ } & React.RefAttributes<HTMLHeadingElement>>;
17
+ export {};
18
+ //# sourceMappingURL=heading.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../src/components/heading.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,KAAK,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAEzC,QAAA,MAAM,eAAe;;;8EAmBnB,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,CAAC,kBAAkB,CAAC,GACjE,YAAY,CAAC,OAAO,eAAe,CAAC,GAAG;IACrC,KAAK,CAAC,EAAE,YAAY,CAAA;CACrB,CAAA;AAEH,eAAO,MAAM,OAAO;;;;YAHR,YAAY;4CASvB,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/cn";
5
+ const headingVariants = cva("font-semibold tracking-tight text-[var(--color-foreground)]", {
6
+ variants: {
7
+ variant: {
8
+ default: "",
9
+ glass: "inline-block rounded-lg border border-white/20 [border-top-color:var(--glass-refraction-top)] bg-[var(--glass-1-surface)] px-2.5 py-1.5 dark:border-white/[0.14] dark:bg-white/[0.05]",
10
+ outline: "inline-block rounded-lg border border-[var(--color-border)] px-2.5 py-1.5 dark:border-white/20",
11
+ ghost: "inline-block rounded-lg px-2.5 py-1.5"
12
+ },
13
+ size: {
14
+ sm: "text-lg leading-7",
15
+ md: "text-2xl leading-9",
16
+ lg: "text-3xl leading-10"
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ size: "md"
22
+ }
23
+ });
24
+ export const Heading = React.forwardRef(({ className, variant, size, level = 2, ...props }, ref) => {
25
+ const Comp = `h${level}`;
26
+ return _jsx(Comp, { ref: ref, className: cn(headingVariants({ variant, size }), className), ...props });
27
+ });
28
+ Heading.displayName = "Heading";
@@ -0,0 +1,32 @@
1
+ import * as React from "react";
2
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
3
+ import { type VariantProps } from "class-variance-authority";
4
+ declare const hoverCardContentVariants: (props?: ({
5
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
6
+ size?: "sm" | "md" | "lg" | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export type HoverCardProps = Omit<React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Root>, "openDelay" | "closeDelay"> & {
9
+ /** Delay in ms before opening on pointer/focus. */
10
+ openDelay?: number;
11
+ /** Delay in ms before closing when pointer leaves. */
12
+ closeDelay?: number;
13
+ };
14
+ export declare const HoverCard: ({ openDelay, closeDelay, ...props }: HoverCardProps) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const HoverCardTrigger: React.ForwardRefExoticComponent<HoverCardPrimitive.HoverCardTriggerProps & React.RefAttributes<HTMLAnchorElement>>;
16
+ export type HoverCardContentProps = React.ComponentPropsWithoutRef<typeof HoverCardPrimitive.Content> & VariantProps<typeof hoverCardContentVariants> & {
17
+ /** Preferred side for the hover card. */
18
+ side?: "top" | "right" | "bottom" | "left";
19
+ /** Gap in px between trigger and content. */
20
+ sideOffset?: number;
21
+ };
22
+ export declare const HoverCardContent: React.ForwardRefExoticComponent<Omit<HoverCardPrimitive.HoverCardContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & VariantProps<(props?: ({
23
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
24
+ size?: "sm" | "md" | "lg" | null | undefined;
25
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
26
+ /** Preferred side for the hover card. */
27
+ side?: "top" | "right" | "bottom" | "left";
28
+ /** Gap in px between trigger and content. */
29
+ sideOffset?: number;
30
+ } & React.RefAttributes<HTMLDivElement>>;
31
+ export {};
32
+ //# sourceMappingURL=hover-card.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hover-card.d.ts","sourceRoot":"","sources":["../../src/components/hover-card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,kBAAkB,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,wBAAwB;;;8EAuB7B,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,KAAK,CAAC,wBAAwB,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,EAC9D,WAAW,GAAG,YAAY,CAC3B,GAAG;IACF,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,qCAIvB,cAAc,4CAMhB,CAAA;AAED,eAAO,MAAM,gBAAgB,oHAA6B,CAAA;AAE1D,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,wBAAwB,CAChE,OAAO,kBAAkB,CAAC,OAAO,CAClC,GACC,YAAY,CAAC,OAAO,wBAAwB,CAAC,GAAG;IAC9C,yCAAyC;IACzC,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAA;IAC1C,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAEH,eAAO,MAAM,gBAAgB;;;;IANzB,yCAAyC;WAClC,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM;IAC1C,6CAA6C;iBAChC,MAAM;wCA4BtB,CAAA"}
@@ -0,0 +1,28 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
4
+ import { cva } from "class-variance-authority";
5
+ import { cn } from "../lib/cn";
6
+ const hoverCardContentVariants = cva("z-50 rounded-xl border p-4 text-[var(--color-foreground)] shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=open]:fade-in-0 data-[state=closed]:fade-out-0 data-[state=open]:zoom-in-95 data-[state=closed]:zoom-out-95 motion-reduce:data-[state=open]:animate-none motion-reduce:data-[state=closed]:animate-none", {
7
+ variants: {
8
+ variant: {
9
+ default: "border-black/10 bg-[linear-gradient(180deg,rgb(255_255_255),rgb(244_244_246))] shadow-[0_1px_0_rgb(255_255_255_/_0.9)_inset,0_14px_28px_-18px_rgb(15_23_42_/_0.35)] dark:border-white/[0.14] dark:bg-[linear-gradient(180deg,rgb(56_62_72_/_0.94),rgb(37_42_50_/_0.94))] dark:shadow-[0_1px_0_rgb(255_255_255_/_0.08)_inset,0_16px_32px_-18px_rgb(0_0_0_/_0.68)]",
10
+ glass: "border-white/20 [border-top-color:var(--glass-refraction-top)] bg-[linear-gradient(155deg,rgb(255_255_255_/_0.66),rgb(246_246_246_/_0.36))] backdrop-blur-xl backdrop-saturate-[180%] shadow-[0_0_0_1px_rgb(255_255_255_/_0.2)_inset,0_14px_30px_-18px_rgb(15_23_42_/_0.32)] dark:border-white/[0.12] dark:bg-[linear-gradient(155deg,rgb(255_255_255_/_0.15),rgb(255_255_255_/_0.05))] dark:shadow-[0_0_0_1px_rgb(255_255_255_/_0.1)_inset,0_16px_34px_-18px_rgb(0_0_0_/_0.66)]",
11
+ outline: "border-[var(--color-border)] bg-[var(--color-surface)] shadow-[var(--shadow-soft)]",
12
+ ghost: "border-transparent bg-[var(--color-surface)]/90 shadow-none"
13
+ },
14
+ size: {
15
+ sm: "w-56 text-xs",
16
+ md: "w-72 text-sm",
17
+ lg: "w-80 text-sm"
18
+ }
19
+ },
20
+ defaultVariants: {
21
+ variant: "glass",
22
+ size: "md"
23
+ }
24
+ });
25
+ export const HoverCard = ({ openDelay = 200, closeDelay = 100, ...props }) => (_jsx(HoverCardPrimitive.Root, { openDelay: openDelay, closeDelay: closeDelay, ...props }));
26
+ export const HoverCardTrigger = HoverCardPrimitive.Trigger;
27
+ export const HoverCardContent = React.forwardRef(({ className, align = "center", sideOffset = 10, variant, size, ...props }, ref) => (_jsx(HoverCardPrimitive.Portal, { children: _jsx(HoverCardPrimitive.Content, { ref: ref, align: align, sideOffset: sideOffset, className: cn(hoverCardContentVariants({ variant, size }), className), ...props }) })));
28
+ HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const iconFrameVariants: (props?: ({
4
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type IconFrameProps = React.HTMLAttributes<HTMLSpanElement> & VariantProps<typeof iconFrameVariants>;
8
+ export declare const IconFrame: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & VariantProps<(props?: ({
9
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
10
+ size?: "sm" | "md" | "lg" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLSpanElement>>;
12
+ export {};
13
+ //# sourceMappingURL=icon-frame.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-frame.d.ts","sourceRoot":"","sources":["../../src/components/icon-frame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,iBAAiB;;;8EAuBtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,GAChE,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAExC,eAAO,MAAM,SAAS;;;uHAMrB,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/cn";
5
+ const iconFrameVariants = cva("inline-flex shrink-0 items-center justify-center rounded-xl border transition-[background-color,color,border-color,box-shadow] duration-fast ease-standard motion-reduce:transition-none", {
6
+ variants: {
7
+ variant: {
8
+ default: "border-[var(--color-border)] bg-[var(--color-surface)] text-[var(--color-foreground)] dark:border-white/20",
9
+ glass: "border-white/20 [border-top-color:var(--glass-refraction-top)] bg-[var(--glass-1-surface)] text-[var(--color-foreground)] dark:border-white/[0.14] dark:bg-white/[0.05]",
10
+ outline: "border-[var(--color-border)] bg-transparent text-[var(--color-foreground)] dark:border-white/20",
11
+ ghost: "border-transparent bg-[var(--color-foreground)]/[0.08] text-[var(--color-foreground)] dark:bg-white/[0.1]"
12
+ },
13
+ size: {
14
+ sm: "h-7 w-7",
15
+ md: "h-9 w-9",
16
+ lg: "h-11 w-11"
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ size: "md"
22
+ }
23
+ });
24
+ export const IconFrame = React.forwardRef(({ className, variant, size, ...props }, ref) => {
25
+ return (_jsx("span", { ref: ref, className: cn(iconFrameVariants({ variant, size }), className), ...props }));
26
+ });
27
+ IconFrame.displayName = "IconFrame";
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const inputVariants: (props?: ({
4
+ variant?: "default" | "glass" | "frosted" | "outline" | "ghost" | "matte" | "underline" | "filled" | "liquid" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type InputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> & VariantProps<typeof inputVariants>;
8
+ export declare const Input: React.ForwardRefExoticComponent<Omit<React.InputHTMLAttributes<HTMLInputElement>, "size"> & VariantProps<(props?: ({
9
+ variant?: "default" | "glass" | "frosted" | "outline" | "ghost" | "matte" | "underline" | "filled" | "liquid" | null | undefined;
10
+ size?: "sm" | "md" | "lg" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLInputElement>>;
12
+ export {};
13
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/components/input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,aAAa;;;8EAiDlB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAChF,YAAY,CAAC,OAAO,aAAa,CAAC,CAAA;AAEpC,eAAO,MAAM,KAAK;;;wHAWjB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/cn";
5
+ const inputVariants = cva("w-full border font-medium text-[var(--color-foreground)] placeholder:text-neutral-400 transition-[background-color,border-color,box-shadow,color] duration-normal ease-standard focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none dark:placeholder:text-neutral-500", {
6
+ variants: {
7
+ variant: {
8
+ default: "rounded-xl border-[var(--color-border)] bg-[var(--color-surface)] shadow-sm focus-visible:border-[var(--color-accent)]/60 focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]/30 focus-visible:ring-offset-1 hover:border-[var(--color-border)]/80 dark:border-white/10 dark:bg-white/[0.04] dark:focus-visible:border-[var(--color-accent)]/50 dark:focus-visible:ring-[var(--color-accent)]/20",
9
+ glass: "relative rounded-xl border-white/24 [border-top-color:var(--glass-refraction-top)] bg-[radial-gradient(circle_at_18%_14%,rgb(255_255_255_/_0.86),transparent_44%),linear-gradient(158deg,rgb(255_255_255_/_0.7),rgb(243_247_250_/_0.46))] backdrop-blur-md backdrop-saturate-[180%] shadow-[0_0_0_1px_rgb(255_255_255_/_0.2)_inset,0_8px_18px_-14px_rgb(15_23_42_/_0.24)] focus-visible:border-white/34 focus-visible:[border-top-color:rgb(255_255_255_/_0.82)] focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]/22 focus-visible:ring-offset-0 focus-visible:shadow-[0_0_0_1px_rgb(255_255_255_/_0.24)_inset,0_0_0_3px_rgb(15_23_42_/_0.12),0_10px_20px_-14px_rgb(15_23_42_/_0.28)] hover:border-white/32 dark:border-white/[0.1] dark:bg-white/[0.05] dark:focus-visible:border-white/20 dark:focus-visible:ring-white/15",
10
+ frosted: "relative rounded-xl border-white/30 [border-top-color:var(--glass-refraction-top)] bg-[radial-gradient(circle_at_18%_14%,rgb(255_255_255_/_0.92),transparent_44%),linear-gradient(158deg,rgb(255_255_255_/_0.85),rgb(243_247_250_/_0.65))] backdrop-blur-[40px] backdrop-saturate-[200%] shadow-[0_0_0_1px_rgb(255_255_255_/_0.25)_inset,0_0_16px_rgb(255_255_255_/_0.1)_inset,0_8px_18px_-14px_rgb(15_23_42_/_0.28)] focus-visible:border-white/40 focus-visible:[border-top-color:rgb(255_255_255_/_0.88)] focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]/24 focus-visible:ring-offset-0 hover:border-white/36 dark:border-white/[0.14] dark:bg-white/[0.08] dark:focus-visible:border-white/24 dark:focus-visible:ring-white/18",
11
+ liquid: "relative rounded-xl border-white/24 [border-top-color:var(--glass-refraction-top)] bg-[radial-gradient(circle_at_18%_12%,rgb(255_255_255_/_0.92),transparent_42%),radial-gradient(circle_at_84%_88%,rgb(226_232_240_/_0.58),transparent_58%),linear-gradient(145deg,rgb(255_255_255_/_0.82),rgb(235_241_246_/_0.55))] backdrop-blur-xl backdrop-saturate-[180%] shadow-[0_0_0_1px_rgb(255_255_255_/_0.24)_inset,0_10px_20px_-14px_rgb(15_23_42_/_0.26)] focus-visible:border-white/36 focus-visible:[border-top-color:rgb(255_255_255_/_0.88)] focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]/24 focus-visible:ring-offset-0 hover:border-white/34 dark:border-white/[0.12] dark:bg-[linear-gradient(145deg,rgb(255_255_255_/_0.13),rgb(255_255_255_/_0.05))] dark:focus-visible:border-white/[0.24] dark:focus-visible:ring-white/16",
12
+ matte: "rounded-xl border-black/12 bg-[linear-gradient(180deg,rgb(249_250_251),rgb(237_239_242))] shadow-[0_1px_0_rgb(255_255_255_/_0.88)_inset,0_6px_14px_-12px_rgb(15_23_42_/_0.24)] focus-visible:border-black/25 focus-visible:ring-2 focus-visible:ring-black/12 focus-visible:ring-offset-0 hover:border-black/16 dark:border-white/[0.14] dark:bg-[linear-gradient(180deg,rgb(49_54_63_/_0.92),rgb(34_38_46_/_0.92))] dark:focus-visible:border-white/[0.28] dark:focus-visible:ring-white/14",
13
+ outline: "rounded-xl border-[var(--color-border)] bg-transparent shadow-sm focus-visible:border-[var(--color-accent)]/70 focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]/25 focus-visible:ring-offset-1 hover:border-[var(--color-foreground)]/20 dark:border-white/15 dark:focus-visible:border-[var(--color-accent)]/50",
14
+ ghost: "rounded-xl border-transparent bg-transparent focus-visible:border-white/10 focus-visible:bg-[var(--glass-1-surface)] focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]/20 focus-visible:ring-offset-0 hover:border-white/10 hover:bg-[var(--glass-1-surface)] dark:hover:bg-white/[0.06] dark:focus-visible:bg-white/[0.06]",
15
+ underline: "rounded-none border-x-0 border-t-0 border-b border-b-[var(--color-border)] bg-transparent px-0 shadow-none focus-visible:border-b-[var(--color-accent)] focus-visible:ring-0 focus-visible:ring-offset-0 hover:border-b-[var(--color-foreground)]/30 dark:border-b-white/20 dark:focus-visible:border-b-[var(--color-accent)]",
16
+ filled: "rounded-xl border-transparent bg-[var(--color-foreground)]/[0.07] focus-visible:border-[var(--color-accent)]/50 focus-visible:bg-[var(--color-foreground)]/[0.09] focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]/25 focus-visible:ring-offset-0 hover:bg-[var(--color-foreground)]/[0.10] dark:bg-white/[0.08] dark:focus-visible:bg-white/[0.11] dark:hover:bg-white/[0.11]"
17
+ },
18
+ size: {
19
+ sm: "h-8 px-3 text-xs",
20
+ md: "h-10 px-3.5 text-sm",
21
+ lg: "h-12 px-4 text-base"
22
+ }
23
+ },
24
+ compoundVariants: [
25
+ // underline variant overrides horizontal padding for all sizes
26
+ { variant: "underline", size: "sm", class: "px-0" },
27
+ { variant: "underline", size: "md", class: "px-0" },
28
+ { variant: "underline", size: "lg", class: "px-0" }
29
+ ],
30
+ defaultVariants: {
31
+ variant: "default",
32
+ size: "md"
33
+ }
34
+ });
35
+ export const Input = React.forwardRef(({ className, variant, size, type = "text", ...props }, ref) => {
36
+ return (_jsx("input", { ref: ref, type: type, className: cn(inputVariants({ variant, size }), className), ...props }));
37
+ });
38
+ Input.displayName = "Input";
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const kbdVariants: (props?: ({
4
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type KbdProps = React.HTMLAttributes<HTMLElement> & VariantProps<typeof kbdVariants>;
8
+ export declare const Kbd: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLElement> & VariantProps<(props?: ({
9
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
10
+ size?: "sm" | "md" | "lg" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLElement>>;
12
+ export {};
13
+ //# sourceMappingURL=kbd.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kbd.d.ts","sourceRoot":"","sources":["../../src/components/kbd.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,WAAW;;;8EAuBhB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAA;AAE3F,eAAO,MAAM,GAAG;;;mHAIf,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/cn";
5
+ const kbdVariants = cva("inline-flex min-w-6 items-center justify-center rounded-md border px-1.5 font-mono font-medium uppercase tracking-wide shadow-sm transition-colors duration-fast ease-standard motion-reduce:transition-none", {
6
+ variants: {
7
+ variant: {
8
+ default: "border-[var(--color-border)] bg-[var(--color-surface)] text-[var(--color-foreground)] dark:border-white/15",
9
+ glass: "border-white/20 [border-top-color:var(--glass-refraction-top)] bg-[var(--glass-1-surface)] text-[var(--color-foreground)] dark:border-white/[0.14] dark:bg-white/[0.05]",
10
+ outline: "border-[var(--color-border)] bg-transparent text-[var(--color-foreground)] dark:border-white/20",
11
+ ghost: "border-transparent bg-[var(--color-foreground)]/[0.07] text-[var(--color-foreground)] dark:bg-white/[0.1]"
12
+ },
13
+ size: {
14
+ sm: "h-5 text-[10px]",
15
+ md: "h-6 text-[11px]",
16
+ lg: "h-7 text-xs"
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ size: "md"
22
+ }
23
+ });
24
+ export const Kbd = React.forwardRef(({ className, variant, size, ...props }, ref) => {
25
+ return _jsx("kbd", { ref: ref, className: cn(kbdVariants({ variant, size }), className), ...props });
26
+ });
27
+ Kbd.displayName = "Kbd";
@@ -0,0 +1,13 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const labelVariants: (props?: ({
4
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type LabelProps = React.LabelHTMLAttributes<HTMLLabelElement> & VariantProps<typeof labelVariants>;
8
+ export declare const Label: React.ForwardRefExoticComponent<React.LabelHTMLAttributes<HTMLLabelElement> & VariantProps<(props?: ({
9
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
10
+ size?: "sm" | "md" | "lg" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLLabelElement>>;
12
+ export {};
13
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../src/components/label.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,aAAa;;;8EAsBlB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,GAClE,YAAY,CAAC,OAAO,aAAa,CAAC,CAAA;AAEpC,eAAO,MAAM,KAAK;;;wHAIjB,CAAA"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/cn";
5
+ const labelVariants = cva("inline-flex items-center gap-1.5 font-medium text-[var(--color-foreground)] transition-colors duration-fast ease-standard motion-reduce:transition-none", {
6
+ variants: {
7
+ variant: {
8
+ default: "",
9
+ glass: "rounded-md border border-white/20 [border-top-color:var(--glass-refraction-top)] bg-[var(--glass-1-surface)] px-2 py-1 dark:border-white/[0.14] dark:bg-white/[0.05]",
10
+ outline: "rounded-md border border-[var(--color-border)] px-2 py-1 dark:border-white/20",
11
+ ghost: "rounded-md px-2 py-1 text-[var(--color-foreground)]/75"
12
+ },
13
+ size: {
14
+ sm: "text-xs",
15
+ md: "text-sm",
16
+ lg: "text-base"
17
+ }
18
+ },
19
+ defaultVariants: {
20
+ variant: "default",
21
+ size: "md"
22
+ }
23
+ });
24
+ export const Label = React.forwardRef(({ className, variant, size, ...props }, ref) => {
25
+ return _jsx("label", { ref: ref, className: cn(labelVariants({ variant, size }), className), ...props });
26
+ });
27
+ Label.displayName = "Label";
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ export interface LightLeakProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ /** Number of light leak layers */
4
+ count?: number;
5
+ /** Colors for the light leaks */
6
+ colors?: string[];
7
+ /** Animation duration in seconds */
8
+ duration?: number;
9
+ /** Intensity/opacity (0-1) */
10
+ intensity?: number;
11
+ /** Blur amount in px */
12
+ blur?: number;
13
+ }
14
+ export declare const LightLeak: React.ForwardRefExoticComponent<LightLeakProps & React.RefAttributes<HTMLDivElement>>;
15
+ //# sourceMappingURL=light-leak.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"light-leak.d.ts","sourceRoot":"","sources":["../../src/components/light-leak.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,cAAe,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,eAAO,MAAM,SAAS,uFAuDrB,CAAA"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../lib/cn";
4
+ export const LightLeak = React.forwardRef(({ className, count = 3, colors = ["#f97316", "#eab308", "#f43f5e"], duration = 6, intensity = 0.3, blur = 60, style, ...props }, ref) => {
5
+ const leaks = React.useMemo(() => {
6
+ return Array.from({ length: count }, (_, i) => ({
7
+ id: i,
8
+ color: colors[i % colors.length],
9
+ delay: (i * duration) / count,
10
+ size: 30 + (i % 3) * 20,
11
+ x: 10 + (i * 80) / count,
12
+ y: 10 + ((i * 60) % 80),
13
+ rotation: i * 45,
14
+ }));
15
+ }, [count, colors, duration]);
16
+ return (_jsx("div", { ref: ref, "aria-hidden": true, className: cn("pointer-events-none absolute inset-0 overflow-hidden", className), style: style, ...props, children: leaks.map((leak) => (_jsx("div", { className: "absolute animate-light-leak-drift motion-reduce:[animation:none]", style: {
17
+ "--light-leak-duration": `${duration + leak.id * 2}s`,
18
+ width: `${leak.size}%`,
19
+ height: `${leak.size * 0.6}%`,
20
+ left: `${leak.x}%`,
21
+ top: `${leak.y}%`,
22
+ background: `radial-gradient(ellipse at center, ${leak.color}, transparent 70%)`,
23
+ filter: `blur(${blur}px)`,
24
+ opacity: intensity,
25
+ transform: `translate(-50%, -50%) rotate(${leak.rotation}deg)`,
26
+ animationDelay: `${-leak.delay}s`,
27
+ } }, leak.id))) }));
28
+ });
29
+ LightLeak.displayName = "LightLeak";
@@ -0,0 +1,15 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ declare const linkVariants: (props?: ({
4
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
5
+ size?: "sm" | "md" | "lg" | null | undefined;
6
+ underline?: boolean | null | undefined;
7
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
8
+ export type LinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & VariantProps<typeof linkVariants>;
9
+ export declare const Link: React.ForwardRefExoticComponent<React.AnchorHTMLAttributes<HTMLAnchorElement> & VariantProps<(props?: ({
10
+ variant?: "default" | "glass" | "outline" | "ghost" | null | undefined;
11
+ size?: "sm" | "md" | "lg" | null | undefined;
12
+ underline?: boolean | null | undefined;
13
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLAnchorElement>>;
14
+ export {};
15
+ //# sourceMappingURL=link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../src/components/link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAIjE,QAAA,MAAM,YAAY;;;;8EA4BjB,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,GACnE,YAAY,CAAC,OAAO,YAAY,CAAC,CAAA;AAEnC,eAAO,MAAM,IAAI;;;;yHAMhB,CAAA"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/cn";
5
+ const linkVariants = cva("inline-flex items-center gap-1 rounded-md font-medium transition-[color,background-color,border-color,box-shadow] duration-fast ease-standard focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-accent)]/35 focus-visible:ring-offset-2 motion-reduce:transition-none", {
6
+ variants: {
7
+ variant: {
8
+ default: "text-[var(--color-foreground)] hover:text-[var(--color-accent)]",
9
+ glass: "border border-white/20 [border-top-color:var(--glass-refraction-top)] bg-[var(--glass-1-surface)] px-2 py-1 text-[var(--color-foreground)] hover:bg-[var(--glass-2-surface)] dark:border-white/[0.14] dark:bg-white/[0.05]",
10
+ outline: "border border-[var(--color-border)] px-2 py-1 text-[var(--color-foreground)] hover:border-[var(--color-accent)]/50 dark:border-white/20",
11
+ ghost: "px-2 py-1 text-[var(--color-foreground)]/80 hover:bg-[var(--glass-1-surface)]"
12
+ },
13
+ size: {
14
+ sm: "text-xs",
15
+ md: "text-sm",
16
+ lg: "text-base"
17
+ },
18
+ underline: {
19
+ true: "underline underline-offset-4 decoration-[var(--color-accent)]/35",
20
+ false: "no-underline"
21
+ }
22
+ },
23
+ defaultVariants: {
24
+ variant: "default",
25
+ size: "md",
26
+ underline: true
27
+ }
28
+ });
29
+ export const Link = React.forwardRef(({ className, variant, size, underline, ...props }, ref) => {
30
+ return (_jsx("a", { ref: ref, className: cn(linkVariants({ variant, size, underline }), className), ...props }));
31
+ });
32
+ Link.displayName = "Link";
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { type VariantProps } from "class-variance-authority";
3
+ import { type ButtonProps } from "./button";
4
+ declare const liquidButtonVariants: (props?: ({
5
+ intensity?: "strong" | "soft" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ export type LiquidButtonProps = ButtonProps & VariantProps<typeof liquidButtonVariants>;
8
+ export declare const LiquidButton: React.ForwardRefExoticComponent<React.ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<(props?: ({
9
+ variant?: "default" | "glass" | "frosted" | "outline" | "ghost" | "matte" | "liquid" | "glow" | null | undefined;
10
+ size?: "sm" | "md" | "lg" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
12
+ asChild?: boolean;
13
+ } & VariantProps<(props?: ({
14
+ intensity?: "strong" | "soft" | null | undefined;
15
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & React.RefAttributes<HTMLButtonElement>>;
16
+ export {};
17
+ //# sourceMappingURL=liquid-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquid-button.d.ts","sourceRoot":"","sources":["../../src/components/liquid-button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAGjE,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAEnD,QAAA,MAAM,oBAAoB;;8EAczB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,YAAY,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAEvF,eAAO,MAAM,YAAY;;;;;;;yHAIxB,CAAA"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cva } from "class-variance-authority";
4
+ import { cn } from "../lib/cn";
5
+ import { Button } from "./button";
6
+ const liquidButtonVariants = cva("relative transform-gpu transition-[transform,box-shadow,filter] duration-normal ease-standard hover:scale-[1.03] hover:shadow-[0_0_0_1px_var(--glass-refraction-top),0_18px_30px_-16px_rgb(15_23_42_/_0.34)] active:scale-y-[0.97] dark:hover:shadow-[0_0_0_1px_var(--glass-refraction-top),0_0_30px_rgb(255_255_255_/_0.2)] motion-reduce:transition-none motion-reduce:hover:scale-100 motion-reduce:active:scale-y-100", {
7
+ variants: {
8
+ intensity: {
9
+ soft: "hover:brightness-[1.03] dark:hover:brightness-105",
10
+ strong: "hover:brightness-[1.06] hover:shadow-[0_0_0_1px_var(--glass-refraction-top),0_22px_34px_-16px_rgb(15_23_42_/_0.4)] dark:hover:brightness-110 dark:hover:shadow-[0_0_0_1px_var(--glass-refraction-top),0_0_36px_rgb(255_255_255_/_0.3)]"
11
+ }
12
+ },
13
+ defaultVariants: {
14
+ intensity: "soft"
15
+ }
16
+ });
17
+ export const LiquidButton = React.forwardRef(({ className, intensity, ...props }, ref) => (_jsx(Button, { ref: ref, className: cn(liquidButtonVariants({ intensity }), className), ...props })));
18
+ LiquidButton.displayName = "LiquidButton";
@@ -0,0 +1,18 @@
1
+ import * as React from "react";
2
+ import { type ButtonProps } from "./button";
3
+ export type MagneticCTAProps = ButtonProps & {
4
+ containerClassName?: string;
5
+ maxOffset?: number;
6
+ magnetRadius?: number;
7
+ };
8
+ export declare const MagneticCTA: React.ForwardRefExoticComponent<React.ButtonHTMLAttributes<HTMLButtonElement> & import("class-variance-authority").VariantProps<(props?: ({
9
+ variant?: "default" | "glass" | "frosted" | "outline" | "ghost" | "matte" | "liquid" | "glow" | null | undefined;
10
+ size?: "sm" | "md" | "lg" | null | undefined;
11
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
12
+ asChild?: boolean;
13
+ } & {
14
+ containerClassName?: string;
15
+ maxOffset?: number;
16
+ magnetRadius?: number;
17
+ } & React.RefAttributes<HTMLButtonElement>>;
18
+ //# sourceMappingURL=magnetic-cta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"magnetic-cta.d.ts","sourceRoot":"","sources":["../../src/components/magnetic-cta.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAA;AAEnD,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,WAAW;;;;;;yBALD,MAAM;gBACf,MAAM;mBACH,MAAM;2CA4EtB,CAAA"}
@@ -0,0 +1,46 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { cn } from "../lib/cn";
5
+ import { usePrefersReducedMotion } from "../lib/use-prefers-reduced-motion";
6
+ import { Button } from "./button";
7
+ export const MagneticCTA = React.forwardRef(({ className, containerClassName, maxOffset = 8, magnetRadius = 140, ...props }, ref) => {
8
+ const prefersReducedMotion = usePrefersReducedMotion();
9
+ const wrapperRef = React.useRef(null);
10
+ const buttonRef = React.useRef(null);
11
+ React.useImperativeHandle(ref, () => buttonRef.current);
12
+ const setButtonOffset = React.useCallback((x, y) => {
13
+ if (!buttonRef.current) {
14
+ return;
15
+ }
16
+ buttonRef.current.style.setProperty("--magnetic-x", `${x.toFixed(2)}px`);
17
+ buttonRef.current.style.setProperty("--magnetic-y", `${y.toFixed(2)}px`);
18
+ }, []);
19
+ const resetOffset = React.useCallback(() => {
20
+ setButtonOffset(0, 0);
21
+ }, [setButtonOffset]);
22
+ const handleMouseMove = React.useCallback((event) => {
23
+ if (prefersReducedMotion || !wrapperRef.current) {
24
+ resetOffset();
25
+ return;
26
+ }
27
+ const rect = wrapperRef.current.getBoundingClientRect();
28
+ const centerX = rect.left + rect.width / 2;
29
+ const centerY = rect.top + rect.height / 2;
30
+ const deltaX = event.clientX - centerX;
31
+ const deltaY = event.clientY - centerY;
32
+ const distance = Math.hypot(deltaX, deltaY);
33
+ if (distance === 0 || distance > magnetRadius) {
34
+ resetOffset();
35
+ return;
36
+ }
37
+ const normalizedX = deltaX / distance;
38
+ const normalizedY = deltaY / distance;
39
+ const strength = 1 - distance / magnetRadius;
40
+ const translateX = normalizedX * maxOffset * strength;
41
+ const translateY = normalizedY * maxOffset * strength;
42
+ setButtonOffset(translateX, translateY);
43
+ }, [magnetRadius, maxOffset, prefersReducedMotion, resetOffset, setButtonOffset]);
44
+ return (_jsx("div", { ref: wrapperRef, "data-slot": "magnetic-cta-wrapper", className: cn("inline-flex", containerClassName), onMouseMove: handleMouseMove, onMouseLeave: resetOffset, children: _jsx(Button, { ref: buttonRef, className: cn("[transform:translate3d(var(--magnetic-x,0px),var(--magnetic-y,0px),0)] transition-transform duration-fast ease-standard motion-reduce:transition-none", className), ...props }) }));
45
+ });
46
+ MagneticCTA.displayName = "MagneticCTA";
@@ -0,0 +1,10 @@
1
+ import * as React from "react";
2
+ export interface MarqueeProps extends React.HTMLAttributes<HTMLDivElement> {
3
+ direction?: "left" | "right" | "up" | "down";
4
+ speed?: number;
5
+ pauseOnHover?: boolean;
6
+ gap?: number;
7
+ reverse?: boolean;
8
+ }
9
+ export declare const Marquee: React.ForwardRefExoticComponent<MarqueeProps & React.RefAttributes<HTMLDivElement>>;
10
+ //# sourceMappingURL=marquee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marquee.d.ts","sourceRoot":"","sources":["../../src/components/marquee.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,MAAM,WAAW,YAAa,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACxE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAA;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,eAAO,MAAM,OAAO,qFAyDnB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from "react";
3
+ import { cn } from "../lib/cn";
4
+ export const Marquee = React.forwardRef(({ className, children, direction = "left", speed = 30, pauseOnHover = false, gap = 16, reverse = false, style, ...props }, ref) => {
5
+ const isVertical = direction === "up" || direction === "down";
6
+ const shouldReverse = reverse || direction === "right" || direction === "down";
7
+ const animationClass = isVertical
8
+ ? "motion-safe:animate-marquee-y"
9
+ : "motion-safe:animate-marquee-x";
10
+ return (_jsx("div", { ref: ref, className: cn("group overflow-hidden", isVertical ? "flex flex-col" : "flex flex-row", className), style: {
11
+ "--marquee-gap": `${gap}px`,
12
+ "--marquee-duration": `${speed}s`,
13
+ ...style,
14
+ }, ...props, children: Array.from({ length: 2 }).map((_, i) => (_jsx("div", { "aria-hidden": i === 1 ? true : undefined, className: cn("flex shrink-0", isVertical ? "flex-col" : "flex-row", animationClass, shouldReverse && "[animation-direction:reverse]", pauseOnHover && "group-hover:[animation-play-state:paused]", isVertical ? "pb-[var(--marquee-gap)]" : "pr-[var(--marquee-gap)]"), children: children }, i))) }));
15
+ });
16
+ Marquee.displayName = "Marquee";