From 35c7ca5222df33035f28b5f75a0381d8a646f8b8 Mon Sep 17 00:00:00 2001 From: Maxdlr Date: Sat, 11 Oct 2025 15:48:02 +0200 Subject: [PATCH 1/7] :sparkles: init v2 --- .gitignore | 61 +- .vscode/extensions.json | 3 - README.md | 38 +- biome.json | 37 + eslint.config.js | 17 - index.html | 45 - next.config.ts | 7 + old/.gitignore | 28 + .prettierignore => old/.prettierignore | 0 .prettierrc => old/.prettierrc | 0 Dockerfile => old/Dockerfile | 0 old/README.md | 6 + docker-compose.yml => old/docker-compose.yml | 0 nginx.conf => old/nginx.conf | 0 {public => old/public}/current-project.gif | Bin {public => old/public}/cv-motion.pdf | Bin {public => old/public}/cv.pdf | Bin {public => old/public}/favicon.jpg | Bin {public => old/public}/loading.gif | Bin {public => old/public}/logo.png | Bin .../public}/photo-collections/minolta-01.jpg | Bin .../public}/photo-collections/minolta-02.jpg | Bin .../public}/photo-collections/minolta-03.jpg | Bin .../public}/photo-collections/minolta-04.jpg | Bin .../public}/photo-collections/minolta-05.jpg | Bin .../public}/photo-collections/minolta-06.jpg | Bin .../public}/photo-collections/minolta-07.jpg | Bin .../public}/photo-collections/minolta-08.jpg | Bin .../public}/photo-collections/minolta-09.jpg | Bin .../public}/photo-collections/minolta-10.jpg | Bin .../public}/photo-collections/misc-01.jpg | Bin .../public}/photo-collections/misc-02.jpg | Bin .../public}/photo-collections/misc-03.jpg | Bin .../public}/photo-collections/misc-04.jpg | Bin .../public}/photo-collections/misc-05.jpg | Bin .../public}/photo-collections/misc-06.jpg | Bin .../public}/photo-collections/stranger-01.jpg | Bin .../public}/photo-collections/stranger-02.jpg | Bin .../public}/photo-collections/stranger-03.jpg | Bin .../public}/photo-collections/stranger-04.jpg | Bin .../public}/photo-collections/stranger-05.jpg | Bin .../public}/photo-collections/stranger-06.jpg | Bin .../public}/photo-collections/stranger-07.jpg | Bin .../public}/photo-collections/stranger-08.jpg | Bin .../public}/photo-collections/stranger-09.jpg | Bin .../public}/photo-collections/stranger-10.jpg | Bin .../public}/photo-collections/stranger-11.jpg | Bin .../public}/photo-collections/widelux-01.jpg | Bin .../public}/photo-collections/widelux-02.jpg | Bin {public => old/public}/photo.jpg | Bin package-lock.json | 1831 ++++++++++ package.json | 55 +- postcss.config.js | 10 - postcss.config.mjs | 5 + public/file.svg | 1 + public/globe.svg | 1 + public/next.svg | 1 + public/vercel.svg | 1 + public/window.svg | 1 + src/App.vue | 27 - src/app/favicon.ico | Bin 0 -> 25931 bytes src/app/globals.css | 26 + src/app/layout.tsx | 34 + src/app/page.tsx | 103 + src/components/atoms/ArticleCard.vue | 51 - src/components/atoms/Button.vue | 45 - src/components/atoms/Layout.vue | 99 - src/components/atoms/LightBox.vue | 129 - src/components/atoms/Loader.vue | 13 - .../atoms/transitions/TransitionSlideDown.vue | 29 - .../atoms/transitions/TransitionSlideUp.vue | 29 - src/components/gh/ContribSquare.vue | 42 - src/components/pages/Blog/Blog.vue | 58 - src/components/pages/Blog/BlogArticle.vue | 105 - .../pages/Github/GithubContributions.vue | 110 - src/components/pages/Home.vue | 170 - src/components/pages/Photo/Photos.vue | 235 -- src/composables/Utils.ts | 31 - .../processors/BlogArticleTextProcessor.ts | 306 -- .../processors/ContributionsProcessor.ts | 199 -- src/composables/processors/ImgProcessor.ts | 47 - src/composables/processors/MediaProcessor.ts | 36 - src/composables/processors/VideoProcessor.ts | 47 - src/composables/usePageHead.ts | 111 - src/interface/BlogArticle.ts | 53 - src/interface/Github.ts | 41 - src/locale/en.json | 13 - src/locale/fr.json | 13 - src/locale/index.ts | 7 - src/main.ts | 29 - src/model/data.json | 44 - src/router/index.ts | 61 - src/services/AttachementService.ts | 36 - src/services/BlogService.ts | 67 - src/services/CookieService.ts | 46 - src/services/GithubService.ts | 247 -- src/services/OutlineService.ts | 28 - src/services/integrations/CodePenService.ts | 19 - src/style.css | 3 - src/vite-env.d.ts | 1 - tailwind.config.js | 19 - tsconfig.app.json | 24 - tsconfig.app.tsbuildinfo | 1 - tsconfig.json | 30 +- tsconfig.node.json | 22 - tsconfig.node.tsbuildinfo | 1 - vite.config.ts | 6 - yarn.lock | 2993 ----------------- 108 files changed, 2194 insertions(+), 5840 deletions(-) delete mode 100644 .vscode/extensions.json create mode 100644 biome.json delete mode 100644 eslint.config.js delete mode 100644 index.html create mode 100644 next.config.ts create mode 100644 old/.gitignore rename .prettierignore => old/.prettierignore (100%) rename .prettierrc => old/.prettierrc (100%) rename Dockerfile => old/Dockerfile (100%) create mode 100644 old/README.md rename docker-compose.yml => old/docker-compose.yml (100%) rename nginx.conf => old/nginx.conf (100%) rename {public => old/public}/current-project.gif (100%) rename {public => old/public}/cv-motion.pdf (100%) rename {public => old/public}/cv.pdf (100%) rename {public => old/public}/favicon.jpg (100%) rename {public => old/public}/loading.gif (100%) rename {public => old/public}/logo.png (100%) rename {public => old/public}/photo-collections/minolta-01.jpg (100%) rename {public => old/public}/photo-collections/minolta-02.jpg (100%) rename {public => old/public}/photo-collections/minolta-03.jpg (100%) rename {public => old/public}/photo-collections/minolta-04.jpg (100%) rename {public => old/public}/photo-collections/minolta-05.jpg (100%) rename {public => old/public}/photo-collections/minolta-06.jpg (100%) rename {public => old/public}/photo-collections/minolta-07.jpg (100%) rename {public => old/public}/photo-collections/minolta-08.jpg (100%) rename {public => old/public}/photo-collections/minolta-09.jpg (100%) rename {public => old/public}/photo-collections/minolta-10.jpg (100%) rename {public => old/public}/photo-collections/misc-01.jpg (100%) rename {public => old/public}/photo-collections/misc-02.jpg (100%) rename {public => old/public}/photo-collections/misc-03.jpg (100%) rename {public => old/public}/photo-collections/misc-04.jpg (100%) rename {public => old/public}/photo-collections/misc-05.jpg (100%) rename {public => old/public}/photo-collections/misc-06.jpg (100%) rename {public => old/public}/photo-collections/stranger-01.jpg (100%) rename {public => old/public}/photo-collections/stranger-02.jpg (100%) rename {public => old/public}/photo-collections/stranger-03.jpg (100%) rename {public => old/public}/photo-collections/stranger-04.jpg (100%) rename {public => old/public}/photo-collections/stranger-05.jpg (100%) rename {public => old/public}/photo-collections/stranger-06.jpg (100%) rename {public => old/public}/photo-collections/stranger-07.jpg (100%) rename {public => old/public}/photo-collections/stranger-08.jpg (100%) rename {public => old/public}/photo-collections/stranger-09.jpg (100%) rename {public => old/public}/photo-collections/stranger-10.jpg (100%) rename {public => old/public}/photo-collections/stranger-11.jpg (100%) rename {public => old/public}/photo-collections/widelux-01.jpg (100%) rename {public => old/public}/photo-collections/widelux-02.jpg (100%) rename {public => old/public}/photo.jpg (100%) create mode 100644 package-lock.json delete mode 100644 postcss.config.js create mode 100644 postcss.config.mjs create mode 100644 public/file.svg create mode 100644 public/globe.svg create mode 100644 public/next.svg create mode 100644 public/vercel.svg create mode 100644 public/window.svg delete mode 100644 src/App.vue create mode 100644 src/app/favicon.ico create mode 100644 src/app/globals.css create mode 100644 src/app/layout.tsx create mode 100644 src/app/page.tsx delete mode 100644 src/components/atoms/ArticleCard.vue delete mode 100644 src/components/atoms/Button.vue delete mode 100644 src/components/atoms/Layout.vue delete mode 100644 src/components/atoms/LightBox.vue delete mode 100644 src/components/atoms/Loader.vue delete mode 100644 src/components/atoms/transitions/TransitionSlideDown.vue delete mode 100644 src/components/atoms/transitions/TransitionSlideUp.vue delete mode 100644 src/components/gh/ContribSquare.vue delete mode 100644 src/components/pages/Blog/Blog.vue delete mode 100644 src/components/pages/Blog/BlogArticle.vue delete mode 100644 src/components/pages/Github/GithubContributions.vue delete mode 100644 src/components/pages/Home.vue delete mode 100644 src/components/pages/Photo/Photos.vue delete mode 100644 src/composables/Utils.ts delete mode 100644 src/composables/processors/BlogArticleTextProcessor.ts delete mode 100644 src/composables/processors/ContributionsProcessor.ts delete mode 100644 src/composables/processors/ImgProcessor.ts delete mode 100644 src/composables/processors/MediaProcessor.ts delete mode 100644 src/composables/processors/VideoProcessor.ts delete mode 100644 src/composables/usePageHead.ts delete mode 100644 src/interface/BlogArticle.ts delete mode 100644 src/interface/Github.ts delete mode 100644 src/locale/en.json delete mode 100644 src/locale/fr.json delete mode 100644 src/locale/index.ts delete mode 100644 src/main.ts delete mode 100644 src/model/data.json delete mode 100644 src/router/index.ts delete mode 100644 src/services/AttachementService.ts delete mode 100644 src/services/BlogService.ts delete mode 100644 src/services/CookieService.ts delete mode 100644 src/services/GithubService.ts delete mode 100644 src/services/OutlineService.ts delete mode 100644 src/services/integrations/CodePenService.ts delete mode 100644 src/style.css delete mode 100644 src/vite-env.d.ts delete mode 100644 tailwind.config.js delete mode 100644 tsconfig.app.json delete mode 100644 tsconfig.app.tsbuildinfo delete mode 100644 tsconfig.node.json delete mode 100644 tsconfig.node.tsbuildinfo delete mode 100644 vite.config.ts delete mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index 06ecca63..5ef6a520 100644 --- a/.gitignore +++ b/.gitignore @@ -1,28 +1,41 @@ -# Logs -logs -*.log +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug npm-debug.log* yarn-debug.log* yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local -vendor -var - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel -.env +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index a7cea0b0..00000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["Vue.volar"] -} diff --git a/README.md b/README.md index fdedd97c..e215bc4c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,36 @@ -# Personal Portfolio +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). -https://www.maxdlr.com +## Getting Started -> Simple landing page on my main domain. -> It mainly redirects visitors to what they're looking for. +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..41b3b952 --- /dev/null +++ b/biome.json @@ -0,0 +1,37 @@ +{ + "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json", + "vcs": { + "enabled": true, + "clientKind": "git", + "useIgnoreFile": true + }, + "files": { + "ignoreUnknown": true, + "includes": ["**", "!node_modules", "!.next", "!dist", "!build"] + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2 + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true, + "suspicious": { + "noUnknownAtRules": "off" + } + }, + "domains": { + "next": "recommended", + "react": "recommended" + } + }, + "assist": { + "actions": { + "source": { + "organizeImports": "on" + } + } + } +} diff --git a/eslint.config.js b/eslint.config.js deleted file mode 100644 index b1a73bfc..00000000 --- a/eslint.config.js +++ /dev/null @@ -1,17 +0,0 @@ -import globals from "globals"; -import pluginJs from "@eslint/js"; -import tseslint from "typescript-eslint"; -import pluginVue from "eslint-plugin-vue"; - -/** @type {import('eslint').Linter.Config[]} */ -export default [ - { files: ["**/*.{js,mjs,cjs,ts,vue}"] }, - { languageOptions: { globals: globals.browser } }, - pluginJs.configs.recommended, - ...tseslint.configs.recommended, - ...pluginVue.configs["flat/essential"], - { - files: ["**/*.vue"], - languageOptions: { parserOptions: { parser: tseslint.parser } }, - }, -]; diff --git a/index.html b/index.html deleted file mode 100644 index 763ff733..00000000 --- a/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - Maxdlr - Developer & Motion designer - - - - - - - - - - - - - - - - - - - - - -
- - - - diff --git a/next.config.ts b/next.config.ts new file mode 100644 index 00000000..e9ffa308 --- /dev/null +++ b/next.config.ts @@ -0,0 +1,7 @@ +import type { NextConfig } from "next"; + +const nextConfig: NextConfig = { + /* config options here */ +}; + +export default nextConfig; diff --git a/old/.gitignore b/old/.gitignore new file mode 100644 index 00000000..06ecca63 --- /dev/null +++ b/old/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local +vendor +var + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +.env diff --git a/.prettierignore b/old/.prettierignore similarity index 100% rename from .prettierignore rename to old/.prettierignore diff --git a/.prettierrc b/old/.prettierrc similarity index 100% rename from .prettierrc rename to old/.prettierrc diff --git a/Dockerfile b/old/Dockerfile similarity index 100% rename from Dockerfile rename to old/Dockerfile diff --git a/old/README.md b/old/README.md new file mode 100644 index 00000000..fdedd97c --- /dev/null +++ b/old/README.md @@ -0,0 +1,6 @@ +# Personal Portfolio + +https://www.maxdlr.com + +> Simple landing page on my main domain. +> It mainly redirects visitors to what they're looking for. diff --git a/docker-compose.yml b/old/docker-compose.yml similarity index 100% rename from docker-compose.yml rename to old/docker-compose.yml diff --git a/nginx.conf b/old/nginx.conf similarity index 100% rename from nginx.conf rename to old/nginx.conf diff --git a/public/current-project.gif b/old/public/current-project.gif similarity index 100% rename from public/current-project.gif rename to old/public/current-project.gif diff --git a/public/cv-motion.pdf b/old/public/cv-motion.pdf similarity index 100% rename from public/cv-motion.pdf rename to old/public/cv-motion.pdf diff --git a/public/cv.pdf b/old/public/cv.pdf similarity index 100% rename from public/cv.pdf rename to old/public/cv.pdf diff --git a/public/favicon.jpg b/old/public/favicon.jpg similarity index 100% rename from public/favicon.jpg rename to old/public/favicon.jpg diff --git a/public/loading.gif b/old/public/loading.gif similarity index 100% rename from public/loading.gif rename to old/public/loading.gif diff --git a/public/logo.png b/old/public/logo.png similarity index 100% rename from public/logo.png rename to old/public/logo.png diff --git a/public/photo-collections/minolta-01.jpg b/old/public/photo-collections/minolta-01.jpg similarity index 100% rename from public/photo-collections/minolta-01.jpg rename to old/public/photo-collections/minolta-01.jpg diff --git a/public/photo-collections/minolta-02.jpg b/old/public/photo-collections/minolta-02.jpg similarity index 100% rename from public/photo-collections/minolta-02.jpg rename to old/public/photo-collections/minolta-02.jpg diff --git a/public/photo-collections/minolta-03.jpg b/old/public/photo-collections/minolta-03.jpg similarity index 100% rename from public/photo-collections/minolta-03.jpg rename to old/public/photo-collections/minolta-03.jpg diff --git a/public/photo-collections/minolta-04.jpg b/old/public/photo-collections/minolta-04.jpg similarity index 100% rename from public/photo-collections/minolta-04.jpg rename to old/public/photo-collections/minolta-04.jpg diff --git a/public/photo-collections/minolta-05.jpg b/old/public/photo-collections/minolta-05.jpg similarity index 100% rename from public/photo-collections/minolta-05.jpg rename to old/public/photo-collections/minolta-05.jpg diff --git a/public/photo-collections/minolta-06.jpg b/old/public/photo-collections/minolta-06.jpg similarity index 100% rename from public/photo-collections/minolta-06.jpg rename to old/public/photo-collections/minolta-06.jpg diff --git a/public/photo-collections/minolta-07.jpg b/old/public/photo-collections/minolta-07.jpg similarity index 100% rename from public/photo-collections/minolta-07.jpg rename to old/public/photo-collections/minolta-07.jpg diff --git a/public/photo-collections/minolta-08.jpg b/old/public/photo-collections/minolta-08.jpg similarity index 100% rename from public/photo-collections/minolta-08.jpg rename to old/public/photo-collections/minolta-08.jpg diff --git a/public/photo-collections/minolta-09.jpg b/old/public/photo-collections/minolta-09.jpg similarity index 100% rename from public/photo-collections/minolta-09.jpg rename to old/public/photo-collections/minolta-09.jpg diff --git a/public/photo-collections/minolta-10.jpg b/old/public/photo-collections/minolta-10.jpg similarity index 100% rename from public/photo-collections/minolta-10.jpg rename to old/public/photo-collections/minolta-10.jpg diff --git a/public/photo-collections/misc-01.jpg b/old/public/photo-collections/misc-01.jpg similarity index 100% rename from public/photo-collections/misc-01.jpg rename to old/public/photo-collections/misc-01.jpg diff --git a/public/photo-collections/misc-02.jpg b/old/public/photo-collections/misc-02.jpg similarity index 100% rename from public/photo-collections/misc-02.jpg rename to old/public/photo-collections/misc-02.jpg diff --git a/public/photo-collections/misc-03.jpg b/old/public/photo-collections/misc-03.jpg similarity index 100% rename from public/photo-collections/misc-03.jpg rename to old/public/photo-collections/misc-03.jpg diff --git a/public/photo-collections/misc-04.jpg b/old/public/photo-collections/misc-04.jpg similarity index 100% rename from public/photo-collections/misc-04.jpg rename to old/public/photo-collections/misc-04.jpg diff --git a/public/photo-collections/misc-05.jpg b/old/public/photo-collections/misc-05.jpg similarity index 100% rename from public/photo-collections/misc-05.jpg rename to old/public/photo-collections/misc-05.jpg diff --git a/public/photo-collections/misc-06.jpg b/old/public/photo-collections/misc-06.jpg similarity index 100% rename from public/photo-collections/misc-06.jpg rename to old/public/photo-collections/misc-06.jpg diff --git a/public/photo-collections/stranger-01.jpg b/old/public/photo-collections/stranger-01.jpg similarity index 100% rename from public/photo-collections/stranger-01.jpg rename to old/public/photo-collections/stranger-01.jpg diff --git a/public/photo-collections/stranger-02.jpg b/old/public/photo-collections/stranger-02.jpg similarity index 100% rename from public/photo-collections/stranger-02.jpg rename to old/public/photo-collections/stranger-02.jpg diff --git a/public/photo-collections/stranger-03.jpg b/old/public/photo-collections/stranger-03.jpg similarity index 100% rename from public/photo-collections/stranger-03.jpg rename to old/public/photo-collections/stranger-03.jpg diff --git a/public/photo-collections/stranger-04.jpg b/old/public/photo-collections/stranger-04.jpg similarity index 100% rename from public/photo-collections/stranger-04.jpg rename to old/public/photo-collections/stranger-04.jpg diff --git a/public/photo-collections/stranger-05.jpg b/old/public/photo-collections/stranger-05.jpg similarity index 100% rename from public/photo-collections/stranger-05.jpg rename to old/public/photo-collections/stranger-05.jpg diff --git a/public/photo-collections/stranger-06.jpg b/old/public/photo-collections/stranger-06.jpg similarity index 100% rename from public/photo-collections/stranger-06.jpg rename to old/public/photo-collections/stranger-06.jpg diff --git a/public/photo-collections/stranger-07.jpg b/old/public/photo-collections/stranger-07.jpg similarity index 100% rename from public/photo-collections/stranger-07.jpg rename to old/public/photo-collections/stranger-07.jpg diff --git a/public/photo-collections/stranger-08.jpg b/old/public/photo-collections/stranger-08.jpg similarity index 100% rename from public/photo-collections/stranger-08.jpg rename to old/public/photo-collections/stranger-08.jpg diff --git a/public/photo-collections/stranger-09.jpg b/old/public/photo-collections/stranger-09.jpg similarity index 100% rename from public/photo-collections/stranger-09.jpg rename to old/public/photo-collections/stranger-09.jpg diff --git a/public/photo-collections/stranger-10.jpg b/old/public/photo-collections/stranger-10.jpg similarity index 100% rename from public/photo-collections/stranger-10.jpg rename to old/public/photo-collections/stranger-10.jpg diff --git a/public/photo-collections/stranger-11.jpg b/old/public/photo-collections/stranger-11.jpg similarity index 100% rename from public/photo-collections/stranger-11.jpg rename to old/public/photo-collections/stranger-11.jpg diff --git a/public/photo-collections/widelux-01.jpg b/old/public/photo-collections/widelux-01.jpg similarity index 100% rename from public/photo-collections/widelux-01.jpg rename to old/public/photo-collections/widelux-01.jpg diff --git a/public/photo-collections/widelux-02.jpg b/old/public/photo-collections/widelux-02.jpg similarity index 100% rename from public/photo-collections/widelux-02.jpg rename to old/public/photo-collections/widelux-02.jpg diff --git a/public/photo.jpg b/old/public/photo.jpg similarity index 100% rename from public/photo.jpg rename to old/public/photo.jpg diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..7a2a759b --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1831 @@ +{ + "name": "maxdlr-portfolio", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "maxdlr-portfolio", + "version": "0.1.0", + "dependencies": { + "next": "15.5.4", + "react": "19.1.0", + "react-dom": "19.1.0" + }, + "devDependencies": { + "@biomejs/biome": "2.2.0", + "@tailwindcss/postcss": "^4", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "tailwindcss": "^4", + "typescript": "^5" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@biomejs/biome": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.2.0.tgz", + "integrity": "sha512-3On3RSYLsX+n9KnoSgfoYlckYBoU6VRM22cw1gB4Y0OuUVSYd/O/2saOJMrA4HFfA1Ff0eacOvMN1yAAvHtzIw==", + "dev": true, + "license": "MIT OR Apache-2.0", + "bin": { + "biome": "bin/biome" + }, + "engines": { + "node": ">=14.21.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/biome" + }, + "optionalDependencies": { + "@biomejs/cli-darwin-arm64": "2.2.0", + "@biomejs/cli-darwin-x64": "2.2.0", + "@biomejs/cli-linux-arm64": "2.2.0", + "@biomejs/cli-linux-arm64-musl": "2.2.0", + "@biomejs/cli-linux-x64": "2.2.0", + "@biomejs/cli-linux-x64-musl": "2.2.0", + "@biomejs/cli-win32-arm64": "2.2.0", + "@biomejs/cli-win32-x64": "2.2.0" + } + }, + "node_modules/@biomejs/cli-darwin-arm64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.2.0.tgz", + "integrity": "sha512-zKbwUUh+9uFmWfS8IFxmVD6XwqFcENjZvEyfOxHs1epjdH3wyyMQG80FGDsmauPwS2r5kXdEM0v/+dTIA9FXAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-darwin-x64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.2.0.tgz", + "integrity": "sha512-+OmT4dsX2eTfhD5crUOPw3RPhaR+SKVspvGVmSdZ9y9O/AgL8pla6T4hOn1q+VAFBHuHhsdxDRJgFCSC7RaMOw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.2.0.tgz", + "integrity": "sha512-6eoRdF2yW5FnW9Lpeivh7Mayhq0KDdaDMYOJnH9aT02KuSIX5V1HmWJCQQPwIQbhDh68Zrcpl8inRlTEan0SXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-arm64-musl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.2.0.tgz", + "integrity": "sha512-egKpOa+4FL9YO+SMUMLUvf543cprjevNc3CAgDNFLcjknuNMcZ0GLJYa3EGTCR2xIkIUJDVneBV3O9OcIlCEZQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.2.0.tgz", + "integrity": "sha512-5UmQx/OZAfJfi25zAnAGHUMuOd+LOsliIt119x2soA2gLggQYrVPA+2kMUxR6Mw5M1deUF/AWWP2qpxgH7Nyfw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-linux-x64-musl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.2.0.tgz", + "integrity": "sha512-I5J85yWwUWpgJyC1CcytNSGusu2p9HjDnOPAFG4Y515hwRD0jpR9sT9/T1cKHtuCvEQ/sBvx+6zhz9l9wEJGAg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-arm64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.2.0.tgz", + "integrity": "sha512-n9a1/f2CwIDmNMNkFs+JI0ZjFnMO0jdOyGNtihgUNFnlmd84yIYY2KMTBmMV58ZlVHjgmY5Y6E1hVTnSRieggA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@biomejs/cli-win32-x64": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.2.0.tgz", + "integrity": "sha512-Nawu5nHjP/zPKTIryh2AavzTc/KEg4um/MxWdXW0A6P/RZOyIpa7+QSjeXwAwX/utJGaCoXRPWtF3m5U/bB3Ww==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT OR Apache-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=14.21.3" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@img/colour": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@img/colour/-/colour-1.0.0.tgz", + "integrity": "sha512-A5P/LfWGFSl6nsckYtjw9da+19jB8hkJ6ACTGcDfEJ0aE+l2n2El7dsVM7UVHZQ9s2lmYMWlrS21YLy2IR1LUw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.4.tgz", + "integrity": "sha512-sitdlPzDVyvmINUdJle3TNHl+AG9QcwiAMsXmccqsCOMZNIdW2/7S26w0LyU8euiLVzFBL3dXPwVCq/ODnf2vA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.4.tgz", + "integrity": "sha512-rZheupWIoa3+SOdF/IcUe1ah4ZDpKBGWcsPX6MT0lYniH9micvIU7HQkYTfrx5Xi8u+YqwLtxC/3vl8TQN6rMg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-QzWAKo7kpHxbuHqUC28DZ9pIKpSi2ts2OJnoIGI26+HMgq92ZZ4vk8iJd4XsxN+tYfNJxzH6W62X5eTcsBymHw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.2.3.tgz", + "integrity": "sha512-Ju+g2xn1E2AKO6YBhxjj+ACcsPQRHT0bhpglxcEf+3uyPY+/gL8veniKoo96335ZaPo03bdDXMv0t+BBFAbmRA==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.2.3.tgz", + "integrity": "sha512-x1uE93lyP6wEwGvgAIV0gP6zmaL/a0tGzJs/BIDDG0zeBhMnuUPm7ptxGhUbcGs4okDJrk4nxgrmxpib9g6HpA==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.2.3.tgz", + "integrity": "sha512-I4RxkXU90cpufazhGPyVujYwfIm9Nk1QDEmiIsaPwdnm013F7RIceaCc87kAH+oUB1ezqEvC6ga4m7MSlqsJvQ==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.2.3.tgz", + "integrity": "sha512-Y2T7IsQvJLMCBM+pmPbM3bKT/yYJvVtLJGfCs4Sp95SjvnFIjynbjzsa7dY1fRJX45FTSfDksbTp6AGWudiyCg==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.2.3.tgz", + "integrity": "sha512-RgWrs/gVU7f+K7P+KeHFaBAJlNkD1nIZuVXdQv6S+fNA6syCcoboNjsV2Pou7zNlVdNQoQUpQTk8SWDHUA3y/w==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.2.3.tgz", + "integrity": "sha512-3JU7LmR85K6bBiRzSUc/Ff9JBVIFVvq6bomKE0e63UXGeRw2HPVEjoJke1Yx+iU4rL7/7kUjES4dZ/81Qjhyxg==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.2.3.tgz", + "integrity": "sha512-F9q83RZ8yaCwENw1GieztSfj5msz7GGykG/BA+MOUefvER69K/ubgFHNeSyUu64amHIYKGDs4sRCMzXVj8sEyw==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.2.3.tgz", + "integrity": "sha512-U5PUY5jbc45ANM6tSJpsgqmBF/VsL6LnxJmIf11kB7J5DctHgqm0SkuXzVWtIY90GnJxKnC/JT251TDnk1fu/g==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.4.tgz", + "integrity": "sha512-Xyam4mlqM0KkTHYVSuc6wXRmM7LGN0P12li03jAnZ3EJWZqj83+hi8Y9UxZUbxsgsK1qOEwg7O0Bc0LjqQVtxA==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.4.tgz", + "integrity": "sha512-YXU1F/mN/Wu786tl72CyJjP/Ngl8mGHN1hST4BGl+hiW5jhCnV2uRVTNOcaYPs73NeT/H8Upm3y9582JVuZHrQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-ppc64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-ppc64/-/sharp-linux-ppc64-0.34.4.tgz", + "integrity": "sha512-F4PDtF4Cy8L8hXA2p3TO6s4aDt93v+LKmpcYFLAVdkkD3hSxZzee0rh6/+94FpAynsuMpLX5h+LRsSG3rIciUQ==", + "cpu": [ + "ppc64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-ppc64": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.4.tgz", + "integrity": "sha512-qVrZKE9Bsnzy+myf7lFKvng6bQzhNUAYcVORq2P7bDlvmF6u2sCmK2KyEQEBdYk+u3T01pVsPrkj943T1aJAsw==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.2.3" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.4.tgz", + "integrity": "sha512-ZfGtcp2xS51iG79c6Vhw9CWqQC8l2Ot8dygxoDoIQPTat/Ov3qAa8qpxSrtAEAJW+UjTXc4yxCjNfxm4h6Xm2A==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.4.tgz", + "integrity": "sha512-8hDVvW9eu4yHWnjaOOR8kHVrew1iIX+MUgwxSuH2XyYeNRtLUe4VNioSqbNkB7ZYQJj9rUTT4PyRscyk2PXFKA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.2.3" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.4.tgz", + "integrity": "sha512-lU0aA5L8QTlfKjpDCEFOZsTYGn3AEiO6db8W5aQDxj0nQkVrZWmN3ZP9sYKWJdtq3PWPhUNlqehWyXpYDcI9Sg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.2.3" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.4.tgz", + "integrity": "sha512-33QL6ZO/qpRyG7woB/HUALz28WnTMI2W1jgX3Nu2bypqLIKx/QKMILLJzJjI+SIbvXdG9fUnmrxR7vbi1sTBeA==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.5.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.4.tgz", + "integrity": "sha512-2Q250do/5WXTwxW3zjsEuMSv5sUU4Tq9VThWKlU2EYLm4MB7ZeMwF+SFJutldYODXF6jzc6YEOC+VfX0SZQPqA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.4.tgz", + "integrity": "sha512-3ZeLue5V82dT92CNL6rsal6I2weKw1cYu+rGKm8fOCCtJTR2gYeUfY3FqUnIJsMUPIH68oS5jmZ0NiJ508YpEw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.4.tgz", + "integrity": "sha512-xIyj4wpYs8J18sVN3mSQjwrw7fKUqRw+Z5rnHNCy5fYTxigBz81u5mOMPmFumwjcn8+ld1ppptMBCLic1nz6ig==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@next/env": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.5.4.tgz", + "integrity": "sha512-27SQhYp5QryzIT5uO8hq99C69eLQ7qkzkDPsk3N+GuS2XgOgoYEeOav7Pf8Tn4drECOVDsDg8oj+/DVy8qQL2A==", + "license": "MIT" + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.5.4.tgz", + "integrity": "sha512-nopqz+Ov6uvorej8ndRX6HlxCYWCO3AHLfKK2TYvxoSB2scETOcfm/HSS3piPqc3A+MUgyHoqE6je4wnkjfrOA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.5.4.tgz", + "integrity": "sha512-QOTCFq8b09ghfjRJKfb68kU9k2K+2wsC4A67psOiMn849K9ZXgCSRQr0oVHfmKnoqCbEmQWG1f2h1T2vtJJ9mA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.5.4.tgz", + "integrity": "sha512-eRD5zkts6jS3VfE/J0Kt1VxdFqTnMc3QgO5lFE5GKN3KDI/uUpSyK3CjQHmfEkYR4wCOl0R0XrsjpxfWEA++XA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.5.4.tgz", + "integrity": "sha512-TOK7iTxmXFc45UrtKqWdZ1shfxuL4tnVAOuuJK4S88rX3oyVV4ZkLjtMT85wQkfBrOOvU55aLty+MV8xmcJR8A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.5.4.tgz", + "integrity": "sha512-7HKolaj+481FSW/5lL0BcTkA4Ueam9SPYWyN/ib/WGAFZf0DGAN8frNpNZYFHtM4ZstrHZS3LY3vrwlIQfsiMA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.5.4.tgz", + "integrity": "sha512-nlQQ6nfgN0nCO/KuyEUwwOdwQIGjOs4WNMjEUtpIQJPR2NUfmGpW2wkJln1d4nJ7oUzd1g4GivH5GoEPBgfsdw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.5.4.tgz", + "integrity": "sha512-PcR2bN7FlM32XM6eumklmyWLLbu2vs+D7nJX8OAIoWy69Kef8mfiN4e8TUv2KohprwifdpFKPzIP1njuCjD0YA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.5.4.tgz", + "integrity": "sha512-1ur2tSHZj8Px/KMAthmuI9FMp/YFusMMGoRNJaRZMOlSkgvLjzosSdQI0cJAKogdHl3qXUQKL9MGaYvKwA7DXg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/node": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.14.tgz", + "integrity": "sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/remapping": "^2.3.4", + "enhanced-resolve": "^5.18.3", + "jiti": "^2.6.0", + "lightningcss": "1.30.1", + "magic-string": "^0.30.19", + "source-map-js": "^1.2.1", + "tailwindcss": "4.1.14" + } + }, + "node_modules/@tailwindcss/oxide": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.14.tgz", + "integrity": "sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.4", + "tar": "^7.5.1" + }, + "engines": { + "node": ">= 10" + }, + "optionalDependencies": { + "@tailwindcss/oxide-android-arm64": "4.1.14", + "@tailwindcss/oxide-darwin-arm64": "4.1.14", + "@tailwindcss/oxide-darwin-x64": "4.1.14", + "@tailwindcss/oxide-freebsd-x64": "4.1.14", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.14", + "@tailwindcss/oxide-linux-arm64-gnu": "4.1.14", + "@tailwindcss/oxide-linux-arm64-musl": "4.1.14", + "@tailwindcss/oxide-linux-x64-gnu": "4.1.14", + "@tailwindcss/oxide-linux-x64-musl": "4.1.14", + "@tailwindcss/oxide-wasm32-wasi": "4.1.14", + "@tailwindcss/oxide-win32-arm64-msvc": "4.1.14", + "@tailwindcss/oxide-win32-x64-msvc": "4.1.14" + } + }, + "node_modules/@tailwindcss/oxide-android-arm64": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.14.tgz", + "integrity": "sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-arm64": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.14.tgz", + "integrity": "sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-darwin-x64": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.14.tgz", + "integrity": "sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-freebsd-x64": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.14.tgz", + "integrity": "sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.14.tgz", + "integrity": "sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.14.tgz", + "integrity": "sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-arm64-musl": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.14.tgz", + "integrity": "sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-gnu": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.14.tgz", + "integrity": "sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-linux-x64-musl": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.14.tgz", + "integrity": "sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-wasm32-wasi": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.14.tgz", + "integrity": "sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==", + "bundleDependencies": [ + "@napi-rs/wasm-runtime", + "@emnapi/core", + "@emnapi/runtime", + "@tybys/wasm-util", + "@emnapi/wasi-threads", + "tslib" + ], + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.5.0", + "@emnapi/runtime": "^1.5.0", + "@emnapi/wasi-threads": "^1.1.0", + "@napi-rs/wasm-runtime": "^1.0.5", + "@tybys/wasm-util": "^0.10.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.14.tgz", + "integrity": "sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/oxide-win32-x64-msvc": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.14.tgz", + "integrity": "sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tailwindcss/postcss": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.1.14.tgz", + "integrity": "sha512-BdMjIxy7HUNThK87C7BC8I1rE8BVUsfNQSI5siQ4JK3iIa3w0XyVvVL9SXLWO//CtYTcp1v7zci0fYwJOjB+Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "@tailwindcss/node": "4.1.14", + "@tailwindcss/oxide": "4.1.14", + "postcss": "^8.4.41", + "tailwindcss": "4.1.14" + } + }, + "node_modules/@types/node": { + "version": "20.19.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.20.tgz", + "integrity": "sha512-2Q7WS25j4pS1cS8yw3d6buNCVJukOTeQ39bAnwR6sOJbaxvyCGebzTMypDFN82CxBLnl+lSWVdCCWbRY6y9yZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/react": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", + "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.1.tgz", + "integrity": "sha512-/EEvYBdT3BflCWvTMO7YkYBHVE9Ci6XdqZciZANQgKpaiDRGOLIlRo91jbTNRQjgPFWVaRxcYc0luVNFitz57A==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001749", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001749.tgz", + "integrity": "sha512-0rw2fJOmLfnzCRbkm8EyHL8SvI2Apu5UbnQuTsJ0ClgrH8hcwFooJ1s5R0EP8o8aVrFu8++ae29Kt9/gZAZp/Q==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "devOptional": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.18.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", + "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", + "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/lightningcss": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.30.1.tgz", + "integrity": "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-darwin-arm64": "1.30.1", + "lightningcss-darwin-x64": "1.30.1", + "lightningcss-freebsd-x64": "1.30.1", + "lightningcss-linux-arm-gnueabihf": "1.30.1", + "lightningcss-linux-arm64-gnu": "1.30.1", + "lightningcss-linux-arm64-musl": "1.30.1", + "lightningcss-linux-x64-gnu": "1.30.1", + "lightningcss-linux-x64-musl": "1.30.1", + "lightningcss-win32-arm64-msvc": "1.30.1", + "lightningcss-win32-x64-msvc": "1.30.1" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz", + "integrity": "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz", + "integrity": "sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz", + "integrity": "sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz", + "integrity": "sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz", + "integrity": "sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz", + "integrity": "sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz", + "integrity": "sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz", + "integrity": "sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz", + "integrity": "sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz", + "integrity": "sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/magic-string": { + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next": { + "version": "15.5.4", + "resolved": "https://registry.npmjs.org/next/-/next-15.5.4.tgz", + "integrity": "sha512-xH4Yjhb82sFYQfY3vbkJfgSDgXvBB6a8xPs9i35k6oZJRoQRihZH+4s9Yo2qsWpzBmZ3lPXaJ2KPXLfkvW4LnA==", + "license": "MIT", + "dependencies": { + "@next/env": "15.5.4", + "@swc/helpers": "0.5.15", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.5.4", + "@next/swc-darwin-x64": "15.5.4", + "@next/swc-linux-arm64-gnu": "15.5.4", + "@next/swc-linux-arm64-musl": "15.5.4", + "@next/swc-linux-x64-gnu": "15.5.4", + "@next/swc-linux-x64-musl": "15.5.4", + "@next/swc-win32-arm64-msvc": "15.5.4", + "@next/swc-win32-x64-msvc": "15.5.4", + "sharp": "^0.34.3" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.51.1", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.26.0" + }, + "peerDependencies": { + "react": "^19.1.0" + } + }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.4", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.4.tgz", + "integrity": "sha512-FUH39xp3SBPnxWvd5iib1X8XY7J0K0X7d93sie9CJg2PO8/7gmg89Nve6OjItK53/MlAushNNxteBYfM6DEuoA==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "@img/colour": "^1.0.0", + "detect-libc": "^2.1.0", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.4", + "@img/sharp-darwin-x64": "0.34.4", + "@img/sharp-libvips-darwin-arm64": "1.2.3", + "@img/sharp-libvips-darwin-x64": "1.2.3", + "@img/sharp-libvips-linux-arm": "1.2.3", + "@img/sharp-libvips-linux-arm64": "1.2.3", + "@img/sharp-libvips-linux-ppc64": "1.2.3", + "@img/sharp-libvips-linux-s390x": "1.2.3", + "@img/sharp-libvips-linux-x64": "1.2.3", + "@img/sharp-libvips-linuxmusl-arm64": "1.2.3", + "@img/sharp-libvips-linuxmusl-x64": "1.2.3", + "@img/sharp-linux-arm": "0.34.4", + "@img/sharp-linux-arm64": "0.34.4", + "@img/sharp-linux-ppc64": "0.34.4", + "@img/sharp-linux-s390x": "0.34.4", + "@img/sharp-linux-x64": "0.34.4", + "@img/sharp-linuxmusl-arm64": "0.34.4", + "@img/sharp-linuxmusl-x64": "0.34.4", + "@img/sharp-wasm32": "0.34.4", + "@img/sharp-win32-arm64": "0.34.4", + "@img/sharp-win32-ia32": "0.34.4", + "@img/sharp-win32-x64": "0.34.4" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/tailwindcss": { + "version": "4.1.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.14.tgz", + "integrity": "sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.0.tgz", + "integrity": "sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/tar": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.1.tgz", + "integrity": "sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/typescript": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + } + } +} diff --git a/package.json b/package.json index 7ed5925c..66a9ce41 100644 --- a/package.json +++ b/package.json @@ -1,49 +1,26 @@ { "name": "maxdlr-portfolio", + "version": "0.1.0", "private": true, - "version": "0.0.0", - "type": "module", "scripts": { - "dev": "vite", - "build": "vue-tsc -b && vite build", - "preview": "vite preview" + "dev": "next dev --turbopack", + "build": "next build --turbopack", + "start": "next start", + "lint": "biome check", + "format": "biome format --write" }, "dependencies": { - "@octokit/openapi-types": "^22.2.0", - "@octokit/types": "^13.6.1", - "@types/lodash": "^4.17.13", - "@types/node": "^24.0.3", - "@unhead/vue": "^1.11.18", - "@vueuse/components": "^13.3.0", - "@vueuse/core": "^11.3.0", - "bootstrap-icons-vue": "^1.11.3", - "franken-ui": "^1.1.0", - "lodash": "^4.17.21", - "marked": "^15.0.6", - "marked-shiki": "^1.2.0", - "octokit": "^4.1.2", - "postcss-combine-duplicated-selectors": "^10.0.3", - "postcss-sort-media-queries": "^5.2.0", - "undici": "^7.3.0", - "vue": "^3.5.10", - "vue-i18n": "10.0.5", - "vue-router": "^4.5.0" + "react": "19.1.0", + "react-dom": "19.1.0", + "next": "15.5.4" }, "devDependencies": { - "@eslint/js": "^9.14.0", - "@vitejs/plugin-vue": "^5.1.4", - "autoprefixer": "^10.4.20", - "eslint": "^9.14.0", - "eslint-plugin-vue": "^9.31.0", - "globals": "^15.12.0", - "postcss": "^8.5.1", - "prettier": "3.3.3", - "sass-embedded": "^1.83.4", - "shiki": "^2.3.2", - "tailwindcss": "^3.4.13", - "typescript": "^5.5.3", - "typescript-eslint": "^8.14.0", - "vite": "^5.4.8", - "vue-tsc": "^2.1.6" + "typescript": "^5", + "@types/node": "^20", + "@types/react": "^19", + "@types/react-dom": "^19", + "@tailwindcss/postcss": "^4", + "tailwindcss": "^4", + "@biomejs/biome": "2.2.0" } } diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index bc43c55b..00000000 --- a/postcss.config.js +++ /dev/null @@ -1,10 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - "franken-ui/postcss/sort-media-queries": { sort: "mobile-first" }, - "franken-ui/postcss/combine-duplicated-selectors": { - removeDuplicatedProperties: true, - }, - }, -}; diff --git a/postcss.config.mjs b/postcss.config.mjs new file mode 100644 index 00000000..c7bcb4b1 --- /dev/null +++ b/postcss.config.mjs @@ -0,0 +1,5 @@ +const config = { + plugins: ["@tailwindcss/postcss"], +}; + +export default config; diff --git a/public/file.svg b/public/file.svg new file mode 100644 index 00000000..004145cd --- /dev/null +++ b/public/file.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/globe.svg b/public/globe.svg new file mode 100644 index 00000000..567f17b0 --- /dev/null +++ b/public/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/next.svg b/public/next.svg new file mode 100644 index 00000000..5174b28c --- /dev/null +++ b/public/next.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg new file mode 100644 index 00000000..77053960 --- /dev/null +++ b/public/vercel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/window.svg b/public/window.svg new file mode 100644 index 00000000..b2b2a44f --- /dev/null +++ b/public/window.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.vue b/src/App.vue deleted file mode 100644 index d4562241..00000000 --- a/src/App.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/src/app/favicon.ico b/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/src/app/globals.css b/src/app/globals.css new file mode 100644 index 00000000..a2dc41ec --- /dev/null +++ b/src/app/globals.css @@ -0,0 +1,26 @@ +@import "tailwindcss"; + +:root { + --background: #ffffff; + --foreground: #171717; +} + +@theme inline { + --color-background: var(--background); + --color-foreground: var(--foreground); + --font-sans: var(--font-geist-sans); + --font-mono: var(--font-geist-mono); +} + +@media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} + +body { + background: var(--background); + color: var(--foreground); + font-family: Arial, Helvetica, sans-serif; +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx new file mode 100644 index 00000000..f7fa87eb --- /dev/null +++ b/src/app/layout.tsx @@ -0,0 +1,34 @@ +import type { Metadata } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import "./globals.css"; + +const geistSans = Geist({ + variable: "--font-geist-sans", + subsets: ["latin"], +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"], +}); + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + {children} + + + ); +} diff --git a/src/app/page.tsx b/src/app/page.tsx new file mode 100644 index 00000000..a9328942 --- /dev/null +++ b/src/app/page.tsx @@ -0,0 +1,103 @@ +import Image from "next/image"; + +export default function Home() { + return ( +
+
+ Next.js logo +
    +
  1. + Get started by editing{" "} + + src/app/page.tsx + + . +
  2. +
  3. + Save and see your changes instantly. +
  4. +
