stillerman commited on
Commit
8def8f4
·
1 Parent(s): 2f4e514

try this path button, ui improvements

Browse files
src/App.tsx CHANGED
@@ -2,7 +2,20 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
2
  import ViewerTab from "@/components/viewer-tab";
3
  import PlayTab from "@/components/play-tab";
4
  import { SignInWithHuggingFaceButton } from "@/components/sign-in-with-hf-button";
 
 
5
  export default function Home() {
 
 
 
 
 
 
 
 
 
 
 
6
  return (
7
  <div className="container mx-auto p-4">
8
  <div className="flex flex-row justify-between">
@@ -10,18 +23,18 @@ export default function Home() {
10
  <SignInWithHuggingFaceButton />
11
  </div>
12
 
13
- <Tabs defaultValue="view" className="w-full">
14
  <TabsList className="mb-4">
15
  <TabsTrigger value="view">View Runs</TabsTrigger>
16
  <TabsTrigger value="play">Play Game</TabsTrigger>
17
  </TabsList>
18
 
19
  <TabsContent value="view">
20
- <ViewerTab />
21
  </TabsContent>
22
 
23
  <TabsContent value="play">
24
- <PlayTab />
25
  </TabsContent>
26
  </Tabs>
27
  </div>
 
2
  import ViewerTab from "@/components/viewer-tab";
3
  import PlayTab from "@/components/play-tab";
4
  import { SignInWithHuggingFaceButton } from "@/components/sign-in-with-hf-button";
5
+ import { useState } from "react";
6
+
7
  export default function Home() {
8
+ const [selectedTab, setSelectedTab] = useState<"view" | "play">("view");
9
+ const [startArticle, setStartArticle] = useState<string>("");
10
+ const [destinationArticle, setDestinationArticle] = useState<string>("");
11
+
12
+ const handleTryRun = (startArticle: string, destinationArticle: string) => {
13
+ console.log("Trying run from", startArticle, "to", destinationArticle);
14
+ setSelectedTab("play");
15
+ setStartArticle(startArticle);
16
+ setDestinationArticle(destinationArticle);
17
+ };
18
+
19
  return (
20
  <div className="container mx-auto p-4">
21
  <div className="flex flex-row justify-between">
 
23
  <SignInWithHuggingFaceButton />
24
  </div>
25
 
26
+ <Tabs defaultValue="view" className="w-full" onValueChange={(value) => setSelectedTab(value as "view" | "play")} value={selectedTab}>
27
  <TabsList className="mb-4">
28
  <TabsTrigger value="view">View Runs</TabsTrigger>
29
  <TabsTrigger value="play">Play Game</TabsTrigger>
30
  </TabsList>
31
 
32
  <TabsContent value="view">
33
+ <ViewerTab handleTryRun={handleTryRun} />
34
  </TabsContent>
35
 
36
  <TabsContent value="play">
37
+ <PlayTab startArticle={startArticle} destinationArticle={destinationArticle} />
38
  </TabsContent>
39
  </Tabs>
40
  </div>
src/components/play-tab.tsx CHANGED
@@ -10,9 +10,7 @@ import GameComponent from "@/components/game-component";
10
  import {
11
  Select,
12
  SelectContent,
13
- SelectGroup,
14
  SelectItem,
15
- SelectLabel,
16
  SelectTrigger,
17
  SelectValue,
18
  } from "@/components/ui/select";
@@ -20,14 +18,19 @@ import { API_BASE } from "@/lib/constants";
20
  import { VirtualizedCombobox } from "./ui/virtualized-combobox";
21
 
22
 
23
- export default function PlayTab() {
 
 
 
 
 
 
24
  const [player, setPlayer] = useState<"me" | "model">("me");
25
  const [selectedModel, setSelectedModel] = useState<string | undefined>();
26
  const [maxHops, setMaxHops] = useState<number>(20);
27
- const [nodeList, setNodeList] = useState<string>("default");
28
  const [isGameStarted, setIsGameStarted] = useState<boolean>(false);
29
- const [startPage, setStartPage] = useState<string>("Dogs");
30
- const [targetPage, setTargetPage] = useState<string>("Canada");
31
  const [maxTokens, setMaxTokens] = useState<number>(1024);
32
  const [maxLinks, setMaxLinks] = useState<number>(200);
33
  const [isServerConnected, setIsServerConnected] = useState<boolean>(false);
@@ -119,7 +122,7 @@ export default function PlayTab() {
119
  options={allArticles}
120
  value={startPage}
121
  onValueChange={(value) => setStartPage(value)}
122
- searchPlaceholder="e.g. Dogs"
123
  />
124
  </div>
125
 
@@ -132,7 +135,7 @@ export default function PlayTab() {
132
  options={allArticles}
133
  value={targetPage}
134
  onValueChange={(value) => setTargetPage(value)}
135
- searchPlaceholder="e.g. Canada"
136
  />
137
  </div>
138
  <Button onClick={handleStartGame} className="mb-0.5">
 
10
  import {
11
  Select,
12
  SelectContent,
 
13
  SelectItem,
 
14
  SelectTrigger,
15
  SelectValue,
16
  } from "@/components/ui/select";
 
18
  import { VirtualizedCombobox } from "./ui/virtualized-combobox";
19
 
20
 
21
+ export default function PlayTab({
22
+ startArticle,
23
+ destinationArticle,
24
+ }: {
25
+ startArticle?: string;
26
+ destinationArticle?: string;
27
+ }) {
28
  const [player, setPlayer] = useState<"me" | "model">("me");
29
  const [selectedModel, setSelectedModel] = useState<string | undefined>();
30
  const [maxHops, setMaxHops] = useState<number>(20);
 
31
  const [isGameStarted, setIsGameStarted] = useState<boolean>(false);
32
+ const [startPage, setStartPage] = useState<string>(startArticle || "Dogs");
33
+ const [targetPage, setTargetPage] = useState<string>(destinationArticle || "Canada");
34
  const [maxTokens, setMaxTokens] = useState<number>(1024);
35
  const [maxLinks, setMaxLinks] = useState<number>(200);
36
  const [isServerConnected, setIsServerConnected] = useState<boolean>(false);
 
122
  options={allArticles}
123
  value={startPage}
124
  onValueChange={(value) => setStartPage(value)}
125
+ // searchPlaceholder="e.g. Dogs"
126
  />
127
  </div>
128
 
 
135
  options={allArticles}
136
  value={targetPage}
137
  onValueChange={(value) => setTargetPage(value)}
138
+ // searchPlaceholder="e.g. Canada"
139
  />
140
  </div>
141
  <Button onClick={handleStartGame} className="mb-0.5">
src/components/runs-list.tsx CHANGED
@@ -5,6 +5,7 @@ import { cn } from "@/lib/utils";
5
  import { useState, useEffect, useRef } from "react";
6
  import { Input } from "@/components/ui/input";
7
  import { Button } from "@/components/ui/button";
 
8
 
9
  interface Run {
10
  start_article: string;
@@ -16,12 +17,14 @@ interface RunsListProps {
16
  runs: Run[];
17
  onSelectRun: (runId: number) => void;
18
  selectedRunId: number | null;
 
19
  }
20
 
21
  export default function RunsList({
22
  runs,
23
  onSelectRun,
24
  selectedRunId,
 
25
  }: RunsListProps) {
26
  const [isPlaying, setIsPlaying] = useState(true);
27
  const [startFilter, setStartFilter] = useState("");
@@ -71,90 +74,123 @@ export default function RunsList({
71
 
72
  return (
73
  <div className="h-full w-full flex flex-col">
74
- <div className="space-y-2 mb-3">
75
  <div className="flex gap-2 items-center">
76
  <Input
77
  placeholder="Filter by start"
78
  value={startFilter}
79
  onChange={(e) => setStartFilter(e.target.value)}
80
- className="h-8"
81
  />
82
  <Input
83
  placeholder="Filter by end"
84
  value={endFilter}
85
  onChange={(e) => setEndFilter(e.target.value)}
86
- className="h-8"
87
  />
88
  <Button
89
  size="sm"
90
- variant="outline"
91
  onClick={togglePlayPause}
92
- className="flex-shrink-0 h-8 w-8 p-0"
93
  >
94
  {isPlaying ? (
95
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
96
- <rect x="6" y="4" width="4" height="16" />
97
- <rect x="14" y="4" width="4" height="16" />
98
- </svg>
 
 
 
99
  ) : (
100
- <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
101
- <polygon points="5 3 19 12 5 21 5 3" />
102
- </svg>
 
 
 
103
  )}
104
  </Button>
105
  </div>
106
  </div>
107
 
108
- <div className="flex-1 overflow-y-auto overflow-x-hidden space-y-2 pr-1">
109
  {filteredRuns.map((run) => {
110
  const originalIndex = runs.indexOf(run);
111
  return (
112
  <Card
113
  key={originalIndex}
114
  className={cn(
115
- "p-3 cursor-pointer transition-all border",
116
  selectedRunId === originalIndex
117
- ? "bg-primary/10 border-primary/50 shadow-sm"
118
- : "hover:bg-muted/80 border-transparent"
119
  )}
120
- onClick={() => onSelectRun(originalIndex)}
121
  >
122
- <div className="flex items-center justify-between">
123
- <div>
124
- <p className="font-medium flex items-center">
125
- <span>{run.start_article}</span>
126
- <svg
127
- xmlns="http://www.w3.org/2000/svg"
128
- width="16"
129
- height="16"
130
- viewBox="0 0 24 24"
131
- fill="none"
132
- stroke="currentColor"
133
- strokeWidth="2"
134
- strokeLinecap="round"
135
- strokeLinejoin="round"
136
- className="mx-1"
137
- >
138
- <path d="M5 12h14" />
139
- <path d="m12 5 7 7-7 7" />
140
- </svg>
141
- <span>{run.destination_article}</span>
142
- </p>
143
- <p className="text-sm text-muted-foreground">{run.steps.length} hops</p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
144
  </div>
145
- {selectedRunId === originalIndex && (
146
- <div
147
- className="h-2 w-2 rounded-full bg-primary"
148
- aria-hidden="true"
149
- />
150
- )}
151
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  </Card>
153
  );
154
  })}
155
 
156
  {filteredRuns.length === 0 && (
157
- <div className="flex items-center justify-center h-full text-muted-foreground">
158
  No runs available
159
  </div>
160
  )}
 
5
  import { useState, useEffect, useRef } from "react";
6
  import { Input } from "@/components/ui/input";
7
  import { Button } from "@/components/ui/button";
8
+ import { Badge } from "@/components/ui/badge";
9
 
10
  interface Run {
11
  start_article: string;
 
17
  runs: Run[];
18
  onSelectRun: (runId: number) => void;
19
  selectedRunId: number | null;
20
+ onTryRun?: (startArticle: string, destinationArticle: string) => void;
21
  }
22
 
23
  export default function RunsList({
24
  runs,
25
  onSelectRun,
26
  selectedRunId,
27
+ onTryRun,
28
  }: RunsListProps) {
29
  const [isPlaying, setIsPlaying] = useState(true);
30
  const [startFilter, setStartFilter] = useState("");
 
74
 
75
  return (
76
  <div className="h-full w-full flex flex-col">
77
+ <div className="space-y-2 mb-4">
78
  <div className="flex gap-2 items-center">
79
  <Input
80
  placeholder="Filter by start"
81
  value={startFilter}
82
  onChange={(e) => setStartFilter(e.target.value)}
83
+ className="h-9"
84
  />
85
  <Input
86
  placeholder="Filter by end"
87
  value={endFilter}
88
  onChange={(e) => setEndFilter(e.target.value)}
89
+ className="h-9"
90
  />
91
  <Button
92
  size="sm"
93
+ variant={isPlaying ? "secondary" : "outline"}
94
  onClick={togglePlayPause}
95
+ className="flex-shrink-0 h-9 px-3 gap-1"
96
  >
97
  {isPlaying ? (
98
+ <>
99
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
100
+ <rect x="6" y="4" width="4" height="16" />
101
+ <rect x="14" y="4" width="4" height="16" />
102
+ </svg>
103
+ Pause
104
+ </>
105
  ) : (
106
+ <>
107
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
108
+ <polygon points="5 3 19 12 5 21 5 3" />
109
+ </svg>
110
+ Play
111
+ </>
112
  )}
113
  </Button>
114
  </div>
115
  </div>
116
 
117
+ <div className="flex-1 overflow-y-auto overflow-x-hidden space-y-3 pr-1">
118
  {filteredRuns.map((run) => {
119
  const originalIndex = runs.indexOf(run);
120
  return (
121
  <Card
122
  key={originalIndex}
123
  className={cn(
124
+ "p-0 cursor-pointer transition-all border overflow-hidden",
125
  selectedRunId === originalIndex
126
+ ? "bg-primary/5 border-primary/50 shadow-md"
127
+ : "hover:bg-muted/50 border-border"
128
  )}
 
129
  >
130
+ <div
131
+ className="p-3 flex flex-col gap-2"
132
+ onClick={() => onSelectRun(originalIndex)}
133
+ >
134
+ <div className="flex items-start justify-between">
135
+ <div className="space-y-1">
136
+ <div className="font-medium flex items-center flex-wrap gap-1">
137
+ <span className="text-primary">{run.start_article}</span>
138
+ <svg
139
+ xmlns="http://www.w3.org/2000/svg"
140
+ width="14"
141
+ height="14"
142
+ viewBox="0 0 24 24"
143
+ fill="none"
144
+ stroke="currentColor"
145
+ strokeWidth="2"
146
+ strokeLinecap="round"
147
+ strokeLinejoin="round"
148
+ className="text-muted-foreground"
149
+ >
150
+ <path d="M5 12h14" />
151
+ <path d="m12 5 7 7-7 7" />
152
+ </svg>
153
+ <span className="text-primary">{run.destination_article}</span>
154
+ </div>
155
+ <div className="flex items-center gap-2">
156
+ <Badge variant="outline" className="text-xs px-2 py-0 h-5">
157
+ {run.steps.length} {run.steps.length === 1 ? 'hop' : 'hops'}
158
+ </Badge>
159
+ {selectedRunId === originalIndex && (
160
+ <div className="flex items-center gap-1 text-xs text-primary">
161
+ <div
162
+ className="h-2 w-2 rounded-full bg-primary animate-pulse"
163
+ aria-hidden="true"
164
+ />
165
+ <span>Active</span>
166
+ </div>
167
+ )}
168
+ </div>
169
+ </div>
170
  </div>
 
 
 
 
 
 
171
  </div>
172
+
173
+ {onTryRun && selectedRunId === originalIndex && (
174
+ <div className="border-t px-3 py-2 bg-muted/30 flex justify-end">
175
+ <Button
176
+ size="sm"
177
+ variant="outline"
178
+ className="h-7 text-xs"
179
+ onClick={(e) => {
180
+ e.stopPropagation();
181
+ onTryRun(run.start_article, run.destination_article);
182
+ }}
183
+ >
184
+ Try this path
185
+ </Button>
186
+ </div>
187
+ )}
188
  </Card>
189
  );
190
  })}
191
 
192
  {filteredRuns.length === 0 && (
193
+ <div className="flex items-center justify-center h-32 text-muted-foreground">
194
  No runs available
195
  </div>
196
  )}
src/components/ui/badge.tsx ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import * as React from "react"
2
+ import { Slot } from "@radix-ui/react-slot"
3
+ import { cva, type VariantProps } from "class-variance-authority"
4
+
5
+ import { cn } from "@/lib/utils"
6
+
7
+ const badgeVariants = cva(
8
+ "inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",
9
+ {
10
+ variants: {
11
+ variant: {
12
+ default:
13
+ "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",
14
+ secondary:
15
+ "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",
16
+ destructive:
17
+ "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
18
+ outline:
19
+ "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",
20
+ },
21
+ },
22
+ defaultVariants: {
23
+ variant: "default",
24
+ },
25
+ }
26
+ )
27
+
28
+ function Badge({
29
+ className,
30
+ variant,
31
+ asChild = false,
32
+ ...props
33
+ }: React.ComponentProps<"span"> &
34
+ VariantProps<typeof badgeVariants> & { asChild?: boolean }) {
35
+ const Comp = asChild ? Slot : "span"
36
+
37
+ return (
38
+ <Comp
39
+ data-slot="badge"
40
+ className={cn(badgeVariants({ variant }), className)}
41
+ {...props}
42
+ />
43
+ )
44
+ }
45
+
46
+ export { Badge, badgeVariants }
src/components/ui/virtualized-combobox.tsx CHANGED
@@ -214,9 +214,7 @@ export function VirtualizedCombobox({
214
  width: width,
215
  }}
216
  >
217
- {selectedOption
218
- ? options.find((option) => option === selectedOption)
219
- : searchPlaceholder}
220
  <ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
221
  </Button>
222
  </PopoverTrigger>
@@ -227,9 +225,6 @@ export function VirtualizedCombobox({
227
  placeholder={searchPlaceholder}
228
  selectedOption={value}
229
  onSelectOption={(currentValue) => {
230
- setSelectedOption(
231
- currentValue === selectedOption ? "" : currentValue
232
- );
233
  onValueChange(currentValue);
234
  setOpen(false);
235
  }}
 
214
  width: width,
215
  }}
216
  >
217
+ {value}
 
 
218
  <ChevronsUpDown className="ml-2 h-4 w-4 shrink-0 opacity-50" />
219
  </Button>
220
  </PopoverTrigger>
 
225
  placeholder={searchPlaceholder}
226
  selectedOption={value}
227
  onSelectOption={(currentValue) => {
 
 
 
228
  onValueChange(currentValue);
229
  setOpen(false);
230
  }}
src/components/viewer-tab.tsx CHANGED
@@ -17,7 +17,11 @@ type Run = {
17
  hops: number;
18
  };
19
 
20
- export default function ViewerTab() {
 
 
 
 
21
  const [selectedRun, setSelectedRun] = useState<number | null>(null);
22
  const [runs, setRuns] = useState<Run[]>([]);
23
 
@@ -33,7 +37,6 @@ export default function ViewerTab() {
33
  fetchDataset();
34
  }, []);
35
 
36
-
37
  const handleRunSelect = (runId: number) => {
38
  setSelectedRun(runId);
39
  };
@@ -54,6 +57,7 @@ export default function ViewerTab() {
54
  runs={filterRuns}
55
  onSelectRun={handleRunSelect}
56
  selectedRunId={selectedRun}
 
57
  />
58
  </div>
59
  </div>
 
17
  hops: number;
18
  };
19
 
20
+ export default function ViewerTab({
21
+ handleTryRun,
22
+ }: {
23
+ handleTryRun: (startArticle: string, destinationArticle: string) => void;
24
+ }) {
25
  const [selectedRun, setSelectedRun] = useState<number | null>(null);
26
  const [runs, setRuns] = useState<Run[]>([]);
27
 
 
37
  fetchDataset();
38
  }, []);
39
 
 
40
  const handleRunSelect = (runId: number) => {
41
  setSelectedRun(runId);
42
  };
 
57
  runs={filterRuns}
58
  onSelectRun={handleRunSelect}
59
  selectedRunId={selectedRun}
60
+ onTryRun={handleTryRun}
61
  />
62
  </div>
63
  </div>
yarn.lock CHANGED
@@ -2,6 +2,17 @@
2
  # yarn lockfile v1
3
 
4
 
 
 
 
 
 
 
 
 
 
 
 
5
  "@ampproject/remapping@^2.2.0":
6
  version "2.3.0"
7
  resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz"
@@ -24,7 +35,7 @@
24
  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz"
25
  integrity sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==
26
 
27
- "@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.26.10":
28
  version "7.27.1"
29
  resolved "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz"
30
  integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==
@@ -168,11 +179,153 @@
168
  "@babel/helper-string-parser" "^7.27.1"
169
  "@babel/helper-validator-identifier" "^7.27.1"
170
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
171
  "@esbuild/darwin-arm64@0.25.3":
172
  version "0.25.3"
173
  resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz"
174
  integrity sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==
175
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
176
  "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
177
  version "4.6.1"
178
  resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz"
@@ -221,7 +374,7 @@
221
  minimatch "^3.1.2"
222
  strip-json-comments "^3.1.1"
223
 
224
- "@eslint/js@^9.22.0", "@eslint/js@9.25.1":
225
  version "9.25.1"
226
  resolved "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz"
227
  integrity sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==
@@ -356,6 +509,15 @@
356
  "@jridgewell/resolve-uri" "^3.1.0"
357
  "@jridgewell/sourcemap-codec" "^1.4.14"
358
 
 
 
 
 
 
 
 
 
 
359
  "@nodelib/fs.scandir@2.1.5":
360
  version "2.1.5"
361
  resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -364,7 +526,7 @@
364
  "@nodelib/fs.stat" "2.0.5"
365
  run-parallel "^1.1.9"
366
 
367
- "@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
368
  version "2.0.5"
369
  resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
370
  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -404,7 +566,7 @@
404
  "@radix-ui/react-primitive" "2.1.0"
405
  "@radix-ui/react-slot" "1.2.0"
406
 
407
- "@radix-ui/react-compose-refs@^1.1.1", "@radix-ui/react-compose-refs@1.1.2":
408
  version "1.1.2"
409
  resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz"
410
  integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==
@@ -464,7 +626,7 @@
464
  "@radix-ui/react-primitive" "2.1.0"
465
  "@radix-ui/react-use-callback-ref" "1.1.1"
466
 
467
- "@radix-ui/react-id@^1.1.0", "@radix-ui/react-id@1.1.1":
468
  version "1.1.1"
469
  resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz"
470
  integrity sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==
@@ -531,7 +693,7 @@
531
  "@radix-ui/react-compose-refs" "1.1.2"
532
  "@radix-ui/react-use-layout-effect" "1.1.1"
533
 
534
- "@radix-ui/react-primitive@^2.0.2", "@radix-ui/react-primitive@2.1.0":
535
  version "2.1.0"
536
  resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz"
537
  integrity sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==
@@ -580,13 +742,20 @@
580
  aria-hidden "^1.2.4"
581
  react-remove-scroll "^2.6.3"
582
 
583
- "@radix-ui/react-slot@^1.2.0", "@radix-ui/react-slot@1.2.0":
584
  version "1.2.0"
585
  resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz"
586
  integrity sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==
587
  dependencies:
588
  "@radix-ui/react-compose-refs" "1.1.2"
589
 
 
 
 
 
 
 
 
590
  "@radix-ui/react-tabs@^1.1.9":
591
  version "1.1.9"
592
  resolved "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.9.tgz"
@@ -664,11 +833,106 @@
664
  resolved "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz"
665
  integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==
666
 
 
 
 
 
 
 
 
 
 
 
667
  "@rollup/rollup-darwin-arm64@4.40.1":
668
  version "4.40.1"
669
  resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz"
670
  integrity sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==
671
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
672
  "@tailwindcss/node@4.1.5":
673
  version "4.1.5"
674
  resolved "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.5.tgz"
@@ -679,11 +943,73 @@
679
  lightningcss "1.29.2"
680
  tailwindcss "4.1.5"
681
 
 
 
 
 
 
682
  "@tailwindcss/oxide-darwin-arm64@4.1.5":
683
  version "4.1.5"
684
  resolved "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.5.tgz"
685
  integrity sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==
686
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
687
  "@tailwindcss/oxide@4.1.5":
688
  version "4.1.5"
689
  resolved "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.5.tgz"
@@ -728,6 +1054,13 @@
728
  resolved "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-25.0.0.tgz"
729
  integrity sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==
730
 
 
 
 
 
 
 
 
731
  "@types/babel__core@^7.20.5":
732
  version "7.20.5"
733
  resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
@@ -761,7 +1094,7 @@
761
  dependencies:
762
  "@babel/types" "^7.20.7"
763
 
764
- "@types/estree@^1.0.6", "@types/estree@1.0.7":
765
  version "1.0.7"
766
  resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz"
767
  integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==
@@ -771,19 +1104,19 @@
771
  resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
772
  integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
773
 
774
- "@types/node@^18.0.0 || ^20.0.0 || >=22.0.0", "@types/node@^22.15.3":
775
  version "22.15.3"
776
  resolved "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz"
777
  integrity sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==
778
  dependencies:
779
  undici-types "~6.21.0"
780
 
781
- "@types/react-dom@*", "@types/react-dom@^19.0.4":
782
  version "19.1.3"
783
  resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.3.tgz"
784
  integrity sha512-rJXC08OG0h3W6wDMFxQrZF00Kq6qQvw0djHRdzl3U5DnIERz0MRce3WVc7IS6JYBwtaP/DwYtRRjVlvivNveKg==
785
 
786
- "@types/react@*", "@types/react@^19.0.0", "@types/react@^19.0.10":
787
  version "19.1.2"
788
  resolved "https://registry.npmjs.org/@types/react/-/react-19.1.2.tgz"
789
  integrity sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==
@@ -805,7 +1138,7 @@
805
  natural-compare "^1.4.0"
806
  ts-api-utils "^2.0.1"
807
 
808
- "@typescript-eslint/parser@^8.0.0 || ^8.0.0-alpha.0", "@typescript-eslint/parser@8.31.1":
809
  version "8.31.1"
810
  resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.1.tgz"
811
  integrity sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==
@@ -882,17 +1215,6 @@
882
  "@types/babel__core" "^7.20.5"
883
  react-refresh "^0.17.0"
884
 
885
- "3d-force-graph@^1.76":
886
- version "1.77.0"
887
- resolved "https://registry.npmjs.org/3d-force-graph/-/3d-force-graph-1.77.0.tgz"
888
- integrity sha512-w2MlrCeMJxXwhz5gtRZ7mLU4xW5DD2U6VSEfFv8pvnvSNPYPuAIKjbJoZekfv7yFmMaWnNy/2RfRcgC5oGr2KQ==
889
- dependencies:
890
- accessor-fn "1"
891
- kapsule "^1.16"
892
- three ">=0.118 <1"
893
- three-forcegraph "1"
894
- three-render-objects "^1.35"
895
-
896
  accessor-fn@1:
897
  version "1.5.3"
898
  resolved "https://registry.npmjs.org/accessor-fn/-/accessor-fn-1.5.3.tgz"
@@ -903,7 +1225,7 @@ acorn-jsx@^5.3.2:
903
  resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
904
  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
905
 
906
- "acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8.14.0:
907
  version "8.14.1"
908
  resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz"
909
  integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
@@ -969,7 +1291,7 @@ braces@^3.0.3:
969
  dependencies:
970
  fill-range "^7.1.1"
971
 
972
- browserslist@^4.24.0, "browserslist@>= 4.21.0":
973
  version "4.24.4"
974
  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz"
975
  integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
@@ -1067,7 +1389,7 @@ csstype@^3.0.2:
1067
  resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
1068
  integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
1069
 
1070
- d3-array@^3.2.0, "d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3:
1071
  version "3.2.4"
1072
  resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz"
1073
  integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
@@ -1126,16 +1448,16 @@ d3-delaunay@6:
1126
  dependencies:
1127
  delaunator "5"
1128
 
1129
- "d3-dispatch@1 - 3", d3-dispatch@3:
1130
- version "3.0.1"
1131
- resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz"
1132
- integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
1133
-
1134
  d3-dispatch@1:
1135
  version "1.0.6"
1136
  resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz"
1137
  integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==
1138
 
 
 
 
 
 
1139
  "d3-drag@2 - 3", d3-drag@3:
1140
  version "3.0.0"
1141
  resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz"
@@ -1176,6 +1498,15 @@ d3-fetch@3:
1176
  d3-quadtree "1 - 3"
1177
  d3-timer "1 - 3"
1178
 
 
 
 
 
 
 
 
 
 
1179
  d3-force@^1.0.2:
1180
  version "1.2.1"
1181
  resolved "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz"
@@ -1186,15 +1517,6 @@ d3-force@^1.0.2:
1186
  d3-quadtree "1"
1187
  d3-timer "1"
1188
 
1189
- d3-force@3:
1190
- version "3.0.0"
1191
- resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz"
1192
- integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==
1193
- dependencies:
1194
- d3-dispatch "1 - 3"
1195
- d3-quadtree "1 - 3"
1196
- d3-timer "1 - 3"
1197
-
1198
  "d3-format@1 - 3", d3-format@3:
1199
  version "3.1.0"
1200
  resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz"
@@ -1224,7 +1546,7 @@ d3-octree@1:
1224
  resolved "https://registry.npmjs.org/d3-octree/-/d3-octree-1.1.0.tgz"
1225
  integrity sha512-F8gPlqpP+HwRPMO/8uOu5wjH110+6q4cgJvgJT6vlpy3BEaDIKlTZrgHKZSp/i1InRpVfh4puY/kvL6MxK930A==
1226
 
1227
- d3-path@^3.1.0, "d3-path@1 - 3", d3-path@3:
1228
  version "3.1.0"
1229
  resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz"
1230
  integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==
@@ -1234,16 +1556,16 @@ d3-polygon@3:
1234
  resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz"
1235
  integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==
1236
 
1237
- "d3-quadtree@1 - 3", d3-quadtree@3:
1238
- version "3.0.1"
1239
- resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz"
1240
- integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==
1241
-
1242
  d3-quadtree@1:
1243
  version "1.0.7"
1244
  resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz"
1245
  integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==
1246
 
 
 
 
 
 
1247
  d3-random@3:
1248
  version "3.0.1"
1249
  resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz"
@@ -1294,16 +1616,16 @@ d3-shape@3:
1294
  dependencies:
1295
  d3-array "2 - 3"
1296
 
1297
- "d3-timer@1 - 3", d3-timer@3:
1298
- version "3.0.1"
1299
- resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz"
1300
- integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
1301
-
1302
  d3-timer@1:
1303
  version "1.0.10"
1304
  resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz"
1305
  integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==
1306
 
 
 
 
 
 
1307
  "d3-transition@2 - 3", d3-transition@3:
1308
  version "3.0.1"
1309
  resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz"
@@ -1485,7 +1807,7 @@ eslint-visitor-keys@^4.2.0:
1485
  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz"
1486
  integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
1487
 
1488
- "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^8.57.0 || ^9.0.0", eslint@^9.22.0, eslint@>=8.40:
1489
  version "9.25.1"
1490
  resolved "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz"
1491
  integrity sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==
@@ -1791,7 +2113,7 @@ jerrypick@^1.1.1:
1791
  resolved "https://registry.npmjs.org/jerrypick/-/jerrypick-1.1.2.tgz"
1792
  integrity sha512-YKnxXEekXKzhpf7CLYA0A+oDP8V0OhICNCr5lv96FvSsDEmrb0GKM776JgQvHTMjr7DTTPEVv/1Ciaw0uEWzBA==
1793
 
1794
- jiti@*, jiti@^2.4.2, jiti@>=1.21.0:
1795
  version "2.4.2"
1796
  resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz"
1797
  integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==
@@ -1865,7 +2187,52 @@ lightningcss-darwin-arm64@1.29.2:
1865
  resolved "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz"
1866
  integrity sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==
1867
 
1868
- lightningcss@^1.21.0, lightningcss@1.29.2:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1869
  version "1.29.2"
1870
  resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz"
1871
  integrity sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==
@@ -2067,7 +2434,7 @@ picomatch@^2.3.1:
2067
  resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
2068
  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
2069
 
2070
- "picomatch@^3 || ^4", picomatch@^4.0.2:
2071
  version "4.0.2"
2072
  resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz"
2073
  integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
@@ -2103,7 +2470,7 @@ process@^0.11.10:
2103
  resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
2104
  integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
2105
 
2106
- prop-types@^15.5.10, prop-types@15:
2107
  version "15.8.1"
2108
  resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
2109
  integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
@@ -2122,7 +2489,7 @@ queue-microtask@^1.2.2:
2122
  resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
2123
  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
2124
 
2125
- "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom@^18 || ^19 || ^19.0.0-rc", react-dom@^19.0.0, react-dom@>=16.8.0, "react-dom@0.14.x - 15.x":
2126
  version "19.1.0"
2127
  resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz"
2128
  integrity sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==
@@ -2201,7 +2568,7 @@ react-vis-force@^0.3.1:
2201
  lodash.reduce "^4.6.0"
2202
  prop-types "^15.5.10"
2203
 
2204
- react@*, "react@^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react@^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react@^18 || ^19 || ^19.0.0-rc", react@^19.0.0, react@^19.1.0, react@>=16.13.1, react@>=16.8.0, "react@0.14.x - 15.x":
2205
  version "19.1.0"
2206
  resolved "https://registry.npmjs.org/react/-/react-19.1.0.tgz"
2207
  integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==
@@ -2316,7 +2683,7 @@ tailwind-merge@^3.2.0:
2316
  resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz"
2317
  integrity sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==
2318
 
2319
- tailwindcss@^4.1.5, tailwindcss@4.1.5:
2320
  version "4.1.5"
2321
  resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz"
2322
  integrity sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==
@@ -2353,12 +2720,12 @@ three-render-objects@^1.35:
2353
  kapsule "^1.16"
2354
  polished "4"
2355
 
2356
- "three@>=0.118 <1", three@>=0.118.3, three@>=0.168:
2357
  version "0.176.0"
2358
  resolved "https://registry.npmjs.org/three/-/three-0.176.0.tgz"
2359
  integrity sha512-PWRKYWQo23ojf9oZSlRGH8K09q7nRSWx6LY/HF/UUrMdYgN9i1e2OwJYHoQjwc6HF/4lvvYLC5YC1X8UJL2ZpA==
2360
 
2361
- tinycolor2@^1.6.0, tinycolor2@1:
2362
  version "1.6.0"
2363
  resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz"
2364
  integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==
@@ -2383,7 +2750,7 @@ ts-api-utils@^2.0.1:
2383
  resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz"
2384
  integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==
2385
 
2386
- tslib@^2.0.0, tslib@^2.1.0:
2387
  version "2.8.1"
2388
  resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
2389
  integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
@@ -2409,7 +2776,7 @@ typescript-eslint@^8.26.1:
2409
  "@typescript-eslint/parser" "8.31.1"
2410
  "@typescript-eslint/utils" "8.31.1"
2411
 
2412
- typescript@>=4.8.4, "typescript@>=4.8.4 <5.9.0", typescript@~5.7.2:
2413
  version "5.7.3"
2414
  resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz"
2415
  integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==
@@ -2449,7 +2816,7 @@ use-sidecar@^1.1.3:
2449
  detect-node-es "^1.1.0"
2450
  tslib "^2.0.0"
2451
 
2452
- "vite@^4.2.0 || ^5.0.0 || ^6.0.0", "vite@^5.2.0 || ^6", vite@^6.3.1:
2453
  version "6.3.4"
2454
  resolved "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz"
2455
  integrity sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==
 
2
  # yarn lockfile v1
3
 
4
 
5
+ "3d-force-graph@^1.76":
6
+ version "1.77.0"
7
+ resolved "https://registry.npmjs.org/3d-force-graph/-/3d-force-graph-1.77.0.tgz"
8
+ integrity sha512-w2MlrCeMJxXwhz5gtRZ7mLU4xW5DD2U6VSEfFv8pvnvSNPYPuAIKjbJoZekfv7yFmMaWnNy/2RfRcgC5oGr2KQ==
9
+ dependencies:
10
+ accessor-fn "1"
11
+ kapsule "^1.16"
12
+ three ">=0.118 <1"
13
+ three-forcegraph "1"
14
+ three-render-objects "^1.35"
15
+
16
  "@ampproject/remapping@^2.2.0":
17
  version "2.3.0"
18
  resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz"
 
35
  resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.1.tgz"
36
  integrity sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==
37
 
38
+ "@babel/core@^7.26.10":
39
  version "7.27.1"
40
  resolved "https://registry.npmjs.org/@babel/core/-/core-7.27.1.tgz"
41
  integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==
 
179
  "@babel/helper-string-parser" "^7.27.1"
180
  "@babel/helper-validator-identifier" "^7.27.1"
181
 
182
+ "@emnapi/core@^1.4.0", "@emnapi/core@^1.4.3":
183
+ version "1.4.3"
184
+ resolved "https://registry.yarnpkg.com/@emnapi/core/-/core-1.4.3.tgz#9ac52d2d5aea958f67e52c40a065f51de59b77d6"
185
+ integrity sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==
186
+ dependencies:
187
+ "@emnapi/wasi-threads" "1.0.2"
188
+ tslib "^2.4.0"
189
+
190
+ "@emnapi/runtime@^1.4.0", "@emnapi/runtime@^1.4.3":
191
+ version "1.4.3"
192
+ resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-1.4.3.tgz#c0564665c80dc81c448adac23f9dfbed6c838f7d"
193
+ integrity sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==
194
+ dependencies:
195
+ tslib "^2.4.0"
196
+
197
+ "@emnapi/wasi-threads@1.0.2", "@emnapi/wasi-threads@^1.0.2":
198
+ version "1.0.2"
199
+ resolved "https://registry.yarnpkg.com/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz#977f44f844eac7d6c138a415a123818c655f874c"
200
+ integrity sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==
201
+ dependencies:
202
+ tslib "^2.4.0"
203
+
204
+ "@esbuild/aix-ppc64@0.25.3":
205
+ version "0.25.3"
206
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.3.tgz#014180d9a149cffd95aaeead37179433f5ea5437"
207
+ integrity sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==
208
+
209
+ "@esbuild/android-arm64@0.25.3":
210
+ version "0.25.3"
211
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.3.tgz#649e47e04ddb24a27dc05c395724bc5f4c55cbfe"
212
+ integrity sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==
213
+
214
+ "@esbuild/android-arm@0.25.3":
215
+ version "0.25.3"
216
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.3.tgz#8a0f719c8dc28a4a6567ef7328c36ea85f568ff4"
217
+ integrity sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==
218
+
219
+ "@esbuild/android-x64@0.25.3":
220
+ version "0.25.3"
221
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.3.tgz#e2ab182d1fd06da9bef0784a13c28a7602d78009"
222
+ integrity sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==
223
+
224
  "@esbuild/darwin-arm64@0.25.3":
225
  version "0.25.3"
226
  resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.3.tgz"
227
  integrity sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==
228
 
229
+ "@esbuild/darwin-x64@0.25.3":
230
+ version "0.25.3"
231
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.3.tgz#d8c5342ec1a4bf4b1915643dfe031ba4b173a87a"
232
+ integrity sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==
233
+
234
+ "@esbuild/freebsd-arm64@0.25.3":
235
+ version "0.25.3"
236
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.3.tgz#9f7d789e2eb7747d4868817417cc968ffa84f35b"
237
+ integrity sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==
238
+
239
+ "@esbuild/freebsd-x64@0.25.3":
240
+ version "0.25.3"
241
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.3.tgz#8ad35c51d084184a8e9e76bb4356e95350a64709"
242
+ integrity sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==
243
+
244
+ "@esbuild/linux-arm64@0.25.3":
245
+ version "0.25.3"
246
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.3.tgz#3af0da3d9186092a9edd4e28fa342f57d9e3cd30"
247
+ integrity sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==
248
+
249
+ "@esbuild/linux-arm@0.25.3":
250
+ version "0.25.3"
251
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.3.tgz#e91cafa95e4474b3ae3d54da12e006b782e57225"
252
+ integrity sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==
253
+
254
+ "@esbuild/linux-ia32@0.25.3":
255
+ version "0.25.3"
256
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.3.tgz#81025732d85b68ee510161b94acdf7e3007ea177"
257
+ integrity sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==
258
+
259
+ "@esbuild/linux-loong64@0.25.3":
260
+ version "0.25.3"
261
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.3.tgz#3c744e4c8d5e1148cbe60a71a11b58ed8ee5deb8"
262
+ integrity sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==
263
+
264
+ "@esbuild/linux-mips64el@0.25.3":
265
+ version "0.25.3"
266
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.3.tgz#1dfe2a5d63702db9034cc6b10b3087cc0424ec26"
267
+ integrity sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==
268
+
269
+ "@esbuild/linux-ppc64@0.25.3":
270
+ version "0.25.3"
271
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.3.tgz#2e85d9764c04a1ebb346dc0813ea05952c9a5c56"
272
+ integrity sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==
273
+
274
+ "@esbuild/linux-riscv64@0.25.3":
275
+ version "0.25.3"
276
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.3.tgz#a9ea3334556b09f85ccbfead58c803d305092415"
277
+ integrity sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==
278
+
279
+ "@esbuild/linux-s390x@0.25.3":
280
+ version "0.25.3"
281
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.3.tgz#f6a7cb67969222b200974de58f105dfe8e99448d"
282
+ integrity sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==
283
+
284
+ "@esbuild/linux-x64@0.25.3":
285
+ version "0.25.3"
286
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.3.tgz#a237d3578ecdd184a3066b1f425e314ade0f8033"
287
+ integrity sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==
288
+
289
+ "@esbuild/netbsd-arm64@0.25.3":
290
+ version "0.25.3"
291
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.3.tgz#4c15c68d8149614ddb6a56f9c85ae62ccca08259"
292
+ integrity sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==
293
+
294
+ "@esbuild/netbsd-x64@0.25.3":
295
+ version "0.25.3"
296
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.3.tgz#12f6856f8c54c2d7d0a8a64a9711c01a743878d5"
297
+ integrity sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==
298
+
299
+ "@esbuild/openbsd-arm64@0.25.3":
300
+ version "0.25.3"
301
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.3.tgz#ca078dad4a34df192c60233b058db2ca3d94bc5c"
302
+ integrity sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==
303
+
304
+ "@esbuild/openbsd-x64@0.25.3":
305
+ version "0.25.3"
306
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.3.tgz#c9178adb60e140e03a881d0791248489c79f95b2"
307
+ integrity sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==
308
+
309
+ "@esbuild/sunos-x64@0.25.3":
310
+ version "0.25.3"
311
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.3.tgz#03765eb6d4214ff27e5230af779e80790d1ee09f"
312
+ integrity sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==
313
+
314
+ "@esbuild/win32-arm64@0.25.3":
315
+ version "0.25.3"
316
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.3.tgz#f1c867bd1730a9b8dfc461785ec6462e349411ea"
317
+ integrity sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==
318
+
319
+ "@esbuild/win32-ia32@0.25.3":
320
+ version "0.25.3"
321
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.3.tgz#77491f59ef6c9ddf41df70670d5678beb3acc322"
322
+ integrity sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==
323
+
324
+ "@esbuild/win32-x64@0.25.3":
325
+ version "0.25.3"
326
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.3.tgz#b17a2171f9074df9e91bfb07ef99a892ac06412a"
327
+ integrity sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==
328
+
329
  "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
330
  version "4.6.1"
331
  resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.6.1.tgz"
 
374
  minimatch "^3.1.2"
375
  strip-json-comments "^3.1.1"
376
 
377
+ "@eslint/js@9.25.1", "@eslint/js@^9.22.0":
378
  version "9.25.1"
379
  resolved "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz"
380
  integrity sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==
 
509
  "@jridgewell/resolve-uri" "^3.1.0"
510
  "@jridgewell/sourcemap-codec" "^1.4.14"
511
 
512
+ "@napi-rs/wasm-runtime@^0.2.9":
513
+ version "0.2.9"
514
+ resolved "https://registry.yarnpkg.com/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.9.tgz#7278122cf94f3b36d8170a8eee7d85356dfa6a96"
515
+ integrity sha512-OKRBiajrrxB9ATokgEQoG87Z25c67pCpYcCwmXYX8PBftC9pBfN18gnm/fh1wurSLEKIAt+QRFLFCQISrb66Jg==
516
+ dependencies:
517
+ "@emnapi/core" "^1.4.0"
518
+ "@emnapi/runtime" "^1.4.0"
519
+ "@tybys/wasm-util" "^0.9.0"
520
+
521
  "@nodelib/fs.scandir@2.1.5":
522
  version "2.1.5"
523
  resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
 
526
  "@nodelib/fs.stat" "2.0.5"
527
  run-parallel "^1.1.9"
528
 
529
+ "@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
530
  version "2.0.5"
531
  resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
532
  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
 
566
  "@radix-ui/react-primitive" "2.1.0"
567
  "@radix-ui/react-slot" "1.2.0"
568
 
569
+ "@radix-ui/react-compose-refs@1.1.2", "@radix-ui/react-compose-refs@^1.1.1":
570
  version "1.1.2"
571
  resolved "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz"
572
  integrity sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==
 
626
  "@radix-ui/react-primitive" "2.1.0"
627
  "@radix-ui/react-use-callback-ref" "1.1.1"
628
 
629
+ "@radix-ui/react-id@1.1.1", "@radix-ui/react-id@^1.1.0":
630
  version "1.1.1"
631
  resolved "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz"
632
  integrity sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==
 
693
  "@radix-ui/react-compose-refs" "1.1.2"
694
  "@radix-ui/react-use-layout-effect" "1.1.1"
695
 
696
+ "@radix-ui/react-primitive@2.1.0", "@radix-ui/react-primitive@^2.0.2":
697
  version "2.1.0"
698
  resolved "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.0.tgz"
699
  integrity sha512-/J/FhLdK0zVcILOwt5g+dH4KnkonCtkVJsa2G6JmvbbtZfBEI1gMsO3QMjseL4F/SwfAMt1Vc/0XKYKq+xJ1sw==
 
742
  aria-hidden "^1.2.4"
743
  react-remove-scroll "^2.6.3"
744
 
745
+ "@radix-ui/react-slot@1.2.0":
746
  version "1.2.0"
747
  resolved "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.0.tgz"
748
  integrity sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==
749
  dependencies:
750
  "@radix-ui/react-compose-refs" "1.1.2"
751
 
752
+ "@radix-ui/react-slot@^1.2.0":
753
+ version "1.2.0"
754
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.2.0.tgz#57727fc186ddb40724ccfbe294e1a351d92462ba"
755
+ integrity sha512-ujc+V6r0HNDviYqIK3rW4ffgYiZ8g5DEHrGJVk4x7kTlLXRDILnKX9vAUYeIsLOoDpDJ0ujpqMkjH4w2ofuo6w==
756
+ dependencies:
757
+ "@radix-ui/react-compose-refs" "1.1.2"
758
+
759
  "@radix-ui/react-tabs@^1.1.9":
760
  version "1.1.9"
761
  resolved "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.9.tgz"
 
833
  resolved "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz"
834
  integrity sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==
835
 
836
+ "@rollup/rollup-android-arm-eabi@4.40.1":
837
+ version "4.40.1"
838
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.1.tgz#e1562d360bca73c7bef6feef86098de3a2f1d442"
839
+ integrity sha512-kxz0YeeCrRUHz3zyqvd7n+TVRlNyTifBsmnmNPtk3hQURUyG9eAB+usz6DAwagMusjx/zb3AjvDUvhFGDAexGw==
840
+
841
+ "@rollup/rollup-android-arm64@4.40.1":
842
+ version "4.40.1"
843
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.1.tgz#37ba63940211673e15dcc5f469a78e34276dbca7"
844
+ integrity sha512-PPkxTOisoNC6TpnDKatjKkjRMsdaWIhyuMkA4UsBXT9WEZY4uHezBTjs6Vl4PbqQQeu6oION1w2voYZv9yquCw==
845
+
846
  "@rollup/rollup-darwin-arm64@4.40.1":
847
  version "4.40.1"
848
  resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.1.tgz"
849
  integrity sha512-VWXGISWFY18v/0JyNUy4A46KCFCb9NVsH+1100XP31lud+TzlezBbz24CYzbnA4x6w4hx+NYCXDfnvDVO6lcAA==
850
 
851
+ "@rollup/rollup-darwin-x64@4.40.1":
852
+ version "4.40.1"
853
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.1.tgz#5e22dab3232b1e575d930ce891abb18fe19c58c9"
854
+ integrity sha512-nIwkXafAI1/QCS7pxSpv/ZtFW6TXcNUEHAIA9EIyw5OzxJZQ1YDrX+CL6JAIQgZ33CInl1R6mHet9Y/UZTg2Bw==
855
+
856
+ "@rollup/rollup-freebsd-arm64@4.40.1":
857
+ version "4.40.1"
858
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.1.tgz#04c892d9ff864d66e31419634726ab0bebb33707"
859
+ integrity sha512-BdrLJ2mHTrIYdaS2I99mriyJfGGenSaP+UwGi1kB9BLOCu9SR8ZpbkmmalKIALnRw24kM7qCN0IOm6L0S44iWw==
860
+
861
+ "@rollup/rollup-freebsd-x64@4.40.1":
862
+ version "4.40.1"
863
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.1.tgz#f4b1e091f7cf5afc9e3a029d70128ad56409ecfb"
864
+ integrity sha512-VXeo/puqvCG8JBPNZXZf5Dqq7BzElNJzHRRw3vjBE27WujdzuOPecDPc/+1DcdcTptNBep3861jNq0mYkT8Z6Q==
865
+
866
+ "@rollup/rollup-linux-arm-gnueabihf@4.40.1":
867
+ version "4.40.1"
868
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.1.tgz#c8814bb5ce047a81b1fe4a33628dfd4ac52bd864"
869
+ integrity sha512-ehSKrewwsESPt1TgSE/na9nIhWCosfGSFqv7vwEtjyAqZcvbGIg4JAcV7ZEh2tfj/IlfBeZjgOXm35iOOjadcg==
870
+
871
+ "@rollup/rollup-linux-arm-musleabihf@4.40.1":
872
+ version "4.40.1"
873
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.1.tgz#5b4e7bd83cbebbf5ffe958802dcfd4ee34bf73a3"
874
+ integrity sha512-m39iO/aaurh5FVIu/F4/Zsl8xppd76S4qoID8E+dSRQvTyZTOI2gVk3T4oqzfq1PtcvOfAVlwLMK3KRQMaR8lg==
875
+
876
+ "@rollup/rollup-linux-arm64-gnu@4.40.1":
877
+ version "4.40.1"
878
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.1.tgz#141c848e53cee011e82a11777b8a51f1b3e8d77c"
879
+ integrity sha512-Y+GHnGaku4aVLSgrT0uWe2o2Rq8te9hi+MwqGF9r9ORgXhmHK5Q71N757u0F8yU1OIwUIFy6YiJtKjtyktk5hg==
880
+
881
+ "@rollup/rollup-linux-arm64-musl@4.40.1":
882
+ version "4.40.1"
883
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.1.tgz#22ebeaf2fa301aa4aa6c84b760e6cd1d1ac7eb1e"
884
+ integrity sha512-jEwjn3jCA+tQGswK3aEWcD09/7M5wGwc6+flhva7dsQNRZZTe30vkalgIzV4tjkopsTS9Jd7Y1Bsj6a4lzz8gQ==
885
+
886
+ "@rollup/rollup-linux-loongarch64-gnu@4.40.1":
887
+ version "4.40.1"
888
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.1.tgz#20b77dc78e622f5814ff8e90c14c938ceb8043bc"
889
+ integrity sha512-ySyWikVhNzv+BV/IDCsrraOAZ3UaC8SZB67FZlqVwXwnFhPihOso9rPOxzZbjp81suB1O2Topw+6Ug3JNegejQ==
890
+
891
+ "@rollup/rollup-linux-powerpc64le-gnu@4.40.1":
892
+ version "4.40.1"
893
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.1.tgz#2c90f99c987ef1198d4f8d15d754c286e1f07b13"
894
+ integrity sha512-BvvA64QxZlh7WZWqDPPdt0GH4bznuL6uOO1pmgPnnv86rpUpc8ZxgZwcEgXvo02GRIZX1hQ0j0pAnhwkhwPqWg==
895
+
896
+ "@rollup/rollup-linux-riscv64-gnu@4.40.1":
897
+ version "4.40.1"
898
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.1.tgz#9336fd5e47d7f4760d02aa85f76976176eef53ca"
899
+ integrity sha512-EQSP+8+1VuSulm9RKSMKitTav89fKbHymTf25n5+Yr6gAPZxYWpj3DzAsQqoaHAk9YX2lwEyAf9S4W8F4l3VBQ==
900
+
901
+ "@rollup/rollup-linux-riscv64-musl@4.40.1":
902
+ version "4.40.1"
903
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.1.tgz#d75b4d54d46439bb5c6c13762788f57e798f5670"
904
+ integrity sha512-n/vQ4xRZXKuIpqukkMXZt9RWdl+2zgGNx7Uda8NtmLJ06NL8jiHxUawbwC+hdSq1rrw/9CghCpEONor+l1e2gA==
905
+
906
+ "@rollup/rollup-linux-s390x-gnu@4.40.1":
907
+ version "4.40.1"
908
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.1.tgz#e9f09b802f1291839247399028beaef9ce034c81"
909
+ integrity sha512-h8d28xzYb98fMQKUz0w2fMc1XuGzLLjdyxVIbhbil4ELfk5/orZlSTpF/xdI9C8K0I8lCkq+1En2RJsawZekkg==
910
+
911
+ "@rollup/rollup-linux-x64-gnu@4.40.1":
912
+ version "4.40.1"
913
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.1.tgz#0413169dc00470667dea8575c1129d4e7a73eb29"
914
+ integrity sha512-XiK5z70PEFEFqcNj3/zRSz/qX4bp4QIraTy9QjwJAb/Z8GM7kVUsD0Uk8maIPeTyPCP03ChdI+VVmJriKYbRHQ==
915
+
916
+ "@rollup/rollup-linux-x64-musl@4.40.1":
917
+ version "4.40.1"
918
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.1.tgz#c76fd593323c60ea219439a00da6c6d33ffd0ea6"
919
+ integrity sha512-2BRORitq5rQ4Da9blVovzNCMaUlyKrzMSvkVR0D4qPuOy/+pMCrh1d7o01RATwVy+6Fa1WBw+da7QPeLWU/1mQ==
920
+
921
+ "@rollup/rollup-win32-arm64-msvc@4.40.1":
922
+ version "4.40.1"
923
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.1.tgz#c7724c386eed0bda5ae7143e4081c1910cab349b"
924
+ integrity sha512-b2bcNm9Kbde03H+q+Jjw9tSfhYkzrDUf2d5MAd1bOJuVplXvFhWz7tRtWvD8/ORZi7qSCy0idW6tf2HgxSXQSg==
925
+
926
+ "@rollup/rollup-win32-ia32-msvc@4.40.1":
927
+ version "4.40.1"
928
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.1.tgz#7749e1b65cb64fe6d41ad1ad9e970a0ccc8ac350"
929
+ integrity sha512-DfcogW8N7Zg7llVEfpqWMZcaErKfsj9VvmfSyRjCyo4BI3wPEfrzTtJkZG6gKP/Z92wFm6rz2aDO7/JfiR/whA==
930
+
931
+ "@rollup/rollup-win32-x64-msvc@4.40.1":
932
+ version "4.40.1"
933
+ resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.1.tgz#8078b71fe0d5825dcbf83d52a7dc858b39da165c"
934
+ integrity sha512-ECyOuDeH3C1I8jH2MK1RtBJW+YPMvSfT0a5NN0nHfQYnDSJ6tUiZH3gzwVP5/Kfh/+Tt7tpWVF9LXNTnhTJ3kA==
935
+
936
  "@tailwindcss/node@4.1.5":
937
  version "4.1.5"
938
  resolved "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.5.tgz"
 
943
  lightningcss "1.29.2"
944
  tailwindcss "4.1.5"
945
 
946
+ "@tailwindcss/oxide-android-arm64@4.1.5":
947
+ version "4.1.5"
948
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.5.tgz#c0f8bfbf583990a4eb1d2a141272ad1172c59c03"
949
+ integrity sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw==
950
+
951
  "@tailwindcss/oxide-darwin-arm64@4.1.5":
952
  version "4.1.5"
953
  resolved "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.5.tgz"
954
  integrity sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==
955
 
956
+ "@tailwindcss/oxide-darwin-x64@4.1.5":
957
+ version "4.1.5"
958
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.5.tgz#81559aac8f0a3fe746724179a0aaf80cf90db690"
959
+ integrity sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q==
960
+
961
+ "@tailwindcss/oxide-freebsd-x64@4.1.5":
962
+ version "4.1.5"
963
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.5.tgz#2821586b9e865f4857f7f82fe52ff1bc64f00cd2"
964
+ integrity sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg==
965
+
966
+ "@tailwindcss/oxide-linux-arm-gnueabihf@4.1.5":
967
+ version "4.1.5"
968
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.5.tgz#b01ec9f6f1ab885e8809aed6c96cc1344eb46195"
969
+ integrity sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg==
970
+
971
+ "@tailwindcss/oxide-linux-arm64-gnu@4.1.5":
972
+ version "4.1.5"
973
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.5.tgz#31261910d463fee74ff747f9d01389157245d8ed"
974
+ integrity sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ==
975
+
976
+ "@tailwindcss/oxide-linux-arm64-musl@4.1.5":
977
+ version "4.1.5"
978
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.5.tgz#81cc66a53737c7a54409d080c1b96030ed0470d3"
979
+ integrity sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA==
980
+
981
+ "@tailwindcss/oxide-linux-x64-gnu@4.1.5":
982
+ version "4.1.5"
983
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.5.tgz#5998319b120ab795929553ad41fbd874ed35fcae"
984
+ integrity sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA==
985
+
986
+ "@tailwindcss/oxide-linux-x64-musl@4.1.5":
987
+ version "4.1.5"
988
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.5.tgz#2c6158b12b88325b24ae59235b960c0aeace3d97"
989
+ integrity sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g==
990
+
991
+ "@tailwindcss/oxide-wasm32-wasi@4.1.5":
992
+ version "4.1.5"
993
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.5.tgz#6bceca7bd7b387936b8fe292be3ab3c305da1699"
994
+ integrity sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ==
995
+ dependencies:
996
+ "@emnapi/core" "^1.4.3"
997
+ "@emnapi/runtime" "^1.4.3"
998
+ "@emnapi/wasi-threads" "^1.0.2"
999
+ "@napi-rs/wasm-runtime" "^0.2.9"
1000
+ "@tybys/wasm-util" "^0.9.0"
1001
+ tslib "^2.8.0"
1002
+
1003
+ "@tailwindcss/oxide-win32-arm64-msvc@4.1.5":
1004
+ version "4.1.5"
1005
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.5.tgz#ebece1488e280f4407324842489059b1be01aaa9"
1006
+ integrity sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA==
1007
+
1008
+ "@tailwindcss/oxide-win32-x64-msvc@4.1.5":
1009
+ version "4.1.5"
1010
+ resolved "https://registry.yarnpkg.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.5.tgz#0bb778f4b857eb26d5cfe07fe5e324afe2834a1d"
1011
+ integrity sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q==
1012
+
1013
  "@tailwindcss/oxide@4.1.5":
1014
  version "4.1.5"
1015
  resolved "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.5.tgz"
 
1054
  resolved "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-25.0.0.tgz"
1055
  integrity sha512-XKLA6syeBUaPzx4j3qwMqzzq+V4uo72BnlbOjmuljLrRqdsd3qnzvZZoxvMHZ23ndsRS4aufU6JOZYpCbU6T1A==
1056
 
1057
+ "@tybys/wasm-util@^0.9.0":
1058
+ version "0.9.0"
1059
+ resolved "https://registry.yarnpkg.com/@tybys/wasm-util/-/wasm-util-0.9.0.tgz#3e75eb00604c8d6db470bf18c37b7d984a0e3355"
1060
+ integrity sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==
1061
+ dependencies:
1062
+ tslib "^2.4.0"
1063
+
1064
  "@types/babel__core@^7.20.5":
1065
  version "7.20.5"
1066
  resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
 
1094
  dependencies:
1095
  "@babel/types" "^7.20.7"
1096
 
1097
+ "@types/estree@1.0.7", "@types/estree@^1.0.6":
1098
  version "1.0.7"
1099
  resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz"
1100
  integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==
 
1104
  resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
1105
  integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
1106
 
1107
+ "@types/node@^22.15.3":
1108
  version "22.15.3"
1109
  resolved "https://registry.npmjs.org/@types/node/-/node-22.15.3.tgz"
1110
  integrity sha512-lX7HFZeHf4QG/J7tBZqrCAXwz9J5RD56Y6MpP0eJkka8p+K0RY/yBTW7CYFJ4VGCclxqOLKmiGP5juQc6MKgcw==
1111
  dependencies:
1112
  undici-types "~6.21.0"
1113
 
1114
+ "@types/react-dom@^19.0.4":
1115
  version "19.1.3"
1116
  resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.3.tgz"
1117
  integrity sha512-rJXC08OG0h3W6wDMFxQrZF00Kq6qQvw0djHRdzl3U5DnIERz0MRce3WVc7IS6JYBwtaP/DwYtRRjVlvivNveKg==
1118
 
1119
+ "@types/react@^19.0.10":
1120
  version "19.1.2"
1121
  resolved "https://registry.npmjs.org/@types/react/-/react-19.1.2.tgz"
1122
  integrity sha512-oxLPMytKchWGbnQM9O7D67uPa9paTNxO7jVoNMXgkkErULBPhPARCfkKL9ytcIJJRGjbsVwW4ugJzyFFvm/Tiw==
 
1138
  natural-compare "^1.4.0"
1139
  ts-api-utils "^2.0.1"
1140
 
1141
+ "@typescript-eslint/parser@8.31.1":
1142
  version "8.31.1"
1143
  resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.1.tgz"
1144
  integrity sha512-oU/OtYVydhXnumd0BobL9rkJg7wFJ9bFFPmSmB/bf/XWN85hlViji59ko6bSKBXyseT9V8l+CN1nwmlbiN0G7Q==
 
1215
  "@types/babel__core" "^7.20.5"
1216
  react-refresh "^0.17.0"
1217
 
 
 
 
 
 
 
 
 
 
 
 
1218
  accessor-fn@1:
1219
  version "1.5.3"
1220
  resolved "https://registry.npmjs.org/accessor-fn/-/accessor-fn-1.5.3.tgz"
 
1225
  resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
1226
  integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
1227
 
1228
+ acorn@^8.14.0:
1229
  version "8.14.1"
1230
  resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz"
1231
  integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==
 
1291
  dependencies:
1292
  fill-range "^7.1.1"
1293
 
1294
+ browserslist@^4.24.0:
1295
  version "4.24.4"
1296
  resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz"
1297
  integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
 
1389
  resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz"
1390
  integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
1391
 
1392
+ "d3-array@1 - 3", "d3-array@2 - 3", "d3-array@2.10.0 - 3", "d3-array@2.5.0 - 3", d3-array@3, d3-array@^3.2.0:
1393
  version "3.2.4"
1394
  resolved "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz"
1395
  integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==
 
1448
  dependencies:
1449
  delaunator "5"
1450
 
 
 
 
 
 
1451
  d3-dispatch@1:
1452
  version "1.0.6"
1453
  resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz"
1454
  integrity sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==
1455
 
1456
+ "d3-dispatch@1 - 3", d3-dispatch@3:
1457
+ version "3.0.1"
1458
+ resolved "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz"
1459
+ integrity sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==
1460
+
1461
  "d3-drag@2 - 3", d3-drag@3:
1462
  version "3.0.0"
1463
  resolved "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz"
 
1498
  d3-quadtree "1 - 3"
1499
  d3-timer "1 - 3"
1500
 
1501
+ d3-force@3:
1502
+ version "3.0.0"
1503
+ resolved "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz"
1504
+ integrity sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==
1505
+ dependencies:
1506
+ d3-dispatch "1 - 3"
1507
+ d3-quadtree "1 - 3"
1508
+ d3-timer "1 - 3"
1509
+
1510
  d3-force@^1.0.2:
1511
  version "1.2.1"
1512
  resolved "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz"
 
1517
  d3-quadtree "1"
1518
  d3-timer "1"
1519
 
 
 
 
 
 
 
 
 
 
1520
  "d3-format@1 - 3", d3-format@3:
1521
  version "3.1.0"
1522
  resolved "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz"
 
1546
  resolved "https://registry.npmjs.org/d3-octree/-/d3-octree-1.1.0.tgz"
1547
  integrity sha512-F8gPlqpP+HwRPMO/8uOu5wjH110+6q4cgJvgJT6vlpy3BEaDIKlTZrgHKZSp/i1InRpVfh4puY/kvL6MxK930A==
1548
 
1549
+ "d3-path@1 - 3", d3-path@3, d3-path@^3.1.0:
1550
  version "3.1.0"
1551
  resolved "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz"
1552
  integrity sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==
 
1556
  resolved "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz"
1557
  integrity sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==
1558
 
 
 
 
 
 
1559
  d3-quadtree@1:
1560
  version "1.0.7"
1561
  resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz"
1562
  integrity sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==
1563
 
1564
+ "d3-quadtree@1 - 3", d3-quadtree@3:
1565
+ version "3.0.1"
1566
+ resolved "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz"
1567
+ integrity sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==
1568
+
1569
  d3-random@3:
1570
  version "3.0.1"
1571
  resolved "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz"
 
1616
  dependencies:
1617
  d3-array "2 - 3"
1618
 
 
 
 
 
 
1619
  d3-timer@1:
1620
  version "1.0.10"
1621
  resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz"
1622
  integrity sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==
1623
 
1624
+ "d3-timer@1 - 3", d3-timer@3:
1625
+ version "3.0.1"
1626
+ resolved "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz"
1627
+ integrity sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==
1628
+
1629
  "d3-transition@2 - 3", d3-transition@3:
1630
  version "3.0.1"
1631
  resolved "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz"
 
1807
  resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz"
1808
  integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
1809
 
1810
+ eslint@^9.22.0:
1811
  version "9.25.1"
1812
  resolved "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz"
1813
  integrity sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==
 
2113
  resolved "https://registry.npmjs.org/jerrypick/-/jerrypick-1.1.2.tgz"
2114
  integrity sha512-YKnxXEekXKzhpf7CLYA0A+oDP8V0OhICNCr5lv96FvSsDEmrb0GKM776JgQvHTMjr7DTTPEVv/1Ciaw0uEWzBA==
2115
 
2116
+ jiti@^2.4.2:
2117
  version "2.4.2"
2118
  resolved "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz"
2119
  integrity sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==
 
2187
  resolved "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.29.2.tgz"
2188
  integrity sha512-cK/eMabSViKn/PG8U/a7aCorpeKLMlK0bQeNHmdb7qUnBkNPnL+oV5DjJUo0kqWsJUapZsM4jCfYItbqBDvlcA==
2189
 
2190
+ lightningcss-darwin-x64@1.29.2:
2191
+ version "1.29.2"
2192
+ resolved "https://registry.yarnpkg.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.29.2.tgz#891b6f9e57682d794223c33463ca66d3af3fb038"
2193
+ integrity sha512-j5qYxamyQw4kDXX5hnnCKMf3mLlHvG44f24Qyi2965/Ycz829MYqjrVg2H8BidybHBp9kom4D7DR5VqCKDXS0w==
2194
+
2195
+ lightningcss-freebsd-x64@1.29.2:
2196
+ version "1.29.2"
2197
+ resolved "https://registry.yarnpkg.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.29.2.tgz#8a95f9ab73b2b2b0beefe1599fafa8b058938495"
2198
+ integrity sha512-wDk7M2tM78Ii8ek9YjnY8MjV5f5JN2qNVO+/0BAGZRvXKtQrBC4/cn4ssQIpKIPP44YXw6gFdpUF+Ps+RGsCwg==
2199
+
2200
+ lightningcss-linux-arm-gnueabihf@1.29.2:
2201
+ version "1.29.2"
2202
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.29.2.tgz#5c60bbf92b39d7ed51e363f7b98a7111bf5914a1"
2203
+ integrity sha512-IRUrOrAF2Z+KExdExe3Rz7NSTuuJ2HvCGlMKoquK5pjvo2JY4Rybr+NrKnq0U0hZnx5AnGsuFHjGnNT14w26sg==
2204
+
2205
+ lightningcss-linux-arm64-gnu@1.29.2:
2206
+ version "1.29.2"
2207
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.29.2.tgz#e73d7608c4cce034c3654e5e8b53be74846224de"
2208
+ integrity sha512-KKCpOlmhdjvUTX/mBuaKemp0oeDIBBLFiU5Fnqxh1/DZ4JPZi4evEH7TKoSBFOSOV3J7iEmmBaw/8dpiUvRKlQ==
2209
+
2210
+ lightningcss-linux-arm64-musl@1.29.2:
2211
+ version "1.29.2"
2212
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.29.2.tgz#a95a18d5a909831c092e0a8d2de4b9ac1a8db151"
2213
+ integrity sha512-Q64eM1bPlOOUgxFmoPUefqzY1yV3ctFPE6d/Vt7WzLW4rKTv7MyYNky+FWxRpLkNASTnKQUaiMJ87zNODIrrKQ==
2214
+
2215
+ lightningcss-linux-x64-gnu@1.29.2:
2216
+ version "1.29.2"
2217
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.29.2.tgz#551ca07e565394928642edee92acc042e546cb78"
2218
+ integrity sha512-0v6idDCPG6epLXtBH/RPkHvYx74CVziHo6TMYga8O2EiQApnUPZsbR9nFNrg2cgBzk1AYqEd95TlrsL7nYABQg==
2219
+
2220
+ lightningcss-linux-x64-musl@1.29.2:
2221
+ version "1.29.2"
2222
+ resolved "https://registry.yarnpkg.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.29.2.tgz#2fd164554340831bce50285b57101817850dd258"
2223
+ integrity sha512-rMpz2yawkgGT8RULc5S4WiZopVMOFWjiItBT7aSfDX4NQav6M44rhn5hjtkKzB+wMTRlLLqxkeYEtQ3dd9696w==
2224
+
2225
+ lightningcss-win32-arm64-msvc@1.29.2:
2226
+ version "1.29.2"
2227
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.29.2.tgz#da43ea49fafc5d2de38e016f1a8539d5eed98318"
2228
+ integrity sha512-nL7zRW6evGQqYVu/bKGK+zShyz8OVzsCotFgc7judbt6wnB2KbiKKJwBE4SGoDBQ1O94RjW4asrCjQL4i8Fhbw==
2229
+
2230
+ lightningcss-win32-x64-msvc@1.29.2:
2231
+ version "1.29.2"
2232
+ resolved "https://registry.yarnpkg.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.29.2.tgz#ddefaa099a39b725b2f5bbdcb9fc718435cc9797"
2233
+ integrity sha512-EdIUW3B2vLuHmv7urfzMI/h2fmlnOQBk1xlsDxkN1tCWKjNFjfLhGxYk8C8mzpSfr+A6jFFIi8fU6LbQGsRWjA==
2234
+
2235
+ lightningcss@1.29.2:
2236
  version "1.29.2"
2237
  resolved "https://registry.npmjs.org/lightningcss/-/lightningcss-1.29.2.tgz"
2238
  integrity sha512-6b6gd/RUXKaw5keVdSEtqFVdzWnU5jMxTUjA2bVcMNPLwSQ08Sv/UodBVtETLCn7k4S1Ibxwh7k68IwLZPgKaA==
 
2434
  resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
2435
  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
2436
 
2437
+ picomatch@^4.0.2:
2438
  version "4.0.2"
2439
  resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz"
2440
  integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
 
2470
  resolved "https://registry.npmjs.org/process/-/process-0.11.10.tgz"
2471
  integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
2472
 
2473
+ prop-types@15, prop-types@^15.5.10:
2474
  version "15.8.1"
2475
  resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz"
2476
  integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==
 
2489
  resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
2490
  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
2491
 
2492
+ react-dom@^19.0.0:
2493
  version "19.1.0"
2494
  resolved "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz"
2495
  integrity sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==
 
2568
  lodash.reduce "^4.6.0"
2569
  prop-types "^15.5.10"
2570
 
2571
+ react@^19.0.0:
2572
  version "19.1.0"
2573
  resolved "https://registry.npmjs.org/react/-/react-19.1.0.tgz"
2574
  integrity sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==
 
2683
  resolved "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz"
2684
  integrity sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==
2685
 
2686
+ tailwindcss@4.1.5, tailwindcss@^4.1.5:
2687
  version "4.1.5"
2688
  resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz"
2689
  integrity sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==
 
2720
  kapsule "^1.16"
2721
  polished "4"
2722
 
2723
+ "three@>=0.118 <1":
2724
  version "0.176.0"
2725
  resolved "https://registry.npmjs.org/three/-/three-0.176.0.tgz"
2726
  integrity sha512-PWRKYWQo23ojf9oZSlRGH8K09q7nRSWx6LY/HF/UUrMdYgN9i1e2OwJYHoQjwc6HF/4lvvYLC5YC1X8UJL2ZpA==
2727
 
2728
+ tinycolor2@1, tinycolor2@^1.6.0:
2729
  version "1.6.0"
2730
  resolved "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz"
2731
  integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==
 
2750
  resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz"
2751
  integrity sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==
2752
 
2753
+ tslib@^2.0.0, tslib@^2.1.0, tslib@^2.4.0, tslib@^2.8.0:
2754
  version "2.8.1"
2755
  resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz"
2756
  integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
 
2776
  "@typescript-eslint/parser" "8.31.1"
2777
  "@typescript-eslint/utils" "8.31.1"
2778
 
2779
+ typescript@~5.7.2:
2780
  version "5.7.3"
2781
  resolved "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz"
2782
  integrity sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==
 
2816
  detect-node-es "^1.1.0"
2817
  tslib "^2.0.0"
2818
 
2819
+ vite@^6.3.1:
2820
  version "6.3.4"
2821
  resolved "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz"
2822
  integrity sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==