diff --git a/.github/workflows/__codeql.yml b/.github/workflows/__codeql.yml index 0300f6e37a..9cec9d5cb5 100644 --- a/.github/workflows/__codeql.yml +++ b/.github/workflows/__codeql.yml @@ -26,15 +26,15 @@ jobs: show-progress: false - name: Initialize CodeQL 🛠️ - uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/init@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 with: queries: security-and-quality languages: ${{ matrix.language }} - name: Autobuild 📦 - uses: github/codeql-action/autobuild@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/autobuild@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 - name: Perform CodeQL Analysis 🧪 - uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 + uses: github/codeql-action/analyze@5f8171a638ada777af81d42b55959a643bb29017 # v3.28.12 with: category: '/language:${{matrix.language}}' diff --git a/.github/workflows/__deploy.yml b/.github/workflows/__deploy.yml index caa90e5cc0..655a872d1c 100644 --- a/.github/workflows/__deploy.yml +++ b/.github/workflows/__deploy.yml @@ -29,13 +29,13 @@ jobs: steps: - name: Download workflow artifact ⬇️ - uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 with: name: ${{ inputs.artifact_name }} path: dist - name: Publish to Cloudflare Pages 📃 - uses: cloudflare/wrangler-action@392082e81ffbcb9ebdde27400634aa004b35ea37 # v3.14.0 + uses: cloudflare/wrangler-action@da0e0dfe58b7a431659754fdf3f186c529afbe65 # v3.14.1 id: cf with: apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} diff --git a/.github/workflows/__package.yml b/.github/workflows/__package.yml index f2c3d2afc8..b3af5861d3 100644 --- a/.github/workflows/__package.yml +++ b/.github/workflows/__package.yml @@ -19,7 +19,7 @@ jobs: ref: ${{ inputs.commit || github.sha }} - name: Setup node environment - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: node-version: 20 cache: npm @@ -39,7 +39,7 @@ jobs: mv dist/config.tmp.json dist/config.json - name: Upload artifact - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: frontend path: dist diff --git a/.github/workflows/__quality_checks.yml b/.github/workflows/__quality_checks.yml index b3674f7159..f35282a5ed 100644 --- a/.github/workflows/__quality_checks.yml +++ b/.github/workflows/__quality_checks.yml @@ -48,7 +48,7 @@ jobs: show-progress: false - name: Setup node environment ⚙️ - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: node-version: 20 cache: npm diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index b972d461ce..0c8180e24d 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -85,7 +85,7 @@ jobs: ref: ${{ github.event.pull_request.head.sha }} - name: Setup node environment - uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0 + uses: actions/setup-node@cdca7365b2dadb8aad0a33bc7601856ffabcc48e # v4.3.0 with: node-version: 20 cache: npm @@ -95,6 +95,6 @@ jobs: run: npm ci --no-audit - name: Run eslint - uses: CatChen/eslint-suggestion-action@3ba53ce078667d5f60a73a8005627cf95ab57dce # v4.1.9 + uses: CatChen/eslint-suggestion-action@623ecbafb1dd3f127bc56596b1145e474fc26c6c # v4.1.11 with: github-token: ${{ secrets.GITHUB_TOKEN }} diff --git a/package-lock.json b/package-lock.json index 2fce5b58d3..ec743557bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,27 +9,27 @@ "version": "10.11.0", "license": "GPL-2.0-or-later", "dependencies": { - "@emotion/react": "11.13.3", - "@emotion/styled": "11.13.0", - "@fontsource/noto-sans": "5.1.1", - "@fontsource/noto-sans-hk": "5.1.1", - "@fontsource/noto-sans-jp": "5.1.1", - "@fontsource/noto-sans-kr": "5.1.1", - "@fontsource/noto-sans-sc": "5.1.1", - "@fontsource/noto-sans-tc": "5.1.1", + "@emotion/react": "11.14.0", + "@emotion/styled": "11.14.0", + "@fontsource/noto-sans": "5.2.5", + "@fontsource/noto-sans-hk": "5.2.5", + "@fontsource/noto-sans-jp": "5.2.5", + "@fontsource/noto-sans-kr": "5.2.5", + "@fontsource/noto-sans-sc": "5.2.5", + "@fontsource/noto-sans-tc": "5.2.5", "@jellyfin/libass-wasm": "4.2.3", - "@jellyfin/sdk": "0.0.0-unstable.202502210501", + "@jellyfin/sdk": "0.0.0-unstable.202503200501", "@mui/icons-material": "5.16.14", "@mui/material": "5.16.14", "@mui/x-date-pickers": "7.26.0", "@react-hook/resize-observer": "2.0.2", - "@tanstack/react-query": "5.62.16", - "@tanstack/react-query-devtools": "5.62.16", + "@tanstack/react-query": "5.67.3", + "@tanstack/react-query-devtools": "5.67.3", "abortcontroller-polyfill": "1.7.8", "blurhash": "2.0.5", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.5.1", - "core-js": "3.38.1", + "core-js": "3.41.0", "date-fns": "2.30.0", "dompurify": "2.5.8", "epubjs": "0.3.93", @@ -70,8 +70,8 @@ "@babel/preset-env": "7.26.9", "@babel/preset-react": "7.26.3", "@eslint-community/eslint-plugin-eslint-comments": "4.4.1", - "@eslint/js": "9.20.0", - "@stylistic/eslint-plugin": "3.1.0", + "@eslint/js": "9.22.0", + "@stylistic/eslint-plugin": "4.2.0", "@stylistic/stylelint-plugin": "3.1.2", "@types/dompurify": "3.0.5", "@types/escape-html": "1.0.4", @@ -82,10 +82,10 @@ "@types/react-dom": "18.3.1", "@types/react-lazy-load-image-component": "1.6.4", "@types/sortablejs": "1.15.8", - "@typescript-eslint/parser": "8.24.1", + "@typescript-eslint/parser": "8.26.1", "@uupaa/dynamic-import-polyfill": "1.0.2", - "@vitest/coverage-v8": "3.0.5", - "autoprefixer": "10.4.20", + "@vitest/coverage-v8": "3.0.8", + "autoprefixer": "10.4.21", "babel-loader": "9.2.1", "clean-webpack-plugin": "4.0.0", "confusing-browser-globals": "1.0.11", @@ -94,38 +94,38 @@ "css-loader": "7.1.2", "cssnano": "7.0.6", "es-check": "7.2.1", - "eslint": "9.20.1", + "eslint": "9.22.0", "eslint-plugin-compat": "6.0.2", "eslint-plugin-import": "2.31.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.4", - "eslint-plugin-react-hooks": "5.1.0", + "eslint-plugin-react-hooks": "5.2.0", "eslint-plugin-sonarjs": "3.0.2", "expose-loader": "5.0.1", "fork-ts-checker-webpack-plugin": "9.0.2", - "globals": "15.15.0", + "globals": "16.0.0", "html-loader": "5.1.0", "html-webpack-plugin": "5.6.3", "jsdom": "25.0.1", "mini-css-extract-plugin": "2.9.2", - "postcss": "8.5.2", + "postcss": "8.5.3", "postcss-loader": "8.1.1", - "postcss-preset-env": "10.1.4", + "postcss-preset-env": "10.1.5", "postcss-scss": "4.0.9", - "sass": "1.85.0", + "sass": "1.85.1", "sass-loader": "16.0.5", "source-map-loader": "5.0.0", "speed-measure-webpack-plugin": "1.5.0", "style-loader": "4.0.0", - "stylelint": "16.14.1", + "stylelint": "16.15.0", "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.3.0", "stylelint-order": "6.0.4", - "stylelint-scss": "6.11.0", + "stylelint-scss": "6.11.1", "ts-loader": "9.5.2", - "typescript": "5.7.3", - "typescript-eslint": "8.24.1", - "vitest": "3.0.5", + "typescript": "5.8.2", + "typescript-eslint": "8.26.1", + "vitest": "3.0.8", "webpack": "5.98.0", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", @@ -139,7 +139,7 @@ "yarn": "YARN NO LONGER USED - use npm instead." }, "optionalDependencies": { - "sass-embedded": "1.85.0" + "sass-embedded": "1.85.1" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -1846,9 +1846,9 @@ } }, "node_modules/@csstools/color-helpers": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", - "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", "dev": true, "funding": [ { @@ -1866,9 +1866,9 @@ } }, "node_modules/@csstools/css-calc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", - "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", + "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", "dev": true, "funding": [ { @@ -1890,9 +1890,9 @@ } }, "node_modules/@csstools/css-color-parser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", - "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", + "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", "dev": true, "funding": [ { @@ -1906,8 +1906,8 @@ ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^5.0.1", - "@csstools/css-calc": "^2.1.1" + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" }, "engines": { "node": ">=18" @@ -2049,9 +2049,9 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.7.tgz", - "integrity": "sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.8.tgz", + "integrity": "sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==", "dev": true, "funding": [ { @@ -2065,7 +2065,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -2079,9 +2079,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.7.tgz", - "integrity": "sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.8.tgz", + "integrity": "sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==", "dev": true, "funding": [ { @@ -2095,7 +2095,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -2138,9 +2138,9 @@ } }, "node_modules/@csstools/postcss-exponential-functions": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.6.tgz", - "integrity": "sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.7.tgz", + "integrity": "sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==", "dev": true, "funding": [ { @@ -2154,7 +2154,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, @@ -2193,9 +2193,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.7.tgz", - "integrity": "sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.8.tgz", + "integrity": "sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==", "dev": true, "funding": [ { @@ -2209,7 +2209,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, @@ -2221,9 +2221,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.7.tgz", - "integrity": "sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.8.tgz", + "integrity": "sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==", "dev": true, "funding": [ { @@ -2237,7 +2237,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -2251,9 +2251,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.7.tgz", - "integrity": "sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.8.tgz", + "integrity": "sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==", "dev": true, "funding": [ { @@ -2267,7 +2267,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -2547,9 +2547,9 @@ } }, "node_modules/@csstools/postcss-media-minmax": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.6.tgz", - "integrity": "sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.7.tgz", + "integrity": "sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==", "dev": true, "funding": [ { @@ -2563,7 +2563,7 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/media-query-list-parser": "^4.0.2" @@ -2705,9 +2705,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.7.tgz", - "integrity": "sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.8.tgz", + "integrity": "sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==", "dev": true, "funding": [ { @@ -2721,7 +2721,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -2761,9 +2761,9 @@ } }, "node_modules/@csstools/postcss-random-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-1.0.2.tgz", - "integrity": "sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-1.0.3.tgz", + "integrity": "sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==", "dev": true, "funding": [ { @@ -2777,7 +2777,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, @@ -2789,9 +2789,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.7.tgz", - "integrity": "sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.8.tgz", + "integrity": "sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==", "dev": true, "funding": [ { @@ -2805,7 +2805,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -2859,9 +2859,9 @@ } }, "node_modules/@csstools/postcss-sign-functions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.1.tgz", - "integrity": "sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.2.tgz", + "integrity": "sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==", "dev": true, "funding": [ { @@ -2875,7 +2875,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, @@ -2887,9 +2887,9 @@ } }, "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.6.tgz", - "integrity": "sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.7.tgz", + "integrity": "sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==", "dev": true, "funding": [ { @@ -2903,7 +2903,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, @@ -2915,9 +2915,9 @@ } }, "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.1.tgz", - "integrity": "sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz", + "integrity": "sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==", "dev": true, "funding": [ { @@ -2931,7 +2931,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/color-helpers": "^5.0.1", + "@csstools/color-helpers": "^5.0.2", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -2942,9 +2942,9 @@ } }, "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.6.tgz", - "integrity": "sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.7.tgz", + "integrity": "sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==", "dev": true, "funding": [ { @@ -2958,7 +2958,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" }, @@ -3047,16 +3047,16 @@ } }, "node_modules/@emotion/babel-plugin": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", - "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", - "@emotion/serialize": "^1.2.0", + "@emotion/serialize": "^1.3.3", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -3111,17 +3111,17 @@ "license": "MIT" }, "node_modules/@emotion/react": { - "version": "11.13.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", - "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.12.0", - "@emotion/cache": "^11.13.0", - "@emotion/serialize": "^1.3.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", - "@emotion/utils": "^1.4.0", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" }, @@ -3135,15 +3135,15 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.1.tgz", - "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", "license": "MIT", "dependencies": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/unitless": "^0.10.0", - "@emotion/utils": "^1.4.0", + "@emotion/utils": "^1.4.2", "csstype": "^3.0.2" } }, @@ -3154,17 +3154,17 @@ "license": "MIT" }, "node_modules/@emotion/styled": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", - "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", + "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.12.0", + "@emotion/babel-plugin": "^11.13.5", "@emotion/is-prop-valid": "^1.3.0", - "@emotion/serialize": "^1.3.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", - "@emotion/utils": "^1.4.0" + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" }, "peerDependencies": { "@emotion/react": "^11.0.0-rc.0", @@ -3183,9 +3183,9 @@ "license": "MIT" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", - "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", "license": "MIT", "peerDependencies": { "react": ">=16.8.0" @@ -3676,10 +3676,20 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", + "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", - "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3690,9 +3700,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3792,10 +3802,11 @@ } }, "node_modules/@eslint/js": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", - "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } @@ -3811,13 +3822,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.6.tgz", - "integrity": "sha512-+0TjwR1eAUdZtvv/ir1mGX+v0tUoR3VEPB8Up0LLJC+whRW0GgBBtpbOkg/a/U4Dxa6l5a3l9AJ1aWIQVyoWJA==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.11.0", + "@eslint/core": "^0.12.0", "levn": "^0.4.1" }, "engines": { @@ -3825,40 +3836,58 @@ } }, "node_modules/@fontsource/noto-sans": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans/-/noto-sans-5.1.1.tgz", - "integrity": "sha512-WesuII3BzvzVr0JqYIgnEeJPwXvpFAo9tNCMH1AqoLSCdStKJugMaIcVJ/sT+Pw9ytIlUO3ccbqbe+BhhsXm9g==", - "license": "OFL-1.1" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans/-/noto-sans-5.2.5.tgz", + "integrity": "sha512-g3hWgsQayHQGVXgQKjbHKpS7YQFQY8azwXFCi3ZkhgCK5fZXe3udeQYrZJJ4PMswGkNhoDPRR9OJZBlMjzZAEQ==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } }, "node_modules/@fontsource/noto-sans-hk": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-hk/-/noto-sans-hk-5.1.1.tgz", - "integrity": "sha512-RZaCbu6U5PLl7umS0PQkH6draUPKPRfNJKuwu7LTrec7TRody+8FuaM4YnPn6C4u7qiVvVjSErRk2wToLWcu7A==", - "license": "OFL-1.1" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-hk/-/noto-sans-hk-5.2.5.tgz", + "integrity": "sha512-dQK+2kLRChvlbvsXadnvfjBy1+hQojKu/zobeLiKXquFWJis9CdwNIaxTFa4Khwsq8HzR9JzxGb6L1tSK6JWYw==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } }, "node_modules/@fontsource/noto-sans-jp": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-jp/-/noto-sans-jp-5.1.1.tgz", - "integrity": "sha512-PXk7mDjiaW99xU85IIxRGekzxLz91h2usk0rfDXSVwds9Nuo4sdlDUEE8PQ1P3VLnV00FsCHfSH54uR217VXpg==", - "license": "OFL-1.1" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-jp/-/noto-sans-jp-5.2.5.tgz", + "integrity": "sha512-ISoJUQlsuSo4y56P+eJD+g022BRAF1BC2uCyEFGRsob0g8VvQAoWNMlWh+P0VQw68QzZHHj41zRzeRFpzAdA7w==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } }, "node_modules/@fontsource/noto-sans-kr": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-kr/-/noto-sans-kr-5.1.1.tgz", - "integrity": "sha512-YOa3i3+ze8wtlvsN9TMNQVD2NUOTQEShBz9HZQ6j9SqWuQeOREq2ux//32IzDfNnGNZC0ddeH7oNb1F9OsS3UA==", - "license": "OFL-1.1" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-kr/-/noto-sans-kr-5.2.5.tgz", + "integrity": "sha512-9swPyua410J00z+GhemPKK/StWdiW07dchS9JcskesdQrhnPBLD6zVQtQsrj+ZPXTFBftbcrMlWFsWhmFn6S9w==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } }, "node_modules/@fontsource/noto-sans-sc": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-sc/-/noto-sans-sc-5.1.1.tgz", - "integrity": "sha512-v20RiW0Hp9qnHjLV5IAIwloL3IIKy2elMyMSeLuMzqyhYTCD2kHuRoe4w0aA+sd19IaWtdo2diHskIFL0Asfgw==", - "license": "OFL-1.1" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-sc/-/noto-sans-sc-5.2.5.tgz", + "integrity": "sha512-rYAl3Alcjo2PnI0sqzRfnA022H8yWePNrjYalApQwYE+fFlaXmD6Mm3E9wmJCpmJM8clwhQWq/E8IlPl1bmZHQ==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } }, "node_modules/@fontsource/noto-sans-tc": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-tc/-/noto-sans-tc-5.1.1.tgz", - "integrity": "sha512-uJyenCRVZdiz+iRUyKwn99FDKQ0xMmLTOVHNzscqnp4ZwqYOl5S7fuL3IfH5FRRGYW+FTKtuY43D6gtVNtmrug==", - "license": "OFL-1.1" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-tc/-/noto-sans-tc-5.2.5.tgz", + "integrity": "sha512-+qQKW1slXsS5H5AvsiBfNo7krmuxyKkb6vV2l/nE7Uyd5TBpaomub+kuIO3iwgLBtVOesSkl6HwtR4SNxry+FA==", + "license": "OFL-1.1", + "funding": { + "url": "https://github.com/sponsors/ayuhito" + } }, "node_modules/@humanfs/core": { "version": "0.19.1", @@ -4013,9 +4042,9 @@ "license": "LGPL-2.1-or-later AND (FTL OR GPL-2.0-or-later) AND MIT AND MIT-Modern-Variant AND ISC AND NTP AND Zlib AND BSL-1.0" }, "node_modules/@jellyfin/sdk": { - "version": "0.0.0-unstable.202502210501", - "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.0.0-unstable.202502210501.tgz", - "integrity": "sha512-IFfgfESaHoHsLZbo+eKd+cGtwjgW7bj1hmX8Igc1eV0UHJ1SlLTvjRecm4pp85vvE7u6elrwgVhIsFS0hYucqA==", + "version": "0.0.0-unstable.202503200501", + "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.0.0-unstable.202503200501.tgz", + "integrity": "sha512-45/qSXio9z016Z6lTPM9HiUJfiSeOITgnVsveoBMOD5i6Xd9heSJQh5n6kWnGm1ZIOJoFFOtriUGw6nDzx1ytA==", "license": "MPL-2.0", "peerDependencies": { "axios": "^1.3.4" @@ -4133,9 +4162,9 @@ } }, "node_modules/@keyv/serialize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.2.tgz", - "integrity": "sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", "dev": true, "license": "MIT", "dependencies": { @@ -5206,13 +5235,13 @@ } }, "node_modules/@stylistic/eslint-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-3.1.0.tgz", - "integrity": "sha512-pA6VOrOqk0+S8toJYhQGv2MWpQQR0QpeUo9AhNkC49Y26nxBQ/nH1rta9bUU1rPw2fJ1zZEMV5oCX5AazT7J2g==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.2.0.tgz", + "integrity": "sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.13.0", + "@typescript-eslint/utils": "^8.23.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "estraverse": "^5.3.0", @@ -5222,7 +5251,7 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": ">=8.40.0" + "eslint": ">=9.0.0" } }, "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { @@ -5311,9 +5340,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.62.16", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.16.tgz", - "integrity": "sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==", + "version": "5.67.3", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.67.3.tgz", + "integrity": "sha512-pq76ObpjcaspAW4OmCbpXLF6BCZP2Zr/J5ztnyizXhSlNe7fIUp0QKZsd0JMkw9aDa+vxDX/OY7N+hjNY/dCGg==", "license": "MIT", "funding": { "type": "github", @@ -5321,9 +5350,9 @@ } }, "node_modules/@tanstack/query-devtools": { - "version": "5.62.16", - "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.62.16.tgz", - "integrity": "sha512-3ff6UBJr0H3nIhfLSl9911rvKqXf0u4B58jl0uYdDWLqPk9pCvYIbxC35cGxK2+8INl4IaFVUHb/IdgWrNkg3Q==", + "version": "5.67.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.67.2.tgz", + "integrity": "sha512-O4QXFFd7xqp6EX7sdvc9tsVO8nm4lpWBqwpgjpVLW5g7IeOY6VnS/xvs/YzbRhBVkKTMaJMOUGU7NhSX+YGoNg==", "license": "MIT", "funding": { "type": "github", @@ -5331,12 +5360,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.62.16", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.16.tgz", - "integrity": "sha512-XJIZNj65d2IdvU8VBESmrPakfIm6FSdHDzrS1dPrAwmq3ZX+9riMh/ZfbNQHAWnhrgmq7KoXpgZSRyXnqMYT9A==", + "version": "5.67.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.67.3.tgz", + "integrity": "sha512-u/n2HsQeH1vpZIOzB/w2lqKlXUDUKo6BxTdGXSMvNzIq5MHYFckRMVuFABp+QB7RN8LFXWV6X1/oSkuDq+MPIA==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.62.16" + "@tanstack/query-core": "5.67.3" }, "funding": { "type": "github", @@ -5347,19 +5376,19 @@ } }, "node_modules/@tanstack/react-query-devtools": { - "version": "5.62.16", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.62.16.tgz", - "integrity": "sha512-EjF0tgHnWYcqhk8KxGKnmGlYcnldhWjW3bbH2WZqxo7t41ytzkIQtZ/UyLph//YMmZZE/RVTmSo3rGq/EG9iCA==", + "version": "5.67.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.67.3.tgz", + "integrity": "sha512-+PM2UnCyXAQozXB32cnawx38wwnaHPTtFAhX1V5QmHy/FL1u9k7nd8nxn2+GTwf15SGbUaGfxA/vq/9EARUEIQ==", "license": "MIT", "dependencies": { - "@tanstack/query-devtools": "5.62.16" + "@tanstack/query-devtools": "5.67.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@tanstack/react-query": "^5.62.16", + "@tanstack/react-query": "^5.67.3", "react": "^18 || ^19" } }, @@ -5866,16 +5895,47 @@ "@types/node": "*" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz", - "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", + "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/typescript-estree": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/type-utils": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", + "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", "debug": "^4.3.4" }, "engines": { @@ -5887,17 +5947,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", + "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1" + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5907,11 +5968,36 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", + "node_modules/@typescript-eslint/type-utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", + "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", + "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -5920,14 +6006,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", + "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -5943,131 +6030,7 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.24.1", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "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==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz", - "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz", - "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz", - "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.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": "^2.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -6097,9 +6060,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", "dev": true, "license": "ISC", "bin": { @@ -6110,16 +6073,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.21.0.tgz", - "integrity": "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==", + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", + "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.21.0", - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/typescript-estree": "8.21.0" + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6130,17 +6093,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz", - "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==", + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", + "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/types": "8.26.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -6171,10 +6134,11 @@ "dev": true }, "node_modules/@vitest/coverage-v8": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.5.tgz", - "integrity": "sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.8.tgz", + "integrity": "sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", @@ -6193,8 +6157,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.0.5", - "vitest": "3.0.5" + "@vitest/browser": "3.0.8", + "vitest": "3.0.8" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -6203,14 +6167,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz", - "integrity": "sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.8.tgz", + "integrity": "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.5", - "@vitest/utils": "3.0.5", - "chai": "^5.1.2", + "@vitest/spy": "3.0.8", + "@vitest/utils": "3.0.8", + "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, "funding": { @@ -6218,12 +6183,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz", - "integrity": "sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.8.tgz", + "integrity": "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.5", + "@vitest/spy": "3.0.8", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -6244,10 +6210,11 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz", - "integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", + "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", "dev": true, + "license": "MIT", "dependencies": { "tinyrainbow": "^2.0.0" }, @@ -6256,37 +6223,40 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz", - "integrity": "sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.8.tgz", + "integrity": "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.5", - "pathe": "^2.0.2" + "@vitest/utils": "3.0.8", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz", - "integrity": "sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.8.tgz", + "integrity": "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.5", + "@vitest/pretty-format": "3.0.8", "magic-string": "^0.30.17", - "pathe": "^2.0.2" + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot/node_modules/@vitest/pretty-format": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", - "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz", + "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==", "dev": true, + "license": "MIT", "dependencies": { "tinyrainbow": "^2.0.0" }, @@ -6295,10 +6265,11 @@ } }, "node_modules/@vitest/spy": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz", - "integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz", + "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==", "dev": true, + "license": "MIT", "dependencies": { "tinyspy": "^3.0.2" }, @@ -6307,13 +6278,14 @@ } }, "node_modules/@vitest/utils": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz", - "integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz", + "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.5", - "loupe": "^3.1.2", + "@vitest/pretty-format": "3.0.8", + "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, "funding": { @@ -6321,10 +6293,11 @@ } }, "node_modules/@vitest/utils/node_modules/@vitest/pretty-format": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", - "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz", + "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==", "dev": true, + "license": "MIT", "dependencies": { "tinyrainbow": "^2.0.0" }, @@ -7067,9 +7040,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "dev": true, "funding": [ { @@ -7087,11 +7060,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -7131,9 +7104,10 @@ } }, "node_modules/axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", + "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", + "license": "MIT", "peer": true, "dependencies": { "follow-redirects": "^1.15.6", @@ -7700,24 +7674,24 @@ } }, "node_modules/cacheable": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.8.tgz", - "integrity": "sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", + "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", "dev": true, "license": "MIT", "dependencies": { - "hookified": "^1.7.0", - "keyv": "^5.2.3" + "hookified": "^1.7.1", + "keyv": "^5.3.1" } }, "node_modules/cacheable/node_modules/keyv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.2.3.tgz", - "integrity": "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz", + "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==", "dev": true, "license": "MIT", "dependencies": { - "@keyv/serialize": "^1.0.2" + "@keyv/serialize": "^1.0.3" } }, "node_modules/call-bind": { @@ -7839,9 +7813,9 @@ "dev": true }, "node_modules/caniuse-lite": { - "version": "1.0.30001700", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", - "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", "dev": true, "funding": [ { @@ -8478,9 +8452,9 @@ } }, "node_modules/core-js": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", - "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz", + "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -10000,22 +9974,23 @@ } }, "node_modules/eslint": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", - "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", + "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.11.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.20.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.1.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.22.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -10023,7 +9998,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -10163,6 +10138,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/eslint-plugin-compat/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/eslint-plugin-compat/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -10350,9 +10338,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", - "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "engines": { @@ -10582,9 +10570,9 @@ } }, "node_modules/eslint/node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -11560,9 +11548,9 @@ } }, "node_modules/flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -12261,10 +12249,11 @@ } }, "node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -12621,9 +12610,9 @@ } }, "node_modules/hookified": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.7.0.tgz", - "integrity": "sha512-XQdMjqC1AyeOzfs+17cnIk7Wdfu1hh2JtcyNfBf5u9jHrT3iZUlGHxLTntFBuk5lwkqJ6l3+daeQdHK5yByHVA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", + "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", "dev": true, "license": "MIT" }, @@ -16265,9 +16254,9 @@ } }, "node_modules/postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -16366,9 +16355,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.7.tgz", - "integrity": "sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.8.tgz", + "integrity": "sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==", "dev": true, "funding": [ { @@ -16382,7 +16371,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -16943,9 +16932,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.7.tgz", - "integrity": "sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.8.tgz", + "integrity": "sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==", "dev": true, "funding": [ { @@ -16959,7 +16948,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -17162,9 +17151,9 @@ } }, "node_modules/postcss-logical": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.0.0.tgz", - "integrity": "sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", + "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==", "dev": true, "funding": [ { @@ -17838,9 +17827,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.1.4.tgz", - "integrity": "sha512-awWKS3CwyY7I4Eb3YSWOZisbj3qXyuQCrylYiu2vSHxnSZAj3LHStN6jOcpCrc6EjYunLwbeNto3M5/JBtXpzg==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.1.5.tgz", + "integrity": "sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==", "dev": true, "funding": [ { @@ -17855,14 +17844,14 @@ "license": "MIT-0", "dependencies": { "@csstools/postcss-cascade-layers": "^5.0.1", - "@csstools/postcss-color-function": "^4.0.7", - "@csstools/postcss-color-mix-function": "^3.0.7", + "@csstools/postcss-color-function": "^4.0.8", + "@csstools/postcss-color-mix-function": "^3.0.8", "@csstools/postcss-content-alt-text": "^2.0.4", - "@csstools/postcss-exponential-functions": "^2.0.6", + "@csstools/postcss-exponential-functions": "^2.0.7", "@csstools/postcss-font-format-keywords": "^4.0.0", - "@csstools/postcss-gamut-mapping": "^2.0.7", - "@csstools/postcss-gradients-interpolation-method": "^5.0.7", - "@csstools/postcss-hwb-function": "^4.0.7", + "@csstools/postcss-gamut-mapping": "^2.0.8", + "@csstools/postcss-gradients-interpolation-method": "^5.0.8", + "@csstools/postcss-hwb-function": "^4.0.8", "@csstools/postcss-ic-unit": "^4.0.0", "@csstools/postcss-initial": "^2.0.1", "@csstools/postcss-is-pseudo-class": "^5.0.1", @@ -17872,19 +17861,19 @@ "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", "@csstools/postcss-logical-resize": "^3.0.0", "@csstools/postcss-logical-viewport-units": "^3.0.3", - "@csstools/postcss-media-minmax": "^2.0.6", + "@csstools/postcss-media-minmax": "^2.0.7", "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.4", "@csstools/postcss-nested-calc": "^4.0.0", "@csstools/postcss-normalize-display-values": "^4.0.0", - "@csstools/postcss-oklab-function": "^4.0.7", + "@csstools/postcss-oklab-function": "^4.0.8", "@csstools/postcss-progressive-custom-properties": "^4.0.0", - "@csstools/postcss-random-function": "^1.0.2", - "@csstools/postcss-relative-color-syntax": "^3.0.7", + "@csstools/postcss-random-function": "^1.0.3", + "@csstools/postcss-relative-color-syntax": "^3.0.8", "@csstools/postcss-scope-pseudo-class": "^4.0.1", - "@csstools/postcss-sign-functions": "^1.1.1", - "@csstools/postcss-stepped-value-functions": "^4.0.6", - "@csstools/postcss-text-decoration-shorthand": "^4.0.1", - "@csstools/postcss-trigonometric-functions": "^4.0.6", + "@csstools/postcss-sign-functions": "^1.1.2", + "@csstools/postcss-stepped-value-functions": "^4.0.7", + "@csstools/postcss-text-decoration-shorthand": "^4.0.2", + "@csstools/postcss-trigonometric-functions": "^4.0.7", "@csstools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.19", "browserslist": "^4.24.4", @@ -17894,7 +17883,7 @@ "cssdb": "^8.2.3", "postcss-attribute-case-insensitive": "^7.0.1", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^7.0.7", + "postcss-color-functional-notation": "^7.0.8", "postcss-color-hex-alpha": "^10.0.0", "postcss-color-rebeccapurple": "^10.0.0", "postcss-custom-media": "^11.0.5", @@ -17907,8 +17896,8 @@ "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^6.0.0", "postcss-image-set-function": "^7.0.0", - "postcss-lab-function": "^7.0.7", - "postcss-logical": "^8.0.0", + "postcss-lab-function": "^7.0.8", + "postcss-logical": "^8.1.0", "postcss-nesting": "^13.0.1", "postcss-opacity-percentage": "^3.0.0", "postcss-overflow-shorthand": "^6.0.0", @@ -19220,9 +19209,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz", - "integrity": "sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz", + "integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==", "dev": true, "license": "MIT", "dependencies": { @@ -19241,9 +19230,9 @@ } }, "node_modules/sass-embedded": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.85.0.tgz", - "integrity": "sha512-x3Vv54g0jv1aPSW8OTA/0GzQCs/HMQOjIkLtZJ3Xsn/I4vnyjKbVTQmFTax9bQjldqLEEkdbvy6ES/cOOnYNwA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.85.1.tgz", + "integrity": "sha512-0i+3h2Df/c71afluxC1SXqyyMmJlnKWfu9ZGdzwuKRM1OftEa2XM2myt5tR36CF3PanYrMjFKtRIj8PfSf838w==", "license": "MIT", "optional": true, "dependencies": { @@ -19263,32 +19252,32 @@ "node": ">=16.0.0" }, "optionalDependencies": { - "sass-embedded-android-arm": "1.85.0", - "sass-embedded-android-arm64": "1.85.0", - "sass-embedded-android-ia32": "1.85.0", - "sass-embedded-android-riscv64": "1.85.0", - "sass-embedded-android-x64": "1.85.0", - "sass-embedded-darwin-arm64": "1.85.0", - "sass-embedded-darwin-x64": "1.85.0", - "sass-embedded-linux-arm": "1.85.0", - "sass-embedded-linux-arm64": "1.85.0", - "sass-embedded-linux-ia32": "1.85.0", - "sass-embedded-linux-musl-arm": "1.85.0", - "sass-embedded-linux-musl-arm64": "1.85.0", - "sass-embedded-linux-musl-ia32": "1.85.0", - "sass-embedded-linux-musl-riscv64": "1.85.0", - "sass-embedded-linux-musl-x64": "1.85.0", - "sass-embedded-linux-riscv64": "1.85.0", - "sass-embedded-linux-x64": "1.85.0", - "sass-embedded-win32-arm64": "1.85.0", - "sass-embedded-win32-ia32": "1.85.0", - "sass-embedded-win32-x64": "1.85.0" + "sass-embedded-android-arm": "1.85.1", + "sass-embedded-android-arm64": "1.85.1", + "sass-embedded-android-ia32": "1.85.1", + "sass-embedded-android-riscv64": "1.85.1", + "sass-embedded-android-x64": "1.85.1", + "sass-embedded-darwin-arm64": "1.85.1", + "sass-embedded-darwin-x64": "1.85.1", + "sass-embedded-linux-arm": "1.85.1", + "sass-embedded-linux-arm64": "1.85.1", + "sass-embedded-linux-ia32": "1.85.1", + "sass-embedded-linux-musl-arm": "1.85.1", + "sass-embedded-linux-musl-arm64": "1.85.1", + "sass-embedded-linux-musl-ia32": "1.85.1", + "sass-embedded-linux-musl-riscv64": "1.85.1", + "sass-embedded-linux-musl-x64": "1.85.1", + "sass-embedded-linux-riscv64": "1.85.1", + "sass-embedded-linux-x64": "1.85.1", + "sass-embedded-win32-arm64": "1.85.1", + "sass-embedded-win32-ia32": "1.85.1", + "sass-embedded-win32-x64": "1.85.1" } }, "node_modules/sass-embedded-android-arm": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.85.0.tgz", - "integrity": "sha512-pPBT7Ad6G8Mlao8ypVNXW2ya7I/Bhcny+RYZ/EmrunEXfhzCNp4PWV2VAweitPO9RnPIJwvUTkLc8Fu6K3nVmw==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.85.1.tgz", + "integrity": "sha512-GkcgUGMZtEF9gheuE1dxCU0ZSAifuaFXi/aX7ZXvjtdwmTl9Zc/OHR9oiUJkc8IW9UI7H8TuwlTAA8+SwgwIeQ==", "cpu": [ "arm" ], @@ -19302,9 +19291,9 @@ } }, "node_modules/sass-embedded-android-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.85.0.tgz", - "integrity": "sha512-4itDzRwezwrW8+YzMLIwHtMeH+qrBNdBsRn9lTVI15K+cNLC8z5JWJi6UCZ8TNNZr9LDBfsh5jUdjSub0yF7jg==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.85.1.tgz", + "integrity": "sha512-27oRheqNA3SJM2hAxpVbs7mCKUwKPWmEEhyiNFpBINb5ELVLg+Ck5RsGg+SJmo130ul5YX0vinmVB5uPWc8X5w==", "cpu": [ "arm64" ], @@ -19318,9 +19307,9 @@ } }, "node_modules/sass-embedded-android-ia32": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.85.0.tgz", - "integrity": "sha512-bwqKq95hzbGbMTeXCMQhH7yEdc2xJVwIXj7rGdD3McvyFWbED6362XRFFPI5YyjfD2wRJd9yWLh/hn+6VyjcYA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.85.1.tgz", + "integrity": "sha512-f3x16NyRgtXFksIaO/xXKrUhttUBv8V0XsAR2Dhdb/yz4yrDrhzw9Wh8fmw7PlQqECcQvFaoDr3XIIM6lKzasw==", "cpu": [ "ia32" ], @@ -19334,9 +19323,9 @@ } }, "node_modules/sass-embedded-android-riscv64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.85.0.tgz", - "integrity": "sha512-Fgkgay+5EePJXZFHR5Vlkutnsmox2V6nX4U3mfGbSN1xjLRm8F5ST72V2s5Z0mnIFpGvEu/v7hfptgViqMvaxg==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.85.1.tgz", + "integrity": "sha512-IP6OijpJ8Mqo7XqCe0LsuZVbAxEFVboa0kXqqR5K55LebEplsTIA2GnmRyMay3Yr/2FVGsZbCb6Wlgkw23eCiA==", "cpu": [ "riscv64" ], @@ -19350,9 +19339,9 @@ } }, "node_modules/sass-embedded-android-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.85.0.tgz", - "integrity": "sha512-/bG3JgTn3eoIDHCiJNVkLeJgUesat4ghxqYmKMZUJx++4e6iKCDj8XwQTJAgm+QDrsPKXHBacHEANJ9LEAuTqg==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.85.1.tgz", + "integrity": "sha512-Mh7CA53wR3ADvXAYipFc/R3vV4PVOzoKwWzPxmq+7i8UZrtsVjKONxGtqWe9JG1mna0C9CRZAx0sv/BzbOJxWg==", "cpu": [ "x64" ], @@ -19366,9 +19355,9 @@ } }, "node_modules/sass-embedded-darwin-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.0.tgz", - "integrity": "sha512-plp8TyMz97YFBCB3ndftEvoW29vyfsSBJILM5U84cGzr06SvLh/Npjj8psfUeRw+upEk1zkFtw5u61sRCdgwIw==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.1.tgz", + "integrity": "sha512-msWxzhvcP9hqGVegxVePVEfv9mVNTlUgGr6k7O7Ihji702mbtrH/lKwF4aRkkt4g1j7tv10+JtQXmTNi/pi9kA==", "cpu": [ "arm64" ], @@ -19382,9 +19371,9 @@ } }, "node_modules/sass-embedded-darwin-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.85.0.tgz", - "integrity": "sha512-LP8Zv8DG57Gn6PmSwWzC0gEZUsGdg36Ps3m0i1fVTOelql7N3HZIrlPYRjJvidL8ZlB3ISxNANebTREUHn/wkQ==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.85.1.tgz", + "integrity": "sha512-J4UFHUiyI9Z+mwYMwz11Ky9TYr3hY1fCxeQddjNGL/+ovldtb0yAIHvoVM0BGprQDm5JqhtUk8KyJ3RMJqpaAA==", "cpu": [ "x64" ], @@ -19398,9 +19387,9 @@ } }, "node_modules/sass-embedded-linux-arm": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.85.0.tgz", - "integrity": "sha512-18xOAEfazJt1MMVS2TRHV94n81VyMnywOoJ7/S7I79qno/zx26OoqqP4XvH107xu8+mZ9Gg54LrUH6ZcgHk08g==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.85.1.tgz", + "integrity": "sha512-X0fDh95nNSw1wfRlnkE4oscoEA5Au4nnk785s9jghPFkTBg+A+5uB6trCjf0fM22+Iw6kiP4YYmDdw3BqxAKLQ==", "cpu": [ "arm" ], @@ -19414,9 +19403,9 @@ } }, "node_modules/sass-embedded-linux-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.85.0.tgz", - "integrity": "sha512-JRIRKVOY5Y8M1zlUOv9AQGju4P6lj8i5vLJZsVYVN/uY8Cd2dDJZPC8EOhjntp+IpF8AOGIHqCeCkHBceIyIjA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.85.1.tgz", + "integrity": "sha512-jGadetB03BMFG2rq3OXub/uvC/lGpbQOiLGEz3NLb2nRZWyauRhzDtvZqkr6BEhxgIWtMtz2020yD8ZJSw/r2w==", "cpu": [ "arm64" ], @@ -19430,9 +19419,9 @@ } }, "node_modules/sass-embedded-linux-ia32": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.85.0.tgz", - "integrity": "sha512-4JH+h+gLt9So22nNPQtsKojEsLzjld9ol3zWcOtMGclv+HojZGbCuhJUrLUcK72F8adXYsULmWhJPKROLIwYMA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.85.1.tgz", + "integrity": "sha512-7HlYY90d9mitDtNi5s+S+5wYZrTVbkBH2/kf7ixrzh2BFfT0YM81UHLJRnGX93y9aOMBL6DSZAIfkt1RsV9bkQ==", "cpu": [ "ia32" ], @@ -19446,9 +19435,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.85.0.tgz", - "integrity": "sha512-Z1j4ageDVFihqNUBnm89fxY46pY0zD/Clp1D3ZdI7S+D280+AEpbm5vMoH8LLhBQfQLf2w7H++SZGpQwrisudQ==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.85.1.tgz", + "integrity": "sha512-5vcdEqE8QZnu6i6shZo7x2N36V7YUoFotWj2rGekII5ty7Nkaj+VtZhUEOp9tAzEOlaFuDp5CyO1kUCvweT64A==", "cpu": [ "arm" ], @@ -19462,9 +19451,9 @@ } }, "node_modules/sass-embedded-linux-musl-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.85.0.tgz", - "integrity": "sha512-aoQjUjK28bvdw9XKTjQeayn8oWQ2QqvoTD11myklGd3IHH7Jj0nwXUstI4NxDueCKt3wghuZoIQkjOheReQxlg==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.85.1.tgz", + "integrity": "sha512-FLkIT0p18XOkR6wryJ13LqGBDsrYev2dRk9dtiU18NCpNXruKsdBQ1ZnWHVKB3h1dA9lFyEEisC0sooKdNfeOQ==", "cpu": [ "arm64" ], @@ -19478,9 +19467,9 @@ } }, "node_modules/sass-embedded-linux-musl-ia32": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.85.0.tgz", - "integrity": "sha512-/cJCSXOfXmQFH8deE+3U9x+BSz8i0d1Tt9gKV/Gat1Xm43Oumw8pmZgno+cDuGjYQInr9ryW5121pTMlj/PBXQ==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.85.1.tgz", + "integrity": "sha512-N1093T84zQJor1yyIAdYScB5eAuQarGK1tKgZ4uTnxVlgA7Xi1lXV8Eh7ox9sDqKCaWkVQ3MjqU26vYRBeRWyw==", "cpu": [ "ia32" ], @@ -19494,9 +19483,9 @@ } }, "node_modules/sass-embedded-linux-musl-riscv64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.85.0.tgz", - "integrity": "sha512-l+FJxMXkmg42RZq5RFKXg4InX0IA7yEiPHe4kVSdrczP7z3NLxk+W9wVkPnoRKYIMe1qZPPQ25y0TgI4HNWouA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.85.1.tgz", + "integrity": "sha512-WRsZS/7qlfYXsa93FBpSruieuURIu7ySfFhzYfF1IbKrNAGwmbduutkHZh2ddm5/vQMvQ0Rdosgv+CslaQHMcw==", "cpu": [ "riscv64" ], @@ -19510,9 +19499,9 @@ } }, "node_modules/sass-embedded-linux-musl-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.85.0.tgz", - "integrity": "sha512-M9ffjcYfFcRvkFA6V3DpOS955AyvmpvPAhL/xNK45d/ma1n1ehTWpd24tVeKiNK5CZkNjjMEfyw2fHa6MpqmEA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.85.1.tgz", + "integrity": "sha512-+OlLIilA5TnP0YEqTQ8yZtkW+bJIQYvzoGoNLUEskeyeGuOiIyn2CwL6G4JQB4xZQFaxPHb7JD3EueFkQbH0Pw==", "cpu": [ "x64" ], @@ -19526,9 +19515,9 @@ } }, "node_modules/sass-embedded-linux-riscv64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.85.0.tgz", - "integrity": "sha512-yqPXQWfM+qiIPkfn++48GOlbmSvUZIyL9nwFstBk0k4x40UhbhilfknqeTUpxoHfQzylTGVhrm5JE7MjM+LNZA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.85.1.tgz", + "integrity": "sha512-mKKlOwMGLN7yP1p0gB5yG/HX4fYLnpWaqstNuOOXH+fOzTaNg0+1hALg0H0CDIqypPO74M5MS9T6FAJZGdT6dQ==", "cpu": [ "riscv64" ], @@ -19542,9 +19531,9 @@ } }, "node_modules/sass-embedded-linux-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.85.0.tgz", - "integrity": "sha512-NTDeQFZcuVR7COoaRy8pZD6/+QznwBR8kVFsj7NpmvX9aJ7TX/q+OQZHX7Bfb3tsfKXhf1YZozegPuYxRnMKAQ==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.85.1.tgz", + "integrity": "sha512-uKRTv0z8NgtHV7xSren78+yoWB79sNi7TMqI7Bxd8fcRNIgHQSA8QBdF8led2ETC004hr8h71BrY60RPO+SSvA==", "cpu": [ "x64" ], @@ -19558,9 +19547,9 @@ } }, "node_modules/sass-embedded-win32-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.85.0.tgz", - "integrity": "sha512-gO0VAuxC4AdV+uZYJESRWVVHQWCGzNs0C3OKCAdH4r1vGRugooMi7J/5wbwUdXDA1MV9ICfhlKsph2n3GiPdqA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.85.1.tgz", + "integrity": "sha512-/GMiZXBOc6AEMBC3g25Rp+x8fq9Z6Ql7037l5rajBPhZ+DdFwtdHY0Ou3oIU6XuWUwD06U3ii4XufXVFhsP6PA==", "cpu": [ "arm64" ], @@ -19574,9 +19563,9 @@ } }, "node_modules/sass-embedded-win32-ia32": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.85.0.tgz", - "integrity": "sha512-PCyn6xeFIBUgBceNypuf73/5DWF2VWPlPqPuBprPsTvpZOMUJeBtP+Lf4mnu3dNy1z76mYVnpaCnQmzZ0zHZaA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.85.1.tgz", + "integrity": "sha512-L+4BWkKKBGFOKVQ2PQ5HwFfkM5FvTf1Xx2VSRvEWt9HxPXp6SPDho6zC8fqNQ3hSjoaoASEIJcSvgfdQYO0gdg==", "cpu": [ "ia32" ], @@ -19590,9 +19579,9 @@ } }, "node_modules/sass-embedded-win32-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.85.0.tgz", - "integrity": "sha512-AknE2jLp6OBwrR5hQ8pDsG94KhJCeSheFJ2xgbnk8RUjZX909JiNbgh2sNt9LG+RXf4xZa55dDL537gZoCx/iw==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.85.1.tgz", + "integrity": "sha512-/FO0AGKWxVfCk4GKsC0yXWBpUZdySe3YAAbQQL0lL6xUd1OiUY8Kow6g4Kc1TB/+z0iuQKKTqI/acJMEYl4iTQ==", "cpu": [ "x64" ], @@ -21067,9 +21056,9 @@ } }, "node_modules/stylelint": { - "version": "16.14.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.14.1.tgz", - "integrity": "sha512-oqCL7AC3786oTax35T/nuLL8p2C3k/8rHKAooezrPGRvUX0wX+qqs5kMWh5YYT4PHQgVDobHT4tw55WgpYG6Sw==", + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.15.0.tgz", + "integrity": "sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw==", "dev": true, "funding": [ { @@ -21096,7 +21085,7 @@ "debug": "^4.3.7", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^10.0.5", + "file-entry-cache": "^10.0.6", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -21110,14 +21099,14 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", - "postcss": "^8.5.1", + "postcss": "^8.5.3", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "supports-hyperlinks": "^3.1.0", + "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^5.0.1" @@ -22970,9 +22959,9 @@ } }, "node_modules/stylelint-scss": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.11.0.tgz", - "integrity": "sha512-AvJ6LVzz2iXHxPlPTR9WVy73FC/vmohH54VySNlCKX1NIXNAeuzy/VbIkMJLMyw/xKYqkgY4kAgB+qy5BfCaCg==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.11.1.tgz", + "integrity": "sha512-e4rYo0UY+BIMtGeGanghrvHTjcryxgZbyFxUedp8dLFqC4P70aawNdYjRrQxbnKhu3BNr4+lt5e/53tcKXiwFA==", "dev": true, "license": "MIT", "dependencies": { @@ -22982,7 +22971,7 @@ "mdn-data": "^2.15.0", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -23024,9 +23013,9 @@ } }, "node_modules/stylelint-scss/node_modules/mdn-data": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.15.0.tgz", - "integrity": "sha512-KIrS0lFPOqA4DgeO16vI5fkAsy8p++WBlbXtB5P1EQs8ubBgguAInNd1DnrCeTRfGchY0kgThgDOOIPyOLH2dQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.18.0.tgz", + "integrity": "sha512-gtCy1yim/vpHF/tq3B4Z43x3zKWpYeb4IM3d/Mf4oMYcNuoXOYEaqtoFlLHw9zd7+WNN3jNh6/WXyUrD3OIiwQ==", "dev": true, "license": "CC0-1.0" }, @@ -23157,25 +23146,25 @@ } }, "node_modules/stylelint/node_modules/file-entry-cache": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.6.tgz", - "integrity": "sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.7.tgz", + "integrity": "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw==", "dev": true, "license": "MIT", "dependencies": { - "flat-cache": "^6.1.6" + "flat-cache": "^6.1.7" } }, "node_modules/stylelint/node_modules/flat-cache": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.6.tgz", - "integrity": "sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz", + "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==", "dev": true, "license": "MIT", "dependencies": { - "cacheable": "^1.8.8", - "flatted": "^3.3.2", - "hookified": "^1.7.0" + "cacheable": "^1.8.9", + "flatted": "^3.3.3", + "hookified": "^1.7.1" } }, "node_modules/stylelint/node_modules/globby": { @@ -23295,35 +23284,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/stylelint/node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/stylelint/node_modules/postcss-safe-parser": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", @@ -23441,9 +23401,9 @@ } }, "node_modules/supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "license": "MIT", "dependencies": { @@ -23454,7 +23414,7 @@ "node": ">=14.18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" } }, "node_modules/supports-hyperlinks/node_modules/has-flag": { @@ -23943,6 +23903,7 @@ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -24402,9 +24363,9 @@ } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -24416,14 +24377,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.1.tgz", - "integrity": "sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==", + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", + "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.24.1", - "@typescript-eslint/parser": "8.24.1", - "@typescript-eslint/utils": "8.24.1" + "@typescript-eslint/eslint-plugin": "8.26.1", + "@typescript-eslint/parser": "8.26.1", + "@typescript-eslint/utils": "8.26.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -24434,203 +24396,7 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz", - "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==", - "dev": true, - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/type-utils": "8.24.1", - "@typescript-eslint/utils": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/type-utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", - "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "8.24.1", - "@typescript-eslint/utils": "8.24.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", - "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": "^2.0.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", - "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/typescript-estree": "8.24.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "8.24.1", - "eslint-visitor-keys": "^4.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/typescript-eslint/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { - "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==", - "dev": true, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/typescript-eslint/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/typescript-eslint/node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/uc.micro": { @@ -25165,15 +24931,16 @@ } }, "node_modules/vite-node": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz", - "integrity": "sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.8.tgz", + "integrity": "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.6.0", - "pathe": "^2.0.2", + "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0" }, "bin": { @@ -25186,59 +24953,32 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/vite/node_modules/postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, "node_modules/vitest": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz", - "integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.8.tgz", + "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.5", - "@vitest/mocker": "3.0.5", - "@vitest/pretty-format": "^3.0.5", - "@vitest/runner": "3.0.5", - "@vitest/snapshot": "3.0.5", - "@vitest/spy": "3.0.5", - "@vitest/utils": "3.0.5", - "chai": "^5.1.2", + "@vitest/expect": "3.0.8", + "@vitest/mocker": "3.0.8", + "@vitest/pretty-format": "^3.0.8", + "@vitest/runner": "3.0.8", + "@vitest/snapshot": "3.0.8", + "@vitest/spy": "3.0.8", + "@vitest/utils": "3.0.8", + "chai": "^5.2.0", "debug": "^4.4.0", "expect-type": "^1.1.0", "magic-string": "^0.30.17", - "pathe": "^2.0.2", + "pathe": "^2.0.3", "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.5", + "vite-node": "3.0.8", "why-is-node-running": "^2.3.0" }, "bin": { @@ -25254,8 +24994,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.5", - "@vitest/ui": "3.0.5", + "@vitest/browser": "3.0.8", + "@vitest/ui": "3.0.8", "happy-dom": "*", "jsdom": "*" }, @@ -27388,26 +27128,26 @@ "requires": {} }, "@csstools/color-helpers": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", - "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.2.tgz", + "integrity": "sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==", "dev": true }, "@csstools/css-calc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.1.tgz", - "integrity": "sha512-rL7kaUnTkL9K+Cvo2pnCieqNpTKgQzy5f+N+5Iuko9HAoasP+xgprVh7KN/MaJVvVL1l0EzQq2MoqBHKSrDrag==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.2.tgz", + "integrity": "sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==", "dev": true, "requires": {} }, "@csstools/css-color-parser": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.7.tgz", - "integrity": "sha512-nkMp2mTICw32uE5NN+EsJ4f5N+IGFeCFu4bGpiKgb2Pq/7J/MpyLBeQ5ry4KKtRFZaYs6sTmcMYrSRIyj5DFKA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.8.tgz", + "integrity": "sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==", "dev": true, "requires": { - "@csstools/color-helpers": "^5.0.1", - "@csstools/css-calc": "^2.1.1" + "@csstools/color-helpers": "^5.0.2", + "@csstools/css-calc": "^2.1.2" } }, "@csstools/css-parser-algorithms": { @@ -27460,12 +27200,12 @@ } }, "@csstools/postcss-color-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.7.tgz", - "integrity": "sha512-aDHYmhNIHR6iLw4ElWhf+tRqqaXwKnMl0YsQ/X105Zc4dQwe6yJpMrTN6BwOoESrkDjOYMOfORviSSLeDTJkdQ==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.8.tgz", + "integrity": "sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -27473,12 +27213,12 @@ } }, "@csstools/postcss-color-mix-function": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.7.tgz", - "integrity": "sha512-e68Nev4CxZYCLcrfWhHH4u/N1YocOfTmw67/kVX5Rb7rnguqqLyxPjhHWjSBX8o4bmyuukmNf3wrUSU3//kT7g==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.8.tgz", + "integrity": "sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -27498,12 +27238,12 @@ } }, "@csstools/postcss-exponential-functions": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.6.tgz", - "integrity": "sha512-IgJA5DQsQLu/upA3HcdvC6xEMR051ufebBTIXZ5E9/9iiaA7juXWz1ceYj814lnDYP/7eWjZnw0grRJlX4eI6g==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.7.tgz", + "integrity": "sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==", "dev": true, "requires": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } @@ -27519,23 +27259,23 @@ } }, "@csstools/postcss-gamut-mapping": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.7.tgz", - "integrity": "sha512-gzFEZPoOkY0HqGdyeBXR3JP218Owr683u7KOZazTK7tQZBE8s2yhg06W1tshOqk7R7SWvw9gkw2TQogKpIW8Xw==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.8.tgz", + "integrity": "sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } }, "@csstools/postcss-gradients-interpolation-method": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.7.tgz", - "integrity": "sha512-WgEyBeg6glUeTdS2XT7qeTFBthTJuXlS9GFro/DVomj7W7WMTamAwpoP4oQCq/0Ki2gvfRYFi/uZtmRE14/DFA==", + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.8.tgz", + "integrity": "sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -27543,12 +27283,12 @@ } }, "@csstools/postcss-hwb-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.7.tgz", - "integrity": "sha512-LKYqjO+wGwDCfNIEllessCBWfR4MS/sS1WXO+j00KKyOjm7jDW2L6jzUmqASEiv/kkJO39GcoIOvTTfB3yeBUA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.8.tgz", + "integrity": "sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -27655,12 +27395,12 @@ } }, "@csstools/postcss-media-minmax": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.6.tgz", - "integrity": "sha512-J1+4Fr2W3pLZsfxkFazK+9kr96LhEYqoeBszLmFjb6AjYs+g9oDAw3J5oQignLKk3rC9XHW+ebPTZ9FaW5u5pg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.7.tgz", + "integrity": "sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==", "dev": true, "requires": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/media-query-list-parser": "^4.0.2" @@ -27715,12 +27455,12 @@ } }, "@csstools/postcss-oklab-function": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.7.tgz", - "integrity": "sha512-I6WFQIbEKG2IO3vhaMGZDkucbCaUSXMxvHNzDdnfsTCF5tc0UlV3Oe2AhamatQoKFjBi75dSEMrgWq3+RegsOQ==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.8.tgz", + "integrity": "sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -27737,23 +27477,23 @@ } }, "@csstools/postcss-random-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-1.0.2.tgz", - "integrity": "sha512-vBCT6JvgdEkvRc91NFoNrLjgGtkLWt47GKT6E2UDn3nd8ZkMBiziQ1Md1OiKoSsgzxsSnGKG3RVdhlbdZEkHjA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@csstools/postcss-random-function/-/postcss-random-function-1.0.3.tgz", + "integrity": "sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==", "dev": true, "requires": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } }, "@csstools/postcss-relative-color-syntax": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.7.tgz", - "integrity": "sha512-apbT31vsJVd18MabfPOnE977xgct5B1I+Jpf+Munw3n6kKb1MMuUmGGH+PT9Hm/fFs6fe61Q/EWnkrb4bNoNQw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.8.tgz", + "integrity": "sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -27782,44 +27522,44 @@ } }, "@csstools/postcss-sign-functions": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.1.tgz", - "integrity": "sha512-MslYkZCeMQDxetNkfmmQYgKCy4c+w9pPDfgOBCJOo/RI1RveEUdZQYtOfrC6cIZB7sD7/PHr2VGOcMXlZawrnA==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-sign-functions/-/postcss-sign-functions-1.1.2.tgz", + "integrity": "sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==", "dev": true, "requires": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } }, "@csstools/postcss-stepped-value-functions": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.6.tgz", - "integrity": "sha512-/dwlO9w8vfKgiADxpxUbZOWlL5zKoRIsCymYoh1IPuBsXODKanKnfuZRr32DEqT0//3Av1VjfNZU9yhxtEfIeA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.7.tgz", + "integrity": "sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==", "dev": true, "requires": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } }, "@csstools/postcss-text-decoration-shorthand": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.1.tgz", - "integrity": "sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.2.tgz", + "integrity": "sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==", "dev": true, "requires": { - "@csstools/color-helpers": "^5.0.1", + "@csstools/color-helpers": "^5.0.2", "postcss-value-parser": "^4.2.0" } }, "@csstools/postcss-trigonometric-functions": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.6.tgz", - "integrity": "sha512-c4Y1D2Why/PeccaSouXnTt6WcNHJkoJRidV2VW9s5gJ97cNxnLgQ4Qj8qOqkIR9VmTQKJyNcbF4hy79ZQnWD7A==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.7.tgz", + "integrity": "sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==", "dev": true, "requires": { - "@csstools/css-calc": "^2.1.1", + "@csstools/css-calc": "^2.1.2", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3" } @@ -27862,15 +27602,15 @@ "dev": true }, "@emotion/babel-plugin": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", - "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", + "version": "11.13.5", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.13.5.tgz", + "integrity": "sha512-pxHCpT2ex+0q+HH91/zsdHkw/lXd468DIN2zvfvLtPKLLMo6gQj7oLObq8PhkrxOZb/gGCq03S3Z7PDhS8pduQ==", "requires": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", - "@emotion/serialize": "^1.2.0", + "@emotion/serialize": "^1.3.3", "babel-plugin-macros": "^3.1.0", "convert-source-map": "^1.5.0", "escape-string-regexp": "^4.0.0", @@ -27917,29 +27657,29 @@ "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==" }, "@emotion/react": { - "version": "11.13.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", - "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.14.0.tgz", + "integrity": "sha512-O000MLDBDdk/EohJPFUqvnp4qnHeYkVP5B0xEG0D/L7cOKP9kefu2DXn8dj74cQfsEzUqh+sr1RzFqiL1o+PpA==", "requires": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.12.0", - "@emotion/cache": "^11.13.0", - "@emotion/serialize": "^1.3.1", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", - "@emotion/utils": "^1.4.0", + "@emotion/babel-plugin": "^11.13.5", + "@emotion/cache": "^11.14.0", + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2", "@emotion/weak-memoize": "^0.4.0", "hoist-non-react-statics": "^3.3.1" } }, "@emotion/serialize": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.1.tgz", - "integrity": "sha512-dEPNKzBPU+vFPGa+z3axPRn8XVDetYORmDC0wAiej+TNcOZE70ZMJa0X7JdeoM6q/nWTMZeLpN/fTnD9o8MQBA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.3.tgz", + "integrity": "sha512-EISGqt7sSNWHGI76hC7x1CksiXPahbxEOrC5RjmFRJTqLyEK9/9hZvBbiYn70dw4wuwMKiEMCUlR6ZXTSWQqxA==", "requires": { "@emotion/hash": "^0.9.2", "@emotion/memoize": "^0.9.0", "@emotion/unitless": "^0.10.0", - "@emotion/utils": "^1.4.0", + "@emotion/utils": "^1.4.2", "csstype": "^3.0.2" } }, @@ -27949,16 +27689,16 @@ "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==" }, "@emotion/styled": { - "version": "11.13.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", - "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", + "version": "11.14.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.14.0.tgz", + "integrity": "sha512-XxfOnXFffatap2IyCeJyNov3kiDQWoR08gPUQxvbL7fxKryGBKUZUkG6Hz48DZwVrJSVh9sJboyV1Ds4OW6SgA==", "requires": { "@babel/runtime": "^7.18.3", - "@emotion/babel-plugin": "^11.12.0", + "@emotion/babel-plugin": "^11.13.5", "@emotion/is-prop-valid": "^1.3.0", - "@emotion/serialize": "^1.3.0", - "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", - "@emotion/utils": "^1.4.0" + "@emotion/serialize": "^1.3.3", + "@emotion/use-insertion-effect-with-fallbacks": "^1.2.0", + "@emotion/utils": "^1.4.2" } }, "@emotion/unitless": { @@ -27967,9 +27707,9 @@ "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==" }, "@emotion/use-insertion-effect-with-fallbacks": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", - "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.2.0.tgz", + "integrity": "sha512-yJMtVdH59sxi/aVJBpk9FQq+OR8ll5GT8oWd57UpeaKEVGab41JWaCFA7FRLoMLloOZF/c/wsPoe+bfGmRKgDg==", "requires": {} }, "@emotion/utils": { @@ -28201,19 +27941,25 @@ "minimatch": "^3.1.2" } }, + "@eslint/config-helpers": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.1.0.tgz", + "integrity": "sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==", + "dev": true + }, "@eslint/core": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.11.0.tgz", - "integrity": "sha512-DWUB2pksgNEb6Bz2fggIy1wh6fGgZP4Xyy/Mt0QZPiloKKXerbqq9D3SBQTlCRYOrcRPu4vuz+CGjwdfqxnoWA==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.12.0.tgz", + "integrity": "sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==", "dev": true, "requires": { "@types/json-schema": "^7.0.15" } }, "@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.0.tgz", + "integrity": "sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==", "dev": true, "requires": { "ajv": "^6.12.4", @@ -28285,9 +28031,9 @@ } }, "@eslint/js": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.20.0.tgz", - "integrity": "sha512-iZA07H9io9Wn836aVTytRaNqh00Sad+EamwOVJT12GTLw1VGMFV/4JaME+JjLtr9fiGaoWgYnS54wrfWsSs4oQ==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.22.0.tgz", + "integrity": "sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==", "dev": true }, "@eslint/object-schema": { @@ -28297,44 +28043,44 @@ "dev": true }, "@eslint/plugin-kit": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.6.tgz", - "integrity": "sha512-+0TjwR1eAUdZtvv/ir1mGX+v0tUoR3VEPB8Up0LLJC+whRW0GgBBtpbOkg/a/U4Dxa6l5a3l9AJ1aWIQVyoWJA==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.7.tgz", + "integrity": "sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==", "dev": true, "requires": { - "@eslint/core": "^0.11.0", + "@eslint/core": "^0.12.0", "levn": "^0.4.1" } }, "@fontsource/noto-sans": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans/-/noto-sans-5.1.1.tgz", - "integrity": "sha512-WesuII3BzvzVr0JqYIgnEeJPwXvpFAo9tNCMH1AqoLSCdStKJugMaIcVJ/sT+Pw9ytIlUO3ccbqbe+BhhsXm9g==" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans/-/noto-sans-5.2.5.tgz", + "integrity": "sha512-g3hWgsQayHQGVXgQKjbHKpS7YQFQY8azwXFCi3ZkhgCK5fZXe3udeQYrZJJ4PMswGkNhoDPRR9OJZBlMjzZAEQ==" }, "@fontsource/noto-sans-hk": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-hk/-/noto-sans-hk-5.1.1.tgz", - "integrity": "sha512-RZaCbu6U5PLl7umS0PQkH6draUPKPRfNJKuwu7LTrec7TRody+8FuaM4YnPn6C4u7qiVvVjSErRk2wToLWcu7A==" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-hk/-/noto-sans-hk-5.2.5.tgz", + "integrity": "sha512-dQK+2kLRChvlbvsXadnvfjBy1+hQojKu/zobeLiKXquFWJis9CdwNIaxTFa4Khwsq8HzR9JzxGb6L1tSK6JWYw==" }, "@fontsource/noto-sans-jp": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-jp/-/noto-sans-jp-5.1.1.tgz", - "integrity": "sha512-PXk7mDjiaW99xU85IIxRGekzxLz91h2usk0rfDXSVwds9Nuo4sdlDUEE8PQ1P3VLnV00FsCHfSH54uR217VXpg==" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-jp/-/noto-sans-jp-5.2.5.tgz", + "integrity": "sha512-ISoJUQlsuSo4y56P+eJD+g022BRAF1BC2uCyEFGRsob0g8VvQAoWNMlWh+P0VQw68QzZHHj41zRzeRFpzAdA7w==" }, "@fontsource/noto-sans-kr": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-kr/-/noto-sans-kr-5.1.1.tgz", - "integrity": "sha512-YOa3i3+ze8wtlvsN9TMNQVD2NUOTQEShBz9HZQ6j9SqWuQeOREq2ux//32IzDfNnGNZC0ddeH7oNb1F9OsS3UA==" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-kr/-/noto-sans-kr-5.2.5.tgz", + "integrity": "sha512-9swPyua410J00z+GhemPKK/StWdiW07dchS9JcskesdQrhnPBLD6zVQtQsrj+ZPXTFBftbcrMlWFsWhmFn6S9w==" }, "@fontsource/noto-sans-sc": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-sc/-/noto-sans-sc-5.1.1.tgz", - "integrity": "sha512-v20RiW0Hp9qnHjLV5IAIwloL3IIKy2elMyMSeLuMzqyhYTCD2kHuRoe4w0aA+sd19IaWtdo2diHskIFL0Asfgw==" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-sc/-/noto-sans-sc-5.2.5.tgz", + "integrity": "sha512-rYAl3Alcjo2PnI0sqzRfnA022H8yWePNrjYalApQwYE+fFlaXmD6Mm3E9wmJCpmJM8clwhQWq/E8IlPl1bmZHQ==" }, "@fontsource/noto-sans-tc": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-tc/-/noto-sans-tc-5.1.1.tgz", - "integrity": "sha512-uJyenCRVZdiz+iRUyKwn99FDKQ0xMmLTOVHNzscqnp4ZwqYOl5S7fuL3IfH5FRRGYW+FTKtuY43D6gtVNtmrug==" + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/@fontsource/noto-sans-tc/-/noto-sans-tc-5.2.5.tgz", + "integrity": "sha512-+qQKW1slXsS5H5AvsiBfNo7krmuxyKkb6vV2l/nE7Uyd5TBpaomub+kuIO3iwgLBtVOesSkl6HwtR4SNxry+FA==" }, "@humanfs/core": { "version": "0.19.1", @@ -28432,9 +28178,9 @@ "integrity": "sha512-C0OlBxIr9NdeFESMTA/OVDqNSWtog6Mi7wwzwH12xbZpxsMD0RgCupUcIP7zZgcpTNecW3fZq5d6xVo7Q8HEJw==" }, "@jellyfin/sdk": { - "version": "0.0.0-unstable.202502210501", - "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.0.0-unstable.202502210501.tgz", - "integrity": "sha512-IFfgfESaHoHsLZbo+eKd+cGtwjgW7bj1hmX8Igc1eV0UHJ1SlLTvjRecm4pp85vvE7u6elrwgVhIsFS0hYucqA==", + "version": "0.0.0-unstable.202503200501", + "resolved": "https://registry.npmjs.org/@jellyfin/sdk/-/sdk-0.0.0-unstable.202503200501.tgz", + "integrity": "sha512-45/qSXio9z016Z6lTPM9HiUJfiSeOITgnVsveoBMOD5i6Xd9heSJQh5n6kWnGm1ZIOJoFFOtriUGw6nDzx1ytA==", "requires": {} }, "@jridgewell/gen-mapping": { @@ -28508,9 +28254,9 @@ "requires": {} }, "@keyv/serialize": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.2.tgz", - "integrity": "sha512-+E/LyaAeuABniD/RvUezWVXKpeuvwLEA9//nE9952zBaOdBd2mQ3pPoM8cUe2X6IcMByfuSLzmYqnYshG60+HQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", "dev": true, "requires": { "buffer": "^6.0.3" @@ -29033,12 +28779,12 @@ "dev": true }, "@stylistic/eslint-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-3.1.0.tgz", - "integrity": "sha512-pA6VOrOqk0+S8toJYhQGv2MWpQQR0QpeUo9AhNkC49Y26nxBQ/nH1rta9bUU1rPw2fJ1zZEMV5oCX5AazT7J2g==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.2.0.tgz", + "integrity": "sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==", "dev": true, "requires": { - "@typescript-eslint/utils": "^8.13.0", + "@typescript-eslint/utils": "^8.23.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "estraverse": "^5.3.0", @@ -29098,29 +28844,29 @@ } }, "@tanstack/query-core": { - "version": "5.62.16", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.16.tgz", - "integrity": "sha512-9Sgft7Qavcd+sN0V25xVyo0nfmcZXBuODy3FVG7BMWTg1HMLm8wwG5tNlLlmSic1u7l1v786oavn+STiFaPH2g==" + "version": "5.67.3", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.67.3.tgz", + "integrity": "sha512-pq76ObpjcaspAW4OmCbpXLF6BCZP2Zr/J5ztnyizXhSlNe7fIUp0QKZsd0JMkw9aDa+vxDX/OY7N+hjNY/dCGg==" }, "@tanstack/query-devtools": { - "version": "5.62.16", - "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.62.16.tgz", - "integrity": "sha512-3ff6UBJr0H3nIhfLSl9911rvKqXf0u4B58jl0uYdDWLqPk9pCvYIbxC35cGxK2+8INl4IaFVUHb/IdgWrNkg3Q==" + "version": "5.67.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.67.2.tgz", + "integrity": "sha512-O4QXFFd7xqp6EX7sdvc9tsVO8nm4lpWBqwpgjpVLW5g7IeOY6VnS/xvs/YzbRhBVkKTMaJMOUGU7NhSX+YGoNg==" }, "@tanstack/react-query": { - "version": "5.62.16", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.16.tgz", - "integrity": "sha512-XJIZNj65d2IdvU8VBESmrPakfIm6FSdHDzrS1dPrAwmq3ZX+9riMh/ZfbNQHAWnhrgmq7KoXpgZSRyXnqMYT9A==", + "version": "5.67.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.67.3.tgz", + "integrity": "sha512-u/n2HsQeH1vpZIOzB/w2lqKlXUDUKo6BxTdGXSMvNzIq5MHYFckRMVuFABp+QB7RN8LFXWV6X1/oSkuDq+MPIA==", "requires": { - "@tanstack/query-core": "5.62.16" + "@tanstack/query-core": "5.67.3" } }, "@tanstack/react-query-devtools": { - "version": "5.62.16", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.62.16.tgz", - "integrity": "sha512-EjF0tgHnWYcqhk8KxGKnmGlYcnldhWjW3bbH2WZqxo7t41ytzkIQtZ/UyLph//YMmZZE/RVTmSo3rGq/EG9iCA==", + "version": "5.67.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.67.3.tgz", + "integrity": "sha512-+PM2UnCyXAQozXB32cnawx38wwnaHPTtFAhX1V5QmHy/FL1u9k7nd8nxn2+GTwf15SGbUaGfxA/vq/9EARUEIQ==", "requires": { - "@tanstack/query-devtools": "5.62.16" + "@tanstack/query-devtools": "5.67.2" } }, "@tanstack/react-table": { @@ -29562,61 +29308,80 @@ "@types/node": "*" } }, - "@typescript-eslint/parser": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.24.1.tgz", - "integrity": "sha512-Tqoa05bu+t5s8CTZFaGpCH2ub3QeT9YDkXbPd3uQ4SfsLoh1/vv2GEYAioPoxCWJJNsenXlC88tRjwoHNts1oQ==", + "@typescript-eslint/eslint-plugin": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.26.1.tgz", + "integrity": "sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/typescript-estree": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/type-utils": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.0.1" + } + }, + "@typescript-eslint/parser": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.26.1.tgz", + "integrity": "sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.26.1.tgz", + "integrity": "sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1" + } + }, + "@typescript-eslint/type-utils": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.26.1.tgz", + "integrity": "sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "8.26.1", + "@typescript-eslint/utils": "8.26.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + } + }, + "@typescript-eslint/types": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.26.1.tgz", + "integrity": "sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.26.1.tgz", + "integrity": "sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/visitor-keys": "8.26.1", + "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": "^2.0.1" }, "dependencies": { - "@typescript-eslint/scope-manager": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1" - } - }, - "@typescript-eslint/types": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", - "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": "^2.0.1" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.1", - "eslint-visitor-keys": "^4.2.0" - } - }, "brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -29626,12 +29391,6 @@ "balanced-match": "^1.0.0" } }, - "eslint-visitor-keys": { - "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==", - "dev": true - }, "minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -29649,83 +29408,25 @@ } } }, - "@typescript-eslint/scope-manager": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz", - "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0" - } - }, - "@typescript-eslint/types": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz", - "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz", - "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.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": "^2.0.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "semver": { - "version": "7.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.0.tgz", - "integrity": "sha512-DrfFnPzblFmNrIZzg5RzHegbiRWg7KMR7btwi2yjHwx06zsUbO5g613sVwEV7FTwmzJu+Io0lJe2GJ3LxqpvBQ==", - "dev": true - } - } - }, "@typescript-eslint/utils": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.21.0.tgz", - "integrity": "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==", + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.26.1.tgz", + "integrity": "sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.21.0", - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/typescript-estree": "8.21.0" + "@typescript-eslint/scope-manager": "8.26.1", + "@typescript-eslint/types": "8.26.1", + "@typescript-eslint/typescript-estree": "8.26.1" } }, "@typescript-eslint/visitor-keys": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz", - "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==", + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.26.1.tgz", + "integrity": "sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==", "dev": true, "requires": { - "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/types": "8.26.1", "eslint-visitor-keys": "^4.2.0" }, "dependencies": { @@ -29744,9 +29445,9 @@ "dev": true }, "@vitest/coverage-v8": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.5.tgz", - "integrity": "sha512-zOOWIsj5fHh3jjGwQg+P+J1FW3s4jBu1Zqga0qW60yutsBtqEqNEJKWYh7cYn1yGD+1bdPsPdC/eL4eVK56xMg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.8.tgz", + "integrity": "sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==", "dev": true, "requires": { "@ampproject/remapping": "^2.3.0", @@ -29764,62 +29465,62 @@ } }, "@vitest/expect": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.5.tgz", - "integrity": "sha512-nNIOqupgZ4v5jWuQx2DSlHLEs7Q4Oh/7AYwNyE+k0UQzG7tSmjPXShUikn1mpNGzYEN2jJbTvLejwShMitovBA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.8.tgz", + "integrity": "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==", "dev": true, "requires": { - "@vitest/spy": "3.0.5", - "@vitest/utils": "3.0.5", - "chai": "^5.1.2", + "@vitest/spy": "3.0.8", + "@vitest/utils": "3.0.8", + "chai": "^5.2.0", "tinyrainbow": "^2.0.0" } }, "@vitest/mocker": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.5.tgz", - "integrity": "sha512-CLPNBFBIE7x6aEGbIjaQAX03ZZlBMaWwAjBdMkIf/cAn6xzLTiM3zYqO/WAbieEjsAZir6tO71mzeHZoodThvw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.8.tgz", + "integrity": "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==", "dev": true, "requires": { - "@vitest/spy": "3.0.5", + "@vitest/spy": "3.0.8", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" } }, "@vitest/pretty-format": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.6.tgz", - "integrity": "sha512-Zyctv3dbNL+67qtHfRnUE/k8qxduOamRfAL1BurEIQSyOEFffoMvx2pnDSSbKAAVxY0Ej2J/GH2dQKI0W2JyVg==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.9.tgz", + "integrity": "sha512-OW9F8t2J3AwFEwENg3yMyKWweF7oRJlMyHOMIhO5F3n0+cgQAJZBjNgrF8dLwFTEXl5jUqBLXd9QyyKv8zEcmA==", "dev": true, "requires": { "tinyrainbow": "^2.0.0" } }, "@vitest/runner": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.5.tgz", - "integrity": "sha512-BAiZFityFexZQi2yN4OX3OkJC6scwRo8EhRB0Z5HIGGgd2q+Nq29LgHU/+ovCtd0fOfXj5ZI6pwdlUmC5bpi8A==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.8.tgz", + "integrity": "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==", "dev": true, "requires": { - "@vitest/utils": "3.0.5", - "pathe": "^2.0.2" + "@vitest/utils": "3.0.8", + "pathe": "^2.0.3" } }, "@vitest/snapshot": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.5.tgz", - "integrity": "sha512-GJPZYcd7v8QNUJ7vRvLDmRwl+a1fGg4T/54lZXe+UOGy47F9yUfE18hRCtXL5aHN/AONu29NGzIXSVFh9K0feA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.8.tgz", + "integrity": "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==", "dev": true, "requires": { - "@vitest/pretty-format": "3.0.5", + "@vitest/pretty-format": "3.0.8", "magic-string": "^0.30.17", - "pathe": "^2.0.2" + "pathe": "^2.0.3" }, "dependencies": { "@vitest/pretty-format": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", - "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz", + "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==", "dev": true, "requires": { "tinyrainbow": "^2.0.0" @@ -29828,29 +29529,29 @@ } }, "@vitest/spy": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.5.tgz", - "integrity": "sha512-5fOzHj0WbUNqPK6blI/8VzZdkBlQLnT25knX0r4dbZI9qoZDf3qAdjoMmDcLG5A83W6oUUFJgUd0EYBc2P5xqg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz", + "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==", "dev": true, "requires": { "tinyspy": "^3.0.2" } }, "@vitest/utils": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.5.tgz", - "integrity": "sha512-N9AX0NUoUtVwKwy21JtwzaqR5L5R5A99GAbrHfCCXK1lp593i/3AZAXhSP43wRQuxYsflrdzEfXZFo1reR1Nkg==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz", + "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==", "dev": true, "requires": { - "@vitest/pretty-format": "3.0.5", - "loupe": "^3.1.2", + "@vitest/pretty-format": "3.0.8", + "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, "dependencies": { "@vitest/pretty-format": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.5.tgz", - "integrity": "sha512-CjUtdmpOcm4RVtB+up8r2vVDLR16Mgm/bYdkGFe3Yj/scRfCpbSi2W/BDSDcFK7ohw8UXvjMbOp9H4fByd/cOA==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz", + "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==", "dev": true, "requires": { "tinyrainbow": "^2.0.0" @@ -30402,16 +30103,16 @@ "dev": true }, "autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "dev": true, "requires": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" } }, @@ -30431,9 +30132,9 @@ "dev": true }, "axios": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz", - "integrity": "sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==", + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", + "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", "peer": true, "requires": { "follow-redirects": "^1.15.6", @@ -30830,22 +30531,22 @@ } }, "cacheable": { - "version": "1.8.8", - "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.8.tgz", - "integrity": "sha512-OE1/jlarWxROUIpd0qGBSKFLkNsotY8pt4GeiVErUYh/NUeTNrT+SBksUgllQv4m6a0W/VZsLuiHb88maavqEw==", + "version": "1.8.9", + "resolved": "https://registry.npmjs.org/cacheable/-/cacheable-1.8.9.tgz", + "integrity": "sha512-FicwAUyWnrtnd4QqYAoRlNs44/a1jTL7XDKqm5gJ90wz1DQPlC7U2Rd1Tydpv+E7WAr4sQHuw8Q8M3nZMAyecQ==", "dev": true, "requires": { - "hookified": "^1.7.0", - "keyv": "^5.2.3" + "hookified": "^1.7.1", + "keyv": "^5.3.1" }, "dependencies": { "keyv": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.2.3.tgz", - "integrity": "sha512-AGKecUfzrowabUv0bH1RIR5Vf7w+l4S3xtQAypKaUpTdIR1EbrAcTxHCrpo9Q+IWeUlFE2palRtgIQcgm+PQJw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.2.tgz", + "integrity": "sha512-Lji2XRxqqa5Wg+CHLVfFKBImfJZ4pCSccu9eVWK6w4c2SDFLd8JAn1zqTuSFnsxb7ope6rMsnIHfp+eBbRBRZQ==", "dev": true, "requires": { - "@keyv/serialize": "^1.0.2" + "@keyv/serialize": "^1.0.3" } } } @@ -30941,9 +30642,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001700", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001700.tgz", - "integrity": "sha512-2S6XIXwaE7K7erT8dY+kLQcpa5ms63XlRkMkReXjle+kf6c5g38vyMl+Z5y8dSxOFDhcFe+nxnn261PLxBSQsQ==", + "version": "1.0.30001706", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz", + "integrity": "sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug==", "dev": true }, "canvas": { @@ -31410,9 +31111,9 @@ } }, "core-js": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", - "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==" + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.41.0.tgz", + "integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==" }, "core-js-compat": { "version": "3.40.0", @@ -32485,21 +32186,22 @@ "dev": true }, "eslint": { - "version": "9.20.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.20.1.tgz", - "integrity": "sha512-m1mM33o6dBUjxl2qb6wv6nGNwCAsns1eKtaQ4l/NPHeTvhiUPbtdfMyktxN4B3fgHIgsYh1VT3V9txblpQHq+g==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.22.0.tgz", + "integrity": "sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.11.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.20.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.19.2", + "@eslint/config-helpers": "^0.1.0", + "@eslint/core": "^0.12.0", + "@eslint/eslintrc": "^3.3.0", + "@eslint/js": "9.22.0", + "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -32507,7 +32209,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -32579,9 +32281,9 @@ "dev": true }, "eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, "requires": { "esrecurse": "^4.3.0", @@ -32767,6 +32469,12 @@ "path-exists": "^4.0.0" } }, + "globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true + }, "locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -32935,9 +32643,9 @@ } }, "eslint-plugin-react-hooks": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", - "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "requires": {} }, @@ -33614,9 +33322,9 @@ } }, "flatted": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", - "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true }, "flatten": { @@ -34108,9 +33816,9 @@ } }, "globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", "dev": true }, "globalthis": { @@ -34370,9 +34078,9 @@ } }, "hookified": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.7.0.tgz", - "integrity": "sha512-XQdMjqC1AyeOzfs+17cnIk7Wdfu1hh2JtcyNfBf5u9jHrT3iZUlGHxLTntFBuk5lwkqJ6l3+daeQdHK5yByHVA==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/hookified/-/hookified-1.8.1.tgz", + "integrity": "sha512-GrO2l93P8xCWBSTBX9l2BxI78VU/MAAYag+pG8curS3aBGy0++ZlxrQ7PdUOUVMbn5BwkGb6+eRrnf43ipnFEA==", "dev": true }, "hosted-git-info": { @@ -36971,9 +36679,9 @@ "dev": true }, "postcss": { - "version": "8.5.2", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.2.tgz", - "integrity": "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "requires": { "nanoid": "^3.3.8", @@ -37022,12 +36730,12 @@ } }, "postcss-color-functional-notation": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.7.tgz", - "integrity": "sha512-EZvAHsvyASX63vXnyXOIynkxhaHRSsdb7z6yiXKIovGXAolW4cMZ3qoh7k3VdTsLBS6VGdksGfIo3r6+waLoOw==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.8.tgz", + "integrity": "sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -37323,12 +37031,12 @@ } }, "postcss-lab-function": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.7.tgz", - "integrity": "sha512-+ONj2bpOQfsCKZE2T9VGMyVVdGcGUpr7u3SVfvkJlvhTRmDCfY25k4Jc8fubB9DclAPR4+w8uVtDZmdRgdAHig==", + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.8.tgz", + "integrity": "sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==", "dev": true, "requires": { - "@csstools/css-color-parser": "^3.0.7", + "@csstools/css-color-parser": "^3.0.8", "@csstools/css-parser-algorithms": "^3.0.4", "@csstools/css-tokenizer": "^3.0.3", "@csstools/postcss-progressive-custom-properties": "^4.0.0", @@ -37447,9 +37155,9 @@ } }, "postcss-logical": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.0.0.tgz", - "integrity": "sha512-HpIdsdieClTjXLOyYdUPAX/XQASNIwdKt5hoZW08ZOAiI+tbV0ta1oclkpVkW5ANU+xJvk3KkA0FejkjGLXUkg==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-8.1.0.tgz", + "integrity": "sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==", "dev": true, "requires": { "postcss-value-parser": "^4.2.0" @@ -37860,20 +37568,20 @@ } }, "postcss-preset-env": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.1.4.tgz", - "integrity": "sha512-awWKS3CwyY7I4Eb3YSWOZisbj3qXyuQCrylYiu2vSHxnSZAj3LHStN6jOcpCrc6EjYunLwbeNto3M5/JBtXpzg==", + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.1.5.tgz", + "integrity": "sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==", "dev": true, "requires": { "@csstools/postcss-cascade-layers": "^5.0.1", - "@csstools/postcss-color-function": "^4.0.7", - "@csstools/postcss-color-mix-function": "^3.0.7", + "@csstools/postcss-color-function": "^4.0.8", + "@csstools/postcss-color-mix-function": "^3.0.8", "@csstools/postcss-content-alt-text": "^2.0.4", - "@csstools/postcss-exponential-functions": "^2.0.6", + "@csstools/postcss-exponential-functions": "^2.0.7", "@csstools/postcss-font-format-keywords": "^4.0.0", - "@csstools/postcss-gamut-mapping": "^2.0.7", - "@csstools/postcss-gradients-interpolation-method": "^5.0.7", - "@csstools/postcss-hwb-function": "^4.0.7", + "@csstools/postcss-gamut-mapping": "^2.0.8", + "@csstools/postcss-gradients-interpolation-method": "^5.0.8", + "@csstools/postcss-hwb-function": "^4.0.8", "@csstools/postcss-ic-unit": "^4.0.0", "@csstools/postcss-initial": "^2.0.1", "@csstools/postcss-is-pseudo-class": "^5.0.1", @@ -37883,19 +37591,19 @@ "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", "@csstools/postcss-logical-resize": "^3.0.0", "@csstools/postcss-logical-viewport-units": "^3.0.3", - "@csstools/postcss-media-minmax": "^2.0.6", + "@csstools/postcss-media-minmax": "^2.0.7", "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.4", "@csstools/postcss-nested-calc": "^4.0.0", "@csstools/postcss-normalize-display-values": "^4.0.0", - "@csstools/postcss-oklab-function": "^4.0.7", + "@csstools/postcss-oklab-function": "^4.0.8", "@csstools/postcss-progressive-custom-properties": "^4.0.0", - "@csstools/postcss-random-function": "^1.0.2", - "@csstools/postcss-relative-color-syntax": "^3.0.7", + "@csstools/postcss-random-function": "^1.0.3", + "@csstools/postcss-relative-color-syntax": "^3.0.8", "@csstools/postcss-scope-pseudo-class": "^4.0.1", - "@csstools/postcss-sign-functions": "^1.1.1", - "@csstools/postcss-stepped-value-functions": "^4.0.6", - "@csstools/postcss-text-decoration-shorthand": "^4.0.1", - "@csstools/postcss-trigonometric-functions": "^4.0.6", + "@csstools/postcss-sign-functions": "^1.1.2", + "@csstools/postcss-stepped-value-functions": "^4.0.7", + "@csstools/postcss-text-decoration-shorthand": "^4.0.2", + "@csstools/postcss-trigonometric-functions": "^4.0.7", "@csstools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.19", "browserslist": "^4.24.4", @@ -37905,7 +37613,7 @@ "cssdb": "^8.2.3", "postcss-attribute-case-insensitive": "^7.0.1", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^7.0.7", + "postcss-color-functional-notation": "^7.0.8", "postcss-color-hex-alpha": "^10.0.0", "postcss-color-rebeccapurple": "^10.0.0", "postcss-custom-media": "^11.0.5", @@ -37918,8 +37626,8 @@ "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^6.0.0", "postcss-image-set-function": "^7.0.0", - "postcss-lab-function": "^7.0.7", - "postcss-logical": "^8.0.0", + "postcss-lab-function": "^7.0.8", + "postcss-logical": "^8.1.0", "postcss-nesting": "^13.0.1", "postcss-opacity-percentage": "^3.0.0", "postcss-overflow-shorthand": "^6.0.0", @@ -38848,9 +38556,9 @@ "dev": true }, "sass": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.0.tgz", - "integrity": "sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz", + "integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==", "dev": true, "requires": { "@parcel/watcher": "^2.4.1", @@ -38877,9 +38585,9 @@ } }, "sass-embedded": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.85.0.tgz", - "integrity": "sha512-x3Vv54g0jv1aPSW8OTA/0GzQCs/HMQOjIkLtZJ3Xsn/I4vnyjKbVTQmFTax9bQjldqLEEkdbvy6ES/cOOnYNwA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded/-/sass-embedded-1.85.1.tgz", + "integrity": "sha512-0i+3h2Df/c71afluxC1SXqyyMmJlnKWfu9ZGdzwuKRM1OftEa2XM2myt5tR36CF3PanYrMjFKtRIj8PfSf838w==", "optional": true, "requires": { "@bufbuild/protobuf": "^2.0.0", @@ -38887,26 +38595,26 @@ "colorjs.io": "^0.5.0", "immutable": "^5.0.2", "rxjs": "^7.4.0", - "sass-embedded-android-arm": "1.85.0", - "sass-embedded-android-arm64": "1.85.0", - "sass-embedded-android-ia32": "1.85.0", - "sass-embedded-android-riscv64": "1.85.0", - "sass-embedded-android-x64": "1.85.0", - "sass-embedded-darwin-arm64": "1.85.0", - "sass-embedded-darwin-x64": "1.85.0", - "sass-embedded-linux-arm": "1.85.0", - "sass-embedded-linux-arm64": "1.85.0", - "sass-embedded-linux-ia32": "1.85.0", - "sass-embedded-linux-musl-arm": "1.85.0", - "sass-embedded-linux-musl-arm64": "1.85.0", - "sass-embedded-linux-musl-ia32": "1.85.0", - "sass-embedded-linux-musl-riscv64": "1.85.0", - "sass-embedded-linux-musl-x64": "1.85.0", - "sass-embedded-linux-riscv64": "1.85.0", - "sass-embedded-linux-x64": "1.85.0", - "sass-embedded-win32-arm64": "1.85.0", - "sass-embedded-win32-ia32": "1.85.0", - "sass-embedded-win32-x64": "1.85.0", + "sass-embedded-android-arm": "1.85.1", + "sass-embedded-android-arm64": "1.85.1", + "sass-embedded-android-ia32": "1.85.1", + "sass-embedded-android-riscv64": "1.85.1", + "sass-embedded-android-x64": "1.85.1", + "sass-embedded-darwin-arm64": "1.85.1", + "sass-embedded-darwin-x64": "1.85.1", + "sass-embedded-linux-arm": "1.85.1", + "sass-embedded-linux-arm64": "1.85.1", + "sass-embedded-linux-ia32": "1.85.1", + "sass-embedded-linux-musl-arm": "1.85.1", + "sass-embedded-linux-musl-arm64": "1.85.1", + "sass-embedded-linux-musl-ia32": "1.85.1", + "sass-embedded-linux-musl-riscv64": "1.85.1", + "sass-embedded-linux-musl-x64": "1.85.1", + "sass-embedded-linux-riscv64": "1.85.1", + "sass-embedded-linux-x64": "1.85.1", + "sass-embedded-win32-arm64": "1.85.1", + "sass-embedded-win32-ia32": "1.85.1", + "sass-embedded-win32-x64": "1.85.1", "supports-color": "^8.1.1", "sync-child-process": "^1.0.2", "varint": "^6.0.0" @@ -38930,123 +38638,123 @@ } }, "sass-embedded-android-arm": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.85.0.tgz", - "integrity": "sha512-pPBT7Ad6G8Mlao8ypVNXW2ya7I/Bhcny+RYZ/EmrunEXfhzCNp4PWV2VAweitPO9RnPIJwvUTkLc8Fu6K3nVmw==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm/-/sass-embedded-android-arm-1.85.1.tgz", + "integrity": "sha512-GkcgUGMZtEF9gheuE1dxCU0ZSAifuaFXi/aX7ZXvjtdwmTl9Zc/OHR9oiUJkc8IW9UI7H8TuwlTAA8+SwgwIeQ==", "optional": true }, "sass-embedded-android-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.85.0.tgz", - "integrity": "sha512-4itDzRwezwrW8+YzMLIwHtMeH+qrBNdBsRn9lTVI15K+cNLC8z5JWJi6UCZ8TNNZr9LDBfsh5jUdjSub0yF7jg==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.85.1.tgz", + "integrity": "sha512-27oRheqNA3SJM2hAxpVbs7mCKUwKPWmEEhyiNFpBINb5ELVLg+Ck5RsGg+SJmo130ul5YX0vinmVB5uPWc8X5w==", "optional": true }, "sass-embedded-android-ia32": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.85.0.tgz", - "integrity": "sha512-bwqKq95hzbGbMTeXCMQhH7yEdc2xJVwIXj7rGdD3McvyFWbED6362XRFFPI5YyjfD2wRJd9yWLh/hn+6VyjcYA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-ia32/-/sass-embedded-android-ia32-1.85.1.tgz", + "integrity": "sha512-f3x16NyRgtXFksIaO/xXKrUhttUBv8V0XsAR2Dhdb/yz4yrDrhzw9Wh8fmw7PlQqECcQvFaoDr3XIIM6lKzasw==", "optional": true }, "sass-embedded-android-riscv64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.85.0.tgz", - "integrity": "sha512-Fgkgay+5EePJXZFHR5Vlkutnsmox2V6nX4U3mfGbSN1xjLRm8F5ST72V2s5Z0mnIFpGvEu/v7hfptgViqMvaxg==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.85.1.tgz", + "integrity": "sha512-IP6OijpJ8Mqo7XqCe0LsuZVbAxEFVboa0kXqqR5K55LebEplsTIA2GnmRyMay3Yr/2FVGsZbCb6Wlgkw23eCiA==", "optional": true }, "sass-embedded-android-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.85.0.tgz", - "integrity": "sha512-/bG3JgTn3eoIDHCiJNVkLeJgUesat4ghxqYmKMZUJx++4e6iKCDj8XwQTJAgm+QDrsPKXHBacHEANJ9LEAuTqg==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-android-x64/-/sass-embedded-android-x64-1.85.1.tgz", + "integrity": "sha512-Mh7CA53wR3ADvXAYipFc/R3vV4PVOzoKwWzPxmq+7i8UZrtsVjKONxGtqWe9JG1mna0C9CRZAx0sv/BzbOJxWg==", "optional": true }, "sass-embedded-darwin-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.0.tgz", - "integrity": "sha512-plp8TyMz97YFBCB3ndftEvoW29vyfsSBJILM5U84cGzr06SvLh/Npjj8psfUeRw+upEk1zkFtw5u61sRCdgwIw==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.85.1.tgz", + "integrity": "sha512-msWxzhvcP9hqGVegxVePVEfv9mVNTlUgGr6k7O7Ihji702mbtrH/lKwF4aRkkt4g1j7tv10+JtQXmTNi/pi9kA==", "optional": true }, "sass-embedded-darwin-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.85.0.tgz", - "integrity": "sha512-LP8Zv8DG57Gn6PmSwWzC0gEZUsGdg36Ps3m0i1fVTOelql7N3HZIrlPYRjJvidL8ZlB3ISxNANebTREUHn/wkQ==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.85.1.tgz", + "integrity": "sha512-J4UFHUiyI9Z+mwYMwz11Ky9TYr3hY1fCxeQddjNGL/+ovldtb0yAIHvoVM0BGprQDm5JqhtUk8KyJ3RMJqpaAA==", "optional": true }, "sass-embedded-linux-arm": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.85.0.tgz", - "integrity": "sha512-18xOAEfazJt1MMVS2TRHV94n81VyMnywOoJ7/S7I79qno/zx26OoqqP4XvH107xu8+mZ9Gg54LrUH6ZcgHk08g==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.85.1.tgz", + "integrity": "sha512-X0fDh95nNSw1wfRlnkE4oscoEA5Au4nnk785s9jghPFkTBg+A+5uB6trCjf0fM22+Iw6kiP4YYmDdw3BqxAKLQ==", "optional": true }, "sass-embedded-linux-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.85.0.tgz", - "integrity": "sha512-JRIRKVOY5Y8M1zlUOv9AQGju4P6lj8i5vLJZsVYVN/uY8Cd2dDJZPC8EOhjntp+IpF8AOGIHqCeCkHBceIyIjA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.85.1.tgz", + "integrity": "sha512-jGadetB03BMFG2rq3OXub/uvC/lGpbQOiLGEz3NLb2nRZWyauRhzDtvZqkr6BEhxgIWtMtz2020yD8ZJSw/r2w==", "optional": true }, "sass-embedded-linux-ia32": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.85.0.tgz", - "integrity": "sha512-4JH+h+gLt9So22nNPQtsKojEsLzjld9ol3zWcOtMGclv+HojZGbCuhJUrLUcK72F8adXYsULmWhJPKROLIwYMA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-ia32/-/sass-embedded-linux-ia32-1.85.1.tgz", + "integrity": "sha512-7HlYY90d9mitDtNi5s+S+5wYZrTVbkBH2/kf7ixrzh2BFfT0YM81UHLJRnGX93y9aOMBL6DSZAIfkt1RsV9bkQ==", "optional": true }, "sass-embedded-linux-musl-arm": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.85.0.tgz", - "integrity": "sha512-Z1j4ageDVFihqNUBnm89fxY46pY0zD/Clp1D3ZdI7S+D280+AEpbm5vMoH8LLhBQfQLf2w7H++SZGpQwrisudQ==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.85.1.tgz", + "integrity": "sha512-5vcdEqE8QZnu6i6shZo7x2N36V7YUoFotWj2rGekII5ty7Nkaj+VtZhUEOp9tAzEOlaFuDp5CyO1kUCvweT64A==", "optional": true }, "sass-embedded-linux-musl-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.85.0.tgz", - "integrity": "sha512-aoQjUjK28bvdw9XKTjQeayn8oWQ2QqvoTD11myklGd3IHH7Jj0nwXUstI4NxDueCKt3wghuZoIQkjOheReQxlg==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.85.1.tgz", + "integrity": "sha512-FLkIT0p18XOkR6wryJ13LqGBDsrYev2dRk9dtiU18NCpNXruKsdBQ1ZnWHVKB3h1dA9lFyEEisC0sooKdNfeOQ==", "optional": true }, "sass-embedded-linux-musl-ia32": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.85.0.tgz", - "integrity": "sha512-/cJCSXOfXmQFH8deE+3U9x+BSz8i0d1Tt9gKV/Gat1Xm43Oumw8pmZgno+cDuGjYQInr9ryW5121pTMlj/PBXQ==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-ia32/-/sass-embedded-linux-musl-ia32-1.85.1.tgz", + "integrity": "sha512-N1093T84zQJor1yyIAdYScB5eAuQarGK1tKgZ4uTnxVlgA7Xi1lXV8Eh7ox9sDqKCaWkVQ3MjqU26vYRBeRWyw==", "optional": true }, "sass-embedded-linux-musl-riscv64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.85.0.tgz", - "integrity": "sha512-l+FJxMXkmg42RZq5RFKXg4InX0IA7yEiPHe4kVSdrczP7z3NLxk+W9wVkPnoRKYIMe1qZPPQ25y0TgI4HNWouA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.85.1.tgz", + "integrity": "sha512-WRsZS/7qlfYXsa93FBpSruieuURIu7ySfFhzYfF1IbKrNAGwmbduutkHZh2ddm5/vQMvQ0Rdosgv+CslaQHMcw==", "optional": true }, "sass-embedded-linux-musl-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.85.0.tgz", - "integrity": "sha512-M9ffjcYfFcRvkFA6V3DpOS955AyvmpvPAhL/xNK45d/ma1n1ehTWpd24tVeKiNK5CZkNjjMEfyw2fHa6MpqmEA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.85.1.tgz", + "integrity": "sha512-+OlLIilA5TnP0YEqTQ8yZtkW+bJIQYvzoGoNLUEskeyeGuOiIyn2CwL6G4JQB4xZQFaxPHb7JD3EueFkQbH0Pw==", "optional": true }, "sass-embedded-linux-riscv64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.85.0.tgz", - "integrity": "sha512-yqPXQWfM+qiIPkfn++48GOlbmSvUZIyL9nwFstBk0k4x40UhbhilfknqeTUpxoHfQzylTGVhrm5JE7MjM+LNZA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.85.1.tgz", + "integrity": "sha512-mKKlOwMGLN7yP1p0gB5yG/HX4fYLnpWaqstNuOOXH+fOzTaNg0+1hALg0H0CDIqypPO74M5MS9T6FAJZGdT6dQ==", "optional": true }, "sass-embedded-linux-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.85.0.tgz", - "integrity": "sha512-NTDeQFZcuVR7COoaRy8pZD6/+QznwBR8kVFsj7NpmvX9aJ7TX/q+OQZHX7Bfb3tsfKXhf1YZozegPuYxRnMKAQ==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.85.1.tgz", + "integrity": "sha512-uKRTv0z8NgtHV7xSren78+yoWB79sNi7TMqI7Bxd8fcRNIgHQSA8QBdF8led2ETC004hr8h71BrY60RPO+SSvA==", "optional": true }, "sass-embedded-win32-arm64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.85.0.tgz", - "integrity": "sha512-gO0VAuxC4AdV+uZYJESRWVVHQWCGzNs0C3OKCAdH4r1vGRugooMi7J/5wbwUdXDA1MV9ICfhlKsph2n3GiPdqA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.85.1.tgz", + "integrity": "sha512-/GMiZXBOc6AEMBC3g25Rp+x8fq9Z6Ql7037l5rajBPhZ+DdFwtdHY0Ou3oIU6XuWUwD06U3ii4XufXVFhsP6PA==", "optional": true }, "sass-embedded-win32-ia32": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.85.0.tgz", - "integrity": "sha512-PCyn6xeFIBUgBceNypuf73/5DWF2VWPlPqPuBprPsTvpZOMUJeBtP+Lf4mnu3dNy1z76mYVnpaCnQmzZ0zHZaA==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-ia32/-/sass-embedded-win32-ia32-1.85.1.tgz", + "integrity": "sha512-L+4BWkKKBGFOKVQ2PQ5HwFfkM5FvTf1Xx2VSRvEWt9HxPXp6SPDho6zC8fqNQ3hSjoaoASEIJcSvgfdQYO0gdg==", "optional": true }, "sass-embedded-win32-x64": { - "version": "1.85.0", - "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.85.0.tgz", - "integrity": "sha512-AknE2jLp6OBwrR5hQ8pDsG94KhJCeSheFJ2xgbnk8RUjZX909JiNbgh2sNt9LG+RXf4xZa55dDL537gZoCx/iw==", + "version": "1.85.1", + "resolved": "https://registry.npmjs.org/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.85.1.tgz", + "integrity": "sha512-/FO0AGKWxVfCk4GKsC0yXWBpUZdySe3YAAbQQL0lL6xUd1OiUY8Kow6g4Kc1TB/+z0iuQKKTqI/acJMEYl4iTQ==", "optional": true }, "sass-loader": { @@ -40106,9 +39814,9 @@ } }, "stylelint": { - "version": "16.14.1", - "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.14.1.tgz", - "integrity": "sha512-oqCL7AC3786oTax35T/nuLL8p2C3k/8rHKAooezrPGRvUX0wX+qqs5kMWh5YYT4PHQgVDobHT4tw55WgpYG6Sw==", + "version": "16.15.0", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-16.15.0.tgz", + "integrity": "sha512-OK6Rs7EPdcdmjqiDycadZY4fw3f5/TC1X6/tGjnF3OosbwCeNs7nG+79MCAtjEg7ckwqTJTsku08e0Rmaz5nUw==", "dev": true, "requires": { "@csstools/css-parser-algorithms": "^3.0.4", @@ -40124,7 +39832,7 @@ "debug": "^4.3.7", "fast-glob": "^3.3.3", "fastest-levenshtein": "^1.0.16", - "file-entry-cache": "^10.0.5", + "file-entry-cache": "^10.0.6", "global-modules": "^2.0.0", "globby": "^11.1.0", "globjoin": "^0.1.4", @@ -40138,14 +39846,14 @@ "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "picocolors": "^1.1.1", - "postcss": "^8.5.1", + "postcss": "^8.5.3", "postcss-resolve-nested-selector": "^0.1.6", "postcss-safe-parser": "^7.0.1", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0", "resolve-from": "^5.0.0", "string-width": "^4.2.3", - "supports-hyperlinks": "^3.1.0", + "supports-hyperlinks": "^3.2.0", "svg-tags": "^1.0.0", "table": "^6.9.0", "write-file-atomic": "^5.0.1" @@ -40206,23 +39914,23 @@ } }, "file-entry-cache": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.6.tgz", - "integrity": "sha512-0wvv16mVo9nN0Md3k7DMjgAPKG/TY4F/gYMBVb/wMThFRJvzrpaqBFqF6km9wf8QfYTN+mNg5aeaBLfy8k35uA==", + "version": "10.0.7", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-10.0.7.tgz", + "integrity": "sha512-txsf5fu3anp2ff3+gOJJzRImtrtm/oa9tYLN0iTuINZ++EyVR/nRrg2fKYwvG/pXDofcrvvb0scEbX3NyW/COw==", "dev": true, "requires": { - "flat-cache": "^6.1.6" + "flat-cache": "^6.1.7" } }, "flat-cache": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.6.tgz", - "integrity": "sha512-F+CKgSwp0pzLx67u+Zy1aCueVWFAHWbXepvXlZ+bWVTaASbm5SyCnSJ80Fp1ePEmS57wU+Bf6cx6525qtMZ4lQ==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-6.1.7.tgz", + "integrity": "sha512-qwZ4xf1v1m7Rc9XiORly31YaChvKt6oNVHuqqZcoED/7O+ToyNVGobKsIAopY9ODcWpEDKEBAbrSOCBHtNQvew==", "dev": true, "requires": { - "cacheable": "^1.8.8", - "flatted": "^3.3.2", - "hookified": "^1.7.0" + "cacheable": "^1.8.9", + "flatted": "^3.3.3", + "hookified": "^1.7.1" } }, "globby": { @@ -40304,17 +40012,6 @@ "lines-and-columns": "^1.1.6" } }, - "postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "dev": true, - "requires": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - } - }, "postcss-safe-parser": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-7.0.1.tgz", @@ -41763,9 +41460,9 @@ } }, "stylelint-scss": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.11.0.tgz", - "integrity": "sha512-AvJ6LVzz2iXHxPlPTR9WVy73FC/vmohH54VySNlCKX1NIXNAeuzy/VbIkMJLMyw/xKYqkgY4kAgB+qy5BfCaCg==", + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-6.11.1.tgz", + "integrity": "sha512-e4rYo0UY+BIMtGeGanghrvHTjcryxgZbyFxUedp8dLFqC4P70aawNdYjRrQxbnKhu3BNr4+lt5e/53tcKXiwFA==", "dev": true, "requires": { "css-tree": "^3.0.1", @@ -41774,7 +41471,7 @@ "mdn-data": "^2.15.0", "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.6", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^7.1.0", "postcss-value-parser": "^4.2.0" }, "dependencies": { @@ -41803,9 +41500,9 @@ "dev": true }, "mdn-data": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.15.0.tgz", - "integrity": "sha512-KIrS0lFPOqA4DgeO16vI5fkAsy8p++WBlbXtB5P1EQs8ubBgguAInNd1DnrCeTRfGchY0kgThgDOOIPyOLH2dQ==", + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.18.0.tgz", + "integrity": "sha512-gtCy1yim/vpHF/tq3B4Z43x3zKWpYeb4IM3d/Mf4oMYcNuoXOYEaqtoFlLHw9zd7+WNN3jNh6/WXyUrD3OIiwQ==", "dev": true }, "postcss-selector-parser": { @@ -41872,9 +41569,9 @@ } }, "supports-hyperlinks": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.1.0.tgz", - "integrity": "sha512-2rn0BZ+/f7puLOHZm1HOJfwBggfaHXUpPUSSG/SWM4TWp5KCfmNYwnC3hruy2rZlMnmWZ+QAGpZfchu3f3695A==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.2.0.tgz", + "integrity": "sha512-zFObLMyZeEwzAoKCyu1B91U79K2t7ApXuQfo8OuxwXLDgcKxuwM+YvcbIhm6QWqz7mHUH1TVytR1PwVVjEuMig==", "dev": true, "requires": { "has-flag": "^4.0.0", @@ -42527,135 +42224,20 @@ } }, "typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", + "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", "dev": true }, "typescript-eslint": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.24.1.tgz", - "integrity": "sha512-cw3rEdzDqBs70TIcb0Gdzbt6h11BSs2pS0yaq7hDWDBtCCSei1pPSUXE9qUdQ/Wm9NgFg8mKtMt1b8fTHIl1jA==", + "version": "8.26.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.26.1.tgz", + "integrity": "sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==", "dev": true, "requires": { - "@typescript-eslint/eslint-plugin": "8.24.1", - "@typescript-eslint/parser": "8.24.1", - "@typescript-eslint/utils": "8.24.1" - }, - "dependencies": { - "@typescript-eslint/eslint-plugin": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.24.1.tgz", - "integrity": "sha512-ll1StnKtBigWIGqvYDVuDmXJHVH4zLVot1yQ4fJtLpL7qacwkxJc1T0bptqw+miBQ/QfUbhl1TcQ4accW5KUyA==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/type-utils": "8.24.1", - "@typescript-eslint/utils": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", - "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1" - } - }, - "@typescript-eslint/type-utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", - "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", - "dev": true, - "requires": { - "@typescript-eslint/typescript-estree": "8.24.1", - "@typescript-eslint/utils": "8.24.1", - "debug": "^4.3.4", - "ts-api-utils": "^2.0.1" - } - }, - "@typescript-eslint/types": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", - "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", - "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/visitor-keys": "8.24.1", - "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": "^2.0.1" - } - }, - "@typescript-eslint/utils": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", - "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.24.1", - "@typescript-eslint/types": "8.24.1", - "@typescript-eslint/typescript-estree": "8.24.1" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "8.24.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", - "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.24.1", - "eslint-visitor-keys": "^4.2.0" - } - }, - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "eslint-visitor-keys": { - "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==", - "dev": true - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "dev": true - } + "@typescript-eslint/eslint-plugin": "8.26.1", + "@typescript-eslint/parser": "8.26.1", + "@typescript-eslint/utils": "8.26.1" } }, "uc.micro": { @@ -43004,59 +42586,46 @@ "fsevents": "~2.3.3", "postcss": "^8.5.2", "rollup": "^4.30.1" - }, - "dependencies": { - "postcss": { - "version": "8.5.3", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", - "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", - "dev": true, - "requires": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - } - } } }, "vite-node": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.5.tgz", - "integrity": "sha512-02JEJl7SbtwSDJdYS537nU6l+ktdvcREfLksk/NDAqtdKWGqHl+joXzEubHROmS3E6pip+Xgu2tFezMu75jH7A==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.8.tgz", + "integrity": "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==", "dev": true, "requires": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.6.0", - "pathe": "^2.0.2", + "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0" } }, "vitest": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.5.tgz", - "integrity": "sha512-4dof+HvqONw9bvsYxtkfUp2uHsTN9bV2CZIi1pWgoFpL1Lld8LA1ka9q/ONSsoScAKG7NVGf2stJTI7XRkXb2Q==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.8.tgz", + "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==", "dev": true, "requires": { - "@vitest/expect": "3.0.5", - "@vitest/mocker": "3.0.5", - "@vitest/pretty-format": "^3.0.5", - "@vitest/runner": "3.0.5", - "@vitest/snapshot": "3.0.5", - "@vitest/spy": "3.0.5", - "@vitest/utils": "3.0.5", - "chai": "^5.1.2", + "@vitest/expect": "3.0.8", + "@vitest/mocker": "3.0.8", + "@vitest/pretty-format": "^3.0.8", + "@vitest/runner": "3.0.8", + "@vitest/snapshot": "3.0.8", + "@vitest/spy": "3.0.8", + "@vitest/utils": "3.0.8", + "chai": "^5.2.0", "debug": "^4.4.0", "expect-type": "^1.1.0", "magic-string": "^0.30.17", - "pathe": "^2.0.2", + "pathe": "^2.0.3", "std-env": "^3.8.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.5", + "vite-node": "3.0.8", "why-is-node-running": "^2.3.0" } }, diff --git a/package.json b/package.json index 48d6e68e94..a6a30ab1db 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,8 @@ "@babel/preset-env": "7.26.9", "@babel/preset-react": "7.26.3", "@eslint-community/eslint-plugin-eslint-comments": "4.4.1", - "@eslint/js": "9.20.0", - "@stylistic/eslint-plugin": "3.1.0", + "@eslint/js": "9.22.0", + "@stylistic/eslint-plugin": "4.2.0", "@stylistic/stylelint-plugin": "3.1.2", "@types/dompurify": "3.0.5", "@types/escape-html": "1.0.4", @@ -22,10 +22,10 @@ "@types/react-dom": "18.3.1", "@types/react-lazy-load-image-component": "1.6.4", "@types/sortablejs": "1.15.8", - "@typescript-eslint/parser": "8.24.1", + "@typescript-eslint/parser": "8.26.1", "@uupaa/dynamic-import-polyfill": "1.0.2", - "@vitest/coverage-v8": "3.0.5", - "autoprefixer": "10.4.20", + "@vitest/coverage-v8": "3.0.8", + "autoprefixer": "10.4.21", "babel-loader": "9.2.1", "clean-webpack-plugin": "4.0.0", "confusing-browser-globals": "1.0.11", @@ -34,38 +34,38 @@ "css-loader": "7.1.2", "cssnano": "7.0.6", "es-check": "7.2.1", - "eslint": "9.20.1", + "eslint": "9.22.0", "eslint-plugin-compat": "6.0.2", "eslint-plugin-import": "2.31.0", "eslint-plugin-jsx-a11y": "6.10.2", "eslint-plugin-react": "7.37.4", - "eslint-plugin-react-hooks": "5.1.0", + "eslint-plugin-react-hooks": "5.2.0", "eslint-plugin-sonarjs": "3.0.2", "expose-loader": "5.0.1", "fork-ts-checker-webpack-plugin": "9.0.2", - "globals": "15.15.0", + "globals": "16.0.0", "html-loader": "5.1.0", "html-webpack-plugin": "5.6.3", "jsdom": "25.0.1", "mini-css-extract-plugin": "2.9.2", - "postcss": "8.5.2", + "postcss": "8.5.3", "postcss-loader": "8.1.1", - "postcss-preset-env": "10.1.4", + "postcss-preset-env": "10.1.5", "postcss-scss": "4.0.9", - "sass": "1.85.0", + "sass": "1.85.1", "sass-loader": "16.0.5", "source-map-loader": "5.0.0", "speed-measure-webpack-plugin": "1.5.0", "style-loader": "4.0.0", - "stylelint": "16.14.1", + "stylelint": "16.15.0", "stylelint-config-rational-order": "0.1.2", "stylelint-no-browser-hacks": "1.3.0", "stylelint-order": "6.0.4", - "stylelint-scss": "6.11.0", + "stylelint-scss": "6.11.1", "ts-loader": "9.5.2", - "typescript": "5.7.3", - "typescript-eslint": "8.24.1", - "vitest": "3.0.5", + "typescript": "5.8.2", + "typescript-eslint": "8.26.1", + "vitest": "3.0.8", "webpack": "5.98.0", "webpack-bundle-analyzer": "4.10.2", "webpack-cli": "5.1.4", @@ -74,27 +74,27 @@ "worker-loader": "3.0.8" }, "dependencies": { - "@emotion/react": "11.13.3", - "@emotion/styled": "11.13.0", - "@fontsource/noto-sans": "5.1.1", - "@fontsource/noto-sans-hk": "5.1.1", - "@fontsource/noto-sans-jp": "5.1.1", - "@fontsource/noto-sans-kr": "5.1.1", - "@fontsource/noto-sans-sc": "5.1.1", - "@fontsource/noto-sans-tc": "5.1.1", + "@emotion/react": "11.14.0", + "@emotion/styled": "11.14.0", + "@fontsource/noto-sans": "5.2.5", + "@fontsource/noto-sans-hk": "5.2.5", + "@fontsource/noto-sans-jp": "5.2.5", + "@fontsource/noto-sans-kr": "5.2.5", + "@fontsource/noto-sans-sc": "5.2.5", + "@fontsource/noto-sans-tc": "5.2.5", "@jellyfin/libass-wasm": "4.2.3", - "@jellyfin/sdk": "0.0.0-unstable.202502210501", + "@jellyfin/sdk": "0.0.0-unstable.202503200501", "@mui/icons-material": "5.16.14", "@mui/material": "5.16.14", "@mui/x-date-pickers": "7.26.0", "@react-hook/resize-observer": "2.0.2", - "@tanstack/react-query": "5.62.16", - "@tanstack/react-query-devtools": "5.62.16", + "@tanstack/react-query": "5.67.3", + "@tanstack/react-query-devtools": "5.67.3", "abortcontroller-polyfill": "1.7.8", "blurhash": "2.0.5", "classlist.js": "https://github.com/eligrey/classList.js/archive/1.2.20180112.tar.gz", "classnames": "2.5.1", - "core-js": "3.38.1", + "core-js": "3.41.0", "date-fns": "2.30.0", "dompurify": "2.5.8", "epubjs": "0.3.93", @@ -130,7 +130,7 @@ "whatwg-fetch": "3.6.20" }, "optionalDependencies": { - "sass-embedded": "1.85.0" + "sass-embedded": "1.85.1" }, "browserslist": [ "last 2 Firefox versions", diff --git a/src/apps/dashboard/controllers/general.html b/src/apps/dashboard/controllers/general.html deleted file mode 100644 index 80ea02d52d..0000000000 --- a/src/apps/dashboard/controllers/general.html +++ /dev/null @@ -1,84 +0,0 @@ -
-
-
-
-
-
-

