Reubencf commited on
Commit
461aaf5
·
1 Parent(s): 3910053

working on portfolio

Browse files
app/api/route.ts ADDED
File without changes
app/globals.css CHANGED
@@ -2,21 +2,7 @@
2
  @tailwind components;
3
  @tailwind utilities;
4
 
5
- :root {
6
- --background: #ffffff;
7
- --foreground: #171717;
8
- }
9
-
10
- @media (prefers-color-scheme: dark) {
11
- :root {
12
- --background: #0a0a0a;
13
- --foreground: #ededed;
14
- }
15
- }
16
-
17
  body {
18
- color: var(--foreground);
19
- background: var(--background);
20
  font-family: Arial, Helvetica, sans-serif;
21
  }
22
 
@@ -25,3 +11,68 @@ body {
25
  text-wrap: balance;
26
  }
27
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2
  @tailwind components;
3
  @tailwind utilities;
4
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  body {
 
 
6
  font-family: Arial, Helvetica, sans-serif;
7
  }
8
 
 
11
  text-wrap: balance;
12
  }
13
  }
14
+
15
+ @layer base {
16
+ :root {
17
+ --background: 0 0% 100%;
18
+ --foreground: 224 71.4% 4.1%;
19
+ --card: 0 0% 100%;
20
+ --card-foreground: 224 71.4% 4.1%;
21
+ --popover: 0 0% 100%;
22
+ --popover-foreground: 224 71.4% 4.1%;
23
+ --primary: 220.9 39.3% 11%;
24
+ --primary-foreground: 210 20% 98%;
25
+ --secondary: 220 14.3% 95.9%;
26
+ --secondary-foreground: 220.9 39.3% 11%;
27
+ --muted: 220 14.3% 95.9%;
28
+ --muted-foreground: 220 8.9% 46.1%;
29
+ --accent: 220 14.3% 95.9%;
30
+ --accent-foreground: 220.9 39.3% 11%;
31
+ --destructive: 0 84.2% 60.2%;
32
+ --destructive-foreground: 210 20% 98%;
33
+ --border: 220 13% 91%;
34
+ --input: 220 13% 91%;
35
+ --ring: 224 71.4% 4.1%;
36
+ --chart-1: 12 76% 61%;
37
+ --chart-2: 173 58% 39%;
38
+ --chart-3: 197 37% 24%;
39
+ --chart-4: 43 74% 66%;
40
+ --chart-5: 27 87% 67%;
41
+ --radius: 0.5rem;
42
+ }
43
+ .dark {
44
+ --background: 224 71.4% 4.1%;
45
+ --foreground: 210 20% 98%;
46
+ --card: 224 71.4% 4.1%;
47
+ --card-foreground: 210 20% 98%;
48
+ --popover: 224 71.4% 4.1%;
49
+ --popover-foreground: 210 20% 98%;
50
+ --primary: 210 20% 98%;
51
+ --primary-foreground: 220.9 39.3% 11%;
52
+ --secondary: 215 27.9% 16.9%;
53
+ --secondary-foreground: 210 20% 98%;
54
+ --muted: 215 27.9% 16.9%;
55
+ --muted-foreground: 217.9 10.6% 64.9%;
56
+ --accent: 215 27.9% 16.9%;
57
+ --accent-foreground: 210 20% 98%;
58
+ --destructive: 0 62.8% 30.6%;
59
+ --destructive-foreground: 210 20% 98%;
60
+ --border: 215 27.9% 16.9%;
61
+ --input: 215 27.9% 16.9%;
62
+ --ring: 216 12.2% 83.9%;
63
+ --chart-1: 220 70% 50%;
64
+ --chart-2: 160 60% 45%;
65
+ --chart-3: 30 80% 55%;
66
+ --chart-4: 280 65% 60%;
67
+ --chart-5: 340 75% 55%;
68
+ }
69
+ }
70
+
71
+ @layer base {
72
+ * {
73
+ @apply border-border;
74
+ }
75
+ body {
76
+ @apply bg-background text-foreground;
77
+ }
78
+ }
app/page.tsx CHANGED
@@ -1,101 +1,11 @@
1
- import Image from "next/image";
2
 
 
 
 
3
  export default function Home() {
4
  return (
5
- <div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]">
6
- <main className="flex flex-col gap-8 row-start-2 items-center sm:items-start">
7
- <Image
8
- className="dark:invert"
9
- src="https://nextjs.org/icons/next.svg"
10
- alt="Next.js logo"
11
- width={180}
12
- height={38}
13
- priority
14
- />
15
- <ol className="list-inside list-decimal text-sm text-center sm:text-left font-[family-name:var(--font-geist-mono)]">
16
- <li className="mb-2">
17
- Get started by editing{" "}
18
- <code className="bg-black/[.05] dark:bg-white/[.06] px-1 py-0.5 rounded font-semibold">
19
- app/page.tsx
20
- </code>
21
- .
22
- </li>
23
- <li>Save and see your changes instantly.</li>
24
- </ol>
25
-
26
- <div className="flex gap-4 items-center flex-col sm:flex-row">
27
- <a
28
- className="rounded-full border border-solid border-transparent transition-colors flex items-center justify-center bg-foreground text-background gap-2 hover:bg-[#383838] dark:hover:bg-[#ccc] text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5"
29
- href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
30
- target="_blank"
31
- rel="noopener noreferrer"
32
- >
33
- <Image
34
- className="dark:invert"
35
- src="https://nextjs.org/icons/vercel.svg"
36
- alt="Vercel logomark"
37
- width={20}
38
- height={20}
39
- />
40
- Deploy now
41
- </a>
42
- <a
43
- className="rounded-full border border-solid border-black/[.08] dark:border-white/[.145] transition-colors flex items-center justify-center hover:bg-[#f2f2f2] dark:hover:bg-[#1a1a1a] hover:border-transparent text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5 sm:min-w-44"
44
- href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
45
- target="_blank"
46
- rel="noopener noreferrer"
47
- >
48
- Read our docs
49
- </a>
50
- </div>
51
- </main>
52
- <footer className="row-start-3 flex gap-6 flex-wrap items-center justify-center">
53
- <a
54
- className="flex items-center gap-2 hover:underline hover:underline-offset-4"
55
- href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
56
- target="_blank"
57
- rel="noopener noreferrer"
58
- >
59
- <Image
60
- aria-hidden
61
- src="https://nextjs.org/icons/file.svg"
62
- alt="File icon"
63
- width={16}
64
- height={16}
65
- />
66
- Learn
67
- </a>
68
- <a
69
- className="flex items-center gap-2 hover:underline hover:underline-offset-4"
70
- href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
71
- target="_blank"
72
- rel="noopener noreferrer"
73
- >
74
- <Image
75
- aria-hidden
76
- src="https://nextjs.org/icons/window.svg"
77
- alt="Window icon"
78
- width={16}
79
- height={16}
80
- />
81
- Examples
82
- </a>
83
- <a
84
- className="flex items-center gap-2 hover:underline hover:underline-offset-4"
85
- href="https://nextjs.org?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
86
- target="_blank"
87
- rel="noopener noreferrer"
88
- >
89
- <Image
90
- aria-hidden
91
- src="https://nextjs.org/icons/globe.svg"
92
- alt="Globe icon"
93
- width={16}
94
- height={16}
95
- />
96
- Go to nextjs.org →
97
- </a>
98
- </footer>
99
- </div>
100
  );
101
  }
 
 
1
 
2
+ import Image from "next/image";
3
+ import Link from "next/link";
4
+ import Navbar from "@/components/navbar";
5
  export default function Home() {
6
  return (
7
+ <>
8
+ <Navbar/>
9
+ </>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
  );
11
  }
