From 7fe9e8c25fc792964819c0ceaca65cd876d0133a Mon Sep 17 00:00:00 2001 From: Firq Date: Tue, 2 Jan 2024 23:19:14 +0100 Subject: [PATCH] Major rewrite for 0.1.6 - Dynamic database entry generation based on json files, dynamic run page generation and more --- .forgejo/workflows/build_release.yml | 8 +- .prettierignore | 5 + .prettierrc | 6 + .vscode/settings.json | 2 +- package-lock.json | 2265 +++++++++++++++++++++++++- package.json | 16 +- {static => src}/assets/embed.png | Bin {static => src}/assets/logo.svg | 0 src/assets/ta_servants/shishou.png | Bin 0 -> 31772 bytes src/components/hero.astro | 10 + src/components/navbar.astro | 31 +- src/components/navbarEntry.astro | 29 +- src/components/questListing.astro | 103 ++ src/components/taCard.astro | 184 +++ src/content/data/cernunnos.json | 26 + src/layouts/Layout.astro | 26 +- src/layouts/baseSection.astro | 24 +- src/layouts/databaseSection.astro | 100 ++ src/layouts/taShowcaseLayout.astro | 52 + src/pages/database.astro | 37 + src/pages/database/[slug].astro | 23 + src/types/icons.ts | 3 + src/types/ta.ts | 20 + src/utils/slugTools.ts | 3 + static/assets/data/_navdata.json | 7 - static/data/_navdata.json | 12 + static/{assets => }/favicon.ico | Bin static/robots.txt | 7 + 28 files changed, 2954 insertions(+), 45 deletions(-) create mode 100644 .prettierignore create mode 100644 .prettierrc rename {static => src}/assets/embed.png (100%) rename {static => src}/assets/logo.svg (100%) create mode 100644 src/assets/ta_servants/shishou.png create mode 100644 src/components/questListing.astro create mode 100644 src/components/taCard.astro create mode 100644 src/content/data/cernunnos.json create mode 100644 src/layouts/databaseSection.astro create mode 100644 src/layouts/taShowcaseLayout.astro create mode 100644 src/pages/database.astro create mode 100644 src/pages/database/[slug].astro create mode 100644 src/types/icons.ts create mode 100644 src/types/ta.ts create mode 100644 src/utils/slugTools.ts delete mode 100644 static/assets/data/_navdata.json create mode 100644 static/data/_navdata.json rename static/{assets => }/favicon.ico (100%) create mode 100644 static/robots.txt diff --git a/.forgejo/workflows/build_release.yml b/.forgejo/workflows/build_release.yml index 0939163..96b18f6 100644 --- a/.forgejo/workflows/build_release.yml +++ b/.forgejo/workflows/build_release.yml @@ -2,9 +2,7 @@ on: push: tags: - '[0-9]+\.[0-9]+\.[0-9]+' - - '[0-9]+\.[0-9]+\.[0-9]+a[0-9]+' - - '[0-9]+\.[0-9]+\.[0-9]+b[0-9]+' - - '[0-9]+\.[0-9]+\.[0-9]+rc[0-9]+' + - '[0-9]+\.[0-9]+\.[0-9]+pre[0-9]+' jobs: checking: @@ -25,6 +23,10 @@ jobs: steps: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + with: + config-inline: | + [registry."docker.io"] + mirrors = ["https://docker-cache.neshweb.net"] - name: Login to Docker Hub uses: docker/login-action@v3 with: diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..42b7fb8 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,5 @@ +**/.git +**/node_modules +**/.vscode +**/public +**/dist \ No newline at end of file diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..fbe0e55 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,6 @@ +{ + "trailingComma": "es5", + "tabWidth": 2, + "semi": false, + "singleQuote": true +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json index 3b2788d..3fb7158 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,7 +7,7 @@ "**/.DS_Store": true, "**/Thumbs.db": true, "**/__pycache__": true, - "**/node_modules": false + "**/node_modules": true }, "hide-files.files": [] } \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 125873b..0c1799a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,21 @@ { - "name": "fgo-ta.com-website", - "version": "0.1.1", + "name": "fgo-ta-com-website", + "version": "0.1.5", "lockfileVersion": 3, "requires": true, "packages": { "": { - "version": "0.1.1", + "name": "fgo-ta-com-website", + "version": "0.1.5", "dependencies": { + "@astro-community/astro-embed-youtube": "^0.4.3", + "@astrojs/check": "^0.3.4", "@astrojs/sitemap": "^3.0.3", - "astro": "^4.0.7" + "astro": "^4.0.7", + "autoprefixer": "^10.4.16", + "iconoir": "^7.3.0", + "postcss-preset-env": "^9.3.0", + "typescript": "^5.3.3" } }, "node_modules/@ampproject/remapping": { @@ -23,6 +30,35 @@ "node": ">=6.0.0" } }, + "node_modules/@astro-community/astro-embed-youtube": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@astro-community/astro-embed-youtube/-/astro-embed-youtube-0.4.3.tgz", + "integrity": "sha512-zXtPmR9yxrTo6cuLhH8v+r62bsXbsLJgsU2FiZalPr4bXJxAUQEIlG46S/qK0AEXi9uNShKqy4+zBaJ98xTVEg==", + "dependencies": { + "lite-youtube-embed": "^0.2.0" + }, + "peerDependencies": { + "astro": "^2.0.0 || ^3.0.0-beta || ^4.0.0-beta" + } + }, + "node_modules/@astrojs/check": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@astrojs/check/-/check-0.3.4.tgz", + "integrity": "sha512-Wi4KwW38J3GCd/U6LH2UuU4uc4P/K1WYaqhoKm2o7rVoGhQfO+RWrSO26rUPRXYbmae8JugAgpCmsHC8bt5RlA==", + "dependencies": { + "@astrojs/language-server": "^2.5.5", + "chokidar": "^3.5.3", + "fast-glob": "^3.3.1", + "kleur": "^4.1.5", + "yargs": "^17.7.2" + }, + "bin": { + "astro-check": "dist/bin.js" + }, + "peerDependencies": { + "typescript": "^5.0.0" + } + }, "node_modules/@astrojs/compiler": { "version": "2.3.4", "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.3.4.tgz", @@ -33,6 +69,46 @@ "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.2.1.tgz", "integrity": "sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A==" }, + "node_modules/@astrojs/language-server": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/@astrojs/language-server/-/language-server-2.5.5.tgz", + "integrity": "sha512-hk7a8S7bpf//BOA6mMjiYqi/eiYtGPfUfw59eVXdutdRFdwDHtu4jcsLu43ZaId56pAcE8qFjIvJxySvzcxiUA==", + "dependencies": { + "@astrojs/compiler": "^2.2.2", + "@jridgewell/sourcemap-codec": "^1.4.15", + "@volar/kit": "~1.10.9", + "@volar/language-core": "~1.10.9", + "@volar/language-server": "~1.10.9", + "@volar/language-service": "~1.10.9", + "@volar/source-map": "~1.10.9", + "@volar/typescript": "~1.10.9", + "fast-glob": "^3.2.12", + "muggle-string": "^0.3.1", + "volar-service-css": "0.0.16", + "volar-service-emmet": "0.0.16", + "volar-service-html": "0.0.16", + "volar-service-prettier": "0.0.16", + "volar-service-typescript": "0.0.16", + "volar-service-typescript-twoslash-queries": "0.0.16", + "vscode-html-languageservice": "^5.1.0", + "vscode-uri": "^3.0.8" + }, + "bin": { + "astro-ls": "bin/nodeServer.js" + }, + "peerDependencies": { + "prettier": "^3.0.0", + "prettier-plugin-astro": ">=0.11.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + }, + "prettier-plugin-astro": { + "optional": true + } + } + }, "node_modules/@astrojs/markdown-remark": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-4.0.1.tgz", @@ -439,6 +515,888 @@ "node": ">=6.9.0" } }, + "node_modules/@csstools/cascade-layer-name-parser": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.6.tgz", + "integrity": "sha512-HkxRNs6ZIV0VjLFw6k5G8K35vd9r+O8B1Vr+QVD8M5Y44eQxyHtc42BdF74FQatXACPnitOR1+sRx2oWdnKTQw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/color-helpers": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.0.0.tgz", + "integrity": "sha512-wjyXB22/h2OvxAr3jldPB7R7kjTUEzopvjitS8jWtyd8fN6xJ8vy1HnHu0ZNfEkqpBJgQ76Q+sBDshWcMvTa/w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/css-calc": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.1.5.tgz", + "integrity": "sha512-UhI5oSRAUtTHY3MyGahqn0ZzQOHVoPpfvUcOmYipAZ1rILAvCBoyiLSsa/clv1Xxct0SMKIq93KO5Bfl1cb6tQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/css-color-parser": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-1.5.0.tgz", + "integrity": "sha512-PUhSg1MgU2sjYhA6moOmxYesqVqYTJwcVw12boTNbDX7Af+VK02MkgvmBBY2Z2qU6UN5HOQ+wrF0qQJGsTFY7w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^4.0.0", + "@csstools/css-calc": "^1.1.5" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.4.0.tgz", + "integrity": "sha512-/PPLr2g5PAUCKAPEbfyk6/baZA+WJHQtUhPkoCQMpyRE8I0lXrG1QFRN8e5s3ZYxM8d/g5BZc6lH3s8Op7/VEg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.2.tgz", + "integrity": "sha512-wCDUe/MAw7npAHFLyW3QjSyLA66S5QFaV1jIXlNQvdJ8RzXDSgALa49eWcUO6P55ARQaz0TsDdAgdRgkXFYY8g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.6.tgz", + "integrity": "sha512-R6AKl9vaU0It7D7TR2lQn0pre5aQfdeqHRePlaRCY8rHL3l9eVlNRpsEVDKFi/zAjzv68CxH2M5kqbhPFPKjvw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-4.0.2.tgz", + "integrity": "sha512-PqM+jvg5T2tB4FHX+akrMGNWAygLupD4FNUjcv4PSvtVuWZ6ISxuo37m4jFGU7Jg3rCfloGzKd0+xfr5Ec3vZQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-3.0.8.tgz", + "integrity": "sha512-jvbF7eCRbIcxWqby0kk2Mt85QtGzRRpFFYdlJCJ80Tuiv43PY+auS/nBl8pDQQ4Ndm4vsm4IC/wCZDcJUmpJmg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-color-mix-function": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-2.0.8.tgz", + "integrity": "sha512-sGhk+TdZ2TeXspc6LSYSYC8WgzLlxoknUaObKgB0mk+dNjRQgSSIeCU+qrCwvHmwM+uTNKtiS8mntDzyQLHTTA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-exponential-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-1.0.2.tgz", + "integrity": "sha512-VRIYrwNCkZRqzsGB4jGT+XcNXsoiwyqy0Vf7C3I/5OPcf7WcWK3G1sBYFqqgWLGtpwc7m1m8TcorGY1xdh5abg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-3.0.1.tgz", + "integrity": "sha512-D1lcG2sfotTq6yBEOMV3myFxJLT10F3DLYZJMbiny5YToqzHWodZen8WId3UTimm0mEHitXqAUNL5jdd6RzVdA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gamut-mapping": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-1.0.1.tgz", + "integrity": "sha512-GDVzfNbnc7x3GusFklvt0mYXIWVzxEtEtTFEW664NgZh/5V7Z89hZKBMl9piOAHXuxijfHtE+kul/ShfeLUvcA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-gradients-interpolation-method": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-4.0.8.tgz", + "integrity": "sha512-bmvCNzuUvWPPdgASh0T14ffTay/FdzXsXfp0wXT1pYoUPmkH9M6yyxwPEkHq5djjzSb2jiLl4Ta3XM1uOREQ2w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-3.0.7.tgz", + "integrity": "sha512-iXs1gxKtev8YNP5bOF26TAsnMfcxnCRLpKItQ067RphYECKEK/xWm4Z0r4ChmV1U1eq+lbdH5ZIb2cju4o5akA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-3.0.3.tgz", + "integrity": "sha512-MpcmIL0/uMm/cFWh5V/9nbKKJ7jRr2qTYW5Q6zoE6HZ6uzOBJr2KRERv5/x8xzEBQ1MthDT7iP1EBp9luSQy7g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^3.0.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-initial/-/postcss-initial-1.0.1.tgz", + "integrity": "sha512-wtb+IbUIrIf8CrN6MLQuFR7nlU5C7PwuebfeEXfjthUha1+XZj2RVi+5k/lukToA24sZkYAiSJfHM8uG/UZIdg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-4.0.4.tgz", + "integrity": "sha512-vTVO/uZixpTVAOQt3qZRUFJ/K1L03OfNkeJ8sFNDVNdVy/zW0h1L5WT7HIPMDUkvSrxQkFaCCybTZkUP7UESlQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-float-and-clear": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-2.0.1.tgz", + "integrity": "sha512-SsrWUNaXKr+e/Uo4R/uIsqJYt3DaggIh/jyZdhy/q8fECoJSKsSMr7nObSLdvoULB69Zb6Bs+sefEIoMG/YfOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overflow": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overflow/-/postcss-logical-overflow-1.0.1.tgz", + "integrity": "sha512-Kl4lAbMg0iyztEzDhZuQw8Sj9r2uqFDcU1IPl+AAt2nue8K/f1i7ElvKtXkjhIAmKiy5h2EY8Gt/Cqg0pYFDCw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-overscroll-behavior": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-overscroll-behavior/-/postcss-logical-overscroll-behavior-1.0.1.tgz", + "integrity": "sha512-+kHamNxAnX8ojPCtV8WPcUP3XcqMFBSDuBuvT6MHgq7oX4IQxLIXKx64t7g9LiuJzE7vd06Q9qUYR6bh4YnGpQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-resize": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-2.0.1.tgz", + "integrity": "sha512-W5Gtwz7oIuFcKa5SmBjQ2uxr8ZoL7M2bkoIf0T1WeNqljMkBrfw1DDA8/J83k57NQ1kcweJEjkJ04pUkmyee3A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-logical-viewport-units": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-2.0.4.tgz", + "integrity": "sha512-jetp/ArGAniWbjWBh5UQ07ztawfSbqCFd0QelX4R4pVIxrXahUEhz5VZHebMPVCg02J8GsQn0br6fdRpY6t7lw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-minmax": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.1.tgz", + "integrity": "sha512-mBY46/Hr+A8cDjoX0OoPRBOVrkANym9540dSB9rN3dllPZdM1E112i/tVxWsrR1s1yE9gfF0pk+7lf9l+qSeHA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/media-query-list-parser": "^2.1.6" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-2.0.4.tgz", + "integrity": "sha512-IaIZZhH0Qy9UDn7u+N3cuwwPG0Po3ZKOdDh+ClR7xvisSqniG+PuVrOEWYJrFKOt2//UHLhd7KHDqr2u9LKS9Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/media-query-list-parser": "^2.1.6" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-3.0.1.tgz", + "integrity": "sha512-bwwababZpWRm0ByHaWBxTsDGTMhZKmtUNl3Wt0Eom8AY7ORgXx5qF9SSk1vEFrCi+HOfJT6M6W5KPgzXuQNRwQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-3.0.2.tgz", + "integrity": "sha512-fCapyyT/dUdyPtrelQSIV+d5HqtTgnNP/BEG9IuhgXHt93Wc4CfC1bQ55GzKAjWrZbgakMQ7MLfCXEf3rlZJOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-3.0.8.tgz", + "integrity": "sha512-L4xrwbgg+k08v+a88LDxJeIM6+kqaBJlYb/QgmEMfQpUbrfXTp87DuRc7utcRdDvY+qWK5vqz3h1xUtceB5LJQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-3.0.3.tgz", + "integrity": "sha512-WipTVh6JTMQfeIrzDV4wEPsV9NTzMK2jwXxyH6CGBktuWdivHnkioP/smp1x/0QDPQyx7NTS14RB+GV3zZZYEw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-relative-color-syntax": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-2.0.8.tgz", + "integrity": "sha512-wu/Oh7QKINpRXnmLMUbObVNlqwr843PSF4a3x3fMC0I+vUeoGqMfZuSPFtT+NnYYxfzUjEZ091GURPxee22VLQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-scope-pseudo-class": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-3.0.1.tgz", + "integrity": "sha512-3ZFonK2gfgqg29gUJ2w7xVw2wFJ1eNWVDONjbzGkm73gJHVCYK5fnCqlLr+N+KbEfv2XbWAO0AaOJCFB6Fer6A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-3.0.3.tgz", + "integrity": "sha512-hzo9Wr3u7JJiM65/EyHgE/gJpBzhDwBSGOobFs2YQ0ZNTywUliYQoYJud1KKlByMRuhqvDLh9V95eIkLf/fZTQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-3.0.4.tgz", + "integrity": "sha512-yUZmbnUemgQmja7SpOZeU45+P49wNEgQguRdyTktFkZsHf7Gof+ZIYfvF6Cm+LsU1PwSupy4yUeEKKjX5+k6cQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/color-helpers": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-3.0.3.tgz", + "integrity": "sha512-T/npTbDuMZ3vktEMuA05p1oeVd12Sy47qZP1vFhzNMUOdXGCK9vlm0tUSIlV5DdlbTJqKqq9FhGitZH9VTKrfQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-calc": "^1.1.5", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-3.0.1.tgz", + "integrity": "sha512-dbDnZ2ja2U8mbPP0Hvmt2RMEGBiF1H7oY6HYSpjteXJGihYwgxgTr6KRbbJ/V6c+4wd51M+9980qG4gKVn5ttg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.1.tgz", + "integrity": "sha512-NPljRHkq4a14YzZ3YD406uaxh7s0g6eAq3L9aLOWywoqe8PkYamAvtsh7KNX6c++ihDrJ0RiU+/z7rGnhlZ5ww==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/@emmetio/abbreviation": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", + "integrity": "sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==", + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/css-abbreviation": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@emmetio/css-abbreviation/-/css-abbreviation-2.1.8.tgz", + "integrity": "sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==", + "dependencies": { + "@emmetio/scanner": "^1.0.4" + } + }, + "node_modules/@emmetio/scanner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@emmetio/scanner/-/scanner-1.0.4.tgz", + "integrity": "sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.19.10", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.10.tgz", @@ -1127,6 +2085,96 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, + "node_modules/@volar/kit": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/kit/-/kit-1.10.10.tgz", + "integrity": "sha512-V2SyUPCPUhueqH8j5t48LJ0QsjExGSXzTv/XOdkUHV7hJ/ekyRGFqKxcfBtMq/nK6Tgu2G1ba+6u0d7e6wKcQw==", + "dependencies": { + "@volar/language-service": "1.10.10", + "typesafe-path": "^0.2.2", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "typescript": "*" + } + }, + "node_modules/@volar/language-core": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-1.10.10.tgz", + "integrity": "sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==", + "dependencies": { + "@volar/source-map": "1.10.10" + } + }, + "node_modules/@volar/language-server": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/language-server/-/language-server-1.10.10.tgz", + "integrity": "sha512-F2PRBU+CRjT7L9qe8bjof/uz/LbAXVmgwNU2gOSX2y1bUl3E8DHmD0dB6pwIVublvkx+Ivg/0r3Z6oyxfPPruQ==", + "dependencies": { + "@volar/language-core": "1.10.10", + "@volar/language-service": "1.10.10", + "@volar/typescript": "1.10.10", + "@vscode/l10n": "^0.0.16", + "path-browserify": "^1.0.1", + "request-light": "^0.7.0", + "vscode-languageserver": "^9.0.1", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/language-service": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/language-service/-/language-service-1.10.10.tgz", + "integrity": "sha512-P4fiPWDI6fLGO6BghlksCVHs1nr9gvWAMDyma3Bca4aowxXusxjUVTsnJq0EVorIN5uIr1Xel4B/tNdXt/IKyw==", + "dependencies": { + "@volar/language-core": "1.10.10", + "@volar/source-map": "1.10.10", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@volar/source-map": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-1.10.10.tgz", + "integrity": "sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==", + "dependencies": { + "muggle-string": "^0.3.1" + } + }, + "node_modules/@volar/typescript": { + "version": "1.10.10", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-1.10.10.tgz", + "integrity": "sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==", + "dependencies": { + "@volar/language-core": "1.10.10", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@vscode/emmet-helper": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.9.2.tgz", + "integrity": "sha512-MaGuyW+fa13q3aYsluKqclmh62Hgp0BpKIqS66fCxfOaBcVQ1OnMQxRRgQUYnCkxFISAQlkJ0qWWPyXjro1Qrg==", + "dependencies": { + "emmet": "^2.4.3", + "jsonc-parser": "^2.3.0", + "vscode-languageserver-textdocument": "^1.0.1", + "vscode-languageserver-types": "^3.15.1", + "vscode-uri": "^2.1.2" + } + }, + "node_modules/@vscode/emmet-helper/node_modules/vscode-uri": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-2.1.2.tgz", + "integrity": "sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==" + }, + "node_modules/@vscode/l10n": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.16.tgz", + "integrity": "sha512-JT5CvrIYYCrmB+dCana8sUqJEcGB1ZDXNLMQ2+42bW995WmNoenijWMUdZfwmuQUTQcEVVIa2OecZzTYWUW9Cg==" + }, "node_modules/acorn": { "version": "8.11.2", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", @@ -1391,6 +2439,42 @@ } } }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, "node_modules/b4a": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", @@ -1727,6 +2811,102 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "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" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "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" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/cliui/node_modules/string-width": { + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clsx": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", @@ -1829,6 +3009,103 @@ "node": ">= 8" } }, + "node_modules/css-blank-pseudo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-6.0.1.tgz", + "integrity": "sha512-goSnEITByxTzU4Oh5oJZrEWudxTqk7L6IXj1UW69pO6Hv0UdX+Vsrt02FFu5DweRh2bLu6WpX/+zsQCu5O1gKw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-6.0.1.tgz", + "integrity": "sha512-WwoVKqNxApfEI7dWFyaHoeFCcUPD+lPyjL6lNpRUNX7IyIUuVpawOTwwA5D0ZR6V2xQZonNPVj8kEcxzEaAQfQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-9.0.1.tgz", + "integrity": "sha512-iFit06ochwCKPRiWagbTa1OAWCvWWVdEnIFd8BaRrgO8YrrNh4RAWUQTFcYX5tdFZgFl1DJ3iiULchZyEbnF4g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/cssdb": { + "version": "7.10.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.10.0.tgz", + "integrity": "sha512-yGZ5tmA57gWh/uvdQBHs45wwFY0IBh3ypABk5sEubPBPSzXzkNgsWReqx7gdx6uhC+QoFBe+V8JwBB9/hQ6cIA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + } + ] + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1957,6 +3234,15 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.615.tgz", "integrity": "sha512-/bKPPcgZVUziECqDc+0HkT87+0zhaWSZHNXqF8FLd2lQcptpmUFwoCSWjCdOng9Gdq+afKArPdEg/0ZW461Eng==" }, + "node_modules/emmet": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.6.tgz", + "integrity": "sha512-dJfbdY/hfeTyf/Ef7Y7ubLYzkBvPQ912wPaeVYpAxvFxkEBf/+hJu4H6vhAvFN6HlxqedlfVn2x1S44FfQ97pg==", + "dependencies": { + "@emmetio/abbreviation": "^2.3.3", + "@emmetio/css-abbreviation": "^2.1.8" + } + }, "node_modules/emoji-regex": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", @@ -2184,6 +3470,18 @@ "node": ">=8" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -2219,6 +3517,14 @@ "node": ">=6.9.0" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-east-asian-width": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", @@ -2497,6 +3803,15 @@ "node": ">=16.17.0" } }, + "node_modules/iconoir": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/iconoir/-/iconoir-7.3.0.tgz", + "integrity": "sha512-e/Kop2l4Hsc2Aq95paLAP1rHVTpIxVcKV/G/hMOd3GzFI/vIYEYYRSef/HDC7Ru1rH7KP7BFGuCO5FeLLP5wEA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/iconoir" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -2772,6 +4087,11 @@ "node": ">=6" } }, + "node_modules/jsonc-parser": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", + "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -2788,6 +4108,11 @@ "node": ">=6" } }, + "node_modules/lite-youtube-embed": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/lite-youtube-embed/-/lite-youtube-embed-0.2.0.tgz", + "integrity": "sha512-XXXAk5sbvtjjwbie3XG+6HppgTm1HTGL/Uk9z9NkJH53o7puZLur434heHzAjkS60hZB3vT4ls25zl5rMiX4EA==" + }, "node_modules/load-yaml-file": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", @@ -3739,6 +5064,11 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/muggle-string": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.3.1.tgz", + "integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==" + }, "node_modules/nanoid": { "version": "3.3.7", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", @@ -3829,6 +5159,14 @@ "node": ">=0.10.0" } }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/npm-run-path": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", @@ -4038,6 +5376,11 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -4174,6 +5517,647 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-6.0.2.tgz", + "integrity": "sha512-IRuCwwAAQbgaLhxQdQcIIK0dCVXg3XDUnzgKD8iwdiYdwU4rMWRWyl/W9/0nA4ihVpq5pyALiHB2veBJ0292pw==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-6.0.3.tgz", + "integrity": "sha512-2jBr3H0sk3qGh/3BkmLsOKcYyVfSlM1K2QQYVU7eW5mkg7ZOQ4aU/Rtbh7vJ9FxAfgf8iHRwXBsQkHqUxzTkXw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-9.0.3.tgz", + "integrity": "sha512-7sEHU4tAS6htlxun8AB9LDrCXoljxaC34tFVRlYKcvO+18r5fvGiXgv5bQzN40+4gXLCyWSMRK5FK31244WcCA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-9.0.2.tgz", + "integrity": "sha512-f+RDEAPW2m8UbJWkSpRfV+QxhSaQhDMihI75DVGJJh4oRIoegjheeRtINFJum9D8BqGJcvD4GLjggTvCwZ4zuA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-media": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-10.0.2.tgz", + "integrity": "sha512-zcEFNRmDm2fZvTPdI1pIW3W//UruMcLosmMiCdpQnrCsTRzWlKQPYMa1ud9auL0BmrryKK1+JjIGn19K0UjO/w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.5", + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1", + "@csstools/media-query-list-parser": "^2.1.5" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-properties": { + "version": "13.3.3", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.3.tgz", + "integrity": "sha512-xLmILb2R83aG4X++iVFg8TWadOlc45xiyFHRZD6Yhhu2igrTHXL6C75AEWqx6k9lxrr9sK5rcfUI9JvTCxBTvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.6", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.6.tgz", + "integrity": "sha512-svsjWRaxqL3vAzv71dV0/65P24/FB8TbPX+lWyyf9SZ7aZm4S4NhCn7N3Bg+Z5sZunG3FS8xQ80LrCU9hb37cw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/cascade-layer-name-parser": "^1.0.5", + "@csstools/css-parser-algorithms": "^2.3.2", + "@csstools/css-tokenizer": "^2.2.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-8.0.1.tgz", + "integrity": "sha512-uULohfWBBVoFiZXgsQA24JV6FdKIidQ+ZqxOouhWwdE+qJlALbkS5ScB43ZTjPK+xUZZhlaO/NjfCt5h4IKUfw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-5.0.3.tgz", + "integrity": "sha512-QKYpwmaSm6HcdS0ndAuWSNNMv78R1oSySoh3mYBmctHWr2KWcwPJVakdOyU4lvFVW0GRu9wfIQwGeM4p3xU9ow==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^3.0.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-9.0.1.tgz", + "integrity": "sha512-N2VQ5uPz3Z9ZcqI5tmeholn4d+1H14fKXszpjogZIrFbhaq0zNAtq8sAnw6VLiqGbL8YBzsnu7K9bBkTqaRimQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-8.0.1.tgz", + "integrity": "sha512-NFU3xcY/xwNaapVb+1uJ4n23XImoC86JNwkY/uduytSl2s9Ekc2EpzmRR63+ExitnW3Mab3Fba/wRPCT5oDILA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-5.0.1.tgz", + "integrity": "sha512-k2z9Cnngc24c0KF4MtMuDdToROYqGMMUQGcE6V0odwjHyOHtaDBlLeRBV70y9/vF7KIbShrTRZ70JjsI1BZyWw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-image-set-function": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-6.0.2.tgz", + "integrity": "sha512-/O1xwqpJiz/apxGQi7UUfv1xUcorvkHZfvCYHPpRxxZj2WvjD0rg0+/+c+u5/Do5CpUg3XvfYxMrhcnjW1ArDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-lab-function": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-6.0.8.tgz", + "integrity": "sha512-agYs7R9Z5gnX837fCkH8TEQIHdhyDsMPPnpuuENt/dxoDVAykBaqbdxIN4DagOj+ZQo20iRNNJeY3MsFcdI6Sg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/css-color-parser": "^1.5.0", + "@csstools/css-parser-algorithms": "^2.4.0", + "@csstools/css-tokenizer": "^2.2.2", + "@csstools/postcss-progressive-custom-properties": "^3.0.3" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-logical": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-7.0.1.tgz", + "integrity": "sha512-8GwUQZE0ri0K0HJHkDv87XOLC8DE0msc+HoWLeKdtjDZEwpZ5xuK3QdV6FhmHSQW40LPkg43QzvATRAI3LsRkg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-nesting": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.0.2.tgz", + "integrity": "sha512-63PpJHSeNs93S3ZUIyi+7kKx4JqOIEJ6QYtG3x+0qA4J03+4n0iwsyA1GAHyWxsHYljQS4/4ZK1o2sMi70b5wQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/selector-specificity": "^3.0.1", + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-2.0.0.tgz", + "integrity": "sha512-lyDrCOtntq5Y1JZpBFzIWm2wG9kbEdujpNt4NLannF+J9c8CgFIzPa80YQfdza+Y+yFfzbYj/rfoOsYsooUWTQ==", + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-5.0.1.tgz", + "integrity": "sha512-XzjBYKLd1t6vHsaokMV9URBt2EwC9a7nDhpQpjoPk2HRTSQfokPfyAS/Q7AOrzUu6q+vp/GnrDBGuj/FCaRqrQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-9.0.1.tgz", + "integrity": "sha512-JfL+paQOgRQRMoYFc2f73pGuG/Aw3tt4vYMR6UA3cWVMxivviPTnMFnFTczUJOA4K2Zga6xgQVE+PcLs64WC8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-preset-env": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-9.3.0.tgz", + "integrity": "sha512-ycw6doPrqV6QxDCtgiyGDef61bEfiSc59HGM4gOw/wxQxmKnhuEery61oOC/5ViENz/ycpRsuhTexs1kUBTvVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "@csstools/postcss-cascade-layers": "^4.0.1", + "@csstools/postcss-color-function": "^3.0.7", + "@csstools/postcss-color-mix-function": "^2.0.7", + "@csstools/postcss-exponential-functions": "^1.0.1", + "@csstools/postcss-font-format-keywords": "^3.0.0", + "@csstools/postcss-gamut-mapping": "^1.0.0", + "@csstools/postcss-gradients-interpolation-method": "^4.0.7", + "@csstools/postcss-hwb-function": "^3.0.6", + "@csstools/postcss-ic-unit": "^3.0.2", + "@csstools/postcss-initial": "^1.0.0", + "@csstools/postcss-is-pseudo-class": "^4.0.3", + "@csstools/postcss-logical-float-and-clear": "^2.0.0", + "@csstools/postcss-logical-overflow": "^1.0.0", + "@csstools/postcss-logical-overscroll-behavior": "^1.0.0", + "@csstools/postcss-logical-resize": "^2.0.0", + "@csstools/postcss-logical-viewport-units": "^2.0.3", + "@csstools/postcss-media-minmax": "^1.1.0", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^2.0.3", + "@csstools/postcss-nested-calc": "^3.0.0", + "@csstools/postcss-normalize-display-values": "^3.0.1", + "@csstools/postcss-oklab-function": "^3.0.7", + "@csstools/postcss-progressive-custom-properties": "^3.0.2", + "@csstools/postcss-relative-color-syntax": "^2.0.7", + "@csstools/postcss-scope-pseudo-class": "^3.0.0", + "@csstools/postcss-stepped-value-functions": "^3.0.2", + "@csstools/postcss-text-decoration-shorthand": "^3.0.3", + "@csstools/postcss-trigonometric-functions": "^3.0.2", + "@csstools/postcss-unset-value": "^3.0.0", + "autoprefixer": "^10.4.16", + "browserslist": "^4.22.1", + "css-blank-pseudo": "^6.0.0", + "css-has-pseudo": "^6.0.0", + "css-prefers-color-scheme": "^9.0.0", + "cssdb": "^7.9.0", + "postcss-attribute-case-insensitive": "^6.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^6.0.2", + "postcss-color-hex-alpha": "^9.0.2", + "postcss-color-rebeccapurple": "^9.0.1", + "postcss-custom-media": "^10.0.2", + "postcss-custom-properties": "^13.3.2", + "postcss-custom-selectors": "^7.1.6", + "postcss-dir-pseudo-class": "^8.0.0", + "postcss-double-position-gradients": "^5.0.2", + "postcss-focus-visible": "^9.0.0", + "postcss-focus-within": "^8.0.0", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^5.0.0", + "postcss-image-set-function": "^6.0.1", + "postcss-lab-function": "^6.0.7", + "postcss-logical": "^7.0.0", + "postcss-nesting": "^12.0.1", + "postcss-opacity-percentage": "^2.0.0", + "postcss-overflow-shorthand": "^5.0.0", + "postcss-page-break": "^3.0.4", + "postcss-place": "^9.0.0", + "postcss-pseudo-class-any-link": "^9.0.0", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^7.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-9.0.1.tgz", + "integrity": "sha512-cKYGGZ9yzUZi+dZd7XT2M8iSDfo+T2Ctbpiizf89uBTBfIpZpjvTavzIJXpCReMVXSKROqzpxClNu6fz4DHM0Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "dependencies": { + "postcss-selector-parser": "^6.0.13" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-7.0.1.tgz", + "integrity": "sha512-1zT5C27b/zeJhchN7fP0kBr16Cc61mu7Si9uWWLoA3Px/D9tIJPKchJCkUH3tPO5D0pCFmGeApAv8XpXBQJ8SQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14 || ^16 || >=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.15", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.15.tgz", + "integrity": "sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + }, "node_modules/prebuild-install": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", @@ -4586,6 +6570,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/request-light": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz", + "integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", @@ -5544,6 +7541,31 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typesafe-path": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/typesafe-path/-/typesafe-path-0.2.2.tgz", + "integrity": "sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==" + }, + "node_modules/typescript": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-auto-import-cache": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/typescript-auto-import-cache/-/typescript-auto-import-cache-0.3.2.tgz", + "integrity": "sha512-+laqe5SFL1vN62FPOOJSUDTZxtgsoOXjneYOXIpx5rQ4UMiN89NAtJLpqLqyebv9fgQ/IMeeTX+mQyRnwvJzvg==", + "dependencies": { + "semver": "^7.3.8" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -5750,6 +7772,179 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/volar-service-css": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/volar-service-css/-/volar-service-css-0.0.16.tgz", + "integrity": "sha512-gK/XD35t/P3SQrUuS8LMlCnE2ItIk+kXI6gPvBYl1NZ7O+tLH8rUWXA32YgpwNoITxYrm/G1seaq08zs4aiPvg==", + "dependencies": { + "vscode-css-languageservice": "^6.2.10", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~1.10.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-emmet": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/volar-service-emmet/-/volar-service-emmet-0.0.16.tgz", + "integrity": "sha512-8sWWywzVJOD+PWDArOXDWbiRlM7+peydFhXJT71i4X1WPW32RyPxn6FypvciO+amqpfZP2rXfB9eibIJ+EofSQ==", + "dependencies": { + "@vscode/emmet-helper": "^2.9.2", + "volar-service-html": "0.0.16" + }, + "peerDependencies": { + "@volar/language-service": "~1.10.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-html": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/volar-service-html/-/volar-service-html-0.0.16.tgz", + "integrity": "sha512-/oEXXgry++1CnTXQBUNf9B8MZfTlYZuJfZA7Zx9MN7WS4ZPxk3BFOdal/cXH6RNR2ruNEYr5QTW9rsqtoUscag==", + "dependencies": { + "vscode-html-languageservice": "^5.1.0", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~1.10.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-prettier": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/volar-service-prettier/-/volar-service-prettier-0.0.16.tgz", + "integrity": "sha512-Kj2ZdwJGEvfYbsHW8Sjrew/7EB4PgRoas4f8yAJzUUVxIC/kvhUwLDxQc8+N2IibomN76asJGWe+i6VZZvgIkw==", + "peerDependencies": { + "@volar/language-service": "~1.10.0", + "prettier": "^2.2 || ^3.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + }, + "prettier": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/volar-service-typescript/-/volar-service-typescript-0.0.16.tgz", + "integrity": "sha512-k/qFKM2oxs/3fhbr/vcBSHnCLZ1HN3Aeh+bGvV9Lc9qIhrNyCVsDFOUJN1Qp4dI72+Y+eFSIDCLHmFEZdsP2EA==", + "dependencies": { + "path-browserify": "^1.0.1", + "semver": "^7.5.4", + "typescript-auto-import-cache": "^0.3.0", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-nls": "^5.2.0", + "vscode-uri": "^3.0.8" + }, + "peerDependencies": { + "@volar/language-service": "~1.10.0", + "@volar/typescript": "~1.10.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/volar-service-typescript-twoslash-queries": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/volar-service-typescript-twoslash-queries/-/volar-service-typescript-twoslash-queries-0.0.16.tgz", + "integrity": "sha512-0gPrkDTD2bMj2AnSNykOKhfmPnBFE2LS1lF3LWA7qu1ChRnJF0sodwCCbbeNYJ9+yth956ApoU1BVQ8UrMg+yw==", + "peerDependencies": { + "@volar/language-service": "~1.10.0" + }, + "peerDependenciesMeta": { + "@volar/language-service": { + "optional": true + } + } + }, + "node_modules/vscode-css-languageservice": { + "version": "6.2.11", + "resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.2.11.tgz", + "integrity": "sha512-qn49Wa6K94LnizpVxmlYrcPf1Cb36gq1nNueW0COhi4shylXBzET5wuDbH8ZWQlJD0HM5Mmnn7WE9vQVVs+ULA==", + "dependencies": { + "@vscode/l10n": "^0.0.16", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-types": "3.17.5", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/vscode-html-languageservice": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.1.1.tgz", + "integrity": "sha512-JenrspIIG/Q+93R6G3L6HdK96itSisMynE0glURqHpQbL3dKAKzdm8L40lAHNkwJeBg+BBPpAshZKv/38onrTQ==", + "dependencies": { + "@vscode/l10n": "^0.0.16", + "vscode-languageserver-textdocument": "^1.0.11", + "vscode-languageserver-types": "^3.17.5", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", + "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "dependencies": { + "vscode-languageserver-protocol": "3.17.5" + }, + "bin": { + "installServerIntoExtension": "bin/installServerIntoExtension" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.11.tgz", + "integrity": "sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" + }, + "node_modules/vscode-nls": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz", + "integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==" + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + }, "node_modules/web-namespaces": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", @@ -5882,11 +8077,36 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "optional": true }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", @@ -5895,6 +8115,43 @@ "node": ">=12" } }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/yargs/node_modules/string-width": { + "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" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "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" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", diff --git a/package.json b/package.json index e011596..8483da5 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "fgo-ta-com-website", "type": "module", - "version": "0.1.5", + "version": "0.1.6", "scripts": { "dev": "astro dev", "start": "astro dev", @@ -10,7 +10,17 @@ "astro": "astro" }, "dependencies": { + "@astro-community/astro-embed-youtube": "^0.4.3", + "@astrojs/check": "^0.3.4", "@astrojs/sitemap": "^3.0.3", - "astro": "^4.0.7" - } + "astro": "^4.0.7", + "autoprefixer": "^10.4.16", + "iconoir": "^7.3.0", + "postcss-preset-env": "^9.3.0", + "typescript": "^5.3.3" + }, + "browserslist": [ + "last 2 versions", + ">0.5% and not dead" + ] } diff --git a/static/assets/embed.png b/src/assets/embed.png similarity index 100% rename from static/assets/embed.png rename to src/assets/embed.png diff --git a/static/assets/logo.svg b/src/assets/logo.svg similarity index 100% rename from static/assets/logo.svg rename to src/assets/logo.svg diff --git a/src/assets/ta_servants/shishou.png b/src/assets/ta_servants/shishou.png new file mode 100644 index 0000000000000000000000000000000000000000..9485dd90b6980fc89762b6a396a390fa166cc227 GIT binary patch literal 31772 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 P00000NkvXXu0mjfBO@#R literal 0 HcmV?d00001 diff --git a/src/components/hero.astro b/src/components/hero.astro index 7b8ff45..a3ca227 100644 --- a/src/components/hero.astro +++ b/src/components/hero.astro @@ -1,4 +1,7 @@ --- +import packagejson from '../../package.json' +const version = packagejson.version +const release = `https://forgejo.neshweb.net/Firq/fgo-ta-com-website/releases/tag/${version}` ---
@@ -9,6 +12,8 @@ game in general.
Feel free to check out my own site. +
+ (Website version: {version})
@@ -30,5 +35,10 @@ a { text-align: center; text-decoration: none; + color: var(--c-darkpurple); + } + + .version { + font-size: 0.7em; } diff --git a/src/components/navbar.astro b/src/components/navbar.astro index bed56e2..eeaf8ba 100644 --- a/src/components/navbar.astro +++ b/src/components/navbar.astro @@ -1,9 +1,13 @@ --- +import { Image } from 'astro:assets'; +import logo from '../assets/logo.svg' +import hamburger from 'iconoir/icons/menu.svg' +const hamburger_src_url = `url("${hamburger.src}")`; ---
- + Website Logo
    @@ -13,11 +17,11 @@
