├── .env.example
├── .gitignore
├── README.md
├── app
├── api
│ └── chat
│ │ └── route.ts
├── components
│ └── MessageContent.tsx
├── favicon.ico
├── fonts
│ ├── ABCDiatype-Bold.otf
│ ├── ABCDiatype-Regular.otf
│ ├── GeistMonoVF.woff
│ ├── GeistVF.woff
│ ├── RecklessTRIAL-Medium.woff2
│ ├── RecklessTRIAL-Regular.otf
│ └── RecklessTRIAL-Regular.woff2
├── globals.css
├── layout.tsx
├── opengraph-image.jpg
└── page.tsx
├── next.config.mjs
├── package-lock.json
├── package.json
├── postcss.config.mjs
├── tailwind.config.ts
└── tsconfig.json
/.env.example:
--------------------------------------------------------------------------------
1 | # Exa AI API Key (Get from https://dashboard.exa.ai/api-keys)
2 | EXA_API_KEY=your_exa_api_key_here
3 |
4 | # OpenAI API Key (Get from https://platform.openai.com/settings/organization/api-keys)
5 | OPENAI_API_KEY=your_openai_api_key_here
6 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 | .yarn/install-state.gz
8 |
9 | # testing
10 | /coverage
11 |
12 | # next.js
13 | /.next/
14 | /out/
15 |
16 | # production
17 | /build
18 |
19 | # misc
20 | .DS_Store
21 | *.pem
22 |
23 | # debug
24 | npm-debug.log*
25 | yarn-debug.log*
26 | yarn-error.log*
27 |
28 | # local env files
29 | .env*.local
30 |
31 | # vercel
32 | .vercel
33 |
34 | # typescript
35 | *.tsbuildinfo
36 | next-env.d.ts
37 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 💬 Exa & o3-mini Chat App
2 | ### Powered by [Exa](https://exa.ai) - The Web Search API
3 |
4 | ### Try the tool: https://o3minichat.exa.ai/
5 |
6 | 
7 |
8 |
9 |
10 | ## 🎯 What is Exa & o3-mini Chat App?
11 |
12 | Exa & o3-mini Chat App is a free and open-source chat application that combines Exa's powerful web search API with OpenAI's o3-mini language model.
13 |
14 | This app provides a cool and simple chat experience which you can clone and build upon.
15 |
16 |
17 |
18 | ## 💻 Tech Stack
19 | - **Search Engine**: [Exa API](https://exa.ai) - Web search API
20 | - **Language Model**: OpenAI o3-mini
21 | - **Frontend**: [Next.js 14](https://nextjs.org/docs) with App Router, [TailwindCSS](https://tailwindcss.com), TypeScript
22 | - **AI Integration**: [Vercel AI SDK](https://sdk.vercel.ai/docs/ai-sdk-core)
23 | - **Hosting**: [Vercel](https://vercel.com/)
24 |
25 |
26 |
27 | ## 🚀 Getting Started
28 |
29 | ### Prerequisites
30 | - Node.js
31 | - Exa API key
32 | - OpenAI API key
33 |
34 | ### Installation
35 |
36 | 1. Clone the repository
37 | ```bash
38 | git clone https://github.com/exa-labs/exa-o3mini-chat.git
39 | cd exa-o3mini-chat
40 | ```
41 |
42 | 2. Install dependencies
43 | ```bash
44 | npm install
45 | ```
46 |
47 | 3. Set up environment variables (for Exa and OpenAI)
48 |
49 | 4. Run the development server
50 | ```bash
51 | npm run dev
52 | ```
53 |
54 | 5. Open http://localhost:3000 in your browser
55 |
56 |
57 |
58 | ## 🔑 API Keys & Environment Setup
59 |
60 | ### Required API Keys
61 | * **Exa API Key**: Get from [Exa Dashboard](https://dashboard.exa.ai/api-keys)
62 | * **OpenAI API Key**: Get from [OpenAI Dashboard](https://platform.openai.com/api-keys)
63 |
64 |
65 |
66 | ## ⭐ About [Exa](https://exa.ai)
67 |
68 | This project is powered by [Exa.ai](https://exa.ai), a web search API designed specifically for AI applications. Exa provides:
69 |
70 | * Real-time web search capabilities
71 | * Enhanced response accuracy through current information
72 | * Seamless integration with language models
73 | * Comprehensive web search results
74 |
75 | [Try Exa API](https://dashboard.exa.ai)
76 |
77 |
78 |
79 | ---
80 |
81 | Built with ❤️ by the Exa team
82 |
--------------------------------------------------------------------------------
/app/api/chat/route.ts:
--------------------------------------------------------------------------------
1 | import { openai } from '@ai-sdk/openai';
2 | import { streamText, tool } from 'ai';
3 | import { z } from 'zod';
4 | import Exa from 'exa-js';
5 |
6 | // Allow responses up to 5 minutes
7 | export const maxDuration = 300;
8 |
9 | const exa = new Exa(process.env.EXA_API_KEY);
10 |
11 | export async function POST(req: Request) {
12 | const { messages } = await req.json();
13 |
14 | const result = streamText({
15 | model: openai('o3-mini'),
16 | system: 'Always use the webSearch tool. Always provide source links in your response (the sources which you got from the webSearch tool). You are a helpful assistant that searches the web for information and provides accurate answer. Use simple english. Use the webSearch tool in every message!',
17 | messages,
18 | providerOptions: {
19 | openai: { reasoningEffort: 'medium' },
20 | },
21 | maxSteps: 2,
22 | tools: {
23 | webSearch: tool({
24 | description: 'Search the web for current information on a topic. Use this tool in every message, always. Always provide source links in your response.',
25 | parameters: z.object({
26 | query: z.string().describe('The search query'),
27 | }),
28 | execute: async ({ query }) => {
29 | try {
30 | const results = await exa.search(query, {
31 |
32 |
33 | numResults: 5,
34 | type: 'auto',
35 | useAutoprompt: true
36 | });
37 | return results.results;
38 | } catch (error) {
39 | console.error('Exa search error:', error);
40 | return { error: 'Failed to perform web search' };
41 | }
42 | },
43 | }),
44 | },
45 | });
46 |
47 | return result.toDataStreamResponse();
48 | }
--------------------------------------------------------------------------------
/app/components/MessageContent.tsx:
--------------------------------------------------------------------------------
1 | // Helper function to convert URLs in text to clickable links
2 | const MessageContent = ({ content }: { content: string }) => {
3 | // Regular expression to match URLs, including those in bullet points
4 | const urlRegex = /(https?:\/\/[^\s•]+)/g;
5 |
6 | // Split content by newlines to handle bullet points
7 | const lines = content.split('\n');
8 |
9 | return (
10 | <>
11 | {lines.map((line, lineIndex) => {
12 | // Check if line is empty
13 | if (!line.trim()) {
14 | return
;
15 | }
16 |
17 | // Split the line by URLs
18 | const parts = line.split(urlRegex);
19 |
20 | return (
21 |
22 | {parts.map((part, partIndex) => {
23 | // Check if this part is a URL
24 | if (part.match(urlRegex)) {
25 | return (
26 |
33 | {part}
34 |
35 | );
36 | }
37 | return
{part};
38 | })}
39 |
40 | );
41 | })}
42 | >
43 | );
44 | };
45 |
46 | export default MessageContent;
--------------------------------------------------------------------------------
/app/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/favicon.ico
--------------------------------------------------------------------------------
/app/fonts/ABCDiatype-Bold.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/fonts/ABCDiatype-Bold.otf
--------------------------------------------------------------------------------
/app/fonts/ABCDiatype-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/fonts/ABCDiatype-Regular.otf
--------------------------------------------------------------------------------
/app/fonts/GeistMonoVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/fonts/GeistMonoVF.woff
--------------------------------------------------------------------------------
/app/fonts/GeistVF.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/fonts/GeistVF.woff
--------------------------------------------------------------------------------
/app/fonts/RecklessTRIAL-Medium.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/fonts/RecklessTRIAL-Medium.woff2
--------------------------------------------------------------------------------
/app/fonts/RecklessTRIAL-Regular.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/fonts/RecklessTRIAL-Regular.otf
--------------------------------------------------------------------------------
/app/fonts/RecklessTRIAL-Regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/fonts/RecklessTRIAL-Regular.woff2
--------------------------------------------------------------------------------
/app/globals.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
5 | :root {
6 | --foreground-rgb: 0, 0, 0;
7 | --background-start-rgb: 231, 231, 245;
8 | --background-end-rgb: 255, 255, 255;
9 |
10 | /* COLORS */
11 | --brand-default: #254bf1;
12 | --brand-fainter: #e7ebfd;
13 | --brand-faint: #c6cfff;
14 | --brand-subtle: #a1aff7;
15 | --brand-muted: #4d87e7;
16 | --brand-dark: #0d2189;
17 | --brand-darker: #000a40;
18 |
19 | --secondary-accent: #9f9672;
20 | --secondary-accent2x: #89805d;
21 | --secondary-dark: #f4f1e7;
22 | --secondary-darker: #efebdc;
23 | --secondary-darkest: #e5e0cd;
24 | --secondary-default: #faf7ec;
25 | --secondary-faint: #fffdf5;
26 | --secondary-fainter: #fffefa;
27 |
28 | --gray-50: #fafafa;
29 | --gray-100: #f5f5f5;
30 | --gray-200: #e5e5e5;
31 | --gray-300: #d4d4d4;
32 | --gray-400: #a3a3a3;
33 | --gray-500: #737373;
34 | --gray-600: #525252;
35 | --gray-700: #404040;
36 | --gray-800: #262626;
37 | --gray-900: #171717;
38 | --gray-950: #0a0a0a;
39 |
40 | --black: #000000;
41 | --white: #ffffff;
42 |
43 | --accent-yellow-light: #fef3c7;
44 | --accent-yellow-dark: #92400e;
45 | --accent-skyblue-light: #dbeafe;
46 | --accent-skyblue-dark: #1e40af;
47 | --accent-green: #50b40a;
48 | --accent-red: #d32f2f;
49 | --accent-darkgreen-dark: #065f46;
50 | --accent-darkgreen-light: #d1fae5;
51 | --accent-purple-dark: #5b21b6;
52 | --accent-purple-light: #ede9fe;
53 | --accent-pink-dark: #9d174d;
54 | --accent-pink-light: #fce7f3;
55 | --accent-maroon-dark: #991b1b;
56 | --accent-maroon-light: #fee2e2;
57 | }
58 |
59 | body {
60 | color: rgb(var(--foreground-rgb));
61 | background: linear-gradient(to bottom, transparent, rgb(var(--background-end-rgb))) rgb(var(--background-start-rgb));
62 | }
63 |
64 | @layer utilities {
65 | .text-balance {
66 | text-wrap: balance;
67 | }
68 | }
69 |
70 | :root {
71 | --background: var(--secondary-default);
72 | --accent: var(--brand-default);
73 | --accent-background: var(--brand-default);
74 | }
75 |
76 | :root {
77 | --border-default: var(--gray-300);
78 | --border-radius-default: 2px;
79 |
80 | /* Typography */
81 | --font-family-sans: 'ABCDiatype', 'Trebuchet MS', sans-serif;
82 | --font-family-serif: 'Reckless', Georgia, serif;
83 | --text-light-default: #111827;
84 | --text-light-muted: #6b7280;
85 | --text-light-subtle: #9ca3af;
86 | --text-light-faint: #e5e7eb;
87 | --text-light-link: #1f40ed;
88 | }
89 |
90 | body {
91 | color: var(--foreground);
92 | background: var(--background);
93 |
94 | /* Apply ABCDiatype for body */
95 | font-family: var(--font-abcd-diatype), sans-serif;
96 | }
97 |
98 | /* Apply Reckless for headings */
99 | h1, h2, h3, h4, h5, h6 {
100 | font-family: var(--font-reckless), serif;
101 | }
102 |
103 |
104 | @layer utilities {
105 | .text-balance {
106 | text-wrap: balance;
107 | }
108 | }
--------------------------------------------------------------------------------
/app/layout.tsx:
--------------------------------------------------------------------------------
1 | import type { Metadata } from "next";
2 | import localFont from "next/font/local";
3 | import "./globals.css";
4 | import { Analytics } from '@vercel/analytics/next';
5 |
6 | // Load the ABCDiatype font (Regular and Bold only)
7 | const abcdDiatype = localFont({
8 | src: [
9 | { path: "./fonts/ABCDiatype-Regular.otf", weight: "400" },
10 | { path: "./fonts/ABCDiatype-Bold.otf", weight: "700" },
11 | ],
12 | variable: "--font-abcd-diatype",
13 | });
14 |
15 | // Load the Reckless font (Regular and Medium only)
16 | const reckless = localFont({
17 | src: [
18 | { path: "./fonts/RecklessTRIAL-Regular.woff2", weight: "400" },
19 | { path: "./fonts/RecklessTRIAL-Medium.woff2", weight: "500" },
20 | ],
21 | variable: "--font-reckless",
22 | });
23 |
24 | export const metadata: Metadata = {
25 | title: "Exa & o3-mini chat app",
26 | description: "An opensource chat application built with Exa for web search and openai o3-mini.",
27 | openGraph: {
28 | title: "Exa & o3-mini chat app",
29 | description: "An opensource chat application built with Exa for web search and openai o3-mini.",
30 | type: "website",
31 | locale: "en_US",
32 | images: [
33 | {
34 | url: "https://o3minichat.exa.ai/opengraph-image.jpg",
35 | width: 1200,
36 | height: 630,
37 | alt: "Exa & o3-mini chat app"
38 | }
39 | ]
40 | },
41 | twitter: {
42 | card: "summary_large_image",
43 | title: "Exa & o3-mini chat app",
44 | description: "An opensource chat application built with Exa for web search and openai o3-mini.",
45 | images: ["https://o3minichat.exa.ai/opengraph-image.jpg"]
46 | },
47 | metadataBase: new URL("https://o3minichat.exa.ai/"),
48 | robots: {
49 | index: true,
50 | follow: true
51 | },
52 | };
53 |
54 | export default function RootLayout({
55 | children,
56 | }: Readonly<{
57 | children: React.ReactNode;
58 | }>) {
59 | return (
60 |
61 |
62 |
63 |
64 |
67 | {children}
68 |
69 |
70 |
71 | );
72 | }
73 |
74 |
--------------------------------------------------------------------------------
/app/opengraph-image.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/exa-labs/exa-o3mini-chat/7be5f484c80be9948b5b7b061398732ba8367d1b/app/opengraph-image.jpg
--------------------------------------------------------------------------------
/app/page.tsx:
--------------------------------------------------------------------------------
1 | 'use client';
2 |
3 | import { useChat } from 'ai/react';
4 | import MessageContent from './components/MessageContent';
5 |
6 | export default function Page() {
7 | const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat();
8 | const hasMessages = messages.length > 0;
9 |
10 | return (
11 | <>
12 | {/* Top Navigation Bar */}
13 |
46 |
47 | {/* Chat Messages */}
48 |
49 |
50 | {messages.map((message) => (
51 |
70 | ))}
71 |
72 | {/* Loading indicator */}
73 | {isLoading && (
74 |
75 |
76 |
77 |
78 |
Asking o3-mini and searching on Exa...
79 |
80 | )}
81 |
82 |
83 |
84 | {/* Input Form - centered when no messages, fixed bottom otherwise */}
85 |
90 |
95 |
116 | {!hasMessages && (
117 |
123 | )}
124 |
125 |
126 | >
127 | );
128 | }
--------------------------------------------------------------------------------
/next.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('next').NextConfig} */
2 | const nextConfig = {};
3 |
4 | export default nextConfig;
5 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "exa-o3mini-chat",
3 | "version": "0.1.0",
4 | "lockfileVersion": 3,
5 | "requires": true,
6 | "packages": {
7 | "": {
8 | "name": "exa-o3mini-chat",
9 | "version": "0.1.0",
10 | "dependencies": {
11 | "@ai-sdk/openai": "^1.1.9",
12 | "@tailwindcss/typography": "^0.5.16",
13 | "@vercel/analytics": "^1.4.1",
14 | "ai": "^4.1.16",
15 | "exa-js": "^1.4.8",
16 | "next": "14.2.17",
17 | "react": "^18",
18 | "react-dom": "^18",
19 | "tailwindcss-animate": "^1.0.7"
20 | },
21 | "devDependencies": {
22 | "@types/node": "^20",
23 | "@types/react": "^18",
24 | "@types/react-dom": "^18",
25 | "postcss": "^8",
26 | "tailwindcss": "^3.4.17",
27 | "typescript": "^5"
28 | }
29 | },
30 | "node_modules/@ai-sdk/openai": {
31 | "version": "1.1.9",
32 | "resolved": "https://registry.npmjs.org/@ai-sdk/openai/-/openai-1.1.9.tgz",
33 | "integrity": "sha512-t/CpC4TLipdbgBJTMX/otzzqzCMBSPQwUOkYPGbT/jyuC86F+YO9o+LS0Ty2pGUE1kyT+B3WmJ318B16ZCg4hw==",
34 | "dependencies": {
35 | "@ai-sdk/provider": "1.0.7",
36 | "@ai-sdk/provider-utils": "2.1.6"
37 | },
38 | "engines": {
39 | "node": ">=18"
40 | },
41 | "peerDependencies": {
42 | "zod": "^3.0.0"
43 | }
44 | },
45 | "node_modules/@ai-sdk/provider": {
46 | "version": "1.0.7",
47 | "resolved": "https://registry.npmjs.org/@ai-sdk/provider/-/provider-1.0.7.tgz",
48 | "integrity": "sha512-q1PJEZ0qD9rVR+8JFEd01/QM++csMT5UVwYXSN2u54BrVw/D8TZLTeg2FEfKK00DgAx0UtWd8XOhhwITP9BT5g==",
49 | "dependencies": {
50 | "json-schema": "^0.4.0"
51 | },
52 | "engines": {
53 | "node": ">=18"
54 | }
55 | },
56 | "node_modules/@ai-sdk/provider-utils": {
57 | "version": "2.1.6",
58 | "resolved": "https://registry.npmjs.org/@ai-sdk/provider-utils/-/provider-utils-2.1.6.tgz",
59 | "integrity": "sha512-Pfyaj0QZS22qyVn5Iz7IXcJ8nKIKlu2MeSAdKJzTwkAks7zdLaKVB+396Rqcp1bfQnxl7vaduQVMQiXUrgK8Gw==",
60 | "dependencies": {
61 | "@ai-sdk/provider": "1.0.7",
62 | "eventsource-parser": "^3.0.0",
63 | "nanoid": "^3.3.8",
64 | "secure-json-parse": "^2.7.0"
65 | },
66 | "engines": {
67 | "node": ">=18"
68 | },
69 | "peerDependencies": {
70 | "zod": "^3.0.0"
71 | },
72 | "peerDependenciesMeta": {
73 | "zod": {
74 | "optional": true
75 | }
76 | }
77 | },
78 | "node_modules/@ai-sdk/react": {
79 | "version": "1.1.8",
80 | "resolved": "https://registry.npmjs.org/@ai-sdk/react/-/react-1.1.8.tgz",
81 | "integrity": "sha512-buHm7hP21xEOksnRQtJX9fKbi7cAUwanEBa5niddTDibCDKd+kIXP2vaJGy8+heB3rff+XSW3BWlA8pscK+n1g==",
82 | "dependencies": {
83 | "@ai-sdk/provider-utils": "2.1.6",
84 | "@ai-sdk/ui-utils": "1.1.8",
85 | "swr": "^2.2.5",
86 | "throttleit": "2.1.0"
87 | },
88 | "engines": {
89 | "node": ">=18"
90 | },
91 | "peerDependencies": {
92 | "react": "^18 || ^19 || ^19.0.0-rc",
93 | "zod": "^3.0.0"
94 | },
95 | "peerDependenciesMeta": {
96 | "react": {
97 | "optional": true
98 | },
99 | "zod": {
100 | "optional": true
101 | }
102 | }
103 | },
104 | "node_modules/@ai-sdk/ui-utils": {
105 | "version": "1.1.8",
106 | "resolved": "https://registry.npmjs.org/@ai-sdk/ui-utils/-/ui-utils-1.1.8.tgz",
107 | "integrity": "sha512-nbok53K1EalO2sZjBLFB33cqs+8SxiL6pe7ekZ7+5f2MJTwdvpShl6d9U4O8fO3DnZ9pYLzaVC0XNMxnJt030Q==",
108 | "dependencies": {
109 | "@ai-sdk/provider": "1.0.7",
110 | "@ai-sdk/provider-utils": "2.1.6",
111 | "zod-to-json-schema": "^3.24.1"
112 | },
113 | "engines": {
114 | "node": ">=18"
115 | },
116 | "peerDependencies": {
117 | "zod": "^3.0.0"
118 | },
119 | "peerDependenciesMeta": {
120 | "zod": {
121 | "optional": true
122 | }
123 | }
124 | },
125 | "node_modules/@alloc/quick-lru": {
126 | "version": "5.2.0",
127 | "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",
128 | "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",
129 | "engines": {
130 | "node": ">=10"
131 | },
132 | "funding": {
133 | "url": "https://github.com/sponsors/sindresorhus"
134 | }
135 | },
136 | "node_modules/@isaacs/cliui": {
137 | "version": "8.0.2",
138 | "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
139 | "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
140 | "dependencies": {
141 | "string-width": "^5.1.2",
142 | "string-width-cjs": "npm:string-width@^4.2.0",
143 | "strip-ansi": "^7.0.1",
144 | "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
145 | "wrap-ansi": "^8.1.0",
146 | "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
147 | },
148 | "engines": {
149 | "node": ">=12"
150 | }
151 | },
152 | "node_modules/@jridgewell/gen-mapping": {
153 | "version": "0.3.8",
154 | "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz",
155 | "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==",
156 | "dependencies": {
157 | "@jridgewell/set-array": "^1.2.1",
158 | "@jridgewell/sourcemap-codec": "^1.4.10",
159 | "@jridgewell/trace-mapping": "^0.3.24"
160 | },
161 | "engines": {
162 | "node": ">=6.0.0"
163 | }
164 | },
165 | "node_modules/@jridgewell/resolve-uri": {
166 | "version": "3.1.2",
167 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
168 | "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
169 | "engines": {
170 | "node": ">=6.0.0"
171 | }
172 | },
173 | "node_modules/@jridgewell/set-array": {
174 | "version": "1.2.1",
175 | "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
176 | "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
177 | "engines": {
178 | "node": ">=6.0.0"
179 | }
180 | },
181 | "node_modules/@jridgewell/sourcemap-codec": {
182 | "version": "1.5.0",
183 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
184 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="
185 | },
186 | "node_modules/@jridgewell/trace-mapping": {
187 | "version": "0.3.25",
188 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
189 | "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
190 | "dependencies": {
191 | "@jridgewell/resolve-uri": "^3.1.0",
192 | "@jridgewell/sourcemap-codec": "^1.4.14"
193 | }
194 | },
195 | "node_modules/@next/env": {
196 | "version": "14.2.17",
197 | "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.17.tgz",
198 | "integrity": "sha512-MCgO7VHxXo8sYR/0z+sk9fGyJJU636JyRmkjc7ZJY8Hurl8df35qG5hoAh5KMs75FLjhlEo9bb2LGe89Y/scDA=="
199 | },
200 | "node_modules/@next/swc-darwin-arm64": {
201 | "version": "14.2.17",
202 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.17.tgz",
203 | "integrity": "sha512-WiOf5nElPknrhRMTipXYTJcUz7+8IAjOYw3vXzj3BYRcVY0hRHKWgTgQ5439EvzQyHEko77XK+yN9x9OJ0oOog==",
204 | "cpu": [
205 | "arm64"
206 | ],
207 | "optional": true,
208 | "os": [
209 | "darwin"
210 | ],
211 | "engines": {
212 | "node": ">= 10"
213 | }
214 | },
215 | "node_modules/@next/swc-darwin-x64": {
216 | "version": "14.2.17",
217 | "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.17.tgz",
218 | "integrity": "sha512-29y425wYnL17cvtxrDQWC3CkXe/oRrdt8ie61S03VrpwpPRI0XsnTvtKO06XCisK4alaMnZlf8riwZIbJTaSHQ==",
219 | "cpu": [
220 | "x64"
221 | ],
222 | "optional": true,
223 | "os": [
224 | "darwin"
225 | ],
226 | "engines": {
227 | "node": ">= 10"
228 | }
229 | },
230 | "node_modules/@next/swc-linux-arm64-gnu": {
231 | "version": "14.2.17",
232 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.17.tgz",
233 | "integrity": "sha512-SSHLZls3ZwNEHsc+d0ynKS+7Af0Nr8+KTUBAy9pm6xz9SHkJ/TeuEg6W3cbbcMSh6j4ITvrjv3Oi8n27VR+IPw==",
234 | "cpu": [
235 | "arm64"
236 | ],
237 | "optional": true,
238 | "os": [
239 | "linux"
240 | ],
241 | "engines": {
242 | "node": ">= 10"
243 | }
244 | },
245 | "node_modules/@next/swc-linux-arm64-musl": {
246 | "version": "14.2.17",
247 | "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.17.tgz",
248 | "integrity": "sha512-VFge37us5LNPatB4F7iYeuGs9Dprqe4ZkW7lOEJM91r+Wf8EIdViWHLpIwfdDXinvCdLl6b4VyLpEBwpkctJHA==",
249 | "cpu": [
250 | "arm64"
251 | ],
252 | "optional": true,
253 | "os": [
254 | "linux"
255 | ],
256 | "engines": {
257 | "node": ">= 10"
258 | }
259 | },
260 | "node_modules/@next/swc-linux-x64-gnu": {
261 | "version": "14.2.17",
262 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.17.tgz",
263 | "integrity": "sha512-aaQlpxUVb9RZ41adlTYVQ3xvYEfBPUC8+6rDgmQ/0l7SvK8S1YNJzPmDPX6a4t0jLtIoNk7j+nroS/pB4nx7vQ==",
264 | "cpu": [
265 | "x64"
266 | ],
267 | "optional": true,
268 | "os": [
269 | "linux"
270 | ],
271 | "engines": {
272 | "node": ">= 10"
273 | }
274 | },
275 | "node_modules/@next/swc-linux-x64-musl": {
276 | "version": "14.2.17",
277 | "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.17.tgz",
278 | "integrity": "sha512-HSyEiFaEY3ay5iATDqEup5WAfrhMATNJm8dYx3ZxL+e9eKv10XKZCwtZByDoLST7CyBmyDz+OFJL1wigyXeaoA==",
279 | "cpu": [
280 | "x64"
281 | ],
282 | "optional": true,
283 | "os": [
284 | "linux"
285 | ],
286 | "engines": {
287 | "node": ">= 10"
288 | }
289 | },
290 | "node_modules/@next/swc-win32-arm64-msvc": {
291 | "version": "14.2.17",
292 | "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.17.tgz",
293 | "integrity": "sha512-h5qM9Btqv87eYH8ArrnLoAHLyi79oPTP2vlGNSg4CDvUiXgi7l0+5KuEGp5pJoMhjuv9ChRdm7mRlUUACeBt4w==",
294 | "cpu": [
295 | "arm64"
296 | ],
297 | "optional": true,
298 | "os": [
299 | "win32"
300 | ],
301 | "engines": {
302 | "node": ">= 10"
303 | }
304 | },
305 | "node_modules/@next/swc-win32-ia32-msvc": {
306 | "version": "14.2.17",
307 | "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.17.tgz",
308 | "integrity": "sha512-BD/G++GKSLexQjdyoEUgyo5nClU7er5rK0sE+HlEqnldJSm96CIr/+YOTT063LVTT/dUOeQsNgp5DXr86/K7/A==",
309 | "cpu": [
310 | "ia32"
311 | ],
312 | "optional": true,
313 | "os": [
314 | "win32"
315 | ],
316 | "engines": {
317 | "node": ">= 10"
318 | }
319 | },
320 | "node_modules/@next/swc-win32-x64-msvc": {
321 | "version": "14.2.17",
322 | "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.17.tgz",
323 | "integrity": "sha512-vkQfN1+4V4KqDibkW2q0sJ6CxQuXq5l2ma3z0BRcfIqkAMZiiW67T9yCpwqJKP68QghBtPEFjPAlaqe38O6frw==",
324 | "cpu": [
325 | "x64"
326 | ],
327 | "optional": true,
328 | "os": [
329 | "win32"
330 | ],
331 | "engines": {
332 | "node": ">= 10"
333 | }
334 | },
335 | "node_modules/@nodelib/fs.scandir": {
336 | "version": "2.1.5",
337 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
338 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
339 | "dependencies": {
340 | "@nodelib/fs.stat": "2.0.5",
341 | "run-parallel": "^1.1.9"
342 | },
343 | "engines": {
344 | "node": ">= 8"
345 | }
346 | },
347 | "node_modules/@nodelib/fs.stat": {
348 | "version": "2.0.5",
349 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
350 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
351 | "engines": {
352 | "node": ">= 8"
353 | }
354 | },
355 | "node_modules/@nodelib/fs.walk": {
356 | "version": "1.2.8",
357 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
358 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
359 | "dependencies": {
360 | "@nodelib/fs.scandir": "2.1.5",
361 | "fastq": "^1.6.0"
362 | },
363 | "engines": {
364 | "node": ">= 8"
365 | }
366 | },
367 | "node_modules/@opentelemetry/api": {
368 | "version": "1.9.0",
369 | "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz",
370 | "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==",
371 | "engines": {
372 | "node": ">=8.0.0"
373 | }
374 | },
375 | "node_modules/@pkgjs/parseargs": {
376 | "version": "0.11.0",
377 | "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
378 | "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
379 | "optional": true,
380 | "engines": {
381 | "node": ">=14"
382 | }
383 | },
384 | "node_modules/@swc/counter": {
385 | "version": "0.1.3",
386 | "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz",
387 | "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="
388 | },
389 | "node_modules/@swc/helpers": {
390 | "version": "0.5.5",
391 | "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz",
392 | "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==",
393 | "dependencies": {
394 | "@swc/counter": "^0.1.3",
395 | "tslib": "^2.4.0"
396 | }
397 | },
398 | "node_modules/@tailwindcss/typography": {
399 | "version": "0.5.16",
400 | "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz",
401 | "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==",
402 | "dependencies": {
403 | "lodash.castarray": "^4.4.0",
404 | "lodash.isplainobject": "^4.0.6",
405 | "lodash.merge": "^4.6.2",
406 | "postcss-selector-parser": "6.0.10"
407 | },
408 | "peerDependencies": {
409 | "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
410 | }
411 | },
412 | "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": {
413 | "version": "6.0.10",
414 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz",
415 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==",
416 | "dependencies": {
417 | "cssesc": "^3.0.0",
418 | "util-deprecate": "^1.0.2"
419 | },
420 | "engines": {
421 | "node": ">=4"
422 | }
423 | },
424 | "node_modules/@types/diff-match-patch": {
425 | "version": "1.0.36",
426 | "resolved": "https://registry.npmjs.org/@types/diff-match-patch/-/diff-match-patch-1.0.36.tgz",
427 | "integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg=="
428 | },
429 | "node_modules/@types/node": {
430 | "version": "20.17.16",
431 | "resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.16.tgz",
432 | "integrity": "sha512-vOTpLduLkZXePLxHiHsBLp98mHGnl8RptV4YAO3HfKO5UHjDvySGbxKtpYfy8Sx5+WKcgc45qNreJJRVM3L6mw==",
433 | "dev": true,
434 | "dependencies": {
435 | "undici-types": "~6.19.2"
436 | }
437 | },
438 | "node_modules/@types/prop-types": {
439 | "version": "15.7.14",
440 | "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
441 | "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
442 | "dev": true
443 | },
444 | "node_modules/@types/react": {
445 | "version": "18.3.18",
446 | "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz",
447 | "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==",
448 | "dev": true,
449 | "dependencies": {
450 | "@types/prop-types": "*",
451 | "csstype": "^3.0.2"
452 | }
453 | },
454 | "node_modules/@types/react-dom": {
455 | "version": "18.3.5",
456 | "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz",
457 | "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==",
458 | "dev": true,
459 | "peerDependencies": {
460 | "@types/react": "^18.0.0"
461 | }
462 | },
463 | "node_modules/@vercel/analytics": {
464 | "version": "1.4.1",
465 | "resolved": "https://registry.npmjs.org/@vercel/analytics/-/analytics-1.4.1.tgz",
466 | "integrity": "sha512-ekpL4ReX2TH3LnrRZTUKjHHNpNy9S1I7QmS+g/RQXoSUQ8ienzosuX7T9djZ/s8zPhBx1mpHP/Rw5875N+zQIQ==",
467 | "peerDependencies": {
468 | "@remix-run/react": "^2",
469 | "@sveltejs/kit": "^1 || ^2",
470 | "next": ">= 13",
471 | "react": "^18 || ^19 || ^19.0.0-rc",
472 | "svelte": ">= 4",
473 | "vue": "^3",
474 | "vue-router": "^4"
475 | },
476 | "peerDependenciesMeta": {
477 | "@remix-run/react": {
478 | "optional": true
479 | },
480 | "@sveltejs/kit": {
481 | "optional": true
482 | },
483 | "next": {
484 | "optional": true
485 | },
486 | "react": {
487 | "optional": true
488 | },
489 | "svelte": {
490 | "optional": true
491 | },
492 | "vue": {
493 | "optional": true
494 | },
495 | "vue-router": {
496 | "optional": true
497 | }
498 | }
499 | },
500 | "node_modules/ai": {
501 | "version": "4.1.16",
502 | "resolved": "https://registry.npmjs.org/ai/-/ai-4.1.16.tgz",
503 | "integrity": "sha512-4l8Dl2+reG210/l19E/D9NrpfumJuiyih7EehVm1wdMhz4/rSLjVewxkcmdcTczPee3/axB5Rp5h8q5hyIYB/g==",
504 | "dependencies": {
505 | "@ai-sdk/provider": "1.0.7",
506 | "@ai-sdk/provider-utils": "2.1.6",
507 | "@ai-sdk/react": "1.1.8",
508 | "@ai-sdk/ui-utils": "1.1.8",
509 | "@opentelemetry/api": "1.9.0",
510 | "jsondiffpatch": "0.6.0"
511 | },
512 | "engines": {
513 | "node": ">=18"
514 | },
515 | "peerDependencies": {
516 | "react": "^18 || ^19 || ^19.0.0-rc",
517 | "zod": "^3.0.0"
518 | },
519 | "peerDependenciesMeta": {
520 | "react": {
521 | "optional": true
522 | },
523 | "zod": {
524 | "optional": true
525 | }
526 | }
527 | },
528 | "node_modules/ansi-regex": {
529 | "version": "6.1.0",
530 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
531 | "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
532 | "engines": {
533 | "node": ">=12"
534 | },
535 | "funding": {
536 | "url": "https://github.com/chalk/ansi-regex?sponsor=1"
537 | }
538 | },
539 | "node_modules/ansi-styles": {
540 | "version": "6.2.1",
541 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",
542 | "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",
543 | "engines": {
544 | "node": ">=12"
545 | },
546 | "funding": {
547 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
548 | }
549 | },
550 | "node_modules/any-promise": {
551 | "version": "1.3.0",
552 | "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
553 | "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="
554 | },
555 | "node_modules/anymatch": {
556 | "version": "3.1.3",
557 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
558 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
559 | "dependencies": {
560 | "normalize-path": "^3.0.0",
561 | "picomatch": "^2.0.4"
562 | },
563 | "engines": {
564 | "node": ">= 8"
565 | }
566 | },
567 | "node_modules/arg": {
568 | "version": "5.0.2",
569 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",
570 | "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="
571 | },
572 | "node_modules/balanced-match": {
573 | "version": "1.0.2",
574 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
575 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
576 | },
577 | "node_modules/binary-extensions": {
578 | "version": "2.3.0",
579 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
580 | "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
581 | "engines": {
582 | "node": ">=8"
583 | },
584 | "funding": {
585 | "url": "https://github.com/sponsors/sindresorhus"
586 | }
587 | },
588 | "node_modules/brace-expansion": {
589 | "version": "2.0.1",
590 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
591 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
592 | "dependencies": {
593 | "balanced-match": "^1.0.0"
594 | }
595 | },
596 | "node_modules/braces": {
597 | "version": "3.0.3",
598 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
599 | "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
600 | "dependencies": {
601 | "fill-range": "^7.1.1"
602 | },
603 | "engines": {
604 | "node": ">=8"
605 | }
606 | },
607 | "node_modules/busboy": {
608 | "version": "1.6.0",
609 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
610 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
611 | "dependencies": {
612 | "streamsearch": "^1.1.0"
613 | },
614 | "engines": {
615 | "node": ">=10.16.0"
616 | }
617 | },
618 | "node_modules/camelcase-css": {
619 | "version": "2.0.1",
620 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
621 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",
622 | "engines": {
623 | "node": ">= 6"
624 | }
625 | },
626 | "node_modules/caniuse-lite": {
627 | "version": "1.0.30001696",
628 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001696.tgz",
629 | "integrity": "sha512-pDCPkvzfa39ehJtJ+OwGT/2yvT2SbjfHhiIW2LWOAcMQ7BzwxT/XuyUp4OTOd0XFWA6BKw0JalnBHgSi5DGJBQ==",
630 | "funding": [
631 | {
632 | "type": "opencollective",
633 | "url": "https://opencollective.com/browserslist"
634 | },
635 | {
636 | "type": "tidelift",
637 | "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
638 | },
639 | {
640 | "type": "github",
641 | "url": "https://github.com/sponsors/ai"
642 | }
643 | ]
644 | },
645 | "node_modules/chalk": {
646 | "version": "5.4.1",
647 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
648 | "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
649 | "engines": {
650 | "node": "^12.17.0 || ^14.13 || >=16.0.0"
651 | },
652 | "funding": {
653 | "url": "https://github.com/chalk/chalk?sponsor=1"
654 | }
655 | },
656 | "node_modules/chokidar": {
657 | "version": "3.6.0",
658 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
659 | "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
660 | "dependencies": {
661 | "anymatch": "~3.1.2",
662 | "braces": "~3.0.2",
663 | "glob-parent": "~5.1.2",
664 | "is-binary-path": "~2.1.0",
665 | "is-glob": "~4.0.1",
666 | "normalize-path": "~3.0.0",
667 | "readdirp": "~3.6.0"
668 | },
669 | "engines": {
670 | "node": ">= 8.10.0"
671 | },
672 | "funding": {
673 | "url": "https://paulmillr.com/funding/"
674 | },
675 | "optionalDependencies": {
676 | "fsevents": "~2.3.2"
677 | }
678 | },
679 | "node_modules/chokidar/node_modules/glob-parent": {
680 | "version": "5.1.2",
681 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
682 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
683 | "dependencies": {
684 | "is-glob": "^4.0.1"
685 | },
686 | "engines": {
687 | "node": ">= 6"
688 | }
689 | },
690 | "node_modules/client-only": {
691 | "version": "0.0.1",
692 | "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
693 | "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
694 | },
695 | "node_modules/color-convert": {
696 | "version": "2.0.1",
697 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
698 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
699 | "dependencies": {
700 | "color-name": "~1.1.4"
701 | },
702 | "engines": {
703 | "node": ">=7.0.0"
704 | }
705 | },
706 | "node_modules/color-name": {
707 | "version": "1.1.4",
708 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
709 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
710 | },
711 | "node_modules/commander": {
712 | "version": "4.1.1",
713 | "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",
714 | "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
715 | "engines": {
716 | "node": ">= 6"
717 | }
718 | },
719 | "node_modules/cross-fetch": {
720 | "version": "4.1.0",
721 | "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz",
722 | "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==",
723 | "dependencies": {
724 | "node-fetch": "^2.7.0"
725 | }
726 | },
727 | "node_modules/cross-spawn": {
728 | "version": "7.0.6",
729 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
730 | "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
731 | "dependencies": {
732 | "path-key": "^3.1.0",
733 | "shebang-command": "^2.0.0",
734 | "which": "^2.0.1"
735 | },
736 | "engines": {
737 | "node": ">= 8"
738 | }
739 | },
740 | "node_modules/cssesc": {
741 | "version": "3.0.0",
742 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
743 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
744 | "bin": {
745 | "cssesc": "bin/cssesc"
746 | },
747 | "engines": {
748 | "node": ">=4"
749 | }
750 | },
751 | "node_modules/csstype": {
752 | "version": "3.1.3",
753 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
754 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
755 | "dev": true
756 | },
757 | "node_modules/dequal": {
758 | "version": "2.0.3",
759 | "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz",
760 | "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==",
761 | "engines": {
762 | "node": ">=6"
763 | }
764 | },
765 | "node_modules/didyoumean": {
766 | "version": "1.2.2",
767 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",
768 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="
769 | },
770 | "node_modules/diff-match-patch": {
771 | "version": "1.0.5",
772 | "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
773 | "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="
774 | },
775 | "node_modules/dlv": {
776 | "version": "1.1.3",
777 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
778 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
779 | },
780 | "node_modules/eastasianwidth": {
781 | "version": "0.2.0",
782 | "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
783 | "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="
784 | },
785 | "node_modules/emoji-regex": {
786 | "version": "9.2.2",
787 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
788 | "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="
789 | },
790 | "node_modules/eventsource-parser": {
791 | "version": "3.0.0",
792 | "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.0.tgz",
793 | "integrity": "sha512-T1C0XCUimhxVQzW4zFipdx0SficT651NnkR0ZSH3yQwh+mFMdLfgjABVi4YtMTtaL4s168593DaoaRLMqryavA==",
794 | "engines": {
795 | "node": ">=18.0.0"
796 | }
797 | },
798 | "node_modules/exa-js": {
799 | "version": "1.4.8",
800 | "resolved": "https://registry.npmjs.org/exa-js/-/exa-js-1.4.8.tgz",
801 | "integrity": "sha512-5iMt6oyfOU3Cc/7Xwqbqcvsk/w2u/Un+DRdgk9mslmCoTLchO3ehsGB5m8uciqpoxR5dOOQUpGF3WP4+tLxwvg==",
802 | "dependencies": {
803 | "cross-fetch": "^4.0.0"
804 | }
805 | },
806 | "node_modules/fast-glob": {
807 | "version": "3.3.3",
808 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
809 | "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
810 | "dependencies": {
811 | "@nodelib/fs.stat": "^2.0.2",
812 | "@nodelib/fs.walk": "^1.2.3",
813 | "glob-parent": "^5.1.2",
814 | "merge2": "^1.3.0",
815 | "micromatch": "^4.0.8"
816 | },
817 | "engines": {
818 | "node": ">=8.6.0"
819 | }
820 | },
821 | "node_modules/fast-glob/node_modules/glob-parent": {
822 | "version": "5.1.2",
823 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
824 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
825 | "dependencies": {
826 | "is-glob": "^4.0.1"
827 | },
828 | "engines": {
829 | "node": ">= 6"
830 | }
831 | },
832 | "node_modules/fastq": {
833 | "version": "1.19.0",
834 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.0.tgz",
835 | "integrity": "sha512-7SFSRCNjBQIZH/xZR3iy5iQYR8aGBE0h3VG6/cwlbrpdciNYBMotQav8c1XI3HjHH+NikUpP53nPdlZSdWmFzA==",
836 | "dependencies": {
837 | "reusify": "^1.0.4"
838 | }
839 | },
840 | "node_modules/fill-range": {
841 | "version": "7.1.1",
842 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
843 | "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
844 | "dependencies": {
845 | "to-regex-range": "^5.0.1"
846 | },
847 | "engines": {
848 | "node": ">=8"
849 | }
850 | },
851 | "node_modules/foreground-child": {
852 | "version": "3.3.0",
853 | "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
854 | "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
855 | "dependencies": {
856 | "cross-spawn": "^7.0.0",
857 | "signal-exit": "^4.0.1"
858 | },
859 | "engines": {
860 | "node": ">=14"
861 | },
862 | "funding": {
863 | "url": "https://github.com/sponsors/isaacs"
864 | }
865 | },
866 | "node_modules/fsevents": {
867 | "version": "2.3.3",
868 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
869 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
870 | "hasInstallScript": true,
871 | "optional": true,
872 | "os": [
873 | "darwin"
874 | ],
875 | "engines": {
876 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
877 | }
878 | },
879 | "node_modules/function-bind": {
880 | "version": "1.1.2",
881 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
882 | "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
883 | "funding": {
884 | "url": "https://github.com/sponsors/ljharb"
885 | }
886 | },
887 | "node_modules/glob": {
888 | "version": "10.4.5",
889 | "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
890 | "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
891 | "dependencies": {
892 | "foreground-child": "^3.1.0",
893 | "jackspeak": "^3.1.2",
894 | "minimatch": "^9.0.4",
895 | "minipass": "^7.1.2",
896 | "package-json-from-dist": "^1.0.0",
897 | "path-scurry": "^1.11.1"
898 | },
899 | "bin": {
900 | "glob": "dist/esm/bin.mjs"
901 | },
902 | "funding": {
903 | "url": "https://github.com/sponsors/isaacs"
904 | }
905 | },
906 | "node_modules/glob-parent": {
907 | "version": "6.0.2",
908 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
909 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
910 | "dependencies": {
911 | "is-glob": "^4.0.3"
912 | },
913 | "engines": {
914 | "node": ">=10.13.0"
915 | }
916 | },
917 | "node_modules/graceful-fs": {
918 | "version": "4.2.11",
919 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
920 | "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
921 | },
922 | "node_modules/hasown": {
923 | "version": "2.0.2",
924 | "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
925 | "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
926 | "dependencies": {
927 | "function-bind": "^1.1.2"
928 | },
929 | "engines": {
930 | "node": ">= 0.4"
931 | }
932 | },
933 | "node_modules/is-binary-path": {
934 | "version": "2.1.0",
935 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
936 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
937 | "dependencies": {
938 | "binary-extensions": "^2.0.0"
939 | },
940 | "engines": {
941 | "node": ">=8"
942 | }
943 | },
944 | "node_modules/is-core-module": {
945 | "version": "2.16.1",
946 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
947 | "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
948 | "dependencies": {
949 | "hasown": "^2.0.2"
950 | },
951 | "engines": {
952 | "node": ">= 0.4"
953 | },
954 | "funding": {
955 | "url": "https://github.com/sponsors/ljharb"
956 | }
957 | },
958 | "node_modules/is-extglob": {
959 | "version": "2.1.1",
960 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
961 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
962 | "engines": {
963 | "node": ">=0.10.0"
964 | }
965 | },
966 | "node_modules/is-fullwidth-code-point": {
967 | "version": "3.0.0",
968 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
969 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
970 | "engines": {
971 | "node": ">=8"
972 | }
973 | },
974 | "node_modules/is-glob": {
975 | "version": "4.0.3",
976 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
977 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
978 | "dependencies": {
979 | "is-extglob": "^2.1.1"
980 | },
981 | "engines": {
982 | "node": ">=0.10.0"
983 | }
984 | },
985 | "node_modules/is-number": {
986 | "version": "7.0.0",
987 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
988 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
989 | "engines": {
990 | "node": ">=0.12.0"
991 | }
992 | },
993 | "node_modules/isexe": {
994 | "version": "2.0.0",
995 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
996 | "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="
997 | },
998 | "node_modules/jackspeak": {
999 | "version": "3.4.3",
1000 | "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
1001 | "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
1002 | "dependencies": {
1003 | "@isaacs/cliui": "^8.0.2"
1004 | },
1005 | "funding": {
1006 | "url": "https://github.com/sponsors/isaacs"
1007 | },
1008 | "optionalDependencies": {
1009 | "@pkgjs/parseargs": "^0.11.0"
1010 | }
1011 | },
1012 | "node_modules/jiti": {
1013 | "version": "1.21.7",
1014 | "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
1015 | "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
1016 | "bin": {
1017 | "jiti": "bin/jiti.js"
1018 | }
1019 | },
1020 | "node_modules/js-tokens": {
1021 | "version": "4.0.0",
1022 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
1023 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
1024 | },
1025 | "node_modules/json-schema": {
1026 | "version": "0.4.0",
1027 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
1028 | "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA=="
1029 | },
1030 | "node_modules/jsondiffpatch": {
1031 | "version": "0.6.0",
1032 | "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz",
1033 | "integrity": "sha512-3QItJOXp2AP1uv7waBkao5nCvhEv+QmJAd38Ybq7wNI74Q+BBmnLn4EDKz6yI9xGAIQoUF87qHt+kc1IVxB4zQ==",
1034 | "dependencies": {
1035 | "@types/diff-match-patch": "^1.0.36",
1036 | "chalk": "^5.3.0",
1037 | "diff-match-patch": "^1.0.5"
1038 | },
1039 | "bin": {
1040 | "jsondiffpatch": "bin/jsondiffpatch.js"
1041 | },
1042 | "engines": {
1043 | "node": "^18.0.0 || >=20.0.0"
1044 | }
1045 | },
1046 | "node_modules/lilconfig": {
1047 | "version": "3.1.3",
1048 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
1049 | "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==",
1050 | "engines": {
1051 | "node": ">=14"
1052 | },
1053 | "funding": {
1054 | "url": "https://github.com/sponsors/antonk52"
1055 | }
1056 | },
1057 | "node_modules/lines-and-columns": {
1058 | "version": "1.2.4",
1059 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
1060 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
1061 | },
1062 | "node_modules/lodash.castarray": {
1063 | "version": "4.4.0",
1064 | "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz",
1065 | "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q=="
1066 | },
1067 | "node_modules/lodash.isplainobject": {
1068 | "version": "4.0.6",
1069 | "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
1070 | "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
1071 | },
1072 | "node_modules/lodash.merge": {
1073 | "version": "4.6.2",
1074 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
1075 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
1076 | },
1077 | "node_modules/loose-envify": {
1078 | "version": "1.4.0",
1079 | "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
1080 | "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
1081 | "dependencies": {
1082 | "js-tokens": "^3.0.0 || ^4.0.0"
1083 | },
1084 | "bin": {
1085 | "loose-envify": "cli.js"
1086 | }
1087 | },
1088 | "node_modules/lru-cache": {
1089 | "version": "10.4.3",
1090 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
1091 | "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="
1092 | },
1093 | "node_modules/merge2": {
1094 | "version": "1.4.1",
1095 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
1096 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
1097 | "engines": {
1098 | "node": ">= 8"
1099 | }
1100 | },
1101 | "node_modules/micromatch": {
1102 | "version": "4.0.8",
1103 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
1104 | "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
1105 | "dependencies": {
1106 | "braces": "^3.0.3",
1107 | "picomatch": "^2.3.1"
1108 | },
1109 | "engines": {
1110 | "node": ">=8.6"
1111 | }
1112 | },
1113 | "node_modules/minimatch": {
1114 | "version": "9.0.5",
1115 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
1116 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
1117 | "dependencies": {
1118 | "brace-expansion": "^2.0.1"
1119 | },
1120 | "engines": {
1121 | "node": ">=16 || 14 >=14.17"
1122 | },
1123 | "funding": {
1124 | "url": "https://github.com/sponsors/isaacs"
1125 | }
1126 | },
1127 | "node_modules/minipass": {
1128 | "version": "7.1.2",
1129 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
1130 | "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
1131 | "engines": {
1132 | "node": ">=16 || 14 >=14.17"
1133 | }
1134 | },
1135 | "node_modules/mz": {
1136 | "version": "2.7.0",
1137 | "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
1138 | "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
1139 | "dependencies": {
1140 | "any-promise": "^1.0.0",
1141 | "object-assign": "^4.0.1",
1142 | "thenify-all": "^1.0.0"
1143 | }
1144 | },
1145 | "node_modules/nanoid": {
1146 | "version": "3.3.8",
1147 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz",
1148 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==",
1149 | "funding": [
1150 | {
1151 | "type": "github",
1152 | "url": "https://github.com/sponsors/ai"
1153 | }
1154 | ],
1155 | "bin": {
1156 | "nanoid": "bin/nanoid.cjs"
1157 | },
1158 | "engines": {
1159 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
1160 | }
1161 | },
1162 | "node_modules/next": {
1163 | "version": "14.2.17",
1164 | "resolved": "https://registry.npmjs.org/next/-/next-14.2.17.tgz",
1165 | "integrity": "sha512-hNo/Zy701DDO3nzKkPmsLRlDfNCtb1OJxFUvjGEl04u7SFa3zwC6hqsOUzMajcaEOEV8ey1GjvByvrg0Qr5AiQ==",
1166 | "dependencies": {
1167 | "@next/env": "14.2.17",
1168 | "@swc/helpers": "0.5.5",
1169 | "busboy": "1.6.0",
1170 | "caniuse-lite": "^1.0.30001579",
1171 | "graceful-fs": "^4.2.11",
1172 | "postcss": "8.4.31",
1173 | "styled-jsx": "5.1.1"
1174 | },
1175 | "bin": {
1176 | "next": "dist/bin/next"
1177 | },
1178 | "engines": {
1179 | "node": ">=18.17.0"
1180 | },
1181 | "optionalDependencies": {
1182 | "@next/swc-darwin-arm64": "14.2.17",
1183 | "@next/swc-darwin-x64": "14.2.17",
1184 | "@next/swc-linux-arm64-gnu": "14.2.17",
1185 | "@next/swc-linux-arm64-musl": "14.2.17",
1186 | "@next/swc-linux-x64-gnu": "14.2.17",
1187 | "@next/swc-linux-x64-musl": "14.2.17",
1188 | "@next/swc-win32-arm64-msvc": "14.2.17",
1189 | "@next/swc-win32-ia32-msvc": "14.2.17",
1190 | "@next/swc-win32-x64-msvc": "14.2.17"
1191 | },
1192 | "peerDependencies": {
1193 | "@opentelemetry/api": "^1.1.0",
1194 | "@playwright/test": "^1.41.2",
1195 | "react": "^18.2.0",
1196 | "react-dom": "^18.2.0",
1197 | "sass": "^1.3.0"
1198 | },
1199 | "peerDependenciesMeta": {
1200 | "@opentelemetry/api": {
1201 | "optional": true
1202 | },
1203 | "@playwright/test": {
1204 | "optional": true
1205 | },
1206 | "sass": {
1207 | "optional": true
1208 | }
1209 | }
1210 | },
1211 | "node_modules/next/node_modules/postcss": {
1212 | "version": "8.4.31",
1213 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
1214 | "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
1215 | "funding": [
1216 | {
1217 | "type": "opencollective",
1218 | "url": "https://opencollective.com/postcss/"
1219 | },
1220 | {
1221 | "type": "tidelift",
1222 | "url": "https://tidelift.com/funding/github/npm/postcss"
1223 | },
1224 | {
1225 | "type": "github",
1226 | "url": "https://github.com/sponsors/ai"
1227 | }
1228 | ],
1229 | "dependencies": {
1230 | "nanoid": "^3.3.6",
1231 | "picocolors": "^1.0.0",
1232 | "source-map-js": "^1.0.2"
1233 | },
1234 | "engines": {
1235 | "node": "^10 || ^12 || >=14"
1236 | }
1237 | },
1238 | "node_modules/node-fetch": {
1239 | "version": "2.7.0",
1240 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
1241 | "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
1242 | "dependencies": {
1243 | "whatwg-url": "^5.0.0"
1244 | },
1245 | "engines": {
1246 | "node": "4.x || >=6.0.0"
1247 | },
1248 | "peerDependencies": {
1249 | "encoding": "^0.1.0"
1250 | },
1251 | "peerDependenciesMeta": {
1252 | "encoding": {
1253 | "optional": true
1254 | }
1255 | }
1256 | },
1257 | "node_modules/normalize-path": {
1258 | "version": "3.0.0",
1259 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
1260 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
1261 | "engines": {
1262 | "node": ">=0.10.0"
1263 | }
1264 | },
1265 | "node_modules/object-assign": {
1266 | "version": "4.1.1",
1267 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
1268 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
1269 | "engines": {
1270 | "node": ">=0.10.0"
1271 | }
1272 | },
1273 | "node_modules/object-hash": {
1274 | "version": "3.0.0",
1275 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",
1276 | "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",
1277 | "engines": {
1278 | "node": ">= 6"
1279 | }
1280 | },
1281 | "node_modules/package-json-from-dist": {
1282 | "version": "1.0.1",
1283 | "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
1284 | "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="
1285 | },
1286 | "node_modules/path-key": {
1287 | "version": "3.1.1",
1288 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
1289 | "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
1290 | "engines": {
1291 | "node": ">=8"
1292 | }
1293 | },
1294 | "node_modules/path-parse": {
1295 | "version": "1.0.7",
1296 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
1297 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
1298 | },
1299 | "node_modules/path-scurry": {
1300 | "version": "1.11.1",
1301 | "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
1302 | "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
1303 | "dependencies": {
1304 | "lru-cache": "^10.2.0",
1305 | "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
1306 | },
1307 | "engines": {
1308 | "node": ">=16 || 14 >=14.18"
1309 | },
1310 | "funding": {
1311 | "url": "https://github.com/sponsors/isaacs"
1312 | }
1313 | },
1314 | "node_modules/picocolors": {
1315 | "version": "1.1.1",
1316 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
1317 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
1318 | },
1319 | "node_modules/picomatch": {
1320 | "version": "2.3.1",
1321 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
1322 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
1323 | "engines": {
1324 | "node": ">=8.6"
1325 | },
1326 | "funding": {
1327 | "url": "https://github.com/sponsors/jonschlinkert"
1328 | }
1329 | },
1330 | "node_modules/pify": {
1331 | "version": "2.3.0",
1332 | "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
1333 | "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
1334 | "engines": {
1335 | "node": ">=0.10.0"
1336 | }
1337 | },
1338 | "node_modules/pirates": {
1339 | "version": "4.0.6",
1340 | "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",
1341 | "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",
1342 | "engines": {
1343 | "node": ">= 6"
1344 | }
1345 | },
1346 | "node_modules/postcss": {
1347 | "version": "8.5.1",
1348 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz",
1349 | "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==",
1350 | "funding": [
1351 | {
1352 | "type": "opencollective",
1353 | "url": "https://opencollective.com/postcss/"
1354 | },
1355 | {
1356 | "type": "tidelift",
1357 | "url": "https://tidelift.com/funding/github/npm/postcss"
1358 | },
1359 | {
1360 | "type": "github",
1361 | "url": "https://github.com/sponsors/ai"
1362 | }
1363 | ],
1364 | "dependencies": {
1365 | "nanoid": "^3.3.8",
1366 | "picocolors": "^1.1.1",
1367 | "source-map-js": "^1.2.1"
1368 | },
1369 | "engines": {
1370 | "node": "^10 || ^12 || >=14"
1371 | }
1372 | },
1373 | "node_modules/postcss-import": {
1374 | "version": "15.1.0",
1375 | "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",
1376 | "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",
1377 | "dependencies": {
1378 | "postcss-value-parser": "^4.0.0",
1379 | "read-cache": "^1.0.0",
1380 | "resolve": "^1.1.7"
1381 | },
1382 | "engines": {
1383 | "node": ">=14.0.0"
1384 | },
1385 | "peerDependencies": {
1386 | "postcss": "^8.0.0"
1387 | }
1388 | },
1389 | "node_modules/postcss-js": {
1390 | "version": "4.0.1",
1391 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",
1392 | "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",
1393 | "dependencies": {
1394 | "camelcase-css": "^2.0.1"
1395 | },
1396 | "engines": {
1397 | "node": "^12 || ^14 || >= 16"
1398 | },
1399 | "funding": {
1400 | "type": "opencollective",
1401 | "url": "https://opencollective.com/postcss/"
1402 | },
1403 | "peerDependencies": {
1404 | "postcss": "^8.4.21"
1405 | }
1406 | },
1407 | "node_modules/postcss-load-config": {
1408 | "version": "4.0.2",
1409 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",
1410 | "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",
1411 | "funding": [
1412 | {
1413 | "type": "opencollective",
1414 | "url": "https://opencollective.com/postcss/"
1415 | },
1416 | {
1417 | "type": "github",
1418 | "url": "https://github.com/sponsors/ai"
1419 | }
1420 | ],
1421 | "dependencies": {
1422 | "lilconfig": "^3.0.0",
1423 | "yaml": "^2.3.4"
1424 | },
1425 | "engines": {
1426 | "node": ">= 14"
1427 | },
1428 | "peerDependencies": {
1429 | "postcss": ">=8.0.9",
1430 | "ts-node": ">=9.0.0"
1431 | },
1432 | "peerDependenciesMeta": {
1433 | "postcss": {
1434 | "optional": true
1435 | },
1436 | "ts-node": {
1437 | "optional": true
1438 | }
1439 | }
1440 | },
1441 | "node_modules/postcss-nested": {
1442 | "version": "6.2.0",
1443 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz",
1444 | "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==",
1445 | "funding": [
1446 | {
1447 | "type": "opencollective",
1448 | "url": "https://opencollective.com/postcss/"
1449 | },
1450 | {
1451 | "type": "github",
1452 | "url": "https://github.com/sponsors/ai"
1453 | }
1454 | ],
1455 | "dependencies": {
1456 | "postcss-selector-parser": "^6.1.1"
1457 | },
1458 | "engines": {
1459 | "node": ">=12.0"
1460 | },
1461 | "peerDependencies": {
1462 | "postcss": "^8.2.14"
1463 | }
1464 | },
1465 | "node_modules/postcss-selector-parser": {
1466 | "version": "6.1.2",
1467 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
1468 | "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
1469 | "dependencies": {
1470 | "cssesc": "^3.0.0",
1471 | "util-deprecate": "^1.0.2"
1472 | },
1473 | "engines": {
1474 | "node": ">=4"
1475 | }
1476 | },
1477 | "node_modules/postcss-value-parser": {
1478 | "version": "4.2.0",
1479 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",
1480 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
1481 | },
1482 | "node_modules/queue-microtask": {
1483 | "version": "1.2.3",
1484 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
1485 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
1486 | "funding": [
1487 | {
1488 | "type": "github",
1489 | "url": "https://github.com/sponsors/feross"
1490 | },
1491 | {
1492 | "type": "patreon",
1493 | "url": "https://www.patreon.com/feross"
1494 | },
1495 | {
1496 | "type": "consulting",
1497 | "url": "https://feross.org/support"
1498 | }
1499 | ]
1500 | },
1501 | "node_modules/react": {
1502 | "version": "18.3.1",
1503 | "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
1504 | "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
1505 | "dependencies": {
1506 | "loose-envify": "^1.1.0"
1507 | },
1508 | "engines": {
1509 | "node": ">=0.10.0"
1510 | }
1511 | },
1512 | "node_modules/react-dom": {
1513 | "version": "18.3.1",
1514 | "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
1515 | "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
1516 | "dependencies": {
1517 | "loose-envify": "^1.1.0",
1518 | "scheduler": "^0.23.2"
1519 | },
1520 | "peerDependencies": {
1521 | "react": "^18.3.1"
1522 | }
1523 | },
1524 | "node_modules/read-cache": {
1525 | "version": "1.0.0",
1526 | "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",
1527 | "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",
1528 | "dependencies": {
1529 | "pify": "^2.3.0"
1530 | }
1531 | },
1532 | "node_modules/readdirp": {
1533 | "version": "3.6.0",
1534 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
1535 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
1536 | "dependencies": {
1537 | "picomatch": "^2.2.1"
1538 | },
1539 | "engines": {
1540 | "node": ">=8.10.0"
1541 | }
1542 | },
1543 | "node_modules/resolve": {
1544 | "version": "1.22.10",
1545 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz",
1546 | "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==",
1547 | "dependencies": {
1548 | "is-core-module": "^2.16.0",
1549 | "path-parse": "^1.0.7",
1550 | "supports-preserve-symlinks-flag": "^1.0.0"
1551 | },
1552 | "bin": {
1553 | "resolve": "bin/resolve"
1554 | },
1555 | "engines": {
1556 | "node": ">= 0.4"
1557 | },
1558 | "funding": {
1559 | "url": "https://github.com/sponsors/ljharb"
1560 | }
1561 | },
1562 | "node_modules/reusify": {
1563 | "version": "1.0.4",
1564 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
1565 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
1566 | "engines": {
1567 | "iojs": ">=1.0.0",
1568 | "node": ">=0.10.0"
1569 | }
1570 | },
1571 | "node_modules/run-parallel": {
1572 | "version": "1.2.0",
1573 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
1574 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
1575 | "funding": [
1576 | {
1577 | "type": "github",
1578 | "url": "https://github.com/sponsors/feross"
1579 | },
1580 | {
1581 | "type": "patreon",
1582 | "url": "https://www.patreon.com/feross"
1583 | },
1584 | {
1585 | "type": "consulting",
1586 | "url": "https://feross.org/support"
1587 | }
1588 | ],
1589 | "dependencies": {
1590 | "queue-microtask": "^1.2.2"
1591 | }
1592 | },
1593 | "node_modules/scheduler": {
1594 | "version": "0.23.2",
1595 | "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
1596 | "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
1597 | "dependencies": {
1598 | "loose-envify": "^1.1.0"
1599 | }
1600 | },
1601 | "node_modules/secure-json-parse": {
1602 | "version": "2.7.0",
1603 | "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz",
1604 | "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="
1605 | },
1606 | "node_modules/shebang-command": {
1607 | "version": "2.0.0",
1608 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
1609 | "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
1610 | "dependencies": {
1611 | "shebang-regex": "^3.0.0"
1612 | },
1613 | "engines": {
1614 | "node": ">=8"
1615 | }
1616 | },
1617 | "node_modules/shebang-regex": {
1618 | "version": "3.0.0",
1619 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
1620 | "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
1621 | "engines": {
1622 | "node": ">=8"
1623 | }
1624 | },
1625 | "node_modules/signal-exit": {
1626 | "version": "4.1.0",
1627 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
1628 | "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
1629 | "engines": {
1630 | "node": ">=14"
1631 | },
1632 | "funding": {
1633 | "url": "https://github.com/sponsors/isaacs"
1634 | }
1635 | },
1636 | "node_modules/source-map-js": {
1637 | "version": "1.2.1",
1638 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
1639 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
1640 | "engines": {
1641 | "node": ">=0.10.0"
1642 | }
1643 | },
1644 | "node_modules/streamsearch": {
1645 | "version": "1.1.0",
1646 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
1647 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
1648 | "engines": {
1649 | "node": ">=10.0.0"
1650 | }
1651 | },
1652 | "node_modules/string-width": {
1653 | "version": "5.1.2",
1654 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
1655 | "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
1656 | "dependencies": {
1657 | "eastasianwidth": "^0.2.0",
1658 | "emoji-regex": "^9.2.2",
1659 | "strip-ansi": "^7.0.1"
1660 | },
1661 | "engines": {
1662 | "node": ">=12"
1663 | },
1664 | "funding": {
1665 | "url": "https://github.com/sponsors/sindresorhus"
1666 | }
1667 | },
1668 | "node_modules/string-width-cjs": {
1669 | "name": "string-width",
1670 | "version": "4.2.3",
1671 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
1672 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
1673 | "dependencies": {
1674 | "emoji-regex": "^8.0.0",
1675 | "is-fullwidth-code-point": "^3.0.0",
1676 | "strip-ansi": "^6.0.1"
1677 | },
1678 | "engines": {
1679 | "node": ">=8"
1680 | }
1681 | },
1682 | "node_modules/string-width-cjs/node_modules/ansi-regex": {
1683 | "version": "5.0.1",
1684 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1685 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1686 | "engines": {
1687 | "node": ">=8"
1688 | }
1689 | },
1690 | "node_modules/string-width-cjs/node_modules/emoji-regex": {
1691 | "version": "8.0.0",
1692 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1693 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
1694 | },
1695 | "node_modules/string-width-cjs/node_modules/strip-ansi": {
1696 | "version": "6.0.1",
1697 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1698 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1699 | "dependencies": {
1700 | "ansi-regex": "^5.0.1"
1701 | },
1702 | "engines": {
1703 | "node": ">=8"
1704 | }
1705 | },
1706 | "node_modules/strip-ansi": {
1707 | "version": "7.1.0",
1708 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
1709 | "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
1710 | "dependencies": {
1711 | "ansi-regex": "^6.0.1"
1712 | },
1713 | "engines": {
1714 | "node": ">=12"
1715 | },
1716 | "funding": {
1717 | "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1718 | }
1719 | },
1720 | "node_modules/strip-ansi-cjs": {
1721 | "name": "strip-ansi",
1722 | "version": "6.0.1",
1723 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
1724 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
1725 | "dependencies": {
1726 | "ansi-regex": "^5.0.1"
1727 | },
1728 | "engines": {
1729 | "node": ">=8"
1730 | }
1731 | },
1732 | "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
1733 | "version": "5.0.1",
1734 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
1735 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
1736 | "engines": {
1737 | "node": ">=8"
1738 | }
1739 | },
1740 | "node_modules/styled-jsx": {
1741 | "version": "5.1.1",
1742 | "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
1743 | "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
1744 | "dependencies": {
1745 | "client-only": "0.0.1"
1746 | },
1747 | "engines": {
1748 | "node": ">= 12.0.0"
1749 | },
1750 | "peerDependencies": {
1751 | "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
1752 | },
1753 | "peerDependenciesMeta": {
1754 | "@babel/core": {
1755 | "optional": true
1756 | },
1757 | "babel-plugin-macros": {
1758 | "optional": true
1759 | }
1760 | }
1761 | },
1762 | "node_modules/sucrase": {
1763 | "version": "3.35.0",
1764 | "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
1765 | "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",
1766 | "dependencies": {
1767 | "@jridgewell/gen-mapping": "^0.3.2",
1768 | "commander": "^4.0.0",
1769 | "glob": "^10.3.10",
1770 | "lines-and-columns": "^1.1.6",
1771 | "mz": "^2.7.0",
1772 | "pirates": "^4.0.1",
1773 | "ts-interface-checker": "^0.1.9"
1774 | },
1775 | "bin": {
1776 | "sucrase": "bin/sucrase",
1777 | "sucrase-node": "bin/sucrase-node"
1778 | },
1779 | "engines": {
1780 | "node": ">=16 || 14 >=14.17"
1781 | }
1782 | },
1783 | "node_modules/supports-preserve-symlinks-flag": {
1784 | "version": "1.0.0",
1785 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
1786 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
1787 | "engines": {
1788 | "node": ">= 0.4"
1789 | },
1790 | "funding": {
1791 | "url": "https://github.com/sponsors/ljharb"
1792 | }
1793 | },
1794 | "node_modules/swr": {
1795 | "version": "2.3.0",
1796 | "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.0.tgz",
1797 | "integrity": "sha512-NyZ76wA4yElZWBHzSgEJc28a0u6QZvhb6w0azeL2k7+Q1gAzVK+IqQYXhVOC/mzi+HZIozrZvBVeSeOZNR2bqA==",
1798 | "dependencies": {
1799 | "dequal": "^2.0.3",
1800 | "use-sync-external-store": "^1.4.0"
1801 | },
1802 | "peerDependencies": {
1803 | "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
1804 | }
1805 | },
1806 | "node_modules/tailwindcss": {
1807 | "version": "3.4.17",
1808 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz",
1809 | "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==",
1810 | "dependencies": {
1811 | "@alloc/quick-lru": "^5.2.0",
1812 | "arg": "^5.0.2",
1813 | "chokidar": "^3.6.0",
1814 | "didyoumean": "^1.2.2",
1815 | "dlv": "^1.1.3",
1816 | "fast-glob": "^3.3.2",
1817 | "glob-parent": "^6.0.2",
1818 | "is-glob": "^4.0.3",
1819 | "jiti": "^1.21.6",
1820 | "lilconfig": "^3.1.3",
1821 | "micromatch": "^4.0.8",
1822 | "normalize-path": "^3.0.0",
1823 | "object-hash": "^3.0.0",
1824 | "picocolors": "^1.1.1",
1825 | "postcss": "^8.4.47",
1826 | "postcss-import": "^15.1.0",
1827 | "postcss-js": "^4.0.1",
1828 | "postcss-load-config": "^4.0.2",
1829 | "postcss-nested": "^6.2.0",
1830 | "postcss-selector-parser": "^6.1.2",
1831 | "resolve": "^1.22.8",
1832 | "sucrase": "^3.35.0"
1833 | },
1834 | "bin": {
1835 | "tailwind": "lib/cli.js",
1836 | "tailwindcss": "lib/cli.js"
1837 | },
1838 | "engines": {
1839 | "node": ">=14.0.0"
1840 | }
1841 | },
1842 | "node_modules/tailwindcss-animate": {
1843 | "version": "1.0.7",
1844 | "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz",
1845 | "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==",
1846 | "peerDependencies": {
1847 | "tailwindcss": ">=3.0.0 || insiders"
1848 | }
1849 | },
1850 | "node_modules/thenify": {
1851 | "version": "3.3.1",
1852 | "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
1853 | "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
1854 | "dependencies": {
1855 | "any-promise": "^1.0.0"
1856 | }
1857 | },
1858 | "node_modules/thenify-all": {
1859 | "version": "1.6.0",
1860 | "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
1861 | "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
1862 | "dependencies": {
1863 | "thenify": ">= 3.1.0 < 4"
1864 | },
1865 | "engines": {
1866 | "node": ">=0.8"
1867 | }
1868 | },
1869 | "node_modules/throttleit": {
1870 | "version": "2.1.0",
1871 | "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-2.1.0.tgz",
1872 | "integrity": "sha512-nt6AMGKW1p/70DF/hGBdJB57B8Tspmbp5gfJ8ilhLnt7kkr2ye7hzD6NVG8GGErk2HWF34igrL2CXmNIkzKqKw==",
1873 | "engines": {
1874 | "node": ">=18"
1875 | },
1876 | "funding": {
1877 | "url": "https://github.com/sponsors/sindresorhus"
1878 | }
1879 | },
1880 | "node_modules/to-regex-range": {
1881 | "version": "5.0.1",
1882 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
1883 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
1884 | "dependencies": {
1885 | "is-number": "^7.0.0"
1886 | },
1887 | "engines": {
1888 | "node": ">=8.0"
1889 | }
1890 | },
1891 | "node_modules/tr46": {
1892 | "version": "0.0.3",
1893 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
1894 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
1895 | },
1896 | "node_modules/ts-interface-checker": {
1897 | "version": "0.1.13",
1898 | "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
1899 | "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="
1900 | },
1901 | "node_modules/tslib": {
1902 | "version": "2.8.1",
1903 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
1904 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
1905 | },
1906 | "node_modules/typescript": {
1907 | "version": "5.7.3",
1908 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz",
1909 | "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==",
1910 | "dev": true,
1911 | "bin": {
1912 | "tsc": "bin/tsc",
1913 | "tsserver": "bin/tsserver"
1914 | },
1915 | "engines": {
1916 | "node": ">=14.17"
1917 | }
1918 | },
1919 | "node_modules/undici-types": {
1920 | "version": "6.19.8",
1921 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
1922 | "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
1923 | "dev": true
1924 | },
1925 | "node_modules/use-sync-external-store": {
1926 | "version": "1.4.0",
1927 | "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz",
1928 | "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==",
1929 | "peerDependencies": {
1930 | "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
1931 | }
1932 | },
1933 | "node_modules/util-deprecate": {
1934 | "version": "1.0.2",
1935 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
1936 | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
1937 | },
1938 | "node_modules/webidl-conversions": {
1939 | "version": "3.0.1",
1940 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
1941 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
1942 | },
1943 | "node_modules/whatwg-url": {
1944 | "version": "5.0.0",
1945 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
1946 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
1947 | "dependencies": {
1948 | "tr46": "~0.0.3",
1949 | "webidl-conversions": "^3.0.0"
1950 | }
1951 | },
1952 | "node_modules/which": {
1953 | "version": "2.0.2",
1954 | "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
1955 | "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
1956 | "dependencies": {
1957 | "isexe": "^2.0.0"
1958 | },
1959 | "bin": {
1960 | "node-which": "bin/node-which"
1961 | },
1962 | "engines": {
1963 | "node": ">= 8"
1964 | }
1965 | },
1966 | "node_modules/wrap-ansi": {
1967 | "version": "8.1.0",
1968 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
1969 | "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
1970 | "dependencies": {
1971 | "ansi-styles": "^6.1.0",
1972 | "string-width": "^5.0.1",
1973 | "strip-ansi": "^7.0.1"
1974 | },
1975 | "engines": {
1976 | "node": ">=12"
1977 | },
1978 | "funding": {
1979 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1980 | }
1981 | },
1982 | "node_modules/wrap-ansi-cjs": {
1983 | "name": "wrap-ansi",
1984 | "version": "7.0.0",
1985 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
1986 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
1987 | "dependencies": {
1988 | "ansi-styles": "^4.0.0",
1989 | "string-width": "^4.1.0",
1990 | "strip-ansi": "^6.0.0"
1991 | },
1992 | "engines": {
1993 | "node": ">=10"
1994 | },
1995 | "funding": {
1996 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1997 | }
1998 | },
1999 | "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
2000 | "version": "5.0.1",
2001 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
2002 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
2003 | "engines": {
2004 | "node": ">=8"
2005 | }
2006 | },
2007 | "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
2008 | "version": "4.3.0",
2009 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
2010 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2011 | "dependencies": {
2012 | "color-convert": "^2.0.1"
2013 | },
2014 | "engines": {
2015 | "node": ">=8"
2016 | },
2017 | "funding": {
2018 | "url": "https://github.com/chalk/ansi-styles?sponsor=1"
2019 | }
2020 | },
2021 | "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
2022 | "version": "8.0.0",
2023 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
2024 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
2025 | },
2026 | "node_modules/wrap-ansi-cjs/node_modules/string-width": {
2027 | "version": "4.2.3",
2028 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
2029 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
2030 | "dependencies": {
2031 | "emoji-regex": "^8.0.0",
2032 | "is-fullwidth-code-point": "^3.0.0",
2033 | "strip-ansi": "^6.0.1"
2034 | },
2035 | "engines": {
2036 | "node": ">=8"
2037 | }
2038 | },
2039 | "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
2040 | "version": "6.0.1",
2041 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
2042 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
2043 | "dependencies": {
2044 | "ansi-regex": "^5.0.1"
2045 | },
2046 | "engines": {
2047 | "node": ">=8"
2048 | }
2049 | },
2050 | "node_modules/yaml": {
2051 | "version": "2.7.0",
2052 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz",
2053 | "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==",
2054 | "bin": {
2055 | "yaml": "bin.mjs"
2056 | },
2057 | "engines": {
2058 | "node": ">= 14"
2059 | }
2060 | },
2061 | "node_modules/zod": {
2062 | "version": "3.24.1",
2063 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.1.tgz",
2064 | "integrity": "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==",
2065 | "peer": true,
2066 | "funding": {
2067 | "url": "https://github.com/sponsors/colinhacks"
2068 | }
2069 | },
2070 | "node_modules/zod-to-json-schema": {
2071 | "version": "3.24.1",
2072 | "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.1.tgz",
2073 | "integrity": "sha512-3h08nf3Vw3Wl3PK+q3ow/lIil81IT2Oa7YpQyUUDsEWbXveMesdfK1xBd2RhCkynwZndAxixji/7SYJJowr62w==",
2074 | "peerDependencies": {
2075 | "zod": "^3.24.1"
2076 | }
2077 | }
2078 | }
2079 | }
2080 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "exa-o3mini-chat",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "dev": "next dev",
7 | "build": "next build",
8 | "start": "next start",
9 | "lint": "next lint"
10 | },
11 | "dependencies": {
12 | "@ai-sdk/openai": "^1.1.9",
13 | "@tailwindcss/typography": "^0.5.16",
14 | "@vercel/analytics": "^1.4.1",
15 | "ai": "^4.1.16",
16 | "exa-js": "^1.4.8",
17 | "next": "14.2.17",
18 | "react": "^18",
19 | "react-dom": "^18",
20 | "tailwindcss-animate": "^1.0.7"
21 | },
22 | "devDependencies": {
23 | "@types/node": "^20",
24 | "@types/react": "^18",
25 | "@types/react-dom": "^18",
26 | "postcss": "^8",
27 | "tailwindcss": "^3.4.17",
28 | "typescript": "^5"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/postcss.config.mjs:
--------------------------------------------------------------------------------
1 | /** @type {import('postcss-load-config').Config} */
2 | const config = {
3 | plugins: {
4 | tailwindcss: {},
5 | },
6 | };
7 |
8 | export default config;
9 |
--------------------------------------------------------------------------------
/tailwind.config.ts:
--------------------------------------------------------------------------------
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 | foreground: 'hsl(var(--foreground))',
14 | 'background-start': 'rgb(var(--background-start-rgb))',
15 | 'background-end': 'rgb(var(--background-end-rgb))',
16 | 'brand-default': 'var(--brand-default)',
17 | 'brand-fainter': 'var(--brand-fainter)',
18 | 'brand-faint': 'var(--brand-faint)',
19 | 'brand-subtle': 'var(--brand-subtle)',
20 | 'brand-muted': 'var(--brand-muted)',
21 | 'brand-dark': 'var(--brand-dark)',
22 | 'brand-darker': 'var(--brand-darker)',
23 | 'secondary-accent': 'var(--secondary-accent)',
24 | 'secondary-accent2x': 'var(--secondary-accent2x)',
25 | 'secondary-dark': 'var(--secondary-dark)',
26 | 'secondary-darker': 'var(--secondary-darker)',
27 | 'secondary-darkest': 'var(--secondary-darkest)',
28 | 'secondary-default': 'var(--secondary-default)',
29 | 'secondary-faint': 'var(--secondary-faint)',
30 | 'secondary-fainter': 'var(--secondary-fainter)',
31 | 'gray-100': 'var(--gray-100)',
32 | 'gray-200': 'var(--gray-200)',
33 | 'gray-300': 'var(--gray-300)',
34 | 'gray-400': 'var(--gray-400)',
35 | 'gray-50': 'var(--gray-50)',
36 | 'gray-500': 'var(--gray-500)',
37 | 'gray-600': 'var(--gray-600)',
38 | 'gray-700': 'var(--gray-700)',
39 | 'gray-800': 'var(--gray-800)',
40 | 'gray-900': 'var(--gray-900)',
41 | 'gray-950': 'var(--gray-950)',
42 | black: 'var(--black)',
43 | white: 'var(--white)',
44 | 'accent-yellow-light': 'var(--accent-yellow-light)',
45 | 'accent-yellow-dark': 'var(--accent-yellow-dark)',
46 | 'accent-skyblue-light': 'var(--accent-skyblue-light)',
47 | 'accent-skyblue-dark': 'var(--accent-skyblue-dark)',
48 | 'accent-green': 'var(--accent-green)',
49 | 'accent-red': 'var(--accent-red)',
50 | 'accent-darkgreen-dark': 'var(--accent-darkgreen-dark)',
51 | 'accent-darkgreen-light': 'var(--accent-darkgreen-light)',
52 | 'accent-purple-dark': 'var(--accent-purple-dark)',
53 | 'accent-purple-light': 'var(--accent-purple-light)',
54 | 'accent-pink-dark': 'var(--accent-pink-dark)',
55 | 'accent-pink-light': 'var(--accent-pink-light)',
56 | 'accent-maroon-dark': 'var(--accent-maroon-dark)',
57 | 'accent-maroon-light': 'var(--accent-maroon-light)',
58 | 'dark-accent-skyblue-dark': 'var(--dark-accent-skyblue-dark)',
59 | 'dark-accent-skyblue-light': 'var(--dark-accent-skyblue-light)',
60 | 'dark-accent-maroon-dark': 'var(--dark-accent-maroon-dark)',
61 | 'dark-accent-maroon-light': 'var(--dark-accent-maroon-light)',
62 | 'dark-accent-green-dark': 'var(--dark-accent-green-dark)',
63 | 'dark-accent-green-light': 'var(--dark-accent-green-light)',
64 | 'dark-accent-yellow-dark': 'var(--dark-accent-yellow-dark)',
65 | 'dark-accent-yellow-light': 'var(--dark-accent-yellow-light)',
66 | 'dark-accent-purple-dark': 'var(--dark-accent-purple-dark)',
67 | 'dark-accent-purple-light': 'var(--dark-accent-purple-light)',
68 | 'dark-accent-pink-dark': 'var(--dark-accent-pink-dark)',
69 | 'dark-accent-pink-light': 'var(--dark-accent-pink-light)',
70 | background: 'hsl(var(--background))',
71 | card: {
72 | DEFAULT: 'hsl(var(--card))',
73 | foreground: 'hsl(var(--card-foreground))'
74 | },
75 | popover: {
76 | DEFAULT: 'hsl(var(--popover))',
77 | foreground: 'hsl(var(--popover-foreground))'
78 | },
79 | primary: {
80 | DEFAULT: 'hsl(var(--primary))',
81 | foreground: 'hsl(var(--primary-foreground))'
82 | },
83 | secondary: {
84 | DEFAULT: 'hsl(var(--secondary))',
85 | foreground: 'hsl(var(--secondary-foreground))'
86 | },
87 | muted: {
88 | DEFAULT: 'hsl(var(--muted))',
89 | foreground: 'hsl(var(--muted-foreground))'
90 | },
91 | accent: {
92 | DEFAULT: 'hsl(var(--accent))',
93 | foreground: 'hsl(var(--accent-foreground))'
94 | },
95 | destructive: {
96 | DEFAULT: 'hsl(var(--destructive))',
97 | foreground: 'hsl(var(--destructive-foreground))'
98 | },
99 | border: 'hsl(var(--border))',
100 | input: 'hsl(var(--input))',
101 | ring: 'hsl(var(--ring))',
102 | chart: {
103 | '1': 'hsl(var(--chart-1))',
104 | '2': 'hsl(var(--chart-2))',
105 | '3': 'hsl(var(--chart-3))',
106 | '4': 'hsl(var(--chart-4))',
107 | '5': 'hsl(var(--chart-5))'
108 | }
109 | },
110 | animation: {
111 | 'fade-up': 'fade-up 0.5s ease-out forwards'
112 | },
113 | keyframes: {
114 | 'fade-up': {
115 | '0%': {
116 | opacity: '0',
117 | transform: 'translateY(20px)'
118 | },
119 | '100%': {
120 | opacity: '1',
121 | transform: 'translateY(0)'
122 | }
123 | }
124 | },
125 | borderRadius: {
126 | lg: 'var(--radius)',
127 | md: 'calc(var(--radius) - 2px)',
128 | sm: 'calc(var(--radius) - 4px)'
129 | },
130 | backgroundImage: {
131 | 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))',
132 | 'gradient-conic':
133 | 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))',
134 | },
135 | }
136 | },
137 | plugins: [
138 | require("tailwindcss-animate"),
139 | require('@tailwindcss/typography'),
140 | ],
141 | };
142 | export default config;
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "lib": ["dom", "dom.iterable", "esnext"],
4 | "allowJs": true,
5 | "skipLibCheck": true,
6 | "strict": true,
7 | "noEmit": true,
8 | "esModuleInterop": true,
9 | "module": "esnext",
10 | "moduleResolution": "bundler",
11 | "resolveJsonModule": true,
12 | "isolatedModules": true,
13 | "jsx": "preserve",
14 | "incremental": true,
15 | "plugins": [
16 | {
17 | "name": "next"
18 | }
19 | ],
20 | "paths": {
21 | "@/*": ["./*"]
22 | }
23 | },
24 | "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
25 | "exclude": ["node_modules"]
26 | }
27 |
--------------------------------------------------------------------------------