jbilcke-hf HF staff commited on
Commit
4d0b778
β€’
1 Parent(s): d249624

fix rotation of selfies

Browse files
client/bun.lockb CHANGED
Binary files a/client/bun.lockb and b/client/bun.lockb differ
 
client/package-lock.json ADDED
@@ -0,0 +1,1504 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "@aitube/facepoke",
3
+ "lockfileVersion": 3,
4
+ "requires": true,
5
+ "packages": {
6
+ "": {
7
+ "name": "@aitube/facepoke",
8
+ "dependencies": {
9
+ "@mediapipe/tasks-vision": "^0.10.16",
10
+ "@radix-ui/react-icons": "^1.3.0",
11
+ "@types/lodash": "^4.17.10",
12
+ "@types/react": "^18.3.9",
13
+ "@types/react-dom": "^18.3.0",
14
+ "@types/uuid": "^10.0.0",
15
+ "beautiful-react-hooks": "^5.0.2",
16
+ "class-variance-authority": "^0.7.0",
17
+ "clsx": "^2.1.1",
18
+ "lodash": "^4.17.21",
19
+ "lucide-react": "^0.446.0",
20
+ "react": "^18.3.1",
21
+ "react-dom": "^18.3.1",
22
+ "react-icons": "^5.3.0",
23
+ "tailwind-merge": "^2.5.2",
24
+ "tailwindcss": "^3.4.13",
25
+ "tailwindcss-animate": "^1.0.7",
26
+ "usehooks-ts": "^3.1.0",
27
+ "uuid": "^10.0.0",
28
+ "zustand": "^5.0.0-rc.2"
29
+ },
30
+ "devDependencies": {
31
+ "@types/bun": "latest"
32
+ },
33
+ "peerDependencies": {
34
+ "typescript": "^5.0.0"
35
+ }
36
+ },
37
+ "node_modules/@alloc/quick-lru": {
38
+ "version": "5.2.0",
39
+ "license": "MIT",
40
+ "engines": {
41
+ "node": ">=10"
42
+ },
43
+ "funding": {
44
+ "url": "https://github.com/sponsors/sindresorhus"
45
+ }
46
+ },
47
+ "node_modules/@isaacs/cliui": {
48
+ "version": "8.0.2",
49
+ "license": "ISC",
50
+ "dependencies": {
51
+ "string-width": "^5.1.2",
52
+ "string-width-cjs": "npm:string-width@^4.2.0",
53
+ "strip-ansi": "^7.0.1",
54
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
55
+ "wrap-ansi": "^8.1.0",
56
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
57
+ },
58
+ "engines": {
59
+ "node": ">=12"
60
+ }
61
+ },
62
+ "node_modules/@isaacs/cliui/node_modules/string-width-cjs": {
63
+ "name": "string-width",
64
+ "version": "4.2.3",
65
+ "license": "MIT",
66
+ "dependencies": {
67
+ "emoji-regex": "^8.0.0",
68
+ "is-fullwidth-code-point": "^3.0.0",
69
+ "strip-ansi": "^6.0.1"
70
+ },
71
+ "engines": {
72
+ "node": ">=8"
73
+ }
74
+ },
75
+ "node_modules/@isaacs/cliui/node_modules/string-width-cjs/node_modules/emoji-regex": {
76
+ "version": "8.0.0",
77
+ "license": "MIT"
78
+ },
79
+ "node_modules/@isaacs/cliui/node_modules/string-width-cjs/node_modules/strip-ansi": {
80
+ "version": "6.0.1",
81
+ "license": "MIT",
82
+ "dependencies": {
83
+ "ansi-regex": "^5.0.1"
84
+ },
85
+ "engines": {
86
+ "node": ">=8"
87
+ }
88
+ },
89
+ "node_modules/@isaacs/cliui/node_modules/string-width-cjs/node_modules/strip-ansi/node_modules/ansi-regex": {
90
+ "version": "5.0.1",
91
+ "license": "MIT",
92
+ "engines": {
93
+ "node": ">=8"
94
+ }
95
+ },
96
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi-cjs": {
97
+ "name": "strip-ansi",
98
+ "version": "6.0.1",
99
+ "license": "MIT",
100
+ "dependencies": {
101
+ "ansi-regex": "^5.0.1"
102
+ },
103
+ "engines": {
104
+ "node": ">=8"
105
+ }
106
+ },
107
+ "node_modules/@isaacs/cliui/node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
108
+ "version": "5.0.1",
109
+ "license": "MIT",
110
+ "engines": {
111
+ "node": ">=8"
112
+ }
113
+ },
114
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs": {
115
+ "name": "wrap-ansi",
116
+ "version": "7.0.0",
117
+ "license": "MIT",
118
+ "dependencies": {
119
+ "ansi-styles": "^4.0.0",
120
+ "string-width": "^4.1.0",
121
+ "strip-ansi": "^6.0.0"
122
+ },
123
+ "engines": {
124
+ "node": ">=10"
125
+ },
126
+ "funding": {
127
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
128
+ }
129
+ },
130
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {
131
+ "version": "4.3.0",
132
+ "license": "MIT",
133
+ "dependencies": {
134
+ "color-convert": "^2.0.1"
135
+ },
136
+ "engines": {
137
+ "node": ">=8"
138
+ },
139
+ "funding": {
140
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
141
+ }
142
+ },
143
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/string-width": {
144
+ "version": "4.2.3",
145
+ "license": "MIT",
146
+ "dependencies": {
147
+ "emoji-regex": "^8.0.0",
148
+ "is-fullwidth-code-point": "^3.0.0",
149
+ "strip-ansi": "^6.0.1"
150
+ },
151
+ "engines": {
152
+ "node": ">=8"
153
+ }
154
+ },
155
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/string-width/node_modules/emoji-regex": {
156
+ "version": "8.0.0",
157
+ "license": "MIT"
158
+ },
159
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
160
+ "version": "6.0.1",
161
+ "license": "MIT",
162
+ "dependencies": {
163
+ "ansi-regex": "^5.0.1"
164
+ },
165
+ "engines": {
166
+ "node": ">=8"
167
+ }
168
+ },
169
+ "node_modules/@isaacs/cliui/node_modules/wrap-ansi-cjs/node_modules/strip-ansi/node_modules/ansi-regex": {
170
+ "version": "5.0.1",
171
+ "license": "MIT",
172
+ "engines": {
173
+ "node": ">=8"
174
+ }
175
+ },
176
+ "node_modules/@jridgewell/gen-mapping": {
177
+ "version": "0.3.5",
178
+ "license": "MIT",
179
+ "dependencies": {
180
+ "@jridgewell/set-array": "^1.2.1",
181
+ "@jridgewell/sourcemap-codec": "^1.4.10",
182
+ "@jridgewell/trace-mapping": "^0.3.24"
183
+ },
184
+ "engines": {
185
+ "node": ">=6.0.0"
186
+ }
187
+ },
188
+ "node_modules/@jridgewell/resolve-uri": {
189
+ "version": "3.1.2",
190
+ "license": "MIT",
191
+ "engines": {
192
+ "node": ">=6.0.0"
193
+ }
194
+ },
195
+ "node_modules/@jridgewell/set-array": {
196
+ "version": "1.2.1",
197
+ "license": "MIT",
198
+ "engines": {
199
+ "node": ">=6.0.0"
200
+ }
201
+ },
202
+ "node_modules/@jridgewell/sourcemap-codec": {
203
+ "version": "1.5.0",
204
+ "license": "MIT"
205
+ },
206
+ "node_modules/@jridgewell/trace-mapping": {
207
+ "version": "0.3.25",
208
+ "license": "MIT",
209
+ "dependencies": {
210
+ "@jridgewell/resolve-uri": "^3.1.0",
211
+ "@jridgewell/sourcemap-codec": "^1.4.14"
212
+ }
213
+ },
214
+ "node_modules/@mediapipe/tasks-vision": {
215
+ "version": "0.10.16",
216
+ "license": "Apache-2.0"
217
+ },
218
+ "node_modules/@nodelib/fs.scandir": {
219
+ "version": "2.1.5",
220
+ "license": "MIT",
221
+ "dependencies": {
222
+ "@nodelib/fs.stat": "2.0.5",
223
+ "run-parallel": "^1.1.9"
224
+ },
225
+ "engines": {
226
+ "node": ">= 8"
227
+ }
228
+ },
229
+ "node_modules/@nodelib/fs.stat": {
230
+ "version": "2.0.5",
231
+ "license": "MIT",
232
+ "engines": {
233
+ "node": ">= 8"
234
+ }
235
+ },
236
+ "node_modules/@nodelib/fs.walk": {
237
+ "version": "1.2.8",
238
+ "license": "MIT",
239
+ "dependencies": {
240
+ "@nodelib/fs.scandir": "2.1.5",
241
+ "fastq": "^1.6.0"
242
+ },
243
+ "engines": {
244
+ "node": ">= 8"
245
+ }
246
+ },
247
+ "node_modules/@pkgjs/parseargs": {
248
+ "version": "0.11.0",
249
+ "license": "MIT",
250
+ "optional": true,
251
+ "engines": {
252
+ "node": ">=14"
253
+ }
254
+ },
255
+ "node_modules/@radix-ui/react-icons": {
256
+ "version": "1.3.0",
257
+ "license": "MIT",
258
+ "peerDependencies": {
259
+ "react": "^16.x || ^17.x || ^18.x"
260
+ }
261
+ },
262
+ "node_modules/@remix-run/router": {
263
+ "version": "1.19.2",
264
+ "license": "MIT",
265
+ "peer": true,
266
+ "engines": {
267
+ "node": ">=14.0.0"
268
+ }
269
+ },
270
+ "node_modules/@types/bun": {
271
+ "version": "1.1.11",
272
+ "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.1.11.tgz",
273
+ "integrity": "sha512-0N7D/H/8sbf9JMkaG5F3+I/cB4TlhKTkO9EskEWP8XDr8aVcDe4EywSnU4cnyZy6tar1dq70NeFNkqMEUigthw==",
274
+ "dev": true,
275
+ "dependencies": {
276
+ "bun-types": "1.1.30"
277
+ }
278
+ },
279
+ "node_modules/@types/lodash": {
280
+ "version": "4.17.10",
281
+ "license": "MIT"
282
+ },
283
+ "node_modules/@types/node": {
284
+ "version": "20.12.14",
285
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz",
286
+ "integrity": "sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==",
287
+ "dev": true,
288
+ "dependencies": {
289
+ "undici-types": "~5.26.4"
290
+ }
291
+ },
292
+ "node_modules/@types/prop-types": {
293
+ "version": "15.7.13",
294
+ "license": "MIT"
295
+ },
296
+ "node_modules/@types/react": {
297
+ "version": "18.3.9",
298
+ "license": "MIT",
299
+ "dependencies": {
300
+ "@types/prop-types": "*",
301
+ "csstype": "^3.0.2"
302
+ }
303
+ },
304
+ "node_modules/@types/react-dom": {
305
+ "version": "18.3.0",
306
+ "license": "MIT",
307
+ "dependencies": {
308
+ "@types/react": "*"
309
+ }
310
+ },
311
+ "node_modules/@types/uuid": {
312
+ "version": "10.0.0",
313
+ "license": "MIT"
314
+ },
315
+ "node_modules/@types/ws": {
316
+ "version": "8.5.12",
317
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
318
+ "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
319
+ "dev": true,
320
+ "dependencies": {
321
+ "@types/node": "*"
322
+ }
323
+ },
324
+ "node_modules/ansi-regex": {
325
+ "version": "6.1.0",
326
+ "license": "MIT",
327
+ "engines": {
328
+ "node": ">=12"
329
+ },
330
+ "funding": {
331
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
332
+ }
333
+ },
334
+ "node_modules/ansi-styles": {
335
+ "version": "6.2.1",
336
+ "license": "MIT",
337
+ "engines": {
338
+ "node": ">=12"
339
+ },
340
+ "funding": {
341
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
342
+ }
343
+ },
344
+ "node_modules/any-promise": {
345
+ "version": "1.3.0",
346
+ "license": "MIT"
347
+ },
348
+ "node_modules/anymatch": {
349
+ "version": "3.1.3",
350
+ "license": "ISC",
351
+ "dependencies": {
352
+ "normalize-path": "^3.0.0",
353
+ "picomatch": "^2.0.4"
354
+ },
355
+ "engines": {
356
+ "node": ">= 8"
357
+ }
358
+ },
359
+ "node_modules/arg": {
360
+ "version": "5.0.2",
361
+ "license": "MIT"
362
+ },
363
+ "node_modules/balanced-match": {
364
+ "version": "1.0.2",
365
+ "license": "MIT"
366
+ },
367
+ "node_modules/beautiful-react-hooks": {
368
+ "version": "5.0.2",
369
+ "license": "MIT",
370
+ "dependencies": {
371
+ "lodash.debounce": "^4.0.8",
372
+ "lodash.throttle": "^4.1.1"
373
+ },
374
+ "peerDependencies": {
375
+ "react": "^18.2.0",
376
+ "react-dom": "^18.2.0",
377
+ "react-router-dom": ">=5.0.0",
378
+ "rxjs": ">=7.0.0"
379
+ }
380
+ },
381
+ "node_modules/binary-extensions": {
382
+ "version": "2.3.0",
383
+ "license": "MIT",
384
+ "engines": {
385
+ "node": ">=8"
386
+ },
387
+ "funding": {
388
+ "url": "https://github.com/sponsors/sindresorhus"
389
+ }
390
+ },
391
+ "node_modules/brace-expansion": {
392
+ "version": "2.0.1",
393
+ "license": "MIT",
394
+ "dependencies": {
395
+ "balanced-match": "^1.0.0"
396
+ }
397
+ },
398
+ "node_modules/braces": {
399
+ "version": "3.0.3",
400
+ "license": "MIT",
401
+ "dependencies": {
402
+ "fill-range": "^7.1.1"
403
+ },
404
+ "engines": {
405
+ "node": ">=8"
406
+ }
407
+ },
408
+ "node_modules/bun-types": {
409
+ "version": "1.1.30",
410
+ "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.30.tgz",
411
+ "integrity": "sha512-mGh7NLisOXskBU62DxLS+/nwmLlCYHYAkCzdo4DZ9+fzrpP41hAdOqaN4DO6tQfenHb4pYb0/shw29k4/6I2yQ==",
412
+ "dev": true,
413
+ "dependencies": {
414
+ "@types/node": "~20.12.8",
415
+ "@types/ws": "~8.5.10"
416
+ }
417
+ },
418
+ "node_modules/camelcase-css": {
419
+ "version": "2.0.1",
420
+ "license": "MIT",
421
+ "engines": {
422
+ "node": ">= 6"
423
+ }
424
+ },
425
+ "node_modules/chokidar": {
426
+ "version": "3.6.0",
427
+ "license": "MIT",
428
+ "dependencies": {
429
+ "anymatch": "~3.1.2",
430
+ "braces": "~3.0.2",
431
+ "glob-parent": "~5.1.2",
432
+ "is-binary-path": "~2.1.0",
433
+ "is-glob": "~4.0.1",
434
+ "normalize-path": "~3.0.0",
435
+ "readdirp": "~3.6.0"
436
+ },
437
+ "engines": {
438
+ "node": ">= 8.10.0"
439
+ },
440
+ "funding": {
441
+ "url": "https://paulmillr.com/funding/"
442
+ },
443
+ "optionalDependencies": {
444
+ "fsevents": "~2.3.2"
445
+ }
446
+ },
447
+ "node_modules/chokidar/node_modules/glob-parent": {
448
+ "version": "5.1.2",
449
+ "license": "ISC",
450
+ "dependencies": {
451
+ "is-glob": "^4.0.1"
452
+ },
453
+ "engines": {
454
+ "node": ">= 6"
455
+ }
456
+ },
457
+ "node_modules/class-variance-authority": {
458
+ "version": "0.7.0",
459
+ "license": "Apache-2.0",
460
+ "dependencies": {
461
+ "clsx": "2.0.0"
462
+ },
463
+ "funding": {
464
+ "url": "https://joebell.co.uk"
465
+ }
466
+ },
467
+ "node_modules/class-variance-authority/node_modules/clsx": {
468
+ "version": "2.0.0",
469
+ "license": "MIT",
470
+ "engines": {
471
+ "node": ">=6"
472
+ }
473
+ },
474
+ "node_modules/clsx": {
475
+ "version": "2.1.1",
476
+ "license": "MIT",
477
+ "engines": {
478
+ "node": ">=6"
479
+ }
480
+ },
481
+ "node_modules/color-convert": {
482
+ "version": "2.0.1",
483
+ "license": "MIT",
484
+ "dependencies": {
485
+ "color-name": "~1.1.4"
486
+ },
487
+ "engines": {
488
+ "node": ">=7.0.0"
489
+ }
490
+ },
491
+ "node_modules/color-name": {
492
+ "version": "1.1.4",
493
+ "license": "MIT"
494
+ },
495
+ "node_modules/commander": {
496
+ "version": "4.1.1",
497
+ "license": "MIT",
498
+ "engines": {
499
+ "node": ">= 6"
500
+ }
501
+ },
502
+ "node_modules/cross-spawn": {
503
+ "version": "7.0.3",
504
+ "license": "MIT",
505
+ "dependencies": {
506
+ "path-key": "^3.1.0",
507
+ "shebang-command": "^2.0.0",
508
+ "which": "^2.0.1"
509
+ },
510
+ "engines": {
511
+ "node": ">= 8"
512
+ }
513
+ },
514
+ "node_modules/cssesc": {
515
+ "version": "3.0.0",
516
+ "license": "MIT",
517
+ "bin": {
518
+ "cssesc": "bin/cssesc"
519
+ },
520
+ "engines": {
521
+ "node": ">=4"
522
+ }
523
+ },
524
+ "node_modules/csstype": {
525
+ "version": "3.1.3",
526
+ "license": "MIT"
527
+ },
528
+ "node_modules/didyoumean": {
529
+ "version": "1.2.2",
530
+ "license": "Apache-2.0"
531
+ },
532
+ "node_modules/dlv": {
533
+ "version": "1.1.3",
534
+ "license": "MIT"
535
+ },
536
+ "node_modules/eastasianwidth": {
537
+ "version": "0.2.0",
538
+ "license": "MIT"
539
+ },
540
+ "node_modules/emoji-regex": {
541
+ "version": "9.2.2",
542
+ "license": "MIT"
543
+ },
544
+ "node_modules/fast-glob": {
545
+ "version": "3.3.2",
546
+ "license": "MIT",
547
+ "dependencies": {
548
+ "@nodelib/fs.stat": "^2.0.2",
549
+ "@nodelib/fs.walk": "^1.2.3",
550
+ "glob-parent": "^5.1.2",
551
+ "merge2": "^1.3.0",
552
+ "micromatch": "^4.0.4"
553
+ },
554
+ "engines": {
555
+ "node": ">=8.6.0"
556
+ }
557
+ },
558
+ "node_modules/fast-glob/node_modules/glob-parent": {
559
+ "version": "5.1.2",
560
+ "license": "ISC",
561
+ "dependencies": {
562
+ "is-glob": "^4.0.1"
563
+ },
564
+ "engines": {
565
+ "node": ">= 6"
566
+ }
567
+ },
568
+ "node_modules/fastq": {
569
+ "version": "1.17.1",
570
+ "license": "ISC",
571
+ "dependencies": {
572
+ "reusify": "^1.0.4"
573
+ }
574
+ },
575
+ "node_modules/fill-range": {
576
+ "version": "7.1.1",
577
+ "license": "MIT",
578
+ "dependencies": {
579
+ "to-regex-range": "^5.0.1"
580
+ },
581
+ "engines": {
582
+ "node": ">=8"
583
+ }
584
+ },
585
+ "node_modules/foreground-child": {
586
+ "version": "3.3.0",
587
+ "license": "ISC",
588
+ "dependencies": {
589
+ "cross-spawn": "^7.0.0",
590
+ "signal-exit": "^4.0.1"
591
+ },
592
+ "engines": {
593
+ "node": ">=14"
594
+ },
595
+ "funding": {
596
+ "url": "https://github.com/sponsors/isaacs"
597
+ }
598
+ },
599
+ "node_modules/fsevents": {
600
+ "version": "2.3.3",
601
+ "license": "MIT",
602
+ "optional": true,
603
+ "os": [
604
+ "darwin"
605
+ ],
606
+ "engines": {
607
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
608
+ }
609
+ },
610
+ "node_modules/function-bind": {
611
+ "version": "1.1.2",
612
+ "license": "MIT",
613
+ "funding": {
614
+ "url": "https://github.com/sponsors/ljharb"
615
+ }
616
+ },
617
+ "node_modules/glob": {
618
+ "version": "10.4.5",
619
+ "license": "ISC",
620
+ "dependencies": {
621
+ "foreground-child": "^3.1.0",
622
+ "jackspeak": "^3.1.2",
623
+ "minimatch": "^9.0.4",
624
+ "minipass": "^7.1.2",
625
+ "package-json-from-dist": "^1.0.0",
626
+ "path-scurry": "^1.11.1"
627
+ },
628
+ "bin": {
629
+ "glob": "dist/esm/bin.mjs"
630
+ },
631
+ "funding": {
632
+ "url": "https://github.com/sponsors/isaacs"
633
+ }
634
+ },
635
+ "node_modules/glob-parent": {
636
+ "version": "6.0.2",
637
+ "license": "ISC",
638
+ "dependencies": {
639
+ "is-glob": "^4.0.3"
640
+ },
641
+ "engines": {
642
+ "node": ">=10.13.0"
643
+ }
644
+ },
645
+ "node_modules/hasown": {
646
+ "version": "2.0.2",
647
+ "license": "MIT",
648
+ "dependencies": {
649
+ "function-bind": "^1.1.2"
650
+ },
651
+ "engines": {
652
+ "node": ">= 0.4"
653
+ }
654
+ },
655
+ "node_modules/is-binary-path": {
656
+ "version": "2.1.0",
657
+ "license": "MIT",
658
+ "dependencies": {
659
+ "binary-extensions": "^2.0.0"
660
+ },
661
+ "engines": {
662
+ "node": ">=8"
663
+ }
664
+ },
665
+ "node_modules/is-core-module": {
666
+ "version": "2.15.1",
667
+ "license": "MIT",
668
+ "dependencies": {
669
+ "hasown": "^2.0.2"
670
+ },
671
+ "engines": {
672
+ "node": ">= 0.4"
673
+ },
674
+ "funding": {
675
+ "url": "https://github.com/sponsors/ljharb"
676
+ }
677
+ },
678
+ "node_modules/is-extglob": {
679
+ "version": "2.1.1",
680
+ "license": "MIT",
681
+ "engines": {
682
+ "node": ">=0.10.0"
683
+ }
684
+ },
685
+ "node_modules/is-fullwidth-code-point": {
686
+ "version": "3.0.0",
687
+ "license": "MIT",
688
+ "engines": {
689
+ "node": ">=8"
690
+ }
691
+ },
692
+ "node_modules/is-glob": {
693
+ "version": "4.0.3",
694
+ "license": "MIT",
695
+ "dependencies": {
696
+ "is-extglob": "^2.1.1"
697
+ },
698
+ "engines": {
699
+ "node": ">=0.10.0"
700
+ }
701
+ },
702
+ "node_modules/is-number": {
703
+ "version": "7.0.0",
704
+ "license": "MIT",
705
+ "engines": {
706
+ "node": ">=0.12.0"
707
+ }
708
+ },
709
+ "node_modules/isexe": {
710
+ "version": "2.0.0",
711
+ "license": "ISC"
712
+ },
713
+ "node_modules/jackspeak": {
714
+ "version": "3.4.3",
715
+ "license": "BlueOak-1.0.0",
716
+ "dependencies": {
717
+ "@isaacs/cliui": "^8.0.2"
718
+ },
719
+ "funding": {
720
+ "url": "https://github.com/sponsors/isaacs"
721
+ },
722
+ "optionalDependencies": {
723
+ "@pkgjs/parseargs": "^0.11.0"
724
+ }
725
+ },
726
+ "node_modules/jiti": {
727
+ "version": "1.21.6",
728
+ "license": "MIT",
729
+ "bin": {
730
+ "jiti": "bin/jiti.js"
731
+ }
732
+ },
733
+ "node_modules/js-tokens": {
734
+ "version": "4.0.0",
735
+ "license": "MIT"
736
+ },
737
+ "node_modules/lilconfig": {
738
+ "version": "2.1.0",
739
+ "license": "MIT",
740
+ "engines": {
741
+ "node": ">=10"
742
+ }
743
+ },
744
+ "node_modules/lines-and-columns": {
745
+ "version": "1.2.4",
746
+ "license": "MIT"
747
+ },
748
+ "node_modules/lodash": {
749
+ "version": "4.17.21",
750
+ "license": "MIT"
751
+ },
752
+ "node_modules/lodash.debounce": {
753
+ "version": "4.0.8",
754
+ "license": "MIT"
755
+ },
756
+ "node_modules/lodash.throttle": {
757
+ "version": "4.1.1",
758
+ "license": "MIT"
759
+ },
760
+ "node_modules/loose-envify": {
761
+ "version": "1.4.0",
762
+ "license": "MIT",
763
+ "dependencies": {
764
+ "js-tokens": "^3.0.0 || ^4.0.0"
765
+ },
766
+ "bin": {
767
+ "loose-envify": "cli.js"
768
+ }
769
+ },
770
+ "node_modules/lru-cache": {
771
+ "version": "10.4.3",
772
+ "license": "ISC"
773
+ },
774
+ "node_modules/lucide-react": {
775
+ "version": "0.446.0",
776
+ "license": "ISC",
777
+ "peerDependencies": {
778
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc"
779
+ }
780
+ },
781
+ "node_modules/merge2": {
782
+ "version": "1.4.1",
783
+ "license": "MIT",
784
+ "engines": {
785
+ "node": ">= 8"
786
+ }
787
+ },
788
+ "node_modules/micromatch": {
789
+ "version": "4.0.8",
790
+ "license": "MIT",
791
+ "dependencies": {
792
+ "braces": "^3.0.3",
793
+ "picomatch": "^2.3.1"
794
+ },
795
+ "engines": {
796
+ "node": ">=8.6"
797
+ }
798
+ },
799
+ "node_modules/minimatch": {
800
+ "version": "9.0.5",
801
+ "license": "ISC",
802
+ "dependencies": {
803
+ "brace-expansion": "^2.0.1"
804
+ },
805
+ "engines": {
806
+ "node": ">=16 || 14 >=14.17"
807
+ },
808
+ "funding": {
809
+ "url": "https://github.com/sponsors/isaacs"
810
+ }
811
+ },
812
+ "node_modules/minipass": {
813
+ "version": "7.1.2",
814
+ "license": "ISC",
815
+ "engines": {
816
+ "node": ">=16 || 14 >=14.17"
817
+ }
818
+ },
819
+ "node_modules/mz": {
820
+ "version": "2.7.0",
821
+ "license": "MIT",
822
+ "dependencies": {
823
+ "any-promise": "^1.0.0",
824
+ "object-assign": "^4.0.1",
825
+ "thenify-all": "^1.0.0"
826
+ }
827
+ },
828
+ "node_modules/nanoid": {
829
+ "version": "3.3.7",
830
+ "funding": [
831
+ {
832
+ "type": "github",
833
+ "url": "https://github.com/sponsors/ai"
834
+ }
835
+ ],
836
+ "license": "MIT",
837
+ "bin": {
838
+ "nanoid": "bin/nanoid.cjs"
839
+ },
840
+ "engines": {
841
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
842
+ }
843
+ },
844
+ "node_modules/normalize-path": {
845
+ "version": "3.0.0",
846
+ "license": "MIT",
847
+ "engines": {
848
+ "node": ">=0.10.0"
849
+ }
850
+ },
851
+ "node_modules/object-assign": {
852
+ "version": "4.1.1",
853
+ "license": "MIT",
854
+ "engines": {
855
+ "node": ">=0.10.0"
856
+ }
857
+ },
858
+ "node_modules/object-hash": {
859
+ "version": "3.0.0",
860
+ "license": "MIT",
861
+ "engines": {
862
+ "node": ">= 6"
863
+ }
864
+ },
865
+ "node_modules/package-json-from-dist": {
866
+ "version": "1.0.0",
867
+ "license": "BlueOak-1.0.0"
868
+ },
869
+ "node_modules/path-key": {
870
+ "version": "3.1.1",
871
+ "license": "MIT",
872
+ "engines": {
873
+ "node": ">=8"
874
+ }
875
+ },
876
+ "node_modules/path-parse": {
877
+ "version": "1.0.7",
878
+ "license": "MIT"
879
+ },
880
+ "node_modules/path-scurry": {
881
+ "version": "1.11.1",
882
+ "license": "BlueOak-1.0.0",
883
+ "dependencies": {
884
+ "lru-cache": "^10.2.0",
885
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
886
+ },
887
+ "engines": {
888
+ "node": ">=16 || 14 >=14.18"
889
+ },
890
+ "funding": {
891
+ "url": "https://github.com/sponsors/isaacs"
892
+ }
893
+ },
894
+ "node_modules/picocolors": {
895
+ "version": "1.1.0",
896
+ "license": "ISC"
897
+ },
898
+ "node_modules/picomatch": {
899
+ "version": "2.3.1",
900
+ "license": "MIT",
901
+ "engines": {
902
+ "node": ">=8.6"
903
+ },
904
+ "funding": {
905
+ "url": "https://github.com/sponsors/jonschlinkert"
906
+ }
907
+ },
908
+ "node_modules/pify": {
909
+ "version": "2.3.0",
910
+ "license": "MIT",
911
+ "engines": {
912
+ "node": ">=0.10.0"
913
+ }
914
+ },
915
+ "node_modules/pirates": {
916
+ "version": "4.0.6",
917
+ "license": "MIT",
918
+ "engines": {
919
+ "node": ">= 6"
920
+ }
921
+ },
922
+ "node_modules/postcss": {
923
+ "version": "8.4.47",
924
+ "funding": [
925
+ {
926
+ "type": "opencollective",
927
+ "url": "https://opencollective.com/postcss/"
928
+ },
929
+ {
930
+ "type": "tidelift",
931
+ "url": "https://tidelift.com/funding/github/npm/postcss"
932
+ },
933
+ {
934
+ "type": "github",
935
+ "url": "https://github.com/sponsors/ai"
936
+ }
937
+ ],
938
+ "license": "MIT",
939
+ "dependencies": {
940
+ "nanoid": "^3.3.7",
941
+ "picocolors": "^1.1.0",
942
+ "source-map-js": "^1.2.1"
943
+ },
944
+ "engines": {
945
+ "node": "^10 || ^12 || >=14"
946
+ }
947
+ },
948
+ "node_modules/postcss-import": {
949
+ "version": "15.1.0",
950
+ "license": "MIT",
951
+ "dependencies": {
952
+ "postcss-value-parser": "^4.0.0",
953
+ "read-cache": "^1.0.0",
954
+ "resolve": "^1.1.7"
955
+ },
956
+ "engines": {
957
+ "node": ">=14.0.0"
958
+ },
959
+ "peerDependencies": {
960
+ "postcss": "^8.0.0"
961
+ }
962
+ },
963
+ "node_modules/postcss-js": {
964
+ "version": "4.0.1",
965
+ "license": "MIT",
966
+ "dependencies": {
967
+ "camelcase-css": "^2.0.1"
968
+ },
969
+ "engines": {
970
+ "node": "^12 || ^14 || >= 16"
971
+ },
972
+ "funding": {
973
+ "type": "opencollective",
974
+ "url": "https://opencollective.com/postcss/"
975
+ },
976
+ "peerDependencies": {
977
+ "postcss": "^8.4.21"
978
+ }
979
+ },
980
+ "node_modules/postcss-load-config": {
981
+ "version": "4.0.2",
982
+ "funding": [
983
+ {
984
+ "type": "opencollective",
985
+ "url": "https://opencollective.com/postcss/"
986
+ },
987
+ {
988
+ "type": "github",
989
+ "url": "https://github.com/sponsors/ai"
990
+ }
991
+ ],
992
+ "license": "MIT",
993
+ "dependencies": {
994
+ "lilconfig": "^3.0.0",
995
+ "yaml": "^2.3.4"
996
+ },
997
+ "engines": {
998
+ "node": ">= 14"
999
+ },
1000
+ "peerDependencies": {
1001
+ "postcss": ">=8.0.9",
1002
+ "ts-node": ">=9.0.0"
1003
+ },
1004
+ "peerDependenciesMeta": {
1005
+ "postcss": {
1006
+ "optional": true
1007
+ },
1008
+ "ts-node": {
1009
+ "optional": true
1010
+ }
1011
+ }
1012
+ },
1013
+ "node_modules/postcss-load-config/node_modules/lilconfig": {
1014
+ "version": "3.1.2",
1015
+ "license": "MIT",
1016
+ "engines": {
1017
+ "node": ">=14"
1018
+ },
1019
+ "funding": {
1020
+ "url": "https://github.com/sponsors/antonk52"
1021
+ }
1022
+ },
1023
+ "node_modules/postcss-nested": {
1024
+ "version": "6.2.0",
1025
+ "funding": [
1026
+ {
1027
+ "type": "opencollective",
1028
+ "url": "https://opencollective.com/postcss/"
1029
+ },
1030
+ {
1031
+ "type": "github",
1032
+ "url": "https://github.com/sponsors/ai"
1033
+ }
1034
+ ],
1035
+ "license": "MIT",
1036
+ "dependencies": {
1037
+ "postcss-selector-parser": "^6.1.1"
1038
+ },
1039
+ "engines": {
1040
+ "node": ">=12.0"
1041
+ },
1042
+ "peerDependencies": {
1043
+ "postcss": "^8.2.14"
1044
+ }
1045
+ },
1046
+ "node_modules/postcss-selector-parser": {
1047
+ "version": "6.1.2",
1048
+ "license": "MIT",
1049
+ "dependencies": {
1050
+ "cssesc": "^3.0.0",
1051
+ "util-deprecate": "^1.0.2"
1052
+ },
1053
+ "engines": {
1054
+ "node": ">=4"
1055
+ }
1056
+ },
1057
+ "node_modules/postcss-value-parser": {
1058
+ "version": "4.2.0",
1059
+ "license": "MIT"
1060
+ },
1061
+ "node_modules/queue-microtask": {
1062
+ "version": "1.2.3",
1063
+ "funding": [
1064
+ {
1065
+ "type": "github",
1066
+ "url": "https://github.com/sponsors/feross"
1067
+ },
1068
+ {
1069
+ "type": "patreon",
1070
+ "url": "https://www.patreon.com/feross"
1071
+ },
1072
+ {
1073
+ "type": "consulting",
1074
+ "url": "https://feross.org/support"
1075
+ }
1076
+ ],
1077
+ "license": "MIT"
1078
+ },
1079
+ "node_modules/react": {
1080
+ "version": "18.3.1",
1081
+ "license": "MIT",
1082
+ "dependencies": {
1083
+ "loose-envify": "^1.1.0"
1084
+ },
1085
+ "engines": {
1086
+ "node": ">=0.10.0"
1087
+ }
1088
+ },
1089
+ "node_modules/react-dom": {
1090
+ "version": "18.3.1",
1091
+ "license": "MIT",
1092
+ "dependencies": {
1093
+ "loose-envify": "^1.1.0",
1094
+ "scheduler": "^0.23.2"
1095
+ },
1096
+ "peerDependencies": {
1097
+ "react": "^18.3.1"
1098
+ }
1099
+ },
1100
+ "node_modules/react-icons": {
1101
+ "version": "5.3.0",
1102
+ "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.3.0.tgz",
1103
+ "integrity": "sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==",
1104
+ "peerDependencies": {
1105
+ "react": "*"
1106
+ }
1107
+ },
1108
+ "node_modules/react-router": {
1109
+ "version": "6.26.2",
1110
+ "license": "MIT",
1111
+ "peer": true,
1112
+ "dependencies": {
1113
+ "@remix-run/router": "1.19.2"
1114
+ },
1115
+ "engines": {
1116
+ "node": ">=14.0.0"
1117
+ },
1118
+ "peerDependencies": {
1119
+ "react": ">=16.8"
1120
+ }
1121
+ },
1122
+ "node_modules/react-router-dom": {
1123
+ "version": "6.26.2",
1124
+ "license": "MIT",
1125
+ "peer": true,
1126
+ "dependencies": {
1127
+ "@remix-run/router": "1.19.2",
1128
+ "react-router": "6.26.2"
1129
+ },
1130
+ "engines": {
1131
+ "node": ">=14.0.0"
1132
+ },
1133
+ "peerDependencies": {
1134
+ "react": ">=16.8",
1135
+ "react-dom": ">=16.8"
1136
+ }
1137
+ },
1138
+ "node_modules/read-cache": {
1139
+ "version": "1.0.0",
1140
+ "license": "MIT",
1141
+ "dependencies": {
1142
+ "pify": "^2.3.0"
1143
+ }
1144
+ },
1145
+ "node_modules/readdirp": {
1146
+ "version": "3.6.0",
1147
+ "license": "MIT",
1148
+ "dependencies": {
1149
+ "picomatch": "^2.2.1"
1150
+ },
1151
+ "engines": {
1152
+ "node": ">=8.10.0"
1153
+ }
1154
+ },
1155
+ "node_modules/resolve": {
1156
+ "version": "1.22.8",
1157
+ "license": "MIT",
1158
+ "dependencies": {
1159
+ "is-core-module": "^2.13.0",
1160
+ "path-parse": "^1.0.7",
1161
+ "supports-preserve-symlinks-flag": "^1.0.0"
1162
+ },
1163
+ "bin": {
1164
+ "resolve": "bin/resolve"
1165
+ },
1166
+ "funding": {
1167
+ "url": "https://github.com/sponsors/ljharb"
1168
+ }
1169
+ },
1170
+ "node_modules/reusify": {
1171
+ "version": "1.0.4",
1172
+ "license": "MIT",
1173
+ "engines": {
1174
+ "iojs": ">=1.0.0",
1175
+ "node": ">=0.10.0"
1176
+ }
1177
+ },
1178
+ "node_modules/run-parallel": {
1179
+ "version": "1.2.0",
1180
+ "funding": [
1181
+ {
1182
+ "type": "github",
1183
+ "url": "https://github.com/sponsors/feross"
1184
+ },
1185
+ {
1186
+ "type": "patreon",
1187
+ "url": "https://www.patreon.com/feross"
1188
+ },
1189
+ {
1190
+ "type": "consulting",
1191
+ "url": "https://feross.org/support"
1192
+ }
1193
+ ],
1194
+ "license": "MIT",
1195
+ "dependencies": {
1196
+ "queue-microtask": "^1.2.2"
1197
+ }
1198
+ },
1199
+ "node_modules/rxjs": {
1200
+ "version": "7.8.1",
1201
+ "license": "Apache-2.0",
1202
+ "peer": true,
1203
+ "dependencies": {
1204
+ "tslib": "^2.1.0"
1205
+ }
1206
+ },
1207
+ "node_modules/scheduler": {
1208
+ "version": "0.23.2",
1209
+ "license": "MIT",
1210
+ "dependencies": {
1211
+ "loose-envify": "^1.1.0"
1212
+ }
1213
+ },
1214
+ "node_modules/shebang-command": {
1215
+ "version": "2.0.0",
1216
+ "license": "MIT",
1217
+ "dependencies": {
1218
+ "shebang-regex": "^3.0.0"
1219
+ },
1220
+ "engines": {
1221
+ "node": ">=8"
1222
+ }
1223
+ },
1224
+ "node_modules/shebang-regex": {
1225
+ "version": "3.0.0",
1226
+ "license": "MIT",
1227
+ "engines": {
1228
+ "node": ">=8"
1229
+ }
1230
+ },
1231
+ "node_modules/signal-exit": {
1232
+ "version": "4.1.0",
1233
+ "license": "ISC",
1234
+ "engines": {
1235
+ "node": ">=14"
1236
+ },
1237
+ "funding": {
1238
+ "url": "https://github.com/sponsors/isaacs"
1239
+ }
1240
+ },
1241
+ "node_modules/source-map-js": {
1242
+ "version": "1.2.1",
1243
+ "license": "BSD-3-Clause",
1244
+ "engines": {
1245
+ "node": ">=0.10.0"
1246
+ }
1247
+ },
1248
+ "node_modules/string-width": {
1249
+ "version": "5.1.2",
1250
+ "license": "MIT",
1251
+ "dependencies": {
1252
+ "eastasianwidth": "^0.2.0",
1253
+ "emoji-regex": "^9.2.2",
1254
+ "strip-ansi": "^7.0.1"
1255
+ },
1256
+ "engines": {
1257
+ "node": ">=12"
1258
+ },
1259
+ "funding": {
1260
+ "url": "https://github.com/sponsors/sindresorhus"
1261
+ }
1262
+ },
1263
+ "node_modules/strip-ansi": {
1264
+ "version": "7.1.0",
1265
+ "license": "MIT",
1266
+ "dependencies": {
1267
+ "ansi-regex": "^6.0.1"
1268
+ },
1269
+ "engines": {
1270
+ "node": ">=12"
1271
+ },
1272
+ "funding": {
1273
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
1274
+ }
1275
+ },
1276
+ "node_modules/sucrase": {
1277
+ "version": "3.35.0",
1278
+ "license": "MIT",
1279
+ "dependencies": {
1280
+ "@jridgewell/gen-mapping": "^0.3.2",
1281
+ "commander": "^4.0.0",
1282
+ "glob": "^10.3.10",
1283
+ "lines-and-columns": "^1.1.6",
1284
+ "mz": "^2.7.0",
1285
+ "pirates": "^4.0.1",
1286
+ "ts-interface-checker": "^0.1.9"
1287
+ },
1288
+ "bin": {
1289
+ "sucrase": "bin/sucrase",
1290
+ "sucrase-node": "bin/sucrase-node"
1291
+ },
1292
+ "engines": {
1293
+ "node": ">=16 || 14 >=14.17"
1294
+ }
1295
+ },
1296
+ "node_modules/supports-preserve-symlinks-flag": {
1297
+ "version": "1.0.0",
1298
+ "license": "MIT",
1299
+ "engines": {
1300
+ "node": ">= 0.4"
1301
+ },
1302
+ "funding": {
1303
+ "url": "https://github.com/sponsors/ljharb"
1304
+ }
1305
+ },
1306
+ "node_modules/tailwind-merge": {
1307
+ "version": "2.5.2",
1308
+ "license": "MIT",
1309
+ "funding": {
1310
+ "type": "github",
1311
+ "url": "https://github.com/sponsors/dcastil"
1312
+ }
1313
+ },
1314
+ "node_modules/tailwindcss": {
1315
+ "version": "3.4.13",
1316
+ "license": "MIT",
1317
+ "dependencies": {
1318
+ "@alloc/quick-lru": "^5.2.0",
1319
+ "arg": "^5.0.2",
1320
+ "chokidar": "^3.5.3",
1321
+ "didyoumean": "^1.2.2",
1322
+ "dlv": "^1.1.3",
1323
+ "fast-glob": "^3.3.0",
1324
+ "glob-parent": "^6.0.2",
1325
+ "is-glob": "^4.0.3",
1326
+ "jiti": "^1.21.0",
1327
+ "lilconfig": "^2.1.0",
1328
+ "micromatch": "^4.0.5",
1329
+ "normalize-path": "^3.0.0",
1330
+ "object-hash": "^3.0.0",
1331
+ "picocolors": "^1.0.0",
1332
+ "postcss": "^8.4.23",
1333
+ "postcss-import": "^15.1.0",
1334
+ "postcss-js": "^4.0.1",
1335
+ "postcss-load-config": "^4.0.1",
1336
+ "postcss-nested": "^6.0.1",
1337
+ "postcss-selector-parser": "^6.0.11",
1338
+ "resolve": "^1.22.2",
1339
+ "sucrase": "^3.32.0"
1340
+ },
1341
+ "bin": {
1342
+ "tailwind": "lib/cli.js",
1343
+ "tailwindcss": "lib/cli.js"
1344
+ },
1345
+ "engines": {
1346
+ "node": ">=14.0.0"
1347
+ }
1348
+ },
1349
+ "node_modules/tailwindcss-animate": {
1350
+ "version": "1.0.7",
1351
+ "license": "MIT",
1352
+ "peerDependencies": {
1353
+ "tailwindcss": ">=3.0.0 || insiders"
1354
+ }
1355
+ },
1356
+ "node_modules/thenify": {
1357
+ "version": "3.3.1",
1358
+ "license": "MIT",
1359
+ "dependencies": {
1360
+ "any-promise": "^1.0.0"
1361
+ }
1362
+ },
1363
+ "node_modules/thenify-all": {
1364
+ "version": "1.6.0",
1365
+ "license": "MIT",
1366
+ "dependencies": {
1367
+ "thenify": ">= 3.1.0 < 4"
1368
+ },
1369
+ "engines": {
1370
+ "node": ">=0.8"
1371
+ }
1372
+ },
1373
+ "node_modules/to-regex-range": {
1374
+ "version": "5.0.1",
1375
+ "license": "MIT",
1376
+ "dependencies": {
1377
+ "is-number": "^7.0.0"
1378
+ },
1379
+ "engines": {
1380
+ "node": ">=8.0"
1381
+ }
1382
+ },
1383
+ "node_modules/ts-interface-checker": {
1384
+ "version": "0.1.13",
1385
+ "license": "Apache-2.0"
1386
+ },
1387
+ "node_modules/tslib": {
1388
+ "version": "2.7.0",
1389
+ "license": "0BSD",
1390
+ "peer": true
1391
+ },
1392
+ "node_modules/typescript": {
1393
+ "version": "5.6.2",
1394
+ "license": "Apache-2.0",
1395
+ "peer": true,
1396
+ "bin": {
1397
+ "tsc": "bin/tsc",
1398
+ "tsserver": "bin/tsserver"
1399
+ },
1400
+ "engines": {
1401
+ "node": ">=14.17"
1402
+ }
1403
+ },
1404
+ "node_modules/undici-types": {
1405
+ "version": "5.26.5",
1406
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
1407
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
1408
+ "dev": true
1409
+ },
1410
+ "node_modules/usehooks-ts": {
1411
+ "version": "3.1.0",
1412
+ "license": "MIT",
1413
+ "dependencies": {
1414
+ "lodash.debounce": "^4.0.8"
1415
+ },
1416
+ "engines": {
1417
+ "node": ">=16.15.0"
1418
+ },
1419
+ "peerDependencies": {
1420
+ "react": "^16.8.0 || ^17 || ^18"
1421
+ }
1422
+ },
1423
+ "node_modules/util-deprecate": {
1424
+ "version": "1.0.2",
1425
+ "license": "MIT"
1426
+ },
1427
+ "node_modules/uuid": {
1428
+ "version": "10.0.0",
1429
+ "funding": [
1430
+ "https://github.com/sponsors/broofa",
1431
+ "https://github.com/sponsors/ctavan"
1432
+ ],
1433
+ "license": "MIT",
1434
+ "bin": {
1435
+ "uuid": "dist/bin/uuid"
1436
+ }
1437
+ },
1438
+ "node_modules/which": {
1439
+ "version": "2.0.2",
1440
+ "license": "ISC",
1441
+ "dependencies": {
1442
+ "isexe": "^2.0.0"
1443
+ },
1444
+ "bin": {
1445
+ "node-which": "bin/node-which"
1446
+ },
1447
+ "engines": {
1448
+ "node": ">= 8"
1449
+ }
1450
+ },
1451
+ "node_modules/wrap-ansi": {
1452
+ "version": "8.1.0",
1453
+ "license": "MIT",
1454
+ "dependencies": {
1455
+ "ansi-styles": "^6.1.0",
1456
+ "string-width": "^5.0.1",
1457
+ "strip-ansi": "^7.0.1"
1458
+ },
1459
+ "engines": {
1460
+ "node": ">=12"
1461
+ },
1462
+ "funding": {
1463
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
1464
+ }
1465
+ },
1466
+ "node_modules/yaml": {
1467
+ "version": "2.5.1",
1468
+ "license": "ISC",
1469
+ "bin": {
1470
+ "yaml": "bin.mjs"
1471
+ },
1472
+ "engines": {
1473
+ "node": ">= 14"
1474
+ }
1475
+ },
1476
+ "node_modules/zustand": {
1477
+ "version": "5.0.0-rc.2",
1478
+ "license": "MIT",
1479
+ "engines": {
1480
+ "node": ">=12.20.0"
1481
+ },
1482
+ "peerDependencies": {
1483
+ "@types/react": ">=18.0.0",
1484
+ "immer": ">=9.0.6",
1485
+ "react": ">=18.0.0",
1486
+ "use-sync-external-store": ">=1.2.0"
1487
+ },
1488
+ "peerDependenciesMeta": {
1489
+ "@types/react": {
1490
+ "optional": true
1491
+ },
1492
+ "immer": {
1493
+ "optional": true
1494
+ },
1495
+ "react": {
1496
+ "optional": true
1497
+ },
1498
+ "use-sync-external-store": {
1499
+ "optional": true
1500
+ }
1501
+ }
1502
+ }
1503
+ }
1504
+ }
client/package.json CHANGED
@@ -25,6 +25,7 @@
25
  "lucide-react": "^0.446.0",
