Spaces:
Sleeping
Sleeping
Commit
·
09ee276
1
Parent(s):
f1b9d63
feat: add more examples for landing page chatbot
Browse files- app/components/{ChatBot.tsx → LandingPageChatBot.tsx} +53 -38
- app/page.tsx +4 -28
- backend/main.py +0 -4
- next.config.ts +1 -8
- package-lock.json +23 -312
- package.json +3 -1
app/components/{ChatBot.tsx → LandingPageChatBot.tsx}
RENAMED
@@ -2,6 +2,13 @@
|
|
2 |
|
3 |
import { useState, useRef, useEffect } from 'react'
|
4 |
import { useChat } from 'ai/react'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
type MessageWithLoading = {
|
7 |
content: string;
|
@@ -11,19 +18,29 @@ type MessageWithLoading = {
|
|
11 |
|
12 |
const EXAMPLE_PROMPTS = [
|
13 |
{
|
14 |
-
title: "
|
15 |
-
|
16 |
-
|
17 |
},
|
18 |
{
|
19 |
-
title: "
|
20 |
-
|
21 |
-
|
22 |
},
|
23 |
{
|
24 |
-
title: "
|
25 |
-
|
26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
}
|
28 |
]
|
29 |
|
@@ -31,11 +48,6 @@ export default function LandingPageChatBot() {
|
|
31 |
const { messages: rawMessages, input, handleInputChange, handleSubmit, isLoading, append } = useChat({
|
32 |
api: '/api/landing_page_chat',
|
33 |
streamProtocol: 'data',
|
34 |
-
headers: {
|
35 |
-
'Accept': 'text/event-stream',
|
36 |
-
'Cache-Control': 'no-cache',
|
37 |
-
'Connection': 'keep-alive',
|
38 |
-
},
|
39 |
onError: (error) => {
|
40 |
console.error('Chat error:', error);
|
41 |
},
|
@@ -82,16 +94,16 @@ export default function LandingPageChatBot() {
|
|
82 |
}
|
83 |
|
84 |
return (
|
85 |
-
<section className="w-full h-[
|
86 |
<div className="w-full max-w-5xl mx-auto h-full flex items-center">
|
87 |
{!hasInteracted && messages.length === 0 ? (
|
88 |
<div className="text-center space-y-8 w-full">
|
89 |
<div className="space-y-4">
|
90 |
<h2 className="text-5xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent">
|
91 |
-
|
92 |
</h2>
|
93 |
<p className="text-text-secondary text-xl max-w-2xl mx-auto leading-relaxed">
|
94 |
-
|
95 |
</p>
|
96 |
</div>
|
97 |
|
@@ -101,7 +113,7 @@ export default function LandingPageChatBot() {
|
|
101 |
type="text"
|
102 |
value={input}
|
103 |
onChange={handleInputChange}
|
104 |
-
placeholder="
|
105 |
className="w-full p-6 pr-36 rounded-2xl border border-border/50 bg-background-primary/50
|
106 |
backdrop-blur-sm shadow-lg focus:outline-none focus:ring-2 focus:ring-primary/50
|
107 |
text-lg transition-all duration-200 placeholder:text-text-secondary/50"
|
@@ -114,17 +126,17 @@ export default function LandingPageChatBot() {
|
|
114 |
shadow-md hover:shadow-lg active:scale-95 disabled:opacity-50
|
115 |
disabled:hover:bg-primary disabled:cursor-not-allowed"
|
116 |
>
|
117 |
-
<svg
|
118 |
-
xmlns="http://www.w3.org/2000/svg"
|
119 |
-
fill="none"
|
120 |
-
viewBox="0 0 24 24"
|
121 |
-
strokeWidth="1.5"
|
122 |
-
stroke="currentColor"
|
123 |
className={`size-6 ${isLoading ? 'animate-pulse' : ''}`}
|
124 |
>
|
125 |
-
<path
|
126 |
-
strokeLinecap="round"
|
127 |
-
strokeLinejoin="round"
|
128 |
d="M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5"
|
129 |
/>
|
130 |
</svg>
|
@@ -133,29 +145,32 @@ export default function LandingPageChatBot() {
|
|
133 |
</form>
|
134 |
|
135 |
<div className="mt-12">
|
136 |
-
<
|
137 |
-
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
|
138 |
{EXAMPLE_PROMPTS.map((prompt, index) => (
|
139 |
<button
|
140 |
key={index}
|
141 |
onClick={() => sendMessage(prompt.prompt)}
|
142 |
-
className="group p-
|
143 |
hover:bg-background-primary/50 backdrop-blur-sm transition-all duration-200
|
144 |
-
hover:border-primary/50 hover:shadow-lg text-left"
|
145 |
>
|
146 |
-
<div className="flex items-center justify-between
|
147 |
-
<
|
|
|
|
|
|
|
|
|
|
|
148 |
<svg
|
149 |
-
className="w-
|
150 |
fill="none"
|
151 |
stroke="currentColor"
|
152 |
viewBox="0 0 24 24"
|
|
|
153 |
>
|
154 |
-
<path strokeLinecap="round" strokeLinejoin="round"
|
155 |
</svg>
|
156 |
</div>
|
157 |
-
<p className="text-text-secondary text-sm mb-2">{prompt.description}</p>
|
158 |
-
<p className="text-primary text-sm font-medium truncate">{prompt.prompt}</p>
|
159 |
</button>
|
160 |
))}
|
161 |
</div>
|
@@ -164,7 +179,7 @@ export default function LandingPageChatBot() {
|
|
164 |
) : (
|
165 |
<div className="bg-background-primary/50 backdrop-blur-sm rounded-2xl shadow-lg border border-border/50 overflow-hidden w-full h-[700px] flex flex-col">
|
166 |
<div className="p-6 border-b border-border/50 bg-background-secondary/30">
|
167 |
-
<h2 className="text-xl font-semibold text-text-primary">
|
168 |
</div>
|
169 |
|
170 |
<div
|
|
|
2 |
|
3 |
import { useState, useRef, useEffect } from 'react'
|
4 |
import { useChat } from 'ai/react'
|
5 |
+
import {
|
6 |
+
AcademicCapIcon,
|
7 |
+
ClockIcon,
|
8 |
+
BookOpenIcon,
|
9 |
+
LightBulbIcon,
|
10 |
+
BriefcaseIcon,
|
11 |
+
} from '@heroicons/react/24/outline'
|
12 |
|
13 |
type MessageWithLoading = {
|
14 |
content: string;
|
|
|
18 |
|
19 |
const EXAMPLE_PROMPTS = [
|
20 |
{
|
21 |
+
title: "教案規劃",
|
22 |
+
prompt: "我想規劃一堂關於數學的課程",
|
23 |
+
icon: AcademicCapIcon
|
24 |
},
|
25 |
{
|
26 |
+
title: "英語對話",
|
27 |
+
prompt: "我想練習英語對話",
|
28 |
+
icon: ClockIcon
|
29 |
},
|
30 |
{
|
31 |
+
title: "作業批改",
|
32 |
+
prompt: "我想批改學生的作文作業",
|
33 |
+
icon: BookOpenIcon
|
34 |
+
},
|
35 |
+
{
|
36 |
+
title: "數學解題",
|
37 |
+
prompt: "我想解數學題目",
|
38 |
+
icon: LightBulbIcon
|
39 |
+
},
|
40 |
+
{
|
41 |
+
title: "我想學程式",
|
42 |
+
prompt: "我想學習如何寫程式",
|
43 |
+
icon: BriefcaseIcon
|
44 |
}
|
45 |
]
|
46 |
|
|
|
48 |
const { messages: rawMessages, input, handleInputChange, handleSubmit, isLoading, append } = useChat({
|
49 |
api: '/api/landing_page_chat',
|
50 |
streamProtocol: 'data',
|
|
|
|
|
|
|
|
|
|
|
51 |
onError: (error) => {
|
52 |
console.error('Chat error:', error);
|
53 |
},
|
|
|
94 |
}
|
95 |
|
96 |
return (
|
97 |
+
<section className="w-full h-[1000px] bg-gradient-to-b from-background-secondary to-background-primary flex items-center justify-center px-4">
|
98 |
<div className="w-full max-w-5xl mx-auto h-full flex items-center">
|
99 |
{!hasInteracted && messages.length === 0 ? (
|
100 |
<div className="text-center space-y-8 w-full">
|
101 |
<div className="space-y-4">
|
102 |
<h2 className="text-5xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent">
|
103 |
+
今天你想學什麼?
|
104 |
</h2>
|
105 |
<p className="text-text-secondary text-xl max-w-2xl mx-auto leading-relaxed">
|
106 |
+
探索新主題、獲得教學協助,或發現學習資源
|
107 |
</p>
|
108 |
</div>
|
109 |
|
|
|
113 |
type="text"
|
114 |
value={input}
|
115 |
onChange={handleInputChange}
|
116 |
+
placeholder="請問任何關於學習的問題..."
|
117 |
className="w-full p-6 pr-36 rounded-2xl border border-border/50 bg-background-primary/50
|
118 |
backdrop-blur-sm shadow-lg focus:outline-none focus:ring-2 focus:ring-primary/50
|
119 |
text-lg transition-all duration-200 placeholder:text-text-secondary/50"
|
|
|
126 |
shadow-md hover:shadow-lg active:scale-95 disabled:opacity-50
|
127 |
disabled:hover:bg-primary disabled:cursor-not-allowed"
|
128 |
>
|
129 |
+
<svg
|
130 |
+
xmlns="http://www.w3.org/2000/svg"
|
131 |
+
fill="none"
|
132 |
+
viewBox="0 0 24 24"
|
133 |
+
strokeWidth="1.5"
|
134 |
+
stroke="currentColor"
|
135 |
className={`size-6 ${isLoading ? 'animate-pulse' : ''}`}
|
136 |
>
|
137 |
+
<path
|
138 |
+
strokeLinecap="round"
|
139 |
+
strokeLinejoin="round"
|
140 |
d="M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5"
|
141 |
/>
|
142 |
</svg>
|
|
|
145 |
</form>
|
146 |
|
147 |
<div className="mt-12">
|
148 |
+
<div className="grid grid-cols-1 md:grid-cols-5 gap-4">
|
|
|
149 |
{EXAMPLE_PROMPTS.map((prompt, index) => (
|
150 |
<button
|
151 |
key={index}
|
152 |
onClick={() => sendMessage(prompt.prompt)}
|
153 |
+
className="group p-4 rounded-2xl border border-border/50 bg-background-primary/30
|
154 |
hover:bg-background-primary/50 backdrop-blur-sm transition-all duration-200
|
155 |
+
hover:border-primary/50 hover:shadow-lg text-left w-full"
|
156 |
>
|
157 |
+
<div className="flex items-center justify-between w-full">
|
158 |
+
<div className="flex items-center gap-3">
|
159 |
+
<prompt.icon className="w-8 h-8 text-primary" />
|
160 |
+
<h4 className="font-semibold text-text-primary text-md">
|
161 |
+
{prompt.title}
|
162 |
+
</h4>
|
163 |
+
</div>
|
164 |
<svg
|
165 |
+
className="w-6 h-6 text-primary opacity-0 group-hover:opacity-100 transition-opacity duration-200"
|
166 |
fill="none"
|
167 |
stroke="currentColor"
|
168 |
viewBox="0 0 24 24"
|
169 |
+
strokeWidth={2}
|
170 |
>
|
171 |
+
<path strokeLinecap="round" strokeLinejoin="round" d="M9 5l7 7-7 7" />
|
172 |
</svg>
|
173 |
</div>
|
|
|
|
|
174 |
</button>
|
175 |
))}
|
176 |
</div>
|
|
|
179 |
) : (
|
180 |
<div className="bg-background-primary/50 backdrop-blur-sm rounded-2xl shadow-lg border border-border/50 overflow-hidden w-full h-[700px] flex flex-col">
|
181 |
<div className="p-6 border-b border-border/50 bg-background-secondary/30">
|
182 |
+
<h2 className="text-xl font-semibold text-text-primary">PlayGO 導覽員</h2>
|
183 |
</div>
|
184 |
|
185 |
<div
|
app/page.tsx
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
import Link from "next/link"
|
4 |
import { useTheme } from './components/ThemeProvider'
|
5 |
-
import ChatBot from './components/
|
6 |
|
7 |
export default function LandingPage() {
|
8 |
const { theme, toggleTheme } = useTheme()
|
@@ -42,35 +42,11 @@ export default function LandingPage() {
|
|
42 |
</div>
|
43 |
</header>
|
44 |
|
45 |
-
{/* Add ChatBot right after header */}
|
46 |
-
<div className="pt-20">
|
47 |
-
<ChatBot />
|
48 |
-
</div>
|
49 |
-
|
50 |
<main className="pt-4">
|
51 |
{/* Hero Section */}
|
52 |
-
<
|
53 |
-
<
|
54 |
-
|
55 |
-
</h1>
|
56 |
-
<p className="text-text-secondary text-xl mb-12 max-w-2xl mx-auto">
|
57 |
-
PlayGo AI is the leading educational platform for building engaging AI-powered learning experiences
|
58 |
-
</p>
|
59 |
-
<div className="flex justify-center gap-4">
|
60 |
-
<Link
|
61 |
-
href="/get-started"
|
62 |
-
className="px-6 py-3 rounded-lg bg-primary text-white hover:bg-primary/90 font-medium"
|
63 |
-
>
|
64 |
-
Get Started
|
65 |
-
</Link>
|
66 |
-
<Link
|
67 |
-
href="/demo"
|
68 |
-
className="px-6 py-3 rounded-lg border border-border hover:border-primary text-text-primary font-medium"
|
69 |
-
>
|
70 |
-
View Demo
|
71 |
-
</Link>
|
72 |
-
</div>
|
73 |
-
</section>
|
74 |
|
75 |
{/* Features Grid */}
|
76 |
<section className="bg-background-secondary py-20">
|
|
|
2 |
|
3 |
import Link from "next/link"
|
4 |
import { useTheme } from './components/ThemeProvider'
|
5 |
+
import ChatBot from './components/LandingPageChatBot'
|
6 |
|
7 |
export default function LandingPage() {
|
8 |
const { theme, toggleTheme } = useTheme()
|
|
|
42 |
</div>
|
43 |
</header>
|
44 |
|
|
|
|
|
|
|
|
|
|
|
45 |
<main className="pt-4">
|
46 |
{/* Hero Section */}
|
47 |
+
<div className="">
|
48 |
+
<ChatBot />
|
49 |
+
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
|
51 |
{/* Features Grid */}
|
52 |
<section className="bg-background-secondary py-20">
|
backend/main.py
CHANGED
@@ -8,7 +8,6 @@ from pydantic import BaseModel
|
|
8 |
import openai
|
9 |
from dotenv import load_dotenv
|
10 |
from typing import List
|
11 |
-
import asyncio
|
12 |
|
13 |
# Load environment variables
|
14 |
load_dotenv()
|
@@ -74,10 +73,7 @@ async def stream_text(messages: List[Message]):
|
|
74 |
async def landing_page_chat(request: ChatRequest):
|
75 |
response = StreamingResponse(
|
76 |
stream_text(request.messages),
|
77 |
-
media_type='text/event-stream',
|
78 |
)
|
79 |
-
response.headers['Cache-Control'] = 'no-cache'
|
80 |
-
response.headers['Connection'] = 'keep-alive'
|
81 |
response.headers['x-vercel-ai-data-stream'] = 'v1'
|
82 |
return response
|
83 |
|
|
|
8 |
import openai
|
9 |
from dotenv import load_dotenv
|
10 |
from typing import List
|
|
|
11 |
|
12 |
# Load environment variables
|
13 |
load_dotenv()
|
|
|
73 |
async def landing_page_chat(request: ChatRequest):
|
74 |
response = StreamingResponse(
|
75 |
stream_text(request.messages),
|
|
|
76 |
)
|
|
|
|
|
77 |
response.headers['x-vercel-ai-data-stream'] = 'v1'
|
78 |
return response
|
79 |
|
next.config.ts
CHANGED
@@ -6,14 +6,7 @@ const nextConfig: NextConfig = {
|
|
6 |
return [
|
7 |
{
|
8 |
source: '/api/:path*',
|
9 |
-
destination: 'http://localhost:8000/api/:path*'
|
10 |
-
has: [
|
11 |
-
{
|
12 |
-
type: 'header',
|
13 |
-
key: 'accept',
|
14 |
-
value: 'text/event-stream',
|
15 |
-
},
|
16 |
-
],
|
17 |
}
|
18 |
]
|
19 |
},
|
|
|
6 |
return [
|
7 |
{
|
8 |
source: '/api/:path*',
|
9 |
+
destination: 'http://localhost:8000/api/:path*' // FastAPI backend
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
}
|
11 |
]
|
12 |
},
|
package-lock.json
CHANGED
@@ -8,10 +8,12 @@
|
|
8 |
"name": "playgo_next",
|
9 |
"version": "0.1.0",
|
10 |
"dependencies": {
|
|
|
11 |
"ai": "^3.4.31",
|
12 |
"next": "15.0.2",
|
13 |
"react": "19.0.0-rc-02c0e824-20241028",
|
14 |
-
"react-dom": "19.0.0-rc-02c0e824-20241028"
|
|
|
15 |
},
|
16 |
"devDependencies": {
|
17 |
"@types/node": "^20",
|
@@ -211,70 +213,6 @@
|
|
211 |
"url": "https://github.com/sponsors/sindresorhus"
|
212 |
}
|
213 |
},
|
214 |
-
"node_modules/@ampproject/remapping": {
|
215 |
-
"version": "2.3.0",
|
216 |
-
"resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
|
217 |
-
"integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==",
|
218 |
-
"license": "Apache-2.0",
|
219 |
-
"peer": true,
|
220 |
-
"dependencies": {
|
221 |
-
"@jridgewell/gen-mapping": "^0.3.5",
|
222 |
-
"@jridgewell/trace-mapping": "^0.3.24"
|
223 |
-
},
|
224 |
-
"engines": {
|
225 |
-
"node": ">=6.0.0"
|
226 |
-
}
|
227 |
-
},
|
228 |
-
"node_modules/@babel/helper-string-parser": {
|
229 |
-
"version": "7.25.9",
|
230 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
|
231 |
-
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
|
232 |
-
"license": "MIT",
|
233 |
-
"peer": true,
|
234 |
-
"engines": {
|
235 |
-
"node": ">=6.9.0"
|
236 |
-
}
|
237 |
-
},
|
238 |
-
"node_modules/@babel/helper-validator-identifier": {
|
239 |
-
"version": "7.25.9",
|
240 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
|
241 |
-
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
|
242 |
-
"license": "MIT",
|
243 |
-
"peer": true,
|
244 |
-
"engines": {
|
245 |
-
"node": ">=6.9.0"
|
246 |
-
}
|
247 |
-
},
|
248 |
-
"node_modules/@babel/parser": {
|
249 |
-
"version": "7.26.2",
|
250 |
-
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.2.tgz",
|
251 |
-
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
|
252 |
-
"license": "MIT",
|
253 |
-
"peer": true,
|
254 |
-
"dependencies": {
|
255 |
-
"@babel/types": "^7.26.0"
|
256 |
-
},
|
257 |
-
"bin": {
|
258 |
-
"parser": "bin/babel-parser.js"
|
259 |
-
},
|
260 |
-
"engines": {
|
261 |
-
"node": ">=6.0.0"
|
262 |
-
}
|
263 |
-
},
|
264 |
-
"node_modules/@babel/types": {
|
265 |
-
"version": "7.26.0",
|
266 |
-
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz",
|
267 |
-
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
|
268 |
-
"license": "MIT",
|
269 |
-
"peer": true,
|
270 |
-
"dependencies": {
|
271 |
-
"@babel/helper-string-parser": "^7.25.9",
|
272 |
-
"@babel/helper-validator-identifier": "^7.25.9"
|
273 |
-
},
|
274 |
-
"engines": {
|
275 |
-
"node": ">=6.9.0"
|
276 |
-
}
|
277 |
-
},
|
278 |
"node_modules/@emnapi/runtime": {
|
279 |
"version": "1.3.1",
|
280 |
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
|
@@ -348,6 +286,15 @@
|
|
348 |
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
349 |
}
|
350 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
351 |
"node_modules/@humanwhocodes/config-array": {
|
352 |
"version": "0.13.0",
|
353 |
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
|
@@ -798,6 +745,7 @@
|
|
798 |
"version": "0.3.5",
|
799 |
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
|
800 |
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
|
|
|
801 |
"license": "MIT",
|
802 |
"dependencies": {
|
803 |
"@jridgewell/set-array": "^1.2.1",
|
@@ -812,6 +760,7 @@
|
|
812 |
"version": "3.1.2",
|
813 |
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
814 |
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
|
|
815 |
"license": "MIT",
|
816 |
"engines": {
|
817 |
"node": ">=6.0.0"
|
@@ -821,6 +770,7 @@
|
|
821 |
"version": "1.2.1",
|
822 |
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
|
823 |
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
|
|
|
824 |
"license": "MIT",
|
825 |
"engines": {
|
826 |
"node": ">=6.0.0"
|
@@ -830,12 +780,14 @@
|
|
830 |
"version": "1.5.0",
|
831 |
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
|
832 |
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
|
|
|
833 |
"license": "MIT"
|
834 |
},
|
835 |
"node_modules/@jridgewell/trace-mapping": {
|
836 |
"version": "0.3.25",
|
837 |
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
|
838 |
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
|
|
|
839 |
"license": "MIT",
|
840 |
"dependencies": {
|
841 |
"@jridgewell/resolve-uri": "^3.1.0",
|
@@ -1089,13 +1041,6 @@
|
|
1089 |
"integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==",
|
1090 |
"license": "MIT"
|
1091 |
},
|
1092 |
-
"node_modules/@types/estree": {
|
1093 |
-
"version": "1.0.6",
|
1094 |
-
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
|
1095 |
-
"integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
|
1096 |
-
"license": "MIT",
|
1097 |
-
"peer": true
|
1098 |
-
},
|
1099 |
"node_modules/@types/json5": {
|
1100 |
"version": "0.0.29",
|
1101 |
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
|
@@ -1401,119 +1346,11 @@
|
|
1401 |
"dev": true,
|
1402 |
"license": "ISC"
|
1403 |
},
|
1404 |
-
"node_modules/@vue/compiler-core": {
|
1405 |
-
"version": "3.5.12",
|
1406 |
-
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.12.tgz",
|
1407 |
-
"integrity": "sha512-ISyBTRMmMYagUxhcpyEH0hpXRd/KqDU4ymofPgl2XAkY9ZhQ+h0ovEZJIiPop13UmR/54oA2cgMDjgroRelaEw==",
|
1408 |
-
"license": "MIT",
|
1409 |
-
"peer": true,
|
1410 |
-
"dependencies": {
|
1411 |
-
"@babel/parser": "^7.25.3",
|
1412 |
-
"@vue/shared": "3.5.12",
|
1413 |
-
"entities": "^4.5.0",
|
1414 |
-
"estree-walker": "^2.0.2",
|
1415 |
-
"source-map-js": "^1.2.0"
|
1416 |
-
}
|
1417 |
-
},
|
1418 |
-
"node_modules/@vue/compiler-dom": {
|
1419 |
-
"version": "3.5.12",
|
1420 |
-
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.12.tgz",
|
1421 |
-
"integrity": "sha512-9G6PbJ03uwxLHKQ3P42cMTi85lDRvGLB2rSGOiQqtXELat6uI4n8cNz9yjfVHRPIu+MsK6TE418Giruvgptckg==",
|
1422 |
-
"license": "MIT",
|
1423 |
-
"peer": true,
|
1424 |
-
"dependencies": {
|
1425 |
-
"@vue/compiler-core": "3.5.12",
|
1426 |
-
"@vue/shared": "3.5.12"
|
1427 |
-
}
|
1428 |
-
},
|
1429 |
-
"node_modules/@vue/compiler-sfc": {
|
1430 |
-
"version": "3.5.12",
|
1431 |
-
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.12.tgz",
|
1432 |
-
"integrity": "sha512-2k973OGo2JuAa5+ZlekuQJtitI5CgLMOwgl94BzMCsKZCX/xiqzJYzapl4opFogKHqwJk34vfsaKpfEhd1k5nw==",
|
1433 |
-
"license": "MIT",
|
1434 |
-
"peer": true,
|
1435 |
-
"dependencies": {
|
1436 |
-
"@babel/parser": "^7.25.3",
|
1437 |
-
"@vue/compiler-core": "3.5.12",
|
1438 |
-
"@vue/compiler-dom": "3.5.12",
|
1439 |
-
"@vue/compiler-ssr": "3.5.12",
|
1440 |
-
"@vue/shared": "3.5.12",
|
1441 |
-
"estree-walker": "^2.0.2",
|
1442 |
-
"magic-string": "^0.30.11",
|
1443 |
-
"postcss": "^8.4.47",
|
1444 |
-
"source-map-js": "^1.2.0"
|
1445 |
-
}
|
1446 |
-
},
|
1447 |
-
"node_modules/@vue/compiler-ssr": {
|
1448 |
-
"version": "3.5.12",
|
1449 |
-
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.12.tgz",
|
1450 |
-
"integrity": "sha512-eLwc7v6bfGBSM7wZOGPmRavSWzNFF6+PdRhE+VFJhNCgHiF8AM7ccoqcv5kBXA2eWUfigD7byekvf/JsOfKvPA==",
|
1451 |
-
"license": "MIT",
|
1452 |
-
"peer": true,
|
1453 |
-
"dependencies": {
|
1454 |
-
"@vue/compiler-dom": "3.5.12",
|
1455 |
-
"@vue/shared": "3.5.12"
|
1456 |
-
}
|
1457 |
-
},
|
1458 |
-
"node_modules/@vue/reactivity": {
|
1459 |
-
"version": "3.5.12",
|
1460 |
-
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.12.tgz",
|
1461 |
-
"integrity": "sha512-UzaN3Da7xnJXdz4Okb/BGbAaomRHc3RdoWqTzlvd9+WBR5m3J39J1fGcHes7U3za0ruYn/iYy/a1euhMEHvTAg==",
|
1462 |
-
"license": "MIT",
|
1463 |
-
"peer": true,
|
1464 |
-
"dependencies": {
|
1465 |
-
"@vue/shared": "3.5.12"
|
1466 |
-
}
|
1467 |
-
},
|
1468 |
-
"node_modules/@vue/runtime-core": {
|
1469 |
-
"version": "3.5.12",
|
1470 |
-
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.12.tgz",
|
1471 |
-
"integrity": "sha512-hrMUYV6tpocr3TL3Ad8DqxOdpDe4zuQY4HPY3X/VRh+L2myQO8MFXPAMarIOSGNu0bFAjh1yBkMPXZBqCk62Uw==",
|
1472 |
-
"license": "MIT",
|
1473 |
-
"peer": true,
|
1474 |
-
"dependencies": {
|
1475 |
-
"@vue/reactivity": "3.5.12",
|
1476 |
-
"@vue/shared": "3.5.12"
|
1477 |
-
}
|
1478 |
-
},
|
1479 |
-
"node_modules/@vue/runtime-dom": {
|
1480 |
-
"version": "3.5.12",
|
1481 |
-
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.12.tgz",
|
1482 |
-
"integrity": "sha512-q8VFxR9A2MRfBr6/55Q3umyoN7ya836FzRXajPB6/Vvuv0zOPL+qltd9rIMzG/DbRLAIlREmnLsplEF/kotXKA==",
|
1483 |
-
"license": "MIT",
|
1484 |
-
"peer": true,
|
1485 |
-
"dependencies": {
|
1486 |
-
"@vue/reactivity": "3.5.12",
|
1487 |
-
"@vue/runtime-core": "3.5.12",
|
1488 |
-
"@vue/shared": "3.5.12",
|
1489 |
-
"csstype": "^3.1.3"
|
1490 |
-
}
|
1491 |
-
},
|
1492 |
-
"node_modules/@vue/server-renderer": {
|
1493 |
-
"version": "3.5.12",
|
1494 |
-
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.12.tgz",
|
1495 |
-
"integrity": "sha512-I3QoeDDeEPZm8yR28JtY+rk880Oqmj43hreIBVTicisFTx/Dl7JpG72g/X7YF8hnQD3IFhkky5i2bPonwrTVPg==",
|
1496 |
-
"license": "MIT",
|
1497 |
-
"peer": true,
|
1498 |
-
"dependencies": {
|
1499 |
-
"@vue/compiler-ssr": "3.5.12",
|
1500 |
-
"@vue/shared": "3.5.12"
|
1501 |
-
},
|
1502 |
-
"peerDependencies": {
|
1503 |
-
"vue": "3.5.12"
|
1504 |
-
}
|
1505 |
-
},
|
1506 |
-
"node_modules/@vue/shared": {
|
1507 |
-
"version": "3.5.12",
|
1508 |
-
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.12.tgz",
|
1509 |
-
"integrity": "sha512-L2RPSAwUFbgZH20etwrXyVyCBu9OxRSi8T/38QsvnkJyvq2LufW2lDCOzm7t/U9C1mkhJGWYfCuFBCmIuNivrg==",
|
1510 |
-
"license": "MIT",
|
1511 |
-
"peer": true
|
1512 |
-
},
|
1513 |
"node_modules/acorn": {
|
1514 |
"version": "8.14.0",
|
1515 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
|
1516 |
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
|
|
|
1517 |
"license": "MIT",
|
1518 |
"bin": {
|
1519 |
"acorn": "bin/acorn"
|
@@ -1532,16 +1369,6 @@
|
|
1532 |
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
1533 |
}
|
1534 |
},
|
1535 |
-
"node_modules/acorn-typescript": {
|
1536 |
-
"version": "1.4.13",
|
1537 |
-
"resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz",
|
1538 |
-
"integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==",
|
1539 |
-
"license": "MIT",
|
1540 |
-
"peer": true,
|
1541 |
-
"peerDependencies": {
|
1542 |
-
"acorn": ">=8.9.0"
|
1543 |
-
}
|
1544 |
-
},
|
1545 |
"node_modules/ai": {
|
1546 |
"version": "3.4.31",
|
1547 |
"resolved": "https://registry.npmjs.org/ai/-/ai-3.4.31.tgz",
|
@@ -1672,6 +1499,7 @@
|
|
1672 |
"version": "5.3.2",
|
1673 |
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
|
1674 |
"integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
|
|
|
1675 |
"license": "Apache-2.0",
|
1676 |
"engines": {
|
1677 |
"node": ">= 0.4"
|
@@ -1872,6 +1700,7 @@
|
|
1872 |
"version": "4.1.0",
|
1873 |
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
|
1874 |
"integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
|
|
|
1875 |
"license": "Apache-2.0",
|
1876 |
"engines": {
|
1877 |
"node": ">= 0.4"
|
@@ -2147,6 +1976,7 @@
|
|
2147 |
"version": "3.1.3",
|
2148 |
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
2149 |
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
|
|
2150 |
"license": "MIT"
|
2151 |
},
|
2152 |
"node_modules/damerau-levenshtein": {
|
@@ -2342,19 +2172,6 @@
|
|
2342 |
"node": ">=10.13.0"
|
2343 |
}
|
2344 |
},
|
2345 |
-
"node_modules/entities": {
|
2346 |
-
"version": "4.5.0",
|
2347 |
-
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
|
2348 |
-
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
|
2349 |
-
"license": "BSD-2-Clause",
|
2350 |
-
"peer": true,
|
2351 |
-
"engines": {
|
2352 |
-
"node": ">=0.12"
|
2353 |
-
},
|
2354 |
-
"funding": {
|
2355 |
-
"url": "https://github.com/fb55/entities?sponsor=1"
|
2356 |
-
}
|
2357 |
-
},
|
2358 |
"node_modules/es-abstract": {
|
2359 |
"version": "1.23.3",
|
2360 |
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
|
@@ -2949,13 +2766,6 @@
|
|
2949 |
"url": "https://opencollective.com/eslint"
|
2950 |
}
|
2951 |
},
|
2952 |
-
"node_modules/esm-env": {
|
2953 |
-
"version": "1.1.4",
|
2954 |
-
"resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.1.4.tgz",
|
2955 |
-
"integrity": "sha512-oO82nKPHKkzIj/hbtuDYy/JHqBHFlMIW36SDiPCVsj87ntDLcWN+sJ1erdVryd4NxODacFTsdrIE3b7IamqbOg==",
|
2956 |
-
"license": "MIT",
|
2957 |
-
"peer": true
|
2958 |
-
},
|
2959 |
"node_modules/espree": {
|
2960 |
"version": "9.6.1",
|
2961 |
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
|
@@ -2987,17 +2797,6 @@
|
|
2987 |
"node": ">=0.10"
|
2988 |
}
|
2989 |
},
|
2990 |
-
"node_modules/esrap": {
|
2991 |
-
"version": "1.2.2",
|
2992 |
-
"resolved": "https://registry.npmjs.org/esrap/-/esrap-1.2.2.tgz",
|
2993 |
-
"integrity": "sha512-F2pSJklxx1BlQIQgooczXCPHmcWpn6EsP5oo73LQfonG9fIlIENQ8vMmfGXeojP9MrkzUNAfyU5vdFlR9shHAw==",
|
2994 |
-
"license": "MIT",
|
2995 |
-
"peer": true,
|
2996 |
-
"dependencies": {
|
2997 |
-
"@jridgewell/sourcemap-codec": "^1.4.15",
|
2998 |
-
"@types/estree": "^1.0.1"
|
2999 |
-
}
|
3000 |
-
},
|
3001 |
"node_modules/esrecurse": {
|
3002 |
"version": "4.3.0",
|
3003 |
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
|
@@ -3021,13 +2820,6 @@
|
|
3021 |
"node": ">=4.0"
|
3022 |
}
|
3023 |
},
|
3024 |
-
"node_modules/estree-walker": {
|
3025 |
-
"version": "2.0.2",
|
3026 |
-
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
|
3027 |
-
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
3028 |
-
"license": "MIT",
|
3029 |
-
"peer": true
|
3030 |
-
},
|
3031 |
"node_modules/esutils": {
|
3032 |
"version": "2.0.3",
|
3033 |
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
@@ -3844,16 +3636,6 @@
|
|
3844 |
"node": ">=8"
|
3845 |
}
|
3846 |
},
|
3847 |
-
"node_modules/is-reference": {
|
3848 |
-
"version": "3.0.2",
|
3849 |
-
"resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.2.tgz",
|
3850 |
-
"integrity": "sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==",
|
3851 |
-
"license": "MIT",
|
3852 |
-
"peer": true,
|
3853 |
-
"dependencies": {
|
3854 |
-
"@types/estree": "*"
|
3855 |
-
}
|
3856 |
-
},
|
3857 |
"node_modules/is-regex": {
|
3858 |
"version": "1.1.4",
|
3859 |
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
|
@@ -4214,13 +3996,6 @@
|
|
4214 |
"dev": true,
|
4215 |
"license": "MIT"
|
4216 |
},
|
4217 |
-
"node_modules/locate-character": {
|
4218 |
-
"version": "3.0.0",
|
4219 |
-
"resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz",
|
4220 |
-
"integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==",
|
4221 |
-
"license": "MIT",
|
4222 |
-
"peer": true
|
4223 |
-
},
|
4224 |
"node_modules/locate-path": {
|
4225 |
"version": "6.0.0",
|
4226 |
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
@@ -4264,16 +4039,6 @@
|
|
4264 |
"dev": true,
|
4265 |
"license": "ISC"
|
4266 |
},
|
4267 |
-
"node_modules/magic-string": {
|
4268 |
-
"version": "0.30.12",
|
4269 |
-
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz",
|
4270 |
-
"integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==",
|
4271 |
-
"license": "MIT",
|
4272 |
-
"peer": true,
|
4273 |
-
"dependencies": {
|
4274 |
-
"@jridgewell/sourcemap-codec": "^1.5.0"
|
4275 |
-
}
|
4276 |
-
},
|
4277 |
"node_modules/merge2": {
|
4278 |
"version": "1.4.1",
|
4279 |
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
@@ -4783,6 +4548,7 @@
|
|
4783 |
"version": "8.4.47",
|
4784 |
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
|
4785 |
"integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
|
|
|
4786 |
"funding": [
|
4787 |
{
|
4788 |
"type": "opencollective",
|
@@ -5750,31 +5516,6 @@
|
|
5750 |
"url": "https://github.com/sponsors/ljharb"
|
5751 |
}
|
5752 |
},
|
5753 |
-
"node_modules/svelte": {
|
5754 |
-
"version": "5.1.9",
|
5755 |
-
"resolved": "https://registry.npmjs.org/svelte/-/svelte-5.1.9.tgz",
|
5756 |
-
"integrity": "sha512-nzq+PPKGS2PoEWDjAcXSrKSbXmmmOAxd6dAz1IhRusUpVkFS6DMELWPyBPGwu6TpO/gsgtFXwX0M4+pAR5gzKw==",
|
5757 |
-
"license": "MIT",
|
5758 |
-
"peer": true,
|
5759 |
-
"dependencies": {
|
5760 |
-
"@ampproject/remapping": "^2.3.0",
|
5761 |
-
"@jridgewell/sourcemap-codec": "^1.5.0",
|
5762 |
-
"@types/estree": "^1.0.5",
|
5763 |
-
"acorn": "^8.12.1",
|
5764 |
-
"acorn-typescript": "^1.4.13",
|
5765 |
-
"aria-query": "^5.3.1",
|
5766 |
-
"axobject-query": "^4.1.0",
|
5767 |
-
"esm-env": "^1.0.0",
|
5768 |
-
"esrap": "^1.2.2",
|
5769 |
-
"is-reference": "^3.0.2",
|
5770 |
-
"locate-character": "^3.0.0",
|
5771 |
-
"magic-string": "^0.30.11",
|
5772 |
-
"zimmerframe": "^1.1.2"
|
5773 |
-
},
|
5774 |
-
"engines": {
|
5775 |
-
"node": ">=18"
|
5776 |
-
}
|
5777 |
-
},
|
5778 |
"node_modules/swrev": {
|
5779 |
"version": "4.0.0",
|
5780 |
"resolved": "https://registry.npmjs.org/swrev/-/swrev-4.0.0.tgz",
|
@@ -6039,7 +5780,7 @@
|
|
6039 |
"version": "5.6.3",
|
6040 |
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
|
6041 |
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
|
6042 |
-
"
|
6043 |
"license": "Apache-2.0",
|
6044 |
"bin": {
|
6045 |
"tsc": "bin/tsc",
|
@@ -6089,28 +5830,6 @@
|
|
6089 |
"dev": true,
|
6090 |
"license": "MIT"
|
6091 |
},
|
6092 |
-
"node_modules/vue": {
|
6093 |
-
"version": "3.5.12",
|
6094 |
-
"resolved": "https://registry.npmjs.org/vue/-/vue-3.5.12.tgz",
|
6095 |
-
"integrity": "sha512-CLVZtXtn2ItBIi/zHZ0Sg1Xkb7+PU32bJJ8Bmy7ts3jxXTcbfsEfBivFYYWz1Hur+lalqGAh65Coin0r+HRUfg==",
|
6096 |
-
"license": "MIT",
|
6097 |
-
"peer": true,
|
6098 |
-
"dependencies": {
|
6099 |
-
"@vue/compiler-dom": "3.5.12",
|
6100 |
-
"@vue/compiler-sfc": "3.5.12",
|
6101 |
-
"@vue/runtime-dom": "3.5.12",
|
6102 |
-
"@vue/server-renderer": "3.5.12",
|
6103 |
-
"@vue/shared": "3.5.12"
|
6104 |
-
},
|
6105 |
-
"peerDependencies": {
|
6106 |
-
"typescript": "*"
|
6107 |
-
},
|
6108 |
-
"peerDependenciesMeta": {
|
6109 |
-
"typescript": {
|
6110 |
-
"optional": true
|
6111 |
-
}
|
6112 |
-
}
|
6113 |
-
},
|
6114 |
"node_modules/which": {
|
6115 |
"version": "2.0.2",
|
6116 |
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
@@ -6354,19 +6073,11 @@
|
|
6354 |
"url": "https://github.com/sponsors/sindresorhus"
|
6355 |
}
|
6356 |
},
|
6357 |
-
"node_modules/zimmerframe": {
|
6358 |
-
"version": "1.1.2",
|
6359 |
-
"resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.2.tgz",
|
6360 |
-
"integrity": "sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==",
|
6361 |
-
"license": "MIT",
|
6362 |
-
"peer": true
|
6363 |
-
},
|
6364 |
"node_modules/zod": {
|
6365 |
"version": "3.23.8",
|
6366 |
"resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
|
6367 |
"integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
|
6368 |
"license": "MIT",
|
6369 |
-
"peer": true,
|
6370 |
"funding": {
|
6371 |
"url": "https://github.com/sponsors/colinhacks"
|
6372 |
}
|
|
|
8 |
"name": "playgo_next",
|
9 |
"version": "0.1.0",
|
10 |
"dependencies": {
|
11 |
+
"@heroicons/react": "^2.1.5",
|
12 |
"ai": "^3.4.31",
|
13 |
"next": "15.0.2",
|
14 |
"react": "19.0.0-rc-02c0e824-20241028",
|
15 |
+
"react-dom": "19.0.0-rc-02c0e824-20241028",
|
16 |
+
"zod": "^3.23.8"
|
17 |
},
|
18 |
"devDependencies": {
|
19 |
"@types/node": "^20",
|
|
|
213 |
"url": "https://github.com/sponsors/sindresorhus"
|
214 |
}
|
215 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
216 |
"node_modules/@emnapi/runtime": {
|
217 |
"version": "1.3.1",
|
218 |
"resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
|
|
|
286 |
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
|
287 |
}
|
288 |
},
|
289 |
+
"node_modules/@heroicons/react": {
|
290 |
+
"version": "2.1.5",
|
291 |
+
"resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.1.5.tgz",
|
292 |
+
"integrity": "sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==",
|
293 |
+
"license": "MIT",
|
294 |
+
"peerDependencies": {
|
295 |
+
"react": ">= 16"
|
296 |
+
}
|
297 |
+
},
|
298 |
"node_modules/@humanwhocodes/config-array": {
|
299 |
"version": "0.13.0",
|
300 |
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz",
|
|
|
745 |
"version": "0.3.5",
|
746 |
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
|
747 |
"integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
|
748 |
+
"dev": true,
|
749 |
"license": "MIT",
|
750 |
"dependencies": {
|
751 |
"@jridgewell/set-array": "^1.2.1",
|
|
|
760 |
"version": "3.1.2",
|
761 |
"resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
|
762 |
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
|
763 |
+
"dev": true,
|
764 |
"license": "MIT",
|
765 |
"engines": {
|
766 |
"node": ">=6.0.0"
|
|
|
770 |
"version": "1.2.1",
|
771 |
"resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz",
|
772 |
"integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==",
|
773 |
+
"dev": true,
|
774 |
"license": "MIT",
|
775 |
"engines": {
|
776 |
"node": ">=6.0.0"
|
|
|
780 |
"version": "1.5.0",
|
781 |
"resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
|
782 |
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
|
783 |
+
"dev": true,
|
784 |
"license": "MIT"
|
785 |
},
|
786 |
"node_modules/@jridgewell/trace-mapping": {
|
787 |
"version": "0.3.25",
|
788 |
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz",
|
789 |
"integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==",
|
790 |
+
"dev": true,
|
791 |
"license": "MIT",
|
792 |
"dependencies": {
|
793 |
"@jridgewell/resolve-uri": "^3.1.0",
|
|
|
1041 |
"integrity": "sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==",
|
1042 |
"license": "MIT"
|
1043 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1044 |
"node_modules/@types/json5": {
|
1045 |
"version": "0.0.29",
|
1046 |
"resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz",
|
|
|
1346 |
"dev": true,
|
1347 |
"license": "ISC"
|
1348 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1349 |
"node_modules/acorn": {
|
1350 |
"version": "8.14.0",
|
1351 |
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
|
1352 |
"integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
|
1353 |
+
"dev": true,
|
1354 |
"license": "MIT",
|
1355 |
"bin": {
|
1356 |
"acorn": "bin/acorn"
|
|
|
1369 |
"acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
|
1370 |
}
|
1371 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1372 |
"node_modules/ai": {
|
1373 |
"version": "3.4.31",
|
1374 |
"resolved": "https://registry.npmjs.org/ai/-/ai-3.4.31.tgz",
|
|
|
1499 |
"version": "5.3.2",
|
1500 |
"resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz",
|
1501 |
"integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==",
|
1502 |
+
"dev": true,
|
1503 |
"license": "Apache-2.0",
|
1504 |
"engines": {
|
1505 |
"node": ">= 0.4"
|
|
|
1700 |
"version": "4.1.0",
|
1701 |
"resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz",
|
1702 |
"integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==",
|
1703 |
+
"dev": true,
|
1704 |
"license": "Apache-2.0",
|
1705 |
"engines": {
|
1706 |
"node": ">= 0.4"
|
|
|
1976 |
"version": "3.1.3",
|
1977 |
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
1978 |
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
1979 |
+
"dev": true,
|
1980 |
"license": "MIT"
|
1981 |
},
|
1982 |
"node_modules/damerau-levenshtein": {
|
|
|
2172 |
"node": ">=10.13.0"
|
2173 |
}
|
2174 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2175 |
"node_modules/es-abstract": {
|
2176 |
"version": "1.23.3",
|
2177 |
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz",
|
|
|
2766 |
"url": "https://opencollective.com/eslint"
|
2767 |
}
|
2768 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2769 |
"node_modules/espree": {
|
2770 |
"version": "9.6.1",
|
2771 |
"resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
|
|
|
2797 |
"node": ">=0.10"
|
2798 |
}
|
2799 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2800 |
"node_modules/esrecurse": {
|
2801 |
"version": "4.3.0",
|
2802 |
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
|
|
|
2820 |
"node": ">=4.0"
|
2821 |
}
|
2822 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2823 |
"node_modules/esutils": {
|
2824 |
"version": "2.0.3",
|
2825 |
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
|
|
|
3636 |
"node": ">=8"
|
3637 |
}
|
3638 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3639 |
"node_modules/is-regex": {
|
3640 |
"version": "1.1.4",
|
3641 |
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
|
|
|
3996 |
"dev": true,
|
3997 |
"license": "MIT"
|
3998 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3999 |
"node_modules/locate-path": {
|
4000 |
"version": "6.0.0",
|
4001 |
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
|
|
|
4039 |
"dev": true,
|
4040 |
"license": "ISC"
|
4041 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4042 |
"node_modules/merge2": {
|
4043 |
"version": "1.4.1",
|
4044 |
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
|
|
|
4548 |
"version": "8.4.47",
|
4549 |
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
|
4550 |
"integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
|
4551 |
+
"dev": true,
|
4552 |
"funding": [
|
4553 |
{
|
4554 |
"type": "opencollective",
|
|
|
5516 |
"url": "https://github.com/sponsors/ljharb"
|
5517 |
}
|
5518 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5519 |
"node_modules/swrev": {
|
5520 |
"version": "4.0.0",
|
5521 |
"resolved": "https://registry.npmjs.org/swrev/-/swrev-4.0.0.tgz",
|
|
|
5780 |
"version": "5.6.3",
|
5781 |
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
|
5782 |
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
|
5783 |
+
"dev": true,
|
5784 |
"license": "Apache-2.0",
|
5785 |
"bin": {
|
5786 |
"tsc": "bin/tsc",
|
|
|
5830 |
"dev": true,
|
5831 |
"license": "MIT"
|
5832 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5833 |
"node_modules/which": {
|
5834 |
"version": "2.0.2",
|
5835 |
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
|
|
|
6073 |
"url": "https://github.com/sponsors/sindresorhus"
|
6074 |
}
|
6075 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6076 |
"node_modules/zod": {
|
6077 |
"version": "3.23.8",
|
6078 |
"resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz",
|
6079 |
"integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==",
|
6080 |
"license": "MIT",
|
|
|
6081 |
"funding": {
|
6082 |
"url": "https://github.com/sponsors/colinhacks"
|
6083 |
}
|
package.json
CHANGED
@@ -9,10 +9,12 @@
|
|
9 |
"lint": "next lint"
|
10 |
},
|
11 |
"dependencies": {
|
|
|
12 |
"ai": "^3.4.31",
|
13 |
"next": "15.0.2",
|
14 |
"react": "19.0.0-rc-02c0e824-20241028",
|
15 |
-
"react-dom": "19.0.0-rc-02c0e824-20241028"
|
|
|
16 |
},
|
17 |
"devDependencies": {
|
18 |
"@types/node": "^20",
|
|
|
9 |
"lint": "next lint"
|
10 |
},
|
11 |
"dependencies": {
|
12 |
+
"@heroicons/react": "^2.1.5",
|
13 |
"ai": "^3.4.31",
|
14 |
"next": "15.0.2",
|
15 |
"react": "19.0.0-rc-02c0e824-20241028",
|
16 |
+
"react-dom": "19.0.0-rc-02c0e824-20241028",
|
17 |
+
"zod": "^3.23.8"
|
18 |
},
|
19 |
"devDependencies": {
|
20 |
"@types/node": "^20",
|