+ + +
+ +
+ ); +} diff --git a/src/components/atoms/ArticleCard.vue b/src/components/atoms/ArticleCard.vue deleted file mode 100644 index b92ffb01..00000000 --- a/src/components/atoms/ArticleCard.vue +++ /dev/null @@ -1,51 +0,0 @@ - - - diff --git a/src/components/atoms/Button.vue b/src/components/atoms/Button.vue deleted file mode 100644 index 42838a08..00000000 --- a/src/components/atoms/Button.vue +++ /dev/null @@ -1,45 +0,0 @@ - - - diff --git a/src/components/atoms/Layout.vue b/src/components/atoms/Layout.vue deleted file mode 100644 index 39482e06..00000000 --- a/src/components/atoms/Layout.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - diff --git a/src/components/atoms/LightBox.vue b/src/components/atoms/LightBox.vue deleted file mode 100644 index 4f1cb4cf..00000000 --- a/src/components/atoms/LightBox.vue +++ /dev/null @@ -1,129 +0,0 @@ - - - diff --git a/src/components/atoms/Loader.vue b/src/components/atoms/Loader.vue deleted file mode 100644 index b7fe92e4..00000000 --- a/src/components/atoms/Loader.vue +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/src/components/atoms/transitions/TransitionSlideDown.vue b/src/components/atoms/transitions/TransitionSlideDown.vue deleted file mode 100644 index bfc9517a..00000000 --- a/src/components/atoms/transitions/TransitionSlideDown.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/components/atoms/transitions/TransitionSlideUp.vue b/src/components/atoms/transitions/TransitionSlideUp.vue deleted file mode 100644 index 9da593d0..00000000 --- a/src/components/atoms/transitions/TransitionSlideUp.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/src/components/gh/ContribSquare.vue b/src/components/gh/ContribSquare.vue deleted file mode 100644 index 8bff9d29..00000000 --- a/src/components/gh/ContribSquare.vue +++ /dev/null @@ -1,42 +0,0 @@ - - - diff --git a/src/components/pages/Blog/Blog.vue b/src/components/pages/Blog/Blog.vue deleted file mode 100644 index eddbeb4a..00000000 --- a/src/components/pages/Blog/Blog.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - diff --git a/src/components/pages/Blog/BlogArticle.vue b/src/components/pages/Blog/BlogArticle.vue deleted file mode 100644 index 9e77e555..00000000 --- a/src/components/pages/Blog/BlogArticle.vue +++ /dev/null @@ -1,105 +0,0 @@ - - - diff --git a/src/components/pages/Github/GithubContributions.vue b/src/components/pages/Github/GithubContributions.vue deleted file mode 100644 index 14bcb8e3..00000000 --- a/src/components/pages/Github/GithubContributions.vue +++ /dev/null @@ -1,110 +0,0 @@ - - - diff --git a/src/components/pages/Home.vue b/src/components/pages/Home.vue deleted file mode 100644 index 8a559a9f..00000000 --- a/src/components/pages/Home.vue +++ /dev/null @@ -1,170 +0,0 @@ - - - - - diff --git a/src/components/pages/Photo/Photos.vue b/src/components/pages/Photo/Photos.vue deleted file mode 100644 index fca36bfc..00000000 --- a/src/components/pages/Photo/Photos.vue +++ /dev/null @@ -1,235 +0,0 @@ - - - - - diff --git a/src/composables/Utils.ts b/src/composables/Utils.ts deleted file mode 100644 index 20cc37c8..00000000 --- a/src/composables/Utils.ts +++ /dev/null @@ -1,31 +0,0 @@ -const getReadTime = (text: string, wordsPerMinute: number = 200): number => - text.trim().split(/\s+/).length / wordsPerMinute; -const nl2br = (str: string): string => str.replace(/\\n/g, "
"); -const unescapeEqualArrow = (str: string): string => str.replace(/=>/g, "=>"); -const explodeDateKey = ( - dateKey: string, -): { day: number | null; month: number | null; year: number | null } => { - let day: number | null = null; - let month: number | null = null; - let year: number | null = null; - - const matches = dateKey.match(/(\d+)-(\d+)-(\d+)/); - if (matches) { - day = matches[1] ? parseInt(matches[1]) : null; - month = matches[2] ? parseInt(matches[2]) : null; - year = matches[2] ? parseInt(matches[3]) : null; - } - - return { - day, - month, - year, - }; -}; - -export const Utils = { - getReadTime, - nl2br, - unescapeEqualArrow, - explodeDateKey, -}; diff --git a/src/composables/processors/BlogArticleTextProcessor.ts b/src/composables/processors/BlogArticleTextProcessor.ts deleted file mode 100644 index a46dd7a8..00000000 --- a/src/composables/processors/BlogArticleTextProcessor.ts +++ /dev/null @@ -1,306 +0,0 @@ -import { marked } from "marked"; -import _ from "lodash"; -import { codeToHtml } from "shiki"; -import { VideoProcessor } from "./VideoProcessor.ts"; -import { ImgProcessor } from "./ImgProcessor.ts"; -import { Utils } from "../Utils.ts"; -import { Attachment } from "../../services/AttachementService.ts"; - -export class BlogArticleTextProcessor { - public articleImages: Attachment[] = []; - public articleDescription: string = ""; - - private blogArticleText: string; - private readonly doc: Document; - private parser: DOMParser; - private videoProcessor: VideoProcessor; - private imageProcessor: ImgProcessor; - - constructor(blogArticleText: string) { - marked.use({ - breaks: true, - gfm: true, - }); - this.blogArticleText = marked(blogArticleText) as string; - this.blogArticleText = _.unescape(this.blogArticleText); - this.parser = new DOMParser(); - this.doc = this.parser.parseFromString(this.blogArticleText, "text/html"); - this.videoProcessor = new VideoProcessor(); - this.imageProcessor = new ImgProcessor(); - } - - public async process(): Promise { - this.removeBackSlashes(); - this.editAs(); - this.editAnchorLinks(); - this.editNotices(); - await this.editCodeBlocks(); - - const processedVideoDoc = await this.videoProcessor.process(this.doc); - this.blogArticleText = processedVideoDoc.body.innerHTML; - - this.editClasses(); - this.editHr(); - - const processedImgDoc = await this.imageProcessor.process(this.doc); - this.blogArticleText = processedImgDoc.body.innerHTML; - this.retrieveImageLinks(); - this.buildArticleDescription(); - - this.removeBackSlashes(); - this.addShareDocsBaseUrl(); - this.editLineBreak(); - return this.blogArticleText; - } - - private retrieveImageLinks() { - this.articleImages = this.imageProcessor.imgList; - } - - private buildArticleDescription() { - const ps = this.doc.getElementsByTagName("p"); - let description = ""; - for (let i = 0; i < 3; i++) { - description += ps[i]?.textContent ?? ""; - description += "
"; - } - this.articleDescription = description; - } - - private editNotices() { - const ps = this.doc.getElementsByTagName("p"); - const noticePs: HTMLParagraphElement[] = []; - - for (const noticeP of ps) { - ["info", "warning", "success", "tip"].forEach((type) => { - if (_.startsWith(noticeP.innerText ?? "", `:::${type}`)) { - noticeP.classList.add(`${type}-notice`); - noticeP.textContent = noticeP.textContent?.replace( - `:::${type}`, - "", - ) as string; - noticePs.push(noticeP); - } - }); - } - - noticePs.forEach((noticeP) => { - const ukIcon = this.doc.createElement("uk-icon"); - - ukIcon.setAttribute("height", "20"); - ukIcon.setAttribute("width", "20"); - - const icon = this.doc.createElement("span"); - icon.classList.add("size-5"); - icon.append(ukIcon); - - const span = this.doc.createElement("span"); - span.append(icon); - - noticeP.append(span); - - ["info", "warning", "success", "tip"].forEach((type) => { - if (noticeP.classList.contains(`${type}-notice`)) { - const iconMap: { [key: string]: string } = { - info: "info", - warning: "circle-alert", - success: "circle-check", - tip: "circle-dot", - }; - - ukIcon.setAttribute("icon", iconMap[type]); - } - }); - - [ - "absolute", - "font-bold", - "text-white", - "rounded-full", - "p-0", - "-top-2", - "-start-2", - "notice-badge", - ].forEach((className) => span.classList.add(className)); - - ["notice", "relative"].forEach((className) => - noticeP.classList.add(className), - ); - }); - - for (const p of ps) { - if (p.innerText === ":::") p.remove(); - } - - this.blogArticleText = this.doc.body.innerHTML; - } - - private editAs(): void { - const as = this.doc.getElementsByTagName("a"); - for (const a of as) { - a.target = "_blank"; - } - this.blogArticleText = this.doc.body.innerHTML; - } - - private editClasses(): void { - const rules: { [key: string]: string[] } = { - h1: ["uk-h1", "pt-8"], - h2: ["uk-h2", "pt-5"], - h3: ["uk-h3", "pt-3"], - p: ["pt-3", "indent-3"], - "blockquote p": ["indent-0", "pt-0"], - ul: ["uk-list", "uk-list-bullet", "mt-6", "list-disc"], - ol: ["list-decimal", "ps-10"], - li: ["mt-3"], - img: [ - "rounded-xl", - "h-auto", - "w-[350px]", - "mx-auto", - "transition-opacity", - "will-change-opacity", - ], - a: ["uk-link", "hover:text-gray-400"], - table: ["uk-table", "uk-table-striped"], - pre: ["uk-padding", "rounded-xl", "mt-3"], - blockquote: [ - "p-4", - "my-4", - "border-s-4", - "border-gray-300", - "bg-gray-100", - "rounded-e-2xl", - ], - ".tip-notice": ["bg-yellow-100", "border-t-2", "border-yellow-500"], - ".info-notice": ["bg-blue-100", "border-t-2", "border-blue-500"], - ".success-notice": ["bg-green-100", "border-t-2", "border-green-500"], - ".warning-notice": ["bg-red-100", "border-t-2", "border-red-500"], - ".notice": ["uk-padding", "rounded-lg", "mt-5"], - ".tip-notice .notice-badge": ["bg-yellow-500"], - ".info-notice .notice-badge": ["bg-blue-500"], - ".warning-notice .notice-badge": ["bg-red-500"], - ".success-notice .notice-badge": ["bg-green-500"], - }; - for (const key in rules) { - this.blogArticleText = this.addClassesToHtmlTags(key, rules[key]); - } - } - - private removeBackSlashes(): void { - const ps = this.doc.getElementsByTagName("p"); - for (const p of ps) { - if (p.innerText.match(/^\\$/g)) { - p.remove(); - } - } - this.blogArticleText = this.doc.body.innerHTML; - } - - private editLineBreak(): void { - this.blogArticleText = Utils.nl2br(this.doc.body.innerHTML); - } - - private editHr(): void { - const hrs = this.doc.getElementsByTagName("hr"); - - for (const hr of hrs) { - const img = this.doc.createElement("img"); - ["uk-icon-image", "w-7", "h-7", "m-auto"].forEach((className) => - img.classList.add(className), - ); - img.src = "/logo.png"; - img.alt = "Maxime de la Rocheterie - FullStack Developer logo"; - - const div = this.doc.createElement("div"); - ["uk-divider-icon", "text-center", "my-5"].forEach((className) => - div.classList.add(className), - ); - div.append(img); - - hr.replaceWith(div); - } - - this.blogArticleText = this.doc.body.innerHTML; - } - - private addClassesToHtmlTags( - htmlTagTarget: string, - classes: string[], - ): string { - const elements = this.doc.querySelectorAll(htmlTagTarget); - - elements.forEach((element) => { - classes.forEach((className) => { - if (element.classList.contains(className)) return; - element.classList.add(className); - }); - }); - return this.doc.body.innerHTML; - } - - private editAnchorLinks(): void { - const as = this.doc.getElementsByTagName("a"); - for (const a of as) { - const url: URL = new URL(a.href); - if (url.origin === "https://docs.maxdlr.com" && url.hash !== "") { - a.href = url.hash; - a.target = ""; - } - } - - const elements = this.doc.querySelectorAll("h1, h2, h3, h4, h5, h6"); - elements.forEach((element) => { - element.id = - "h-" + _.kebabCase(_.lowerCase(element.textContent as string)); - }); - - this.blogArticleText = this.doc.body.innerHTML; - } - - private addShareDocsBaseUrl(): void { - const as = this.doc.getElementsByTagName("a"); - for (const a of as) { - const docUrl = a.href.replace(location.origin, ""); - if (docUrl.startsWith("/doc")) { - a.href = import.meta.env.VITE_BLOG_ARTICLES_SHARE_URL + docUrl; - } - } - this.blogArticleText = this.doc.body.innerHTML; - } - - private async editCodeBlocks() { - const codeBlocks = this.doc.getElementsByTagName("code"); - - for (const codeBlock of codeBlocks) { - const preBlock = codeBlock.parentNode; - const language = codeBlock.classList.item(0)?.replace("language-", ""); - - if (preBlock?.nodeName === "PRE") { - const coloredCodeBlock = codeToHtml(codeBlock.innerHTML, { - lang: language as string, - theme: "catppuccin-latte", - }); - - const highlightedCodeNode = this.parser.parseFromString( - await coloredCodeBlock, - "text/html", - ).body.firstChild as Node; - - (preBlock as Element).replaceWith(highlightedCodeNode); - } else { - [ - "bg-gray-500", - "px-2", - "py-1", - "text-white", - "rounded", - "text-sm", - ].forEach((className) => { - codeBlock.classList.add(className); - }); - } - } - this.blogArticleText = this.doc.body.innerHTML; - } -} diff --git a/src/composables/processors/ContributionsProcessor.ts b/src/composables/processors/ContributionsProcessor.ts deleted file mode 100644 index 1db04565..00000000 --- a/src/composables/processors/ContributionsProcessor.ts +++ /dev/null @@ -1,199 +0,0 @@ -import { Utils } from "../Utils.ts"; - -import { - ColorStep, - CommitDate, - CommitDateWithIntensity, - GhCommit, - GhEvent, -} from "../../interface/Github.ts"; - -export class ContributionsProcessor { - private years = [2023, 2024, 2025]; - private months = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; - private days = [ - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - ]; - - public calculateDateIntensity( - dates: CommitDate[], - ): CommitDateWithIntensity[] { - let groupedDates = dates.reduce( - (acc, date) => { - const key = `${date.day}-${date.month}-${date.year}`; - if (!acc[key]) { - acc[key] = []; - } - acc[key].push(date); - return acc; - }, - {} as Record, - ); - - groupedDates = this.addMissingDaysToMonth(groupedDates); - - const frequencies = Object.values(groupedDates).map( - (group) => group.length, - ); - - const minFreq: number = Math.min(...frequencies); - const maxFreq: number = Math.max(...frequencies); - - const intensitySteps: ColorStep[] = [ - 0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950, - ]; - - return Object.entries(groupedDates).map( - (value: [string, CommitDate[]], index: number) => { - let intensity: ColorStep; - const frequency: number = frequencies[index]; - - if (minFreq === maxFreq) { - intensity = 400; - } else { - const normalized = - ((frequency - minFreq) / (maxFreq - minFreq) + 0.13) * 2.19; - - const stepIndex = Math.round( - normalized * (intensitySteps.length + 1), - ); - - intensity = intensitySteps[stepIndex]; - } - - return { - id: 0, - day: value[1][0].day, - month: value[1][0].month, - year: value[1][0].year, - intensity, - }; - }, - ); - } - - public sortDates( - dates: CommitDateWithIntensity[], - ): CommitDateWithIntensity[] { - dates = dates.sort( - (a: CommitDateWithIntensity, b: CommitDateWithIntensity) => { - return a.day - b.day; - }, - ); - dates = dates.sort( - (a: CommitDateWithIntensity, b: CommitDateWithIntensity) => { - return a.month - b.month; - }, - ); - dates = dates.sort( - (a: CommitDateWithIntensity, b: CommitDateWithIntensity) => { - return a.year - b.year; - }, - ); - - dates.forEach((date: CommitDateWithIntensity, index: number) => { - date.id = index; - }); - return dates; - } - - public getCommitDate(commit: GhCommit): CommitDate { - const date: Date = new Date(commit.commit.committer.date); - const day = date.getDate(); - const month = date.getMonth() + 1; - const year = date.getFullYear(); - - return { day, month, year }; - } - - public getEventDate(event: GhEvent): CommitDate { - const date: Date = new Date(event.created_at); - const day = date.getDate(); - const month = date.getMonth() + 1; - const year = date.getFullYear(); - - return { day, month, year }; - } - - private addMissingDaysToMonth( - dates: Record, - ): Record { - const keys = Object.keys(dates); - const negativeGroupedDates: number[][][] = []; - const smallMonths: number[] = [4, 6, 9, 11]; - - const groupedDates: number[][][] = keys.reduce( - (acc: number[][][], key: string) => { - this.years.forEach((year: number) => { - this.months.forEach((month: number) => { - this.days.forEach((day: number) => { - const keyDay: number | null = Utils.explodeDateKey(key).day; - const keyMonth: number | null = Utils.explodeDateKey(key).month; - const keyYear: number | null = Utils.explodeDateKey(key).year; - - if (keyYear === year && keyMonth === month && keyDay === day) { - if (!acc[year] && keyYear) acc[year] = []; - if (!acc[year][month] && keyMonth) acc[year][month] = []; - if (keyDay === day) acc[year][month].push(day); - } - }); - }); - }); - return acc; - }, - [] as number[][][], - ); - - groupedDates.forEach((dateMonths: number[][], dateYear: number) => { - dateMonths.forEach((dateDays: number[], dateMonth: number) => { - dateDays.forEach((dateDay: number) => { - this.years.forEach((year: number) => { - this.months.forEach((month: number) => { - this.days.forEach((day: number) => { - if ( - dateMonth === month && - dateYear === year && - day !== dateDay - ) { - if (!dateDays.includes(day)) { - if (!negativeGroupedDates[year]) - negativeGroupedDates[year] = []; - if (!negativeGroupedDates[year][month]) - negativeGroupedDates[year][month] = []; - if (!negativeGroupedDates[year][month].includes(day)) { - if (smallMonths.includes(month) && day === 31) return; - if (month === 2 && [30, 31].includes(day)) return; - negativeGroupedDates[year][month].push(day); - } - } - } - }); - }); - }); - }); - }); - }); - - negativeGroupedDates.forEach((dateMonths: number[][], dateYear: number) => { - dateMonths.forEach((dateDays: number[], dateMonth: number) => { - dateDays.forEach((dateDay: number) => { - const key = `${dateDay}-${dateMonth}-${dateYear}`; - const originalDateKeys = Object.keys(dates); - - if (!originalDateKeys.includes(key)) { - dates[key] = [ - { - id: 0, - day: dateDay, - month: dateMonth, - year: dateYear, - }, - ]; - } - }); - }); - }); - return dates; - } -} diff --git a/src/composables/processors/ImgProcessor.ts b/src/composables/processors/ImgProcessor.ts deleted file mode 100644 index 4a7768ab..00000000 --- a/src/composables/processors/ImgProcessor.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { MediaProcessor } from "./MediaProcessor.ts"; -import { Attachment } from "../../services/AttachementService.ts"; - -export class ImgProcessor extends MediaProcessor { - public imgList: Attachment[] = []; - - public async process(doc: Document): Promise { - const images = doc.querySelectorAll("img[src^='/api/attachments']"); - - await Promise.all( - Array.from(images).map(async (img) => { - const srcUrl = new URL( - img.getAttribute("src")!, - window.location.origin, - ); - const id = srcUrl.searchParams.get("id"); - - if (id) { - const attachment = await this.fetchMedia(id); - if (attachment.url) { - img.setAttribute("src", attachment.url); - this.imgList.push(attachment); - this.addLightBox(img); - } - } - }), - ); - return doc; - } - - private addLightBox(img: Element): void { - if (img.classList.contains("--lightboxed")) return; - - const newImg = img.cloneNode(true) as HTMLImageElement; - newImg.classList.add("--lightboxed"); - - const link = document.createElement("a"); - link.href = newImg.src; - link.append(newImg); - - const lightbox = document.createElement("div"); - lightbox.setAttribute("uk-lightbox", "true"); - lightbox.append(link); - - img.replaceWith(lightbox); - } -} diff --git a/src/composables/processors/MediaProcessor.ts b/src/composables/processors/MediaProcessor.ts deleted file mode 100644 index 99a41f79..00000000 --- a/src/composables/processors/MediaProcessor.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - AttachmentService, - Attachment, -} from "../../services/AttachementService.ts"; - -export abstract class MediaProcessor { - protected cache: Map; - - constructor() { - this.cache = new Map(); - } - - public cleanup(): void { - this.cache.forEach((url) => URL.revokeObjectURL(url)); - this.cache.clear(); - } - - abstract process(doc: Document): Promise; - - protected async fetchMedia(id: string): Promise { - if (this.cache.has(id)) return { id: this.cache.get(id) as string }!; - - const fetched = (await AttachmentService.getAttachment(id)) as Attachment; - - if (!fetched.url) { - console.error(`Failed to fetch media with id ${id}:`, fetched.error); - return { - id, - url: "", - }; - } - - this.cache.set(fetched.id, fetched.url as string); - return fetched; - } -} diff --git a/src/composables/processors/VideoProcessor.ts b/src/composables/processors/VideoProcessor.ts deleted file mode 100644 index 53fa9a4a..00000000 --- a/src/composables/processors/VideoProcessor.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { MediaProcessor } from "./MediaProcessor.ts"; -import { Attachment } from "../../services/AttachementService.ts"; - -export class VideoProcessor extends MediaProcessor { - public async process(doc: Document): Promise { - const videoLinks = doc.querySelectorAll( - "a[href^='/api/attachments.redirect']", - ); - - await Promise.all( - Array.from(videoLinks).map(async (link) => { - const href = new URL( - link.getAttribute("href")!, - window.location.origin, - ); - const id = href.searchParams.get("id"); - - if (id) { - const videoAttachment: Attachment = await this.fetchMedia(id); - if (videoAttachment) { - const videoContainer = document.createElement("div"); - videoContainer.className = "video-container"; - - const video = document.createElement("video"); - video.controls = true; - video.classList.add("rounded-lg"); - - const source = document.createElement("source"); - source.src = videoAttachment.url as string; - source.type = "video/mp4"; - - video.appendChild(source); - video.appendChild( - document.createTextNode( - "Your browser does not support the video tag.", - ), - ); - videoContainer.appendChild(video); - - link.replaceWith(videoContainer); - } - } - }), - ); - return doc; - } -} diff --git a/src/composables/usePageHead.ts b/src/composables/usePageHead.ts deleted file mode 100644 index 3f773140..00000000 --- a/src/composables/usePageHead.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { useHead } from "@unhead/vue"; - -interface BlogArticleMetadata { - title: string; - description: string; - image: string; - publishDate: string; - author: string; - slug: string; -} - -type PageType = "home" | "blog" | "article"; - -export function usePageHead( - pageType: PageType, - blogArticleMetadata?: BlogArticleMetadata, -) { - const baseUrl = "https://www.maxdlr.com"; - - const commonMeta = { - locale: "fr_FR", - siteName: "Maxdlr - Developer & Motion designer", - defaultImage: "/photo.jpg", - defaultImageWidth: "1200", - defaultImageHeight: "627", - }; - - const getPageMeta = () => { - switch (pageType) { - case "home": - return { - title: "Maxdlr - Developer & Motion designer", - description: - "Full-Stack developer & Motion designer, from Lyon with Love", - url: baseUrl, - image: commonMeta.defaultImage, - type: "website", - }; - - case "blog": - return { - title: "Blog - Maxdlr", - description: - "Thoughts and articles about web development, motion design and other things.", - url: `${baseUrl}/blog`, - image: "/photo.jpg", - type: "website", - }; - - case "article": - if (!blogArticleMetadata) - throw new Error("Blog data is required for article pages"); - return { - title: `${blogArticleMetadata.title} - Maxdlr Blog`, - description: blogArticleMetadata.description, - url: `${baseUrl}/blog/${blogArticleMetadata.slug}`, - image: blogArticleMetadata.image, - type: "article", - publishDate: blogArticleMetadata.publishDate, - author: blogArticleMetadata.author, - }; - - default: - throw new Error("Invalid page type"); - } - }; - - const pageMeta = getPageMeta(); - - useHead({ - title: pageMeta.title, - meta: [ - { name: "description", content: pageMeta.description }, - { name: "robots", content: "index, follow" }, - - // Open Graph - { property: "og:locale", content: commonMeta.locale }, - { property: "og:type", content: pageMeta.type }, - { property: "og:title", content: pageMeta.title }, - { property: "og:description", content: pageMeta.description }, - { property: "og:url", content: pageMeta.url }, - { property: "og:site_name", content: commonMeta.siteName }, - { property: "og:image:secure_url", content: pageMeta.image }, - { name: "image", property: "og:image", content: pageMeta.image }, - { property: "og:image:width", content: commonMeta.defaultImageWidth }, - { property: "og:image:height", content: commonMeta.defaultImageHeight }, - - // Twitter Card - { name: "twitter:card", content: "summary_large_image" }, - { name: "twitter:site", content: baseUrl }, - { name: "twitter:title", content: pageMeta.title }, - { name: "twitter:description", content: pageMeta.description }, - { name: "twitter:image", content: pageMeta.image }, - - // Article-specific meta tags - ...(pageType === "article" - ? [ - { - property: "article:published_time", - content: pageMeta.publishDate, - }, - { property: "article:author", content: pageMeta.author }, - ] - : []), - ], - link: [ - { rel: "icon", href: "/favicon.jpg", type: "image/svg+xml" }, - { rel: "canonical", href: pageMeta.url }, - ], - }); -} diff --git a/src/interface/BlogArticle.ts b/src/interface/BlogArticle.ts deleted file mode 100644 index 4b09d841..00000000 --- a/src/interface/BlogArticle.ts +++ /dev/null @@ -1,53 +0,0 @@ -export interface BlogArticle { - archivedAt: Date | string; - collaboratorIds: string[]; - collectionId: string[]; - color: string; - createdAt: string; - createdBy: BlogArticleUser; - deletedAt: Date | string; - fullWidth: boolean; - icon: string; - id: string; - insightsEnabled: boolean; - isCollectionDeleted: boolean; - lastViewedAt: Date | string; - parentDocumentId: string; - publishedAt: Date | string; - revision: number; - tasks: { - completed: number; - total: number; - }; - template: boolean; - templateId: string; - text: string; - title: string; - updatedAt: Date | string; - updatedBy: BlogArticleUser; - url: string; - urlId: string; -} - -export interface BlogArticleUser { - avatarUrl: string; - color: string; - createdAt: Date | string; - id: string; - isSuspended: boolean; - lastActiveAt: Date | string; - name: string; - role: string; - timezone: string; - updatedAt: Date | string; -} - -export interface BlogArticleView { - count: number; - documentId: string; - firstViewedAt: string; - id: string; - lastViewedAt: string; - user: BlogArticleUser; - userId: string; -} diff --git a/src/interface/Github.ts b/src/interface/Github.ts deleted file mode 100644 index f907f784..00000000 --- a/src/interface/Github.ts +++ /dev/null @@ -1,41 +0,0 @@ -export interface GhCommit { - commit: { committer: { date: string } }; -} - -export interface GhEvent { - created_at: string; -} - -export interface GhRepo { - name: string; -} - -export interface GhOrg { - organization: { - login: string; - }; -} - -export interface CommitDate { - id?: number; - day: number; - month: number; - year: number; -} - -export type ColorStep = - | 0 - | 100 - | 200 - | 300 - | 400 - | 500 - | 600 - | 700 - | 800 - | 900 - | 950; - -export interface CommitDateWithIntensity extends CommitDate { - intensity?: ColorStep; -} diff --git a/src/locale/en.json b/src/locale/en.json deleted file mode 100644 index 87126f65..00000000 --- a/src/locale/en.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "hello": "hello", - "this-is-the-website-of": "Hi, you are on the website of", - "context": "If you've ended up here, you are looking for ", - "job-title": "Full-Stack developer - Java/Angular", - "or": " or ", - "or-say-hello": "Or say hello", - "wip": "Working on this right now", - "bye": "Cheers.", - "blog-title": "Things I write.", - "no-articles": "No articles yet", - "minute-read": "~ {minutes} min" -} diff --git a/src/locale/fr.json b/src/locale/fr.json deleted file mode 100644 index b0dfd552..00000000 --- a/src/locale/fr.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "hello": "bonjour", - "this-is-the-website-of": "Hello, vous êtes chez", - "context": "Si vous êtes ici, vous recherchez des services de ", - "job-title": "Developpeur Full-Stack - Java/Angular", - "or": " ou ", - "or-say-hello": "Ou dites bonjour", - "wip": "Projet en cours", - "bye": "A plus.", - "blog-title": "Des trucs que j'écris.", - "no-articles": "Aucun article pour le moment.", - "minute-read": "~ {minutes} min " -} diff --git a/src/locale/index.ts b/src/locale/index.ts deleted file mode 100644 index e9b899c8..00000000 --- a/src/locale/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import en from "./en.json"; -import fr from "./fr.json"; - -export const messages = { - en, - fr, -}; diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index 8e5c706a..00000000 --- a/src/main.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createApp } from "vue"; -import App from "./App.vue"; -import "./style.css"; -import { createI18n } from "vue-i18n"; -import { messages } from "./locale"; -import "franken-ui/js/core.iife"; -import "franken-ui/js/icon.iife"; -import router from "./router"; -import { createHead } from "@unhead/vue"; - -const head = createHead(); -const app = createApp(App); - -const i18n = createI18n({ - locale: navigator.language.substring(0, 2), - fallbackLocale: "en", - messages: { - en: { - ...messages.en, - }, - fr: { - ...messages.fr, - }, - }, -}); -app.use(head); -app.use(i18n); -app.use(router); -app.mount("#app"); diff --git a/src/model/data.json b/src/model/data.json deleted file mode 100644 index 75edb09e..00000000 --- a/src/model/data.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "author": { - "name": "Maxime de la Rocheterie", - "email": "contact@maxdlr.com", - "logoPath": "/logo.png" - }, - "work-links": { - "developer": { - "name": "dev", - "url": "https://www.github.com/maxdlr" - }, - "motion-designer": { - "name": "motion", - "url": "https://motion.maxdlr.com" - } - }, - "social-links": { - "github": "https://www.github.com/maxdlr", - "instagram": "https://www.instagram.com/maxdlr_", - "linkedin": "https://www.linkedin.com/in/maximedlr/", - "behance": "https://www.behance.net/qimonotv", - "dribbble": "https://www.dribbble.com/qimono", - "vimeo": "https://www.vimeo.com/maxdlr" - }, - "footer-wip": { - "gif": { - "path": "/current-project.gif", - "size": "200" - }, - "url": "https://github.com/maxdlr/MaxOrbe" - }, - "helper": { - "loader": "/loading.gif" - }, - "blog": { - "article": { - "og": { - "title": "Yet another blog article", - "description": "This is another Maxdlr blog article. Let's hope it's not boring.", - "photo": "/photo.jpg" - } - } - } -} diff --git a/src/router/index.ts b/src/router/index.ts deleted file mode 100644 index be1523dc..00000000 --- a/src/router/index.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { createRouter, createWebHistory } from "vue-router"; -import Home from "../components/pages/Home.vue"; -import Blog from "../components/pages/Blog/Blog.vue"; -import BlogArticle from "../components/pages/Blog/BlogArticle.vue"; -import Photos from "../components/pages/Photo/Photos.vue"; - -const routes = [ - { - path: "/", - name: "Home", - component: Home, - }, - { - path: "/photos", - name: "Photos", - component: Photos, - }, - { - path: "/blog", - name: "Blog", - component: Blog, - }, - { - path: "/article/:id", - name: "BlogArticle", - component: BlogArticle, - }, -]; - -const router = createRouter({ - history: createWebHistory(), - routes, -}); - -router.beforeEach((to) => { - switch (to.path) { - case "/in": - { - window.location.href = "https://www.linkedin.com/in/maxdlr/"; - } - break; - case "/reco": - { - window.location.href = - "https://www.linkedin.com/in/maxdlr/details/recommendations/?detailScreenTabIndex=0"; - } - break; - case "/gh": - { - window.location.href = "https://www.github.com/maxdlr"; - } - break; - case "/cv": - { - window.location.pathname = "/cv.pdf"; - } - break; - } -}); - -export default router; diff --git a/src/services/AttachementService.ts b/src/services/AttachementService.ts deleted file mode 100644 index 59cbd0f3..00000000 --- a/src/services/AttachementService.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { OutlineService } from "./OutlineService.ts"; - -export interface Attachment { - id: string; - attachments?: Blob; - url?: string; - error?: Error; -} - -const getAttachment = async (id: string): Promise => { - try { - const fetched = await OutlineService.outlineFetch(`/attachments.redirect`) - .post({ - id: id, - }) - .json(); - - const blob = await fetched.response.value?.blob(); - const imageUrl = URL.createObjectURL(blob as Blob); - - return { - id: id, - attachments: blob, - url: imageUrl, - }; - } catch (error) { - return { - id: id, - error: error as Error, - }; - } -}; - -export const AttachmentService = { - getAttachment, -}; diff --git a/src/services/BlogService.ts b/src/services/BlogService.ts deleted file mode 100644 index 27e85307..00000000 --- a/src/services/BlogService.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { BlogArticle, BlogArticleView } from "../interface/BlogArticle.ts"; -import { OutlineService } from "./OutlineService.ts"; -import { formatDate } from "@vueuse/core"; - -const blogArticlesCollectionId = import.meta.env.VITE_DOCS_COLLECTIONID; - -const getArticleViewCount = async (documentId: string): Promise => { - const fetched = await OutlineService.outlineFetch( - `/views.list`, - ) - .post({ - documentId: documentId, - }) - .json(); - return fetched.data.value.data.reduce( - (acc: number, v: BlogArticleView) => acc + v.count, - 0, - ); -}; - -const createArticleView = async (documentId: string): Promise => { - await OutlineService.outlineFetch(`/views.create`) - .post({ - documentId: documentId, - }) - .json(); -}; - -const getArticleList = async (): Promise => { - let articles: BlogArticle[]; - const fetched = await OutlineService.outlineFetch(`/documents.list`) - .post({ - collectionId: blogArticlesCollectionId, - }) - .json(); - - articles = fetched.data.value.data.filter((article: BlogArticle) => { - const isNotTemplate: boolean = !article.template; - const isArticle: boolean = !!article.parentDocumentId; - return isNotTemplate && isArticle; - }); - - articles = articles.map((article: BlogArticle) => { - return transform(article); - }); - - return articles; -}; - -const getArticleInfo = async (documentId: string): Promise => { - const fetched = await OutlineService.outlineFetch(`/documents.info`) - .post({ id: documentId }) - .json(); - return transform(fetched.data.value.data); -}; - -const transform = (article: BlogArticle): BlogArticle => { - article.publishedAt = formatDate(new Date(article.publishedAt), "YYYY-MM-DD"); - return article; -}; - -export const BlogService = { - getArticleList, - getArticleInfo, - createArticleView, - getArticleViewCount, -}; diff --git a/src/services/CookieService.ts b/src/services/CookieService.ts deleted file mode 100644 index e7b414f8..00000000 --- a/src/services/CookieService.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { CommitDate } from "../interface/Github.ts"; - -type StoredDates = { - lastFetched: Date | string; - dates: CommitDate[]; - badRepos: string[]; -}; - -export class CookieService { - public cookie: StoredDates = {} as StoredDates; - private storageKey = "maxdlr-portfolio-commit-dates"; - - constructor() { - if (localStorage.getItem(this.storageKey)) { - this.cookie = JSON.parse(localStorage.getItem(this.storageKey)); - } else { - this.setCookie(); - } - if (typeof this.cookie.lastFetched === "string") - this.cookie.lastFetched = new Date(this.cookie.lastFetched); - } - - public setCookie(cookie?: { dates?: CommitDate[]; badRepos?: string[] }) { - const now = new Date(); - if (cookie) { - if (cookie.badRepos) this.cookie.badRepos = cookie.badRepos; - if (cookie.dates) this.cookie.dates = cookie.dates; - } - this.cookie.lastFetched = now; - localStorage.setItem(this.storageKey, JSON.stringify(this.cookie)); - } - - public isCookieDeprecated(): boolean { - const now = new Date(); - const lastFetched: Date = this.cookie.lastFetched as Date; - const timeDifference = now.getTime() - lastFetched.getTime(); - const daysDifference = timeDifference / (1000 * 60 * 60 * 24); - return daysDifference >= 7; - } - - public deleteCookie() { - if (localStorage.getItem(this.storageKey)) { - localStorage.removeItem(this.storageKey); - } - } -} diff --git a/src/services/GithubService.ts b/src/services/GithubService.ts deleted file mode 100644 index 1048baf4..00000000 --- a/src/services/GithubService.ts +++ /dev/null @@ -1,247 +0,0 @@ -import { Octokit } from "octokit"; -import { ContributionsProcessor } from "../composables/processors/ContributionsProcessor.ts"; -import { CookieService } from "./CookieService.ts"; -import { - CommitDateWithIntensity, - GhCommit, - GhEvent, - GhOrg, - GhRepo, -} from "../interface/Github.ts"; - -export class GithubService { - public username: string = "maxdlr"; - private octokit: Octokit; - private cookieService: CookieService; - private contributionProcessor: ContributionsProcessor; - private header: { accept: string } = { - accept: "application/vnd.github+json", - }; - private excludeRepoList: string[] = ["old"]; - - constructor() { - this.octokit = new Octokit({ - auth: import.meta.env.VITE_GITHUB_API_TOKEN, - }); - this.contributionProcessor = new ContributionsProcessor(); - this.cookieService = new CookieService(); - } - - public async logIn() { - await this.octokit.rest.users.getAuthenticated(); - return this; - } - - public async getAllContributions( - force: boolean = false, - ): Promise { - let dates: CommitDateWithIntensity[] = []; - if (!this.cookieService.isCookieDeprecated() && !force) { - dates = this.cookieService.cookie.dates; - } else { - await this.logIn(); - await Promise.all([ - this.getAllOwnerCommits(), - this.getAllOrgCommits(), - this.getEvents(), - ]).then((result) => { - const ownerCommitDates = result[0]?.map((commit: GhCommit) => - this.contributionProcessor.getCommitDate(commit), - ); - - const orgCommitDates = result[1]?.map((commit: GhCommit) => - this.contributionProcessor.getCommitDate(commit), - ); - - const eventDates = result[2]?.map((event: GhEvent) => - this.contributionProcessor.getEventDate(event), - ); - [ownerCommitDates, orgCommitDates, eventDates].forEach((part) => - dates.push(...part), - ); - }); - } - - this.cookieService.setCookie({ - dates, - }); - - dates = this.contributionProcessor.calculateDateIntensity(dates); - dates = this.contributionProcessor.sortDates(dates); - - return dates; - } - - public async getEvents(): Promise { - const fetchedEvents: GhEvent[] = await this.iterateFetch( - this.getEventsForAuthenticatedUserIterator(), - ); - const fetchedReceivedEvents = await this.iterateFetch( - this.getReceivedEventsForAuthenticatedUserIterator(), - ); - - return [...fetchedEvents, ...fetchedReceivedEvents]; - } - - public async getAllOwnerCommits(): Promise { - const fetchedCommits: GhCommit[] = []; - - await this.iterateFetch( - this.getReposForAuthenticatedUserIterator(), - async (repo: GhRepo) => { - const repoName = repo.name; - if ( - !this.cookieService.cookie?.badRepos?.includes(repoName) && - !this.excludeRepoList.includes(repoName) - ) { - try { - fetchedCommits.push(...(await this.getAllCommitsByRepo(repoName))); - } catch { - this.cookieService.cookie.badRepos.push(repoName); - } - } - }, - ); - - return fetchedCommits; - } - - public async getAllCommitsByRepo( - repo: string, - owner: string = this.username, - ): Promise { - return this.iterateFetch(this.getCommitsByRepoIterator(repo, owner)); - } - - private async getAllOrgCommits(): Promise { - const fetchedCommits: GhCommit[] = []; - const orgs: GhOrg[] = await this.getOrgsForAuthenticatedUser(); - const orgNames: string[] = orgs.map((org: GhOrg) => org.organization.login); - - const orgRepos: Record = {}; - for (const org of orgNames) { - if (!orgRepos[org]) orgRepos[org] = []; - const repos = await this.iterateFetch(this.getReposForOrgIterator(org)); - if (repos.length > 0) orgRepos[org].push(...repos); - } - - for (const value of Object.entries(orgRepos)) { - const org = value[0]; - const repos: string[] = value[1].map((repo: GhRepo) => repo.name); - - for (const repo of repos) { - fetchedCommits.push( - ...(await this.iterateFetch( - this.getCommitsByRepoIterator(repo, org), - )), - ); - } - } - return fetchedCommits; - } - - private async getOrgsForAuthenticatedUser(): Promise { - const response = - await this.octokit.rest.orgs.listMembershipsForAuthenticatedUser({ - accept: this.header.accept, - username: this.username, - per_page: 100, - affiliation: "owner", - }); - - return response.data; - } - - private async iterateFetch( - iterator: AsyncIterable, - action?: (item: any) => void, - ) { - const result = []; - for await (const fetched of iterator) { - for (const item of fetched.data) { - action ? action(item) : result.push(item); - } - } - return result; - } - - private getReposForOrgIterator(orgName: string) { - return this.handleErrors(() => - this.octokit.paginate.iterator(this.octokit.rest.repos.listForOrg, { - accept: this.header.accept, - org: orgName, - per_page: 100, - }), - ); - } - - private getEventsForAuthenticatedUserIterator() { - return this.handleErrors(() => - this.octokit.paginate.iterator( - this.octokit.rest.activity.listEventsForAuthenticatedUser, - { - accept: this.header.accept, - username: this.username, - all: true, - per_page: 100, - }, - ), - ); - } - - private getReceivedEventsForAuthenticatedUserIterator() { - return this.handleErrors(() => - this.octokit.paginate.iterator( - this.octokit.rest.activity.listReceivedEventsForUser, - { - accept: this.header.accept, - username: this.username, - all: true, - per_page: 100, - }, - ), - ); - } - - private getCommitsByRepoIterator( - repositoryName: string, - owner: string = this.username, - ) { - return this.handleErrors(() => - this.octokit.paginate.iterator(this.octokit.rest.repos.listCommits, { - accept: this.header.accept, - owner, - author: this.username, - committer: this.username, - repo: repositoryName, - per_page: 100, - }), - ); - } - - private getReposForAuthenticatedUserIterator() { - return this.handleErrors(() => - this.octokit.paginate.iterator( - this.octokit.rest.repos.listForAuthenticatedUser, - { - accept: this.header.accept, - username: this.username, - per_page: 100, - affiliation: "owner", - }, - ), - ); - } - - private handleErrors(iterator: () => AsyncIterable): AsyncIterable { - try { - return iterator(); - } catch (error: unknown) { - if (error instanceof Error) { - throw new Error(error.message); - } else { - throw error; - } - } - } -} diff --git a/src/services/OutlineService.ts b/src/services/OutlineService.ts deleted file mode 100644 index 02729f92..00000000 --- a/src/services/OutlineService.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - BeforeFetchContext, - createFetch, - OnFetchErrorContext, -} from "@vueuse/core"; - -const outlineFetch = createFetch({ - baseUrl: import.meta.env.VITE_DOCS_BASE_API_URL, - options: { - async beforeFetch({ options, url }: BeforeFetchContext) { - options.headers = { - ...options.headers, - Authorization: "Bearer " + import.meta.env.VITE_DOCS_TOKEN, - }; - return { options, url }; - }, - async onFetchError(ctx: OnFetchErrorContext) { - if (ctx.data) { - throw new Error(ctx.data.message); - } - return ctx; - }, - }, -}); - -export const OutlineService = { - outlineFetch, -}; diff --git a/src/services/integrations/CodePenService.ts b/src/services/integrations/CodePenService.ts deleted file mode 100644 index 112a3a8a..00000000 --- a/src/services/integrations/CodePenService.ts +++ /dev/null @@ -1,19 +0,0 @@ -const getCodePenEmbed = (link: string): HTMLElement => { - const authorLink = link.split("/pen")[0]; - const embeddedCode = ` - -`; - - const parser = new DOMParser(); - return ( - parser.parseFromString(embeddedCode, "text/html").body.firstChild - ); -}; - -export const CodePenService = { - getCodePenEmbed, -}; diff --git a/src/style.css b/src/style.css deleted file mode 100644 index b5c61c95..00000000 --- a/src/style.css +++ /dev/null @@ -1,3 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts deleted file mode 100644 index 11f02fe2..00000000 --- a/src/vite-env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index a2e4da1b..00000000 --- a/tailwind.config.js +++ /dev/null @@ -1,19 +0,0 @@ -import franken from "franken-ui/shadcn-ui/preset-quick"; - -/** @type {import('tailwindcss').Config} */ -export default { - presets: [franken()], - content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"], - safelist: [ - { - pattern: /^uk-/, - }, - "ProseMirror", - "ProseMirror-focused", - "tiptap", - ], - theme: { - extend: {}, - }, - plugins: [], -}; diff --git a/tsconfig.app.json b/tsconfig.app.json deleted file mode 100644 index c54e6023..00000000 --- a/tsconfig.app.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "preserve", - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] -} diff --git a/tsconfig.app.tsbuildinfo b/tsconfig.app.tsbuildinfo deleted file mode 100644 index e01aefc2..00000000 --- a/tsconfig.app.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"root":["./src/main.ts","./src/vite-env.d.ts","./src/composables/utils.ts","./src/composables/usepagehead.ts","./src/composables/processors/blogarticletextprocessor.ts","./src/composables/processors/contributionsprocessor.ts","./src/composables/processors/imgprocessor.ts","./src/composables/processors/mediaprocessor.ts","./src/composables/processors/videoprocessor.ts","./src/interface/blogarticle.ts","./src/interface/github.ts","./src/locale/index.ts","./src/router/index.ts","./src/services/attachementservice.ts","./src/services/blogservice.ts","./src/services/cookieservice.ts","./src/services/githubservice.ts","./src/services/outlineservice.ts","./src/services/integrations/codepenservice.ts","./src/app.vue","./src/components/atoms/articlecard.vue","./src/components/atoms/button.vue","./src/components/atoms/layout.vue","./src/components/atoms/lightbox.vue","./src/components/atoms/loader.vue","./src/components/atoms/transitions/transitionslidedown.vue","./src/components/atoms/transitions/transitionslideup.vue","./src/components/gh/contribsquare.vue","./src/components/pages/home.vue","./src/components/pages/blog/blog.vue","./src/components/pages/blog/blogarticle.vue","./src/components/pages/github/githubcontributions.vue","./src/components/pages/photo/photos.vue"],"version":"5.6.2"} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 1ffef600..c1334095 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,27 @@ { - "files": [], - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ] + "compilerOptions": { + "target": "ES2017", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "paths": { + "@/*": ["./src/*"] + } + }, + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "exclude": ["node_modules"] } diff --git a/tsconfig.node.json b/tsconfig.node.json deleted file mode 100644 index 0d3d7144..00000000 --- a/tsconfig.node.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "lib": ["ES2023"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - - /* Linting */ - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["vite.config.ts"] -} diff --git a/tsconfig.node.tsbuildinfo b/tsconfig.node.tsbuildinfo deleted file mode 100644 index 98ef2f99..00000000 --- a/tsconfig.node.tsbuildinfo +++ /dev/null @@ -1 +0,0 @@ -{"root":["./vite.config.ts"],"version":"5.6.2"} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts deleted file mode 100644 index 6ea85471..00000000 --- a/vite.config.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { defineConfig } from "vite"; -import vue from "@vitejs/plugin-vue"; - -export default defineConfig({ - plugins: [vue()], -}); diff --git a/yarn.lock b/yarn.lock deleted file mode 100644 index 1621cd5f..00000000 --- a/yarn.lock +++ /dev/null @@ -1,2993 +0,0 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -"@alloc/quick-lru@^5.2.0": - version "5.2.0" - resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz" - integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw== - -"@babel/helper-string-parser@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz" - integrity sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g== - -"@babel/helper-validator-identifier@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz" - integrity sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg== - -"@babel/parser@^7.25.3": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.25.7.tgz" - integrity sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw== - dependencies: - "@babel/types" "^7.25.7" - -"@babel/types@^7.25.7": - version "7.25.7" - resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.7.tgz" - integrity sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ== - dependencies: - "@babel/helper-string-parser" "^7.25.7" - "@babel/helper-validator-identifier" "^7.25.7" - to-fast-properties "^2.0.0" - -"@bufbuild/protobuf@^2.0.0": - version "2.2.3" - resolved "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.2.3.tgz" - integrity sha512-tFQoXHJdkEOSwj5tRIZSPNUuXK3RaR7T1nUrPgbYX1pUbvqqaaZAsfo+NXBPsz5rZMSKVFrgK1WL8Q/MSLvprg== - -"@esbuild/aix-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" - integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== - -"@esbuild/android-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" - integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== - -"@esbuild/android-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" - integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== - -"@esbuild/android-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" - integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== - -"@esbuild/darwin-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" - integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== - -"@esbuild/darwin-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" - integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== - -"@esbuild/freebsd-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" - integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== - -"@esbuild/freebsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" - integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== - -"@esbuild/linux-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" - integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== - -"@esbuild/linux-arm@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" - integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== - -"@esbuild/linux-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" - integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== - -"@esbuild/linux-loong64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" - integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== - -"@esbuild/linux-mips64el@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" - integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== - -"@esbuild/linux-ppc64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" - integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== - -"@esbuild/linux-riscv64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" - integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== - -"@esbuild/linux-s390x@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" - integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== - -"@esbuild/linux-x64@0.21.5": - version "0.21.5" - resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz" - integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== - -"@esbuild/netbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" - integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== - -"@esbuild/openbsd-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" - integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== - -"@esbuild/sunos-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" - integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== - -"@esbuild/win32-arm64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" - integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== - -"@esbuild/win32-ia32@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" - integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== - -"@esbuild/win32-x64@0.21.5": - version "0.21.5" - resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" - integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== - -"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": - version "4.4.1" - resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz" - integrity sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA== - dependencies: - eslint-visitor-keys "^3.4.3" - -"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.12.1": - version "4.12.1" - resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz" - integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== - -"@eslint/config-array@^0.18.0": - version "0.18.0" - resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz" - integrity sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw== - dependencies: - "@eslint/object-schema" "^2.1.4" - debug "^4.3.1" - minimatch "^3.1.2" - -"@eslint/core@^0.10.0": - version "0.10.0" - resolved "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz" - integrity sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw== - dependencies: - "@types/json-schema" "^7.0.15" - -"@eslint/core@^0.7.0": - version "0.7.0" - resolved "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz" - integrity sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw== - -"@eslint/eslintrc@^3.1.0": - version "3.1.0" - resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz" - integrity sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^10.0.1" - globals "^14.0.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" - -"@eslint/js@9.14.0", "@eslint/js@^9.14.0": - version "9.14.0" - resolved "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz" - integrity sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg== - -"@eslint/object-schema@^2.1.4": - version "2.1.4" - resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz" - integrity sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ== - -"@eslint/plugin-kit@^0.2.0": - version "0.2.5" - resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz" - integrity sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A== - dependencies: - "@eslint/core" "^0.10.0" - levn "^0.4.1" - -"@humanfs/core@^0.19.1": - version "0.19.1" - resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz" - integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA== - -"@humanfs/node@^0.16.6": - version "0.16.6" - resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz" - integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw== - dependencies: - "@humanfs/core" "^0.19.1" - "@humanwhocodes/retry" "^0.3.0" - -"@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== - -"@humanwhocodes/retry@^0.3.0": - version "0.3.1" - resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz" - integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA== - -"@humanwhocodes/retry@^0.4.0": - version "0.4.1" - resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz" - integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA== - -"@intlify/core-base@10.0.5": - version "10.0.5" - resolved "https://registry.npmjs.org/@intlify/core-base/-/core-base-10.0.5.tgz" - integrity sha512-F3snDTQs0MdvnnyzTDTVkOYVAZOE/MHwRvF7mn7Jw1yuih4NrFYLNYIymGlLmq4HU2iIdzYsZ7f47bOcwY73XQ== - dependencies: - "@intlify/message-compiler" "10.0.5" - "@intlify/shared" "10.0.5" - -"@intlify/message-compiler@10.0.5": - version "10.0.5" - resolved "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-10.0.5.tgz" - integrity sha512-6GT1BJ852gZ0gItNZN2krX5QAmea+cmdjMvsWohArAZ3GmHdnNANEcF9JjPXAMRtQ6Ux5E269ymamg/+WU6tQA== - dependencies: - "@intlify/shared" "10.0.5" - source-map-js "^1.0.2" - -"@intlify/shared@10.0.5": - version "10.0.5" - resolved "https://registry.npmjs.org/@intlify/shared/-/shared-10.0.5.tgz" - integrity sha512-bmsP4L2HqBF6i6uaMqJMcFBONVjKt+siGluRq4Ca4C0q7W2eMaVZr8iCgF9dKbcVXutftkC7D6z2SaSMmLiDyA== - -"@isaacs/cliui@^8.0.2": - version "8.0.2" - resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz" - integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA== - dependencies: - string-width "^5.1.2" - string-width-cjs "npm:string-width@^4.2.0" - strip-ansi "^7.0.1" - strip-ansi-cjs "npm:strip-ansi@^6.0.1" - wrap-ansi "^8.1.0" - wrap-ansi-cjs "npm:wrap-ansi@^7.0.0" - -"@jridgewell/gen-mapping@^0.3.2": - version "0.3.5" - resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz" - integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== - dependencies: - "@jridgewell/set-array" "^1.2.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.24" - -"@jridgewell/resolve-uri@^3.1.0": - version "3.1.2" - resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz" - integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== - -"@jridgewell/set-array@^1.2.1": - version "1.2.1" - resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz" - integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== - -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": - version "1.5.0" - resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz" - integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== - -"@jridgewell/trace-mapping@^0.3.24": - version "0.3.25" - resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz" - integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== - dependencies: - "@jridgewell/resolve-uri" "^3.1.0" - "@jridgewell/sourcemap-codec" "^1.4.14" - -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - -"@octokit/app@^15.1.4": - version "15.1.4" - resolved "https://registry.npmjs.org/@octokit/app/-/app-15.1.4.tgz" - integrity sha512-PM1MqlPAnItjQIKWRmSoJu02+m7Eif4Am3w5C+Ctkw0//QETWMbW2ejBZhcw3aS7wRcFSbS+lH3NoYm614aZVQ== - dependencies: - "@octokit/auth-app" "^7.1.5" - "@octokit/auth-unauthenticated" "^6.1.2" - "@octokit/core" "^6.1.4" - "@octokit/oauth-app" "^7.1.6" - "@octokit/plugin-paginate-rest" "^11.4.2" - "@octokit/types" "^13.6.2" - "@octokit/webhooks" "^13.6.1" - -"@octokit/auth-app@^7.1.5": - version "7.1.5" - resolved "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-7.1.5.tgz" - integrity sha512-boklS4E6LpbA3nRx+SU2fRKRGZJdOGoSZne/i3Y0B5rfHOcGwFgcXrwDLdtbv4igfDSnAkZaoNBv1GYjPDKRNw== - dependencies: - "@octokit/auth-oauth-app" "^8.1.3" - "@octokit/auth-oauth-user" "^5.1.3" - "@octokit/request" "^9.2.1" - "@octokit/request-error" "^6.1.7" - "@octokit/types" "^13.8.0" - toad-cache "^3.7.0" - universal-github-app-jwt "^2.2.0" - universal-user-agent "^7.0.0" - -"@octokit/auth-oauth-app@^8.1.3": - version "8.1.3" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-8.1.3.tgz" - integrity sha512-4e6OjVe5rZ8yBe8w7byBjpKtSXFuro7gqeGAAZc7QYltOF8wB93rJl2FE0a4U1Mt88xxPv/mS+25/0DuLk0Ewg== - dependencies: - "@octokit/auth-oauth-device" "^7.1.3" - "@octokit/auth-oauth-user" "^5.1.3" - "@octokit/request" "^9.2.1" - "@octokit/types" "^13.6.2" - universal-user-agent "^7.0.0" - -"@octokit/auth-oauth-device@^7.1.3": - version "7.1.3" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-7.1.3.tgz" - integrity sha512-BECO/N4B/Uikj0w3GCvjf/odMujtYTP3q82BJSjxC2J3rxTEiZIJ+z2xnRlDb0IE9dQSaTgRqUPVOieSbFcVzg== - dependencies: - "@octokit/oauth-methods" "^5.1.4" - "@octokit/request" "^9.2.1" - "@octokit/types" "^13.6.2" - universal-user-agent "^7.0.0" - -"@octokit/auth-oauth-user@^5.1.3": - version "5.1.3" - resolved "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-5.1.3.tgz" - integrity sha512-zNPByPn9K7TC+OOHKGxU+MxrE9SZAN11UHYEFLsK2NRn3akJN2LHRl85q+Eypr3tuB2GrKx3rfj2phJdkYCvzw== - dependencies: - "@octokit/auth-oauth-device" "^7.1.3" - "@octokit/oauth-methods" "^5.1.3" - "@octokit/request" "^9.2.1" - "@octokit/types" "^13.6.2" - universal-user-agent "^7.0.0" - -"@octokit/auth-token@^5.0.0": - version "5.1.1" - resolved "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-5.1.1.tgz" - integrity sha512-rh3G3wDO8J9wSjfI436JUKzHIxq8NaiL0tVeB2aXmG6p/9859aUOAjA9pmSPNGGZxfwmaJ9ozOJImuNVJdpvbA== - -"@octokit/auth-unauthenticated@^6.1.2": - version "6.1.2" - resolved "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-6.1.2.tgz" - integrity sha512-07DlUGcz/AAVdzu3EYfi/dOyMSHp9YsOxPl/MPmtlVXWiD//GlV8HgZsPhud94DEyx+RfrW0wSl46Lx+AWbOlg== - dependencies: - "@octokit/request-error" "^6.1.7" - "@octokit/types" "^13.6.2" - -"@octokit/core@^6.1.4": - version "6.1.4" - resolved "https://registry.npmjs.org/@octokit/core/-/core-6.1.4.tgz" - integrity sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg== - dependencies: - "@octokit/auth-token" "^5.0.0" - "@octokit/graphql" "^8.1.2" - "@octokit/request" "^9.2.1" - "@octokit/request-error" "^6.1.7" - "@octokit/types" "^13.6.2" - before-after-hook "^3.0.2" - universal-user-agent "^7.0.0" - -"@octokit/endpoint@^10.1.3": - version "10.1.3" - resolved "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-10.1.3.tgz" - integrity sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA== - dependencies: - "@octokit/types" "^13.6.2" - universal-user-agent "^7.0.2" - -"@octokit/graphql@^8.1.2": - version "8.2.1" - resolved "https://registry.npmjs.org/@octokit/graphql/-/graphql-8.2.1.tgz" - integrity sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw== - dependencies: - "@octokit/request" "^9.2.2" - "@octokit/types" "^13.8.0" - universal-user-agent "^7.0.0" - -"@octokit/oauth-app@^7.1.6": - version "7.1.6" - resolved "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-7.1.6.tgz" - integrity sha512-OMcMzY2WFARg80oJNFwWbY51TBUfLH4JGTy119cqiDawSFXSIBujxmpXiKbGWQlvfn0CxE6f7/+c6+Kr5hI2YA== - dependencies: - "@octokit/auth-oauth-app" "^8.1.3" - "@octokit/auth-oauth-user" "^5.1.3" - "@octokit/auth-unauthenticated" "^6.1.2" - "@octokit/core" "^6.1.4" - "@octokit/oauth-authorization-url" "^7.1.1" - "@octokit/oauth-methods" "^5.1.4" - "@types/aws-lambda" "^8.10.83" - universal-user-agent "^7.0.0" - -"@octokit/oauth-authorization-url@^7.0.0", "@octokit/oauth-authorization-url@^7.1.1": - version "7.1.1" - resolved "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-7.1.1.tgz" - integrity sha512-ooXV8GBSabSWyhLUowlMIVd9l1s2nsOGQdlP2SQ4LnkEsGXzeCvbSbCPdZThXhEFzleGPwbapT0Sb+YhXRyjCA== - -"@octokit/oauth-methods@^5.1.3", "@octokit/oauth-methods@^5.1.4": - version "5.1.4" - resolved "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-5.1.4.tgz" - integrity sha512-Jc/ycnePClOvO1WL7tlC+TRxOFtyJBGuTDsL4dzXNiVZvzZdrPuNw7zHI3qJSUX2n6RLXE5L0SkFmYyNaVUFoQ== - dependencies: - "@octokit/oauth-authorization-url" "^7.0.0" - "@octokit/request" "^9.2.1" - "@octokit/request-error" "^6.1.7" - "@octokit/types" "^13.6.2" - -"@octokit/openapi-types@^22.2.0": - version "22.2.0" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz" - integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg== - -"@octokit/openapi-types@^23.0.1": - version "23.0.1" - resolved "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz" - integrity sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g== - -"@octokit/openapi-webhooks-types@9.1.0": - version "9.1.0" - resolved "https://registry.npmjs.org/@octokit/openapi-webhooks-types/-/openapi-webhooks-types-9.1.0.tgz" - integrity sha512-bO1D2jLdU8qEvqmbWjNxJzDYSFT4wesiYKIKP6f4LaM0XUGtn/0LBv/20hu9YqcnpdX38X5o/xANTMtIAqdwYw== - -"@octokit/plugin-paginate-graphql@^5.2.4": - version "5.2.4" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-graphql/-/plugin-paginate-graphql-5.2.4.tgz" - integrity sha512-pLZES1jWaOynXKHOqdnwZ5ULeVR6tVVCMm+AUbp0htdcyXDU95WbkYdU4R2ej1wKj5Tu94Mee2Ne0PjPO9cCyA== - -"@octokit/plugin-paginate-rest@^11.4.2": - version "11.4.2" - resolved "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.4.2.tgz" - integrity sha512-BXJ7XPCTDXFF+wxcg/zscfgw2O/iDPtNSkwwR1W1W5c4Mb3zav/M2XvxQ23nVmKj7jpweB4g8viMeCQdm7LMVA== - dependencies: - "@octokit/types" "^13.7.0" - -"@octokit/plugin-rest-endpoint-methods@^13.3.1": - version "13.3.1" - resolved "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.3.1.tgz" - integrity sha512-o8uOBdsyR+WR8MK9Cco8dCgvG13H1RlM1nWnK/W7TEACQBFux/vPREgKucxUfuDQ5yi1T3hGf4C5ZmZXAERgwQ== - dependencies: - "@octokit/types" "^13.8.0" - -"@octokit/plugin-retry@^7.1.4": - version "7.1.4" - resolved "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-7.1.4.tgz" - integrity sha512-7AIP4p9TttKN7ctygG4BtR7rrB0anZqoU9ThXFk8nETqIfvgPUANTSYHqWYknK7W3isw59LpZeLI8pcEwiJdRg== - dependencies: - "@octokit/request-error" "^6.1.7" - "@octokit/types" "^13.6.2" - bottleneck "^2.15.3" - -"@octokit/plugin-throttling@^9.4.0": - version "9.4.0" - resolved "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-9.4.0.tgz" - integrity sha512-IOlXxXhZA4Z3m0EEYtrrACkuHiArHLZ3CvqWwOez/pURNqRuwfoFlTPbN5Muf28pzFuztxPyiUiNwz8KctdZaQ== - dependencies: - "@octokit/types" "^13.7.0" - bottleneck "^2.15.3" - -"@octokit/request-error@^6.1.7": - version "6.1.7" - resolved "https://registry.npmjs.org/@octokit/request-error/-/request-error-6.1.7.tgz" - integrity sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g== - dependencies: - "@octokit/types" "^13.6.2" - -"@octokit/request@^9.2.1", "@octokit/request@^9.2.2": - version "9.2.2" - resolved "https://registry.npmjs.org/@octokit/request/-/request-9.2.2.tgz" - integrity sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg== - dependencies: - "@octokit/endpoint" "^10.1.3" - "@octokit/request-error" "^6.1.7" - "@octokit/types" "^13.6.2" - fast-content-type-parse "^2.0.0" - universal-user-agent "^7.0.2" - -"@octokit/types@^13.6.1": - version "13.6.1" - resolved "https://registry.npmjs.org/@octokit/types/-/types-13.6.1.tgz" - integrity sha512-PHZE9Z+kWXb23Ndik8MKPirBPziOc0D2/3KH1P+6jK5nGWe96kadZuE4jev2/Jq7FvIfTlT2Ltg8Fv2x1v0a5g== - dependencies: - "@octokit/openapi-types" "^22.2.0" - -"@octokit/types@^13.6.2", "@octokit/types@^13.7.0", "@octokit/types@^13.8.0": - version "13.8.0" - resolved "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz" - integrity sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A== - dependencies: - "@octokit/openapi-types" "^23.0.1" - -"@octokit/webhooks-methods@^5.1.1": - version "5.1.1" - resolved "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-5.1.1.tgz" - integrity sha512-NGlEHZDseJTCj8TMMFehzwa9g7On4KJMPVHDSrHxCQumL6uSQR8wIkP/qesv52fXqV1BPf4pTxwtS31ldAt9Xg== - -"@octokit/webhooks@^13.6.1": - version "13.6.1" - resolved "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-13.6.1.tgz" - integrity sha512-vk0jnc5k0/mLMUI4IA9LfSYkLs3OHtfa7B3h4aRG6to912V3wIG8lS/wKwatwYxRkAug4oE8is0ERRI8pzoYTw== - dependencies: - "@octokit/openapi-webhooks-types" "9.1.0" - "@octokit/request-error" "^6.1.7" - "@octokit/webhooks-methods" "^5.1.1" - -"@pkgjs/parseargs@^0.11.0": - version "0.11.0" - resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" - integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== - -"@rollup/rollup-android-arm-eabi@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz" - integrity sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA== - -"@rollup/rollup-android-arm64@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz" - integrity sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA== - -"@rollup/rollup-darwin-arm64@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz" - integrity sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA== - -"@rollup/rollup-darwin-x64@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz" - integrity sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ== - -"@rollup/rollup-linux-arm-gnueabihf@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz" - integrity sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA== - -"@rollup/rollup-linux-arm-musleabihf@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz" - integrity sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw== - -"@rollup/rollup-linux-arm64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz" - integrity sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA== - -"@rollup/rollup-linux-arm64-musl@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz" - integrity sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw== - -"@rollup/rollup-linux-powerpc64le-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz" - integrity sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw== - -"@rollup/rollup-linux-riscv64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz" - integrity sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg== - -"@rollup/rollup-linux-s390x-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz" - integrity sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g== - -"@rollup/rollup-linux-x64-gnu@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz" - integrity sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A== - -"@rollup/rollup-linux-x64-musl@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz" - integrity sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ== - -"@rollup/rollup-win32-arm64-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz" - integrity sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ== - -"@rollup/rollup-win32-ia32-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz" - integrity sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ== - -"@rollup/rollup-win32-x64-msvc@4.24.0": - version "4.24.0" - resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz" - integrity sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw== - -"@shikijs/core@2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@shikijs/core/-/core-2.3.2.tgz" - integrity sha512-s7vyL3LzUKm3Qwf36zRWlavX9BQMZTIq9B1almM63M5xBuSldnsTHCmsXzoF/Kyw4k7Xgas7yAyJz9VR/vcP1A== - dependencies: - "@shikijs/engine-javascript" "2.3.2" - "@shikijs/engine-oniguruma" "2.3.2" - "@shikijs/types" "2.3.2" - "@shikijs/vscode-textmate" "^10.0.1" - "@types/hast" "^3.0.4" - hast-util-to-html "^9.0.4" - -"@shikijs/engine-javascript@2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.3.2.tgz" - integrity sha512-w3IEMu5HfL/OaJTsMbIfZ1HRPnWVYRANeDtmsdIIEgUOcLjzFJFQwlnkckGjKHekEzNqlMLbgB/twnfZ/EEAGg== - dependencies: - "@shikijs/types" "2.3.2" - "@shikijs/vscode-textmate" "^10.0.1" - oniguruma-to-es "^3.1.0" - -"@shikijs/engine-oniguruma@2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.3.2.tgz" - integrity sha512-vikMY1TroyZXUHIXbMnvY/mjtOxMn+tavcfAeQPgWS9FHcgFSUoEtywF5B5sOLb9NXb8P2vb7odkh3nj15/00A== - dependencies: - "@shikijs/types" "2.3.2" - "@shikijs/vscode-textmate" "^10.0.1" - -"@shikijs/langs@2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@shikijs/langs/-/langs-2.3.2.tgz" - integrity sha512-UqI6bSxFzhexIJficZLKeB1L2Sc3xoNiAV0yHpfbg5meck93du+EKQtsGbBv66Ki53XZPhnR/kYkOr85elIuFw== - dependencies: - "@shikijs/types" "2.3.2" - -"@shikijs/themes@2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@shikijs/themes/-/themes-2.3.2.tgz" - integrity sha512-QAh7D/hhfYKHibkG2tti8vxNt3ekAH5EqkXJeJbTh7FGvTCWEI7BHqNCtMdjFvZ0vav5nvUgdvA7/HI7pfsB4w== - dependencies: - "@shikijs/types" "2.3.2" - -"@shikijs/types@2.3.2": - version "2.3.2" - resolved "https://registry.npmjs.org/@shikijs/types/-/types-2.3.2.tgz" - integrity sha512-CBaMY+a3pepyC4SETi7+bSzO0f6hxEQJUUuS4uD7zppzjmrN4ZRtBqxaT+wOan26CR9eeJ5iBhc4qvWEwn7Eeg== - dependencies: - "@shikijs/vscode-textmate" "^10.0.1" - "@types/hast" "^3.0.4" - -"@shikijs/vscode-textmate@^10.0.1": - version "10.0.1" - resolved "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz" - integrity sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg== - -"@types/aws-lambda@^8.10.83": - version "8.10.145" - resolved "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.145.tgz" - integrity sha512-dtByW6WiFk5W5Jfgz1VM+YPA21xMXTuSFoLYIDY0L44jDLLflVPtZkYuu3/YxpGcvjzKFBZLU+GyKjR0HOYtyw== - -"@types/estree@1.0.6", "@types/estree@^1.0.6": - version "1.0.6" - resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz" - integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw== - -"@types/hast@^3.0.0", "@types/hast@^3.0.4": - version "3.0.4" - resolved "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz" - integrity sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ== - dependencies: - "@types/unist" "*" - -"@types/json-schema@^7.0.15": - version "7.0.15" - resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz" - integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== - -"@types/lodash@^4.17.13": - version "4.17.13" - resolved "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz" - integrity sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg== - -"@types/mdast@^4.0.0": - version "4.0.4" - resolved "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz" - integrity sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA== - dependencies: - "@types/unist" "*" - -"@types/node@^24.0.3": - version "24.0.3" - resolved "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz" - integrity sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg== - dependencies: - undici-types "~7.8.0" - -"@types/unist@*", "@types/unist@^3.0.0": - version "3.0.3" - resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz" - integrity sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q== - -"@types/web-bluetooth@^0.0.20": - version "0.0.20" - resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz" - integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== - -"@types/web-bluetooth@^0.0.21": - version "0.0.21" - resolved "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz" - integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA== - -"@typescript-eslint/eslint-plugin@8.14.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz" - integrity sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w== - dependencies: - "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "8.14.0" - "@typescript-eslint/type-utils" "8.14.0" - "@typescript-eslint/utils" "8.14.0" - "@typescript-eslint/visitor-keys" "8.14.0" - graphemer "^1.4.0" - ignore "^5.3.1" - natural-compare "^1.4.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/parser@8.14.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz" - integrity sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA== - dependencies: - "@typescript-eslint/scope-manager" "8.14.0" - "@typescript-eslint/types" "8.14.0" - "@typescript-eslint/typescript-estree" "8.14.0" - "@typescript-eslint/visitor-keys" "8.14.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@8.14.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz" - integrity sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw== - dependencies: - "@typescript-eslint/types" "8.14.0" - "@typescript-eslint/visitor-keys" "8.14.0" - -"@typescript-eslint/type-utils@8.14.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz" - integrity sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ== - dependencies: - "@typescript-eslint/typescript-estree" "8.14.0" - "@typescript-eslint/utils" "8.14.0" - debug "^4.3.4" - ts-api-utils "^1.3.0" - -"@typescript-eslint/types@8.14.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz" - integrity sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g== - -"@typescript-eslint/typescript-estree@8.14.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz" - integrity sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ== - dependencies: - "@typescript-eslint/types" "8.14.0" - "@typescript-eslint/visitor-keys" "8.14.0" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^1.3.0" - -"@typescript-eslint/utils@8.14.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz" - integrity sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "8.14.0" - "@typescript-eslint/types" "8.14.0" - "@typescript-eslint/typescript-estree" "8.14.0" - -"@typescript-eslint/visitor-keys@8.14.0": - version "8.14.0" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz" - integrity sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ== - dependencies: - "@typescript-eslint/types" "8.14.0" - eslint-visitor-keys "^3.4.3" - -"@ungap/structured-clone@^1.0.0": - version "1.3.0" - resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz" - integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== - -"@unhead/dom@1.11.18": - version "1.11.18" - resolved "https://registry.npmjs.org/@unhead/dom/-/dom-1.11.18.tgz" - integrity sha512-zQuJUw/et9zYEV0SZWTDX23IgurwMaXycAuxt4L6OgNL0T4TWP3a0J/Vm3Q02hmdNo/cPKeVBrwBdnFUXjGU4w== - dependencies: - "@unhead/schema" "1.11.18" - "@unhead/shared" "1.11.18" - -"@unhead/schema@1.11.18": - version "1.11.18" - resolved "https://registry.npmjs.org/@unhead/schema/-/schema-1.11.18.tgz" - integrity sha512-a3TA/OJCRdfbFhcA3Hq24k1ZU1o9szicESrw8DZcGyQFacHnh84mVgnyqSkMnwgCmfN4kvjSiTBlLEHS6+wATw== - dependencies: - hookable "^5.5.3" - zhead "^2.2.4" - -"@unhead/shared@1.11.18": - version "1.11.18" - resolved "https://registry.npmjs.org/@unhead/shared/-/shared-1.11.18.tgz" - integrity sha512-OsupRQRxJqqnuKiL1Guqipjbl7MndD5DofvmGa3PFGu2qNPmOmH2mxGFjRBBgq2XxY1KalIHl/2I9HV6gbK8cw== - dependencies: - "@unhead/schema" "1.11.18" - packrup "^0.1.2" - -"@unhead/vue@^1.11.18": - version "1.11.18" - resolved "https://registry.npmjs.org/@unhead/vue/-/vue-1.11.18.tgz" - integrity sha512-Jfi7t/XNBnlcauP9UTH3VHBcS69G70ikFd2e5zdgULLDRWpOlLs1sSTH1V2juNptc93DOk9RQfC5jLWbLcivFw== - dependencies: - "@unhead/schema" "1.11.18" - "@unhead/shared" "1.11.18" - hookable "^5.5.3" - unhead "1.11.18" - -"@vitejs/plugin-vue@^5.1.4": - version "5.1.4" - resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.4.tgz" - integrity sha512-N2XSI2n3sQqp5w7Y/AN/L2XDjBIRGqXko+eDp42sydYSBeJuSm5a1sLf8zakmo8u7tA8NmBgoDLA1HeOESjp9A== - -"@volar/language-core@2.4.5", "@volar/language-core@~2.4.1": - version "2.4.5" - resolved "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.5.tgz" - integrity sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww== - dependencies: - "@volar/source-map" "2.4.5" - -"@volar/source-map@2.4.5": - version "2.4.5" - resolved "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.5.tgz" - integrity sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw== - -"@volar/typescript@~2.4.1": - version "2.4.5" - resolved "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.5.tgz" - integrity sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg== - dependencies: - "@volar/language-core" "2.4.5" - path-browserify "^1.0.1" - vscode-uri "^3.0.8" - -"@vue/compiler-core@3.5.11": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.11.tgz" - integrity sha512-PwAdxs7/9Hc3ieBO12tXzmTD+Ln4qhT/56S+8DvrrZ4kLDn4Z/AMUr8tXJD0axiJBS0RKIoNaR0yMuQB9v9Udg== - dependencies: - "@babel/parser" "^7.25.3" - "@vue/shared" "3.5.11" - entities "^4.5.0" - estree-walker "^2.0.2" - source-map-js "^1.2.0" - -"@vue/compiler-dom@3.5.11", "@vue/compiler-dom@^3.4.0": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.11.tgz" - integrity sha512-pyGf8zdbDDRkBrEzf8p7BQlMKNNF5Fk/Cf/fQ6PiUz9at4OaUfyXW0dGJTo2Vl1f5U9jSLCNf0EZJEogLXoeew== - dependencies: - "@vue/compiler-core" "3.5.11" - "@vue/shared" "3.5.11" - -"@vue/compiler-sfc@3.5.11": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.11.tgz" - integrity sha512-gsbBtT4N9ANXXepprle+X9YLg2htQk1sqH/qGJ/EApl+dgpUBdTv3yP7YlR535uHZY3n6XaR0/bKo0BgwwDniw== - dependencies: - "@babel/parser" "^7.25.3" - "@vue/compiler-core" "3.5.11" - "@vue/compiler-dom" "3.5.11" - "@vue/compiler-ssr" "3.5.11" - "@vue/shared" "3.5.11" - estree-walker "^2.0.2" - magic-string "^0.30.11" - postcss "^8.4.47" - source-map-js "^1.2.0" - -"@vue/compiler-ssr@3.5.11": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.11.tgz" - integrity sha512-P4+GPjOuC2aFTk1Z4WANvEhyOykcvEd5bIj2KVNGKGfM745LaXGr++5njpdBTzVz5pZifdlR1kpYSJJpIlSePA== - dependencies: - "@vue/compiler-dom" "3.5.11" - "@vue/shared" "3.5.11" - -"@vue/compiler-vue2@^2.7.16": - version "2.7.16" - resolved "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz" - integrity sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A== - dependencies: - de-indent "^1.0.2" - he "^1.2.0" - -"@vue/devtools-api@^6.5.0", "@vue/devtools-api@^6.6.4": - version "6.6.4" - resolved "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz" - integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g== - -"@vue/language-core@2.1.6": - version "2.1.6" - resolved "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.6.tgz" - integrity sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg== - dependencies: - "@volar/language-core" "~2.4.1" - "@vue/compiler-dom" "^3.4.0" - "@vue/compiler-vue2" "^2.7.16" - "@vue/shared" "^3.4.0" - computeds "^0.0.1" - minimatch "^9.0.3" - muggle-string "^0.4.1" - path-browserify "^1.0.1" - -"@vue/reactivity@3.5.11": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.11.tgz" - integrity sha512-Nqo5VZEn8MJWlCce8XoyVqHZbd5P2NH+yuAaFzuNSR96I+y1cnuUiq7xfSG+kyvLSiWmaHTKP1r3OZY4mMD50w== - dependencies: - "@vue/shared" "3.5.11" - -"@vue/runtime-core@3.5.11": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.11.tgz" - integrity sha512-7PsxFGqwfDhfhh0OcDWBG1DaIQIVOLgkwA5q6MtkPiDFjp5gohVnJEahSktwSFLq7R5PtxDKy6WKURVN1UDbzA== - dependencies: - "@vue/reactivity" "3.5.11" - "@vue/shared" "3.5.11" - -"@vue/runtime-dom@3.5.11": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.11.tgz" - integrity sha512-GNghjecT6IrGf0UhuYmpgaOlN7kxzQBhxWEn08c/SQDxv1yy4IXI1bn81JgEpQ4IXjRxWtPyI8x0/7TF5rPfYQ== - dependencies: - "@vue/reactivity" "3.5.11" - "@vue/runtime-core" "3.5.11" - "@vue/shared" "3.5.11" - csstype "^3.1.3" - -"@vue/server-renderer@3.5.11": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.11.tgz" - integrity sha512-cVOwYBxR7Wb1B1FoxYvtjJD8X/9E5nlH4VSkJy2uMA1MzYNdzAAB//l8nrmN9py/4aP+3NjWukf9PZ3TeWULaA== - dependencies: - "@vue/compiler-ssr" "3.5.11" - "@vue/shared" "3.5.11" - -"@vue/shared@3.5.11", "@vue/shared@^3.4.0": - version "3.5.11" - resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.5.11.tgz" - integrity sha512-W8GgysJVnFo81FthhzurdRAWP/byq3q2qIw70e0JWblzVhjgOMiC2GyovXrZTFQJnFVryYaKGP3Tc9vYzYm6PQ== - -"@vueuse/components@^13.3.0": - version "13.3.0" - resolved "https://registry.npmjs.org/@vueuse/components/-/components-13.3.0.tgz" - integrity sha512-ZnJiVknPtlWyeE4qwIXkDOlHM3W4bgMCxgeXj1Dec/aF/+8N+yAj+7rRdRUWUnqr8uKRin368RjG1FPKsF2erA== - dependencies: - "@vueuse/core" "13.3.0" - "@vueuse/shared" "13.3.0" - -"@vueuse/core@13.3.0": - version "13.3.0" - resolved "https://registry.npmjs.org/@vueuse/core/-/core-13.3.0.tgz" - integrity sha512-uYRz5oEfebHCoRhK4moXFM3NSCd5vu2XMLOq/Riz5FdqZMy2RvBtazdtL3gEcmDyqkztDe9ZP/zymObMIbiYSg== - dependencies: - "@types/web-bluetooth" "^0.0.21" - "@vueuse/metadata" "13.3.0" - "@vueuse/shared" "13.3.0" - -"@vueuse/core@^11.3.0": - version "11.3.0" - resolved "https://registry.npmjs.org/@vueuse/core/-/core-11.3.0.tgz" - integrity sha512-7OC4Rl1f9G8IT6rUfi9JrKiXy4bfmHhZ5x2Ceojy0jnd3mHNEvV4JaRygH362ror6/NZ+Nl+n13LPzGiPN8cKA== - dependencies: - "@types/web-bluetooth" "^0.0.20" - "@vueuse/metadata" "11.3.0" - "@vueuse/shared" "11.3.0" - vue-demi ">=0.14.10" - -"@vueuse/metadata@11.3.0": - version "11.3.0" - resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-11.3.0.tgz" - integrity sha512-pwDnDspTqtTo2HwfLw4Rp6yywuuBdYnPYDq+mO38ZYKGebCUQC/nVj/PXSiK9HX5otxLz8Fn7ECPbjiRz2CC3g== - -"@vueuse/metadata@13.3.0": - version "13.3.0" - resolved "https://registry.npmjs.org/@vueuse/metadata/-/metadata-13.3.0.tgz" - integrity sha512-42IzJIOYCKIb0Yjv1JfaKpx8JlCiTmtCWrPxt7Ja6Wzoq0h79+YVXmBV03N966KEmDEESTbp5R/qO3AB5BDnGw== - -"@vueuse/shared@11.3.0": - version "11.3.0" - resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-11.3.0.tgz" - integrity sha512-P8gSSWQeucH5821ek2mn/ciCk+MS/zoRKqdQIM3bHq6p7GXDAJLmnRRKmF5F65sAVJIfzQlwR3aDzwCn10s8hA== - dependencies: - vue-demi ">=0.14.10" - -"@vueuse/shared@13.3.0": - version "13.3.0" - resolved "https://registry.npmjs.org/@vueuse/shared/-/shared-13.3.0.tgz" - integrity sha512-L1QKsF0Eg9tiZSFXTgodYnu0Rsa2P0En2LuLrIs/jgrkyiDuJSsPZK+tx+wU0mMsYHUYEjNsuE41uqqkuR8VhA== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.14.0, acorn@^8.9.0: - version "8.14.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz" - integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA== - -ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-regex@^6.0.1: - version "6.1.0" - resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz" - integrity sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA== - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansi-styles@^6.1.0: - version "6.2.1" - resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz" - integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug== - -any-promise@^1.0.0: - version "1.3.0" - resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz" - integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A== - -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -arg@^5.0.2: - version "5.0.2" - resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz" - integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg== - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -autoprefixer@^10.4.20: - version "10.4.20" - resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz" - integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g== - dependencies: - browserslist "^4.23.3" - caniuse-lite "^1.0.30001646" - fraction.js "^4.3.7" - normalize-range "^0.1.2" - picocolors "^1.0.1" - postcss-value-parser "^4.2.0" - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -before-after-hook@^3.0.2: - version "3.0.2" - resolved "https://registry.npmjs.org/before-after-hook/-/before-after-hook-3.0.2.tgz" - integrity sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A== - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz" - integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== - -bootstrap-icons-vue@^1.11.3: - version "1.11.3" - resolved "https://registry.npmjs.org/bootstrap-icons-vue/-/bootstrap-icons-vue-1.11.3.tgz" - integrity sha512-Xba1GTDYon8KYSDTKiiAtiyfk4clhdKQYvCQPMkE58+F5loVwEmh0Wi+ECCfowNc9SGwpoSLpSkvg7rhgZBttw== - -bottleneck@^2.15.3: - version "2.19.5" - resolved "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz" - integrity sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - -browserslist@^4.23.3: - version "4.24.0" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz" - integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A== - dependencies: - caniuse-lite "^1.0.30001663" - electron-to-chromium "^1.5.28" - node-releases "^2.0.18" - update-browserslist-db "^1.1.0" - -buffer-builder@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/buffer-builder/-/buffer-builder-0.2.0.tgz" - integrity sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg== - -callsites@^3.0.0: - version "3.1.0" - resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase-css@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" - integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== - -caniuse-lite@^1.0.30001646, caniuse-lite@^1.0.30001663: - version "1.0.30001667" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001667.tgz" - integrity sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw== - -ccount@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz" - integrity sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg== - -chalk@^4.0.0: - version "4.1.2" - resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -character-entities-html4@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz" - integrity sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA== - -character-entities-legacy@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz" - integrity sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ== - -chokidar@^3.5.3: - version "3.6.0" - resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -colorjs.io@^0.5.0: - version "0.5.2" - resolved "https://registry.npmjs.org/colorjs.io/-/colorjs.io-0.5.2.tgz" - integrity sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw== - -comma-separated-tokens@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz" - integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg== - -commander@^4.0.0: - version "4.1.1" - resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz" - integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA== - -computeds@^0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz" - integrity sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q== - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -cross-spawn@^7.0.0, cross-spawn@^7.0.2: - version "7.0.6" - resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz" - integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cssesc@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz" - integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== - -csstype@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz" - integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== - -de-indent@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz" - integrity sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg== - -debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.7" - resolved "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz" - integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== - dependencies: - ms "^2.1.3" - -deep-is@^0.1.3: - version "0.1.4" - resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz" - integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== - -dequal@^2.0.0: - version "2.0.3" - resolved "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz" - integrity sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA== - -devlop@^1.0.0: - version "1.1.0" - resolved "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz" - integrity sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA== - dependencies: - dequal "^2.0.0" - -didyoumean@^1.2.2: - version "1.2.2" - resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz" - integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw== - -dlv@^1.1.3: - version "1.1.3" - resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" - integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== - -eastasianwidth@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz" - integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== - -electron-to-chromium@^1.5.28: - version "1.5.32" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.32.tgz" - integrity sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw== - -emoji-regex-xs@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz" - integrity sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -emoji-regex@^9.2.2: - version "9.2.2" - resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz" - integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== - -entities@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz" - integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== - -esbuild@^0.21.3: - version "0.21.5" - resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz" - integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== - optionalDependencies: - "@esbuild/aix-ppc64" "0.21.5" - "@esbuild/android-arm" "0.21.5" - "@esbuild/android-arm64" "0.21.5" - "@esbuild/android-x64" "0.21.5" - "@esbuild/darwin-arm64" "0.21.5" - "@esbuild/darwin-x64" "0.21.5" - "@esbuild/freebsd-arm64" "0.21.5" - "@esbuild/freebsd-x64" "0.21.5" - "@esbuild/linux-arm" "0.21.5" - "@esbuild/linux-arm64" "0.21.5" - "@esbuild/linux-ia32" "0.21.5" - "@esbuild/linux-loong64" "0.21.5" - "@esbuild/linux-mips64el" "0.21.5" - "@esbuild/linux-ppc64" "0.21.5" - "@esbuild/linux-riscv64" "0.21.5" - "@esbuild/linux-s390x" "0.21.5" - "@esbuild/linux-x64" "0.21.5" - "@esbuild/netbsd-x64" "0.21.5" - "@esbuild/openbsd-x64" "0.21.5" - "@esbuild/sunos-x64" "0.21.5" - "@esbuild/win32-arm64" "0.21.5" - "@esbuild/win32-ia32" "0.21.5" - "@esbuild/win32-x64" "0.21.5" - -escalade@^3.2.0: - version "3.2.0" - resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz" - integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-plugin-vue@^9.31.0: - version "9.31.0" - resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.31.0.tgz" - integrity sha512-aYMUCgivhz1o4tLkRHj5oq9YgYPM4/EJc0M7TAKRLCUA5OYxRLAhYEVD2nLtTwLyixEFI+/QXSvKU9ESZFgqjQ== - dependencies: - "@eslint-community/eslint-utils" "^4.4.0" - globals "^13.24.0" - natural-compare "^1.4.0" - nth-check "^2.1.1" - postcss-selector-parser "^6.0.15" - semver "^7.6.3" - vue-eslint-parser "^9.4.3" - xml-name-validator "^4.0.0" - -eslint-scope@^7.1.1: - version "7.2.2" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz" - integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-scope@^8.2.0: - version "8.2.0" - resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz" - integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: - version "3.4.3" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - -eslint-visitor-keys@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz" - integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw== - -eslint@^9.14.0: - version "9.14.0" - resolved "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz" - integrity sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g== - dependencies: - "@eslint-community/eslint-utils" "^4.2.0" - "@eslint-community/regexpp" "^4.12.1" - "@eslint/config-array" "^0.18.0" - "@eslint/core" "^0.7.0" - "@eslint/eslintrc" "^3.1.0" - "@eslint/js" "9.14.0" - "@eslint/plugin-kit" "^0.2.0" - "@humanfs/node" "^0.16.6" - "@humanwhocodes/module-importer" "^1.0.1" - "@humanwhocodes/retry" "^0.4.0" - "@types/estree" "^1.0.6" - "@types/json-schema" "^7.0.15" - ajv "^6.12.4" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - escape-string-regexp "^4.0.0" - eslint-scope "^8.2.0" - eslint-visitor-keys "^4.2.0" - espree "^10.3.0" - esquery "^1.5.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^8.0.0" - find-up "^5.0.0" - glob-parent "^6.0.2" - ignore "^5.2.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - json-stable-stringify-without-jsonify "^1.0.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.3" - text-table "^0.2.0" - -espree@^10.0.1, espree@^10.3.0: - version "10.3.0" - resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz" - integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg== - dependencies: - acorn "^8.14.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^4.2.0" - -espree@^9.3.1: - version "9.6.1" - resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz" - integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== - dependencies: - acorn "^8.9.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.4.1" - -esquery@^1.4.0, esquery@^1.5.0: - version "1.6.0" - resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz" - integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.3.0" - resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz" - integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== - -estree-walker@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" - integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -fast-content-type-parse@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-2.0.1.tgz" - integrity sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q== - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-glob@^3.3.0, fast-glob@^3.3.2: - version "3.3.2" - resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== - -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" - integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -file-entry-cache@^8.0.0: - version "8.0.0" - resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz" - integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ== - dependencies: - flat-cache "^4.0.0" - -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -flat-cache@^4.0.0: - version "4.0.1" - resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz" - integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw== - dependencies: - flatted "^3.2.9" - keyv "^4.5.4" - -flatted@^3.2.9: - version "3.3.1" - resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz" - integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== - -foreground-child@^3.1.0: - version "3.3.0" - resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz" - integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^4.0.1" - -fraction.js@^4.3.7: - version "4.3.7" - resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz" - integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== - -franken-ui@^1.1.0: - version "1.1.0" - resolved "https://registry.npmjs.org/franken-ui/-/franken-ui-1.1.0.tgz" - integrity sha512-OHC4jQ9ICMmt9wrgYeSnceMTxPTOxj1pq6vi20dbA/BuNKf0bZwcf4t2tOHi1T1+7PUPsjSiBV+riXZBkWdNDA== - -fsevents@~2.3.2, fsevents@~2.3.3: - version "2.3.3" - resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - -function-bind@^1.1.2: - version "1.1.2" - resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz" - integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^10.3.10: - version "10.4.5" - resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz" - integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg== - dependencies: - foreground-child "^3.1.0" - jackspeak "^3.1.2" - minimatch "^9.0.4" - minipass "^7.1.2" - package-json-from-dist "^1.0.0" - path-scurry "^1.11.1" - -globals@^13.24.0: - version "13.24.0" - resolved "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz" - integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== - dependencies: - type-fest "^0.20.2" - -globals@^14.0.0: - version "14.0.0" - resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz" - integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ== - -globals@^15.12.0: - version "15.12.0" - resolved "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz" - integrity sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ== - -graphemer@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz" - integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -hasown@^2.0.2: - version "2.0.2" - resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz" - integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== - dependencies: - function-bind "^1.1.2" - -hast-util-to-html@^9.0.4: - version "9.0.4" - resolved "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz" - integrity sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA== - dependencies: - "@types/hast" "^3.0.0" - "@types/unist" "^3.0.0" - ccount "^2.0.0" - comma-separated-tokens "^2.0.0" - hast-util-whitespace "^3.0.0" - html-void-elements "^3.0.0" - mdast-util-to-hast "^13.0.0" - property-information "^6.0.0" - space-separated-tokens "^2.0.0" - stringify-entities "^4.0.0" - zwitch "^2.0.4" - -hast-util-whitespace@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz" - integrity sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw== - dependencies: - "@types/hast" "^3.0.0" - -he@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" - integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== - -hookable@^5.5.3: - version "5.5.3" - resolved "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz" - integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== - -html-void-elements@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz" - integrity sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg== - -ignore@^5.2.0, ignore@^5.3.1: - version "5.3.2" - resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz" - integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== - -immutable@^5.0.2: - version "5.0.3" - resolved "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz" - integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw== - -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" - integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.13.0: - version "2.15.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz" - integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== - dependencies: - hasown "^2.0.2" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" - integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== - -jackspeak@^3.1.2: - version "3.4.3" - resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz" - integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw== - dependencies: - "@isaacs/cliui" "^8.0.2" - optionalDependencies: - "@pkgjs/parseargs" "^0.11.0" - -jiti@^1.21.0: - version "1.21.6" - resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz" - integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -json-buffer@3.0.1: - version "3.0.1" - resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz" - integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" - integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== - -keyv@^4.5.4: - version "4.5.4" - resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz" - integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== - dependencies: - json-buffer "3.0.1" - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -lilconfig@^2.1.0: - version "2.1.0" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz" - integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ== - -lilconfig@^3.0.0: - version "3.1.2" - resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz" - integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow== - -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -lru-cache@^10.2.0: - version "10.4.3" - resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz" - integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ== - -magic-string@^0.30.11: - version "0.30.11" - resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz" - integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== - dependencies: - "@jridgewell/sourcemap-codec" "^1.5.0" - -marked-shiki@^1.2.0: - version "1.2.0" - resolved "https://registry.npmjs.org/marked-shiki/-/marked-shiki-1.2.0.tgz" - integrity sha512-N924hp8veE6Mc91g5/kCNVoTU7TkeJfB2G2XEWb+k1fVA0Bck2T0rVt93d39BlOYH6ohP4Q9BFlPk+UkblhXbg== - -marked@^15.0.6: - version "15.0.6" - resolved "https://registry.npmjs.org/marked/-/marked-15.0.6.tgz" - integrity sha512-Y07CUOE+HQXbVDCGl3LXggqJDbXDP2pArc2C1N1RRMN0ONiShoSsIInMd5Gsxupe7fKLpgimTV+HOJ9r7bA+pg== - -mdast-util-to-hast@^13.0.0: - version "13.2.0" - resolved "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz" - integrity sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA== - dependencies: - "@types/hast" "^3.0.0" - "@types/mdast" "^4.0.0" - "@ungap/structured-clone" "^1.0.0" - devlop "^1.0.0" - micromark-util-sanitize-uri "^2.0.0" - trim-lines "^3.0.0" - unist-util-position "^5.0.0" - unist-util-visit "^5.0.0" - vfile "^6.0.0" - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromark-util-character@^2.0.0: - version "2.1.1" - resolved "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz" - integrity sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q== - dependencies: - micromark-util-symbol "^2.0.0" - micromark-util-types "^2.0.0" - -micromark-util-encode@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz" - integrity sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw== - -micromark-util-sanitize-uri@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz" - integrity sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ== - dependencies: - micromark-util-character "^2.0.0" - micromark-util-encode "^2.0.0" - micromark-util-symbol "^2.0.0" - -micromark-util-symbol@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz" - integrity sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q== - -micromark-util-types@^2.0.0: - version "2.0.1" - resolved "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz" - integrity sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ== - -micromatch@^4.0.4, micromatch@^4.0.5: - version "4.0.8" - resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - -minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^9.0.3, minimatch@^9.0.4: - version "9.0.5" - resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz" - integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== - dependencies: - brace-expansion "^2.0.1" - -"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2: - version "7.1.2" - resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz" - integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw== - -ms@^2.1.3: - version "2.1.3" - resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -muggle-string@^0.4.1: - version "0.4.1" - resolved "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz" - integrity sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ== - -mz@^2.7.0: - version "2.7.0" - resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz" - integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q== - dependencies: - any-promise "^1.0.0" - object-assign "^4.0.1" - thenify-all "^1.0.0" - -nanoid@^3.3.8: - version "3.3.8" - resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz" - integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" - integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== - -node-releases@^2.0.18: - version "2.0.18" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz" - integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -normalize-range@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz" - integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== - -nth-check@^2.1.1: - version "2.1.1" - resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz" - integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== - dependencies: - boolbase "^1.0.0" - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" - integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== - -object-hash@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz" - integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== - -octokit@^4.1.2: - version "4.1.2" - resolved "https://registry.npmjs.org/octokit/-/octokit-4.1.2.tgz" - integrity sha512-0kcTxJOK3yQrJsRb8wKa28hlTze4QOz4sLuUnfXXnhboDhFKgv8LxS86tFwbsafDW9JZ08ByuVAE8kQbYJIZkA== - dependencies: - "@octokit/app" "^15.1.4" - "@octokit/core" "^6.1.4" - "@octokit/oauth-app" "^7.1.6" - "@octokit/plugin-paginate-graphql" "^5.2.4" - "@octokit/plugin-paginate-rest" "^11.4.2" - "@octokit/plugin-rest-endpoint-methods" "^13.3.1" - "@octokit/plugin-retry" "^7.1.4" - "@octokit/plugin-throttling" "^9.4.0" - "@octokit/request-error" "^6.1.7" - "@octokit/types" "^13.7.0" - -oniguruma-to-es@^3.1.0: - version "3.1.0" - resolved "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.0.tgz" - integrity sha512-BJ3Jy22YlgejHSO7Fvmz1kKazlaPmRSUH+4adTDUS/dKQ4wLxI+gALZ8updbaux7/m7fIlpgOZ5fp/Inq5jUAw== - dependencies: - emoji-regex-xs "^1.0.0" - regex "^6.0.1" - regex-recursion "^6.0.2" - -optionator@^0.9.3: - version "0.9.4" - resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz" - integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.5" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -package-json-from-dist@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz" - integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw== - -packrup@^0.1.2: - version "0.1.2" - resolved "https://registry.npmjs.org/packrup/-/packrup-0.1.2.tgz" - integrity sha512-ZcKU7zrr5GlonoS9cxxrb5HVswGnyj6jQvwFBa6p5VFw7G71VAHcUKL5wyZSU/ECtPM/9gacWxy2KFQKt1gMNA== - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -path-browserify@^1.0.1: - version "1.0.1" - resolved "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" - integrity sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.7: - version "1.0.7" - resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.11.1: - version "1.11.1" - resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz" - integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA== - dependencies: - lru-cache "^10.2.0" - minipass "^5.0.0 || ^6.0.2 || ^7.0.0" - -picocolors@^1.0.0, picocolors@^1.0.1, picocolors@^1.1.0, picocolors@^1.1.1: - version "1.1.1" - resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz" - integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -pify@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz" - integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== - -pirates@^4.0.1: - version "4.0.6" - resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz" - integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== - -postcss-combine-duplicated-selectors@^10.0.3: - version "10.0.3" - resolved "https://registry.npmjs.org/postcss-combine-duplicated-selectors/-/postcss-combine-duplicated-selectors-10.0.3.tgz" - integrity sha512-IP0BmwFloCskv7DV7xqvzDXqMHpwdczJa6ZvIW8abgHdcIHs9mCJX2ltFhu3EwA51ozp13DByng30+Ke+eIExA== - dependencies: - postcss-selector-parser "^6.0.4" - -postcss-import@^15.1.0: - version "15.1.0" - resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz" - integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew== - dependencies: - postcss-value-parser "^4.0.0" - read-cache "^1.0.0" - resolve "^1.1.7" - -postcss-js@^4.0.1: - version "4.0.1" - resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz" - integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw== - dependencies: - camelcase-css "^2.0.1" - -postcss-load-config@^4.0.1: - version "4.0.2" - resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz" - integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ== - dependencies: - lilconfig "^3.0.0" - yaml "^2.3.4" - -postcss-nested@^6.0.1: - version "6.2.0" - resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz" - integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ== - dependencies: - postcss-selector-parser "^6.1.1" - -postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.15, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.1.1: - version "6.1.2" - resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz" - integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== - dependencies: - cssesc "^3.0.0" - util-deprecate "^1.0.2" - -postcss-sort-media-queries@^5.2.0: - version "5.2.0" - resolved "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz" - integrity sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA== - dependencies: - sort-css-media-queries "2.2.0" - -postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -postcss@^8.4.23, postcss@^8.4.43, postcss@^8.4.47, postcss@^8.5.1: - version "8.5.1" - resolved "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz" - integrity sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ== - dependencies: - nanoid "^3.3.8" - picocolors "^1.1.1" - source-map-js "^1.2.1" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier@3.3.3: - version "3.3.3" - resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz" - integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew== - -property-information@^6.0.0: - version "6.5.0" - resolved "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz" - integrity sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig== - -punycode@^2.1.0: - version "2.3.1" - resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz" - integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -read-cache@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz" - integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== - dependencies: - pify "^2.3.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -regex-recursion@^6.0.2: - version "6.0.2" - resolved "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz" - integrity sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg== - dependencies: - regex-utilities "^2.3.0" - -regex-utilities@^2.3.0: - version "2.3.0" - resolved "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz" - integrity sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng== - -regex@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz" - integrity sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA== - dependencies: - regex-utilities "^2.3.0" - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve@^1.1.7, resolve@^1.22.2: - version "1.22.8" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz" - integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== - dependencies: - is-core-module "^2.13.0" - path-parse "^1.0.7" - supports-preserve-symlinks-flag "^1.0.0" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rollup@^4.20.0: - version "4.24.0" - resolved "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz" - integrity sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg== - dependencies: - "@types/estree" "1.0.6" - optionalDependencies: - "@rollup/rollup-android-arm-eabi" "4.24.0" - "@rollup/rollup-android-arm64" "4.24.0" - "@rollup/rollup-darwin-arm64" "4.24.0" - "@rollup/rollup-darwin-x64" "4.24.0" - "@rollup/rollup-linux-arm-gnueabihf" "4.24.0" - "@rollup/rollup-linux-arm-musleabihf" "4.24.0" - "@rollup/rollup-linux-arm64-gnu" "4.24.0" - "@rollup/rollup-linux-arm64-musl" "4.24.0" - "@rollup/rollup-linux-powerpc64le-gnu" "4.24.0" - "@rollup/rollup-linux-riscv64-gnu" "4.24.0" - "@rollup/rollup-linux-s390x-gnu" "4.24.0" - "@rollup/rollup-linux-x64-gnu" "4.24.0" - "@rollup/rollup-linux-x64-musl" "4.24.0" - "@rollup/rollup-win32-arm64-msvc" "4.24.0" - "@rollup/rollup-win32-ia32-msvc" "4.24.0" - "@rollup/rollup-win32-x64-msvc" "4.24.0" - fsevents "~2.3.2" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -rxjs@^7.4.0: - version "7.8.1" - resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz" - integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg== - dependencies: - tslib "^2.1.0" - -sass-embedded-android-arm64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.83.4.tgz#60af9d787e74276af95e4a1a1507567435bc61d2" - integrity sha512-tgX4FzmbVqnQmD67ZxQDvI+qFNABrboOQgwsG05E5bA/US42zGajW9AxpECJYiMXVOHmg+d81ICbjb0fsVHskw== - -sass-embedded-android-arm@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.83.4.tgz#960953d094bf28c3e10a2e0ebd14459d4ec6e2d2" - integrity sha512-9Z4pJAOgEkXa3VDY/o+U6l5XvV0mZTJcSl0l/mSPHihjAHSpLYnOW6+KOWeM8dxqrsqTYcd6COzhanI/a++5Gw== - -sass-embedded-android-ia32@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.83.4.tgz#2293cb9920181094edfa477ba503f1f187d21624" - integrity sha512-RsFOziFqPcfZXdFRULC4Ayzy9aK6R6FwQ411broCjlOBX+b0gurjRadkue3cfUEUR5mmy0KeCbp7zVKPLTK+5Q== - -sass-embedded-android-riscv64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.83.4.tgz#84f86f2e96955a415343a2f24bae1af7bde26e5f" - integrity sha512-EHwh0nmQarBBrMRU928eTZkFGx19k/XW2YwbPR4gBVdWLkbTgCA5aGe8hTE6/1zStyx++3nDGvTZ78+b/VvvLg== - -sass-embedded-android-x64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.83.4.tgz#8db3bb08b941889918f8435a97487cd84e7fd748" - integrity sha512-0PgQNuPWYy1jEOEPDVsV89KfqOsMLIp9CSbjBY7jRcwRhyVAcigqrUG6bDeNtojHUYKA1kU+Eh/85WxOHUOgBw== - -sass-embedded-darwin-arm64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.83.4.tgz#d0f3d82eea999ab0ae7ec8abd7fa364f0defc75e" - integrity sha512-rp2ywymWc3nymnSnAFG5R/8hvxWCsuhK3wOnD10IDlmNB7o4rzKby1c+2ZfpQGowlYGWsWWTgz8FW2qzmZsQRw== - -sass-embedded-darwin-x64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.83.4.tgz#cd2ac7f209fe823a8a5fc1a064cdfe2833680034" - integrity sha512-kLkN2lXz9PCgGfDS8Ev5YVcl/V2173L6379en/CaFuJJi7WiyPgBymW7hOmfCt4uO4R1y7CP2Uc08DRtZsBlAA== - -sass-embedded-linux-arm64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.83.4.tgz#057adf6e337357787331d40714cb8bba4a96dafe" - integrity sha512-E0zjsZX2HgESwyqw31EHtI39DKa7RgK7nvIhIRco1d0QEw227WnoR9pjH3M/ZQy4gQj3GKilOFHM5Krs/omeIA== - -sass-embedded-linux-arm@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.83.4.tgz#aea8b56f3844633f0bfaf13e0694c79511218fc0" - integrity sha512-nL90ryxX2lNmFucr9jYUyHHx21AoAgdCL1O5Ltx2rKg2xTdytAGHYo2MT5S0LIeKLa/yKP/hjuSvrbICYNDvtA== - -sass-embedded-linux-ia32@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.83.4.tgz#2cedba9f41be61ded3cede5abd16f8ec163d7f46" - integrity sha512-ew5HpchSzgAYbQoriRh8QhlWn5Kw2nQ2jHoV9YLwGKe3fwwOWA0KDedssvDv7FWnY/FCqXyymhLd6Bxae4Xquw== - -sass-embedded-linux-musl-arm64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.83.4.tgz#1c5f50c9df93abce7d5ffb4d86eed65b8ffba2f4" - integrity sha512-IzMgalf6MZOxgp4AVCgsaWAFDP/IVWOrgVXxkyhw29fyAEoSWBJH4k87wyPhEtxSuzVHLxKNbc8k3UzdWmlBFg== - -sass-embedded-linux-musl-arm@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.83.4.tgz#00f241dbc750ee73242bfde1ec5d64ef2d5d7956" - integrity sha512-0RrJRwMrmm+gG0VOB5b5Cjs7Sd+lhqpQJa6EJNEaZHljJokEfpE5GejZsGMRMIQLxEvVphZnnxl6sonCGFE/QQ== - -sass-embedded-linux-musl-ia32@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.83.4.tgz#27537a309d39f8e35a7dba34a3edc29a3ee16adf" - integrity sha512-LLb4lYbcxPzX4UaJymYXC+WwokxUlfTJEFUv5VF0OTuSsHAGNRs/rslPtzVBTvMeG9TtlOQDhku1F7G6iaDotA== - -sass-embedded-linux-musl-riscv64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.83.4.tgz#a32edf2ddb7f7d9b526e971e80cadef1e025cce8" - integrity sha512-zoKlPzD5Z13HKin1UGR74QkEy+kZEk2AkGX5RelRG494mi+IWwRuWCppXIovor9+BQb9eDWPYPoMVahwN5F7VA== - -sass-embedded-linux-musl-x64@1.83.4: - version "1.83.4" - resolved "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.83.4.tgz" - integrity sha512-hB8+/PYhfEf2zTIcidO5Bpof9trK6WJjZ4T8g2MrxQh8REVtdPcgIkoxczRynqybf9+fbqbUwzXtiUao2GV+vQ== - -sass-embedded-linux-riscv64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.83.4.tgz#b7718df2adf1cbcb4c26609215018dd2e8bab595" - integrity sha512-83fL4n+oeDJ0Y4KjASmZ9jHS1Vl9ESVQYHMhJE0i4xDi/P3BNarm2rsKljq/QtrwGpbqwn8ujzOu7DsNCMDSHA== - -sass-embedded-linux-x64@1.83.4: - version "1.83.4" - resolved "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.83.4.tgz" - integrity sha512-NlnGdvCmTD5PK+LKXlK3sAuxOgbRIEoZfnHvxd157imCm/s2SYF/R28D0DAAjEViyI8DovIWghgbcqwuertXsA== - -sass-embedded-win32-arm64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.83.4.tgz#b6ca8f65177e24770e87e43ffea5868fea34de27" - integrity sha512-J2BFKrEaeSrVazU2qTjyQdAk+MvbzJeTuCET0uAJEXSKtvQ3AzxvzndS7LqkDPbF32eXAHLw8GVpwcBwKbB3Uw== - -sass-embedded-win32-ia32@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.83.4.tgz#94f8da72e253532f8d857516b99e1caf61e7b08f" - integrity sha512-uPAe9T/5sANFhJS5dcfAOhOJy8/l2TRYG4r+UO3Wp4yhqbN7bggPvY9c7zMYS0OC8tU/bCvfYUDFHYMCl91FgA== - -sass-embedded-win32-x64@1.83.4: - version "1.83.4" - resolved "https://registry.yarnpkg.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.83.4.tgz#2179d4e2fc2f9086aecd64209a2d84f7d8e9edbe" - integrity sha512-C9fkDY0jKITdJFij4UbfPFswxoXN9O/Dr79v17fJnstVwtUojzVJWKHUXvF0Zg2LIR7TCc4ju3adejKFxj7ueA== - -sass-embedded@^1.83.4: - version "1.83.4" - resolved "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.83.4.tgz" - integrity sha512-Hf2burRA/y5PGxsg6jB9UpoK/xZ6g/pgrkOcdl6j+rRg1Zj8XhGKZ1MTysZGtTPUUmiiErqzkP5+Kzp95yv9GQ== - dependencies: - "@bufbuild/protobuf" "^2.0.0" - buffer-builder "^0.2.0" - colorjs.io "^0.5.0" - immutable "^5.0.2" - rxjs "^7.4.0" - supports-color "^8.1.1" - sync-child-process "^1.0.2" - varint "^6.0.0" - optionalDependencies: - sass-embedded-android-arm "1.83.4" - sass-embedded-android-arm64 "1.83.4" - sass-embedded-android-ia32 "1.83.4" - sass-embedded-android-riscv64 "1.83.4" - sass-embedded-android-x64 "1.83.4" - sass-embedded-darwin-arm64 "1.83.4" - sass-embedded-darwin-x64 "1.83.4" - sass-embedded-linux-arm "1.83.4" - sass-embedded-linux-arm64 "1.83.4" - sass-embedded-linux-ia32 "1.83.4" - sass-embedded-linux-musl-arm "1.83.4" - sass-embedded-linux-musl-arm64 "1.83.4" - sass-embedded-linux-musl-ia32 "1.83.4" - sass-embedded-linux-musl-riscv64 "1.83.4" - sass-embedded-linux-musl-x64 "1.83.4" - sass-embedded-linux-riscv64 "1.83.4" - sass-embedded-linux-x64 "1.83.4" - sass-embedded-win32-arm64 "1.83.4" - sass-embedded-win32-ia32 "1.83.4" - sass-embedded-win32-x64 "1.83.4" - -semver@^7.3.6, semver@^7.5.4, semver@^7.6.0, semver@^7.6.3: - version "7.6.3" - resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" - integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== - dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shiki@^2.3.2: - version "2.3.2" - resolved "https://registry.npmjs.org/shiki/-/shiki-2.3.2.tgz" - integrity sha512-UZhz/gsUz7DHFbQBOJP7eXqvKyYvMGramxQiSDc83M/7OkWm6OdVHAReEc3vMLh6L6TRhgL9dvhXz9XDkCDaaw== - dependencies: - "@shikijs/core" "2.3.2" - "@shikijs/engine-javascript" "2.3.2" - "@shikijs/engine-oniguruma" "2.3.2" - "@shikijs/langs" "2.3.2" - "@shikijs/themes" "2.3.2" - "@shikijs/types" "2.3.2" - "@shikijs/vscode-textmate" "^10.0.1" - "@types/hast" "^3.0.4" - -signal-exit@^4.0.1: - version "4.1.0" - resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz" - integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw== - -sort-css-media-queries@2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz" - integrity sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA== - -source-map-js@^1.0.2, source-map-js@^1.2.0, source-map-js@^1.2.1: - version "1.2.1" - resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz" - integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== - -space-separated-tokens@^2.0.0: - version "2.0.2" - resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz" - integrity sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q== - -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0: - version "4.2.3" - resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^5.0.1, string-width@^5.1.2: - version "5.1.2" - resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz" - integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA== - dependencies: - eastasianwidth "^0.2.0" - emoji-regex "^9.2.2" - strip-ansi "^7.0.1" - -stringify-entities@^4.0.0: - version "4.0.4" - resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz" - integrity sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg== - dependencies: - character-entities-html4 "^2.0.0" - character-entities-legacy "^3.0.0" - -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: - version "6.0.1" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^7.0.1: - version "7.1.0" - resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz" - integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ== - dependencies: - ansi-regex "^6.0.1" - -strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -sucrase@^3.32.0: - version "3.35.0" - resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz" - integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA== - dependencies: - "@jridgewell/gen-mapping" "^0.3.2" - commander "^4.0.0" - glob "^10.3.10" - lines-and-columns "^1.1.6" - mz "^2.7.0" - pirates "^4.0.1" - ts-interface-checker "^0.1.9" - -supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-color@^8.1.1: - version "8.1.1" - resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" - integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== - dependencies: - has-flag "^4.0.0" - -supports-preserve-symlinks-flag@^1.0.0: - version "1.0.0" - resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz" - integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== - -sync-child-process@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/sync-child-process/-/sync-child-process-1.0.2.tgz" - integrity sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA== - dependencies: - sync-message-port "^1.0.0" - -sync-message-port@^1.0.0: - version "1.1.3" - resolved "https://registry.npmjs.org/sync-message-port/-/sync-message-port-1.1.3.tgz" - integrity sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg== - -tailwindcss@^3.4.13: - version "3.4.13" - resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz" - integrity sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw== - dependencies: - "@alloc/quick-lru" "^5.2.0" - arg "^5.0.2" - chokidar "^3.5.3" - didyoumean "^1.2.2" - dlv "^1.1.3" - fast-glob "^3.3.0" - glob-parent "^6.0.2" - is-glob "^4.0.3" - jiti "^1.21.0" - lilconfig "^2.1.0" - micromatch "^4.0.5" - normalize-path "^3.0.0" - object-hash "^3.0.0" - picocolors "^1.0.0" - postcss "^8.4.23" - postcss-import "^15.1.0" - postcss-js "^4.0.1" - postcss-load-config "^4.0.1" - postcss-nested "^6.0.1" - postcss-selector-parser "^6.0.11" - resolve "^1.22.2" - sucrase "^3.32.0" - -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" - integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== - -thenify-all@^1.0.0: - version "1.6.0" - resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz" - integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA== - dependencies: - thenify ">= 3.1.0 < 4" - -"thenify@>= 3.1.0 < 4": - version "3.3.1" - resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz" - integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw== - dependencies: - any-promise "^1.0.0" - -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -toad-cache@^3.7.0: - version "3.7.0" - resolved "https://registry.npmjs.org/toad-cache/-/toad-cache-3.7.0.tgz" - integrity sha512-/m8M+2BJUpoJdgAHoG+baCwBT+tf2VraSfkBgl0Y00qIWt41DJ8R5B8nsEw0I58YwF5IZH6z24/2TobDKnqSWw== - -trim-lines@^3.0.0: - version "3.0.1" - resolved "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz" - integrity sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg== - -ts-api-utils@^1.3.0: - version "1.4.0" - resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz" - integrity sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ== - -ts-interface-checker@^0.1.9: - version "0.1.13" - resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz" - integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA== - -tslib@^2.1.0: - version "2.8.1" - resolved "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz" - integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -typescript-eslint@^8.14.0: - version "8.14.0" - resolved "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.14.0.tgz" - integrity sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w== - dependencies: - "@typescript-eslint/eslint-plugin" "8.14.0" - "@typescript-eslint/parser" "8.14.0" - "@typescript-eslint/utils" "8.14.0" - -typescript@^5.5.3: - version "5.6.2" - resolved "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz" - integrity sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw== - -undici-types@~7.8.0: - version "7.8.0" - resolved "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz" - integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== - -undici@^7.3.0: - version "7.3.0" - resolved "https://registry.npmjs.org/undici/-/undici-7.3.0.tgz" - integrity sha512-Qy96NND4Dou5jKoSJ2gm8ax8AJM/Ey9o9mz7KN1bb9GP+G0l20Zw8afxTnY2f4b7hmhn/z8aC2kfArVQlAhFBw== - -unhead@1.11.18: - version "1.11.18" - resolved "https://registry.npmjs.org/unhead/-/unhead-1.11.18.tgz" - integrity sha512-TWgGUoZMpYe2yJwY6jZ0/9kpQT18ygr2h5lI6cUXdfD9UzDc0ytM9jGaleSYkj9guJWXkk7izYBnzJvxl8mRvQ== - dependencies: - "@unhead/dom" "1.11.18" - "@unhead/schema" "1.11.18" - "@unhead/shared" "1.11.18" - hookable "^5.5.3" - -unist-util-is@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz" - integrity sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-position@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz" - integrity sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-stringify-position@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz" - integrity sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ== - dependencies: - "@types/unist" "^3.0.0" - -unist-util-visit-parents@^6.0.0: - version "6.0.1" - resolved "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz" - integrity sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - -unist-util-visit@^5.0.0: - version "5.0.0" - resolved "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz" - integrity sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg== - dependencies: - "@types/unist" "^3.0.0" - unist-util-is "^6.0.0" - unist-util-visit-parents "^6.0.0" - -universal-github-app-jwt@^2.2.0: - version "2.2.0" - resolved "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-2.2.0.tgz" - integrity sha512-G5o6f95b5BggDGuUfKDApKaCgNYy2x7OdHY0zSMF081O0EJobw+1130VONhrA7ezGSV2FNOGyM+KQpQZAr9bIQ== - -universal-user-agent@^7.0.0, universal-user-agent@^7.0.2: - version "7.0.2" - resolved "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz" - integrity sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q== - -update-browserslist-db@^1.1.0: - version "1.1.1" - resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz" - integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== - dependencies: - escalade "^3.2.0" - picocolors "^1.1.0" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" - integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== - -varint@^6.0.0: - version "6.0.0" - resolved "https://registry.npmjs.org/varint/-/varint-6.0.0.tgz" - integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg== - -vfile-message@^4.0.0: - version "4.0.2" - resolved "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz" - integrity sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw== - dependencies: - "@types/unist" "^3.0.0" - unist-util-stringify-position "^4.0.0" - -vfile@^6.0.0: - version "6.0.3" - resolved "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz" - integrity sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q== - dependencies: - "@types/unist" "^3.0.0" - vfile-message "^4.0.0" - -vite@^5.4.8: - version "5.4.14" - resolved "https://registry.npmjs.org/vite/-/vite-5.4.14.tgz" - integrity sha512-EK5cY7Q1D8JNhSaPKVK4pwBFvaTmZxEnoKXLG/U9gmdDcihQGNzFlgIvaxezFR4glP1LsuiedwMBqCXH3wZccA== - dependencies: - esbuild "^0.21.3" - postcss "^8.4.43" - rollup "^4.20.0" - optionalDependencies: - fsevents "~2.3.3" - -vscode-uri@^3.0.8: - version "3.0.8" - resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz" - integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw== - -vue-demi@>=0.14.10: - version "0.14.10" - resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz" - integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg== - -vue-eslint-parser@^9.4.3: - version "9.4.3" - resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz" - integrity sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg== - dependencies: - debug "^4.3.4" - eslint-scope "^7.1.1" - eslint-visitor-keys "^3.3.0" - espree "^9.3.1" - esquery "^1.4.0" - lodash "^4.17.21" - semver "^7.3.6" - -vue-i18n@10.0.5: - version "10.0.5" - resolved "https://registry.npmjs.org/vue-i18n/-/vue-i18n-10.0.5.tgz" - integrity sha512-9/gmDlCblz3i8ypu/afiIc/SUIfTTE1mr0mZhb9pk70xo2csHAM9mp2gdQ3KD2O0AM3Hz/5ypb+FycTj/lHlPQ== - dependencies: - "@intlify/core-base" "10.0.5" - "@intlify/shared" "10.0.5" - "@vue/devtools-api" "^6.5.0" - -vue-router@^4.5.0: - version "4.5.0" - resolved "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz" - integrity sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w== - dependencies: - "@vue/devtools-api" "^6.6.4" - -vue-tsc@^2.1.6: - version "2.1.6" - resolved "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.1.6.tgz" - integrity sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q== - dependencies: - "@volar/typescript" "~2.4.1" - "@vue/language-core" "2.1.6" - semver "^7.5.4" - -vue@^3.5.10: - version "3.5.11" - resolved "https://registry.npmjs.org/vue/-/vue-3.5.11.tgz" - integrity sha512-/8Wurrd9J3lb72FTQS7gRMNQD4nztTtKPmuDuPuhqXmmpD6+skVjAeahNpVzsuky6Sy9gy7wn8UadqPtt9SQIg== - dependencies: - "@vue/compiler-dom" "3.5.11" - "@vue/compiler-sfc" "3.5.11" - "@vue/runtime-dom" "3.5.11" - "@vue/server-renderer" "3.5.11" - "@vue/shared" "3.5.11" - -which@^2.0.1: - version "2.0.2" - resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -word-wrap@^1.2.5: - version "1.2.5" - resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz" - integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== - -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": - version "7.0.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^8.1.0: - version "8.1.0" - resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz" - integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ== - dependencies: - ansi-styles "^6.1.0" - string-width "^5.0.1" - strip-ansi "^7.0.1" - -xml-name-validator@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz" - integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== - -yaml@^2.3.4: - version "2.5.1" - resolved "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz" - integrity sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q== - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -zhead@^2.2.4: - version "2.2.4" - resolved "https://registry.npmjs.org/zhead/-/zhead-2.2.4.tgz" - integrity sha512-8F0OI5dpWIA5IGG5NHUg9staDwz/ZPxZtvGVf01j7vHqSyZ0raHY+78atOVxRqb73AotX22uV1pXt3gYSstGag== - -zwitch@^2.0.4: - version "2.0.4" - resolved "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz" - integrity sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A== From 87b373f127d4333ff867ffd82d5e314668b9cdd3 Mon Sep 17 00:00:00 2001 From: Maxdlr Date: Sat, 11 Oct 2025 20:45:26 +0200 Subject: [PATCH 2/7] :sparkles: tabs --- biome.json | 33 +--- biome.jsonc | 17 ++ .../photo-collections/minolta-01.jpg | Bin .../photo-collections/minolta-02.jpg | Bin .../photo-collections/minolta-03.jpg | Bin .../photo-collections/minolta-04.jpg | Bin .../photo-collections/minolta-05.jpg | Bin .../photo-collections/minolta-06.jpg | Bin .../photo-collections/minolta-07.jpg | Bin .../photo-collections/minolta-08.jpg | Bin .../photo-collections/minolta-09.jpg | Bin .../photo-collections/minolta-10.jpg | Bin .../photo-collections/misc-01.jpg | Bin .../photo-collections/misc-02.jpg | Bin .../photo-collections/misc-03.jpg | Bin .../photo-collections/misc-04.jpg | Bin .../photo-collections/misc-05.jpg | Bin .../photo-collections/misc-06.jpg | Bin .../photo-collections/stranger-01.jpg | Bin .../photo-collections/stranger-02.jpg | Bin .../photo-collections/stranger-03.jpg | Bin .../photo-collections/stranger-04.jpg | Bin .../photo-collections/stranger-05.jpg | Bin .../photo-collections/stranger-06.jpg | Bin .../photo-collections/stranger-07.jpg | Bin .../photo-collections/stranger-08.jpg | Bin .../photo-collections/stranger-09.jpg | Bin .../photo-collections/stranger-10.jpg | Bin .../photo-collections/stranger-11.jpg | Bin .../photo-collections/widelux-01.jpg | Bin .../photo-collections/widelux-02.jpg | Bin src/app/api/photos/route.ts | 29 +++ src/app/layout.tsx | 16 +- src/app/page.tsx | 182 ++++++++---------- src/components/Button/Button.tsx | 21 ++ src/components/Dev/Dev.tsx | 5 + src/components/Landing/Landing.tsx | 5 + src/components/Motion/Motion.tsx | 5 + src/components/Photos/Photos.tsx | 56 ++++++ 39 files changed, 227 insertions(+), 142 deletions(-) create mode 100644 biome.jsonc rename {old/public => public}/photo-collections/minolta-01.jpg (100%) rename {old/public => public}/photo-collections/minolta-02.jpg (100%) rename {old/public => public}/photo-collections/minolta-03.jpg (100%) rename {old/public => public}/photo-collections/minolta-04.jpg (100%) rename {old/public => public}/photo-collections/minolta-05.jpg (100%) rename {old/public => public}/photo-collections/minolta-06.jpg (100%) rename {old/public => public}/photo-collections/minolta-07.jpg (100%) rename {old/public => public}/photo-collections/minolta-08.jpg (100%) rename {old/public => public}/photo-collections/minolta-09.jpg (100%) rename {old/public => public}/photo-collections/minolta-10.jpg (100%) rename {old/public => public}/photo-collections/misc-01.jpg (100%) rename {old/public => public}/photo-collections/misc-02.jpg (100%) rename {old/public => public}/photo-collections/misc-03.jpg (100%) rename {old/public => public}/photo-collections/misc-04.jpg (100%) rename {old/public => public}/photo-collections/misc-05.jpg (100%) rename {old/public => public}/photo-collections/misc-06.jpg (100%) rename {old/public => public}/photo-collections/stranger-01.jpg (100%) rename {old/public => public}/photo-collections/stranger-02.jpg (100%) rename {old/public => public}/photo-collections/stranger-03.jpg (100%) rename {old/public => public}/photo-collections/stranger-04.jpg (100%) rename {old/public => public}/photo-collections/stranger-05.jpg (100%) rename {old/public => public}/photo-collections/stranger-06.jpg (100%) rename {old/public => public}/photo-collections/stranger-07.jpg (100%) rename {old/public => public}/photo-collections/stranger-08.jpg (100%) rename {old/public => public}/photo-collections/stranger-09.jpg (100%) rename {old/public => public}/photo-collections/stranger-10.jpg (100%) rename {old/public => public}/photo-collections/stranger-11.jpg (100%) rename {old/public => public}/photo-collections/widelux-01.jpg (100%) rename {old/public => public}/photo-collections/widelux-02.jpg (100%) create mode 100644 src/app/api/photos/route.ts create mode 100644 src/components/Button/Button.tsx create mode 100644 src/components/Dev/Dev.tsx create mode 100644 src/components/Landing/Landing.tsx create mode 100644 src/components/Motion/Motion.tsx create mode 100644 src/components/Photos/Photos.tsx diff --git a/biome.json b/biome.json index 41b3b952..e69d1175 100644 --- a/biome.json +++ b/biome.json @@ -1,37 +1,12 @@ { - "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json", - "vcs": { - "enabled": true, - "clientKind": "git", - "useIgnoreFile": true - }, - "files": { - "ignoreUnknown": true, - "includes": ["**", "!node_modules", "!.next", "!dist", "!build"] - }, + "$schema": "https://biomejs.dev/schemas/2.0.5/schema.json", "formatter": { - "enabled": true, - "indentStyle": "space", - "indentWidth": 2 + "enabled": false }, "linter": { - "enabled": true, - "rules": { - "recommended": true, - "suspicious": { - "noUnknownAtRules": "off" - } - }, - "domains": { - "next": "recommended", - "react": "recommended" - } + "enabled": false }, "assist": { - "actions": { - "source": { - "organizeImports": "on" - } - } + "enabled": false } } diff --git a/biome.jsonc b/biome.jsonc new file mode 100644 index 00000000..516d9f8c --- /dev/null +++ b/biome.jsonc @@ -0,0 +1,17 @@ +{ + "formatter": { + "indentStyle": "space", // default is `tab` + "lineWidth": 100, // default is `80` + }, + "javascript": { + "formatter": { + "quoteStyle": "single", // default is `double` + "lineWidth": 120, // override `formatter.lineWidth` + }, + }, + "json": { + "formatter": { + "enabled": false, + }, + }, +} diff --git a/old/public/photo-collections/minolta-01.jpg b/public/photo-collections/minolta-01.jpg similarity index 100% rename from old/public/photo-collections/minolta-01.jpg rename to public/photo-collections/minolta-01.jpg diff --git a/old/public/photo-collections/minolta-02.jpg b/public/photo-collections/minolta-02.jpg similarity index 100% rename from old/public/photo-collections/minolta-02.jpg rename to public/photo-collections/minolta-02.jpg diff --git a/old/public/photo-collections/minolta-03.jpg b/public/photo-collections/minolta-03.jpg similarity index 100% rename from old/public/photo-collections/minolta-03.jpg rename to public/photo-collections/minolta-03.jpg diff --git a/old/public/photo-collections/minolta-04.jpg b/public/photo-collections/minolta-04.jpg similarity index 100% rename from old/public/photo-collections/minolta-04.jpg rename to public/photo-collections/minolta-04.jpg diff --git a/old/public/photo-collections/minolta-05.jpg b/public/photo-collections/minolta-05.jpg similarity index 100% rename from old/public/photo-collections/minolta-05.jpg rename to public/photo-collections/minolta-05.jpg diff --git a/old/public/photo-collections/minolta-06.jpg b/public/photo-collections/minolta-06.jpg similarity index 100% rename from old/public/photo-collections/minolta-06.jpg rename to public/photo-collections/minolta-06.jpg diff --git a/old/public/photo-collections/minolta-07.jpg b/public/photo-collections/minolta-07.jpg similarity index 100% rename from old/public/photo-collections/minolta-07.jpg rename to public/photo-collections/minolta-07.jpg diff --git a/old/public/photo-collections/minolta-08.jpg b/public/photo-collections/minolta-08.jpg similarity index 100% rename from old/public/photo-collections/minolta-08.jpg rename to public/photo-collections/minolta-08.jpg diff --git a/old/public/photo-collections/minolta-09.jpg b/public/photo-collections/minolta-09.jpg similarity index 100% rename from old/public/photo-collections/minolta-09.jpg rename to public/photo-collections/minolta-09.jpg diff --git a/old/public/photo-collections/minolta-10.jpg b/public/photo-collections/minolta-10.jpg similarity index 100% rename from old/public/photo-collections/minolta-10.jpg rename to public/photo-collections/minolta-10.jpg diff --git a/old/public/photo-collections/misc-01.jpg b/public/photo-collections/misc-01.jpg similarity index 100% rename from old/public/photo-collections/misc-01.jpg rename to public/photo-collections/misc-01.jpg diff --git a/old/public/photo-collections/misc-02.jpg b/public/photo-collections/misc-02.jpg similarity index 100% rename from old/public/photo-collections/misc-02.jpg rename to public/photo-collections/misc-02.jpg diff --git a/old/public/photo-collections/misc-03.jpg b/public/photo-collections/misc-03.jpg similarity index 100% rename from old/public/photo-collections/misc-03.jpg rename to public/photo-collections/misc-03.jpg diff --git a/old/public/photo-collections/misc-04.jpg b/public/photo-collections/misc-04.jpg similarity index 100% rename from old/public/photo-collections/misc-04.jpg rename to public/photo-collections/misc-04.jpg diff --git a/old/public/photo-collections/misc-05.jpg b/public/photo-collections/misc-05.jpg similarity index 100% rename from old/public/photo-collections/misc-05.jpg rename to public/photo-collections/misc-05.jpg diff --git a/old/public/photo-collections/misc-06.jpg b/public/photo-collections/misc-06.jpg similarity index 100% rename from old/public/photo-collections/misc-06.jpg rename to public/photo-collections/misc-06.jpg diff --git a/old/public/photo-collections/stranger-01.jpg b/public/photo-collections/stranger-01.jpg similarity index 100% rename from old/public/photo-collections/stranger-01.jpg rename to public/photo-collections/stranger-01.jpg diff --git a/old/public/photo-collections/stranger-02.jpg b/public/photo-collections/stranger-02.jpg similarity index 100% rename from old/public/photo-collections/stranger-02.jpg rename to public/photo-collections/stranger-02.jpg diff --git a/old/public/photo-collections/stranger-03.jpg b/public/photo-collections/stranger-03.jpg similarity index 100% rename from old/public/photo-collections/stranger-03.jpg rename to public/photo-collections/stranger-03.jpg diff --git a/old/public/photo-collections/stranger-04.jpg b/public/photo-collections/stranger-04.jpg similarity index 100% rename from old/public/photo-collections/stranger-04.jpg rename to public/photo-collections/stranger-04.jpg diff --git a/old/public/photo-collections/stranger-05.jpg b/public/photo-collections/stranger-05.jpg similarity index 100% rename from old/public/photo-collections/stranger-05.jpg rename to public/photo-collections/stranger-05.jpg diff --git a/old/public/photo-collections/stranger-06.jpg b/public/photo-collections/stranger-06.jpg similarity index 100% rename from old/public/photo-collections/stranger-06.jpg rename to public/photo-collections/stranger-06.jpg diff --git a/old/public/photo-collections/stranger-07.jpg b/public/photo-collections/stranger-07.jpg similarity index 100% rename from old/public/photo-collections/stranger-07.jpg rename to public/photo-collections/stranger-07.jpg diff --git a/old/public/photo-collections/stranger-08.jpg b/public/photo-collections/stranger-08.jpg similarity index 100% rename from old/public/photo-collections/stranger-08.jpg rename to public/photo-collections/stranger-08.jpg diff --git a/old/public/photo-collections/stranger-09.jpg b/public/photo-collections/stranger-09.jpg similarity index 100% rename from old/public/photo-collections/stranger-09.jpg rename to public/photo-collections/stranger-09.jpg diff --git a/old/public/photo-collections/stranger-10.jpg b/public/photo-collections/stranger-10.jpg similarity index 100% rename from old/public/photo-collections/stranger-10.jpg rename to public/photo-collections/stranger-10.jpg diff --git a/old/public/photo-collections/stranger-11.jpg b/public/photo-collections/stranger-11.jpg similarity index 100% rename from old/public/photo-collections/stranger-11.jpg rename to public/photo-collections/stranger-11.jpg diff --git a/old/public/photo-collections/widelux-01.jpg b/public/photo-collections/widelux-01.jpg similarity index 100% rename from old/public/photo-collections/widelux-01.jpg rename to public/photo-collections/widelux-01.jpg diff --git a/old/public/photo-collections/widelux-02.jpg b/public/photo-collections/widelux-02.jpg similarity index 100% rename from old/public/photo-collections/widelux-02.jpg rename to public/photo-collections/widelux-02.jpg diff --git a/src/app/api/photos/route.ts b/src/app/api/photos/route.ts new file mode 100644 index 00000000..55cc0fda --- /dev/null +++ b/src/app/api/photos/route.ts @@ -0,0 +1,29 @@ +import { readdir } from "fs/promises"; +import path from "path"; + +export interface Photo { + path: string; + category: string; + alt: string; +} + +export async function GET() { + const dir = path.join(process.cwd(), "public/photo-collections"); + const files = await readdir(dir); + + const photoCollection: Photo[] = []; + const regex = /^([a-zA-Z0-9_-]+)-\d+\.\w+$/; + + files.forEach((file: string) => { + const match = file.match(regex); + if (match) { + photoCollection.push({ + path: "/photo-collections/" + file, + category: match[1], + alt: match[1], + }); + } + }); + + return Response.json(photoCollection); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index f7fa87eb..a910f9e5 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,16 +1,8 @@ import type { Metadata } from "next"; -import { Geist, Geist_Mono } from "next/font/google"; +import { Anton } from "next/font/google"; import "./globals.css"; -const geistSans = Geist({ - variable: "--font-geist-sans", - subsets: ["latin"], -}); - -const geistMono = Geist_Mono({ - variable: "--font-geist-mono", - subsets: ["latin"], -}); +const geistSans = Anton({ weight: "400" }); export const metadata: Metadata = { title: "Create Next App", @@ -24,9 +16,7 @@ export default function RootLayout({ }>) { return ( - + {children} diff --git a/src/app/page.tsx b/src/app/page.tsx index a9328942..c174d941 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,103 +1,85 @@ -import Image from "next/image"; +"use client"; +import Button from "@/components/Button/Button"; +import Dev from "@/components/Dev/Dev"; +import Landing from "@/components/Landing/Landing"; +import Motion from "@/components/Motion/Motion"; +import Photos from "@/components/Photos/Photos"; +import { useState } from "react"; -export default function Home() { - return ( -
-
- Next.js logo -
    -
  1. - Get started by editing{" "} - - src/app/page.tsx - - . -
  2. -
  3. - Save and see your changes instantly. -
  4. -
+interface Tab { + label: string; + hash: string; + url?: string; +} - -
- -
- ); +interface Tabs { + [key: string]: Tab; } + +const Home = () => { + const tabs: Tabs = { + home: { label: "Home", hash: "home" }, + motion: { label: "Motion", hash: "motion" }, + dev: { label: "Dev", hash: "dev" }, + photos: { label: "Photos", hash: "photos" }, + }; + + let hash: string; + if (location) { + hash = location.hash.replace("#", "").toLowerCase(); + } else { + hash = "home"; + } + + const [currentTab, setCurrentTab] = useState( + Object.values(tabs).find((t: Tab) => t.hash === hash) || tabs.home, + ); + + console.log(window.location.pathname); + + const handleTabSelect = (tab: Tab) => { + setCurrentTab(tab); + window.location.hash = tab.hash; + }; + + const TabContent = () => { + switch (currentTab?.label) { + case tabs.home.label: + return Landing(); + case tabs.motion.label: + return Motion(); + case tabs.dev.label: + return Dev(); + case tabs.photos.label: + return Photos(); + default: + return Landing(); + } + }; + + const Tab = (tab: Tab) => { + return ( + + ); + }; + + const RotatingButton = () => ( + - {label} - + + ); + + return rotating ? : ; }; export default Button; diff --git a/src/components/Landing/Landing.tsx b/src/components/Landing/Landing.tsx index 3ee62423..5305b724 100644 --- a/src/components/Landing/Landing.tsx +++ b/src/components/Landing/Landing.tsx @@ -1,3 +1,9 @@ +import { Metadata } from "next"; + +export const metadata: Metadata = { + title: "Create Next App", + description: "Generated by create next app", +}; const Landing = () => { return "landing"; }; diff --git a/src/components/PhotoGallery/PhotoGallery.tsx b/src/components/PhotoGallery/PhotoGallery.tsx new file mode 100644 index 00000000..a8cc7f1c --- /dev/null +++ b/src/components/PhotoGallery/PhotoGallery.tsx @@ -0,0 +1,108 @@ +"use client"; + +import { Photo } from "@/app/api/photos/route"; +import { AnimatePresence, motion } from "framer-motion"; +import Image from "next/image"; +import { ReactElement } from "react"; +import useBreakpoint from "use-breakpoint"; +import Loading from "../loading/Loading"; +import { usePhotos } from "./PhotosContext"; +import PhotoShow from "./PhotoShow"; + +export interface PhotoProps { + photos: Photo[]; + loading: boolean; +} + +const PhotoGallery = ({ photos, loading }: PhotoProps) => { + const { shownPhoto, setShownPhoto } = usePhotos(); + + const BREAKPOINTS = { + base: 0, + sm: 640, + md: 768, + lg: 1024, + xl: 1280, + "2xl": 1536, + }; + const { breakpoint } = useBreakpoint(BREAKPOINTS); + + const photoElements = photos.map( + (photo): ReactElement => ( + + {photo.alt} setShownPhoto(photo)} + /> + + ), + ); + + const masonryGrid = (colsCount: number) => { + if (!photoElements.length) return null; + + const cols: ReactElement[][] = Array.from({ length: colsCount }, () => []); + photoElements.forEach((photoEl, i) => { + cols[i % colsCount].push(photoEl); + }); + + return ( +
+
+ {cols.map((col, i) => ( +
+ {col} +
+ ))} +
+
+ ); + }; + + const cols = + breakpoint === "xl" || breakpoint === "2xl" + ? 3 + : breakpoint === "lg" || breakpoint === "md" + ? 2 + : 1; + + return loading ? ( + + ) : ( + <> + + {masonryGrid(cols || 1)} + + ); +}; + +export default PhotoGallery; diff --git a/src/components/PhotoGallery/PhotoShow.tsx b/src/components/PhotoGallery/PhotoShow.tsx new file mode 100644 index 00000000..ced11a82 --- /dev/null +++ b/src/components/PhotoGallery/PhotoShow.tsx @@ -0,0 +1,63 @@ +import { Photo } from "@/app/api/photos/route"; +import { AnimatePresence, motion } from "framer-motion"; +import Image from "next/image"; +import { usePhotos } from "./PhotosContext"; + +interface PhotoShowProps { + photo?: Photo; +} + +const PhotoShow = ({ photo }: PhotoShowProps) => { + const { setShownPhoto } = usePhotos(); + const handleClickCapture = (event: any) => { + const isClickOutside = !!event.target.attributes["data-click-out"]; + if (isClickOutside) return setShownPhoto(undefined); + }; + return ( + photo && ( +
+
+ + + {photo.alt} + + +
+
+ ) + ); +}; +export default PhotoShow; diff --git a/src/components/PhotoGallery/PhotosContext.tsx b/src/components/PhotoGallery/PhotosContext.tsx new file mode 100644 index 00000000..ba3b846b --- /dev/null +++ b/src/components/PhotoGallery/PhotosContext.tsx @@ -0,0 +1,80 @@ +"use client"; + +import { + createContext, + useContext, + useEffect, + useState, + ReactNode, + Dispatch, + SetStateAction, +} from "react"; +import { Photo } from "@/app/api/photos/route"; + +interface PhotoContextType { + photos: Photo[]; + loading: boolean; + categories: string[]; + category: string; + setCategory: Dispatch>; + shownPhoto?: Photo; + setShownPhoto: Dispatch>; + refetch: () => Promise; +} + +const PhotoContext = createContext(undefined); + +export const PhotoProvider = ({ children }: { children: ReactNode }) => { + const [photos, setPhotos] = useState([]); + const [shownPhoto, setShownPhoto] = useState(); + const [loading, setLoading] = useState(true); + const [category, setCategory] = useState("all"); + + const fetchPhotos = async () => { + setLoading(true); + try { + const res = await fetch("/api/photos"); + const data = await res.json(); + setPhotos(data); + } catch (error) { + console.error("Error fetching photos:", error); + } finally { + setLoading(false); + } + }; + + useEffect(() => { + setTimeout(() => fetchPhotos(), 1000); + }, []); + + const categories = Array.from([ + "all", + ...new Set(photos.map((p) => p.category)), + ]); + + return ( + + {children} + + ); +}; + +// Custom hook for easy use +export const usePhotos = () => { + const context = useContext(PhotoContext); + if (!context) { + throw new Error("usePhotos must be used within a PhotoProvider"); + } + return context; +}; diff --git a/src/components/Photos/Photos.tsx b/src/components/Photos/Photos.tsx deleted file mode 100644 index 1f7ba052..00000000 --- a/src/components/Photos/Photos.tsx +++ /dev/null @@ -1,156 +0,0 @@ -"use client"; - -import { Photo } from "@/app/api/photos/route"; -import Image from "next/image"; -import { ReactElement, useEffect, useState } from "react"; -import Button from "../Button/Button"; -import { UrlParams } from "@/services/urlParams"; -import { AnimatePresence, motion } from "framer-motion"; -import useBreakpoint from "use-breakpoint"; - -const Photos = () => { - const [photos, setPhotos] = useState([]); - const [category, setCategory] = useState("all"); - const [isLoading, setIsLoading] = useState(true); - - const BREAKPOINTS = { - base: 0, - sm: 640, - md: 768, - lg: 1024, - xl: 1280, - "2xl": 1536, - }; - const { breakpoint } = useBreakpoint(BREAKPOINTS); - - useEffect(() => { - const fetchPhotos = async () => { - const res = await fetch("/api/photos"); - const data = await res.json(); - - const shuffled = data.sort(() => Math.random() - 0.5); - - setPhotos(shuffled); - - const catParam = UrlParams.get("cat"); - const validCategories = [ - "all", - ...new Set(data.map((p: Photo) => p.category)), - ]; - if (catParam && validCategories.includes(catParam)) { - setCategory(catParam); - } else { - setCategory("all"); - } - }; - setTimeout(() => { - fetchPhotos(); - setIsLoading(false); - }, 1000); - }, []); - - useEffect(() => { - const unsub = UrlParams.onChange(() => { - const newCat = UrlParams.get("cat") || "all"; - setCategory(newCat); - }); - return unsub; - }, []); - - const handleCategorySelect = (newCategory: string) => { - setCategory(newCategory); - UrlParams.set("cat", newCategory); - }; - - const filteredPhotos = - category === "all" ? photos : photos.filter((p) => p.category === category); - - const categories = Array.from([ - "all", - ...new Set(photos.map((p) => p.category)), - ]); - - const photoElements = filteredPhotos.map( - (photo): ReactElement => ( - - {photo.alt} - - ), - ); - - const masonryGrid = (colsCount: number) => { - if (!photoElements.length) return null; - - const cols: ReactElement[][] = Array.from({ length: colsCount }, () => []); - photoElements.forEach((photoEl, i) => { - cols[i % colsCount].push(photoEl); - }); - - return ( -
- {cols.map((col, i) => ( -
- {col} -
- ))} -
- ); - }; - - const cols = - breakpoint === "xl" || breakpoint === "2xl" - ? 3 - : breakpoint === "lg" || breakpoint === "md" - ? 2 - : 1; - - return ( - <> -
- {categories.map((cat) => ( -
- - {masonryGrid(cols || 1)} - - ); -}; - -export default Photos; diff --git a/src/components/icons/Icons.tsx b/src/components/icons/Icons.tsx new file mode 100644 index 00000000..893498c6 --- /dev/null +++ b/src/components/icons/Icons.tsx @@ -0,0 +1,96 @@ +export const CameraStroke = ( + + + + +); + +export const CameraFill = ( + + + + +); + +export const TagStroke = ( + + + +); + +export const TriangleStroke = ( + + + +); + +export const TriangleFill = ( + + + +); + +export const HouseStroke = ( + + + +); + +export const HouseFill = ( + + + + +); diff --git a/src/components/loading/Loading.tsx b/src/components/loading/Loading.tsx new file mode 100644 index 00000000..40c8fc9e --- /dev/null +++ b/src/components/loading/Loading.tsx @@ -0,0 +1,4 @@ +const Loading = () => { + return "loading"; +}; +export default Loading; diff --git a/src/components/tabs/Tabs.tsx b/src/components/tabs/Tabs.tsx new file mode 100644 index 00000000..68fe520f --- /dev/null +++ b/src/components/tabs/Tabs.tsx @@ -0,0 +1,36 @@ +"use client"; +import { useRouter } from "next/navigation"; +import Button from "../Button/Button"; +import { useTabs, Tab } from "@/components/tabs/TabsContext"; + +const Tabs = () => { + const router = useRouter(); + const { tab, setTab, tabs } = useTabs(); + + const handleTabSelect = (newTab: Tab) => { + setTab(newTab.label === "Dev" ? tab : newTab); + router.push(newTab.uri); + }; + + const Tab = (tabItem: Tab) => ( +