26
  "react": "^18.3.1",
27
  "react-dom": "^18.3.1",
 
28
  "tailwind-merge": "^2.5.2",
29
  "tailwindcss": "^3.4.13",
30
  "tailwindcss-animate": "^1.0.7",
 
25
  "lucide-react": "^0.446.0",
26
  "react": "^18.3.1",
27
  "react-dom": "^18.3.1",
28
+ "react-icons": "^5.3.0",
29
  "tailwind-merge": "^2.5.2",
30
  "tailwindcss": "^3.4.13",
31
  "tailwindcss-animate": "^1.0.7",
client/src/app.tsx CHANGED
@@ -1,5 +1,6 @@
1
  import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
2
- import { Download } from 'lucide-react';
 
3
 
4
  import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
5
  import { truncateFileName } from './lib/utils';
@@ -118,8 +119,8 @@ export function App() {
118
  isMediaPipeReady ? 'bg-slate-600 hover:bg-slate-500' : 'bg-slate-500 cursor-not-allowed'
119
  } focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-slate-500 shadow-xl`}
120
  >
121
- <Spinner />
122
- {imageFile ? truncateFileName(imageFile.name, 32) : (isMediaPipeReady ? 'Choose a portrait photo' : 'Initializing...')}
123
  </label>
124
  </div>
125
  {previewImage && (
@@ -127,7 +128,7 @@ export function App() {
127
  onClick={handleDownload}
128
  className="inline-flex items-center px-3 h-10 border border-transparent text-sm font-medium rounded-md text-white bg-zinc-600 hover:bg-zinc-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-zinc-500 shadow-xl"
129
  >
130
- <Download className="w-4 h-4 mr-2" />
131
  Download
132
  </button>
133
  )}
 
1
  import React, { useState, useEffect, useRef, useCallback, useMemo } from 'react';
2
+ import { FiDownload } from 'react-icons/fi';
3
+ import { PiImageSquare } from 'react-icons/pi';
4
 
5
  import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
6
  import { truncateFileName } from './lib/utils';
 
119
  isMediaPipeReady ? 'bg-slate-600 hover:bg-slate-500' : 'bg-slate-500 cursor-not-allowed'
120
  } focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-slate-500 shadow-xl`}
