+36
.gitignore
+36
.gitignore
···
1
+
dist
2
+
.wrangler
3
+
.output
4
+
.vercel
5
+
.netlify
6
+
.vinxi
7
+
app.config.timestamp_*.js
8
+
9
+
# Environment
10
+
.env
11
+
.env*.local
12
+
13
+
# dependencies
14
+
/node_modules
15
+
16
+
# IDEs and editors
17
+
/.idea
18
+
.project
19
+
.classpath
20
+
*.launch
21
+
.settings/
22
+
23
+
# Temp
24
+
gitignore
25
+
26
+
# System Files
27
+
.DS_Store
28
+
Thumbs.db
29
+
30
+
/.envrc
31
+
/.direnv
32
+
/result
33
+
34
+
## Panda
35
+
styled-system
36
+
styled-system-studio
+36
README.md
+36
README.md
···
1
+
## Usage
2
+
3
+
Those templates dependencies are maintained via [pnpm](https://pnpm.io) via `pnpm up -Lri`.
4
+
5
+
This is the reason you see a `pnpm-lock.yaml`. That being said, any package manager will work. This file can be safely be removed once you clone a template.
6
+
7
+
```bash
8
+
$ npm install # or pnpm install or yarn install
9
+
```
10
+
11
+
### Learn more on the [Solid Website](https://solidjs.com) and come chat with us on our [Discord](https://discord.com/invite/solidjs)
12
+
13
+
## Available Scripts
14
+
15
+
In the project directory, you can run:
16
+
17
+
### `npm run dev` or `npm start`
18
+
19
+
Runs the app in the development mode.<br>
20
+
Open [http://localhost:3000](http://localhost:3000) to view it in the browser.
21
+
22
+
The page will reload if you make edits.<br>
23
+
24
+
### `npm run build`
25
+
26
+
Builds the app for production to the `dist` folder.<br>
27
+
It correctly bundles Solid in production mode and optimizes the build for the best performance.
28
+
29
+
The build is minified and the filenames include the hashes.<br>
30
+
Your app is ready to be deployed!
31
+
32
+
## Deployment
33
+
34
+
You can deploy the `dist` folder to any static host provider (netlify, surge, now, etc.)
35
+
36
+
## This project was created with the [Solid CLI](https://github.com/solidjs-community/solid-cli)
+3347
deno.lock
+3347
deno.lock
···
1
+
{
2
+
"version": "5",
3
+
"specifiers": {
4
+
"npm:@ark-ui/solid@^5.28.0": "5.28.0_solid-js@1.9.10__seroval@1.3.2_@internationalized+date@3.10.0",
5
+
"npm:@atcute/atproto@^3.1.9": "3.1.9",
6
+
"npm:@atcute/bluesky@^3.2.10": "3.2.10",
7
+
"npm:@atcute/client@^4.0.5": "4.0.5",
8
+
"npm:@atcute/identity-resolver@^1.1.4": "1.1.4_@atcute+identity@1.1.2",
9
+
"npm:@atcute/identity@^1.1.2": "1.1.2",
10
+
"npm:@atcute/lexicons@^1.2.3": "1.2.3",
11
+
"npm:@atcute/microcosm@1": "1.0.0",
12
+
"npm:@atcute/oauth-browser-client@^2.0.1": "2.0.1_@atcute+identity@1.1.2",
13
+
"npm:@pandacss/dev@^1.5.1": "1.5.1_typescript@5.9.3",
14
+
"npm:@pandacss/preset-base@^1.5.1": "1.5.1",
15
+
"npm:@park-ui/panda-preset@~0.43.1": "0.43.1_@pandacss+dev@1.5.1__typescript@5.9.3_typescript@5.9.3",
16
+
"npm:@solid-primitives/map@~0.7.2": "0.7.2_solid-js@1.9.10__seroval@1.3.2",
17
+
"npm:fast-average-color@^9.5.0": "9.5.0",
18
+
"npm:lucide-solid@0.553": "0.553.0_solid-js@1.9.10__seroval@1.3.2",
19
+
"npm:mediabunny@^1.25.0": "1.25.0",
20
+
"npm:solid-devtools@~0.34.3": "0.34.4_solid-js@1.9.10__seroval@1.3.2_vite@7.1.12__picomatch@4.0.3_@babel+core@7.28.5",
21
+
"npm:solid-js@^1.9.5": "1.9.10_seroval@1.3.2",
22
+
"npm:typescript@^5.7.2": "5.9.3",
23
+
"npm:vite-plugin-solid@^2.11.8": "2.11.10_solid-js@1.9.10__seroval@1.3.2_vite@7.1.12__picomatch@4.0.3_@babel+core@7.28.5",
24
+
"npm:vite-tsconfig-paths@^5.1.4": "5.1.4_vite@7.1.12__picomatch@4.0.3_typescript@5.9.3",
25
+
"npm:vite@^7.1.4": "7.1.12_picomatch@4.0.3"
26
+
},
27
+
"npm": {
28
+
"@ark-ui/anatomy@3.5.0": {
29
+
"integrity": "sha512-KoROLVVT23BvFHcye/GYhG8NJ2CH0C+CaoJhXrkEjvk8pbEx80Xk5NIUy5gL7xmX+LDD7kY5t3NotBqCu+2L2w==",
30
+
"dependencies": [
31
+
"@zag-js/accordion@0.62.1",
32
+
"@zag-js/anatomy@0.62.1",
33
+
"@zag-js/avatar@0.62.1",
34
+
"@zag-js/carousel@0.62.1",
35
+
"@zag-js/checkbox@0.62.1",
36
+
"@zag-js/clipboard@0.62.1",
37
+
"@zag-js/collapsible@0.62.1",
38
+
"@zag-js/color-picker@0.62.1",
39
+
"@zag-js/color-utils@0.62.1",
40
+
"@zag-js/combobox@0.62.1",
41
+
"@zag-js/date-picker@0.62.1_@internationalized+date@3.5.5",
42
+
"@zag-js/date-utils@0.62.1_@internationalized+date@3.10.0",
43
+
"@zag-js/dialog@0.62.1",
44
+
"@zag-js/editable@0.62.1",
45
+
"@zag-js/file-upload@0.62.1",
46
+
"@zag-js/hover-card@0.62.1",
47
+
"@zag-js/menu@0.62.1",
48
+
"@zag-js/number-input@0.62.1",
49
+
"@zag-js/pagination@0.62.1",
50
+
"@zag-js/pin-input@0.62.1",
51
+
"@zag-js/popover@0.62.1",
52
+
"@zag-js/presence@0.62.1",
53
+
"@zag-js/progress@0.62.1",
54
+
"@zag-js/qr-code@0.62.1",
55
+
"@zag-js/radio-group@0.62.1",
56
+
"@zag-js/rating-group@0.62.1",
57
+
"@zag-js/select@0.62.1",
58
+
"@zag-js/signature-pad@0.62.1",
59
+
"@zag-js/slider@0.62.1",
60
+
"@zag-js/splitter@0.62.1",
61
+
"@zag-js/switch@0.62.1",
62
+
"@zag-js/tabs@0.62.1",
63
+
"@zag-js/tags-input@0.62.1",
64
+
"@zag-js/time-picker",
65
+
"@zag-js/toast@0.62.1",
66
+
"@zag-js/toggle-group@0.62.1",
67
+
"@zag-js/tooltip@0.62.1",
68
+
"@zag-js/tree-view@0.62.1"
69
+
],
70
+
"deprecated": true
71
+
},
72
+
"@ark-ui/solid@5.28.0_solid-js@1.9.10__seroval@1.3.2_@internationalized+date@3.10.0": {
73
+
"integrity": "sha512-QC3oCnElmUO3lsEXoD2l/HIy7TOCITu3pbJ6udQw/QuzABsTMF5y0L/nsBfR6rzKhHr5Vkggw6W4VBjvhH8w0w==",
74
+
"dependencies": [
75
+
"@internationalized/date@3.10.0",
76
+
"@zag-js/accordion@1.27.1",
77
+
"@zag-js/anatomy@1.27.1",
78
+
"@zag-js/angle-slider",
79
+
"@zag-js/async-list",
80
+
"@zag-js/auto-resize@1.27.1",
81
+
"@zag-js/avatar@1.27.1",
82
+
"@zag-js/bottom-sheet",
83
+
"@zag-js/carousel@1.27.1",
84
+
"@zag-js/checkbox@1.27.1",
85
+
"@zag-js/clipboard@1.27.1",
86
+
"@zag-js/collapsible@1.27.1",
87
+
"@zag-js/collection@1.27.1",
88
+
"@zag-js/color-picker@1.27.1",
89
+
"@zag-js/color-utils@1.27.1",
90
+
"@zag-js/combobox@1.27.1",
91
+
"@zag-js/core@1.27.1",
92
+
"@zag-js/date-picker@1.27.1_@internationalized+date@3.10.0",
93
+
"@zag-js/date-utils@1.27.1_@internationalized+date@3.10.0",
94
+
"@zag-js/dialog@1.27.1",
95
+
"@zag-js/dom-query@1.27.1",
96
+
"@zag-js/editable@1.27.1",
97
+
"@zag-js/file-upload@1.27.1",
98
+
"@zag-js/file-utils@1.27.1",
99
+
"@zag-js/floating-panel",
100
+
"@zag-js/focus-trap",
101
+
"@zag-js/highlight-word",
102
+
"@zag-js/hover-card@1.27.1",
103
+
"@zag-js/i18n-utils@1.27.1",
104
+
"@zag-js/image-cropper",
105
+
"@zag-js/json-tree-utils",
106
+
"@zag-js/listbox",
107
+
"@zag-js/marquee",
108
+
"@zag-js/menu@1.27.1",
109
+
"@zag-js/number-input@1.27.1",
110
+
"@zag-js/pagination@1.27.1",
111
+
"@zag-js/password-input",
112
+
"@zag-js/pin-input@1.27.1",
113
+
"@zag-js/popover@1.27.1",
114
+
"@zag-js/presence@1.27.1",
115
+
"@zag-js/progress@1.27.1",
116
+
"@zag-js/qr-code@1.27.1",
117
+
"@zag-js/radio-group@1.27.1",
118
+
"@zag-js/rating-group@1.27.1",
119
+
"@zag-js/scroll-area",
120
+
"@zag-js/select@1.27.1",
121
+
"@zag-js/signature-pad@1.27.1",
122
+
"@zag-js/slider@1.27.1",
123
+
"@zag-js/solid",
124
+
"@zag-js/splitter@1.27.1",
125
+
"@zag-js/steps",
126
+
"@zag-js/switch@1.27.1",
127
+
"@zag-js/tabs@1.27.1",
128
+
"@zag-js/tags-input@1.27.1",
129
+
"@zag-js/timer",
130
+
"@zag-js/toast@1.27.1",
131
+
"@zag-js/toggle",
132
+
"@zag-js/toggle-group@1.27.1",
133
+
"@zag-js/tooltip@1.27.1",
134
+
"@zag-js/tour",
135
+
"@zag-js/tree-view@1.27.1",
136
+
"@zag-js/types@1.27.1",
137
+
"@zag-js/utils@1.27.1",
138
+
"solid-js"
139
+
]
140
+
},
141
+
"@atcute/atproto@3.1.9": {
142
+
"integrity": "sha512-DyWwHCTdR4hY2BPNbLXgVmm7lI+fceOwWbE4LXbGvbvVtSn+ejSVFaAv01Ra3kWDha0whsOmbJL8JP0QPpf1+w==",
143
+
"dependencies": [
144
+
"@atcute/lexicons"
145
+
]
146
+
},
147
+
"@atcute/bluesky@3.2.10": {
148
+
"integrity": "sha512-qwQWTzRf3umnh2u41gdU+xWYkbzGlKDupc3zeOB+YjmuP1N9wEaUhwS8H7vgrqr0xC9SGNDjeUVcjC4m5BPLBg==",
149
+
"dependencies": [
150
+
"@atcute/atproto",
151
+
"@atcute/lexicons"
152
+
]
153
+
},
154
+
"@atcute/client@4.0.5": {
155
+
"integrity": "sha512-R8Qen8goGmEkynYGg2m6XFlVmz0GTDvQ+9w+4QqOob+XMk8/WDpF4aImev7WKEde/rV2gjcqW7zM8E6W9NShDA==",
156
+
"dependencies": [
157
+
"@atcute/identity",
158
+
"@atcute/lexicons"
159
+
]
160
+
},
161
+
"@atcute/identity-resolver@1.1.4_@atcute+identity@1.1.2": {
162
+
"integrity": "sha512-/SVh8vf2cXFJenmBnGeYF2aY3WGQm3cJeew5NWTlkqoy3LvJ5wkvKq9PWu4Tv653VF40rPOp6LOdVr9Fa+q5rA==",
163
+
"dependencies": [
164
+
"@atcute/identity",
165
+
"@atcute/lexicons",
166
+
"@atcute/util-fetch",
167
+
"@badrap/valita"
168
+
]
169
+
},
170
+
"@atcute/identity@1.1.2": {
171
+
"integrity": "sha512-vn0RN7SUF6N0sEPG9yyT6a0MzpfVS8BhsiLtB8OeS4qp2rLMQW33pelCpNitP1N+fq03MFlDGzs5p7K4qMs4cA==",
172
+
"dependencies": [
173
+
"@atcute/lexicons",
174
+
"@badrap/valita"
175
+
]
176
+
},
177
+
"@atcute/lexicons@1.2.3": {
178
+
"integrity": "sha512-ZNfNWS4jaR8VgWSSBaWRSSmwFeP134BmvpTt9JmM2x5vRoXeIFthxU9USY8ZV4vm0GPoxEMgkDin8HIlnFTg2w==",
179
+
"dependencies": [
180
+
"@standard-schema/spec",
181
+
"esm-env"
182
+
]
183
+
},
184
+
"@atcute/microcosm@1.0.0": {
185
+
"integrity": "sha512-XJW+TMvdktH2maTkVcNU6wKmnHpmNwhmg0Xj4ZY36plHpqNHfxR4kAAcXGSJcjH9CS8I1+cTHiyUQykdeOPeGg==",
186
+
"dependencies": [
187
+
"@atcute/lexicons"
188
+
]
189
+
},
190
+
"@atcute/multibase@1.1.6": {
191
+
"integrity": "sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg==",
192
+
"dependencies": [
193
+
"@atcute/uint8array"
194
+
]
195
+
},
196
+
"@atcute/oauth-browser-client@2.0.1_@atcute+identity@1.1.2": {
197
+
"integrity": "sha512-lG021GkeORG06zfFf4bH85egObjBEKHNgAWHvbtY/E2dX4wxo88hf370pJDx8acdnuUJLJ2VKPikJtZwo4Heeg==",
198
+
"dependencies": [
199
+
"@atcute/client",
200
+
"@atcute/identity",
201
+
"@atcute/identity-resolver",
202
+
"@atcute/lexicons",
203
+
"@atcute/multibase",
204
+
"@atcute/uint8array",
205
+
"nanoid@5.1.6"
206
+
]
207
+
},
208
+
"@atcute/uint8array@1.0.5": {
209
+
"integrity": "sha512-XLWWxoR2HNl2qU+FCr0rp1APwJXci7HnzbOQLxK55OaMNBXZ19+xNC5ii4QCsThsDxa4JS/JTzuiQLziITWf2Q=="
210
+
},
211
+
"@atcute/util-fetch@1.0.3": {
212
+
"integrity": "sha512-f8zzTb/xlKIwv2OQ31DhShPUNCmIIleX6p7qIXwWwEUjX6x8skUtpdISSjnImq01LXpltGV5y8yhV4/Mlb7CRQ==",
213
+
"dependencies": [
214
+
"@badrap/valita"
215
+
]
216
+
},
217
+
"@babel/code-frame@7.27.1": {
218
+
"integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
219
+
"dependencies": [
220
+
"@babel/helper-validator-identifier",
221
+
"js-tokens",
222
+
"picocolors"
223
+
]
224
+
},
225
+
"@babel/compat-data@7.28.5": {
226
+
"integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="
227
+
},
228
+
"@babel/core@7.28.5": {
229
+
"integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
230
+
"dependencies": [
231
+
"@babel/code-frame",
232
+
"@babel/generator",
233
+
"@babel/helper-compilation-targets",
234
+
"@babel/helper-module-transforms",
235
+
"@babel/helpers",
236
+
"@babel/parser",
237
+
"@babel/template",
238
+
"@babel/traverse",
239
+
"@babel/types",
240
+
"@jridgewell/remapping",
241
+
"convert-source-map",
242
+
"debug",
243
+
"gensync",
244
+
"json5",
245
+
"semver"
246
+
]
247
+
},
248
+
"@babel/generator@7.28.5": {
249
+
"integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
250
+
"dependencies": [
251
+
"@babel/parser",
252
+
"@babel/types",
253
+
"@jridgewell/gen-mapping",
254
+
"@jridgewell/trace-mapping",
255
+
"jsesc"
256
+
]
257
+
},
258
+
"@babel/helper-compilation-targets@7.27.2": {
259
+
"integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
260
+
"dependencies": [
261
+
"@babel/compat-data",
262
+
"@babel/helper-validator-option",
263
+
"browserslist@4.28.0",
264
+
"lru-cache",
265
+
"semver"
266
+
]
267
+
},
268
+
"@babel/helper-globals@7.28.0": {
269
+
"integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="
270
+
},
271
+
"@babel/helper-module-imports@7.18.6": {
272
+
"integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
273
+
"dependencies": [
274
+
"@babel/types"
275
+
]
276
+
},
277
+
"@babel/helper-module-imports@7.27.1": {
278
+
"integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
279
+
"dependencies": [
280
+
"@babel/traverse",
281
+
"@babel/types"
282
+
]
283
+
},
284
+
"@babel/helper-module-transforms@7.28.3_@babel+core@7.28.5": {
285
+
"integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
286
+
"dependencies": [
287
+
"@babel/core",
288
+
"@babel/helper-module-imports@7.27.1",
289
+
"@babel/helper-validator-identifier",
290
+
"@babel/traverse"
291
+
]
292
+
},
293
+
"@babel/helper-plugin-utils@7.27.1": {
294
+
"integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="
295
+
},
296
+
"@babel/helper-string-parser@7.27.1": {
297
+
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="
298
+
},
299
+
"@babel/helper-validator-identifier@7.28.5": {
300
+
"integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="
301
+
},
302
+
"@babel/helper-validator-option@7.27.1": {
303
+
"integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="
304
+
},
305
+
"@babel/helpers@7.28.4": {
306
+
"integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
307
+
"dependencies": [
308
+
"@babel/template",
309
+
"@babel/types"
310
+
]
311
+
},
312
+
"@babel/parser@7.28.5": {
313
+
"integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
314
+
"dependencies": [
315
+
"@babel/types"
316
+
],
317
+
"bin": true
318
+
},
319
+
"@babel/plugin-syntax-jsx@7.27.1_@babel+core@7.28.5": {
320
+
"integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
321
+
"dependencies": [
322
+
"@babel/core",
323
+
"@babel/helper-plugin-utils"
324
+
]
325
+
},
326
+
"@babel/plugin-syntax-typescript@7.27.1_@babel+core@7.28.5": {
327
+
"integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
328
+
"dependencies": [
329
+
"@babel/core",
330
+
"@babel/helper-plugin-utils"
331
+
]
332
+
},
333
+
"@babel/template@7.27.2": {
334
+
"integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
335
+
"dependencies": [
336
+
"@babel/code-frame",
337
+
"@babel/parser",
338
+
"@babel/types"
339
+
]
340
+
},
341
+
"@babel/traverse@7.28.5": {
342
+
"integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
343
+
"dependencies": [
344
+
"@babel/code-frame",
345
+
"@babel/generator",
346
+
"@babel/helper-globals",
347
+
"@babel/parser",
348
+
"@babel/template",
349
+
"@babel/types",
350
+
"debug"
351
+
]
352
+
},
353
+
"@babel/types@7.28.5": {
354
+
"integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
355
+
"dependencies": [
356
+
"@babel/helper-string-parser",
357
+
"@babel/helper-validator-identifier"
358
+
]
359
+
},
360
+
"@badrap/valita@0.4.6": {
361
+
"integrity": "sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg=="
362
+
},
363
+
"@clack/core@0.5.0": {
364
+
"integrity": "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow==",
365
+
"dependencies": [
366
+
"picocolors",
367
+
"sisteransi"
368
+
]
369
+
},
370
+
"@clack/prompts@0.11.0": {
371
+
"integrity": "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw==",
372
+
"dependencies": [
373
+
"@clack/core",
374
+
"picocolors",
375
+
"sisteransi"
376
+
]
377
+
},
378
+
"@csstools/postcss-cascade-layers@5.0.2_postcss@8.5.6_postcss-selector-parser@7.1.0": {
379
+
"integrity": "sha512-nWBE08nhO8uWl6kSAeCx4im7QfVko3zLrtgWZY4/bP87zrSPpSyN/3W3TDqz1jJuH+kbKOHXg5rJnK+ZVYcFFg==",
380
+
"dependencies": [
381
+
"@csstools/selector-specificity",
382
+
"postcss",
383
+
"postcss-selector-parser"
384
+
]
385
+
},
386
+
"@csstools/selector-specificity@5.0.0_postcss-selector-parser@7.1.0": {
387
+
"integrity": "sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==",
388
+
"dependencies": [
389
+
"postcss-selector-parser"
390
+
]
391
+
},
392
+
"@esbuild/aix-ppc64@0.25.12": {
393
+
"integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==",
394
+
"os": ["aix"],
395
+
"cpu": ["ppc64"]
396
+
},
397
+
"@esbuild/android-arm64@0.25.12": {
398
+
"integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==",
399
+
"os": ["android"],
400
+
"cpu": ["arm64"]
401
+
},
402
+
"@esbuild/android-arm@0.25.12": {
403
+
"integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==",
404
+
"os": ["android"],
405
+
"cpu": ["arm"]
406
+
},
407
+
"@esbuild/android-x64@0.25.12": {
408
+
"integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==",
409
+
"os": ["android"],
410
+
"cpu": ["x64"]
411
+
},
412
+
"@esbuild/darwin-arm64@0.25.12": {
413
+
"integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==",
414
+
"os": ["darwin"],
415
+
"cpu": ["arm64"]
416
+
},
417
+
"@esbuild/darwin-x64@0.25.12": {
418
+
"integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==",
419
+
"os": ["darwin"],
420
+
"cpu": ["x64"]
421
+
},
422
+
"@esbuild/freebsd-arm64@0.25.12": {
423
+
"integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==",
424
+
"os": ["freebsd"],
425
+
"cpu": ["arm64"]
426
+
},
427
+
"@esbuild/freebsd-x64@0.25.12": {
428
+
"integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==",
429
+
"os": ["freebsd"],
430
+
"cpu": ["x64"]
431
+
},
432
+
"@esbuild/linux-arm64@0.25.12": {
433
+
"integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==",
434
+
"os": ["linux"],
435
+
"cpu": ["arm64"]
436
+
},
437
+
"@esbuild/linux-arm@0.25.12": {
438
+
"integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==",
439
+
"os": ["linux"],
440
+
"cpu": ["arm"]
441
+
},
442
+
"@esbuild/linux-ia32@0.25.12": {
443
+
"integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==",
444
+
"os": ["linux"],
445
+
"cpu": ["ia32"]
446
+
},
447
+
"@esbuild/linux-loong64@0.25.12": {
448
+
"integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==",
449
+
"os": ["linux"],
450
+
"cpu": ["loong64"]
451
+
},
452
+
"@esbuild/linux-mips64el@0.25.12": {
453
+
"integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==",
454
+
"os": ["linux"],
455
+
"cpu": ["mips64el"]
456
+
},
457
+
"@esbuild/linux-ppc64@0.25.12": {
458
+
"integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==",
459
+
"os": ["linux"],
460
+
"cpu": ["ppc64"]
461
+
},
462
+
"@esbuild/linux-riscv64@0.25.12": {
463
+
"integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==",
464
+
"os": ["linux"],
465
+
"cpu": ["riscv64"]
466
+
},
467
+
"@esbuild/linux-s390x@0.25.12": {
468
+
"integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==",
469
+
"os": ["linux"],
470
+
"cpu": ["s390x"]
471
+
},
472
+
"@esbuild/linux-x64@0.25.12": {
473
+
"integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==",
474
+
"os": ["linux"],
475
+
"cpu": ["x64"]
476
+
},
477
+
"@esbuild/netbsd-arm64@0.25.12": {
478
+
"integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==",
479
+
"os": ["netbsd"],
480
+
"cpu": ["arm64"]
481
+
},
482
+
"@esbuild/netbsd-x64@0.25.12": {
483
+
"integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==",
484
+
"os": ["netbsd"],
485
+
"cpu": ["x64"]
486
+
},
487
+
"@esbuild/openbsd-arm64@0.25.12": {
488
+
"integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==",
489
+
"os": ["openbsd"],
490
+
"cpu": ["arm64"]
491
+
},
492
+
"@esbuild/openbsd-x64@0.25.12": {
493
+
"integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==",
494
+
"os": ["openbsd"],
495
+
"cpu": ["x64"]
496
+
},
497
+
"@esbuild/openharmony-arm64@0.25.12": {
498
+
"integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==",
499
+
"os": ["openharmony"],
500
+
"cpu": ["arm64"]
501
+
},
502
+
"@esbuild/sunos-x64@0.25.12": {
503
+
"integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==",
504
+
"os": ["sunos"],
505
+
"cpu": ["x64"]
506
+
},
507
+
"@esbuild/win32-arm64@0.25.12": {
508
+
"integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==",
509
+
"os": ["win32"],
510
+
"cpu": ["arm64"]
511
+
},
512
+
"@esbuild/win32-ia32@0.25.12": {
513
+
"integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==",
514
+
"os": ["win32"],
515
+
"cpu": ["ia32"]
516
+
},
517
+
"@esbuild/win32-x64@0.25.12": {
518
+
"integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==",
519
+
"os": ["win32"],
520
+
"cpu": ["x64"]
521
+
},
522
+
"@floating-ui/core@1.7.3": {
523
+
"integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==",
524
+
"dependencies": [
525
+
"@floating-ui/utils"
526
+
]
527
+
},
528
+
"@floating-ui/dom@1.6.8": {
529
+
"integrity": "sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==",
530
+
"dependencies": [
531
+
"@floating-ui/core",
532
+
"@floating-ui/utils"
533
+
]
534
+
},
535
+
"@floating-ui/dom@1.7.4": {
536
+
"integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==",
537
+
"dependencies": [
538
+
"@floating-ui/core",
539
+
"@floating-ui/utils"
540
+
]
541
+
},
542
+
"@floating-ui/utils@0.2.10": {
543
+
"integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="
544
+
},
545
+
"@internationalized/date@3.10.0": {
546
+
"integrity": "sha512-oxDR/NTEJ1k+UFVQElaNIk65E/Z83HK1z1WI3lQyhTtnNg4R5oVXaPzK3jcpKG8UHKDVuDQHzn+wsxSz8RP3aw==",
547
+
"dependencies": [
548
+
"@swc/helpers"
549
+
]
550
+
},
551
+
"@internationalized/date@3.5.5": {
552
+
"integrity": "sha512-H+CfYvOZ0LTJeeLOqm19E3uj/4YjrmOFtBufDHPfvtI80hFAMqtrp7oCACpe4Cil5l8S0Qu/9dYfZc/5lY8WQQ==",
553
+
"dependencies": [
554
+
"@swc/helpers"
555
+
]
556
+
},
557
+
"@internationalized/number@3.5.3": {
558
+
"integrity": "sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==",
559
+
"dependencies": [
560
+
"@swc/helpers"
561
+
]
562
+
},
563
+
"@internationalized/number@3.6.5": {
564
+
"integrity": "sha512-6hY4Kl4HPBvtfS62asS/R22JzNNy8vi/Ssev7x6EobfCp+9QIB2hKvI2EtbdJ0VSQacxVNtqhE/NmF/NZ0gm6g==",
565
+
"dependencies": [
566
+
"@swc/helpers"
567
+
]
568
+
},
569
+
"@isaacs/balanced-match@4.0.1": {
570
+
"integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="
571
+
},
572
+
"@isaacs/brace-expansion@5.0.0": {
573
+
"integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
574
+
"dependencies": [
575
+
"@isaacs/balanced-match"
576
+
]
577
+
},
578
+
"@jridgewell/gen-mapping@0.3.13": {
579
+
"integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
580
+
"dependencies": [
581
+
"@jridgewell/sourcemap-codec",
582
+
"@jridgewell/trace-mapping"
583
+
]
584
+
},
585
+
"@jridgewell/remapping@2.3.5": {
586
+
"integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
587
+
"dependencies": [
588
+
"@jridgewell/gen-mapping",
589
+
"@jridgewell/trace-mapping"
590
+
]
591
+
},
592
+
"@jridgewell/resolve-uri@3.1.2": {
593
+
"integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="
594
+
},
595
+
"@jridgewell/sourcemap-codec@1.5.5": {
596
+
"integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="
597
+
},
598
+
"@jridgewell/trace-mapping@0.3.31": {
599
+
"integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
600
+
"dependencies": [
601
+
"@jridgewell/resolve-uri",
602
+
"@jridgewell/sourcemap-codec"
603
+
]
604
+
},
605
+
"@nodelib/fs.scandir@2.1.5": {
606
+
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
607
+
"dependencies": [
608
+
"@nodelib/fs.stat",
609
+
"run-parallel"
610
+
]
611
+
},
612
+
"@nodelib/fs.stat@2.0.5": {
613
+
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="
614
+
},
615
+
"@nodelib/fs.walk@1.2.8": {
616
+
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
617
+
"dependencies": [
618
+
"@nodelib/fs.scandir",
619
+
"fastq"
620
+
]
621
+
},
622
+
"@nothing-but/utils@0.17.0": {
623
+
"integrity": "sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ=="
624
+
},
625
+
"@pandacss/config@1.5.1": {
626
+
"integrity": "sha512-aO+YVRlccLXuFC30DEO9ZDkvXwjbCXk1blIpii8PuclTAR0+YPq8xXVRTVK3fR3MiA0zROca8nAf5Kb+wHVKPw==",
627
+
"dependencies": [
628
+
"@pandacss/logger",
629
+
"@pandacss/preset-base",
630
+
"@pandacss/preset-panda",
631
+
"@pandacss/shared",
632
+
"@pandacss/types",
633
+
"bundle-n-require",
634
+
"escalade@3.1.2",
635
+
"merge-anything",
636
+
"microdiff",
637
+
"typescript"
638
+
]
639
+
},
640
+
"@pandacss/core@1.5.1_postcss@8.5.6": {
641
+
"integrity": "sha512-okuvSm5o0gmQmkpLONH4ReqgBVOMMsfb9MyK8vpcZUpzvMBiraVcgsbLxKQyHlmVDZNbKLLokIycb8KEpqtIDQ==",
642
+
"dependencies": [
643
+
"@csstools/postcss-cascade-layers",
644
+
"@pandacss/is-valid-prop",
645
+
"@pandacss/logger",
646
+
"@pandacss/shared",
647
+
"@pandacss/token-dictionary",
648
+
"@pandacss/types",
649
+
"browserslist@4.24.4",
650
+
"hookable",
651
+
"lightningcss",
652
+
"lodash.merge",
653
+
"outdent",
654
+
"postcss",
655
+
"postcss-discard-duplicates",
656
+
"postcss-discard-empty",
657
+
"postcss-merge-rules",
658
+
"postcss-minify-selectors",
659
+
"postcss-nested",
660
+
"postcss-normalize-whitespace",
661
+
"postcss-selector-parser",
662
+
"ts-pattern"
663
+
]
664
+
},
665
+
"@pandacss/dev@1.5.1_typescript@5.9.3": {
666
+
"integrity": "sha512-U1NWO3ZgOLlABtDk6MMQwTNYOCiUtUg+HEoHPdEExLzNn+20mrLf1IZWJyn4zXKSpANGSi79EV7X4yxPa+W+MA==",
667
+
"dependencies": [
668
+
"@clack/prompts",
669
+
"@pandacss/config",
670
+
"@pandacss/logger",
671
+
"@pandacss/node",
672
+
"@pandacss/postcss",
673
+
"@pandacss/preset-base",
674
+
"@pandacss/preset-panda",
675
+
"@pandacss/shared",
676
+
"@pandacss/token-dictionary",
677
+
"@pandacss/types",
678
+
"cac"
679
+
],
680
+
"bin": true
681
+
},
682
+
"@pandacss/extractor@1.5.1_typescript@5.9.3": {
683
+
"integrity": "sha512-/DG4MnVo5LA0SpJq4rI0RgOp8kPjZMP5a1+q4MwLDHPtfWTwPaiKv7LULBW1L11V+fMOYn+d44dBKgU4dj6oSg==",
684
+
"dependencies": [
685
+
"@pandacss/shared",
686
+
"ts-evaluator",
687
+
"ts-morph"
688
+
]
689
+
},
690
+
"@pandacss/generator@1.5.1": {
691
+
"integrity": "sha512-kijxpjpvRQBz16BiBcghknthsdmVxSJD5C71jlcM4aVeqoZSCWDNcmlL/2SSCMy7oC6HANu2oRXS/L1YgYzHGA==",
692
+
"dependencies": [
693
+
"@pandacss/core",
694
+
"@pandacss/is-valid-prop",
695
+
"@pandacss/logger",
696
+
"@pandacss/shared",
697
+
"@pandacss/token-dictionary",
698
+
"@pandacss/types",
699
+
"javascript-stringify",
700
+
"outdent",
701
+
"pluralize",
702
+
"postcss",
703
+
"ts-pattern"
704
+
]
705
+
},
706
+
"@pandacss/is-valid-prop@1.5.1": {
707
+
"integrity": "sha512-AlOt+MqqwDlIdVEdW6wEtvDmX8MmPv004oD+7tdGN54HKpD9jqrwPwwS9p7YQ7nai631JlyladshFHqe1xl7+w=="
708
+
},
709
+
"@pandacss/logger@1.5.1": {
710
+
"integrity": "sha512-jC835vvSGIOxCZcqXH1alXdzO/ThUCE3HXGjt17mGli/QiVT3b/v83n/Cfz0wiHP3zSUlwVYaPAlXryepsQNWA==",
711
+
"dependencies": [
712
+
"@pandacss/types",
713
+
"kleur"
714
+
]
715
+
},
716
+
"@pandacss/node@1.5.1_typescript@5.9.3": {
717
+
"integrity": "sha512-qgiydokbjWcSqzsuCP1LR91IOLs7JgsMJkgAbEim/PdVH3NbKNjCUx9mK8bt1JO3/GKNC+GfePpacxGLmt/p6w==",
718
+
"dependencies": [
719
+
"@pandacss/config",
720
+
"@pandacss/core",
721
+
"@pandacss/generator",
722
+
"@pandacss/logger",
723
+
"@pandacss/parser",
724
+
"@pandacss/reporter",
725
+
"@pandacss/shared",
726
+
"@pandacss/token-dictionary",
727
+
"@pandacss/types",
728
+
"browserslist@4.24.4",
729
+
"chokidar",
730
+
"fast-glob",
731
+
"fs-extra",
732
+
"glob-parent@6.0.2",
733
+
"is-glob",
734
+
"lodash.merge",
735
+
"look-it-up",
736
+
"outdent",
737
+
"package-manager-detector",
738
+
"perfect-debounce",
739
+
"picomatch@4.0.3",
740
+
"pkg-types",
741
+
"pluralize",
742
+
"postcss",
743
+
"prettier",
744
+
"ts-morph",
745
+
"ts-pattern",
746
+
"tsconfck"
747
+
]
748
+
},
749
+
"@pandacss/parser@1.5.1_typescript@5.9.3": {
750
+
"integrity": "sha512-CuG5qdsQkw2xjxzN9pkfl9JaPgK28FJnRj9jmLb98Vo3J+NkUD2NyzL4k69lKZv9nbcmwn7+HbvMP/DKfx8OvQ==",
751
+
"dependencies": [
752
+
"@pandacss/config",
753
+
"@pandacss/core",
754
+
"@pandacss/extractor",
755
+
"@pandacss/logger",
756
+
"@pandacss/shared",
757
+
"@pandacss/types",
758
+
"@vue/compiler-sfc",
759
+
"magic-string",
760
+
"ts-morph",
761
+
"ts-pattern"
762
+
]
763
+
},
764
+
"@pandacss/postcss@1.5.1_typescript@5.9.3": {
765
+
"integrity": "sha512-fZZOf0n6WKm3JQnGXC4Y8RGzw9jDdYpFGaSpVLpE4VotbfBq/jZtACw/pLa4ryferJhRp+WraBvYtKg6w2bQ9w==",
766
+
"dependencies": [
767
+
"@pandacss/node",
768
+
"postcss"
769
+
]
770
+
},
771
+
"@pandacss/preset-base@1.5.1": {
772
+
"integrity": "sha512-I8USdmUqPPkluznTFilbzLgXzU/+NEzeCvkwuwfi0QZlmGXOXnatM/7IUK7yatNikPx3neqmNh4o4WwWE04dGQ==",
773
+
"dependencies": [
774
+
"@pandacss/types"
775
+
]
776
+
},
777
+
"@pandacss/preset-panda@1.5.1": {
778
+
"integrity": "sha512-ZA/MhFK3O/fYIS4p2HDpyPMgCISAi+g5LoPzX/jQbQ5WGfkBS8sTmxIM/XapGNVHAzXFzYOTwqQ87KP3Siiozw==",
779
+
"dependencies": [
780
+
"@pandacss/types"
781
+
]
782
+
},
783
+
"@pandacss/reporter@1.5.1": {
784
+
"integrity": "sha512-fCgX/VN9ZDZpvfYJU+bdQpwoR48cMmhtTvPYJIek6KoANKXXJFbpgC5t2N6EtTkktg+3+unks3XpU3FvQdGHTQ==",
785
+
"dependencies": [
786
+
"@pandacss/core",
787
+
"@pandacss/generator",
788
+
"@pandacss/logger",
789
+
"@pandacss/shared",
790
+
"@pandacss/types",
791
+
"table",
792
+
"wordwrapjs"
793
+
]
794
+
},
795
+
"@pandacss/shared@1.5.1": {
796
+
"integrity": "sha512-pTHbfT6N7vt6/BncGoMduCo4jnYOvyHC8XdSgV3mzStdGJqw+0R30jeULixYrv7HFGDXCNxzohQ2k8YGOk6UoQ=="
797
+
},
798
+
"@pandacss/token-dictionary@1.5.1": {
799
+
"integrity": "sha512-w/dSvEaskD7zYHYWbPdYG+zrFLVsYYYJl9hT2cE2spccgJCid40Ov/4/zuP67rC9rPfs7qETMy6ydTPGbCfZ5A==",
800
+
"dependencies": [
801
+
"@pandacss/logger",
802
+
"@pandacss/shared",
803
+
"@pandacss/types",
804
+
"picomatch@4.0.3",
805
+
"ts-pattern"
806
+
]
807
+
},
808
+
"@pandacss/types@1.5.1": {
809
+
"integrity": "sha512-fUDPtP3+yW8q5gPC2UfDcrdd/QW3H24kNt5vD30f5dt0CGDGkSoRUP4iJVNViEfQS2MzfDCnYI+PFOCw3eeQFw=="
810
+
},
811
+
"@park-ui/panda-preset@0.43.1_@pandacss+dev@1.5.1__typescript@5.9.3_typescript@5.9.3": {
812
+
"integrity": "sha512-kcO1ewx8zU9wHuTjZ/nqPCqjzL9AXkpzDnDrpcZ2unKR/UE3hHpP+Y1F0grTBaluPHLomjfZz3GebczJvoShBQ==",
813
+
"dependencies": [
814
+
"@ark-ui/anatomy",
815
+
"@pandacss/dev",
816
+
"effect"
817
+
],
818
+
"scripts": true
819
+
},
820
+
"@rollup/rollup-android-arm-eabi@4.52.5": {
821
+
"integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==",
822
+
"os": ["android"],
823
+
"cpu": ["arm"]
824
+
},
825
+
"@rollup/rollup-android-arm64@4.52.5": {
826
+
"integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==",
827
+
"os": ["android"],
828
+
"cpu": ["arm64"]
829
+
},
830
+
"@rollup/rollup-darwin-arm64@4.52.5": {
831
+
"integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==",
832
+
"os": ["darwin"],
833
+
"cpu": ["arm64"]
834
+
},
835
+
"@rollup/rollup-darwin-x64@4.52.5": {
836
+
"integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==",
837
+
"os": ["darwin"],
838
+
"cpu": ["x64"]
839
+
},
840
+
"@rollup/rollup-freebsd-arm64@4.52.5": {
841
+
"integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==",
842
+
"os": ["freebsd"],
843
+
"cpu": ["arm64"]
844
+
},
845
+
"@rollup/rollup-freebsd-x64@4.52.5": {
846
+
"integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==",
847
+
"os": ["freebsd"],
848
+
"cpu": ["x64"]
849
+
},
850
+
"@rollup/rollup-linux-arm-gnueabihf@4.52.5": {
851
+
"integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==",
852
+
"os": ["linux"],
853
+
"cpu": ["arm"]
854
+
},
855
+
"@rollup/rollup-linux-arm-musleabihf@4.52.5": {
856
+
"integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==",
857
+
"os": ["linux"],
858
+
"cpu": ["arm"]
859
+
},
860
+
"@rollup/rollup-linux-arm64-gnu@4.52.5": {
861
+
"integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==",
862
+
"os": ["linux"],
863
+
"cpu": ["arm64"]
864
+
},
865
+
"@rollup/rollup-linux-arm64-musl@4.52.5": {
866
+
"integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==",
867
+
"os": ["linux"],
868
+
"cpu": ["arm64"]
869
+
},
870
+
"@rollup/rollup-linux-loong64-gnu@4.52.5": {
871
+
"integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==",
872
+
"os": ["linux"],
873
+
"cpu": ["loong64"]
874
+
},
875
+
"@rollup/rollup-linux-ppc64-gnu@4.52.5": {
876
+
"integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==",
877
+
"os": ["linux"],
878
+
"cpu": ["ppc64"]
879
+
},
880
+
"@rollup/rollup-linux-riscv64-gnu@4.52.5": {
881
+
"integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==",
882
+
"os": ["linux"],
883
+
"cpu": ["riscv64"]
884
+
},
885
+
"@rollup/rollup-linux-riscv64-musl@4.52.5": {
886
+
"integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==",
887
+
"os": ["linux"],
888
+
"cpu": ["riscv64"]
889
+
},
890
+
"@rollup/rollup-linux-s390x-gnu@4.52.5": {
891
+
"integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==",
892
+
"os": ["linux"],
893
+
"cpu": ["s390x"]
894
+
},
895
+
"@rollup/rollup-linux-x64-gnu@4.52.5": {
896
+
"integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==",
897
+
"os": ["linux"],
898
+
"cpu": ["x64"]
899
+
},
900
+
"@rollup/rollup-linux-x64-musl@4.52.5": {
901
+
"integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==",
902
+
"os": ["linux"],
903
+
"cpu": ["x64"]
904
+
},
905
+
"@rollup/rollup-openharmony-arm64@4.52.5": {
906
+
"integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==",
907
+
"os": ["openharmony"],
908
+
"cpu": ["arm64"]
909
+
},
910
+
"@rollup/rollup-win32-arm64-msvc@4.52.5": {
911
+
"integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==",
912
+
"os": ["win32"],
913
+
"cpu": ["arm64"]
914
+
},
915
+
"@rollup/rollup-win32-ia32-msvc@4.52.5": {
916
+
"integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==",
917
+
"os": ["win32"],
918
+
"cpu": ["ia32"]
919
+
},
920
+
"@rollup/rollup-win32-x64-gnu@4.52.5": {
921
+
"integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==",
922
+
"os": ["win32"],
923
+
"cpu": ["x64"]
924
+
},
925
+
"@rollup/rollup-win32-x64-msvc@4.52.5": {
926
+
"integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==",
927
+
"os": ["win32"],
928
+
"cpu": ["x64"]
929
+
},
930
+
"@solid-devtools/debugger@0.28.1_solid-js@1.9.10__seroval@1.3.2": {
931
+
"integrity": "sha512-6qIUI6VYkXoRnL8oF5bvh2KgH71qlJ18hNw/mwSyY6v48eb80ZR48/5PDXufUa3q+MBSuYa1uqTMwLewpay9eg==",
932
+
"dependencies": [
933
+
"@nothing-but/utils",
934
+
"@solid-devtools/shared",
935
+
"@solid-primitives/bounds",
936
+
"@solid-primitives/event-listener",
937
+
"@solid-primitives/keyboard",
938
+
"@solid-primitives/rootless",
939
+
"@solid-primitives/scheduled",
940
+
"@solid-primitives/static-store",
941
+
"@solid-primitives/utils",
942
+
"solid-js"
943
+
]
944
+
},
945
+
"@solid-devtools/shared@0.20.0_solid-js@1.9.10__seroval@1.3.2": {
946
+
"integrity": "sha512-o5TACmUOQsxpzpOKCjbQqGk8wL8PMi+frXG9WNu4Lh3PQVUB6hs95Kl/S8xc++zwcMguUKZJn8h5URUiMOca6Q==",
947
+
"dependencies": [
948
+
"@nothing-but/utils",
949
+
"@solid-primitives/event-listener",
950
+
"@solid-primitives/media",
951
+
"@solid-primitives/refs",
952
+
"@solid-primitives/rootless",
953
+
"@solid-primitives/scheduled",
954
+
"@solid-primitives/static-store",
955
+
"@solid-primitives/styles",
956
+
"@solid-primitives/utils",
957
+
"solid-js"
958
+
]
959
+
},
960
+
"@solid-primitives/bounds@0.1.3_solid-js@1.9.10__seroval@1.3.2": {
961
+
"integrity": "sha512-UbiyKMdSPmtijcEDnYLQL3zzaejpwWDAJJ4Gt5P0hgVs6A72piov0GyNw7V2SroH7NZFwxlYS22YmOr8A5xc1Q==",
962
+
"dependencies": [
963
+
"@solid-primitives/event-listener",
964
+
"@solid-primitives/resize-observer",
965
+
"@solid-primitives/static-store",
966
+
"@solid-primitives/utils",
967
+
"solid-js"
968
+
]
969
+
},
970
+
"@solid-primitives/event-listener@2.4.3_solid-js@1.9.10__seroval@1.3.2": {
971
+
"integrity": "sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==",
972
+
"dependencies": [
973
+
"@solid-primitives/utils",
974
+
"solid-js"
975
+
]
976
+
},
977
+
"@solid-primitives/keyboard@1.3.3_solid-js@1.9.10__seroval@1.3.2": {
978
+
"integrity": "sha512-9dQHTTgLBqyAI7aavtO+HnpTVJgWQA1ghBSrmLtMu1SMxLPDuLfuNr+Tk5udb4AL4Ojg7h9JrKOGEEDqsJXWJA==",
979
+
"dependencies": [
980
+
"@solid-primitives/event-listener",
981
+
"@solid-primitives/rootless",
982
+
"@solid-primitives/utils",
983
+
"solid-js"
984
+
]
985
+
},
986
+
"@solid-primitives/keyed@1.5.2_solid-js@1.9.10__seroval@1.3.2": {
987
+
"integrity": "sha512-BgoEdqPw48URnI+L5sZIHdF4ua4Las1eWEBBPaoSFs42kkhnHue+rwCBPL2Z9ebOyQ75sUhUfOETdJfmv0D6Kg==",
988
+
"dependencies": [
989
+
"solid-js"
990
+
]
991
+
},
992
+
"@solid-primitives/map@0.7.2_solid-js@1.9.10__seroval@1.3.2": {
993
+
"integrity": "sha512-sXK/rS68B4oq3XXNyLrzVhLtT1pnimmMUahd2FqhtYUuyQsCfnW058ptO1s+lWc2k8F/3zQSNVkZ2ifJjlcNbQ==",
994
+
"dependencies": [
995
+
"@solid-primitives/trigger",
996
+
"solid-js"
997
+
]
998
+
},
999
+
"@solid-primitives/media@2.3.3_solid-js@1.9.10__seroval@1.3.2": {
1000
+
"integrity": "sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA==",
1001
+
"dependencies": [
1002
+
"@solid-primitives/event-listener",
1003
+
"@solid-primitives/rootless",
1004
+
"@solid-primitives/static-store",
1005
+
"@solid-primitives/utils",
1006
+
"solid-js"
1007
+
]
1008
+
},
1009
+
"@solid-primitives/refs@1.1.2_solid-js@1.9.10__seroval@1.3.2": {
1010
+
"integrity": "sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg==",
1011
+
"dependencies": [
1012
+
"@solid-primitives/utils",
1013
+
"solid-js"
1014
+
]
1015
+
},
1016
+
"@solid-primitives/resize-observer@2.1.3_solid-js@1.9.10__seroval@1.3.2": {
1017
+
"integrity": "sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ==",
1018
+
"dependencies": [
1019
+
"@solid-primitives/event-listener",
1020
+
"@solid-primitives/rootless",
1021
+
"@solid-primitives/static-store",
1022
+
"@solid-primitives/utils",
1023
+
"solid-js"
1024
+
]
1025
+
},
1026
+
"@solid-primitives/rootless@1.5.2_solid-js@1.9.10__seroval@1.3.2": {
1027
+
"integrity": "sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ==",
1028
+
"dependencies": [
1029
+
"@solid-primitives/utils",
1030
+
"solid-js"
1031
+
]
1032
+
},
1033
+
"@solid-primitives/scheduled@1.5.2_solid-js@1.9.10__seroval@1.3.2": {
1034
+
"integrity": "sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA==",
1035
+
"dependencies": [
1036
+
"solid-js"
1037
+
]
1038
+
},
1039
+
"@solid-primitives/static-store@0.1.2_solid-js@1.9.10__seroval@1.3.2": {
1040
+
"integrity": "sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw==",
1041
+
"dependencies": [
1042
+
"@solid-primitives/utils",
1043
+
"solid-js"
1044
+
]
1045
+
},
1046
+
"@solid-primitives/styles@0.1.2_solid-js@1.9.10__seroval@1.3.2": {
1047
+
"integrity": "sha512-7iX5K+J5b1PRrbgw3Ki92uvU2LgQ0Kd/QMsrAZxDg5dpUBwMyTijZkA3bbs1ikZsT1oQhS41bTyKbjrXeU0Awg==",
1048
+
"dependencies": [
1049
+
"@solid-primitives/rootless",
1050
+
"@solid-primitives/utils",
1051
+
"solid-js"
1052
+
]
1053
+
},
1054
+
"@solid-primitives/trigger@1.2.2_solid-js@1.9.10__seroval@1.3.2": {
1055
+
"integrity": "sha512-IWoptVc0SWYgmpBPpCMehS5b07+tpFcvw15tOQ3QbXedSYn6KP8zCjPkHNzMxcOvOicTneleeZDP7lqmz+PQ6g==",
1056
+
"dependencies": [
1057
+
"@solid-primitives/utils",
1058
+
"solid-js"
1059
+
]
1060
+
},
1061
+
"@solid-primitives/utils@6.3.2_solid-js@1.9.10__seroval@1.3.2": {
1062
+
"integrity": "sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==",
1063
+
"dependencies": [
1064
+
"solid-js"
1065
+
]
1066
+
},
1067
+
"@standard-schema/spec@1.0.0": {
1068
+
"integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="
1069
+
},
1070
+
"@swc/helpers@0.5.17": {
1071
+
"integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
1072
+
"dependencies": [
1073
+
"tslib"
1074
+
]
1075
+
},
1076
+
"@ts-morph/common@0.28.1": {
1077
+
"integrity": "sha512-W74iWf7ILp1ZKNYXY5qbddNaml7e9Sedv5lvU1V8lftlitkc9Pq1A+jlH23ltDgWYeZFFEqGCD1Ies9hqu3O+g==",
1078
+
"dependencies": [
1079
+
"minimatch",
1080
+
"path-browserify",
1081
+
"tinyglobby"
1082
+
]
1083
+
},
1084
+
"@types/babel__core@7.20.5": {
1085
+
"integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
1086
+
"dependencies": [
1087
+
"@babel/parser",
1088
+
"@babel/types",
1089
+
"@types/babel__generator",
1090
+
"@types/babel__template",
1091
+
"@types/babel__traverse"
1092
+
]
1093
+
},
1094
+
"@types/babel__generator@7.27.0": {
1095
+
"integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
1096
+
"dependencies": [
1097
+
"@babel/types"
1098
+
]
1099
+
},
1100
+
"@types/babel__template@7.4.4": {
1101
+
"integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
1102
+
"dependencies": [
1103
+
"@babel/parser",
1104
+
"@babel/types"
1105
+
]
1106
+
},
1107
+
"@types/babel__traverse@7.28.0": {
1108
+
"integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
1109
+
"dependencies": [
1110
+
"@babel/types"
1111
+
]
1112
+
},
1113
+
"@types/dom-mediacapture-transform@0.1.11": {
1114
+
"integrity": "sha512-Y2p+nGf1bF2XMttBnsVPHUWzRRZzqUoJAKmiP10b5umnO6DDrWI0BrGDJy1pOHoOULVmGSfFNkQrAlC5dcj6nQ==",
1115
+
"dependencies": [
1116
+
"@types/dom-webcodecs"
1117
+
]
1118
+
},
1119
+
"@types/dom-webcodecs@0.1.13": {
1120
+
"integrity": "sha512-O5hkiFIcjjszPIYyUSyvScyvrBoV3NOEEZx/pMlsu44TKzWNkLVBBxnxJz42in5n3QIolYOcBYFCPZZ0h8SkwQ=="
1121
+
},
1122
+
"@types/estree@1.0.8": {
1123
+
"integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="
1124
+
},
1125
+
"@types/node@17.0.45": {
1126
+
"integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw=="
1127
+
},
1128
+
"@vue/compiler-core@3.5.22": {
1129
+
"integrity": "sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==",
1130
+
"dependencies": [
1131
+
"@babel/parser",
1132
+
"@vue/shared",
1133
+
"entities@4.5.0",
1134
+
"estree-walker",
1135
+
"source-map-js"
1136
+
]
1137
+
},
1138
+
"@vue/compiler-dom@3.5.22": {
1139
+
"integrity": "sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==",
1140
+
"dependencies": [
1141
+
"@vue/compiler-core",
1142
+
"@vue/shared"
1143
+
]
1144
+
},
1145
+
"@vue/compiler-sfc@3.5.22": {
1146
+
"integrity": "sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==",
1147
+
"dependencies": [
1148
+
"@babel/parser",
1149
+
"@vue/compiler-core",
1150
+
"@vue/compiler-dom",
1151
+
"@vue/compiler-ssr",
1152
+
"@vue/shared",
1153
+
"estree-walker",
1154
+
"magic-string",
1155
+
"postcss",
1156
+
"source-map-js"
1157
+
]
1158
+
},
1159
+
"@vue/compiler-ssr@3.5.22": {
1160
+
"integrity": "sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==",
1161
+
"dependencies": [
1162
+
"@vue/compiler-dom",
1163
+
"@vue/shared"
1164
+
]
1165
+
},
1166
+
"@vue/shared@3.5.22": {
1167
+
"integrity": "sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w=="
1168
+
},
1169
+
"@zag-js/accordion@0.62.1": {
1170
+
"integrity": "sha512-1lMKuD1GbiMuemOHOu+24BSAAG8iTD6l/4zYrQRBCTsxXzHhWqTtLF7okGgmSAs8iyNfOuWefCfaJJ3BJNSh5A==",
1171
+
"dependencies": [
1172
+
"@zag-js/anatomy@0.62.1",
1173
+
"@zag-js/core@0.62.1",
1174
+
"@zag-js/dom-event",
1175
+
"@zag-js/dom-query@0.62.1",
1176
+
"@zag-js/types@0.62.1",
1177
+
"@zag-js/utils@0.62.1"
1178
+
]
1179
+
},
1180
+
"@zag-js/accordion@1.27.1": {
1181
+
"integrity": "sha512-c6Ny0M/I4gqhcemD7THNBIKiBXLgJnRLmT1oOSZdPmwWI8Y6HMS/As8DDV3hsyzV/X26dbZiuJtuylAepMN3bQ==",
1182
+
"dependencies": [
1183
+
"@zag-js/anatomy@1.27.1",
1184
+
"@zag-js/core@1.27.1",
1185
+
"@zag-js/dom-query@1.27.1",
1186
+
"@zag-js/types@1.27.1",
1187
+
"@zag-js/utils@1.27.1"
1188
+
]
1189
+
},
1190
+
"@zag-js/anatomy@0.62.1": {
1191
+
"integrity": "sha512-1JiPQOyVlO1jHwLTSNJpyfy1R1UYoaVU1mKSUww5+htAuT/1txjs04pr+8vTF/L/UVzNEZZYepB1tTabyb9LYg=="
1192
+
},
1193
+
"@zag-js/anatomy@1.27.1": {
1194
+
"integrity": "sha512-vAgZ9RFm9wSucTMpbV1ZY2soZ6ZHQ9JAMOkLy1EPkWyE7+68VxzDh8rKc3Gq3LAjowgF2yR8tIe05njP9KFRjg=="
1195
+
},
1196
+
"@zag-js/angle-slider@1.27.1": {
1197
+
"integrity": "sha512-92rFGXNZTI4KwQPyxlSWMkaaLPgppK8MSUHR9+fhyULDqlGI3DlBrAB9J+jYQxt44rcBMWxGmbherDIz904d9g==",
1198
+
"dependencies": [
1199
+
"@zag-js/anatomy@1.27.1",
1200
+
"@zag-js/core@1.27.1",
1201
+
"@zag-js/dom-query@1.27.1",
1202
+
"@zag-js/rect-utils@1.27.1",
1203
+
"@zag-js/types@1.27.1",
1204
+
"@zag-js/utils@1.27.1"
1205
+
]
1206
+
},
1207
+
"@zag-js/aria-hidden@0.62.1": {
1208
+
"integrity": "sha512-vVV8bwZhNU+AOOf/USEGV/n9zuTID+spHeC9ZAj29ibWAMmaiq2bx4t1kO4v9eKqKXULUBPPrZQ7CX7oiU616A==",
1209
+
"dependencies": [
1210
+
"@zag-js/dom-query@0.62.1"
1211
+
]
1212
+
},
1213
+
"@zag-js/aria-hidden@1.27.1": {
1214
+
"integrity": "sha512-8ax2IG0jOJnvNMb20INgxa5OS7jvr14dxuc8vgaNR9a0yfWzIuINp/O0FrN+8GNzaJzGMODwqGb0I7AOOIOAbw==",
1215
+
"dependencies": [
1216
+
"@zag-js/dom-query@1.27.1"
1217
+
]
1218
+
},
1219
+
"@zag-js/async-list@1.27.1": {
1220
+
"integrity": "sha512-wJkGMrlsKCsbIyTDreRL7ErAC+vwfV8DgpCx1kiY6pwnG4Lq09NR/Qprpwm+vh0d3kJdV2dJes0+dAwp3TvTtw==",
1221
+
"dependencies": [
1222
+
"@zag-js/core@1.27.1",
1223
+
"@zag-js/utils@1.27.1"
1224
+
]
1225
+
},
1226
+
"@zag-js/auto-resize@0.62.1": {
1227
+
"integrity": "sha512-nznVkAsZGS+L+VhNO8hPnEyvagNhTezkb64SSPa8E49hJHS2DEN3T5hKCx86tDuiCMd0EdjwUCCQq3pnbzbnCQ==",
1228
+
"dependencies": [
1229
+
"@zag-js/dom-query@0.62.1"
1230
+
]
1231
+
},
1232
+
"@zag-js/auto-resize@1.27.1": {
1233
+
"integrity": "sha512-1hfHePSLs2AcESHUTzZhizn6lCCUeqwsWB4MsJwUzEqpGoW7DOKfOy27mfX50YlU7ttJOjlpYJ+Fp2g5FnzWWA==",
1234
+
"dependencies": [
1235
+
"@zag-js/dom-query@1.27.1"
1236
+
]
1237
+
},
1238
+
"@zag-js/avatar@0.62.1": {
1239
+
"integrity": "sha512-J+IRqJlpL4S9ikCQle/FHj6p8uT8Ee/D88u4k7m/An4Ot1FcrfKqfC3INB5YOI+d8hkIQVtEIAC8Yt/s4OzAMg==",
1240
+
"dependencies": [
1241
+
"@zag-js/anatomy@0.62.1",
1242
+
"@zag-js/core@0.62.1",
1243
+
"@zag-js/dom-query@0.62.1",
1244
+
"@zag-js/types@0.62.1",
1245
+
"@zag-js/utils@0.62.1"
1246
+
]
1247
+
},
1248
+
"@zag-js/avatar@1.27.1": {
1249
+
"integrity": "sha512-HTxhl+06CefIQIDnFvEdazCe0To3HDeYx+KrJ7UdBGUgGHVQ/n3/767QdrtIS26h71rTV9q7dMEsmr4ttugn6w==",
1250
+
"dependencies": [
1251
+
"@zag-js/anatomy@1.27.1",
1252
+
"@zag-js/core@1.27.1",
1253
+
"@zag-js/dom-query@1.27.1",
1254
+
"@zag-js/types@1.27.1",
1255
+
"@zag-js/utils@1.27.1"
1256
+
]
1257
+
},
1258
+
"@zag-js/bottom-sheet@1.27.1": {
1259
+
"integrity": "sha512-priPNZJd5/c8FhzGDCLEmwRxoKqd1/LyOc+hR+xd1iEDKGrhG4VlE3YKNUicUh1FK6zGYysjPTA4s3rRWL1CTg==",
1260
+
"dependencies": [
1261
+
"@zag-js/anatomy@1.27.1",
1262
+
"@zag-js/aria-hidden@1.27.1",
1263
+
"@zag-js/core@1.27.1",
1264
+
"@zag-js/dismissable@1.27.1",
1265
+
"@zag-js/dom-query@1.27.1",
1266
+
"@zag-js/focus-trap",
1267
+
"@zag-js/remove-scroll@1.27.1",
1268
+
"@zag-js/types@1.27.1",
1269
+
"@zag-js/utils@1.27.1"
1270
+
]
1271
+
},
1272
+
"@zag-js/carousel@0.62.1": {
1273
+
"integrity": "sha512-0YQ2jJjzaS1zFLVnPBslVKI8/fY2Z6aOrcJbBjxozG27iSS6zEqmbsz3OOtcYJRlB8jLboZutpMBs3PGh5zg5Q==",
1274
+
"dependencies": [
1275
+
"@zag-js/anatomy@0.62.1",
1276
+
"@zag-js/core@0.62.1",
1277
+
"@zag-js/dom-query@0.62.1",
1278
+
"@zag-js/types@0.62.1",
1279
+
"@zag-js/utils@0.62.1"
1280
+
]
1281
+
},
1282
+
"@zag-js/carousel@1.27.1": {
1283
+
"integrity": "sha512-3lU5KksoEsuT6sR8GZ85K2oxXRQojbK429CsuDolD1d6zoyUC81ORPxNmka5qCFlgO981NVFdrNfWX1ftlSQSQ==",
1284
+
"dependencies": [
1285
+
"@zag-js/anatomy@1.27.1",
1286
+
"@zag-js/core@1.27.1",
1287
+
"@zag-js/dom-query@1.27.1",
1288
+
"@zag-js/scroll-snap",
1289
+
"@zag-js/types@1.27.1",
1290
+
"@zag-js/utils@1.27.1"
1291
+
]
1292
+
},
1293
+
"@zag-js/checkbox@0.62.1": {
1294
+
"integrity": "sha512-xiubQLhRXedlZe4Vc6zxaDFWLSpRdGEG0jTrF3OXovYZLN7bmq0iXiYcWqsLa012+2dYN9w5B1zfQQlzf4sk2w==",
1295
+
"dependencies": [
1296
+
"@zag-js/anatomy@0.62.1",
1297
+
"@zag-js/core@0.62.1",
1298
+
"@zag-js/dom-event",
1299
+
"@zag-js/dom-query@0.62.1",
1300
+
"@zag-js/form-utils",
1301
+
"@zag-js/types@0.62.1",
1302
+
"@zag-js/utils@0.62.1"
1303
+
]
1304
+
},
1305
+
"@zag-js/checkbox@1.27.1": {
1306
+
"integrity": "sha512-aRyAWI1bH2IwdaCOV6YRtCBdHoCyRo9xd1kAnxSn1/Lb+vVQgs2MJrwOUcd7aNLRxpqpeKbUKIgqqgkQQkLmZw==",
1307
+
"dependencies": [
1308
+
"@zag-js/anatomy@1.27.1",
1309
+
"@zag-js/core@1.27.1",
1310
+
"@zag-js/dom-query@1.27.1",
1311
+
"@zag-js/focus-visible",
1312
+
"@zag-js/types@1.27.1",
1313
+
"@zag-js/utils@1.27.1"
1314
+
]
1315
+
},
1316
+
"@zag-js/clipboard@0.62.1": {
1317
+
"integrity": "sha512-gEhCGLkAlrgNWkd7ZqF4p4yNKsR54+0YQPevEv7iX9oio8T/F8OWaDmDjA4NsXxqRe6hr5KLJbVp8dYRop30TQ==",
1318
+
"dependencies": [
1319
+
"@zag-js/anatomy@0.62.1",
1320
+
"@zag-js/core@0.62.1",
1321
+
"@zag-js/dom-query@0.62.1",
1322
+
"@zag-js/types@0.62.1",
1323
+
"@zag-js/utils@0.62.1"
1324
+
]
1325
+
},
1326
+
"@zag-js/clipboard@1.27.1": {
1327
+
"integrity": "sha512-Zx9MnvFb5Dx/ajtDJy0tnH+H7/W7Bgu4P5bXiCs+v0qCcWwd/CpW9tTHD6IiF7TBr/FqSWT8mAruPf4rrjIqAw==",
1328
+
"dependencies": [
1329
+
"@zag-js/anatomy@1.27.1",
1330
+
"@zag-js/core@1.27.1",
1331
+
"@zag-js/dom-query@1.27.1",
1332
+
"@zag-js/types@1.27.1",
1333
+
"@zag-js/utils@1.27.1"
1334
+
]
1335
+
},
1336
+
"@zag-js/collapsible@0.62.1": {
1337
+
"integrity": "sha512-M4hsuqf6dVra6RvKaxQjgQjZ+iYj3XH84w6QOnt/SXbJauQoE6nfy77RI/A8O2pPuP6uLq0h2E9Eo3ftcbGBoQ==",
1338
+
"dependencies": [
1339
+
"@zag-js/anatomy@0.62.1",
1340
+
"@zag-js/core@0.62.1",
1341
+
"@zag-js/dom-query@0.62.1",
1342
+
"@zag-js/types@0.62.1",
1343
+
"@zag-js/utils@0.62.1"
1344
+
]
1345
+
},
1346
+
"@zag-js/collapsible@1.27.1": {
1347
+
"integrity": "sha512-y+jw3N9BiIRaCtUFgpIC+Da1Fxn+DgwXnPdt2Ufk7xwDinRcOfD6ueGY+jBEFbZvVlOYzf+wU3rCopeKFNIh2Q==",
1348
+
"dependencies": [
1349
+
"@zag-js/anatomy@1.27.1",
1350
+
"@zag-js/core@1.27.1",
1351
+
"@zag-js/dom-query@1.27.1",
1352
+
"@zag-js/types@1.27.1",
1353
+
"@zag-js/utils@1.27.1"
1354
+
]
1355
+
},
1356
+
"@zag-js/collection@0.62.1": {
1357
+
"integrity": "sha512-Qg3OvGCvcoeV4u8IcQmNCu4dChRttVyQ9DF8Ab0qlyrjRDF+w8vMAcNcgNqn10/xX4A7B743cz023LooVsW6VA==",
1358
+
"dependencies": [
1359
+
"@zag-js/utils@0.62.1"
1360
+
]
1361
+
},
1362
+
"@zag-js/collection@1.27.1": {
1363
+
"integrity": "sha512-zcf2GIpsACn0RUpNJSpRmbWOLbuiqMkRgZP4+Ub2Wy6lsYKi3Fou2A9o6Sm6HuNYMLJYRvos0oEEktHNJsLNyw==",
1364
+
"dependencies": [
1365
+
"@zag-js/utils@1.27.1"
1366
+
]
1367
+
},
1368
+
"@zag-js/color-picker@0.62.1": {
1369
+
"integrity": "sha512-GLeADGcoMLcVS+UM6rn/c1BmBgSB2uTc5AWBkuKoH7TktsKo6+T/v3/QZIU7/b69qBAp3/vWZti99Flw42IDdw==",
1370
+
"dependencies": [
1371
+
"@zag-js/anatomy@0.62.1",
1372
+
"@zag-js/color-utils@0.62.1",
1373
+
"@zag-js/core@0.62.1",
1374
+
"@zag-js/dismissable@0.62.1",
1375
+
"@zag-js/dom-event",
1376
+
"@zag-js/dom-query@0.62.1",
1377
+
"@zag-js/form-utils",
1378
+
"@zag-js/popper@0.62.1",
1379
+
"@zag-js/text-selection",
1380
+
"@zag-js/types@0.62.1",
1381
+
"@zag-js/utils@0.62.1"
1382
+
]
1383
+
},
1384
+
"@zag-js/color-picker@1.27.1": {
1385
+
"integrity": "sha512-aF/fPHQ4p6YxiMmCGZ7BB9BjGltY3X59vckLv4PqXimJQg+H9L4RBXzFQzzVZI8h8s/ycg2mwHHJfnKyTklvhw==",
1386
+
"dependencies": [
1387
+
"@zag-js/anatomy@1.27.1",
1388
+
"@zag-js/color-utils@1.27.1",
1389
+
"@zag-js/core@1.27.1",
1390
+
"@zag-js/dismissable@1.27.1",
1391
+
"@zag-js/dom-query@1.27.1",
1392
+
"@zag-js/popper@1.27.1",
1393
+
"@zag-js/types@1.27.1",
1394
+
"@zag-js/utils@1.27.1"
1395
+
]
1396
+
},
1397
+
"@zag-js/color-utils@0.62.1": {
1398
+
"integrity": "sha512-uXsEA0xsI4NT7YFwWZldy7LXsk32Ta+41MrckhzbSA766v+bW4sFDUYmJxwLkN4nl1QzlLAlGghhauXmW9Fs8g==",
1399
+
"dependencies": [
1400
+
"@zag-js/numeric-range"
1401
+
]
1402
+
},
1403
+
"@zag-js/color-utils@1.27.1": {
1404
+
"integrity": "sha512-fiwHh1tDTwNv3ME5zT4wgr9wcrqsfpfcUj+gSfne0MQWEdKseObXrrQwdGjf97udEsr0RTagseDPXrKG78U24g==",
1405
+
"dependencies": [
1406
+
"@zag-js/utils@1.27.1"
1407
+
]
1408
+
},
1409
+
"@zag-js/combobox@0.62.1": {
1410
+
"integrity": "sha512-EovqyFqD61YmYJYc42qKH2OE7GxMm3gamWLU/lvZe/3eyZt6TsxFe2xeP7WSsvq2v90myMajAnUb0DOpvYaCKw==",
1411
+
"dependencies": [
1412
+
"@zag-js/anatomy@0.62.1",
1413
+
"@zag-js/aria-hidden@0.62.1",
1414
+
"@zag-js/collection@0.62.1",
1415
+
"@zag-js/core@0.62.1",
1416
+
"@zag-js/dismissable@0.62.1",
1417
+
"@zag-js/dom-event",
1418
+
"@zag-js/dom-query@0.62.1",
1419
+
"@zag-js/popper@0.62.1",
1420
+
"@zag-js/types@0.62.1",
1421
+
"@zag-js/utils@0.62.1"
1422
+
]
1423
+
},
1424
+
"@zag-js/combobox@1.27.1": {
1425
+
"integrity": "sha512-Q+fC5SQgsLNdZoaaG1TbSZbvgm5H/tjaAbOull2zyrQzoe20WLCTJgHCWmVm1X0u5mEKXVf8xISzys8a+LJxwg==",
1426
+
"dependencies": [
1427
+
"@zag-js/anatomy@1.27.1",
1428
+
"@zag-js/aria-hidden@1.27.1",
1429
+
"@zag-js/collection@1.27.1",
1430
+
"@zag-js/core@1.27.1",
1431
+
"@zag-js/dismissable@1.27.1",
1432
+
"@zag-js/dom-query@1.27.1",
1433
+
"@zag-js/popper@1.27.1",
1434
+
"@zag-js/types@1.27.1",
1435
+
"@zag-js/utils@1.27.1"
1436
+
]
1437
+
},
1438
+
"@zag-js/core@0.62.1": {
1439
+
"integrity": "sha512-ZSjqnV5vcGDassjmZ/lxWbG244A0i+IHImVZ/a4/0JkjkH126ly+At4FC+HI571pNKiNlrqYmGzRRSBMqm37yQ==",
1440
+
"dependencies": [
1441
+
"@zag-js/store@0.62.1",
1442
+
"klona"
1443
+
]
1444
+
},
1445
+
"@zag-js/core@1.27.1": {
1446
+
"integrity": "sha512-C35SJO7O5fyzgk+mhTSRWiApz0QP2MngT/qgCrSEDHss0ESd1scQylpDK8LrKDGHyYObJLLJhOAoeHWKALBTPA==",
1447
+
"dependencies": [
1448
+
"@zag-js/dom-query@1.27.1",
1449
+
"@zag-js/utils@1.27.1"
1450
+
]
1451
+
},
1452
+
"@zag-js/date-picker@0.62.1_@internationalized+date@3.5.5": {
1453
+
"integrity": "sha512-Wl6yzMtrTy7XgDFbYJaRO8M5dkxLPBvAo3ilDvFBicbJViJCZ9pg1AJYh+xGaK/gfAd7O9wBdYJdHxfESlmlDg==",
1454
+
"dependencies": [
1455
+
"@internationalized/date@3.5.5",
1456
+
"@zag-js/anatomy@0.62.1",
1457
+
"@zag-js/core@0.62.1",
1458
+
"@zag-js/date-utils@0.62.1_@internationalized+date@3.5.5",
1459
+
"@zag-js/dismissable@0.62.1",
1460
+
"@zag-js/dom-event",
1461
+
"@zag-js/dom-query@0.62.1",
1462
+
"@zag-js/form-utils",
1463
+
"@zag-js/live-region@0.62.1",
1464
+
"@zag-js/popper@0.62.1",
1465
+
"@zag-js/text-selection",
1466
+
"@zag-js/types@0.62.1",
1467
+
"@zag-js/utils@0.62.1"
1468
+
]
1469
+
},
1470
+
"@zag-js/date-picker@1.27.1_@internationalized+date@3.10.0": {
1471
+
"integrity": "sha512-Hf3C6p+rOa7kamvRCaa4iJZZhAQoT6CMnp7V1jy57ICwpiXMhZ78HlzVZBKWmNuZlzibwzx6okfodlidMp+Mhg==",
1472
+
"dependencies": [
1473
+
"@internationalized/date@3.10.0",
1474
+
"@zag-js/anatomy@1.27.1",
1475
+
"@zag-js/core@1.27.1",
1476
+
"@zag-js/date-utils@1.27.1_@internationalized+date@3.10.0",
1477
+
"@zag-js/dismissable@1.27.1",
1478
+
"@zag-js/dom-query@1.27.1",
1479
+
"@zag-js/live-region@1.27.1",
1480
+
"@zag-js/popper@1.27.1",
1481
+
"@zag-js/types@1.27.1",
1482
+
"@zag-js/utils@1.27.1"
1483
+
]
1484
+
},
1485
+
"@zag-js/date-utils@0.62.1_@internationalized+date@3.10.0": {
1486
+
"integrity": "sha512-YBqT5YRtHOCDS2IcCZtrq7BfzBkU5c+Sc2pVTncf06/3jxjE6l6YbBncMPu5a3uWKjNld1wOTFszhSoPKZfrJA==",
1487
+
"dependencies": [
1488
+
"@internationalized/date@3.10.0"
1489
+
]
1490
+
},
1491
+
"@zag-js/date-utils@0.62.1_@internationalized+date@3.5.5": {
1492
+
"integrity": "sha512-YBqT5YRtHOCDS2IcCZtrq7BfzBkU5c+Sc2pVTncf06/3jxjE6l6YbBncMPu5a3uWKjNld1wOTFszhSoPKZfrJA==",
1493
+
"dependencies": [
1494
+
"@internationalized/date@3.5.5"
1495
+
]
1496
+
},
1497
+
"@zag-js/date-utils@1.27.1_@internationalized+date@3.10.0": {
1498
+
"integrity": "sha512-0s5qZAv+ZDRtg1fv848yC/2lt8dqNVN3DpW+JmOFioR9Cp2y+aBd+Ae5Y5Zh13kPcRvwDNVJ+kaeBOTJ9756Wg==",
1499
+
"dependencies": [
1500
+
"@internationalized/date@3.10.0"
1501
+
]
1502
+
},
1503
+
"@zag-js/dialog@0.62.1": {
1504
+
"integrity": "sha512-7YRvWZ9UMUjFz0q537/uaTMBljLimWISfVHkUSa2ngbXB8LPYYbqYv5Vio2rvRFqy3nJR3HTO4cGZJGDjO655g==",
1505
+
"dependencies": [
1506
+
"@zag-js/anatomy@0.62.1",
1507
+
"@zag-js/aria-hidden@0.62.1",
1508
+
"@zag-js/core@0.62.1",
1509
+
"@zag-js/dismissable@0.62.1",
1510
+
"@zag-js/dom-query@0.62.1",
1511
+
"@zag-js/remove-scroll@0.62.1",
1512
+
"@zag-js/types@0.62.1",
1513
+
"@zag-js/utils@0.62.1",
1514
+
"focus-trap"
1515
+
]
1516
+
},
1517
+
"@zag-js/dialog@1.27.1": {
1518
+
"integrity": "sha512-FHRSqZaiFu60NMuNE+jdXFDgkapVBtaJG+ts4CHn9wKnyQYmao41Nin5ZEQI8DaLgzxkBAgwEwg33FQ5L+99mg==",
1519
+
"dependencies": [
1520
+
"@zag-js/anatomy@1.27.1",
1521
+
"@zag-js/aria-hidden@1.27.1",
1522
+
"@zag-js/core@1.27.1",
1523
+
"@zag-js/dismissable@1.27.1",
1524
+
"@zag-js/dom-query@1.27.1",
1525
+
"@zag-js/focus-trap",
1526
+
"@zag-js/remove-scroll@1.27.1",
1527
+
"@zag-js/types@1.27.1",
1528
+
"@zag-js/utils@1.27.1"
1529
+
]
1530
+
},
1531
+
"@zag-js/dismissable@0.62.1": {
1532
+
"integrity": "sha512-muGTBISpjQEWLCrsYa9wAFaGXlVxYtyMaDgpcPpQdQPwZF86b445y4d8h9FjwkESdJ6Zcdjn21pu5CWD28T3uQ==",
1533
+
"dependencies": [
1534
+
"@zag-js/dom-event",
1535
+
"@zag-js/dom-query@0.62.1",
1536
+
"@zag-js/interact-outside@0.62.1",
1537
+
"@zag-js/utils@0.62.1"
1538
+
]
1539
+
},
1540
+
"@zag-js/dismissable@1.27.1": {
1541
+
"integrity": "sha512-EZ9xq47m50scGV8JHYTAIL1DjnoFYChBC68cE9XNsqZO2vOINdYAfzsH73otx/CQ6RkhSk7eymP4fIzZVtRTVw==",
1542
+
"dependencies": [
1543
+
"@zag-js/dom-query@1.27.1",
1544
+
"@zag-js/interact-outside@1.27.1",
1545
+
"@zag-js/utils@1.27.1"
1546
+
]
1547
+
},
1548
+
"@zag-js/dom-event@0.62.1": {
1549
+
"integrity": "sha512-/+okVW69Xdoot7dutJVMz0iciwWM6DvAeLWr7LB5DZsUQMu93oqV/8BE2JArDxEcg5C208HNThGStcWlTaddgA==",
1550
+
"dependencies": [
1551
+
"@zag-js/dom-query@0.62.1",
1552
+
"@zag-js/text-selection",
1553
+
"@zag-js/types@0.62.1"
1554
+
]
1555
+
},
1556
+
"@zag-js/dom-query@0.62.1": {
1557
+
"integrity": "sha512-sI/urNd3QX/WI7Sii+X1Z/OTWNisn7EaW3T0X9Rbn41u79DC4KeUnP+wpIq1igSJNH2zQWIWBLJ1OGhAjuSl5g=="
1558
+
},
1559
+
"@zag-js/dom-query@1.27.1": {
1560
+
"integrity": "sha512-+oyhPQ6of1zCCK8iTaxxQc2FMFEJz1mr+1571vaSRdoxG31GhNkq/QDfUvQQnRR+2HV9yNiFk4hcjCDGqdXDTQ==",
1561
+
"dependencies": [
1562
+
"@zag-js/types@1.27.1"
1563
+
]
1564
+
},
1565
+
"@zag-js/editable@0.62.1": {
1566
+
"integrity": "sha512-BkPLV8T9ixdhz3IxvseV24a1pBNmYhR1np+JUKap0C8thtFbDoF361haEQjCqTCfHDv+j5l1rtq/+H/TF3eEIg==",
1567
+
"dependencies": [
1568
+
"@zag-js/anatomy@0.62.1",
1569
+
"@zag-js/core@0.62.1",
1570
+
"@zag-js/dom-event",
1571
+
"@zag-js/dom-query@0.62.1",
1572
+
"@zag-js/form-utils",
1573
+
"@zag-js/interact-outside@0.62.1",
1574
+
"@zag-js/types@0.62.1",
1575
+
"@zag-js/utils@0.62.1"
1576
+
]
1577
+
},
1578
+
"@zag-js/editable@1.27.1": {
1579
+
"integrity": "sha512-JnmrMLijCpIdYmR3PHFFS5oiQkuYsqoZPy9Rt5N6nUhy96IhznaDWghd2mCdxowwSRVySiplJ6qeR+CSgRY5og==",
1580
+
"dependencies": [
1581
+
"@zag-js/anatomy@1.27.1",
1582
+
"@zag-js/core@1.27.1",
1583
+
"@zag-js/dom-query@1.27.1",
1584
+
"@zag-js/interact-outside@1.27.1",
1585
+
"@zag-js/types@1.27.1",
1586
+
"@zag-js/utils@1.27.1"
1587
+
]
1588
+
},
1589
+
"@zag-js/element-rect@0.62.1": {
1590
+
"integrity": "sha512-SefRp1IeiENoUkl7yxGzUIdxtQqgKlI+G1qlgx9MZgchH2VZCpqi+EuZgLEKzz7REMabOYqbgs6EEIxGIyNueg=="
1591
+
},
1592
+
"@zag-js/element-size@0.62.1": {
1593
+
"integrity": "sha512-QCtVeIJ611hJPorKEkdfrWWcMohadplZoW8xQW/2PLSmKUhTNLfHsZLyeoYKyj5Jk4X8OAN4onnMVETFw232EA=="
1594
+
},
1595
+
"@zag-js/file-upload@0.62.1": {
1596
+
"integrity": "sha512-Wh33acYMJLNRIV2y0GdSZqoN3aX/t/uzIBWh3rVsN7tpjDYWXLYIsXQttkGLFf0sgICK+3PVD+LLaIpiGDh4+Q==",
1597
+
"dependencies": [
1598
+
"@zag-js/anatomy@0.62.1",
1599
+
"@zag-js/core@0.62.1",
1600
+
"@zag-js/dom-query@0.62.1",
1601
+
"@zag-js/file-utils@0.62.1",
1602
+
"@zag-js/i18n-utils@0.62.1",
1603
+
"@zag-js/types@0.62.1",
1604
+
"@zag-js/utils@0.62.1"
1605
+
]
1606
+
},
1607
+
"@zag-js/file-upload@1.27.1": {
1608
+
"integrity": "sha512-xChLU5NGnHn/G+L4GDPkCOa8XWY/gHeBbvQAaHItFKTpVmjWwM8uZ6X/utcWuZmdmUU8j/YfWYmCGdyux58I9Q==",
1609
+
"dependencies": [
1610
+
"@zag-js/anatomy@1.27.1",
1611
+
"@zag-js/core@1.27.1",
1612
+
"@zag-js/dom-query@1.27.1",
1613
+
"@zag-js/file-utils@1.27.1",
1614
+
"@zag-js/i18n-utils@1.27.1",
1615
+
"@zag-js/types@1.27.1",
1616
+
"@zag-js/utils@1.27.1"
1617
+
]
1618
+
},
1619
+
"@zag-js/file-utils@0.62.1": {
1620
+
"integrity": "sha512-p363S2pqz29wf1shcSfoY2GI9wWrJkKamNiwuehqoYFh2b8isrcWFVL3VYxm937N1/m5+rtMATQbn0a9j9sggA==",
1621
+
"dependencies": [
1622
+
"@zag-js/i18n-utils@0.62.1"
1623
+
]
1624
+
},
1625
+
"@zag-js/file-utils@1.27.1": {
1626
+
"integrity": "sha512-Ov5gMd7qUGdWydfjmtq/sm+PEl0LdJr7G4VuLZz3b4pJYVDBMv3pEHRXJj5x+b4mgm5U82vncE/itg/1Z08wKA==",
1627
+
"dependencies": [
1628
+
"@zag-js/i18n-utils@1.27.1"
1629
+
]
1630
+
},
1631
+
"@zag-js/floating-panel@1.27.1": {
1632
+
"integrity": "sha512-BcTZ4oJj+V+kAhbXXRWS68ivbiVIT3Q6NhcpZ8M4Hv4x7tpsfxC+J9/qsTX4/LF1LYGZZ0v7QidaWa7t4gDGCA==",
1633
+
"dependencies": [
1634
+
"@zag-js/anatomy@1.27.1",
1635
+
"@zag-js/core@1.27.1",
1636
+
"@zag-js/dom-query@1.27.1",
1637
+
"@zag-js/popper@1.27.1",
1638
+
"@zag-js/rect-utils@1.27.1",
1639
+
"@zag-js/store@1.27.1",
1640
+
"@zag-js/types@1.27.1",
1641
+
"@zag-js/utils@1.27.1"
1642
+
]
1643
+
},
1644
+
"@zag-js/focus-trap@1.27.1": {
1645
+
"integrity": "sha512-dHjN8Cxx2q7GyxfLhx6/FZgHRwTz4JnKT0bQxP3PjWsBQM1bVbFIJCL3lRy4NYQ1rJ1DA0LSbTecqqlKv4DgUw==",
1646
+
"dependencies": [
1647
+
"@zag-js/dom-query@1.27.1"
1648
+
]
1649
+
},
1650
+
"@zag-js/focus-visible@1.27.1": {
1651
+
"integrity": "sha512-KGQAoiEejkEi0NMS33Q8mc7kedB0Y4g8WyKNaVlMgnqCEpi39cHkszgyZEvX1SYWfv4+RezQGfYOKo0Y6ze4uQ==",
1652
+
"dependencies": [
1653
+
"@zag-js/dom-query@1.27.1"
1654
+
]
1655
+
},
1656
+
"@zag-js/form-utils@0.62.1": {
1657
+
"integrity": "sha512-GJWRRtEpro8TNEUuEWMhIOWmVFXqiHNTTrrRLxijxUIWbsPrPdPiKL7qwBAESYoZQCmN0hU99S0w2Xmm7Q05Zg=="
1658
+
},
1659
+
"@zag-js/highlight-word@1.27.1": {
1660
+
"integrity": "sha512-4lmudpn2VfhIlDqfXzUOYqTsUMIXSZRMEeUbyhdidGGXM/r5rUXoYtHQ4wuIF48CUMuAzoAk2yn5hJm1csi8Dw=="
1661
+
},
1662
+
"@zag-js/hover-card@0.62.1": {
1663
+
"integrity": "sha512-ryiNHQmmHpiDiZ5nuk9nvGUgnT017q8hYf+wLSI5OJ+klHPjrHObb7I7v/fUmKzWNtIOhaL0uw9afzjRt3bLEw==",
1664
+
"dependencies": [
1665
+
"@zag-js/anatomy@0.62.1",
1666
+
"@zag-js/core@0.62.1",
1667
+
"@zag-js/dismissable@0.62.1",
1668
+
"@zag-js/dom-query@0.62.1",
1669
+
"@zag-js/popper@0.62.1",
1670
+
"@zag-js/types@0.62.1",
1671
+
"@zag-js/utils@0.62.1"
1672
+
]
1673
+
},
1674
+
"@zag-js/hover-card@1.27.1": {
1675
+
"integrity": "sha512-VolB6d8Yu8wjLi9CdGtd3w3qKtop0lQebcA9M12sOs6E+DmrmdCZfgIMMtiUrVch7HTSPa5kXlI+/6svvS6UQA==",
1676
+
"dependencies": [
1677
+
"@zag-js/anatomy@1.27.1",
1678
+
"@zag-js/core@1.27.1",
1679
+
"@zag-js/dismissable@1.27.1",
1680
+
"@zag-js/dom-query@1.27.1",
1681
+
"@zag-js/popper@1.27.1",
1682
+
"@zag-js/types@1.27.1",
1683
+
"@zag-js/utils@1.27.1"
1684
+
]
1685
+
},
1686
+
"@zag-js/i18n-utils@0.62.1": {
1687
+
"integrity": "sha512-ipzx0W6VK5x+w/PnUrN8z5SULJuLqvdzsPVBJ2iGHrMcTPC/y9JDt82nJV9fUYmG898pOZUx7vysfLLPNEAFTQ==",
1688
+
"dependencies": [
1689
+
"@zag-js/dom-query@0.62.1"
1690
+
]
1691
+
},
1692
+
"@zag-js/i18n-utils@1.27.1": {
1693
+
"integrity": "sha512-dNP7ZMoKxCD8KOc3RPqBpj7mEr5qb2qix8o6AQHw2QMDdgMDj0E9y5ZaNHIzkpMyYmvURY5I+pwWfFricv/rHg==",
1694
+
"dependencies": [
1695
+
"@zag-js/dom-query@1.27.1"
1696
+
]
1697
+
},
1698
+
"@zag-js/image-cropper@1.27.1": {
1699
+
"integrity": "sha512-fzAlMZwKQVVxaHcxbGmwOY05fFdooxkAYNjuzansQo5nHWQIVVVe7/Ou6GzU7ggc/Ws+a/TY2dp3dZbzrSfc5g==",
1700
+
"dependencies": [
1701
+
"@zag-js/anatomy@1.27.1",
1702
+
"@zag-js/core@1.27.1",
1703
+
"@zag-js/dom-query@1.27.1",
1704
+
"@zag-js/types@1.27.1",
1705
+
"@zag-js/utils@1.27.1"
1706
+
]
1707
+
},
1708
+
"@zag-js/interact-outside@0.62.1": {
1709
+
"integrity": "sha512-V5N+kr2Uv97HWYL0U5ZVS//NMQu87XGLtI7Ae5EtHrdAEKxO2NpPwf50Gzza4zc1VEVYYFqobTlkNQ3hrrL6VQ==",
1710
+
"dependencies": [
1711
+
"@zag-js/dom-event",
1712
+
"@zag-js/dom-query@0.62.1",
1713
+
"@zag-js/utils@0.62.1"
1714
+
]
1715
+
},
1716
+
"@zag-js/interact-outside@1.27.1": {
1717
+
"integrity": "sha512-MfZobJhDWSiS9SzF35FJd/R+/ksvwzgjXl51p1sjaqVQoTIfKAe/pK8Hcky7NWX9NsVx77x/YidJpb/Bwf3f6g==",
1718
+
"dependencies": [
1719
+
"@zag-js/dom-query@1.27.1",
1720
+
"@zag-js/utils@1.27.1"
1721
+
]
1722
+
},
1723
+
"@zag-js/json-tree-utils@1.27.1": {
1724
+
"integrity": "sha512-ugiV6V4BqKufZr2XRdZB3x4x/uxUbmfG0viMAkCYJKD5wWaMukPqUAxytJ5ybAIfnDDvRRjRzaZX+erVu5rzXA=="
1725
+
},
1726
+
"@zag-js/listbox@1.27.1": {
1727
+
"integrity": "sha512-qZhmdD4+Gjof21i5C0sthNz+fOylrFnKJR7HxROWOeD2vHuQi4gud5PdZubfm54p7w8huPU8RH+Aw7LsVpwQNA==",
1728
+
"dependencies": [
1729
+
"@zag-js/anatomy@1.27.1",
1730
+
"@zag-js/collection@1.27.1",
1731
+
"@zag-js/core@1.27.1",
1732
+
"@zag-js/dom-query@1.27.1",
1733
+
"@zag-js/focus-visible",
1734
+
"@zag-js/types@1.27.1",
1735
+
"@zag-js/utils@1.27.1"
1736
+
]
1737
+
},
1738
+
"@zag-js/live-region@0.62.1": {
1739
+
"integrity": "sha512-Giu7d5UWc2Sqb3/T0tSzqSwxJ4mVrNN+MTu06J7EaD4khK5RgX4GRpQ9rpwOS/GJT+8nc6YBhWTi7tqKN/+iHQ=="
1740
+
},
1741
+
"@zag-js/live-region@1.27.1": {
1742
+
"integrity": "sha512-T5cMSazmWC9AYKHinJQPZSc2bnokF8zK8ly4NGApv6ExM6Mf5wQoH6sJIcv7dhRFfPUFVRndVdKHnWxZjTb8Og=="
1743
+
},
1744
+
"@zag-js/marquee@1.27.1": {
1745
+
"integrity": "sha512-d0+7SXxsuTdHf6JD4uQFUfKWpEhsi5wEb4TCb6bRDdgkN+iJq1d/lsGx1tTV+/95rpaHkAkbaVQB07IUQnmDiQ==",
1746
+
"dependencies": [
1747
+
"@zag-js/anatomy@1.27.1",
1748
+
"@zag-js/core@1.27.1",
1749
+
"@zag-js/dom-query@1.27.1",
1750
+
"@zag-js/types@1.27.1",
1751
+
"@zag-js/utils@1.27.1"
1752
+
]
1753
+
},
1754
+
"@zag-js/menu@0.62.1": {
1755
+
"integrity": "sha512-l/PartHj6//NMlENYNBmUmeYG9K0SbjbnnIudv+rK+oyrUoX/MDCJ7bdy7ZMYxWTR127WdZlLHBxsgMe86lBqQ==",
1756
+
"dependencies": [
1757
+
"@zag-js/anatomy@0.62.1",
1758
+
"@zag-js/core@0.62.1",
1759
+
"@zag-js/dismissable@0.62.1",
1760
+
"@zag-js/dom-event",
1761
+
"@zag-js/dom-query@0.62.1",
1762
+
"@zag-js/popper@0.62.1",
1763
+
"@zag-js/rect-utils@0.62.1",
1764
+
"@zag-js/types@0.62.1",
1765
+
"@zag-js/utils@0.62.1"
1766
+
]
1767
+
},
1768
+
"@zag-js/menu@1.27.1": {
1769
+
"integrity": "sha512-e4U7zbfOF6fXphJvP2xaIKTmnKR75pp6gYGUqJUVQo0VIqQh2Ax5VcPq6JcUQE8UWGRQxwuMn9tzEpXGDWm6QA==",
1770
+
"dependencies": [
1771
+
"@zag-js/anatomy@1.27.1",
1772
+
"@zag-js/core@1.27.1",
1773
+
"@zag-js/dismissable@1.27.1",
1774
+
"@zag-js/dom-query@1.27.1",
1775
+
"@zag-js/popper@1.27.1",
1776
+
"@zag-js/rect-utils@1.27.1",
1777
+
"@zag-js/types@1.27.1",
1778
+
"@zag-js/utils@1.27.1"
1779
+
]
1780
+
},
1781
+
"@zag-js/number-input@0.62.1": {
1782
+
"integrity": "sha512-THizFB4Qwq4erMk6mI82voIo/PbbrAOSQXyPF8NPyGupSzqYntS1XPEdyqFH677PhHweelxQnvtZEm5alm1HLw==",
1783
+
"dependencies": [
1784
+
"@internationalized/number@3.5.3",
1785
+
"@zag-js/anatomy@0.62.1",
1786
+
"@zag-js/core@0.62.1",
1787
+
"@zag-js/dom-event",
1788
+
"@zag-js/dom-query@0.62.1",
1789
+
"@zag-js/form-utils",
1790
+
"@zag-js/number-utils",
1791
+
"@zag-js/types@0.62.1",
1792
+
"@zag-js/utils@0.62.1"
1793
+
]
1794
+
},
1795
+
"@zag-js/number-input@1.27.1": {
1796
+
"integrity": "sha512-oK3cc11apnQzWT6dfAbevrWm0LCKNXDkIudlI2U9FZ8JIsTLO8K4KeGSFGNPA3d6KuNLrhDWC4GsAe+fGdTL6Q==",
1797
+
"dependencies": [
1798
+
"@internationalized/number@3.6.5",
1799
+
"@zag-js/anatomy@1.27.1",
1800
+
"@zag-js/core@1.27.1",
1801
+
"@zag-js/dom-query@1.27.1",
1802
+
"@zag-js/types@1.27.1",
1803
+
"@zag-js/utils@1.27.1"
1804
+
]
1805
+
},
1806
+
"@zag-js/number-utils@0.62.1": {
1807
+
"integrity": "sha512-ktnGSYKKLG9No14ivlboEzq4+jiOIWU+8yeoRrZmfdCG58g4s9JF0lBDRf3ts9vhUdofJ+vUFMPqkk2eCWyQlA=="
1808
+
},
1809
+
"@zag-js/numeric-range@0.62.1": {
1810
+
"integrity": "sha512-R4/II5MvS+eJ880srPuIlexqRH7kVsGomcsDlB5yyhHsradm7OJfC5L6osvKj1DNAitfFh8901BZFaWmQe8O1w=="
1811
+
},
1812
+
"@zag-js/pagination@0.62.1": {
1813
+
"integrity": "sha512-fyDXNnAGyRsQEugvNR1kfEO8hGeesOV6l2rEACdvNN6G9Cqktqd52aaWVIf805G3Ig72igW2SybI9md/rDflzQ==",
1814
+
"dependencies": [
1815
+
"@zag-js/anatomy@0.62.1",
1816
+
"@zag-js/core@0.62.1",
1817
+
"@zag-js/dom-query@0.62.1",
1818
+
"@zag-js/types@0.62.1",
1819
+
"@zag-js/utils@0.62.1"
1820
+
]
1821
+
},
1822
+
"@zag-js/pagination@1.27.1": {
1823
+
"integrity": "sha512-tg23cP07weOtjNeEqOqS3Ilic3ikaIYQ7s9wi/JjvKUPMS+bi/LZRM12cfLD1tIwSUYjjLkr/reTnrYU3s2lZQ==",
1824
+
"dependencies": [
1825
+
"@zag-js/anatomy@1.27.1",
1826
+
"@zag-js/core@1.27.1",
1827
+
"@zag-js/dom-query@1.27.1",
1828
+
"@zag-js/types@1.27.1",
1829
+
"@zag-js/utils@1.27.1"
1830
+
]
1831
+
},
1832
+
"@zag-js/password-input@1.27.1": {
1833
+
"integrity": "sha512-L6fodHRVxud5aIBh7v0dayOzrK11WaTO6CBGNC/HELf2xvFR4bs7vOPJ/NbKh1UHMZDe3s/nbwxVHpM//JpLcQ==",
1834
+
"dependencies": [
1835
+
"@zag-js/anatomy@1.27.1",
1836
+
"@zag-js/core@1.27.1",
1837
+
"@zag-js/dom-query@1.27.1",
1838
+
"@zag-js/types@1.27.1",
1839
+
"@zag-js/utils@1.27.1"
1840
+
]
1841
+
},
1842
+
"@zag-js/pin-input@0.62.1": {
1843
+
"integrity": "sha512-CTAOyQCLaNSWH29bhc4XruEkvnYFJN1QF/x5axtHV+cir05zcdB3L7Sna4D6nUBSwd0tOGnUmPlviyP7zkpgBA==",
1844
+
"dependencies": [
1845
+
"@zag-js/anatomy@0.62.1",
1846
+
"@zag-js/core@0.62.1",
1847
+
"@zag-js/dom-event",
1848
+
"@zag-js/dom-query@0.62.1",
1849
+
"@zag-js/form-utils",
1850
+
"@zag-js/types@0.62.1",
1851
+
"@zag-js/utils@0.62.1"
1852
+
]
1853
+
},
1854
+
"@zag-js/pin-input@1.27.1": {
1855
+
"integrity": "sha512-FEJ+hk6oO23ofSaS1DqnSLS8AMkJ4Aw1N1Ny+crwmLCr+29cuNtsgZos8WxRhKguZKW4AqIjgrtIAPJEgDeHFw==",
1856
+
"dependencies": [
1857
+
"@zag-js/anatomy@1.27.1",
1858
+
"@zag-js/core@1.27.1",
1859
+
"@zag-js/dom-query@1.27.1",
1860
+
"@zag-js/types@1.27.1",
1861
+
"@zag-js/utils@1.27.1"
1862
+
]
1863
+
},
1864
+
"@zag-js/popover@0.62.1": {
1865
+
"integrity": "sha512-cT6okb5Yq69YWx6G1vonNEnEg4MlBXRbXLflLBqOP1PTwhk6RwlndXGV2uCdlnR0mUJa/RKldzdUcwOQesJaag==",
1866
+
"dependencies": [
1867
+
"@zag-js/anatomy@0.62.1",
1868
+
"@zag-js/aria-hidden@0.62.1",
1869
+
"@zag-js/core@0.62.1",
1870
+
"@zag-js/dismissable@0.62.1",
1871
+
"@zag-js/dom-query@0.62.1",
1872
+
"@zag-js/popper@0.62.1",
1873
+
"@zag-js/remove-scroll@0.62.1",
1874
+
"@zag-js/types@0.62.1",
1875
+
"@zag-js/utils@0.62.1",
1876
+
"focus-trap"
1877
+
]
1878
+
},
1879
+
"@zag-js/popover@1.27.1": {
1880
+
"integrity": "sha512-HvzogYsWhA2eVavSDJKsA98jzU95r/bSc6SsutnMp32afqf6eo2cZDOMm29tjzP2RPmZFYMwXVrQ4VZB4mIhXw==",
1881
+
"dependencies": [
1882
+
"@zag-js/anatomy@1.27.1",
1883
+
"@zag-js/aria-hidden@1.27.1",
1884
+
"@zag-js/core@1.27.1",
1885
+
"@zag-js/dismissable@1.27.1",
1886
+
"@zag-js/dom-query@1.27.1",
1887
+
"@zag-js/focus-trap",
1888
+
"@zag-js/popper@1.27.1",
1889
+
"@zag-js/remove-scroll@1.27.1",
1890
+
"@zag-js/types@1.27.1",
1891
+
"@zag-js/utils@1.27.1"
1892
+
]
1893
+
},
1894
+
"@zag-js/popper@0.62.1": {
1895
+
"integrity": "sha512-tyLEdYIsv3cgnWCWzPPv9f72hzmQDQcObDIczIZt+OQr89qgyhGHt5jR1f0Qxsz9zZlSPsEftccyXRQYInQtxQ==",
1896
+
"dependencies": [
1897
+
"@floating-ui/dom@1.6.8",
1898
+
"@zag-js/dom-query@0.62.1",
1899
+
"@zag-js/utils@0.62.1"
1900
+
]
1901
+
},
1902
+
"@zag-js/popper@1.27.1": {
1903
+
"integrity": "sha512-ac9YpcIvhd9+QDhm85E0BzPmjTuAWc/FRQOhG/EWKSUDvFZGNAcXLSVS6zxIWPEdY2vDG3Ri9jpCNv89bzzpoQ==",
1904
+
"dependencies": [
1905
+
"@floating-ui/dom@1.7.4",
1906
+
"@zag-js/dom-query@1.27.1",
1907
+
"@zag-js/utils@1.27.1"
1908
+
]
1909
+
},
1910
+
"@zag-js/presence@0.62.1": {
1911
+
"integrity": "sha512-qjnr1WpW5yetRp2j2V0ocRvr6X6TuWNxjL2DyJAusodcsSElF2V0UuFOLT/xIZA8BVIbgcyCvcPB01PHugC5Ww==",
1912
+
"dependencies": [
1913
+
"@zag-js/core@0.62.1",
1914
+
"@zag-js/types@0.62.1"
1915
+
]
1916
+
},
1917
+
"@zag-js/presence@1.27.1": {
1918
+
"integrity": "sha512-8riBzIC8XWiGdNWoUex6GnRo4/ykkeqcuiPCP6Lm67Kdi9hTCOuu3v8BdHgRkb4LxMg1LW7v+d7maCm5My9PMA==",
1919
+
"dependencies": [
1920
+
"@zag-js/core@1.27.1",
1921
+
"@zag-js/dom-query@1.27.1",
1922
+
"@zag-js/types@1.27.1"
1923
+
]
1924
+
},
1925
+
"@zag-js/progress@0.62.1": {
1926
+
"integrity": "sha512-7FyeP/wCiJ2dao1y/4RzhrLeIse305YtRMTDaVE5EnOJK3nit2Rrl+z8kGx5aqrGQcGsLH/rh5QYFp689Nx57Q==",
1927
+
"dependencies": [
1928
+
"@zag-js/anatomy@0.62.1",
1929
+
"@zag-js/core@0.62.1",
1930
+
"@zag-js/dom-query@0.62.1",
1931
+
"@zag-js/types@0.62.1",
1932
+
"@zag-js/utils@0.62.1"
1933
+
]
1934
+
},
1935
+
"@zag-js/progress@1.27.1": {
1936
+
"integrity": "sha512-mBat/fn7jhuZXg+UBZMAQv3uL9W/HoDcrzm606PNycD+QyHFe8J1kpzHr8hFUFtCTzSDzmd5kf9zP0hieVPQTQ==",
1937
+
"dependencies": [
1938
+
"@zag-js/anatomy@1.27.1",
1939
+
"@zag-js/core@1.27.1",
1940
+
"@zag-js/dom-query@1.27.1",
1941
+
"@zag-js/types@1.27.1",
1942
+
"@zag-js/utils@1.27.1"
1943
+
]
1944
+
},
1945
+
"@zag-js/qr-code@0.62.1": {
1946
+
"integrity": "sha512-648qXQduIqq4CZWN07D1UOcczZrdp3UjBSHFEi4PQHTz1Vg08pH0BIZDqiqpupG9niYJEB/GPLGofRQQYoIoDw==",
1947
+
"dependencies": [
1948
+
"@zag-js/anatomy@0.62.1",
1949
+
"@zag-js/core@0.62.1",
1950
+
"@zag-js/dom-query@0.62.1",
1951
+
"@zag-js/types@0.62.1",
1952
+
"@zag-js/utils@0.62.1",
1953
+
"proxy-memoize",
1954
+
"uqr"
1955
+
]
1956
+
},
1957
+
"@zag-js/qr-code@1.27.1": {
1958
+
"integrity": "sha512-o3cGKXVf7Jea4lDPs5hcA6+8D811d6rt+V4L9mf5OKWdbOi4meGpy1lNNn7szvmtvTOkQcDd6ozRprk/jI1LJA==",
1959
+
"dependencies": [
1960
+
"@zag-js/anatomy@1.27.1",
1961
+
"@zag-js/core@1.27.1",
1962
+
"@zag-js/dom-query@1.27.1",
1963
+
"@zag-js/types@1.27.1",
1964
+
"@zag-js/utils@1.27.1",
1965
+
"proxy-memoize",
1966
+
"uqr"
1967
+
]
1968
+
},
1969
+
"@zag-js/radio-group@0.62.1": {
1970
+
"integrity": "sha512-VVGTUkHgD27vBTYeP7hPYi+eDRXkq7xtlv6Ml062t3gcTWBhc/2eaI6iZ7awlxTl9052sflzbawrrDysPREuAQ==",
1971
+
"dependencies": [
1972
+
"@zag-js/anatomy@0.62.1",
1973
+
"@zag-js/core@0.62.1",
1974
+
"@zag-js/dom-query@0.62.1",
1975
+
"@zag-js/element-rect",
1976
+
"@zag-js/form-utils",
1977
+
"@zag-js/types@0.62.1",
1978
+
"@zag-js/utils@0.62.1"
1979
+
]
1980
+
},
1981
+
"@zag-js/radio-group@1.27.1": {
1982
+
"integrity": "sha512-P1IHUrXv9iMHwLNdcIRoW0DQGfJ2DoMREWOohy8Gdekoo4/+xOGbr9qi9++QN//HMLsbB1cnD7+7WqqEZU1Hkw==",
1983
+
"dependencies": [
1984
+
"@zag-js/anatomy@1.27.1",
1985
+
"@zag-js/core@1.27.1",
1986
+
"@zag-js/dom-query@1.27.1",
1987
+
"@zag-js/focus-visible",
1988
+
"@zag-js/types@1.27.1",
1989
+
"@zag-js/utils@1.27.1"
1990
+
]
1991
+
},
1992
+
"@zag-js/rating-group@0.62.1": {
1993
+
"integrity": "sha512-gXvHofr3gfZcaMh7Y3FU+wyj7ge1R0BgsuPJWFUShlAlxjnnE7e3AqjSGlzuvpkWMkc6KKDyKRJlMVWLCv94OA==",
1994
+
"dependencies": [
1995
+
"@zag-js/anatomy@0.62.1",
1996
+
"@zag-js/core@0.62.1",
1997
+
"@zag-js/dom-event",
1998
+
"@zag-js/dom-query@0.62.1",
1999
+
"@zag-js/form-utils",
2000
+
"@zag-js/types@0.62.1",
2001
+
"@zag-js/utils@0.62.1"
2002
+
]
2003
+
},
2004
+
"@zag-js/rating-group@1.27.1": {
2005
+
"integrity": "sha512-bjsWkUwMtlm0Jsajz4j14ULFEeYtGTShqPZvFuVDrEX8xSuZXujfxOdY0dphc0EreyjL1YjvYboAXvYsVbOaVw==",
2006
+
"dependencies": [
2007
+
"@zag-js/anatomy@1.27.1",
2008
+
"@zag-js/core@1.27.1",
2009
+
"@zag-js/dom-query@1.27.1",
2010
+
"@zag-js/types@1.27.1",
2011
+
"@zag-js/utils@1.27.1"
2012
+
]
2013
+
},
2014
+
"@zag-js/rect-utils@0.62.1": {
2015
+
"integrity": "sha512-6w56LuRD382Oa2FXi4AfKQqgtUPS/nc/mZzXiaqKz9b5aFA1CXtmEwNC2GaiXhkqJp5DyxHwujDfQP1WXACnRQ=="
2016
+
},
2017
+
"@zag-js/rect-utils@1.27.1": {
2018
+
"integrity": "sha512-BYq+dVrNt+H4hX7wkS3j9ZK+BNKrb1f9vm52D5+TnNs61coidfY5zmhOqQjkgSVBWblDqYWrLskNCymW7t5MVA=="
2019
+
},
2020
+
"@zag-js/remove-scroll@0.62.1": {
2021
+
"integrity": "sha512-7xpX6HUrOEq/TNLIWojYnQf7kj20bk8ueOKpu7cTZmoN0LSL6cS09uil+NOqb+SzZsiRmQKvzd3fQBNwbdab5Q==",
2022
+
"dependencies": [
2023
+
"@zag-js/dom-query@0.62.1"
2024
+
]
2025
+
},
2026
+
"@zag-js/remove-scroll@1.27.1": {
2027
+
"integrity": "sha512-MOnQXzifbeEuW/XgDMbb76wbWdaq++DEwE6CLmMQZhAR4rJUNIYVhcOFVqBWwMcMIJkvK8ROZucTPxOPmTHz1Q==",
2028
+
"dependencies": [
2029
+
"@zag-js/dom-query@1.27.1"
2030
+
]
2031
+
},
2032
+
"@zag-js/scroll-area@1.27.1": {
2033
+
"integrity": "sha512-lfAsmdiKv6racE+rlwUJkgqjIOjjCyJcWNkM4JKZzKCI6jlqKBUOhmNjJcqiIYtGXFapaslXJrcIOTxW7nZoEg==",
2034
+
"dependencies": [
2035
+
"@zag-js/anatomy@1.27.1",
2036
+
"@zag-js/core@1.27.1",
2037
+
"@zag-js/dom-query@1.27.1",
2038
+
"@zag-js/types@1.27.1",
2039
+
"@zag-js/utils@1.27.1"
2040
+
]
2041
+
},
2042
+
"@zag-js/scroll-snap@1.27.1": {
2043
+
"integrity": "sha512-XTwox/aHb0J51v0ycObadvDjeA26bZwadAm+5pr1Eic1Tf8gUcMLpwEHBqlp3vay58UzrPWhqCEBKsgYwYgNEA==",
2044
+
"dependencies": [
2045
+
"@zag-js/dom-query@1.27.1"
2046
+
]
2047
+
},
2048
+
"@zag-js/select@0.62.1": {
2049
+
"integrity": "sha512-dgU65imBSeB8+QfHkN68j7Xqd/d6wsF42itJ0AeRSdgnCHgTWdN9rRCK5EDbNkJue51oMkdsnJ7XG1k+oCgiAg==",
2050
+
"dependencies": [
2051
+
"@zag-js/anatomy@0.62.1",
2052
+
"@zag-js/collection@0.62.1",
2053
+
"@zag-js/core@0.62.1",
2054
+
"@zag-js/dismissable@0.62.1",
2055
+
"@zag-js/dom-event",
2056
+
"@zag-js/dom-query@0.62.1",
2057
+
"@zag-js/form-utils",
2058
+
"@zag-js/popper@0.62.1",
2059
+
"@zag-js/types@0.62.1",
2060
+
"@zag-js/utils@0.62.1"
2061
+
]
2062
+
},
2063
+
"@zag-js/select@1.27.1": {
2064
+
"integrity": "sha512-yZUid+GkASbxsuXeCxn2nK7DoZOBG3fmCR/wJSlBQu/kYkXUPcy1MmrZHakmJNFr6MvrP8RVYV7O3Jr1mPBgaA==",
2065
+
"dependencies": [
2066
+
"@zag-js/anatomy@1.27.1",
2067
+
"@zag-js/collection@1.27.1",
2068
+
"@zag-js/core@1.27.1",
2069
+
"@zag-js/dismissable@1.27.1",
2070
+
"@zag-js/dom-query@1.27.1",
2071
+
"@zag-js/popper@1.27.1",
2072
+
"@zag-js/types@1.27.1",
2073
+
"@zag-js/utils@1.27.1"
2074
+
]
2075
+
},
2076
+
"@zag-js/signature-pad@0.62.1": {
2077
+
"integrity": "sha512-hWZSWT9J9V1kbImkj8qXHCqS0TYm7nms9oAhcQ2QNIiGO38wqW8Yswos8sqAj8VtzHxkSMIeL1by7Zgy3Xjq9g==",
2078
+
"dependencies": [
2079
+
"@zag-js/anatomy@0.62.1",
2080
+
"@zag-js/core@0.62.1",
2081
+
"@zag-js/dom-event",
2082
+
"@zag-js/dom-query@0.62.1",
2083
+
"@zag-js/types@0.62.1",
2084
+
"@zag-js/utils@0.62.1",
2085
+
"perfect-freehand"
2086
+
]
2087
+
},
2088
+
"@zag-js/signature-pad@1.27.1": {
2089
+
"integrity": "sha512-NuyKmZwfjBZ+PJb04xQjYf9wTkBMdU9XTS/4cpEWAOK0DoErq4kiqrV/yExPB7V7KtIEIkC4Xd+WgMOD6K1vBQ==",
2090
+
"dependencies": [
2091
+
"@zag-js/anatomy@1.27.1",
2092
+
"@zag-js/core@1.27.1",
2093
+
"@zag-js/dom-query@1.27.1",
2094
+
"@zag-js/types@1.27.1",
2095
+
"@zag-js/utils@1.27.1",
2096
+
"perfect-freehand"
2097
+
]
2098
+
},
2099
+
"@zag-js/slider@0.62.1": {
2100
+
"integrity": "sha512-v5rgPJF3fh7bBPu0wzEGpN4EcXpK5cSw4OAwxatmbtkYsg2Udwv6WL26CB5Q2zVwYIR6R532b/bjFqicfVs+SA==",
2101
+
"dependencies": [
2102
+
"@zag-js/anatomy@0.62.1",
2103
+
"@zag-js/core@0.62.1",
2104
+
"@zag-js/dom-event",
2105
+
"@zag-js/dom-query@0.62.1",
2106
+
"@zag-js/element-size",
2107
+
"@zag-js/form-utils",
2108
+
"@zag-js/numeric-range",
2109
+
"@zag-js/types@0.62.1",
2110
+
"@zag-js/utils@0.62.1"
2111
+
]
2112
+
},
2113
+
"@zag-js/slider@1.27.1": {
2114
+
"integrity": "sha512-p6zyMLU6cBtubk5673q2wk9JqCHf0l8my7nWY16KWqLWd68IFBSp7wrOyTYa0ifZ9CvmZZSjdL/w2TFJ4SHVKQ==",
2115
+
"dependencies": [
2116
+
"@zag-js/anatomy@1.27.1",
2117
+
"@zag-js/core@1.27.1",
2118
+
"@zag-js/dom-query@1.27.1",
2119
+
"@zag-js/types@1.27.1",
2120
+
"@zag-js/utils@1.27.1"
2121
+
]
2122
+
},
2123
+
"@zag-js/solid@1.27.1_solid-js@1.9.10__seroval@1.3.2": {
2124
+
"integrity": "sha512-3r3VOWDjW3g7wkxA0AivdM3aiurwrXywwbII6FjHaIL4SrEe7OvAtE7hKHSPlKdCRS9Z0ZVt6C/uKYm/YFo9+Q==",
2125
+
"dependencies": [
2126
+
"@solid-primitives/keyed",
2127
+
"@zag-js/core@1.27.1",
2128
+
"@zag-js/store@1.27.1",
2129
+
"@zag-js/types@1.27.1",
2130
+
"@zag-js/utils@1.27.1",
2131
+
"solid-js"
2132
+
]
2133
+
},
2134
+
"@zag-js/splitter@0.62.1": {
2135
+
"integrity": "sha512-Ni93ZaprnbctAsbuot8sEw9DDfNMgkelnd5xQfAiwpgjwUgnY8733LRbWydC5OUPoJ/cCs3XiNKa0CHwclcq6Q==",
2136
+
"dependencies": [
2137
+
"@zag-js/anatomy@0.62.1",
2138
+
"@zag-js/core@0.62.1",
2139
+
"@zag-js/dom-event",
2140
+
"@zag-js/dom-query@0.62.1",
2141
+
"@zag-js/number-utils",
2142
+
"@zag-js/types@0.62.1",
2143
+
"@zag-js/utils@0.62.1"
2144
+
]
2145
+
},
2146
+
"@zag-js/splitter@1.27.1": {
2147
+
"integrity": "sha512-y7xKYI2d6LxHiWJ/RFl96s+PBr7gEs6J7xLiJ0hP+tqyFDeJ3215slIAuXA7Zkk8OLLcgj6f4QDEQ3xXwZl9EA==",
2148
+
"dependencies": [
2149
+
"@zag-js/anatomy@1.27.1",
2150
+
"@zag-js/core@1.27.1",
2151
+
"@zag-js/dom-query@1.27.1",
2152
+
"@zag-js/types@1.27.1",
2153
+
"@zag-js/utils@1.27.1"
2154
+
]
2155
+
},
2156
+
"@zag-js/steps@1.27.1": {
2157
+
"integrity": "sha512-RciH9pg3Li3u1BFZlDjFptlrqmovy3BD8lMjcCzcn3Pr+v8AQQb1ZQku40VZ6x+ZBz7ZtIp+EZkBwY93I3YEBA==",
2158
+
"dependencies": [
2159
+
"@zag-js/anatomy@1.27.1",
2160
+
"@zag-js/core@1.27.1",
2161
+
"@zag-js/dom-query@1.27.1",
2162
+
"@zag-js/types@1.27.1",
2163
+
"@zag-js/utils@1.27.1"
2164
+
]
2165
+
},
2166
+
"@zag-js/store@0.62.1": {
2167
+
"integrity": "sha512-0xkz7b/Rs9cHeI5CB3UH4yMlVzys3l+IsJU3KRWZwqWohDjTEqRyzcuFD6AH28WAcJPjIgOQYnRYzYSoMGZtDQ==",
2168
+
"dependencies": [
2169
+
"proxy-compare@3.0.0"
2170
+
]
2171
+
},
2172
+
"@zag-js/store@1.27.1": {
2173
+
"integrity": "sha512-oK8NX9gvwi9NzjPo6oujksSli+hgh7m5ZDRM4SY7T3bBaipz7GsNZuXW+i6DMvDNObtTHbVzQ5ZaqlTQUuos0A==",
2174
+
"dependencies": [
2175
+
"proxy-compare@3.0.1"
2176
+
]
2177
+
},
2178
+
"@zag-js/switch@0.62.1": {
2179
+
"integrity": "sha512-uh0yy3NuZqHF+jPVZ2oMcAtPx32eTnBebiROBGBDgj1A5yZBirfQm8j/vZLSILhDq9TdktHS9/gITJ7TvgV4cQ==",
2180
+
"dependencies": [
2181
+
"@zag-js/anatomy@0.62.1",
2182
+
"@zag-js/core@0.62.1",
2183
+
"@zag-js/dom-event",
2184
+
"@zag-js/dom-query@0.62.1",
2185
+
"@zag-js/form-utils",
2186
+
"@zag-js/types@0.62.1",
2187
+
"@zag-js/utils@0.62.1"
2188
+
]
2189
+
},
2190
+
"@zag-js/switch@1.27.1": {
2191
+
"integrity": "sha512-IuYacFHlQsxkFCU8ABGjwhtvWARexAYS/BMQkD5W8s0cwNHR3uOLPGjrJhSkJqvx3ENpSTRRKqTwawXVeFg2BQ==",
2192
+
"dependencies": [
2193
+
"@zag-js/anatomy@1.27.1",
2194
+
"@zag-js/core@1.27.1",
2195
+
"@zag-js/dom-query@1.27.1",
2196
+
"@zag-js/focus-visible",
2197
+
"@zag-js/types@1.27.1",
2198
+
"@zag-js/utils@1.27.1"
2199
+
]
2200
+
},
2201
+
"@zag-js/tabs@0.62.1": {
2202
+
"integrity": "sha512-BpY6oA2nmZLpYu8nQrpi+zTF4txTiMYIMB31CmbFmbJ3hMVkEqk8sgNzNQY3LrzkkSemDRBHxPZ5H+YKaQrEdg==",
2203
+
"dependencies": [
2204
+
"@zag-js/anatomy@0.62.1",
2205
+
"@zag-js/core@0.62.1",
2206
+
"@zag-js/dom-event",
2207
+
"@zag-js/dom-query@0.62.1",
2208
+
"@zag-js/element-rect",
2209
+
"@zag-js/types@0.62.1",
2210
+
"@zag-js/utils@0.62.1"
2211
+
]
2212
+
},
2213
+
"@zag-js/tabs@1.27.1": {
2214
+
"integrity": "sha512-jI+frE9z+wVfoqYA/7Xxr+SWix3OmjpfA7+F8GK1XPdN8atD/uYRgE7CbqwPc24fhIO/xkl1sNKRv83HaCMjvw==",
2215
+
"dependencies": [
2216
+
"@zag-js/anatomy@1.27.1",
2217
+
"@zag-js/core@1.27.1",
2218
+
"@zag-js/dom-query@1.27.1",
2219
+
"@zag-js/types@1.27.1",
2220
+
"@zag-js/utils@1.27.1"
2221
+
]
2222
+
},
2223
+
"@zag-js/tags-input@0.62.1": {
2224
+
"integrity": "sha512-8gJ4ckQQ0BB3oUGgIEGkmB6wIKSf7xx0q6e3tqTbfZnPhmWP4hpli38XAOYjsBQyNXmQW89H/Rp8/8W1A/Vpow==",
2225
+
"dependencies": [
2226
+
"@zag-js/anatomy@0.62.1",
2227
+
"@zag-js/auto-resize@0.62.1",
2228
+
"@zag-js/core@0.62.1",
2229
+
"@zag-js/dom-event",
2230
+
"@zag-js/dom-query@0.62.1",
2231
+
"@zag-js/form-utils",
2232
+
"@zag-js/interact-outside@0.62.1",
2233
+
"@zag-js/live-region@0.62.1",
2234
+
"@zag-js/types@0.62.1",
2235
+
"@zag-js/utils@0.62.1"
2236
+
]
2237
+
},
2238
+
"@zag-js/tags-input@1.27.1": {
2239
+
"integrity": "sha512-+XUOwKFWfGwmJpl3hWK8kHq5IeuZUZaR1FgNzbO029ll3p5unBOGzEL51oCH1dpeuMY/FyXEssNLrvVgId6E3Q==",
2240
+
"dependencies": [
2241
+
"@zag-js/anatomy@1.27.1",
2242
+
"@zag-js/auto-resize@1.27.1",
2243
+
"@zag-js/core@1.27.1",
2244
+
"@zag-js/dom-query@1.27.1",
2245
+
"@zag-js/interact-outside@1.27.1",
2246
+
"@zag-js/live-region@1.27.1",
2247
+
"@zag-js/types@1.27.1",
2248
+
"@zag-js/utils@1.27.1"
2249
+
]
2250
+
},
2251
+
"@zag-js/text-selection@0.62.1": {
2252
+
"integrity": "sha512-0b049CnWN/Nyp/F/nbeU6G8BI/fzwlSQTTDWK81yRFADDFTZ2mWpVAWJF/fY0rKjsn4ucDykCS7GXMIo5rYILQ==",
2253
+
"dependencies": [
2254
+
"@zag-js/dom-query@0.62.1"
2255
+
]
2256
+
},
2257
+
"@zag-js/time-picker@0.62.1": {
2258
+
"integrity": "sha512-THNASHp9Fu5f4/LC3t3qJfsYD6FqjhbP7HrjIDDFOcdNGRzOTfbEpKF3JtJgmM6F+/fuQKhe6FUbcluMd9zo8Q==",
2259
+
"dependencies": [
2260
+
"@internationalized/date@3.5.5",
2261
+
"@zag-js/anatomy@0.62.1",
2262
+
"@zag-js/core@0.62.1",
2263
+
"@zag-js/dismissable@0.62.1",
2264
+
"@zag-js/dom-event",
2265
+
"@zag-js/dom-query@0.62.1",
2266
+
"@zag-js/popper@0.62.1",
2267
+
"@zag-js/types@0.62.1",
2268
+
"@zag-js/utils@0.62.1"
2269
+
]
2270
+
},
2271
+
"@zag-js/timer@1.27.1": {
2272
+
"integrity": "sha512-1t1APVDBoE9GcjKQHjUvfR6nlhPA6bm6JYVQj1PS04i+120fvfpcFSWAbgay2dmGcpdpFrO5W0a5vObYFQ6aXg==",
2273
+
"dependencies": [
2274
+
"@zag-js/anatomy@1.27.1",
2275
+
"@zag-js/core@1.27.1",
2276
+
"@zag-js/dom-query@1.27.1",
2277
+
"@zag-js/types@1.27.1",
2278
+
"@zag-js/utils@1.27.1"
2279
+
]
2280
+
},
2281
+
"@zag-js/toast@0.62.1": {
2282
+
"integrity": "sha512-Kb+OiFx7KUG0fAExIL06xWEfhxeMRJACvP6q4B4FNuFX+6N06RbV/PZtLbPbffOodd7VhSk1W37T7t6Np32mvg==",
2283
+
"dependencies": [
2284
+
"@zag-js/anatomy@0.62.1",
2285
+
"@zag-js/core@0.62.1",
2286
+
"@zag-js/dismissable@0.62.1",
2287
+
"@zag-js/dom-event",
2288
+
"@zag-js/dom-query@0.62.1",
2289
+
"@zag-js/types@0.62.1",
2290
+
"@zag-js/utils@0.62.1"
2291
+
]
2292
+
},
2293
+
"@zag-js/toast@1.27.1": {
2294
+
"integrity": "sha512-XfVxYlMkV8K1inmSwF+VKXkEPG/fDZcpjlj2PfbrWQu2PSD5mrJakBi1FzKfcCybp/OOD0V9Nfki1AFkhKKEwg==",
2295
+
"dependencies": [
2296
+
"@zag-js/anatomy@1.27.1",
2297
+
"@zag-js/core@1.27.1",
2298
+
"@zag-js/dismissable@1.27.1",
2299
+
"@zag-js/dom-query@1.27.1",
2300
+
"@zag-js/types@1.27.1",
2301
+
"@zag-js/utils@1.27.1"
2302
+
]
2303
+
},
2304
+
"@zag-js/toggle-group@0.62.1": {
2305
+
"integrity": "sha512-h7jQtWJt11uws6IYBd3kQzOyOemtZ5CqR7lt4XZdni3J1EtymKRJNha2JIukIETZS9/0VU1fPcuDkQeCXcGHgQ==",
2306
+
"dependencies": [
2307
+
"@zag-js/anatomy@0.62.1",
2308
+
"@zag-js/core@0.62.1",
2309
+
"@zag-js/dom-event",
2310
+
"@zag-js/dom-query@0.62.1",
2311
+
"@zag-js/types@0.62.1",
2312
+
"@zag-js/utils@0.62.1"
2313
+
]
2314
+
},
2315
+
"@zag-js/toggle-group@1.27.1": {
2316
+
"integrity": "sha512-b6KOd9ZKkWIl1vAmNIkeKrxE/ikKS5aGoseNbyFrcSPW43DwFZD24EfVIQ72/afzdTttRga0VbY1JgaCXothFw==",
2317
+
"dependencies": [
2318
+
"@zag-js/anatomy@1.27.1",
2319
+
"@zag-js/core@1.27.1",
2320
+
"@zag-js/dom-query@1.27.1",
2321
+
"@zag-js/types@1.27.1",
2322
+
"@zag-js/utils@1.27.1"
2323
+
]
2324
+
},
2325
+
"@zag-js/toggle@1.27.1": {
2326
+
"integrity": "sha512-Klr1DzbBZ1mO6X+jwYvhEW1G/RB6DOlviKPbDQNwcma4fa+qpX0lbgSfQf/9xC8omv1sZXEDxp6dzrRUbDEyAA==",
2327
+
"dependencies": [
2328
+
"@zag-js/anatomy@1.27.1",
2329
+
"@zag-js/core@1.27.1",
2330
+
"@zag-js/dom-query@1.27.1",
2331
+
"@zag-js/types@1.27.1",
2332
+
"@zag-js/utils@1.27.1"
2333
+
]
2334
+
},
2335
+
"@zag-js/tooltip@0.62.1": {
2336
+
"integrity": "sha512-318EJU6B4FR0nMNU79qMAgdOiVM6vbDiRWBHjGLDBK3z5No3lKfo4TZb/NqBmmi2W7ZFPiPwvLFsTql+H0xDbA==",
2337
+
"dependencies": [
2338
+
"@zag-js/anatomy@0.62.1",
2339
+
"@zag-js/core@0.62.1",
2340
+
"@zag-js/dom-event",
2341
+
"@zag-js/dom-query@0.62.1",
2342
+
"@zag-js/popper@0.62.1",
2343
+
"@zag-js/types@0.62.1",
2344
+
"@zag-js/utils@0.62.1"
2345
+
]
2346
+
},
2347
+
"@zag-js/tooltip@1.27.1": {
2348
+
"integrity": "sha512-RVMFFdqX7HaSoO4GEHikRzrScelwVMr+mbTfrCcGx1i/9AWf7YmNh1P9p3QMIkP2/9TB9FfQfqU7Flyz0qc3Iw==",
2349
+
"dependencies": [
2350
+
"@zag-js/anatomy@1.27.1",
2351
+
"@zag-js/core@1.27.1",
2352
+
"@zag-js/dom-query@1.27.1",
2353
+
"@zag-js/focus-visible",
2354
+
"@zag-js/popper@1.27.1",
2355
+
"@zag-js/types@1.27.1",
2356
+
"@zag-js/utils@1.27.1"
2357
+
]
2358
+
},
2359
+
"@zag-js/tour@1.27.1": {
2360
+
"integrity": "sha512-0VgJEvGNtiuhw/sy2zmG93gwBas5sOjfbqPsCxDr1zyRCHjYIUOG1FhbJmH9Lo6Y+CowQ4j+FRzYAnjHjPp8mg==",
2361
+
"dependencies": [
2362
+
"@zag-js/anatomy@1.27.1",
2363
+
"@zag-js/core@1.27.1",
2364
+
"@zag-js/dismissable@1.27.1",
2365
+
"@zag-js/dom-query@1.27.1",
2366
+
"@zag-js/focus-trap",
2367
+
"@zag-js/interact-outside@1.27.1",
2368
+
"@zag-js/popper@1.27.1",
2369
+
"@zag-js/types@1.27.1",
2370
+
"@zag-js/utils@1.27.1"
2371
+
]
2372
+
},
2373
+
"@zag-js/tree-view@0.62.1": {
2374
+
"integrity": "sha512-Y7qj16X18uElsD5jA9l03+rKEg1/5JIGRutO+NlEbs9Ffb7y34vqcEWquA+YgDfqXVWk2b5v9xcU1iKuKhOagQ==",
2375
+
"dependencies": [
2376
+
"@zag-js/anatomy@0.62.1",
2377
+
"@zag-js/core@0.62.1",
2378
+
"@zag-js/dom-event",
2379
+
"@zag-js/dom-query@0.62.1",
2380
+
"@zag-js/types@0.62.1",
2381
+
"@zag-js/utils@0.62.1"
2382
+
]
2383
+
},
2384
+
"@zag-js/tree-view@1.27.1": {
2385
+
"integrity": "sha512-YrP/F1d93/fXKtrN1Uhmzv9i13o39cLPno8X0i7PWvPVUv7HH+RqM0JZVROOQqhCWNUvkv/klGuGw5StP/RJGQ==",
2386
+
"dependencies": [
2387
+
"@zag-js/anatomy@1.27.1",
2388
+
"@zag-js/collection@1.27.1",
2389
+
"@zag-js/core@1.27.1",
2390
+
"@zag-js/dom-query@1.27.1",
2391
+
"@zag-js/types@1.27.1",
2392
+
"@zag-js/utils@1.27.1"
2393
+
]
2394
+
},
2395
+
"@zag-js/types@0.62.1": {
2396
+
"integrity": "sha512-wjJvasoxg/rsFhMTaGLJEjYnSGaXz7DymtO+wWOIfa+O6y44flHc8wRQ1l6ZRRetCz4RALTuwhZI+0ESZ1Bpwg==",
2397
+
"dependencies": [
2398
+
"csstype"
2399
+
]
2400
+
},
2401
+
"@zag-js/types@1.27.1": {
2402
+
"integrity": "sha512-t7AtcXElKEjvvRlC1gcDmKgtIeiOtCL3vWf8K8kq7nVhq29q7PHtXB5ywn+R+CWnqJOmIDezKZjC1emXZKF0OA==",
2403
+
"dependencies": [
2404
+
"csstype"
2405
+
]
2406
+
},
2407
+
"@zag-js/utils@0.62.1": {
2408
+
"integrity": "sha512-90sk7Li2mqoMCAfZbns1xrySEg4PIFPwLpiRO/T2kvKpc9z/qsq2WqDFpS8eqHfYRmkLnmQa0Bw1LzItYYsGVQ=="
2409
+
},
2410
+
"@zag-js/utils@1.27.1": {
2411
+
"integrity": "sha512-AHSd3VeiBvVoa8lAUe7YsCzk37X9zn2jKiYv13k5Ac+NnbYRbpWzZZZUfNGbFAsu5cSE4X1HUw38H1GTuBeWNQ=="
2412
+
},
2413
+
"ajv@8.17.1": {
2414
+
"integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
2415
+
"dependencies": [
2416
+
"fast-deep-equal",
2417
+
"fast-uri",
2418
+
"json-schema-traverse",
2419
+
"require-from-string"
2420
+
]
2421
+
},
2422
+
"ansi-colors@4.1.3": {
2423
+
"integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="
2424
+
},
2425
+
"ansi-regex@5.0.1": {
2426
+
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="
2427
+
},
2428
+
"ansi-styles@4.3.0": {
2429
+
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
2430
+
"dependencies": [
2431
+
"color-convert"
2432
+
]
2433
+
},
2434
+
"astral-regex@2.0.0": {
2435
+
"integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ=="
2436
+
},
2437
+
"babel-plugin-jsx-dom-expressions@0.40.3_@babel+core@7.28.5": {
2438
+
"integrity": "sha512-5HOwwt0BYiv/zxl7j8Pf2bGL6rDXfV6nUhLs8ygBX+EFJXzBPHM/euj9j/6deMZ6wa52Wb2PBaAV5U/jKwIY1w==",
2439
+
"dependencies": [
2440
+
"@babel/core",
2441
+
"@babel/helper-module-imports@7.18.6",
2442
+
"@babel/plugin-syntax-jsx",
2443
+
"@babel/types",
2444
+
"html-entities",
2445
+
"parse5"
2446
+
]
2447
+
},
2448
+
"babel-preset-solid@1.9.10_@babel+core@7.28.5_solid-js@1.9.10__seroval@1.3.2": {
2449
+
"integrity": "sha512-HCelrgua/Y+kqO8RyL04JBWS/cVdrtUv/h45GntgQY+cJl4eBcKkCDV3TdMjtKx1nXwRaR9QXslM/Npm1dxdZQ==",
2450
+
"dependencies": [
2451
+
"@babel/core",
2452
+
"babel-plugin-jsx-dom-expressions",
2453
+
"solid-js"
2454
+
],
2455
+
"optionalPeers": [
2456
+
"solid-js"
2457
+
]
2458
+
},
2459
+
"baseline-browser-mapping@2.8.28": {
2460
+
"integrity": "sha512-gYjt7OIqdM0PcttNYP2aVrr2G0bMALkBaoehD4BuRGjAOtipg0b6wHg1yNL+s5zSnLZZrGHOw4IrND8CD+3oIQ==",
2461
+
"bin": true
2462
+
},
2463
+
"braces@3.0.3": {
2464
+
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
2465
+
"dependencies": [
2466
+
"fill-range"
2467
+
]
2468
+
},
2469
+
"browserslist@4.24.4": {
2470
+
"integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==",
2471
+
"dependencies": [
2472
+
"caniuse-lite",
2473
+
"electron-to-chromium",
2474
+
"node-releases",
2475
+
"update-browserslist-db@1.1.4_browserslist@4.24.4"
2476
+
],
2477
+
"bin": true
2478
+
},
2479
+
"browserslist@4.28.0": {
2480
+
"integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==",
2481
+
"dependencies": [
2482
+
"baseline-browser-mapping",
2483
+
"caniuse-lite",
2484
+
"electron-to-chromium",
2485
+
"node-releases",
2486
+
"update-browserslist-db@1.1.4_browserslist@4.28.0"
2487
+
],
2488
+
"bin": true
2489
+
},
2490
+
"bundle-n-require@1.1.2": {
2491
+
"integrity": "sha512-bEk2jakVK1ytnZ9R2AAiZEeK/GxPUM8jvcRxHZXifZDMcjkI4EG/GlsJ2YGSVYT9y/p/gA9/0yDY8rCGsSU6Tg==",
2492
+
"dependencies": [
2493
+
"esbuild",
2494
+
"node-eval"
2495
+
]
2496
+
},
2497
+
"cac@6.7.14": {
2498
+
"integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="
2499
+
},
2500
+
"caniuse-api@3.0.0": {
2501
+
"integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
2502
+
"dependencies": [
2503
+
"browserslist@4.28.0",
2504
+
"caniuse-lite",
2505
+
"lodash.memoize",
2506
+
"lodash.uniq"
2507
+
]
2508
+
},
2509
+
"caniuse-lite@1.0.30001755": {
2510
+
"integrity": "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA=="
2511
+
},
2512
+
"chokidar@4.0.3": {
2513
+
"integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
2514
+
"dependencies": [
2515
+
"readdirp"
2516
+
]
2517
+
},
2518
+
"code-block-writer@13.0.3": {
2519
+
"integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg=="
2520
+
},
2521
+
"color-convert@2.0.1": {
2522
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
2523
+
"dependencies": [
2524
+
"color-name"
2525
+
]
2526
+
},
2527
+
"color-name@1.1.4": {
2528
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
2529
+
},
2530
+
"confbox@0.2.2": {
2531
+
"integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ=="
2532
+
},
2533
+
"convert-source-map@2.0.0": {
2534
+
"integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="
2535
+
},
2536
+
"crosspath@2.0.0": {
2537
+
"integrity": "sha512-ju88BYCQ2uvjO2bR+SsgLSTwTSctU+6Vp2ePbKPgSCZyy4MWZxYsT738DlKVRE5utUjobjPRm1MkTYKJxCmpTA==",
2538
+
"dependencies": [
2539
+
"@types/node"
2540
+
]
2541
+
},
2542
+
"cssesc@3.0.0": {
2543
+
"integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
2544
+
"bin": true
2545
+
},
2546
+
"cssnano-utils@5.0.1_postcss@8.5.6": {
2547
+
"integrity": "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg==",
2548
+
"dependencies": [
2549
+
"postcss"
2550
+
]
2551
+
},
2552
+
"csstype@3.1.3": {
2553
+
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="
2554
+
},
2555
+
"debug@4.4.3": {
2556
+
"integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
2557
+
"dependencies": [
2558
+
"ms"
2559
+
]
2560
+
},
2561
+
"detect-libc@1.0.3": {
2562
+
"integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
2563
+
"bin": true
2564
+
},
2565
+
"effect@3.10.15": {
2566
+
"integrity": "sha512-LdczPAFbtij3xGr9i+8PyDtuWdlXjSY5UJ8PKrYrr0DClKfR/OW3j8sxtambWYljzJAYD865KFhv7LdbWdG7VQ==",
2567
+
"dependencies": [
2568
+
"fast-check"
2569
+
]
2570
+
},
2571
+
"electron-to-chromium@1.5.254": {
2572
+
"integrity": "sha512-DcUsWpVhv9svsKRxnSCZ86SjD+sp32SGidNB37KpqXJncp1mfUgKbHvBomE89WJDbfVKw1mdv5+ikrvd43r+Bg=="
2573
+
},
2574
+
"emoji-regex@8.0.0": {
2575
+
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="
2576
+
},
2577
+
"entities@4.5.0": {
2578
+
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="
2579
+
},
2580
+
"entities@6.0.1": {
2581
+
"integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g=="
2582
+
},
2583
+
"esbuild@0.25.12": {
2584
+
"integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==",
2585
+
"optionalDependencies": [
2586
+
"@esbuild/aix-ppc64",
2587
+
"@esbuild/android-arm",
2588
+
"@esbuild/android-arm64",
2589
+
"@esbuild/android-x64",
2590
+
"@esbuild/darwin-arm64",
2591
+
"@esbuild/darwin-x64",
2592
+
"@esbuild/freebsd-arm64",
2593
+
"@esbuild/freebsd-x64",
2594
+
"@esbuild/linux-arm",
2595
+
"@esbuild/linux-arm64",
2596
+
"@esbuild/linux-ia32",
2597
+
"@esbuild/linux-loong64",
2598
+
"@esbuild/linux-mips64el",
2599
+
"@esbuild/linux-ppc64",
2600
+
"@esbuild/linux-riscv64",
2601
+
"@esbuild/linux-s390x",
2602
+
"@esbuild/linux-x64",
2603
+
"@esbuild/netbsd-arm64",
2604
+
"@esbuild/netbsd-x64",
2605
+
"@esbuild/openbsd-arm64",
2606
+
"@esbuild/openbsd-x64",
2607
+
"@esbuild/openharmony-arm64",
2608
+
"@esbuild/sunos-x64",
2609
+
"@esbuild/win32-arm64",
2610
+
"@esbuild/win32-ia32",
2611
+
"@esbuild/win32-x64"
2612
+
],
2613
+
"scripts": true,
2614
+
"bin": true
2615
+
},
2616
+
"escalade@3.1.2": {
2617
+
"integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA=="
2618
+
},
2619
+
"escalade@3.2.0": {
2620
+
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="
2621
+
},
2622
+
"esm-env@1.2.2": {
2623
+
"integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="
2624
+
},
2625
+
"estree-walker@2.0.2": {
2626
+
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
2627
+
},
2628
+
"exsolve@1.0.8": {
2629
+
"integrity": "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="
2630
+
},
2631
+
"fast-average-color@9.5.0": {
2632
+
"integrity": "sha512-nC6x2YIlJ9xxgkMFMd1BNoM1ctMjNoRKfRliPmiEWW3S6rLTHiQcy9g3pt/xiKv/D0NAAkhb9VyV+WJFvTqMGg=="
2633
+
},
2634
+
"fast-check@3.23.2": {
2635
+
"integrity": "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A==",
2636
+
"dependencies": [
2637
+
"pure-rand"
2638
+
]
2639
+
},
2640
+
"fast-deep-equal@3.1.3": {
2641
+
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
2642
+
},
2643
+
"fast-glob@3.3.3": {
2644
+
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
2645
+
"dependencies": [
2646
+
"@nodelib/fs.stat",
2647
+
"@nodelib/fs.walk",
2648
+
"glob-parent@5.1.2",
2649
+
"merge2",
2650
+
"micromatch"
2651
+
]
2652
+
},
2653
+
"fast-uri@3.1.0": {
2654
+
"integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="
2655
+
},
2656
+
"fastq@1.19.1": {
2657
+
"integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
2658
+
"dependencies": [
2659
+
"reusify"
2660
+
]
2661
+
},
2662
+
"fdir@6.5.0_picomatch@4.0.3": {
2663
+
"integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
2664
+
"dependencies": [
2665
+
"picomatch@4.0.3"
2666
+
],
2667
+
"optionalPeers": [
2668
+
"picomatch@4.0.3"
2669
+
]
2670
+
},
2671
+
"fill-range@7.1.1": {
2672
+
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
2673
+
"dependencies": [
2674
+
"to-regex-range"
2675
+
]
2676
+
},
2677
+
"focus-trap@7.5.4": {
2678
+
"integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==",
2679
+
"dependencies": [
2680
+
"tabbable"
2681
+
]
2682
+
},
2683
+
"fs-extra@11.2.0": {
2684
+
"integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
2685
+
"dependencies": [
2686
+
"graceful-fs",
2687
+
"jsonfile",
2688
+
"universalify"
2689
+
]
2690
+
},
2691
+
"fsevents@2.3.3": {
2692
+
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
2693
+
"os": ["darwin"],
2694
+
"scripts": true
2695
+
},
2696
+
"gensync@1.0.0-beta.2": {
2697
+
"integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="
2698
+
},
2699
+
"glob-parent@5.1.2": {
2700
+
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
2701
+
"dependencies": [
2702
+
"is-glob"
2703
+
]
2704
+
},
2705
+
"glob-parent@6.0.2": {
2706
+
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
2707
+
"dependencies": [
2708
+
"is-glob"
2709
+
]
2710
+
},
2711
+
"globrex@0.1.2": {
2712
+
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg=="
2713
+
},
2714
+
"graceful-fs@4.2.11": {
2715
+
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
2716
+
},
2717
+
"hookable@5.5.3": {
2718
+
"integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ=="
2719
+
},
2720
+
"html-entities@2.3.3": {
2721
+
"integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA=="
2722
+
},
2723
+
"is-extglob@2.1.1": {
2724
+
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="
2725
+
},
2726
+
"is-fullwidth-code-point@3.0.0": {
2727
+
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="
2728
+
},
2729
+
"is-glob@4.0.3": {
2730
+
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
2731
+
"dependencies": [
2732
+
"is-extglob"
2733
+
]
2734
+
},
2735
+
"is-number@7.0.0": {
2736
+
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
2737
+
},
2738
+
"is-what@4.1.16": {
2739
+
"integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A=="
2740
+
},
2741
+
"javascript-stringify@2.1.0": {
2742
+
"integrity": "sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg=="
2743
+
},
2744
+
"js-tokens@4.0.0": {
2745
+
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
2746
+
},
2747
+
"jsesc@3.1.0": {
2748
+
"integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
2749
+
"bin": true
2750
+
},
2751
+
"json-schema-traverse@1.0.0": {
2752
+
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
2753
+
},
2754
+
"json5@2.2.3": {
2755
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
2756
+
"bin": true
2757
+
},
2758
+
"jsonfile@6.2.0": {
2759
+
"integrity": "sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==",
2760
+
"dependencies": [
2761
+
"universalify"
2762
+
],
2763
+
"optionalDependencies": [
2764
+
"graceful-fs"
2765
+
]
2766
+
},
2767
+
"kleur@4.1.5": {
2768
+
"integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="
2769
+
},
2770
+
"klona@2.0.6": {
2771
+
"integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA=="
2772
+
},
2773
+
"lightningcss-darwin-arm64@1.25.1": {
2774
+
"integrity": "sha512-G4Dcvv85bs5NLENcu/s1f7ehzE3D5ThnlWSDwE190tWXRQCQaqwcuHe+MGSVI/slm0XrxnaayXY+cNl3cSricw==",
2775
+
"os": ["darwin"],
2776
+
"cpu": ["arm64"]
2777
+
},
2778
+
"lightningcss-darwin-x64@1.25.1": {
2779
+
"integrity": "sha512-dYWuCzzfqRueDSmto6YU5SoGHvZTMU1Em9xvhcdROpmtOQLorurUZz8+xFxZ51lCO2LnYbfdjZ/gCqWEkwixNg==",
2780
+
"os": ["darwin"],
2781
+
"cpu": ["x64"]
2782
+
},
2783
+
"lightningcss-freebsd-x64@1.25.1": {
2784
+
"integrity": "sha512-hXoy2s9A3KVNAIoKz+Fp6bNeY+h9c3tkcx1J3+pS48CqAt+5bI/R/YY4hxGL57fWAIquRjGKW50arltD6iRt/w==",
2785
+
"os": ["freebsd"],
2786
+
"cpu": ["x64"]
2787
+
},
2788
+
"lightningcss-linux-arm-gnueabihf@1.25.1": {
2789
+
"integrity": "sha512-tWyMgHFlHlp1e5iW3EpqvH5MvsgoN7ZkylBbG2R2LWxnvH3FuWCJOhtGcYx9Ks0Kv0eZOBud789odkYLhyf1ng==",
2790
+
"os": ["linux"],
2791
+
"cpu": ["arm"]
2792
+
},
2793
+
"lightningcss-linux-arm64-gnu@1.25.1": {
2794
+
"integrity": "sha512-Xjxsx286OT9/XSnVLIsFEDyDipqe4BcLeB4pXQ/FEA5+2uWCCuAEarUNQumRucnj7k6ftkAHUEph5r821KBccQ==",
2795
+
"os": ["linux"],
2796
+
"cpu": ["arm64"]
2797
+
},
2798
+
"lightningcss-linux-arm64-musl@1.25.1": {
2799
+
"integrity": "sha512-IhxVFJoTW8wq6yLvxdPvyHv4NjzcpN1B7gjxrY3uaykQNXPHNIpChLB52+wfH+yS58zm1PL4LemUp8u9Cfp6Bw==",
2800
+
"os": ["linux"],
2801
+
"cpu": ["arm64"]
2802
+
},
2803
+
"lightningcss-linux-x64-gnu@1.25.1": {
2804
+
"integrity": "sha512-RXIaru79KrREPEd6WLXfKfIp4QzoppZvD3x7vuTKkDA64PwTzKJ2jaC43RZHRt8BmyIkRRlmywNhTRMbmkPYpA==",
2805
+
"os": ["linux"],
2806
+
"cpu": ["x64"]
2807
+
},
2808
+
"lightningcss-linux-x64-musl@1.25.1": {
2809
+
"integrity": "sha512-TdcNqFsAENEEFr8fJWg0Y4fZ/nwuqTRsIr7W7t2wmDUlA8eSXVepeeONYcb+gtTj1RaXn/WgNLB45SFkz+XBZA==",
2810
+
"os": ["linux"],
2811
+
"cpu": ["x64"]
2812
+
},
2813
+
"lightningcss-win32-x64-msvc@1.25.1": {
2814
+
"integrity": "sha512-9KZZkmmy9oGDSrnyHuxP6iMhbsgChUiu/NSgOx+U1I/wTngBStDf2i2aGRCHvFqj19HqqBEI4WuGVQBa2V6e0A==",
2815
+
"os": ["win32"],
2816
+
"cpu": ["x64"]
2817
+
},
2818
+
"lightningcss@1.25.1": {
2819
+
"integrity": "sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==",
2820
+
"dependencies": [
2821
+
"detect-libc"
2822
+
],
2823
+
"optionalDependencies": [
2824
+
"lightningcss-darwin-arm64",
2825
+
"lightningcss-darwin-x64",
2826
+
"lightningcss-freebsd-x64",
2827
+
"lightningcss-linux-arm-gnueabihf",
2828
+
"lightningcss-linux-arm64-gnu",
2829
+
"lightningcss-linux-arm64-musl",
2830
+
"lightningcss-linux-x64-gnu",
2831
+
"lightningcss-linux-x64-musl",
2832
+
"lightningcss-win32-x64-msvc"
2833
+
]
2834
+
},
2835
+
"lodash.memoize@4.1.2": {
2836
+
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="
2837
+
},
2838
+
"lodash.merge@4.6.2": {
2839
+
"integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="
2840
+
},
2841
+
"lodash.truncate@4.4.2": {
2842
+
"integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw=="
2843
+
},
2844
+
"lodash.uniq@4.5.0": {
2845
+
"integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="
2846
+
},
2847
+
"look-it-up@2.1.0": {
2848
+
"integrity": "sha512-nMoGWW2HurtuJf6XAL56FWTDCWLOTSsanrgwOyaR5Y4e3zfG5N/0cU5xWZSEU3tBxhQugRbV1xL9jb+ug7yZww=="
2849
+
},
2850
+
"lru-cache@5.1.1": {
2851
+
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2852
+
"dependencies": [
2853
+
"yallist"
2854
+
]
2855
+
},
2856
+
"lucide-solid@0.553.0_solid-js@1.9.10__seroval@1.3.2": {
2857
+
"integrity": "sha512-FAvWslAqD/HmCfcvFpbYAjPFf80F60aBlvn7M7Ea/FzYChqpkUiUkJEvG0K1bYHadf7dnkK0DSI992VT26sQdg==",
2858
+
"dependencies": [
2859
+
"solid-js"
2860
+
]
2861
+
},
2862
+
"magic-string@0.30.19": {
2863
+
"integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==",
2864
+
"dependencies": [
2865
+
"@jridgewell/sourcemap-codec"
2866
+
]
2867
+
},
2868
+
"mediabunny@1.25.0": {
2869
+
"integrity": "sha512-ozaqk6zS2Vbf3+3+OoxKfnCVeZRcv5PO8DgQtBrM5vpWIbpEK+kMVV6pgfo4mC3XtMwvQEMbhj3zEf0LNklh9w==",
2870
+
"dependencies": [
2871
+
"@types/dom-mediacapture-transform",
2872
+
"@types/dom-webcodecs"
2873
+
]
2874
+
},
2875
+
"merge-anything@5.1.7": {
2876
+
"integrity": "sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==",
2877
+
"dependencies": [
2878
+
"is-what"
2879
+
]
2880
+
},
2881
+
"merge2@1.4.1": {
2882
+
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="
2883
+
},
2884
+
"microdiff@1.5.0": {
2885
+
"integrity": "sha512-Drq+/THMvDdzRYrK0oxJmOKiC24ayUV8ahrt8l3oRK51PWt6gdtrIGrlIH3pT/lFh1z93FbAcidtsHcWbnRz8Q=="
2886
+
},
2887
+
"micromatch@4.0.8": {
2888
+
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
2889
+
"dependencies": [
2890
+
"braces",
2891
+
"picomatch@2.3.1"
2892
+
]
2893
+
},
2894
+
"minimatch@10.1.1": {
2895
+
"integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
2896
+
"dependencies": [
2897
+
"@isaacs/brace-expansion"
2898
+
]
2899
+
},
2900
+
"ms@2.1.3": {
2901
+
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
2902
+
},
2903
+
"nanoid@3.3.11": {
2904
+
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
2905
+
"bin": true
2906
+
},
2907
+
"nanoid@5.1.6": {
2908
+
"integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==",
2909
+
"bin": true
2910
+
},
2911
+
"node-eval@2.0.0": {
2912
+
"integrity": "sha512-Ap+L9HznXAVeJj3TJ1op6M6bg5xtTq8L5CU/PJxtkhea/DrIxdTknGKIECKd/v/Lgql95iuMAYvIzBNd0pmcMg==",
2913
+
"dependencies": [
2914
+
"path-is-absolute"
2915
+
]
2916
+
},
2917
+
"node-releases@2.0.27": {
2918
+
"integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="
2919
+
},
2920
+
"object-path@0.11.8": {
2921
+
"integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA=="
2922
+
},
2923
+
"outdent@0.8.0": {
2924
+
"integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A=="
2925
+
},
2926
+
"package-manager-detector@1.5.0": {
2927
+
"integrity": "sha512-uBj69dVlYe/+wxj8JOpr97XfsxH/eumMt6HqjNTmJDf/6NO9s+0uxeOneIz3AsPt2m6y9PqzDzd3ATcU17MNfw=="
2928
+
},
2929
+
"parse5@7.3.0": {
2930
+
"integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
2931
+
"dependencies": [
2932
+
"entities@6.0.1"
2933
+
]
2934
+
},
2935
+
"path-browserify@1.0.1": {
2936
+
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
2937
+
},
2938
+
"path-is-absolute@1.0.1": {
2939
+
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg=="
2940
+
},
2941
+
"pathe@2.0.3": {
2942
+
"integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="
2943
+
},
2944
+
"perfect-debounce@1.0.0": {
2945
+
"integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA=="
2946
+
},
2947
+
"perfect-freehand@1.2.2": {
2948
+
"integrity": "sha512-eh31l019WICQ03pkF3FSzHxB8n07ItqIQ++G5UV8JX0zVOXzgTGCqnRR0jJ2h9U8/2uW4W4mtGJELt9kEV0CFQ=="
2949
+
},
2950
+
"picocolors@1.1.1": {
2951
+
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
2952
+
},
2953
+
"picomatch@2.3.1": {
2954
+
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="
2955
+
},
2956
+
"picomatch@4.0.3": {
2957
+
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="
2958
+
},
2959
+
"pkg-types@2.3.0": {
2960
+
"integrity": "sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==",
2961
+
"dependencies": [
2962
+
"confbox",
2963
+
"exsolve",
2964
+
"pathe"
2965
+
]
2966
+
},
2967
+
"pluralize@8.0.0": {
2968
+
"integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA=="
2969
+
},
2970
+
"postcss-discard-duplicates@7.0.2_postcss@8.5.6": {
2971
+
"integrity": "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w==",
2972
+
"dependencies": [
2973
+
"postcss"
2974
+
]
2975
+
},
2976
+
"postcss-discard-empty@7.0.1_postcss@8.5.6": {
2977
+
"integrity": "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg==",
2978
+
"dependencies": [
2979
+
"postcss"
2980
+
]
2981
+
},
2982
+
"postcss-merge-rules@7.0.6_postcss@8.5.6": {
2983
+
"integrity": "sha512-2jIPT4Tzs8K87tvgCpSukRQ2jjd+hH6Bb8rEEOUDmmhOeTcqDg5fEFK8uKIu+Pvc3//sm3Uu6FRqfyv7YF7+BQ==",
2984
+
"dependencies": [
2985
+
"browserslist@4.28.0",
2986
+
"caniuse-api",
2987
+
"cssnano-utils",
2988
+
"postcss",
2989
+
"postcss-selector-parser"
2990
+
]
2991
+
},
2992
+
"postcss-minify-selectors@7.0.5_postcss@8.5.6": {
2993
+
"integrity": "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug==",
2994
+
"dependencies": [
2995
+
"cssesc",
2996
+
"postcss",
2997
+
"postcss-selector-parser"
2998
+
]
2999
+
},
3000
+
"postcss-nested@7.0.2_postcss@8.5.6": {
3001
+
"integrity": "sha512-5osppouFc0VR9/VYzYxO03VaDa3e8F23Kfd6/9qcZTUI8P58GIYlArOET2Wq0ywSl2o2PjELhYOFI4W7l5QHKw==",
3002
+
"dependencies": [
3003
+
"postcss",
3004
+
"postcss-selector-parser"
3005
+
]
3006
+
},
3007
+
"postcss-normalize-whitespace@7.0.1_postcss@8.5.6": {
3008
+
"integrity": "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA==",
3009
+
"dependencies": [
3010
+
"postcss",
3011
+
"postcss-value-parser"
3012
+
]
3013
+
},
3014
+
"postcss-selector-parser@7.1.0": {
3015
+
"integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
3016
+
"dependencies": [
3017
+
"cssesc",
3018
+
"util-deprecate"
3019
+
]
3020
+
},
3021
+
"postcss-value-parser@4.2.0": {
3022
+
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="
3023
+
},
3024
+
"postcss@8.5.6": {
3025
+
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
3026
+
"dependencies": [
3027
+
"nanoid@3.3.11",
3028
+
"picocolors",
3029
+
"source-map-js"
3030
+
]
3031
+
},
3032
+
"prettier@3.2.5": {
3033
+
"integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==",
3034
+
"bin": true
3035
+
},
3036
+
"proxy-compare@3.0.0": {
3037
+
"integrity": "sha512-y44MCkgtZUCT9tZGuE278fB7PWVf7fRYy0vbRXAts2o5F0EfC4fIQrvQQGBJo1WJbFcVLXzApOscyJuZqHQc1w=="
3038
+
},
3039
+
"proxy-compare@3.0.1": {
3040
+
"integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q=="
3041
+
},
3042
+
"proxy-memoize@3.0.1": {
3043
+
"integrity": "sha512-VDdG/VYtOgdGkWJx7y0o7p+zArSf2383Isci8C+BP3YXgMYDoPd3cCBjw0JdWb6YBb9sFiOPbAADDVTPJnh+9g==",
3044
+
"dependencies": [
3045
+
"proxy-compare@3.0.1"
3046
+
]
3047
+
},
3048
+
"pure-rand@6.1.0": {
3049
+
"integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="
3050
+
},
3051
+
"queue-microtask@1.2.3": {
3052
+
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="
3053
+
},
3054
+
"readdirp@4.1.2": {
3055
+
"integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg=="
3056
+
},
3057
+
"require-from-string@2.0.2": {
3058
+
"integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="
3059
+
},
3060
+
"reusify@1.1.0": {
3061
+
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="
3062
+
},
3063
+
"rollup@4.52.5": {
3064
+
"integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==",
3065
+
"dependencies": [
3066
+
"@types/estree"
3067
+
],
3068
+
"optionalDependencies": [
3069
+
"@rollup/rollup-android-arm-eabi",
3070
+
"@rollup/rollup-android-arm64",
3071
+
"@rollup/rollup-darwin-arm64",
3072
+
"@rollup/rollup-darwin-x64",
3073
+
"@rollup/rollup-freebsd-arm64",
3074
+
"@rollup/rollup-freebsd-x64",
3075
+
"@rollup/rollup-linux-arm-gnueabihf",
3076
+
"@rollup/rollup-linux-arm-musleabihf",
3077
+
"@rollup/rollup-linux-arm64-gnu",
3078
+
"@rollup/rollup-linux-arm64-musl",
3079
+
"@rollup/rollup-linux-loong64-gnu",
3080
+
"@rollup/rollup-linux-ppc64-gnu",
3081
+
"@rollup/rollup-linux-riscv64-gnu",
3082
+
"@rollup/rollup-linux-riscv64-musl",
3083
+
"@rollup/rollup-linux-s390x-gnu",
3084
+
"@rollup/rollup-linux-x64-gnu",
3085
+
"@rollup/rollup-linux-x64-musl",
3086
+
"@rollup/rollup-openharmony-arm64",
3087
+
"@rollup/rollup-win32-arm64-msvc",
3088
+
"@rollup/rollup-win32-ia32-msvc",
3089
+
"@rollup/rollup-win32-x64-gnu",
3090
+
"@rollup/rollup-win32-x64-msvc",
3091
+
"fsevents"
3092
+
],
3093
+
"bin": true
3094
+
},
3095
+
"run-parallel@1.2.0": {
3096
+
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
3097
+
"dependencies": [
3098
+
"queue-microtask"
3099
+
]
3100
+
},
3101
+
"semver@6.3.1": {
3102
+
"integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
3103
+
"bin": true
3104
+
},
3105
+
"seroval-plugins@1.3.3_seroval@1.3.2": {
3106
+
"integrity": "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==",
3107
+
"dependencies": [
3108
+
"seroval"
3109
+
]
3110
+
},
3111
+
"seroval@1.3.2": {
3112
+
"integrity": "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ=="
3113
+
},
3114
+
"sisteransi@1.0.5": {
3115
+
"integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="
3116
+
},
3117
+
"slice-ansi@4.0.0": {
3118
+
"integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
3119
+
"dependencies": [
3120
+
"ansi-styles",
3121
+
"astral-regex",
3122
+
"is-fullwidth-code-point"
3123
+
]
3124
+
},
3125
+
"solid-devtools@0.34.4_solid-js@1.9.10__seroval@1.3.2_vite@7.1.12__picomatch@4.0.3_@babel+core@7.28.5": {
3126
+
"integrity": "sha512-/s/pPTLvTkuXGZhLfsuvp7ge/cdpEwrUPoRwoJPYgz74GTUSb5Ozi2V6Z6HkO0ILT7hXB04j16HbH1aaP5VFOA==",
3127
+
"dependencies": [
3128
+
"@babel/core",
3129
+
"@babel/plugin-syntax-typescript",
3130
+
"@babel/types",
3131
+
"@solid-devtools/debugger",
3132
+
"@solid-devtools/shared",
3133
+
"solid-js",
3134
+
"vite"
3135
+
],
3136
+
"optionalPeers": [
3137
+
"vite"
3138
+
]
3139
+
},
3140
+
"solid-js@1.9.10_seroval@1.3.2": {
3141
+
"integrity": "sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew==",
3142
+
"dependencies": [
3143
+
"csstype",
3144
+
"seroval",
3145
+
"seroval-plugins"
3146
+
]
3147
+
},
3148
+
"solid-refresh@0.6.3_solid-js@1.9.10__seroval@1.3.2": {
3149
+
"integrity": "sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==",
3150
+
"dependencies": [
3151
+
"@babel/generator",
3152
+
"@babel/helper-module-imports@7.27.1",
3153
+
"@babel/types",
3154
+
"solid-js"
3155
+
]
3156
+
},
3157
+
"source-map-js@1.2.1": {
3158
+
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="
3159
+
},
3160
+
"string-width@4.2.3": {
3161
+
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
3162
+
"dependencies": [
3163
+
"emoji-regex",
3164
+
"is-fullwidth-code-point",
3165
+
"strip-ansi"
3166
+
]
3167
+
},
3168
+
"strip-ansi@6.0.1": {
3169
+
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
3170
+
"dependencies": [
3171
+
"ansi-regex"
3172
+
]
3173
+
},
3174
+
"tabbable@6.3.0": {
3175
+
"integrity": "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ=="
3176
+
},
3177
+
"table@6.9.0": {
3178
+
"integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==",
3179
+
"dependencies": [
3180
+
"ajv",
3181
+
"lodash.truncate",
3182
+
"slice-ansi",
3183
+
"string-width",
3184
+
"strip-ansi"
3185
+
]
3186
+
},
3187
+
"tinyglobby@0.2.15_picomatch@4.0.3": {
3188
+
"integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==",
3189
+
"dependencies": [
3190
+
"fdir",
3191
+
"picomatch@4.0.3"
3192
+
]
3193
+
},
3194
+
"to-regex-range@5.0.1": {
3195
+
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
3196
+
"dependencies": [
3197
+
"is-number"
3198
+
]
3199
+
},
3200
+
"ts-evaluator@1.2.0_typescript@5.9.3": {
3201
+
"integrity": "sha512-ncSGek1p92bj2ifB7s9UBgryHCkU9vwC5d+Lplt12gT9DH+e41X8dMoHRQjIMeAvyG7j9dEnuHmwgOtuRIQL+Q==",
3202
+
"dependencies": [
3203
+
"ansi-colors",
3204
+
"crosspath",
3205
+
"object-path",
3206
+
"typescript"
3207
+
]
3208
+
},
3209
+
"ts-morph@27.0.2": {
3210
+
"integrity": "sha512-fhUhgeljcrdZ+9DZND1De1029PrE+cMkIP7ooqkLRTrRLTqcki2AstsyJm0vRNbTbVCNJ0idGlbBrfqc7/nA8w==",
3211
+
"dependencies": [
3212
+
"@ts-morph/common",
3213
+
"code-block-writer"
3214
+
]
3215
+
},
3216
+
"ts-pattern@5.9.0": {
3217
+
"integrity": "sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg=="
3218
+
},
3219
+
"tsconfck@3.1.6_typescript@5.9.3": {
3220
+
"integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==",
3221
+
"dependencies": [
3222
+
"typescript"
3223
+
],
3224
+
"optionalPeers": [
3225
+
"typescript"
3226
+
],
3227
+
"bin": true
3228
+
},
3229
+
"tslib@2.8.1": {
3230
+
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="
3231
+
},
3232
+
"typescript@5.9.3": {
3233
+
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
3234
+
"bin": true
3235
+
},
3236
+
"universalify@2.0.1": {
3237
+
"integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="
3238
+
},
3239
+
"update-browserslist-db@1.1.4_browserslist@4.24.4": {
3240
+
"integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
3241
+
"dependencies": [
3242
+
"browserslist@4.24.4",
3243
+
"escalade@3.2.0",
3244
+
"picocolors"
3245
+
],
3246
+
"bin": true
3247
+
},
3248
+
"update-browserslist-db@1.1.4_browserslist@4.28.0": {
3249
+
"integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
3250
+
"dependencies": [
3251
+
"browserslist@4.28.0",
3252
+
"escalade@3.2.0",
3253
+
"picocolors"
3254
+
],
3255
+
"bin": true
3256
+
},
3257
+
"uqr@0.1.2": {
3258
+
"integrity": "sha512-MJu7ypHq6QasgF5YRTjqscSzQp/W11zoUk6kvmlH+fmWEs63Y0Eib13hYFwAzagRJcVY8WVnlV+eBDUGMJ5IbA=="
3259
+
},
3260
+
"util-deprecate@1.0.2": {
3261
+
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
3262
+
},
3263
+
"vite-plugin-solid@2.11.10_solid-js@1.9.10__seroval@1.3.2_vite@7.1.12__picomatch@4.0.3_@babel+core@7.28.5": {
3264
+
"integrity": "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw==",
3265
+
"dependencies": [
3266
+
"@babel/core",
3267
+
"@types/babel__core",
3268
+
"babel-preset-solid",
3269
+
"merge-anything",
3270
+
"solid-js",
3271
+
"solid-refresh",
3272
+
"vite",
3273
+
"vitefu"
3274
+
]
3275
+
},
3276
+
"vite-tsconfig-paths@5.1.4_vite@7.1.12__picomatch@4.0.3_typescript@5.9.3": {
3277
+
"integrity": "sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==",
3278
+
"dependencies": [
3279
+
"debug",
3280
+
"globrex",
3281
+
"tsconfck",
3282
+
"vite"
3283
+
],
3284
+
"optionalPeers": [
3285
+
"vite"
3286
+
]
3287
+
},
3288
+
"vite@7.1.12_picomatch@4.0.3": {
3289
+
"integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==",
3290
+
"dependencies": [
3291
+
"esbuild",
3292
+
"fdir",
3293
+
"picomatch@4.0.3",
3294
+
"postcss",
3295
+
"rollup",
3296
+
"tinyglobby"
3297
+
],
3298
+
"optionalDependencies": [
3299
+
"fsevents"
3300
+
],
3301
+
"bin": true
3302
+
},
3303
+
"vitefu@1.1.1_vite@7.1.12__picomatch@4.0.3": {
3304
+
"integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==",
3305
+
"dependencies": [
3306
+
"vite"
3307
+
],
3308
+
"optionalPeers": [
3309
+
"vite"
3310
+
]
3311
+
},
3312
+
"wordwrapjs@5.1.1": {
3313
+
"integrity": "sha512-0yweIbkINJodk27gX9LBGMzyQdBDan3s/dEAiwBOj+Mf0PPyWL6/rikalkv8EeD0E8jm4o5RXEOrFTP3NXbhJg=="
3314
+
},
3315
+
"yallist@3.1.1": {
3316
+
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
3317
+
}
3318
+
},
3319
+
"workspace": {
3320
+
"packageJson": {
3321
+
"dependencies": [
3322
+
"npm:@ark-ui/solid@^5.28.0",
3323
+
"npm:@atcute/atproto@^3.1.9",
3324
+
"npm:@atcute/bluesky@^3.2.10",
3325
+
"npm:@atcute/client@^4.0.5",
3326
+
"npm:@atcute/identity-resolver@^1.1.4",
3327
+
"npm:@atcute/identity@^1.1.2",
3328
+
"npm:@atcute/lexicons@^1.2.3",
3329
+
"npm:@atcute/microcosm@1",
3330
+
"npm:@atcute/oauth-browser-client@^2.0.1",
3331
+
"npm:@pandacss/dev@^1.5.1",
3332
+
"npm:@pandacss/preset-base@^1.5.1",
3333
+
"npm:@park-ui/panda-preset@~0.43.1",
3334
+
"npm:@solid-primitives/map@~0.7.2",
3335
+
"npm:fast-average-color@^9.5.0",
3336
+
"npm:lucide-solid@0.553",
3337
+
"npm:mediabunny@^1.25.0",
3338
+
"npm:solid-devtools@~0.34.3",
3339
+
"npm:solid-js@^1.9.5",
3340
+
"npm:typescript@^5.7.2",
3341
+
"npm:vite-plugin-solid@^2.11.8",
3342
+
"npm:vite-tsconfig-paths@^5.1.4",
3343
+
"npm:vite@^7.1.4"
3344
+
]
3345
+
}
3346
+
}
3347
+
}
+76
flake.lock
+76
flake.lock
···
1
+
{
2
+
"nodes": {
3
+
"naked-shell": {
4
+
"locked": {
5
+
"lastModified": 1681286841,
6
+
"narHash": "sha256-3XlJrwlR0nBiREnuogoa5i1b4+w/XPe0z8bbrJASw0g=",
7
+
"owner": "90-008",
8
+
"repo": "mk-naked-shell",
9
+
"rev": "7612f828dd6f22b7fb332cc69440e839d7ffe6bd",
10
+
"type": "github"
11
+
},
12
+
"original": {
13
+
"owner": "90-008",
14
+
"repo": "mk-naked-shell",
15
+
"type": "github"
16
+
}
17
+
},
18
+
"nixpkgs": {
19
+
"locked": {
20
+
"lastModified": 1763276407,
21
+
"narHash": "sha256-InTyTlu2/Jwkv/8BGfnvbYEihvbwKd11uApXQqwUhhU=",
22
+
"owner": "nixos",
23
+
"repo": "nixpkgs",
24
+
"rev": "5aeecbfbddb269117e7f7bf6a683730b46bb770b",
25
+
"type": "github"
26
+
},
27
+
"original": {
28
+
"owner": "nixos",
29
+
"repo": "nixpkgs",
30
+
"type": "github"
31
+
}
32
+
},
33
+
"nixpkgs-lib": {
34
+
"locked": {
35
+
"lastModified": 1761765539,
36
+
"narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=",
37
+
"owner": "nix-community",
38
+
"repo": "nixpkgs.lib",
39
+
"rev": "719359f4562934ae99f5443f20aa06c2ffff91fc",
40
+
"type": "github"
41
+
},
42
+
"original": {
43
+
"owner": "nix-community",
44
+
"repo": "nixpkgs.lib",
45
+
"type": "github"
46
+
}
47
+
},
48
+
"parts": {
49
+
"inputs": {
50
+
"nixpkgs-lib": "nixpkgs-lib"
51
+
},
52
+
"locked": {
53
+
"lastModified": 1762980239,
54
+
"narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=",
55
+
"owner": "hercules-ci",
56
+
"repo": "flake-parts",
57
+
"rev": "52a2caecc898d0b46b2b905f058ccc5081f842da",
58
+
"type": "github"
59
+
},
60
+
"original": {
61
+
"owner": "hercules-ci",
62
+
"repo": "flake-parts",
63
+
"type": "github"
64
+
}
65
+
},
66
+
"root": {
67
+
"inputs": {
68
+
"naked-shell": "naked-shell",
69
+
"nixpkgs": "nixpkgs",
70
+
"parts": "parts"
71
+
}
72
+
}
73
+
},
74
+
"root": "root",
75
+
"version": 7
76
+
}
+34
flake.nix
+34
flake.nix
···
1
+
{
2
+
inputs.parts.url = "github:hercules-ci/flake-parts";
3
+
inputs.nixpkgs.url = "github:nixos/nixpkgs";
4
+
inputs.naked-shell.url = "github:90-008/mk-naked-shell";
5
+
6
+
outputs = inp:
7
+
inp.parts.lib.mkFlake {inputs = inp;} {
8
+
systems = ["x86_64-linux"];
9
+
imports = [inp.naked-shell.flakeModule];
10
+
perSystem = {
11
+
config,
12
+
system,
13
+
...
14
+
}: let
15
+
pkgs = inp.nixpkgs.legacyPackages.${system};
16
+
in {
17
+
devShells.default = config.mk-naked-shell.lib.mkNakedShell {
18
+
name = "memos-devshell";
19
+
packages = with pkgs; [
20
+
nodejs-slim_latest deno
21
+
];
22
+
shellHook = ''
23
+
export PATH="$PATH:$PWD/node_modules/.bin"
24
+
'';
25
+
};
26
+
packages.memos-modules = pkgs.callPackage ./nix/modules.nix {};
27
+
packages.memos = pkgs.callPackage ./nix {
28
+
inherit (config.packages) memos-modules;
29
+
};
30
+
packages.default = config.packages.memos;
31
+
};
32
+
};
33
+
}
34
+
+15
index.html
+15
index.html
···
1
+
<!doctype html>
2
+
<html lang="en">
3
+
<head>
4
+
<meta charset="utf-8" />
5
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
6
+
<meta name="theme-color" content="#000000" />
7
+
<title>bsky voice memos</title>
8
+
</head>
9
+
<body>
10
+
<noscript>you need to enable javascript to run this app.</noscript>
11
+
<div id="root"></div>
12
+
13
+
<script src="/src/index.tsx" type="module"></script>
14
+
</body>
15
+
</html>
+55
nix/default.nix
+55
nix/default.nix
···
1
+
{
2
+
lib,
3
+
stdenv,
4
+
deno,
5
+
nodejs,
6
+
makeBinaryWrapper,
7
+
memos-modules,
8
+
PUBLIC_DOMAIN ? "http://localhost:5173",
9
+
}:
10
+
stdenv.mkDerivation {
11
+
name = "memos";
12
+
13
+
src = lib.fileset.toSource {
14
+
root = ../.;
15
+
fileset = lib.fileset.unions [
16
+
../src
17
+
../static
18
+
../deno.lock
19
+
../package.json
20
+
../svelte.config.js
21
+
../tsconfig.json
22
+
../vite.config.ts
23
+
];
24
+
};
25
+
26
+
nativeBuildInputs = [makeBinaryWrapper];
27
+
buildInputs = [deno];
28
+
29
+
inherit PUBLIC_DOMAIN;
30
+
31
+
dontCheck = true;
32
+
33
+
configurePhase = ''
34
+
runHook preConfigure
35
+
cp -R --no-preserve=ownership ${memos-modules} node_modules
36
+
find node_modules -type d -exec chmod 755 {} \;
37
+
substituteInPlace node_modules/.bin/vite \
38
+
--replace-fail "/usr/bin/env node" "${nodejs}/bin/node"
39
+
runHook postConfigure
40
+
'';
41
+
buildPhase = ''
42
+
runHook preBuild
43
+
HOME=$TMPDIR deno run --cached-only build
44
+
runHook postBuild
45
+
'';
46
+
installPhase = ''
47
+
runHook preInstall
48
+
49
+
mkdir -p $out/bin
50
+
cp -R ./build/* $out
51
+
# cp -R ./node_modules $out
52
+
53
+
runHook postInstall
54
+
'';
55
+
}
+35
nix/modules.nix
+35
nix/modules.nix
···
1
+
{
2
+
lib,
3
+
stdenv,
4
+
deno,
5
+
}:
6
+
stdenv.mkDerivation {
7
+
name = "memos-modules";
8
+
9
+
src = lib.fileset.toSource {
10
+
root = ../.;
11
+
fileset = lib.fileset.unions [
12
+
../deno.lock
13
+
../package.json
14
+
];
15
+
};
16
+
17
+
outputHash = "sha256-s5rq8htDjR0I8MxPtLq1NYIywXGEdYbZZvE7I5+TCIU=";
18
+
outputHashAlgo = "sha256";
19
+
outputHashMode = "recursive";
20
+
21
+
nativeBuildInputs = [deno];
22
+
23
+
dontConfigure = true;
24
+
dontCheck = true;
25
+
dontFixup = true;
26
+
dontPatchShebangs = true;
27
+
28
+
buildPhase = ''
29
+
HOME=$TMPDIR deno install --frozen --seed 8008135
30
+
'';
31
+
installPhase = ''
32
+
cp -R node_modules $out
33
+
ls -la $out
34
+
'';
35
+
}
+40
package.json
+40
package.json
···
1
+
{
2
+
"name": "vite-template-solid",
3
+
"version": "0.0.0",
4
+
"description": "",
5
+
"type": "module",
6
+
"scripts": {
7
+
"prepare": "panda codegen",
8
+
"start": "vite",
9
+
"dev": "vite",
10
+
"build": "vite build",
11
+
"serve": "vite preview"
12
+
},
13
+
"license": "MIT",
14
+
"devDependencies": {
15
+
"@pandacss/dev": "^1.5.1",
16
+
"@pandacss/preset-base": "^1.5.1",
17
+
"@park-ui/panda-preset": "^0.43.1",
18
+
"solid-devtools": "^0.34.3",
19
+
"typescript": "^5.7.2",
20
+
"vite": "^7.1.4",
21
+
"vite-plugin-solid": "^2.11.8",
22
+
"vite-tsconfig-paths": "^5.1.4"
23
+
},
24
+
"dependencies": {
25
+
"@ark-ui/solid": "^5.28.0",
26
+
"@atcute/atproto": "^3.1.9",
27
+
"@atcute/bluesky": "^3.2.10",
28
+
"@atcute/client": "^4.0.5",
29
+
"@atcute/identity": "^1.1.2",
30
+
"@atcute/identity-resolver": "^1.1.4",
31
+
"@atcute/lexicons": "^1.2.3",
32
+
"@atcute/microcosm": "^1.0.0",
33
+
"@atcute/oauth-browser-client": "^2.0.1",
34
+
"@solid-primitives/map": "^0.7.2",
35
+
"fast-average-color": "^9.5.0",
36
+
"lucide-solid": "^0.553.0",
37
+
"mediabunny": "^1.25.0",
38
+
"solid-js": "^1.9.5"
39
+
}
40
+
}
+20
panda.config.ts
+20
panda.config.ts
···
1
+
import { defineConfig } from "@pandacss/dev";
2
+
import { createPreset } from "@park-ui/panda-preset";
3
+
import yellow from "@park-ui/panda-preset/colors/yellow";
4
+
import sand from "@park-ui/panda-preset/colors/sand";
5
+
6
+
export default defineConfig({
7
+
preflight: true,
8
+
presets: [
9
+
createPreset({ accentColor: yellow, grayColor: sand, radius: "xs" }),
10
+
],
11
+
include: ["./src/**/*.{js,jsx,ts,tsx}"],
12
+
jsxFramework: "solid",
13
+
outdir: "styled-system",
14
+
conditions: {
15
+
extend: {
16
+
dark: '.dark &, [data-theme="dark"] &',
17
+
light: '.light &, [data-theme="light"] &',
18
+
},
19
+
},
20
+
});
+5
park-ui.json
+5
park-ui.json
+1346
pnpm-lock.yaml
+1346
pnpm-lock.yaml
···
1
+
lockfileVersion: '9.0'
2
+
3
+
settings:
4
+
autoInstallPeers: true
5
+
excludeLinksFromLockfile: false
6
+
7
+
importers:
8
+
9
+
.:
10
+
dependencies:
11
+
solid-js:
12
+
specifier: ^1.9.5
13
+
version: 1.9.9
14
+
devDependencies:
15
+
solid-devtools:
16
+
specifier: ^0.34.3
17
+
version: 0.34.3(solid-js@1.9.9)(vite@7.1.10)
18
+
typescript:
19
+
specifier: ^5.7.2
20
+
version: 5.9.2
21
+
vite:
22
+
specifier: ^7.1.4
23
+
version: 7.1.10
24
+
vite-plugin-solid:
25
+
specifier: ^2.11.8
26
+
version: 2.11.9(solid-js@1.9.9)(vite@7.1.10)
27
+
28
+
packages:
29
+
30
+
'@babel/code-frame@7.27.1':
31
+
resolution: {integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==}
32
+
engines: {node: '>=6.9.0'}
33
+
34
+
'@babel/compat-data@7.28.4':
35
+
resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==}
36
+
engines: {node: '>=6.9.0'}
37
+
38
+
'@babel/core@7.28.4':
39
+
resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==}
40
+
engines: {node: '>=6.9.0'}
41
+
42
+
'@babel/generator@7.28.3':
43
+
resolution: {integrity: sha512-3lSpxGgvnmZznmBkCRnVREPUFJv2wrv9iAoFDvADJc0ypmdOxdUtcLeBgBJ6zE0PMeTKnxeQzyk0xTBq4Ep7zw==}
44
+
engines: {node: '>=6.9.0'}
45
+
46
+
'@babel/helper-compilation-targets@7.27.2':
47
+
resolution: {integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==}
48
+
engines: {node: '>=6.9.0'}
49
+
50
+
'@babel/helper-globals@7.28.0':
51
+
resolution: {integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==}
52
+
engines: {node: '>=6.9.0'}
53
+
54
+
'@babel/helper-module-imports@7.18.6':
55
+
resolution: {integrity: sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==}
56
+
engines: {node: '>=6.9.0'}
57
+
58
+
'@babel/helper-module-imports@7.27.1':
59
+
resolution: {integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==}
60
+
engines: {node: '>=6.9.0'}
61
+
62
+
'@babel/helper-module-transforms@7.28.3':
63
+
resolution: {integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==}
64
+
engines: {node: '>=6.9.0'}
65
+
peerDependencies:
66
+
'@babel/core': ^7.0.0
67
+
68
+
'@babel/helper-plugin-utils@7.27.1':
69
+
resolution: {integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==}
70
+
engines: {node: '>=6.9.0'}
71
+
72
+
'@babel/helper-string-parser@7.27.1':
73
+
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
74
+
engines: {node: '>=6.9.0'}
75
+
76
+
'@babel/helper-validator-identifier@7.27.1':
77
+
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
78
+
engines: {node: '>=6.9.0'}
79
+
80
+
'@babel/helper-validator-option@7.27.1':
81
+
resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==}
82
+
engines: {node: '>=6.9.0'}
83
+
84
+
'@babel/helpers@7.28.4':
85
+
resolution: {integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==}
86
+
engines: {node: '>=6.9.0'}
87
+
88
+
'@babel/parser@7.28.4':
89
+
resolution: {integrity: sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==}
90
+
engines: {node: '>=6.0.0'}
91
+
hasBin: true
92
+
93
+
'@babel/plugin-syntax-jsx@7.27.1':
94
+
resolution: {integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==}
95
+
engines: {node: '>=6.9.0'}
96
+
peerDependencies:
97
+
'@babel/core': ^7.0.0-0
98
+
99
+
'@babel/plugin-syntax-typescript@7.27.1':
100
+
resolution: {integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==}
101
+
engines: {node: '>=6.9.0'}
102
+
peerDependencies:
103
+
'@babel/core': ^7.0.0-0
104
+
105
+
'@babel/template@7.27.2':
106
+
resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==}
107
+
engines: {node: '>=6.9.0'}
108
+
109
+
'@babel/traverse@7.28.4':
110
+
resolution: {integrity: sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==}
111
+
engines: {node: '>=6.9.0'}
112
+
113
+
'@babel/types@7.28.4':
114
+
resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==}
115
+
engines: {node: '>=6.9.0'}
116
+
117
+
'@esbuild/aix-ppc64@0.25.11':
118
+
resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
119
+
engines: {node: '>=18'}
120
+
cpu: [ppc64]
121
+
os: [aix]
122
+
123
+
'@esbuild/android-arm64@0.25.11':
124
+
resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==}
125
+
engines: {node: '>=18'}
126
+
cpu: [arm64]
127
+
os: [android]
128
+
129
+
'@esbuild/android-arm@0.25.11':
130
+
resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==}
131
+
engines: {node: '>=18'}
132
+
cpu: [arm]
133
+
os: [android]
134
+
135
+
'@esbuild/android-x64@0.25.11':
136
+
resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==}
137
+
engines: {node: '>=18'}
138
+
cpu: [x64]
139
+
os: [android]
140
+
141
+
'@esbuild/darwin-arm64@0.25.11':
142
+
resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==}
143
+
engines: {node: '>=18'}
144
+
cpu: [arm64]
145
+
os: [darwin]
146
+
147
+
'@esbuild/darwin-x64@0.25.11':
148
+
resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==}
149
+
engines: {node: '>=18'}
150
+
cpu: [x64]
151
+
os: [darwin]
152
+
153
+
'@esbuild/freebsd-arm64@0.25.11':
154
+
resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==}
155
+
engines: {node: '>=18'}
156
+
cpu: [arm64]
157
+
os: [freebsd]
158
+
159
+
'@esbuild/freebsd-x64@0.25.11':
160
+
resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==}
161
+
engines: {node: '>=18'}
162
+
cpu: [x64]
163
+
os: [freebsd]
164
+
165
+
'@esbuild/linux-arm64@0.25.11':
166
+
resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==}
167
+
engines: {node: '>=18'}
168
+
cpu: [arm64]
169
+
os: [linux]
170
+
171
+
'@esbuild/linux-arm@0.25.11':
172
+
resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==}
173
+
engines: {node: '>=18'}
174
+
cpu: [arm]
175
+
os: [linux]
176
+
177
+
'@esbuild/linux-ia32@0.25.11':
178
+
resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==}
179
+
engines: {node: '>=18'}
180
+
cpu: [ia32]
181
+
os: [linux]
182
+
183
+
'@esbuild/linux-loong64@0.25.11':
184
+
resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==}
185
+
engines: {node: '>=18'}
186
+
cpu: [loong64]
187
+
os: [linux]
188
+
189
+
'@esbuild/linux-mips64el@0.25.11':
190
+
resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==}
191
+
engines: {node: '>=18'}
192
+
cpu: [mips64el]
193
+
os: [linux]
194
+
195
+
'@esbuild/linux-ppc64@0.25.11':
196
+
resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==}
197
+
engines: {node: '>=18'}
198
+
cpu: [ppc64]
199
+
os: [linux]
200
+
201
+
'@esbuild/linux-riscv64@0.25.11':
202
+
resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==}
203
+
engines: {node: '>=18'}
204
+
cpu: [riscv64]
205
+
os: [linux]
206
+
207
+
'@esbuild/linux-s390x@0.25.11':
208
+
resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==}
209
+
engines: {node: '>=18'}
210
+
cpu: [s390x]
211
+
os: [linux]
212
+
213
+
'@esbuild/linux-x64@0.25.11':
214
+
resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==}
215
+
engines: {node: '>=18'}
216
+
cpu: [x64]
217
+
os: [linux]
218
+
219
+
'@esbuild/netbsd-arm64@0.25.11':
220
+
resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==}
221
+
engines: {node: '>=18'}
222
+
cpu: [arm64]
223
+
os: [netbsd]
224
+
225
+
'@esbuild/netbsd-x64@0.25.11':
226
+
resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==}
227
+
engines: {node: '>=18'}
228
+
cpu: [x64]
229
+
os: [netbsd]
230
+
231
+
'@esbuild/openbsd-arm64@0.25.11':
232
+
resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==}
233
+
engines: {node: '>=18'}
234
+
cpu: [arm64]
235
+
os: [openbsd]
236
+
237
+
'@esbuild/openbsd-x64@0.25.11':
238
+
resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==}
239
+
engines: {node: '>=18'}
240
+
cpu: [x64]
241
+
os: [openbsd]
242
+
243
+
'@esbuild/openharmony-arm64@0.25.11':
244
+
resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==}
245
+
engines: {node: '>=18'}
246
+
cpu: [arm64]
247
+
os: [openharmony]
248
+
249
+
'@esbuild/sunos-x64@0.25.11':
250
+
resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==}
251
+
engines: {node: '>=18'}
252
+
cpu: [x64]
253
+
os: [sunos]
254
+
255
+
'@esbuild/win32-arm64@0.25.11':
256
+
resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==}
257
+
engines: {node: '>=18'}
258
+
cpu: [arm64]
259
+
os: [win32]
260
+
261
+
'@esbuild/win32-ia32@0.25.11':
262
+
resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==}
263
+
engines: {node: '>=18'}
264
+
cpu: [ia32]
265
+
os: [win32]
266
+
267
+
'@esbuild/win32-x64@0.25.11':
268
+
resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==}
269
+
engines: {node: '>=18'}
270
+
cpu: [x64]
271
+
os: [win32]
272
+
273
+
'@jridgewell/gen-mapping@0.3.13':
274
+
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
275
+
276
+
'@jridgewell/remapping@2.3.5':
277
+
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
278
+
279
+
'@jridgewell/resolve-uri@3.1.2':
280
+
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
281
+
engines: {node: '>=6.0.0'}
282
+
283
+
'@jridgewell/sourcemap-codec@1.5.5':
284
+
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
285
+
286
+
'@jridgewell/trace-mapping@0.3.30':
287
+
resolution: {integrity: sha512-GQ7Nw5G2lTu/BtHTKfXhKHok2WGetd4XYcVKGx00SjAk8GMwgJM3zr6zORiPGuOE+/vkc90KtTosSSvaCjKb2Q==}
288
+
289
+
'@nothing-but/utils@0.17.0':
290
+
resolution: {integrity: sha512-TuCHcHLOqDL0SnaAxACfuRHBNRgNJcNn9X0GiH5H3YSDBVquCr3qEIG3FOQAuMyZCbu9w8nk2CHhOsn7IvhIwQ==}
291
+
292
+
'@rollup/rollup-android-arm-eabi@4.52.5':
293
+
resolution: {integrity: sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==}
294
+
cpu: [arm]
295
+
os: [android]
296
+
297
+
'@rollup/rollup-android-arm64@4.52.5':
298
+
resolution: {integrity: sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==}
299
+
cpu: [arm64]
300
+
os: [android]
301
+
302
+
'@rollup/rollup-darwin-arm64@4.52.5':
303
+
resolution: {integrity: sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==}
304
+
cpu: [arm64]
305
+
os: [darwin]
306
+
307
+
'@rollup/rollup-darwin-x64@4.52.5':
308
+
resolution: {integrity: sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==}
309
+
cpu: [x64]
310
+
os: [darwin]
311
+
312
+
'@rollup/rollup-freebsd-arm64@4.52.5':
313
+
resolution: {integrity: sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==}
314
+
cpu: [arm64]
315
+
os: [freebsd]
316
+
317
+
'@rollup/rollup-freebsd-x64@4.52.5':
318
+
resolution: {integrity: sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==}
319
+
cpu: [x64]
320
+
os: [freebsd]
321
+
322
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
323
+
resolution: {integrity: sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==}
324
+
cpu: [arm]
325
+
os: [linux]
326
+
327
+
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
328
+
resolution: {integrity: sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==}
329
+
cpu: [arm]
330
+
os: [linux]
331
+
332
+
'@rollup/rollup-linux-arm64-gnu@4.52.5':
333
+
resolution: {integrity: sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==}
334
+
cpu: [arm64]
335
+
os: [linux]
336
+
337
+
'@rollup/rollup-linux-arm64-musl@4.52.5':
338
+
resolution: {integrity: sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==}
339
+
cpu: [arm64]
340
+
os: [linux]
341
+
342
+
'@rollup/rollup-linux-loong64-gnu@4.52.5':
343
+
resolution: {integrity: sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==}
344
+
cpu: [loong64]
345
+
os: [linux]
346
+
347
+
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
348
+
resolution: {integrity: sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==}
349
+
cpu: [ppc64]
350
+
os: [linux]
351
+
352
+
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
353
+
resolution: {integrity: sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==}
354
+
cpu: [riscv64]
355
+
os: [linux]
356
+
357
+
'@rollup/rollup-linux-riscv64-musl@4.52.5':
358
+
resolution: {integrity: sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==}
359
+
cpu: [riscv64]
360
+
os: [linux]
361
+
362
+
'@rollup/rollup-linux-s390x-gnu@4.52.5':
363
+
resolution: {integrity: sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==}
364
+
cpu: [s390x]
365
+
os: [linux]
366
+
367
+
'@rollup/rollup-linux-x64-gnu@4.52.5':
368
+
resolution: {integrity: sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==}
369
+
cpu: [x64]
370
+
os: [linux]
371
+
372
+
'@rollup/rollup-linux-x64-musl@4.52.5':
373
+
resolution: {integrity: sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==}
374
+
cpu: [x64]
375
+
os: [linux]
376
+
377
+
'@rollup/rollup-openharmony-arm64@4.52.5':
378
+
resolution: {integrity: sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==}
379
+
cpu: [arm64]
380
+
os: [openharmony]
381
+
382
+
'@rollup/rollup-win32-arm64-msvc@4.52.5':
383
+
resolution: {integrity: sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==}
384
+
cpu: [arm64]
385
+
os: [win32]
386
+
387
+
'@rollup/rollup-win32-ia32-msvc@4.52.5':
388
+
resolution: {integrity: sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==}
389
+
cpu: [ia32]
390
+
os: [win32]
391
+
392
+
'@rollup/rollup-win32-x64-gnu@4.52.5':
393
+
resolution: {integrity: sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==}
394
+
cpu: [x64]
395
+
os: [win32]
396
+
397
+
'@rollup/rollup-win32-x64-msvc@4.52.5':
398
+
resolution: {integrity: sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==}
399
+
cpu: [x64]
400
+
os: [win32]
401
+
402
+
'@solid-devtools/debugger@0.28.1':
403
+
resolution: {integrity: sha512-6qIUI6VYkXoRnL8oF5bvh2KgH71qlJ18hNw/mwSyY6v48eb80ZR48/5PDXufUa3q+MBSuYa1uqTMwLewpay9eg==}
404
+
peerDependencies:
405
+
solid-js: ^1.9.0
406
+
407
+
'@solid-devtools/shared@0.20.0':
408
+
resolution: {integrity: sha512-o5TACmUOQsxpzpOKCjbQqGk8wL8PMi+frXG9WNu4Lh3PQVUB6hs95Kl/S8xc++zwcMguUKZJn8h5URUiMOca6Q==}
409
+
peerDependencies:
410
+
solid-js: ^1.9.0
411
+
412
+
'@solid-primitives/bounds@0.1.3':
413
+
resolution: {integrity: sha512-UbiyKMdSPmtijcEDnYLQL3zzaejpwWDAJJ4Gt5P0hgVs6A72piov0GyNw7V2SroH7NZFwxlYS22YmOr8A5xc1Q==}
414
+
peerDependencies:
415
+
solid-js: ^1.6.12
416
+
417
+
'@solid-primitives/event-listener@2.4.3':
418
+
resolution: {integrity: sha512-h4VqkYFv6Gf+L7SQj+Y6puigL/5DIi7x5q07VZET7AWcS+9/G3WfIE9WheniHWJs51OEkRB43w6lDys5YeFceg==}
419
+
peerDependencies:
420
+
solid-js: ^1.6.12
421
+
422
+
'@solid-primitives/keyboard@1.3.3':
423
+
resolution: {integrity: sha512-9dQHTTgLBqyAI7aavtO+HnpTVJgWQA1ghBSrmLtMu1SMxLPDuLfuNr+Tk5udb4AL4Ojg7h9JrKOGEEDqsJXWJA==}
424
+
peerDependencies:
425
+
solid-js: ^1.6.12
426
+
427
+
'@solid-primitives/media@2.3.3':
428
+
resolution: {integrity: sha512-hQ4hLOGvfbugQi5Eu1BFWAIJGIAzztq9x0h02xgBGl2l0Jaa3h7tg6bz5tV1NSuNYVGio4rPoa7zVQQLkkx9dA==}
429
+
peerDependencies:
430
+
solid-js: ^1.6.12
431
+
432
+
'@solid-primitives/refs@1.1.2':
433
+
resolution: {integrity: sha512-K7tf2thy7L+YJjdqXspXOg5xvNEOH8tgEWsp0+1mQk3obHBRD6hEjYZk7p7FlJphSZImS35je3UfmWuD7MhDfg==}
434
+
peerDependencies:
435
+
solid-js: ^1.6.12
436
+
437
+
'@solid-primitives/resize-observer@2.1.3':
438
+
resolution: {integrity: sha512-zBLje5E06TgOg93S7rGPldmhDnouNGhvfZVKOp+oG2XU8snA+GoCSSCz1M+jpNAg5Ek2EakU5UVQqL152WmdXQ==}
439
+
peerDependencies:
440
+
solid-js: ^1.6.12
441
+
442
+
'@solid-primitives/rootless@1.5.2':
443
+
resolution: {integrity: sha512-9HULb0QAzL2r47CCad0M+NKFtQ+LrGGNHZfteX/ThdGvKIg2o2GYhBooZubTCd/RTu2l2+Nw4s+dEfiDGvdrrQ==}
444
+
peerDependencies:
445
+
solid-js: ^1.6.12
446
+
447
+
'@solid-primitives/scheduled@1.5.2':
448
+
resolution: {integrity: sha512-/j2igE0xyNaHhj6kMfcUQn5rAVSTLbAX+CDEBm25hSNBmNiHLu2lM7Usj2kJJ5j36D67bE8wR1hBNA8hjtvsQA==}
449
+
peerDependencies:
450
+
solid-js: ^1.6.12
451
+
452
+
'@solid-primitives/static-store@0.1.2':
453
+
resolution: {integrity: sha512-ReK+5O38lJ7fT+L6mUFvUr6igFwHBESZF+2Ug842s7fvlVeBdIVEdTCErygff6w7uR6+jrr7J8jQo+cYrEq4Iw==}
454
+
peerDependencies:
455
+
solid-js: ^1.6.12
456
+
457
+
'@solid-primitives/styles@0.1.2':
458
+
resolution: {integrity: sha512-7iX5K+J5b1PRrbgw3Ki92uvU2LgQ0Kd/QMsrAZxDg5dpUBwMyTijZkA3bbs1ikZsT1oQhS41bTyKbjrXeU0Awg==}
459
+
peerDependencies:
460
+
solid-js: ^1.6.12
461
+
462
+
'@solid-primitives/utils@6.3.2':
463
+
resolution: {integrity: sha512-hZ/M/qr25QOCcwDPOHtGjxTD8w2mNyVAYvcfgwzBHq2RwNqHNdDNsMZYap20+ruRwW4A3Cdkczyoz0TSxLCAPQ==}
464
+
peerDependencies:
465
+
solid-js: ^1.6.12
466
+
467
+
'@types/babel__core@7.20.5':
468
+
resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
469
+
470
+
'@types/babel__generator@7.27.0':
471
+
resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
472
+
473
+
'@types/babel__template@7.4.4':
474
+
resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
475
+
476
+
'@types/babel__traverse@7.28.0':
477
+
resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
478
+
479
+
'@types/estree@1.0.8':
480
+
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
481
+
482
+
babel-plugin-jsx-dom-expressions@0.40.1:
483
+
resolution: {integrity: sha512-b4iHuirqK7RgaMzB2Lsl7MqrlDgQtVRSSazyrmx7wB3T759ggGjod5Rkok5MfHjQXhR7tRPmdwoeGPqBnW2KfA==}
484
+
peerDependencies:
485
+
'@babel/core': ^7.20.12
486
+
487
+
babel-preset-solid@1.9.9:
488
+
resolution: {integrity: sha512-pCnxWrciluXCeli/dj5PIEHgbNzim3evtTn12snjqqg8QZWJNMjH1AWIp4iG/tbVjqQ72aBEymMSagvmgxubXw==}
489
+
peerDependencies:
490
+
'@babel/core': ^7.0.0
491
+
solid-js: ^1.9.8
492
+
peerDependenciesMeta:
493
+
solid-js:
494
+
optional: true
495
+
496
+
browserslist@4.25.4:
497
+
resolution: {integrity: sha512-4jYpcjabC606xJ3kw2QwGEZKX0Aw7sgQdZCvIK9dhVSPh76BKo+C+btT1RRofH7B+8iNpEbgGNVWiLki5q93yg==}
498
+
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
499
+
hasBin: true
500
+
501
+
caniuse-lite@1.0.30001741:
502
+
resolution: {integrity: sha512-QGUGitqsc8ARjLdgAfxETDhRbJ0REsP6O3I96TAth/mVjh2cYzN2u+3AzPP3aVSm2FehEItaJw1xd+IGBXWeSw==}
503
+
504
+
convert-source-map@2.0.0:
505
+
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
506
+
507
+
csstype@3.1.3:
508
+
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
509
+
510
+
debug@4.4.1:
511
+
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
512
+
engines: {node: '>=6.0'}
513
+
peerDependencies:
514
+
supports-color: '*'
515
+
peerDependenciesMeta:
516
+
supports-color:
517
+
optional: true
518
+
519
+
electron-to-chromium@1.5.214:
520
+
resolution: {integrity: sha512-TpvUNdha+X3ybfU78NoQatKvQEm1oq3lf2QbnmCEdw+Bd9RuIAY+hJTvq1avzHM0f7EJfnH3vbCnbzKzisc/9Q==}
521
+
522
+
entities@6.0.1:
523
+
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
524
+
engines: {node: '>=0.12'}
525
+
526
+
esbuild@0.25.11:
527
+
resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==}
528
+
engines: {node: '>=18'}
529
+
hasBin: true
530
+
531
+
escalade@3.2.0:
532
+
resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
533
+
engines: {node: '>=6'}
534
+
535
+
fdir@6.5.0:
536
+
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
537
+
engines: {node: '>=12.0.0'}
538
+
peerDependencies:
539
+
picomatch: ^3 || ^4
540
+
peerDependenciesMeta:
541
+
picomatch:
542
+
optional: true
543
+
544
+
fsevents@2.3.3:
545
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
546
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
547
+
os: [darwin]
548
+
549
+
gensync@1.0.0-beta.2:
550
+
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
551
+
engines: {node: '>=6.9.0'}
552
+
553
+
html-entities@2.3.3:
554
+
resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==}
555
+
556
+
is-what@4.1.16:
557
+
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
558
+
engines: {node: '>=12.13'}
559
+
560
+
js-tokens@4.0.0:
561
+
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
562
+
563
+
jsesc@3.1.0:
564
+
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
565
+
engines: {node: '>=6'}
566
+
hasBin: true
567
+
568
+
json5@2.2.3:
569
+
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
570
+
engines: {node: '>=6'}
571
+
hasBin: true
572
+
573
+
lru-cache@5.1.1:
574
+
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
575
+
576
+
merge-anything@5.1.7:
577
+
resolution: {integrity: sha512-eRtbOb1N5iyH0tkQDAoQ4Ipsp/5qSR79Dzrz8hEPxRX10RWWR/iQXdoKmBSRCThY1Fh5EhISDtpSc93fpxUniQ==}
578
+
engines: {node: '>=12.13'}
579
+
580
+
ms@2.1.3:
581
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
582
+
583
+
nanoid@3.3.11:
584
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
585
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
586
+
hasBin: true
587
+
588
+
node-releases@2.0.20:
589
+
resolution: {integrity: sha512-7gK6zSXEH6neM212JgfYFXe+GmZQM+fia5SsusuBIUgnPheLFBmIPhtFoAQRj8/7wASYQnbDlHPVwY0BefoFgA==}
590
+
591
+
parse5@7.3.0:
592
+
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
593
+
594
+
picocolors@1.1.1:
595
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
596
+
597
+
picomatch@4.0.3:
598
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
599
+
engines: {node: '>=12'}
600
+
601
+
postcss@8.5.6:
602
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
603
+
engines: {node: ^10 || ^12 || >=14}
604
+
605
+
rollup@4.52.5:
606
+
resolution: {integrity: sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==}
607
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
608
+
hasBin: true
609
+
610
+
semver@6.3.1:
611
+
resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
612
+
hasBin: true
613
+
614
+
seroval-plugins@1.3.3:
615
+
resolution: {integrity: sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w==}
616
+
engines: {node: '>=10'}
617
+
peerDependencies:
618
+
seroval: ^1.0
619
+
620
+
seroval@1.3.2:
621
+
resolution: {integrity: sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ==}
622
+
engines: {node: '>=10'}
623
+
624
+
solid-devtools@0.34.3:
625
+
resolution: {integrity: sha512-ZQua959n+Zu3sLbm9g0IRjYUb1YYlYbu83PWLRoKbSsq0a3ItQNhnS2OBU7rQNmOKZiMexNo9Z3izas9BcOKDg==}
626
+
peerDependencies:
627
+
solid-js: ^1.9.0
628
+
vite: ^2.2.3 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
629
+
peerDependenciesMeta:
630
+
vite:
631
+
optional: true
632
+
633
+
solid-js@1.9.9:
634
+
resolution: {integrity: sha512-A0ZBPJQldAeGCTW0YRYJmt7RCeh5rbFfPZ2aOttgYnctHE7HgKeHCBB/PVc2P7eOfmNXqMFFFoYYdm3S4dcbkA==}
635
+
636
+
solid-refresh@0.6.3:
637
+
resolution: {integrity: sha512-F3aPsX6hVw9ttm5LYlth8Q15x6MlI/J3Dn+o3EQyRTtTxidepSTwAYdozt01/YA+7ObcciagGEyXIopGZzQtbA==}
638
+
peerDependencies:
639
+
solid-js: ^1.3
640
+
641
+
source-map-js@1.2.1:
642
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
643
+
engines: {node: '>=0.10.0'}
644
+
645
+
tinyglobby@0.2.15:
646
+
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
647
+
engines: {node: '>=12.0.0'}
648
+
649
+
typescript@5.9.2:
650
+
resolution: {integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==}
651
+
engines: {node: '>=14.17'}
652
+
hasBin: true
653
+
654
+
update-browserslist-db@1.1.3:
655
+
resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==}
656
+
hasBin: true
657
+
peerDependencies:
658
+
browserslist: '>= 4.21.0'
659
+
660
+
validate-html-nesting@1.2.3:
661
+
resolution: {integrity: sha512-kdkWdCl6eCeLlRShJKbjVOU2kFKxMF8Ghu50n+crEoyx+VKm3FxAxF9z4DCy6+bbTOqNW0+jcIYRnjoIRzigRw==}
662
+
663
+
vite-plugin-solid@2.11.9:
664
+
resolution: {integrity: sha512-bTA6p+bspXZsuulSd2y6aTzegF8xGaJYcq1Uyh/mv+W4DQtzCgL9nN6n2fsTaxp/dMk+ZHHKgGndlNeooqHLKw==}
665
+
peerDependencies:
666
+
'@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.*
667
+
solid-js: ^1.7.2
668
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0
669
+
peerDependenciesMeta:
670
+
'@testing-library/jest-dom':
671
+
optional: true
672
+
673
+
vite@7.1.10:
674
+
resolution: {integrity: sha512-CmuvUBzVJ/e3HGxhg6cYk88NGgTnBoOo7ogtfJJ0fefUWAxN/WDSUa50o+oVBxuIhO8FoEZW0j2eW7sfjs5EtA==}
675
+
engines: {node: ^20.19.0 || >=22.12.0}
676
+
hasBin: true
677
+
peerDependencies:
678
+
'@types/node': ^20.19.0 || >=22.12.0
679
+
jiti: '>=1.21.0'
680
+
less: ^4.0.0
681
+
lightningcss: ^1.21.0
682
+
sass: ^1.70.0
683
+
sass-embedded: ^1.70.0
684
+
stylus: '>=0.54.8'
685
+
sugarss: ^5.0.0
686
+
terser: ^5.16.0
687
+
tsx: ^4.8.1
688
+
yaml: ^2.4.2
689
+
peerDependenciesMeta:
690
+
'@types/node':
691
+
optional: true
692
+
jiti:
693
+
optional: true
694
+
less:
695
+
optional: true
696
+
lightningcss:
697
+
optional: true
698
+
sass:
699
+
optional: true
700
+
sass-embedded:
701
+
optional: true
702
+
stylus:
703
+
optional: true
704
+
sugarss:
705
+
optional: true
706
+
terser:
707
+
optional: true
708
+
tsx:
709
+
optional: true
710
+
yaml:
711
+
optional: true
712
+
713
+
vitefu@1.1.1:
714
+
resolution: {integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==}
715
+
peerDependencies:
716
+
vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0
717
+
peerDependenciesMeta:
718
+
vite:
719
+
optional: true
720
+
721
+
yallist@3.1.1:
722
+
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
723
+
724
+
snapshots:
725
+
726
+
'@babel/code-frame@7.27.1':
727
+
dependencies:
728
+
'@babel/helper-validator-identifier': 7.27.1
729
+
js-tokens: 4.0.0
730
+
picocolors: 1.1.1
731
+
732
+
'@babel/compat-data@7.28.4': {}
733
+
734
+
'@babel/core@7.28.4':
735
+
dependencies:
736
+
'@babel/code-frame': 7.27.1
737
+
'@babel/generator': 7.28.3
738
+
'@babel/helper-compilation-targets': 7.27.2
739
+
'@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.4)
740
+
'@babel/helpers': 7.28.4
741
+
'@babel/parser': 7.28.4
742
+
'@babel/template': 7.27.2
743
+
'@babel/traverse': 7.28.4
744
+
'@babel/types': 7.28.4
745
+
'@jridgewell/remapping': 2.3.5
746
+
convert-source-map: 2.0.0
747
+
debug: 4.4.1
748
+
gensync: 1.0.0-beta.2
749
+
json5: 2.2.3
750
+
semver: 6.3.1
751
+
transitivePeerDependencies:
752
+
- supports-color
753
+
754
+
'@babel/generator@7.28.3':
755
+
dependencies:
756
+
'@babel/parser': 7.28.4
757
+
'@babel/types': 7.28.4
758
+
'@jridgewell/gen-mapping': 0.3.13
759
+
'@jridgewell/trace-mapping': 0.3.30
760
+
jsesc: 3.1.0
761
+
762
+
'@babel/helper-compilation-targets@7.27.2':
763
+
dependencies:
764
+
'@babel/compat-data': 7.28.4
765
+
'@babel/helper-validator-option': 7.27.1
766
+
browserslist: 4.25.4
767
+
lru-cache: 5.1.1
768
+
semver: 6.3.1
769
+
770
+
'@babel/helper-globals@7.28.0': {}
771
+
772
+
'@babel/helper-module-imports@7.18.6':
773
+
dependencies:
774
+
'@babel/types': 7.28.4
775
+
776
+
'@babel/helper-module-imports@7.27.1':
777
+
dependencies:
778
+
'@babel/traverse': 7.28.4
779
+
'@babel/types': 7.28.4
780
+
transitivePeerDependencies:
781
+
- supports-color
782
+
783
+
'@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)':
784
+
dependencies:
785
+
'@babel/core': 7.28.4
786
+
'@babel/helper-module-imports': 7.27.1
787
+
'@babel/helper-validator-identifier': 7.27.1
788
+
'@babel/traverse': 7.28.4
789
+
transitivePeerDependencies:
790
+
- supports-color
791
+
792
+
'@babel/helper-plugin-utils@7.27.1': {}
793
+
794
+
'@babel/helper-string-parser@7.27.1': {}
795
+
796
+
'@babel/helper-validator-identifier@7.27.1': {}
797
+
798
+
'@babel/helper-validator-option@7.27.1': {}
799
+
800
+
'@babel/helpers@7.28.4':
801
+
dependencies:
802
+
'@babel/template': 7.27.2
803
+
'@babel/types': 7.28.4
804
+
805
+
'@babel/parser@7.28.4':
806
+
dependencies:
807
+
'@babel/types': 7.28.4
808
+
809
+
'@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)':
810
+
dependencies:
811
+
'@babel/core': 7.28.4
812
+
'@babel/helper-plugin-utils': 7.27.1
813
+
814
+
'@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)':
815
+
dependencies:
816
+
'@babel/core': 7.28.4
817
+
'@babel/helper-plugin-utils': 7.27.1
818
+
819
+
'@babel/template@7.27.2':
820
+
dependencies:
821
+
'@babel/code-frame': 7.27.1
822
+
'@babel/parser': 7.28.4
823
+
'@babel/types': 7.28.4
824
+
825
+
'@babel/traverse@7.28.4':
826
+
dependencies:
827
+
'@babel/code-frame': 7.27.1
828
+
'@babel/generator': 7.28.3
829
+
'@babel/helper-globals': 7.28.0
830
+
'@babel/parser': 7.28.4
831
+
'@babel/template': 7.27.2
832
+
'@babel/types': 7.28.4
833
+
debug: 4.4.1
834
+
transitivePeerDependencies:
835
+
- supports-color
836
+
837
+
'@babel/types@7.28.4':
838
+
dependencies:
839
+
'@babel/helper-string-parser': 7.27.1
840
+
'@babel/helper-validator-identifier': 7.27.1
841
+
842
+
'@esbuild/aix-ppc64@0.25.11':
843
+
optional: true
844
+
845
+
'@esbuild/android-arm64@0.25.11':
846
+
optional: true
847
+
848
+
'@esbuild/android-arm@0.25.11':
849
+
optional: true
850
+
851
+
'@esbuild/android-x64@0.25.11':
852
+
optional: true
853
+
854
+
'@esbuild/darwin-arm64@0.25.11':
855
+
optional: true
856
+
857
+
'@esbuild/darwin-x64@0.25.11':
858
+
optional: true
859
+
860
+
'@esbuild/freebsd-arm64@0.25.11':
861
+
optional: true
862
+
863
+
'@esbuild/freebsd-x64@0.25.11':
864
+
optional: true
865
+
866
+
'@esbuild/linux-arm64@0.25.11':
867
+
optional: true
868
+
869
+
'@esbuild/linux-arm@0.25.11':
870
+
optional: true
871
+
872
+
'@esbuild/linux-ia32@0.25.11':
873
+
optional: true
874
+
875
+
'@esbuild/linux-loong64@0.25.11':
876
+
optional: true
877
+
878
+
'@esbuild/linux-mips64el@0.25.11':
879
+
optional: true
880
+
881
+
'@esbuild/linux-ppc64@0.25.11':
882
+
optional: true
883
+
884
+
'@esbuild/linux-riscv64@0.25.11':
885
+
optional: true
886
+
887
+
'@esbuild/linux-s390x@0.25.11':
888
+
optional: true
889
+
890
+
'@esbuild/linux-x64@0.25.11':
891
+
optional: true
892
+
893
+
'@esbuild/netbsd-arm64@0.25.11':
894
+
optional: true
895
+
896
+
'@esbuild/netbsd-x64@0.25.11':
897
+
optional: true
898
+
899
+
'@esbuild/openbsd-arm64@0.25.11':
900
+
optional: true
901
+
902
+
'@esbuild/openbsd-x64@0.25.11':
903
+
optional: true
904
+
905
+
'@esbuild/openharmony-arm64@0.25.11':
906
+
optional: true
907
+
908
+
'@esbuild/sunos-x64@0.25.11':
909
+
optional: true
910
+
911
+
'@esbuild/win32-arm64@0.25.11':
912
+
optional: true
913
+
914
+
'@esbuild/win32-ia32@0.25.11':
915
+
optional: true
916
+
917
+
'@esbuild/win32-x64@0.25.11':
918
+
optional: true
919
+
920
+
'@jridgewell/gen-mapping@0.3.13':
921
+
dependencies:
922
+
'@jridgewell/sourcemap-codec': 1.5.5
923
+
'@jridgewell/trace-mapping': 0.3.30
924
+
925
+
'@jridgewell/remapping@2.3.5':
926
+
dependencies:
927
+
'@jridgewell/gen-mapping': 0.3.13
928
+
'@jridgewell/trace-mapping': 0.3.30
929
+
930
+
'@jridgewell/resolve-uri@3.1.2': {}
931
+
932
+
'@jridgewell/sourcemap-codec@1.5.5': {}
933
+
934
+
'@jridgewell/trace-mapping@0.3.30':
935
+
dependencies:
936
+
'@jridgewell/resolve-uri': 3.1.2
937
+
'@jridgewell/sourcemap-codec': 1.5.5
938
+
939
+
'@nothing-but/utils@0.17.0': {}
940
+
941
+
'@rollup/rollup-android-arm-eabi@4.52.5':
942
+
optional: true
943
+
944
+
'@rollup/rollup-android-arm64@4.52.5':
945
+
optional: true
946
+
947
+
'@rollup/rollup-darwin-arm64@4.52.5':
948
+
optional: true
949
+
950
+
'@rollup/rollup-darwin-x64@4.52.5':
951
+
optional: true
952
+
953
+
'@rollup/rollup-freebsd-arm64@4.52.5':
954
+
optional: true
955
+
956
+
'@rollup/rollup-freebsd-x64@4.52.5':
957
+
optional: true
958
+
959
+
'@rollup/rollup-linux-arm-gnueabihf@4.52.5':
960
+
optional: true
961
+
962
+
'@rollup/rollup-linux-arm-musleabihf@4.52.5':
963
+
optional: true
964
+
965
+
'@rollup/rollup-linux-arm64-gnu@4.52.5':
966
+
optional: true
967
+
968
+
'@rollup/rollup-linux-arm64-musl@4.52.5':
969
+
optional: true
970
+
971
+
'@rollup/rollup-linux-loong64-gnu@4.52.5':
972
+
optional: true
973
+
974
+
'@rollup/rollup-linux-ppc64-gnu@4.52.5':
975
+
optional: true
976
+
977
+
'@rollup/rollup-linux-riscv64-gnu@4.52.5':
978
+
optional: true
979
+
980
+
'@rollup/rollup-linux-riscv64-musl@4.52.5':
981
+
optional: true
982
+
983
+
'@rollup/rollup-linux-s390x-gnu@4.52.5':
984
+
optional: true
985
+
986
+
'@rollup/rollup-linux-x64-gnu@4.52.5':
987
+
optional: true
988
+
989
+
'@rollup/rollup-linux-x64-musl@4.52.5':
990
+
optional: true
991
+
992
+
'@rollup/rollup-openharmony-arm64@4.52.5':
993
+
optional: true
994
+
995
+
'@rollup/rollup-win32-arm64-msvc@4.52.5':
996
+
optional: true
997
+
998
+
'@rollup/rollup-win32-ia32-msvc@4.52.5':
999
+
optional: true
1000
+
1001
+
'@rollup/rollup-win32-x64-gnu@4.52.5':
1002
+
optional: true
1003
+
1004
+
'@rollup/rollup-win32-x64-msvc@4.52.5':
1005
+
optional: true
1006
+
1007
+
'@solid-devtools/debugger@0.28.1(solid-js@1.9.9)':
1008
+
dependencies:
1009
+
'@nothing-but/utils': 0.17.0
1010
+
'@solid-devtools/shared': 0.20.0(solid-js@1.9.9)
1011
+
'@solid-primitives/bounds': 0.1.3(solid-js@1.9.9)
1012
+
'@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9)
1013
+
'@solid-primitives/keyboard': 1.3.3(solid-js@1.9.9)
1014
+
'@solid-primitives/rootless': 1.5.2(solid-js@1.9.9)
1015
+
'@solid-primitives/scheduled': 1.5.2(solid-js@1.9.9)
1016
+
'@solid-primitives/static-store': 0.1.2(solid-js@1.9.9)
1017
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1018
+
solid-js: 1.9.9
1019
+
1020
+
'@solid-devtools/shared@0.20.0(solid-js@1.9.9)':
1021
+
dependencies:
1022
+
'@nothing-but/utils': 0.17.0
1023
+
'@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9)
1024
+
'@solid-primitives/media': 2.3.3(solid-js@1.9.9)
1025
+
'@solid-primitives/refs': 1.1.2(solid-js@1.9.9)
1026
+
'@solid-primitives/rootless': 1.5.2(solid-js@1.9.9)
1027
+
'@solid-primitives/scheduled': 1.5.2(solid-js@1.9.9)
1028
+
'@solid-primitives/static-store': 0.1.2(solid-js@1.9.9)
1029
+
'@solid-primitives/styles': 0.1.2(solid-js@1.9.9)
1030
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1031
+
solid-js: 1.9.9
1032
+
1033
+
'@solid-primitives/bounds@0.1.3(solid-js@1.9.9)':
1034
+
dependencies:
1035
+
'@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9)
1036
+
'@solid-primitives/resize-observer': 2.1.3(solid-js@1.9.9)
1037
+
'@solid-primitives/static-store': 0.1.2(solid-js@1.9.9)
1038
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1039
+
solid-js: 1.9.9
1040
+
1041
+
'@solid-primitives/event-listener@2.4.3(solid-js@1.9.9)':
1042
+
dependencies:
1043
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1044
+
solid-js: 1.9.9
1045
+
1046
+
'@solid-primitives/keyboard@1.3.3(solid-js@1.9.9)':
1047
+
dependencies:
1048
+
'@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9)
1049
+
'@solid-primitives/rootless': 1.5.2(solid-js@1.9.9)
1050
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1051
+
solid-js: 1.9.9
1052
+
1053
+
'@solid-primitives/media@2.3.3(solid-js@1.9.9)':
1054
+
dependencies:
1055
+
'@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9)
1056
+
'@solid-primitives/rootless': 1.5.2(solid-js@1.9.9)
1057
+
'@solid-primitives/static-store': 0.1.2(solid-js@1.9.9)
1058
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1059
+
solid-js: 1.9.9
1060
+
1061
+
'@solid-primitives/refs@1.1.2(solid-js@1.9.9)':
1062
+
dependencies:
1063
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1064
+
solid-js: 1.9.9
1065
+
1066
+
'@solid-primitives/resize-observer@2.1.3(solid-js@1.9.9)':
1067
+
dependencies:
1068
+
'@solid-primitives/event-listener': 2.4.3(solid-js@1.9.9)
1069
+
'@solid-primitives/rootless': 1.5.2(solid-js@1.9.9)
1070
+
'@solid-primitives/static-store': 0.1.2(solid-js@1.9.9)
1071
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1072
+
solid-js: 1.9.9
1073
+
1074
+
'@solid-primitives/rootless@1.5.2(solid-js@1.9.9)':
1075
+
dependencies:
1076
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1077
+
solid-js: 1.9.9
1078
+
1079
+
'@solid-primitives/scheduled@1.5.2(solid-js@1.9.9)':
1080
+
dependencies:
1081
+
solid-js: 1.9.9
1082
+
1083
+
'@solid-primitives/static-store@0.1.2(solid-js@1.9.9)':
1084
+
dependencies:
1085
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1086
+
solid-js: 1.9.9
1087
+
1088
+
'@solid-primitives/styles@0.1.2(solid-js@1.9.9)':
1089
+
dependencies:
1090
+
'@solid-primitives/rootless': 1.5.2(solid-js@1.9.9)
1091
+
'@solid-primitives/utils': 6.3.2(solid-js@1.9.9)
1092
+
solid-js: 1.9.9
1093
+
1094
+
'@solid-primitives/utils@6.3.2(solid-js@1.9.9)':
1095
+
dependencies:
1096
+
solid-js: 1.9.9
1097
+
1098
+
'@types/babel__core@7.20.5':
1099
+
dependencies:
1100
+
'@babel/parser': 7.28.4
1101
+
'@babel/types': 7.28.4
1102
+
'@types/babel__generator': 7.27.0
1103
+
'@types/babel__template': 7.4.4
1104
+
'@types/babel__traverse': 7.28.0
1105
+
1106
+
'@types/babel__generator@7.27.0':
1107
+
dependencies:
1108
+
'@babel/types': 7.28.4
1109
+
1110
+
'@types/babel__template@7.4.4':
1111
+
dependencies:
1112
+
'@babel/parser': 7.28.4
1113
+
'@babel/types': 7.28.4
1114
+
1115
+
'@types/babel__traverse@7.28.0':
1116
+
dependencies:
1117
+
'@babel/types': 7.28.4
1118
+
1119
+
'@types/estree@1.0.8': {}
1120
+
1121
+
babel-plugin-jsx-dom-expressions@0.40.1(@babel/core@7.28.4):
1122
+
dependencies:
1123
+
'@babel/core': 7.28.4
1124
+
'@babel/helper-module-imports': 7.18.6
1125
+
'@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.4)
1126
+
'@babel/types': 7.28.4
1127
+
html-entities: 2.3.3
1128
+
parse5: 7.3.0
1129
+
validate-html-nesting: 1.2.3
1130
+
1131
+
babel-preset-solid@1.9.9(@babel/core@7.28.4)(solid-js@1.9.9):
1132
+
dependencies:
1133
+
'@babel/core': 7.28.4
1134
+
babel-plugin-jsx-dom-expressions: 0.40.1(@babel/core@7.28.4)
1135
+
optionalDependencies:
1136
+
solid-js: 1.9.9
1137
+
1138
+
browserslist@4.25.4:
1139
+
dependencies:
1140
+
caniuse-lite: 1.0.30001741
1141
+
electron-to-chromium: 1.5.214
1142
+
node-releases: 2.0.20
1143
+
update-browserslist-db: 1.1.3(browserslist@4.25.4)
1144
+
1145
+
caniuse-lite@1.0.30001741: {}
1146
+
1147
+
convert-source-map@2.0.0: {}
1148
+
1149
+
csstype@3.1.3: {}
1150
+
1151
+
debug@4.4.1:
1152
+
dependencies:
1153
+
ms: 2.1.3
1154
+
1155
+
electron-to-chromium@1.5.214: {}
1156
+
1157
+
entities@6.0.1: {}
1158
+
1159
+
esbuild@0.25.11:
1160
+
optionalDependencies:
1161
+
'@esbuild/aix-ppc64': 0.25.11
1162
+
'@esbuild/android-arm': 0.25.11
1163
+
'@esbuild/android-arm64': 0.25.11
1164
+
'@esbuild/android-x64': 0.25.11
1165
+
'@esbuild/darwin-arm64': 0.25.11
1166
+
'@esbuild/darwin-x64': 0.25.11
1167
+
'@esbuild/freebsd-arm64': 0.25.11
1168
+
'@esbuild/freebsd-x64': 0.25.11
1169
+
'@esbuild/linux-arm': 0.25.11
1170
+
'@esbuild/linux-arm64': 0.25.11
1171
+
'@esbuild/linux-ia32': 0.25.11
1172
+
'@esbuild/linux-loong64': 0.25.11
1173
+
'@esbuild/linux-mips64el': 0.25.11
1174
+
'@esbuild/linux-ppc64': 0.25.11
1175
+
'@esbuild/linux-riscv64': 0.25.11
1176
+
'@esbuild/linux-s390x': 0.25.11
1177
+
'@esbuild/linux-x64': 0.25.11
1178
+
'@esbuild/netbsd-arm64': 0.25.11
1179
+
'@esbuild/netbsd-x64': 0.25.11
1180
+
'@esbuild/openbsd-arm64': 0.25.11
1181
+
'@esbuild/openbsd-x64': 0.25.11
1182
+
'@esbuild/openharmony-arm64': 0.25.11
1183
+
'@esbuild/sunos-x64': 0.25.11
1184
+
'@esbuild/win32-arm64': 0.25.11
1185
+
'@esbuild/win32-ia32': 0.25.11
1186
+
'@esbuild/win32-x64': 0.25.11
1187
+
1188
+
escalade@3.2.0: {}
1189
+
1190
+
fdir@6.5.0(picomatch@4.0.3):
1191
+
optionalDependencies:
1192
+
picomatch: 4.0.3
1193
+
1194
+
fsevents@2.3.3:
1195
+
optional: true
1196
+
1197
+
gensync@1.0.0-beta.2: {}
1198
+
1199
+
html-entities@2.3.3: {}
1200
+
1201
+
is-what@4.1.16: {}
1202
+
1203
+
js-tokens@4.0.0: {}
1204
+
1205
+
jsesc@3.1.0: {}
1206
+
1207
+
json5@2.2.3: {}
1208
+
1209
+
lru-cache@5.1.1:
1210
+
dependencies:
1211
+
yallist: 3.1.1
1212
+
1213
+
merge-anything@5.1.7:
1214
+
dependencies:
1215
+
is-what: 4.1.16
1216
+
1217
+
ms@2.1.3: {}
1218
+
1219
+
nanoid@3.3.11: {}
1220
+
1221
+
node-releases@2.0.20: {}
1222
+
1223
+
parse5@7.3.0:
1224
+
dependencies:
1225
+
entities: 6.0.1
1226
+
1227
+
picocolors@1.1.1: {}
1228
+
1229
+
picomatch@4.0.3: {}
1230
+
1231
+
postcss@8.5.6:
1232
+
dependencies:
1233
+
nanoid: 3.3.11
1234
+
picocolors: 1.1.1
1235
+
source-map-js: 1.2.1
1236
+
1237
+
rollup@4.52.5:
1238
+
dependencies:
1239
+
'@types/estree': 1.0.8
1240
+
optionalDependencies:
1241
+
'@rollup/rollup-android-arm-eabi': 4.52.5
1242
+
'@rollup/rollup-android-arm64': 4.52.5
1243
+
'@rollup/rollup-darwin-arm64': 4.52.5
1244
+
'@rollup/rollup-darwin-x64': 4.52.5
1245
+
'@rollup/rollup-freebsd-arm64': 4.52.5
1246
+
'@rollup/rollup-freebsd-x64': 4.52.5
1247
+
'@rollup/rollup-linux-arm-gnueabihf': 4.52.5
1248
+
'@rollup/rollup-linux-arm-musleabihf': 4.52.5
1249
+
'@rollup/rollup-linux-arm64-gnu': 4.52.5
1250
+
'@rollup/rollup-linux-arm64-musl': 4.52.5
1251
+
'@rollup/rollup-linux-loong64-gnu': 4.52.5
1252
+
'@rollup/rollup-linux-ppc64-gnu': 4.52.5
1253
+
'@rollup/rollup-linux-riscv64-gnu': 4.52.5
1254
+
'@rollup/rollup-linux-riscv64-musl': 4.52.5
1255
+
'@rollup/rollup-linux-s390x-gnu': 4.52.5
1256
+
'@rollup/rollup-linux-x64-gnu': 4.52.5
1257
+
'@rollup/rollup-linux-x64-musl': 4.52.5
1258
+
'@rollup/rollup-openharmony-arm64': 4.52.5
1259
+
'@rollup/rollup-win32-arm64-msvc': 4.52.5
1260
+
'@rollup/rollup-win32-ia32-msvc': 4.52.5
1261
+
'@rollup/rollup-win32-x64-gnu': 4.52.5
1262
+
'@rollup/rollup-win32-x64-msvc': 4.52.5
1263
+
fsevents: 2.3.3
1264
+
1265
+
semver@6.3.1: {}
1266
+
1267
+
seroval-plugins@1.3.3(seroval@1.3.2):
1268
+
dependencies:
1269
+
seroval: 1.3.2
1270
+
1271
+
seroval@1.3.2: {}
1272
+
1273
+
solid-devtools@0.34.3(solid-js@1.9.9)(vite@7.1.10):
1274
+
dependencies:
1275
+
'@babel/core': 7.28.4
1276
+
'@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.4)
1277
+
'@babel/types': 7.28.4
1278
+
'@solid-devtools/debugger': 0.28.1(solid-js@1.9.9)
1279
+
'@solid-devtools/shared': 0.20.0(solid-js@1.9.9)
1280
+
solid-js: 1.9.9
1281
+
optionalDependencies:
1282
+
vite: 7.1.10
1283
+
transitivePeerDependencies:
1284
+
- supports-color
1285
+
1286
+
solid-js@1.9.9:
1287
+
dependencies:
1288
+
csstype: 3.1.3
1289
+
seroval: 1.3.2
1290
+
seroval-plugins: 1.3.3(seroval@1.3.2)
1291
+
1292
+
solid-refresh@0.6.3(solid-js@1.9.9):
1293
+
dependencies:
1294
+
'@babel/generator': 7.28.3
1295
+
'@babel/helper-module-imports': 7.27.1
1296
+
'@babel/types': 7.28.4
1297
+
solid-js: 1.9.9
1298
+
transitivePeerDependencies:
1299
+
- supports-color
1300
+
1301
+
source-map-js@1.2.1: {}
1302
+
1303
+
tinyglobby@0.2.15:
1304
+
dependencies:
1305
+
fdir: 6.5.0(picomatch@4.0.3)
1306
+
picomatch: 4.0.3
1307
+
1308
+
typescript@5.9.2: {}
1309
+
1310
+
update-browserslist-db@1.1.3(browserslist@4.25.4):
1311
+
dependencies:
1312
+
browserslist: 4.25.4
1313
+
escalade: 3.2.0
1314
+
picocolors: 1.1.1
1315
+
1316
+
validate-html-nesting@1.2.3: {}
1317
+
1318
+
vite-plugin-solid@2.11.9(solid-js@1.9.9)(vite@7.1.10):
1319
+
dependencies:
1320
+
'@babel/core': 7.28.4
1321
+
'@types/babel__core': 7.20.5
1322
+
babel-preset-solid: 1.9.9(@babel/core@7.28.4)(solid-js@1.9.9)
1323
+
merge-anything: 5.1.7
1324
+
solid-js: 1.9.9
1325
+
solid-refresh: 0.6.3(solid-js@1.9.9)
1326
+
vite: 7.1.10
1327
+
vitefu: 1.1.1(vite@7.1.10)
1328
+
transitivePeerDependencies:
1329
+
- supports-color
1330
+
1331
+
vite@7.1.10:
1332
+
dependencies:
1333
+
esbuild: 0.25.11
1334
+
fdir: 6.5.0(picomatch@4.0.3)
1335
+
picomatch: 4.0.3
1336
+
postcss: 8.5.6
1337
+
rollup: 4.52.5
1338
+
tinyglobby: 0.2.15
1339
+
optionalDependencies:
1340
+
fsevents: 2.3.3
1341
+
1342
+
vitefu@1.1.1(vite@7.1.10):
1343
+
optionalDependencies:
1344
+
vite: 7.1.10
1345
+
1346
+
yallist@3.1.1: {}
+5
postcss.config.cjs
+5
postcss.config.cjs
+264
src/App.tsx
+264
src/App.tsx
···
1
+
import { createSignal, For } from "solid-js";
2
+
3
+
import {
4
+
CheckIcon,
5
+
ChevronsUpDownIcon,
6
+
ClipboardIcon,
7
+
Trash2Icon,
8
+
} from "lucide-solid";
9
+
import { Button } from "./components/ui/button";
10
+
import { Card } from "./components/ui/card";
11
+
import { Stack, Box, StackProps, HStack } from "styled-system/jsx";
12
+
import { FileUpload } from "./components/ui/file-upload";
13
+
import { IconButton } from "./components/ui/icon-button";
14
+
import { Text } from "./components/ui/text";
15
+
16
+
import { AtprotoDid } from "@atcute/lexicons/syntax";
17
+
import {
18
+
Account,
19
+
accounts,
20
+
selectedAccount,
21
+
setSelectedAccount,
22
+
} from "./lib/accounts";
23
+
import { Toaster } from "~/components/Toaster";
24
+
import { createListCollection, Select } from "./components/ui/select";
25
+
26
+
import { addTask, tasks, TaskState } from "./lib/task";
27
+
import Task from "./components/FileTask";
28
+
import Settings from "./components/Settings";
29
+
30
+
const App = () => {
31
+
const collection = () =>
32
+
createListCollection({
33
+
items: accounts().map((account) => ({
34
+
label: account.handle ?? account.did,
35
+
value: account.did,
36
+
})),
37
+
});
38
+
39
+
const AccountSelect = () => (
40
+
<Select.Root
41
+
positioning={{ sameWidth: true }}
42
+
value={selectedAccount() ? [selectedAccount()!] : []}
43
+
onValueChange={(details) =>
44
+
setSelectedAccount(details.value[0] as AtprotoDid)
45
+
}
46
+
collection={collection()}
47
+
>
48
+
<Select.Control>
49
+
<Select.Trigger
50
+
border="none"
51
+
p="2"
52
+
pl="0"
53
+
minW="8rem"
54
+
maxW="xs"
55
+
boxShadow={{ _focus: "none" }}
56
+
justifyContent="end"
57
+
disabled={accounts().length === 0}
58
+
>
59
+
<Box>
60
+
{selectedAccount() ? "@" : ""}
61
+
<Select.ValueText
62
+
overflow="hidden"
63
+
textOverflow="ellipsis"
64
+
whiteSpace="nowrap"
65
+
placeholder="account"
66
+
/>
67
+
</Box>
68
+
<ChevronsUpDownIcon />
69
+
</Select.Trigger>
70
+
</Select.Control>
71
+
<Select.Positioner>
72
+
<Select.Content>
73
+
<Select.ItemGroup>
74
+
<For each={collection().items}>
75
+
{(item) => (
76
+
<Select.Item item={item}>
77
+
<Select.ItemText
78
+
overflow="hidden"
79
+
textOverflow="ellipsis"
80
+
whiteSpace="nowrap"
81
+
>
82
+
@{item.label}
83
+
</Select.ItemText>
84
+
<Select.ItemIndicator pl="2">
85
+
<CheckIcon />
86
+
</Select.ItemIndicator>
87
+
</Select.Item>
88
+
)}
89
+
</For>
90
+
</Select.ItemGroup>
91
+
</Select.Content>
92
+
</Select.Positioner>
93
+
</Select.Root>
94
+
);
95
+
96
+
return (
97
+
<Box
98
+
w="100vw"
99
+
h="100vh"
100
+
display="flex"
101
+
justifyContent="center"
102
+
alignItems="center"
103
+
>
104
+
<Card.Root maxW="3xl" w="90%">
105
+
<Card.Header>
106
+
<Card.Title w="full">
107
+
<Stack direction="row" align="center">
108
+
<Text>bsky voice memo</Text>
109
+
<div style="flex-grow: 1;"></div>
110
+
<AccountSelect />
111
+
<Settings />
112
+
</Stack>
113
+
</Card.Title>
114
+
<Card.Description>
115
+
<ol>
116
+
<li>1. upload a voice memo</li>
117
+
<li>2. it will automatically be converted to a video</li>
118
+
<li>
119
+
3. (optional) add an account for posting and using pfp in video
120
+
</li>
121
+
</ol>
122
+
</Card.Description>
123
+
</Card.Header>
124
+
<Card.Body>
125
+
<Stack
126
+
gap={{ base: "4", smDown: "0" }}
127
+
direction={{ base: "row", smDown: "column" }}
128
+
>
129
+
<Upload
130
+
flex="4"
131
+
acceptedFiles={[]}
132
+
onFileAccept={(e) =>
133
+
e.files.forEach((file) => addTask(selectedAccount(), file))
134
+
}
135
+
/>
136
+
<Tasks
137
+
flex="3"
138
+
minH="20rem"
139
+
maxH="20rem"
140
+
minW="0"
141
+
overflowY="scroll"
142
+
currentTasks={tasks.values().toArray()}
143
+
selectedAccount={accounts().find(
144
+
(account) => account.did === selectedAccount(),
145
+
)}
146
+
/>
147
+
</Stack>
148
+
</Card.Body>
149
+
{/*<Card.Footer gap="3"></Card.Footer>*/}
150
+
</Card.Root>
151
+
<Toaster />
152
+
</Box>
153
+
);
154
+
};
155
+
export default App;
156
+
157
+
type TasksProps = StackProps & {
158
+
currentTasks: TaskState[];
159
+
selectedAccount: Account | undefined;
160
+
};
161
+
162
+
const Tasks = (props: TasksProps) => (
163
+
<Stack
164
+
border="1px solid var(--colors-border-subtle)"
165
+
gap="1.5"
166
+
p="2"
167
+
rounded="sm"
168
+
justifyContent={props.currentTasks.length === 0 ? "center" : undefined}
169
+
alignItems={props.currentTasks.length === 0 ? "center" : undefined}
170
+
{...props}
171
+
>
172
+
<For
173
+
each={props.currentTasks}
174
+
fallback={
175
+
<Box
176
+
fontSize="sm"
177
+
display="flex"
178
+
justifyContent="center"
179
+
alignItems="center"
180
+
h="full"
181
+
>
182
+
no files processed (yet!)
183
+
</Box>
184
+
}
185
+
>
186
+
{(process) => Task(process, props.selectedAccount)}
187
+
</For>
188
+
</Stack>
189
+
);
190
+
191
+
const getAudioClipboard = async () => {
192
+
try {
193
+
const clipboardItems = await navigator.clipboard.read();
194
+
for (const item of clipboardItems) {
195
+
console.log(item);
196
+
const type = item.types.find((type) => type.startsWith("audio/"));
197
+
if (type) {
198
+
const blob = await item.getType(type);
199
+
const file = new File([blob], `audio.${type.split("/")[1]}`, { type });
200
+
return file;
201
+
}
202
+
}
203
+
return;
204
+
} catch (err) {
205
+
console.error(err);
206
+
return;
207
+
}
208
+
};
209
+
210
+
const Upload = (props: FileUpload.RootProps) => {
211
+
return (
212
+
<FileUpload.Root maxFiles={100} {...props}>
213
+
<FileUpload.Dropzone>
214
+
<FileUpload.Label>drop your files here</FileUpload.Label>
215
+
<HStack alignItems="center">
216
+
<FileUpload.Trigger
217
+
asChild={(triggerProps) => (
218
+
<Button size="sm" {...triggerProps()}>
219
+
or pick file
220
+
</Button>
221
+
)}
222
+
/>
223
+
{/*<IconButton
224
+
size="sm"
225
+
onClick={() =>
226
+
getAudioClipboard().then((file) => {
227
+
if (!file) return;
228
+
addTask(selectedAccount(), file);
229
+
})
230
+
}
231
+
variant="subtle"
232
+
>
233
+
<ClipboardIcon />
234
+
</IconButton>*/}
235
+
</HStack>
236
+
</FileUpload.Dropzone>
237
+
<FileUpload.ItemGroup>
238
+
<FileUpload.Context>
239
+
{(fileUpload) => (
240
+
<For each={fileUpload().acceptedFiles}>
241
+
{(file) => (
242
+
<FileUpload.Item file={file}>
243
+
<FileUpload.ItemPreview type="image/*">
244
+
<FileUpload.ItemPreviewImage />
245
+
</FileUpload.ItemPreview>
246
+
<FileUpload.ItemName />
247
+
<FileUpload.ItemSizeText />
248
+
<FileUpload.ItemDeleteTrigger
249
+
asChild={(triggerProps) => (
250
+
<IconButton variant="link" size="sm" {...triggerProps()}>
251
+
<Trash2Icon />
252
+
</IconButton>
253
+
)}
254
+
/>
255
+
</FileUpload.Item>
256
+
)}
257
+
</For>
258
+
)}
259
+
</FileUpload.Context>
260
+
</FileUpload.ItemGroup>
261
+
<FileUpload.HiddenInput />
262
+
</FileUpload.Root>
263
+
);
264
+
};
+129
src/components/FileTask.tsx
+129
src/components/FileTask.tsx
···
1
+
import { CircleAlertIcon, DownloadIcon, SendIcon } from "lucide-solid";
2
+
import { Stack } from "styled-system/jsx";
3
+
import { IconButton } from "~/components/ui/icon-button";
4
+
import { Spinner } from "~/components/ui/spinner";
5
+
import { Popover } from "~/components/ui/popover";
6
+
7
+
import { css } from "styled-system/css";
8
+
import { Account } from "~/lib/accounts";
9
+
10
+
import { TaskState } from "~/lib/task";
11
+
import PostDialog from "./PostDialog";
12
+
13
+
const downloadFile = (blob: Blob, fileName: string) => {
14
+
const url = URL.createObjectURL(blob);
15
+
const a = document.createElement("a");
16
+
a.href = url;
17
+
// handle file names with periods in them
18
+
a.download = fileName;
19
+
document.body.appendChild(a);
20
+
a.click();
21
+
document.body.removeChild(a);
22
+
URL.revokeObjectURL(url);
23
+
};
24
+
25
+
const Task = (process: TaskState, selectedAccount: Account | undefined) => {
26
+
const statusError = (error: string) => (
27
+
<Popover.Root>
28
+
<Popover.Trigger
29
+
asChild={(triggerProps) => (
30
+
<IconButton
31
+
{...triggerProps()}
32
+
color={{
33
+
base: "red",
34
+
_hover: "red.emphasized",
35
+
}}
36
+
variant="ghost"
37
+
>
38
+
<CircleAlertIcon />
39
+
</IconButton>
40
+
)}
41
+
/>
42
+
<Popover.Positioner>
43
+
<Popover.Content>error processing file: {error}</Popover.Content>
44
+
</Popover.Positioner>
45
+
</Popover.Root>
46
+
);
47
+
const statusSuccess = (result: Blob) => {
48
+
return (
49
+
<>
50
+
<IconButton
51
+
color={{ _hover: "colorPalette.emphasized" }}
52
+
onClick={() =>
53
+
downloadFile(
54
+
result,
55
+
process.file.name
56
+
.split(".")
57
+
.slice(0, -1)
58
+
.join(".")
59
+
.concat(".mp4"),
60
+
)
61
+
}
62
+
variant="ghost"
63
+
>
64
+
<DownloadIcon />
65
+
</IconButton>
66
+
<PostDialog
67
+
trigger={(props) => (
68
+
<IconButton
69
+
{...props}
70
+
disabled={selectedAccount === undefined}
71
+
color={{ _hover: "colorPalette.emphasized" }}
72
+
variant="ghost"
73
+
>
74
+
<SendIcon />
75
+
</IconButton>
76
+
)}
77
+
account={selectedAccount}
78
+
result={result}
79
+
/>
80
+
</>
81
+
);
82
+
};
83
+
const statusProcessing = () => (
84
+
<Spinner
85
+
borderLeftColor="bg.emphasized"
86
+
borderBottomColor="bg.emphasized"
87
+
borderWidth="4px"
88
+
m="2"
89
+
/>
90
+
);
91
+
92
+
const status = () => {
93
+
switch (process.status) {
94
+
case "success":
95
+
return statusSuccess(process.result);
96
+
case "processing":
97
+
return statusProcessing();
98
+
default:
99
+
return statusError(process.error);
100
+
}
101
+
};
102
+
103
+
return (
104
+
<Stack
105
+
direction="row"
106
+
border="1px solid var(--colors-border-muted)"
107
+
gap="2"
108
+
align="center"
109
+
rounded="sm"
110
+
>
111
+
<span
112
+
class={css({
113
+
overflow: "hidden",
114
+
textOverflow: "ellipsis",
115
+
whiteSpace: "nowrap",
116
+
pl: 2,
117
+
})}
118
+
>
119
+
{process.file.name}
120
+
</span>
121
+
<div class={css({ flexGrow: 1 })}></div>
122
+
<Stack direction="row" gap="0" flexShrink="0" align="center">
123
+
{status()}
124
+
</Stack>
125
+
</Stack>
126
+
);
127
+
};
128
+
129
+
export default Task;
+142
src/components/PostDialog.tsx
+142
src/components/PostDialog.tsx
···
1
+
import { Component, createSignal } from "solid-js";
2
+
3
+
import { SendIcon, XIcon } from "lucide-solid";
4
+
import { Stack } from "styled-system/jsx";
5
+
import { IconButton } from "~/components/ui/icon-button";
6
+
import { Spinner } from "~/components/ui/spinner";
7
+
import { Text } from "~/components/ui/text";
8
+
import { Link } from "~/components/ui/link";
9
+
10
+
import { parseCanonicalResourceUri } from "@atcute/lexicons/syntax";
11
+
import { css } from "styled-system/css";
12
+
import { sendPost } from "~/lib/at";
13
+
import { toaster } from "~/components/Toaster";
14
+
import { Dialog } from "~/components/ui/dialog";
15
+
import { Textarea } from "~/components/ui/textarea";
16
+
import { Account } from "~/lib/accounts";
17
+
18
+
const PostDialog = (props: {
19
+
trigger: Component;
20
+
result: Blob;
21
+
account: Account | undefined;
22
+
}) => {
23
+
const [postContent, setPostContent] = createSignal<string>("");
24
+
const [posting, setPosting] = createSignal(false);
25
+
const [open, setOpen] = createSignal(false);
26
+
27
+
return (
28
+
<Dialog.Root open={open()} onOpenChange={(e) => setOpen(e.open)}>
29
+
<Dialog.Trigger
30
+
asChild={(triggerProps) => <props.trigger {...triggerProps()} />}
31
+
/>
32
+
<Dialog.Backdrop />
33
+
<Dialog.Positioner>
34
+
<Dialog.Content>
35
+
<Stack>
36
+
<Stack gap="0">
37
+
<video
38
+
class={css({ maxW: "sm", roundedTop: "xs" })}
39
+
controls
40
+
src={URL.createObjectURL(props.result)}
41
+
></video>
42
+
<Textarea
43
+
placeholder="enter text content..."
44
+
id="post-content"
45
+
value={postContent()}
46
+
onChange={(e) => setPostContent(e.target.value)}
47
+
rows={2}
48
+
resize="none"
49
+
border="none"
50
+
borderTop="1px solid var(--colors-border-muted)"
51
+
boxShadow={{ base: "none", _focus: "none" }}
52
+
/>
53
+
</Stack>
54
+
<Stack
55
+
borderTop="1px solid var(--colors-border-muted)"
56
+
gap="2"
57
+
p="3"
58
+
direction="row"
59
+
align="center"
60
+
>
61
+
<Stack direction="row" align="center">
62
+
<Dialog.Title>
63
+
post to {props.account?.handle ?? props.account?.did}
64
+
</Dialog.Title>
65
+
</Stack>
66
+
<div class={css({ flexGrow: 1 })} />
67
+
{posting() ? (
68
+
<Spinner
69
+
borderLeftColor="bg.emphasized"
70
+
borderBottomColor="bg.emphasized"
71
+
borderWidth="4px"
72
+
size="sm"
73
+
/>
74
+
) : (
75
+
<Dialog.CloseTrigger
76
+
asChild={(closeTriggerProps) => (
77
+
<IconButton
78
+
{...closeTriggerProps()}
79
+
aria-label="Close Dialog"
80
+
variant="ghost"
81
+
size="sm"
82
+
>
83
+
<XIcon />
84
+
</IconButton>
85
+
)}
86
+
/>
87
+
)}
88
+
<IconButton
89
+
disabled={posting()}
90
+
onClick={() => {
91
+
setPosting(true);
92
+
sendPost(props.account?.did!, props.result, postContent())
93
+
.then((result) => {
94
+
const parsedUri = parseCanonicalResourceUri(result.uri);
95
+
if (!parsedUri.ok) throw "failed to parse atproto uri";
96
+
const { repo, rkey } = parsedUri.value;
97
+
toaster.create({
98
+
title: "post sent",
99
+
description: (
100
+
<>
101
+
<Text>view post </Text>
102
+
<Link
103
+
href={`https://bsky.app/profile/${repo}/post/${rkey}`}
104
+
color={{
105
+
base: "colorPalette.text",
106
+
_hover: "colorPalette.emphasized",
107
+
}}
108
+
textDecoration={{ _hover: "underline" }}
109
+
>
110
+
here
111
+
</Link>
112
+
</>
113
+
),
114
+
type: "success",
115
+
});
116
+
setOpen(false);
117
+
})
118
+
.catch((error) => {
119
+
toaster.create({
120
+
title: "send post failed",
121
+
description: error,
122
+
type: "error",
123
+
});
124
+
})
125
+
.finally(() => {
126
+
setPosting(false);
127
+
});
128
+
}}
129
+
variant="ghost"
130
+
size="sm"
131
+
>
132
+
<SendIcon />
133
+
</IconButton>
134
+
</Stack>
135
+
</Stack>
136
+
</Dialog.Content>
137
+
</Dialog.Positioner>
138
+
</Dialog.Root>
139
+
);
140
+
};
141
+
142
+
export default PostDialog;
+404
src/components/Settings.tsx
+404
src/components/Settings.tsx
···
1
+
import { createSignal, For, Signal } from "solid-js";
2
+
3
+
import {
4
+
CheckIcon,
5
+
ChevronsUpDownIcon,
6
+
CogIcon,
7
+
PipetteIcon,
8
+
PlusIcon,
9
+
Trash2Icon,
10
+
XIcon,
11
+
} from "lucide-solid";
12
+
import { Button } from "~/components/ui/button";
13
+
import { Field } from "~/components/ui/field";
14
+
import { Stack, Box, HStack } from "styled-system/jsx";
15
+
import { IconButton } from "~/components/ui/icon-button";
16
+
import { FormLabel } from "~/components/ui/form-label";
17
+
import { Checkbox } from "~/components/ui/checkbox";
18
+
import { Drawer } from "~/components/ui/drawer";
19
+
import { Text } from "~/components/ui/text";
20
+
21
+
import { Handle, isHandle } from "@atcute/lexicons/syntax";
22
+
import { css } from "styled-system/css";
23
+
import { flow, sessions } from "~/lib/oauth";
24
+
import {
25
+
Account,
26
+
loggingIn,
27
+
accounts,
28
+
setAccounts,
29
+
setSelectedAccount,
30
+
} from "~/lib/accounts";
31
+
import {
32
+
showProfilePicture as showProfilePictureSetting,
33
+
showVisualizer as showVisualizerSetting,
34
+
backgroundColor as backgroundColorSetting,
35
+
frameRate as frameRateSetting,
36
+
useDominantColorAsBg as useDominantColorAsBgSetting,
37
+
Setting,
38
+
} from "~/lib/settings";
39
+
import { handleResolver } from "~/lib/at";
40
+
import { toaster } from "~/components/Toaster";
41
+
import { createListCollection, Select } from "~/components/ui/select";
42
+
43
+
import { type Color, type ListCollection, parseColor } from "@ark-ui/solid";
44
+
import { ColorPicker } from "~/components/ui/color-picker";
45
+
import { Input } from "~/components/ui/input";
46
+
47
+
const SettingCheckbox = (props: {
48
+
setting: Setting<boolean>;
49
+
signal: Signal<boolean>;
50
+
label: string;
51
+
disabled?: boolean;
52
+
}) => (
53
+
<Checkbox
54
+
p="2"
55
+
checked={props.signal[0]()}
56
+
onCheckedChange={(e) => {
57
+
const val = e.checked === "indeterminate" ? false : e.checked;
58
+
props.signal[1](val);
59
+
props.setting.set(val);
60
+
}}
61
+
disabled={props.disabled}
62
+
colorPalette={props.disabled ? "gray" : undefined}
63
+
cursor={props.disabled ? { _hover: "not-allowed" } : undefined}
64
+
>
65
+
<Text color={props.disabled ? "fg.disabled" : undefined}>
66
+
{props.label}
67
+
</Text>
68
+
</Checkbox>
69
+
);
70
+
71
+
const SettingSelect = (props: {
72
+
label: string;
73
+
signal: Signal<string>;
74
+
collection: ListCollection<{ label: string; value: string }>;
75
+
}) => (
76
+
<Select.Root
77
+
width="2xs"
78
+
positioning={{ sameWidth: true }}
79
+
value={[props.signal[0]()]}
80
+
onValueChange={(details) => props.signal[1](details.value[0])}
81
+
collection={props.collection}
82
+
>
83
+
<Select.Label px="2">{props.label}</Select.Label>
84
+
<Select.Control>
85
+
<Select.Trigger border="none" p="2" boxShadow={{ _focus: "none" }}>
86
+
<Select.ValueText placeholder="account" />
87
+
<ChevronsUpDownIcon />
88
+
</Select.Trigger>
89
+
</Select.Control>
90
+
<Select.Positioner>
91
+
<Select.Content>
92
+
<Select.ItemGroup>
93
+
<For each={props.collection.items}>
94
+
{(item) => (
95
+
<Select.Item item={item}>
96
+
<Select.ItemText>{item.label}</Select.ItemText>
97
+
<Select.ItemIndicator pl="2">
98
+
<CheckIcon />
99
+
</Select.ItemIndicator>
100
+
</Select.Item>
101
+
)}
102
+
</For>
103
+
</Select.ItemGroup>
104
+
</Select.Content>
105
+
</Select.Positioner>
106
+
</Select.Root>
107
+
);
108
+
109
+
const SettingColorPicker = (props: {
110
+
label: string;
111
+
signal: Signal<Color>;
112
+
}) => {
113
+
return (
114
+
<ColorPicker.Root
115
+
p="2"
116
+
value={props.signal[0]()}
117
+
onValueChange={(e) => props.signal[1](e.value)}
118
+
onValueChangeEnd={(e) => props.signal[1](e.value)}
119
+
>
120
+
<ColorPicker.Context>
121
+
{(api) => (
122
+
<>
123
+
<ColorPicker.Label>{props.label}</ColorPicker.Label>
124
+
<ColorPicker.Control>
125
+
<ColorPicker.ChannelInput
126
+
channel="hex"
127
+
asChild={(inputProps) => <Input {...inputProps()} />}
128
+
/>
129
+
<ColorPicker.Trigger
130
+
asChild={(triggerProps) => (
131
+
<IconButton variant="outline" {...triggerProps()}>
132
+
<ColorPicker.Swatch value={api().value} />
133
+
</IconButton>
134
+
)}
135
+
/>
136
+
</ColorPicker.Control>
137
+
<ColorPicker.Positioner>
138
+
<ColorPicker.Content>
139
+
<Stack gap="3">
140
+
<ColorPicker.Area>
141
+
<ColorPicker.AreaBackground />
142
+
<ColorPicker.AreaThumb />
143
+
</ColorPicker.Area>
144
+
<HStack gap="3">
145
+
<ColorPicker.EyeDropperTrigger
146
+
asChild={(triggerProps) => (
147
+
<IconButton
148
+
size="xs"
149
+
variant="outline"
150
+
aria-label="Pick a color"
151
+
{...triggerProps()}
152
+
>
153
+
<PipetteIcon />
154
+
</IconButton>
155
+
)}
156
+
/>
157
+
<Stack gap="2" flex="1">
158
+
<ColorPicker.ChannelSlider channel="hue">
159
+
<ColorPicker.ChannelSliderTrack />
160
+
<ColorPicker.ChannelSliderThumb />
161
+
</ColorPicker.ChannelSlider>
162
+
<ColorPicker.ChannelSlider channel="alpha">
163
+
<ColorPicker.TransparencyGrid size="8px" />
164
+
<ColorPicker.ChannelSliderTrack />
165
+
<ColorPicker.ChannelSliderThumb />
166
+
</ColorPicker.ChannelSlider>
167
+
</Stack>
168
+
</HStack>
169
+
<HStack>
170
+
<ColorPicker.ChannelInput
171
+
channel="hex"
172
+
asChild={(inputProps) => (
173
+
<Input size="2xs" {...inputProps()} />
174
+
)}
175
+
/>
176
+
<ColorPicker.ChannelInput
177
+
channel="alpha"
178
+
asChild={(inputProps) => (
179
+
<Input size="2xs" {...inputProps()} />
180
+
)}
181
+
/>
182
+
</HStack>
183
+
</Stack>
184
+
</ColorPicker.Content>
185
+
</ColorPicker.Positioner>
186
+
</>
187
+
)}
188
+
</ColorPicker.Context>
189
+
<ColorPicker.HiddenInput />
190
+
</ColorPicker.Root>
191
+
);
192
+
};
193
+
194
+
const Settings = () => {
195
+
const [handle, setHandle] = createSignal("");
196
+
const isHandleValid = () => isHandle(handle());
197
+
198
+
const deleteAccount = (account: Account) => {
199
+
const newAccounts = accounts().filter((a) => a.did !== account.did);
200
+
setAccounts(newAccounts);
201
+
sessions.remove(account.did);
202
+
setSelectedAccount(newAccounts[0]?.did ?? undefined);
203
+
};
204
+
205
+
const startAccountFlow = async () => {
206
+
try {
207
+
toaster.create({
208
+
title: "logging in",
209
+
description: `logging in to ${handle()}...`,
210
+
type: "info",
211
+
});
212
+
const did = await handleResolver.resolve(handle() as Handle);
213
+
loggingIn.set(did);
214
+
await flow.start(did);
215
+
} catch (err) {
216
+
console.error(err);
217
+
toaster.create({
218
+
title: "login error",
219
+
description: `${err}`,
220
+
type: "error",
221
+
});
222
+
loggingIn.set(undefined);
223
+
}
224
+
};
225
+
226
+
const Accounts = () => {
227
+
const item = (account: Account) => (
228
+
<Stack
229
+
direction="row"
230
+
w="full"
231
+
px="2"
232
+
pb="2"
233
+
borderBottom="1px solid var(--colors-border-muted)"
234
+
align="center"
235
+
>
236
+
{account.handle ? `@${account.handle}` : account.did}
237
+
<div class={css({ flexGrow: 1 })} />
238
+
<IconButton
239
+
onClick={() => deleteAccount(account)}
240
+
variant="ghost"
241
+
size="sm"
242
+
>
243
+
<Trash2Icon />
244
+
</IconButton>
245
+
</Stack>
246
+
);
247
+
const items = (accounts: Account[]) => (
248
+
<For
249
+
each={accounts}
250
+
fallback={
251
+
<Text color="fg.muted" px="2" pb="2" alignSelf="center">
252
+
no accounts added
253
+
</Text>
254
+
}
255
+
>
256
+
{item}
257
+
</For>
258
+
);
259
+
return (
260
+
<Stack>
261
+
<FormLabel>accounts</FormLabel>
262
+
<Stack border="1px solid var(--colors-border-default)" rounded="xs">
263
+
<Stack
264
+
borderBottom="1px solid var(--colors-border-default)"
265
+
p="2"
266
+
direction="row"
267
+
gap="2"
268
+
w="full"
269
+
>
270
+
<Field.Root w="full">
271
+
<Field.Input
272
+
placeholder="example.bsky.social"
273
+
value={handle()}
274
+
onInput={(e) => setHandle(e.currentTarget.value)}
275
+
/>
276
+
</Field.Root>
277
+
<IconButton onClick={startAccountFlow} disabled={!isHandleValid()}>
278
+
<PlusIcon />
279
+
</IconButton>
280
+
</Stack>
281
+
{items(accounts())}
282
+
</Stack>
283
+
</Stack>
284
+
);
285
+
};
286
+
287
+
const [showProfilePicture, setShowProfilePicture] = createSignal(
288
+
showProfilePictureSetting.get() ?? true,
289
+
);
290
+
const [showVisualizer, setShowVisualizer] = createSignal(
291
+
showVisualizerSetting.get() ?? true,
292
+
);
293
+
const [useDominantColorAsBg, setUseDominantColorAsBg] = createSignal(
294
+
useDominantColorAsBgSetting.get() ?? true,
295
+
);
296
+
297
+
const frameRateCollection = createListCollection({
298
+
items: [24, 30, 60].map((rate) => ({
299
+
label: `${rate} FPS`,
300
+
value: rate.toString(),
301
+
})),
302
+
});
303
+
const [frameRate, _setFrameRate] = createSignal(
304
+
(frameRateSetting.get() ?? 24).toString(),
305
+
);
306
+
const setFrameRate = (value: string | ((prev: string) => string)) => {
307
+
const newFrameRate = _setFrameRate(value);
308
+
frameRateSetting.set(parseInt(newFrameRate));
309
+
};
310
+
311
+
const [backgroundColor, _setBackgroundColor] = createSignal(
312
+
parseColor(backgroundColorSetting.get() ?? "#000000"),
313
+
);
314
+
const setBackgroundColor = (value: Color | ((prev: Color) => Color)) => {
315
+
const newColor = _setBackgroundColor(value);
316
+
backgroundColorSetting.set(newColor.toString("rgb"));
317
+
};
318
+
319
+
return (
320
+
<Drawer.Root>
321
+
<Drawer.Trigger
322
+
asChild={(triggerProps) => (
323
+
<IconButton variant="outline" {...triggerProps()}>
324
+
<CogIcon />
325
+
</IconButton>
326
+
)}
327
+
/>
328
+
<Drawer.Backdrop />
329
+
<Drawer.Positioner>
330
+
<Drawer.Content>
331
+
<Drawer.Header p="0" pl="4">
332
+
<Stack direction="row" alignItems="center">
333
+
<Drawer.Title>settings</Drawer.Title>
334
+
<div style="flex-grow: 1;"></div>
335
+
<Drawer.CloseTrigger
336
+
placeSelf="end"
337
+
asChild={(closeProps) => (
338
+
<IconButton size="lg" {...closeProps()} variant="ghost">
339
+
<XIcon />
340
+
</IconButton>
341
+
)}
342
+
/>
343
+
</Stack>
344
+
</Drawer.Header>
345
+
<Drawer.Body>
346
+
<Stack gap="4">
347
+
<Accounts />
348
+
<Stack>
349
+
<FormLabel>processing</FormLabel>
350
+
<Stack
351
+
gap="0"
352
+
border="1px solid var(--colors-border-default)"
353
+
rounded="xs"
354
+
>
355
+
<Box borderBottom="1px solid var(--colors-border-subtle)">
356
+
<SettingCheckbox
357
+
label="show profile picture"
358
+
setting={showProfilePictureSetting}
359
+
signal={[showProfilePicture, setShowProfilePicture]}
360
+
/>
361
+
</Box>
362
+
<SettingCheckbox
363
+
label="show visualizer"
364
+
setting={showVisualizerSetting}
365
+
signal={[showVisualizer, setShowVisualizer]}
366
+
/>
367
+
<Stack gap="0" borderY="1px solid var(--colors-border-muted)">
368
+
<SettingCheckbox
369
+
label="use dominant color as bg"
370
+
setting={useDominantColorAsBgSetting}
371
+
signal={[useDominantColorAsBg, setUseDominantColorAsBg]}
372
+
disabled={!showProfilePicture()}
373
+
/>
374
+
<SettingColorPicker
375
+
label="background color"
376
+
signal={[backgroundColor, setBackgroundColor]}
377
+
/>
378
+
</Stack>
379
+
<Box borderBottom="1px solid var(--colors-border-muted)">
380
+
<SettingSelect
381
+
label="frame rate"
382
+
signal={[frameRate, setFrameRate]}
383
+
collection={frameRateCollection}
384
+
/>
385
+
</Box>
386
+
</Stack>
387
+
</Stack>
388
+
</Stack>
389
+
</Drawer.Body>
390
+
<Drawer.Footer p="2" gap="3">
391
+
<Drawer.CloseTrigger
392
+
asChild={(closeProps) => (
393
+
<Button {...closeProps()} variant="outline">
394
+
back
395
+
</Button>
396
+
)}
397
+
/>
398
+
</Drawer.Footer>
399
+
</Drawer.Content>
400
+
</Drawer.Positioner>
401
+
</Drawer.Root>
402
+
);
403
+
};
404
+
export default Settings;
+27
src/components/Toaster.tsx
+27
src/components/Toaster.tsx
···
1
+
import { XIcon } from "lucide-solid";
2
+
import { Toast } from "~/components/ui/toast";
3
+
import { IconButton } from "./ui/icon-button";
4
+
5
+
export const toaster = Toast.createToaster({
6
+
placement: "bottom-start",
7
+
overlap: false,
8
+
gap: 12,
9
+
});
10
+
11
+
export const Toaster = () => (
12
+
<Toast.Toaster toaster={toaster}>
13
+
{(toast) => (
14
+
<Toast.Root>
15
+
<Toast.Title>{toast().title}</Toast.Title>
16
+
<Toast.Description>{toast().description}</Toast.Description>
17
+
<Toast.CloseTrigger
18
+
asChild={(closeProps) => (
19
+
<IconButton {...closeProps()} size="sm" variant="link">
20
+
<XIcon />
21
+
</IconButton>
22
+
)}
23
+
/>
24
+
</Toast.Root>
25
+
)}
26
+
</Toast.Toaster>
27
+
);
+1
src/components/ui/card.tsx
+1
src/components/ui/card.tsx
···
1
+
export * as Card from './styled/card'
+51
src/components/ui/checkbox.tsx
+51
src/components/ui/checkbox.tsx
···
1
+
import { Show, children } from 'solid-js'
2
+
import * as StyledCheckbox from './styled/checkbox'
3
+
4
+
export interface CheckboxProps extends StyledCheckbox.RootProps {}
5
+
6
+
export const Checkbox = (props: CheckboxProps) => {
7
+
const getChildren = children(() => props.children)
8
+
9
+
return (
10
+
<StyledCheckbox.Root {...props}>
11
+
<StyledCheckbox.Control>
12
+
<StyledCheckbox.Indicator>
13
+
<CheckIcon />
14
+
</StyledCheckbox.Indicator>
15
+
<StyledCheckbox.Indicator indeterminate>
16
+
<MinusIcon />
17
+
</StyledCheckbox.Indicator>
18
+
</StyledCheckbox.Control>
19
+
<Show when={getChildren()}>
20
+
<StyledCheckbox.Label>{getChildren()}</StyledCheckbox.Label>
21
+
</Show>
22
+
<StyledCheckbox.HiddenInput />
23
+
</StyledCheckbox.Root>
24
+
)
25
+
}
26
+
27
+
const CheckIcon = () => (
28
+
<svg viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
29
+
<title>Check Icon</title>
30
+
<path
31
+
d="M11.6666 3.5L5.24992 9.91667L2.33325 7"
32
+
stroke="currentColor"
33
+
stroke-width="2"
34
+
stroke-linecap="round"
35
+
stroke-linejoin="round"
36
+
/>
37
+
</svg>
38
+
)
39
+
40
+
const MinusIcon = () => (
41
+
<svg viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
42
+
<title>Minus Icon</title>
43
+
<path
44
+
d="M2.91675 7H11.0834"
45
+
stroke="currentColor"
46
+
stroke-width="2"
47
+
stroke-linecap="round"
48
+
stroke-linejoin="round"
49
+
/>
50
+
</svg>
51
+
)
+1
src/components/ui/code.tsx
+1
src/components/ui/code.tsx
···
1
+
export { Code, type CodeProps } from './styled/code'
+1
src/components/ui/color-picker.tsx
+1
src/components/ui/color-picker.tsx
···
1
+
export * as ColorPicker from './styled/color-picker'
+1
src/components/ui/dialog.tsx
+1
src/components/ui/dialog.tsx
···
1
+
export * as Dialog from './styled/dialog'
+1
src/components/ui/drawer.tsx
+1
src/components/ui/drawer.tsx
···
1
+
export * as Drawer from './styled/drawer'
+1
src/components/ui/field.tsx
+1
src/components/ui/field.tsx
···
1
+
export * as Field from './styled/field'
+1
src/components/ui/file-upload.tsx
+1
src/components/ui/file-upload.tsx
···
1
+
export * as FileUpload from './styled/file-upload'
+1
src/components/ui/form-label.tsx
+1
src/components/ui/form-label.tsx
···
1
+
export { FormLabel, type FormLabelProps } from './styled/form-label'
+1
src/components/ui/input.tsx
+1
src/components/ui/input.tsx
···
1
+
export { Input, type InputProps } from './styled/input'
+1
src/components/ui/link.tsx
+1
src/components/ui/link.tsx
···
1
+
export { Link, type LinkProps } from './styled/link'
+1
src/components/ui/popover.tsx
+1
src/components/ui/popover.tsx
···
1
+
export * as Popover from './styled/popover'
+38
src/components/ui/progress.tsx
+38
src/components/ui/progress.tsx
···
1
+
import { Show, children, splitProps } from 'solid-js'
2
+
import * as StyledProgress from './styled/progress'
3
+
4
+
export interface ProgressProps extends StyledProgress.RootProps {
5
+
/**
6
+
* The type of progress to render.
7
+
* @default linear
8
+
*/
9
+
type?: 'linear' | 'circular'
10
+
}
11
+
12
+
export const Progress = (props: ProgressProps) => {
13
+
const [localProps, rootProps] = splitProps(props, ['children', 'type'])
14
+
const getChildren = children(() => localProps.children)
15
+
16
+
return (
17
+
<StyledProgress.Root {...rootProps}>
18
+
<Show when={getChildren()}>
19
+
<StyledProgress.Label>{getChildren()}</StyledProgress.Label>
20
+
</Show>
21
+
<Show
22
+
when={localProps.type === 'circular'}
23
+
fallback={
24
+
<StyledProgress.Track>
25
+
<StyledProgress.Range />
26
+
</StyledProgress.Track>
27
+
}
28
+
>
29
+
<StyledProgress.Circle>
30
+
<StyledProgress.CircleTrack />
31
+
<StyledProgress.CircleRange />
32
+
<StyledProgress.ValueText />
33
+
</StyledProgress.Circle>
34
+
</Show>
35
+
<StyledProgress.ValueText />
36
+
</StyledProgress.Root>
37
+
)
38
+
}
+2
src/components/ui/select.tsx
+2
src/components/ui/select.tsx
+23
src/components/ui/spinner.tsx
+23
src/components/ui/spinner.tsx
···
1
+
import { mergeProps, splitProps } from 'solid-js'
2
+
import { styled } from 'styled-system/jsx'
3
+
import { Spinner as StyledSpinner, type SpinnerProps as StyledSpinnerProps } from './styled/spinner'
4
+
5
+
export interface SpinnerProps extends StyledSpinnerProps {
6
+
/**
7
+
* For accessibility, it is important to add a fallback loading text.
8
+
* This text will be visible to screen readers.
9
+
* @default "Loading..."
10
+
*/
11
+
label?: string
12
+
}
13
+
14
+
export const Spinner = (props: SpinnerProps) => {
15
+
const [_localProps, rootProps] = splitProps(props, ['label'])
16
+
const localProps = mergeProps({ label: 'Loading...' }, _localProps)
17
+
18
+
return (
19
+
<StyledSpinner borderBottomColor="transparent" borderLeftColor="transparent" {...rootProps}>
20
+
<styled.span srOnly>{localProps.label}</styled.span>
21
+
</StyledSpinner>
22
+
)
23
+
}
+38
src/components/ui/styled/card.tsx
+38
src/components/ui/styled/card.tsx
···
1
+
import { type Assign, type PolymorphicProps, ark } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { card } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withProvider, withContext } = createStyleContext(card)
8
+
9
+
export type RootProps = ComponentProps<typeof Root>
10
+
export const Root = withProvider<Assign<HTMLStyledProps<'div'>, PolymorphicProps<'div'>>>(
11
+
ark.div,
12
+
'root',
13
+
)
14
+
15
+
export const Body = withContext<Assign<HTMLStyledProps<'div'>, PolymorphicProps<'div'>>>(
16
+
ark.div,
17
+
'body',
18
+
)
19
+
20
+
export const Description = withContext<Assign<HTMLStyledProps<'div'>, PolymorphicProps<'div'>>>(
21
+
ark.div,
22
+
'description',
23
+
)
24
+
25
+
export const Footer = withContext<Assign<HTMLStyledProps<'div'>, PolymorphicProps<'div'>>>(
26
+
ark.div,
27
+
'footer',
28
+
)
29
+
30
+
export const Header = withContext<Assign<HTMLStyledProps<'div'>, PolymorphicProps<'div'>>>(
31
+
ark.div,
32
+
'header',
33
+
)
34
+
35
+
export const Title = withContext<Assign<HTMLStyledProps<'h3'>, PolymorphicProps<'h3'>>>(
36
+
ark.h3,
37
+
'title',
38
+
)
+42
src/components/ui/styled/checkbox.tsx
+42
src/components/ui/styled/checkbox.tsx
···
1
+
import { type Assign, Checkbox } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type CheckboxVariantProps, checkbox } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withProvider, withContext } = createStyleContext(checkbox)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withProvider<
11
+
Assign<Assign<HTMLStyledProps<'label'>, Checkbox.RootProviderBaseProps>, CheckboxVariantProps>
12
+
>(Checkbox.RootProvider, 'root')
13
+
14
+
export type RootProps = ComponentProps<typeof Root>
15
+
export const Root = withProvider<
16
+
Assign<Assign<HTMLStyledProps<'label'>, Checkbox.RootBaseProps>, CheckboxVariantProps>
17
+
>(Checkbox.Root, 'root')
18
+
19
+
export const Control = withContext<Assign<HTMLStyledProps<'div'>, Checkbox.ControlBaseProps>>(
20
+
Checkbox.Control,
21
+
'control',
22
+
)
23
+
24
+
export const Group = withContext<Assign<HTMLStyledProps<'div'>, Checkbox.GroupBaseProps>>(
25
+
Checkbox.Group,
26
+
'group',
27
+
)
28
+
29
+
export const Indicator = withContext<Assign<HTMLStyledProps<'div'>, Checkbox.IndicatorBaseProps>>(
30
+
Checkbox.Indicator,
31
+
'indicator',
32
+
)
33
+
34
+
export const Label = withContext<Assign<HTMLStyledProps<'span'>, Checkbox.LabelBaseProps>>(
35
+
Checkbox.Label,
36
+
'label',
37
+
)
38
+
39
+
export {
40
+
CheckboxContext as Context,
41
+
CheckboxHiddenInput as HiddenInput,
42
+
} from '@ark-ui/solid'
+7
src/components/ui/styled/code.tsx
+7
src/components/ui/styled/code.tsx
+129
src/components/ui/styled/color-picker.tsx
+129
src/components/ui/styled/color-picker.tsx
···
1
+
import { type Assign, ColorPicker } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type ColorPickerVariantProps, colorPicker } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withProvider, withContext } = createStyleContext(colorPicker)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withProvider<
11
+
Assign<Assign<HTMLStyledProps<'div'>, ColorPicker.RootProviderBaseProps>, ColorPickerVariantProps>
12
+
>(ColorPicker.RootProvider, 'root')
13
+
14
+
export type RootProps = ComponentProps<typeof Root>
15
+
export const Root = withProvider<
16
+
Assign<Assign<HTMLStyledProps<'div'>, ColorPicker.RootBaseProps>, ColorPickerVariantProps>
17
+
>(ColorPicker.Root, 'root')
18
+
19
+
export const AreaBackground = withContext<
20
+
Assign<HTMLStyledProps<'div'>, ColorPicker.AreaBackgroundBaseProps>
21
+
>(ColorPicker.AreaBackground, 'areaBackground')
22
+
23
+
export const Area = withContext<Assign<HTMLStyledProps<'div'>, ColorPicker.AreaBaseProps>>(
24
+
ColorPicker.Area,
25
+
'area',
26
+
)
27
+
28
+
export const AreaThumb = withContext<
29
+
Assign<HTMLStyledProps<'div'>, ColorPicker.AreaThumbBaseProps>
30
+
>(ColorPicker.AreaThumb, 'areaThumb')
31
+
32
+
export const ChannelInput = withContext<
33
+
Assign<HTMLStyledProps<'input'>, ColorPicker.ChannelInputBaseProps>
34
+
>(ColorPicker.ChannelInput, 'channelInput')
35
+
36
+
export const ChannelSliderLabel = withContext<
37
+
Assign<HTMLStyledProps<'label'>, ColorPicker.ChannelSliderLabelBaseProps>
38
+
>(ColorPicker.ChannelSliderLabel, 'channelSliderLabel')
39
+
40
+
export const ChannelSlider = withContext<
41
+
Assign<HTMLStyledProps<'div'>, ColorPicker.ChannelSliderBaseProps>
42
+
>(ColorPicker.ChannelSlider, 'channelSlider')
43
+
44
+
export const ChannelSliderThumb = withContext<
45
+
Assign<HTMLStyledProps<'div'>, ColorPicker.ChannelSliderThumbBaseProps>
46
+
>(ColorPicker.ChannelSliderThumb, 'channelSliderThumb')
47
+
48
+
export const ChannelSliderTrack = withContext<
49
+
Assign<HTMLStyledProps<'div'>, ColorPicker.ChannelSliderTrackBaseProps>
50
+
>(ColorPicker.ChannelSliderTrack, 'channelSliderTrack')
51
+
52
+
export const ChannelSliderValueText = withContext<
53
+
Assign<HTMLStyledProps<'span'>, ColorPicker.ChannelSliderValueTextBaseProps>
54
+
>(ColorPicker.ChannelSliderValueText, 'channelSliderValueText')
55
+
56
+
export const Content = withContext<Assign<HTMLStyledProps<'div'>, ColorPicker.ContentBaseProps>>(
57
+
ColorPicker.Content,
58
+
'content',
59
+
)
60
+
61
+
export const Control = withContext<Assign<HTMLStyledProps<'div'>, ColorPicker.ControlBaseProps>>(
62
+
ColorPicker.Control,
63
+
'control',
64
+
)
65
+
66
+
export const EyeDropperTrigger = withContext<
67
+
Assign<HTMLStyledProps<'button'>, ColorPicker.EyeDropperTriggerBaseProps>
68
+
>(ColorPicker.EyeDropperTrigger, 'eyeDropperTrigger')
69
+
70
+
export const FormatSelect = withContext<
71
+
Assign<HTMLStyledProps<'select'>, ColorPicker.FormatSelectBaseProps>
72
+
>(ColorPicker.FormatSelect, 'formatSelect')
73
+
74
+
export const FormatTrigger = withContext<
75
+
Assign<HTMLStyledProps<'button'>, ColorPicker.FormatTriggerBaseProps>
76
+
>(ColorPicker.FormatTrigger, 'formatTrigger')
77
+
78
+
export const Label = withContext<Assign<HTMLStyledProps<'label'>, ColorPicker.LabelBaseProps>>(
79
+
ColorPicker.Label,
80
+
'label',
81
+
)
82
+
83
+
export const Positioner = withContext<
84
+
Assign<HTMLStyledProps<'div'>, ColorPicker.PositionerBaseProps>
85
+
>(ColorPicker.Positioner, 'positioner')
86
+
87
+
export const SwatchGroup = withContext<
88
+
Assign<HTMLStyledProps<'div'>, ColorPicker.SwatchGroupBaseProps>
89
+
>(ColorPicker.SwatchGroup, 'swatchGroup')
90
+
91
+
export const SwatchIndicator = withContext<
92
+
Assign<HTMLStyledProps<'div'>, ColorPicker.SwatchIndicatorBaseProps>
93
+
>(ColorPicker.SwatchIndicator, 'swatchIndicator')
94
+
95
+
export const Swatch = withContext<Assign<HTMLStyledProps<'div'>, ColorPicker.SwatchBaseProps>>(
96
+
ColorPicker.Swatch,
97
+
'swatch',
98
+
)
99
+
100
+
export const SwatchTrigger = withContext<
101
+
Assign<HTMLStyledProps<'button'>, ColorPicker.SwatchTriggerBaseProps>
102
+
>(ColorPicker.SwatchTrigger, 'swatchTrigger')
103
+
104
+
export const TransparencyGrid = withContext<
105
+
Assign<HTMLStyledProps<'div'>, ColorPicker.TransparencyGridBaseProps>
106
+
>(ColorPicker.TransparencyGrid, 'transparencyGrid')
107
+
108
+
export const Trigger = withContext<Assign<HTMLStyledProps<'button'>, ColorPicker.TriggerBaseProps>>(
109
+
ColorPicker.Trigger,
110
+
'trigger',
111
+
)
112
+
113
+
export const ValueSwatch = withContext<
114
+
Assign<HTMLStyledProps<'div'>, ColorPicker.ValueSwatchBaseProps>
115
+
>(ColorPicker.ValueSwatch, 'swatch')
116
+
117
+
export const ValueText = withContext<
118
+
Assign<HTMLStyledProps<'span'>, ColorPicker.ValueTextBaseProps>
119
+
>(ColorPicker.ValueText, 'valueText')
120
+
121
+
export const View = withContext<Assign<HTMLStyledProps<'div'>, ColorPicker.ViewBaseProps>>(
122
+
ColorPicker.View,
123
+
'view',
124
+
)
125
+
126
+
export {
127
+
ColorPickerContext as Context,
128
+
ColorPickerHiddenInput as HiddenInput,
129
+
} from '@ark-ui/solid'
+51
src/components/ui/styled/dialog.tsx
+51
src/components/ui/styled/dialog.tsx
···
1
+
import { type Assign, Dialog } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type DialogVariantProps, dialog } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withRootProvider, withContext } = createStyleContext(dialog)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withRootProvider<Assign<Dialog.RootProviderProps, DialogVariantProps>>(
11
+
Dialog.RootProvider,
12
+
)
13
+
14
+
export type RootProps = ComponentProps<typeof Root>
15
+
export const Root = withRootProvider<Assign<Dialog.RootProps, DialogVariantProps>>(Dialog.Root)
16
+
17
+
export const Backdrop = withContext<Assign<HTMLStyledProps<'div'>, Dialog.BackdropBaseProps>>(
18
+
Dialog.Backdrop,
19
+
'backdrop',
20
+
)
21
+
22
+
export const CloseTrigger = withContext<
23
+
Assign<HTMLStyledProps<'button'>, Dialog.CloseTriggerBaseProps>
24
+
>(Dialog.CloseTrigger, 'closeTrigger')
25
+
26
+
export const Content = withContext<Assign<HTMLStyledProps<'div'>, Dialog.ContentBaseProps>>(
27
+
Dialog.Content,
28
+
'content',
29
+
)
30
+
31
+
export const Description = withContext<Assign<HTMLStyledProps<'div'>, Dialog.DescriptionBaseProps>>(
32
+
Dialog.Description,
33
+
'description',
34
+
)
35
+
36
+
export const Positioner = withContext<Assign<HTMLStyledProps<'div'>, Dialog.PositionerBaseProps>>(
37
+
Dialog.Positioner,
38
+
'positioner',
39
+
)
40
+
41
+
export const Title = withContext<Assign<HTMLStyledProps<'h2'>, Dialog.TitleBaseProps>>(
42
+
Dialog.Title,
43
+
'title',
44
+
)
45
+
46
+
export const Trigger = withContext<Assign<HTMLStyledProps<'button'>, Dialog.TriggerBaseProps>>(
47
+
Dialog.Trigger,
48
+
'trigger',
49
+
)
50
+
51
+
export { DialogContext as Context } from '@ark-ui/solid'
+74
src/components/ui/styled/drawer.tsx
+74
src/components/ui/styled/drawer.tsx
···
1
+
import { type Assign, Dialog, type PolymorphicProps, ark } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type DrawerVariantProps, drawer } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withRootProvider, withContext } = createStyleContext(drawer)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withRootProvider<Assign<Dialog.RootProps, DrawerVariantProps>>(Dialog.RootProvider)
11
+
12
+
export type RootProps = ComponentProps<typeof Root>
13
+
export const Root = withRootProvider<Assign<Dialog.RootProps, DrawerVariantProps>>(Dialog.Root)
14
+
15
+
export type BackdropProps = ComponentProps<typeof Backdrop>
16
+
export const Backdrop = withContext<Assign<HTMLStyledProps<'div'>, Dialog.BackdropProps>>(
17
+
Dialog.Backdrop,
18
+
'backdrop',
19
+
)
20
+
21
+
export type CloseTriggerProps = ComponentProps<typeof CloseTrigger>
22
+
export const CloseTrigger = withContext<
23
+
Assign<HTMLStyledProps<'button'>, Dialog.CloseTriggerProps>
24
+
>(Dialog.CloseTrigger, 'closeTrigger')
25
+
26
+
export type ContentProps = ComponentProps<typeof Content>
27
+
export const Content = withContext<Assign<HTMLStyledProps<'div'>, Dialog.ContentProps>>(
28
+
Dialog.Content,
29
+
'content',
30
+
)
31
+
32
+
export type DescriptionProps = ComponentProps<typeof Description>
33
+
export const Description = withContext<Assign<HTMLStyledProps<'div'>, Dialog.DescriptionProps>>(
34
+
Dialog.Description,
35
+
'description',
36
+
)
37
+
38
+
export type PositionerProps = ComponentProps<typeof Positioner>
39
+
export const Positioner = withContext<Assign<HTMLStyledProps<'div'>, Dialog.PositionerProps>>(
40
+
Dialog.Positioner,
41
+
'positioner',
42
+
)
43
+
44
+
export type TitleProps = ComponentProps<typeof Title>
45
+
export const Title = withContext<Assign<HTMLStyledProps<'h2'>, Dialog.TitleProps>>(
46
+
Dialog.Title,
47
+
'title',
48
+
)
49
+
50
+
export type TriggerProps = ComponentProps<typeof Trigger>
51
+
export const Trigger = withContext<Assign<HTMLStyledProps<'button'>, Dialog.TriggerProps>>(
52
+
Dialog.Trigger,
53
+
'trigger',
54
+
)
55
+
56
+
export const Header = withContext<Assign<HTMLStyledProps<'div'>, PolymorphicProps<'div'>>>(
57
+
ark.div,
58
+
'header',
59
+
)
60
+
61
+
export const Body = withContext<Assign<HTMLStyledProps<'div'>, PolymorphicProps<'div'>>>(
62
+
ark.div,
63
+
'body',
64
+
)
65
+
66
+
export const Footer = withContext<Assign<HTMLStyledProps<'div'>, PolymorphicProps<'div'>>>(
67
+
ark.div,
68
+
'footer',
69
+
)
70
+
71
+
export {
72
+
DialogContext as Context,
73
+
type DialogContextProps as ContextProps,
74
+
} from '@ark-ui/solid'
+46
src/components/ui/styled/field.tsx
+46
src/components/ui/styled/field.tsx
···
1
+
import { type Assign, Field } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { styled } from 'styled-system/jsx'
4
+
import { type FieldVariantProps, field, input, textarea } from 'styled-system/recipes'
5
+
import type { HTMLStyledProps } from 'styled-system/types'
6
+
import { createStyleContext } from './utils/create-style-context'
7
+
8
+
const { withProvider, withContext } = createStyleContext(field)
9
+
10
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
11
+
export const RootProvider = withProvider<
12
+
Assign<Assign<HTMLStyledProps<'div'>, Field.RootProviderBaseProps>, FieldVariantProps>
13
+
>(Field.RootProvider, 'root')
14
+
15
+
export type RootProps = ComponentProps<typeof Root>
16
+
export const Root = withProvider<
17
+
Assign<Assign<HTMLStyledProps<'div'>, Field.RootBaseProps>, FieldVariantProps>
18
+
>(Field.Root, 'root')
19
+
20
+
export const ErrorText = withContext<Assign<HTMLStyledProps<'span'>, Field.ErrorTextBaseProps>>(
21
+
Field.ErrorText,
22
+
'errorText',
23
+
)
24
+
25
+
export const HelperText = withContext<Assign<HTMLStyledProps<'span'>, Field.HelperTextBaseProps>>(
26
+
Field.HelperText,
27
+
'helperText',
28
+
)
29
+
30
+
export const Label = withContext<Assign<HTMLStyledProps<'label'>, Field.LabelBaseProps>>(
31
+
Field.Label,
32
+
'label',
33
+
)
34
+
35
+
export const Select = withContext<Assign<HTMLStyledProps<'select'>, Field.SelectBaseProps>>(
36
+
Field.Select,
37
+
'select',
38
+
)
39
+
40
+
export type InputProps = ComponentProps<typeof Input>
41
+
export const Input = styled(Field.Input, input)
42
+
43
+
export type TextareaProps = ComponentProps<typeof Textarea>
44
+
export const Textarea = styled(Field.Textarea, textarea)
45
+
46
+
export { FieldContext as Context } from '@ark-ui/solid'
+68
src/components/ui/styled/file-upload.tsx
+68
src/components/ui/styled/file-upload.tsx
···
1
+
import { type Assign, FileUpload } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type FileUploadVariantProps, fileUpload } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withProvider, withContext } = createStyleContext(fileUpload)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withProvider<
11
+
Assign<Assign<HTMLStyledProps<'div'>, FileUpload.RootProviderBaseProps>, FileUploadVariantProps>
12
+
>(FileUpload.RootProvider, 'root')
13
+
14
+
export type RootProps = ComponentProps<typeof Root>
15
+
export const Root = withProvider<
16
+
Assign<Assign<HTMLStyledProps<'div'>, FileUpload.RootBaseProps>, FileUploadVariantProps>
17
+
>(FileUpload.Root, 'root')
18
+
19
+
export const Dropzone = withContext<Assign<HTMLStyledProps<'div'>, FileUpload.DropzoneBaseProps>>(
20
+
FileUpload.Dropzone,
21
+
'dropzone',
22
+
)
23
+
24
+
export const ItemDeleteTrigger = withContext<
25
+
Assign<HTMLStyledProps<'button'>, FileUpload.ItemDeleteTriggerBaseProps>
26
+
>(FileUpload.ItemDeleteTrigger, 'itemDeleteTrigger')
27
+
28
+
export const ItemGroup = withContext<Assign<HTMLStyledProps<'ul'>, FileUpload.ItemGroupBaseProps>>(
29
+
FileUpload.ItemGroup,
30
+
'itemGroup',
31
+
)
32
+
33
+
export const ItemName = withContext<Assign<HTMLStyledProps<'div'>, FileUpload.ItemNameBaseProps>>(
34
+
FileUpload.ItemName,
35
+
'itemName',
36
+
)
37
+
38
+
export const ItemPreviewImage = withContext<
39
+
Assign<HTMLStyledProps<'img'>, FileUpload.ItemPreviewImageBaseProps>
40
+
>(FileUpload.ItemPreviewImage, 'itemPreviewImage')
41
+
42
+
export const ItemPreview = withContext<
43
+
Assign<HTMLStyledProps<'div'>, FileUpload.ItemPreviewBaseProps>
44
+
>(FileUpload.ItemPreview, 'itemPreview')
45
+
46
+
export const Item = withContext<Assign<HTMLStyledProps<'li'>, FileUpload.ItemBaseProps>>(
47
+
FileUpload.Item,
48
+
'item',
49
+
)
50
+
51
+
export const ItemSizeText = withContext<
52
+
Assign<HTMLStyledProps<'div'>, FileUpload.ItemSizeTextBaseProps>
53
+
>(FileUpload.ItemSizeText, 'itemSizeText')
54
+
55
+
export const Label = withContext<Assign<HTMLStyledProps<'label'>, FileUpload.LabelBaseProps>>(
56
+
FileUpload.Label,
57
+
'label',
58
+
)
59
+
60
+
export const Trigger = withContext<Assign<HTMLStyledProps<'button'>, FileUpload.TriggerBaseProps>>(
61
+
FileUpload.Trigger,
62
+
'trigger',
63
+
)
64
+
65
+
export {
66
+
FileUploadContext as Context,
67
+
FileUploadHiddenInput as HiddenInput,
68
+
} from '@ark-ui/solid'
+7
src/components/ui/styled/form-label.tsx
+7
src/components/ui/styled/form-label.tsx
···
1
+
import { ark } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { styled } from 'styled-system/jsx'
4
+
import { formLabel } from 'styled-system/recipes'
5
+
6
+
export type FormLabelProps = ComponentProps<typeof FormLabel>
7
+
export const FormLabel = styled(ark.label, formLabel)
+7
src/components/ui/styled/input.tsx
+7
src/components/ui/styled/input.tsx
···
1
+
import { ark } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { styled } from 'styled-system/jsx'
4
+
import { input } from 'styled-system/recipes'
5
+
6
+
export type InputProps = ComponentProps<typeof Input>
7
+
export const Input = styled(ark.input, input)
+7
src/components/ui/styled/link.tsx
+7
src/components/ui/styled/link.tsx
+65
src/components/ui/styled/popover.tsx
+65
src/components/ui/styled/popover.tsx
···
1
+
import { type Assign, Popover } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type PopoverVariantProps, popover } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withRootProvider, withContext } = createStyleContext(popover)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withRootProvider<
11
+
Assign<Popover.RootProviderProps, PopoverVariantProps>
12
+
>(Popover.RootProvider)
13
+
14
+
export type RootProps = ComponentProps<typeof Root>
15
+
export const Root = withRootProvider<Assign<Popover.RootProps, PopoverVariantProps>>(Popover.Root)
16
+
17
+
export const Anchor = withContext<Assign<HTMLStyledProps<'div'>, Popover.AnchorBaseProps>>(
18
+
Popover.Anchor,
19
+
'anchor',
20
+
)
21
+
22
+
export const Arrow = withContext<Assign<HTMLStyledProps<'div'>, Popover.ArrowBaseProps>>(
23
+
Popover.Arrow,
24
+
'arrow',
25
+
)
26
+
27
+
export const ArrowTip = withContext<Assign<HTMLStyledProps<'div'>, Popover.ArrowTipBaseProps>>(
28
+
Popover.ArrowTip,
29
+
'arrowTip',
30
+
)
31
+
32
+
export const CloseTrigger = withContext<
33
+
Assign<HTMLStyledProps<'button'>, Popover.CloseTriggerBaseProps>
34
+
>(Popover.CloseTrigger, 'closeTrigger')
35
+
36
+
export const Content = withContext<Assign<HTMLStyledProps<'div'>, Popover.ContentBaseProps>>(
37
+
Popover.Content,
38
+
'content',
39
+
)
40
+
41
+
export const Description = withContext<
42
+
Assign<HTMLStyledProps<'div'>, Popover.DescriptionBaseProps>
43
+
>(Popover.Description, 'description')
44
+
45
+
export const Indicator = withContext<Assign<HTMLStyledProps<'div'>, Popover.IndicatorBaseProps>>(
46
+
Popover.Indicator,
47
+
'indicator',
48
+
)
49
+
50
+
export const Positioner = withContext<Assign<HTMLStyledProps<'div'>, Popover.PositionerBaseProps>>(
51
+
Popover.Positioner,
52
+
'positioner',
53
+
)
54
+
55
+
export const Title = withContext<Assign<HTMLStyledProps<'div'>, Popover.TitleBaseProps>>(
56
+
Popover.Title,
57
+
'title',
58
+
)
59
+
60
+
export const Trigger = withContext<Assign<HTMLStyledProps<'button'>, Popover.TriggerBaseProps>>(
61
+
Popover.Trigger,
62
+
'trigger',
63
+
)
64
+
65
+
export { PopoverContext as Context } from '@ark-ui/solid'
+57
src/components/ui/styled/progress.tsx
+57
src/components/ui/styled/progress.tsx
···
1
+
import { type Assign, Progress } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type ProgressVariantProps, progress } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withProvider, withContext } = createStyleContext(progress)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withProvider<
11
+
Assign<Assign<HTMLStyledProps<'div'>, Progress.RootProviderBaseProps>, ProgressVariantProps>
12
+
>(Progress.RootProvider, 'root')
13
+
14
+
export type RootProps = ComponentProps<typeof Root>
15
+
export const Root = withProvider<
16
+
Assign<Assign<HTMLStyledProps<'div'>, Progress.RootBaseProps>, ProgressVariantProps>
17
+
>(Progress.Root, 'root')
18
+
19
+
export const Circle = withContext<Assign<HTMLStyledProps<'svg'>, Progress.CircleBaseProps>>(
20
+
Progress.Circle,
21
+
'circle',
22
+
)
23
+
24
+
export const CircleRange = withContext<
25
+
Assign<HTMLStyledProps<'circle'>, Progress.CircleRangeBaseProps>
26
+
>(Progress.CircleRange, 'circleRange')
27
+
28
+
export const CircleTrack = withContext<
29
+
Assign<HTMLStyledProps<'circle'>, Progress.CircleTrackBaseProps>
30
+
>(Progress.CircleTrack, 'circleTrack')
31
+
32
+
export const Label = withContext<Assign<HTMLStyledProps<'label'>, Progress.LabelBaseProps>>(
33
+
Progress.Label,
34
+
'label',
35
+
)
36
+
37
+
export const Range = withContext<Assign<HTMLStyledProps<'div'>, Progress.RangeBaseProps>>(
38
+
Progress.Range,
39
+
'range',
40
+
)
41
+
42
+
export const Track = withContext<Assign<HTMLStyledProps<'div'>, Progress.TrackBaseProps>>(
43
+
Progress.Track,
44
+
'track',
45
+
)
46
+
47
+
export const ValueText = withContext<Assign<HTMLStyledProps<'span'>, Progress.ValueTextBaseProps>>(
48
+
Progress.ValueText,
49
+
'valueText',
50
+
)
51
+
52
+
export const View = withContext<Assign<HTMLStyledProps<'span'>, Progress.ViewBaseProps>>(
53
+
Progress.View,
54
+
'view',
55
+
)
56
+
57
+
export { ProgressContext as Context } from '@ark-ui/solid'
+95
src/components/ui/styled/select.tsx
+95
src/components/ui/styled/select.tsx
···
1
+
import { type Assign, Select } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type SelectVariantProps, select } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withRootProvider, withContext } = createStyleContext(select)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withRootProvider<
11
+
Assign<
12
+
Assign<HTMLStyledProps<'div'>, Select.RootProviderBaseProps<Select.CollectionItem>>,
13
+
SelectVariantProps
14
+
>
15
+
>(Select.RootProvider)
16
+
17
+
export type RootProps = ComponentProps<typeof Root>
18
+
export const Root = withRootProvider<
19
+
Assign<
20
+
Assign<HTMLStyledProps<'div'>, Select.RootBaseProps<Select.CollectionItem>>,
21
+
SelectVariantProps
22
+
>
23
+
>(Select.Root)
24
+
25
+
export const ClearTrigger = withContext<
26
+
Assign<HTMLStyledProps<'button'>, Select.ClearTriggerBaseProps>
27
+
>(Select.ClearTrigger, 'clearTrigger')
28
+
29
+
export const Content = withContext<Assign<HTMLStyledProps<'div'>, Select.ContentBaseProps>>(
30
+
Select.Content,
31
+
'content',
32
+
)
33
+
34
+
export const Control = withContext<Assign<HTMLStyledProps<'div'>, Select.ControlBaseProps>>(
35
+
Select.Control,
36
+
'control',
37
+
)
38
+
39
+
export const Indicator = withContext<Assign<HTMLStyledProps<'div'>, Select.IndicatorBaseProps>>(
40
+
Select.Indicator,
41
+
'indicator',
42
+
)
43
+
44
+
export const ItemGroupLabel = withContext<
45
+
Assign<HTMLStyledProps<'div'>, Select.ItemGroupLabelBaseProps>
46
+
>(Select.ItemGroupLabel, 'itemGroupLabel')
47
+
48
+
export const ItemGroup = withContext<Assign<HTMLStyledProps<'div'>, Select.ItemGroupBaseProps>>(
49
+
Select.ItemGroup,
50
+
'itemGroup',
51
+
)
52
+
53
+
export const ItemIndicator = withContext<
54
+
Assign<HTMLStyledProps<'div'>, Select.ItemIndicatorBaseProps>
55
+
>(Select.ItemIndicator, 'itemIndicator')
56
+
57
+
export const Item = withContext<Assign<HTMLStyledProps<'div'>, Select.ItemBaseProps>>(
58
+
Select.Item,
59
+
'item',
60
+
)
61
+
62
+
export const ItemText = withContext<Assign<HTMLStyledProps<'span'>, Select.ItemTextBaseProps>>(
63
+
Select.ItemText,
64
+
'itemText',
65
+
)
66
+
67
+
export const Label = withContext<Assign<HTMLStyledProps<'label'>, Select.LabelBaseProps>>(
68
+
Select.Label,
69
+
'label',
70
+
)
71
+
72
+
export const List = withContext<Assign<HTMLStyledProps<'div'>, Select.ListBaseProps>>(
73
+
Select.List,
74
+
'list',
75
+
)
76
+
77
+
export const Positioner = withContext<Assign<HTMLStyledProps<'div'>, Select.PositionerBaseProps>>(
78
+
Select.Positioner,
79
+
'positioner',
80
+
)
81
+
82
+
export const Trigger = withContext<Assign<HTMLStyledProps<'button'>, Select.TriggerBaseProps>>(
83
+
Select.Trigger,
84
+
'trigger',
85
+
)
86
+
87
+
export const ValueText = withContext<Assign<HTMLStyledProps<'span'>, Select.ValueTextBaseProps>>(
88
+
Select.ValueText,
89
+
'valueText',
90
+
)
91
+
92
+
export {
93
+
SelectContext as Context,
94
+
SelectHiddenSelect as HiddenSelect,
95
+
} from '@ark-ui/solid'
+7
src/components/ui/styled/spinner.tsx
+7
src/components/ui/styled/spinner.tsx
···
1
+
import { ark } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { styled } from 'styled-system/jsx'
4
+
import { spinner } from 'styled-system/recipes'
5
+
6
+
export type SpinnerProps = ComponentProps<typeof Spinner>
7
+
export const Spinner = styled(ark.div, spinner)
+37
src/components/ui/styled/switch.tsx
+37
src/components/ui/styled/switch.tsx
···
1
+
import { type Assign, Switch } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type SwitchRecipeVariantProps, switchRecipe } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withProvider, withContext } = createStyleContext(switchRecipe)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withProvider<
11
+
Assign<Assign<HTMLStyledProps<'label'>, Switch.RootProviderBaseProps>, SwitchRecipeVariantProps>
12
+
>(Switch.RootProvider, 'root')
13
+
14
+
export type RootProps = ComponentProps<typeof Root>
15
+
export const Root = withProvider<
16
+
Assign<Assign<HTMLStyledProps<'label'>, Switch.RootBaseProps>, SwitchRecipeVariantProps>
17
+
>(Switch.Root, 'root')
18
+
19
+
export const Control = withContext<Assign<HTMLStyledProps<'span'>, Switch.ControlBaseProps>>(
20
+
Switch.Control,
21
+
'control',
22
+
)
23
+
24
+
export const Label = withContext<Assign<HTMLStyledProps<'span'>, Switch.LabelBaseProps>>(
25
+
Switch.Label,
26
+
'label',
27
+
)
28
+
29
+
export const Thumb = withContext<Assign<HTMLStyledProps<'span'>, Switch.ThumbBaseProps>>(
30
+
Switch.Thumb,
31
+
'thumb',
32
+
)
33
+
34
+
export {
35
+
SwitchContext as Context,
36
+
SwitchHiddenInput as HiddenInput,
37
+
} from '@ark-ui/solid'
+9
src/components/ui/styled/text.tsx
+9
src/components/ui/styled/text.tsx
···
1
+
import type { ComponentProps, JSX } from 'solid-js'
2
+
import { styled } from 'styled-system/jsx'
3
+
import { type TextVariantProps, text } from 'styled-system/recipes'
4
+
import type { StyledComponent } from 'styled-system/types'
5
+
6
+
type ParagraphProps = TextVariantProps & { as?: JSX.Element }
7
+
8
+
export type TextProps = ComponentProps<typeof Text>
9
+
export const Text = styled('p', text) as StyledComponent<'p', ParagraphProps>
+7
src/components/ui/styled/textarea.tsx
+7
src/components/ui/styled/textarea.tsx
···
1
+
import { ark } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { styled } from 'styled-system/jsx'
4
+
import { textarea } from 'styled-system/recipes'
5
+
6
+
export type TextareaProps = ComponentProps<typeof Textarea>
7
+
export const Textarea = styled(ark.textarea, textarea)
+40
src/components/ui/styled/toast.tsx
+40
src/components/ui/styled/toast.tsx
···
1
+
import { type Assign, Toast } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { toast } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withProvider, withContext } = createStyleContext(toast)
8
+
9
+
export type RootProps = ComponentProps<typeof Root>
10
+
export const Root = withProvider<Assign<HTMLStyledProps<'div'>, Toast.RootProps>>(
11
+
Toast.Root,
12
+
'root',
13
+
)
14
+
15
+
export const ActionTrigger = withContext<
16
+
Assign<HTMLStyledProps<'button'>, Toast.ActionTriggerProps>
17
+
>(Toast.ActionTrigger, 'actionTrigger')
18
+
19
+
export const CloseTrigger = withContext<Assign<HTMLStyledProps<'div'>, Toast.CloseTriggerProps>>(
20
+
Toast.CloseTrigger,
21
+
'closeTrigger',
22
+
)
23
+
24
+
export const Description = withContext<Assign<HTMLStyledProps<'div'>, Toast.DescriptionProps>>(
25
+
Toast.Description,
26
+
'description',
27
+
)
28
+
29
+
export const Title = withContext<Assign<HTMLStyledProps<'div'>, Toast.TitleProps>>(
30
+
Toast.Title,
31
+
'title',
32
+
)
33
+
34
+
export {
35
+
ToastContext as Context,
36
+
createToaster,
37
+
Toaster,
38
+
type ToastContextProps as ContextProps,
39
+
type ToasterProps,
40
+
} from '@ark-ui/solid'
+42
src/components/ui/styled/tooltip.tsx
+42
src/components/ui/styled/tooltip.tsx
···
1
+
import { type Assign, Tooltip } from '@ark-ui/solid'
2
+
import type { ComponentProps } from 'solid-js'
3
+
import { type TooltipVariantProps, tooltip } from 'styled-system/recipes'
4
+
import type { HTMLStyledProps } from 'styled-system/types'
5
+
import { createStyleContext } from './utils/create-style-context'
6
+
7
+
const { withRootProvider, withContext } = createStyleContext(tooltip)
8
+
9
+
export type RootProviderProps = ComponentProps<typeof RootProvider>
10
+
export const RootProvider = withRootProvider<
11
+
Assign<Tooltip.RootProviderProps, TooltipVariantProps>
12
+
>(Tooltip.RootProvider)
13
+
14
+
export type RootProps = ComponentProps<typeof Root>
15
+
export const Root = withRootProvider<Assign<Tooltip.RootProps, TooltipVariantProps>>(Tooltip.Root)
16
+
17
+
export const Arrow = withContext<Assign<HTMLStyledProps<'div'>, Tooltip.ArrowBaseProps>>(
18
+
Tooltip.Arrow,
19
+
'arrow',
20
+
)
21
+
22
+
export const ArrowTip = withContext<Assign<HTMLStyledProps<'div'>, Tooltip.ArrowTipBaseProps>>(
23
+
Tooltip.ArrowTip,
24
+
'arrowTip',
25
+
)
26
+
27
+
export const Content = withContext<Assign<HTMLStyledProps<'div'>, Tooltip.ContentBaseProps>>(
28
+
Tooltip.Content,
29
+
'content',
30
+
)
31
+
32
+
export const Positioner = withContext<Assign<HTMLStyledProps<'div'>, Tooltip.PositionerBaseProps>>(
33
+
Tooltip.Positioner,
34
+
'positioner',
35
+
)
36
+
37
+
export const Trigger = withContext<Assign<HTMLStyledProps<'button'>, Tooltip.TriggerBaseProps>>(
38
+
Tooltip.Trigger,
39
+
'trigger',
40
+
)
41
+
42
+
export { TooltipContext as Context } from '@ark-ui/solid'
+89
src/components/ui/styled/utils/create-style-context.tsx
+89
src/components/ui/styled/utils/create-style-context.tsx
···
1
+
import { type JSX, createContext, useContext } from 'solid-js'
2
+
import { Dynamic } from 'solid-js/web'
3
+
import { cx } from 'styled-system/css'
4
+
import { isCssProperty, styled } from 'styled-system/jsx'
5
+
import type { ElementType, StyledComponent } from 'styled-system/types'
6
+
7
+
type Props = Record<string, unknown>
8
+
type Recipe = {
9
+
(props?: Props): Props
10
+
splitVariantProps: (props: Props) => [Props, Props]
11
+
}
12
+
13
+
type Slot<R extends Recipe> = keyof ReturnType<R>
14
+
type Options = { forwardProps?: string[] }
15
+
16
+
const shouldForwardProp = (prop: string, variantKeys: string[], options: Options = {}) =>
17
+
options.forwardProps?.includes(prop) || (!variantKeys.includes(prop) && !isCssProperty(prop))
18
+
19
+
export const createStyleContext = <R extends Recipe>(recipe: R) => {
20
+
const StyleContext = createContext<Record<Slot<R>, string> | null>(null)
21
+
22
+
const withRootProvider = <P extends {}>(Component: ElementType): ((props: P) => JSX.Element) => {
23
+
const StyledComponent = (props: P) => {
24
+
const [variantProps, localProps] = recipe.splitVariantProps(props)
25
+
const slotStyles = recipe(variantProps) as Record<Slot<R>, string>
26
+
27
+
return (
28
+
<StyleContext.Provider value={slotStyles}>
29
+
<Component {...localProps} />
30
+
</StyleContext.Provider>
31
+
)
32
+
}
33
+
return StyledComponent
34
+
}
35
+
36
+
const withProvider = <P extends { class?: string }>(
37
+
Component: ElementType,
38
+
slot: Slot<R>,
39
+
options?: Options,
40
+
): ((props: P) => JSX.Element) => {
41
+
const StyledComponent = styled(
42
+
Component,
43
+
{},
44
+
{
45
+
shouldForwardProp: (prop, variantKeys) => shouldForwardProp(prop, variantKeys, options),
46
+
},
47
+
) as StyledComponent<ElementType>
48
+
49
+
return (props: P) => {
50
+
const [variantProps, localProps] = recipe.splitVariantProps(props)
51
+
const slotStyles = recipe(variantProps) as Record<Slot<R>, string>
52
+
53
+
return (
54
+
<StyleContext.Provider value={slotStyles}>
55
+
<Dynamic
56
+
component={StyledComponent}
57
+
{...localProps}
58
+
class={cx(slotStyles?.[slot], props.class)}
59
+
/>
60
+
</StyleContext.Provider>
61
+
)
62
+
}
63
+
}
64
+
65
+
const withContext = <P extends { class?: string }>(
66
+
Component: ElementType,
67
+
slot: Slot<R>,
68
+
): ((props: P) => JSX.Element) => {
69
+
const StyledComponent = styled(Component)
70
+
71
+
const Foo = (props: P) => {
72
+
const slotStyles = useContext(StyleContext)
73
+
return (
74
+
<Dynamic
75
+
component={StyledComponent}
76
+
{...props}
77
+
class={cx(slotStyles?.[slot], props.class)}
78
+
/>
79
+
)
80
+
}
81
+
return Foo
82
+
}
83
+
84
+
return {
85
+
withRootProvider,
86
+
withProvider,
87
+
withContext,
88
+
}
89
+
}
+20
src/components/ui/switch.tsx
+20
src/components/ui/switch.tsx
···
1
+
import { Show, children } from 'solid-js'
2
+
import * as StyledSwitch from './styled/switch'
3
+
4
+
export interface SwitchProps extends StyledSwitch.RootProps {}
5
+
6
+
export const Switch = (props: SwitchProps) => {
7
+
const getChildren = children(() => props.children)
8
+
9
+
return (
10
+
<StyledSwitch.Root {...props}>
11
+
<StyledSwitch.Control>
12
+
<StyledSwitch.Thumb />
13
+
</StyledSwitch.Control>
14
+
<Show when={getChildren()}>
15
+
<StyledSwitch.Label>{getChildren()}</StyledSwitch.Label>
16
+
</Show>
17
+
<StyledSwitch.HiddenInput />
18
+
</StyledSwitch.Root>
19
+
)
20
+
}
+1
src/components/ui/text.tsx
+1
src/components/ui/text.tsx
···
1
+
export { Text, type TextProps } from './styled/text'
+1
src/components/ui/textarea.tsx
+1
src/components/ui/textarea.tsx
···
1
+
export { Textarea, type TextareaProps } from './styled/textarea'
+1
src/components/ui/toast.tsx
+1
src/components/ui/toast.tsx
···
1
+
export * as Toast from './styled/toast'
+1
src/components/ui/tooltip.tsx
+1
src/components/ui/tooltip.tsx
···
1
+
export * as Tooltip from './styled/tooltip'
+5
src/index.css
+5
src/index.css
+56
src/index.tsx
+56
src/index.tsx
···
1
+
/* @refresh reload */
2
+
import { render } from "solid-js/web";
3
+
import "solid-devtools";
4
+
import "./index.css";
5
+
6
+
import type {} from "@atcute/atproto";
7
+
import type {} from "@atcute/bluesky";
8
+
import type {} from "@atcute/microcosm";
9
+
10
+
import App from "./App";
11
+
import { tryFinalizeLogin } from "./lib/oauth";
12
+
import { accounts, setAccounts } from "./lib/accounts";
13
+
import { AtprotoDid } from "@atcute/lexicons/syntax";
14
+
import { toaster } from "./components/Toaster";
15
+
16
+
const root = document.getElementById("root");
17
+
18
+
if (import.meta.env.DEV && !(root instanceof HTMLElement)) {
19
+
throw new Error(
20
+
"Root element not found. Did you forget to add it to your index.html? Or maybe the id attribute got misspelled?",
21
+
);
22
+
}
23
+
24
+
const prefersDarkScheme = window.matchMedia(
25
+
"(prefers-color-scheme: dark)",
26
+
).matches;
27
+
document.documentElement.dataset.theme = prefersDarkScheme ? "dark" : "light";
28
+
29
+
tryFinalizeLogin()
30
+
.then((login) => {
31
+
if (!login) return;
32
+
let currentAccounts = accounts();
33
+
currentAccounts = currentAccounts.filter((acc) => acc.did !== login.did);
34
+
setAccounts([
35
+
...currentAccounts,
36
+
{
37
+
did: login.did as AtprotoDid,
38
+
handle: login.handle === "handle.invalid" ? undefined : login.handle,
39
+
},
40
+
]);
41
+
toaster.create({
42
+
title: "login success",
43
+
description: `logged in as ${login.handle}`,
44
+
type: "success",
45
+
});
46
+
})
47
+
.catch((error) => {
48
+
console.error(error);
49
+
toaster.create({
50
+
title: "login error",
51
+
description: `${error}`,
52
+
type: "error",
53
+
});
54
+
});
55
+
56
+
render(() => <App />, root!);
+26
src/lib/accounts.ts
+26
src/lib/accounts.ts
···
1
+
import { AtprotoDid, Handle } from "@atcute/lexicons/syntax";
2
+
import { setting } from "./settings";
3
+
import { createSignal } from "solid-js";
4
+
5
+
export type Account = {
6
+
did: AtprotoDid;
7
+
handle?: Handle;
8
+
};
9
+
10
+
export const loggingIn = setting<AtprotoDid>("loggingIn");
11
+
12
+
export const accountSetting = setting<Account[]>("accounts");
13
+
const [_accounts, _setAccounts] = createSignal<Account[]>(
14
+
accountSetting.get() ?? [],
15
+
);
16
+
export const accounts = _accounts;
17
+
export const setAccounts = (
18
+
value: Account[] | ((prev: Account[]) => Account[]),
19
+
) => {
20
+
const newAccounts = _setAccounts(value);
21
+
accountSetting.set(newAccounts);
22
+
};
23
+
24
+
export const [selectedAccount, setSelectedAccount] = createSignal<
25
+
AtprotoDid | undefined
26
+
>(accounts().at(0)?.did);
+62
src/lib/at.ts
+62
src/lib/at.ts
···
1
+
import { XrpcHandleResolver } from "@atcute/identity-resolver";
2
+
import { OAuthUserAgent } from "@atcute/oauth-browser-client";
3
+
import { Client as AtcuteClient, simpleFetchHandler } from "@atcute/client";
4
+
import { getSessionClient } from "./oauth";
5
+
import { AppBskyFeedPost } from "@atcute/bluesky";
6
+
import { AtprotoDid } from "@atcute/lexicons/syntax";
7
+
8
+
export const slingshotUrl = "https://slingshot.microcosm.blue";
9
+
10
+
export const handleResolver = new XrpcHandleResolver({
11
+
serviceUrl: slingshotUrl,
12
+
});
13
+
export const slingshot = new AtcuteClient({
14
+
handler: simpleFetchHandler({ service: slingshotUrl }),
15
+
});
16
+
17
+
export const login = async (agent: OAuthUserAgent) => {
18
+
const rpc = new AtcuteClient({ handler: agent });
19
+
const res = await rpc.get("com.atproto.server.getSession", { params: {} });
20
+
if (!res.ok) throw res.data.error;
21
+
const didDoc = await slingshot.get(
22
+
"com.bad-example.identity.resolveMiniDoc",
23
+
{ params: { identifier: res.data.did } },
24
+
);
25
+
if (!didDoc.ok) throw didDoc.data.error;
26
+
return {
27
+
client: rpc,
28
+
did: res.data.did,
29
+
handle: res.data.handle,
30
+
pds: didDoc.data.pds,
31
+
};
32
+
};
33
+
34
+
export const sendPost = async (
35
+
did: AtprotoDid,
36
+
blob: Blob,
37
+
postContent: string,
38
+
) => {
39
+
const login = await getSessionClient(did);
40
+
const upload = await login.client.post("com.atproto.repo.uploadBlob", {
41
+
input: blob,
42
+
});
43
+
if (!upload.ok) throw `failed to upload blob: ${upload.data.error}`;
44
+
const record: AppBskyFeedPost.Main = {
45
+
$type: "app.bsky.feed.post",
46
+
text: postContent,
47
+
embed: {
48
+
$type: "app.bsky.embed.video",
49
+
video: upload.data.blob,
50
+
},
51
+
createdAt: new Date().toISOString(),
52
+
};
53
+
const result = await login.client.post("com.atproto.repo.createRecord", {
54
+
input: {
55
+
collection: "app.bsky.feed.post",
56
+
record,
57
+
repo: did,
58
+
},
59
+
});
60
+
if (!result.ok) throw `failed to upload post: ${result.data.error}`;
61
+
return result.data;
62
+
};
+108
src/lib/oauth.ts
+108
src/lib/oauth.ts
···
1
+
import {
2
+
configureOAuth,
3
+
defaultIdentityResolver,
4
+
createAuthorizationUrl,
5
+
finalizeAuthorization,
6
+
OAuthUserAgent,
7
+
getSession,
8
+
deleteStoredSession,
9
+
} from "@atcute/oauth-browser-client";
10
+
11
+
import {
12
+
CompositeDidDocumentResolver,
13
+
PlcDidDocumentResolver,
14
+
WebDidDocumentResolver,
15
+
} from "@atcute/identity-resolver";
16
+
import type { ActorIdentifier } from "@atcute/lexicons";
17
+
import type { AtprotoDid } from "@atcute/lexicons/syntax";
18
+
import { handleResolver, login } from "./at";
19
+
import { loggingIn } from "./accounts";
20
+
import { clientId, redirectUri } from "./oauthMetadata";
21
+
22
+
configureOAuth({
23
+
metadata: {
24
+
client_id: clientId,
25
+
redirect_uri: redirectUri,
26
+
},
27
+
identityResolver: defaultIdentityResolver({
28
+
handleResolver,
29
+
30
+
didDocumentResolver: new CompositeDidDocumentResolver({
31
+
methods: {
32
+
plc: new PlcDidDocumentResolver(),
33
+
web: new WebDidDocumentResolver(),
34
+
},
35
+
}),
36
+
}),
37
+
});
38
+
39
+
export const sessions = {
40
+
get: async (did: AtprotoDid) => {
41
+
const session = await getSession(did, { allowStale: true });
42
+
return new OAuthUserAgent(session);
43
+
},
44
+
remove: async (did: AtprotoDid) => {
45
+
try {
46
+
const agent = await sessions.get(did);
47
+
await agent.signOut();
48
+
} catch {
49
+
deleteStoredSession(did);
50
+
}
51
+
},
52
+
};
53
+
54
+
export const flow = {
55
+
start: async (identifier: ActorIdentifier): Promise<void> => {
56
+
const authUrl = await createAuthorizationUrl({
57
+
target: { type: "account", identifier },
58
+
scope: "atproto transition:generic",
59
+
});
60
+
// recommended to wait for the browser to persist local storage before proceeding
61
+
await new Promise((resolve) => setTimeout(resolve, 200));
62
+
// redirect the user to sign in and authorize the app
63
+
window.location.assign(authUrl);
64
+
// if this is on an async function, ideally the function should never ever resolve.
65
+
// the only way it should resolve at this point is if the user aborted the authorization
66
+
// by returning back to this page (thanks to back-forward page caching)
67
+
await new Promise((_resolve, reject) => {
68
+
const listener = () => {
69
+
reject(new Error(`user aborted the login request`));
70
+
};
71
+
window.addEventListener("pageshow", listener, { once: true });
72
+
});
73
+
},
74
+
finalize: async (url: URL): Promise<OAuthUserAgent | null> => {
75
+
// createAuthorizationUrl asks server to put the params in the hash
76
+
const params = new URLSearchParams(url.hash.slice(1));
77
+
if (!params.has("code")) return null;
78
+
const { session } = await finalizeAuthorization(params);
79
+
return new OAuthUserAgent(session);
80
+
},
81
+
};
82
+
83
+
export const tryFinalizeLogin = async () => {
84
+
const did = loggingIn.get();
85
+
if (!did) return;
86
+
87
+
const currentUrl = new URL(window.location.href);
88
+
// scrub history so auth state cant be replayed
89
+
try {
90
+
history.replaceState(null, "", "/");
91
+
} catch {
92
+
// if router was unitialized then we probably dont need to scrub anyway
93
+
// so its fine
94
+
}
95
+
96
+
loggingIn.set(undefined);
97
+
await sessions.remove(did);
98
+
const agent = await flow.finalize(currentUrl);
99
+
if (!agent) throw "no session was logged into?";
100
+
101
+
return await login(agent);
102
+
};
103
+
104
+
export const getSessionClient = async (did: AtprotoDid) => {
105
+
const session = await sessions.get(did);
106
+
if (!session) throw `no session found for ${did}`;
107
+
return await login(session);
108
+
};
+13
src/lib/oauthMetadata.json
+13
src/lib/oauthMetadata.json
···
1
+
{
2
+
"client_id": "http://localhost:3000",
3
+
"client_name": "bsky voice memos",
4
+
"client_uri": "http://localhost:3000",
5
+
"logo_uri": "http://localhost:3000/favicon.png",
6
+
"redirect_uris": ["http://127.0.0.1:3000/"],
7
+
"scope": "atproto transition:generic",
8
+
"grant_types": ["authorization_code", "refresh_token"],
9
+
"response_types": ["code"],
10
+
"token_endpoint_auth_method": "none",
11
+
"application_type": "web",
12
+
"dpop_bound_access_tokens": true
13
+
}
+4
src/lib/oauthMetadata.ts
+4
src/lib/oauthMetadata.ts
+350
src/lib/render.ts
+350
src/lib/render.ts
···
1
+
import {
2
+
Output as MediaOutput,
3
+
Mp4OutputFormat,
4
+
BufferTarget,
5
+
CanvasSource,
6
+
QUALITY_MEDIUM,
7
+
getFirstEncodableVideoCodec,
8
+
Input as MediaInput,
9
+
BlobSource,
10
+
ALL_FORMATS,
11
+
Conversion,
12
+
} from "mediabunny";
13
+
14
+
const renderCanvas = new OffscreenCanvas(1280, 720);
15
+
16
+
// claude generated visualizer code cuz im lazy and it works okay ig
17
+
18
+
/**
19
+
* Extracts frequency data from audio file for visualization
20
+
* Efficient FFT-like approach with adaptive sensitivity based on track volume
21
+
*/
22
+
const extractFrequencyData = async (file: File, fps: number = 30) => {
23
+
if (fps <= 0)
24
+
throw new Error("invalid frame rate: must be greater than zero");
25
+
26
+
const audioContext = new AudioContext();
27
+
const arrayBuffer = await file.arrayBuffer();
28
+
const audioBuffer = await audioContext.decodeAudioData(arrayBuffer);
29
+
30
+
const sampleRate = audioBuffer.sampleRate;
31
+
const channelData = audioBuffer.getChannelData(0);
32
+
const fftSize = 2048;
33
+
const frequencyBinCount = fftSize / 2;
34
+
const hopSize = Math.floor(sampleRate / fps);
35
+
const totalFrames = Math.floor(channelData.length / hopSize);
36
+
37
+
// Pre-calculate volume levels for adaptive scaling
38
+
const volumeWindowSize = Math.floor(sampleRate * 2); // 2 second windows
39
+
const volumeLevels: number[] = [];
40
+
41
+
for (let i = 0; i < channelData.length; i += volumeWindowSize) {
42
+
let sum = 0;
43
+
const end = Math.min(i + volumeWindowSize, channelData.length);
44
+
for (let j = i; j < end; j++) {
45
+
sum += Math.abs(channelData[j]);
46
+
}
47
+
volumeLevels.push(sum / (end - i));
48
+
}
49
+
50
+
// Calculate overall average and max volume for normalization
51
+
const avgVolume =
52
+
volumeLevels.reduce((a, b) => a + b, 0) / volumeLevels.length;
53
+
const maxVolume = Math.max(...volumeLevels);
54
+
55
+
const allFrequencyData: Uint8Array[] = [];
56
+
let previousFrame: Float32Array | null = null;
57
+
const smoothingFactor = 0.45;
58
+
59
+
// Pre-compute sine/cosine tables for efficiency
60
+
const numBands = 128;
61
+
const cosTable: number[][] = [];
62
+
const sinTable: number[][] = [];
63
+
64
+
for (let i = 0; i < numBands; i++) {
65
+
cosTable[i] = [];
66
+
sinTable[i] = [];
67
+
const freqIndex = Math.pow(i / numBands, 1.5) * frequencyBinCount;
68
+
69
+
for (let j = 0; j < fftSize; j++) {
70
+
const angle = (2 * Math.PI * freqIndex * j) / fftSize;
71
+
cosTable[i][j] = Math.cos(angle);
72
+
sinTable[i][j] = Math.sin(angle);
73
+
}
74
+
}
75
+
76
+
for (let frame = 0; frame < totalFrames; frame++) {
77
+
const offset = frame * hopSize;
78
+
79
+
// Determine which volume window this frame is in
80
+
const volumeIndex = Math.floor(offset / volumeWindowSize);
81
+
const currentVolume =
82
+
volumeLevels[Math.min(volumeIndex, volumeLevels.length - 1)];
83
+
84
+
// Calculate adaptive boost: quieter sections get more boost
85
+
// Range from 1.5x to 8x boost depending on how quiet the section is
86
+
const volumeRatio = currentVolume / (avgVolume + 0.0001);
87
+
const adaptiveBoost = Math.pow(1 / (volumeRatio + 0.3), 0.6) * 4;
88
+
89
+
const slice = new Float32Array(fftSize);
90
+
91
+
// Apply Hann window
92
+
for (let i = 0; i < fftSize; i++) {
93
+
const idx = offset + i;
94
+
const sample = idx < channelData.length ? channelData[idx] : 0;
95
+
const window = 0.5 * (1 - Math.cos((2 * Math.PI * i) / fftSize));
96
+
slice[i] = sample * window;
97
+
}
98
+
99
+
// Calculate magnitudes for reduced frequency bands
100
+
const frequencyData = new Float32Array(numBands);
101
+
102
+
for (let i = 0; i < numBands; i++) {
103
+
let real = 0;
104
+
let imag = 0;
105
+
106
+
for (let j = 0; j < fftSize; j += 4) {
107
+
real += slice[j] * cosTable[i][j];
108
+
imag += slice[j] * sinTable[i][j];
109
+
}
110
+
111
+
const magnitude = Math.sqrt(real * real + imag * imag);
112
+
113
+
// Apply logarithmic scaling with adaptive boost
114
+
const boosted = Math.log(magnitude * 30 * adaptiveBoost + 1) * 20;
115
+
frequencyData[i] = boosted;
116
+
}
117
+
118
+
// Temporal smoothing
119
+
if (previousFrame) {
120
+
for (let i = 0; i < numBands; i++) {
121
+
frequencyData[i] =
122
+
smoothingFactor * previousFrame[i] +
123
+
(1 - smoothingFactor) * frequencyData[i];
124
+
}
125
+
}
126
+
127
+
// Spatial smoothing
128
+
const smoothed = new Float32Array(numBands);
129
+
for (let i = 0; i < numBands; i++) {
130
+
const prev = i > 0 ? frequencyData[i - 1] : frequencyData[i];
131
+
const next = i < numBands - 1 ? frequencyData[i + 1] : frequencyData[i];
132
+
smoothed[i] = (prev + frequencyData[i] * 2 + next) / 4;
133
+
}
134
+
135
+
// Expand back to full frequencyBinCount for circular visualization
136
+
const uint8Data = new Uint8Array(frequencyBinCount);
137
+
for (let i = 0; i < frequencyBinCount; i++) {
138
+
const bandIndex = (i / frequencyBinCount) * numBands;
139
+
const lower = Math.floor(bandIndex);
140
+
const upper = Math.min(numBands - 1, Math.ceil(bandIndex));
141
+
const t = bandIndex - lower;
142
+
143
+
const value = smoothed[lower] * (1 - t) + smoothed[upper] * t;
144
+
uint8Data[i] = Math.min(255, Math.max(0, Math.floor(value)));
145
+
}
146
+
147
+
allFrequencyData.push(uint8Data);
148
+
previousFrame = smoothed;
149
+
}
150
+
151
+
return allFrequencyData;
152
+
};
153
+
154
+
const drawPfp = (
155
+
ctx: OffscreenCanvasRenderingContext2D,
156
+
pfpImg: HTMLImageElement,
157
+
centerX: number,
158
+
centerY: number,
159
+
baseRadius: number,
160
+
) => {
161
+
const pfpSize = baseRadius * 1.9;
162
+
const pfpX = centerX - pfpSize / 2;
163
+
const pfpY = centerY - pfpSize / 2;
164
+
165
+
ctx.save();
166
+
ctx.beginPath();
167
+
ctx.arc(centerX, centerY, pfpSize / 2, 0, Math.PI * 2);
168
+
ctx.closePath();
169
+
ctx.clip();
170
+
ctx.drawImage(pfpImg, pfpX, pfpY, pfpSize, pfpSize);
171
+
ctx.restore();
172
+
};
173
+
174
+
/**
175
+
* Draws circular audio visualizer around center
176
+
* Inspired by circular spectrum visualizers: https://codepen.io/nfj525/pen/rVBaab
177
+
*/
178
+
const drawCircularVisualizer = (
179
+
ctx: OffscreenCanvasRenderingContext2D,
180
+
canvas: OffscreenCanvas,
181
+
frequencyData: Uint8Array,
182
+
pfpImg: HTMLImageElement | null,
183
+
) => {
184
+
const centerX = canvas.width / 2;
185
+
const centerY = canvas.height / 2;
186
+
const baseRadius = Math.min(canvas.width, canvas.height) * 0.15;
187
+
const maxBarHeight = baseRadius * 1.5;
188
+
189
+
// Draw profile picture in center if provided
190
+
if (pfpImg) drawPfp(ctx, pfpImg, centerX, centerY, baseRadius);
191
+
192
+
// Draw circular bars
193
+
const barCount = 128;
194
+
const angleStep = (Math.PI * 2) / barCount;
195
+
196
+
for (let i = 0; i < barCount; i++) {
197
+
const dataIndex = Math.floor((i / barCount) * frequencyData.length);
198
+
const value = frequencyData[dataIndex] / 255;
199
+
const barHeight = value * maxBarHeight;
200
+
201
+
const angle = i * angleStep - Math.PI / 2;
202
+
const innerX = centerX + Math.cos(angle) * baseRadius;
203
+
const innerY = centerY + Math.sin(angle) * baseRadius;
204
+
const outerX = centerX + Math.cos(angle) * (baseRadius + barHeight);
205
+
const outerY = centerY + Math.sin(angle) * (baseRadius + barHeight);
206
+
207
+
const hue = (i / barCount) * 360;
208
+
const brightness = 50 + value * 50;
209
+
ctx.strokeStyle = `hsl(${hue}, 100%, ${brightness}%)`;
210
+
ctx.lineWidth = 3;
211
+
212
+
ctx.beginPath();
213
+
ctx.moveTo(innerX, innerY);
214
+
ctx.lineTo(outerX, outerY);
215
+
ctx.stroke();
216
+
}
217
+
};
218
+
219
+
/**
220
+
* Draws flat horizontal audio visualizer bars
221
+
*/
222
+
const drawFlatVisualizer = (
223
+
ctx: OffscreenCanvasRenderingContext2D,
224
+
canvas: OffscreenCanvas,
225
+
frequencyData: Uint8Array,
226
+
) => {
227
+
const barCount = 64;
228
+
const barWidth = canvas.width / barCount;
229
+
const maxBarHeight = canvas.height * 0.8;
230
+
const baseY = canvas.height / 2;
231
+
232
+
for (let i = 0; i < barCount; i++) {
233
+
const dataIndex = Math.floor((i / barCount) * frequencyData.length);
234
+
const value = frequencyData[dataIndex] / 255;
235
+
const barHeight = (value * maxBarHeight) / 2;
236
+
237
+
const hue = (i / barCount) * 360;
238
+
const brightness = 50 + value * 50;
239
+
ctx.fillStyle = `hsl(${hue}, 100%, ${brightness}%)`;
240
+
241
+
// Draw mirrored bars (top and bottom)
242
+
ctx.fillRect(i * barWidth, baseY - barHeight, barWidth - 2, barHeight);
243
+
ctx.fillRect(i * barWidth, baseY, barWidth - 2, barHeight);
244
+
}
245
+
};
246
+
247
+
type RenderOptions = {
248
+
pfpUrl: string | undefined;
249
+
visualizer: boolean;
250
+
frameRate: number;
251
+
bgColor: string;
252
+
};
253
+
254
+
export const render = async (file: File, opts: RenderOptions) => {
255
+
// load pfp picture
256
+
let pfpImg: HTMLImageElement | null = null;
257
+
if (opts.pfpUrl) {
258
+
pfpImg = new Image();
259
+
pfpImg.crossOrigin = "anonymous";
260
+
await new Promise((resolve, reject) => {
261
+
pfpImg!.onload = resolve;
262
+
pfpImg!.onerror = reject;
263
+
pfpImg!.src = opts.pfpUrl!;
264
+
});
265
+
}
266
+
267
+
const input = new MediaInput({
268
+
source: new BlobSource(file),
269
+
formats: ALL_FORMATS,
270
+
});
271
+
272
+
const audioTrack = await input.getPrimaryAudioTrack();
273
+
if (!audioTrack) throw new Error("no audio track found.");
274
+
275
+
const duration = await input.computeDuration();
276
+
if (!duration) throw new Error("couldn't get audio duration.");
277
+
278
+
const videoCodec = await getFirstEncodableVideoCodec(
279
+
new Mp4OutputFormat().getSupportedVideoCodecs(),
280
+
{
281
+
width: renderCanvas.width,
282
+
height: renderCanvas.height,
283
+
},
284
+
);
285
+
if (!videoCodec)
286
+
throw new Error("your browser doesn't support video encoding.");
287
+
288
+
const ctx = renderCanvas.getContext("2d");
289
+
if (!ctx) throw new Error("couldn't get canvas context.");
290
+
291
+
const output = new MediaOutput({
292
+
format: new Mp4OutputFormat({
293
+
fastStart: "in-memory",
294
+
}),
295
+
target: new BufferTarget(),
296
+
});
297
+
const conversion = await Conversion.init({
298
+
input,
299
+
output,
300
+
});
301
+
const videoSource = new CanvasSource(renderCanvas, {
302
+
codec: "avc",
303
+
bitrate: QUALITY_MEDIUM,
304
+
});
305
+
output.addVideoTrack(videoSource);
306
+
await output.start();
307
+
308
+
const bgColor = opts.bgColor;
309
+
const drawBackground = () => {
310
+
ctx.fillStyle = bgColor;
311
+
ctx.fillRect(0, 0, renderCanvas.width, renderCanvas.height);
312
+
};
313
+
314
+
if (opts.visualizer) {
315
+
const freqData = await extractFrequencyData(file, opts.frameRate);
316
+
const frameDuration = 1 / opts.frameRate;
317
+
318
+
// Render animated frames
319
+
for (let i = 0; i < freqData.length; i++) {
320
+
const timestamp = i * frameDuration;
321
+
if (timestamp >= duration) break;
322
+
323
+
// bg
324
+
drawBackground();
325
+
326
+
if (pfpImg)
327
+
drawCircularVisualizer(ctx, renderCanvas, freqData[i], pfpImg);
328
+
else drawFlatVisualizer(ctx, renderCanvas, freqData[i]);
329
+
330
+
await videoSource.add(timestamp);
331
+
}
332
+
} else {
333
+
drawBackground();
334
+
335
+
if (pfpImg) {
336
+
const pfpSize = Math.min(renderCanvas.width, renderCanvas.height) * 0.5;
337
+
const pfpX = (renderCanvas.width - pfpSize) / 2;
338
+
const pfpY = (renderCanvas.height - pfpSize) / 2;
339
+
340
+
drawPfp(ctx, pfpImg, pfpX, pfpY, pfpSize);
341
+
}
342
+
343
+
await videoSource.add(0, duration);
344
+
}
345
+
346
+
videoSource.close();
347
+
await conversion.execute();
348
+
349
+
return new Blob([output.target.buffer!], { type: "video/mp4" });
350
+
};
+19
src/lib/settings.ts
+19
src/lib/settings.ts
···
1
+
export const setting = <T>(key: string) => {
2
+
return {
3
+
get: () => {
4
+
const value = localStorage.getItem(key);
5
+
return value !== null ? (JSON.parse(value) as T) : undefined;
6
+
},
7
+
set: (value: T | undefined) =>
8
+
value === undefined
9
+
? localStorage.removeItem(key)
10
+
: localStorage.setItem(key, JSON.stringify(value)),
11
+
};
12
+
};
13
+
export type Setting<T> = ReturnType<typeof setting<T>>;
14
+
15
+
export const showVisualizer = setting<boolean>("showVisualizer");
16
+
export const showProfilePicture = setting<boolean>("showProfilePicture");
17
+
export const useDominantColorAsBg = setting<boolean>("useDominantColorAsBg");
18
+
export const backgroundColor = setting<string>("backgroundColor");
19
+
export const frameRate = setting<number>("frameRate");
+98
src/lib/task.ts
+98
src/lib/task.ts
···
1
+
import { AtprotoDid } from "@atcute/lexicons/syntax";
2
+
import { ReactiveMap } from "@solid-primitives/map";
3
+
import {
4
+
backgroundColor,
5
+
frameRate,
6
+
showProfilePicture,
7
+
showVisualizer,
8
+
useDominantColorAsBg,
9
+
} from "./settings";
10
+
import { getSessionClient } from "./oauth";
11
+
import { is } from "@atcute/lexicons";
12
+
import { AppBskyActorProfile } from "@atcute/bluesky";
13
+
import { isBlob } from "@atcute/lexicons/interfaces";
14
+
import { render } from "./render";
15
+
import { FastAverageColor } from "fast-average-color";
16
+
import { toaster } from "~/components/Toaster";
17
+
import { parseColor } from "@ark-ui/solid";
18
+
19
+
export type TaskState = { file: File } & (
20
+
| { status: "processing" }
21
+
| { status: "error"; error: string }
22
+
| { status: "success"; result: Blob }
23
+
);
24
+
25
+
let _idCounter = 0;
26
+
const generateId = () => _idCounter++;
27
+
28
+
const fac = new FastAverageColor();
29
+
30
+
export const tasks = new ReactiveMap<number, TaskState>();
31
+
export const addTask = async (did: AtprotoDid | undefined, file: File) => {
32
+
const id = generateId();
33
+
tasks.set(id, { status: "processing", file });
34
+
try {
35
+
let pfpUrl: string | undefined = undefined;
36
+
console.log(did, showProfilePicture.get());
37
+
if (did && (showProfilePicture.get() ?? true)) {
38
+
const login = await getSessionClient(did);
39
+
const profileResult = await login.client.get(
40
+
"com.atproto.repo.getRecord",
41
+
{
42
+
params: {
43
+
collection: "app.bsky.actor.profile",
44
+
repo: did,
45
+
rkey: "self",
46
+
},
47
+
},
48
+
);
49
+
if (!profileResult.ok)
50
+
throw `failed to fetch profile: ${profileResult.data.error}`;
51
+
if (!profileResult.data.value) throw `profile not found`;
52
+
const profile = profileResult.data.value;
53
+
if (!is(AppBskyActorProfile.mainSchema, profile))
54
+
throw `invalid profile schema`;
55
+
if (profile.avatar && !isBlob(profile.avatar))
56
+
throw `invalid profile avatar`;
57
+
pfpUrl = profile.avatar
58
+
? `${login.pds!}/xrpc/com.atproto.sync.getBlob?did=${did}&cid=${profile.avatar.ref.$link}`
59
+
: undefined;
60
+
}
61
+
let bgColor = backgroundColor.get() ?? "#000000";
62
+
if (pfpUrl && (useDominantColorAsBg.get() ?? true)) {
63
+
try {
64
+
const dom = await fac.getColorAsync(pfpUrl);
65
+
const color = parseColor(dom.hex).toFormat("hsla");
66
+
const [h, s, l] = color
67
+
.getChannels()
68
+
.map((chan) => color.getChannelValue(chan));
69
+
bgColor = color.withChannelValue("lightness", l * 0.4).toString("hex");
70
+
} catch (error) {
71
+
console.error(error);
72
+
toaster.create({
73
+
title: "can't pick dominant color",
74
+
description: `error: ${error}`,
75
+
type: "error",
76
+
});
77
+
}
78
+
}
79
+
const result = await render(file, {
80
+
pfpUrl,
81
+
visualizer: showVisualizer.get() ?? true,
82
+
frameRate: frameRate.get() ?? 30,
83
+
bgColor,
84
+
});
85
+
tasks.set(id, {
86
+
file,
87
+
status: "success",
88
+
result,
89
+
});
90
+
} catch (error) {
91
+
console.error(error);
92
+
tasks.set(id, {
93
+
file,
94
+
status: "error",
95
+
error: `failed to process audio: ${error}`,
96
+
});
97
+
}
98
+
};
+9
src/vite-env.d.ts
+9
src/vite-env.d.ts
+26
tsconfig.json
+26
tsconfig.json
···
1
+
{
2
+
"include": ["src", "styled-system"],
3
+
"compilerOptions": {
4
+
// General
5
+
"jsx": "preserve",
6
+
"jsxImportSource": "solid-js",
7
+
"target": "ESNext",
8
+
9
+
// Modules
10
+
"allowSyntheticDefaultImports": true,
11
+
"esModuleInterop": true,
12
+
"isolatedModules": true,
13
+
"module": "ESNext",
14
+
"moduleResolution": "bundler",
15
+
"noEmit": true,
16
+
17
+
// Type Checking & Safety
18
+
"strict": true,
19
+
"types": ["vite/client"],
20
+
21
+
"baseUrl": ".",
22
+
"paths": {
23
+
"~/*": ["./src/*"]
24
+
}
25
+
}
26
+
}
+90
vite.config.ts
+90
vite.config.ts
···
1
+
import { defineConfig } from "vite";
2
+
import solidPlugin from "vite-plugin-solid";
3
+
import devtools from "solid-devtools/vite";
4
+
import tsconfigPaths from "vite-tsconfig-paths";
5
+
import oauthMetadata from "./src/lib/oauthMetadata.json";
6
+
7
+
export const makeOauthMetadata = (
8
+
client_id: string,
9
+
client_uri: string,
10
+
redirect_uri: string,
11
+
) => ({
12
+
...oauthMetadata,
13
+
client_id,
14
+
client_uri,
15
+
logo_uri: `${client_uri}/favicon.png`,
16
+
redirect_uris: [redirect_uri],
17
+
});
18
+
19
+
export default defineConfig({
20
+
plugins: [
21
+
{
22
+
name: "oauth-metadata",
23
+
config(_conf, { command }) {
24
+
if (command !== "build") {
25
+
process.env.VITE_CLIENT_URI = "http://localhost:3000";
26
+
const redirectUri = "http://127.0.0.1:3000";
27
+
process.env.VITE_OAUTH_REDIRECT_URL = redirectUri;
28
+
process.env.VITE_OAUTH_CLIENT_ID =
29
+
`http://localhost` +
30
+
`?redirect_uri=${encodeURIComponent(redirectUri)}` +
31
+
`&scope=${encodeURIComponent(oauthMetadata.scope)}`;
32
+
}
33
+
},
34
+
configureServer(server) {
35
+
server.middlewares.use((req, res, next) => {
36
+
if (req.headers.host?.startsWith("127.0.0.1")) {
37
+
const newUrl = `http://localhost:${req.headers.host.split(":")[1] || "3000"}${req.url}`;
38
+
res.writeHead(301, { Location: newUrl });
39
+
res.end();
40
+
return;
41
+
}
42
+
next();
43
+
});
44
+
server.middlewares.use((req, res, next) => {
45
+
if (req.url === "/oauth-client-metadata.json") {
46
+
res.setHeader("Content-Type", "application/json");
47
+
res.end(
48
+
JSON.stringify(
49
+
makeOauthMetadata(
50
+
process.env.VITE_OAUTH_CLIENT_ID!,
51
+
process.env.VITE_CLIENT_URI!,
52
+
process.env.VITE_OAUTH_REDIRECT_URL!,
53
+
),
54
+
null,
55
+
2,
56
+
),
57
+
);
58
+
return;
59
+
}
60
+
next();
61
+
});
62
+
},
63
+
generateBundle() {
64
+
this.emitFile({
65
+
type: "asset",
66
+
fileName: "oauth-client-metadata.json",
67
+
source: JSON.stringify(
68
+
makeOauthMetadata(
69
+
process.env.VITE_OAUTH_CLIENT_ID!,
70
+
process.env.VITE_CLIENT_URI!,
71
+
process.env.VITE_OAUTH_REDIRECT_URL!,
72
+
),
73
+
null,
74
+
2,
75
+
),
76
+
});
77
+
},
78
+
},
79
+
devtools(),
80
+
solidPlugin(),
81
+
tsconfigPaths({ root: "./" }),
82
+
],
83
+
server: {
84
+
host: "0.0.0.0",
85
+
port: 3000,
86
+
},
87
+
build: {
88
+
target: "esnext",
89
+
},
90
+
});