components.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "$schema": "https://ui.shadcn.com/schema.json",
3
+ "style": "default",
4
+ "rsc": true,
5
+ "tsx": true,
6
+ "tailwind": {
7
+ "config": "tailwind.config.ts",
8
+ "css": "app/globals.css",
9
+ "baseColor": "gray",
10
+ "cssVariables": true,
11
+ "prefix": ""
12
+ },
13
+ "aliases": {
14
+ "components": "@/components",
15
+ "utils": "@/lib/utils",
16
+ "ui": "@/components/ui",
17
+ "lib": "@/lib",
18
+ "hooks": "@/hooks"
19
+ },
20
+ "iconLibrary": "lucide"
21
+ }
components/hero.tsx ADDED
File without changes
components/navbar.tsx ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Code: Navbar component
2
+ 'use client';
3
+ const Navbar = () => {
4
+ return (
5
+ <div className="sticky top-0 z-50 w-full border-b border-primary/10 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60">
6
+ <div className="container flex h-14 items-center">
7
+ <div className="mr-4 flex">
8
+ <a href="/" className="mr-6 flex items-center space-x-2">
9
+ <img
10
+ src="https://hebbkx1anhila5yf.public.blob.vercel-storage.com/Rectangle%20311-x2JIzj8qEIOhKdy6PDRhjTijzC2ERf.png"
11
+ alt="Logo"
12
+ width={24}
13
+ height={24}
14
+ className="h-6 w-6"
15
+ />
16
+ <span className="hidden font-bold sm:inline-block text-primary">
17
+ Reuben Fernandes
18
+ </span>
19
+ </a>
20
+ </div>
21
+ <nav className="flex flex-1 items-center justify-center space-x-6 text-sm font-medium">
22
+ <a href="#about" className="transition-colors hover:text-primary">About</a>
23
+ <a href="#projects" className="transition-colors hover:text-primary">Projects</a>
24
+ <a href="#skills" className="transition-colors hover:text-primary">Skills</a>
25
+ <a href="#contact" className="transition-colors hover:text-primary">Contact</a>
26
+ </nav>
27
+ </div>
28
+ </div>
29
+ )
30
+ }
31
+
32
+ export default Navbar
components/ui/line-shadow-text.tsx ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { cn } from "@/lib/utils";
2
+ import { motion, MotionProps } from "motion/react";
3
+
4
+ interface LineShadowTextProps
5
+ extends Omit<React.HTMLAttributes<HTMLElement>, keyof MotionProps>,
6
+ MotionProps {
7
+ shadowColor?: string;
8
+ as?: React.ElementType;
9
+ }
10
+
11
+ export function LineShadowText({
12
+ children,
13
+ shadowColor = "black",
14
+ className,
15
+ as: Component = "span",
16
+ ...props
17
+ }: LineShadowTextProps) {
18
+ const MotionComponent = motion.create(Component);
19
+ const content = typeof children === "string" ? children : null;
20
+
21
+ if (!content) {
22
+ throw new Error("LineShadowText only accepts string content");
23
+ }
24
+
25
+ return (
26
+ <MotionComponent
27
+ style={{ "--shadow-color": shadowColor } as React.CSSProperties}
28
+ className={cn(
29
+ "relative z-0 inline-flex",
30
+ "after:absolute after:left-[0.04em] after:top-[0.04em] after:content-[attr(data-text)]",
31
+ "after:bg-[linear-gradient(45deg,transparent_45%,var(--shadow-color)_45%,var(--shadow-color)_55%,transparent_0)]",
32
+ "after:-z-10 after:bg-[length:0.06em_0.06em] after:bg-clip-text after:text-transparent",
33
+ "after:animate-line-shadow",
34
+ className,
35
+ )}
36
+ data-text={content}
37
+ {...props}
38
+ >
39
+ {content}
40
+ </MotionComponent>
41
+ );
42
+ }
components/ui/meteors.tsx ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client";
2
+
3
+ import { useEffect, useState } from "react";
4
+
5
+ import { cn } from "@/lib/utils";
6
+
7
+ interface MeteorsProps extends React.HTMLAttributes<HTMLSpanElement> {
8
+ number?: number;
9
+ }
10
+ export const Meteors = ({ number = 20, ...props }: MeteorsProps) => {
11
+ const [meteorStyles, setMeteorStyles] = useState<Array<React.CSSProperties>>(
12
+ [],
13
+ );
14
+
15
+ useEffect(() => {
16
+ const styles = [...new Array(number)].map(() => ({
17
+ top: -5,
18
+ left: Math.floor(Math.random() * window.innerWidth) + "px",
19
+ animationDelay: Math.random() * 1 + 0.2 + "s",
20
+ animationDuration: Math.floor(Math.random() * 8 + 2) + "s",
21
+ }));
22
+ setMeteorStyles(styles);
23
+ }, [number]);
24
+
25
+ return (
26
+ <>
27
+ {[...meteorStyles].map((style, idx) => (
28
+ // Meteor Head
29
+ <span
30
+ key={idx}
31
+ className={cn(
32
+ "pointer-events-none absolute left-1/2 top-1/2 size-0.5 rotate-[215deg] animate-meteor rounded-full bg-slate-500 shadow-[0_0_0_1px_#ffffff10]",
33
+ )}
34
+ style={style}
35
+ {...props}
36
+ >
37
+ {/* Meteor Tail */}
38
+ <div className="pointer-events-none absolute top-1/2 -z-10 h-px w-[50px] -translate-y-1/2 bg-gradient-to-r from-slate-500 to-transparent" />
39
+ </span>
40
+ ))}
41
+ </>
42
+ );
43
+ };
components/ui/skeleton.tsx ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { cn } from "@/lib/utils"
2
+
3
+ function Skeleton({
4
+ className,
5
+ ...props
6
+ }: React.HTMLAttributes<HTMLDivElement>) {
7
+ return (
8
+ <div
9
+ className={cn("animate-pulse rounded-md bg-muted", className)}
10
+ {...props}
11
+ />
12
+ )
13
+ }
14
+
15
+ export { Skeleton }
components/ui/text-animate.tsx ADDED
@@ -0,0 +1,386 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ "use client";
2
+
3
+ import { cn } from "@/lib/utils";
4
+ import { AnimatePresence, motion, MotionProps, Variants } from "motion/react";
5
+ import { ElementType } from "react";
6
+
7
+ type AnimationType = "text" | "word" | "character" | "line";
8
+ type AnimationVariant =
9
+ | "fadeIn"
10
+ | "blurIn"
11
+ | "blurInUp"
12
+ | "blurInDown"
13
+ | "slideUp"
14
+ | "slideDown"
15
+ | "slideLeft"
16
+ | "slideRight"
17
+ | "scaleUp"
18
+ | "scaleDown";
19
+
20
+ interface TextAnimateProps extends MotionProps {
21
+ /**
22
+ * The text content to animate
23
+ */
24
+ children: string;
25
+ /**
26
+ * The class name to be applied to the component
27
+ */
28
+ className?: string;
29
+ /**
30
+ * The class name to be applied to each segment
31
+ */
32
+ segmentClassName?: string;
33
+ /**
34
+ * The delay before the animation starts
35
+ */
36
+ delay?: number;
37
+ /**
38
+ * The duration of the animation
39
+ */
40
+ duration?: number;
41
+ /**
42
+ * Custom motion variants for the animation
43
+ */
44
+ variants?: Variants;
45
+ /**
46
+ * The element type to render
47
+ */
48
+ as?: ElementType;
49
+ /**
50
+ * How to split the text ("text", "word", "character")
51
+ */
52
+ by?: AnimationType;
53
+ /**
54
+ * Whether to start animation when component enters viewport
55
+ */
56
+ startOnView?: boolean;
57
+ /**
58
+ * Whether to animate only once
59
+ */
60
+ once?: boolean;
61
+ /**
62
+ * The animation preset to use
63
+ */
64
+ animation?: AnimationVariant;
65
+ }
66
+
67
+ const staggerTimings: Record<AnimationType, number> = {
68
+ text: 0.06,
69
+ word: 0.05,
70
+ character: 0.03,
71
+ line: 0.06,
72
+ };
73
+
74
+ const defaultContainerVariants = {
75
+ hidden: { opacity: 1 },
76
+ show: {
77
+ opacity: 1,
78
+ transition: {
79
+ staggerChildren: 0.05,
80
+ },
81
+ },
82
+ exit: {
83
+ opacity: 0,
84
+ transition: {
85
+ staggerChildren: 0.05,
86
+ staggerDirection: -1,
87
+ },
88
+ },
89
+ };
90
+
91
+ const defaultItemVariants: Variants = {
92
+ hidden: { opacity: 0 },
93
+ show: {
94
+ opacity: 1,
95
+ },
96
+ exit: {
97
+ opacity: 0,
98
+ },
99
+ };
100
+
101
+ const defaultItemAnimationVariants: Record<
102
+ AnimationVariant,
103
+ { container: Variants; item: Variants }
104
+ > = {
105
+ fadeIn: {
106
+ container: defaultContainerVariants,
107
+ item: {
108
+ hidden: { opacity: 0, y: 20 },
109
+ show: (delay: number) => ({
110
+ opacity: 1,
111
+ y: 0,
112
+ transition: {
113
+ delay,
114
+ duration: 0.3,
115
+ },
116
+ }),
117
+ exit: {
118
+ opacity: 0,
119
+ y: 20,
120
+ transition: { duration: 0.3 },
121
+ },
122
+ },
123
+ },
124
+ blurIn: {
125
+ container: defaultContainerVariants,
126
+ item: {
127
+ hidden: { opacity: 0, filter: "blur(10px)" },
128
+ show: (i: number) => ({
129
+ opacity: 1,
130
+ filter: "blur(0px)",
131
+ transition: {
132
+ delay: i * 0.1,
133
+ duration: 0.3,
134
+ },
135
+ }),
136
+ exit: {
137
+ opacity: 0,
138
+ filter: "blur(10px)",
139
+ transition: { duration: 0.3 },
140
+ },
141
+ },
142
+ },
143
+ blurInUp: {
144
+ container: defaultContainerVariants,
145
+ item: {
146
+ hidden: { opacity: 0, filter: "blur(10px)", y: 20 },
147
+ show: (delay: number) => ({
148
+ opacity: 1,
149
+ filter: "blur(0px)",
150
+ y: 0,
151
+ transition: {
152
+ y: { duration: 0.3 },
153
+ opacity: { duration: 0.4 },
154
+ filter: { duration: 0.3 },
155
+ },
156
+ }),
157
+ exit: {
158
+ opacity: 0,
159
+ filter: "blur(10px)",
160
+ y: 20,
161
+ transition: {
162
+ y: { duration: 0.3 },
163
+ opacity: { duration: 0.4 },
164
+ filter: { duration: 0.3 },
165
+ },
166
+ },
167
+ },
168
+ },
169
+ blurInDown: {
170
+ container: defaultContainerVariants,
171
+ item: {
172
+ hidden: { opacity: 0, filter: "blur(10px)", y: -20 },
173
+ show: (delay: number) => ({
174
+ opacity: 1,
175
+ filter: "blur(0px)",
176
+ y: 0,
177
+ transition: {
178
+ y: { duration: 0.3 },
179
+ opacity: { duration: 0.4 },
180
+ filter: { duration: 0.3 },
181
+ },
182
+ }),
183
+ },
184
+ },
185
+ slideUp: {
186
+ container: defaultContainerVariants,
187
+ item: {
188
+ hidden: { y: 20, opacity: 0 },
189
+ show: (delay: number) => ({
190
+ y: 0,
191
+ opacity: 1,
192
+ transition: {
193
+ delay,
194
+ duration: 0.3,
195
+ },
196
+ }),
197
+ exit: {
198
+ y: -20,
199
+ opacity: 0,
200
+ transition: {
201
+ duration: 0.3,
202
+ },
203
+ },
204
+ },
205
+ },
206
+ slideDown: {
207
+ container: defaultContainerVariants,
208
+ item: {
209
+ hidden: { y: -20, opacity: 0 },
210
+ show: {
211
+ y: 0,
212
+ opacity: 1,
213
+ transition: { duration: 0.3 },
214
+ },
215
+ exit: {
216
+ y: 20,
217
+ opacity: 0,
218
+ transition: { duration: 0.3 },
219
+ },
220
+ },
221
+ },
222
+ slideLeft: {
223
+ container: defaultContainerVariants,
224
+ item: {
225
+ hidden: { x: 20, opacity: 0 },
226
+ show: {
227
+ x: 0,
228
+ opacity: 1,
229
+ transition: { duration: 0.3 },
230
+ },
231
+ exit: {
232
+ x: -20,
233
+ opacity: 0,
234
+ transition: { duration: 0.3 },
235
+ },
236
+ },
237
+ },
238
+ slideRight: {
239
+ container: defaultContainerVariants,
240
+ item: {
241
+ hidden: { x: -20, opacity: 0 },
242
+ show: {
243
+ x: 0,
244
+ opacity: 1,
245
+ transition: { duration: 0.3 },
246
+ },
247
+ exit: {
248
+ x: 20,
249
+ opacity: 0,
250
+ transition: { duration: 0.3 },
251
+ },
252
+ },
253
+ },
254
+ scaleUp: {
255
+ container: defaultContainerVariants,
256
+ item: {
257
+ hidden: { scale: 0.5, opacity: 0 },
258
+ show: {
259
+ scale: 1,
260
+ opacity: 1,
261
+ transition: {
262
+ duration: 0.3,
263
+ scale: {
264
+ type: "spring",
265
+ damping: 15,
266
+ stiffness: 300,
267
+ },
268
+ },
269
+ },
270
+ exit: {
271
+ scale: 0.5,
272
+ opacity: 0,
273
+ transition: { duration: 0.3 },
274
+ },
275
+ },
276
+ },
277
+ scaleDown: {
278
+ container: defaultContainerVariants,
279
+ item: {
280
+ hidden: { scale: 1.5, opacity: 0 },
281
+ show: (delay: number) => ({
282
+ scale: 1,
283
+ opacity: 1,
284
+ transition: {
285
+ delay,
286
+ duration: 0.3,
287
+ scale: {
288
+ type: "spring",
289
+ damping: 15,
290
+ stiffness: 300,
291
+ },
292
+ },
293
+ }),
294
+ exit: {
295
+ scale: 1.5,
296
+ opacity: 0,
297
+ transition: { duration: 0.3 },
298
+ },
299
+ },
300
+ },
301
+ };
302
+
303
+ export function TextAnimate({
304
+ children,
305
+ delay = 0,
306
+ duration = 0.3,
307
+ variants,
308
+ className,
309
+ segmentClassName,
310
+ as: Component = "p",
311
+ startOnView = true,
312
+ once = false,
313
+ by = "word",
314
+ animation = "fadeIn",
315
+ ...props
316
+ }: TextAnimateProps) {
317
+ const MotionComponent = motion.create(Component);
318
+
319
+ // Use provided variants or default variants based on animation type
320
+ const finalVariants = animation
321
+ ? {
322
+ container: {
323
+ ...defaultItemAnimationVariants[animation].container,
324
+ show: {
325
+ ...defaultItemAnimationVariants[animation].container.show,
326
+ transition: {
327
+ staggerChildren: staggerTimings[by],
328
+ },
329
+ },
330
+ exit: {
331
+ ...defaultItemAnimationVariants[animation].container.exit,
332
+ transition: {
333
+ staggerChildren: staggerTimings[by],
334
+ staggerDirection: -1,
335
+ },
336
+ },
337
+ },
338
+ item: defaultItemAnimationVariants[animation].item,
339
+ }
340
+ : { container: defaultContainerVariants, item: defaultItemVariants };
341
+
342
+ let segments: string[] = [];
343
+ switch (by) {
344
+ case "word":
345
+ segments = children.split(/(\s+)/);
346
+ break;
347
+ case "character":
348
+ segments = children.split("");
349
+ break;
350
+ case "line":
351
+ segments = children.split("\n");
352
+ break;
353
+ case "text":
354
+ default:
355
+ segments = [children];
356
+ break;
357
+ }
358
+
359
+ return (
360
+ <AnimatePresence mode="popLayout">
361
+ <MotionComponent
362
+ variants={finalVariants.container}
363
+ initial="hidden"
364
+ whileInView={startOnView ? "show" : undefined}
365
+ animate={startOnView ? undefined : "show"}
366
+ exit="exit"
367
+ className={cn("whitespace-pre-wrap", className)}
368
+ {...props}
369
+ >
370
+ {segments.map((segment, i) => (
371
+ <motion.span
372
+ key={`${by}-${segment}-${i}`}
373
+ variants={finalVariants.item}
374
+ custom={i * staggerTimings[by]}
375
+ className={cn(
376
+ by === "line" ? "block" : "inline-block whitespace-pre",
377
+ segmentClassName,
378
+ )}
379
+ >
380
+ {segment}
381
+ </motion.span>
382
+ ))}
383
+ </MotionComponent>
384
+ </AnimatePresence>
385
+ );
386
+ }
lib/utils.ts ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ import { clsx, type ClassValue } from "clsx"
2
+ import { twMerge } from "tailwind-merge"
3
+
4
+ export function cn(...inputs: ClassValue[]) {
5
+ return twMerge(clsx(inputs))
6
+ }
package-lock.json CHANGED
@@ -8,9 +8,15 @@
8
  "name": "reuben-fernandes",