- +
- diff --git a/src/components/questListing.astro b/src/components/questListing.astro new file mode 100644 index 0000000..1ec490a --- /dev/null +++ b/src/components/questListing.astro @@ -0,0 +1,103 @@ +--- +export interface Props { + url: string | undefined + title: string + questReleaseDate: string + shortdescription: string +} + +const options_date: Intl.DateTimeFormatOptions = { + year: 'numeric', + month: 'long', + day: '2-digit', +} +const { shortdescription, questReleaseDate, url, title } = Astro.props +const render_date = new Date(questReleaseDate).toLocaleDateString('en-GB', options_date) +--- + + +
+
+

{title}

+

{render_date}

+

{shortdescription}

+
+
+ + diff --git a/src/components/taCard.astro b/src/components/taCard.astro new file mode 100644 index 0000000..dfbef7f --- /dev/null +++ b/src/components/taCard.astro @@ -0,0 +1,184 @@ +--- +import type { ImageMetadata } from 'astro' +import { Image } from 'astro:assets' +export interface Props { + title: string, + link: string, + date: string, + servant: string, + turns: string, + runner: string +} + +const { turns, runner, date, servant, link, title } = + Astro.props + +const options_date: Intl.DateTimeFormatOptions = { + year: 'numeric', + month: '2-digit', + day: '2-digit', +} + +const servantImagePath = `/src/assets/ta_servants/${servant}.png` + +const formatted_date = new Date(date).toLocaleDateString('de-DE', options_date) +const servant_images = import.meta.glob<{ default: ImageMetadata }>( + '/src/assets/ta_servants/*.png' +) + +--- + + +
+ +
+

