From 09be77ce03c2566335198e97fb54aa8c0b0ca127 Mon Sep 17 00:00:00 2001
From: Unknown <53575465+EndofTimee@users.noreply.github.com>
Date: Thu, 20 Mar 2025 13:36:17 -0700
Subject: [PATCH] protofox theme
protomode :3
.
add images :3
---
{src/pages => .unused}/LoginPage.tsx | 0
.../components => .unused}/ParallaxEffect.tsx | 0
{src/pages => .unused}/ParallaxPage.tsx | 0
.../SwitchNotification.tsx | 0
{src/pages => .unused}/SystemPage.tsx | 0
{src/components => .unused}/SystemStatus.tsx | 0
{src/styles => .unused}/parallax-effect.css | 0
index.html | 3 +
package-lock.json | 1084 +++++-----
package.json | 176 +-
public/cursors/protofox-default.svg | 25 +
public/cursors/protofox-pointer.svg | 29 +
.../images/blobfox/.blobfoxalwayshasbeen.svg | 1807 +++++++++++++++++
public/images/blobfox/.blobfoxrageworse.svg | 525 +++++
.../blobfox/.blobfoxrealisticbreadsnoot.svg | 328 +++
.../.blobfoxrealisticbreadsnootgoogly.svg | 360 ++++
public/images/blobfox/ablobfoxbongo.png | Bin 0 -> 9376 bytes
public/images/blobfox/ablobfoxbongohyper.png | Bin 0 -> 9376 bytes
.../images/blobfox/ablobfoxbongoterrified.png | Bin 0 -> 10612 bytes
public/images/blobfox/ablobfoxdundundun.png | Bin 0 -> 235875 bytes
.../images/blobfox/ablobfoxdundundunowo.png | Bin 0 -> 279448 bytes
public/images/blobfox/ablobfoxhyper.png | Bin 0 -> 9488 bytes
public/images/blobfox/ablobfoxhypercofe.png | Bin 0 -> 361291 bytes
public/images/blobfox/ablobfoxhyperowo.png | Bin 0 -> 317444 bytes
.../images/blobfox/ablobfoxhypersnugowo.png | Bin 0 -> 369127 bytes
.../images/blobfox/ablobfoxhyperthinking.png | Bin 0 -> 326828 bytes
.../images/blobfox/ablobfoxhyperwhaaaat.png | Bin 0 -> 297991 bytes
public/images/blobfox/ablobfoxloading.png | Bin 0 -> 149684 bytes
public/images/blobfox/ablobfoxree.png | Bin 0 -> 307409 bytes
public/images/blobfox/blobfox.svg | 235 +++
public/images/blobfox/blobfox0_0.svg | 343 ++++
public/images/blobfox/blobfox3c.svg | 240 +++
public/images/blobfox/blobfox3cevil.svg | 256 +++
public/images/blobfox/blobfox_w_.svg | 283 +++
public/images/blobfox/blobfoxangry.svg | 302 +++
public/images/blobfox/blobfoxangrylaugh.svg | 284 +++
public/images/blobfox/blobfoxannoyed.svg | 253 +++
public/images/blobfox/blobfoxartist.svg | 369 ++++
public/images/blobfox/blobfoxastronout.svg | 394 ++++
public/images/blobfox/blobfoxastronoutgun.svg | 870 ++++++++
public/images/blobfox/blobfoxaww.svg | 415 ++++
public/images/blobfox/blobfoxblush.svg | 315 +++
public/images/blobfox/blobfoxblushmore.svg | 310 +++
public/images/blobfox/blobfoxbongo.svg | 303 +++
public/images/blobfox/blobfoxbongostart.svg | 329 +++
.../images/blobfox/blobfoxbongoterrified.svg | 414 ++++
.../blobfox/blobfoxbongoterrifiedstart.svg | 382 ++++
public/images/blobfox/blobfoxbonk.svg | 729 +++++++
public/images/blobfox/blobfoxboop.svg | 241 +++
public/images/blobfox/blobfoxboop_w_.svg | 289 +++
public/images/blobfox/blobfoxboopblush.svg | 321 +++
public/images/blobfox/blobfoxboopcute.svg | 265 +++
public/images/blobfox/blobfoxboopfloof.svg | 323 +++
public/images/blobfox/blobfoxboopglare.svg | 309 +++
public/images/blobfox/blobfoxboopgoogly.svg | 248 +++
public/images/blobfox/blobfoxboophappy.svg | 237 +++
public/images/blobfox/blobfoxboopmelt.svg | 256 +++
.../images/blobfox/blobfoxboopmelthappy.svg | 244 +++
public/images/blobfox/blobfoxboopmlem.svg | 247 +++
public/images/blobfox/blobfoxboopowo.svg | 262 +++
.../images/blobfox/blobfoxboopterrified.svg | 313 +++
public/images/blobfox/blobfoxbox.svg | 377 ++++
public/images/blobfox/blobfoxbreadpeek.svg | 245 +++
public/images/blobfox/blobfoxbreadsnoot.svg | 406 ++++
public/images/blobfox/blobfoxbreadsnoot2.svg | 412 ++++
.../blobfox/blobfoxbreadsnoot2googly.svg | 444 ++++
.../blobfox/blobfoxbreadsnootgoogly.svg | 438 ++++
public/images/blobfox/blobfoxcactus.svg | 659 ++++++
public/images/blobfox/blobfoxcamera.svg | 283 +++
public/images/blobfox/blobfoxcat.svg | 475 +++++
public/images/blobfox/blobfoxcatsnuggle.svg | 929 +++++++++
public/images/blobfox/blobfoxcatterrified.svg | 362 ++++
public/images/blobfox/blobfoxcheck.svg | 182 ++
public/images/blobfox/blobfoxcheer.svg | 316 +++
public/images/blobfox/blobfoxcofe.svg | 314 +++
public/images/blobfox/blobfoxcofe_w_.svg | 322 +++
public/images/blobfox/blobfoxcofecute.svg | 341 ++++
public/images/blobfox/blobfoxcofeglare.svg | 351 ++++
public/images/blobfox/blobfoxcofemlem.svg | 322 +++
public/images/blobfox/blobfoxcofeowo.svg | 293 +++
.../images/blobfox/blobfoxcofeterrified.svg | 338 +++
public/images/blobfox/blobfoxcomfy.svg | 333 +++
public/images/blobfox/blobfoxcomfycofe.svg | 378 ++++
.../images/blobfox/blobfoxcomfycomputer.svg | 418 ++++
public/images/blobfox/blobfoxcomfyevil.svg | 349 ++++
public/images/blobfox/blobfoxcomfyglare.svg | 425 ++++
public/images/blobfox/blobfoxcomfyhappy.svg | 377 ++++
public/images/blobfox/blobfoxcomfymelt.svg | 273 +++
.../images/blobfox/blobfoxcomfymelthappy.svg | 261 +++
public/images/blobfox/blobfoxcomfyowo.svg | 405 ++++
public/images/blobfox/blobfoxcomfysip.svg | 362 ++++
public/images/blobfox/blobfoxcomfysleepy.svg | 389 ++++
public/images/blobfox/blobfoxcomfysmirk.svg | 349 ++++
public/images/blobfox/blobfoxcomfysmug.svg | 329 +++
public/images/blobfox/blobfoxcomfytea.svg | 378 ++++
.../images/blobfox/blobfoxcomfyterrified.svg | 403 ++++
public/images/blobfox/blobfoxcomputer.svg | 326 +++
public/images/blobfox/blobfoxcomputerowo.svg | 348 ++++
.../blobfox/blobfoxcomputerowonotice.svg | 360 ++++
public/images/blobfox/blobfoxconfused.svg | 263 +++
public/images/blobfox/blobfoxcookie.svg | 666 ++++++
public/images/blobfox/blobfoxcookienomfox.svg | 488 +++++
public/images/blobfox/blobfoxcry.svg | 292 +++
public/images/blobfox/blobfoxcry2.svg | 746 +++++++
public/images/blobfox/blobfoxcrylaugh.svg | 467 +++++
public/images/blobfox/blobfoxcryreach.svg | 371 ++++
public/images/blobfox/blobfoxcursedowo.svg | 333 +++
public/images/blobfox/blobfoxcute.svg | 259 +++
public/images/blobfox/blobfoxdab.svg | 784 +++++++
public/images/blobfox/blobfoxdarkghost.svg | 229 +++
.../images/blobfox/blobfoxdarkghostfloof.svg | 298 +++
.../images/blobfox/blobfoxdarkghostspooky.svg | 229 +++
public/images/blobfox/blobfoxdead.svg | 287 +++
public/images/blobfox/blobfoxdeadinside.svg | 409 ++++
public/images/blobfox/blobfoxdealwithit.svg | 229 +++
.../blobfox/blobfoxdealwithitfingerguns.svg | 241 +++
public/images/blobfox/blobfoxdetective.svg | 305 +++
public/images/blobfox/blobfoxdetermined.svg | 305 +++
public/images/blobfox/blobfoxdevil.svg | 271 +++
public/images/blobfox/blobfoxdisapprove.svg | 298 +++
public/images/blobfox/blobfoxdisgust.svg | 410 ++++
public/images/blobfox/blobfoxdisputed.svg | 303 +++
public/images/blobfox/blobfoxdizzy.svg | 260 +++
public/images/blobfox/blobfoxdoubt.svg | 340 ++++
public/images/blobfox/blobfoxdrakedislike.svg | 768 +++++++
public/images/blobfox/blobfoxdrakelike.svg | 237 +++
public/images/blobfox/blobfoxdrool.svg | 253 +++
public/images/blobfox/blobfoxevil.svg | 253 +++
public/images/blobfox/blobfoxeyes.svg | 419 ++++
public/images/blobfox/blobfoxfacepalm.svg | 740 +++++++
public/images/blobfox/blobfoxfake.svg | 306 +++
public/images/blobfox/blobfoxfingerguns.svg | 245 +++
public/images/blobfox/blobfoxfloof.svg | 317 +++
public/images/blobfox/blobfoxfloof_w_.svg | 330 +++
public/images/blobfox/blobfoxfloofcofe.svg | 354 ++++
public/images/blobfox/blobfoxfloofcute.svg | 343 ++++
public/images/blobfox/blobfoxfloofdevil.svg | 319 +++
public/images/blobfox/blobfoxfloofevil.svg | 333 +++
public/images/blobfox/blobfoxfloofhappy.svg | 316 +++
public/images/blobfox/blobfoxfloofowo.svg | 338 +++
public/images/blobfox/blobfoxfloofreach.svg | 329 +++
public/images/blobfox/blobfoxflooftea.svg | 354 ++++
public/images/blobfox/blobfoxflower.svg | 392 ++++
public/images/blobfox/blobfoxflowerhair.svg | 345 ++++
public/images/blobfox/blobfoxghost.svg | 229 +++
public/images/blobfox/blobfoxghostfloof.svg | 298 +++
public/images/blobfox/blobfoxghostspooky.svg | 491 +++++
public/images/blobfox/blobfoxglare.svg | 303 +++
public/images/blobfox/blobfoxgoogly.svg | 245 +++
public/images/blobfox/blobfoxgooglycry.svg | 297 +++
public/images/blobfox/blobfoxgooglymlem.svg | 251 +++
public/images/blobfox/blobfoxgooglynomlog.svg | 414 ++++
public/images/blobfox/blobfoxgooglytrash.svg | 368 ++++
public/images/blobfox/blobfoxhappy.svg | 233 +++
public/images/blobfox/blobfoxhappymlem.svg | 238 +++
public/images/blobfox/blobfoxheadphones.svg | 537 +++++
public/images/blobfox/blobfoxheart.svg | 241 +++
public/images/blobfox/blobfoxheartcute.svg | 265 +++
public/images/blobfox/blobfoxhyper.svg | 517 +++++
public/images/blobfox/blobfoxhyper2.svg | 453 +++++
public/images/blobfox/blobfoxinnocent.svg | 242 +++
public/images/blobfox/blobfoxinnocentcute.svg | 294 +++
public/images/blobfox/blobfoxinnocentmlem.svg | 248 +++
public/images/blobfox/blobfoxkirby.svg | 325 +++
public/images/blobfox/blobfoxkirbyinhale.svg | 494 +++++
public/images/blobfox/blobfoxknife.svg | 401 ++++
public/images/blobfox/blobfoxlaugh.svg | 231 +++
public/images/blobfox/blobfoxlaughsweat.svg | 237 +++
public/images/blobfox/blobfoxlewd.svg | 335 +++
public/images/blobfox/blobfoxlul.svg | 237 +++
public/images/blobfox/blobfoxlurk.svg | 559 +++++
public/images/blobfox/blobfoxlurk2.svg | 241 +++
public/images/blobfox/blobfoxlurk2glare.svg | 305 +++
public/images/blobfox/blobfoxlurk2owo.svg | 257 +++
.../images/blobfox/blobfoxlurk2owonotice.svg | 269 +++
public/images/blobfox/blobfoxlurkaww.svg | 585 ++++++
public/images/blobfox/blobfoxlurkglare.svg | 472 +++++
public/images/blobfox/blobfoxlurkowo.svg | 502 +++++
.../images/blobfox/blobfoxlurkowonotice.svg | 405 ++++
public/images/blobfox/blobfoxmegumin.svg | 394 ++++
public/images/blobfox/blobfoxmelt.svg | 254 +++
public/images/blobfox/blobfoxmelt2.svg | 253 +++
public/images/blobfox/blobfoxmelt3.svg | 257 +++
public/images/blobfox/blobfoxmeltblush.svg | 304 +++
public/images/blobfox/blobfoxmelthappy.svg | 237 +++
public/images/blobfox/blobfoxmeltmlem.svg | 259 +++
public/images/blobfox/blobfoxmeltreach.svg | 267 +++
public/images/blobfox/blobfoxmeltsob.svg | 297 +++
public/images/blobfox/blobfoxmeltsoblove.svg | 303 +++
public/images/blobfox/blobfoxmischievous.svg | 545 +++++
public/images/blobfox/blobfoxmlem.svg | 243 +++
.../blobfox/blobfoxmsnugglecentercat.svg | 1042 ++++++++++
.../blobfox/blobfoxmsnugglecenterfox.svg | 1118 ++++++++++
.../images/blobfox/blobfoxmsnuggleleftcat.svg | 1022 ++++++++++
.../images/blobfox/blobfoxmsnuggleleftfox.svg | 1052 ++++++++++
.../blobfox/blobfoxmsnugglerightcat.svg | 1006 +++++++++
.../blobfox/blobfoxmsnugglerightfox.svg | 1022 ++++++++++
.../blobfox/blobfoxmsnugglerightnone.svg | 954 +++++++++
public/images/blobfox/blobfoxnauseated.svg | 523 +++++
public/images/blobfox/blobfoxnerd.svg | 267 +++
public/images/blobfox/blobfoxninja.svg | 375 ++++
public/images/blobfox/blobfoxnomball.svg | 313 +++
public/images/blobfox/blobfoxnombook.svg | 360 ++++
public/images/blobfox/blobfoxnombread.svg | 274 +++
public/images/blobfox/blobfoxnomburger.svg | 601 ++++++
public/images/blobfox/blobfoxnomcake.svg | 703 +++++++
public/images/blobfox/blobfoxnomcat.svg | 335 +++
public/images/blobfox/blobfoxnomcookie.svg | 328 +++
public/images/blobfox/blobfoxnomcorndog.svg | 329 +++
public/images/blobfox/blobfoxnomcroutons.svg | 456 +++++
public/images/blobfox/blobfoxnomdonut.svg | 497 +++++
.../images/blobfox/blobfoxnomdonutpolice.svg | 540 +++++
.../blobfox/blobfoxnomdonutterrified.svg | 557 +++++
public/images/blobfox/blobfoxnomegg.svg | 465 +++++
public/images/blobfox/blobfoxnomfox.svg | 370 ++++
public/images/blobfox/blobfoxnomfoxburger.svg | 525 +++++
public/images/blobfox/blobfoxnomfoxcookie.svg | 534 +++++
.../images/blobfox/blobfoxnomfoxterrified.svg | 431 ++++
public/images/blobfox/blobfoxnomhotdog.svg | 1173 +++++++++++
public/images/blobfox/blobfoxnomicecream.svg | 553 +++++
public/images/blobfox/blobfoxnomlog.svg | 746 +++++++
public/images/blobfox/blobfoxnommelon.svg | 683 +++++++
public/images/blobfox/blobfoxnommobile.svg | 300 +++
public/images/blobfox/blobfoxnompizza.svg | 418 ++++
.../blobfox/blobfoxnompizzaterrified.svg | 428 ++++
public/images/blobfox/blobfoxnomshoe.svg | 433 ++++
.../images/blobfox/blobfoxnomstrawberry.svg | 655 ++++++
public/images/blobfox/blobfoxnomtomato.svg | 585 ++++++
public/images/blobfox/blobfoxnotamused.svg | 273 +++
public/images/blobfox/blobfoxnotlikethis.svg | 752 +++++++
public/images/blobfox/blobfoxo_o.svg | 256 +++
public/images/blobfox/blobfoxonepunch.svg | 393 ++++
public/images/blobfox/blobfoxoutage.svg | 197 ++
public/images/blobfox/blobfoxowo.svg | 256 +++
public/images/blobfox/blobfoxowomlem.svg | 263 +++
public/images/blobfox/blobfoxowonotice.svg | 340 ++++
public/images/blobfox/blobfoxpat.svg | 753 +++++++
public/images/blobfox/blobfoxpatdeny.svg | 343 ++++
public/images/blobfox/blobfoxpatghost.svg | 231 +++
public/images/blobfox/blobfoxpatgoogly.svg | 770 +++++++
public/images/blobfox/blobfoxpatmelt.svg | 259 +++
public/images/blobfox/blobfoxpatmelt2.svg | 258 +++
public/images/blobfox/blobfoxpatmelt3.svg | 262 +++
public/images/blobfox/blobfoxpatneutral.svg | 753 +++++++
public/images/blobfox/blobfoxpatsad.svg | 797 ++++++++
public/images/blobfox/blobfoxpeek.svg | 271 +++
public/images/blobfox/blobfoxpeekcomfy.svg | 276 +++
public/images/blobfox/blobfoxpeekknife.svg | 316 +++
public/images/blobfox/blobfoxpeekowo.svg | 286 +++
public/images/blobfox/blobfoxpeekpolice.svg | 374 ++++
public/images/blobfox/blobfoxpirate.svg | 336 +++
public/images/blobfox/blobfoxpleading.svg | 308 +++
public/images/blobfox/blobfoxpolice.svg | 349 ++++
public/images/blobfox/blobfoxprelurkcofe.svg | 408 ++++
.../images/blobfox/blobfoxprelurkcroutons.svg | 1269 ++++++++++++
public/images/blobfox/blobfoxprelurkdonut.svg | 863 ++++++++
public/images/blobfox/blobfoxrage.svg | 297 +++
public/images/blobfox/blobfoxragelarge1.svg | 349 ++++
public/images/blobfox/blobfoxragelarge2.svg | 349 ++++
public/images/blobfox/blobfoxragelarge3.svg | 349 ++++
public/images/blobfox/blobfoxragelarge4.svg | 349 ++++
public/images/blobfox/blobfoxreach.svg | 247 +++
public/images/blobfox/blobfoxreachaww.svg | 401 ++++
public/images/blobfox/blobfoxread.svg | 574 ++++++
public/images/blobfox/blobfoxreinderp.svg | 307 +++
public/images/blobfox/blobfoxretsuko.svg | 819 ++++++++
public/images/blobfox/blobfoxsad.svg | 345 ++++
public/images/blobfox/blobfoxsanta.svg | 684 +++++++
public/images/blobfox/blobfoxscared.svg | 307 +++
public/images/blobfox/blobfoxscience.svg | 287 +++
public/images/blobfox/blobfoxshocked.svg | 275 +++
public/images/blobfox/blobfoxshy.svg | 769 +++++++
public/images/blobfox/blobfoxsignbaka.svg | 353 ++++
public/images/blobfox/blobfoxsignbigfan.svg | 312 +++
.../images/blobfox/blobfoxsignforbidden.svg | 277 +++
public/images/blobfox/blobfoxsigngenau.svg | 281 +++
public/images/blobfox/blobfoxsignno.svg | 282 +++
public/images/blobfox/blobfoxsignnou.svg | 282 +++
public/images/blobfox/blobfoxsignnoublush.svg | 352 ++++
public/images/blobfox/blobfoxsignsrcpls.svg | 364 ++++
public/images/blobfox/blobfoxsignthx.svg | 282 +++
public/images/blobfox/blobfoxsignyes.svg | 282 +++
public/images/blobfox/blobfoxsignyip.svg | 282 +++
public/images/blobfox/blobfoxsip.svg | 304 +++
public/images/blobfox/blobfoxsipglare.svg | 333 +++
public/images/blobfox/blobfoxsipowo.svg | 287 +++
public/images/blobfox/blobfoxsipsmug.svg | 285 +++
public/images/blobfox/blobfoxsipterrified.svg | 359 ++++
public/images/blobfox/blobfoxsleep.svg | 261 +++
public/images/blobfox/blobfoxsleepdab.svg | 794 ++++++++
public/images/blobfox/blobfoxsmirk.svg | 330 +++
public/images/blobfox/blobfoxsmug.svg | 273 +++
public/images/blobfox/blobfoxsnug.svg | 242 +++
public/images/blobfox/blobfoxsnugglare.svg | 314 +++
public/images/blobfox/blobfoxsnuggle.svg | 953 +++++++++
public/images/blobfox/blobfoxsnugowo.svg | 310 +++
.../images/blobfox/blobfoxsnugterrified.svg | 348 ++++
public/images/blobfox/blobfoxstabbed.svg | 315 +++
public/images/blobfox/blobfoxsurprised.svg | 247 +++
public/images/blobfox/blobfoxsweating.svg | 785 +++++++
public/images/blobfox/blobfoxtableflip.svg | 351 ++++
public/images/blobfox/blobfoxtea.svg | 314 +++
public/images/blobfox/blobfoxtea_w_.svg | 322 +++
public/images/blobfox/blobfoxteacute.svg | 341 ++++
public/images/blobfox/blobfoxteaglare.svg | 351 ++++
public/images/blobfox/blobfoxteamlem.svg | 322 +++
public/images/blobfox/blobfoxteaowo.svg | 293 +++
public/images/blobfox/blobfoxteaterrified.svg | 338 +++
public/images/blobfox/blobfoxterrified.svg | 307 +++
public/images/blobfox/blobfoxthief.svg | 583 ++++++
public/images/blobfox/blobfoxthink.svg | 241 +++
public/images/blobfox/blobfoxthinkanime.svg | 314 +++
public/images/blobfox/blobfoxthinkgoogly.svg | 248 +++
public/images/blobfox/blobfoxthinking.svg | 253 +++
public/images/blobfox/blobfoxthinkowo.svg | 270 +++
public/images/blobfox/blobfoxthinksmart.svg | 681 +++++++
public/images/blobfox/blobfoxthinksmirk.svg | 249 +++
public/images/blobfox/blobfoxthisisfine.svg | 308 +++
public/images/blobfox/blobfoxthonking.svg | 333 +++
public/images/blobfox/blobfoxthumbsdown.svg | 554 +++++
public/images/blobfox/blobfoxthumbsup.svg | 464 +++++
public/images/blobfox/blobfoxtrash.svg | 588 ++++++
public/images/blobfox/blobfoxtsundere.svg | 336 +++
public/images/blobfox/blobfoxuno.svg | 605 ++++++
public/images/blobfox/blobfoxunoterrified.svg | 529 +++++
public/images/blobfox/blobfoxupset.svg | 299 +++
public/images/blobfox/blobfoxupsidedown.svg | 235 +++
.../images/blobfox/blobfoxupsidedowndizzy.svg | 263 +++
public/images/blobfox/blobfoxuwu.svg | 231 +++
.../images/blobfox/blobfoxwashingmachine.svg | 444 ++++
public/images/blobfox/blobfoxwater.svg | 307 +++
public/images/blobfox/blobfoxwave.svg | 259 +++
public/images/blobfox/blobfoxwet.svg | 298 +++
public/images/blobfox/blobfoxwhaaaat.svg | 456 +++++
public/images/blobfox/blobfoxwhoaa.svg | 812 ++++++++
public/images/blobfox/blobfoxwink.svg | 235 +++
public/images/blobfox/blobfoxwinkmlem.svg | 241 +++
public/images/blobfox/blobfoxworried.svg | 244 +++
public/images/blobfox/blobfoxyandere.svg | 421 ++++
public/images/blobfox/blobfoxyeet.svg | 314 +++
public/images/blobfox/blobfoxyoshieat.svg | 513 +++++
.../images/blobfox/blobfoxyoshieatpixel.svg | 830 ++++++++
public/images/blobfox/blobfoxyoshiend.svg | 67 +
public/images/blobfox/blobfoxyoshimid.svg | 66 +
.../images/blobfox/revblobfoxfloofreach.png | Bin 0 -> 10203 bytes
public/images/neofox/neofox_floof.png | Bin 0 -> 20258 bytes
public/images/protofox/cursor-default.svg | 12 +
public/images/protofox/cursor-pointer.svg | 12 +
public/images/protofox/cursor-wait.svg | 28 +
public/images/protofox/fur-texture.svg | 30 +
src/App.tsx | 200 +-
src/components/EndOSBootAnimation.tsx | 213 ++
src/components/ThemeToggle.css | 109 +
src/components/ThemeToggle.tsx | 63 +-
src/styles/EndOSBootAnimation.css | 523 +++++
src/styles/ThemeToggle.css | 135 ++
src/styles/protofox-theme.css | 225 ++
357 files changed, 129017 insertions(+), 741 deletions(-)
rename {src/pages => .unused}/LoginPage.tsx (100%)
rename {src/components => .unused}/ParallaxEffect.tsx (100%)
rename {src/pages => .unused}/ParallaxPage.tsx (100%)
rename {src/components => .unused}/SwitchNotification.tsx (100%)
rename {src/pages => .unused}/SystemPage.tsx (100%)
rename {src/components => .unused}/SystemStatus.tsx (100%)
rename {src/styles => .unused}/parallax-effect.css (100%)
create mode 100644 public/cursors/protofox-default.svg
create mode 100644 public/cursors/protofox-pointer.svg
create mode 100644 public/images/blobfox/.blobfoxalwayshasbeen.svg
create mode 100644 public/images/blobfox/.blobfoxrageworse.svg
create mode 100644 public/images/blobfox/.blobfoxrealisticbreadsnoot.svg
create mode 100644 public/images/blobfox/.blobfoxrealisticbreadsnootgoogly.svg
create mode 100644 public/images/blobfox/ablobfoxbongo.png
create mode 100644 public/images/blobfox/ablobfoxbongohyper.png
create mode 100644 public/images/blobfox/ablobfoxbongoterrified.png
create mode 100644 public/images/blobfox/ablobfoxdundundun.png
create mode 100644 public/images/blobfox/ablobfoxdundundunowo.png
create mode 100644 public/images/blobfox/ablobfoxhyper.png
create mode 100644 public/images/blobfox/ablobfoxhypercofe.png
create mode 100644 public/images/blobfox/ablobfoxhyperowo.png
create mode 100644 public/images/blobfox/ablobfoxhypersnugowo.png
create mode 100644 public/images/blobfox/ablobfoxhyperthinking.png
create mode 100644 public/images/blobfox/ablobfoxhyperwhaaaat.png
create mode 100644 public/images/blobfox/ablobfoxloading.png
create mode 100644 public/images/blobfox/ablobfoxree.png
create mode 100644 public/images/blobfox/blobfox.svg
create mode 100644 public/images/blobfox/blobfox0_0.svg
create mode 100644 public/images/blobfox/blobfox3c.svg
create mode 100644 public/images/blobfox/blobfox3cevil.svg
create mode 100644 public/images/blobfox/blobfox_w_.svg
create mode 100644 public/images/blobfox/blobfoxangry.svg
create mode 100644 public/images/blobfox/blobfoxangrylaugh.svg
create mode 100644 public/images/blobfox/blobfoxannoyed.svg
create mode 100644 public/images/blobfox/blobfoxartist.svg
create mode 100644 public/images/blobfox/blobfoxastronout.svg
create mode 100644 public/images/blobfox/blobfoxastronoutgun.svg
create mode 100644 public/images/blobfox/blobfoxaww.svg
create mode 100644 public/images/blobfox/blobfoxblush.svg
create mode 100644 public/images/blobfox/blobfoxblushmore.svg
create mode 100644 public/images/blobfox/blobfoxbongo.svg
create mode 100644 public/images/blobfox/blobfoxbongostart.svg
create mode 100644 public/images/blobfox/blobfoxbongoterrified.svg
create mode 100644 public/images/blobfox/blobfoxbongoterrifiedstart.svg
create mode 100644 public/images/blobfox/blobfoxbonk.svg
create mode 100644 public/images/blobfox/blobfoxboop.svg
create mode 100644 public/images/blobfox/blobfoxboop_w_.svg
create mode 100644 public/images/blobfox/blobfoxboopblush.svg
create mode 100644 public/images/blobfox/blobfoxboopcute.svg
create mode 100644 public/images/blobfox/blobfoxboopfloof.svg
create mode 100644 public/images/blobfox/blobfoxboopglare.svg
create mode 100644 public/images/blobfox/blobfoxboopgoogly.svg
create mode 100644 public/images/blobfox/blobfoxboophappy.svg
create mode 100644 public/images/blobfox/blobfoxboopmelt.svg
create mode 100644 public/images/blobfox/blobfoxboopmelthappy.svg
create mode 100644 public/images/blobfox/blobfoxboopmlem.svg
create mode 100644 public/images/blobfox/blobfoxboopowo.svg
create mode 100644 public/images/blobfox/blobfoxboopterrified.svg
create mode 100644 public/images/blobfox/blobfoxbox.svg
create mode 100644 public/images/blobfox/blobfoxbreadpeek.svg
create mode 100644 public/images/blobfox/blobfoxbreadsnoot.svg
create mode 100644 public/images/blobfox/blobfoxbreadsnoot2.svg
create mode 100644 public/images/blobfox/blobfoxbreadsnoot2googly.svg
create mode 100644 public/images/blobfox/blobfoxbreadsnootgoogly.svg
create mode 100644 public/images/blobfox/blobfoxcactus.svg
create mode 100644 public/images/blobfox/blobfoxcamera.svg
create mode 100644 public/images/blobfox/blobfoxcat.svg
create mode 100644 public/images/blobfox/blobfoxcatsnuggle.svg
create mode 100644 public/images/blobfox/blobfoxcatterrified.svg
create mode 100644 public/images/blobfox/blobfoxcheck.svg
create mode 100644 public/images/blobfox/blobfoxcheer.svg
create mode 100644 public/images/blobfox/blobfoxcofe.svg
create mode 100644 public/images/blobfox/blobfoxcofe_w_.svg
create mode 100644 public/images/blobfox/blobfoxcofecute.svg
create mode 100644 public/images/blobfox/blobfoxcofeglare.svg
create mode 100644 public/images/blobfox/blobfoxcofemlem.svg
create mode 100644 public/images/blobfox/blobfoxcofeowo.svg
create mode 100644 public/images/blobfox/blobfoxcofeterrified.svg
create mode 100644 public/images/blobfox/blobfoxcomfy.svg
create mode 100644 public/images/blobfox/blobfoxcomfycofe.svg
create mode 100644 public/images/blobfox/blobfoxcomfycomputer.svg
create mode 100644 public/images/blobfox/blobfoxcomfyevil.svg
create mode 100644 public/images/blobfox/blobfoxcomfyglare.svg
create mode 100644 public/images/blobfox/blobfoxcomfyhappy.svg
create mode 100644 public/images/blobfox/blobfoxcomfymelt.svg
create mode 100644 public/images/blobfox/blobfoxcomfymelthappy.svg
create mode 100644 public/images/blobfox/blobfoxcomfyowo.svg
create mode 100644 public/images/blobfox/blobfoxcomfysip.svg
create mode 100644 public/images/blobfox/blobfoxcomfysleepy.svg
create mode 100644 public/images/blobfox/blobfoxcomfysmirk.svg
create mode 100644 public/images/blobfox/blobfoxcomfysmug.svg
create mode 100644 public/images/blobfox/blobfoxcomfytea.svg
create mode 100644 public/images/blobfox/blobfoxcomfyterrified.svg
create mode 100644 public/images/blobfox/blobfoxcomputer.svg
create mode 100644 public/images/blobfox/blobfoxcomputerowo.svg
create mode 100644 public/images/blobfox/blobfoxcomputerowonotice.svg
create mode 100644 public/images/blobfox/blobfoxconfused.svg
create mode 100644 public/images/blobfox/blobfoxcookie.svg
create mode 100644 public/images/blobfox/blobfoxcookienomfox.svg
create mode 100644 public/images/blobfox/blobfoxcry.svg
create mode 100644 public/images/blobfox/blobfoxcry2.svg
create mode 100644 public/images/blobfox/blobfoxcrylaugh.svg
create mode 100644 public/images/blobfox/blobfoxcryreach.svg
create mode 100644 public/images/blobfox/blobfoxcursedowo.svg
create mode 100644 public/images/blobfox/blobfoxcute.svg
create mode 100644 public/images/blobfox/blobfoxdab.svg
create mode 100644 public/images/blobfox/blobfoxdarkghost.svg
create mode 100644 public/images/blobfox/blobfoxdarkghostfloof.svg
create mode 100644 public/images/blobfox/blobfoxdarkghostspooky.svg
create mode 100644 public/images/blobfox/blobfoxdead.svg
create mode 100644 public/images/blobfox/blobfoxdeadinside.svg
create mode 100644 public/images/blobfox/blobfoxdealwithit.svg
create mode 100644 public/images/blobfox/blobfoxdealwithitfingerguns.svg
create mode 100644 public/images/blobfox/blobfoxdetective.svg
create mode 100644 public/images/blobfox/blobfoxdetermined.svg
create mode 100644 public/images/blobfox/blobfoxdevil.svg
create mode 100644 public/images/blobfox/blobfoxdisapprove.svg
create mode 100644 public/images/blobfox/blobfoxdisgust.svg
create mode 100644 public/images/blobfox/blobfoxdisputed.svg
create mode 100644 public/images/blobfox/blobfoxdizzy.svg
create mode 100644 public/images/blobfox/blobfoxdoubt.svg
create mode 100644 public/images/blobfox/blobfoxdrakedislike.svg
create mode 100644 public/images/blobfox/blobfoxdrakelike.svg
create mode 100644 public/images/blobfox/blobfoxdrool.svg
create mode 100644 public/images/blobfox/blobfoxevil.svg
create mode 100644 public/images/blobfox/blobfoxeyes.svg
create mode 100644 public/images/blobfox/blobfoxfacepalm.svg
create mode 100644 public/images/blobfox/blobfoxfake.svg
create mode 100644 public/images/blobfox/blobfoxfingerguns.svg
create mode 100644 public/images/blobfox/blobfoxfloof.svg
create mode 100644 public/images/blobfox/blobfoxfloof_w_.svg
create mode 100644 public/images/blobfox/blobfoxfloofcofe.svg
create mode 100644 public/images/blobfox/blobfoxfloofcute.svg
create mode 100644 public/images/blobfox/blobfoxfloofdevil.svg
create mode 100644 public/images/blobfox/blobfoxfloofevil.svg
create mode 100644 public/images/blobfox/blobfoxfloofhappy.svg
create mode 100644 public/images/blobfox/blobfoxfloofowo.svg
create mode 100644 public/images/blobfox/blobfoxfloofreach.svg
create mode 100644 public/images/blobfox/blobfoxflooftea.svg
create mode 100644 public/images/blobfox/blobfoxflower.svg
create mode 100644 public/images/blobfox/blobfoxflowerhair.svg
create mode 100644 public/images/blobfox/blobfoxghost.svg
create mode 100644 public/images/blobfox/blobfoxghostfloof.svg
create mode 100644 public/images/blobfox/blobfoxghostspooky.svg
create mode 100644 public/images/blobfox/blobfoxglare.svg
create mode 100644 public/images/blobfox/blobfoxgoogly.svg
create mode 100644 public/images/blobfox/blobfoxgooglycry.svg
create mode 100644 public/images/blobfox/blobfoxgooglymlem.svg
create mode 100644 public/images/blobfox/blobfoxgooglynomlog.svg
create mode 100644 public/images/blobfox/blobfoxgooglytrash.svg
create mode 100644 public/images/blobfox/blobfoxhappy.svg
create mode 100644 public/images/blobfox/blobfoxhappymlem.svg
create mode 100644 public/images/blobfox/blobfoxheadphones.svg
create mode 100644 public/images/blobfox/blobfoxheart.svg
create mode 100644 public/images/blobfox/blobfoxheartcute.svg
create mode 100644 public/images/blobfox/blobfoxhyper.svg
create mode 100644 public/images/blobfox/blobfoxhyper2.svg
create mode 100644 public/images/blobfox/blobfoxinnocent.svg
create mode 100644 public/images/blobfox/blobfoxinnocentcute.svg
create mode 100644 public/images/blobfox/blobfoxinnocentmlem.svg
create mode 100644 public/images/blobfox/blobfoxkirby.svg
create mode 100644 public/images/blobfox/blobfoxkirbyinhale.svg
create mode 100644 public/images/blobfox/blobfoxknife.svg
create mode 100644 public/images/blobfox/blobfoxlaugh.svg
create mode 100644 public/images/blobfox/blobfoxlaughsweat.svg
create mode 100644 public/images/blobfox/blobfoxlewd.svg
create mode 100644 public/images/blobfox/blobfoxlul.svg
create mode 100644 public/images/blobfox/blobfoxlurk.svg
create mode 100644 public/images/blobfox/blobfoxlurk2.svg
create mode 100644 public/images/blobfox/blobfoxlurk2glare.svg
create mode 100644 public/images/blobfox/blobfoxlurk2owo.svg
create mode 100644 public/images/blobfox/blobfoxlurk2owonotice.svg
create mode 100644 public/images/blobfox/blobfoxlurkaww.svg
create mode 100644 public/images/blobfox/blobfoxlurkglare.svg
create mode 100644 public/images/blobfox/blobfoxlurkowo.svg
create mode 100644 public/images/blobfox/blobfoxlurkowonotice.svg
create mode 100644 public/images/blobfox/blobfoxmegumin.svg
create mode 100644 public/images/blobfox/blobfoxmelt.svg
create mode 100644 public/images/blobfox/blobfoxmelt2.svg
create mode 100644 public/images/blobfox/blobfoxmelt3.svg
create mode 100644 public/images/blobfox/blobfoxmeltblush.svg
create mode 100644 public/images/blobfox/blobfoxmelthappy.svg
create mode 100644 public/images/blobfox/blobfoxmeltmlem.svg
create mode 100644 public/images/blobfox/blobfoxmeltreach.svg
create mode 100644 public/images/blobfox/blobfoxmeltsob.svg
create mode 100644 public/images/blobfox/blobfoxmeltsoblove.svg
create mode 100644 public/images/blobfox/blobfoxmischievous.svg
create mode 100644 public/images/blobfox/blobfoxmlem.svg
create mode 100644 public/images/blobfox/blobfoxmsnugglecentercat.svg
create mode 100644 public/images/blobfox/blobfoxmsnugglecenterfox.svg
create mode 100644 public/images/blobfox/blobfoxmsnuggleleftcat.svg
create mode 100644 public/images/blobfox/blobfoxmsnuggleleftfox.svg
create mode 100644 public/images/blobfox/blobfoxmsnugglerightcat.svg
create mode 100644 public/images/blobfox/blobfoxmsnugglerightfox.svg
create mode 100644 public/images/blobfox/blobfoxmsnugglerightnone.svg
create mode 100644 public/images/blobfox/blobfoxnauseated.svg
create mode 100644 public/images/blobfox/blobfoxnerd.svg
create mode 100644 public/images/blobfox/blobfoxninja.svg
create mode 100644 public/images/blobfox/blobfoxnomball.svg
create mode 100644 public/images/blobfox/blobfoxnombook.svg
create mode 100644 public/images/blobfox/blobfoxnombread.svg
create mode 100644 public/images/blobfox/blobfoxnomburger.svg
create mode 100644 public/images/blobfox/blobfoxnomcake.svg
create mode 100644 public/images/blobfox/blobfoxnomcat.svg
create mode 100644 public/images/blobfox/blobfoxnomcookie.svg
create mode 100644 public/images/blobfox/blobfoxnomcorndog.svg
create mode 100644 public/images/blobfox/blobfoxnomcroutons.svg
create mode 100644 public/images/blobfox/blobfoxnomdonut.svg
create mode 100644 public/images/blobfox/blobfoxnomdonutpolice.svg
create mode 100644 public/images/blobfox/blobfoxnomdonutterrified.svg
create mode 100644 public/images/blobfox/blobfoxnomegg.svg
create mode 100644 public/images/blobfox/blobfoxnomfox.svg
create mode 100644 public/images/blobfox/blobfoxnomfoxburger.svg
create mode 100644 public/images/blobfox/blobfoxnomfoxcookie.svg
create mode 100644 public/images/blobfox/blobfoxnomfoxterrified.svg
create mode 100644 public/images/blobfox/blobfoxnomhotdog.svg
create mode 100644 public/images/blobfox/blobfoxnomicecream.svg
create mode 100644 public/images/blobfox/blobfoxnomlog.svg
create mode 100644 public/images/blobfox/blobfoxnommelon.svg
create mode 100644 public/images/blobfox/blobfoxnommobile.svg
create mode 100644 public/images/blobfox/blobfoxnompizza.svg
create mode 100644 public/images/blobfox/blobfoxnompizzaterrified.svg
create mode 100644 public/images/blobfox/blobfoxnomshoe.svg
create mode 100644 public/images/blobfox/blobfoxnomstrawberry.svg
create mode 100644 public/images/blobfox/blobfoxnomtomato.svg
create mode 100644 public/images/blobfox/blobfoxnotamused.svg
create mode 100644 public/images/blobfox/blobfoxnotlikethis.svg
create mode 100644 public/images/blobfox/blobfoxo_o.svg
create mode 100644 public/images/blobfox/blobfoxonepunch.svg
create mode 100644 public/images/blobfox/blobfoxoutage.svg
create mode 100644 public/images/blobfox/blobfoxowo.svg
create mode 100644 public/images/blobfox/blobfoxowomlem.svg
create mode 100644 public/images/blobfox/blobfoxowonotice.svg
create mode 100644 public/images/blobfox/blobfoxpat.svg
create mode 100644 public/images/blobfox/blobfoxpatdeny.svg
create mode 100644 public/images/blobfox/blobfoxpatghost.svg
create mode 100644 public/images/blobfox/blobfoxpatgoogly.svg
create mode 100644 public/images/blobfox/blobfoxpatmelt.svg
create mode 100644 public/images/blobfox/blobfoxpatmelt2.svg
create mode 100644 public/images/blobfox/blobfoxpatmelt3.svg
create mode 100644 public/images/blobfox/blobfoxpatneutral.svg
create mode 100644 public/images/blobfox/blobfoxpatsad.svg
create mode 100644 public/images/blobfox/blobfoxpeek.svg
create mode 100644 public/images/blobfox/blobfoxpeekcomfy.svg
create mode 100644 public/images/blobfox/blobfoxpeekknife.svg
create mode 100644 public/images/blobfox/blobfoxpeekowo.svg
create mode 100644 public/images/blobfox/blobfoxpeekpolice.svg
create mode 100644 public/images/blobfox/blobfoxpirate.svg
create mode 100644 public/images/blobfox/blobfoxpleading.svg
create mode 100644 public/images/blobfox/blobfoxpolice.svg
create mode 100644 public/images/blobfox/blobfoxprelurkcofe.svg
create mode 100644 public/images/blobfox/blobfoxprelurkcroutons.svg
create mode 100644 public/images/blobfox/blobfoxprelurkdonut.svg
create mode 100644 public/images/blobfox/blobfoxrage.svg
create mode 100644 public/images/blobfox/blobfoxragelarge1.svg
create mode 100644 public/images/blobfox/blobfoxragelarge2.svg
create mode 100644 public/images/blobfox/blobfoxragelarge3.svg
create mode 100644 public/images/blobfox/blobfoxragelarge4.svg
create mode 100644 public/images/blobfox/blobfoxreach.svg
create mode 100644 public/images/blobfox/blobfoxreachaww.svg
create mode 100644 public/images/blobfox/blobfoxread.svg
create mode 100644 public/images/blobfox/blobfoxreinderp.svg
create mode 100644 public/images/blobfox/blobfoxretsuko.svg
create mode 100644 public/images/blobfox/blobfoxsad.svg
create mode 100644 public/images/blobfox/blobfoxsanta.svg
create mode 100644 public/images/blobfox/blobfoxscared.svg
create mode 100644 public/images/blobfox/blobfoxscience.svg
create mode 100644 public/images/blobfox/blobfoxshocked.svg
create mode 100644 public/images/blobfox/blobfoxshy.svg
create mode 100644 public/images/blobfox/blobfoxsignbaka.svg
create mode 100644 public/images/blobfox/blobfoxsignbigfan.svg
create mode 100644 public/images/blobfox/blobfoxsignforbidden.svg
create mode 100644 public/images/blobfox/blobfoxsigngenau.svg
create mode 100644 public/images/blobfox/blobfoxsignno.svg
create mode 100644 public/images/blobfox/blobfoxsignnou.svg
create mode 100644 public/images/blobfox/blobfoxsignnoublush.svg
create mode 100644 public/images/blobfox/blobfoxsignsrcpls.svg
create mode 100644 public/images/blobfox/blobfoxsignthx.svg
create mode 100644 public/images/blobfox/blobfoxsignyes.svg
create mode 100644 public/images/blobfox/blobfoxsignyip.svg
create mode 100644 public/images/blobfox/blobfoxsip.svg
create mode 100644 public/images/blobfox/blobfoxsipglare.svg
create mode 100644 public/images/blobfox/blobfoxsipowo.svg
create mode 100644 public/images/blobfox/blobfoxsipsmug.svg
create mode 100644 public/images/blobfox/blobfoxsipterrified.svg
create mode 100644 public/images/blobfox/blobfoxsleep.svg
create mode 100644 public/images/blobfox/blobfoxsleepdab.svg
create mode 100644 public/images/blobfox/blobfoxsmirk.svg
create mode 100644 public/images/blobfox/blobfoxsmug.svg
create mode 100644 public/images/blobfox/blobfoxsnug.svg
create mode 100644 public/images/blobfox/blobfoxsnugglare.svg
create mode 100644 public/images/blobfox/blobfoxsnuggle.svg
create mode 100644 public/images/blobfox/blobfoxsnugowo.svg
create mode 100644 public/images/blobfox/blobfoxsnugterrified.svg
create mode 100644 public/images/blobfox/blobfoxstabbed.svg
create mode 100644 public/images/blobfox/blobfoxsurprised.svg
create mode 100644 public/images/blobfox/blobfoxsweating.svg
create mode 100644 public/images/blobfox/blobfoxtableflip.svg
create mode 100644 public/images/blobfox/blobfoxtea.svg
create mode 100644 public/images/blobfox/blobfoxtea_w_.svg
create mode 100644 public/images/blobfox/blobfoxteacute.svg
create mode 100644 public/images/blobfox/blobfoxteaglare.svg
create mode 100644 public/images/blobfox/blobfoxteamlem.svg
create mode 100644 public/images/blobfox/blobfoxteaowo.svg
create mode 100644 public/images/blobfox/blobfoxteaterrified.svg
create mode 100644 public/images/blobfox/blobfoxterrified.svg
create mode 100644 public/images/blobfox/blobfoxthief.svg
create mode 100644 public/images/blobfox/blobfoxthink.svg
create mode 100644 public/images/blobfox/blobfoxthinkanime.svg
create mode 100644 public/images/blobfox/blobfoxthinkgoogly.svg
create mode 100644 public/images/blobfox/blobfoxthinking.svg
create mode 100644 public/images/blobfox/blobfoxthinkowo.svg
create mode 100644 public/images/blobfox/blobfoxthinksmart.svg
create mode 100644 public/images/blobfox/blobfoxthinksmirk.svg
create mode 100644 public/images/blobfox/blobfoxthisisfine.svg
create mode 100644 public/images/blobfox/blobfoxthonking.svg
create mode 100644 public/images/blobfox/blobfoxthumbsdown.svg
create mode 100644 public/images/blobfox/blobfoxthumbsup.svg
create mode 100644 public/images/blobfox/blobfoxtrash.svg
create mode 100644 public/images/blobfox/blobfoxtsundere.svg
create mode 100644 public/images/blobfox/blobfoxuno.svg
create mode 100644 public/images/blobfox/blobfoxunoterrified.svg
create mode 100644 public/images/blobfox/blobfoxupset.svg
create mode 100644 public/images/blobfox/blobfoxupsidedown.svg
create mode 100644 public/images/blobfox/blobfoxupsidedowndizzy.svg
create mode 100644 public/images/blobfox/blobfoxuwu.svg
create mode 100644 public/images/blobfox/blobfoxwashingmachine.svg
create mode 100644 public/images/blobfox/blobfoxwater.svg
create mode 100644 public/images/blobfox/blobfoxwave.svg
create mode 100644 public/images/blobfox/blobfoxwet.svg
create mode 100644 public/images/blobfox/blobfoxwhaaaat.svg
create mode 100644 public/images/blobfox/blobfoxwhoaa.svg
create mode 100644 public/images/blobfox/blobfoxwink.svg
create mode 100644 public/images/blobfox/blobfoxwinkmlem.svg
create mode 100644 public/images/blobfox/blobfoxworried.svg
create mode 100644 public/images/blobfox/blobfoxyandere.svg
create mode 100644 public/images/blobfox/blobfoxyeet.svg
create mode 100644 public/images/blobfox/blobfoxyoshieat.svg
create mode 100644 public/images/blobfox/blobfoxyoshieatpixel.svg
create mode 100644 public/images/blobfox/blobfoxyoshiend.svg
create mode 100644 public/images/blobfox/blobfoxyoshimid.svg
create mode 100644 public/images/blobfox/revblobfoxfloofreach.png
create mode 100644 public/images/neofox/neofox_floof.png
create mode 100644 public/images/protofox/cursor-default.svg
create mode 100644 public/images/protofox/cursor-pointer.svg
create mode 100644 public/images/protofox/cursor-wait.svg
create mode 100644 public/images/protofox/fur-texture.svg
create mode 100644 src/components/EndOSBootAnimation.tsx
create mode 100644 src/components/ThemeToggle.css
create mode 100644 src/styles/EndOSBootAnimation.css
create mode 100644 src/styles/ThemeToggle.css
create mode 100644 src/styles/protofox-theme.css
diff --git a/src/pages/LoginPage.tsx b/.unused/LoginPage.tsx
similarity index 100%
rename from src/pages/LoginPage.tsx
rename to .unused/LoginPage.tsx
diff --git a/src/components/ParallaxEffect.tsx b/.unused/ParallaxEffect.tsx
similarity index 100%
rename from src/components/ParallaxEffect.tsx
rename to .unused/ParallaxEffect.tsx
diff --git a/src/pages/ParallaxPage.tsx b/.unused/ParallaxPage.tsx
similarity index 100%
rename from src/pages/ParallaxPage.tsx
rename to .unused/ParallaxPage.tsx
diff --git a/src/components/SwitchNotification.tsx b/.unused/SwitchNotification.tsx
similarity index 100%
rename from src/components/SwitchNotification.tsx
rename to .unused/SwitchNotification.tsx
diff --git a/src/pages/SystemPage.tsx b/.unused/SystemPage.tsx
similarity index 100%
rename from src/pages/SystemPage.tsx
rename to .unused/SystemPage.tsx
diff --git a/src/components/SystemStatus.tsx b/.unused/SystemStatus.tsx
similarity index 100%
rename from src/components/SystemStatus.tsx
rename to .unused/SystemStatus.tsx
diff --git a/src/styles/parallax-effect.css b/.unused/parallax-effect.css
similarity index 100%
rename from src/styles/parallax-effect.css
rename to .unused/parallax-effect.css
diff --git a/index.html b/index.html
index 01d5a87..da417c6 100644
--- a/index.html
+++ b/index.html
@@ -2,6 +2,8 @@
+
+
EndofTimee
@@ -11,3 +13,4 @@
+
diff --git a/package-lock.json b/package-lock.json
index 4d9f1dd..0f2950f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -47,8 +47,8 @@
"rimraf": "^5.0.5",
"tailwindcss": "3.4.17",
"typescript": "^5.3.3",
- "vite": "^5.1.0",
- "vitest": "^1.2.2",
+ "vite": "6.2.2",
+ "vitest": "3.0.9",
"web-vitals": "4.2.4",
"wrangler": "^3.28.0"
},
@@ -116,9 +116,9 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.26.7",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.7.tgz",
- "integrity": "sha512-AOPI3D+a8dXnja+iwsUqGRjr1BbZIe771sXdapOtYI531gSqpi92vXivKcq2asu/DFpdl1ceFAKZyRzK2PCVcQ==",
+ "version": "7.26.10",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
+ "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -141,10 +141,26 @@
"node": ">=16.13"
}
},
+ "node_modules/@cloudflare/unenv-preset": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/@cloudflare/unenv-preset/-/unenv-preset-2.0.2.tgz",
+ "integrity": "sha512-nyzYnlZjjV5xT3LizahG1Iu6mnrCaxglJ04rZLpDwlDVDZ7v46lNsfxhV3A/xtfgQuSHmLnc6SVI+KwBpc3Lwg==",
+ "dev": true,
+ "license": "MIT OR Apache-2.0",
+ "peerDependencies": {
+ "unenv": "2.0.0-rc.14",
+ "workerd": "^1.20250124.0"
+ },
+ "peerDependenciesMeta": {
+ "workerd": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@cloudflare/workerd-darwin-64": {
- "version": "1.20250204.0",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250204.0.tgz",
- "integrity": "sha512-HpsgbWEfvdcwuZ8WAZhi1TlSCyyHC3tbghpKsOqGDaQNltyAFAWqa278TPNfcitYf/FmV4961v3eqUE+RFdHNQ==",
+ "version": "1.20250310.0",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-64/-/workerd-darwin-64-1.20250310.0.tgz",
+ "integrity": "sha512-LkLJO6F8lRNaCbK5sQCITi66SyCirDpffRuI5/5iILDJWQU4KVvAOKPvHrd4E5h/WDm9FGd22zMJwky7SxaNjg==",
"cpu": [
"x64"
],
@@ -159,9 +175,9 @@
}
},
"node_modules/@cloudflare/workerd-darwin-arm64": {
- "version": "1.20250204.0",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250204.0.tgz",
- "integrity": "sha512-AJ8Tk7KMJqePlch3SH8oL41ROtsrb07hKRHD6M+FvGC3tLtf26rpteAAMNYKMDYKzFNFUIKZNijYDFZjBFndXQ==",
+ "version": "1.20250310.0",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-darwin-arm64/-/workerd-darwin-arm64-1.20250310.0.tgz",
+ "integrity": "sha512-WythDJQbsU3Ii1hhA7pJZLBQlHezeYWAnaMnv3gS2Exj45oF8G4chFvrO7zCzjlcJXwSeBTtQRJqxw9AiUDhyA==",
"cpu": [
"arm64"
],
@@ -176,9 +192,9 @@
}
},
"node_modules/@cloudflare/workerd-linux-64": {
- "version": "1.20250204.0",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250204.0.tgz",
- "integrity": "sha512-RIUfUSnDC8h73zAa+u1K2Frc7nc+eeQoBBP7SaqsRe6JdX8jfIv/GtWjQWCoj8xQFgLvhpJKZ4sTTTV+AilQbw==",
+ "version": "1.20250310.0",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-64/-/workerd-linux-64-1.20250310.0.tgz",
+ "integrity": "sha512-LbP769tT4/5QBHSj4lCt99QIKTi6cU+wYhLfF7rEtYHBnZS2+nIw9xttAzxeERx/aFrU+mxLcYPFV8fUeVxGng==",
"cpu": [
"x64"
],
@@ -193,9 +209,9 @@
}
},
"node_modules/@cloudflare/workerd-linux-arm64": {
- "version": "1.20250204.0",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250204.0.tgz",
- "integrity": "sha512-8Ql8jDjoIgr2J7oBD01kd9kduUz60njofrBpAOkjCPed15He8e8XHkYaYow3g0xpae4S2ryrPOeoD3M64sRxeg==",
+ "version": "1.20250310.0",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-linux-arm64/-/workerd-linux-arm64-1.20250310.0.tgz",
+ "integrity": "sha512-FzWeKM6id20EMZACaDg0Kkvg1C4lvXZgLBXVI6h6xaXTNFReoyEp4v4eMrRTuja5ec5k+m5iGKjP4/bMWJp9ew==",
"cpu": [
"arm64"
],
@@ -210,9 +226,9 @@
}
},
"node_modules/@cloudflare/workerd-windows-64": {
- "version": "1.20250204.0",
- "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250204.0.tgz",
- "integrity": "sha512-RpDJO3+to+e17X3EWfRCagboZYwBz2fowc+jL53+fd7uD19v3F59H48lw2BDpHJMRyhg6ouWcpM94OhsHv8ecA==",
+ "version": "1.20250310.0",
+ "resolved": "https://registry.npmjs.org/@cloudflare/workerd-windows-64/-/workerd-windows-64-1.20250310.0.tgz",
+ "integrity": "sha512-04OgaDzm8/8nkjF3tovB+WywZLjSdAHCQT2omXKCwH3EDd1kpd8vvzE1pErtdIyKCOf9/sArY4BhPdxRj7ijlg==",
"cpu": [
"x64"
],
@@ -668,9 +684,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz",
- "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz",
+ "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==",
"cpu": [
"ppc64"
],
@@ -681,13 +697,13 @@
"aix"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz",
- "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz",
+ "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==",
"cpu": [
"arm"
],
@@ -698,13 +714,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz",
- "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz",
+ "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==",
"cpu": [
"arm64"
],
@@ -715,13 +731,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz",
- "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz",
+ "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==",
"cpu": [
"x64"
],
@@ -732,13 +748,13 @@
"android"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz",
- "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz",
+ "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==",
"cpu": [
"arm64"
],
@@ -749,13 +765,13 @@
"darwin"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz",
- "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz",
+ "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==",
"cpu": [
"x64"
],
@@ -766,13 +782,13 @@
"darwin"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz",
- "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz",
+ "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==",
"cpu": [
"arm64"
],
@@ -783,13 +799,13 @@
"freebsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz",
- "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz",
+ "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==",
"cpu": [
"x64"
],
@@ -800,13 +816,13 @@
"freebsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz",
- "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz",
+ "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==",
"cpu": [
"arm"
],
@@ -817,13 +833,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz",
- "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz",
+ "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==",
"cpu": [
"arm64"
],
@@ -834,13 +850,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz",
- "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz",
+ "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==",
"cpu": [
"ia32"
],
@@ -851,13 +867,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz",
- "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz",
+ "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==",
"cpu": [
"loong64"
],
@@ -868,13 +884,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz",
- "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz",
+ "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==",
"cpu": [
"mips64el"
],
@@ -885,13 +901,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz",
- "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz",
+ "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==",
"cpu": [
"ppc64"
],
@@ -902,13 +918,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz",
- "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz",
+ "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==",
"cpu": [
"riscv64"
],
@@ -919,13 +935,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz",
- "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz",
+ "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==",
"cpu": [
"s390x"
],
@@ -936,13 +952,13 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz",
- "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz",
+ "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==",
"cpu": [
"x64"
],
@@ -953,13 +969,30 @@
"linux"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz",
+ "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz",
- "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz",
+ "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==",
"cpu": [
"x64"
],
@@ -970,13 +1003,30 @@
"netbsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
+ }
+ },
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz",
+ "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz",
- "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz",
+ "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==",
"cpu": [
"x64"
],
@@ -987,13 +1037,13 @@
"openbsd"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz",
- "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz",
+ "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==",
"cpu": [
"x64"
],
@@ -1004,13 +1054,13 @@
"sunos"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz",
- "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz",
+ "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==",
"cpu": [
"arm64"
],
@@ -1021,13 +1071,13 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz",
- "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz",
+ "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==",
"cpu": [
"ia32"
],
@@ -1038,13 +1088,13 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz",
- "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz",
+ "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==",
"cpu": [
"x64"
],
@@ -1055,7 +1105,7 @@
"win32"
],
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@eslint-community/eslint-utils": {
@@ -2781,122 +2831,156 @@
}
},
"node_modules/@vitest/expect": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.1.tgz",
- "integrity": "sha512-jXL+9+ZNIJKruofqXuuTClf44eSpcHlgj3CiuNihUF3Ioujtmc0zIa3UJOW5RjDK1YLBJZnWBlPuqhYycLioog==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.9.tgz",
+ "integrity": "sha512-5eCqRItYgIML7NNVgJj6TVCmdzE7ZVgJhruW0ziSQV4V7PvLkDL1bBkBdcTs/VuIz0IxPb5da1IDSqc1TR9eig==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/spy": "1.6.1",
- "@vitest/utils": "1.6.1",
- "chai": "^4.3.10"
+ "@vitest/spy": "3.0.9",
+ "@vitest/utils": "3.0.9",
+ "chai": "^5.2.0",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/expect/node_modules/@vitest/utils": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz",
+ "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "3.0.9",
+ "loupe": "^3.1.3",
+ "tinyrainbow": "^2.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/expect/node_modules/loupe": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
+ "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vitest/mocker": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.9.tgz",
+ "integrity": "sha512-ryERPIBOnvevAkTq+L1lD+DTFBRcjueL9lOUfXsLfwP92h4e+Heb+PjiqS3/OURWPtywfafK0kj++yDFjWUmrA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/spy": "3.0.9",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.17"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^5.0.0 || ^6.0.0"
+ },
+ "peerDependenciesMeta": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/@vitest/pretty-format": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz",
+ "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tinyrainbow": "^2.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/runner": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.6.1.tgz",
- "integrity": "sha512-3nSnYXkVkf3mXFfE7vVyPmi3Sazhb/2cfZGGs0JRzFsPFvAMBEcrweV1V1GsrstdXeKCTXlJbvnQwGWgEIHmOA==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.9.tgz",
+ "integrity": "sha512-NX9oUXgF9HPfJSwl8tUZCMP1oGx2+Sf+ru6d05QjzQz4OwWg0psEzwY6VexP2tTHWdOkhKHUIZH+fS6nA7jfOw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/utils": "1.6.1",
- "p-limit": "^5.0.0",
- "pathe": "^1.1.1"
+ "@vitest/utils": "3.0.9",
+ "pathe": "^2.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vitest/runner/node_modules/p-limit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz",
- "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==",
+ "node_modules/@vitest/runner/node_modules/@vitest/utils": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz",
+ "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==",
"dev": true,
"license": "MIT",
"dependencies": {
- "yocto-queue": "^1.0.0"
- },
- "engines": {
- "node": ">=18"
+ "@vitest/pretty-format": "3.0.9",
+ "loupe": "^3.1.3",
+ "tinyrainbow": "^2.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vitest/runner/node_modules/yocto-queue": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz",
- "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==",
+ "node_modules/@vitest/runner/node_modules/loupe": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
+ "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12.20"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "license": "MIT"
+ },
+ "node_modules/@vitest/runner/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/@vitest/snapshot": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz",
- "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.9.tgz",
+ "integrity": "sha512-AiLUiuZ0FuA+/8i19mTYd+re5jqjEc2jZbgJ2up0VY0Ddyyxg/uUtBDpIFAy4uzKaQxOW8gMgBdAJJ2ydhu39A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "pretty-format": "^29.7.0"
+ "@vitest/pretty-format": "3.0.9",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
- "node_modules/@vitest/snapshot/node_modules/ansi-styles": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
- "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/@vitest/snapshot/node_modules/pretty-format": {
- "version": "29.7.0",
- "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz",
- "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@jest/schemas": "^29.6.3",
- "ansi-styles": "^5.0.0",
- "react-is": "^18.0.0"
- },
- "engines": {
- "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
- }
- },
- "node_modules/@vitest/snapshot/node_modules/react-is": {
- "version": "18.3.1",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
- "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "node_modules/@vitest/snapshot/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
"dev": true,
"license": "MIT"
},
"node_modules/@vitest/spy": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.1.tgz",
- "integrity": "sha512-MGcMmpGkZebsMZhbQKkAf9CX5zGvjkBTqf8Zx3ApYWXr3wG+QvEu2eXWfnIIWYSJExIp4V9FCKDEeygzkYrXMw==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.9.tgz",
+ "integrity": "sha512-/CcK2UDl0aQ2wtkp3YVWldrpLRNCfVcIOFGlVGKO4R5eajsH393Z1yiXLVQ7vWsj26JOEjeZI0x5sm5P4OGUNQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "tinyspy": "^2.2.0"
+ "tinyspy": "^3.0.2"
},
"funding": {
"url": "https://opencollective.com/vitest"
@@ -3177,13 +3261,13 @@
}
},
"node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "*"
+ "node": ">=12"
}
},
"node_modules/asynckit": {
@@ -3460,24 +3544,29 @@
"license": "CC-BY-4.0"
},
"node_modules/chai": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz",
- "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz",
+ "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.3",
- "deep-eql": "^4.1.3",
- "get-func-name": "^2.0.2",
- "loupe": "^2.3.6",
- "pathval": "^1.1.1",
- "type-detect": "^4.1.0"
+ "assertion-error": "^2.0.1",
+ "check-error": "^2.1.1",
+ "deep-eql": "^5.0.1",
+ "loupe": "^3.1.0",
+ "pathval": "^2.0.0"
},
"engines": {
- "node": ">=4"
+ "node": ">=12"
}
},
+ "node_modules/chai/node_modules/loupe": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
+ "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -3496,16 +3585,13 @@
}
},
"node_modules/check-error": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz",
- "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz",
+ "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "get-func-name": "^2.0.2"
- },
"engines": {
- "node": "*"
+ "node": ">= 16"
}
},
"node_modules/chokidar": {
@@ -3760,13 +3846,6 @@
"dev": true,
"license": "MIT"
},
- "node_modules/confbox": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz",
- "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/conventional-changelog-angular": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz",
@@ -4024,14 +4103,11 @@
"license": "MIT"
},
"node_modules/deep-eql": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz",
- "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==",
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz",
+ "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "type-detect": "^4.0.0"
- },
"engines": {
"node": ">=6"
}
@@ -4323,6 +4399,13 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/es-module-lexer": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
+ "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
@@ -4337,9 +4420,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.21.5",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz",
- "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==",
+ "version": "0.25.1",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
+ "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -4347,32 +4430,34 @@
"esbuild": "bin/esbuild"
},
"engines": {
- "node": ">=12"
+ "node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.21.5",
- "@esbuild/android-arm": "0.21.5",
- "@esbuild/android-arm64": "0.21.5",
- "@esbuild/android-x64": "0.21.5",
- "@esbuild/darwin-arm64": "0.21.5",
- "@esbuild/darwin-x64": "0.21.5",
- "@esbuild/freebsd-arm64": "0.21.5",
- "@esbuild/freebsd-x64": "0.21.5",
- "@esbuild/linux-arm": "0.21.5",
- "@esbuild/linux-arm64": "0.21.5",
- "@esbuild/linux-ia32": "0.21.5",
- "@esbuild/linux-loong64": "0.21.5",
- "@esbuild/linux-mips64el": "0.21.5",
- "@esbuild/linux-ppc64": "0.21.5",
- "@esbuild/linux-riscv64": "0.21.5",
- "@esbuild/linux-s390x": "0.21.5",
- "@esbuild/linux-x64": "0.21.5",
- "@esbuild/netbsd-x64": "0.21.5",
- "@esbuild/openbsd-x64": "0.21.5",
- "@esbuild/sunos-x64": "0.21.5",
- "@esbuild/win32-arm64": "0.21.5",
- "@esbuild/win32-ia32": "0.21.5",
- "@esbuild/win32-x64": "0.21.5"
+ "@esbuild/aix-ppc64": "0.25.1",
+ "@esbuild/android-arm": "0.25.1",
+ "@esbuild/android-arm64": "0.25.1",
+ "@esbuild/android-x64": "0.25.1",
+ "@esbuild/darwin-arm64": "0.25.1",
+ "@esbuild/darwin-x64": "0.25.1",
+ "@esbuild/freebsd-arm64": "0.25.1",
+ "@esbuild/freebsd-x64": "0.25.1",
+ "@esbuild/linux-arm": "0.25.1",
+ "@esbuild/linux-arm64": "0.25.1",
+ "@esbuild/linux-ia32": "0.25.1",
+ "@esbuild/linux-loong64": "0.25.1",
+ "@esbuild/linux-mips64el": "0.25.1",
+ "@esbuild/linux-ppc64": "0.25.1",
+ "@esbuild/linux-riscv64": "0.25.1",
+ "@esbuild/linux-s390x": "0.25.1",
+ "@esbuild/linux-x64": "0.25.1",
+ "@esbuild/netbsd-arm64": "0.25.1",
+ "@esbuild/netbsd-x64": "0.25.1",
+ "@esbuild/openbsd-arm64": "0.25.1",
+ "@esbuild/openbsd-x64": "0.25.1",
+ "@esbuild/sunos-x64": "0.25.1",
+ "@esbuild/win32-arm64": "0.25.1",
+ "@esbuild/win32-ia32": "0.25.1",
+ "@esbuild/win32-x64": "0.25.1"
}
},
"node_modules/escalade": {
@@ -4687,6 +4772,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/expect-type": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.0.tgz",
+ "integrity": "sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
+ "node_modules/exsolve": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.4.tgz",
+ "integrity": "sha512-xsZH6PXaER4XoV+NiT7JHp1bJodJVT+cxeSH1G0f0tlT0lJqYuHUP3bUx2HtfTDvOagMINYp8rsqusxud3RXhw==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -6415,23 +6517,6 @@
"node": ">=18.0.0"
}
},
- "node_modules/local-pkg": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz",
- "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mlly": "^1.7.3",
- "pkg-types": "^1.2.1"
- },
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
"node_modules/locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -6816,9 +6901,9 @@
}
},
"node_modules/miniflare": {
- "version": "3.20250204.0",
- "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20250204.0.tgz",
- "integrity": "sha512-f7tezEkOvVRVHIVul2EbTyKvWJCXpTDRAOxTxtD4N92+YI8PC2P8AvO4Z30vlN61r5Pje33fTBG8G1fEwSZIqQ==",
+ "version": "3.20250310.1",
+ "resolved": "https://registry.npmjs.org/miniflare/-/miniflare-3.20250310.1.tgz",
+ "integrity": "sha512-c9QPrgBUFzjL4pYvW6GIUw+NqeYlZGVHASKJqjIXB1WVsl14nYfpfHphYK8tluKaBqwA9NFyO5dC2zatJkC/mA==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -6828,8 +6913,8 @@
"exit-hook": "2.2.1",
"glob-to-regexp": "0.4.1",
"stoppable": "1.1.0",
- "undici": "^5.28.4",
- "workerd": "1.20250204.0",
+ "undici": "^5.28.5",
+ "workerd": "1.20250310.0",
"ws": "8.18.0",
"youch": "3.2.3",
"zod": "3.22.3"
@@ -6892,26 +6977,6 @@
"node": ">=16 || 14 >=14.17"
}
},
- "node_modules/mlly": {
- "version": "1.7.4",
- "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz",
- "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "acorn": "^8.14.0",
- "pathe": "^2.0.1",
- "pkg-types": "^1.3.0",
- "ufo": "^1.5.4"
- }
- },
- "node_modules/mlly/node_modules/pathe": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
- "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/mrmime": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz",
@@ -7122,9 +7187,9 @@
}
},
"node_modules/ohash": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.4.tgz",
- "integrity": "sha512-FlDryZAahJmEF3VR3w1KogSEdWX3WhA5GPakFx4J81kEAiHyLMpdLLElS8n8dfNadMgAne/MywcvmogzscVt4g==",
+ "version": "2.0.11",
+ "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz",
+ "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==",
"dev": true,
"license": "MIT"
},
@@ -7345,13 +7410,13 @@
"license": "MIT"
},
"node_modules/pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz",
+ "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": "*"
+ "node": ">= 14.16"
}
},
"node_modules/picocolors": {
@@ -7407,25 +7472,6 @@
"node": ">= 6"
}
},
- "node_modules/pkg-types": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz",
- "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "confbox": "^0.1.8",
- "mlly": "^1.7.4",
- "pathe": "^2.0.1"
- }
- },
- "node_modules/pkg-types/node_modules/pathe": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz",
- "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/possible-typed-array-names": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
@@ -9005,26 +9051,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/strip-literal": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.1.tgz",
- "integrity": "sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "js-tokens": "^9.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/antfu"
- }
- },
- "node_modules/strip-literal/node_modules/js-tokens": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
- "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/sucrase": {
"version": "3.35.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
@@ -9206,10 +9232,27 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/tinyexec": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz",
+ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/tinypool": {
- "version": "0.8.4",
- "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz",
- "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz",
+ "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^18.0.0 || >=20.0.0"
+ }
+ },
+ "node_modules/tinyrainbow": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz",
+ "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9217,9 +9260,9 @@
}
},
"node_modules/tinyspy": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz",
- "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz",
+ "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -9329,16 +9372,6 @@
"node": ">= 0.8.0"
}
},
- "node_modules/type-detect": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz",
- "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/type-fest": {
"version": "0.20.2",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
@@ -9374,9 +9407,9 @@
"license": "MIT"
},
"node_modules/undici": {
- "version": "5.28.5",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
- "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
+ "version": "5.29.0",
+ "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz",
+ "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -9394,19 +9427,26 @@
"license": "MIT"
},
"node_modules/unenv": {
- "version": "2.0.0-rc.1",
- "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.1.tgz",
- "integrity": "sha512-PU5fb40H8X149s117aB4ytbORcCvlASdtF97tfls4BPIyj4PeVxvpSuy1jAptqYHqB0vb2w2sHvzM0XWcp2OKg==",
+ "version": "2.0.0-rc.14",
+ "resolved": "https://registry.npmjs.org/unenv/-/unenv-2.0.0-rc.14.tgz",
+ "integrity": "sha512-od496pShMen7nOy5VmVJCnq8rptd45vh6Nx/r2iPbrba6pa6p+tS2ywuIHRZ/OBvSbQZB0kWvpO9XBNVFXHD3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"defu": "^6.1.4",
- "mlly": "^1.7.4",
- "ohash": "^1.1.4",
- "pathe": "^1.1.2",
+ "exsolve": "^1.0.1",
+ "ohash": "^2.0.10",
+ "pathe": "^2.0.3",
"ufo": "^1.5.4"
}
},
+ "node_modules/unenv/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/universalify": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
@@ -9488,21 +9528,21 @@
}
},
"node_modules/vite": {
- "version": "5.4.14",
- "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz",
- "integrity": "sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA==",
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.2.tgz",
+ "integrity": "sha512-yW7PeMM+LkDzc7CgJuRLMW2Jz0FxMOsVJ8Lv3gpgW9WLcb9cTW+121UEr1hvmfR7w3SegR5ItvYyzVz1vxNJgQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "esbuild": "^0.21.3",
- "postcss": "^8.4.43",
- "rollup": "^4.20.0"
+ "esbuild": "^0.25.0",
+ "postcss": "^8.5.3",
+ "rollup": "^4.30.1"
},
"bin": {
"vite": "bin/vite.js"
},
"engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
@@ -9511,19 +9551,25 @@
"fsevents": "~2.3.3"
},
"peerDependencies": {
- "@types/node": "^18.0.0 || >=20.0.0",
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "jiti": ">=1.21.0",
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
"sass-embedded": "*",
"stylus": "*",
"sugarss": "*",
- "terser": "^5.4.0"
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
+ "jiti": {
+ "optional": true
+ },
"less": {
"optional": true
},
@@ -9544,74 +9590,117 @@
},
"terser": {
"optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
}
}
},
"node_modules/vite-node": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.6.1.tgz",
- "integrity": "sha512-YAXkfvGtuTzwWbDSACdJSg4A4DZiAqckWe90Zapc/sEX3XvHcw1NdurM/6od8J207tSDqNbSsgdCacBgvJKFuA==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.9.tgz",
+ "integrity": "sha512-w3Gdx7jDcuT9cNn9jExXgOyKmf5UOTb6WMHz8LGAm54eS1Elf5OuBhCxl6zJxGhEeIkgsE1WbHuoL0mj/UXqXg==",
"dev": true,
"license": "MIT",
"dependencies": {
"cac": "^6.7.14",
- "debug": "^4.3.4",
- "pathe": "^1.1.1",
- "picocolors": "^1.0.0",
- "vite": "^5.0.0"
+ "debug": "^4.4.0",
+ "es-module-lexer": "^1.6.0",
+ "pathe": "^2.0.3",
+ "vite": "^5.0.0 || ^6.0.0"
},
"bin": {
"vite-node": "vite-node.mjs"
},
"engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
}
},
+ "node_modules/vite-node/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/vite/node_modules/postcss": {
+ "version": "8.5.3",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
+ "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.8",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
"node_modules/vitest": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.6.1.tgz",
- "integrity": "sha512-Ljb1cnSJSivGN0LqXd/zmDbWEM0RNNg2t1QW/XUhYl/qPqyu7CsqeWtqQXHVaJsecLPuDoak2oJcZN2QoRIOag==",
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.9.tgz",
+ "integrity": "sha512-BbcFDqNyBlfSpATmTtXOAOj71RNKDDvjBM/uPfnxxVGrG+FSH2RQIwgeEngTaTkuU/h0ScFvf+tRcKfYXzBybQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@vitest/expect": "1.6.1",
- "@vitest/runner": "1.6.1",
- "@vitest/snapshot": "1.6.1",
- "@vitest/spy": "1.6.1",
- "@vitest/utils": "1.6.1",
- "acorn-walk": "^8.3.2",
- "chai": "^4.3.10",
- "debug": "^4.3.4",
- "execa": "^8.0.1",
- "local-pkg": "^0.5.0",
- "magic-string": "^0.30.5",
- "pathe": "^1.1.1",
- "picocolors": "^1.0.0",
- "std-env": "^3.5.0",
- "strip-literal": "^2.0.0",
- "tinybench": "^2.5.1",
- "tinypool": "^0.8.3",
- "vite": "^5.0.0",
- "vite-node": "1.6.1",
- "why-is-node-running": "^2.2.2"
+ "@vitest/expect": "3.0.9",
+ "@vitest/mocker": "3.0.9",
+ "@vitest/pretty-format": "^3.0.9",
+ "@vitest/runner": "3.0.9",
+ "@vitest/snapshot": "3.0.9",
+ "@vitest/spy": "3.0.9",
+ "@vitest/utils": "3.0.9",
+ "chai": "^5.2.0",
+ "debug": "^4.4.0",
+ "expect-type": "^1.1.0",
+ "magic-string": "^0.30.17",
+ "pathe": "^2.0.3",
+ "std-env": "^3.8.0",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^0.3.2",
+ "tinypool": "^1.0.2",
+ "tinyrainbow": "^2.0.0",
+ "vite": "^5.0.0 || ^6.0.0",
+ "vite-node": "3.0.9",
+ "why-is-node-running": "^2.3.0"
},
"bin": {
"vitest": "vitest.mjs"
},
"engines": {
- "node": "^18.0.0 || >=20.0.0"
+ "node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
"@edge-runtime/vm": "*",
- "@types/node": "^18.0.0 || >=20.0.0",
- "@vitest/browser": "1.6.1",
- "@vitest/ui": "1.6.1",
+ "@types/debug": "^4.1.12",
+ "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
+ "@vitest/browser": "3.0.9",
+ "@vitest/ui": "3.0.9",
"happy-dom": "*",
"jsdom": "*"
},
@@ -9619,6 +9708,9 @@
"@edge-runtime/vm": {
"optional": true
},
+ "@types/debug": {
+ "optional": true
+ },
"@types/node": {
"optional": true
},
@@ -9636,149 +9728,34 @@
}
}
},
- "node_modules/vitest/node_modules/execa": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz",
- "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==",
+ "node_modules/vitest/node_modules/@vitest/utils": {
+ "version": "3.0.9",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.9.tgz",
+ "integrity": "sha512-ilHM5fHhZ89MCp5aAaM9uhfl1c2JdxVxl3McqsdVyVNN6JffnEen8UMCdRTzOhGXNQGo5GNL9QugHrz727Wnng==",
"dev": true,
"license": "MIT",
"dependencies": {
- "cross-spawn": "^7.0.3",
- "get-stream": "^8.0.1",
- "human-signals": "^5.0.0",
- "is-stream": "^3.0.0",
- "merge-stream": "^2.0.0",
- "npm-run-path": "^5.1.0",
- "onetime": "^6.0.0",
- "signal-exit": "^4.1.0",
- "strip-final-newline": "^3.0.0"
- },
- "engines": {
- "node": ">=16.17"
+ "@vitest/pretty-format": "3.0.9",
+ "loupe": "^3.1.3",
+ "tinyrainbow": "^2.0.0"
},
"funding": {
- "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/vitest/node_modules/get-stream": {
- "version": "8.0.1",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz",
- "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==",
+ "node_modules/vitest/node_modules/loupe": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz",
+ "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==",
"dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=16"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "license": "MIT"
},
- "node_modules/vitest/node_modules/human-signals": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz",
- "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==",
+ "node_modules/vitest/node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
"dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": ">=16.17.0"
- }
- },
- "node_modules/vitest/node_modules/is-stream": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz",
- "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/mimic-fn": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz",
- "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/npm-run-path": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz",
- "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-key": "^4.0.0"
- },
- "engines": {
- "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/onetime": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz",
- "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mimic-fn": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/path-key": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz",
- "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/vitest/node_modules/signal-exit": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
- "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=14"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/vitest/node_modules/strip-final-newline": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz",
- "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
+ "license": "MIT"
},
"node_modules/w3c-xmlserializer": {
"version": "5.0.0",
@@ -9951,9 +9928,9 @@
}
},
"node_modules/workerd": {
- "version": "1.20250204.0",
- "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250204.0.tgz",
- "integrity": "sha512-zcKufjVFsQMiD3/acg1Ix00HIMCkXCrDxQXYRDn/1AIz3QQGkmbVDwcUk1Ki2jBUoXmBCMsJdycRucgMVEypWg==",
+ "version": "1.20250310.0",
+ "resolved": "https://registry.npmjs.org/workerd/-/workerd-1.20250310.0.tgz",
+ "integrity": "sha512-bAaZ9Bmts3mArbIrXYAtr+ZRsAJAAUEsCtvwfBavIYXaZ5sgdEOJBEiBbvsHp6CsVObegOM85tIWpYLpbTxQrQ==",
"dev": true,
"hasInstallScript": true,
"license": "Apache-2.0",
@@ -9964,29 +9941,30 @@
"node": ">=16"
},
"optionalDependencies": {
- "@cloudflare/workerd-darwin-64": "1.20250204.0",
- "@cloudflare/workerd-darwin-arm64": "1.20250204.0",
- "@cloudflare/workerd-linux-64": "1.20250204.0",
- "@cloudflare/workerd-linux-arm64": "1.20250204.0",
- "@cloudflare/workerd-windows-64": "1.20250204.0"
+ "@cloudflare/workerd-darwin-64": "1.20250310.0",
+ "@cloudflare/workerd-darwin-arm64": "1.20250310.0",
+ "@cloudflare/workerd-linux-64": "1.20250310.0",
+ "@cloudflare/workerd-linux-arm64": "1.20250310.0",
+ "@cloudflare/workerd-windows-64": "1.20250310.0"
}
},
"node_modules/wrangler": {
- "version": "3.108.0",
- "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.108.0.tgz",
- "integrity": "sha512-w8J0VtDqn8F94qw+HnxFbri7MMdT/to5/w1QHAjR//tIHkilKAUFNaEF3GDEJREvUG3iHuawrH2p5ATTHnFc/Q==",
+ "version": "3.114.2",
+ "resolved": "https://registry.npmjs.org/wrangler/-/wrangler-3.114.2.tgz",
+ "integrity": "sha512-sOaHzB+5i8TXhbfAjWfXdEczuDxeU2M7cSYHWmvvG/oRIajcMGCX98qsUXn0SPDrQwTRHFNFR/OruPiIOj8SHA==",
"dev": true,
"license": "MIT OR Apache-2.0",
"dependencies": {
"@cloudflare/kv-asset-handler": "0.3.4",
+ "@cloudflare/unenv-preset": "2.0.2",
"@esbuild-plugins/node-globals-polyfill": "0.2.3",
"@esbuild-plugins/node-modules-polyfill": "0.2.2",
"blake3-wasm": "2.1.5",
"esbuild": "0.17.19",
- "miniflare": "3.20250204.0",
+ "miniflare": "3.20250310.1",
"path-to-regexp": "6.3.0",
- "unenv": "2.0.0-rc.1",
- "workerd": "1.20250204.0"
+ "unenv": "2.0.0-rc.14",
+ "workerd": "1.20250310.0"
},
"bin": {
"wrangler": "bin/wrangler.js",
@@ -10000,7 +9978,7 @@
"sharp": "^0.33.5"
},
"peerDependencies": {
- "@cloudflare/workers-types": "^4.20250204.0"
+ "@cloudflare/workers-types": "^4.20250310.0"
},
"peerDependenciesMeta": {
"@cloudflare/workers-types": {
diff --git a/package.json b/package.json
index 29ed483..637c474 100644
--- a/package.json
+++ b/package.json
@@ -1,90 +1,90 @@
{
- "name": "personal-site",
- "private": true,
- "version": "1.0.0",
- "type": "module",
- "scripts": {
- "start": "vite",
- "lint": "eslint . --ext ts,tsx --fix",
- "format": "prettier --write \"src/**/*.{ts,tsx,css}\"",
- "build": "tsc \u0026\u0026 vite build",
- "type-check": "tsc --noEmit",
- "dev": "vite --host 0.0.0.0",
- "clean": "rimraf dist node_modules/.cache",
- "preview": "vite preview"
- },
- "dependencies": {
- "@radix-ui/react-slot": "^1.0.2",
- "class-variance-authority": "^0.7.0",
- "clsx": "^2.1.0",
- "itty-router": "^4.0.27",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router-dom": "^6.22.0",
- "tailwind-merge": "^2.2.1",
- "zustand": "5.0.3"
- },
- "devDependencies": {
- "@cloudflare/workers-types": "4.20250129.0",
- "@commitlint/cli": "^18.6.0",
- "@commitlint/config-conventional": "^18.6.0",
- "@testing-library/jest-dom": "^6.4.2",
- "@testing-library/react": "^14.2.1",
- "@testing-library/user-event": "^14.5.2",
- "@types/node": "20.17.16",
- "@types/react": "18.3.18",
- "@types/react-dom": "18.3.5",
- "@typescript-eslint/eslint-plugin": "^6.21.0",
- "@typescript-eslint/parser": "^6.21.0",
- "@vitejs/plugin-react-swc": "^3.5.0",
- "@vitest/ui": "^1.2.2",
- "autoprefixer": "10.4.20",
- "eslint": "^8.56.0",
- "eslint-config-prettier": "^9.1.0",
- "eslint-plugin-react-hooks": "^4.6.0",
- "eslint-plugin-react-refresh": "^0.4.5",
- "husky": "^9.0.10",
- "jsdom": "^24.0.0",
- "lint-staged": "^15.2.2",
- "lucide-react": "0.474.0",
- "postcss": "8.5.1",
- "prettier": "^3.2.5",
- "prettier-plugin-tailwindcss": "^0.5.11",
- "rimraf": "^5.0.5",
- "tailwindcss": "3.4.17",
- "typescript": "^5.3.3",
- "vite": "^5.1.0",
- "vitest": "^1.2.2",
- "web-vitals": "4.2.4",
- "wrangler": "^3.28.0"
- },
- "lint-staged": {
- "*.{ts,tsx}": [
- "eslint --fix",
- "prettier --write"
- ],
- "*.{html,css,json,md}": [
- "prettier --write"
- ]
- },
- "commitlint": {
- "extends": [
- "@commitlint/config-conventional"
- ]
- },
- "engines": {
- "node": "\u003e=18.0.0"
- },
- "browserslist": {
- "production": [
- "\u003e0.2%",
- "not dead",
- "not op_mini all"
- ],
- "development": [
- "last 1 chrome version",
- "last 1 firefox version",
- "last 1 safari version"
- ]
- }
+ "name": "personal-site",
+ "private": true,
+ "version": "1.0.0",
+ "type": "module",
+ "scripts": {
+ "start": "vite",
+ "lint": "eslint . --ext ts,tsx --fix",
+ "format": "prettier --write \"src/**/*.{ts,tsx,css}\"",
+ "build": "tsc && vite build",
+ "type-check": "tsc --noEmit",
+ "dev": "vite --host 0.0.0.0",
+ "clean": "rimraf dist node_modules/.cache",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "@radix-ui/react-slot": "^1.0.2",
+ "class-variance-authority": "^0.7.0",
+ "clsx": "^2.1.0",
+ "itty-router": "^4.0.27",
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-router-dom": "^6.22.0",
+ "tailwind-merge": "^2.2.1",
+ "zustand": "5.0.3"
+ },
+ "devDependencies": {
+ "@cloudflare/workers-types": "4.20250129.0",
+ "@commitlint/cli": "^18.6.0",
+ "@commitlint/config-conventional": "^18.6.0",
+ "@testing-library/jest-dom": "^6.4.2",
+ "@testing-library/react": "^14.2.1",
+ "@testing-library/user-event": "^14.5.2",
+ "@types/node": "20.17.16",
+ "@types/react": "18.3.18",
+ "@types/react-dom": "18.3.5",
+ "@typescript-eslint/eslint-plugin": "^6.21.0",
+ "@typescript-eslint/parser": "^6.21.0",
+ "@vitejs/plugin-react-swc": "^3.5.0",
+ "@vitest/ui": "^1.2.2",
+ "autoprefixer": "10.4.20",
+ "eslint": "^8.56.0",
+ "eslint-config-prettier": "^9.1.0",
+ "eslint-plugin-react-hooks": "^4.6.0",
+ "eslint-plugin-react-refresh": "^0.4.5",
+ "husky": "^9.0.10",
+ "jsdom": "^24.0.0",
+ "lint-staged": "^15.2.2",
+ "lucide-react": "0.474.0",
+ "postcss": "8.5.1",
+ "prettier": "^3.2.5",
+ "prettier-plugin-tailwindcss": "^0.5.11",
+ "rimraf": "^5.0.5",
+ "tailwindcss": "3.4.17",
+ "typescript": "^5.3.3",
+ "vite": "6.2.2",
+ "vitest": "3.0.9",
+ "web-vitals": "4.2.4",
+ "wrangler": "^3.28.0"
+ },
+ "lint-staged": {
+ "*.{ts,tsx}": [
+ "eslint --fix",
+ "prettier --write"
+ ],
+ "*.{html,css,json,md}": [
+ "prettier --write"
+ ]
+ },
+ "commitlint": {
+ "extends": [
+ "@commitlint/config-conventional"
+ ]
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ },
+ "browserslist": {
+ "production": [
+ ">0.2%",
+ "not dead",
+ "not op_mini all"
+ ],
+ "development": [
+ "last 1 chrome version",
+ "last 1 firefox version",
+ "last 1 safari version"
+ ]
+ }
}
diff --git a/public/cursors/protofox-default.svg b/public/cursors/protofox-default.svg
new file mode 100644
index 0000000..bd21b1d
--- /dev/null
+++ b/public/cursors/protofox-default.svg
@@ -0,0 +1,25 @@
+
diff --git a/public/cursors/protofox-pointer.svg b/public/cursors/protofox-pointer.svg
new file mode 100644
index 0000000..a9c5caf
--- /dev/null
+++ b/public/cursors/protofox-pointer.svg
@@ -0,0 +1,29 @@
+
diff --git a/public/images/blobfox/.blobfoxalwayshasbeen.svg b/public/images/blobfox/.blobfoxalwayshasbeen.svg
new file mode 100644
index 0000000..b231411
--- /dev/null
+++ b/public/images/blobfox/.blobfoxalwayshasbeen.svg
@@ -0,0 +1,1807 @@
+
+
diff --git a/public/images/blobfox/.blobfoxrageworse.svg b/public/images/blobfox/.blobfoxrageworse.svg
new file mode 100644
index 0000000..5536790
--- /dev/null
+++ b/public/images/blobfox/.blobfoxrageworse.svg
@@ -0,0 +1,525 @@
+
+
+
+
diff --git a/public/images/blobfox/.blobfoxrealisticbreadsnoot.svg b/public/images/blobfox/.blobfoxrealisticbreadsnoot.svg
new file mode 100644
index 0000000..2193c04
--- /dev/null
+++ b/public/images/blobfox/.blobfoxrealisticbreadsnoot.svg
@@ -0,0 +1,328 @@
+
+
+
+
diff --git a/public/images/blobfox/.blobfoxrealisticbreadsnootgoogly.svg b/public/images/blobfox/.blobfoxrealisticbreadsnootgoogly.svg
new file mode 100644
index 0000000..43d0182
--- /dev/null
+++ b/public/images/blobfox/.blobfoxrealisticbreadsnootgoogly.svg
@@ -0,0 +1,360 @@
+
+
+
+
diff --git a/public/images/blobfox/ablobfoxbongo.png b/public/images/blobfox/ablobfoxbongo.png
new file mode 100644
index 0000000000000000000000000000000000000000..5439390cc2e83cf9671ad029a905341e9004d76a
GIT binary patch
literal 9376
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
Ak5hdgUbe@ymoh!d{3wT&`+qPm{q~uKVr>8b
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
Ak5hdgUbe@ymoh!d{3wT&`+qPm{q~uKVr>8b
z02*dvR7?N>009610Du4h0Am0E00000000050Av6F(T+Bh000ogW@JHB00002c-rk<
z4U|6@D`#CX#^oM~3!8GzIcE#2EgCAR|ahX`|3sVghCn1f;0RPYRC#S{V>77AX~K
zix4Olv=YNvXv(sJWeXTs3k+#xv4Er|Sp%$KPUpMa3wQRMd*3C>if-@YrQ9G0?8{(WMv;%@xjOCYlat9XTQO)iF}1`lhUNAaFtZL_<~PseDLv#ii+Ed>eRb>
z_Uzft-&ik5X-J^(W+LBnhKu;KS@R1NJwc93ZjuVQP77i}YNSZeEp8iHB_0|xT1*;0
zPTW^>kN0onbt_#MfQf}3FJb~EfO}Z}+-<6KD16S$N5#u)mW%i5-xP=5+0sm=P5mzY
zoj2G4iG?d_1Y))MJTbd$kjR#1#hkKnqV~L@BAe+h=4Z-UqvGZ6?CS6KBPQ!NWbh#I
zqdC*X*4NgxP&k!!E1sjjzm3~^D=p*EA)C}h%*|XR=9C_gB0|zA<#j0wMQzzgX%t-w
zS@FGl_wE5iF6D&Dn$?W_il@*6d;XMD@qxUx@z?Zy>bYaq?Fm51ekoTO8^N5i`-uUl
zWV@&>o#%Osg_$;H@1N-lLv!Hjd-`PANmIpdT>GN7(sLNVZe9a8MKUBoruB${MhcQH
zUn+R3h7kmE;FNdB^slPQl;nK>Z0Qu=t2~e2;fV3Rt2f&51HW*iSh{eo(T=AA!=dCH
zcM3R>AwAiGw8zK@5dZZJAS}B*1<%TKjDGJ-|7O3FE!hCCV41&9v`OQD;P-5O)mrg^
z{PNjF^u6o2-P%;99JLM$W@ZE>8!e6C6mH0tE|IRjYlMesAg^!oJc1^^@Uc<7%~}At
zC)xF3Sv3Di$^)$7Hh{;uND3)yO$ta}tUjd}kw8xPitXM!3}DwQUw_QQ77-rAr^T@;
zj^|tX5ozG!LN)-8uhxmvXN*89FPQORX&XAx&hbH
zK{017|ug0K}@Ly5T@GEi{#VI!I
z`d9u`P{06XUW%8J^8YpCd@=Io^2GO8Sy?G|Y<}5^0nD2ANDJc4MImD{m%{J3vAcNU
zOCJ}j$6hA(JbIz$UUQ~$pn#Fr%XH3@mNYTD{NsrWyzk0!&rp&J|yRV80H)&rWf7||s2QF!It_i_rVgTiw3Wu^^y#I2sYic_k
z5SW^r$d(}^VYyEYCTZ3;%=DrxvZo5V%{)Xz=#
zYM_6}WS2c{4YrDZz5W@oW5uIl=Zh1>
zjx|{}(JsdcFpDdJ-z
zKH;%~NTnfVE<~4SmGAr0OroMr^$-B!(Yb)7f3pe~!8TTUy
zpRnvr^^7LW_zkA%Fsgg6r#E@aSRu8N^WivTt~=
z!D~Sm8^(Pe?%$tTzu9khM%&jYbd*MoaG^hM=OgWom@Woly=f^GIN@9YjHnfamH+03
zRk`B6@Bw)zTT*8T#)o1iTN?fUuMWEyZ(7Fi=C)35Z&gu4&tSe41I&UH7X%kTsw<-m
z8vyG3Xe80-rheLH$9F&*w#8&`wLeU0Jfa1>U}FH^yFGtl02l<#DJrn~;LvVfGb`uk
zg+qX1%u6LlaA=3A@;?I5U_H__tlNK3D>vOiQHVd6+%n*ryeJ>7X*X5&iv4Z_KG)lO
z9k&5!x_(HlO+$yWoQuA9SUZY1h}Che(8F)&E_OWpVeK1(`?NK8<}FUT$3a`)cH
zE@U+T#f+b_>}wqR{SzyipGYyd+-u2FeId9w7=>yvuI<-by!IVE>qi{7H2`EAX}f(W
z)#N)Oym4Uw5I&lpYexI3j(0(trBkwnA*kA;;MVKLcg*?wVEb$h0GvUZ27qP{oA1fd
z_keUUqQkdEpG7d)Y{K8~rf*_Gx#G154@k{SjUY*v?YLXJrKWtia(aKd0wYgK8-ovs
zsq~!=IUY+|Te{4;pC3y5t7Y6myEY98_)>9*7z=A_0BL3cm`kv30KMyKmdYV&B5}M3
z($F)fm}nklSD17X%&P3h7-;HF?%X((!e8Ooui9xB`+DB?8RxR0EXE0lpKje#J~_p?NsR~
zoyWu9Q>)#}1x9LXYXF>tP*^m|;wMCHrdwPHSQh@GtH$th>o`1tGG<+F`Udq4G>X(Yj5f!HFX-rjr0vX^{v!Sod%%WHZQ=R1GFb
zJy~(V?6N`B0Gf6Gq|s!FoESNNlroU}=c@R@AZ&@5T;S7GC_#mtYm@h5x2r-6jNl-b
zC#Wr*7dgelRR>5aAfs|s(!hWvLEK!f6)v8>H#|a;6Ub2ERD}~JGHH7(5mX2RoRm0<
zs!rNg5ILDS^gx8)8)1ecOsZPs!KE;eUro&(bV1v|3SoAi5-w3)KS0zrXAW|*ofLy`
z4Z#9rsyd|sYLkb7vXPM|dL->!;W~wrmOE9R3A-V#K|%!tIY}ho5c>X{*#^86#RT{a
zhA_P_@+lukr3xX}rqnTFU{p??t3BJaN!8XP&)ph%q6bF|;{sP<
zFA&%L3-1s&SAgGj0d6T+P1;EnB`{o?W+u#Jj-7tIjsI+$X2-M_$}Akh5fqEv3t$-c
zTEt$O7Glw$6w^T!T>+mgj7$b@JpNHiiJ(83t-3_raRyRMK9U;rM_jjO1r0XQLV
z28wo_($Wql6{*D~I3SzWAQJT%5+JxYjgs)$CTR0Y%K)OXo^7EKYG7fa_uvvL4Dhq7Grn2rf&dFVH5n3il0|-r&2Bwe_$=5;jg(kdvpKK_RSB
zK!|L_+yF{822(*@X$U~t0oRg`2Qz@Ap>9t127#6XAc#du%4xue06wEYBuKM-45?6p
z$Z|Srcd+}H$K}reRJbv?H!Sc$$8Ffidud9iGhB(XD*ZheL9Xl}%GHJ`UexVXp$G<&
zk2ytn0jehp+}04(0+!m0WP>k23S~JCgs6%6=OIM7MTW+_ccn;Y@qMC=^wI?YGDXk>DEo6I%f$WbHITTcv!UmfQUm$yJ3MV0;2$~KnS6Ec2E>Th*7zHC_U(Cf)S{O
zIf0nNg%s2gqKZj6d^;U&hmo>3a~6^T#2qdb7=_c~At|q{B7C@^v0M!Ms>5rt33E_&PNpVFS*wj6P2s_!P4nnh*s4nJ$lenqjG%pum
zli~_hZcnj6l9qVdpXjaHo6$aLcC8(WKk~zZ&L6N#R~HPt>p@g
z!Y^P2xS}a3*aQcFVopF}na<_`R8m|~;9#)nbXQPozg&P#fI;vEVO)``507^3AS^T$
z?vqg8&z#Md4>l_Zu3!b5s4;|b1IR0yR&qC@GRpSMxpslX3WH65DCRIH*hD>qcJLM?
z76|$QikA{>?&k!W=xze8D6nwwd{OhQ5NtBa^rDt|z~%|=ifO{35A&|z;>Av4HFAMX
z5J~`&?6VEEnf^uXIRu*+xWV&!05pBD$yzauDx;s(Bv27->fs6vu(_|OjRGvUR>!`#%xNZ
zRicdUcXDq@$ZUctuPLtVSpYVXfdFvIKi5fVFffA6#Z^4ZuBxg`i9hXyb02Esz$QFN
zamCIpusPg65eB%T7GdT8O`0J#Wn_Z20000RbVXQnQ*UN;cVTj606|brM<79Sb7gH}
aY-MsFGcGV*MJyZu0000N`~Lh@+H&aL
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