121
  >
122
+ <PiImageSquare className="w-6 h-6 mr-2" />
123
+ {imageFile ? `Replace` : (isMediaPipeReady ? 'Choose a portrait photo' : 'Initializing...')}
124
  </label>
125
  </div>
126
  {previewImage && (
 
128
  onClick={handleDownload}
129
  className="inline-flex items-center px-3 h-10 border border-transparent text-sm font-medium rounded-md text-white bg-zinc-600 hover:bg-zinc-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-zinc-500 shadow-xl"
130
  >
131
+ <FiDownload className="w-5 h-5 mr-2" />
132
  Download
133
  </button>
134
  )}
client/src/hooks/useMainStore.ts CHANGED
@@ -432,5 +432,5 @@ export const useMainStore = create<ImageState>((set, get) => ({
432
  // console.error('Error modifying image:', error);
433
  setError('Failed to modify image');
434
  }
435
- }
436
  }))
 
432
  // console.error('Error modifying image:', error);
433
  setError('Failed to modify image');
434
  }
435
+ },
436
  }))
client/src/types.ts CHANGED
@@ -38,7 +38,7 @@ export type OnServerResponseParams = {
38
  image?: Blob
39
  error?: string
40
  loaded?: {
41
- i: string
42
  } & {
43
  c: number[] //center - 2x1
44
  s: number // size - scalar
 
38
  image?: Blob
39
  error?: string
40
  loaded?: {
41
+ u: string
42
  } & {
43
  c: number[] //center - 2x1
44
  s: number // size - scalar
engine.py CHANGED
@@ -12,7 +12,7 @@ from functools import lru_cache
12
  import numpy as np
13
  import torch
14
  import torch.nn.functional as F
15
- from PIL import Image
16
 
17
  from liveportrait.config.argument_config import ArgumentConfig
18
  from liveportrait.utils.camera import get_rotation_matrix
@@ -66,6 +66,9 @@ class Engine:
66
  async def load_image(self, data):
67
  image = Image.open(io.BytesIO(data))
68
 
 
 
 
69
  # Convert the image to RGB mode (removes alpha channel if present)
70
  image = image.convert('RGB')
71
 
 
12
  import numpy as np
13
  import torch
14
  import torch.nn.functional as F
15
+ from PIL import Image, ImageOps
16
 
17
  from liveportrait.config.argument_config import ArgumentConfig
18
  from liveportrait.utils.camera import get_rotation_matrix
 
66
  async def load_image(self, data):
67
  image = Image.open(io.BytesIO(data))
68
 
69
+ # keep the exif orientation (fix the selfie issue on iphone)
70
+ image = ImageOps.exif_transpose(image)
71
+
72
  # Convert the image to RGB mode (removes alpha channel if present)
73
  image = image.convert('RGB')
74
 
public/index.js CHANGED
@@ -22658,7 +22658,7 @@ var require_client = __commonJS((exports) => {
22658
 
22659
  // node_modules/react/cjs/react-jsx-dev-runtime.development.js
22660
  var require_react_jsx_dev_runtime_development = __commonJS((exports) => {
22661
- var React = __toESM(require_react(), 1);
22662
  if (true) {
22663
  (function() {
22664
  var REACT_ELEMENT_TYPE = Symbol.for("react.element");
@@ -22686,7 +22686,7 @@ var require_react_jsx_dev_runtime_development = __commonJS((exports) => {
22686
  }
22687
  return null;
22688
  }
22689
- var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
22690
  function error(format) {
22691
  {
22692
  {
@@ -23685,77 +23685,165 @@ var client = __toESM(require_client(), 1);
23685
  // src/app.tsx
23686
  var import_react9 = __toESM(require_react(), 1);
23687
 
23688
- // node_modules/lucide-react/dist/esm/createLucideIcon.js
23689
  var import_react2 = __toESM(require_react(), 1);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23690
 
23691
- // node_modules/lucide-react/dist/esm/shared/src/utils.js
23692
- var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
23693
- var mergeClasses = (...classes) => classes.filter((className, index, array) => {
23694
- return Boolean(className) && array.indexOf(className) === index;
23695
- }).join(" ");
23696
-
23697
- // node_modules/lucide-react/dist/esm/Icon.js
23698
  var import_react = __toESM(require_react(), 1);
 
 
 
 
 
 
 
 
23699
 
23700
- // node_modules/lucide-react/dist/esm/defaultAttributes.js
23701
- var defaultAttributes = {
23702
- xmlns: "http://www.w3.org/2000/svg",
23703
- width: 24,
23704
- height: 24,
23705
- viewBox: "0 0 24 24",
23706
- fill: "none",
23707
- stroke: "currentColor",
23708
- strokeWidth: 2,
23709
- strokeLinecap: "round",
23710
- strokeLinejoin: "round"
23711
- };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23712
 
23713
- // node_modules/lucide-react/dist/esm/Icon.js
23714
- var Icon = import_react.forwardRef(({
23715
- color = "currentColor",
23716
- size = 24,
23717
- strokeWidth = 2,
23718
- absoluteStrokeWidth,
23719
- className = "",
23720
- children,
23721
- iconNode,
23722
- ...rest
23723
- }, ref) => {
23724
- return import_react.createElement("svg", {
23725
- ref,
23726
- ...defaultAttributes,
23727
- width: size,
23728
- height: size,
23729
- stroke: color,
23730
- strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
23731
- className: mergeClasses("lucide", className),
23732
- ...rest
23733
- }, [
23734
- ...iconNode.map(([tag, attrs]) => import_react.createElement(tag, attrs)),
23735
- ...Array.isArray(children) ? children : [children]
23736
- ]);
23737
- });
23738
 
23739
- // node_modules/lucide-react/dist/esm/createLucideIcon.js
23740
- var createLucideIcon = (iconName, iconNode) => {
23741
- const Component = import_react2.forwardRef(({ className, ...props }, ref) => import_react2.createElement(Icon, {
23742
- ref,
23743
- iconNode,
23744
- className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),
23745
- ...props
23746
- }));
23747
- Component.displayName = `${iconName}`;
23748
- return Component;
23749
- };
23750
 
23751
- // node_modules/lucide-react/dist/esm/icons/download.js
23752
- var Download = createLucideIcon("Download", [
23753
- ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
23754
- ["polyline", { points: "7 10 12 15 17 10", key: "2ggqvy" }],
23755
- ["line", { x1: "12", x2: "12", y1: "15", y2: "3", key: "1vk2je" }]
23756
- ]);
23757
  // src/components/ui/alert.tsx
23758
- var React = __toESM(require_react(), 1);
23759
 
23760
  // node_modules/class-variance-authority/node_modules/clsx/dist/clsx.mjs
23761
  var r = function(e) {
@@ -25181,20 +25269,20 @@ var alertVariants = cva("relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&
25181
  variant: "default"
25182
  }
25183
  });
25184
- var Alert = React.forwardRef(({ className, variant, ...props }, ref) => jsx_dev_runtime.jsxDEV("div", {
25185
  ref,
25186
  role: "alert",
25187
  className: cn(alertVariants({ variant }), className),
25188
  ...props
25189
  }, undefined, false, undefined, this));
25190
  Alert.displayName = "Alert";
25191
- var AlertTitle = React.forwardRef(({ className, ...props }, ref) => jsx_dev_runtime.jsxDEV("h5", {
25192
  ref,
25193
  className: cn("mb-1 font-medium leading-none tracking-tight", className),
25194
  ...props
25195
  }, undefined, false, undefined, this));
25196
  AlertTitle.displayName = "AlertTitle";
25197
- var AlertDescription = React.forwardRef(({ className, ...props }, ref) => jsx_dev_runtime.jsxDEV("div", {
25198
  ref,
25199
  className: cn("text-sm [&_p]:leading-relaxed", className),
25200
  ...props
@@ -33345,23 +33433,6 @@ function About() {
33345
  }, undefined, true, undefined, this);
33346
  }
33347
 
33348
- // src/components/Spinner.tsx
33349
- var jsx_dev_runtime3 = __toESM(require_jsx_dev_runtime(), 1);
33350
- function Spinner() {
33351
- return jsx_dev_runtime3.jsxDEV("svg", {
33352
- className: "mr-3 h-6 w-6",
33353
- fill: "none",
33354
- viewBox: "0 0 24 24",
33355
- stroke: "currentColor",
33356
- children: jsx_dev_runtime3.jsxDEV("path", {
33357
- strokeLinecap: "round",
33358
- strokeLinejoin: "round",
33359
- strokeWidth: 2,
33360
- d: "M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"
33361
- }, undefined, false, undefined, this)
33362
- }, undefined, false, undefined, this);
33363
- }
33364
-
33365
  // src/hooks/useFacePokeAPI.ts
33366
  var import_react8 = __toESM(require_react(), 1);
33367
  function useFacePokeAPI() {
@@ -33392,14 +33463,14 @@ function useFacePokeAPI() {
33392
  }
33393
 
33394
  // src/layout.tsx
33395
- var jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
33396
  function Layout({ children }) {
33397
- return jsx_dev_runtime4.jsxDEV("div", {
33398
  className: "fixed min-h-screen w-full flex items-center justify-center bg-gradient-to-br from-gray-300 to-stone-300",
33399
  style: { boxShadow: "inset 0 0 10vh 0 rgb(0 0 0 / 30%)" },
33400
- children: jsx_dev_runtime4.jsxDEV("div", {
33401
  className: "min-h-screen w-full py-8 flex flex-col justify-center",
33402
- children: jsx_dev_runtime4.jsxDEV("div", {
33403
  className: "flex flex-col items-center justify-center p-4 sm:max-w-5xl sm:mx-auto",
33404
  children
33405
  }, undefined, false, undefined, this)
@@ -33408,7 +33479,7 @@ function Layout({ children }) {
33408
  }
33409
 
33410
  // src/app.tsx
33411
- var jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
33412
  function App() {
33413
  const error = useMainStore((s2) => s2.error);
33414
  const setError = useMainStore((s2) => s2.setError);
@@ -33453,30 +33524,30 @@ function App() {
33453
  }
33454
  }, [previewImage]);
33455
  const canDisplayBlendShapes = false;
33456
- const displayBlendShapes = import_react9.useMemo(() => jsx_dev_runtime5.jsxDEV("div", {
33457
  className: "mt-4",
33458
  children: [
33459
- jsx_dev_runtime5.jsxDEV("h3", {
33460
  className: "text-lg font-semibold mb-2",
33461
  children: "Blend Shapes"
33462
  }, undefined, false, undefined, this),
33463
- jsx_dev_runtime5.jsxDEV("ul", {
33464
  className: "space-y-1",
33465
- children: (blendShapes?.[0]?.categories || []).map((shape, index) => jsx_dev_runtime5.jsxDEV("li", {
33466
  className: "flex items-center",
33467
  children: [
33468
- jsx_dev_runtime5.jsxDEV("span", {
33469
  className: "w-32 text-sm",
33470
  children: shape.categoryName || shape.displayName
33471
  }, undefined, false, undefined, this),
33472
- jsx_dev_runtime5.jsxDEV("div", {
33473
  className: "w-full bg-gray-200 rounded-full h-2.5",
33474
- children: jsx_dev_runtime5.jsxDEV("div", {
33475
  className: "bg-blue-600 h-2.5 rounded-full",
33476
  style: { width: `${shape.score * 100}%` }
33477
  }, undefined, false, undefined, this)
33478
  }, undefined, false, undefined, this),
33479
- jsx_dev_runtime5.jsxDEV("span", {
33480
  className: "ml-2 text-sm",
33481
  children: shape.score.toFixed(2)
33482
  }, undefined, false, undefined, this)
@@ -33485,42 +33556,42 @@ function App() {
33485
  }, undefined, false, undefined, this)
33486
  ]
33487
  }, undefined, true, undefined, this), [JSON.stringify(blendShapes)]);
33488
- return jsx_dev_runtime5.jsxDEV(Layout, {
33489
  children: [
33490
- error && jsx_dev_runtime5.jsxDEV(Alert, {
33491
  variant: "destructive",
33492
  children: [
33493
- jsx_dev_runtime5.jsxDEV(AlertTitle, {
33494
  children: "Error"
33495
  }, undefined, false, undefined, this),
33496
- jsx_dev_runtime5.jsxDEV(AlertDescription, {
33497
  children: error
33498
  }, undefined, false, undefined, this)
33499
  ]
33500
  }, undefined, true, undefined, this),
33501
- interruptMessage && jsx_dev_runtime5.jsxDEV(Alert, {
33502
  children: [
33503
- jsx_dev_runtime5.jsxDEV(AlertTitle, {
33504
  children: "Notice"
33505
  }, undefined, false, undefined, this),
33506
- jsx_dev_runtime5.jsxDEV(AlertDescription, {
33507
  children: interruptMessage
33508
  }, undefined, false, undefined, this)
33509
  ]
33510
  }, undefined, true, undefined, this),
33511
- jsx_dev_runtime5.jsxDEV("div", {
33512
  className: "mb-5 relative",
33513
  children: [
33514
- jsx_dev_runtime5.jsxDEV("div", {
33515
  className: "flex flex-row items-center justify-between w-full",
33516
  children: [
33517
- jsx_dev_runtime5.jsxDEV("div", {
33518
  className: "flex items-center space-x-2",
33519
  children: [
33520
- jsx_dev_runtime5.jsxDEV("div", {
33521
  className: "flex items-center justify-center",
33522
  children: [
33523
- jsx_dev_runtime5.jsxDEV("input", {
33524
  id: "imageInput",
33525
  type: "file",
33526
  accept: "image/*",
@@ -33528,34 +33599,36 @@ function App() {
33528
  className: "hidden",
33529
  disabled: !isMediaPipeReady
33530
  }, undefined, false, undefined, this),
33531
- jsx_dev_runtime5.jsxDEV("label", {
33532
  htmlFor: "imageInput",
33533
  className: `cursor-pointer inline-flex items-center px-3 h-10 border border-transparent text-sm font-medium rounded-md text-white ${isMediaPipeReady ? "bg-slate-600 hover:bg-slate-500" : "bg-slate-500 cursor-not-allowed"} focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-slate-500 shadow-xl`,
33534
  children: [
33535
- jsx_dev_runtime5.jsxDEV(Spinner, {}, undefined, false, undefined, this),
33536
- imageFile ? truncateFileName(imageFile.name, 32) : isMediaPipeReady ? "Choose a portrait photo" : "Initializing..."
 
 
33537
  ]
33538
  }, undefined, true, undefined, this)
33539
  ]
33540
  }, undefined, true, undefined, this),
33541
- previewImage && jsx_dev_runtime5.jsxDEV("button", {
33542
  onClick: handleDownload,
33543
  className: "inline-flex items-center px-3 h-10 border border-transparent text-sm font-medium rounded-md text-white bg-zinc-600 hover:bg-zinc-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-zinc-500 shadow-xl",
33544
  children: [
33545
- jsx_dev_runtime5.jsxDEV(Download, {
33546
- className: "w-4 h-4 mr-2"
33547
  }, undefined, false, undefined, this),
33548
  "Download"
33549
  ]
33550
  }, undefined, true, undefined, this)
33551
  ]
33552
  }, undefined, true, undefined, this),
33553
- previewImage && jsx_dev_runtime5.jsxDEV("div", {
33554
  className: "flex items-center space-x-2",
33555
- children: jsx_dev_runtime5.jsxDEV("label", {
33556
  className: "mt-4 flex items-center",
33557
  children: [
33558
- jsx_dev_runtime5.jsxDEV("input", {
33559
  type: "checkbox",
33560
  checked: isDebugMode,
33561
  onChange: (e2) => setIsDebugMode(e2.target.checked),
@@ -33567,15 +33640,15 @@ function App() {
33567
  }, undefined, false, undefined, this)
33568
  ]
33569
  }, undefined, true, undefined, this),
33570
- previewImage && jsx_dev_runtime5.jsxDEV("div", {
33571
  className: "mt-5 relative shadow-2xl rounded-xl overflow-hidden",
33572
  children: [
33573
- jsx_dev_runtime5.jsxDEV("img", {
33574
  src: previewImage,
33575
  alt: "Preview",
33576
  className: "w-full"
33577
  }, undefined, false, undefined, this),
33578
- jsx_dev_runtime5.jsxDEV("canvas", {
33579
  ref: canvasRefCallback,
33580
  className: "absolute top-0 left-0 w-full h-full select-none",
33581
  onMouseDown: handleMouseDown,
@@ -33599,12 +33672,12 @@ function App() {
33599
  canDisplayBlendShapes && displayBlendShapes
33600
  ]
33601
  }, undefined, true, undefined, this),
33602
- jsx_dev_runtime5.jsxDEV(About, {}, undefined, false, undefined, this)
33603
  ]
33604
  }, undefined, true, undefined, this);
33605
  }
33606
 
33607
  // src/index.tsx
33608
- var jsx_dev_runtime6 = __toESM(require_jsx_dev_runtime(), 1);
33609
  var root = client.createRoot(document.getElementById("root"));
33610
- root.render(jsx_dev_runtime6.jsxDEV(App, {}, undefined, false, undefined, this));
 
22658
 
22659
  // node_modules/react/cjs/react-jsx-dev-runtime.development.js
22660
  var require_react_jsx_dev_runtime_development = __commonJS((exports) => {
22661
+ var React3 = __toESM(require_react(), 1);
22662
  if (true) {
22663
  (function() {
22664
  var REACT_ELEMENT_TYPE = Symbol.for("react.element");
 
22686
  }
22687
  return null;
22688
  }
22689
+ var ReactSharedInternals = React3.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
22690
  function error(format) {
22691
  {
22692
  {
 
23685
  // src/app.tsx
23686
  var import_react9 = __toESM(require_react(), 1);
23687
 
23688
+ // node_modules/react-icons/lib/iconBase.mjs
23689
  var import_react2 = __toESM(require_react(), 1);
23690
+ var _objectWithoutProperties = function(source, excluded) {
23691
+ if (source == null)
23692
+ return {};
23693
+ var target = _objectWithoutPropertiesLoose(source, excluded);
23694
+ var key, i;
23695
+ if (Object.getOwnPropertySymbols) {
23696
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
23697
+ for (i = 0;i < sourceSymbolKeys.length; i++) {
23698
+ key = sourceSymbolKeys[i];
23699
+ if (excluded.indexOf(key) >= 0)
23700
+ continue;
23701
+ if (!Object.prototype.propertyIsEnumerable.call(source, key))
23702
+ continue;
23703
+ target[key] = source[key];
23704
+ }
23705
+ }
23706
+ return target;
23707
+ };
23708
+ var _objectWithoutPropertiesLoose = function(source, excluded) {
23709
+ if (source == null)
23710
+ return {};
23711
+ var target = {};
23712
+ for (var key in source) {
23713
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
23714
+ if (excluded.indexOf(key) >= 0)
23715
+ continue;
23716
+ target[key] = source[key];
23717
+ }
23718
+ }
23719
+ return target;
23720
+ };
23721
+ var _extends = function() {
23722
+ _extends = Object.assign ? Object.assign.bind() : function(target) {
23723
+ for (var i = 1;i < arguments.length; i++) {
23724
+ var source = arguments[i];
23725
+ for (var key in source) {
23726
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
23727
+ target[key] = source[key];
23728
+ }
23729
+ }
23730
+ }
23731
+ return target;
23732
+ };
23733
+ return _extends.apply(this, arguments);
23734
+ };
23735
+ var ownKeys = function(e, r) {
23736
+ var t = Object.keys(e);
23737
+ if (Object.getOwnPropertySymbols) {
23738
+ var o = Object.getOwnPropertySymbols(e);
23739
+ r && (o = o.filter(function(r2) {
23740
+ return Object.getOwnPropertyDescriptor(e, r2).enumerable;
23741
+ })), t.push.apply(t, o);
23742
+ }
23743
+ return t;
23744
+ };
23745
+ var _objectSpread = function(e) {
23746
+ for (var r = 1;r < arguments.length; r++) {
23747
+ var t = arguments[r] != null ? arguments[r] : {};
23748
+ r % 2 ? ownKeys(Object(t), true).forEach(function(r2) {
23749
+ _defineProperty(e, r2, t[r2]);
23750
+ }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function(r2) {
23751
+ Object.defineProperty(e, r2, Object.getOwnPropertyDescriptor(t, r2));
23752
+ });
23753
+ }
23754
+ return e;
23755
+ };
23756
+ var _defineProperty = function(obj, key, value) {
23757
+ key = _toPropertyKey(key);
23758
+ if (key in obj) {
23759
+ Object.defineProperty(obj, key, { value, enumerable: true, configurable: true, writable: true });
23760
+ } else {
23761
+ obj[key] = value;
23762
+ }
23763
+ return obj;
23764
+ };
23765
+ var _toPropertyKey = function(t) {
23766
+ var i = _toPrimitive(t, "string");
23767
+ return typeof i == "symbol" ? i : i + "";
23768
+ };
23769
+ var _toPrimitive = function(t, r) {
23770
+ if (typeof t != "object" || !t)
23771
+ return t;
23772
+ var e = t[Symbol.toPrimitive];
23773
+ if (e !== undefined) {
23774
+ var i = e.call(t, r || "default");
23775
+ if (typeof i != "object")
23776
+ return i;
23777
+ throw new TypeError("@@toPrimitive must return a primitive value.");
23778
+ }
23779
+ return (r === "string" ? String : Number)(t);
23780
+ };
23781
 
23782
+ // node_modules/react-icons/lib/iconContext.mjs
 
 
 
 
 
 
23783
  var import_react = __toESM(require_react(), 1);
23784
+ var DefaultContext = {
23785
+ color: undefined,
23786
+ size: undefined,
23787
+ className: undefined,
23788
+ style: undefined,
23789
+ attr: undefined
23790
+ };
23791
+ var IconContext = import_react.default.createContext && import_react.default.createContext(DefaultContext);
23792
 
23793
+ // node_modules/react-icons/lib/iconBase.mjs
23794
+ var Tree2Element = function(tree) {
23795
+ return tree && tree.map((node, i) => import_react2.default.createElement(node.tag, _objectSpread({
23796
+ key: i
23797
+ }, node.attr), Tree2Element(node.child)));
23798
+ };
23799
+ function GenIcon(data) {
23800
+ return (props) => import_react2.default.createElement(IconBase, _extends({
23801
+ attr: _objectSpread({}, data.attr)
23802
+ }, props), Tree2Element(data.child));
23803
+ }
23804
+ function IconBase(props) {
23805
+ var elem = (conf) => {
23806
+ var {
23807
+ attr,
23808
+ size,
23809
+ title
23810
+ } = props, svgProps = _objectWithoutProperties(props, _excluded);
23811
+ var computedSize = size || conf.size || "1em";
23812
+ var className;
23813
+ if (conf.className)
23814
+ className = conf.className;
23815
+ if (props.className)
23816
+ className = (className ? className + " " : "") + props.className;
23817
+ return import_react2.default.createElement("svg", _extends({
23818
+ stroke: "currentColor",
23819
+ fill: "currentColor",
23820
+ strokeWidth: "0"
23821
+ }, conf.attr, attr, svgProps, {
23822
+ className,
23823
+ style: _objectSpread(_objectSpread({
23824
+ color: props.color || conf.color
23825
+ }, conf.style), props.style),
23826
+ height: computedSize,
23827
+ width: computedSize,
23828
+ xmlns: "http://www.w3.org/2000/svg"
23829
+ }), title && import_react2.default.createElement("title", null, title), props.children);
23830
+ };
23831
+ return IconContext !== undefined ? import_react2.default.createElement(IconContext.Consumer, null, (conf) => elem(conf)) : elem(DefaultContext);
23832
+ }
23833
+ var _excluded = ["attr", "size", "title"];
23834
 
23835
+ // node_modules/react-icons/fi/index.mjs
23836
+ function FiDownload(props) {
23837
+ return GenIcon({ tag: "svg", attr: { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" }, child: [{ tag: "path", attr: { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }, child: [] }, { tag: "polyline", attr: { points: "7 10 12 15 17 10" }, child: [] }, { tag: "line", attr: { x1: "12", y1: "15", x2: "12", y2: "3" }, child: [] }] })(props);
23838
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23839
 
23840
+ // node_modules/react-icons/pi/index.mjs
23841
+ function PiImageSquare(props) {
23842
+ return GenIcon({ tag: "svg", attr: { viewBox: "0 0 256 256", fill: "currentColor" }, child: [{ tag: "path", attr: { d: "M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z" }, child: [] }] })(props);
23843
+ }
 
 
 
 
 
 
 
23844
 
 
 
 
 
 
 
23845
  // src/components/ui/alert.tsx
23846
+ var React3 = __toESM(require_react(), 1);
23847
 
23848
  // node_modules/class-variance-authority/node_modules/clsx/dist/clsx.mjs
23849
  var r = function(e) {
 
25269
  variant: "default"
25270
  }
25271
  });
25272
+ var Alert = React3.forwardRef(({ className, variant, ...props }, ref) => jsx_dev_runtime.jsxDEV("div", {
25273
  ref,
25274
  role: "alert",
25275
  className: cn(alertVariants({ variant }), className),
25276
  ...props
25277
  }, undefined, false, undefined, this));
25278
  Alert.displayName = "Alert";
25279
+ var AlertTitle = React3.forwardRef(({ className, ...props }, ref) => jsx_dev_runtime.jsxDEV("h5", {
25280
  ref,
25281
  className: cn("mb-1 font-medium leading-none tracking-tight", className),
25282
  ...props
25283
  }, undefined, false, undefined, this));
25284
  AlertTitle.displayName = "AlertTitle";
25285
+ var AlertDescription = React3.forwardRef(({ className, ...props }, ref) => jsx_dev_runtime.jsxDEV("div", {
25286
  ref,
25287
  className: cn("text-sm [&_p]:leading-relaxed", className),
25288
  ...props
 
33433
  }, undefined, true, undefined, this);
33434
  }
33435
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33436
  // src/hooks/useFacePokeAPI.ts
33437
  var import_react8 = __toESM(require_react(), 1);
33438
  function useFacePokeAPI() {
 
33463
  }
33464
 
33465
  // src/layout.tsx
33466
+ var jsx_dev_runtime3 = __toESM(require_jsx_dev_runtime(), 1);
33467
  function Layout({ children }) {
33468
+ return jsx_dev_runtime3.jsxDEV("div", {
33469
  className: "fixed min-h-screen w-full flex items-center justify-center bg-gradient-to-br from-gray-300 to-stone-300",
33470
  style: { boxShadow: "inset 0 0 10vh 0 rgb(0 0 0 / 30%)" },
33471
+ children: jsx_dev_runtime3.jsxDEV("div", {
33472
  className: "min-h-screen w-full py-8 flex flex-col justify-center",
33473
+ children: jsx_dev_runtime3.jsxDEV("div", {
33474
  className: "flex flex-col items-center justify-center p-4 sm:max-w-5xl sm:mx-auto",
33475
  children
33476
  }, undefined, false, undefined, this)
 
33479
  }
33480
 
33481
  // src/app.tsx
33482
+ var jsx_dev_runtime4 = __toESM(require_jsx_dev_runtime(), 1);
33483
  function App() {
33484
  const error = useMainStore((s2) => s2.error);
33485
  const setError = useMainStore((s2) => s2.setError);
 
33524
  }
33525
  }, [previewImage]);
33526
  const canDisplayBlendShapes = false;
33527
+ const displayBlendShapes = import_react9.useMemo(() => jsx_dev_runtime4.jsxDEV("div", {
33528
  className: "mt-4",
33529
  children: [
33530
+ jsx_dev_runtime4.jsxDEV("h3", {
33531
  className: "text-lg font-semibold mb-2",
33532
  children: "Blend Shapes"
33533
  }, undefined, false, undefined, this),
33534
+ jsx_dev_runtime4.jsxDEV("ul", {
33535
  className: "space-y-1",
33536
+ children: (blendShapes?.[0]?.categories || []).map((shape, index) => jsx_dev_runtime4.jsxDEV("li", {
33537
  className: "flex items-center",
33538
  children: [
33539
+ jsx_dev_runtime4.jsxDEV("span", {
33540
  className: "w-32 text-sm",
33541
  children: shape.categoryName || shape.displayName
33542
  }, undefined, false, undefined, this),
33543
+ jsx_dev_runtime4.jsxDEV("div", {
33544
  className: "w-full bg-gray-200 rounded-full h-2.5",
33545
+ children: jsx_dev_runtime4.jsxDEV("div", {
33546
  className: "bg-blue-600 h-2.5 rounded-full",
33547
  style: { width: `${shape.score * 100}%` }
33548
  }, undefined, false, undefined, this)
33549
  }, undefined, false, undefined, this),
33550
+ jsx_dev_runtime4.jsxDEV("span", {
33551
  className: "ml-2 text-sm",
33552
  children: shape.score.toFixed(2)
33553
  }, undefined, false, undefined, this)
 
33556
  }, undefined, false, undefined, this)
33557
  ]
33558
  }, undefined, true, undefined, this), [JSON.stringify(blendShapes)]);
33559
+ return jsx_dev_runtime4.jsxDEV(Layout, {
33560
  children: [
33561
+ error && jsx_dev_runtime4.jsxDEV(Alert, {
33562
  variant: "destructive",
33563
  children: [
33564
+ jsx_dev_runtime4.jsxDEV(AlertTitle, {
33565
  children: "Error"
33566
  }, undefined, false, undefined, this),
33567
+ jsx_dev_runtime4.jsxDEV(AlertDescription, {
33568
  children: error
33569
  }, undefined, false, undefined, this)
33570
  ]
33571
  }, undefined, true, undefined, this),
33572
+ interruptMessage && jsx_dev_runtime4.jsxDEV(Alert, {
33573
  children: [
33574
+ jsx_dev_runtime4.jsxDEV(AlertTitle, {
33575
  children: "Notice"
33576
  }, undefined, false, undefined, this),
33577
+ jsx_dev_runtime4.jsxDEV(AlertDescription, {
33578
  children: interruptMessage
33579
  }, undefined, false, undefined, this)
33580
  ]
33581
  }, undefined, true, undefined, this),
33582
+ jsx_dev_runtime4.jsxDEV("div", {
33583
  className: "mb-5 relative",
33584
  children: [
33585
+ jsx_dev_runtime4.jsxDEV("div", {
33586
  className: "flex flex-row items-center justify-between w-full",
33587
  children: [
33588
+ jsx_dev_runtime4.jsxDEV("div", {
33589
  className: "flex items-center space-x-2",
33590
  children: [
33591
+ jsx_dev_runtime4.jsxDEV("div", {
33592
  className: "flex items-center justify-center",
33593
  children: [
33594
+ jsx_dev_runtime4.jsxDEV("input", {
33595
  id: "imageInput",
33596
  type: "file",
33597
  accept: "image/*",
 
33599
  className: "hidden",
33600
  disabled: !isMediaPipeReady
33601
  }, undefined, false, undefined, this),
33602
+ jsx_dev_runtime4.jsxDEV("label", {
33603
  htmlFor: "imageInput",
33604
  className: `cursor-pointer inline-flex items-center px-3 h-10 border border-transparent text-sm font-medium rounded-md text-white ${isMediaPipeReady ? "bg-slate-600 hover:bg-slate-500" : "bg-slate-500 cursor-not-allowed"} focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-slate-500 shadow-xl`,
33605
  children: [
33606
+ jsx_dev_runtime4.jsxDEV(PiImageSquare, {
33607
+ className: "w-6 h-6 mr-2"
33608
+ }, undefined, false, undefined, this),
33609
+ imageFile ? `Replace` : isMediaPipeReady ? "Choose a portrait photo" : "Initializing..."
33610
  ]
33611
  }, undefined, true, undefined, this)
33612
  ]
33613
  }, undefined, true, undefined, this),
33614
+ previewImage && jsx_dev_runtime4.jsxDEV("button", {
33615
  onClick: handleDownload,
33616
  className: "inline-flex items-center px-3 h-10 border border-transparent text-sm font-medium rounded-md text-white bg-zinc-600 hover:bg-zinc-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-zinc-500 shadow-xl",
33617
  children: [
33618
+ jsx_dev_runtime4.jsxDEV(FiDownload, {
33619
+ className: "w-5 h-5 mr-2"
33620
  }, undefined, false, undefined, this),
33621
  "Download"
33622
  ]
33623
  }, undefined, true, undefined, this)
33624
  ]
33625
  }, undefined, true, undefined, this),
33626
+ previewImage && jsx_dev_runtime4.jsxDEV("div", {
33627
  className: "flex items-center space-x-2",
33628
+ children: jsx_dev_runtime4.jsxDEV("label", {
33629
  className: "mt-4 flex items-center",
33630
  children: [
33631
+ jsx_dev_runtime4.jsxDEV("input", {
33632
  type: "checkbox",
33633
  checked: isDebugMode,
33634
  onChange: (e2) => setIsDebugMode(e2.target.checked),
 
33640
  }, undefined, false, undefined, this)
33641
  ]
33642
  }, undefined, true, undefined, this),
33643
+ previewImage && jsx_dev_runtime4.jsxDEV("div", {
33644
  className: "mt-5 relative shadow-2xl rounded-xl overflow-hidden",
33645
  children: [
33646
+ jsx_dev_runtime4.jsxDEV("img", {
33647
  src: previewImage,
33648
  alt: "Preview",
33649
  className: "w-full"
33650
  }, undefined, false, undefined, this),
33651
+ jsx_dev_runtime4.jsxDEV("canvas", {
33652
  ref: canvasRefCallback,
33653
  className: "absolute top-0 left-0 w-full h-full select-none",
33654
  onMouseDown: handleMouseDown,
 
33672
  canDisplayBlendShapes && displayBlendShapes
33673
  ]
33674
  }, undefined, true, undefined, this),
33675
+ jsx_dev_runtime4.jsxDEV(About, {}, undefined, false, undefined, this)
33676
  ]
33677
  }, undefined, true, undefined, this);
33678
  }
33679
 
33680
  // src/index.tsx
33681
+ var jsx_dev_runtime5 = __toESM(require_jsx_dev_runtime(), 1);
33682
  var root = client.createRoot(document.getElementById("root"));
33683
+ root.render(jsx_dev_runtime5.jsxDEV(App, {}, undefined, false, undefined, this));