{title}

+
+

+ + By {runner}
• +
+ {formatted_date} +

+
+

{turns}

+
+
+
+ + diff --git a/src/content/data/cernunnos.json b/src/content/data/cernunnos.json new file mode 100644 index 0000000..4e0ce23 --- /dev/null +++ b/src/content/data/cernunnos.json @@ -0,0 +1,26 @@ +{ + "info": { + "title": "Cernunnos", + "questReleaseDate": "2023-07-10", + "shortdescription": "One of FGOs most notorious boss fights due to up to 100% special defense, strong DoT damage and powerful field effects", + "description": "One of FGOs most notorious boss fights due to up to 100% special defense, strong DoT damage and powerful field effects - and still, the TA community prevailed and created some of the most amazing runs of all time" + }, + "data": [ + { + "title": "Cernunnos 4T (No Castoria)", + "link": "https://www.youtube.com/watch?v=WrHudtdfivA", + "date": "2023-07-19", + "servant": "shishou", + "turns": "4T", + "runner": "Firq" + }, + { + "title": "Cernunnos 4T (FLO)", + "link": "https://www.youtube.com/watch?O1f-go7uJQM", + "date": "2023-07-19", + "servant": "shishou", + "turns": "4T", + "runner": "Requiem" + } + ] +} \ No newline at end of file diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 772dc5e..5bf340f 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,7 +1,11 @@ --- import Navbar from '../components/navbar.astro' import NavbarEntry from '../components/navbarEntry.astro' -import navdata from '../../static/assets/data/_navdata.json' +import navdata from '../../static/data/_navdata.json' +import embed from '../assets/embed.png' +import home from 'iconoir/icons/home.svg' +import database from 'iconoir/icons/database.svg' +import type { IconsLookup } from '../types/icons' export interface Props { title: string @@ -9,6 +13,11 @@ export interface Props { descriptionOverride?: string } +const icons: IconsLookup = { + home: home, + database: database +} + const { descriptionOverride, currentpage, title } = Astro.props let description @@ -22,6 +31,11 @@ let currPage = 'https://fgo-ta.com/' if (currentpage !== 'home') { currPage += currentpage } + +const mapped_navdata = navdata.map((item) => ({ + ...item, + ...{ icon: icons[item.icon] }, +})) --- @@ -36,23 +50,19 @@ if (currentpage !== 'home') { - + - + - { - navdata.map((item) => ( + mapped_navdata.map((item) => ( )) } diff --git a/src/layouts/baseSection.astro b/src/layouts/baseSection.astro index 05961a9..33740b9 100644 --- a/src/layouts/baseSection.astro +++ b/src/layouts/baseSection.astro @@ -1,13 +1,15 @@ --- export interface Props { title: string + description: string } -const { title } = Astro.props +const { title, description } = Astro.props ---

{title}

+

{description}

@@ -45,6 +47,16 @@ const { title } = Astro.props background-color: var(--c-darkgray); padding-bottom: 0.5rem; } + + div h2 { + color: white; + font-size: 16px; + font-weight: 600; + max-width: 75; + margin: 1rem; + line-height: 20px; + text-align: center; + } @media (min-width: 512px) { div { row-gap: 1.5em; @@ -64,10 +76,18 @@ const { title } = Astro.props } } - @media (min-width: 1500px) { + @media (min-width: 1140px) { .base { margin-left: 10%; margin-right: 10%; } + div h1 { + margin-left: unset; + margin-right: unset; + } + + div h2 { + text-align: left; + } } diff --git a/src/layouts/databaseSection.astro b/src/layouts/databaseSection.astro new file mode 100644 index 0000000..f6084bc --- /dev/null +++ b/src/layouts/databaseSection.astro @@ -0,0 +1,100 @@ +--- +export interface Props { + title: string +} + +const { title } = Astro.props +--- + +
+

{title}

+
+
+ +
+
+
+ + diff --git a/src/layouts/taShowcaseLayout.astro b/src/layouts/taShowcaseLayout.astro new file mode 100644 index 0000000..f3b6553 --- /dev/null +++ b/src/layouts/taShowcaseLayout.astro @@ -0,0 +1,52 @@ +--- +import Layout from '../layouts/Layout.astro' +import BaseSection from '../layouts/baseSection.astro' +import TACard from '../components/taCard.astro' +import type { filedata } from '../types/ta' + +export interface Props { + datafile: string +} + +const { datafile } = Astro.props +const fulldata = import.meta.glob<{ default: any }>( + `../content/data/*.json` +) +const filecontent: filedata = ( + await fulldata[`../content/data/${datafile}.json`]() +)['default'] + +const title = filecontent.info.title +--- + + + << Back to database + + {filecontent.data.map((item) => )} + +
+
+ + diff --git a/src/pages/database.astro b/src/pages/database.astro new file mode 100644 index 0000000..94adee4 --- /dev/null +++ b/src/pages/database.astro @@ -0,0 +1,37 @@ +--- +import Layout from '../layouts/Layout.astro' +import QuestListing from '../components/questListing.astro' +import DatabaseSection from '../layouts/databaseSection.astro' +import { findSlug } from '../utils/slugTools' +import type { filedata } from '../types/ta' + +const description = + 'My own small blog. Topics include FGO, TA, Programming, web technologies and more!' + +const questInfo = [] +const fulldata = import.meta.glob<{ default: filedata }>(`../content/data/*.json`) + +for (const [key, value] of Object.entries(fulldata)) { + const url = `${Astro.url}/${findSlug(key)}` + questInfo.push({ + ...(await value())['default'].info, + url: url, + }) +} + +questInfo.sort( + (a, b) => Date.parse(b.questReleaseDate) - Date.parse(a.questReleaseDate) +) +--- + + + + {questInfo.map((quest) => )} + + + + diff --git a/src/pages/database/[slug].astro b/src/pages/database/[slug].astro new file mode 100644 index 0000000..e155e82 --- /dev/null +++ b/src/pages/database/[slug].astro @@ -0,0 +1,23 @@ +--- +import TaShowcaseLayout from '../../layouts/taShowcaseLayout.astro' +import {findSlug} from '../../utils/slugTools' + +export function getStaticPaths() { + const fulldata = import.meta.glob<{ default: any }>( + `../../content/data/*.json` + ) + const keylist = Object.keys(fulldata).map( + (item) => findSlug(item) + ) + + const paths: { params: { slug: string } }[] = [] + for (const key of keylist) { + paths.push({ params: { slug: key! } }) + } + return paths +} + +const { slug } = Astro.params +--- + + diff --git a/src/types/icons.ts b/src/types/icons.ts new file mode 100644 index 0000000..edd8d2a --- /dev/null +++ b/src/types/icons.ts @@ -0,0 +1,3 @@ +export interface IconsLookup { + [key: string]: ImageMetadata +} diff --git a/src/types/ta.ts b/src/types/ta.ts new file mode 100644 index 0000000..75dfb29 --- /dev/null +++ b/src/types/ta.ts @@ -0,0 +1,20 @@ +interface tadata { + title: string + link: string + servant: string + turns: string + runner: string + date: string +} + +interface info { + title: string + questReleaseDate: string + description: string + shortdescription: string +} + +export interface filedata { + info: info + data: tadata[] +} diff --git a/src/utils/slugTools.ts b/src/utils/slugTools.ts new file mode 100644 index 0000000..c4f1a15 --- /dev/null +++ b/src/utils/slugTools.ts @@ -0,0 +1,3 @@ +export function findSlug(filepath: string) { + return filepath.match(/(?:.*[\\/])(.+)(?:\.json)/)?.[1] +} \ No newline at end of file diff --git a/static/assets/data/_navdata.json b/static/assets/data/_navdata.json deleted file mode 100644 index 4c5dbc6..0000000 --- a/static/assets/data/_navdata.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "link": "/", - "text": "Home", - "icon": "iconoir-home-alt" - } -] \ No newline at end of file diff --git a/static/data/_navdata.json b/static/data/_navdata.json new file mode 100644 index 0000000..ea9e90c --- /dev/null +++ b/static/data/_navdata.json @@ -0,0 +1,12 @@ +[ + { + "link": "/", + "text": "Home", + "icon": "home" + }, + { + "link": "/database", + "text": "TA Database", + "icon": "database" + } +] diff --git a/static/assets/favicon.ico b/static/favicon.ico similarity index 100% rename from static/assets/favicon.ico rename to static/favicon.ico diff --git a/static/robots.txt b/static/robots.txt new file mode 100644 index 0000000..e8f9e75 --- /dev/null +++ b/static/robots.txt @@ -0,0 +1,7 @@ +user-agent:* +Disallow: /assets/data/ + +User-agent: GPTBot +Disallow: / + +Sitemap: https://firq.dev/sitemap-index.xml \ No newline at end of file