${Settings}

-
-
- -
-
- -
${LabelServerNameHelp}
-
-
- -
-
${LabelDisplayLanguageHelp}
- -
-
-
- -
-

${HeaderPaths}

-
-
-
- -
- -
-
${LabelCachePathHelp}
-
- -
-
-
- -
- -
-
${LabelMetadataPathHelp}
- -
-
- -
-
-

${QuickConnect}

-
-
- -
- -
- -
-

${HeaderPerformance}

-
- -
${LibraryScanFanoutConcurrencyHelp}
-
-
- -
${LabelParallelImageEncodingLimitHelp}
-
-
-
-
- -
-
-
-
-
diff --git a/src/apps/dashboard/controllers/general.js b/src/apps/dashboard/controllers/general.js deleted file mode 100644 index 0a2fc98f82..0000000000 --- a/src/apps/dashboard/controllers/general.js +++ /dev/null @@ -1,105 +0,0 @@ -import 'jquery'; - -import loading from 'components/loading/loading'; -import globalize from 'lib/globalize'; -import 'elements/emby-checkbox/emby-checkbox'; -import 'elements/emby-textarea/emby-textarea'; -import 'elements/emby-input/emby-input'; -import 'elements/emby-select/emby-select'; -import 'elements/emby-button/emby-button'; -import Dashboard from 'utils/dashboard'; -import alert from 'components/alert'; - -function loadPage(page, config, languageOptions, systemInfo) { - page.querySelector('#txtServerName').value = systemInfo.ServerName; - page.querySelector('#txtCachePath').value = systemInfo.CachePath || ''; - page.querySelector('#chkQuickConnectAvailable').checked = config.QuickConnectAvailable === true; - page.querySelector('#txtMetadataPath').value = systemInfo.InternalMetadataPath || ''; - page.querySelector('#txtMetadataNetworkPath').value = systemInfo.MetadataNetworkPath || ''; - const localizationLanguageElem = page.querySelector('#selectLocalizationLanguage'); - localizationLanguageElem.innerHTML = languageOptions.map(function (language) { - return ''; - }).join(''); - localizationLanguageElem.value = config.UICulture; - page.querySelector('#txtLibraryScanFanoutConcurrency').value = config.LibraryScanFanoutConcurrency || ''; - page.querySelector('#txtParallelImageEncodingLimit').value = config.ParallelImageEncodingLimit || ''; - - loading.hide(); -} - -function onSubmit() { - loading.show(); - const form = this; - ApiClient.getServerConfiguration().then(function (config) { - config.ServerName = form.querySelector('#txtServerName').value; - config.UICulture = form.querySelector('#selectLocalizationLanguage').value; - config.CachePath = form.querySelector('#txtCachePath').value; - config.MetadataPath = form.querySelector('#txtMetadataPath').value; - config.MetadataNetworkPath = form.querySelector('#txtMetadataNetworkPath').value; - config.QuickConnectAvailable = form.querySelector('#chkQuickConnectAvailable').checked; - config.LibraryScanFanoutConcurrency = parseInt(form.querySelector('#txtLibraryScanFanoutConcurrency').value || '0', 10); - config.ParallelImageEncodingLimit = parseInt(form.querySelector('#txtParallelImageEncodingLimit').value || '0', 10); - - return ApiClient.updateServerConfiguration(config) - .then(() => { - Dashboard.processServerConfigurationUpdateResult(); - }).catch(() => { - loading.hide(); - alert(globalize.translate('ErrorDefault')); - }); - }); - return false; -} - -export default function (view) { - $('#btnSelectCachePath', view).on('click.selectDirectory', function () { - import('components/directorybrowser/directorybrowser').then(({ default: DirectoryBrowser }) => { - const picker = new DirectoryBrowser(); - picker.show({ - callback: function (path) { - if (path) { - view.querySelector('#txtCachePath').value = path; - } - - picker.close(); - }, - validateWriteable: true, - header: globalize.translate('HeaderSelectServerCachePath'), - instruction: globalize.translate('HeaderSelectServerCachePathHelp') - }); - }); - }); - $('#btnSelectMetadataPath', view).on('click.selectDirectory', function () { - import('components/directorybrowser/directorybrowser').then(({ default: DirectoryBrowser }) => { - const picker = new DirectoryBrowser(); - picker.show({ - path: view.querySelector('#txtMetadataPath').value, - networkSharePath: view.querySelector('#txtMetadataNetworkPath').value, - callback: function (path, networkPath) { - if (path) { - view.querySelector('#txtMetadataPath').value = path; - } - - if (networkPath) { - view.querySelector('#txtMetadataNetworkPath').value = networkPath; - } - - picker.close(); - }, - validateWriteable: true, - header: globalize.translate('HeaderSelectMetadataPath'), - instruction: globalize.translate('HeaderSelectMetadataPathHelp') - }); - }); - }); - $('.dashboardGeneralForm', view).off('submit', onSubmit).on('submit', onSubmit); - view.addEventListener('viewshow', function () { - const promiseConfig = ApiClient.getServerConfiguration(); - const promiseLanguageOptions = ApiClient.getJSON(ApiClient.getUrl('Localization/Options')); - const promiseSystemInfo = ApiClient.getSystemInfo(); - Promise.all([promiseConfig, promiseLanguageOptions, promiseSystemInfo]).then(function (responses) { - loadPage(view, responses[0], responses[1], responses[2]); - }); - }); -} - diff --git a/src/apps/dashboard/features/settings/api/useLocalizationOptions.ts b/src/apps/dashboard/features/settings/api/useLocalizationOptions.ts new file mode 100644 index 0000000000..46a884a396 --- /dev/null +++ b/src/apps/dashboard/features/settings/api/useLocalizationOptions.ts @@ -0,0 +1,21 @@ +import { Api } from '@jellyfin/sdk'; +import { getLocalizationApi } from '@jellyfin/sdk/lib/utils/api/localization-api'; +import { useQuery } from '@tanstack/react-query'; +import { useApi } from 'hooks/useApi'; +import type { AxiosRequestConfig } from 'axios'; + +const fetchLocalizationOptions = async (api: Api, options?: AxiosRequestConfig) => { + const response = await getLocalizationApi(api).getLocalizationOptions(options); + + return response.data; +}; + +export const useLocalizationOptions = () => { + const { api } = useApi(); + + return useQuery({ + queryKey: [ 'LocalizationOptions' ], + queryFn: ({ signal }) => fetchLocalizationOptions(api!, { signal }), + enabled: !!api + }); +}; diff --git a/src/apps/dashboard/routes/_asyncRoutes.ts b/src/apps/dashboard/routes/_asyncRoutes.ts index 1b65cd44c0..2ab21c5d4f 100644 --- a/src/apps/dashboard/routes/_asyncRoutes.ts +++ b/src/apps/dashboard/routes/_asyncRoutes.ts @@ -5,6 +5,7 @@ export const ASYNC_ADMIN_ROUTES: AsyncRoute[] = [ { path: 'activity', type: AppType.Dashboard }, { path: 'branding', type: AppType.Dashboard }, { path: 'devices', type: AppType.Dashboard }, + { path: 'settings', type: AppType.Dashboard }, { path: 'keys', type: AppType.Dashboard }, { path: 'libraries/display', type: AppType.Dashboard }, { path: 'libraries/metadata', type: AppType.Dashboard }, diff --git a/src/apps/dashboard/routes/_legacyRoutes.ts b/src/apps/dashboard/routes/_legacyRoutes.ts index 3227988735..ceedb72651 100644 --- a/src/apps/dashboard/routes/_legacyRoutes.ts +++ b/src/apps/dashboard/routes/_legacyRoutes.ts @@ -9,13 +9,6 @@ export const LEGACY_ADMIN_ROUTES: LegacyRoute[] = [ controller: 'dashboard', view: 'dashboard.html' } - }, { - path: 'settings', - pageProps: { - appType: AppType.Dashboard, - controller: 'general', - view: 'general.html' - } }, { path: 'networking', pageProps: { diff --git a/src/apps/dashboard/routes/settings/index.tsx b/src/apps/dashboard/routes/settings/index.tsx new file mode 100644 index 0000000000..376b277288 --- /dev/null +++ b/src/apps/dashboard/routes/settings/index.tsx @@ -0,0 +1,267 @@ +import Alert from '@mui/material/Alert'; +import Box from '@mui/material/Box'; +import IconButton from '@mui/material/IconButton'; +import MenuItem from '@mui/material/MenuItem'; +import Stack from '@mui/material/Stack'; +import TextField from '@mui/material/TextField'; +import Typography from '@mui/material/Typography'; +import { useLocalizationOptions } from 'apps/dashboard/features/settings/api/useLocalizationOptions'; +import Loading from 'components/loading/LoadingComponent'; +import Page from 'components/Page'; +import { QUERY_KEY, useConfiguration } from 'hooks/useConfiguration'; +import { useSystemInfo } from 'hooks/useSystemInfo'; +import globalize from 'lib/globalize'; +import React, { useCallback, useEffect, useState } from 'react'; +import { type ActionFunctionArgs, Form, useActionData, useNavigation } from 'react-router-dom'; +import SearchIcon from '@mui/icons-material/Search'; +import InputAdornment from '@mui/material/InputAdornment'; +import FormControl from '@mui/material/FormControl'; +import FormControlLabel from '@mui/material/FormControlLabel'; +import Checkbox from '@mui/material/Checkbox'; +import Button from '@mui/material/Button'; +import Link from '@mui/material/Link'; +import DirectoryBrowser from 'components/directorybrowser/directorybrowser'; +import ServerConnections from 'components/ServerConnections'; +import { getConfigurationApi } from '@jellyfin/sdk/lib/utils/api/configuration-api'; +import { queryClient } from 'utils/query/queryClient'; +import { ActionData } from 'types/actionData'; + +export const action = async ({ request }: ActionFunctionArgs) => { + const api = ServerConnections.getCurrentApi(); + if (!api) throw new Error('No Api instance available'); + + const { data: config } = await getConfigurationApi(api).getConfiguration(); + const formData = await request.formData(); + + config.ServerName = formData.get('ServerName')?.toString(); + config.UICulture = formData.get('UICulture')?.toString(); + config.CachePath = formData.get('CachePath')?.toString(); + config.MetadataPath = formData.get('MetadataPath')?.toString(); + config.QuickConnectAvailable = formData.get('QuickConnectAvailable')?.toString() === 'on'; + config.LibraryScanFanoutConcurrency = parseInt(formData.get('LibraryScanFanoutConcurrency')?.toString() || '0', 10); + config.ParallelImageEncodingLimit = parseInt(formData.get('ParallelImageEncodingLimit')?.toString() || '0', 10); + + await getConfigurationApi(api) + .updateConfiguration({ serverConfiguration: config }); + + void queryClient.invalidateQueries({ + queryKey: [ QUERY_KEY ] + }); + + return { + isSaved: true + }; +}; + +export const Component = () => { + const { + data: config, + isPending: isConfigPending, + isError: isConfigError + } = useConfiguration(); + const { + data: languageOptions, + isPending: isLocalizationOptionsPending, + isError: isLocalizationOptionsError + } = useLocalizationOptions(); + const { + data: systemInfo, + isPending: isSystemInfoPending, + isError: isSystemInfoError + } = useSystemInfo(); + + const navigation = useNavigation(); + const actionData = useActionData() as ActionData | undefined; + const isSubmitting = navigation.state === 'submitting'; + const [ cachePath, setCachePath ] = useState(''); + const [ metadataPath, setMetadataPath ] = useState(''); + + const onCachePathChange = useCallback((event: React.ChangeEvent) => { + setCachePath(event.target.value); + }, []); + + const onMetadataPathChange = useCallback((event: React.ChangeEvent) => { + setMetadataPath(event.target.value); + }, []); + + const showCachePathPicker = useCallback(() => { + const picker = new DirectoryBrowser(); + + picker.show({ + callback: function (path: string) { + if (path) { + setCachePath(path); + } + + picker.close(); + }, + validateWriteable: true, + header: globalize.translate('HeaderSelectServerCachePath'), + instruction: globalize.translate('HeaderSelectServerCachePathHelp') + }); + }, []); + + const showMetadataPathPicker = useCallback(() => { + const picker = new DirectoryBrowser(); + + picker.show({ + path: metadataPath, + callback: function (path: string) { + if (path) { + setMetadataPath(path); + } + + picker.close(); + }, + validateWriteable: true, + header: globalize.translate('HeaderSelectMetadataPath'), + instruction: globalize.translate('HeaderSelectMetadataPathHelp') + }); + }, [metadataPath]); + + useEffect(() => { + if (!isSystemInfoPending && !isSystemInfoError) { + setCachePath(systemInfo.CachePath); + setMetadataPath(systemInfo.InternalMetadataPath); + } + }, [systemInfo, isSystemInfoPending, isSystemInfoError]); + + if (isConfigPending || isLocalizationOptionsPending || isSystemInfoPending) { + return ; + } + + return ( + + + {isConfigError || isLocalizationOptionsError || isSystemInfoError ? ( + {globalize.translate('SettingsPageLoadError')} + ) : ( +
+ + {globalize.translate('Settings')} + + {!isSubmitting && actionData?.isSaved && ( + + {globalize.translate('SettingsSaved')} + + )} + + + + + {globalize.translate('LabelDisplayLanguageHelp')} + + {globalize.translate('LearnHowYouCanContribute')} + + + )} + defaultValue={config.UICulture} + > + {languageOptions.map((language) => + {language.Name} + )} + + + {globalize.translate('HeaderPaths')} + + + + + + + ) + }} + /> + + + + + + + ) + }} + /> + + {globalize.translate('QuickConnect')} + + + + } + label={globalize.translate('EnableQuickConnect')} + /> + + + {globalize.translate('HeaderPerformance')} + + + + + + + +
+ )} +
+
+ ); +}; + +Component.displayName = 'SettingsPage'; diff --git a/src/apps/dashboard/routes/users/profile.tsx b/src/apps/dashboard/routes/users/profile.tsx index 2f98d67bd3..36afb9ca9f 100644 --- a/src/apps/dashboard/routes/users/profile.tsx +++ b/src/apps/dashboard/routes/users/profile.tsx @@ -298,7 +298,7 @@ const UserEdit = () => { className='lnkEditUserPreferencesContainer' style={{ paddingBottom: '1em' }} > - + {globalize.translate('ButtonEditOtherUserPreferences')} diff --git a/src/apps/experimental/components/AppToolbar/SearchButton.tsx b/src/apps/experimental/components/AppToolbar/SearchButton.tsx index 3d002ee57c..c0fbea9266 100644 --- a/src/apps/experimental/components/AppToolbar/SearchButton.tsx +++ b/src/apps/experimental/components/AppToolbar/SearchButton.tsx @@ -35,13 +35,13 @@ const SearchButton: FC = ({ isTabsAvailable }) => { const location = useLocation(); const [searchParams] = useSearchParams(); - const isSearchPath = location.pathname === '/search.html'; + const isSearchPath = location.pathname === '/search'; const createSearchLink = isTabsAvailable ? { - pathname: '/search.html', + pathname: '/search', search: `?${createSearchParams(getUrlParams(searchParams))}` } : - '/search.html'; + '/search'; return ( diff --git a/src/apps/experimental/components/AppToolbar/index.tsx b/src/apps/experimental/components/AppToolbar/index.tsx index e8463ea803..df46cc1233 100644 --- a/src/apps/experimental/components/AppToolbar/index.tsx +++ b/src/apps/experimental/components/AppToolbar/index.tsx @@ -14,11 +14,11 @@ interface AppToolbarProps { } const PUBLIC_PATHS = [ - '/addserver.html', - '/selectserver.html', - '/login.html', - '/forgotpassword.html', - '/forgotpasswordpin.html' + '/addserver', + '/selectserver', + '/login', + '/forgotpassword', + '/forgotpasswordpin' ]; const ExperimentalAppToolbar: FC = ({ diff --git a/src/apps/experimental/components/drawers/MainDrawerContent.tsx b/src/apps/experimental/components/drawers/MainDrawerContent.tsx index 46c797ac96..e15b833616 100644 --- a/src/apps/experimental/components/drawers/MainDrawerContent.tsx +++ b/src/apps/experimental/components/drawers/MainDrawerContent.tsx @@ -30,7 +30,7 @@ const MainDrawerContent = () => { const userViews = userViewsData?.Items || []; const webConfig = useWebConfig(); - const isHomeSelected = location.pathname === '/home.html' && (!location.search || location.search === '?tab=0'); + const isHomeSelected = location.pathname === '/home' && (!location.search || location.search === '?tab=0'); return ( <> @@ -40,7 +40,7 @@ const MainDrawerContent = () => { - + @@ -48,7 +48,7 @@ const MainDrawerContent = () => { - + diff --git a/src/apps/experimental/components/tabs/tabRoutes.ts b/src/apps/experimental/components/tabs/tabRoutes.ts index c1a9ff9cf1..1fb388f603 100644 --- a/src/apps/experimental/components/tabs/tabRoutes.ts +++ b/src/apps/experimental/components/tabs/tabRoutes.ts @@ -36,7 +36,7 @@ export const getDefaultTabIndex = (path: string, libraryId?: string | null) => { const TabRoutes: TabRoute[] = [ { - path: '/livetv.html', + path: '/livetv', tabs: [ { index: 0, @@ -72,7 +72,7 @@ const TabRoutes: TabRoute[] = [ ] }, { - path: '/movies.html', + path: '/movies', tabs: [ { index: 0, @@ -108,7 +108,7 @@ const TabRoutes: TabRoute[] = [ ] }, { - path: '/music.html', + path: '/music', tabs: [ { index: 0, @@ -149,7 +149,7 @@ const TabRoutes: TabRoute[] = [ ] }, { - path: '/tv.html', + path: '/tv', tabs: [ { index: 0, @@ -185,7 +185,7 @@ const TabRoutes: TabRoute[] = [ ] }, { - path: '/homevideos.html', + path: '/homevideos', tabs: [ { index: 0, diff --git a/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx b/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx index 2f9cb360b7..f042316912 100644 --- a/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx +++ b/src/apps/experimental/features/details/components/buttons/CancelSeriesTimerButton.tsx @@ -36,7 +36,7 @@ const CancelSeriesTimerButton: FC = ({ onSuccess: async () => { toast(globalize.translate('SeriesCancelled')); loading.hide(); - navigate('/livetv.html'); + navigate('/livetv'); }, onError: (err: unknown) => { loading.hide(); diff --git a/src/apps/experimental/routes/asyncRoutes/user.ts b/src/apps/experimental/routes/asyncRoutes/user.ts index 7c9fd8ba5a..59a88990b8 100644 --- a/src/apps/experimental/routes/asyncRoutes/user.ts +++ b/src/apps/experimental/routes/asyncRoutes/user.ts @@ -2,14 +2,14 @@ import { AsyncRoute } from 'components/router/AsyncRoute'; import { AppType } from 'constants/appType'; export const ASYNC_USER_ROUTES: AsyncRoute[] = [ - { path: 'home.html', page: 'home', type: AppType.Experimental }, + { path: 'home', page: 'home', type: AppType.Experimental }, { path: 'quickconnect', page: 'quickConnect' }, - { path: 'search.html', page: 'search' }, - { path: 'userprofile.html', page: 'user/userprofile' }, - { path: 'movies.html', page: 'movies', type: AppType.Experimental }, - { path: 'tv.html', page: 'shows', type: AppType.Experimental }, - { path: 'music.html', page: 'music', type: AppType.Experimental }, - { path: 'livetv.html', page: 'livetv', type: AppType.Experimental }, - { path: 'mypreferencesdisplay.html', page: 'user/display', type: AppType.Experimental }, - { path: 'homevideos.html', page: 'homevideos', type: AppType.Experimental } + { path: 'search', page: 'search' }, + { path: 'userprofile', page: 'user/userprofile' }, + { path: 'movies', page: 'movies', type: AppType.Experimental }, + { path: 'tv', page: 'shows', type: AppType.Experimental }, + { path: 'music', page: 'music', type: AppType.Experimental }, + { path: 'livetv', page: 'livetv', type: AppType.Experimental }, + { path: 'mypreferencesdisplay', page: 'user/display', type: AppType.Experimental }, + { path: 'homevideos', page: 'homevideos', type: AppType.Experimental } ]; diff --git a/src/apps/experimental/routes/legacyRoutes/public.ts b/src/apps/experimental/routes/legacyRoutes/public.ts index 1fec40eaad..89fc179354 100644 --- a/src/apps/experimental/routes/legacyRoutes/public.ts +++ b/src/apps/experimental/routes/legacyRoutes/public.ts @@ -2,77 +2,77 @@ import { LegacyRoute } from '../../../../components/router/LegacyRoute'; export const LEGACY_PUBLIC_ROUTES: LegacyRoute[] = [ { - path: 'addserver.html', + path: 'addserver', pageProps: { controller: 'session/addServer/index', view: 'session/addServer/index.html' } }, { - path: 'selectserver.html', + path: 'selectserver', pageProps: { controller: 'session/selectServer/index', view: 'session/selectServer/index.html' } }, { - path: 'login.html', + path: 'login', pageProps: { controller: 'session/login/index', view: 'session/login/index.html' } }, { - path: 'forgotpassword.html', + path: 'forgotpassword', pageProps: { controller: 'session/forgotPassword/index', view: 'session/forgotPassword/index.html' } }, { - path: 'forgotpasswordpin.html', + path: 'forgotpasswordpin', pageProps: { controller: 'session/resetPassword/index', view: 'session/resetPassword/index.html' } }, { - path: 'wizardremoteaccess.html', + path: 'wizardremoteaccess', pageProps: { controller: 'wizard/remote/index', view: 'wizard/remote/index.html' } }, { - path: 'wizardfinish.html', + path: 'wizardfinish', pageProps: { controller: 'wizard/finish/index', view: 'wizard/finish/index.html' } }, { - path: 'wizardlibrary.html', + path: 'wizardlibrary', pageProps: { controller: 'wizard/library', view: 'wizard/library.html' } }, { - path: 'wizardsettings.html', + path: 'wizardsettings', pageProps: { controller: 'wizard/settings/index', view: 'wizard/settings/index.html' } }, { - path: 'wizardstart.html', + path: 'wizardstart', pageProps: { controller: 'wizard/start/index', view: 'wizard/start/index.html' } }, { - path: 'wizarduser.html', + path: 'wizarduser', pageProps: { controller: 'wizard/user/index', view: 'wizard/user/index.html' diff --git a/src/apps/experimental/routes/legacyRoutes/user.ts b/src/apps/experimental/routes/legacyRoutes/user.ts index 2045495a10..7ba85448e0 100644 --- a/src/apps/experimental/routes/legacyRoutes/user.ts +++ b/src/apps/experimental/routes/legacyRoutes/user.ts @@ -8,7 +8,7 @@ export const LEGACY_USER_ROUTES: LegacyRoute[] = [ view: 'itemDetails/index.html' } }, { - path: 'list.html', + path: 'list', pageProps: { controller: 'list', view: 'list.html' @@ -20,31 +20,31 @@ export const LEGACY_USER_ROUTES: LegacyRoute[] = [ view: 'lyrics.html' } }, { - path: 'mypreferencesmenu.html', + path: 'mypreferencesmenu', pageProps: { controller: 'user/menu/index', view: 'user/menu/index.html' } }, { - path: 'mypreferencescontrols.html', + path: 'mypreferencescontrols', pageProps: { controller: 'user/controls/index', view: 'user/controls/index.html' } }, { - path: 'mypreferenceshome.html', + path: 'mypreferenceshome', pageProps: { controller: 'user/home/index', view: 'user/home/index.html' } }, { - path: 'mypreferencesplayback.html', + path: 'mypreferencesplayback', pageProps: { controller: 'user/playback/index', view: 'user/playback/index.html' } }, { - path: 'mypreferencessubtitles.html', + path: 'mypreferencessubtitles', pageProps: { controller: 'user/subtitles/index', view: 'user/subtitles/index.html' diff --git a/src/apps/experimental/routes/routes.tsx b/src/apps/experimental/routes/routes.tsx index d0c5deab09..533972b899 100644 --- a/src/apps/experimental/routes/routes.tsx +++ b/src/apps/experimental/routes/routes.tsx @@ -16,7 +16,7 @@ export const EXPERIMENTAL_APP_ROUTES: RouteObject[] = [ path: '/*', lazy: () => import('../AppLayout'), children: [ - { index: true, element: }, + { index: true, element: }, { /* User routes */ diff --git a/src/apps/stable/routes/asyncRoutes/user.ts b/src/apps/stable/routes/asyncRoutes/user.ts index 153e310b35..1074053e61 100644 --- a/src/apps/stable/routes/asyncRoutes/user.ts +++ b/src/apps/stable/routes/asyncRoutes/user.ts @@ -2,6 +2,6 @@ import { AsyncRoute } from '../../../../components/router/AsyncRoute'; export const ASYNC_USER_ROUTES: AsyncRoute[] = [ { path: 'quickconnect', page: 'quickConnect' }, - { path: 'search.html', page: 'search' }, - { path: 'userprofile.html', page: 'user/userprofile' } + { path: 'search', page: 'search' }, + { path: 'userprofile', page: 'user/userprofile' } ]; diff --git a/src/apps/stable/routes/legacyRoutes/public.ts b/src/apps/stable/routes/legacyRoutes/public.ts index 1fec40eaad..89fc179354 100644 --- a/src/apps/stable/routes/legacyRoutes/public.ts +++ b/src/apps/stable/routes/legacyRoutes/public.ts @@ -2,77 +2,77 @@ import { LegacyRoute } from '../../../../components/router/LegacyRoute'; export const LEGACY_PUBLIC_ROUTES: LegacyRoute[] = [ { - path: 'addserver.html', + path: 'addserver', pageProps: { controller: 'session/addServer/index', view: 'session/addServer/index.html' } }, { - path: 'selectserver.html', + path: 'selectserver', pageProps: { controller: 'session/selectServer/index', view: 'session/selectServer/index.html' } }, { - path: 'login.html', + path: 'login', pageProps: { controller: 'session/login/index', view: 'session/login/index.html' } }, { - path: 'forgotpassword.html', + path: 'forgotpassword', pageProps: { controller: 'session/forgotPassword/index', view: 'session/forgotPassword/index.html' } }, { - path: 'forgotpasswordpin.html', + path: 'forgotpasswordpin', pageProps: { controller: 'session/resetPassword/index', view: 'session/resetPassword/index.html' } }, { - path: 'wizardremoteaccess.html', + path: 'wizardremoteaccess', pageProps: { controller: 'wizard/remote/index', view: 'wizard/remote/index.html' } }, { - path: 'wizardfinish.html', + path: 'wizardfinish', pageProps: { controller: 'wizard/finish/index', view: 'wizard/finish/index.html' } }, { - path: 'wizardlibrary.html', + path: 'wizardlibrary', pageProps: { controller: 'wizard/library', view: 'wizard/library.html' } }, { - path: 'wizardsettings.html', + path: 'wizardsettings', pageProps: { controller: 'wizard/settings/index', view: 'wizard/settings/index.html' } }, { - path: 'wizardstart.html', + path: 'wizardstart', pageProps: { controller: 'wizard/start/index', view: 'wizard/start/index.html' } }, { - path: 'wizarduser.html', + path: 'wizarduser', pageProps: { controller: 'wizard/user/index', view: 'wizard/user/index.html' diff --git a/src/apps/stable/routes/legacyRoutes/user.ts b/src/apps/stable/routes/legacyRoutes/user.ts index 19b87c7cd8..9abbefefee 100644 --- a/src/apps/stable/routes/legacyRoutes/user.ts +++ b/src/apps/stable/routes/legacyRoutes/user.ts @@ -8,13 +8,13 @@ export const LEGACY_USER_ROUTES: LegacyRoute[] = [ view: 'itemDetails/index.html' } }, { - path: 'list.html', + path: 'list', pageProps: { controller: 'list', view: 'list.html' } }, { - path: 'livetv.html', + path: 'livetv', pageProps: { controller: 'livetv/livetvsuggested', view: 'livetv.html' @@ -26,49 +26,49 @@ export const LEGACY_USER_ROUTES: LegacyRoute[] = [ view: 'lyrics.html' } }, { - path: 'music.html', + path: 'music', pageProps: { controller: 'music/musicrecommended', view: 'music/music.html' } }, { - path: 'mypreferencesmenu.html', + path: 'mypreferencesmenu', pageProps: { controller: 'user/menu/index', view: 'user/menu/index.html' } }, { - path: 'mypreferencescontrols.html', + path: 'mypreferencescontrols', pageProps: { controller: 'user/controls/index', view: 'user/controls/index.html' } }, { - path: 'mypreferencesdisplay.html', + path: 'mypreferencesdisplay', pageProps: { controller: 'user/display/index', view: 'user/display/index.html' } }, { - path: 'mypreferenceshome.html', + path: 'mypreferenceshome', pageProps: { controller: 'user/home/index', view: 'user/home/index.html' } }, { - path: 'mypreferencesplayback.html', + path: 'mypreferencesplayback', pageProps: { controller: 'user/playback/index', view: 'user/playback/index.html' } }, { - path: 'mypreferencessubtitles.html', + path: 'mypreferencessubtitles', pageProps: { controller: 'user/subtitles/index', view: 'user/subtitles/index.html' } }, { - path: 'tv.html', + path: 'tv', pageProps: { controller: 'shows/tvrecommended', view: 'shows/tvrecommended.html' @@ -93,13 +93,13 @@ export const LEGACY_USER_ROUTES: LegacyRoute[] = [ isThemeMediaSupported: true } }, { - path: 'home.html', + path: 'home', pageProps: { controller: 'home', view: 'home.html' } }, { - path: 'movies.html', + path: 'movies', pageProps: { controller: 'movies/moviesrecommended', view: 'movies/movies.html' diff --git a/src/apps/stable/routes/quickConnect/index.tsx b/src/apps/stable/routes/quickConnect/index.tsx index ecadec2312..a76488d21f 100644 --- a/src/apps/stable/routes/quickConnect/index.tsx +++ b/src/apps/stable/routes/quickConnect/index.tsx @@ -84,7 +84,7 @@ const QuickConnectPage: FC = () => {

{globalize.translate('QuickConnectAuthorizeSuccess')}

- + {globalize.translate('GoHome')} diff --git a/src/apps/stable/routes/routes.tsx b/src/apps/stable/routes/routes.tsx index f0e2718b27..230a41953c 100644 --- a/src/apps/stable/routes/routes.tsx +++ b/src/apps/stable/routes/routes.tsx @@ -17,7 +17,7 @@ export const STABLE_APP_ROUTES: RouteObject[] = [ path: '/*', Component: AppLayout, children: [ - { index: true, element: }, + { index: true, element: }, { /* User routes */ diff --git a/src/components/ConnectionRequired.tsx b/src/components/ConnectionRequired.tsx index 198149ad3c..8106135e65 100644 --- a/src/components/ConnectionRequired.tsx +++ b/src/components/ConnectionRequired.tsx @@ -9,10 +9,10 @@ import globalize from '../lib/globalize'; import { ConnectionState } from '../utils/jellyfin-apiclient/ConnectionState'; enum BounceRoutes { - Home = '/home.html', - Login = '/login.html', - SelectServer = '/selectserver.html', - StartWizard = '/wizardstart.html' + Home = '/home', + Login = '/login', + SelectServer = '/selectserver', + StartWizard = '/wizardstart' } type ConnectionRequiredProps = { diff --git a/src/components/favoriteitems.js b/src/components/favoriteitems.js index e3e33be2f3..247dbcff05 100644 --- a/src/components/favoriteitems.js +++ b/src/components/favoriteitems.js @@ -137,7 +137,7 @@ function loadSection(elem, userId, topParentId, section, isSingleSection) { html += '
'; if (!layoutManager.tv && options.Limit && result.Items.length >= options.Limit) { - html += ''; + html += ''; html += '

'; html += globalize.translate(section.name); html += '

'; diff --git a/src/components/itemContextMenu.js b/src/components/itemContextMenu.js index 02f7138af4..adba9ab0ed 100644 --- a/src/components/itemContextMenu.js +++ b/src/components/itemContextMenu.js @@ -562,7 +562,7 @@ function executeCommand(item, id, options) { navigator.share({ title: item.Name, text: item.Overview, - url: `${apiClient.serverAddress()}/web/index.html${appRouter.getRouteUrl(item)}` + url: `${apiClient.serverAddress()}/web/${appRouter.getRouteUrl(item)}` }); break; case 'album': diff --git a/src/components/router/FallbackRoute.tsx b/src/components/router/FallbackRoute.tsx index ec91faa313..7f832c1667 100644 --- a/src/components/router/FallbackRoute.tsx +++ b/src/components/router/FallbackRoute.tsx @@ -43,7 +43,7 @@ const FallbackRoute = () => {

{globalize.translate('PageNotFound')}

{globalize.translate('GoHome')} diff --git a/src/components/router/appRouter.js b/src/components/router/appRouter.js index a56a7209ac..29f3cf4f47 100644 --- a/src/components/router/appRouter.js +++ b/src/components/router/appRouter.js @@ -13,21 +13,21 @@ import { toApi } from 'utils/jellyfin-apiclient/compat'; import { history } from 'RootAppRouter'; /** Pages of "no return" (when "Go back" should behave differently, probably quitting the application). */ -const START_PAGE_PATHS = ['/home.html', '/login.html', '/selectserver.html']; +const START_PAGE_PATHS = ['/home', '/login', '/selectserver']; /** Pages that do not require a user to be logged in to view. */ const PUBLIC_PATHS = [ - '/addserver.html', - '/selectserver.html', - '/login.html', - '/forgotpassword.html', - '/forgotpasswordpin.html', - '/wizardremoteaccess.html', - '/wizardfinish.html', - '/wizardlibrary.html', - '/wizardsettings.html', - '/wizardstart.html', - '/wizarduser.html' + '/addserver', + '/selectserver', + '/login', + '/forgotpassword', + '/forgotpasswordpin', + '/wizardremoteaccess', + '/wizardfinish', + '/wizardlibrary', + '/wizardsettings', + '/wizardstart', + '/wizarduser' ]; class AppRouter { @@ -89,7 +89,7 @@ class AppRouter { path = path.replace(this.baseUrl(), ''); // can't use this with home right now due to the back menu - if (history.location.pathname === path && path !== '/home.html') { + if (history.location.pathname === path && path !== '/home') { loading.hide(); return Promise.resolve(); } @@ -249,11 +249,11 @@ class AppRouter { const serverId = item.ServerId || options.serverId; if (item === 'settings') { - return '#/mypreferencesmenu.html'; + return '#/mypreferencesmenu'; } if (item === 'wizard') { - return '#/wizardstart.html'; + return '#/wizardstart'; } if (item === 'manageserver') { @@ -261,15 +261,15 @@ class AppRouter { } if (item === 'recordedtv') { - return '#/livetv.html?tab=3&serverId=' + options.serverId; + return '#/livetv?tab=3&serverId=' + options.serverId; } if (item === 'nextup') { - return '#/list.html?type=nextup&serverId=' + options.serverId; + return '#/list?type=nextup&serverId=' + options.serverId; } if (item === 'list') { - let urlForList = '#/list.html?serverId=' + options.serverId + '&type=' + options.itemTypes; + let urlForList = '#/list?serverId=' + options.serverId + '&type=' + options.itemTypes; if (options.isFavorite) { urlForList += '&IsFavorite=true'; @@ -304,49 +304,49 @@ class AppRouter { if (item === 'livetv') { if (options.section === 'programs') { - return '#/livetv.html?tab=0&serverId=' + options.serverId; + return '#/livetv?tab=0&serverId=' + options.serverId; } if (options.section === 'guide') { - return '#/livetv.html?tab=1&serverId=' + options.serverId; + return '#/livetv?tab=1&serverId=' + options.serverId; } if (options.section === 'movies') { - return '#/list.html?type=Programs&IsMovie=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsMovie=true&serverId=' + options.serverId; } if (options.section === 'shows') { - return '#/list.html?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=' + options.serverId; + return '#/list?type=Programs&IsSeries=true&IsMovie=false&IsNews=false&serverId=' + options.serverId; } if (options.section === 'sports') { - return '#/list.html?type=Programs&IsSports=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsSports=true&serverId=' + options.serverId; } if (options.section === 'kids') { - return '#/list.html?type=Programs&IsKids=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsKids=true&serverId=' + options.serverId; } if (options.section === 'news') { - return '#/list.html?type=Programs&IsNews=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsNews=true&serverId=' + options.serverId; } if (options.section === 'onnow') { - return '#/list.html?type=Programs&IsAiring=true&serverId=' + options.serverId; + return '#/list?type=Programs&IsAiring=true&serverId=' + options.serverId; } if (options.section === 'channels') { - return '#/livetv.html?tab=2&serverId=' + options.serverId; + return '#/livetv?tab=2&serverId=' + options.serverId; } if (options.section === 'dvrschedule') { - return '#/livetv.html?tab=4&serverId=' + options.serverId; + return '#/livetv?tab=4&serverId=' + options.serverId; } if (options.section === 'seriesrecording') { - return '#/livetv.html?tab=5&serverId=' + options.serverId; + return '#/livetv?tab=5&serverId=' + options.serverId; } - return '#/livetv.html?serverId=' + options.serverId; + return '#/livetv?serverId=' + options.serverId; } if (itemType == 'SeriesTimer') { @@ -354,11 +354,11 @@ class AppRouter { } if (item.CollectionType == CollectionType.Livetv) { - return `#/livetv.html?collectionType=${item.CollectionType}`; + return `#/livetv?collectionType=${item.CollectionType}`; } if (item.Type === 'Genre') { - url = '#/list.html?genreId=' + item.Id + '&serverId=' + serverId; + url = '#/list?genreId=' + item.Id + '&serverId=' + serverId; if (context === 'livetv') { url += '&type=Programs'; @@ -372,7 +372,7 @@ class AppRouter { } if (item.Type === 'MusicGenre') { - url = '#/list.html?musicGenreId=' + item.Id + '&serverId=' + serverId; + url = '#/list?musicGenreId=' + item.Id + '&serverId=' + serverId; if (options.parentId) { url += '&parentId=' + options.parentId; @@ -382,7 +382,7 @@ class AppRouter { } if (item.Type === 'Studio') { - url = '#/list.html?studioId=' + item.Id + '&serverId=' + serverId; + url = '#/list?studioId=' + item.Id + '&serverId=' + serverId; if (options.parentId) { url += '&parentId=' + options.parentId; @@ -392,7 +392,7 @@ class AppRouter { } if (item === 'tag') { - url = `#/list.html?type=tag&tag=${encodeURIComponent(options.tag)}&serverId=${serverId}`; + url = `#/list?type=tag&tag=${encodeURIComponent(options.tag)}&serverId=${serverId}`; if (options.parentId) { url += '&parentId=' + options.parentId; @@ -403,7 +403,7 @@ class AppRouter { if (context !== 'folders' && !itemHelper.isLocalItem(item)) { if (item.CollectionType == CollectionType.Movies) { - url = `#/movies.html?topParentId=${item.Id}&collectionType=${item.CollectionType}`; + url = `#/movies?topParentId=${item.Id}&collectionType=${item.CollectionType}`; if (options && options.section === 'latest') { url += '&tab=1'; @@ -413,7 +413,7 @@ class AppRouter { } if (item.CollectionType == CollectionType.Tvshows) { - url = `#/tv.html?topParentId=${item.Id}&collectionType=${item.CollectionType}`; + url = `#/tv?topParentId=${item.Id}&collectionType=${item.CollectionType}`; if (options && options.section === 'latest') { url += '&tab=1'; @@ -423,7 +423,7 @@ class AppRouter { } if (item.CollectionType == CollectionType.Music) { - url = `#/music.html?topParentId=${item.Id}&collectionType=${item.CollectionType}`; + url = `#/music?topParentId=${item.Id}&collectionType=${item.CollectionType}`; if (options?.section === 'latest') { url += '&tab=1'; @@ -435,7 +435,7 @@ class AppRouter { const layoutMode = localStorage.getItem('layout'); if (layoutMode === 'experimental' && item.CollectionType == CollectionType.Homevideos) { - url = '#/homevideos.html?topParentId=' + item.Id; + url = '#/homevideos?topParentId=' + item.Id; return url; } @@ -455,7 +455,7 @@ class AppRouter { if (item.IsFolder) { if (id) { - return '#/list.html?parentId=' + id + '&serverId=' + serverId; + return '#/list?parentId=' + id + '&serverId=' + serverId; } return '#'; @@ -465,7 +465,7 @@ class AppRouter { } showLocalLogin(serverId) { - return this.show('login.html?serverid=' + serverId); + return this.show('login?serverid=' + serverId); } showVideoOsd() { @@ -473,11 +473,11 @@ class AppRouter { } showSelectServer() { - return this.show('selectserver.html'); + return this.show('selectserver'); } showSettings() { - return this.show('mypreferencesmenu.html'); + return this.show('mypreferencesmenu'); } showNowPlaying() { @@ -485,27 +485,27 @@ class AppRouter { } showGuide() { - return this.show('livetv.html?tab=1'); + return this.show('livetv?tab=1'); } goHome() { - return this.show('home.html'); + return this.show('home'); } showSearch() { - return this.show('search.html'); + return this.show('search'); } showLiveTV() { - return this.show('livetv.html'); + return this.show('livetv'); } showRecordedTV() { - return this.show('livetv.html?tab=3'); + return this.show('livetv?tab=3'); } showFavorites() { - return this.show('home.html?tab=1'); + return this.show('home?tab=1'); } } diff --git a/src/components/toolbar/AppUserMenu.tsx b/src/components/toolbar/AppUserMenu.tsx index 31a6856f22..d62918bb57 100644 --- a/src/components/toolbar/AppUserMenu.tsx +++ b/src/components/toolbar/AppUserMenu.tsx @@ -73,7 +73,7 @@ const AppUserMenu: FC = ({ > @@ -85,7 +85,7 @@ const AppUserMenu: FC = ({ diff --git a/src/controllers/itemDetails/index.js b/src/controllers/itemDetails/index.js index 344b316210..b1545f696f 100644 --- a/src/controllers/itemDetails/index.js +++ b/src/controllers/itemDetails/index.js @@ -1995,7 +1995,7 @@ export default function (view, params) { function onCancelSeriesTimerClick() { import('../../components/recordingcreator/recordinghelper').then(({ default: recordingHelper }) => { recordingHelper.cancelSeriesTimerWithConfirmation(currentItem.Id, currentItem.ServerId).then(function () { - Dashboard.navigate('livetv.html'); + Dashboard.navigate('livetv'); }); }); } diff --git a/src/controllers/livetv.html b/src/controllers/livetv.html index a490b9c3ad..7a5fa1e421 100644 --- a/src/controllers/livetv.html +++ b/src/controllers/livetv.html @@ -3,7 +3,7 @@
- +

${HeaderOnNow}

@@ -12,7 +12,7 @@
- +

${Shows}

@@ -21,7 +21,7 @@
- +

${Movies}

@@ -30,7 +30,7 @@
- +

${Sports}

@@ -39,7 +39,7 @@
- +

${HeaderForKids}

@@ -48,7 +48,7 @@
- +

${News}

diff --git a/src/controllers/livetv/livetvrecordings.js b/src/controllers/livetv/livetvrecordings.js index b591e17000..796c8a2a46 100644 --- a/src/controllers/livetv/livetvrecordings.js +++ b/src/controllers/livetv/livetvrecordings.js @@ -70,7 +70,7 @@ function onMoreClick() { const type = this.getAttribute('data-type'); if (type === 'latest') { - Dashboard.navigate('list.html?type=Recordings&serverId=' + ApiClient.serverId()); + Dashboard.navigate('list?type=Recordings&serverId=' + ApiClient.serverId()); } } diff --git a/src/controllers/livetv/livetvsuggested.js b/src/controllers/livetv/livetvsuggested.js index 662e060a68..989533e0a0 100644 --- a/src/controllers/livetv/livetvsuggested.js +++ b/src/controllers/livetv/livetvsuggested.js @@ -323,7 +323,7 @@ export default function (view, params) { function onInputCommand(evt) { if (evt.detail.command === 'search') { evt.preventDefault(); - Dashboard.navigate('search.html?collectionType=livetv'); + Dashboard.navigate('search?collectionType=livetv'); } } diff --git a/src/controllers/movies/moviesrecommended.js b/src/controllers/movies/moviesrecommended.js index ff2ab8381e..27ddbe615e 100644 --- a/src/controllers/movies/moviesrecommended.js +++ b/src/controllers/movies/moviesrecommended.js @@ -370,7 +370,7 @@ export default function (view, params) { function onInputCommand(e) { if (e.detail.command === 'search') { e.preventDefault(); - Dashboard.navigate('search.html?collectionType=movies&parentId=' + params.topParentId); + Dashboard.navigate('search?collectionType=movies&parentId=' + params.topParentId); } } diff --git a/src/controllers/music/musicrecommended.js b/src/controllers/music/musicrecommended.js index dd4ccde9c4..06712165da 100644 --- a/src/controllers/music/musicrecommended.js +++ b/src/controllers/music/musicrecommended.js @@ -348,7 +348,7 @@ export default function (view, params) { function onInputCommand(e) { if (e.detail.command === 'search') { e.preventDefault(); - Dashboard.navigate('search.html?collectionType=music&parentId=' + params.topParentId); + Dashboard.navigate('search?collectionType=music&parentId=' + params.topParentId); } } diff --git a/src/controllers/session/addServer/index.js b/src/controllers/session/addServer/index.js index 068fc6134d..3e10dd629d 100644 --- a/src/controllers/session/addServer/index.js +++ b/src/controllers/session/addServer/index.js @@ -12,14 +12,14 @@ function handleConnectionResult(page, result) { case ConnectionState.SignedIn: { const apiClient = result.ApiClient; Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient); - Dashboard.navigate('home.html'); + Dashboard.navigate('home'); break; } case ConnectionState.ServerSignIn: - Dashboard.navigate('login.html?serverid=' + result.Servers[0].Id, false, 'none'); + Dashboard.navigate('login?serverid=' + result.Servers[0].Id, false, 'none'); break; case ConnectionState.ServerSelection: - Dashboard.navigate('selectserver.html', false, 'none'); + Dashboard.navigate('selectserver', false, 'none'); break; case ConnectionState.ServerUpdateNeeded: Dashboard.alert({ diff --git a/src/controllers/session/forgotPassword/index.js b/src/controllers/session/forgotPassword/index.js index fb0afeec9c..d94dac4550 100644 --- a/src/controllers/session/forgotPassword/index.js +++ b/src/controllers/session/forgotPassword/index.js @@ -30,7 +30,7 @@ function processForgotPasswordResult(result) { message: msg, title: globalize.translate('ButtonForgotPassword'), callback: function () { - Dashboard.navigate('forgotpasswordpin.html'); + Dashboard.navigate('forgotpasswordpin'); } }); } diff --git a/src/controllers/session/login/index.js b/src/controllers/session/login/index.js index 2b61fb6e2b..4c241389a0 100644 --- a/src/controllers/session/login/index.js +++ b/src/controllers/session/login/index.js @@ -110,7 +110,7 @@ function authenticateQuickConnect(apiClient, targetUrl) { function onLoginSuccessful(id, accessToken, apiClient, url) { Dashboard.onServerChanged(id, accessToken, apiClient); - Dashboard.navigate(url || 'home.html'); + Dashboard.navigate(url || 'home'); } function showManualForm(context, showCancel, focusPassword) { @@ -201,7 +201,7 @@ export default function (view, params) { } } - return '/home.html'; + return '/home'; } function showVisualForm() { @@ -243,7 +243,7 @@ export default function (view, params) { return false; }); view.querySelector('.btnForgotPassword').addEventListener('click', function () { - Dashboard.navigate('forgotpassword.html'); + Dashboard.navigate('forgotpassword'); }); view.querySelector('.btnCancel').addEventListener('click', showVisualForm); view.querySelector('.btnQuick').addEventListener('click', function () { diff --git a/src/controllers/session/selectServer/index.html b/src/controllers/session/selectServer/index.html index 5dada38f76..06a3695bed 100644 --- a/src/controllers/session/selectServer/index.html +++ b/src/controllers/session/selectServer/index.html @@ -9,7 +9,7 @@
diff --git a/src/controllers/session/selectServer/index.js b/src/controllers/session/selectServer/index.js index 8af9054edb..577c897ba6 100644 --- a/src/controllers/session/selectServer/index.js +++ b/src/controllers/session/selectServer/index.js @@ -115,12 +115,12 @@ export default function (view, params) { switch (result.State) { case ConnectionState.SignedIn: Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient); - Dashboard.navigate('home.html'); + Dashboard.navigate('home'); break; case ConnectionState.ServerSignIn: Dashboard.onServerChanged(null, null, apiClient); - Dashboard.navigate('login.html?serverid=' + result.Servers[0].Id); + Dashboard.navigate('login?serverid=' + result.Servers[0].Id); break; case ConnectionState.ServerUpdateNeeded: diff --git a/src/controllers/shows/tvrecommended.js b/src/controllers/shows/tvrecommended.js index 1f4e4eefe5..13a728526f 100644 --- a/src/controllers/shows/tvrecommended.js +++ b/src/controllers/shows/tvrecommended.js @@ -333,7 +333,7 @@ export default function (view, params) { function onInputCommand(e) { if (e.detail.command === 'search') { e.preventDefault(); - Dashboard.navigate(`search.html?collectionType=${CollectionType.Tvshows}&parentId=${params.topParentId}`); + Dashboard.navigate(`search?collectionType=${CollectionType.Tvshows}&parentId=${params.topParentId}`); } } diff --git a/src/controllers/user/menu/index.js b/src/controllers/user/menu/index.js index 035d07492b..d02bb8d1b1 100644 --- a/src/controllers/user/menu/index.js +++ b/src/controllers/user/menu/index.js @@ -26,13 +26,13 @@ export default function (view, params) { const userId = params.userId || Dashboard.getCurrentUserId(); const page = this; - page.querySelector('.lnkUserProfile').setAttribute('href', '#/userprofile.html?userId=' + userId); - page.querySelector('.lnkDisplayPreferences').setAttribute('href', '#/mypreferencesdisplay.html?userId=' + userId); - page.querySelector('.lnkHomePreferences').setAttribute('href', '#/mypreferenceshome.html?userId=' + userId); - page.querySelector('.lnkPlaybackPreferences').setAttribute('href', '#/mypreferencesplayback.html?userId=' + userId); - page.querySelector('.lnkSubtitlePreferences').setAttribute('href', '#/mypreferencessubtitles.html?userId=' + userId); + page.querySelector('.lnkUserProfile').setAttribute('href', '#/userprofile?userId=' + userId); + page.querySelector('.lnkDisplayPreferences').setAttribute('href', '#/mypreferencesdisplay?userId=' + userId); + page.querySelector('.lnkHomePreferences').setAttribute('href', '#/mypreferenceshome?userId=' + userId); + page.querySelector('.lnkPlaybackPreferences').setAttribute('href', '#/mypreferencesplayback?userId=' + userId); + page.querySelector('.lnkSubtitlePreferences').setAttribute('href', '#/mypreferencessubtitles?userId=' + userId); page.querySelector('.lnkQuickConnectPreferences').setAttribute('href', '#/quickconnect?userId=' + userId); - page.querySelector('.lnkControlsPreferences').setAttribute('href', '#/mypreferencescontrols.html?userId=' + userId); + page.querySelector('.lnkControlsPreferences').setAttribute('href', '#/mypreferencescontrols?userId=' + userId); const supportsClientSettings = appHost.supports('clientsettings'); page.querySelector('.clientSettings').classList.toggle('hide', !supportsClientSettings); diff --git a/src/controllers/wizard/library.js b/src/controllers/wizard/library.js index 27bcde9c52..162e5b100a 100644 --- a/src/controllers/wizard/library.js +++ b/src/controllers/wizard/library.js @@ -361,7 +361,7 @@ function getVirtualFolderHtml(page, virtualFolder, index) { window.WizardLibraryPage = { next: function () { - Dashboard.navigate('wizardsettings.html'); + Dashboard.navigate('wizardsettings'); } }; pageClassOn('pageshow', 'mediaLibraryPage', function () { diff --git a/src/controllers/wizard/remote/index.js b/src/controllers/wizard/remote/index.js index 3d712cc321..65b1764883 100644 --- a/src/controllers/wizard/remote/index.js +++ b/src/controllers/wizard/remote/index.js @@ -23,7 +23,7 @@ function save(page) { } function navigateToNextPage() { - Dashboard.navigate('wizardfinish.html'); + Dashboard.navigate('wizardfinish'); } function onSubmit(e) { diff --git a/src/controllers/wizard/settings/index.js b/src/controllers/wizard/settings/index.js index 2881bc6d78..e37abceaa2 100644 --- a/src/controllers/wizard/settings/index.js +++ b/src/controllers/wizard/settings/index.js @@ -66,7 +66,7 @@ function reload(page) { } function navigateToNextPage() { - Dashboard.navigate('wizardremoteaccess.html'); + Dashboard.navigate('wizardremoteaccess'); } function onSubmit(e) { diff --git a/src/controllers/wizard/start/index.js b/src/controllers/wizard/start/index.js index 2af35bcb74..08d3fcd2d6 100644 --- a/src/controllers/wizard/start/index.js +++ b/src/controllers/wizard/start/index.js @@ -24,7 +24,7 @@ function save(page) { url: apiClient.getUrl('Startup/Configuration'), contentType: 'application/json' }).then(function () { - Dashboard.navigate('wizarduser.html'); + Dashboard.navigate('wizarduser'); }); }); } diff --git a/src/controllers/wizard/user/index.js b/src/controllers/wizard/user/index.js index 1d064bf382..1d4836f35e 100644 --- a/src/controllers/wizard/user/index.js +++ b/src/controllers/wizard/user/index.js @@ -11,7 +11,7 @@ function getApiClient() { } function nextWizardPage() { - Dashboard.navigate('wizardlibrary.html') + Dashboard.navigate('wizardlibrary') .catch(err => { console.error('[Wizard > User] error navigating to library setup', err); }); diff --git a/src/hooks/useCurrentTab.ts b/src/hooks/useCurrentTab.ts index 888be3c675..11c2569fc4 100644 --- a/src/hooks/useCurrentTab.ts +++ b/src/hooks/useCurrentTab.ts @@ -6,7 +6,7 @@ const useCurrentTab = () => { const [searchParams, setSearchParams] = useSearchParams(); const searchParamsTab = searchParams.get('tab'); const libraryId = - location.pathname === '/livetv.html' ? + location.pathname === '/livetv' ? 'livetv' : searchParams.get('topParentId'); const activeTab: number = diff --git a/src/manifest.json b/src/manifest.json index f220dcaa37..1e8f9dd713 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -3,7 +3,7 @@ "description": "The Free Software Media System", "lang": "en-US", "short_name": "Jellyfin", - "start_url": "index.html#/home.html", + "start_url": "index.html#/home", "theme_color": "#101010", "background_color": "#101010", "display": "standalone", diff --git a/src/scripts/itemsByName.js b/src/scripts/itemsByName.js index 92dcc1f314..936c7b8773 100644 --- a/src/scripts/itemsByName.js +++ b/src/scripts/itemsByName.js @@ -302,26 +302,26 @@ function loadItems(element, item, type, query, listOptions) { function getMoreItemsHref(item, type) { if (item.Type === 'Genre') { - return '#/list.html?type=' + type + '&genreId=' + item.Id + '&serverId=' + item.ServerId; + return '#/list?type=' + type + '&genreId=' + item.Id + '&serverId=' + item.ServerId; } if (item.Type === 'MusicGenre') { - return '#/list.html?type=' + type + '&musicGenreId=' + item.Id + '&serverId=' + item.ServerId; + return '#/list?type=' + type + '&musicGenreId=' + item.Id + '&serverId=' + item.ServerId; } if (item.Type === 'Studio') { - return '#/list.html?type=' + type + '&studioId=' + item.Id + '&serverId=' + item.ServerId; + return '#/list?type=' + type + '&studioId=' + item.Id + '&serverId=' + item.ServerId; } if (item.Type === 'MusicArtist') { - return '#/list.html?type=' + type + '&artistId=' + item.Id + '&serverId=' + item.ServerId; + return '#/list?type=' + type + '&artistId=' + item.Id + '&serverId=' + item.ServerId; } if (item.Type === 'Person') { - return '#/list.html?type=' + type + '&personId=' + item.Id + '&serverId=' + item.ServerId; + return '#/list?type=' + type + '&personId=' + item.Id + '&serverId=' + item.ServerId; } - return '#/list.html?type=' + type + '&parentId=' + item.Id + '&serverId=' + item.ServerId; + return '#/list?type=' + type + '&parentId=' + item.Id + '&serverId=' + item.ServerId; } function addCurrentItemToQuery(query, item) { diff --git a/src/scripts/libraryMenu.js b/src/scripts/libraryMenu.js index b1722a148d..d36f805856 100644 --- a/src/scripts/libraryMenu.js +++ b/src/scripts/libraryMenu.js @@ -214,11 +214,11 @@ function showSearch() { } function onHeaderUserButtonClick() { - Dashboard.navigate('mypreferencesmenu.html'); + Dashboard.navigate('mypreferencesmenu'); } function onHeaderHomeButtonClick() { - Dashboard.navigate('home.html'); + Dashboard.navigate('home'); } function showAudioPlayer() { @@ -321,7 +321,7 @@ function onMainDrawerSelect() { function refreshLibraryInfoInDrawer(user) { let html = ''; html += '
'; - html += `${globalize.translate('Home')}`; + html += `${globalize.translate('Home')}`; // placeholder for custom menu links html += '
'; @@ -406,7 +406,7 @@ function getUserViews(apiClient, userId) { guideView.Name = globalize.translate('Guide'); guideView.ImageTags = {}; guideView.icon = 'dvr'; - guideView.url = '#/livetv.html?tab=1'; + guideView.url = '#/livetv?tab=1'; list.push(guideView); } } @@ -503,7 +503,7 @@ function onSelectServerClick() { } function onSettingsClick() { - Dashboard.navigate('mypreferencesmenu.html'); + Dashboard.navigate('mypreferencesmenu'); } function onExitAppClick() { diff --git a/src/strings/ca.json b/src/strings/ca.json index 56533503fa..28cb3292bd 100644 --- a/src/strings/ca.json +++ b/src/strings/ca.json @@ -1702,7 +1702,7 @@ "HeaderPerformance": "Rendiment", "LabelDummyChapterCountHelp": "El nombre màxim d'imatges del capítol que s'extreuran per a cada fitxer multimèdia.", "LabelParallelImageEncodingLimit": "Límit de codificació paral·lela d'imatges", - "LabelParallelImageEncodingLimitHelp": "Número màxim de codificacions d'imatge que es poden executar en paral·lel. Si s'estableix a 0, es triarà un límit en funció del número de nuclis.", + "LabelParallelImageEncodingLimitHelp": "Número màxim de codificacions d'imatge que es poden executar en paral·lel. Si es deixa buit, es triarà un límit en funció del número de nuclis.", "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Els extres sovint tenen el mateix nom incrustat que el principal, marqueu-ho per utilitzar-los títols incrustats de totes maneres.", "SaveRecordingNFO": "Desa les metadades EPG d'enregistrament a NFO", "SaveRecordingImages": "Guarda les imatges d'enregistrament EPG", @@ -1885,7 +1885,7 @@ "SaveLyricsIntoMediaFolders": "Desa la lletra a les carpetes multimèdia", "SaveLyricsIntoMediaFoldersHelp": "Emmagatzemar les lletres al costat dels fitxers d'àudio permetrà gestionar-les més fàcilment.", "LabelSelectPreferredTranscodeVideoAudioCodec": "Còdec d'àudio de transcodificació preferit en la reproducció de vídeo", - "LibraryScanFanoutConcurrencyHelp": "Nombre màxim de tasques paral·leles durant les exploracions de la biblioteca. Si s'estableix a 0, es triarà un límit basat en el nombre de nuclis del vostre sistema. ADVERTÈNCIA: establir aquest número massa alt pot causar problemes amb els sistemes de fitxers de xarxa; si trobeu problemes, baixeu aquest número.", + "LibraryScanFanoutConcurrencyHelp": "Nombre màxim de tasques paral·leles durant les exploracions de la biblioteca. Si es deixa buit, es triarà un límit basat en el nombre de nuclis del vostre sistema. ADVERTÈNCIA: establir aquest número massa alt pot causar problemes amb els sistemes de fitxers de xarxa; si trobeu problemes, baixeu aquest número.", "SelectPreferredTranscodeVideoAudioCodecHelp": "Seleccioneu el còdec d'àudio preferit per transcodificar per al contingut de vídeo. Si el còdec preferit no és compatible, el servidor utilitzarà el següent millor còdec disponible.", "LibraryScanFanoutConcurrency": "Límit de tasques d'exploració paral·leles per a les biblioteques", "Penciller": "Dibuixant", @@ -2002,5 +2002,11 @@ "LastActive": "Últim actiu", "CopyLogSuccess": "Registres copiats satisfactòriament.", "Retry": "Tronar a provar", - "LogLoadFailure": "Error al carregar el registre. És probable que encara s'estigui escrivint en ell." + "LogLoadFailure": "Error al carregar el registre. És probable que encara s'estigui escrivint en ell.", + "MetadataNfoLoadError": "No s'han pogut carregar les configuracions de metadades NFO", + "SettingsPageLoadError": "No s'ha pogut carregar la pàgina de configuracions", + "DisplayLoadError": "S'ha produït un error en carregar les dades de configuració de la pantalla.", + "HeaderPageNotFound": "Pàgina no trobada", + "PageNotFound": "Aquesta no és la pàgina que estàs buscant.", + "MetadataImagesLoadError": "No s'han pogut carregar les configuracions de metadades" } diff --git a/src/strings/cs.json b/src/strings/cs.json index 2556d6c8cf..d5f8a9d74d 100644 --- a/src/strings/cs.json +++ b/src/strings/cs.json @@ -1719,7 +1719,7 @@ "Short": "Krátký film", "HeaderPerformance": "Výkon", "LabelParallelImageEncodingLimit": "Počet paralelních kódování obrázků", - "LabelParallelImageEncodingLimitHelp": "Maximální počet kódování obrázků, které mohou běžet zároveň. Nastavením na 0 bude limit nastaven dle počtu jader CPU.", + "LabelParallelImageEncodingLimitHelp": "Maximální počet kódování obrázků, které mohou běžet zároveň. Ponecháním prázdné hodnoty bude limit nastaven dle počtu jader CPU.", "LabelEnableAudioVbr": "Povolit kódování zvuku VBR", "LabelEnableAudioVbrHelp": "Proměnlivý bitový tok (VBR) nabízí lepší poměr mezi kvalitou a průměrným bitovým tokem, ale někdy může způsobit dodatečné načítání či problémy s kompatibilitou.", "Select": "Vybrat", @@ -1891,7 +1891,7 @@ "Letterer": "Lettrista", "Penciller": "Výtvarník", "Translator": "Překladatel", - "LibraryScanFanoutConcurrencyHelp": "Maximální počet souběžných úloh skenování knihovny. Nastavením na 0 bude počet dán počtem jader CPU. UPOZORNĚNÍ: Příliš vyskoý počet může způsobit problémy se síťovými souborými systémy. V takovém případě počet snižte.", + "LibraryScanFanoutConcurrencyHelp": "Maximální počet souběžných úloh skenování knihovny. Ponecháním prázdné hodnoty bude počet dán počtem jader CPU. UPOZORNĚNÍ: Příliš vyskoý počet může způsobit problémy se síťovými souborými systémy. V takovém případě počet snižte.", "LibraryScanFanoutConcurrency": "Maximální počet souběžných skenování knihovny", "LabelSelectPreferredTranscodeVideoAudioCodec": "Preferovaný audio kodek pro překódovaní při přehrávání videí", "SelectPreferredTranscodeVideoAudioCodecHelp": "Vybrat preferovaný audio kodek pro překódovaní při přehrávání videí. Pokud preferovaný kodek není podporován, server vybere jiný dostupný kodek.", @@ -2009,5 +2009,8 @@ "LogLoadFailure": "Načtení souboru logu se nezdařilo. Možná se do něj právě zapisuje.", "DisplayLoadError": "Načítání konfiguračních dat zobrazení se nezdařilo.", "MetadataImagesLoadError": "Načítání nastavení metadat se nezdařilo", - "MetadataNfoLoadError": "Načtení nastavení metadat v souborech NFO se nezdařilo" + "MetadataNfoLoadError": "Načtení nastavení metadat v souborech NFO se nezdařilo", + "HeaderPageNotFound": "Stránka nebyla nalezena", + "PageNotFound": "Toto není stránka, kterou hledáš.", + "SettingsPageLoadError": "Načtení stránky nastavení se nezdařilo" } diff --git a/src/strings/de.json b/src/strings/de.json index 73923faf47..6476d0b787 100644 --- a/src/strings/de.json +++ b/src/strings/de.json @@ -1718,7 +1718,7 @@ "Featurette": "Hinter den Kulissen", "Short": "Kurzfilm", "LabelParallelImageEncodingLimit": "Limit der parallelen Bildkodierung", - "LabelParallelImageEncodingLimitHelp": "Maximale Anzahl von Bildkodierungen, die parallel ausgeführt werden dürfen. Wenn Sie diesen Wert auf 0 setzen, wird eine Grenze auf der Grundlage der Kernanzahl Ihres Systems festgelegt.", + "LabelParallelImageEncodingLimitHelp": "Maximale Anzahl von Bildkodierungen, die parallel ausgeführt werden dürfen. Wenn Sie diesen Wert auf 0 lassen, wird ein Limit auf Grundlage der Kernanzahl Ihres Systems festgelegt.", "HeaderPerformance": "Leistung", "LabelEnableAudioVbr": "Aktiviere Audiokodierung mit variabler Bitrate (VBR)", "LabelEnableAudioVbrHelp": "Eine variable Bitrate bietet bessere Qualität im Vergleich zu einer konstanten, kann jedoch in manchen Fällen zu Problemen beim Buffering und der Kompatibilität führen.", @@ -1881,7 +1881,7 @@ "LabelSelectPreferredTranscodeVideoAudioCodec": "Bevorzugter Transcode-Audiocodec bei der Videowiedergabe", "Translator": "Übersetzer", "LibraryScanFanoutConcurrency": "Limit der Parallelen Aufgaben für das Scanen der Bibliotheken", - "LibraryScanFanoutConcurrencyHelp": "Anzahl der Maximalen parallelen Aufgaben während des Bibliotheksscans. Wenn sie diesen Wert auf 0 Setzten werden soviele parallelen Aufgaben gestartet wie dieser Instanz/auf diesem System vorhanden sind. WARNUNG: Wenn Sie diese Zahl zu hoch einstellen, kann es zu Problemen mit Bibliotheken die über das Netzwerk verbunden sind kommen; wenn dies der fall ist, senken Sie diese Zahl.", + "LibraryScanFanoutConcurrencyHelp": "Anzahl der Maximalen parallelen Aufgaben während des Bibliotheksscans. Wenn Sie diesen Wert auf 0 lassen, wird ein Limit auf Grundlage der Kernanzahl Ihres Systems festgelegt. WARNUNG: Wenn Sie diese Zahl zu hoch einstellen, kann es zu Problemen mit Bibliotheken, die über das Netzwerk verbunden sind, kommen; wenn dies der Fall ist, senken Sie diese Zahl.", "PlaylistError.AddFailed": "Fehler beim Hinzufügen zur Wiedergabeliste", "PlaylistError.CreateFailed": "Fehler beim Erstellen der Wiedergabeliste", "SavePassword": "Passwort speichern", @@ -2005,11 +2005,12 @@ "LabelDevice": "Gerät", "LastActive": "Zuletzt aktiv", "CopyLogSuccess": "Protokollinhalte erfolgreich kopiert.", - "Retry": "Erneut Versuchen", + "Retry": "Erneut versuchen", "LogLoadFailure": "Fehler beim Laden der Protokolldatei. Sie wird möglicherweise noch beschrieben.", "MetadataNfoLoadError": "NFO-Einstellungen für Metadaten konnten nicht geladen werden", "DisplayLoadError": "Ein Fehler trat während des Ladens der Konfigurationsdaten auf.", "MetadataImagesLoadError": "Einstellungen für Metadaten konnten nicht geladen werden", "HeaderPageNotFound": "Seite nicht gefunden", - "PageNotFound": "Dies ist nicht die Seite, die Sie suchen." + "PageNotFound": "Dies ist nicht die Seite, die Sie suchen.", + "SettingsPageLoadError": "Einstellungsseite konnte nicht geladen werden" } diff --git a/src/strings/el.json b/src/strings/el.json index 871f86c67a..025fff4b63 100644 --- a/src/strings/el.json +++ b/src/strings/el.json @@ -99,7 +99,7 @@ "ColorTransfer": "Μεταφορά χρώματος", "CommunityRating": "Βαθμολογία Κοινότητας", "Composer": "Συνθέτης", - "ConfigureDateAdded": "Καθορίστε πώς προστίθενται τα μεταδεδομένα για την \"Ημερομηνία προσθήκης\" στον Πίνακα Ελέγχου > Βιβλιοθήκες - Ρυθμίσεις NFO", + "ConfigureDateAdded": "Καθορίστε πώς προστίθενται τα μεταδεδομένα για την \"Ημερομηνία προσθήκης\" στον Πίνακα Ελέγχου > Βιβλιοθήκες > Προβολή", "ConfirmDeleteImage": "Διαγραφή εικόνας;", "ConfirmDeleteItem": "Η διαγραφή αυτού του στοιχείου θα το διαγράψει τόσο από το σύστημα αρχείων όσο και από τη βιβλιοθήκη πολυμέσων σας. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", "ConfirmDeleteItems": "Η διαγραφή αυτών των στοιχείων θα τα διαγράψει τόσο από το σύστημα αρχείων όσο και από τη βιβλιοθήκη πολυμέσων σας. Είστε βέβαιοι ότι θέλετε να συνεχίσετε;", @@ -430,7 +430,7 @@ "LabelEnableDlnaServer": "Ενεργοποίηση DLNA σέρβερ", "LabelEnableDlnaServerHelp": "Επιτρέπει στις συσκευές UPnP στο δίκτυό σας να περιηγούνται και να αναπαράγουν περιεχόμενο.", "LabelEnableHardwareDecodingFor": "Ενεργοποίηση αποκωδικοποίησης υλικού για", - "LabelEnableRealtimeMonitor": "Ενεργοποιήστε την παρακολούθηση σε πραγματικό χρόνο", + "LabelEnableRealtimeMonitor": "Ενεργοποίηση παρακολούθησης σε πραγματικό χρόνο", "LabelEnableRealtimeMonitorHelp": "Οι αλλαγές στα αρχεία θα υποβληθούν αμέσως σε επεξεργασία στα υποστηριζόμενα συστήματα αρχείων.", "LabelEnableSingleImageInDidlLimit": "Περιορισμός σε ενιαία ενσωματωμένη εικόνα", "LabelEnableSingleImageInDidlLimitHelp": "Ορισμένες συσκευές δεν θα έχουν σωστή απόδοση αν ενσωματωθούν πολλές εικόνες μέσα στο DIDL.", @@ -439,7 +439,7 @@ "LabelEvent": "Γεγονός", "LabelEveryXMinutes": "Κάθε", "LabelExtractChaptersDuringLibraryScan": "Εξαγωγή εικόνων κεφαλαίου κατά τη διάρκεια της σάρωσης βιβλιοθήκης", - "LabelExtractChaptersDuringLibraryScanHelp": "Δημιουργήστε εικόνες κεφαλαίου όταν εισάγονται βίντεο κατά τη σάρωση της βιβλιοθήκης. Διαφορετικά, θα εξαχθούν κατά τη διάρκεια της προγραμματισμένης διεργασίας των εικόνων κεφαλαίου, επιτρέποντας στην τακτική σάρωση της βιβλιοθήκης να ολοκληρωθεί γρηγορότερα.", + "LabelExtractChaptersDuringLibraryScanHelp": "Δημιουργία εικόνων κεφαλαίου όταν εισάγονται βίντεο κατά τη σάρωση της βιβλιοθήκης. Διαφορετικά, θα εξαχθούν κατά τη διάρκεια της προγραμματισμένης διεργασίας των εικόνων κεφαλαίου, επιτρέποντας την ταχύτερη ολοκλήρωση της τακτικής σάρωσης βιβλιοθήκης.", "LabelFailed": "Αποτυχία", "LabelFinish": "Τέλος", "LabelFont": "Γραμματοσειρά", @@ -530,7 +530,7 @@ "LabelPlayDefaultAudioTrack": "Αναπαραγωγή προεπιλεγμένου κομματιού ήχου ανεξάρτητα από τη γλώσσα", "LabelPlaylist": "Λίστα", "LabelPreferredDisplayLanguage": "Προτιμώμενη γλώσσα εμφάνισης", - "LabelPreferredSubtitleLanguage": "Προτεινόμενη Γλώσσα υποτίτλων", + "LabelPreferredSubtitleLanguage": "Προτιμώμενη γλώσσα υποτίτλων", "LabelProfileCodecsHelp": "Διαχωρίζονται με κόμμα. Αυτό μπορεί να μείνει κενό για να εφαρμοστεί σε όλα τα codecs.", "LabelProfileContainersHelp": "Διαχωρίζονται με κόμμα. Αυτό μπορεί να μείνει κενό για να εφαρμοστεί σε όλα τα containers.", "LabelProtocol": "Πρωτόκολλο", @@ -563,7 +563,7 @@ "LabelSkipForwardLength": "Παράλειψη προς τα εμπρός", "LabelSkipIfAudioTrackPresent": "Παράλειψη εάν το προεπιλεγμένο ηχητικό κομμάτι ταιριάζει με τη γλώσσα λήψης", "LabelSkipIfGraphicalSubsPresent": "Παράλειψη εάν το βίντεο περιέχει ήδη ενσωματωμένους υπότιτλους", - "LabelSkipIfGraphicalSubsPresentHelp": "Κρατώντας εκδόσεις κειμένου των υπότιτλων θα έχει ως αποτέλεσμα πιο την αποτελεσματική παράδοση και θα μειώσει την πιθανότητα της μετακωδικοποίησης βίντεο.", + "LabelSkipIfGraphicalSubsPresentHelp": "Η διατήρηση των εκδόσεων κειμένου των υπότιτλων θα έχει ως αποτέλεσμα πιο την αποτελεσματική παράδοση και θα μειώσει την πιθανότητα διακωδικοποίησης βίντεο.", "LabelSonyAggregationFlagsHelp": "Καθορίζει το περιεχόμενο του στοιχείου 'aggregationFlags' στο 'urn:schemas-sonycom:av' namespace.", "LabelSortBy": "Ταξινόμηση κατά", "LabelSortOrder": "Σειρά ταξινόμησης", @@ -770,7 +770,7 @@ "OptionPremiereDate": "Ημερομηνία πρεμιέρας", "OptionReleaseDate": "Ημερομηνία κυκλοφορίας", "OptionResumable": "Αναληπτέος", - "OptionSaveMetadataAsHidden": "Αποθηκεύστε τα μεταδεδομένα και τις εικόνες ως κρυφά αρχεία", + "OptionSaveMetadataAsHidden": "Αποθήκευση μεταδεδομένων και εικόνων ως κρυφά αρχεία", "OptionSubstring": "Υποσύνολο", "OptionTrackName": "Όνομα Αρχείου", "OptionTvdbRating": "Βαθμολογία TheTVDB", @@ -1016,9 +1016,9 @@ "ButtonOk": "Οκ", "ButtonNetwork": "Δίκτυο", "AllowOnTheFlySubtitleExtractionHelp": "Οι ενσωματωμένοι υπότιτλοι μπορούν να εξαχθούν από βίντεο και να σταλούν στους διαμεσολαβητές αναπαραγωγής σε απλό κείμενο για να αποφευχθούν μετατροπές βίντεο. Σε μερικά συστήματα αυτό μπορεί να πάρει πολύ ώρα και να κάνει το βίντεο να κολλάει κατά την διάρκεια της εξαγωγής. Απενεργοποιήστε το για να έχετε ενσωματωμένους υπότιτλους πάνω στο βίντεο όταν αυτοί δεν υποστηρίζονται από την συσκευή.", - "AllowOnTheFlySubtitleExtraction": "Επίτρεψε την εξαγωγή υποτίτλων σε πραγματικό χρόνο", + "AllowOnTheFlySubtitleExtraction": "Να επιτρέπεται η εξαγωγή υποτίτλων σε πραγματικό χρόνο", "AllowMediaConversionHelp": "Παραχώρησε ή στέρησε πρόσβαση στην λειτουργία μετατροπής μέσων.", - "AllowHWTranscodingHelp": "Επιτρέπει τον δέκτη να διακωδικοποιεί τις ροές σε πραγματικό χρόνο. Αυτό μπορεί να βοηθήσει στην ελάττωση του φόρτου διακωδικοποίησης που απαιτείται από τον διακομιστή.", + "AllowHWTranscodingHelp": "Να επιτρέπεται η διακωδικοποίηση των ροών από τον δέκτη σε πραγματικό χρόνο. Αυτό μπορεί να βοηθήσει στην ελάττωση του φόρτου διακωδικοποίησης που απαιτείται από τον διακομιστή.", "Alerts": "Προειδοποίηση", "LeaveBlankToNotSetAPassword": "Μπορείτε να αφήσετε αυτό το πεδίο κενό για να μην ορίσετε κωδικό πρόσβασης.", "DashboardArchitecture": "Αρχιτεκτονική:{0}", @@ -1275,7 +1275,7 @@ "LabelIconMaxResHelp": "Μέγιστη ανάλυση εικονιδίων που εκτίθενται μέσω της ιδιότητας 'upnp:icon'.", "LabelIdentificationFieldHelp": "Μια έκφραση υποσυμβολοσειράς ή regex χωρίς διάκριση πεζών-κεφαλαίων.", "LabelKodiMetadataUser": "Αποθήκευση δεδομένων παρακολούθησης χρήστη σε αρχεία NFO για", - "LabelKodiMetadataUserHelp": "Αποθηκεύστε δεδομένα παρακολούθησης σε αρχεία NFO για χρήση σε άλλες εφαρμογές.", + "LabelKodiMetadataUserHelp": "Αποθήκευση δεδομένων παρακολούθησης σε αρχεία NFO για χρήση σε άλλες εφαρμογές.", "LabelLibraryPageSize": "Μέγεθος σελίδας βιβλιοθήκης", "LabelMaxDaysForNextUp": "Μέγιστος αριθμός ημερών στα \"Επόμενα\"", "LabelLineup": "Σύνταξη", @@ -1366,7 +1366,7 @@ "LabelSyncPlayHaltPlayback": "Διακοπή τοπικής αναπαραγωγής", "LabelSyncPlayHaltPlaybackDescription": "Και αγνοήστε τις τρέχουσες ενημερώσεις playlist", "LabelSyncPlayNewGroup": "Νέα ομάδα", - "LabelSyncPlayNewGroupDescription": "Δημιουργήστε μια νέα ομάδα", + "LabelSyncPlayNewGroupDescription": "Δημιουργία μιας νέας ομάδας", "LabelSyncPlayTimeSyncDevice": "Συγχρονισμός χρόνου με", "LabelSyncPlaySettingsSyncCorrection": "Διόρθωση συγχρονισμού", "LabelSyncPlaySettingsMinDelaySpeedToSyncHelp": "Ελάχιστη καθυστέρηση αναπαραγωγής (σε ms) μετά την οποία το SpeedToSync προσπαθεί να διορθώσει τη θέση αναπαραγωγής.", @@ -1388,7 +1388,7 @@ "OptionCaptionInfoExSamsung": "CaptionInfoEx (Samsung)", "OptionLoginAttemptsBeforeLockoutHelp": "Η τιμή μηδέν σημαίνει κληρονομιά της προεπιλογής τριών προσπαθειών για τους κανονικούς χρήστες και πέντε για τους διαχειριστές. Η ρύθμιση σε -1 θα απενεργοποιήσει τη δυνατότητα.", "PasswordResetProviderHelp": "Επιλέξτε έναν πάροχο επαναφοράς κωδικού πρόσβασης που θα χρησιμοποιείται όταν αυτός ο χρήστης ζητά επαναφορά κωδικού πρόσβασης.", - "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Χρησιμοποιήστε τις πληροφορίες επεισοδίου από τα ενσωματωμένα μεταδεδομένα, εάν είναι διαθέσιμα.", + "PreferEmbeddedEpisodeInfosOverFileNamesHelp": "Χρήση πληροφοριών επεισοδίου από τα ενσωματωμένα μεταδεδομένα, εάν είναι διαθέσιμες.", "TonemappingAlgorithmHelp": "Η χαρτογράφηση τόνου μπορεί να ρυθμιστεί με ακρίβεια. Εάν δεν είστε εξοικειωμένοι με αυτές τις επιλογές, απλώς διατηρήστε την προεπιλογή. Η συνιστώμενη τιμή είναι 'BT.2390'.", "UnsupportedPlayback": "Το Jellyfin δεν μπορεί να αποκρυπτογραφήσει περιεχόμενο που προστατεύεται από DRM, αλλά όλο το περιεχόμενο θα δοκιμαστεί ανεξάρτητα, συμπεριλαμβανομένων των προστατευμένων τίτλων. Ορισμένα αρχεία ενδέχεται να εμφανίζονται εντελώς μαύρα λόγω κρυπτογράφησης ή άλλων μη υποστηριζόμενων λειτουργιών, όπως διαδραστικοί τίτλοι.", "XmlTvPathHelp": "Μια διαδρομή προς ένα αρχείο XMLTV. Το Jellyfin θα διαβάζει αυτό το αρχείο και θα το ελέγχει περιοδικά για ενημερώσεις. Είστε υπεύθυνοι για τη δημιουργία και την ενημέρωση του αρχείου.", @@ -1401,9 +1401,9 @@ "MessageUnsetContentHelp": "Το περιεχόμενο θα εμφανίζεται ως απλοί φάκελοι. Για καλύτερα αποτελέσματα, χρησιμοποιήστε τη διαχείριση μεταδεδομένων για να ορίσετε τους τύπους περιεχομένου των υποφακέλων.", "NoNewDevicesFound": "Δε βρέθηκαν νέες συσκευές. Για να προσθέσετε έναν νέο δέκτη, κλείστε αυτό το παράθυρο διαλόγου και εισαγάγετε τις πληροφορίες της συσκευής με μη αυτόματο τρόπο.", "OptionAutomaticallyGroupSeriesHelp": "Οι σειρές που είναι κατανεμημένες σε πολλούς φακέλους σε αυτήν τη βιβλιοθήκη θα συγχωνευθούν αυτόματα σε μια ενιαία σειρά.", - "SaveSubtitlesIntoMediaFolders": "Αποθηκεύστε τους υπότιτλους σε φακέλους πολυμέσων", + "SaveSubtitlesIntoMediaFolders": "Αποθήκευση υπότιτλων στους φακέλους των πολυμέσων", "RemuxHelp1": "Τα μέσα βρίσκονται σε μη συμβατό κοντέινερ αρχείων (MKV, AVI, WMV, κ.λπ.), αλλά τόσο η ροή βίντεο όσο και η ροή ήχου είναι συμβατά με τη συσκευή. Τα μέσα θα επανασυσκευάζονται χωρίς απώλειες αμέσως πριν σταλούν στη συσκευή.", - "PreferFmp4HlsContainerHelp": "Προτιμήστε να χρησιμοποιείτε το fMP4 ως το προεπιλεγμένο κοντέινερ για το HLS, καθιστώντας δυνατή τη ροή περιεχομένου HEVC σε υποστηριζόμενες συσκευές.", + "PreferFmp4HlsContainerHelp": "Προτίμηση χρήσης του fMP4 ως το προεπιλεγμένο κοντέινερ για HLS, καθιστώντας δυνατή τη ροή περιεχομένου HEVC και AV1 σε υποστηριζόμενες συσκευές.", "AudioBitrateNotSupported": "Ο ρυθμός μετάδοσης bit του ήχου δεν υποστηρίζεται", "VideoResolutionNotSupported": "Η ανάλυση του βίντεο δεν υποστηρίζεται", "LabelHardwareEncodingOptions": "Επιλογές κωδικοποίησης υλικού", @@ -1435,8 +1435,8 @@ "OptionResElement": "στοιχείο 'res'", "OtherArtist": "Άλλος Καλλιτέχνης", "PlaybackRate": "Ταχύτητα αναπαραγωγής", - "PreferEmbeddedTitlesOverFileNames": "Προτιμήστε τους ενσωματωμένους τίτλους από τα ονόματα αρχείων", - "AllowEmbeddedSubtitlesAllowAllOption": "Επιτρέπονται όλα", + "PreferEmbeddedTitlesOverFileNames": "Προτίμηση ενσωματωμένων τίτλων αντί των ονομάτων αρχείων", + "AllowEmbeddedSubtitlesAllowAllOption": "Να επιτρέπονται όλα", "AllowEmbeddedSubtitlesAllowNoneOption": "Να μην επιτρέπεται κανένα", "AllowEmbeddedSubtitlesAllowTextOption": "Να επιτρέπεται το κείμενο", "Remixer": "Remixer", @@ -1445,7 +1445,7 @@ "ShowParentImages": "Εμφάνιση εικόνων προγράμματος", "Subtitle": "Υπότιτλος", "StoryArc": "Story Arc", - "SubtitleOffset": "Αντισταθμίζμως Υποτίτλων", + "SubtitleOffset": "Αντιστάθμιση Υποτίτλων", "SubtitleVerticalPositionHelp": "Αριθμός γραμμής όπου εμφανίζεται το κείμενο. Οι θετικοί αριθμοί δείχνουν από πάνω προς τα κάτω. Οι αρνητικοί αριθμοί δείχνουν από κάτω προς τα πάνω.", "TabContainers": "Δοχεία", "TabLogs": "Αρχεία καταγραφής", @@ -1505,7 +1505,7 @@ "OptionRequirePerfectSubtitleMatchHelp": "Η απαίτηση τέλειας αντιστοίχισης θα φιλτράρει τους υπότιτλους ώστε να περιλαμβάνουν μόνο αυτούς που έχουν δοκιμαστεί και επαληθευτεί με το ακριβές αρχείο βίντεο σας. Η κατάργηση της επιλογής θα αυξήσει την πιθανότητα λήψης των υπότιτλων, αλλά θα αυξήσει τις πιθανότητες εσφαλμένου ή λανθασμένου κειμένου υπότιτλων.", "Other": "Αλλα", "Photo": "Φωτογραφία", - "PreferEmbeddedEpisodeInfosOverFileNames": "Προτιμήστε τις ενσωματωμένες πληροφορίες επεισοδίων από τα ονόματα αρχείων", + "PreferEmbeddedEpisodeInfosOverFileNames": "Προτίμηση ενσωματωμένων πληροφοριών επεισοδίων αντί των ονομάτων αρχείων", "PosterCard": "Κάρτα αφίσας", "Production": "Παραγωγή", "QuickConnectActivationSuccessful": "Ενεργοποιήθηκε με επιτυχία", @@ -1559,7 +1559,7 @@ "MessageImageTypeNotSelected": "Επιλέξτε έναν τύπο εικόνας από το αναπτυσσόμενο μενού.", "MessageNoFavoritesAvailable": "Δεν υπάρχουν διαθέσιμα αγαπημένα αυτήν τη στιγμή.", "MessageNoRepositories": "Δεν υπάρχουν αποθετήρια.", - "MessagePluginInstallDisclaimer": "Οι προσθήκες που έχουν δημιουργηθεί από μέλη της κοινότητας είναι ένας πολύ καλός τρόπος για να βελτιώσετε την εμπειρία σας με πρόσθετες λειτουργίες και προνόμια. Πριν την εγκατάσταση, λάβετε υπόψη τα αποτελέσματα που μπορεί να έχουν στον διακομιστή σας, όπως μεγαλύτερες σαρώσεις βιβλιοθήκης, πρόσθετη επεξεργασία παρασκηνίου και μειωμένη σταθερότητα του συστήματος.", + "MessagePluginInstallDisclaimer": "ΠΡΟΣΟΧΗ: Η εγκατάσταση πρόσθετων από τρίτες πηγές εγκυμονεί κινδύνους. Πιθανόν να περιέχουν ασταθή ή επικίνδυνο κώδικα, και μπορεί να αλλάξει ανά πάσα στιγμή. Εγκαταστήστε πρόσθετα μόνο από πηγές που εμπιστεύεστε και παρακαλούμε να λάβετε υπόψη τα αποτελέσματα που μπορεί να έχουν, συμπεριλαμβανομένης της επικοινωνίας με υπηρεσίες εκτός του διακομιστή σας, μεγαλύτερες σαρώσεις βιβλιοθήκης ή αυξημένο φόρτο λειτουργιών παρασκηνίου.", "MessageSent": "Το μήνυμα στάλθηκε.", "MessageSyncPlayEnabled": "Το SyncPlay ενεργοποιήθηκε.", "MessageSyncPlayErrorMissingSession": "Η ενεργοποίηση του SyncPlay απέτυχε! Λείπει η συνεδρία.", @@ -1599,8 +1599,8 @@ "PlaybackErrorPlaceHolder": "Αυτό είναι ένα σύμβολο κράτησης θέσης για φυσικά μέσα που το Jellyfin δεν μπορεί να παίξει. Τοποθετήστε το δίσκο για αναπαραγωγή.", "PleaseAddAtLeastOneFolder": "Προσθέστε τουλάχιστον έναν φάκελο σε αυτήν τη βιβλιοθήκη κάνοντας κλικ στο κουμπί '+' στην ενότητα 'Φάκελοι'.", "PreferEmbeddedTitlesOverFileNamesHelp": "Καθορίστε τον τίτλο εμφάνισης που θα χρησιμοποιείται όταν δεν υπάρχουν διαθέσιμα μεταδεδομένα Διαδικτύου ή τοπικά μεταδεδομένα.", - "AllowEmbeddedSubtitles": "Απενεργοποιήστε διαφορετικούς τύπους ενσωματωμένων υποτίτλων", - "AllowEmbeddedSubtitlesHelp": "Απενεργοποιήστε τους υπότιτλους που είναι συσκευασμένοι σε κοντέινερ πολυμέσων. Απαιτείται πλήρης ανανέωση της βιβλιοθήκης.", + "AllowEmbeddedSubtitles": "Απενεργοποίηση διαφορετικών τύπων ενσωματωμένων υποτίτλων", + "AllowEmbeddedSubtitlesHelp": "Απενεργοποίηση υποτίτλων που εμπεριέχονται σε κοντέινερ πολυμέσων. Απαιτείται πλήρης ανανέωση της βιβλιοθήκης.", "AllowEmbeddedSubtitlesAllowImageOption": "Να επιτρέπεται η εικόνα", "Preview": "Προεπισκόπηση", "PreviousTrack": "Μετάβαση στο προηγούμενο", @@ -1616,7 +1616,7 @@ "ReleaseGroup": "Ομάδα κυκλοφορίας", "RememberAudioSelections": "Ορισμός κομματιού ήχου με βάση το προηγούμενο στοιχείο", "RememberAudioSelectionsHelp": "Προσπαθήστε να ρυθμίσετε το κομμάτι ήχου στην πλησιέστερη αντιστοίχιση με το τελευταίο βίντεο.", - "ResetPassword": "Επαναφέρετε τον κωδικό πρόσβασης", + "ResetPassword": "Επαναφορά κωδικού πρόσβασης", "SaveChanges": "Αποθήκευσε τις αλλαγές", "SaveSubtitlesIntoMediaFoldersHelp": "Η αποθήκευση υποτίτλων δίπλα σε αρχεία βίντεο θα επιτρέψει την ευκολότερη διαχείρισή τους.", "QuickConnectAuthorizeFail": "Άγνωστος κωδικός γρήγορης σύνδεσης", @@ -1645,11 +1645,11 @@ "LabelFallbackFontPathHelp": "Καθορίστε μια διαδρομή που περιέχει εναλλακτικές γραμματοσειρές για την απόδοση υποτίτλων ASS/SSA. Το μέγιστο επιτρεπόμενο συνολικό μέγεθος γραμματοσειράς είναι 20 MB. Συνιστώνται ελαφριές και φιλικές προς τον Ιστό μορφές γραμματοσειράς όπως το woff2.", "LabelTranscodingInfo": "Πληροφορίες διακωδικοποίησης", "AspectRatioFill": "Γέμισμα", - "PreferFmp4HlsContainer": "Προτιμήστε το fMP4-HLS Media Container", + "PreferFmp4HlsContainer": "Προτίμηση του fMP4-HLS Media Container", "YoutubePlaybackError": "Δεν είναι δυνατή η αναπαραγωγή του ζητούμενου βίντεο.", "YoutubeDenied": "Δεν επιτρέπεται η αναπαραγωγή του ζητούμενου βίντεο σε ενσωματωμένα προγράμματα αναπαραγωγής.", "AllowVppTonemappingHelp": "Πλήρης αντιστοίχιση τόνου βάσει προγράμματος οδήγησης Intel. Προς το παρόν λειτουργεί μόνο σε συγκεκριμένο υλικό με βίντεο HDR10. Αυτό έχει μεγαλύτερη προτεραιότητα σε σύγκριση με άλλη εφαρμογή OpenCL.", - "PreferSystemNativeHwDecoder": "Προτιμήστε τους εγγενείς αποκωδικοποιητές υλικού DXVA ή VA-API του λειτουργικού συστήματος", + "PreferSystemNativeHwDecoder": "Προτίμηση εγγενών αποκωδικοποιητών λειτουργικού συστήματος DXVA ή VA-API υλικού", "EnableIntelLowPowerH264HwEncoder": "Ενεργοποιήστε τον κωδικοποιητή υλικού Intel Low-Power H.264", "AnamorphicVideoNotSupported": "Το αναμορφικό βίντεο δεν υποστηρίζεται", "VideoBitrateNotSupported": "Ο ρυθμός μετάδοσης bit του βίντεο δεν υποστηρίζεται", @@ -1751,15 +1751,15 @@ "LogLevel.Debug": "Εντοπισμός σφαλμάτων", "SubtitleLightGray": "Ανοιχτό γκρι", "ResolutionMatchSource": "Ιδιο με την πηγή", - "SaveRecordingNFO": "Αποθηκεύστε τα μεταδεδομένα εγγραφής EPG στο NFO", + "SaveRecordingNFO": "Αποθήκευση μεταδεδομένων εγγραφής EPG σε NFO", "UnknownError": "Προέκυψε ένα άγνωστο σφάλμα.", "LabelIsHearingImpaired": "Για άτομα με προβλήματα ακοής (SDH)", "AllowAv1Encoding": "Να επιτρέπεται η κωδικοποίηση σε μορφή AV1", "HearingImpairedShort": "ΗI/SDH", "HeaderConfirmRepositoryInstallation": "Επιβεβαιώστε την εγκατάσταση του αποθετηρίου πρόσθετων", "MessageRepositoryInstallDisclaimer": "ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Η εγκατάσταση ενός αποθετηρίου πρόσθετου τρίτου μέρους εγκυμονεί κινδύνους. Μπορεί να περιέχει ασταθή ή κακόβουλο κώδικα και μπορεί να αλλάξει ανά πάσα στιγμή. Εγκαταστήστε αποθετήρια μόνο από συντάκτες που εμπιστεύεστε.", - "PreferEmbeddedExtrasTitlesOverFileNames": "Προτιμήστε τους ενσωματωμένους τίτλους από τα ονόματα αρχείων για πρόσθετα", - "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Τα extras έχουν συχνά το ίδιο ενσωματωμένο όνομα με τον γονέα, ελέγξτε αυτό για να χρησιμοποιήσετε ενσωματωμένους τίτλους για αυτά ούτως ή άλλως.", + "PreferEmbeddedExtrasTitlesOverFileNames": "Προτίμηση ενσωματωμένων τίτλων αντί των ονομάτων αρχείων για extras", + "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Τα extras έχουν συχνά το ίδιο ενσωματωμένο όνομα με τον γονέα, επιλέξτε το για χρήση ενσωματωμένων τίτλων για αυτά ούτως ή άλλως.", "LabelSegmentKeepSecondsHelp": "Χρονικό διάστημα σε δευτερόλεπτα, για το οποίο τα τμήματα θα διατηρούνται έπειτα από την λήψη τους από τον χρήστη. Λειτουργεί μόνο αν η ανίχνευση τμημάτων είναι ενεργοποιημένη.", "AllowSubtitleManagement": "Επίτρεψε στον χρήστη να επεξεργάζεται υποτίτλους", "AllowContentWithTagsHelp": "Μόνο εμφάνιση πολυμέσων με τουλάχιστον μία από τις καθορισμένες ετικέτες.", @@ -1861,7 +1861,7 @@ "LabelIsSynced": "Είναι Συγχρονισμένο", "LabelNoChangelog": "Δεν υπάρχει ημερολόγιο αλλαγών για αυτή την έκδοση.", "LabelQsvDeviceHelp": "Προσδιορίστε την συσκευή για το Intel QSV σε ένα σύστημα με πολλαπλές GPU. Στο Linux, αυτός είναι ο κόμβος απόδοσης, π.χ., /dev/dri/renderD128. Στα Windows, αυτό είναι ο δείκτης της συσκευής αρχίζοντας από το 0. Αφήστε το κενό εκτός κι αν ξέρετε τι κάνετε.", - "LibraryScanFanoutConcurrencyHelp": "Μέγιστος αριθμός παράλληλων διεργασιών κατά τις σαρώσεις βιβλιοθήκης. Αν αυτό είναι 0, θα επιλεγεί ένα όριο βασισμένο στον αριθμό πυρήνων του συστήματος. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αν ο αριθμός αυτός είναι πολύ υψηλός, μπορεί να προκλειθούν προβλήματα με τα συστήματα αρχείων δικτύου· αν συναντήσετε προβλήματα χαμηλώστε τον αριθμό.", + "LibraryScanFanoutConcurrencyHelp": "Μέγιστος αριθμός παράλληλων διεργασιών κατά τις σαρώσεις βιβλιοθήκης. Αφήνοντάς το κενό, θα επιλεγεί ένα όριο βασισμένο στον αριθμό πυρήνων του συστήματος. ΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αν ο αριθμός αυτός είναι πολύ υψηλός, μπορεί να προκλειθούν προβλήματα με τα συστήματα αρχείων δικτύου· αν συναντήσετε προβλήματα χαμηλώστε τον αριθμό.", "LabelMediaSegmentProviders": "Προμηθευτές τμημάτων πολυμέσων", "LibraryScanFanoutConcurrency": "Όριο παράλληλων σαρώσεων βιβλιοθήκης", "LabelQsvDevice": "Συσκευή QSV", @@ -1870,14 +1870,14 @@ "LabelEnableLUFSScanHelp": "Οι πελάτες μπορούν να κανονικοποιούν την αναπαραγωγή ήχου για να έχουν ίση ένταση σε όλα τα κομμάτια. Αυτό θα κάνει τις σαρώσεις βιβλιοθηκών αργότερες και θα χρειαστεί περισσότερους πόρους.", "LabelFallbackMaxStreamingBitrate": "Εναλλακτικό μέγιστο bitrate ροής", "LabelSelectPreferredTranscodeVideoCodec": "Προτιμώμενο codec διακωδικοποίησης βίνετο", - "AutoSubtitleStylingHelp": "Αυτή η λειτουργία θα αλλάζει αυτόματα μεταξύ των προσαρμοσμένων μηχανισμών στυλ υποτίτλων και της συσκευής βασισμένη στον τύπο της συσκευής σας.", + "AutoSubtitleStylingHelp": "Αυτή η λειτουργία θα αλλάζει αυτόματα μεταξύ των εγγενών και των προσαρμοσμένων μηχανισμών στυλ υποτίτλων με βάση τον τύπο της συσκευής σας.", "Custom": "Προσαρμοσμένο", "CustomSubtitleStylingHelp": "Τα στυλ υποτίτλων θα δουλεύουν στις περισσότερες συσκευές, αλλά θα μειώνουν την απόδοση.", "LabelSubtitleStyling": "Στυλ υποτίτλων", "LabelMediaSegmentsType": "{0} Τμήματα", "LabelSaveTrickplayLocally": "Αποθήκευση εικόνων trickplay δίπλα στα πολυμέσα", "LabelLyricDownloaders": "Προγράμματα λήψης στίχων", - "LabelParallelImageEncodingLimitHelp": "Μέγιστος αριθμός παράλληλων κωδικοποιήσεων εικόνας. Αν αυτό είναι 0, θα επιλεγεί ένα όριο βασισμένο στον αριθμό πυρήνων του συστήματος.", + "LabelParallelImageEncodingLimitHelp": "Μέγιστος αριθμός παράλληλων κωδικοποιήσεων εικόνας. Αφήνοντάς το κενό, θα επιλεγεί ένα όριο βασισμένο στον αριθμό πυρήνων του συστήματος.", "LabelSaveTrickplayLocallyHelp": "Η αποθήκευση των εικόνων trickplay μέσα στους φακέλους πολυμέσων θα τις βάλει δίπλα στα πολυμέσα σας για εύκολη μετάβαση και πρόσβαση.", "LabelRepository": "Αποθετήριο", "Letterer": "Ψηφιογράφος", @@ -1907,7 +1907,7 @@ "MoveToTop": "Μετακίνηση στην κορυφή", "RenderPgsSubtitle": "Πειραματική απόδοση υποτίτλων PGS", "RenderPgsSubtitleHelp": "Προσδιορίστε εάν ο πελάτης πρέπει να αποδίδει υπότιτλους PGS αντί να χρησιμοποιεί μόνιμα εγγεγραμμένους υπότιτλους. Αυτό μπορεί να αποφύγει τη διακωδικοποίηση από την πλευρά του διακομιστή σε αντάλλαγμα rendering με καλύτερη απόδοση από την πλευρά του πελάτη.", - "LabelExtractTrickplayDuringLibraryScanHelp": "Δημιουργήστε εικόνες trickplay όταν εισάγονται βίντεο κατά τη σάρωση βιβλιοθήκης. Διαφορετικά, θα εξαχθούν κατά τη διάρκεια της προγραμματισμένης εργασίας εικόνων trickplay. Εάν η δημιουργία έχει ρυθμιστεί σε μη αποκλεισμό, αυτό δεν θα επηρεάσει τον χρόνο που χρειάζεται για να ολοκληρωθεί μια σάρωση βιβλιοθήκης.", + "LabelExtractTrickplayDuringLibraryScanHelp": "Δημιουργία εικόνων trickplay όταν εισάγονται βίντεο κατά τη σάρωση βιβλιοθήκης. Διαφορετικά, θα εξαχθούν κατά τη διάρκεια της προγραμματισμένης εργασίας εικόνων trickplay. Εάν η δημιουργία έχει ρυθμιστεί σε μη αποκλεισμό, αυτό δεν θα επηρεάσει τον χρόνο που χρειάζεται για να ολοκληρωθεί μια σάρωση βιβλιοθήκης.", "LabelImageIntervalHelp": "Χρονικό διάστημα (ms) μεταξύ κάθε νέας εικόνας trickplay.", "PlaybackError.RateLimitExceeded": "Αυτό το πολυμέσο δεν μπορεί να αναπαραχθεί αυτήν τη στιγμή λόγω περιορισμών αξιολόγησης.", "PasswordMissingSaveError": "Ο νέος κωδικός πρόσβασης δεν μπορεί να είναι κενός.", @@ -1921,5 +1921,47 @@ "AllowVideoToolboxTonemappingHelp": "Αντιστοίχιση τονικότητας με επιτάχυνση υλικού που παρέχεται από το VideoToolbox. Λειτουργεί με τις περισσότερες μορφές HDR, συμπεριλαμβανομένων των HDR10, HDR10+ και HLG, αλλά δεν λειτουργεί με το Dolby Vision Profile 5. Αυτό έχει μεγαλύτερη προτεραιότητα σε σύγκριση με μια άλλη υλοποίηση Metal.", "SavePassword": "Αποθήκευση κωδικού πρόσβασης", "PlaybackError.NotAllowed": "Δεν επιτρέπεται η αναπαραγωγή αυτού του πολυμέσου.", - "PriorityIdle": "Σε αδράνεια" + "PriorityIdle": "Σε αδράνεια", + "LabelScanBehaviorHelp": "Η προεπιλεγμένη συμπεριφορά είναι μη αποκλεισμός, η οποία θα προσθέσει πολυμέσα στη βιβλιοθήκη πριν ολοκληρωθεί η δημιουργία trickplay. Ο αποκλεισμός θα εξασφαλίσει τη δημιουργία αρχείων trickplay πριν από την προσθήκη πολυμέσων στη βιβλιοθήκη, αλλά θα κάνει τις σαρώσεις σημαντικά μεγαλύτερες σε διάρκεια.", + "LabelJpegQualityHelp": "Η ποιότητα συμπίεσης JPEG για εικόνες trickplay.", + "LabelTrickplayThreads": "Νήματα FFmpeg", + "LabelTrickplayThreadsHelp": "Ο αριθμός των νημάτων που θα περάσουν στο όρισμα '-threads' του ffmpeg.", + "OptionExtractTrickplayImage": "Ενεργοποίηση εξαγωγής εικόνων με trickplay", + "LabelExtractTrickplayDuringLibraryScan": "Εξαγωγή εικόνων trickplay κατά τη σάρωση βιβλιοθήκης", + "Trickplay": "Trickplay", + "LabelTrickplayAccel": "Ενεργοποίηση αποκωδικοποίησης υλικού", + "LabelTrickplayKeyFrameOnlyExtractionHelp": "Εξαγωγή key frames μόνο, για σημαντικά ταχύτερη επεξεργασία με λιγότερο ακριβή χρονισμό. Εάν ο διαμορφωμένος αποκωδικοποιητής υλικού δεν υποστηρίζει αυτήν τη λειτουργία, θα γίνει χρήση του αποκωδικοποιητή λογισμικού.", + "LabelProcessPriorityHelp": "Η ρύθμιση αυτής της χαμηλότερης ή υψηλότερης τιμής θα καθορίσει πώς η CPU δίνει προτεραιότητα στη διαδικασία δημιουργίας ffmpeg trickplay σε σχέση με άλλες διεργασίες. Αν παρατηρήσετε επιβράδυνση κατά τη δημιουργία εικόνων trickplay, αλλά δεν θέλετε να σταματήσετε εντελώς τη δημιουργία τους, δοκιμάστε να μειώσετε αυτό καθώς και τον αριθμό νημάτων.", + "ExtractTrickplayImagesHelp": "Οι εικόνες trickplay είναι παρόμοιες με τις εικόνες κεφαλαίων, με τη διαφορά ότι καλύπτουν όλο το μήκος του περιεχομένου και χρησιμοποιούνται για την εμφάνιση μιας προεπισκόπησης κατά την περιήγηση σε ένα βίντεο.", + "LabelTrickplayAccelEncoding": "Ενεργοποίηση κωδικοποίησης MJPEG με επιτάχυνση υλικού", + "ReplaceTrickplayImages": "Αντικατάσταση υπαρχουσών εικόνων trickplay", + "LabelTrickplayAccelEncodingHelp": "Προς το παρόν διατίθεται μόνο σε QSV, VA-API, VideoToolbox και RKMPP, αυτή η επιλογή δεν έχει καμία επίδραση σε άλλες μεθόδους επιτάχυνσης υλικού.", + "LabelTrickplayKeyFrameOnlyExtraction": "Δημιουργία εικόνων μόνο από key frames", + "LabelWidthResolutionsHelp": "Λίστα με τα πλάτη (px) στα οποία θα δημιουργηθούν οι εικόνες trickplay, διαχωρισμένων με κόμματα. Ολες οι εικόνες πρέπει να δημιουργούνται αναλογικά με την πηγή, επομένως ένα πλάτος 320 σε ένα βίντεο 16:9 καταλήγει περίπου 320x180.", + "Retry": "Δοκιμή ξανά", + "Reset": "Επαναφορά", + "PlaybackError.ASS_RENDER_ERROR": "Παρουσιάστηκε σφάλμα στην απόδοση των ASS/SSA υποτίτλων.", + "HeaderPageNotFound": "Δεν βρέθηκε η σελίδα", + "PageNotFound": "Αυτή δεν είναι η σελίδα που ψάχνεις.", + "CopyLogSuccess": "Το περιεχόμενο του αρχείου καταγραφής αντιγράφηκε επιτυχώς.", + "DisplayLoadError": "Ένα σφάλμα προέκυψε κατά την φόρτωση των δεδομένων ρύθμισης προβολής.", + "PluginLoadRepoError": "Προέκυψε σφάλμα κατά την λήψη των λεπτομερειών του πρόσθετου από το εναποθετήριο.", + "PluginUninstallError": "Προέκυψε σφάλμα κατά την απεγκατάσταση του πρόσθετου.", + "PlaybackError.NO_MEDIA_ERROR": "Αδυναμία εύρεσης έγκυρης πηγής μέσου προς αναπαραγωγή.", + "PlaybackError.SERVER_ERROR": "Η αναπαραγωγή απέτυχε λόγω σφάλματος του διακομιστή.", + "PlaylistError.AddFailed": "Σφάλμα κατά την προσθήκη στην λίστα αναπαραγωγής", + "PlaylistError.CreateFailed": "Σφάλμα κατά τη δημιουργία της λίστας αναπαραγωγής", + "PlaylistError.UpdateFailed": "Σφάλμα κατά την ενημέρωση της λίστας αναπαραγωγής", + "PluginDisableError": "Προέκυψε σφάλμα κατά την απενεργοποίηση του πρόσθετου.", + "PluginLoadConfigError": "Προέκυψε σφάλμα κατά την λήψη των ρυθμίσεων του πρόσθετου.", + "PluginEnableError": "Προέκυψε σφάλμα κατά την ενεργοποίηση του πρόσθετου.", + "LastActive": "Τελευταία ενεργός", + "PlaybackError.PLAYER_ERROR": "Η αναπαραγωγή απέτυχε λόγω κρίσιμου σφάλματος στον αναπαραγωγέα.", + "PlaylistPublic": "Επιτρέψτε ελεύθερη πρόσβαση", + "PlaylistPublicDescription": "Επιτρέψτε πρόσβαση στην λίστα αναπαραγωγής από οποιονδήποτε συνδεδεμένο χρήστη.", + "PlaybackError.NETWORK_ERROR": "Η αναπαραγωγή απέτυχε λόγω σφάλματος δικτύου.", + "PlaybackError.MEDIA_NOT_SUPPORTED": "Η αναπαραγωγή απέτυχε διότι το μέσο δεν υποστηρίζεται από αυτό το πρόγραμμα.", + "PlaybackError.MEDIA_DECODE_ERROR": "Η αναπαραγωγή απέτυχε λόγω σφάλματος στην αποκωδικοποίηση του μέσου.", + "MetadataImagesLoadError": "Αποτυχία φόρτωσης ρυθμίσεων των μεταδεδομένων", + "PlaybackError.FATAL_HLS_ERROR": "Παρουσιάστηκε κρίσιμο σφάλμα στην ροή HLS." } diff --git a/src/strings/en-us.json b/src/strings/en-us.json index bb5f9cf80a..0204b9817d 100644 --- a/src/strings/en-us.json +++ b/src/strings/en-us.json @@ -823,7 +823,7 @@ "LabelOriginalTitle": "Original title", "LabelOverview": "Overview", "LabelParallelImageEncodingLimit": "Parallel image encoding limit", - "LabelParallelImageEncodingLimitHelp": "Maximum number of image encodings that are allowed to run in parallel. Setting this to 0 will choose a limit based on your systems core count.", + "LabelParallelImageEncodingLimitHelp": "Maximum number of image encodings that are allowed to run in parallel. Leaving this empty will choose a limit based on your systems core count.", "LabelParentalRating": "Parental rating", "LabelParentNumber": "Parent number", "LabelPassword": "Password", @@ -1020,7 +1020,7 @@ "LibraryAccessHelp": "Select the libraries to share with this user. Administrators will be able to edit all folders using the metadata manager.", "LibraryNameInvalid": "Library name cannot be empty.", "LibraryScanFanoutConcurrency": "Parallel library scan tasks limit", - "LibraryScanFanoutConcurrencyHelp": "Maximum number of parallel tasks during library scans. Setting this to 0 will choose a limit based on your systems core count. WARNING: Setting this number too high may cause issues with network file systems; if you encounter problems lower this number.", + "LibraryScanFanoutConcurrencyHelp": "Maximum number of parallel tasks during library scans. Leaving this empty will choose a limit based on your systems core count. WARNING: Setting this number too high may cause issues with network file systems; if you encounter problems lower this number.", "LibraryInvalidItemIdError": "The library is in an invalid state and cannot be edited. You are possibly encountering a bug: the path in the database is not the correct path on the filesystem.", "LimitSupportedVideoResolution": "Limit maximum supported video resolution", "LimitSupportedVideoResolutionHelp": "Use 'Maximum Allowed Video Transcoding Resolution' as maximum supported video resolution.", @@ -1498,6 +1498,7 @@ "ServerRestartNeededAfterPluginInstall": "Jellyfin will need to be restarted after installing the plugin.", "ServerUpdateNeeded": "This server needs to be updated. To download the latest version, please visit {0}", "Settings": "Settings", + "SettingsPageLoadError": "Failed to load settings page", "SettingsSaved": "Settings saved.", "SettingsWarning": "Changing these values may cause instability or connectivity failures. If you experience any problems, we recommend changing them back to default.", "Share": "Share", diff --git a/src/strings/es.json b/src/strings/es.json index db2896e3a1..f85b5dd661 100644 --- a/src/strings/es.json +++ b/src/strings/es.json @@ -1708,7 +1708,7 @@ "PreferEmbeddedExtrasTitlesOverFileNames": "Prefiere títulos incrustados sobre nombres de archivo para extras", "LabelDummyChapterCountHelp": "Número máximo de imágenes de capítulos que se extraerán para cada archivo multimedia.", "LabelEnableAudioVbrHelp": "La tasa de bits variable ofrece una mejor relación entre calidad y tasa de bits promedio, pero en algunos casos raros puede causar problemas de almacenamiento de búfer y compatibilidad.", - "LabelParallelImageEncodingLimitHelp": "Cantidad máxima de codificaciones de imágenes que pueden ejecutarse en paralelo. Establecer esto en 0 elegirá un límite basado en la cantidad de nucleos (CPU) en su sistema.", + "LabelParallelImageEncodingLimitHelp": "Cantidad máxima de codificaciones de imágenes que pueden ejecutarse en paralelo. Dejando vacío el valor elegirá un límite basado en la cantidad de nucleos (CPU) en su sistema.", "ResolutionMatchSource": "Coincidir fuente", "SubtitleMagenta": "Magenta", "SubtitleWhite": "Blanco", @@ -1870,7 +1870,7 @@ "OptionExtractTrickplayImage": "Habilitar la extracción de imágenes de trickplay", "LabelExtractTrickplayDuringLibraryScanHelp": "Generar imágenes de trickplay cuando los vídeos se importan durante el escaneo de la biblioteca. De lo contrario se extraerán durante la tarea programada de extracción de imágenes de trickplay. Si la generación es no bloqueante esto no afectará al tiempo que la biblioteca tarda en escanearse.", "Author": "Autor", - "LibraryScanFanoutConcurrencyHelp": "Número máximo de tareas en paralelo durante los escaneos de la biblioteca. Configurar este valor en 0 seleccionará un límite basado en la cantidad de núcleos de tu sistema. ADVERTENCIA: Configurar un número demasiado alto puede causar problemas con sistemas de archivos en red; si experimentas inconvenientes, reduce este valor.", + "LibraryScanFanoutConcurrencyHelp": "Número máximo de tareas en paralelo durante los escaneos de la biblioteca. Dejar el campo vacío seleccionará un límite basado en la cantidad de núcleos de tu sistema. ADVERTENCIA: Configurar un número demasiado alto puede causar problemas con sistemas de archivos en red; si experimentas inconvenientes, reduce este valor.", "LibraryScanFanoutConcurrency": "Límite de tareas de escaneo en paralelo de la biblioteca", "Penciller": "Lapicista", "PlaylistError.CreateFailed": "Error creando lista de reproduccion", @@ -2009,5 +2009,8 @@ "HeaderMediaSegmentActions": "Acciones del segmento de medios", "MetadataNfoLoadError": "Error al cargar la configuración de metadatos NFO", "DisplayLoadError": "Un error ocurrió mientras se cargaba la configuración de visualización.", - "MetadataImagesLoadError": "Error al cargar la configuración de metadatos" + "MetadataImagesLoadError": "Error al cargar la configuración de metadatos", + "HeaderPageNotFound": "Página no encontrada", + "PageNotFound": "Esta no es la página que está buscando.", + "SettingsPageLoadError": "Fallo al cargar la página de configuraciones" } diff --git a/src/strings/fa.json b/src/strings/fa.json index 0bef3aae26..a055b7a5b4 100644 --- a/src/strings/fa.json +++ b/src/strings/fa.json @@ -1707,5 +1707,23 @@ "HeaderAllRecordings": "همه‌ی ضبط‌ها", "Inker": "جوهرافشان", "HeaderMediaSegmentActions": "اقدام‌های بخش محتوا", - "HeaderNoLyrics": "متن شعری یافت نشد" + "HeaderNoLyrics": "متن شعری یافت نشد", + "CustomSubtitleStylingHelp": "استایل‌بندی زیرنویس در بیشتر دستگاه‌ها کار می‌کند، اما ممکن است باعث افزایش مصرف منابع شود.", + "DisplayLoadError": "خطایی در هنگام بارگذاری داده‌های پیکربندی نمایش رخ داد.", + "HeaderPageNotFound": "صفحه مورد نظر پیدا نشد", + "AutoSubtitleStylingHelp": "این حالت به‌طور خودکار بین مکانیزم‌های بومی و سفارشی نمایش زیرنویس بر اساس نوع دستگاه شما جابه‌جا می‌شود.", + "Custom": "سفارشی", + "CopyLogSuccess": "محتوای گزارش با موفقیت کپی شد.", + "LabelDelimiterWhitelist": "فهرست سفید جداکننده‌ها", + "DeleteServerConfirmation": "آیا مطمئن هستید که می‌خواهید این سرور را حذف کنید؟", + "LabelBackdropScreensaverIntervalHelp": "زمان به ثانیه بین پس‌زمینه‌های مختلف هنگام استفاده از اسکرین‌سیور پس‌زمینه.", + "LabelDelimiterWhitelistHelp": "آیتم‌هایی که باید از تقسیم برچسب‌ها مستثنی شوند. هر آیتم در یک خط وارد شود.", + "EnableHi10p": "فعال کردن پروفایل H.264 High 10", + "LabelBuildVersion": "نسخه ساخت", + "LabelCustomTagDelimiters": "محدوده جداکننده برچسب سفارشی", + "LabelCustomTagDelimitersHelp": "کاراکترهایی که به‌عنوان جداکننده برای تفکیک برچسب‌ها در نظر گرفته می‌شوند.", + "LabelDevice": "دستگاه", + "LabelDisableVbrAudioEncoding": "غیرفعال کردن کدگذاری صوتی VBR", + "LabelDropLyricsHere": "متن ترانه را اینجا رها کنید یا برای جستوجو کلیک کنید.", + "LabelDuration": "مدت زمان" } diff --git a/src/strings/fr.json b/src/strings/fr.json index 0f3154f036..635a3bc96d 100644 --- a/src/strings/fr.json +++ b/src/strings/fr.json @@ -2009,5 +2009,7 @@ "LogLoadFailure": "Échec du chargement du fichier journal. Il est possible qu'il soit encore en cours d'écriture.", "DisplayLoadError": "Une erreur est survenue lors du chargement des données de configuration d'affichage.", "MetadataImagesLoadError": "Échec du chargement des paramètres de métadonnées", - "LibraryNameInvalid": "Le nom de la bibliothèque ne peut pas être vide." + "LibraryNameInvalid": "Le nom de la bibliothèque ne peut pas être vide.", + "HeaderPageNotFound": "Page introuvable", + "PageNotFound": "Ceci n'est pas la page que vous cherchez." } diff --git a/src/strings/he.json b/src/strings/he.json index 020f7848dc..4af9b5333c 100644 --- a/src/strings/he.json +++ b/src/strings/he.json @@ -33,7 +33,7 @@ "ChannelNameOnly": "ערוץ {0} בלבד", "ChannelNumber": "מספר ערוץ", "Composer": "מלחין", - "ConfigureDateAdded": "‫הגדר כיצד תאריך ההוספה נקבע בלוח המחוונים ב- Dashboard > Libraries > NFO Settings", + "ConfigureDateAdded": "‫הגדר כיצד תאריך ההוספה נקבע בלוח המחוונים ב- Dashboard > Libraries > Display", "ConfirmDeleteImage": "למחוק את התמונה?", "ConfirmDeleteItem": "מחיקת פריט זה תמחק אותו הן ממערכת הקבצים והן מספריית המדיה שלך. האם אתה בטוח שברצונך להמשיך?", "ConfirmDeleteItems": "מחיקת פריטים אלה תמחק אותם הן ממערכת הקבצים והן מספריית המדיה שלך. האם אתה בטוח שברצונך להמשיך?", @@ -1366,7 +1366,7 @@ "LabelPublishedServerUri": "כתובות URI של השרת שיפורסמו", "LabelPublishedServerUriHelp": "יש לדרוס את ה-URI שבשימוש ג'ליפין, בהתבסס על כרטיס הרשת, או כתובת IP של הלקוח. למשל: internal=http://jellyfin.example.com, external=https://jellyfin.example.com, או all=https://jellyfin.example.com", "LabelParallelImageEncodingLimit": "גבול קידוד תמונות במקביל", - "LabelParallelImageEncodingLimitHelp": "המספר המקסימלי של קידודי תמונות שירוצו במקביל. הגדרה של 0 תבחר ערך בהתאם למספר המעבדים במערכת שלך.", + "LabelParallelImageEncodingLimitHelp": "המספר המקסימלי של קידודי תמונות שירוצו במקביל. השארת ערך זה ריק תקבע מגבלה בהתאם למספר המעבדים במערכת שלך.", "LabelPlayDefaultAudioTrack": "ניגון פס הקול הדיפולטי ללא תלות בשפה", "LabelPublicHttpPortHelp": "מספר הפורט הפומבי אשר ימופה לפורט HTTP המקומי.", "LabelQsvDevice": "רכיב QSV", @@ -1472,7 +1472,7 @@ "LeaveBlankToNotSetAPassword": "ניתן להשאיר ריק כדי להימנע מהגדרת סיסמה.", "Letterer": "מכתב/ת", "LibraryScanFanoutConcurrency": "הגבלת מספר סריקות הספרייה המקבילות", - "LibraryScanFanoutConcurrencyHelp": "המספר המירבי של משימות מקבילות במהלך סריקת ספריות. הגדרה כ-0 תבחר גבול בהתבסס על מספר המעבדים במערכת שלך. אזהרה: הגדרת מספר גבוה מדי עלולה לגרום לבעיות עם מערכות קבצים ברשת. אם נתקלת בבעיה יש להוריד את המספר.", + "LibraryScanFanoutConcurrencyHelp": "המספר המירבי של משימות מקבילות במהלך סריקת ספריות. השארת ערך זה ריק תקבע גבול בהתבסס על מספר המעבדים במערכת שלך. אזהרה: הגדרת מספר גבוה מדי עלולה לגרום לבעיות עם מערכות קבצים ברשת. אם נתקלת בבעיה יש להוריד את המספר.", "LogLevel.Information": "מידע", "LogLevel.Warning": "אזהרה", "LogLevel.Error": "שגיאה", @@ -1931,5 +1931,18 @@ "CustomSubtitleStylingHelp": "עיצוב הכתוביות עובד ברוב המכשירים, אך גורר פגיעה נוספת בביצועים.", "LabelSubtitleStyling": "עיצוב כתוביות", "Native": "מקורי", - "NativeSubtitleStylingHelp": "עיצוב הכתוביות לא יעבוד על מכשירים מסוימים. עם זאת, לא תהיה פגיעה בביצועים." + "NativeSubtitleStylingHelp": "עיצוב הכתוביות לא יעבוד על מכשירים מסוימים. עם זאת, לא תהיה פגיעה בביצועים.", + "MetadataNfoLoadError": "קרתה שגיאה בתהליך טעינת הגדרות הNFO מטא-דאטה", + "HeaderPageNotFound": "דף זה לא נמצא", + "PageNotFound": "זה לא הדף שחיפשתם.", + "CopyLogSuccess": "תוכן הלוג הועתק ללוח בהצלחה.", + "LogLoadFailure": "נכשל בטעינת קובץ הלוג. ייתכן שעדיין ממשיך להיכתב לקובץ זה.", + "DisplayLoadError": "קרתה שגיאה בתהליך טעינת נתוני הגדרות התצוגה.", + "Retry": "נסה שנית", + "DeleteServerConfirmation": "האם אתה בטוח שברצונך למחוק שרת זה?", + "LabelDevice": "מכשיר", + "LastActive": "פעילות אחרונה", + "MetadataImagesLoadError": "קרתה שגיאה בתהליך טעינת הגדרות המטא-דאטה", + "LibraryNameInvalid": "שם הספרייה לא יכול להיות ריק.", + "SettingsPageLoadError": "נכשל בטעינת דף ההגדרות" } diff --git a/src/strings/hr.json b/src/strings/hr.json index 70357bf3e4..fb84ffc847 100644 --- a/src/strings/hr.json +++ b/src/strings/hr.json @@ -1564,5 +1564,25 @@ "CoverArtist": "Ilustrator omota", "Creator": "Autor", "MessageImageTypeNotSelected": "Molimo odaberite vrstu slike u padajućem izborniku.", - "AllowFmp4TranscodingContainerHelp": "Dopusti fMP4 spremnik transkodiranja za ovaj tuner za omogućavanje HEVC i HDR sadržaja. Nisu svi tuneri kompatibilni s ovim spremnikom. Isključite ovu opciju ako imate problema s reprodukcijom." + "AllowFmp4TranscodingContainerHelp": "Dopusti fMP4 spremnik transkodiranja za ovaj tuner za omogućavanje HEVC i HDR sadržaja. Nisu svi tuneri kompatibilni s ovim spremnikom. Isključite ovu opciju ako imate problema s reprodukcijom.", + "Custom": "Prilagođeno", + "Retry": "Pokušaj ponovno", + "DisplayLoadError": "Dogodila se pogreška tijekom prikazivanja podataka za konfiguraciju.", + "EnableLibrary": "Uključite biblioteku", + "EnableLibraryHelp": "Isključivanje bibliotekeće ju sakriti od svih korisnika.", + "AlwaysBurnInSubtitleWhenTranscoding": "Uvijek ureži titlove tijekom transkodiranja", + "AlwaysRemuxFlacAudioFilesHelp": "Ako imate datoteke koje Vaš preglednik ne želi izvoditi ili kada neprecizno izračuna vremenske oznake, uključite ovo kao zaobilazak.", + "AlwaysRemuxMp3AudioFilesHelp": "Ako imate datoteke za koje Vaš preglednik neprecizno izračunava vremenske oznake, uključite ovo kao zaobilazak.", + "EditLyrics": "Uredi tekst pjesme", + "EnableDts": "Uključi DTS (DCA)", + "EnableDtsHelp": "Uključite samo ako Vaš uređaj podržava DTS ili je spojen na kompatibilni audio receiver ili će se stvarati problemi sa izvođenjem.", + "Alternate": "Alternativno", + "AlternateDVD": "Alternativni DVD", + "DeleteServerConfirmation": "Jeste li sigurni da želite obrisati ovaj poslužitelj?", + "EnableHi10pHelp": "Uključi za izbjegavanje transkodiranja H.264 10-bitnih videozapisa. Isključite ovu opciju ako videozapis prikazuje prazne slike.", + "Anime": "Anime", + "EnableHi10p": "Uključi H.264 High 10 Profil", + "EnableTrueHd": "Uključi TrueHD", + "Editor": "Uređivač", + "DateModified": "Datum izmjenjivanja" } diff --git a/src/strings/it.json b/src/strings/it.json index ae3b708fc9..778b1b33c3 100644 --- a/src/strings/it.json +++ b/src/strings/it.json @@ -1721,7 +1721,7 @@ "LabelEnableAudioVbr": "Abilita codifica audio VBR", "LabelEnableAudioVbrHelp": "Il bitrate variabile offre una migliore qualità rispetto al rapporto bitrate medio, ma in alcuni rari casi può causare problemi di buffering e compatibilità.", "LabelParallelImageEncodingLimit": "Limite codifica parallela delle immagini", - "LabelParallelImageEncodingLimitHelp": "Numero massimo di codifiche di immagini che possono essere eseguite in parallelo. Impostandolo su 0 sceglierai un limite basato sul numero di core del sistema.", + "LabelParallelImageEncodingLimitHelp": "Numero massimo di codifiche di immagini che possono essere eseguite in parallelo. Se vuoto sceglierai un limite basato sul numero di core del sistema.", "PreferEmbeddedExtrasTitlesOverFileNames": "Preferisci i titoli incorporati ai nomi dei file per gli extra", "PreferEmbeddedExtrasTitlesOverFileNamesHelp": "Gli extra hanno spesso lo stesso nome incorporato del parent, controlla questo per usare comunque titoli incorporati per loro.", "SaveRecordingImagesHelp": "Salva le immagini dal fornitore di elenchi EPG insieme ai media.", @@ -1886,7 +1886,7 @@ "PlaylistPublic": "Consenti accesso pubblico", "PlaylistPublicDescription": "Consenti che questa playlist sia visibile ad ogni utente loggato.", "HeaderLyricDownloads": "Scarica testi", - "LibraryScanFanoutConcurrencyHelp": "Massimo numero di task parallele durante la scansione delle librerie. Se impostato a 0 sarà utilizzato il numero di core del sistema. ATTENZIONE: impostare un numero troppo alto potrebbe causare problemi sui network filesystem. In caso di problemi ridurre il numero.", + "LibraryScanFanoutConcurrencyHelp": "Massimo numero di task parallele durante la scansione delle librerie. Se vuoto sarà utilizzato il numero di core del sistema. ATTENZIONE: impostare un numero troppo alto potrebbe causare problemi sui network filesystem. In caso di problemi ridurre il numero.", "LabelSelectPreferredTranscodeVideoAudioCodec": "Codec audio preferito per la transcodica durante la riproduzione video", "LibraryScanFanoutConcurrency": "Massimo numero di task durante la scansione", "Colorist": "Colorista", @@ -2011,5 +2011,6 @@ "MetadataImagesLoadError": "Caricamento metadati delle immagini fallito", "MetadataNfoLoadError": "Errore nel caricamento dei metadati NFO", "HeaderPageNotFound": "Pagina non trovata", - "PageNotFound": "Questa non è la pagina che stai cercando." + "PageNotFound": "Questa non è la pagina che stai cercando.", + "SettingsPageLoadError": "Errore nel caricamento della pagina di configurazione" } diff --git a/src/strings/nb.json b/src/strings/nb.json index b6ca20013a..32530a24f0 100644 --- a/src/strings/nb.json +++ b/src/strings/nb.json @@ -84,7 +84,7 @@ "ColorSpace": "Fargeutvalg", "ColorTransfer": "Overføring av farger", "Composer": "Komponist", - "ConfigureDateAdded": "Konfigurer hvordan metadata for \"Dato lagt til\" bestemmes på Dashbord > Bibliotek > NFO Innstillinger", + "ConfigureDateAdded": "Konfigurer hvordan metadata for \"Dato lagt til\" bestemmes på Dashbord > Bibliotek > Vis", "ConfirmDeleteImage": "Slett bilde?", "ConfirmDeleteItem": "Sletting av elementet vil slette det fra både filsystemet og biblioteket. Er du sikker på at du vil fortsette?", "ConfirmDeleteItems": "Sletting av disse elementene vil slette dem fra både filsystemet og mediebiblioteket. Er du sikker på at du vil fortsette?", @@ -439,7 +439,7 @@ "LabelLineup": "Oppstilling", "LabelLocalHttpServerPortNumber": "Lokal HTTP portnummer", "LabelLocalHttpServerPortNumberHelp": "TCP portnummeret for HTTP-serveren.", - "LabelLockItemToPreventChanges": "Lås dette elementet for å hindre fremtidige endringer", + "LabelLockItemToPreventChanges": "Lås dette elementet for å forhindre fremtidige endringer i metadata", "LabelLoginDisclaimer": "Ansvarsfraskrivelse ved innlogging", "LabelLoginDisclaimerHelp": "En melding som vises på bunnen av innloggingssiden.", "LabelLogs": "Logger", @@ -1731,7 +1731,7 @@ "TonemappingModeHelp": "Velg tonemappingsmodus. Hvis du merker overeksponerte høylysområder, prøv å bytt til RGB-modus.", "EnableAudioNormalizationHelp": "Lydnormalisering vil legge på en konstant lydforsterkning for å holde gjennomsnittet på ønsket nivå (-18db).", "LabelEnableLUFSScan": "Slå på LUFS-skanning", - "LabelParallelImageEncodingLimitHelp": "Høyeste antall bildeenkodinger som tillates å kjøre parallelt. Hvis du setter denne til 0, velges en grense basert på antall prosessorkjerne i systemet.", + "LabelParallelImageEncodingLimitHelp": "Maksimalt antall bildeenkodinger som kan kjøres parallelt. Hvis dette feltet står tomt, vil grensen velges basert på antall kjerner i systemet ditt.", "LabelChapterImageResolutionHelp": "Oppløsningen til kapittelbildene. Enring av dette vil ikke ha noen effekt på eksisterende kapittelbilder.", "LabelParallelImageEncodingLimit": "Parallell bildeenkodingsgrense", "LabelEnableLUFSScanHelp": "Klienter kan normalisere lydnivå for å få lik lydstyrke på tvers av spor. Dette vil gjøre bibliotekskanning lengre og bruke flere ressurser.", @@ -1992,5 +1992,20 @@ "LabelDevice": "Enhet", "LastActive": "Sist aktiv", "DeleteServerConfirmation": "Er du sikker på du ønsker å fjerne denne tjeneren?", - "LibraryNameInvalid": "Biblioteksnavn kan ikke være tom eller inneholde mellomrom." + "LibraryNameInvalid": "Biblioteksnavnet kan ikke være tomt.", + "MetadataNfoLoadError": "Kunne ikke laste metadata NFO instillinger", + "PageNotFound": "Dette er ikke siden du ser etter.", + "SettingsPageLoadError": "Kunne ikke laste inn innstillingssiden", + "HeaderPageNotFound": "Side ikke funnet", + "CopyLogSuccess": "Logginnhold kopiert vellykket.", + "LogLoadFailure": "Kunne ikke laste inn loggfilen. Den kan fortsatt være i bruk og skrives til.", + "AutoSubtitleStylingHelp": "Denne modusen vil automatisk bytte mellom den innebygde og egendefinerte undertekststilingen basert på enhetstypen din.", + "CustomSubtitleStylingHelp": "Undertekststilingen vil fungere på de fleste enheter, men medfører en ekstra belastning på ytelsen.", + "Custom": "Egendefinert", + "DisplayLoadError": "Det oppstod en feil under lasting av skjermkonfigurasjonsdata.", + "NativeSubtitleStylingHelp": "Undertekststilingen vil ikke fungere på noen enheter. Den medfører imidlertid ingen ekstra belastning på ytelsen.", + "LabelSubtitleStyling": "Undertekstiling", + "Native": "Innebygd", + "Retry": "Prøv igjen", + "MetadataImagesLoadError": "Kunne ikke laste inn metadata-innstillinger" } diff --git a/src/strings/nl.json b/src/strings/nl.json index 9114c0467e..4be83344f5 100644 --- a/src/strings/nl.json +++ b/src/strings/nl.json @@ -1717,7 +1717,7 @@ "Featurette": "Featurette", "Short": "Korte film", "HeaderPerformance": "Prestaties", - "LabelParallelImageEncodingLimitHelp": "Maximaal aantal afbeeldingscoderingen dat tegelijkertijd mag lopen. Bij een instelling van 0 wordt een limiet gekozen gebaseerd op het aantal processorkernen in je systeem.", + "LabelParallelImageEncodingLimitHelp": "Maximaal aantal afbeeldingscoderingen dat tegelijkertijd mag lopen. Wanneer leeg gelaten wordt er een limiet gekozen gebaseerd op het aantal processorkernen in je systeem.", "LabelParallelImageEncodingLimit": "Limiet gelijktijdige afbeeldingscoderingen", "LabelEnableAudioVbr": "VBR-audiocodering inschakelen", "LabelEnableAudioVbrHelp": "Een variabele bitsnelheid biedt een betere verhouding tussen kwaliteit en gemiddelde bitsnelheid, maar kan in zeldzame gevallen tot bufferen of compatibiliteitsproblemen leiden.", @@ -1890,7 +1890,7 @@ "Letterer": "Beletteraar", "Penciller": "Schetser", "Translator": "Vertaler", - "LibraryScanFanoutConcurrencyHelp": "Maximaal aantal gelijktijdige taken tijdens bibliotheekscans. Bij een instelling van 0 wordt een limiet gekozen gebaseerd op het aantal processorkernen in je systeem. WAARSCHUWING: een te hoge instelling kan problemen veroorzaken met netwerkbestandssystemen; verlaag dit getal als je problemen tegenkomt.", + "LibraryScanFanoutConcurrencyHelp": "Maximaal aantal gelijktijdige taken tijdens bibliotheekscans. Wanneer leeg gelaten wordt er een limiet gekozen gebaseerd op het aantal processorkernen in je systeem. WAARSCHUWING: een te hoge instelling kan problemen veroorzaken met netwerkbestandssystemen; verlaag dit getal als je problemen tegenkomt.", "LibraryScanFanoutConcurrency": "Limiet gelijktijdige bibiotheekscantaken", "LabelSelectPreferredTranscodeVideoAudioCodec": "Gewenste geluidscodec bij afspelen video", "SelectPreferredTranscodeVideoAudioCodecHelp": "Selecteer de gewenste geluidscodec om naartoe te transcoderen bij video-inhoud. Als de voorkeurscodec niet wordt ondersteund, gebruikt de server de beste codec die wel beschikbaar is.", @@ -2010,5 +2010,6 @@ "MetadataImagesLoadError": "Laden van metadata-instellingen mislukt", "MetadataNfoLoadError": "Laden van metadata-NFO-instellingen mislukt", "PageNotFound": "Dit is niet de pagina die je zoekt.", - "HeaderPageNotFound": "Pagina niet gevonden" + "HeaderPageNotFound": "Pagina niet gevonden", + "SettingsPageLoadError": "Laden van instellingenpagina mislukt" } diff --git a/src/strings/pl.json b/src/strings/pl.json index 2a9fa80568..4d7405ad61 100644 --- a/src/strings/pl.json +++ b/src/strings/pl.json @@ -1718,7 +1718,7 @@ "HeaderPerformance": "Wydajność", "Featurette": "Film średniometrażowy", "Short": "Film krótkometrażowy", - "LabelParallelImageEncodingLimitHelp": "Maksymalna liczba kodowań obrazów, które mogą być uruchomione równolegle. Ustawienie wartości na 0 spowoduje wybór limitu w oparciu o specyfikacje Twojego systemu.", + "LabelParallelImageEncodingLimitHelp": "Maksymalna liczba kodowań obrazów, które mogą być uruchomione równolegle. Pozostawienie tego pola pustego spowoduje wybór limitu w oparciu o specyfikacje Twojego systemu.", "LabelParallelImageEncodingLimit": "Limit kodowań obrazów, które mogą być uruchomione równolegle", "LabelEnableAudioVbrHelp": "Zmienna przepływność bitów oferuje lepsze proporcje jakości do przepustowości w porównaniu z przepływnością średnią, ale w niektórych rzadkich przypadkach może powodować problemy z buforowaniem i zgodnością.", "LabelEnableAudioVbr": "Włącz kodowanie audio VBR", @@ -1892,7 +1892,7 @@ "Penciller": "Rysownik", "Translator": "Tłumacz", "LibraryScanFanoutConcurrency": "Limit zadań równoległego skanowania bibliotek", - "LibraryScanFanoutConcurrencyHelp": "Maksymalna liczba zadań równoległych podczas skanowania bibliotek. Ustawienie tej opcji na 0 spowoduje wybranie limitu na podstawie liczby rdzeni systemu. OSTRZEŻENIE: ustawienie zbyt dużej liczby może powodować problemy z sieciowymi systemami plików; jeśli napotkasz problemy, obniż tę liczbę.", + "LibraryScanFanoutConcurrencyHelp": "Maksymalna liczba zadań równoległych podczas skanowania bibliotek. Pozostawienie tego pola pustego spowoduje wybranie limitu na podstawie liczby rdzeni systemu. OSTRZEŻENIE: ustawienie zbyt dużej liczby może powodować problemy z sieciowymi systemami plików; jeśli napotkasz problemy, obniż tę liczbę.", "LabelSelectPreferredTranscodeVideoAudioCodec": "Preferowany transkodowany kodek audio podczas odtwarzania wideo", "SelectPreferredTranscodeVideoAudioCodecHelp": "Wybierz preferowany kodek audio, na który chcesz transkodować zawartość wideo. Jeśli preferowany kodek nie jest obsługiwany, serwer użyje następnego najlepszego dostępnego kodeka.", "Alternate": "Alternatywne", @@ -2011,5 +2011,6 @@ "MetadataImagesLoadError": "Nie udało się załadować ustawień metadanych", "MetadataNfoLoadError": "Nie udało się załadować ustawień metadanych NFO", "HeaderPageNotFound": "Nie znaleziono strony", - "PageNotFound": "To nie jest strona, której szukasz." + "PageNotFound": "To nie jest strona, której szukasz.", + "SettingsPageLoadError": "Nie udało się załadować strony ustawień" } diff --git a/src/strings/ro.json b/src/strings/ro.json index e69c2ab8ff..9d92b5dbcd 100644 --- a/src/strings/ro.json +++ b/src/strings/ro.json @@ -1678,7 +1678,7 @@ "LabelChapterImageResolution": "Rezoluție", "LabelChapterImageResolutionHelp": "Rezoluția imaginilor extrase din capitole. Modificarea acestui parametru nu va avea niciun efect asupra capitolelor fictive existente.", "LabelParallelImageEncodingLimit": "Limita encodărilor simultane", - "LabelParallelImageEncodingLimitHelp": "Numărul maxim de encodări ale imaginilor care sunt permise să ruleze simultan. Setarea acestei valori la 0 va alege automat o limită bazată pe specificațiile tehnice ale sistemului.", + "LabelParallelImageEncodingLimitHelp": "Numărul maxim de encodări ale imaginilor care sunt permise să ruleze simultan. Lăsând această opțiune goală, se va alege automat o limită bazată pe specificațiile tehnice ale sistemului.", "HeaderDummyChapter": "Imaginile Capitolelor", "HeaderRecordingMetadataSaving": "Înregistrarea Metadatelor", "EnableSplashScreen": "Activează ecranul splash", @@ -1947,24 +1947,24 @@ "LabelSubtitleStyling": "Stilul subtitrarilor", "LabelQsvDevice": "Dispozitiv QSV", "LabelQsvDeviceHelp": "Specificați dispozitivul pentru Intel QSV pe un sistem multi-GPU. Pe Linux, acesta este nodul de randare, de exemplu, /dev/dri/renderD128. Pe Windows, acesta este indexul dispozitivului care începe de la 0. Lăsați necompletat dacă nu știți ce faceți.", - "LibraryScanFanoutConcurrencyHelp": "Numărul maxim de sarcini paralele în timpul scanărilor bibliotecii. Setarea acestui număr la 0 va alege o limită bazată pe numărul de nuclee ale sistemului dumneavoastră. ATENȚIE: Setarea unui număr prea mare poate cauza probleme cu sistemele de fișiere de rețea; dacă întâmpinați probleme, reduceți acest număr.", + "LibraryScanFanoutConcurrencyHelp": "Numărul maxim de sarcini paralele în timpul scanărilor bibliotecii. Lăsând această opțiune goală, se va alege o limită bazată pe numărul de nuclee ale sistemului dumneavoastră. ATENȚIE: Setarea unui număr prea mare poate cauza probleme cu sistemele de fișiere de rețea; dacă întâmpinați probleme, reduceți acest număr.", "NoLyricsSearchResultsFound": "Nu au fost găsite versuri.", "PluginDisableError": "A apărut o eroare la dezactivarea pluginului.", "MoveToBottom": "Mută la final", "MediaSegmentType.Preview": "Prezentări", "MoviesAndShows": "Filme și seriale", - "MessageCancelSeriesTimerError": "A apărut o eroare la anularea temporizatorului serialului.", - "MessageCancelTimerError": "A apărut o eroare la anularea temporizatorului.", - "PlaylistError.CreateFailed": "Eroare la creare playlist.", + "MessageCancelSeriesTimerError": "A apărut o eroare la anularea temporizatorului serialului", + "MessageCancelTimerError": "A apărut o eroare la anularea temporizatorului", + "PlaylistError.CreateFailed": "Eroare la creare playlist", "MediaSegmentType.Recap": "Rezumat", "PlaylistPublicDescription": "Permite ca acest playlist să fie vizualizat de orice utilizator conectat.", "LyricDownloadersHelp": "Activează și ordonează descărcătoarele de versuri preferate în funcție de prioritate.", - "PlaylistError.AddFailed": "Eroare la adăugarea în playlist.", + "PlaylistError.AddFailed": "Eroare la adăugarea în playlist", "PlaylistPublic": "Permite accesul public", "PluginEnableError": "A apărut o eroare la activarea pluginului.", "LibraryInvalidItemIdError": "Biblioteca se află într-o stare invalidă și nu poate fi editată. Este posibil să întâmpinați un bug: calea din baza de date nu este calea corectă pe sistemul de fișiere.", "MediaSegmentAction.AskToSkip": "Cere să sari peste", - "PlaylistError.UpdateFailed": "Eroare la actualizarea playlistului.", + "PlaylistError.UpdateFailed": "Eroare la actualizarea playlistului", "CopyLogSuccess": "Conținutul jurnalului a fost copiat cu succes.", "PasswordMissingSaveError": "Noua parolă nu poate fi goală.", "Retry": "Reîncearcă", @@ -2010,5 +2010,7 @@ "NativeSubtitleStylingHelp": "Stilizarea subtitrărilor nu va funcționa pe unele dispozitive. Totuși, acest lucru nu afectează performanța.", "DisplayLoadError": "A apărut o eroare în timpul încărcării datelor de configurare a afișajului.", "Penciller": "Creionist", - "MetadataImagesLoadError": "Nu s-au putut încărca setările metadata" + "MetadataImagesLoadError": "Nu s-au putut încărca setările metadata", + "SettingsPageLoadError": "Încărcarea paginii de setări a eșuat", + "LabelDelimiterWhitelist": "Lista albă de delimitare" } diff --git a/src/strings/ru.json b/src/strings/ru.json index 8397bb5aa8..a30fec3fad 100644 --- a/src/strings/ru.json +++ b/src/strings/ru.json @@ -774,7 +774,7 @@ "MediaInfoLayout": "Компоновка", "MediaInfoLevel": "Уровень", "MediaInfoPath": "Путь", - "MediaInfoPixelFormat": "Пикс. формат", + "MediaInfoPixelFormat": "Формат пикселей", "MediaInfoProfile": "Профиль", "MediaInfoRefFrames": "Опорные кадры", "MediaInfoResolution": "Разрешение", @@ -1699,7 +1699,7 @@ "LabelEnableAudioVbr": "Включить кодировку звука VBR", "LabelEnableAudioVbrHelp": "Переменный битрейт обеспечивает лучшее соотношение качества к среднему, но в некоторых редких случаях может вызвать проблемы с буферизацией и совместимостью.", "LabelParallelImageEncodingLimit": "Ограничение на параллельное кодирование изображений", - "LabelParallelImageEncodingLimitHelp": "Максимальное количество кодировок изображений, которые разрешено выполнять параллельно. Установив это значение равным 0, вы выберете ограничение, основанное на количестве ядер вашей системы.", + "LabelParallelImageEncodingLimitHelp": "Максимальное количество кодировок изображений, которые разрешено выполнять параллельно. Оставив это значение пустым, вы выберете ограничение, основанное на количестве ядер вашей системы.", "HeaderPerformance": "Производительность", "LabelDummyChapterDurationHelp": "Интервал между изображениями разделов. Установите значение 0, чтобы отключить генерацию изображений разделов. Изменение этого параметра не повлияет на существующие изображения разделов.", "LabelChapterImageResolutionHelp": "Разрешение созданных изображений разделов. Изменение этого параметра не повлияет на существующие изображения разделов.", @@ -1799,7 +1799,7 @@ "ChannelResolutionUHD4K": "UHD (4K)", "DeleteName": "Удалить {0}", "LabelBuildVersion": "Версия сборки", - "AirPlay": "AirPlay", + "AirPlay": "Трансляция", "AllowContentWithTagsHelp": "Отображать контент с хотя бы одним из заданных тэгов.", "BlockContentWithTagsHelp": "Скрывать контент с хотя бы одним из заданных тэгов.", "ConfirmDeleteSeries": "Удаление сериала приведёт к удалению ВСЕХ {0} эпизодов и из файловой системы, и из вашей библиотеки. Вы уверены, что хотите продолжить?", @@ -1906,7 +1906,7 @@ "EnableTrueHd": "Включить TrueHD", "EnableTrueHdHelp": "Включайте только в том случае, если ваше устройство поддерживает TrueHD или подключено к совместимому аудиоресиверу, в противном случае это может привести к сбою воспроизведения.", "AllowTonemappingSoftwareHelp": "Тонмаппинг может преобразовать динамический диапазон видео из HDR в SDR, сохраняя при этом детали изображения и цвета, которые являются очень важной информацией для отображения исходной сцены. В настоящее время работает только с 10-битными видео HDR10, HLG и DoVi.", - "LibraryScanFanoutConcurrencyHelp": "Максимальное количество параллельных задач при сканировании библиотеки. Установка значения 0 приведет к выбору ограничения в зависимости от количества ядер вашей системы. ВНИМАНИЕ: Установка слишком большого значения может вызвать проблемы с сетевыми файловыми системами; если у вас возникнут проблемы, уменьшите это число.", + "LibraryScanFanoutConcurrencyHelp": "Максимальное количество параллельных задач при сканировании библиотеки. Установка пустого значения приведет к выбору ограничения в зависимости от количества ядер вашей системы. ВНИМАНИЕ: Установка слишком большого значения может вызвать проблемы с сетевыми файловыми системами; если у вас возникнут проблемы, уменьшите это число.", "LabelTrickplayKeyFrameOnlyExtractionHelp": "Извлечение только ключевых кадров для значительно более быстрой обработки с менее точной синхронизацией. Если настроенный аппаратный декодер не поддерживает этот режим, вместо него будет использоваться программный декодер.", "MoveToBottom": "Перейти вниз", "MoveToTop": "Перейти наверх", @@ -2009,5 +2009,8 @@ "Retry": "Повторить", "MetadataNfoLoadError": "Не удалось загрузить настройки NFO метаданных", "DisplayLoadError": "Произошла ошибка при загрузке данных конфигурации дисплея.", - "MetadataImagesLoadError": "Не удалось загрузить настройки метаданных" + "MetadataImagesLoadError": "Не удалось загрузить настройки метаданных", + "HeaderPageNotFound": "Станица не найдена", + "PageNotFound": "Это не та страница, которую вы искали.", + "SettingsPageLoadError": "Не удалось загрузить страницу параметров" } diff --git a/src/strings/sk.json b/src/strings/sk.json index e789777ac1..8811c156c7 100644 --- a/src/strings/sk.json +++ b/src/strings/sk.json @@ -1706,7 +1706,7 @@ "LabelEnableAudioVbr": "Povoliť kódovanie zvuku VBR", "HeaderPerformance": "Výkon", "AllowCollectionManagement": "Povoliť tomuto používateľovi spravovať kolekcie", - "LabelParallelImageEncodingLimitHelp": "Maximálny počet kódovaní obrázkov, ktoré môžu bežať paralelne. Nastavením tejto hodnoty na 0 sa zvolí limit na základe špecifikácie vášho systému.", + "LabelParallelImageEncodingLimitHelp": "Maximálny počet kódovaní obrázkov, ktoré môžu bežať paralelne. Ak túto položku necháte prázdnu, zvolí sa limit na základe počtu CPU jadier vášho systému.", "TonemappingModeHelp": "Vyberte režim mapovania tónov. Ak sa vyskytnú preexponované svetlé miesta, skúste prepnúť na režim RGB.", "Featurette": "Stredne dlhý film", "Short": "Krátky film", @@ -1891,7 +1891,7 @@ "SaveLyricsIntoMediaFoldersHelp": "Uloženie textov piesní k zvukovým súborom umožní ich jednoduchšie spravovanie.", "Translator": "Prekladateľ", "PlaylistPublicDescription": "Povoliť zobrazenie tohto playlistu každému prihlásenému používateľovi.", - "LibraryScanFanoutConcurrencyHelp": "Maximálny počet paralelných úloh počas skenovania knižnice. Nastavením tejto hodnoty na 0 sa zvolí limit na základe počtu jadier CPU vášho systému. UPOZORNENIE: Nastavenie príliš vysokého čísla môže spôsobiť problémy so sieťovými súborovými systémami, Ak sa vyskytnú problémy, znížte toto číslo.", + "LibraryScanFanoutConcurrencyHelp": "Maximálny počet paralelných úloh počas skenovania knižnice. Ak túto položku necháte prázdnu, zvolí sa limit na základe počtu CPU jadier vášho systému. UPOZORNENIE: Nastavenie príliš vysokého čísla môže spôsobiť problémy so sieťovými súborovými systémami, Ak sa vyskytnú problémy, znížte toto číslo.", "LibraryScanFanoutConcurrency": "Limit úloh paralelného skenovania knižnice", "LabelSelectPreferredTranscodeVideoAudioCodec": "Preferovaný zvukový kodek pre prekódovanie počas prehrávania videa", "SelectPreferredTranscodeVideoAudioCodecHelp": "Vyberte preferovaný zvukový kodek pre prekódovanie počas prehrávania videa. Ak preferovaný kodek nie je podporovaný, server použije ďalší najlepší dostupný kodek.", @@ -2011,5 +2011,6 @@ "DisplayLoadError": "Pri načítavaní konfiguračných údajov displeja došlo k chybe.", "MetadataNfoLoadError": "Nepodarilo sa načítať nastavenia NFO metadát", "HeaderPageNotFound": "Stránka nebola nájdená", - "PageNotFound": "Toto nie je stránka, ktorú hľadáš." + "PageNotFound": "Toto nie je stránka, ktorú hľadáš.", + "SettingsPageLoadError": "Nepodarilo sa načítať stránku s nastaveniami" } diff --git a/src/strings/te.json b/src/strings/te.json index a436618d9a..8957d7fbb7 100644 --- a/src/strings/te.json +++ b/src/strings/te.json @@ -1306,7 +1306,7 @@ "ConfirmDeleteItems": "ఈ అంశాలను తొలగించడం వలన ఫైల్ సిస్టమ్ మరియు మీ మీడియా లైబ్రరీ రెండింటి నుండి తొలగించబడతాయి. మీరు ఖచ్చితంగా కొనసాగాలని అనుకుంటున్నారా?", "ConfirmDeleteItem": "ఈ అంశాన్ని తొలగిస్తే అది ఫైల్ సిస్టమ్ మరియు మీ మీడియా లైబ్రరీ రెండింటి నుండి తొలగించబడుతుంది. మీరు ఖచ్చితంగా కొనసాగాలని అనుకుంటున్నారా?", "ConfirmDeleteImage": "చిత్రాన్ని తొలగించాలా?", - "ConfigureDateAdded": "లైబ్రరీ సెట్టింగుల క్రింద డాష్‌బోర్డ్‌లో జోడించిన తేదీ ఎలా నిర్ణయించబడుతుందో కాన్ఫిగర్ చేయండి", + "ConfigureDateAdded": "'జోడించిన తేదీ' కోసం మెటాడేటా ఎలా నిర్ణయించబడుతుందో డాష్‌బోర్డ్ > గ్రంథాలయాలు > ప్రదర్శనలో సెటప్ చేయండి", "Composer": "స్వరకర్త", "CommunityRating": "సంఘం రేటింగ్", "ColorTransfer": "రంగు బదిలీ", @@ -1544,5 +1544,33 @@ "AllowTonemappingSoftwareHelp": "వాయు మాపనం అనేది వీడియో యొక్క చైతన్యవంతమైన పరిధిని హెచ్‌డిఆర్ నుండి యస్డిఆర్ కి మార్చగలదు, అదే సమయంలో అసలు దృశ్యాన్ని సూచించడానికి చాలా ముఖ్యమైన సమాచారం అయిన చిత్ర వివరాలు మరియు రంగులను నిర్వహిస్తుంది. ప్రస్తుతం ఇది 10బిట్ హెచ్‌డిఆర్10, హెచ్‌ఎల్‌జి మరియు డోవి వీడియోలతో మాత్రమే పనిచేస్తుంది.", "AlwaysRemuxFlacAudioFilesHelp": "మీ విహరిణి ఆటలాడుట చేయడానికి తిరస్కరించిన వరుసలు ఉంటే లేదా సమయ కొలతలను తప్పుగా లెక్కిస్తే, దీన్ని ఒక పరిష్కారంగా ప్రారంభించండి.", "AlwaysRemuxMp3AudioFilesHelp": "మీ విహరిణి సమయ కొలతలను తప్పుగా లెక్కించే వరుసలు మీ వద్ద ఉంటే, దీన్ని ఒక పరిష్కారంగా ప్రారంభించండి.", - "Anime": "అనిమే" + "Anime": "అనిమే", + "SelectAudioNormalizationHelp": "ట్రాక్ పెరుగుట - ప్రతి ట్రాక్ యొక్క పరిమాణమును సర్దుబాటు చేస్తుంది, తద్వారా అవి ఒకే శబ్ద తీవ్రతతో ప్లేబ్యాక్ అవుతాయి. సేకరణ పుస్తకం పెరుగుట - సేకరణ పుస్తకం యొక్క క్రియాశీలకపరిధిని ఉంచుతూ, సేకరణ పుస్తకంలోని అన్ని ట్రాక్‌ల పరిమాణమును మాత్రమే సర్దుబాటు చేస్తుంది. \"ఆఫ్\" మరియు ఇతర ఎంపికల మధ్య మారడానికి ప్రస్తుత ప్లేబ్యాక్‌ను పునఃప్రారంభించాలి.", + "Console": "కన్సోల్", + "Colorist": "రంగాల వ్యవహారి", + "Conductor": "కండక్టర్", + "CoverArtist": "కవర్ ఆర్టిస్ట్", + "ConfirmDeleteSeries": "ఈ సిరీస్‌ను తొలగించడం వలన ఫైల్ సిస్టమ్ మరియు మీ మీడియా లైబ్రరీ రెండింటి నుండి అన్ని {0} ఎపిసోడ్‌లు తొలగించబడతాయి. మీరు ఖచ్చితంగా కొనసాగించాలనుకుంటున్నారా?", + "Creator": "సృష్టికర్త", + "CopyLogSuccess": "లాగ్ కంటెంట్‌లు విజయవంతంగా అనుకరణ చేయబడ్డాయి.", + "Copy": "అనుకరణ", + "CopyFailed": "అనుకరణ చేయడం సాధ్యం కాలేదు", + "Copied": "అనుకరణ చేయబడింది", + "Cursive": "గొలుసుకట్టు", + "Custom": "ఆచారం", + "ConfirmDeleteLyrics": "ఈ లిరిక్స్‌ను తొలగించడం వలన అవి ఫైల్ సిస్టమ్ మరియు మీ మీడియా లైబ్రరీ రెండింటి నుండి తొలగించబడతాయి. మీరు ఖచ్చితంగా కొనసాగించాలనుకుంటున్నారా?", + "EnableRewatchingNextUp": "తదుపరి దానిలో తిరిగి చూడటం ప్రారంభించండి", + "Editor": "సంపాదకుడు", + "EnableDtsHelp": "మీ పరికరం డిటిఎస్ కి మద్దతు ఇస్తే లేదా అనుకూలమైన ఆడియో రిసీవర్‌కు కనెక్ట్ చేయబడి ఉంటే మాత్రమే ప్రారంభించండి, లేకుంటే అది ప్లేబ్యాక్ వైఫల్యానికి కారణం కావచ్చు.", + "EnableDts": "డిటిఎస్ (డిసిఎ) ని ప్రారంభించండి", + "EnableLibrary": "గ్రాండాలయానీ ప్రారంభించండి", + "EnableLibraryHelp": "గ్రంధాలయాని నిలిపివేయడం వలన అది అన్ని వినియోగదారు వీక్షణల నుండి దాచబడుతుంది.", + "EnableSmoothScroll": "మృదువైన స్క్రోల్‌ను ప్రారంభించండి", + "EnableTrueHd": "ట్రూ హెచ్డి ని ప్రారంభించండి", + "EditLyrics": "సాహిత్యాన్ని సవరించండి", + "EnableHi10p": "H.264 హై 10 ప్రొఫైల్‌ను ప్రారంభించు", + "DownloadAll": "అన్నీ డౌన్‌లోడ్ చేసుకోండి", + "EnableCardLayout": "దృశ్య కార్డ్‌బాక్స్‌ను ప్రదర్శించు", + "EnableHi10pHelp": "H.264 10-బిట్ వీడియోలను ట్రాన్స్‌కోడ్ చేయకుండా ఉండటానికి ప్రారంభించండి. వీడియో ఖాళీ ఫ్రేమ్‌లను ప్రదర్శిస్తే ఈ ఎంపికను నిలిపివేయండి.", + "EnableRewatchingNextUpHelp": "'తదుపరిది' విభాగాలలో ఇప్పటికే చూసిన ఎపిసోడ్‌లను చూపించడాన్ని ప్రారంభించండి." } diff --git a/src/strings/uk.json b/src/strings/uk.json index 5fc47055cd..caf4376a74 100644 --- a/src/strings/uk.json +++ b/src/strings/uk.json @@ -1716,7 +1716,7 @@ "Featurette": "Художник", "HeaderPerformance": "Продуктивність", "LabelParallelImageEncodingLimit": "Обмеження на паралельне кодування зображень", - "LabelParallelImageEncodingLimitHelp": "Максимальна кількість кодувань зображень, які дозволено запускати паралельно. Якщо встановити значення 0, буде обрано обмеження на основі кількості ядер у вашій системі.", + "LabelParallelImageEncodingLimitHelp": "Максимальна кількість кодувань зображень, які дозволено запускати паралельно. Якщо залишити значення пустим, буде обрано обмеження на основі кількості ядер у вашій системі.", "LabelEnableAudioVbrHelp": "Змінний бітрейт забезпечує краще співвідношення якості до середнього бітрейту, але в деяких рідкісних випадках може спричинити проблеми з буферизацією та сумісністю.", "LabelEnableAudioVbr": "Увімкнути VBR", "Select": "Обрати", @@ -1885,7 +1885,7 @@ "PlaylistPublicDescription": "Дозволити переглядати цього плейлиста будь-якому зареєстрованому користувачеві.", "HeaderLyricDownloads": "Завантаження текстів пісень", "SaveLyricsIntoMediaFolders": "Зберігати тексти пісень в теках з медіафайлами", - "LibraryScanFanoutConcurrencyHelp": "Максимальна кількість паралельних завдань під час сканування медіатеки. Якщо встановити значення 0, буде обрано обмеження на основі кількості ядер у вашій системі. ПОПЕРЕДЖЕННЯ: Занадто високе значення цього параметра може спричинити проблеми з мережевими файловими системами; якщо ви зіткнулися з такими проблемами, зменшіть це значення.", + "LibraryScanFanoutConcurrencyHelp": "Максимальна кількість паралельних завдань під час сканування медіатеки. Якщо залишити значення пустим, буде обрано обмеження на основі кількості ядер у вашій системі. ПОПЕРЕДЖЕННЯ: Занадто високе значення цього параметра може спричинити проблеми з мережевими файловими системами; якщо ви зіткнулися з такими проблемами, зменшіть це значення.", "LibraryScanFanoutConcurrency": "Обмеження на паралельне сканування медіатек", "Inker": "Inker", "Penciller": "Penciler", @@ -2008,5 +2008,6 @@ "MetadataImagesLoadError": "Не вдалося завантажити налаштування метаданих", "MetadataNfoLoadError": "Не вдалося завантажити налаштування метаданих NFO", "HeaderPageNotFound": "Сторінку не знайдено", - "PageNotFound": "Це не та сторінка, яку ви шукаєте." + "PageNotFound": "Це не та сторінка, яку ви шукаєте.", + "SettingsPageLoadError": "Не вдалося завантажити сторінку налаштувань" } diff --git a/src/strings/vi.json b/src/strings/vi.json index 3d72b487fe..c27af15a6a 100644 --- a/src/strings/vi.json +++ b/src/strings/vi.json @@ -2006,5 +2006,7 @@ "LogLoadFailure": "Không tải được tệp nhật ký. Nó vẫn có thể được viết tích cực.", "DisplayLoadError": "Đã xảy ra lỗi trong khi tải dữ liệu cấu hình hiển thị.", "MetadataImagesLoadError": "Không tải được cài đặt dữ liệu mô tả", - "MetadataNfoLoadError": "Tải cài đặt dữ liệu mô tả NFO thất bại" + "MetadataNfoLoadError": "Tải cài đặt dữ liệu mô tả NFO thất bại", + "PageNotFound": "Đây không phải là trang bạn đang tìm kiếm.", + "HeaderPageNotFound": "Không tìm thấy trang" } diff --git a/src/strings/zh-cn.json b/src/strings/zh-cn.json index 90b5c0e4d6..5104fdb7b9 100644 --- a/src/strings/zh-cn.json +++ b/src/strings/zh-cn.json @@ -168,7 +168,7 @@ "Episodes": "剧集", "ErrorAddingListingsToSchedulesDirect": "我们将阵容添加到您的Schedules Direct帐户时出错。 Schedules Direct只允许有限的账号排序。 您可能需要在继续前直接登入Schedules Direct 网站并删除其他列表。", "ErrorAddingMediaPathToVirtualFolder": "添加媒体路径时发生错误。请确认路径是有效的,并且Jellyfin有对该位置的访问权。", - "ErrorAddingTunerDevice": "添加协调器设备时发生错误。请确认它是可访问的然后再试一次。", + "ErrorAddingTunerDevice": "添加调谐器设备时发生错误。请确认它是可访问的然后再试一次。", "ErrorAddingXmlTvFile": "访问 XmlTV 文件时发生错误。请确认该文件是否存在然后再试一次。", "ErrorGettingTvLineups": "下载 电视节目表 时发生错误。请确认你的信息是否正确,然后再试。", "ErrorStartHourGreaterThanEnd": "结束时间必须在开始时间后。", @@ -758,7 +758,7 @@ "MessageDirectoryPickerLinuxInstruction": "对于Arch Linux、 CentOS、Debian、Fedora、OpenSuse、Ubuntu上的Linux系统,你必须授权系统服务用户访问你存储位置。", "MessageDownloadQueued": "下载已列队。", "MessageEnablingOptionLongerScans": "启用此选项可能会大大延长媒体库扫描时间。", - "MessageFileReadError": "读取文件发生错误。", + "MessageFileReadError": "读取文件时发生错误,请重试。", "MessageForgotPasswordFileCreated": "已在服务器上创建了以下文件, 并包含有关后续步骤说明", "MessageForgotPasswordInNetworkRequired": "请连接你的家庭网络后再试一次以开始密码重置流程。", "MessageInvalidForgotPasswordPin": "无效的或过期的 PIN码。请再试一次。", @@ -900,7 +900,7 @@ "OptionReportByteRangeSeekingWhenTranscoding": "转码时,报告服务器支持的字节查询", "OptionReportByteRangeSeekingWhenTranscodingHelp": "这是一些设备必需的,不用赶时间。", "OptionRequirePerfectSubtitleMatch": "仅下载与视频文件完全匹配的字幕", - "OptionRequirePerfectSubtitleMatchHelp": "要求完全匹配将会筛选字幕,以仅包括已经通过的确切视频文件,进行测试和验证的字幕。取消选中此项,将会以过多的类似视频文件的字幕下载,也会增加错误或不正确字幕文件的概率。", + "OptionRequirePerfectSubtitleMatchHelp": "要求完美匹配将会筛选字幕,以仅包含那些已经过测试并验证与您的确切视频文件相匹配的字幕。取消勾选此项将增加字幕下载的可能性,但会增加字幕时间轴错位或文本错误的概率。", "OptionResElement": "'res' 元素", "OptionResumable": "可恢复播放", "OptionSaveMetadataAsHidden": "保存媒体资料和图像为隐藏文件", @@ -1381,8 +1381,8 @@ "SubtitleVerticalPositionHelp": "文字出现的行号。正数表示由上到下,负数表示由下到上。", "LabelSubtitleVerticalPosition": "垂直位置", "PreviousTrack": "上一集", - "MessageGetInstalledPluginsError": "获取已安装插件列表时出现错误。", - "MessagePluginInstallError": "安装插件时出现错误。", + "MessageGetInstalledPluginsError": "获取已安装插件列表时发生错误。", + "MessagePluginInstallError": "安装插件时发生错误。", "NextTrack": "下一集", "LabelUnstable": "不稳定", "PlaybackRate": "播放速度", @@ -1717,7 +1717,7 @@ "SubtitleYellow": "黄色", "Featurette": "花絮", "Short": "短片", - "LabelParallelImageEncodingLimitHelp": "允许并行运行的最大图像编码数量。 将其设置为 0 将根据您的系统核心数量选择限制。", + "LabelParallelImageEncodingLimitHelp": "允许并行运行的最大图像编码数量。将其留空则会根据您的系统核心数量选择限制。", "HeaderPerformance": "性能", "LabelParallelImageEncodingLimit": "并行图像编码限制", "LabelEnableAudioVbr": "启用 VBR 音频编码", @@ -1892,7 +1892,7 @@ "Penciller": "线稿师", "Translator": "译者", "LibraryScanFanoutConcurrency": "并行媒体库扫描任务限制", - "LibraryScanFanoutConcurrencyHelp": "媒体库扫描期间并行任务的最大数量。将其设置为 0 将根据您的系统核心数量选择限制。警告:将此数字设置得太高可能会导致网络文件系统出现问题; 如果您遇到问题,请降低此数字。", + "LibraryScanFanoutConcurrencyHelp": "媒体库扫描期间并行任务的最大数量。将其留空则将根据您的系统核心数量选择限制。警告:将此数字设置得太高可能会导致网络文件系统出现问题; 如果您遇到问题,请降低此数字。", "LabelSelectPreferredTranscodeVideoAudioCodec": "转码播放视频时首选的音频编码", "SelectPreferredTranscodeVideoAudioCodecHelp": "选择转码播放视频时首选的音频编码方式。如果首选的音频编码不被支持,服务器将使用下一个最佳的音频编码。", "Regional": "区域", @@ -1906,11 +1906,11 @@ "LabelNoChangelog": "这个版本并没有更改日志。", "LabelNotInstalled": "未安装", "LabelRepository": "仓库", - "PluginDisableError": "在安装插件时发生错误。", - "PluginEnableError": "在启用插件的时候发生错误。", - "PluginLoadConfigError": "在获取插件配置页面的时候发生错误。", - "PluginLoadRepoError": "在从仓库获取插件详情的时候发生了错误。", - "PluginUninstallError": "在卸载插件的时候发生了错误。", + "PluginDisableError": "禁用插件时发生错误。", + "PluginEnableError": "启用插件时发生错误。", + "PluginLoadConfigError": "获取插件配置页面时发生错误。", + "PluginLoadRepoError": "从仓库获取插件详情时发生错误。", + "PluginUninstallError": "卸载插件时发生错误。", "HeaderNextItemPlayingInValue": "下一个 {0} 在 {1} 播放", "AndOtherArtists": "{0} 和 {1} 位其他艺术家。", "PasswordMissingSaveError": "新密码不能为空。", @@ -2007,5 +2007,10 @@ "CopyLogSuccess": "已成功复制日志内容。", "Retry": "重试", "DisplayLoadError": "加载显示配置时发生错误。", - "MetadataImagesLoadError": "加载元数据设置时发生错误" + "MetadataImagesLoadError": "加载元数据设置时发生错误", + "MetadataNfoLoadError": "无法加载元数据 NFO 设置", + "HeaderPageNotFound": "未找到页面", + "PageNotFound": "这不是您正在寻找的页面。", + "LogLoadFailure": "无法加载日志文件,可能正在被写入中。", + "SettingsPageLoadError": "加载设置页面时发生错误" } diff --git a/src/strings/zh-hk.json b/src/strings/zh-hk.json index 343ae39662..c96aa8c289 100644 --- a/src/strings/zh-hk.json +++ b/src/strings/zh-hk.json @@ -194,7 +194,7 @@ "OptionUnairedEpisode": "尚未播放的劇集", "OptionWakeFromSleep": "從休眠中恢復", "OptionWeekly": "每週", - "ParentalRating": "Parental Rating", + "ParentalRating": "家長分級", "Play": "播放", "Record": "錄影", "Refresh": "重新整理", @@ -1294,5 +1294,10 @@ "MusicAlbum": "音樂專輯", "MoveRight": "向右移動", "MoveToBottom": "移至底部", - "MoveLeft": "向左移動" + "MoveLeft": "向左移動", + "PasswordResetComplete": "密碼已重設。", + "HeaderPageNotFound": "找不到頁面", + "PageNotFound": "這不是你要找的頁面。", + "PasswordMatchError": "密碼和確認密碼必須一致。", + "PasswordRequiredForAdmin": "管理員帳戶必須設定密碼。" } diff --git a/src/utils/dashboard.js b/src/utils/dashboard.js index e67a80b66c..46c181910d 100644 --- a/src/utils/dashboard.js +++ b/src/utils/dashboard.js @@ -105,7 +105,7 @@ export function logout() { // Reset cached views viewContainer.reset(); webSettings.getMultiServer().then(multi => { - multi ? navigate('selectserver.html') : navigate('login.html'); + multi ? navigate('selectserver') : navigate('login'); }); }); } @@ -191,7 +191,7 @@ export function selectServer() { if (window.NativeShell && typeof window.NativeShell.selectServer === 'function') { window.NativeShell.selectServer(); } else { - navigate('selectserver.html'); + navigate('selectserver'); } }