From b2b0e2b036927426e8e9e695ae18d5104ccf4331 Mon Sep 17 00:00:00 2001 From: liyunze <50455574+liyunze-coding@users.noreply.github.com> Date: Sun, 29 Mar 2026 22:17:25 +1100 Subject: [PATCH] updated website --- bun.lock | 322 ++++++++------ package.json | 8 +- public/RyanLee_SoftwareDeveloper_Resume.pdf | Bin 0 -> 85448 bytes public/images/socials/codeberg.svg | 57 +++ src/components/contact/ContactComponent.astro | 86 ++-- .../experience/ExperienceComponent.astro | 109 ----- .../experience/ExperienceComponent.tsx | 102 +++-- src/components/global/Card.astro | 14 +- src/components/global/FooterComponent.astro | 2 +- src/components/global/NavBar.astro | 6 +- src/components/home/Intro.astro | 23 +- src/components/images/pfp_new_medium.webp | Bin 0 -> 4858 bytes .../images/projects/portfolio-roast-bot.webp | Bin 0 -> 18454 bytes src/components/projects/Project.astro | 101 +++-- .../projects/ProjectsComponent.astro | 20 +- src/components/projects/TaskWidget.svelte | 406 +++++++++--------- src/components/projects/VideoProject.svelte | 73 ++-- src/components/skills/MoreSkills.astro | 57 --- src/components/skills/Skill.astro | 37 -- src/components/skills/SkillsComponent.astro | 137 +++--- src/components/socials/Socials.astro | 14 +- src/components/socials/StreamSchedule.svelte | 308 ++++++------- src/components/ui/AnimatedToolTip.tsx | 94 ---- src/components/ui/NavigationBar.tsx | 328 +++++++------- src/layouts/Layout.astro | 10 +- src/pages/contact.astro | 17 - src/pages/faq.astro | 93 ---- src/pages/index.astro | 6 +- src/pages/projects.astro | 2 +- src/pages/skills.astro | 38 -- src/styles/global.css | 65 +-- tsconfig.json | 2 +- 32 files changed, 1178 insertions(+), 1359 deletions(-) create mode 100644 public/RyanLee_SoftwareDeveloper_Resume.pdf create mode 100644 public/images/socials/codeberg.svg delete mode 100644 src/components/experience/ExperienceComponent.astro create mode 100644 src/components/images/pfp_new_medium.webp create mode 100644 src/components/images/projects/portfolio-roast-bot.webp delete mode 100644 src/components/skills/MoreSkills.astro delete mode 100644 src/components/skills/Skill.astro delete mode 100644 src/components/ui/AnimatedToolTip.tsx delete mode 100644 src/pages/contact.astro delete mode 100644 src/pages/faq.astro delete mode 100644 src/pages/skills.astro diff --git a/bun.lock b/bun.lock index 73e6146..d8fd7e0 100644 --- a/bun.lock +++ b/bun.lock @@ -4,14 +4,14 @@ "": { "name": "dev-portfolio", "dependencies": { - "@astrojs/mdx": "^4.3.0", - "@astrojs/react": "^4.3.0", - "@astrojs/svelte": "^7.1.0", + "@astrojs/mdx": "4.3.13", + "@astrojs/react": "4.4.2", + "@astrojs/svelte": "7.2.5", "@radix-ui/react-tabs": "^1.1.13", "@tailwindcss/vite": "^4.1.8", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", - "astro": "^5.10.0", + "astro": "5.16.8", "caniuse-lite": "^1.0.30001698", "clsx": "^2.1.1", "hamburger-react": "^2.5.2", @@ -38,17 +38,17 @@ "@astrojs/compiler": ["@astrojs/compiler@2.12.2", "", {}, "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw=="], - "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.1", "", {}, "sha512-7dwEVigz9vUWDw3nRwLQ/yH/xYovlUA0ZD86xoeKEBmkz9O6iELG1yri67PgAPW6VLL/xInA4t7H0CK6VmtkKQ=="], + "@astrojs/internal-helpers": ["@astrojs/internal-helpers@0.7.5", "", {}, "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA=="], - "@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.5", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.1", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.2.1", "smol-toml": "^1.3.4", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", "vfile": "^6.0.3" } }, "sha512-MiR92CkE2BcyWf3b86cBBw/1dKiOH0qhLgXH2OXA6cScrrmmks1Rr4Tl0p/lFpvmgQQrP54Pd1uidJfmxGrpWQ=="], + "@astrojs/markdown-remark": ["@astrojs/markdown-remark@6.3.10", "", { "dependencies": { "@astrojs/internal-helpers": "0.7.5", "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.2.0", "js-yaml": "^4.1.1", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", "shiki": "^3.19.0", "smol-toml": "^1.5.2", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A=="], - "@astrojs/mdx": ["@astrojs/mdx@4.3.3", "", { "dependencies": { "@astrojs/markdown-remark": "6.3.5", "@mdx-js/mdx": "^3.1.0", "acorn": "^8.14.1", "es-module-lexer": "^1.6.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "kleur": "^4.1.5", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.4", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-+9+xGP2TBXxcm84cpiq4S9JbuHOHM1fcvREfqW7VHxlUyfUQPByoJ9YYliqHkLS6BMzG+O/+o7n8nguVhuEv4w=="], + "@astrojs/mdx": ["@astrojs/mdx@4.3.13", "", { "dependencies": { "@astrojs/markdown-remark": "6.3.10", "@mdx-js/mdx": "^3.1.1", "acorn": "^8.15.0", "es-module-lexer": "^1.7.0", "estree-util-visit": "^2.0.0", "hast-util-to-html": "^9.0.5", "piccolore": "^0.1.3", "rehype-raw": "^7.0.0", "remark-gfm": "^4.0.1", "remark-smartypants": "^3.0.2", "source-map": "^0.7.6", "unist-util-visit": "^5.0.0", "vfile": "^6.0.3" }, "peerDependencies": { "astro": "^5.0.0" } }, "sha512-IHDHVKz0JfKBy3//52JSiyWv089b7GVSChIXLrlUOoTLWowG3wr2/8hkaEgEyd/vysvNQvGk+QhysXpJW5ve6Q=="], "@astrojs/prism": ["@astrojs/prism@3.3.0", "", { "dependencies": { "prismjs": "^1.30.0" } }, "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ=="], - "@astrojs/react": ["@astrojs/react@4.3.0", "", { "dependencies": { "@vitejs/plugin-react": "^4.4.1", "ultrahtml": "^1.6.0", "vite": "^6.3.5" }, "peerDependencies": { "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", "react": "^17.0.2 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, "sha512-N02aj52Iezn69qHyx5+XvPqgsPMEnel9mI5JMbGiRMTzzLMuNaxRVoQTaq2024Dpr7BLsxCjqMkNvelqMDhaHA=="], + "@astrojs/react": ["@astrojs/react@4.4.2", "", { "dependencies": { "@vitejs/plugin-react": "^4.7.0", "ultrahtml": "^1.6.0", "vite": "^6.4.1" }, "peerDependencies": { "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", "react": "^17.0.2 || ^18.0.0 || ^19.0.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ=="], - "@astrojs/svelte": ["@astrojs/svelte@7.1.0", "", { "dependencies": { "@sveltejs/vite-plugin-svelte": "^5.0.3", "svelte2tsx": "^0.7.39", "vite": "^6.3.5" }, "peerDependencies": { "astro": "^5.0.0", "svelte": "^5.1.16", "typescript": "^5.3.3" } }, "sha512-nNAO7iFgCZXCN31N4xBSS/k7vZAZxeZ/v8V6VWZOKG47gVlxeAJBHzn2GlXMMVkxIamr6dhrkDrhYFKIPzoGpw=="], + "@astrojs/svelte": ["@astrojs/svelte@7.2.5", "", { "dependencies": { "@sveltejs/vite-plugin-svelte": "^5.1.1", "svelte2tsx": "^0.7.46", "vite": "^6.4.1" }, "peerDependencies": { "astro": "^5.0.0", "svelte": "^5.1.16", "typescript": "^5.3.3" } }, "sha512-Tl5aF/dYbzzd7sLpxMBX6pRz3yJ1B4pilt9G3GJbj0I0/doJHIEmerNQsnlxX0/InNKUhMXXN8wyyet9VhA+Zw=="], "@astrojs/telemetry": ["@astrojs/telemetry@3.3.0", "", { "dependencies": { "ci-info": "^4.2.0", "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", "is-wsl": "^3.1.0", "which-pm-runs": "^1.1.0" } }, "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ=="], @@ -72,13 +72,13 @@ "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], "@babel/helpers": ["@babel/helpers@7.28.2", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.2" } }, "sha512-/V9771t+EgXz62aCcyofnQhGM8DQACbRhvzKFsXKC9QM+5MadF8ZmIm0crDMaz3+o0h0zXfJnd4EhbYbxsrcFw=="], - "@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": "./bin/babel-parser.js" }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw=="], @@ -88,11 +88,11 @@ "@babel/traverse": ["@babel/traverse@7.28.0", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.0", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.0", "@babel/template": "^7.27.2", "@babel/types": "^7.28.0", "debug": "^4.3.1" } }, "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg=="], - "@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], - "@capsizecss/unpack": ["@capsizecss/unpack@2.4.0", "", { "dependencies": { "blob-to-buffer": "^1.2.8", "cross-fetch": "^3.0.4", "fontkit": "^2.0.2" } }, "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q=="], + "@capsizecss/unpack": ["@capsizecss/unpack@4.0.0", "", { "dependencies": { "fontkitten": "^1.0.0" } }, "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA=="], - "@emnapi/runtime": ["@emnapi/runtime@1.4.5", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg=="], + "@emnapi/runtime": ["@emnapi/runtime@1.8.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg=="], "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.8", "", { "os": "aix", "cpu": "ppc64" }, "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA=="], @@ -146,43 +146,55 @@ "@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.8", "", { "os": "win32", "cpu": "x64" }, "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw=="], - "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.0.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ=="], + "@img/colour": ["@img/colour@1.0.0", "", {}, "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw=="], - "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.0.4" }, "os": "darwin", "cpu": "x64" }, "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q=="], + "@img/sharp-darwin-arm64": ["@img/sharp-darwin-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-arm64": "1.2.4" }, "os": "darwin", "cpu": "arm64" }, "sha512-imtQ3WMJXbMY4fxb/Ndp6HBTNVtWCUI0WdobyheGf5+ad6xX8VIDO8u2xE4qc/fr08CKG/7dDseFtn6M6g/r3w=="], - "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg=="], + "@img/sharp-darwin-x64": ["@img/sharp-darwin-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-darwin-x64": "1.2.4" }, "os": "darwin", "cpu": "x64" }, "sha512-YNEFAF/4KQ/PeW0N+r+aVVsoIY0/qxxikF2SWdp+NRkmMB7y9LBZAVqQ4yhGCm/H3H270OSykqmQMKLBhBJDEw=="], - "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ=="], + "@img/sharp-libvips-darwin-arm64": ["@img/sharp-libvips-darwin-arm64@1.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-zqjjo7RatFfFoP0MkQ51jfuFZBnVE2pRiaydKJ1G/rHZvnsrHAOcQALIi9sA5co5xenQdTugCvtb1cuf78Vf4g=="], - "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.0.5", "", { "os": "linux", "cpu": "arm" }, "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g=="], + "@img/sharp-libvips-darwin-x64": ["@img/sharp-libvips-darwin-x64@1.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-1IOd5xfVhlGwX+zXv2N93k0yMONvUlANylbJw1eTah8K/Jtpi15KC+WSiaX/nBmbm2HxRM1gZ0nSdjSsrZbGKg=="], - "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA=="], + "@img/sharp-libvips-linux-arm": ["@img/sharp-libvips-linux-arm@1.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A=="], - "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.0.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA=="], + "@img/sharp-libvips-linux-arm64": ["@img/sharp-libvips-linux-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw=="], - "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw=="], + "@img/sharp-libvips-linux-ppc64": ["@img/sharp-libvips-linux-ppc64@1.2.4", "", { "os": "linux", "cpu": "ppc64" }, "sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA=="], - "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA=="], + "@img/sharp-libvips-linux-riscv64": ["@img/sharp-libvips-linux-riscv64@1.2.4", "", { "os": "linux", "cpu": "none" }, "sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA=="], - "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw=="], + "@img/sharp-libvips-linux-s390x": ["@img/sharp-libvips-linux-s390x@1.2.4", "", { "os": "linux", "cpu": "s390x" }, "sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ=="], - "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.0.5" }, "os": "linux", "cpu": "arm" }, "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ=="], + "@img/sharp-libvips-linux-x64": ["@img/sharp-libvips-linux-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw=="], - "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA=="], + "@img/sharp-libvips-linuxmusl-arm64": ["@img/sharp-libvips-linuxmusl-arm64@1.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw=="], - "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.0.4" }, "os": "linux", "cpu": "s390x" }, "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q=="], + "@img/sharp-libvips-linuxmusl-x64": ["@img/sharp-libvips-linuxmusl-x64@1.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg=="], - "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA=="], + "@img/sharp-linux-arm": ["@img/sharp-linux-arm@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm": "1.2.4" }, "os": "linux", "cpu": "arm" }, "sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw=="], - "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" }, "os": "linux", "cpu": "arm64" }, "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g=="], + "@img/sharp-linux-arm64": ["@img/sharp-linux-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg=="], - "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.33.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.0.4" }, "os": "linux", "cpu": "x64" }, "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw=="], + "@img/sharp-linux-ppc64": ["@img/sharp-linux-ppc64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-ppc64": "1.2.4" }, "os": "linux", "cpu": "ppc64" }, "sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA=="], - "@img/sharp-wasm32": ["@img/sharp-wasm32@0.33.5", "", { "dependencies": { "@emnapi/runtime": "^1.2.0" }, "cpu": "none" }, "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg=="], + "@img/sharp-linux-riscv64": ["@img/sharp-linux-riscv64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-riscv64": "1.2.4" }, "os": "linux", "cpu": "none" }, "sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw=="], - "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.33.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ=="], + "@img/sharp-linux-s390x": ["@img/sharp-linux-s390x@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-s390x": "1.2.4" }, "os": "linux", "cpu": "s390x" }, "sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg=="], - "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], + "@img/sharp-linux-x64": ["@img/sharp-linux-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linux-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ=="], + + "@img/sharp-linuxmusl-arm64": ["@img/sharp-linuxmusl-arm64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-arm64": "1.2.4" }, "os": "linux", "cpu": "arm64" }, "sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg=="], + + "@img/sharp-linuxmusl-x64": ["@img/sharp-linuxmusl-x64@0.34.5", "", { "optionalDependencies": { "@img/sharp-libvips-linuxmusl-x64": "1.2.4" }, "os": "linux", "cpu": "x64" }, "sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q=="], + + "@img/sharp-wasm32": ["@img/sharp-wasm32@0.34.5", "", { "dependencies": { "@emnapi/runtime": "^1.7.0" }, "cpu": "none" }, "sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw=="], + + "@img/sharp-win32-arm64": ["@img/sharp-win32-arm64@0.34.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-WQ3AgWCWYSb2yt+IG8mnC6Jdk9Whs7O0gxphblsLvdhSpSTtmu69ZG1Gkb6NuvxsNACwiPV6cNSZNzt0KPsw7g=="], + + "@img/sharp-win32-ia32": ["@img/sharp-win32-ia32@0.34.5", "", { "os": "win32", "cpu": "ia32" }, "sha512-FV9m/7NmeCmSHDD5j4+4pNI8Cp3aW+JvLoXcTUo0IqyjSfAZJ8dIUmijx1qaJsIiU+Hosw6xM5KijAWRJCSgNg=="], + + "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.34.5", "", { "os": "win32", "cpu": "x64" }, "sha512-+29YMsqY2/9eFEiW93eqWnuLcWcufowXewwSNIT6UwZdUUCrM3oFjMWH/Z6/TMmb4hlFenmfAVbpWeup2jryCw=="], "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], @@ -194,7 +206,7 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.29", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ=="], - "@mdx-js/mdx": ["@mdx-js/mdx@3.1.0", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw=="], + "@mdx-js/mdx": ["@mdx-js/mdx@3.1.1", "", { "dependencies": { "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", "acorn": "^8.0.0", "collapse-white-space": "^2.0.0", "devlop": "^1.0.0", "estree-util-is-identifier-name": "^3.0.0", "estree-util-scope": "^1.0.0", "estree-walker": "^3.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "markdown-extensions": "^2.0.0", "recma-build-jsx": "^1.0.0", "recma-jsx": "^1.0.0", "recma-stringify": "^1.0.0", "rehype-recma": "^1.0.0", "remark-mdx": "^3.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "source-map": "^0.7.0", "unified": "^11.0.0", "unist-util-position-from-estree": "^2.0.0", "unist-util-stringify-position": "^4.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" } }, "sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ=="], "@oslojs/encoding": ["@oslojs/encoding@1.1.0", "", {}, "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ=="], @@ -230,7 +242,7 @@ "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], - "@rollup/pluginutils": ["@rollup/pluginutils@5.2.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw=="], + "@rollup/pluginutils": ["@rollup/pluginutils@5.3.0", "", { "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", "picomatch": "^4.0.2" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q=="], "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.46.2", "", { "os": "android", "cpu": "arm" }, "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA=="], @@ -272,17 +284,17 @@ "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.46.2", "", { "os": "win32", "cpu": "x64" }, "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg=="], - "@shikijs/core": ["@shikijs/core@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-3q/mzmw09B2B6PgFNeiaN8pkNOixWS726IHmJEpjDAcneDPMQmUg2cweT9cWXY4XcyQS3i6mOOUgQz9RRUP6HA=="], + "@shikijs/core": ["@shikijs/core@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA=="], - "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.3" } }, "sha512-kUTRVKPsB/28H5Ko6qEsyudBiWEDLst+Sfi+hwr59E0GLHV0h8RfgbQU7fdN5Lt9A8R1ulRiZyTvAizkROjwDA=="], + "@shikijs/engine-javascript": ["@shikijs/engine-javascript@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "oniguruma-to-es": "^4.3.4" } }, "sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ=="], - "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-Vn/w5oyQ6TUgTVDIC/BrpXwIlfK6V6kGWDVVz2eRkF2v13YoENUvaNwxMsQU/t6oCuZKzqp9vqtEtEzKl9VegA=="], + "@shikijs/engine-oniguruma": ["@shikijs/engine-oniguruma@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ=="], - "@shikijs/langs": ["@shikijs/langs@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2" } }, "sha512-X1Q6wRRQXY7HqAuX3I8WjMscjeGjqXCg/Sve7J2GWFORXkSrXud23UECqTBIdCSNKJioFtmUGJQNKtlMMZMn0w=="], + "@shikijs/langs": ["@shikijs/langs@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0" } }, "sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA=="], - "@shikijs/themes": ["@shikijs/themes@3.9.2", "", { "dependencies": { "@shikijs/types": "3.9.2" } }, "sha512-6z5lBPBMRfLyyEsgf6uJDHPa6NAGVzFJqH4EAZ+03+7sedYir2yJBRu2uPZOKmj43GyhVHWHvyduLDAwJQfDjA=="], + "@shikijs/themes": ["@shikijs/themes@3.21.0", "", { "dependencies": { "@shikijs/types": "3.21.0" } }, "sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw=="], - "@shikijs/types": ["@shikijs/types@3.9.2", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-/M5L0Uc2ljyn2jKvj4Yiah7ow/W+DJSglVafvWAJ/b8AZDeeRAdMu3c2riDzB7N42VD+jSnWxeP9AKtd4TfYVw=="], + "@shikijs/types": ["@shikijs/types@3.21.0", "", { "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA=="], "@shikijs/vscode-textmate": ["@shikijs/vscode-textmate@10.0.2", "", {}, "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg=="], @@ -292,8 +304,6 @@ "@sveltejs/vite-plugin-svelte-inspector": ["@sveltejs/vite-plugin-svelte-inspector@4.0.1", "", { "dependencies": { "debug": "^4.3.7" }, "peerDependencies": { "@sveltejs/vite-plugin-svelte": "^5.0.0", "svelte": "^5.0.0", "vite": "^6.0.0" } }, "sha512-J/Nmb2Q2y7mck2hyCX4ckVHcR5tu2J+MtBEQqpDrrgELZ2uvraQcK/ioCV61AqkdXFgriksOKIceDcQmqnGhVw=="], - "@swc/helpers": ["@swc/helpers@0.5.17", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A=="], - "@tailwindcss/node": ["@tailwindcss/node@4.1.11", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "enhanced-resolve": "^5.18.1", "jiti": "^2.4.2", "lightningcss": "1.30.1", "magic-string": "^0.30.17", "source-map-js": "^1.2.1", "tailwindcss": "4.1.11" } }, "sha512-yzhzuGRmv5QyU9qLNg4GTlYI6STedBWRE7NjxP45CsFYYq9taI0zJXZBMqIC/c8fViNLhmrbpSFS57EoxUmD6Q=="], "@tailwindcss/oxide": ["@tailwindcss/oxide@4.1.11", "", { "dependencies": { "detect-libc": "^2.0.4", "tar": "^7.4.3" }, "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.1.11", "@tailwindcss/oxide-darwin-arm64": "4.1.11", "@tailwindcss/oxide-darwin-x64": "4.1.11", "@tailwindcss/oxide-freebsd-x64": "4.1.11", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.11", "@tailwindcss/oxide-linux-arm64-gnu": "4.1.11", "@tailwindcss/oxide-linux-arm64-musl": "4.1.11", "@tailwindcss/oxide-linux-x64-gnu": "4.1.11", "@tailwindcss/oxide-linux-x64-musl": "4.1.11", "@tailwindcss/oxide-wasm32-wasi": "4.1.11", "@tailwindcss/oxide-win32-arm64-msvc": "4.1.11", "@tailwindcss/oxide-win32-x64-msvc": "4.1.11" } }, "sha512-Q69XzrtAhuyfHo+5/HMgr1lAiPP/G40OMFAnws7xcFEYqcypZmdW8eGXaOUIeOl1dzPJBPENXgbjsOyhg2nkrg=="], @@ -338,8 +348,6 @@ "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], - "@types/fontkit": ["@types/fontkit@2.0.8", "", { "dependencies": { "@types/node": "*" } }, "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew=="], - "@types/hast": ["@types/hast@3.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ=="], "@types/mdast": ["@types/mdast@4.0.4", "", { "dependencies": { "@types/unist": "*" } }, "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA=="], @@ -350,8 +358,6 @@ "@types/nlcst": ["@types/nlcst@2.0.3", "", { "dependencies": { "@types/unist": "*" } }, "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA=="], - "@types/node": ["@types/node@24.2.0", "", { "dependencies": { "undici-types": "~7.10.0" } }, "sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw=="], - "@types/react": ["@types/react@19.1.9", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-WmdoynAX8Stew/36uTSVMcLJJ1KRh6L3IZRx1PZ7qJtBqT3dYTgyDTx8H1qoRghErydW7xw9mSJ3wS//tCRpFA=="], "@types/react-dom": ["@types/react-dom@19.1.7", "", { "peerDependencies": { "@types/react": "^19.0.0" } }, "sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw=="], @@ -382,7 +388,7 @@ "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], - "astro": ["astro@5.12.8", "", { "dependencies": { "@astrojs/compiler": "^2.12.2", "@astrojs/internal-helpers": "0.7.1", "@astrojs/markdown-remark": "6.3.5", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.4", "acorn": "^8.14.1", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.2.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.0.2", "cssesc": "^3.0.0", "debug": "^4.4.0", "deterministic-object-hash": "^2.0.2", "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.6.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.3.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.1.1", "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.17", "magicast": "^0.3.5", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.0", "package-manager-detector": "^1.1.0", "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.1", "shiki": "^3.2.1", "smol-toml": "^1.3.4", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", "ultrahtml": "^1.6.0", "unifont": "~0.5.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", "vite": "^6.3.4", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.1", "zod": "^3.24.4", "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.33.3" }, "bin": { "astro": "astro.js" } }, "sha512-KkJ7FR+c2SyZYlpakm48XBiuQcRsrVtdjG5LN5an0givI/tLik+ePJ4/g3qrAVhYMjJOxBA2YgFQxANPiWB+Mw=="], + "astro": ["astro@5.16.8", "", { "dependencies": { "@astrojs/compiler": "^2.13.0", "@astrojs/internal-helpers": "0.7.5", "@astrojs/markdown-remark": "6.3.10", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "acorn": "^8.15.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.3.1", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.1.1", "cssesc": "^3.0.0", "debug": "^4.4.3", "deterministic-object-hash": "^2.0.2", "devalue": "^5.6.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.7.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.4.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "import-meta-resolve": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.1", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.1", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.3", "shiki": "^3.20.0", "smol-toml": "^1.6.0", "svgo": "^4.0.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.1", "unist-util-visit": "^5.0.0", "unstorage": "^1.17.3", "vfile": "^6.0.3", "vite": "^6.4.1", "vitefu": "^1.1.1", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.3", "zod": "^3.25.76", "zod-to-json-schema": "^3.25.1", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "astro.js" } }, "sha512-gzZE+epuCrNuxOa8/F1dzkllDOFvxWhGeobQKeBRIAef5sUpUKMHZo/8clse+02rYnKJCgwXBgjW4uTu9mqUUw=="], "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], @@ -390,14 +396,10 @@ "base-64": ["base-64@1.0.0", "", {}, "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg=="], - "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], - - "blob-to-buffer": ["blob-to-buffer@1.2.9", "", {}, "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA=="], + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], "boxen": ["boxen@8.0.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "string-width": "^7.2.0", "type-fest": "^4.21.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="], - "brotli": ["brotli@1.3.3", "", { "dependencies": { "base64-js": "^1.1.2" } }, "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg=="], - "browserslist": ["browserslist@4.25.1", "", { "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", "node-releases": "^2.0.19", "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw=="], "camelcase": ["camelcase@8.0.0", "", {}, "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA=="], @@ -420,45 +422,41 @@ "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], - "ci-info": ["ci-info@4.3.0", "", {}, "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ=="], + "ci-info": ["ci-info@4.3.1", "", {}, "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA=="], "cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], - "clone": ["clone@2.1.2", "", {}, "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w=="], - "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], "collapse-white-space": ["collapse-white-space@2.1.0", "", {}, "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw=="], - "color": ["color@4.2.3", "", { "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" } }, "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A=="], - - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], - - "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], - - "color-string": ["color-string@1.9.1", "", { "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg=="], - "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], + "commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], + "common-ancestor-path": ["common-ancestor-path@1.0.1", "", {}, "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w=="], "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], - "cookie": ["cookie@1.0.2", "", {}, "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA=="], + "cookie": ["cookie@1.1.1", "", {}, "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ=="], "cookie-es": ["cookie-es@1.2.2", "", {}, "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg=="], - "cross-fetch": ["cross-fetch@3.2.0", "", { "dependencies": { "node-fetch": "^2.7.0" } }, "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q=="], - "crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="], + "css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="], + "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="], + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], + "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], - "debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], "decode-named-character-reference": ["decode-named-character-reference@1.2.0", "", { "dependencies": { "character-entities": "^2.0.0" } }, "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q=="], @@ -476,16 +474,22 @@ "deterministic-object-hash": ["deterministic-object-hash@2.0.2", "", { "dependencies": { "base-64": "^1.0.0" } }, "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ=="], - "devalue": ["devalue@5.1.1", "", {}, "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw=="], + "devalue": ["devalue@5.6.1", "", {}, "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A=="], "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], - "dfa": ["dfa@1.2.0", "", {}, "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q=="], - "diff": ["diff@5.2.0", "", {}, "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A=="], "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], + "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], + + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], + + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], + + "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], + "dset": ["dset@3.1.4", "", {}, "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA=="], "electron-to-chromium": ["electron-to-chromium@1.5.198", "", {}, "sha512-G5COfnp3w+ydVu80yprgWSfmfQaYRh9DOxfhAxstLyetKaLyl55QrNjx8C38Pc/C+RaDmb1M0Lk8wPEMQ+bGgQ=="], @@ -530,15 +534,13 @@ "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], - "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], - "fdir": ["fdir@6.4.6", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w=="], "flattie": ["flattie@1.1.1", "", {}, "sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ=="], - "fontace": ["fontace@0.3.0", "", { "dependencies": { "@types/fontkit": "^2.0.8", "fontkit": "^2.0.4" } }, "sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg=="], + "fontace": ["fontace@0.4.0", "", { "dependencies": { "fontkitten": "^1.0.0" } }, "sha512-moThBCItUe2bjZip5PF/iZClpKHGLwMvR79Kp8XpGRBrvoRSnySN4VcILdv3/MJzbhvUA5WeiUXF5o538m5fvg=="], - "fontkit": ["fontkit@2.0.4", "", { "dependencies": { "@swc/helpers": "^0.5.12", "brotli": "^1.3.2", "clone": "^2.1.2", "dfa": "^1.2.0", "fast-deep-equal": "^3.1.3", "restructure": "^3.0.0", "tiny-inflate": "^1.0.3", "unicode-properties": "^1.4.0", "unicode-trie": "^2.0.0" } }, "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g=="], + "fontkitten": ["fontkitten@1.0.0", "", { "dependencies": { "tiny-inflate": "^1.0.3" } }, "sha512-b0RdzQeztiiUFWEDzq6Ka26qkNVNLCehoRtifOIGNbQ4CfxyYRh73fyWaQX/JshPVcueITOEeoSWPy5XQv8FUg=="], "framer-motion": ["framer-motion@12.23.12", "", { "dependencies": { "motion-dom": "^12.23.12", "motion-utils": "^12.23.6", "tslib": "^2.4.0" }, "peerDependencies": { "@emotion/is-prop-valid": "*", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" }, "optionalPeers": ["@emotion/is-prop-valid", "react", "react-dom"] }, "sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg=="], @@ -586,7 +588,7 @@ "http-cache-semantics": ["http-cache-semantics@4.2.0", "", {}, "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ=="], - "import-meta-resolve": ["import-meta-resolve@4.1.0", "", {}, "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw=="], + "import-meta-resolve": ["import-meta-resolve@4.2.0", "", {}, "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg=="], "inline-style-parser": ["inline-style-parser@0.2.4", "", {}, "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q=="], @@ -596,8 +598,6 @@ "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], - "is-arrayish": ["is-arrayish@0.3.2", "", {}, "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="], - "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], @@ -618,7 +618,7 @@ "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], - "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], @@ -652,13 +652,11 @@ "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], - "lower-case": ["lower-case@2.0.2", "", { "dependencies": { "tslib": "^2.0.3" } }, "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg=="], - "lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], - "magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], - "magicast": ["magicast@0.3.5", "", { "dependencies": { "@babel/parser": "^7.25.4", "@babel/types": "^7.25.4", "source-map-js": "^1.2.0" } }, "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ=="], + "magicast": ["magicast@0.5.1", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "source-map-js": "^1.2.1" } }, "sha512-xrHS24IxaLrvuo613F719wvOIv9xPHFWQHuvGUBmPnCA/3MQxKI3b+r7n1jAoDHmsbC5bRhTZYR77invLAxVnw=="], "markdown-extensions": ["markdown-extensions@2.0.0", "", {}, "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q=="], @@ -796,10 +794,6 @@ "nlcst-to-string": ["nlcst-to-string@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0" } }, "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA=="], - "no-case": ["no-case@3.0.4", "", { "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg=="], - - "node-fetch": ["node-fetch@2.7.0", "", { "dependencies": { "whatwg-url": "^5.0.0" }, "peerDependencies": { "encoding": "^0.1.0" }, "optionalPeers": ["encoding"] }, "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A=="], - "node-fetch-native": ["node-fetch-native@1.6.7", "", {}, "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q=="], "node-mock-http": ["node-mock-http@1.0.2", "", {}, "sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g=="], @@ -808,23 +802,23 @@ "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], - "ofetch": ["ofetch@1.4.1", "", { "dependencies": { "destr": "^2.0.3", "node-fetch-native": "^1.6.4", "ufo": "^1.5.4" } }, "sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw=="], + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + + "ofetch": ["ofetch@1.5.1", "", { "dependencies": { "destr": "^2.0.5", "node-fetch-native": "^1.6.7", "ufo": "^1.6.1" } }, "sha512-2W4oUZlVaqAPAil6FUg/difl6YhqhUR7x2eZY4bQCko22UXg3hptq9KLQdqFClV+Wu85UX7hNtdGTngi/1BxcA=="], "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], "oniguruma-parser": ["oniguruma-parser@0.12.1", "", {}, "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w=="], - "oniguruma-to-es": ["oniguruma-to-es@4.3.3", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg=="], + "oniguruma-to-es": ["oniguruma-to-es@4.3.4", "", { "dependencies": { "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } }, "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA=="], "p-limit": ["p-limit@6.2.0", "", { "dependencies": { "yocto-queue": "^1.1.1" } }, "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA=="], - "p-queue": ["p-queue@8.1.0", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-mxLDbbGIBEXTJL0zEx8JIylaj3xQ7Z/7eEVjcF9fJX4DBiH9oqe+oahYnlKKxm0Ci9TlWTyhSHgygxMxjIB2jw=="], + "p-queue": ["p-queue@8.1.1", "", { "dependencies": { "eventemitter3": "^5.0.1", "p-timeout": "^6.1.2" } }, "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ=="], "p-timeout": ["p-timeout@6.1.4", "", {}, "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg=="], - "package-manager-detector": ["package-manager-detector@1.3.0", "", {}, "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ=="], - - "pako": ["pako@0.2.9", "", {}, "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA=="], + "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], @@ -832,7 +826,7 @@ "parse5": ["parse5@7.3.0", "", { "dependencies": { "entities": "^6.0.0" } }, "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw=="], - "pascal-case": ["pascal-case@3.1.2", "", { "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g=="], + "piccolore": ["piccolore@0.1.3", "", {}, "sha512-o8bTeDWjE086iwKrROaDf31K0qC/BENdm15/uH9usSC/uZjJOKb2YGiVHfLY4GhwsERiPI1jmwI2XrA7ACOxVw=="], "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], @@ -900,8 +894,6 @@ "remark-stringify": ["remark-stringify@11.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-to-markdown": "^2.0.0", "unified": "^11.0.0" } }, "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw=="], - "restructure": ["restructure@3.0.2", "", {}, "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw=="], - "retext": ["retext@9.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "retext-latin": "^4.0.0", "retext-stringify": "^4.0.0", "unified": "^11.0.0" } }, "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA=="], "retext-latin": ["retext-latin@4.0.0", "", { "dependencies": { "@types/nlcst": "^2.0.0", "parse-latin": "^7.0.0", "unified": "^11.0.0" } }, "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA=="], @@ -916,19 +908,21 @@ "sass-formatter": ["sass-formatter@0.7.9", "", { "dependencies": { "suf-log": "^2.5.3" } }, "sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw=="], + "sax": ["sax@1.4.4", "", {}, "sha512-1n3r/tGXO6b6VXMdFT54SHzT9ytu9yr7TaELowdYpMqY/Ao7EnlQGmAQ1+RatX7Tkkdm6hONI2owqNx2aZj5Sw=="], + "scheduler": ["scheduler@0.26.0", "", {}, "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA=="], - "semver": ["semver@7.7.2", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="], + "scule": ["scule@1.3.0", "", {}, "sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g=="], - "sharp": ["sharp@0.33.5", "", { "dependencies": { "color": "^4.2.3", "detect-libc": "^2.0.3", "semver": "^7.6.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.33.5", "@img/sharp-darwin-x64": "0.33.5", "@img/sharp-libvips-darwin-arm64": "1.0.4", "@img/sharp-libvips-darwin-x64": "1.0.4", "@img/sharp-libvips-linux-arm": "1.0.5", "@img/sharp-libvips-linux-arm64": "1.0.4", "@img/sharp-libvips-linux-s390x": "1.0.4", "@img/sharp-libvips-linux-x64": "1.0.4", "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", "@img/sharp-libvips-linuxmusl-x64": "1.0.4", "@img/sharp-linux-arm": "0.33.5", "@img/sharp-linux-arm64": "0.33.5", "@img/sharp-linux-s390x": "0.33.5", "@img/sharp-linux-x64": "0.33.5", "@img/sharp-linuxmusl-arm64": "0.33.5", "@img/sharp-linuxmusl-x64": "0.33.5", "@img/sharp-wasm32": "0.33.5", "@img/sharp-win32-ia32": "0.33.5", "@img/sharp-win32-x64": "0.33.5" } }, "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw=="], + "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], - "shiki": ["shiki@3.9.2", "", { "dependencies": { "@shikijs/core": "3.9.2", "@shikijs/engine-javascript": "3.9.2", "@shikijs/engine-oniguruma": "3.9.2", "@shikijs/langs": "3.9.2", "@shikijs/themes": "3.9.2", "@shikijs/types": "3.9.2", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-t6NKl5e/zGTvw/IyftLcumolgOczhuroqwXngDeMqJ3h3EQiTY/7wmfgPlsmloD8oYfqkEDqxiaH37Pjm1zUhQ=="], + "sharp": ["sharp@0.34.5", "", { "dependencies": { "@img/colour": "^1.0.0", "detect-libc": "^2.1.2", "semver": "^7.7.3" }, "optionalDependencies": { "@img/sharp-darwin-arm64": "0.34.5", "@img/sharp-darwin-x64": "0.34.5", "@img/sharp-libvips-darwin-arm64": "1.2.4", "@img/sharp-libvips-darwin-x64": "1.2.4", "@img/sharp-libvips-linux-arm": "1.2.4", "@img/sharp-libvips-linux-arm64": "1.2.4", "@img/sharp-libvips-linux-ppc64": "1.2.4", "@img/sharp-libvips-linux-riscv64": "1.2.4", "@img/sharp-libvips-linux-s390x": "1.2.4", "@img/sharp-libvips-linux-x64": "1.2.4", "@img/sharp-libvips-linuxmusl-arm64": "1.2.4", "@img/sharp-libvips-linuxmusl-x64": "1.2.4", "@img/sharp-linux-arm": "0.34.5", "@img/sharp-linux-arm64": "0.34.5", "@img/sharp-linux-ppc64": "0.34.5", "@img/sharp-linux-riscv64": "0.34.5", "@img/sharp-linux-s390x": "0.34.5", "@img/sharp-linux-x64": "0.34.5", "@img/sharp-linuxmusl-arm64": "0.34.5", "@img/sharp-linuxmusl-x64": "0.34.5", "@img/sharp-wasm32": "0.34.5", "@img/sharp-win32-arm64": "0.34.5", "@img/sharp-win32-ia32": "0.34.5", "@img/sharp-win32-x64": "0.34.5" } }, "sha512-Ou9I5Ft9WNcCbXrU9cMgPBcCK8LiwLqcbywW3t4oDV37n1pzpuNLsYiAV8eODnjbtQlSDwZ2cUEeQz4E54Hltg=="], - "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="], + "shiki": ["shiki@3.21.0", "", { "dependencies": { "@shikijs/core": "3.21.0", "@shikijs/engine-javascript": "3.21.0", "@shikijs/engine-oniguruma": "3.21.0", "@shikijs/langs": "3.21.0", "@shikijs/themes": "3.21.0", "@shikijs/types": "3.21.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } }, "sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w=="], "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], - "smol-toml": ["smol-toml@1.4.1", "", {}, "sha512-CxdwHXyYTONGHThDbq5XdwbFsuY4wlClRGejfE2NtwUtiHYsP1QtNsHb/hnj31jKYSchztJsaA8pSQoVzkfCFg=="], + "smol-toml": ["smol-toml@1.6.0", "", {}, "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw=="], "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], @@ -950,7 +944,9 @@ "svelte": ["svelte@5.38.0", "", { "dependencies": { "@ampproject/remapping": "^2.3.0", "@jridgewell/sourcemap-codec": "^1.5.0", "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", "acorn": "^8.12.1", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", "esm-env": "^1.2.1", "esrap": "^2.1.0", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", "zimmerframe": "^1.1.2" } }, "sha512-cWF1Oc2IM/QbktdK89u5lt9MdKxRtQnRKnf2tq6KOhYuhLOd2hbMuTiJ+vWMzAeMDe81AzbCgLd4GVtOJ4fDRg=="], - "svelte2tsx": ["svelte2tsx@0.7.42", "", { "dependencies": { "dedent-js": "^1.0.1", "pascal-case": "^3.1.1" }, "peerDependencies": { "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", "typescript": "^4.9.4 || ^5.0.0" } }, "sha512-PSNrKS16aVdAajoFjpF5M0t6TA7ha7GcKbBajD9RG3M+vooAuvLnWAGUSC6eJL4zEOVbOWKtcS2BuY4rxPljoA=="], + "svelte2tsx": ["svelte2tsx@0.7.46", "", { "dependencies": { "dedent-js": "^1.0.1", "scule": "^1.3.0" }, "peerDependencies": { "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", "typescript": "^4.9.4 || ^5.0.0" } }, "sha512-S++Vw3w47a8rBuhbz4JK0fcGea8tOoX1boT53Aib8+oUO2EKeOG+geXprJVTDfBlvR+IJdf3jIpR2RGwT6paQA=="], + + "svgo": ["svgo@4.0.0", "", { "dependencies": { "commander": "^11.1.0", "css-select": "^5.1.0", "css-tree": "^3.0.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.1.1", "sax": "^1.4.1" }, "bin": "./bin/svgo.js" }, "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw=="], "tailwind-merge": ["tailwind-merge@3.3.1", "", {}, "sha512-gBXpgUm/3rp1lMZZrM/w7D8GKqshif0zAymAhbCyIt8KMe+0v9DQ7cdYLR4FHH/cKpdTXb+A/tKKU3eolfsI+g=="], @@ -962,11 +958,9 @@ "tiny-inflate": ["tiny-inflate@1.0.3", "", {}, "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw=="], - "tinyexec": ["tinyexec@0.3.2", "", {}, "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA=="], + "tinyexec": ["tinyexec@1.0.2", "", {}, "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg=="], - "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="], - - "tr46": ["tr46@0.0.3", "", {}, "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="], + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], @@ -986,15 +980,9 @@ "uncrypto": ["uncrypto@0.1.3", "", {}, "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q=="], - "undici-types": ["undici-types@7.10.0", "", {}, "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag=="], - - "unicode-properties": ["unicode-properties@1.4.1", "", { "dependencies": { "base64-js": "^1.3.0", "unicode-trie": "^2.0.0" } }, "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg=="], - - "unicode-trie": ["unicode-trie@2.0.0", "", { "dependencies": { "pako": "^0.2.5", "tiny-inflate": "^1.0.0" } }, "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ=="], - "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], - "unifont": ["unifont@0.5.2", "", { "dependencies": { "css-tree": "^3.0.0", "ofetch": "^1.4.1", "ohash": "^2.0.0" } }, "sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg=="], + "unifont": ["unifont@0.7.1", "", { "dependencies": { "css-tree": "^3.1.0", "ofetch": "^1.5.1", "ohash": "^2.0.11" } }, "sha512-0lg9M1cMYvXof8//wZBq6EDEfbwv4++t7+dYpXeS2ypaLuZJmUFYEwTm412/1ED/Wfo/wyzSu6kNZEr9hgRNfg=="], "unist-util-find-after": ["unist-util-find-after@5.0.0", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ=="], @@ -1014,9 +1002,9 @@ "unist-util-visit-children": ["unist-util-visit-children@3.0.0", "", { "dependencies": { "@types/unist": "^3.0.0" } }, "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA=="], - "unist-util-visit-parents": ["unist-util-visit-parents@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="], + "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], - "unstorage": ["unstorage@1.16.1", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", "h3": "^1.15.3", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.6", "ofetch": "^1.4.1", "ufo": "^1.6.1" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ=="], + "unstorage": ["unstorage@1.17.3", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^4.0.3", "destr": "^2.0.5", "h3": "^1.15.4", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.7", "ofetch": "^1.5.1", "ufo": "^1.6.1" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.6.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3 || ^7.0.0", "@deno/kv": ">=0.9.0", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.1", "@vercel/functions": "^2.2.12 || ^3.0.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.4" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/functions", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q=="], "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], @@ -1026,16 +1014,12 @@ "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], - "vite": ["vite@6.3.5", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@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.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ=="], + "vite": ["vite@6.4.1", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", "picomatch": "^4.0.2", "postcss": "^8.5.3", "rollup": "^4.34.9", "tinyglobby": "^0.2.13" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@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.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g=="], "vitefu": ["vitefu@1.1.1", "", { "peerDependencies": { "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" }, "optionalPeers": ["vite"] }, "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ=="], "web-namespaces": ["web-namespaces@2.0.1", "", {}, "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ=="], - "webidl-conversions": ["webidl-conversions@3.0.1", "", {}, "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="], - - "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], - "which-pm-runs": ["which-pm-runs@1.1.0", "", {}, "sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA=="], "widest-line": ["widest-line@5.0.0", "", { "dependencies": { "string-width": "^7.0.0" } }, "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA=="], @@ -1058,20 +1042,60 @@ "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], - "zod-to-json-schema": ["zod-to-json-schema@3.24.6", "", { "peerDependencies": { "zod": "^3.24.1" } }, "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg=="], + "zod-to-json-schema": ["zod-to-json-schema@3.25.1", "", { "peerDependencies": { "zod": "^3.25 || ^4" } }, "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA=="], "zod-to-ts": ["zod-to-ts@1.2.0", "", { "peerDependencies": { "typescript": "^4.9.4 || ^5.0.2", "zod": "^3" } }, "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "@astrojs/telemetry/ci-info": ["ci-info@4.3.0", "", {}, "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ=="], + + "@astrojs/telemetry/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + + "@babel/code-frame/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@babel/core/@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": "./bin/babel-parser.js" }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + + "@babel/core/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + + "@babel/core/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@babel/generator/@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": "./bin/babel-parser.js" }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + + "@babel/generator/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], + "@babel/helper-module-imports/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + + "@babel/helper-module-transforms/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@babel/helpers/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + + "@babel/template/@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": "./bin/babel-parser.js" }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + + "@babel/template/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + + "@babel/traverse/@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": "./bin/babel-parser.js" }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + + "@babel/traverse/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + + "@babel/traverse/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "@sveltejs/vite-plugin-svelte/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + + "@sveltejs/vite-plugin-svelte/magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + + "@sveltejs/vite-plugin-svelte-inspector/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + + "@tailwindcss/node/magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.4.5", "", { "dependencies": { "@emnapi/wasi-threads": "1.0.4", "tslib": "^2.4.0" }, "bundled": true }, "sha512-XsLw1dEOpkSX/WucdqUhPWP7hDxSvZiY+fsUC14h+FtQ2Ifni4znbBt8punRX+Uj2JG/uDb8nEHVKvrVlvdZ5Q=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.4.5", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg=="], @@ -1084,24 +1108,80 @@ "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "@types/babel__core/@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": "./bin/babel-parser.js" }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + + "@types/babel__core/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + + "@types/babel__generator/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + + "@types/babel__template/@babel/parser": ["@babel/parser@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.0" }, "bin": "./bin/babel-parser.js" }, "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g=="], + + "@types/babel__template/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + + "@types/babel__traverse/@babel/types": ["@babel/types@7.28.2", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1" } }, "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ=="], + "ansi-align/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], + "astro/@astrojs/compiler": ["@astrojs/compiler@2.13.0", "", {}, "sha512-mqVORhUJViA28fwHYaWmsXSzLO9osbdZ5ImUfxBarqsYdMlPbqAqGJCxsNzvppp1BEzc1mJNjOVvQqeDN8Vspw=="], + + "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], + + "dom-serializer/entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "hast-util-to-parse5/property-information": ["property-information@6.5.0", "", {}, "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig=="], + "magic-string/@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + + "mdast-util-find-and-replace/unist-util-visit-parents": ["unist-util-visit-parents@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="], + + "micromark/debug": ["debug@4.4.1", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ=="], + "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], + "sharp/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "svelte/magic-string": ["magic-string@0.30.17", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA=="], + + "tinyglobby/fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "unist-util-visit/unist-util-visit-parents": ["unist-util-visit-parents@6.0.1", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw=="], + + "vite/tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="], + + "@babel/core/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@babel/generator/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], + "@babel/helper-module-imports/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@babel/helpers/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@babel/template/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@babel/traverse/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime/@tybys/wasm-util": ["@tybys/wasm-util@0.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VyyPYFlOMNylG45GoAe0xDoLwWuowvf92F9kySqzYh8vmYm7D2u4iUJKa1tOUpS70Ku13ASrOkS4ScXFsTaCNQ=="], + "@types/babel__core/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@types/babel__generator/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@types/babel__template/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + + "@types/babel__traverse/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.27.1", "", {}, "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow=="], + "ansi-align/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], "ansi-align/string-width/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], + "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], + "ansi-align/string-width/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], } } diff --git a/package.json b/package.json index bf6b7de..7f262fb 100644 --- a/package.json +++ b/package.json @@ -10,14 +10,14 @@ "astro": "astro" }, "dependencies": { - "@astrojs/mdx": "^4.3.0", - "@astrojs/react": "^4.3.0", - "@astrojs/svelte": "^7.1.0", + "@astrojs/mdx": "4.3.13", + "@astrojs/react": "4.4.2", + "@astrojs/svelte": "7.2.5", "@radix-ui/react-tabs": "^1.1.13", "@tailwindcss/vite": "^4.1.8", "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", - "astro": "^5.10.0", + "astro": "5.16.8", "caniuse-lite": "^1.0.30001698", "clsx": "^2.1.1", "hamburger-react": "^2.5.2", diff --git a/public/RyanLee_SoftwareDeveloper_Resume.pdf b/public/RyanLee_SoftwareDeveloper_Resume.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9ca63bc32964d708bcfc42623c8984c302e964a9 GIT binary patch literal 85448 zcmcG01z45K_P2tBgml*?B_uXo(g;XO2?8py>F!1p=>`Gml8}~8LAtx8L1~a~zRkw- zKl|R}RqlPBZ_DEwGqYyRnzeotYrR9QAohq6$i$9BJ-D_qhXe$$04#Kjk@)$Um5ppo zK>%7sCtE`cb1{%TK*>Vi);eKv;M*(uY=76Is|^4mF^k9onB^?2&9qJb&cw>{ zcP>%kt6bN4WkdliNX#;iA^$%G0GZgXe_Tk+vN8Z5I88|yU~6p$`VVBG8u=TttW2Dc z-%Y8q{>`kilO+hiENpIWVGHKPPRADVEMsJDg2em?zz$~1!Wt|QfW}n=S+tOt6+ybT z01Z}lP9`9bgOdlq#mUOV!^+0N3SeXBVFGgS@Bjf^T);fLTRR3hC-U0Ii{|t)&ewGqW|M^O*EN_RLqpXI27BMb}mV+==G4U_o8|pu`Q; zDUXayZNUsOKQh&}1&M)lE%d;`lmVF=*cyV%vGZ^X2mowstwGvmNRIIvS{l6@Wmay2 zpXXgnk=4GP!{EdBY#^VYC+DH{8Bof;#+3@qxEGolS|XjB-&VZ;Ec8Pl~4NuOf3Fzcaf~F!TBNq*~D9GE?QAEgiyz_~bETP5G8vVz~d^ zAh;8RsXD2*Blz&=x|<2T?whW$njPb2Il0q5$DVPDBb>30?xB>V*cLUNyKnfNN>;lM zUdMW%DJjUol|N48G&&ZOp?|NkS5kV&#ag%SmM@^NHQkGL7Wv~xnWA*7#V9U#h zJT%<|3^EoA7+HNOJ!~} zXw?s3O#J;9*8&B0w^vI8?RGuF1oTE*w!@IH%$;q&#dWG9ms4Zh*TP zUo(HU@5Umjaj(-+9DFIGE?3lEa(Umn`M~=Nse$PyCmEW_v++f08?qI+*~Oe z%-pndp-NiBPup867>D{!0EEKc)6+D4^QZ;2Q*~i!+q2U{pZsfWupYRN81C>(1iUg` z%S&`C++(#rU=2s&?5EC%R(&{ZYmF{pQW-Vcf0SD+cg!y{*D&1NrjU7$p06#T@+-Ug z6NyLjHF)k(NRH`=L0lLq1Pzkbm3bv47#0Vp5vDZ(McQlre99AppZxr|%9-SZMSJz8 zSOQk)R$dvm%u6hgA|>Vyl9O6aCl76`QyS$iNgsQ(%krMn(z`sRKNZueY zYY)*p>^DJUs1jz4uY4lSdo9u`r2IG|Lt-Q>F2#W_RA2gEK8SDtCCZ+^(?7c;;)O(F1=pH5nm#76!*t z+Y5hov}`)!{r;Vf8Cs6Cd8b(zF$^HwYU~cEs4Z+=(=M$1kPnw9G9Ym4eWT;7pm5VH zr|B2t{XC0dvogExoV&XOcFQZzTtAs~FgFOR-frmmRyi5h(TIHa^?T0S$_~TcQsqZ% zpLw1%JSdgEFx8H`# z^K9+xTFeMwRn|*E91X%`y)X{&<#hN#d$9AU{mTd@*FtT!oo^LqlW7}6Nf+Ye9$~Z5 zasp|}$c|jza8=LyAyGXwv&M)*+8yzxIgOp+A1`#;o+jzadd47qrOFwle(g8WWz-C! z7OZ2^S8B9vHVfKsNc-rXl#Xv5Lsnp=t8u$0u85vRbR4DjZN($G9W55e$X@Gses*bo zIEw8TgbJ2fIUX9&VZY7YhCc;&#Kt7p9#P7X(y4`^eOwos;_4u64S zSC2omaMpo_Yqymga7JS%;imD<46kUS4-WQQf~!`XW>4Vo^bliEqYpd==2J1kYHsy; z%zPv4H(aIy)cxmPS&u7a9oiBw%iF5Ias{;1*R+i3-C8qCNfUOFvoh25VZm)5;&_@i zs||41!|nJo#SG&$(bv0M=hA5YW5wMEU#ac%(>VGPU2A&jEbPLe3VxJ~?5XkxvFwaJ z#|bk00U1wHP#^-nVqTq?bQNOakG|j^#cGOd&88>`Z}=^w&LeeLOx3i%4(K9`@)8Q~ zbk>(V#6V70s?_LQV^*oR@MeXpLwYI8W+|qf4+HZ@<37es z$NUJ2PdfJ21M%)x+S|^5{6sWY7gpIb4eC9y;5yBm5__TaT9xrUxO3o04J~??AvQwq z)Z3iaK->V2ay>P}G`Ku)w3wJp{~0?seVnPAn&J~LGg?g;D|_)Rkv)kKqgDrUo6#vF zter)(V6+k^7mfbpG*0UX(5Or~oA3t_)b$p%<#jXF2WJmWkjmwlt+*(%2eaL692iOH z@ohI!$y>|GiD>Tm`IhDrTI-4q5rnlFw<#6U^rLlq*O=;Bv>lo~1hsXB5ThJ#GDx4` zU0^dlHtiEl{a#l)S40q?+hfNp!o%mltKos3_rpKOY4LU$oN%z+&R$u$c*|f#bJJ5(feJNkgQzG; zd=4opG3vJ8Jco@e0w^BJ-p3)qtlDMM0;=-~qfmePl+O$dc$V<;!3L}+?-S04tj#25 z;z%Am)s!X~Q1?%d*ShVJ!9Zcfwyays@a3b@_1JR$yzV|*wmh-A$kRJ3P481~bN5pBEP|!6v4B9Q4bU&3$54^zh_aXPcNd$6d#sl_i5ezVZ|)bp zj)KDBqr^=*BZ=13Kf1IT!>wtTQLcv7`;y%KEKsLRsiQv-T{+?I2Z@&_2Pj*;O_bA& zM?I7oHKPWWel9kaca=`xcZo=6MA#M35rR*ZI~BBjduSwQQ|VTS<@iJ!&r7q+TdK0c zE^LeF^~CpXv!W#@A$}x*IjCpUc~ujuaBI2KU8(oG<-j0y63ndvMy(%?MR(H5Ee+td z`A;`}izZqTNC{`$VbosOx*+6wR84MLl~Yp8df^P(=^gm{qutT%ixWBBKDf9QrBXSd z{P?*niT|K$m)kkMDt=Y3*I?ms_&b~l6h!Hi0Uq>ZXDyC5-a+*Bi<8elL=YgV`JtSo<1E0Y@}8Aq zaOJBB36aEjd(+hH%W1#&%T!()+sqf!eyEY^Vl@IUDONB89@E*xoo+2oOWFBi$2wa) z3nv;bTfT?9v_XKK^Wuy^GMcWW!+8!x|sIc+?Oni?)73NRM-yZ}qdZWCTWq|aR(63YmaYOTHD zGA>wznLCP#!ZiZhW-wiMwGasBC)1hHrJ28Z;T@{<`c+gIRdXyY-cw^)QOmeXVQrab zsOqi9b{AzX9yQ+6O)JtX)ii_t-W@#Zx&BDTg@)-)V?R?E_2};sBCclYRz~BmO+FUU zJ$8bdNl!E}1950qKE#{Od0K7AOo7K;oECroh&0Wit&AF`9G}SqUB-kRBQK~A@M5u6 z)hKMEy876X^qFYKc{z!%s-@}1AZXbK_8*r%62ghA&tD+=?Se+I{Xf9&G*vvP#q;Eyy>m|=K*hI6^|h&8tr_Tr?QTF7 zZA8=o@0+2P>HI-qRFT&(5+Wo$uiJC1{0%knn*^?ECXLt z3A1n-7kKx6GfDRPfd&go{Id!V>tfvpq-!Z8lNe@d&jCye)RUQ1&ejuCi1*-$u#VR? zQ?24jiq-qQo)XuMlp)IFtBFLJV^8;JZiGJj;7$v)W2I0Y$Y?!t!WsUyyey7-yOy`W zuOco@&!{pRF(9{d_R~-h5J@8?zNL3_!0E$FzFN|73>7itMAS@~r<@9}k=0wj9`Md> zi!DCK%BV2>NLKkh`6zIyOj619ExP-cD3aF!EUjy&jbScCUixTXcQH@AUF@19L-3ow zTe=u7kz*RuIyWn`_(XQv>*=o1My1de$7;~+b;38*c~*x#d5WYM5vrkP6D7Bw*t=mK zu}NkOcWCxfP@5l-qoKJ%H##HA80!SV2PeO(z>?u1`e_(KT*hnl4eyD~6wjmTc7_M7 z9TlW(aKRi3vj@)+X!~3_TlUKt3aVbGFeXve3KWerxiaaB;R|AQt7^8Um#8U{1x*LH zfpqLD^ZI&^+-cLAgiwYVUxd)MCHoxnE1}_j#h7!R&=qcEyl1F(u)mQAn$Z>pnz+ur z(wQQ|LqV_l2K&yYQfu36b7GKq-OkjA#>;Uo*i2%>>jE*3FGJRB>Tq>hwjaGnMvLQV zT&#-`x9@;=!;TmQIv1Iyep11#Wn59Q0&u)YvU&RUfUH&ozqIe#NGd6|9(HmoAHzex z;Y3bNP2s!6rq8RLbBYr3JXeh+KaNa(d4Sn@B5MB`U0VrxkPas8wDV5e005?P%KF

pG4 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

BZ;q^WB6D~R7N5Ucne>e#(;VmjL}R4gXq3-T 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

s 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 iTkXvqBtVtfx3 + + Codeberg logo + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + Codeberg logo + + + + Robert Martinez + + + + + Codeberg and the Codeberg Logo are trademarks of Codeberg e.V. + + + 2020-04-09 + + + Codeberg e.V. + + + codeberg.org + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/contact/ContactComponent.astro b/src/components/contact/ContactComponent.astro index e0e2a92..1b49be9 100644 --- a/src/components/contact/ContactComponent.astro +++ b/src/components/contact/ContactComponent.astro @@ -1,45 +1,59 @@ --- import { Image } from "astro:assets"; -import contactPhoto from "@/components/images/contact_photo.webp"; -import { AnimatedTooltip } from "@/components/ui/AnimatedToolTip"; +import Socials from "../socials/Socials.astro"; + +import pfp_new from "../images/pfp_new_medium.webp"; +import Card from "../global/Card.astro"; --- -

-
- Ryan -
+
+ -
-
-
-

- have an idea?
let's chat! -

+
+
+ Profile picture +
+
+
Ryan Lee
+
+ Software Developer & Content Creator +
+
+
+
+
+ Email me at: +
+ +
-
- rythondev@gmail.com -
+ +
+
+ +
+ +
+
+
+
diff --git a/src/components/experience/ExperienceComponent.astro b/src/components/experience/ExperienceComponent.astro deleted file mode 100644 index c31d66d..0000000 --- a/src/components/experience/ExperienceComponent.astro +++ /dev/null @@ -1,109 +0,0 @@ ---- -import Card from "../global/Card.astro"; -import Line from "../global/NetworkLine.astro"; ---- - -
-

Experience

-
-
- -
-
-

Full Stack Developer

-

@ Hyson Horizon

-

Dec 2024 - Present

-
-
-

- Led development of Astro websites with Payload CMS - backend implementation, manage Github Actions CI/CD and - deployments. -

-

Relevant skills:

-
-
    -
  • NextJS
  • -
  • React
  • -
  • Payload CMS
  • -
-
    -
  • Astro
  • -
  • Typescript
  • -
  • TailwindCSS
  • -
-
-
-
- - -
-
-

- Bachelor of Computer Science student -

-

July 2024 - Present

-
-
-

- Awarded 50% Vice-Chancellor Scholarship to study - Bachelor's in Computer Science. Active committee member - in cybersecurity association and software engineering - club. -

-

Relevant skills:

-
-
    -
  • Java
  • -
  • Kotlin
  • -
  • C#
  • -
-
    -
  • Vue.JS
  • -
  • MongoDB
  • -
  • PostgreSQL
  • -
-
-
-
- - - -
-
-

- Frontend Web Developer Intern -

-

Jan 2024 - April 2024

-
-
-

- Learnt how to build WordPress sites and further enhance - my skills in PHP. I also learnt how to closely work with - UI/UX designers and pay close attention to details with - the designs I am given. -

-

Relevant skills:

-
-
    -
  • WordPress & PHP
  • -
  • NextJS
  • -
  • React
  • -
-
    -
  • Adobe XD
  • -
  • Typescript
  • -
  • TailwindCSS
  • -
-
-
-
-
-
-
diff --git a/src/components/experience/ExperienceComponent.tsx b/src/components/experience/ExperienceComponent.tsx index cb3bc37..2566aaf 100644 --- a/src/components/experience/ExperienceComponent.tsx +++ b/src/components/experience/ExperienceComponent.tsx @@ -4,30 +4,34 @@ export default function Experience() { return ( - Experience - Education - + + Experience + + + Education + + Extracurricular {ExperienceTabContent()} {EducationTabContent()} {ExtracurricularTabContent()} @@ -39,21 +43,34 @@ function ExperienceTabContent() { return ( <> {Position({ - title: "Lead Full Stack Developer", - institution: "Hyson Horizon", - dateRange: "Dec 2024 - Now", + title: "Application Developer Intern", + dateRange: "Mar 2026 - Now", + country: "Australia", + highlights: [ + "Quickly adapted to Ruby on Rails codebase to resolve Jira tickets.", + "Communicated clearly about obstacles, suggested probable cause and provided solutions or workarounds.", + ], + className: "pb-5", + })} + {Position({ + title: "Full Stack Developer (Part Time)", + dateRange: "Dec 2024 - Feb 2026", country: "Malaysia", - summary: - "Led development of clients' Astro websites with Payload CMS backend implementation, managed Github Actions CI/CD and deployments.", + highlights: [ + "Led a team to develop Astro websites with Payload CMS backend implementation.", + "Managed Github Actions CI/CD and deployments.", + ], className: "pb-5", })} {Position({ title: "Frontend Web Developer Intern", - institution: "Studio20", dateRange: "Jan 2024 - Apr 2024", country: "Malaysia", - summary: - "Developed WordPress sites and NextJS apps for clients. Used lazy-loading to optimise page load speeds. Ensured CMS allowed easy yet flexible customisations for clients.", + highlights: [ + "Developed WordPress sites and NextJS apps for clients.", + "Used lazy-loading to optimise page load speeds. ", + "Ensured CMS allowed easy yet flexible customisations for clients.", + ], })} ); @@ -84,28 +101,34 @@ function ExtracurricularTabContent() { return ( <> {Position({ - title: "University Cybersecurity Association, Development Committee", + title: "Development Committee of Cybersecurity Association", dateRange: "Nov 2025 - Now", country: "Australia", - summary: `Leading frontend development club's revamped website using Astro framework with Svelte components.`, - className: "pb-5", - })} - {Position({ - title: "University Software Engineering Club Committee", - dateRange: "Sep 2025 - Now", - country: "Australia", - summary: `Leading and contributing to various club projects:`, className: "pb-5", highlights: [ - `Rust Discord Bot, includes club membership verification feature using Supabase.`, - `Python web scraping AI project, using BeautifulSoup4 and Gemini API.`, + `Leading frontend development of club's revamped website in Astro.`, + "Hosted study sessions to encourage productivity amongst students." ], })} {Position({ - title: "Malaysian Association, Marketing Officer", + title: "Web Dev Lead of Software Engineering Club", + dateRange: "Sep 2025 - Now", + country: "Australia", + className: "pb-5", + highlights: [ + `Developed Rust Discord Bot, includes club membership verification feature using Supabase.`, + `Hosted a Typescript workshop using Bun.`, + ], + })} + {Position({ + title: "Marketing Officer of Malaysian Association", dateRange: "Mar 2025 - Oct 2025", country: "Australia", - summary: `Contributed to marketing strategy through video ideation, execution (including on-screen presence and filming), and video editing.`, + highlights: [ + "Directed actors during video filming process.", + "Frequently starred in videos, followed directions while also suggesting improvements.", + "Edited raw footage into high quality videos." + ] })} ); @@ -188,10 +211,9 @@ const lineMoveCSS = ` function Position({ title, - institution, dateRange, country, - summary, + summary = "", className = "", highlights = [], }: { @@ -199,7 +221,7 @@ function Position({ institution?: string; dateRange: string; country: string; - summary: string; + summary?: string; className?: string; highlights?: Array; }) { @@ -209,7 +231,7 @@ function Position({
-
+

{title}

@@ -218,21 +240,19 @@ function Position({ {CalendarIcon()} {dateRange}
- {institution && ( -
- {BriefCaseIcon()} {institution} -
- )} -
{LocationIcon()} {country}
-

{summary}

+ { + summary && ( +

{summary}

+ ) + }
    - {highlights.map((highlight) => ( -
  • {highlight}
  • + {highlights.map((highlight, i) => ( +
  • {highlight}
  • ))}
diff --git a/src/components/global/Card.astro b/src/components/global/Card.astro index ea126e1..a3d70a6 100644 --- a/src/components/global/Card.astro +++ b/src/components/global/Card.astro @@ -37,7 +37,7 @@ const { { !href && (
@@ -61,15 +61,9 @@ const { } .card { - background: #1c1c1c; - background: linear-gradient( - 135deg, - rgba(18, 18, 18, 1) 0%, - rgba(30, 30, 30, 1) 33%, - rgba(25, 25, 25, 1) 66%, - rgba(19, 19, 19, 1) 100% - ); - --tw-shadow-color: var(--shadowColor); + /* background: #1c1c1c; */ + /* background: linear-gradient(135deg, rgb(38, 38, 38)#101010 20%, 100%); */ + box-shadow: 0 10px 25px 10px var(--shadowColor); padding: 0.5rem; } diff --git a/src/components/global/FooterComponent.astro b/src/components/global/FooterComponent.astro index 8a0d84e..4da3549 100644 --- a/src/components/global/FooterComponent.astro +++ b/src/components/global/FooterComponent.astro @@ -1,5 +1,5 @@
- Copyright © 2023-{new Date().getFullYear()} RythonDev. All Rights Reserved. + Copyright © 2023-{new Date().getFullYear()} Ryan Lee. All Rights Reserved.
diff --git a/src/components/global/NavBar.astro b/src/components/global/NavBar.astro index 437c7e9..dd30de6 100644 --- a/src/components/global/NavBar.astro +++ b/src/components/global/NavBar.astro @@ -25,8 +25,4 @@ const navLinks = [ ]; --- - + diff --git a/src/components/home/Intro.astro b/src/components/home/Intro.astro index 29d556c..6523ad4 100644 --- a/src/components/home/Intro.astro +++ b/src/components/home/Intro.astro @@ -7,7 +7,10 @@ import { Image } from "astro:assets"; ---
- +
@@ -26,7 +29,7 @@ import { Image } from "astro:assets"; id="name" class="animate-gradient text-2xl font-bold" > - RythonDev + Ryan Lee
Full Stack Developer
@@ -40,13 +43,13 @@ import { Image } from "astro:assets"; />
- ,
I'm Ryan! + !

- A Malaysian software developer studying in Australia, fluent - in English and Mandarin Chinese. My work in software - development has connected me with many Twitch streamers and - content creators. + I'm a Malaysian software developer studying in Australia on + a 50% excellence scholarship. My work in software + development and content creation has connected me with many + Twitch streamers and content creators.

@@ -61,12 +64,12 @@ import { Image } from "astro:assets"; #name { background: linear-gradient( 90deg, - #16ff00 0%, - #72ffff 45%, + #72ffff 0%, + #20ffb8 55%, #0096ff 100% ); - background-size: 300%; + background-size: 200%; background-clip: text; -webkit-background-clip: text; diff --git a/src/components/images/pfp_new_medium.webp b/src/components/images/pfp_new_medium.webp new file mode 100644 index 0000000000000000000000000000000000000000..a9ed000ed672c987ad32e2e281fd02fbffaf9709 GIT binary patch literal 4858 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 literal 0 HcmV?d00001 diff --git a/src/components/projects/Project.astro b/src/components/projects/Project.astro index 75e3a0a..040e49d 100644 --- a/src/components/projects/Project.astro +++ b/src/components/projects/Project.astro @@ -27,7 +27,7 @@ const leftProject = position == "left"; ---
{ - image && alt && - ( - {alt} - {alt} + image && alt && ( + <> + {alt} + {alt} + ) } - + @@ -82,7 +70,7 @@ const leftProject = position == "left"; {label}
@@ -108,9 +96,7 @@ const leftProject = position == "left"; > { tags.map((tag) => ( -
+
{tag}
)) @@ -119,30 +105,53 @@ const leftProject = position == "left";
- diff --git a/src/components/projects/ProjectsComponent.astro b/src/components/projects/ProjectsComponent.astro index 28f1e90..201efdf 100644 --- a/src/components/projects/ProjectsComponent.astro +++ b/src/components/projects/ProjectsComponent.astro @@ -1,7 +1,7 @@ --- import TaskWidget from "./TaskWidget.svelte"; import CoworkingGuide from "../images/projects/coworking-guide.webp"; -import Wnrs from "../images/projects/wnrs.webp"; +import PortfolioRoastBot from "../images/projects/portfolio-roast-bot.webp"; import VideoProject from "./VideoProject.svelte"; import Project from "./Project.astro"; --- @@ -37,13 +37,13 @@ import Project from "./Project.astro"; - const streamers = [ - { - streamer: "4l1c3_0", - task: "mental breakdance", - }, - { - streamer: "arcanexviii", - task: "babysit", - }, - { - streamer: "brisim_claimhte", - task: "rewrite history thesis", - }, - { - streamer: "Bubxmicn", - task: "drive a truck", - }, - { - streamer: "charliosaurus", - task: "praise the lord", - }, - { - streamer: "clari_miu", - task: "be sweaty", - }, - { - streamer: "cloudydayzzz", - task: "stay up at night", - }, - { - streamer: "creativepepper", - task: "develop mobile app", - }, - { - streamer: "DATJI_", - task: "IRL KBBQ stream", - }, - { - streamer: "EarliestTea", - task: "chat about MBTI", - }, - { - streamer: "Ellyskey", - task: "sell YOUthversity merch", - }, - { - streamer: "HarryIsTrying", - task: "be a strategy consultant", - }, - { - streamer: "itsbrandonut", - task: "cowork then league", - }, - { - streamer: "lala_xitlali", - task: "design fashionable clothes", - }, - { - streamer: "lyricalclove", - task: "teach English", - }, - { - streamer: "nachoburrit0", - task: "update spreadsheets", - }, - { - streamer: "nihn_", - task: "Release new Lo-fi music", - }, - { - streamer: "lanezzz_", - task: "be a supermodel", - }, - { - streamer: "PineappleEffect", - task: "edit video", - }, - { - streamer: "pinsaregood", - task: "go on another hiatus", - }, - { - streamer: "lilylikesrocks", - task: "learn about rocks", - }, - { - streamer: "snowxcone", - task: "do more leetcode", - }, - { - streamer: "studypaws", - task: "be a vet", - }, - { - streamer: "sunfflawer", - task: "be a sunflower", - }, - { - streamer: "Supernaturalwriter", - task: "hit the gym", - }, - { - streamer: "ThePainfulPhD", - task: "study about pain", - }, - { - streamer: "theyolotato", - task: "be a potato", - }, - { - streamer: "xeno_hiraeth", - task: "anki flashcards", - }, - ]; + const streamers = [ + { + streamer: "4l1c3_0", + task: "mental breakdance", + }, + { + streamer: "arcanexviii", + task: "babysit", + }, + { + streamer: "brisim_claimhte", + task: "rewrite history thesis", + }, + { + streamer: "Bubxmicn", + task: "drive a truck", + }, + { + streamer: "charliosaurus", + task: "praise the lord", + }, + { + streamer: "clari_miu", + task: "be sweaty", + }, + { + streamer: "cloudydayzzz", + task: "stay up at night", + }, + { + streamer: "creativepepper", + task: "develop mobile app", + }, + { + streamer: "DATJI_", + task: "IRL KBBQ stream", + }, + { + streamer: "EarliestTea", + task: "chat about MBTI", + }, + { + streamer: "Ellyskey", + task: "sell YOUthversity merch", + }, + { + streamer: "HarryIsTrying", + task: "be a strategy consultant", + }, + { + streamer: "itsbrandonut", + task: "cowork then league", + }, + { + streamer: "lala_xitlali", + task: "design fashionable clothes", + }, + { + streamer: "lyricalclove", + task: "teach English", + }, + { + streamer: "nachoburrit0", + task: "update spreadsheets", + }, + { + streamer: "nihn_", + task: "Release new Lo-fi music", + }, + { + streamer: "lanezzz_", + task: "be a supermodel", + }, + { + streamer: "PineappleEffect", + task: "edit video", + }, + { + streamer: "pinsaregood", + task: "go on another hiatus", + }, + { + streamer: "lilylikesrocks", + task: "learn about rocks", + }, + { + streamer: "snowxcone", + task: "do more leetcode", + }, + { + streamer: "studypaws", + task: "be a vet", + }, + { + streamer: "sunfflawer", + task: "be a sunflower", + }, + { + streamer: "Supernaturalwriter", + task: "hit the gym", + }, + { + streamer: "ThePainfulPhD", + task: "study about pain", + }, + { + streamer: "theyolotato", + task: "be a potato", + }, + { + streamer: "xeno_hiraeth", + task: "anki flashcards", + }, + ]; - interface Props { - classList: string; - } + interface Props { + classList: string; + } - let { classList }: Props = $props(); + let { classList }: Props = $props();
- -
-
- Hover here! - 0/100+ -
-
-
- {#each streamers as { streamer, task }} -
- O {streamer} : {task} -
- {/each} -
-
- {#each streamers as { streamer, task }} -
- O {streamer} : {task} -
- {/each} -
-
-
+ +
+
+ Hover here! + 0/100+ +
+
+
+ {#each streamers as { streamer, task }} +
+ O {streamer} : {task} +
+ {/each} +
+
+ {#each streamers as { streamer, task }} +
+ O {streamer} : {task} +
+ {/each} +
+
+
diff --git a/src/components/projects/VideoProject.svelte b/src/components/projects/VideoProject.svelte index 953b163..5184d27 100644 --- a/src/components/projects/VideoProject.svelte +++ b/src/components/projects/VideoProject.svelte @@ -26,17 +26,6 @@ onMount(() => { const videos = document.querySelectorAll(".playable"); - let userInteracted = false; - - const handleUserInteraction = () => { - userInteracted = true; - document.removeEventListener("click", handleUserInteraction); - document.removeEventListener("keydown", handleUserInteraction); - }; - - document.addEventListener("click", handleUserInteraction); - document.addEventListener("keydown", handleUserInteraction); - videos.forEach((video) => { // Ensure the video element supports play and pause methods if ( @@ -44,15 +33,9 @@ typeof video.pause === "function" ) { video.addEventListener("mouseenter", () => { - if (userInteracted) { - video.volume = 0.2; - video.muted = false; - video.play(); - } else { - video.volume = 0; - video.muted = true; - video.play(); - } + video.volume = 0; + video.muted = true; + video.play(); }); video.addEventListener("mouseleave", () => { @@ -86,7 +69,7 @@ class="background-img absolute top-1/2 left-1/2 max-w-full rounded-xl border-2 - border-solid border-white + border-solid border-gray-800 opacity-40 {positionLeft ? 'left' : 'right'}" width="700" @@ -98,7 +81,7 @@ class="playable frontfacing-vid absolute top-1/2 left-1/2 max-w-full rounded-xl border-2 - border-solid border-white + border-solid border-gray-800 opacity-100 {positionLeft ? 'left' : 'right'}" > @@ -127,9 +110,9 @@ > {#each tags as tag}
{tag}
@@ -140,27 +123,45 @@ diff --git a/src/components/skills/MoreSkills.astro b/src/components/skills/MoreSkills.astro deleted file mode 100644 index 898d8f7..0000000 --- a/src/components/skills/MoreSkills.astro +++ /dev/null @@ -1,57 +0,0 @@ ---- -import Card from "../global/Card.astro"; -import Line from "../global/NetworkLine.astro"; -import Skill from "./Skill.astro"; ---- - -
-
-
- - - - -
-
-
diff --git a/src/components/skills/Skill.astro b/src/components/skills/Skill.astro deleted file mode 100644 index 96bc434..0000000 --- a/src/components/skills/Skill.astro +++ /dev/null @@ -1,37 +0,0 @@ ---- -import Card from "../global/Card.astro"; - -interface Props { - title: string; - tags?: Array; - primaryColor?: string; - className?: string; -} - -const { title, tags, primaryColor, className = "" } = Astro.props; ---- - -
- -
-
-

{title}

-
-
-

- -

-
- { - tags?.map((tag, index) => ( -
- {tag} -
- )) - } -
-
-
-
diff --git a/src/components/skills/SkillsComponent.astro b/src/components/skills/SkillsComponent.astro index 97834b2..9948a81 100644 --- a/src/components/skills/SkillsComponent.astro +++ b/src/components/skills/SkillsComponent.astro @@ -1,63 +1,86 @@ --- import Card from "../global/Card.astro"; -import Line from "../global/NetworkLine.astro"; -import Skill from "./Skill.astro"; --- -
-

Skills

-
-
- - - - - -
+
+

Skills

+ +
+ +
+
+
Frontend
+
+
Typescript,
+
React,
+
TailwindCSS
+
+
+
+
Backend
+
+
Node.js,
+
PHP,
+
Go,
+
Rust
+
+
+
+
Tools
+
+
Git,
+
Github,
+
Codeberg,
+
Visual Studio Code
+
+
+
+
+ +
+
+

+ I primarily work on websites on both the frontend and + the backend. +

+

+ Other projects I work on include Python scripts, Discord + bots, and Streamer.bot C# scripts. +

+

+ Full resume available upon requests via + Email. +

+
+ +
+
diff --git a/src/components/socials/Socials.astro b/src/components/socials/Socials.astro index e7fdbe8..87aaeee 100644 --- a/src/components/socials/Socials.astro +++ b/src/components/socials/Socials.astro @@ -1,7 +1,7 @@ -
+
- +
youtube @@ -35,7 +35,7 @@
- import moment from "moment-timezone"; - import { onMount } from "svelte"; + import moment from "moment-timezone"; + import { onMount } from "svelte"; - const myLocation = "Australia/Melbourne"; + const myLocation = "Australia/Melbourne"; - type StreamScheduleDay = { - start: moment.Moment; - end: moment.Moment; - }; + type StreamScheduleDay = { + start: moment.Moment; + end: moment.Moment; + }; - const myStreamSchedule: null | StreamScheduleDay[] = [ - { - start: getUpcomingTimeDevTZ(4, "11:00"), - end: getUpcomingTimeDevTZ(4, "16:00"), - }, - { - start: getUpcomingTimeDevTZ(5, "11:00"), - end: getUpcomingTimeDevTZ(5, "16:00"), - }, - ]; + const myStreamSchedule: null | StreamScheduleDay[] = [ + { + start: getUpcomingTimeDevTZ(4, "10:00"), + end: getUpcomingTimeDevTZ(4, "20:00"), + }, + { + start: getUpcomingTimeDevTZ(5, "14:00"), + end: getUpcomingTimeDevTZ(5, "20:00"), + }, + ]; - /** - * Calculates the upcoming specified time for a given day of the week in my timezone. - * - * This function initially finds the upcoming Friday at 8 AM in my timezone. - * It then adjusts this time based on the provided `dayOfWeek` and `time24` parameters to find the - * upcoming time specified by these parameters. If the specified time has already passed for the current week, - * it calculates the time for the next week. - * - * @param dayOfWeek - The day of the week as an integer (1 for Monday, 7 for Sunday). - * @param time24 - The time in 24-hour format (e.g., "14:00" for 2 PM). - * @returns A moment object representing the upcoming specified time in my timezone. - */ - function getUpcomingTimeDevTZ( - dayOfWeek: number, - time24: string, - ): moment.Moment { - // Current time in my timezone - let now = moment.tz(myLocation); + /** + * Calculates the upcoming specified time for a given day of the week in my timezone. + * + * This function initially finds the upcoming Friday at 8 AM in my timezone. + * It then adjusts this time based on the provided `dayOfWeek` and `time24` parameters to find the + * upcoming time specified by these parameters. If the specified time has already passed for the current week, + * it calculates the time for the next week. + * + * @param dayOfWeek - The day of the week as an integer (1 for Monday, 7 for Sunday). + * @param time24 - The time in 24-hour format (e.g., "14:00" for 2 PM). + * @returns A moment object representing the upcoming specified time in my timezone. + */ + function getUpcomingTimeDevTZ( + dayOfWeek: number, + time24: string, + ): moment.Moment { + // Current time in my timezone + let now = moment.tz(myLocation); - let inputTime = moment(time24, "HH:mm"); - let upcomingTime = now - .clone() - .day(dayOfWeek) - .hour(inputTime.hour()) - .minute(inputTime.minute()) - .second(0); + let inputTime = moment(time24, "HH:mm"); + let upcomingTime = now + .clone() + .day(dayOfWeek) + .hour(inputTime.hour()) + .minute(inputTime.minute()) + .second(0); - if (now.isAfter(upcomingTime)) { - upcomingTime.add(1, "week"); // If the time has already passed this week, set to next week - } + if (now.isAfter(upcomingTime)) { + upcomingTime.add(1, "week"); // If the time has already passed this week, set to next week + } - return upcomingTime.tz(myLocation); - } + return upcomingTime.tz(myLocation); + } - /** - * Convert a given time in my timezone to the user's local timezone. - * @param {moment.Moment} devTimeZone - Moment object representing the time in my timezone. - * @returns A moment object representing the equivalent time in the user's local timezone. - */ - function convertToUserLocalTimezone( - devTimeZone: moment.Moment, - ): moment.Moment { - return devTimeZone.clone().tz(moment.tz.guess()); - } + /** + * Convert a given time in my timezone to the user's local timezone. + * @param {moment.Moment} devTimeZone - Moment object representing the time in my timezone. + * @returns A moment object representing the equivalent time in the user's local timezone. + */ + function convertToUserLocalTimezone( + devTimeZone: moment.Moment, + ): moment.Moment { + return devTimeZone.clone().tz(moment.tz.guess()); + } - type Schedule = { - day: string; - start: string; - end: string; - }; + type Schedule = { + day: string; + start: string; + end: string; + }; - let sameTimezone = $state(true); - let adjusted = $state(true); + let sameTimezone = $state(true); + let adjusted = $state(true); - let localisedStreamSchedule = []; + let localisedStreamSchedule = []; - let formattedSchedule: Schedule[] = $state([]); - let formattedLocalisedSchedule: Schedule[] = $state([]); + let formattedSchedule: Schedule[] = $state([]); + let formattedLocalisedSchedule: Schedule[] = $state([]); - function displayStreamSchedule() { - if (myStreamSchedule == null) { - return; - } - localisedStreamSchedule = myStreamSchedule.map((stream) => ({ - start: convertToUserLocalTimezone(stream.start), - end: convertToUserLocalTimezone(stream.end), - })); + function displayStreamSchedule() { + if (myStreamSchedule == null) { + return; + } + localisedStreamSchedule = myStreamSchedule.map((stream) => ({ + start: convertToUserLocalTimezone(stream.start), + end: convertToUserLocalTimezone(stream.end), + })); - formattedSchedule = myStreamSchedule.map((stream) => ({ - day: stream.start.format("dddd"), - start: stream.start.format("h:mm a"), - end: stream.end.format("h:mm a"), - })); + formattedSchedule = myStreamSchedule.map((stream) => ({ + day: stream.start.format("dddd"), + start: stream.start.format("h:mm a"), + end: stream.end.format("h:mm a"), + })); - formattedLocalisedSchedule = localisedStreamSchedule.map((stream) => ({ - day: stream.start.format("dddd"), - start: stream.start.format("h:mm a"), - end: stream.end.format("h:mm a"), - })); - } + formattedLocalisedSchedule = localisedStreamSchedule.map((stream) => ({ + day: stream.start.format("dddd"), + start: stream.start.format("h:mm a"), + end: stream.end.format("h:mm a"), + })); + } - onMount(() => { - // Example usage - displayStreamSchedule(); + onMount(() => { + // Example usage + displayStreamSchedule(); - if ( - formattedLocalisedSchedule[0].day === formattedSchedule[0].day && - formattedLocalisedSchedule[0].start === formattedSchedule[0].start - ) { - sameTimezone = true; - } else { - sameTimezone = false; - } - }); + if ( + formattedLocalisedSchedule[0].day === formattedSchedule[0].day && + formattedLocalisedSchedule[0].start === formattedSchedule[0].start + ) { + sameTimezone = true; + } else { + sameTimezone = false; + } + }); {#if !sameTimezone} -
- - + -
+ >AEST/AEDT +
{/if}
- {#if myStreamSchedule.length} - - - - - - - - - {#if adjusted} - {#each formattedLocalisedSchedule as localTime} - - - - - {/each} - {:else} - {#each formattedSchedule as devTime} - - - - - {/each} - {/if} - -
DayTime
{localTime.day}{localTime.start} - {localTime.end}
{devTime.day}{devTime.start} - {devTime.end}
- {:else} -
- {/if} + {#if myStreamSchedule.length} + + + + + + + + + {#if adjusted} + {#each formattedLocalisedSchedule as localTime} + + + + + {/each} + {:else} + {#each formattedSchedule as devTime} + + + + + {/each} + {/if} + +
DayTime
{localTime.day}{localTime.start} - {localTime.end}
{devTime.day}{devTime.start} - {devTime.end}
+ {:else} +
+ To be announced on Discord +
+ {/if}
diff --git a/src/components/ui/AnimatedToolTip.tsx b/src/components/ui/AnimatedToolTip.tsx deleted file mode 100644 index d50c973..0000000 --- a/src/components/ui/AnimatedToolTip.tsx +++ /dev/null @@ -1,94 +0,0 @@ -"use client"; - -import { useState, useRef } from "react"; -import { - motion, - useTransform, - AnimatePresence, - useMotionValue, - useSpring, -} from "motion/react"; -import { cn } from "@/lib/utils"; - -export const AnimatedTooltip = ({ - className, - children, - text, - href, -}: { - className?: string; - children: React.ReactNode; - text: string; - href?: string; -}) => { - const [hovered, setHovered] = useState(false); - const animationFrameRef = useRef(null); - - const handleMouseMove = (event: any) => { - if (animationFrameRef.current) { - cancelAnimationFrame(animationFrameRef.current); - } - }; - - return ( - <> -
setHovered(true)} - onMouseLeave={() => setHovered(false)} - > - - {hovered && ( - -
-
-
- {text} -
- - )} - - {!href && ( -
- {children} -
- )} - {href && ( - - {children} - - )} -
- - ); -}; diff --git a/src/components/ui/NavigationBar.tsx b/src/components/ui/NavigationBar.tsx index 539117c..24ffbf9 100644 --- a/src/components/ui/NavigationBar.tsx +++ b/src/components/ui/NavigationBar.tsx @@ -1,41 +1,12 @@ import { cn } from "@/lib/utils"; -import { - AnimatePresence, - motion, - useScroll, - useMotionValueEvent, -} from "motion/react"; +import { AnimatePresence, motion } from "motion/react"; import { Cross as HamburgerCross } from "hamburger-react"; -import { useEffect, useState } from "react"; +import { useEffect, useState, useRef } from "react"; -function useWindowDimensions() { - const hasWindow = typeof window !== "undefined"; - - function getWindowDimensions() { - const width = hasWindow ? window.innerWidth : 0; - const height = hasWindow ? window.innerHeight : 0; - return { - width, - height, - }; +declare module "react" { + interface CSSProperties { + [key: `--${string}`]: string | number; } - - const [windowDimensions, setWindowDimensions] = useState( - getWindowDimensions(), - ); - - useEffect(() => { - if (hasWindow) { - function handleResize() { - setWindowDimensions(getWindowDimensions()); - } - - window.addEventListener("resize", handleResize); - return () => window.removeEventListener("resize", handleResize); - } - }, [hasWindow]); - - return windowDimensions; } export const HoverNavigation = ({ @@ -49,124 +20,191 @@ export const HoverNavigation = ({ className?: string; }) => { const [hoveredIndex, setHoveredIndex] = useState(null); + const [activeIndex, setActiveIndex] = useState(null); const [hamburgerOpen, setHamburgerOpen] = useState(false); - const { width } = useWindowDimensions(); + const hamburgerRef = useRef(null); + const menuRef = useRef(null); + + // Track which section is in view + useEffect(() => { + const sectionIds = items.map((item) => { + const url = new URL(item.link, window.location.origin); + return url.hash.replace("#", ""); + }); + + const observers: IntersectionObserver[] = []; + + sectionIds.forEach((id, idx) => { + if (!id) return; + + const element = document.getElementById(id); + if (!element) return; + + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + setActiveIndex(idx); + } + }); + }, + { + rootMargin: "-20% 0px -50% 0px", + }, + ); + + observer.observe(element); + observers.push(observer); + }); + + // set hover index on projects when on "/projects" + const splittedURL = window.location.href.split("/"); + + if (splittedURL[splittedURL.length - 1]) { + setActiveIndex(2); + } + + return () => { + observers.forEach((observer) => observer.disconnect()); + }; + }, [items]); + + useEffect(() => { + // hamburger stuff + const handleClickOutside = (event: MouseEvent) => { + if ( + hamburgerOpen && + hamburgerRef.current && + menuRef.current && + !hamburgerRef.current.contains(event.target as Node) && + !menuRef.current.contains(event.target as Node) + ) { + setHamburgerOpen(false); + } + }; + + document.addEventListener("mousedown", handleClickOutside); + return () => { + document.removeEventListener("mousedown", handleClickOutside); + }; + }, [hamburgerOpen]); + + // Use hoveredIndex when hovering, otherwise use activeIndex + const displayIndex = hoveredIndex !== null ? hoveredIndex : activeIndex; return ( - -
+
+
+ +
+
+ + {/* Mobile Navigation Menu */} + + {hamburgerOpen && ( + + + + )} + + ); }; diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 018f2a7..3348ac7 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -23,13 +23,7 @@ import { ClientRouter } from "astro:transitions"; - { - thumbnail && ( - <> - - - ) - } + {thumbnail && } {metaURL && } @@ -83,7 +77,7 @@ import { ClientRouter } from "astro:transitions"; body { font-family: "Montserrat", sans-serif; color: #fff; - background: #0e0e11; + background: #1d1c20; background: radial-gradient(circle, #303030 1px, transparent 1px), #101010; background-size: 20px 20px; diff --git a/src/pages/contact.astro b/src/pages/contact.astro deleted file mode 100644 index e713494..0000000 --- a/src/pages/contact.astro +++ /dev/null @@ -1,17 +0,0 @@ ---- -import NavBar from "../components/global/NavBar.astro"; -import PageLayout from "@/layouts/PageLayout.astro"; -import ContactComponent from "../components/contact/ContactComponent.astro"; -import Footer from "../components/global/FooterComponent.astro"; ---- - - -
-

Contact

- -
- -
-
-