9
  "version": "0.1.0",
10
  "dependencies": {
 
 
 
 
11
  "next": "14.2.23",
12
  "react": "^18",
13
- "react-dom": "^18"
 
 
14
  },
15
  "devDependencies": {
16
  "@types/node": "^20",
@@ -27,7 +33,6 @@
27
  "version": "5.2.0",
28
  "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
29
  "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
30
- "dev": true,
31
  "license": "MIT",
32
  "engines": {
33
  "node": ">=10"
@@ -141,7 +146,6 @@
141
  "version": "8.0.2",
142
  "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
143
  "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
144
- "dev": true,
145
  "license": "ISC",
146
  "dependencies": {
147
  "string-width": "^5.1.2",
@@ -159,7 +163,6 @@
159
  "version": "6.1.0",
160
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
161
  "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
162
- "dev": true,
163
  "license": "MIT",
164
  "engines": {
165
  "node": ">=12"
@@ -172,7 +175,6 @@
172
  "version": "7.1.0",
173
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
174
  "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
175
- "dev": true,
176
  "license": "MIT",
177
  "dependencies": {
178
  "ansi-regex": "^6.0.1"
@@ -188,7 +190,6 @@
188
  "version": "0.3.8",
189
  "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
190
  "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
191
- "dev": true,
192
  "license": "MIT",
193
  "dependencies": {
194
  "@jridgewell/set-array": "^1.2.1",
@@ -203,7 +204,6 @@
203
  "version": "3.1.2",
204
  "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
205
  "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
206
- "dev": true,
207
  "license": "MIT",
208
  "engines": {
209
  "node": ">=6.0.0"
@@ -213,7 +213,6 @@
213
  "version": "1.2.1",
214
  "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
215
  "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
216
- "dev": true,
217
  "license": "MIT",
218
  "engines": {
219
  "node": ">=6.0.0"
@@ -223,14 +222,12 @@
223
  "version": "1.5.0",
224
  "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
225
  "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
226
- "dev": true,
227
  "license": "MIT"
228
  },
229
  "node_modules/@jridgewell/trace-mapping": {
230
  "version": "0.3.25",
231
  "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
232
  "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
233
- "dev": true,
234
  "license": "MIT",
235
  "dependencies": {
236
  "@jridgewell/resolve-uri": "^3.1.0",
@@ -401,7 +398,6 @@
401
  "version": "2.1.5",
402
  "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
403
  "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
404
- "dev": true,
405
  "license": "MIT",
406
  "dependencies": {
407
  "@nodelib/fs.stat": "2.0.5",
@@ -415,7 +411,6 @@
415
  "version": "2.0.5",
416
  "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
417
  "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
418
- "dev": true,
419
  "license": "MIT",
420
  "engines": {
421
  "node": ">= 8"
@@ -425,7 +420,6 @@
425
  "version": "1.2.8",
426
  "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
427
  "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
428
- "dev": true,
429
  "license": "MIT",
430
  "dependencies": {
431
  "@nodelib/fs.scandir": "2.1.5",
@@ -449,7 +443,6 @@
449
  "version": "0.11.0",
450
  "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
451
  "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
452
- "dev": true,
453
  "license": "MIT",
454
  "optional": true,
455
  "engines": {
@@ -801,7 +794,6 @@
801
  "version": "5.0.1",
802
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
803
  "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
804
- "dev": true,
805
  "license": "MIT",
806
  "engines": {
807
  "node": ">=8"
@@ -811,7 +803,6 @@
811
  "version": "4.3.0",
812
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
813
  "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
814
- "dev": true,
815
  "license": "MIT",
816
  "dependencies": {
817
  "color-convert": "^2.0.1"
@@ -827,14 +818,12 @@
827
  "version": "1.3.0",
828
  "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
829
  "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
830
- "dev": true,
831
  "license": "MIT"
832
  },
833
  "node_modules/anymatch": {
834
  "version": "3.1.3",
835
  "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
836
  "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
837
- "dev": true,
838
  "license": "ISC",
839
  "dependencies": {
840
  "normalize-path": "^3.0.0",
@@ -848,7 +837,6 @@
848
  "version": "5.0.2",
849
  "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
850
  "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
851
- "dev": true,
852
  "license": "MIT"
853
  },
854
  "node_modules/argparse": {
@@ -1072,14 +1060,12 @@
1072
  "version": "1.0.2",
1073
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1074
  "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
1075
- "dev": true,
1076
  "license": "MIT"
1077
  },
1078
  "node_modules/binary-extensions": {
1079
  "version": "2.3.0",
1080
  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
1081
  "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
1082
- "dev": true,
1083
  "license": "MIT",
1084
  "engines": {
1085
  "node": ">=8"
@@ -1103,7 +1089,6 @@
1103
  "version": "3.0.3",
1104
  "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1105
  "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
1106
- "dev": true,
1107
  "license": "MIT",
1108
  "dependencies": {
1109
  "fill-range": "^7.1.1"
@@ -1187,7 +1172,6 @@
1187
  "version": "2.0.1",
1188
  "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1189
  "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
1190
- "dev": true,
1191
  "license": "MIT",
1192
  "engines": {
1193
  "node": ">= 6"
@@ -1234,7 +1218,6 @@
1234
  "version": "3.6.0",
1235
  "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
1236
  "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
1237
- "dev": true,
1238
  "license": "MIT",
1239
  "dependencies": {
1240
  "anymatch": "~3.1.2",
@@ -1259,7 +1242,6 @@
1259
  "version": "5.1.2",
1260
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1261
  "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
1262
- "dev": true,
1263
  "license": "ISC",
1264
  "dependencies": {
1265
  "is-glob": "^4.0.1"
@@ -1268,17 +1250,37 @@
1268
  "node": ">= 6"
1269
  }
1270
  },
 
 
 
 
 
 
 
 
 
 
 
 
1271
  "node_modules/client-only": {
1272
  "version": "0.0.1",
1273
  "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
1274
  "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
1275
  "license": "MIT"
1276
  },
 
 
 
 
 
 
 
 
 
1277
  "node_modules/color-convert": {
1278
  "version": "2.0.1",
1279
  "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1280
  "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
1281
- "dev": true,
1282
  "license": "MIT",
1283
  "dependencies": {
1284
  "color-name": "~1.1.4"
@@ -1291,14 +1293,12 @@
1291
  "version": "1.1.4",
1292
  "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1293
  "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
1294
- "dev": true,
1295
  "license": "MIT"
1296
  },
1297
  "node_modules/commander": {
1298
  "version": "4.1.1",
1299
  "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1300
  "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
1301
- "dev": true,
1302
  "license": "MIT",
1303
  "engines": {
1304
  "node": ">= 6"
@@ -1315,7 +1315,6 @@
1315
  "version": "7.0.6",
1316
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1317
  "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
1318
- "dev": true,
1319
  "license": "MIT",
1320
  "dependencies": {
1321
  "path-key": "^3.1.0",
@@ -1330,7 +1329,6 @@
1330
  "version": "3.0.0",
1331
  "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1332
  "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
1333
- "dev": true,
1334
  "license": "MIT",
1335
  "bin": {
1336
  "cssesc": "bin/cssesc"
@@ -1472,14 +1470,12 @@
1472
  "version": "1.2.2",
1473
  "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1474
  "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
1475
- "dev": true,
1476
  "license": "Apache-2.0"
1477
  },
1478
  "node_modules/dlv": {
1479
  "version": "1.1.3",
1480
  "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1481
  "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
1482
- "dev": true,
1483
  "license": "MIT"
1484
  },
1485
  "node_modules/doctrine": {
@@ -1514,14 +1510,12 @@
1514
  "version": "0.2.0",
1515
  "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1516
  "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
1517
- "dev": true,
1518
  "license": "MIT"
1519
  },
1520
  "node_modules/emoji-regex": {
1521
  "version": "9.2.2",
1522
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1523
  "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
1524
- "dev": true,
1525
  "license": "MIT"
1526
  },
1527
  "node_modules/enhanced-resolve": {
@@ -2182,7 +2176,6 @@
2182
  "version": "3.3.3",
2183
  "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
2184
  "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
2185
- "dev": true,
2186
  "license": "MIT",
2187
  "dependencies": {
2188
  "@nodelib/fs.stat": "^2.0.2",
@@ -2199,7 +2192,6 @@
2199
  "version": "5.1.2",
2200
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
2201
  "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
2202
- "dev": true,
2203
  "license": "ISC",
2204
  "dependencies": {
2205
  "is-glob": "^4.0.1"
@@ -2226,7 +2218,6 @@
2226
  "version": "1.18.0",
2227
  "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
2228
  "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
2229
- "dev": true,
2230
  "license": "ISC",
2231
  "dependencies": {
2232
  "reusify": "^1.0.4"
@@ -2249,7 +2240,6 @@
2249
  "version": "7.1.1",
2250
  "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
2251
  "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
2252
- "dev": true,
2253
  "license": "MIT",
2254
  "dependencies": {
2255
  "to-regex-range": "^5.0.1"
@@ -2311,7 +2301,6 @@
2311
  "version": "3.3.0",
2312
  "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
2313
  "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
2314
- "dev": true,
2315
  "license": "ISC",
2316
  "dependencies": {
2317
  "cross-spawn": "^7.0.0",
@@ -2324,6 +2313,33 @@
2324
  "url": "https://github.com/sponsors/isaacs"
2325
  }
2326
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2327
  "node_modules/fs.realpath": {
2328
  "version": "1.0.0",
2329
  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
@@ -2335,7 +2351,6 @@
2335
  "version": "2.3.3",
2336
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
2337
  "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
2338
- "dev": true,
2339
  "hasInstallScript": true,
2340
  "license": "MIT",
2341
  "optional": true,
@@ -2350,7 +2365,6 @@
2350
  "version": "1.1.2",
2351
  "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
2352
  "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
2353
- "dev": true,
2354
  "license": "MIT",
2355
  "funding": {
2356
  "url": "https://github.com/sponsors/ljharb"
@@ -2461,7 +2475,6 @@
2461
  "version": "10.3.10",
2462
  "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
2463
  "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
2464
- "dev": true,
2465
  "license": "ISC",
2466
  "dependencies": {
2467
  "foreground-child": "^3.1.0",
@@ -2484,7 +2497,6 @@
2484
  "version": "6.0.2",
2485
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2486
  "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2487
- "dev": true,
2488
  "license": "ISC",
2489
  "dependencies": {
2490
  "is-glob": "^4.0.3"
@@ -2497,7 +2509,6 @@
2497
  "version": "2.0.1",
2498
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
2499
  "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
2500
- "dev": true,
2501
  "license": "MIT",
2502
  "dependencies": {
2503
  "balanced-match": "^1.0.0"
@@ -2507,7 +2518,6 @@
2507
  "version": "9.0.5",
2508
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
2509
  "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
2510
- "dev": true,
2511
  "license": "ISC",
2512
  "dependencies": {
2513
  "brace-expansion": "^2.0.1"
@@ -2663,7 +2673,6 @@
2663
  "version": "2.0.2",
2664
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
2665
  "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
2666
- "dev": true,
2667
  "license": "MIT",
2668
  "dependencies": {
2669
  "function-bind": "^1.1.2"
@@ -2800,7 +2809,6 @@
2800
  "version": "2.1.0",
2801
  "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
2802
  "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
2803
- "dev": true,
2804
  "license": "MIT",
2805
  "dependencies": {
2806
  "binary-extensions": "^2.0.0"
@@ -2853,7 +2861,6 @@
2853
  "version": "2.16.1",
2854
  "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
2855
  "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
2856
- "dev": true,
2857
  "license": "MIT",
2858
  "dependencies": {
2859
  "hasown": "^2.0.2"
@@ -2904,7 +2911,6 @@
2904
  "version": "2.1.1",
2905
  "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2906
  "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
2907
- "dev": true,
2908
  "license": "MIT",
2909
  "engines": {
2910
  "node": ">=0.10.0"
@@ -2930,7 +2936,6 @@
2930
  "version": "3.0.0",
2931
  "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
2932
  "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
2933
- "dev": true,
2934
  "license": "MIT",
2935
  "engines": {
2936
  "node": ">=8"
@@ -2959,7 +2964,6 @@
2959
  "version": "4.0.3",
2960
  "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2961
  "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2962
- "dev": true,
2963
  "license": "MIT",
2964
  "dependencies": {
2965
  "is-extglob": "^2.1.1"
@@ -2985,7 +2989,6 @@
2985
  "version": "7.0.0",
2986
  "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2987
  "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
2988
- "dev": true,
2989
  "license": "MIT",
2990
  "engines": {
2991
  "node": ">=0.12.0"
@@ -3174,7 +3177,6 @@
3174
  "version": "2.0.0",
3175
  "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
3176
  "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
3177
- "dev": true,
3178
  "license": "ISC"
3179
  },
3180
  "node_modules/iterator.prototype": {
@@ -3199,7 +3201,6 @@
3199
  "version": "2.3.6",
3200
  "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
3201
  "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
3202
- "dev": true,
3203
  "license": "BlueOak-1.0.0",
3204
  "dependencies": {
3205
  "@isaacs/cliui": "^8.0.2"
@@ -3218,7 +3219,6 @@
3218
  "version": "1.21.7",
3219
  "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
3220
  "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
3221
- "dev": true,
3222
  "license": "MIT",
3223
  "bin": {
3224
  "jiti": "bin/jiti.js"
@@ -3341,7 +3341,6 @@
3341
  "version": "3.1.3",
3342
  "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
3343
  "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
3344
- "dev": true,
3345
  "license": "MIT",
3346
  "engines": {
3347
  "node": ">=14"
@@ -3354,7 +3353,6 @@
3354
  "version": "1.2.4",
3355
  "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
3356
  "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
3357
- "dev": true,
3358
  "license": "MIT"
3359
  },
3360
  "node_modules/locate-path": {
@@ -3396,9 +3394,17 @@
3396
  "version": "10.4.3",
3397
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
3398
  "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
3399
- "dev": true,
3400
  "license": "ISC"
3401
  },
 
 
 
 
 
 
 
 
 
3402
  "node_modules/math-intrinsics": {
3403
  "version": "1.1.0",
3404
  "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
@@ -3413,7 +3419,6 @@
3413
  "version": "1.4.1",
3414
  "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
3415
  "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
3416
- "dev": true,
3417
  "license": "MIT",
3418
  "engines": {
3419
  "node": ">= 8"
@@ -3423,7 +3428,6 @@
3423
  "version": "4.0.8",
3424
  "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
3425
  "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
3426
- "dev": true,
3427
  "license": "MIT",
3428
  "dependencies": {
3429
  "braces": "^3.0.3",
@@ -3460,12 +3464,52 @@
3460
  "version": "7.1.2",
3461
  "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
3462
  "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
3463
- "dev": true,
3464
  "license": "ISC",
3465
  "engines": {
3466
  "node": ">=16 || 14 >=14.17"
3467
  }
3468
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3469
  "node_modules/ms": {
3470
  "version": "2.1.3",
3471
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -3477,7 +3521,6 @@
3477
  "version": "2.7.0",
3478
  "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
3479
  "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
3480
- "dev": true,
3481
  "license": "MIT",
3482
  "dependencies": {
3483
  "any-promise": "^1.0.0",
@@ -3592,7 +3635,6 @@
3592
  "version": "3.0.0",
3593
  "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
3594
  "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
3595
- "dev": true,
3596
  "license": "MIT",
3597
  "engines": {
3598
  "node": ">=0.10.0"
@@ -3602,7 +3644,6 @@
3602
  "version": "4.1.1",
3603
  "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3604
  "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
3605
- "dev": true,
3606
  "license": "MIT",
3607
  "engines": {
3608
  "node": ">=0.10.0"
@@ -3612,7 +3653,6 @@
3612
  "version": "3.0.0",
3613
  "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
3614
  "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
3615
- "dev": true,
3616
  "license": "MIT",
3617
  "engines": {
3618
  "node": ">= 6"
@@ -3845,7 +3885,6 @@
3845
  "version": "3.1.1",
3846
  "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
3847
  "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
3848
- "dev": true,
3849
  "license": "MIT",
3850
  "engines": {
3851
  "node": ">=8"
@@ -3855,14 +3894,12 @@
3855
  "version": "1.0.7",
3856
  "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
3857
  "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
3858
- "dev": true,
3859
  "license": "MIT"
3860
  },
3861
  "node_modules/path-scurry": {
3862
  "version": "1.11.1",
3863
  "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
3864
  "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
3865
- "dev": true,
3866
  "license": "BlueOak-1.0.0",
3867
  "dependencies": {
3868
  "lru-cache": "^10.2.0",
@@ -3885,7 +3922,6 @@
3885
  "version": "2.3.1",
3886
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
3887
  "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
3888
- "dev": true,
3889
  "license": "MIT",
3890
  "engines": {
3891
  "node": ">=8.6"
@@ -3898,7 +3934,6 @@
3898
  "version": "2.3.0",
3899
  "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
3900
  "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
3901
- "dev": true,
3902
  "license": "MIT",
3903
  "engines": {
3904
  "node": ">=0.10.0"
@@ -3908,7 +3943,6 @@
3908
  "version": "4.0.6",
3909
  "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
3910
  "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
3911
- "dev": true,
3912
  "license": "MIT",
3913
  "engines": {
3914
  "node": ">= 6"
@@ -3928,7 +3962,6 @@
3928
  "version": "8.5.1",
3929
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
3930
  "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
3931
- "dev": true,
3932
  "funding": [
3933
  {
3934
  "type": "opencollective",
@@ -3957,7 +3990,6 @@
3957
  "version": "15.1.0",
3958
  "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
3959
  "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
3960
- "dev": true,
3961
  "license": "MIT",
3962
  "dependencies": {
3963
  "postcss-value-parser": "^4.0.0",
@@ -3975,7 +4007,6 @@
3975
  "version": "4.0.1",
3976
  "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
3977
  "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
3978
- "dev": true,
3979
  "license": "MIT",
3980
  "dependencies": {
3981
  "camelcase-css": "^2.0.1"
@@ -3995,7 +4026,6 @@
3995
  "version": "4.0.2",
3996
  "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
3997
  "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
3998
- "dev": true,
3999
  "funding": [
4000
  {
4001
  "type": "opencollective",
@@ -4031,7 +4061,6 @@
4031
  "version": "6.2.0",
4032
  "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
4033
  "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
4034
- "dev": true,
4035
  "funding": [
4036
  {
4037
  "type": "opencollective",
@@ -4057,7 +4086,6 @@
4057
  "version": "6.1.2",
4058
  "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
4059
  "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
4060
- "dev": true,
4061
  "license": "MIT",
4062
  "dependencies": {
4063
  "cssesc": "^3.0.0",
@@ -4071,7 +4099,6 @@
4071
  "version": "4.2.0",
4072
  "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
4073
  "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
4074
- "dev": true,
4075
  "license": "MIT"
4076
  },
4077
  "node_modules/prelude-ls": {
@@ -4110,7 +4137,6 @@
4110
  "version": "1.2.3",
4111
  "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
4112
  "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
4113
- "dev": true,
4114
  "funding": [
4115
  {
4116
  "type": "github",
@@ -4163,7 +4189,6 @@
4163
  "version": "1.0.0",
4164
  "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
4165
  "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
4166
- "dev": true,
4167
  "license": "MIT",
4168
  "dependencies": {
4169
  "pify": "^2.3.0"
@@ -4173,7 +4198,6 @@
4173
  "version": "3.6.0",
4174
  "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
4175
  "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
4176
- "dev": true,
4177
  "license": "MIT",
4178
  "dependencies": {
4179
  "picomatch": "^2.2.1"
@@ -4230,7 +4254,6 @@
4230
  "version": "1.22.10",
4231
  "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
4232
  "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
4233
- "dev": true,
4234
  "license": "MIT",
4235
  "dependencies": {
4236
  "is-core-module": "^2.16.0",
@@ -4271,7 +4294,6 @@
4271
  "version": "1.0.4",
4272
  "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
4273
  "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
4274
- "dev": true,
4275
  "license": "MIT",
4276
  "engines": {
4277
  "iojs": ">=1.0.0",
@@ -4321,7 +4343,6 @@
4321
  "version": "1.2.0",
4322
  "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
4323
  "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
4324
- "dev": true,
4325
  "funding": [
4326
  {
4327
  "type": "github",
@@ -4471,7 +4492,6 @@
4471
  "version": "2.0.0",
4472
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
4473
  "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
4474
- "dev": true,
4475
  "license": "MIT",
4476
  "dependencies": {
4477
  "shebang-regex": "^3.0.0"
@@ -4484,7 +4504,6 @@
4484
  "version": "3.0.0",
4485
  "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
4486
  "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
4487
- "dev": true,
4488
  "license": "MIT",
4489
  "engines": {
4490
  "node": ">=8"
@@ -4570,7 +4589,6 @@
4570
  "version": "4.1.0",
4571
  "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
4572
  "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
4573
- "dev": true,
4574
  "license": "ISC",
4575
  "engines": {
4576
  "node": ">=14"
@@ -4607,7 +4625,6 @@
4607
  "version": "5.1.2",
4608
  "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
4609
  "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
4610
- "dev": true,
4611
  "license": "MIT",
4612
  "dependencies": {
4613
  "eastasianwidth": "^0.2.0",
@@ -4626,7 +4643,6 @@
4626
  "version": "4.2.3",
4627
  "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
4628
  "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
4629
- "dev": true,
4630
  "license": "MIT",
4631
  "dependencies": {
4632
  "emoji-regex": "^8.0.0",
@@ -4641,14 +4657,12 @@
4641
  "version": "8.0.0",
4642
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
4643
  "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
4644
- "dev": true,
4645
  "license": "MIT"
4646
  },
4647
  "node_modules/string-width/node_modules/ansi-regex": {
4648
  "version": "6.1.0",
4649
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
4650
  "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
4651
- "dev": true,
4652
  "license": "MIT",
4653
  "engines": {
4654
  "node": ">=12"
@@ -4661,7 +4675,6 @@
4661
  "version": "7.1.0",
4662
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
4663
  "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
4664
- "dev": true,
4665
  "license": "MIT",
4666
  "dependencies": {
4667
  "ansi-regex": "^6.0.1"
@@ -4790,7 +4803,6 @@
4790
  "version": "6.0.1",
4791
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
4792
  "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
4793
- "dev": true,
4794
  "license": "MIT",
4795
  "dependencies": {
4796
  "ansi-regex": "^5.0.1"
@@ -4804,7 +4816,6 @@
4804
  "version": "6.0.1",
4805
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
4806
  "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
4807
- "dev": true,
4808
  "license": "MIT",
4809
  "dependencies": {
4810
  "ansi-regex": "^5.0.1"
@@ -4863,7 +4874,6 @@
4863
  "version": "3.35.0",
4864
  "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
4865
  "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
4866
- "dev": true,
4867
  "license": "MIT",
4868
  "dependencies": {
4869
  "@jridgewell/gen-mapping": "^0.3.2",
@@ -4899,7 +4909,6 @@
4899
  "version": "1.0.0",
4900
  "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
4901
  "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
4902
- "dev": true,
4903
  "license": "MIT",
4904
  "engines": {
4905
  "node": ">= 0.4"
@@ -4908,11 +4917,20 @@
4908
  "url": "https://github.com/sponsors/ljharb"
4909
  }
4910
  },
 
 
 
 
 
 
 
 
 
 
4911
  "node_modules/tailwindcss": {
4912
  "version": "3.4.17",
4913
  "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
4914
  "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
4915
- "dev": true,
4916
  "license": "MIT",
4917
  "dependencies": {
4918
  "@alloc/quick-lru": "^5.2.0",
@@ -4946,6 +4964,15 @@
4946
  "node": ">=14.0.0"
4947
  }
4948
  },
 
 
 
 
 
 
 
 
 
4949
  "node_modules/tapable": {
4950
  "version": "2.2.1",
4951
  "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
@@ -4967,7 +4994,6 @@
4967
  "version": "3.3.1",
4968
  "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
4969
  "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
4970
- "dev": true,
4971
  "license": "MIT",
4972
  "dependencies": {
4973
  "any-promise": "^1.0.0"
@@ -4977,7 +5003,6 @@
4977
  "version": "1.6.0",
4978
  "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
4979
  "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
4980
- "dev": true,
4981
  "license": "MIT",
4982
  "dependencies": {
4983
  "thenify": ">= 3.1.0 < 4"
@@ -4990,7 +5015,6 @@
4990
  "version": "5.0.1",
4991
  "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
4992
  "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
4993
- "dev": true,
4994
  "license": "MIT",
4995
  "dependencies": {
4996
  "is-number": "^7.0.0"
@@ -5016,7 +5040,6 @@
5016
  "version": "0.1.13",
5017
  "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
5018
  "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
5019
- "dev": true,
5020
  "license": "Apache-2.0"
5021
  },
5022
  "node_modules/tsconfig-paths": {
@@ -5196,14 +5219,12 @@
5196
  "version": "1.0.2",
5197
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
5198
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
5199
- "dev": true,
5200
  "license": "MIT"
5201
  },
5202
  "node_modules/which": {
5203
  "version": "2.0.2",
5204
  "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
5205
  "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
5206
- "dev": true,
5207
  "license": "ISC",
5208
  "dependencies": {
5209
  "isexe": "^2.0.0"
@@ -5317,7 +5338,6 @@
5317
  "version": "8.1.0",
5318
  "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
5319
  "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
5320
- "dev": true,
5321
  "license": "MIT",
5322
  "dependencies": {
5323
  "ansi-styles": "^6.1.0",
@@ -5336,7 +5356,6 @@
5336
  "version": "7.0.0",
5337
  "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
5338
  "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
5339
- "dev": true,
5340
  "license": "MIT",
5341
  "dependencies": {
5342
  "ansi-styles": "^4.0.0",
@@ -5354,14 +5373,12 @@
5354
  "version": "8.0.0",
5355
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
5356
  "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
5357
- "dev": true,
5358
  "license": "MIT"
5359
  },
5360
  "node_modules/wrap-ansi-cjs/node_modules/string-width": {
5361
  "version": "4.2.3",
5362
  "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
5363
  "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
5364
- "dev": true,
5365
  "license": "MIT",
5366
  "dependencies": {
5367
  "emoji-regex": "^8.0.0",
@@ -5376,7 +5393,6 @@
5376
  "version": "6.1.0",
5377
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
5378
  "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
5379
- "dev": true,
5380
  "license": "MIT",
5381
  "engines": {
5382
  "node": ">=12"
@@ -5389,7 +5405,6 @@
5389
  "version": "6.2.1",
5390
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
5391
  "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
5392
- "dev": true,
5393
  "license": "MIT",
5394
  "engines": {
5395
  "node": ">=12"
@@ -5402,7 +5417,6 @@
5402
  "version": "7.1.0",
5403
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
5404
  "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
5405
- "dev": true,
5406
  "license": "MIT",
5407
  "dependencies": {
5408
  "ansi-regex": "^6.0.1"
@@ -5425,7 +5439,6 @@
5425
  "version": "2.7.0",
5426
  "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
5427
  "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
5428
- "dev": true,
5429
  "license": "ISC",
5430
  "bin": {
5431
  "yaml": "bin.mjs"
 
8
  "name": "reuben-fernandes",
9
  "version": "0.1.0",
10
  "dependencies": {
11
+ "class-variance-authority": "^0.7.1",
12
+ "clsx": "^2.1.1",
13
+ "lucide-react": "^0.473.0",
14
+ "motion": "^11.18.1",
15
  "next": "14.2.23",
16
  "react": "^18",
17
+ "react-dom": "^18",
18
+ "tailwind-merge": "^2.6.0",
19
+ "tailwindcss-animate": "^1.0.7"
20
  },
21
  "devDependencies": {
22
  "@types/node": "^20",
 
33
  "version": "5.2.0",
34
  "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
35
  "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
 
36
  "license": "MIT",
37
  "engines": {
38
  "node": ">=10"
 
146
  "version": "8.0.2",
147
  "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
148
  "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
 
149
  "license": "ISC",
150
  "dependencies": {
151
  "string-width": "^5.1.2",
 
163
  "version": "6.1.0",
164
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
165
  "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
 
166
  "license": "MIT",
167
  "engines": {
168
  "node": ">=12"
 
175
  "version": "7.1.0",
176
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
177
  "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
 
178
  "license": "MIT",
179
  "dependencies": {
180
  "ansi-regex": "^6.0.1"
 
190
  "version": "0.3.8",
191
  "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
192
  "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
 
193
  "license": "MIT",
194
  "dependencies": {
195
  "@jridgewell/set-array": "^1.2.1",
 
204
  "version": "3.1.2",
205
  "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
206
  "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
 
207
  "license": "MIT",
208
  "engines": {
209
  "node": ">=6.0.0"
 
213
  "version": "1.2.1",
214
  "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
215
  "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
 
216
  "license": "MIT",
217
  "engines": {
218
  "node": ">=6.0.0"
 
222
  "version": "1.5.0",
223
  "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
224
  "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
 
225
  "license": "MIT"
226
  },
227
  "node_modules/@jridgewell/trace-mapping": {
228
  "version": "0.3.25",
229
  "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
230
  "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
 
231
  "license": "MIT",
232
  "dependencies": {
233
  "@jridgewell/resolve-uri": "^3.1.0",
 
398
  "version": "2.1.5",
399
  "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
400
  "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
 
401
  "license": "MIT",
402
  "dependencies": {
403
  "@nodelib/fs.stat": "2.0.5",
 
411
  "version": "2.0.5",
412
  "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
413
  "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
 
414
  "license": "MIT",
415
  "engines": {
416
  "node": ">= 8"
 
420
  "version": "1.2.8",
421
  "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
422
  "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
 
423
  "license": "MIT",
424
  "dependencies": {
425
  "@nodelib/fs.scandir": "2.1.5",
 
443
  "version": "0.11.0",
444
  "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
445
  "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
 
446
  "license": "MIT",
447
  "optional": true,
448
  "engines": {
 
794
  "version": "5.0.1",
795
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
796
  "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
 
797
  "license": "MIT",
798
  "engines": {
799
  "node": ">=8"
 
803
  "version": "4.3.0",
804
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
805
  "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
 
806
  "license": "MIT",
807
  "dependencies": {
808
  "color-convert": "^2.0.1"
 
818
  "version": "1.3.0",
819
  "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
820
  "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
 
821
  "license": "MIT"
822
  },
823
  "node_modules/anymatch": {
824
  "version": "3.1.3",
825
  "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
826
  "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
 
827
  "license": "ISC",
828
  "dependencies": {
829
  "normalize-path": "^3.0.0",
 
837
  "version": "5.0.2",
838
  "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
839
  "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
 
840
  "license": "MIT"
841
  },
842
  "node_modules/argparse": {
 
1060
  "version": "1.0.2",
1061
  "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
1062
  "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
 
1063
  "license": "MIT"
1064
  },
1065
  "node_modules/binary-extensions": {
1066
  "version": "2.3.0",
1067
  "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
1068
  "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
 
1069
  "license": "MIT",
1070
  "engines": {
1071
  "node": ">=8"
 
1089
  "version": "3.0.3",
1090
  "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
1091
  "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
 
1092
  "license": "MIT",
1093
  "dependencies": {
1094
  "fill-range": "^7.1.1"
 
1172
  "version": "2.0.1",
1173
  "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
1174
  "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
 
1175
  "license": "MIT",
1176
  "engines": {
1177
  "node": ">= 6"
 
1218
  "version": "3.6.0",
1219
  "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
1220
  "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
 
1221
  "license": "MIT",
1222
  "dependencies": {
1223
  "anymatch": "~3.1.2",
 
1242
  "version": "5.1.2",
1243
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
1244
  "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
 
1245
  "license": "ISC",
1246
  "dependencies": {
1247
  "is-glob": "^4.0.1"
 
1250
  "node": ">= 6"
1251
  }
1252
  },
1253
+ "node_modules/class-variance-authority": {
1254
+ "version": "0.7.1",
1255
+ "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz",
1256
+ "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==",
1257
+ "license": "Apache-2.0",
1258
+ "dependencies": {
1259
+ "clsx": "^2.1.1"
1260
+ },
1261
+ "funding": {
1262
+ "url": "https://polar.sh/cva"
1263
+ }
1264
+ },
1265
  "node_modules/client-only": {
1266
  "version": "0.0.1",
1267
  "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
1268
  "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==",
1269
  "license": "MIT"
1270
  },
1271
+ "node_modules/clsx": {
1272
+ "version": "2.1.1",
1273
+ "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
1274
+ "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==",
1275
+ "license": "MIT",
1276
+ "engines": {
1277
+ "node": ">=6"
1278
+ }
1279
+ },
1280
  "node_modules/color-convert": {
1281
  "version": "2.0.1",
1282
  "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
1283
  "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
 
1284
  "license": "MIT",
1285
  "dependencies": {
1286
  "color-name": "~1.1.4"
 
1293
  "version": "1.1.4",
1294
  "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
1295
  "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
 
1296
  "license": "MIT"
1297
  },
1298
  "node_modules/commander": {
1299
  "version": "4.1.1",
1300
  "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
1301
  "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
 
1302
  "license": "MIT",
1303
  "engines": {
1304
  "node": ">= 6"
 
1315
  "version": "7.0.6",
1316
  "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
1317
  "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
 
1318
  "license": "MIT",
1319
  "dependencies": {
1320
  "path-key": "^3.1.0",
 
1329
  "version": "3.0.0",
1330
  "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
1331
  "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
 
1332
  "license": "MIT",
1333
  "bin": {
1334
  "cssesc": "bin/cssesc"
 
1470
  "version": "1.2.2",
1471
  "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
1472
  "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
 
1473
  "license": "Apache-2.0"
1474
  },
1475
  "node_modules/dlv": {
1476
  "version": "1.1.3",
1477
  "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
1478
  "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",
 
1479
  "license": "MIT"
1480
  },
1481
  "node_modules/doctrine": {
 
1510
  "version": "0.2.0",
1511
  "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
1512
  "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
 
1513
  "license": "MIT"
1514
  },
1515
  "node_modules/emoji-regex": {
1516
  "version": "9.2.2",
1517
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
1518
  "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
 
1519
  "license": "MIT"
1520
  },
1521
  "node_modules/enhanced-resolve": {
 
2176
  "version": "3.3.3",
2177
  "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
2178
  "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
 
2179
  "license": "MIT",
2180
  "dependencies": {
2181
  "@nodelib/fs.stat": "^2.0.2",
 
2192
  "version": "5.1.2",
2193
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
2194
  "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
 
2195
  "license": "ISC",
2196
  "dependencies": {
2197
  "is-glob": "^4.0.1"
 
2218
  "version": "1.18.0",
2219
  "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz",
2220
  "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==",
 
2221
  "license": "ISC",
2222
  "dependencies": {
2223
  "reusify": "^1.0.4"
 
2240
  "version": "7.1.1",
2241
  "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
2242
  "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
 
2243
  "license": "MIT",
2244
  "dependencies": {
2245
  "to-regex-range": "^5.0.1"
 
2301
  "version": "3.3.0",
2302
  "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
2303
  "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
 
2304
  "license": "ISC",
2305
  "dependencies": {
2306
  "cross-spawn": "^7.0.0",
 
2313
  "url": "https://github.com/sponsors/isaacs"
2314
  }
2315
  },
2316
+ "node_modules/framer-motion": {
2317
+ "version": "11.18.1",
2318
+ "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.18.1.tgz",
2319
+ "integrity": "sha512-EQa8c9lWVOm4zlz14MsBJWr8woq87HsNmsBnQNvcS0hs8uzw6HtGAxZyIU7EGTVpHD1C1n01ufxRyarXcNzpPg==",
2320
+ "license": "MIT",
2321
+ "dependencies": {
2322
+ "motion-dom": "^11.18.1",
2323
+ "motion-utils": "^11.18.1",
2324
+ "tslib": "^2.4.0"
2325
+ },
2326
+ "peerDependencies": {
2327
+ "@emotion/is-prop-valid": "*",
2328
+ "react": "^18.0.0 || ^19.0.0",
2329
+ "react-dom": "^18.0.0 || ^19.0.0"
2330
+ },
2331
+ "peerDependenciesMeta": {
2332
+ "@emotion/is-prop-valid": {
2333
+ "optional": true
2334
+ },
2335
+ "react": {
2336
+ "optional": true
2337
+ },
2338
+ "react-dom": {
2339
+ "optional": true
2340
+ }
2341
+ }
2342
+ },
2343
  "node_modules/fs.realpath": {
2344
  "version": "1.0.0",
2345
  "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
 
2351
  "version": "2.3.3",
2352
  "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
2353
  "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
 
2354
  "hasInstallScript": true,
2355
  "license": "MIT",
2356
  "optional": true,
 
2365
  "version": "1.1.2",
2366
  "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
2367
  "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
 
2368
  "license": "MIT",
2369
  "funding": {
2370
  "url": "https://github.com/sponsors/ljharb"
 
2475
  "version": "10.3.10",
2476
  "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz",
2477
  "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==",
 
2478
  "license": "ISC",
2479
  "dependencies": {
2480
  "foreground-child": "^3.1.0",
 
2497
  "version": "6.0.2",
2498
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
2499
  "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
 
2500
  "license": "ISC",
2501
  "dependencies": {
2502
  "is-glob": "^4.0.3"
 
2509
  "version": "2.0.1",
2510
  "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
2511
  "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
 
2512
  "license": "MIT",
2513
  "dependencies": {
2514
  "balanced-match": "^1.0.0"
 
2518
  "version": "9.0.5",
2519
  "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
2520
  "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
 
2521
  "license": "ISC",
2522
  "dependencies": {
2523
  "brace-expansion": "^2.0.1"
 
2673
  "version": "2.0.2",
2674
  "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
2675
  "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
 
2676
  "license": "MIT",
2677
  "dependencies": {
2678
  "function-bind": "^1.1.2"
 
2809
  "version": "2.1.0",
2810
  "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
2811
  "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
 
2812
  "license": "MIT",
2813
  "dependencies": {
2814
  "binary-extensions": "^2.0.0"
 
2861
  "version": "2.16.1",
2862
  "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
2863
  "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
 
2864
  "license": "MIT",
2865
  "dependencies": {
2866
  "hasown": "^2.0.2"
 
2911
  "version": "2.1.1",
2912
  "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
2913
  "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
 
2914
  "license": "MIT",
2915
  "engines": {
2916
  "node": ">=0.10.0"
 
2936
  "version": "3.0.0",
2937
  "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
2938
  "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
 
2939
  "license": "MIT",
2940
  "engines": {
2941
  "node": ">=8"
 
2964
  "version": "4.0.3",
2965
  "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
2966
  "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
 
2967
  "license": "MIT",
2968
  "dependencies": {
2969
  "is-extglob": "^2.1.1"
 
2989
  "version": "7.0.0",
2990
  "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
2991
  "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
 
2992
  "license": "MIT",
2993
  "engines": {
2994
  "node": ">=0.12.0"
 
3177
  "version": "2.0.0",
3178
  "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
3179
  "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
 
3180
  "license": "ISC"
3181
  },
3182
  "node_modules/iterator.prototype": {
 
3201
  "version": "2.3.6",
3202
  "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz",
3203
  "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==",
 
3204
  "license": "BlueOak-1.0.0",
3205
  "dependencies": {
3206
  "@isaacs/cliui": "^8.0.2"
 
3219
  "version": "1.21.7",
3220
  "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
3221
  "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
 
3222
  "license": "MIT",
3223
  "bin": {
3224
  "jiti": "bin/jiti.js"
 
3341
  "version": "3.1.3",
3342
  "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
3343
  "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
 
3344
  "license": "MIT",
3345
  "engines": {
3346
  "node": ">=14"
 
3353
  "version": "1.2.4",
3354
  "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
3355
  "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
 
3356
  "license": "MIT"
3357
  },
3358
  "node_modules/locate-path": {
 
3394
  "version": "10.4.3",
3395
  "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
3396
  "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
 
3397
  "license": "ISC"
3398
  },
3399
+ "node_modules/lucide-react": {
3400
+ "version": "0.473.0",
3401
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.473.0.tgz",
3402
+ "integrity": "sha512-KW6u5AKeIjkvrxXZ6WuCu9zHE/gEYSXCay+Gre2ZoInD0Je/e3RBtP4OHpJVJ40nDklSvjVKjgH7VU8/e2dzRw==",
3403
+ "license": "ISC",
3404
+ "peerDependencies": {
3405
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
3406
+ }
3407
+ },
3408
  "node_modules/math-intrinsics": {
3409
  "version": "1.1.0",
3410
  "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
 
3419
  "version": "1.4.1",
3420
  "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
3421
  "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
 
3422
  "license": "MIT",
3423
  "engines": {
3424
  "node": ">= 8"
 
3428
  "version": "4.0.8",
3429
  "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
3430
  "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
 
3431
  "license": "MIT",
3432
  "dependencies": {
3433
  "braces": "^3.0.3",
 
3464
  "version": "7.1.2",
3465
  "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
3466
  "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
 
3467
  "license": "ISC",
3468
  "engines": {
3469
  "node": ">=16 || 14 >=14.17"
3470
  }
3471
  },
3472
+ "node_modules/motion": {
3473
+ "version": "11.18.1",
3474
+ "resolved": "https://registry.npmjs.org/motion/-/motion-11.18.1.tgz",
3475
+ "integrity": "sha512-Tqbn7UMVp1V6JH5gbLFJAbP1//gdHNwEciQO22UHgFH1mBScq6gHrq8dlyBGbOlRF8iVSX8k0UV8tkkAVbwpKw==",
3476
+ "license": "MIT",
3477
+ "dependencies": {
3478
+ "framer-motion": "^11.18.1",
3479
+ "tslib": "^2.4.0"
3480
+ },
3481
+ "peerDependencies": {
3482
+ "@emotion/is-prop-valid": "*",
3483
+ "react": "^18.0.0 || ^19.0.0",
3484
+ "react-dom": "^18.0.0 || ^19.0.0"
3485
+ },
3486
+ "peerDependenciesMeta": {
3487
+ "@emotion/is-prop-valid": {
3488
+ "optional": true
3489
+ },
3490
+ "react": {
3491
+ "optional": true
3492
+ },
3493
+ "react-dom": {
3494
+ "optional": true
3495
+ }
3496
+ }
3497
+ },
3498
+ "node_modules/motion-dom": {
3499
+ "version": "11.18.1",
3500
+ "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-11.18.1.tgz",
3501
+ "integrity": "sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==",
3502
+ "license": "MIT",
3503
+ "dependencies": {
3504
+ "motion-utils": "^11.18.1"
3505
+ }
3506
+ },
3507
+ "node_modules/motion-utils": {
3508
+ "version": "11.18.1",
3509
+ "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-11.18.1.tgz",
3510
+ "integrity": "sha512-49Kt+HKjtbJKLtgO/LKj9Ld+6vw9BjH5d9sc40R/kVyH8GLAXgT42M2NnuPcJNuA3s9ZfZBUcwIgpmZWGEE+hA==",
3511
+ "license": "MIT"
3512
+ },
3513
  "node_modules/ms": {
3514
  "version": "2.1.3",
3515
  "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
 
3521
  "version": "2.7.0",
3522
  "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
3523
  "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
 
3524
  "license": "MIT",
3525
  "dependencies": {
3526
  "any-promise": "^1.0.0",
 
3635
  "version": "3.0.0",
3636
  "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
3637
  "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
 
3638
  "license": "MIT",
3639
  "engines": {
3640
  "node": ">=0.10.0"
 
3644
  "version": "4.1.1",
3645
  "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
3646
  "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
 
3647
  "license": "MIT",
3648
  "engines": {
3649
  "node": ">=0.10.0"
 
3653
  "version": "3.0.0",
3654
  "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
3655
  "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
 
3656
  "license": "MIT",
3657
  "engines": {
3658
  "node": ">= 6"
 
3885
  "version": "3.1.1",
3886
  "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
3887
  "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
 
3888
  "license": "MIT",
3889
  "engines": {
3890
  "node": ">=8"
 
3894
  "version": "1.0.7",
3895
  "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
3896
  "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
 
3897
  "license": "MIT"
3898
  },
3899
  "node_modules/path-scurry": {
3900
  "version": "1.11.1",
3901
  "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
3902
  "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
 
3903
  "license": "BlueOak-1.0.0",
3904
  "dependencies": {
3905
  "lru-cache": "^10.2.0",
 
3922
  "version": "2.3.1",
3923
  "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
3924
  "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
 
3925
  "license": "MIT",
3926
  "engines": {
3927
  "node": ">=8.6"
 
3934
  "version": "2.3.0",
3935
  "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
3936
  "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
 
3937
  "license": "MIT",
3938
  "engines": {
3939
  "node": ">=0.10.0"
 
3943
  "version": "4.0.6",
3944
  "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
3945
  "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
 
3946
  "license": "MIT",
3947
  "engines": {
3948
  "node": ">= 6"
 
3962
  "version": "8.5.1",
3963
  "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
3964
  "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
 
3965
  "funding": [
3966
  {
3967
  "type": "opencollective",
 
3990
  "version": "15.1.0",
3991
  "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
3992
  "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
 
3993
  "license": "MIT",
3994
  "dependencies": {
3995
  "postcss-value-parser": "^4.0.0",
 
4007
  "version": "4.0.1",
4008
  "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
4009
  "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
 
4010
  "license": "MIT",
4011
  "dependencies": {
4012
  "camelcase-css": "^2.0.1"
 
4026
  "version": "4.0.2",
4027
  "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
4028
  "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
 
4029
  "funding": [
4030
  {
4031
  "type": "opencollective",
 
4061
  "version": "6.2.0",
4062
  "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
4063
  "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
 
4064
  "funding": [
4065
  {
4066
  "type": "opencollective",
 
4086
  "version": "6.1.2",
4087
  "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
4088
  "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
 
4089
  "license": "MIT",
4090
  "dependencies": {
4091
  "cssesc": "^3.0.0",
 
4099
  "version": "4.2.0",
4100
  "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
4101
  "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
 
4102
  "license": "MIT"
4103
  },
4104
  "node_modules/prelude-ls": {
 
4137
  "version": "1.2.3",
4138
  "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
4139
  "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
 
4140
  "funding": [
4141
  {
4142
  "type": "github",
 
4189
  "version": "1.0.0",
4190
  "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
4191
  "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
 
4192
  "license": "MIT",
4193
  "dependencies": {
4194
  "pify": "^2.3.0"
 
4198
  "version": "3.6.0",
4199
  "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
4200
  "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
 
4201
  "license": "MIT",
4202
  "dependencies": {
4203
  "picomatch": "^2.2.1"
 
4254
  "version": "1.22.10",
4255
  "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
4256
  "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
 
4257
  "license": "MIT",
4258
  "dependencies": {
4259
  "is-core-module": "^2.16.0",
 
4294
  "version": "1.0.4",
4295
  "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
4296
  "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
 
4297
  "license": "MIT",
4298
  "engines": {
4299
  "iojs": ">=1.0.0",
 
4343
  "version": "1.2.0",
4344
  "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
4345
  "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
 
4346
  "funding": [
4347
  {
4348
  "type": "github",
 
4492
  "version": "2.0.0",
4493
  "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
4494
  "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
 
4495
  "license": "MIT",
4496
  "dependencies": {
4497
  "shebang-regex": "^3.0.0"
 
4504
  "version": "3.0.0",
4505
  "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
4506
  "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
 
4507
  "license": "MIT",
4508
  "engines": {
4509
  "node": ">=8"
 
4589
  "version": "4.1.0",
4590
  "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
4591
  "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
 
4592
  "license": "ISC",
4593
  "engines": {
4594
  "node": ">=14"
 
4625
  "version": "5.1.2",
4626
  "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
4627
  "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
 
4628
  "license": "MIT",
4629
  "dependencies": {
4630
  "eastasianwidth": "^0.2.0",
 
4643
  "version": "4.2.3",
4644
  "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
4645
  "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
 
4646
  "license": "MIT",
4647
  "dependencies": {
4648
  "emoji-regex": "^8.0.0",
 
4657
  "version": "8.0.0",
4658
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
4659
  "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
 
4660
  "license": "MIT"
4661
  },
4662
  "node_modules/string-width/node_modules/ansi-regex": {
4663
  "version": "6.1.0",
4664
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
4665
  "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
 
4666
  "license": "MIT",
4667
  "engines": {
4668
  "node": ">=12"
 
4675
  "version": "7.1.0",
4676
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
4677
  "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
 
4678
  "license": "MIT",
4679
  "dependencies": {
4680
  "ansi-regex": "^6.0.1"
 
4803
  "version": "6.0.1",
4804
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
4805
  "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
 
4806
  "license": "MIT",
4807
  "dependencies": {
4808
  "ansi-regex": "^5.0.1"
 
4816
  "version": "6.0.1",
4817
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
4818
  "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
 
4819
  "license": "MIT",
4820
  "dependencies": {
4821
  "ansi-regex": "^5.0.1"
 
4874
  "version": "3.35.0",
4875
  "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
4876
  "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
 
4877
  "license": "MIT",
4878
  "dependencies": {
4879
  "@jridgewell/gen-mapping": "^0.3.2",
 
4909
  "version": "1.0.0",
4910
  "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
4911
  "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
 
4912
  "license": "MIT",
4913
  "engines": {
4914
  "node": ">= 0.4"
 
4917
  "url": "https://github.com/sponsors/ljharb"
4918
  }
4919
  },
4920
+ "node_modules/tailwind-merge": {
4921
+ "version": "2.6.0",
4922
+ "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz",
4923
+ "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==",
4924
+ "license": "MIT",
4925
+ "funding": {
4926
+ "type": "github",
4927
+ "url": "https://github.com/sponsors/dcastil"
4928
+ }
4929
+ },
4930
  "node_modules/tailwindcss": {
4931
  "version": "3.4.17",
4932
  "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
4933
  "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
 
4934
  "license": "MIT",
4935
  "dependencies": {
4936
  "@alloc/quick-lru": "^5.2.0",
 
4964
  "node": ">=14.0.0"
4965
  }
4966
  },
4967
+ "node_modules/tailwindcss-animate": {
4968
+ "version": "1.0.7",
4969
+ "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz",
4970
+ "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==",
4971
+ "license": "MIT",
4972
+ "peerDependencies": {
4973
+ "tailwindcss": ">=3.0.0 || insiders"
4974
+ }
4975
+ },
4976
  "node_modules/tapable": {
4977
  "version": "2.2.1",
4978
  "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
 
4994
  "version": "3.3.1",
4995
  "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
4996
  "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
 
4997
  "license": "MIT",
4998
  "dependencies": {
4999
  "any-promise": "^1.0.0"
 
5003
  "version": "1.6.0",
5004
  "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
5005
  "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
 
5006
  "license": "MIT",
5007
  "dependencies": {
5008
  "thenify": ">= 3.1.0 < 4"
 
5015
  "version": "5.0.1",
5016
  "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
5017
  "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
 
5018
  "license": "MIT",
5019
  "dependencies": {
5020
  "is-number": "^7.0.0"
 
5040
  "version": "0.1.13",
5041
  "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
5042
  "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",
 
5043
  "license": "Apache-2.0"
5044
  },
5045
  "node_modules/tsconfig-paths": {
 
5219
  "version": "1.0.2",
5220
  "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
5221
  "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
 
5222
  "license": "MIT"
5223
  },
5224
  "node_modules/which": {
5225
  "version": "2.0.2",
5226
  "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
5227
  "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
 
5228
  "license": "ISC",
5229
  "dependencies": {
5230
  "isexe": "^2.0.0"
 
5338
  "version": "8.1.0",
5339
  "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
5340
  "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
 
5341
  "license": "MIT",
5342
  "dependencies": {
5343
  "ansi-styles": "^6.1.0",
 
5356
  "version": "7.0.0",
5357
  "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
5358
  "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
 
5359
  "license": "MIT",
5360
  "dependencies": {
5361
  "ansi-styles": "^4.0.0",
 
5373
  "version": "8.0.0",
5374
  "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
5375
  "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
 
5376
  "license": "MIT"
5377
  },
5378
  "node_modules/wrap-ansi-cjs/node_modules/string-width": {
5379
  "version": "4.2.3",
5380
  "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
5381
  "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
 
5382
  "license": "MIT",
5383
  "dependencies": {
5384
  "emoji-regex": "^8.0.0",
 
5393
  "version": "6.1.0",
5394
  "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
5395
  "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
 
5396
  "license": "MIT",
5397
  "engines": {
5398
  "node": ">=12"
 
5405
  "version": "6.2.1",
5406
  "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
5407
  "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
 
5408
  "license": "MIT",
5409
  "engines": {
5410
  "node": ">=12"
 
5417
  "version": "7.1.0",
5418
  "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
5419
  "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
 
5420
  "license": "MIT",
5421
  "dependencies": {
5422
  "ansi-regex": "^6.0.1"
 
5439
  "version": "2.7.0",
5440
  "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
5441
  "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
 
5442
  "license": "ISC",
5443
  "bin": {
5444
  "yaml": "bin.mjs"
package.json CHANGED
@@ -9,18 +9,24 @@
9
  "lint": "next lint"
10
  },
11
  "dependencies": {
 
 
 
 
 
12
  "react": "^18",
13
  "react-dom": "^18",
14
- "next": "14.2.23"
 
15
  },
16
  "devDependencies": {
17
- "typescript": "^5",
18
  "@types/node": "^20",
19
  "@types/react": "^18",
20
  "@types/react-dom": "^18",
 
 
21
  "postcss": "^8",
22
  "tailwindcss": "^3.4.1",
23
- "eslint": "^8",
24
- "eslint-config-next": "14.2.23"
25
  }
26
- }
 
9
  "lint": "next lint"
10
  },
11
  "dependencies": {
12
+ "class-variance-authority": "^0.7.1",
13
+ "clsx": "^2.1.1",
14
+ "lucide-react": "^0.473.0",
15
+ "motion": "^11.18.1",
16
+ "next": "14.2.23",
17
  "react": "^18",
18
  "react-dom": "^18",
19
+ "tailwind-merge": "^2.6.0",
20
+ "tailwindcss-animate": "^1.0.7"
21
  },
22
  "devDependencies": {
 
23
  "@types/node": "^20",
24
  "@types/react": "^18",
25
  "@types/react-dom": "^18",
26
+ "eslint": "^8",
27
+ "eslint-config-next": "14.2.23",
28
  "postcss": "^8",
29
  "tailwindcss": "^3.4.1",
30
+ "typescript": "^5"
 
31
  }
32
+ }
tailwind.config.ts CHANGED
@@ -1,19 +1,81 @@
1
  import type { Config } from "tailwindcss";
2
 
3
  const config: Config = {
4
- content: [
 
5
  "./pages/**/*.{js,ts,jsx,tsx,mdx}",
6
  "./components/**/*.{js,ts,jsx,tsx,mdx}",
7
  "./app/**/*.{js,ts,jsx,tsx,mdx}",
8
  ],
9
  theme: {
10
- extend: {
11
- colors: {
12
- background: "var(--background)",
13
- foreground: "var(--foreground)",
14
- },
15
- },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
16
  },
17
- plugins: [],
18
  };
19
  export default config;
 
1
  import type { Config } from "tailwindcss";
2
 
3
  const config: Config = {
4
+ darkMode: ["class"],
5
+ content: [
6
  "./pages/**/*.{js,ts,jsx,tsx,mdx}",
7
  "./components/**/*.{js,ts,jsx,tsx,mdx}",
8
  "./app/**/*.{js,ts,jsx,tsx,mdx}",
9
  ],
10
  theme: {
11
+ extend: {
12
+ colors: {
13
+ background: 'hsl(var(--background))',
14
+ foreground: 'hsl(var(--foreground))',
15
+ card: {
16
+ DEFAULT: 'hsl(var(--card))',
17
+ foreground: 'hsl(var(--card-foreground))'
18
+ },
19
+ popover: {
20
+ DEFAULT: 'hsl(var(--popover))',
21
+ foreground: 'hsl(var(--popover-foreground))'
22
+ },
23
+ primary: {
24
+ DEFAULT: 'hsl(var(--primary))',
25
+ foreground: 'hsl(var(--primary-foreground))'
26
+ },
27
+ secondary: {
28
+ DEFAULT: 'hsl(var(--secondary))',
29
+ foreground: 'hsl(var(--secondary-foreground))'
30
+ },
31
+ muted: {
32
+ DEFAULT: 'hsl(var(--muted))',
33
+ foreground: 'hsl(var(--muted-foreground))'
34
+ },
35
+ accent: {
36
+ DEFAULT: 'hsl(var(--accent))',
37
+ foreground: 'hsl(var(--accent-foreground))'
38
+ },
39
+ destructive: {
40
+ DEFAULT: 'hsl(var(--destructive))',
41
+ foreground: 'hsl(var(--destructive-foreground))'
42
+ },
43
+ border: 'hsl(var(--border))',
44
+ input: 'hsl(var(--input))',
45
+ ring: 'hsl(var(--ring))',
46
+ chart: {
47
+ '1': 'hsl(var(--chart-1))',
48
+ '2': 'hsl(var(--chart-2))',
49
+ '3': 'hsl(var(--chart-3))',
50
+ '4': 'hsl(var(--chart-4))',
51
+ '5': 'hsl(var(--chart-5))'
52
+ }
53
+ },
54
+ borderRadius: {
55
+ lg: 'var(--radius)',
56
+ md: 'calc(var(--radius) - 2px)',
57
+ sm: 'calc(var(--radius) - 4px)'
58
+ },
59
+ animation: {
60
+ meteor: 'meteor 5s linear infinite'
61
+ },
62
+ keyframes: {
63
+ meteor: {
64
+ '0%': {
65
+ transform: 'rotate(215deg) translateX(0)',
66
+ opacity: '1'
67
+ },
68
+ '70%': {
69
+ opacity: '1'
70
+ },
71
+ '100%': {
72
+ transform: 'rotate(215deg) translateX(-500px)',
73
+ opacity: '0'
74
+ }
75
+ }
76
+ }
77
+ }
78
  },
79
+ plugins: [require("tailwindcss-animate")],
80
  };
81
  export default config;