Spaces:
Running
Running
Commit
·
1c04688
1
Parent(s):
4a656fb
scaffolding
Browse files- package.json +2 -0
- src/App.css +0 -42
- src/App.tsx +23 -8
- src/components/force-directed-graph.tsx +143 -0
- src/components/play-tab.tsx +7 -0
- src/components/reasoning-trace.tsx +68 -0
- src/components/runs-list.tsx +77 -0
- src/components/ui/card.tsx +92 -0
- src/components/ui/input.tsx +21 -0
- src/components/ui/select.tsx +183 -0
- src/components/ui/tabs.tsx +64 -0
- src/components/viewer-tab.tsx +86 -0
- yarn.lock +315 -2
package.json
CHANGED
@@ -11,7 +11,9 @@
|
|
11 |
"preview": "vite preview"
|
12 |
},
|
13 |
"dependencies": {
|
|
|
14 |
"@radix-ui/react-slot": "^1.2.0",
|
|
|
15 |
"@tailwindcss/vite": "^4.1.5",
|
16 |
"class-variance-authority": "^0.7.1",
|
17 |
"clsx": "^2.1.1",
|
|
|
11 |
"preview": "vite preview"
|
12 |
},
|
13 |
"dependencies": {
|
14 |
+
"@radix-ui/react-select": "^2.2.2",
|
15 |
"@radix-ui/react-slot": "^1.2.0",
|
16 |
+
"@radix-ui/react-tabs": "^1.1.9",
|
17 |
"@tailwindcss/vite": "^4.1.5",
|
18 |
"class-variance-authority": "^0.7.1",
|
19 |
"clsx": "^2.1.1",
|
src/App.css
DELETED
@@ -1,42 +0,0 @@
|
|
1 |
-
#root {
|
2 |
-
max-width: 1280px;
|
3 |
-
margin: 0 auto;
|
4 |
-
padding: 2rem;
|
5 |
-
text-align: center;
|
6 |
-
}
|
7 |
-
|
8 |
-
.logo {
|
9 |
-
height: 6em;
|
10 |
-
padding: 1.5em;
|
11 |
-
will-change: filter;
|
12 |
-
transition: filter 300ms;
|
13 |
-
}
|
14 |
-
.logo:hover {
|
15 |
-
filter: drop-shadow(0 0 2em #646cffaa);
|
16 |
-
}
|
17 |
-
.logo.react:hover {
|
18 |
-
filter: drop-shadow(0 0 2em #61dafbaa);
|
19 |
-
}
|
20 |
-
|
21 |
-
@keyframes logo-spin {
|
22 |
-
from {
|
23 |
-
transform: rotate(0deg);
|
24 |
-
}
|
25 |
-
to {
|
26 |
-
transform: rotate(360deg);
|
27 |
-
}
|
28 |
-
}
|
29 |
-
|
30 |
-
@media (prefers-reduced-motion: no-preference) {
|
31 |
-
a:nth-of-type(2) .logo {
|
32 |
-
animation: logo-spin infinite 20s linear;
|
33 |
-
}
|
34 |
-
}
|
35 |
-
|
36 |
-
.card {
|
37 |
-
padding: 2em;
|
38 |
-
}
|
39 |
-
|
40 |
-
.read-the-docs {
|
41 |
-
color: #888;
|
42 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
src/App.tsx
CHANGED
@@ -1,11 +1,26 @@
|
|
1 |
-
import {
|
2 |
-
|
3 |
-
|
|
|
|
|
4 |
return (
|
5 |
-
<div className="
|
6 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
</div>
|
8 |
-
)
|
9 |
}
|
10 |
-
|
11 |
-
export default App
|
|
|
1 |
+
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
2 |
+
import ViewerTab from "@/components/viewer-tab";
|
3 |
+
import PlayTab from "@/components/play-tab";
|
4 |
+
|
5 |
+
export default function Home() {
|
6 |
return (
|
7 |
+
<div className="container mx-auto p-4">
|
8 |
+
<h1 className="text-3xl font-bold mb-6">Wikispeedia</h1>
|
9 |
+
|
10 |
+
<Tabs defaultValue="view" className="w-full">
|
11 |
+
<TabsList className="mb-4">
|
12 |
+
<TabsTrigger value="view">View Runs</TabsTrigger>
|
13 |
+
<TabsTrigger value="play">Play Game</TabsTrigger>
|
14 |
+
</TabsList>
|
15 |
+
|
16 |
+
<TabsContent value="view">
|
17 |
+
<ViewerTab />
|
18 |
+
</TabsContent>
|
19 |
+
|
20 |
+
<TabsContent value="play">
|
21 |
+
<PlayTab />
|
22 |
+
</TabsContent>
|
23 |
+
</Tabs>
|
24 |
</div>
|
25 |
+
);
|
26 |
}
|
|
|
|
src/components/force-directed-graph.tsx
ADDED
@@ -0,0 +1,143 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use client";
|
2 |
+
|
3 |
+
// This is a placeholder component for the force-directed graph
|
4 |
+
// In a real implementation, you would use a library like D3.js or react-force-graph
|
5 |
+
|
6 |
+
interface ForceDirectedGraphProps {
|
7 |
+
runId: number | null;
|
8 |
+
}
|
9 |
+
|
10 |
+
export default function ForceDirectedGraph({ runId }: ForceDirectedGraphProps) {
|
11 |
+
if (!runId) {
|
12 |
+
return (
|
13 |
+
<div className="w-full h-full flex items-center justify-center text-muted-foreground">
|
14 |
+
Select a run to view the path graph
|
15 |
+
</div>
|
16 |
+
);
|
17 |
+
}
|
18 |
+
|
19 |
+
// This is just a placeholder SVG - in a real implementation,
|
20 |
+
// you would render an actual force-directed graph
|
21 |
+
return (
|
22 |
+
<div className="w-full h-full flex items-center justify-center">
|
23 |
+
<svg width="100%" height="100%" viewBox="0 0 800 600">
|
24 |
+
{/* Center node */}
|
25 |
+
<circle cx="400" cy="300" r="20" fill="#ff4d4f" />
|
26 |
+
|
27 |
+
{/* Surrounding nodes */}
|
28 |
+
<circle cx="200" cy="150" r="15" fill="#ff9c6e" />
|
29 |
+
<circle cx="600" cy="150" r="15" fill="#ff9c6e" />
|
30 |
+
<circle cx="200" cy="450" r="15" fill="#ff9c6e" />
|
31 |
+
<circle cx="600" cy="450" r="15" fill="#ff9c6e" />
|
32 |
+
<circle cx="300" cy="100" r="15" fill="#ff9c6e" />
|
33 |
+
<circle cx="500" cy="100" r="15" fill="#ff9c6e" />
|
34 |
+
<circle cx="300" cy="500" r="15" fill="#ff9c6e" />
|
35 |
+
<circle cx="500" cy="500" r="15" fill="#ff9c6e" />
|
36 |
+
|
37 |
+
{/* Lines connecting nodes */}
|
38 |
+
<line
|
39 |
+
x1="400"
|
40 |
+
y1="300"
|
41 |
+
x2="200"
|
42 |
+
y2="150"
|
43 |
+
stroke="#ffa39e"
|
44 |
+
strokeWidth="2"
|
45 |
+
/>
|
46 |
+
<line
|
47 |
+
x1="400"
|
48 |
+
y1="300"
|
49 |
+
x2="600"
|
50 |
+
y2="150"
|
51 |
+
stroke="#ffa39e"
|
52 |
+
strokeWidth="2"
|
53 |
+
/>
|
54 |
+
<line
|
55 |
+
x1="400"
|
56 |
+
y1="300"
|
57 |
+
x2="200"
|
58 |
+
y2="450"
|
59 |
+
stroke="#ffa39e"
|
60 |
+
strokeWidth="2"
|
61 |
+
/>
|
62 |
+
<line
|
63 |
+
x1="400"
|
64 |
+
y1="300"
|
65 |
+
x2="600"
|
66 |
+
y2="450"
|
67 |
+
stroke="#ffa39e"
|
68 |
+
strokeWidth="2"
|
69 |
+
/>
|
70 |
+
<line
|
71 |
+
x1="400"
|
72 |
+
y1="300"
|
73 |
+
x2="300"
|
74 |
+
y2="100"
|
75 |
+
stroke="#ffa39e"
|
76 |
+
strokeWidth="2"
|
77 |
+
/>
|
78 |
+
<line
|
79 |
+
x1="400"
|
80 |
+
y1="300"
|
81 |
+
x2="500"
|
82 |
+
y2="100"
|
83 |
+
stroke="#ffa39e"
|
84 |
+
strokeWidth="2"
|
85 |
+
/>
|
86 |
+
<line
|
87 |
+
x1="400"
|
88 |
+
y1="300"
|
89 |
+
x2="300"
|
90 |
+
y2="500"
|
91 |
+
stroke="#ffa39e"
|
92 |
+
strokeWidth="2"
|
93 |
+
/>
|
94 |
+
<line
|
95 |
+
x1="400"
|
96 |
+
y1="300"
|
97 |
+
x2="500"
|
98 |
+
y2="500"
|
99 |
+
stroke="#ffa39e"
|
100 |
+
strokeWidth="2"
|
101 |
+
/>
|
102 |
+
|
103 |
+
{/* Secondary connections */}
|
104 |
+
<line
|
105 |
+
x1="200"
|
106 |
+
y1="150"
|
107 |
+
x2="300"
|
108 |
+
y2="100"
|
109 |
+
stroke="#ffa39e"
|
110 |
+
strokeWidth="1"
|
111 |
+
opacity="0.5"
|
112 |
+
/>
|
113 |
+
<line
|
114 |
+
x1="600"
|
115 |
+
y1="150"
|
116 |
+
x2="500"
|
117 |
+
y2="100"
|
118 |
+
stroke="#ffa39e"
|
119 |
+
strokeWidth="1"
|
120 |
+
opacity="0.5"
|
121 |
+
/>
|
122 |
+
<line
|
123 |
+
x1="200"
|
124 |
+
y1="450"
|
125 |
+
x2="300"
|
126 |
+
y2="500"
|
127 |
+
stroke="#ffa39e"
|
128 |
+
strokeWidth="1"
|
129 |
+
opacity="0.5"
|
130 |
+
/>
|
131 |
+
<line
|
132 |
+
x1="600"
|
133 |
+
y1="450"
|
134 |
+
x2="500"
|
135 |
+
y2="500"
|
136 |
+
stroke="#ffa39e"
|
137 |
+
strokeWidth="1"
|
138 |
+
opacity="0.5"
|
139 |
+
/>
|
140 |
+
</svg>
|
141 |
+
</div>
|
142 |
+
);
|
143 |
+
}
|
src/components/play-tab.tsx
ADDED
@@ -0,0 +1,7 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
export default function PlayTab() {
|
2 |
+
return (
|
3 |
+
<div className="flex items-center justify-center h-[600px] bg-muted/30 rounded-md">
|
4 |
+
<p className="text-muted-foreground">Play tab coming soon...</p>
|
5 |
+
</div>
|
6 |
+
);
|
7 |
+
}
|
src/components/reasoning-trace.tsx
ADDED
@@ -0,0 +1,68 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use client";
|
2 |
+
|
3 |
+
import { useState } from "react";
|
4 |
+
import { Input } from "@/components/ui/input";
|
5 |
+
import { Button } from "@/components/ui/button";
|
6 |
+
import { Send } from "lucide-react";
|
7 |
+
|
8 |
+
interface ReasoningTraceProps {
|
9 |
+
runId: number | null;
|
10 |
+
}
|
11 |
+
|
12 |
+
export default function ReasoningTrace({ runId }: ReasoningTraceProps) {
|
13 |
+
const [userInput, setUserInput] = useState("");
|
14 |
+
|
15 |
+
if (!runId) {
|
16 |
+
return (
|
17 |
+
<div className="w-full h-full flex items-center justify-center text-muted-foreground">
|
18 |
+
Select a run to view the reasoning trace
|
19 |
+
</div>
|
20 |
+
);
|
21 |
+
}
|
22 |
+
|
23 |
+
return (
|
24 |
+
<div className="flex flex-col h-full">
|
25 |
+
<h3 className="text-lg font-medium mb-4">LLM Reasoning Trace</h3>
|
26 |
+
|
27 |
+
<div className="flex-1 overflow-y-auto mb-4 bg-muted/30 rounded-md p-4">
|
28 |
+
<div className="space-y-4">
|
29 |
+
<div className="bg-primary/10 p-3 rounded-lg max-w-[80%]">
|
30 |
+
<p className="text-sm">Hello! How can I help you today?</p>
|
31 |
+
</div>
|
32 |
+
|
33 |
+
<div className="bg-primary/10 p-3 rounded-lg max-w-[80%] ml-auto">
|
34 |
+
<p className="text-sm">How can I deploy a website to Vercel?</p>
|
35 |
+
</div>
|
36 |
+
|
37 |
+
<div className="bg-primary/10 p-3 rounded-lg max-w-[80%]">
|
38 |
+
<p className="text-sm">
|
39 |
+
To deploy a website to Vercel, follow these steps:
|
40 |
+
<br />
|
41 |
+
<br />
|
42 |
+
1. Sign up for a Vercel account: Go to https://vercel.com/signup
|
43 |
+
and sign up using your GitHub, GitLab, or Bitbucket account, or
|
44 |
+
with your email address.
|
45 |
+
<br />
|
46 |
+
<br />
|
47 |
+
2. Install the Vercel command-line interface (CLI) by running the
|
48 |
+
following command in your terminal or command prompt:
|
49 |
+
<br />
|
50 |
+
<code className="bg-muted p-1 rounded">
|
51 |
+
npm install -g vercel
|
52 |
+
</code>
|
53 |
+
<br />
|
54 |
+
<br />
|
55 |
+
Make sure you have Node.js and npm installed on your system before
|
56 |
+
running this command.
|
57 |
+
<br />
|
58 |
+
<br />
|
59 |
+
3. Authenticate with Vercel: Run the following command:
|
60 |
+
<br />
|
61 |
+
<code className="bg-muted p-1 rounded">vercel login</code>
|
62 |
+
</p>
|
63 |
+
</div>
|
64 |
+
</div>
|
65 |
+
</div>
|
66 |
+
</div>
|
67 |
+
);
|
68 |
+
}
|
src/components/runs-list.tsx
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use client";
|
2 |
+
|
3 |
+
import { Card } from "@/components/ui/card";
|
4 |
+
import { cn } from "@/lib/utils";
|
5 |
+
|
6 |
+
interface Run {
|
7 |
+
id: number;
|
8 |
+
start: string;
|
9 |
+
end: string;
|
10 |
+
hops: number;
|
11 |
+
}
|
12 |
+
|
13 |
+
interface RunsListProps {
|
14 |
+
runs: Run[];
|
15 |
+
onSelectRun: (runId: number) => void;
|
16 |
+
selectedRunId: number | null;
|
17 |
+
}
|
18 |
+
|
19 |
+
export default function RunsList({
|
20 |
+
runs,
|
21 |
+
onSelectRun,
|
22 |
+
selectedRunId,
|
23 |
+
}: RunsListProps) {
|
24 |
+
return (
|
25 |
+
<div className="h-[600px] overflow-y-auto space-y-2 pr-1">
|
26 |
+
{runs.map((run) => (
|
27 |
+
<Card
|
28 |
+
key={run.id}
|
29 |
+
className={cn(
|
30 |
+
"p-3 cursor-pointer transition-all border",
|
31 |
+
selectedRunId === run.id
|
32 |
+
? "bg-primary/10 border-primary/50 shadow-sm"
|
33 |
+
: "hover:bg-muted/80 border-transparent"
|
34 |
+
)}
|
35 |
+
onClick={() => onSelectRun(run.id)}
|
36 |
+
>
|
37 |
+
<div className="flex items-center justify-between">
|
38 |
+
<div>
|
39 |
+
<p className="font-medium flex items-center">
|
40 |
+
<span>{run.start}</span>
|
41 |
+
<svg
|
42 |
+
xmlns="http://www.w3.org/2000/svg"
|
43 |
+
width="16"
|
44 |
+
height="16"
|
45 |
+
viewBox="0 0 24 24"
|
46 |
+
fill="none"
|
47 |
+
stroke="currentColor"
|
48 |
+
strokeWidth="2"
|
49 |
+
strokeLinecap="round"
|
50 |
+
strokeLinejoin="round"
|
51 |
+
className="mx-1"
|
52 |
+
>
|
53 |
+
<path d="M5 12h14" />
|
54 |
+
<path d="m12 5 7 7-7 7" />
|
55 |
+
</svg>
|
56 |
+
<span>{run.end}</span>
|
57 |
+
</p>
|
58 |
+
<p className="text-sm text-muted-foreground">{run.hops} hops</p>
|
59 |
+
</div>
|
60 |
+
{selectedRunId === run.id && (
|
61 |
+
<div
|
62 |
+
className="h-2 w-2 rounded-full bg-primary"
|
63 |
+
aria-hidden="true"
|
64 |
+
/>
|
65 |
+
)}
|
66 |
+
</div>
|
67 |
+
</Card>
|
68 |
+
))}
|
69 |
+
|
70 |
+
{runs.length === 0 && (
|
71 |
+
<div className="flex items-center justify-center h-full text-muted-foreground">
|
72 |
+
No runs available
|
73 |
+
</div>
|
74 |
+
)}
|
75 |
+
</div>
|
76 |
+
);
|
77 |
+
}
|
src/components/ui/card.tsx
ADDED
@@ -0,0 +1,92 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import * as React from "react"
|
2 |
+
|
3 |
+
import { cn } from "@/lib/utils"
|
4 |
+
|
5 |
+
function Card({ className, ...props }: React.ComponentProps<"div">) {
|
6 |
+
return (
|
7 |
+
<div
|
8 |
+
data-slot="card"
|
9 |
+
className={cn(
|
10 |
+
"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
|
11 |
+
className
|
12 |
+
)}
|
13 |
+
{...props}
|
14 |
+
/>
|
15 |
+
)
|
16 |
+
}
|
17 |
+
|
18 |
+
function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
|
19 |
+
return (
|
20 |
+
<div
|
21 |
+
data-slot="card-header"
|
22 |
+
className={cn(
|
23 |
+
"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
|
24 |
+
className
|
25 |
+
)}
|
26 |
+
{...props}
|
27 |
+
/>
|
28 |
+
)
|
29 |
+
}
|
30 |
+
|
31 |
+
function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
|
32 |
+
return (
|
33 |
+
<div
|
34 |
+
data-slot="card-title"
|
35 |
+
className={cn("leading-none font-semibold", className)}
|
36 |
+
{...props}
|
37 |
+
/>
|
38 |
+
)
|
39 |
+
}
|
40 |
+
|
41 |
+
function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
|
42 |
+
return (
|
43 |
+
<div
|
44 |
+
data-slot="card-description"
|
45 |
+
className={cn("text-muted-foreground text-sm", className)}
|
46 |
+
{...props}
|
47 |
+
/>
|
48 |
+
)
|
49 |
+
}
|
50 |
+
|
51 |
+
function CardAction({ className, ...props }: React.ComponentProps<"div">) {
|
52 |
+
return (
|
53 |
+
<div
|
54 |
+
data-slot="card-action"
|
55 |
+
className={cn(
|
56 |
+
"col-start-2 row-span-2 row-start-1 self-start justify-self-end",
|
57 |
+
className
|
58 |
+
)}
|
59 |
+
{...props}
|
60 |
+
/>
|
61 |
+
)
|
62 |
+
}
|
63 |
+
|
64 |
+
function CardContent({ className, ...props }: React.ComponentProps<"div">) {
|
65 |
+
return (
|
66 |
+
<div
|
67 |
+
data-slot="card-content"
|
68 |
+
className={cn("px-6", className)}
|
69 |
+
{...props}
|
70 |
+
/>
|
71 |
+
)
|
72 |
+
}
|
73 |
+
|
74 |
+
function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
|
75 |
+
return (
|
76 |
+
<div
|
77 |
+
data-slot="card-footer"
|
78 |
+
className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
|
79 |
+
{...props}
|
80 |
+
/>
|
81 |
+
)
|
82 |
+
}
|
83 |
+
|
84 |
+
export {
|
85 |
+
Card,
|
86 |
+
CardHeader,
|
87 |
+
CardFooter,
|
88 |
+
CardTitle,
|
89 |
+
CardAction,
|
90 |
+
CardDescription,
|
91 |
+
CardContent,
|
92 |
+
}
|
src/components/ui/input.tsx
ADDED
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import * as React from "react"
|
2 |
+
|
3 |
+
import { cn } from "@/lib/utils"
|
4 |
+
|
5 |
+
function Input({ className, type, ...props }: React.ComponentProps<"input">) {
|
6 |
+
return (
|
7 |
+
<input
|
8 |
+
type={type}
|
9 |
+
data-slot="input"
|
10 |
+
className={cn(
|
11 |
+
"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
12 |
+
"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
|
13 |
+
"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
|
14 |
+
className
|
15 |
+
)}
|
16 |
+
{...props}
|
17 |
+
/>
|
18 |
+
)
|
19 |
+
}
|
20 |
+
|
21 |
+
export { Input }
|
src/components/ui/select.tsx
ADDED
@@ -0,0 +1,183 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import * as React from "react"
|
2 |
+
import * as SelectPrimitive from "@radix-ui/react-select"
|
3 |
+
import { CheckIcon, ChevronDownIcon, ChevronUpIcon } from "lucide-react"
|
4 |
+
|
5 |
+
import { cn } from "@/lib/utils"
|
6 |
+
|
7 |
+
function Select({
|
8 |
+
...props
|
9 |
+
}: React.ComponentProps<typeof SelectPrimitive.Root>) {
|
10 |
+
return <SelectPrimitive.Root data-slot="select" {...props} />
|
11 |
+
}
|
12 |
+
|
13 |
+
function SelectGroup({
|
14 |
+
...props
|
15 |
+
}: React.ComponentProps<typeof SelectPrimitive.Group>) {
|
16 |
+
return <SelectPrimitive.Group data-slot="select-group" {...props} />
|
17 |
+
}
|
18 |
+
|
19 |
+
function SelectValue({
|
20 |
+
...props
|
21 |
+
}: React.ComponentProps<typeof SelectPrimitive.Value>) {
|
22 |
+
return <SelectPrimitive.Value data-slot="select-value" {...props} />
|
23 |
+
}
|
24 |
+
|
25 |
+
function SelectTrigger({
|
26 |
+
className,
|
27 |
+
size = "default",
|
28 |
+
children,
|
29 |
+
...props
|
30 |
+
}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {
|
31 |
+
size?: "sm" | "default"
|
32 |
+
}) {
|
33 |
+
return (
|
34 |
+
<SelectPrimitive.Trigger
|
35 |
+
data-slot="select-trigger"
|
36 |
+
data-size={size}
|
37 |
+
className={cn(
|
38 |
+
"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
39 |
+
className
|
40 |
+
)}
|
41 |
+
{...props}
|
42 |
+
>
|
43 |
+
{children}
|
44 |
+
<SelectPrimitive.Icon asChild>
|
45 |
+
<ChevronDownIcon className="size-4 opacity-50" />
|
46 |
+
</SelectPrimitive.Icon>
|
47 |
+
</SelectPrimitive.Trigger>
|
48 |
+
)
|
49 |
+
}
|
50 |
+
|
51 |
+
function SelectContent({
|
52 |
+
className,
|
53 |
+
children,
|
54 |
+
position = "popper",
|
55 |
+
...props
|
56 |
+
}: React.ComponentProps<typeof SelectPrimitive.Content>) {
|
57 |
+
return (
|
58 |
+
<SelectPrimitive.Portal>
|
59 |
+
<SelectPrimitive.Content
|
60 |
+
data-slot="select-content"
|
61 |
+
className={cn(
|
62 |
+
"bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md",
|
63 |
+
position === "popper" &&
|
64 |
+
"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
65 |
+
className
|
66 |
+
)}
|
67 |
+
position={position}
|
68 |
+
{...props}
|
69 |
+
>
|
70 |
+
<SelectScrollUpButton />
|
71 |
+
<SelectPrimitive.Viewport
|
72 |
+
className={cn(
|
73 |
+
"p-1",
|
74 |
+
position === "popper" &&
|
75 |
+
"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"
|
76 |
+
)}
|
77 |
+
>
|
78 |
+
{children}
|
79 |
+
</SelectPrimitive.Viewport>
|
80 |
+
<SelectScrollDownButton />
|
81 |
+
</SelectPrimitive.Content>
|
82 |
+
</SelectPrimitive.Portal>
|
83 |
+
)
|
84 |
+
}
|
85 |
+
|
86 |
+
function SelectLabel({
|
87 |
+
className,
|
88 |
+
...props
|
89 |
+
}: React.ComponentProps<typeof SelectPrimitive.Label>) {
|
90 |
+
return (
|
91 |
+
<SelectPrimitive.Label
|
92 |
+
data-slot="select-label"
|
93 |
+
className={cn("text-muted-foreground px-2 py-1.5 text-xs", className)}
|
94 |
+
{...props}
|
95 |
+
/>
|
96 |
+
)
|
97 |
+
}
|
98 |
+
|
99 |
+
function SelectItem({
|
100 |
+
className,
|
101 |
+
children,
|
102 |
+
...props
|
103 |
+
}: React.ComponentProps<typeof SelectPrimitive.Item>) {
|
104 |
+
return (
|
105 |
+
<SelectPrimitive.Item
|
106 |
+
data-slot="select-item"
|
107 |
+
className={cn(
|
108 |
+
"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
109 |
+
className
|
110 |
+
)}
|
111 |
+
{...props}
|
112 |
+
>
|
113 |
+
<span className="absolute right-2 flex size-3.5 items-center justify-center">
|
114 |
+
<SelectPrimitive.ItemIndicator>
|
115 |
+
<CheckIcon className="size-4" />
|
116 |
+
</SelectPrimitive.ItemIndicator>
|
117 |
+
</span>
|
118 |
+
<SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>
|
119 |
+
</SelectPrimitive.Item>
|
120 |
+
)
|
121 |
+
}
|
122 |
+
|
123 |
+
function SelectSeparator({
|
124 |
+
className,
|
125 |
+
...props
|
126 |
+
}: React.ComponentProps<typeof SelectPrimitive.Separator>) {
|
127 |
+
return (
|
128 |
+
<SelectPrimitive.Separator
|
129 |
+
data-slot="select-separator"
|
130 |
+
className={cn("bg-border pointer-events-none -mx-1 my-1 h-px", className)}
|
131 |
+
{...props}
|
132 |
+
/>
|
133 |
+
)
|
134 |
+
}
|
135 |
+
|
136 |
+
function SelectScrollUpButton({
|
137 |
+
className,
|
138 |
+
...props
|
139 |
+
}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {
|
140 |
+
return (
|
141 |
+
<SelectPrimitive.ScrollUpButton
|
142 |
+
data-slot="select-scroll-up-button"
|
143 |
+
className={cn(
|
144 |
+
"flex cursor-default items-center justify-center py-1",
|
145 |
+
className
|
146 |
+
)}
|
147 |
+
{...props}
|
148 |
+
>
|
149 |
+
<ChevronUpIcon className="size-4" />
|
150 |
+
</SelectPrimitive.ScrollUpButton>
|
151 |
+
)
|
152 |
+
}
|
153 |
+
|
154 |
+
function SelectScrollDownButton({
|
155 |
+
className,
|
156 |
+
...props
|
157 |
+
}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {
|
158 |
+
return (
|
159 |
+
<SelectPrimitive.ScrollDownButton
|
160 |
+
data-slot="select-scroll-down-button"
|
161 |
+
className={cn(
|
162 |
+
"flex cursor-default items-center justify-center py-1",
|
163 |
+
className
|
164 |
+
)}
|
165 |
+
{...props}
|
166 |
+
>
|
167 |
+
<ChevronDownIcon className="size-4" />
|
168 |
+
</SelectPrimitive.ScrollDownButton>
|
169 |
+
)
|
170 |
+
}
|
171 |
+
|
172 |
+
export {
|
173 |
+
Select,
|
174 |
+
SelectContent,
|
175 |
+
SelectGroup,
|
176 |
+
SelectItem,
|
177 |
+
SelectLabel,
|
178 |
+
SelectScrollDownButton,
|
179 |
+
SelectScrollUpButton,
|
180 |
+
SelectSeparator,
|
181 |
+
SelectTrigger,
|
182 |
+
SelectValue,
|
183 |
+
}
|
src/components/ui/tabs.tsx
ADDED
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import * as React from "react"
|
2 |
+
import * as TabsPrimitive from "@radix-ui/react-tabs"
|
3 |
+
|
4 |
+
import { cn } from "@/lib/utils"
|
5 |
+
|
6 |
+
function Tabs({
|
7 |
+
className,
|
8 |
+
...props
|
9 |
+
}: React.ComponentProps<typeof TabsPrimitive.Root>) {
|
10 |
+
return (
|
11 |
+
<TabsPrimitive.Root
|
12 |
+
data-slot="tabs"
|
13 |
+
className={cn("flex flex-col gap-2", className)}
|
14 |
+
{...props}
|
15 |
+
/>
|
16 |
+
)
|
17 |
+
}
|
18 |
+
|
19 |
+
function TabsList({
|
20 |
+
className,
|
21 |
+
...props
|
22 |
+
}: React.ComponentProps<typeof TabsPrimitive.List>) {
|
23 |
+
return (
|
24 |
+
<TabsPrimitive.List
|
25 |
+
data-slot="tabs-list"
|
26 |
+
className={cn(
|
27 |
+
"bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
|
28 |
+
className
|
29 |
+
)}
|
30 |
+
{...props}
|
31 |
+
/>
|
32 |
+
)
|
33 |
+
}
|
34 |
+
|
35 |
+
function TabsTrigger({
|
36 |
+
className,
|
37 |
+
...props
|
38 |
+
}: React.ComponentProps<typeof TabsPrimitive.Trigger>) {
|
39 |
+
return (
|
40 |
+
<TabsPrimitive.Trigger
|
41 |
+
data-slot="tabs-trigger"
|
42 |
+
className={cn(
|
43 |
+
"data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
44 |
+
className
|
45 |
+
)}
|
46 |
+
{...props}
|
47 |
+
/>
|
48 |
+
)
|
49 |
+
}
|
50 |
+
|
51 |
+
function TabsContent({
|
52 |
+
className,
|
53 |
+
...props
|
54 |
+
}: React.ComponentProps<typeof TabsPrimitive.Content>) {
|
55 |
+
return (
|
56 |
+
<TabsPrimitive.Content
|
57 |
+
data-slot="tabs-content"
|
58 |
+
className={cn("flex-1 outline-none", className)}
|
59 |
+
{...props}
|
60 |
+
/>
|
61 |
+
)
|
62 |
+
}
|
63 |
+
|
64 |
+
export { Tabs, TabsList, TabsTrigger, TabsContent }
|
src/components/viewer-tab.tsx
ADDED
@@ -0,0 +1,86 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"use client";
|
2 |
+
|
3 |
+
import { useState } from "react";
|
4 |
+
import {
|
5 |
+
Select,
|
6 |
+
SelectContent,
|
7 |
+
SelectItem,
|
8 |
+
SelectTrigger,
|
9 |
+
SelectValue,
|
10 |
+
} from "@/components/ui/select";
|
11 |
+
import { Card } from "@/components/ui/card";
|
12 |
+
import ForceDirectedGraph from "@/components/force-directed-graph";
|
13 |
+
import ReasoningTrace from "@/components/reasoning-trace";
|
14 |
+
import RunsList from "@/components/runs-list";
|
15 |
+
|
16 |
+
// Sample data - would be fetched from HuggingFace dataset in a real implementation
|
17 |
+
const sampleRuns = [
|
18 |
+
{ id: 1, start: "Pokemon", end: "Canada", hops: 16 },
|
19 |
+
{ id: 2, start: "Pokemon", end: "Canada", hops: 16 },
|
20 |
+
{ id: 3, start: "Pokemon", end: "Canada", hops: 16 },
|
21 |
+
{ id: 4, start: "Pokemon", end: "Canada", hops: 16 },
|
22 |
+
// Add more sample runs as needed
|
23 |
+
];
|
24 |
+
|
25 |
+
const datasets = [
|
26 |
+
{ id: "dataset1", name: "Wikispeedia Paths" },
|
27 |
+
{ id: "dataset2", name: "LLM Generated Paths" },
|
28 |
+
];
|
29 |
+
|
30 |
+
export default function ViewerTab() {
|
31 |
+
const [selectedDataset, setSelectedDataset] = useState<string>("");
|
32 |
+
const [selectedRun, setSelectedRun] = useState<number | null>(null);
|
33 |
+
|
34 |
+
const handleDatasetChange = (value: string) => {
|
35 |
+
setSelectedDataset(value);
|
36 |
+
setSelectedRun(null);
|
37 |
+
};
|
38 |
+
|
39 |
+
const handleRunSelect = (runId: number) => {
|
40 |
+
setSelectedRun(runId);
|
41 |
+
};
|
42 |
+
|
43 |
+
return (
|
44 |
+
<div className="grid grid-cols-1 md:grid-cols-12 gap-4">
|
45 |
+
<div className="md:col-span-3">
|
46 |
+
<div className="mb-4">
|
47 |
+
<Select value={selectedDataset} onValueChange={handleDatasetChange}>
|
48 |
+
<SelectTrigger className="w-full">
|
49 |
+
<SelectValue placeholder="SELECT DATASET" />
|
50 |
+
</SelectTrigger>
|
51 |
+
<SelectContent>
|
52 |
+
{datasets.map((dataset) => (
|
53 |
+
<SelectItem key={dataset.id} value={dataset.id}>
|
54 |
+
{dataset.name}
|
55 |
+
</SelectItem>
|
56 |
+
))}
|
57 |
+
</SelectContent>
|
58 |
+
</Select>
|
59 |
+
</div>
|
60 |
+
|
61 |
+
<div className="bg-card rounded-lg p-3 border">
|
62 |
+
<h3 className="text-sm font-medium mb-2 text-muted-foreground">
|
63 |
+
Available Runs
|
64 |
+
</h3>
|
65 |
+
<RunsList
|
66 |
+
runs={sampleRuns}
|
67 |
+
onSelectRun={handleRunSelect}
|
68 |
+
selectedRunId={selectedRun}
|
69 |
+
/>
|
70 |
+
</div>
|
71 |
+
</div>
|
72 |
+
|
73 |
+
<div className="md:col-span-5">
|
74 |
+
<Card className="w-full h-[600px] flex items-center justify-center">
|
75 |
+
<ForceDirectedGraph runId={selectedRun} />
|
76 |
+
</Card>
|
77 |
+
</div>
|
78 |
+
|
79 |
+
<div className="md:col-span-4">
|
80 |
+
<Card className="w-full h-[600px] p-4">
|
81 |
+
<ReasoningTrace runId={selectedRun} />
|
82 |
+
</Card>
|
83 |
+
</div>
|
84 |
+
</div>
|
85 |
+
);
|
86 |
+
}
|
yarn.lock
CHANGED
@@ -376,6 +376,33 @@
|
|
376 |
"@eslint/core" "^0.13.0"
|
377 |
levn "^0.4.1"
|
378 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
379 |
"@humanfs/core@^0.19.1":
|
380 |
version "0.19.1"
|
381 |
resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
|
@@ -466,18 +493,245 @@
|
|
466 |
"@nodelib/fs.scandir" "2.1.5"
|
467 |
fastq "^1.6.0"
|
468 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
469 |
"@radix-ui/[email protected]":
|
470 |
version "1.1.2"
|
471 |
resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz#a2c4c47af6337048ee78ff6dc0d090b390d2bb30"
|
472 |
integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==
|
473 |
|
474 |
-
"@radix-ui/react-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
475 |
version "1.2.0"
|
476 |
resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.0.tgz#57727fc186ddb40724ccfbe294e1a351d92462ba"
|
477 |
integrity sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==
|
478 |
dependencies:
|
479 |
"@radix-ui/react-compose-refs" "1.1.2"
|
480 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
481 |
"@rollup/[email protected]":
|
482 |
version "4.40.1"
|
483 |
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz#e1562d360bca73c7bef6feef86098de3a2f1d442"
|
@@ -875,6 +1129,13 @@ argparse@^2.0.1:
|
|
875 |
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
|
876 |
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
|
877 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
878 |
balanced-match@^1.0.0:
|
879 |
version "1.0.2"
|
880 |
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
@@ -995,6 +1256,11 @@ detect-libc@^2.0.3:
|
|
995 |
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
|
996 |
integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
|
997 |
|
|
|
|
|
|
|
|
|
|
|
998 |
electron-to-chromium@^1.5.73:
|
999 |
version "1.5.145"
|
1000 |
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.145.tgz#abd50700ac2c809e40a4694584f66711ee937fb6"
|
@@ -1234,6 +1500,11 @@ gensync@^1.0.0-beta.2:
|
|
1234 |
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
1235 |
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
1236 |
|
|
|
|
|
|
|
|
|
|
|
1237 |
glob-parent@^5.1.2:
|
1238 |
version "5.1.2"
|
1239 |
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
@@ -1608,6 +1879,33 @@ react-refresh@^0.17.0:
|
|
1608 |
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.17.0.tgz#b7e579c3657f23d04eccbe4ad2e58a8ed51e7e53"
|
1609 |
integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==
|
1610 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1611 |
react@^19.0.0:
|
1612 |
version "19.1.0"
|
1613 |
resolved "https://registry.yarnpkg.com/react/-/react-19.1.0.tgz#926864b6c48da7627f004795d6cce50e90793b75"
|
@@ -1738,7 +2036,7 @@ ts-api-utils@^2.0.1:
|
|
1738 |
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91"
|
1739 |
integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==
|
1740 |
|
1741 |
-
tslib@^2.4.0, tslib@^2.8.0:
|
1742 |
version "2.8.1"
|
1743 |
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
|
1744 |
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
|
@@ -1789,6 +2087,21 @@ uri-js@^4.2.2:
|
|
1789 |
dependencies:
|
1790 |
punycode "^2.1.0"
|
1791 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1792 |
vite@^6.3.1:
|
1793 |
version "6.3.4"
|
1794 |
resolved "https://registry.yarnpkg.com/vite/-/vite-6.3.4.tgz#d441a72c7cd9a93b719bb851250a4e6c119c9cff"
|
|
|
376 |
"@eslint/core" "^0.13.0"
|
377 |
levn "^0.4.1"
|
378 |
|
379 |
+
"@floating-ui/core@^1.6.0":
|
380 |
+
version "1.6.9"
|
381 |
+
resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.9.tgz#64d1da251433019dafa091de9b2886ff35ec14e6"
|
382 |
+
integrity sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==
|
383 |
+
dependencies:
|
384 |
+
"@floating-ui/utils" "^0.2.9"
|
385 |
+
|
386 |
+
"@floating-ui/dom@^1.0.0":
|
387 |
+
version "1.6.13"
|
388 |
+
resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.13.tgz#a8a938532aea27a95121ec16e667a7cbe8c59e34"
|
389 |
+
integrity sha512-umqzocjDgNRGTuO7Q8CU32dkHkECqI8ZdMZ5Swb6QAM0t5rnlrN3lGo1hdpscRd3WS8T6DKYK4ephgIH9iRh3w==
|
390 |
+
dependencies:
|
391 |
+
"@floating-ui/core" "^1.6.0"
|
392 |
+
"@floating-ui/utils" "^0.2.9"
|
393 |
+
|
394 |
+
"@floating-ui/react-dom@^2.0.0":
|
395 |
+
version "2.1.2"
|
396 |
+
resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.2.tgz#a1349bbf6a0e5cb5ded55d023766f20a4d439a31"
|
397 |
+
integrity sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==
|
398 |
+
dependencies:
|
399 |
+
"@floating-ui/dom" "^1.0.0"
|
400 |
+
|
401 |
+
"@floating-ui/utils@^0.2.9":
|
402 |
+
version "0.2.9"
|
403 |
+
resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.9.tgz#50dea3616bc8191fb8e112283b49eaff03e78429"
|
404 |
+
integrity sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==
|
405 |
+
|
406 |
"@humanfs/core@^0.19.1":
|
407 |
version "0.19.1"
|
408 |
resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77"
|
|
|
493 |
"@nodelib/fs.scandir" "2.1.5"
|
494 |
fastq "^1.6.0"
|
495 |
|
496 |
+
"@radix-ui/[email protected]":
|
497 |
+
version "1.1.1"
|
498 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/number/-/number-1.1.1.tgz#7b2c9225fbf1b126539551f5985769d0048d9090"
|
499 |
+
integrity sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==
|
500 |
+
|
501 |
+
"@radix-ui/[email protected]":
|
502 |
+
version "1.1.2"
|
503 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.2.tgz#83f415c4425f21e3d27914c12b3272a32e3dae65"
|
504 |
+
integrity sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==
|
505 |
+
|
506 |
+
"@radix-ui/[email protected]":
|
507 |
+
version "1.1.4"
|
508 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-arrow/-/react-arrow-1.1.4.tgz#08e263c692b3a56a3f1c4bdc8405b7f73f070963"
|
509 |
+
integrity sha512-qz+fxrqgNxG0dYew5l7qR3c7wdgRu1XVUHGnGYX7rg5HM4p9SWaRmJwfgR3J0SgyUKayLmzQIun+N6rWRgiRKw==
|
510 |
+
dependencies:
|
511 |
+
"@radix-ui/react-primitive" "2.1.0"
|
512 |
+
|
513 |
+
"@radix-ui/[email protected]":
|
514 |
+
version "1.1.4"
|
515 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-collection/-/react-collection-1.1.4.tgz#45fb4215ca26a84bd61b9b1337105e4d4e01b686"
|
516 |
+
integrity sha512-cv4vSf7HttqXilDnAnvINd53OTl1/bjUYVZrkFnA7nwmY9Ob2POUy0WY0sfqBAe1s5FyKsyceQlqiEGPYNTadg==
|
517 |
+
dependencies:
|
518 |
+
"@radix-ui/react-compose-refs" "1.1.2"
|
519 |
+
"@radix-ui/react-context" "1.1.2"
|
520 |
+
"@radix-ui/react-primitive" "2.1.0"
|
521 |
+
"@radix-ui/react-slot" "1.2.0"
|
522 |
+
|
523 |
"@radix-ui/[email protected]":
|
524 |
version "1.1.2"
|
525 |
resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz#a2c4c47af6337048ee78ff6dc0d090b390d2bb30"
|
526 |
integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==
|
527 |
|
528 |
+
"@radix-ui/react-context@1.1.2":
|
529 |
+
version "1.1.2"
|
530 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.2.tgz#61628ef269a433382c364f6f1e3788a6dc213a36"
|
531 |
+
integrity sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==
|
532 |
+
|
533 |
+
"@radix-ui/[email protected]":
|
534 |
+
version "1.1.1"
|
535 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-direction/-/react-direction-1.1.1.tgz#39e5a5769e676c753204b792fbe6cf508e550a14"
|
536 |
+
integrity sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==
|
537 |
+
|
538 |
+
"@radix-ui/[email protected]":
|
539 |
+
version "1.1.7"
|
540 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.7.tgz#80b5c23a0d29cfe56850399210c603376c27091f"
|
541 |
+
integrity sha512-j5+WBUdhccJsmH5/H0K6RncjDtoALSEr6jbkaZu+bjw6hOPOhHycr6vEUujl+HBK8kjUfWcoCJXxP6e4lUlMZw==
|
542 |
+
dependencies:
|
543 |
+
"@radix-ui/primitive" "1.1.2"
|
544 |
+
"@radix-ui/react-compose-refs" "1.1.2"
|
545 |
+
"@radix-ui/react-primitive" "2.1.0"
|
546 |
+
"@radix-ui/react-use-callback-ref" "1.1.1"
|
547 |
+
"@radix-ui/react-use-escape-keydown" "1.1.1"
|
548 |
+
|
549 |
+
"@radix-ui/[email protected]":
|
550 |
+
version "1.1.2"
|
551 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz#4ec9a7e50925f7fb661394460045b46212a33bed"
|
552 |
+
integrity sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==
|
553 |
+
|
554 |
+
"@radix-ui/[email protected]":
|
555 |
+
version "1.1.4"
|
556 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.4.tgz#dbe9ed31b36ff9aadadf4b59aa733a4e91799d15"
|
557 |
+
integrity sha512-r2annK27lIW5w9Ho5NyQgqs0MmgZSTIKXWpVCJaLC1q2kZrZkcqnmHkCHMEmv8XLvsLlurKMPT+kbKkRkm/xVA==
|
558 |
+
dependencies:
|
559 |
+
"@radix-ui/react-compose-refs" "1.1.2"
|
560 |
+
"@radix-ui/react-primitive" "2.1.0"
|
561 |
+
"@radix-ui/react-use-callback-ref" "1.1.1"
|
562 |
+
|
563 |
+
"@radix-ui/[email protected]":
|
564 |
+
version "1.1.1"
|
565 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.1.tgz#1404002e79a03fe062b7e3864aa01e24bd1471f7"
|
566 |
+
integrity sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==
|
567 |
+
dependencies:
|
568 |
+
"@radix-ui/react-use-layout-effect" "1.1.1"
|
569 |
+
|
570 |
+
"@radix-ui/[email protected]":
|
571 |
+
version "1.2.4"
|
572 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-popper/-/react-popper-1.2.4.tgz#8fd6d954fca9e5d1341c7d9153cc88e05d5ed84e"
|
573 |
+
integrity sha512-3p2Rgm/a1cK0r/UVkx5F/K9v/EplfjAeIFCGOPYPO4lZ0jtg4iSQXt/YGTSLWaf4x7NG6Z4+uKFcylcTZjeqDA==
|
574 |
+
dependencies:
|
575 |
+
"@floating-ui/react-dom" "^2.0.0"
|
576 |
+
"@radix-ui/react-arrow" "1.1.4"
|
577 |
+
"@radix-ui/react-compose-refs" "1.1.2"
|
578 |
+
"@radix-ui/react-context" "1.1.2"
|
579 |
+
"@radix-ui/react-primitive" "2.1.0"
|
580 |
+
"@radix-ui/react-use-callback-ref" "1.1.1"
|
581 |
+
"@radix-ui/react-use-layout-effect" "1.1.1"
|
582 |
+
"@radix-ui/react-use-rect" "1.1.1"
|
583 |
+
"@radix-ui/react-use-size" "1.1.1"
|
584 |
+
"@radix-ui/rect" "1.1.1"
|
585 |
+
|
586 |
+
"@radix-ui/[email protected]":
|
587 |
+
version "1.1.6"
|
588 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.6.tgz#4202e1bb34afdac612e4e982eca8efd36cbc611f"
|
589 |
+
integrity sha512-XmsIl2z1n/TsYFLIdYam2rmFwf9OC/Sh2avkbmVMDuBZIe7hSpM0cYnWPAo7nHOVx8zTuwDZGByfcqLdnzp3Vw==
|
590 |
+
dependencies:
|
591 |
+
"@radix-ui/react-primitive" "2.1.0"
|
592 |
+
"@radix-ui/react-use-layout-effect" "1.1.1"
|
593 |
+
|
594 |
+
"@radix-ui/[email protected]":
|
595 |
+
version "1.1.4"
|
596 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.4.tgz#253ac0ad4946c5b4a9c66878335f5cf07c967ced"
|
597 |
+
integrity sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==
|
598 |
+
dependencies:
|
599 |
+
"@radix-ui/react-compose-refs" "1.1.2"
|
600 |
+
"@radix-ui/react-use-layout-effect" "1.1.1"
|
601 |
+
|
602 |
+
"@radix-ui/[email protected]":
|
603 |
+
version "2.1.0"
|
604 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz#9233e17a22d0010195086f8b5eb1808ebbca8437"
|
605 |
+
integrity sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==
|
606 |
+
dependencies:
|
607 |
+
"@radix-ui/react-slot" "1.2.0"
|
608 |
+
|
609 |
+
"@radix-ui/[email protected]":
|
610 |
+
version "1.1.7"
|
611 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.7.tgz#02077705ab0c712d2d9692459a7194c5a4e5236d"
|
612 |
+
integrity sha512-C6oAg451/fQT3EGbWHbCQjYTtbyjNO1uzQgMzwyivcHT3GKNEmu1q3UuREhN+HzHAVtv3ivMVK08QlC+PkYw9Q==
|
613 |
+
dependencies:
|
614 |
+
"@radix-ui/primitive" "1.1.2"
|
615 |
+
"@radix-ui/react-collection" "1.1.4"
|
616 |
+
"@radix-ui/react-compose-refs" "1.1.2"
|
617 |
+
"@radix-ui/react-context" "1.1.2"
|
618 |
+
"@radix-ui/react-direction" "1.1.1"
|
619 |
+
"@radix-ui/react-id" "1.1.1"
|
620 |
+
"@radix-ui/react-primitive" "2.1.0"
|
621 |
+
"@radix-ui/react-use-callback-ref" "1.1.1"
|
622 |
+
"@radix-ui/react-use-controllable-state" "1.2.2"
|
623 |
+
|
624 |
+
"@radix-ui/react-select@^2.2.2":
|
625 |
+
version "2.2.2"
|
626 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-select/-/react-select-2.2.2.tgz#96759b9dcf4e80f6f39c1ad706718f1b2928ba21"
|
627 |
+
integrity sha512-HjkVHtBkuq+r3zUAZ/CvNWUGKPfuicGDbgtZgiQuFmNcV5F+Tgy24ep2nsAW2nFgvhGPJVqeBZa6KyVN0EyrBA==
|
628 |
+
dependencies:
|
629 |
+
"@radix-ui/number" "1.1.1"
|
630 |
+
"@radix-ui/primitive" "1.1.2"
|
631 |
+
"@radix-ui/react-collection" "1.1.4"
|
632 |
+
"@radix-ui/react-compose-refs" "1.1.2"
|
633 |
+
"@radix-ui/react-context" "1.1.2"
|
634 |
+
"@radix-ui/react-direction" "1.1.1"
|
635 |
+
"@radix-ui/react-dismissable-layer" "1.1.7"
|
636 |
+
"@radix-ui/react-focus-guards" "1.1.2"
|
637 |
+
"@radix-ui/react-focus-scope" "1.1.4"
|
638 |
+
"@radix-ui/react-id" "1.1.1"
|
639 |
+
"@radix-ui/react-popper" "1.2.4"
|
640 |
+
"@radix-ui/react-portal" "1.1.6"
|
641 |
+
"@radix-ui/react-primitive" "2.1.0"
|
642 |
+
"@radix-ui/react-slot" "1.2.0"
|
643 |
+
"@radix-ui/react-use-callback-ref" "1.1.1"
|
644 |
+
"@radix-ui/react-use-controllable-state" "1.2.2"
|
645 |
+
"@radix-ui/react-use-layout-effect" "1.1.1"
|
646 |
+
"@radix-ui/react-use-previous" "1.1.1"
|
647 |
+
"@radix-ui/react-visually-hidden" "1.2.0"
|
648 |
+
aria-hidden "^1.2.4"
|
649 |
+
react-remove-scroll "^2.6.3"
|
650 |
+
|
651 |
+
"@radix-ui/[email protected]", "@radix-ui/react-slot@^1.2.0":
|
652 |
version "1.2.0"
|
653 |
resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.0.tgz#57727fc186ddb40724ccfbe294e1a351d92462ba"
|
654 |
integrity sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==
|
655 |
dependencies:
|
656 |
"@radix-ui/react-compose-refs" "1.1.2"
|
657 |
|
658 |
+
"@radix-ui/react-tabs@^1.1.9":
|
659 |
+
version "1.1.9"
|
660 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-tabs/-/react-tabs-1.1.9.tgz#4170432717f32d2e75de3a9853ad0a557ccc1346"
|
661 |
+
integrity sha512-KIjtwciYvquiW/wAFkELZCVnaNLBsYNhTNcvl+zfMAbMhRkcvNuCLXDDd22L0j7tagpzVh/QwbFpwAATg7ILPw==
|
662 |
+
dependencies:
|
663 |
+
"@radix-ui/primitive" "1.1.2"
|
664 |
+
"@radix-ui/react-context" "1.1.2"
|
665 |
+
"@radix-ui/react-direction" "1.1.1"
|
666 |
+
"@radix-ui/react-id" "1.1.1"
|
667 |
+
"@radix-ui/react-presence" "1.1.4"
|
668 |
+
"@radix-ui/react-primitive" "2.1.0"
|
669 |
+
"@radix-ui/react-roving-focus" "1.1.7"
|
670 |
+
"@radix-ui/react-use-controllable-state" "1.2.2"
|
671 |
+
|
672 |
+
"@radix-ui/[email protected]":
|
673 |
+
version "1.1.1"
|
674 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz#62a4dba8b3255fdc5cc7787faeac1c6e4cc58d40"
|
675 |
+
integrity sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==
|
676 |
+
|
677 |
+
"@radix-ui/[email protected]":
|
678 |
+
version "1.2.2"
|
679 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz#905793405de57d61a439f4afebbb17d0645f3190"
|
680 |
+
integrity sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==
|
681 |
+
dependencies:
|
682 |
+
"@radix-ui/react-use-effect-event" "0.0.2"
|
683 |
+
"@radix-ui/react-use-layout-effect" "1.1.1"
|
684 |
+
|
685 |
+
"@radix-ui/[email protected]":
|
686 |
+
version "0.0.2"
|
687 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz#090cf30d00a4c7632a15548512e9152217593907"
|
688 |
+
integrity sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==
|
689 |
+
dependencies:
|
690 |
+
"@radix-ui/react-use-layout-effect" "1.1.1"
|
691 |
+
|
692 |
+
"@radix-ui/[email protected]":
|
693 |
+
version "1.1.1"
|
694 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz#b3fed9bbea366a118f40427ac40500aa1423cc29"
|
695 |
+
integrity sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==
|
696 |
+
dependencies:
|
697 |
+
"@radix-ui/react-use-callback-ref" "1.1.1"
|
698 |
+
|
699 |
+
"@radix-ui/[email protected]":
|
700 |
+
version "1.1.1"
|
701 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz#0c4230a9eed49d4589c967e2d9c0d9d60a23971e"
|
702 |
+
integrity sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==
|
703 |
+
|
704 |
+
"@radix-ui/[email protected]":
|
705 |
+
version "1.1.1"
|
706 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz#1a1ad5568973d24051ed0af687766f6c7cb9b5b5"
|
707 |
+
integrity sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==
|
708 |
+
|
709 |
+
"@radix-ui/[email protected]":
|
710 |
+
version "1.1.1"
|
711 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz#01443ca8ed071d33023c1113e5173b5ed8769152"
|
712 |
+
integrity sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==
|
713 |
+
dependencies:
|
714 |
+
"@radix-ui/rect" "1.1.1"
|
715 |
+
|
716 |
+
"@radix-ui/[email protected]":
|
717 |
+
version "1.1.1"
|
718 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz#6de276ffbc389a537ffe4316f5b0f24129405b37"
|
719 |
+
integrity sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==
|
720 |
+
dependencies:
|
721 |
+
"@radix-ui/react-use-layout-effect" "1.1.1"
|
722 |
+
|
723 |
+
"@radix-ui/[email protected]":
|
724 |
+
version "1.2.0"
|
725 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.0.tgz#7692a590b4789bebf7e02d73e6d1390704a97920"
|
726 |
+
integrity sha512-rQj0aAWOpCdCMRbI6pLQm8r7S2BM3YhTa0SzOYD55k+hJA8oo9J+H+9wLM9oMlZWOX/wJWPTzfDfmZkf7LvCfg==
|
727 |
+
dependencies:
|
728 |
+
"@radix-ui/react-primitive" "2.1.0"
|
729 |
+
|
730 |
+
"@radix-ui/[email protected]":
|
731 |
+
version "1.1.1"
|
732 |
+
resolved "https://registry.yarnpkg.com/@radix-ui/rect/-/rect-1.1.1.tgz#78244efe12930c56fd255d7923865857c41ac8cb"
|
733 |
+
integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==
|
734 |
+
|
735 |
"@rollup/[email protected]":
|
736 |
version "4.40.1"
|
737 |
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz#e1562d360bca73c7bef6feef86098de3a2f1d442"
|
|
|
1129 |
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
|
1130 |
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
|
1131 |
|
1132 |
+
aria-hidden@^1.2.4:
|
1133 |
+
version "1.2.4"
|
1134 |
+
resolved "https://registry.yarnpkg.com/aria-hidden/-/aria-hidden-1.2.4.tgz#b78e383fdbc04d05762c78b4a25a501e736c4522"
|
1135 |
+
integrity sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==
|
1136 |
+
dependencies:
|
1137 |
+
tslib "^2.0.0"
|
1138 |
+
|
1139 |
balanced-match@^1.0.0:
|
1140 |
version "1.0.2"
|
1141 |
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
|
|
|
1256 |
resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.4.tgz#f04715b8ba815e53b4d8109655b6508a6865a7e8"
|
1257 |
integrity sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==
|
1258 |
|
1259 |
+
detect-node-es@^1.1.0:
|
1260 |
+
version "1.1.0"
|
1261 |
+
resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493"
|
1262 |
+
integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==
|
1263 |
+
|
1264 |
electron-to-chromium@^1.5.73:
|
1265 |
version "1.5.145"
|
1266 |
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.145.tgz#abd50700ac2c809e40a4694584f66711ee937fb6"
|
|
|
1500 |
resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0"
|
1501 |
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
1502 |
|
1503 |
+
get-nonce@^1.0.0:
|
1504 |
+
version "1.0.1"
|
1505 |
+
resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3"
|
1506 |
+
integrity sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==
|
1507 |
+
|
1508 |
glob-parent@^5.1.2:
|
1509 |
version "5.1.2"
|
1510 |
resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
|
|
1879 |
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.17.0.tgz#b7e579c3657f23d04eccbe4ad2e58a8ed51e7e53"
|
1880 |
integrity sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==
|
1881 |
|
1882 |
+
react-remove-scroll-bar@^2.3.7:
|
1883 |
+
version "2.3.8"
|
1884 |
+
resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz#99c20f908ee467b385b68a3469b4a3e750012223"
|
1885 |
+
integrity sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==
|
1886 |
+
dependencies:
|
1887 |
+
react-style-singleton "^2.2.2"
|
1888 |
+
tslib "^2.0.0"
|
1889 |
+
|
1890 |
+
react-remove-scroll@^2.6.3:
|
1891 |
+
version "2.6.3"
|
1892 |
+
resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz#df02cde56d5f2731e058531f8ffd7f9adec91ac2"
|
1893 |
+
integrity sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==
|
1894 |
+
dependencies:
|
1895 |
+
react-remove-scroll-bar "^2.3.7"
|
1896 |
+
react-style-singleton "^2.2.3"
|
1897 |
+
tslib "^2.1.0"
|
1898 |
+
use-callback-ref "^1.3.3"
|
1899 |
+
use-sidecar "^1.1.3"
|
1900 |
+
|
1901 |
+
react-style-singleton@^2.2.2, react-style-singleton@^2.2.3:
|
1902 |
+
version "2.2.3"
|
1903 |
+
resolved "https://registry.yarnpkg.com/react-style-singleton/-/react-style-singleton-2.2.3.tgz#4265608be69a4d70cfe3047f2c6c88b2c3ace388"
|
1904 |
+
integrity sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==
|
1905 |
+
dependencies:
|
1906 |
+
get-nonce "^1.0.0"
|
1907 |
+
tslib "^2.0.0"
|
1908 |
+
|
1909 |
react@^19.0.0:
|
1910 |
version "19.1.0"
|
1911 |
resolved "https://registry.yarnpkg.com/react/-/react-19.1.0.tgz#926864b6c48da7627f004795d6cce50e90793b75"
|
|
|
2036 |
resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-2.1.0.tgz#595f7094e46eed364c13fd23e75f9513d29baf91"
|
2037 |
integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==
|
2038 |
|
2039 |
+
tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.8.0:
|
2040 |
version "2.8.1"
|
2041 |
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
|
2042 |
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
|
|
|
2087 |
dependencies:
|
2088 |
punycode "^2.1.0"
|
2089 |
|
2090 |
+
use-callback-ref@^1.3.3:
|
2091 |
+
version "1.3.3"
|
2092 |
+
resolved "https://registry.yarnpkg.com/use-callback-ref/-/use-callback-ref-1.3.3.tgz#98d9fab067075841c5b2c6852090d5d0feabe2bf"
|
2093 |
+
integrity sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==
|
2094 |
+
dependencies:
|
2095 |
+
tslib "^2.0.0"
|
2096 |
+
|
2097 |
+
use-sidecar@^1.1.3:
|
2098 |
+
version "1.1.3"
|
2099 |
+
resolved "https://registry.yarnpkg.com/use-sidecar/-/use-sidecar-1.1.3.tgz#10e7fd897d130b896e2c546c63a5e8233d00efdb"
|
2100 |
+
integrity sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==
|
2101 |
+
dependencies:
|
2102 |
+
detect-node-es "^1.1.0"
|
2103 |
+
tslib "^2.0.0"
|
2104 |
+
|
2105 |
vite@^6.3.1:
|
2106 |
version "6.3.4"
|
2107 |
resolved "https://registry.yarnpkg.com/vite/-/vite-6.3.4.tgz#d441a72c7cd9a93b719bb851250a4e6c119c9cff"
|