diff --git a/.github/workflows/create_heroku_review_app.yaml b/.github/workflows/create_heroku_review_app.yaml index 61605fb65..56caa2cdf 100644 --- a/.github/workflows/create_heroku_review_app.yaml +++ b/.github/workflows/create_heroku_review_app.yaml @@ -1,13 +1,40 @@ name: Review App on: - pull_request_target: - types: [opened] + pull_request: + types: [opened, synchronize] jobs: create-review-app: runs-on: ubuntu-latest steps: - - uses: fastruby/manage-heroku-review-app@9fa49f0320460f278c3687bc348dd0cbb18555dc # v1.3 + - name: Get PR Number + id: get_pr_number + run: echo "::set-output name=pr_number::${{ github.event.pull_request.number }}" + + - name: Check if PR Number is greater than 140 + id: set_step_id + run: | + pr_number=${{ steps.get_pr_number.outputs.pr_number }} + if [ $pr_number -gt 140 ]; then + echo "::set-output name=step_id::true" + else + echo "::set-output name=step_id::false" + fi + + - name: Display step_id + run: echo "Step ID is ${{ steps.set_step_id.outputs.step_id }}" + + - uses: kqito/manage-heroku-review-app@55e434ad5ac86f21cf2f7654de1566973fbc7046 + if: ${{ steps.set_step_id.outputs.step_id == 'true' }} + with: + action: destroy + env: + HEROKU_API_TOKEN: ${{ secrets.HEROKU_API_TOKEN }} + HEROKU_PIPELINE_ID: ${{ secrets.HEROKU_PIPELINE_ID }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: kqito/manage-heroku-review-app@55e434ad5ac86f21cf2f7654de1566973fbc7046 + if: ${{ steps.set_step_id.outputs.step_id == 'true' }} with: action: create env: diff --git a/.github/workflows/destroy_heroku_review_app.yaml b/.github/workflows/destroy_heroku_review_app.yaml index b2bf67949..cbcec744a 100644 --- a/.github/workflows/destroy_heroku_review_app.yaml +++ b/.github/workflows/destroy_heroku_review_app.yaml @@ -7,7 +7,7 @@ jobs: destroy-review-app: runs-on: ubuntu-latest steps: - - uses: fastruby/manage-heroku-review-app@9fa49f0320460f278c3687bc348dd0cbb18555dc # v1.3 + - uses: kqito/manage-heroku-review-app@55e434ad5ac86f21cf2f7654de1566973fbc7046 with: action: destroy env: diff --git a/.gitignore b/.gitignore index d7ef94f61..f2ca0b463 100644 --- a/.gitignore +++ b/.gitignore @@ -219,3 +219,6 @@ $RECYCLE.BIN/ # Wireit .wireit + +# Cursor +.cursor \ No newline at end of file diff --git a/package.json b/package.json index 88d45e67d..dd04026ff 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,9 @@ "engines": { "node": "22.14.0" }, + "volta": { + "node": "22.14.0" + }, "pnpm": { "overrides": { "es-abstract": "~1.23.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 576486ce7..67eb24786 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -69,18 +69,12 @@ importers: immer: specifier: 10.1.1 version: 10.1.1 - lodash: - specifier: 4.17.21 - version: 4.17.21 luxon: specifier: 3.5.0 version: 3.5.0 m3u8-parser: specifier: 7.2.0 version: 7.2.0 - p-min-delay: - specifier: 4.0.2 - version: 4.0.2 react: specifier: 19.0.0 version: 19.0.0 @@ -123,9 +117,6 @@ importers: valibot: specifier: 1.0.0-rc.3 version: 1.0.0-rc.3(typescript@5.7.2) - view-transitions-polyfill: - specifier: 1.0.3 - version: 1.0.3 zod: specifier: 3.24.1 version: 3.24.1 @@ -160,9 +151,6 @@ importers: '@iconify/types': specifier: 2.0.0 version: 2.0.0 - '@types/lodash': - specifier: 4.17.16 - version: 4.17.16 '@types/luxon': specifier: 3.4.2 version: 3.4.2 @@ -175,9 +163,15 @@ importers: '@types/react-dom': specifier: 19.0.2 version: 19.0.2(@types/react@19.0.1) + '@types/webpack-bundle-analyzer': + specifier: 4.7.0 + version: 4.7.0(webpack-cli@5.1.4) '@types/wicg-task-scheduling': specifier: 2024.1.0 version: 2024.1.0 + '@unocss/postcss': + specifier: 66.1.0-beta.6 + version: 66.1.0-beta.6(postcss@8.5.3) '@unocss/preset-icons': specifier: 66.1.0-beta.5 version: 66.1.0-beta.5 @@ -199,18 +193,33 @@ importers: babel-loader: specifier: 9.2.1 version: 9.2.1(@babel/core@7.26.0)(webpack@5.96.1) - core-js: - specifier: 3.41.0 - version: 3.41.0 + css-loader: + specifier: 7.1.2 + version: 7.1.2(webpack@5.96.1) hls.js: specifier: 1.5.17 version: 1.5.17 + postcss: + specifier: 8.5.3 + version: 8.5.3 + postcss-loader: + specifier: 8.1.1 + version: 8.1.1(postcss@8.5.3)(typescript@5.7.2)(webpack@5.96.1) + postcss-preset-env: + specifier: 10.1.5 + version: 10.1.5(postcss@8.5.3) shaka-player: specifier: 4.12.5 version: 4.12.5(patch_hash=ztcamgtqc3a62la4l6p3d6w4ae) + style-loader: + specifier: 4.0.0 + version: 4.0.0(webpack@5.96.1) typescript: specifier: 5.7.2 version: 5.7.2 + unocss: + specifier: 66.1.0-beta.6 + version: 66.1.0-beta.6(postcss@8.5.3) video.js: specifier: 8.21.0 version: 8.21.0 @@ -240,22 +249,22 @@ importers: version: 2.0.5 eslint: specifier: 9.15.0 - version: 9.15.0 + version: 9.15.0(jiti@2.4.2) eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@9.15.0) + version: 9.1.0(eslint@9.15.0(jiti@2.4.2)) eslint-import-resolver-typescript: specifier: 3.6.3 - version: 3.6.3(eslint-plugin-import@2.31.0)(eslint@9.15.0) + version: 3.6.3(eslint-plugin-import@2.31.0)(eslint@9.15.0(jiti@2.4.2)) eslint-plugin-import: specifier: 2.31.0 - version: 2.31.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0) + version: 2.31.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0(jiti@2.4.2)) eslint-plugin-react: specifier: 7.37.4 - version: 7.37.4(eslint@9.15.0) + version: 7.37.4(eslint@9.15.0(jiti@2.4.2)) eslint-plugin-sort: specifier: 4.0.0 - version: 4.0.0(eslint@9.15.0)(typescript@5.7.2) + version: 4.0.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) globals: specifier: 15.12.0 version: 15.12.0 @@ -276,7 +285,7 @@ importers: version: 5.7.2 typescript-eslint: specifier: 8.16.0 - version: 8.16.0(eslint@9.15.0)(typescript@5.7.2) + version: 8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) devDependencies: '@types/node': specifier: 22.10.0 @@ -1022,6 +1031,258 @@ packages: '@better-fetch/fetch@1.1.15': resolution: {integrity: sha512-0Bl8YYj1f8qCTNHeSn5+1DWv2hy7rLBrQ8rS8Y9XYloiwZEfc3k4yspIG0llRxafxqhGCwlGRg+F8q1HZRCMXA==} + '@csstools/cascade-layer-name-parser@2.0.4': + resolution: {integrity: sha512-7DFHlPuIxviKYZrOiwVU/PiHLm3lLUR23OMuEEtfEOQTOp9hzQ2JjdY6X5H18RVuUPJqSCI+qNnD5iOLMVE0bA==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/color-helpers@5.0.2': + resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} + engines: {node: '>=18'} + + '@csstools/css-calc@2.1.2': + resolution: {integrity: sha512-TklMyb3uBB28b5uQdxjReG4L80NxAqgrECqLZFQbyLekwwlcDDS8r3f07DKqeo8C4926Br0gf/ZDe17Zv4wIuw==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-color-parser@3.0.8': + resolution: {integrity: sha512-pdwotQjCCnRPuNi06jFuP68cykU1f3ZWExLe/8MQ1LOs8Xq+fTkYgd+2V8mWUWMrOn9iS2HftPVaMZDaXzGbhQ==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-parser-algorithms@3.0.4': + resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/css-tokenizer@3.0.3': + resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + engines: {node: '>=18'} + + '@csstools/media-query-list-parser@4.0.2': + resolution: {integrity: sha512-EUos465uvVvMJehckATTlNqGj4UJWkTmdWuDMjqvSUkjGpmOyFZBVwb4knxCm/k2GMTXY+c/5RkdndzFYWeX5A==} + engines: {node: '>=18'} + peerDependencies: + '@csstools/css-parser-algorithms': ^3.0.4 + '@csstools/css-tokenizer': ^3.0.3 + + '@csstools/postcss-cascade-layers@5.0.1': + resolution: {integrity: sha512-XOfhI7GShVcKiKwmPAnWSqd2tBR0uxt+runAxttbSp/LY2U16yAVPmAf7e9q4JJ0d+xMNmpwNDLBXnmRCl3HMQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-function@4.0.8': + resolution: {integrity: sha512-9dUvP2qpZI6PlGQ/sob+95B3u5u7nkYt9yhZFCC7G9HBRHBxj+QxS/wUlwaMGYW0waf+NIierI8aoDTssEdRYw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-color-mix-function@3.0.8': + resolution: {integrity: sha512-yuZpgWUzqZWQhEqfvtJufhl28DgO9sBwSbXbf/59gejNuvZcoUTRGQZhzhwF4ccqb53YAGB+u92z9+eSKoB4YA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-content-alt-text@2.0.4': + resolution: {integrity: sha512-YItlZUOuZJCBlRaCf8Aucc1lgN41qYGALMly0qQllrxYJhiyzlI6RxOTMUvtWk+KhS8GphMDsDhKQ7KTPfEMSw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-exponential-functions@2.0.7': + resolution: {integrity: sha512-XTb6Mw0v2qXtQYRW9d9duAjDnoTbBpsngD7sRNLmYDjvwU2ebpIHplyxgOeo6jp/Kr52gkLi5VaK5RDCqzMzZQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-font-format-keywords@4.0.0': + resolution: {integrity: sha512-usBzw9aCRDvchpok6C+4TXC57btc4bJtmKQWOHQxOVKen1ZfVqBUuCZ/wuqdX5GHsD0NRSr9XTP+5ID1ZZQBXw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-gamut-mapping@2.0.8': + resolution: {integrity: sha512-/K8u9ZyGMGPjmwCSIjgaOLKfic2RIGdFHHes84XW5LnmrvdhOTVxo255NppHi3ROEvoHPW7MplMJgjZK5Q+TxA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-gradients-interpolation-method@5.0.8': + resolution: {integrity: sha512-CoHQ/0UXrvxLovu0ZeW6c3/20hjJ/QRg6lyXm3dZLY/JgvRU6bdbQZF/Du30A4TvowfcgvIHQmP1bNXUxgDrAw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-hwb-function@4.0.8': + resolution: {integrity: sha512-LpFKjX6hblpeqyych1cKmk+3FJZ19QmaJtqincySoMkbkG/w2tfbnO5oE6mlnCTXcGUJ0rCEuRHvTqKK0nHYUQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-ic-unit@4.0.0': + resolution: {integrity: sha512-9QT5TDGgx7wD3EEMN3BSUG6ckb6Eh5gSPT5kZoVtUuAonfPmLDJyPhqR4ntPpMYhUKAMVKAg3I/AgzqHMSeLhA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-initial@2.0.1': + resolution: {integrity: sha512-L1wLVMSAZ4wovznquK0xmC7QSctzO4D0Is590bxpGqhqjboLXYA16dWZpfwImkdOgACdQ9PqXsuRroW6qPlEsg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-is-pseudo-class@5.0.1': + resolution: {integrity: sha512-JLp3POui4S1auhDR0n8wHd/zTOWmMsmK3nQd3hhL6FhWPaox5W7j1se6zXOG/aP07wV2ww0lxbKYGwbBszOtfQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-light-dark-function@2.0.7': + resolution: {integrity: sha512-ZZ0rwlanYKOHekyIPaU+sVm3BEHCe+Ha0/px+bmHe62n0Uc1lL34vbwrLYn6ote8PHlsqzKeTQdIejQCJ05tfw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-float-and-clear@3.0.0': + resolution: {integrity: sha512-SEmaHMszwakI2rqKRJgE+8rpotFfne1ZS6bZqBoQIicFyV+xT1UF42eORPxJkVJVrH9C0ctUgwMSn3BLOIZldQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-overflow@2.0.0': + resolution: {integrity: sha512-spzR1MInxPuXKEX2csMamshR4LRaSZ3UXVaRGjeQxl70ySxOhMpP2252RAFsg8QyyBXBzuVOOdx1+bVO5bPIzA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-overscroll-behavior@2.0.0': + resolution: {integrity: sha512-e/webMjoGOSYfqLunyzByZj5KKe5oyVg/YSbie99VEaSDE2kimFm0q1f6t/6Jo+VVCQ/jbe2Xy+uX+C4xzWs4w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-resize@3.0.0': + resolution: {integrity: sha512-DFbHQOFW/+I+MY4Ycd/QN6Dg4Hcbb50elIJCfnwkRTCX05G11SwViI5BbBlg9iHRl4ytB7pmY5ieAFk3ws7yyg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-logical-viewport-units@3.0.3': + resolution: {integrity: sha512-OC1IlG/yoGJdi0Y+7duz/kU/beCwO+Gua01sD6GtOtLi7ByQUpcIqs7UE/xuRPay4cHgOMatWdnDdsIDjnWpPw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-media-minmax@2.0.7': + resolution: {integrity: sha512-LB6tIP7iBZb5CYv8iRenfBZmbaG3DWNEziOnPjGoQX5P94FBPvvTBy68b/d9NnS5PELKwFmmOYsAEIgEhDPCHA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4': + resolution: {integrity: sha512-AnGjVslHMm5xw9keusQYvjVWvuS7KWK+OJagaG0+m9QnIjZsrysD2kJP/tr/UJIyYtMCtu8OkUd+Rajb4DqtIQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-nested-calc@4.0.0': + resolution: {integrity: sha512-jMYDdqrQQxE7k9+KjstC3NbsmC063n1FTPLCgCRS2/qHUbHM0mNy9pIn4QIiQGs9I/Bg98vMqw7mJXBxa0N88A==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-normalize-display-values@4.0.0': + resolution: {integrity: sha512-HlEoG0IDRoHXzXnkV4in47dzsxdsjdz6+j7MLjaACABX2NfvjFS6XVAnpaDyGesz9gK2SC7MbNwdCHusObKJ9Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-oklab-function@4.0.8': + resolution: {integrity: sha512-+5aPsNWgxohXoYNS1f+Ys0x3Qnfehgygv3qrPyv+Y25G0yX54/WlVB+IXprqBLOXHM1gsVF+QQSjlArhygna0Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-progressive-custom-properties@4.0.0': + resolution: {integrity: sha512-XQPtROaQjomnvLUSy/bALTR5VCtTVUFwYs1SblvYgLSeTo2a/bMNwUwo2piXw5rTv/FEYiy5yPSXBqg9OKUx7Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-random-function@1.0.3': + resolution: {integrity: sha512-dbNeEEPHxAwfQJ3duRL5IPpuD77QAHtRl4bAHRs0vOVhVbHrsL7mHnwe0irYjbs9kYwhAHZBQTLBgmvufPuRkA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-relative-color-syntax@3.0.8': + resolution: {integrity: sha512-eGE31oLnJDoUysDdjS9MLxNZdtqqSxjDXMdISpLh80QMaYrKs7VINpid34tWQ+iU23Wg5x76qAzf1Q/SLLbZVg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-scope-pseudo-class@4.0.1': + resolution: {integrity: sha512-IMi9FwtH6LMNuLea1bjVMQAsUhFxJnyLSgOp/cpv5hrzWmrUYU5fm0EguNDIIOHUqzXode8F/1qkC/tEo/qN8Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-sign-functions@1.1.2': + resolution: {integrity: sha512-4EcAvXTUPh7n6UoZZkCzgtCf/wPzMlTNuddcKg7HG8ozfQkUcHsJ2faQKeLmjyKdYPyOUn4YA7yDPf8K/jfIxw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-stepped-value-functions@4.0.7': + resolution: {integrity: sha512-rdrRCKRnWtj5FyRin0u/gLla7CIvZRw/zMGI1fVJP0Sg/m1WGicjPVHRANL++3HQtsiXKAbPrcPr+VkyGck0IA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-text-decoration-shorthand@4.0.2': + resolution: {integrity: sha512-8XvCRrFNseBSAGxeaVTaNijAu+FzUvjwFXtcrynmazGb/9WUdsPCpBX+mHEHShVRq47Gy4peYAoxYs8ltUnmzA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-trigonometric-functions@4.0.7': + resolution: {integrity: sha512-qTrZgLju3AV7Djhzuh2Bq/wjFqbcypnk0FhHjxW8DWJQcZLS1HecIus4X2/RLch1ukX7b+YYCdqbEnpIQO5ccg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/postcss-unset-value@4.0.0': + resolution: {integrity: sha512-cBz3tOCI5Fw6NIFEwU3RiwK6mn3nKegjpJuzCndoGq3BZPkUjnsq7uQmIeMNeMbMk7YD2MfKcgCpZwX5jyXqCA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + '@csstools/selector-resolve-nested@3.0.0': + resolution: {integrity: sha512-ZoK24Yku6VJU1gS79a5PFmC8yn3wIapiKmPgun0hZgEI5AOqgH2kiPRsPz1qkGv4HL+wuDLH83yQyk6inMYrJQ==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@csstools/selector-specificity@5.0.0': + resolution: {integrity: sha512-PCqQV3c4CoVm3kdPhyeZ07VmBRdH2EpMFA/pd9OASpOEC3aXNGoqPDAZ80D0cLpMBxnmk0+yNhGsEx31hq7Gtw==} + engines: {node: '>=18'} + peerDependencies: + postcss-selector-parser: ^7.0.0 + + '@csstools/utilities@2.0.0': + resolution: {integrity: sha512-5VdOr0Z71u+Yp3ozOx8T11N703wIFGVRgOWbOZMKgglPJsWA54MRIoMNVMa7shUToIhx5J8vX4sOZgD2XiihiQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + '@dhmk/utils@4.4.1': resolution: {integrity: sha512-5l9xBJvaIQqbLv6vOhhArL6A/UXdATqFUdrQ7MkD3kMwGoEv1cxrSsNUIzRRjW5G1c7Kng6gu0KZf5D6tFbP9g==} @@ -1502,6 +1763,7 @@ packages: '@faker-js/faker@9.2.0': resolution: {integrity: sha512-ulqQu4KMr1/sTFIYvqSdegHT8NIkt66tFAkugGnHA+1WAfEn6hMzNR+svjXGFRVLnapxvej67Z/LwchFrnLBUg==} engines: {node: '>=18.0.0', npm: '>=9.0.0'} + deprecated: Please update to a newer version '@fastify/accept-negotiator@2.0.0': resolution: {integrity: sha512-/Sce/kBzuTxIq5tJh85nVNOq9wKD8s+viIgX0fFMDBdw95gnpf53qmF1oBgJym3cPFliWUuSloVg/1w/rH0FcQ==} @@ -1748,6 +2010,10 @@ packages: '@polka/url@1.0.0-next.28': resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} + '@quansync/fs@0.1.1': + resolution: {integrity: sha512-sx8J1O/+j2lqs8MvsEz6rs/6UAUpCb4fu7C6EqtMqzbS3CmqLkTDTOMK+DrWukvyUuHzl8DhMjfNJzQDTqfGJg==} + engines: {node: '>=20.18.0'} + '@radix-ui/number@1.1.0': resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} @@ -2000,9 +2266,6 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/lodash@4.17.16': - resolution: {integrity: sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==} - '@types/luxon@3.4.2': resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==} @@ -2047,6 +2310,9 @@ packages: '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} + '@types/webpack-bundle-analyzer@4.7.0': + resolution: {integrity: sha512-c5i2ThslSNSG8W891BRvOd/RoCjI2zwph8maD22b1adtSns20j+0azDDMCK06DiVrzTgnwiDl5Ntmu1YRJw8Sg==} + '@types/wicg-task-scheduling@2024.1.0': resolution: {integrity: sha512-9g5QVDU8Na3P6rPMbyYx5pS8UpGDfzys8T7Xq5HMTbI7elSq/YioGbBVAh2u67JGNTThZ3o9PK0/qBvaVOYPYQ==} @@ -2115,37 +2381,123 @@ packages: resolution: {integrity: sha512-pq19gbaMOmFE3CbL0ZB8J8BFCo2ckfHBfaIsaOZgBIF4EoISJIdLX5xRhd0FGB0LlHReNRuzoJoMGpTjq8F2CQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@unocss/astro@66.1.0-beta.6': + resolution: {integrity: sha512-LL4DqqMB5D++c5aPZAis1YjzqvwstLVOYwcoXfuA8Ty96/HgCK8XZINpfZUwUND8FqlpFjnqs0NgUm4NkDDexg==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + peerDependenciesMeta: + vite: + optional: true + + '@unocss/cli@66.1.0-beta.6': + resolution: {integrity: sha512-HLO04NOfTWjrGtpXxpB41vO8oj/pL+R4Ma/E4pnh4Zzq2e5RDMhyQvgiYSdS6PeIGB5AQDrgmd41EuGHsp23qg==} + engines: {node: '>=14'} + hasBin: true + + '@unocss/config@66.1.0-beta.6': + resolution: {integrity: sha512-jLAxHSgMCEhIjCwOwfENtFM3gevU4QDQeaG4VVEYGFJ/oj27JJrl/j6HlUBdhFiR0Q7yf6QFCXlKTP/+put0/Q==} + engines: {node: '>=14'} + '@unocss/core@66.1.0-beta.5': resolution: {integrity: sha512-1kZzSrB87KKd+xP+vMN7IP03j2UPEykna447aw3UaK5RYTDd/LuVtxoep6gvjN9TJiB4K+Qx0sAtgnfhPpka9Q==} + '@unocss/core@66.1.0-beta.6': + resolution: {integrity: sha512-TQLxpBZPl6m4HhS6/FMr0Vbn22tGWgbGPyfJyjTSYY/LTug42aIUPnTQnqFSRwGiUnBfp3+oAhG/t/lZ6U74tw==} + '@unocss/extractor-arbitrary-variants@66.1.0-beta.5': resolution: {integrity: sha512-GBar8cjd+USjgpKy+fgjJK56DdEMfrq1jfa/Sf4UopkuNIatfn6y5ISLI/6E/V52RYVgD2djL7eT8bPDlCDyqA==} + '@unocss/extractor-arbitrary-variants@66.1.0-beta.6': + resolution: {integrity: sha512-jUI5Ncppngy8NKv8p9ubUi0FAw6Vcrx7hC7aWaqEFdfA2cDGpR5XHyWJozkT7BbfZs+SnA76b6qwuEtcXwYTAg==} + + '@unocss/inspector@66.1.0-beta.6': + resolution: {integrity: sha512-YjK017dGMtN8Q067d9n9aCKFXGB8jD13PomKmKOWs3YfmPQE1qQjqQUXH4Zf/jhGMvaB72BHevqctLRHguHfww==} + + '@unocss/postcss@66.1.0-beta.6': + resolution: {integrity: sha512-WvpOKr7rPRfb8ttUYpta/WlH/rk0hwZUj59hSW5aMFs/EfaKolIurcSz6UU/yDGBly4T3F+MadqbjSU91iJ8xg==} + engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 + '@unocss/preset-attributify@66.1.0-beta.5': resolution: {integrity: sha512-jH9cxgrtJHW57mhqYa5kirD+dxxnyP0IU34cs5Y+9syA2lhLFlURVzg7WyJ9dolajlF//ArDEl87TWPXRnHs+w==} + '@unocss/preset-attributify@66.1.0-beta.6': + resolution: {integrity: sha512-JTSTh7x+DXa1hWe4xCztOeYc0zNpbv0USiHfgM303ZcDr5zNKG4iGAebBqcmAu8CUB+Tq3OJOA4m/dqfkVAAuQ==} + '@unocss/preset-icons@66.1.0-beta.5': resolution: {integrity: sha512-800qE/csJOZaiXRvcyMdBqSnJH2eM2757u8RwNLGHDoxCMpmfjdjfTT+yXv1tJV94XlQfuSmSqpbfBIYQkAEIw==} + '@unocss/preset-icons@66.1.0-beta.6': + resolution: {integrity: sha512-zj+PaJ7gSIebtnMnLmzzn9e3tVCO9r2+nOz5v0DWpBfMfpSId4EkXtG3hMllRG8WEH8frZz5qBM3yFuhk8NqqQ==} + '@unocss/preset-mini@66.1.0-beta.5': resolution: {integrity: sha512-1SJbHE6rPou7bi8h+CKozZeBhYIPHr8lLCE30j66y1Vutgt3FI+Je6qT6m9wX2Iql3r2jJMLaXZ3MMA26PKWEQ==} + '@unocss/preset-mini@66.1.0-beta.6': + resolution: {integrity: sha512-MoF32nio5jzKi40VOeOU4k2uZvYUm2GKIxTRZ8C8mb7bFFphoMQD0/Pfr9oWpNC7jl7msuKt8i4xUknK5GAVDQ==} + + '@unocss/preset-tagify@66.1.0-beta.6': + resolution: {integrity: sha512-pym/P+A8CtSp6ek/twe82hW50lsh8miJ7m/oNfU9oHNM/Lo0XQhnIaVvHwefprX+isyKW4KJWBBZ/gX3tbz+9Q==} + + '@unocss/preset-typography@66.1.0-beta.6': + resolution: {integrity: sha512-M6o4oXUMXo6RmclqsnUCXYJCW9cBJYYZcl4M2ofejNkCaqplAwWvc7X7TPvUjcURfwHf+CiXx42DXB0k+FCmlA==} + '@unocss/preset-uno@66.1.0-beta.5': resolution: {integrity: sha512-EkYHQKhzAcKGw56uZDZux6Sg6hXH7DGPkDGMp5dwY8oLhCAP0TZTw3Jc2FBujEZOa27PO5JLihte0sVMJdHQgg==} + '@unocss/preset-uno@66.1.0-beta.6': + resolution: {integrity: sha512-zFvQ8sxSGcHoZBkMNngQIdQTFJgoNx5UosydUynLMzs86NFkwd/BAcS2cZBy+buLiuqV1oM2uSyxjLeAqury8g==} + + '@unocss/preset-web-fonts@66.1.0-beta.6': + resolution: {integrity: sha512-G9EUBFuFT5sbh1rHsc5oJVHTKK9FMUvtoELaS5HRnxYtr6CR9iepXMNNRb8tmjwx5ewStn7cBKHCGHxnoij3Ew==} + '@unocss/preset-wind3@66.1.0-beta.5': resolution: {integrity: sha512-+O+Ts60QRe5tpJ9JQbBdLVQFzqiXE/1J3twQ/S5yQeBWUDOIhaEcF2au6nFgdh0MFjXEBk89Ad93Yew78BoMSQ==} + '@unocss/preset-wind3@66.1.0-beta.6': + resolution: {integrity: sha512-AWLf5bT/tjXao5BIdgeDG/XxQoRKvh+G7DQGzJJe4vkOv8QK7QHG8LuqaadEkLTgTY1DaIXshK9d7+E/fFAcFw==} + + '@unocss/preset-wind4@66.1.0-beta.6': + resolution: {integrity: sha512-8OuBpnPbwId4/6sZe4j52+2shnyY/A3/y7RvhRow2xMgvEPBpJdkGHDDE+igwXF3Bhpd7FZS93NpyMLLX42imA==} + + '@unocss/preset-wind@66.1.0-beta.6': + resolution: {integrity: sha512-1H1YH5OQTGG3mFo54BZELkKWO4iE0UgH4W2+RdnWHEKYIpXImk8JtAkiO5iK0gJafoSQjx592fZ70krQKmNamQ==} + '@unocss/reset@66.1.0-beta.5': resolution: {integrity: sha512-KMRC280hSTo235FdwAmzobLKYWYWVMpUIUuKmtuOXdDg7mXxSjHPbccDW76iwGtRXl8mTt/gL3stVjHgUsfnBA==} + '@unocss/reset@66.1.0-beta.6': + resolution: {integrity: sha512-HIB+JT1/1LbDChcbYmWAmSNMHMBYMcgubc5W0nIEZbfT4JGF/ZsbFeAhpbau/k/Ny5w5XlBD24CESkYewldgyw==} + '@unocss/rule-utils@66.1.0-beta.5': resolution: {integrity: sha512-G757sAnQAMNRUijgOTut8UkbkncSablI6Viwcq2VP4r0Lhi6RFOv/n6AOTWsDgGeUSuWTa/p3zb3NDHY7ztE9g==} engines: {node: '>=14'} + '@unocss/rule-utils@66.1.0-beta.6': + resolution: {integrity: sha512-9RxYUGq96Ro+5XbevFlzKKwtROIv9c6VZbG+i34pMaw8ALFsCj34iGFvBs4ohTf03XkCCyMlr2f2KdFc9cj/Sw==} + engines: {node: '>=14'} + '@unocss/runtime@66.1.0-beta.5': resolution: {integrity: sha512-K+nDn6yIve2Ied/rz2diFdNDkmAX29CfWik7/PqbLHsTEle2hY+CYvPd3mQZRwGVwIJV2jbxt75r0KXZpbBTxQ==} + '@unocss/transformer-attributify-jsx@66.1.0-beta.6': + resolution: {integrity: sha512-Qp9kvq7nRjFRuUfM5zJ1Mz/JxjRNvRReL1m0t9lrgDQl3pc1+7pIxlQSEn0NJHaOQc8CBpLgTDRmwWLOtlB6SQ==} + + '@unocss/transformer-compile-class@66.1.0-beta.6': + resolution: {integrity: sha512-MckRTk6zh9GwjxIhvbckKko4VqESkaYLOLmHK0eVOioEPyV2B8eCqgrMLpYJlrpCIRbZV8ttAGNCiB8MsQgR/w==} + + '@unocss/transformer-directives@66.1.0-beta.6': + resolution: {integrity: sha512-+/U6MV9IiPuCoE2+CKkXbpAlN7X8WembjdtM0jFTXJWJdrb11xI8bMTfGnhohKs94naQL6lEmow/wZVFgIIJug==} + + '@unocss/transformer-variant-group@66.1.0-beta.6': + resolution: {integrity: sha512-Liug/F5nHYBLoUbo+47unrzKjYKxmN7HAw/jjQpzjKGn4bN6ZzCDodY3h6q5e8XsxFIkZlt3JZPZkMKjSf1E0Q==} + + '@unocss/vite@66.1.0-beta.6': + resolution: {integrity: sha512-/3yAxOJm8UFiNOBcuRQELrgQX55fJnb0wBNNSeW1YsE5vLCDNvP0acibDmqyKk2O+Ch9yw8duC60FKIptVzJhQ==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + '@videojs/http-streaming@3.16.2': resolution: {integrity: sha512-fvt4ko7FknxiT9FnjyNQt6q2px+awrkM+Orv7IB/4gldvj94u4fowGfmNHynnvNTPgPkdxHklGmFLGfclYw8HA==} engines: {node: '>=8', npm: '>=5'} @@ -2392,6 +2744,13 @@ packages: resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} engines: {node: '>=8.0.0'} + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -2468,6 +2827,11 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true + browserslist@4.24.4: + resolution: {integrity: sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + buffer-from@1.1.2: resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} @@ -2479,6 +2843,10 @@ packages: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -2502,6 +2870,9 @@ packages: caniuse-lite@1.0.30001684: resolution: {integrity: sha512-G1LRwLIQjBQoyq0ZJGqGIJUXzJ8irpbjHLpVRXDvBEScFJ9b17sgK6vlx0GAJFE21okD7zXl08rRRUfq6HdoEQ==} + caniuse-lite@1.0.30001707: + resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} + chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} @@ -2578,6 +2949,10 @@ packages: resolution: {integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==} engines: {node: '>=0.8'} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -2609,23 +2984,71 @@ packages: core-js-compat@3.39.0: resolution: {integrity: sha512-VgEUx3VwlExr5no0tXlBt+silBvhTryPwCXRI2Id1PN8WTKu7MreethvddqOubrYxkFdv/RnYrqlv1sFNAUelw==} - core-js@3.41.0: - resolution: {integrity: sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==} - core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} + css-blank-pseudo@7.0.1: + resolution: {integrity: sha512-jf+twWGDf6LDoXDUode+nc7ZlrqfaNphrBIBrcmeP3D8yw1uPaix1gCC8LUQUGQ6CycuK2opkbFFWFuq/a94ag==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + css-has-pseudo@7.0.2: + resolution: {integrity: sha512-nzol/h+E0bId46Kn2dQH5VElaknX2Sr0hFuB/1EomdC7j+OISt2ZzK7EHX9DZDY53WbIVAR7FYKSO2XnSf07MQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + css-in-js-utils@3.1.0: resolution: {integrity: sha512-fJAcud6B3rRu+KHYk+Bwf+WFL2MDCJJ1XG9x137tJQ0xYxor7XziQtuGFbWNdqrvF4Tk26O3H73nfVqXt/fW1A==} + css-loader@7.1.2: + resolution: {integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.27.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + css-prefers-color-scheme@10.0.0: + resolution: {integrity: sha512-VCtXZAWivRglTZditUfB4StnsWr6YVZ2PRtuxQLKTNRdtAf8tpzaVPE9zXIF3VaSc7O70iK/j1+NXxyQCqdPjQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} + css-tree@3.1.0: + resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + cssdb@8.2.4: + resolution: {integrity: sha512-3KSCVkjZJe/QxicVXnbyYSY26WsFc1YoMY7jep1ZKWMEVc7jEm6V2Xq2r+MX8WKQIuB7ofGbnr5iVI+aZpoSzg==} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -2713,6 +3136,9 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -2880,6 +3306,9 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.5.123: + resolution: {integrity: sha512-refir3NlutEZqlKaBLK0tzlVLe5P2wDKS7UQt/3SpibizgsRAPOsqQC3ffw1nlv3ze5gjRQZYHoPymgVZkplFA==} + electron-to-chromium@1.5.65: resolution: {integrity: sha512-PWVzBjghx7/wop6n22vS2MLU8tKGd4Q91aCEGhG/TYmW6PP5OcSXcdnxTe1NNt0T66N8D6jxh4kC8UsdzOGaIw==} @@ -2908,11 +3337,18 @@ packages: resolution: {integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==} engines: {node: '>=10.13.0'} + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + envinfo@7.14.0: resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==} engines: {node: '>=4'} hasBin: true + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} @@ -3212,6 +3648,14 @@ packages: picomatch: optional: true + fdir@6.4.3: + resolution: {integrity: sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + fetch-blob@3.2.0: resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} engines: {node: ^12.20 || >= 14.13} @@ -3292,6 +3736,9 @@ packages: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} + fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -3520,6 +3967,12 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + icss-utils@5.1.0: + resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + ignore@5.3.2: resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} engines: {node: '>= 4'} @@ -3576,6 +4029,9 @@ packages: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + is-async-function@2.0.0: resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} engines: {node: '>= 0.4'} @@ -3744,6 +4200,14 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + jiti@2.4.2: + resolution: {integrity: sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==} + hasBin: true + js-base64@3.7.7: resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} @@ -3822,6 +4286,7 @@ packages: libsql@0.4.7: resolution: {integrity: sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==} + cpu: [x64, arm64, wasm32] os: [darwin, linux, win32] lie@3.3.0: @@ -3830,6 +4295,9 @@ packages: light-my-request@6.3.0: resolution: {integrity: sha512-bWTAPJmeWQH5suJNYwG0f5cs0p6ho9e6f1Ppoxv5qMosY+s9Ir2+ZLvvHcgA7VTDop4zl/NCHhOVVqU+kd++Ow==} + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} @@ -3860,9 +4328,6 @@ packages: lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -3895,6 +4360,9 @@ packages: mdn-data@2.0.14: resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==} + mdn-data@2.12.2: + resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -4021,6 +4489,11 @@ packages: react: '*' react-dom: '*' + nanoid@3.3.11: + resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} @@ -4065,6 +4538,9 @@ packages: node-releases@2.0.18: resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + node-releases@2.0.19: + resolution: {integrity: sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==} + nopt@5.0.0: resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==} engines: {node: '>=6'} @@ -4074,6 +4550,10 @@ packages: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + npmlog@5.0.1: resolution: {integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==} deprecated: This package is no longer supported. @@ -4185,10 +4665,6 @@ packages: resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-min-delay@4.0.2: - resolution: {integrity: sha512-7hJcTq/MGF5pNHbQ2akrpPy1N43YYlB4RPECDSbPRn4xP/dsgP0I6ls7NvSUQ5k88o+CyATMOrQiZ/PK4aQR9w==} - engines: {node: '>=12'} - p-retry@6.2.1: resolution: {integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==} engines: {node: '>=16.17'} @@ -4210,6 +4686,10 @@ packages: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} @@ -4246,6 +4726,9 @@ packages: pathe@2.0.3: resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -4299,6 +4782,207 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-attribute-case-insensitive@7.0.1: + resolution: {integrity: sha512-Uai+SupNSqzlschRyNx3kbCTWgY/2hcwtHEI/ej2LJWc9JJ77qKgGptd8DHwY1mXtZ7Aoh4z4yxfwMBue9eNgw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-clamp@4.1.0: + resolution: {integrity: sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==} + engines: {node: '>=7.6.0'} + peerDependencies: + postcss: ^8.4.6 + + postcss-color-functional-notation@7.0.8: + resolution: {integrity: sha512-S/TpMKVKofNvsxfau/+bw+IA6cSfB6/kmzFj5szUofHOVnFFMB2WwK+Zu07BeMD8T0n+ZnTO5uXiMvAKe2dPkA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-color-hex-alpha@10.0.0: + resolution: {integrity: sha512-1kervM2cnlgPs2a8Vt/Qbe5cQ++N7rkYo/2rz2BkqJZIHQwaVuJgQH38REHrAi4uM0b1fqxMkWYmese94iMp3w==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-color-rebeccapurple@10.0.0: + resolution: {integrity: sha512-JFta737jSP+hdAIEhk1Vs0q0YF5P8fFcj+09pweS8ktuGuZ8pPlykHsk6mPxZ8awDl4TrcxUqJo9l1IhVr/OjQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-media@11.0.5: + resolution: {integrity: sha512-SQHhayVNgDvSAdX9NQ/ygcDQGEY+aSF4b/96z7QUX6mqL5yl/JgG/DywcF6fW9XbnCRE+aVYk+9/nqGuzOPWeQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-properties@14.0.4: + resolution: {integrity: sha512-QnW8FCCK6q+4ierwjnmXF9Y9KF8q0JkbgVfvQEMa93x1GT8FvOiUevWCN2YLaOWyByeDX8S6VFbZEeWoAoXs2A==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-custom-selectors@8.0.4: + resolution: {integrity: sha512-ASOXqNvDCE0dAJ/5qixxPeL1aOVGHGW2JwSy7HyjWNbnWTQCl+fDc968HY1jCmZI0+BaYT5CxsOiUhavpG/7eg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-dir-pseudo-class@9.0.1: + resolution: {integrity: sha512-tRBEK0MHYvcMUrAuYMEOa0zg9APqirBcgzi6P21OhxtJyJADo/SWBwY1CAwEohQ/6HDaa9jCjLRG7K3PVQYHEA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-double-position-gradients@6.0.0: + resolution: {integrity: sha512-JkIGah3RVbdSEIrcobqj4Gzq0h53GG4uqDPsho88SgY84WnpkTpI0k50MFK/sX7XqVisZ6OqUfFnoUO6m1WWdg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-focus-visible@10.0.1: + resolution: {integrity: sha512-U58wyjS/I1GZgjRok33aE8juW9qQgQUNwTSdxQGuShHzwuYdcklnvK/+qOWX1Q9kr7ysbraQ6ht6r+udansalA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-focus-within@9.0.1: + resolution: {integrity: sha512-fzNUyS1yOYa7mOjpci/bR+u+ESvdar6hk8XNK/TRR0fiGTp2QT5N+ducP0n3rfH/m9I7H/EQU6lsa2BrgxkEjw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-font-variant@5.0.0: + resolution: {integrity: sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==} + peerDependencies: + postcss: ^8.1.0 + + postcss-gap-properties@6.0.0: + resolution: {integrity: sha512-Om0WPjEwiM9Ru+VhfEDPZJAKWUd0mV1HmNXqp2C29z80aQ2uP9UVhLc7e3aYMIor/S5cVhoPgYQ7RtfeZpYTRw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-image-set-function@7.0.0: + resolution: {integrity: sha512-QL7W7QNlZuzOwBTeXEmbVckNt1FSmhQtbMRvGGqqU4Nf4xk6KUEQhAoWuMzwbSv5jxiRiSZ5Tv7eiDB9U87znA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-lab-function@7.0.8: + resolution: {integrity: sha512-plV21I86Hg9q8omNz13G9fhPtLopIWH06bt/Cb5cs1XnaGU2kUtEitvVd4vtQb/VqCdNUHK5swKn3QFmMRbpDg==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-loader@8.1.1: + resolution: {integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==} + engines: {node: '>= 18.12.0'} + peerDependencies: + '@rspack/core': 0.x || 1.x + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true + + postcss-logical@8.1.0: + resolution: {integrity: sha512-pL1hXFQ2fEXNKiNiAgtfA005T9FBxky5zkX6s4GZM2D8RkVgRqz3f4g1JUoq925zXv495qk8UNldDwh8uGEDoA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-modules-extract-imports@3.1.0: + resolution: {integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-local-by-default@4.2.0: + resolution: {integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-scope@3.2.1: + resolution: {integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-modules-values@4.0.0: + resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} + engines: {node: ^10 || ^12 || >= 14} + peerDependencies: + postcss: ^8.1.0 + + postcss-nesting@13.0.1: + resolution: {integrity: sha512-VbqqHkOBOt4Uu3G8Dm8n6lU5+9cJFxiuty9+4rcoyRPO9zZS1JIs6td49VIoix3qYqELHlJIn46Oih9SAKo+yQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-opacity-percentage@3.0.0: + resolution: {integrity: sha512-K6HGVzyxUxd/VgZdX04DCtdwWJ4NGLG212US4/LA1TLAbHgmAsTWVR86o+gGIbFtnTkfOpb9sCRBx8K7HO66qQ==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-overflow-shorthand@6.0.0: + resolution: {integrity: sha512-BdDl/AbVkDjoTofzDQnwDdm/Ym6oS9KgmO7Gr+LHYjNWJ6ExORe4+3pcLQsLA9gIROMkiGVjjwZNoL/mpXHd5Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-page-break@3.0.4: + resolution: {integrity: sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==} + peerDependencies: + postcss: ^8 + + postcss-place@10.0.0: + resolution: {integrity: sha512-5EBrMzat2pPAxQNWYavwAfoKfYcTADJ8AXGVPcUZ2UkNloUTWzJQExgrzrDkh3EKzmAx1evfTAzF9I8NGcc+qw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-preset-env@10.1.5: + resolution: {integrity: sha512-LQybafF/K7H+6fAs4SIkgzkSCixJy0/h0gubDIAP3Ihz+IQBRwsjyvBnAZ3JUHD+A/ITaxVRPDxn//a3Qy4pDw==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-pseudo-class-any-link@10.0.1: + resolution: {integrity: sha512-3el9rXlBOqTFaMFkWDOkHUTQekFIYnaQY55Rsp8As8QQkpiSgIYEcF/6Ond93oHiDsGb4kad8zjt+NPlOC1H0Q==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-replace-overflow-wrap@4.0.0: + resolution: {integrity: sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==} + peerDependencies: + postcss: ^8.0.3 + + postcss-selector-not@8.0.1: + resolution: {integrity: sha512-kmVy/5PYVb2UOhy0+LqUYAhKj7DUGDpSWa5LZqlkWJaaAV+dxxsOG3+St0yNLu6vsKD7Dmqx+nWQt0iil89+WA==} + engines: {node: '>=18'} + peerDependencies: + postcss: ^8.4 + + postcss-selector-parser@7.1.0: + resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} + engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -4722,6 +5406,7 @@ packages: shaka-player@4.12.5: resolution: {integrity: sha512-jJEkASLivZ0Eqg+sIfBJWCWFDzo2l4rfG1e2y5apqphKbDZaMrSCX0Z/B14epJCfStSAwGqKyuC1D+K3e4xBEg==} + engines: {node: '>=14'} shallow-clone@3.0.1: resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==} @@ -4769,6 +5454,10 @@ packages: resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} engines: {node: '>= 10'} + sirv@3.0.1: + resolution: {integrity: sha512-FoqMu0NCGBLCcAkS1qA+XJIQTR6/JHfQXl+uGteNCQ76T91DMUjPa9xfmeqMY3z80nLSg9yQmNjK0Px6RWsH/A==} + engines: {node: '>=18'} + sockjs@0.3.24: resolution: {integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==} @@ -4782,6 +5471,10 @@ packages: resolution: {integrity: sha512-/HrPQAeeLaa+vbAH/znjuhwUluuiM/zL5XX9kop8UpDgjtyWKt43hGDk2vd/TBdDpzIyzIHVUgmYofzYrAQjew==} hasBin: true + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + source-map-support@0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -4876,6 +5569,12 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + style-loader@4.0.0: + resolution: {integrity: sha512-1V4WqhhZZgjVAVJyt7TdDPZoPBPNHbekX4fWnCJL1yQukhCeZhJySUL+gL9y6sNdN95uEOS83Y55SqHcP7MzLA==} + engines: {node: '>= 18.12.0'} + peerDependencies: + webpack: ^5.27.0 + stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} @@ -4953,6 +5652,10 @@ packages: resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.12: + resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} + engines: {node: '>=12.0.0'} + to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -5054,6 +5757,9 @@ packages: resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} engines: {node: '>= 0.4'} + unconfig@7.3.1: + resolution: {integrity: sha512-LH5WL+un92tGAzWS87k7LkAfwpMdm7V0IXG2FxEjZz/QxiIW5J5LkcrKQThj0aRz6+h/lFmKI9EUXmK/T0bcrw==} + undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} @@ -5073,10 +5779,26 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} + unocss@66.1.0-beta.6: + resolution: {integrity: sha512-ULv6jB5abJO1ciKreq0xW9WOKnWImK4uvWXmPR1d+JX0CvcHTtgO0HxR+UWToUcuvEFyLjQ1MKvovLMydo6+Lw==} + engines: {node: '>=14'} + peerDependencies: + '@unocss/webpack': 66.1.0-beta.6 + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 + peerDependenciesMeta: + '@unocss/webpack': + optional: true + vite: + optional: true + unpipe@1.0.0: resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} engines: {node: '>= 0.8'} + unplugin-utils@0.2.4: + resolution: {integrity: sha512-8U/MtpkPkkk3Atewj1+RcKIjb5WBimZ/WSLhhR3w6SsIj8XJuKTacSP8g+2JhfSGw0Cb125Y+2zA/IzJZDVbhA==} + engines: {node: '>=18.12.0'} + update-browserslist-db@1.1.1: resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true @@ -5139,8 +5861,10 @@ packages: videojs-vtt.js@0.15.5: resolution: {integrity: sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==} - view-transitions-polyfill@1.0.3: - resolution: {integrity: sha512-o7tiNKAsuqvL0u4Epo/jrSOx7qy1/KH3ajzHsY0GU4zWIOiiC6Pyczyf6QgJneyFKlu8QdcMeCQocUl94R+fvA==} + vue-flow-layout@0.1.1: + resolution: {integrity: sha512-JdgRRUVrN0Y2GosA0M68DEbKlXMqJ7FQgsK8CjQD2vxvNSqAU6PZEpi4cfcTVtfM2GVOMjHo7GKKLbXxOBqDqA==} + peerDependencies: + vue: ^3.4.37 watchpack@2.4.2: resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} @@ -5319,10 +6043,6 @@ packages: resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==} engines: {node: '>=12.20'} - yoctodelay@1.2.0: - resolution: {integrity: sha512-12y/P9MSig9/5BEhBgylss+fkHiCRZCvYR81eH35NW9uw801cvJt31EAV+WOLcwZRZbLiIQl/hxcdXXXFmGvXg==} - engines: {node: '>=4'} - zod-openapi@4.2.0: resolution: {integrity: sha512-lnm1e2X5/Ymox5mYxdspy/y52Hb4rPxG1bcwOuHS+YIpxQNEt9s8G4zo34jm0M3+q71TAxgqzcbPLiBXrsfsGA==} engines: {node: '>=18'} @@ -6035,64 +6755,316 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.26.0 + esutils: 2.0.3 + + '@babel/preset-react@7.25.9(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': + dependencies: + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) + '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.26.10': + dependencies: + regenerator-runtime: 0.14.1 + + '@babel/template@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/types': 7.26.0 + + '@babel/traverse@7.25.9': + dependencies: + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 + debug: 4.3.7 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.26.0': + dependencies: + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + + '@better-fetch/fetch@1.1.15': {} + + '@csstools/cascade-layer-name-parser@2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/color-helpers@5.0.2': {} + + '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-color-parser@3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/color-helpers': 5.0.2 + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/css-tokenizer@3.0.3': {} + + '@csstools/media-query-list-parser@4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + + '@csstools/postcss-cascade-layers@5.0.1(postcss@8.5.3)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-color-function@4.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-color-mix-function@3.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-content-alt-text@2.0.4(postcss@8.5.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-exponential-functions@2.0.7(postcss@8.5.3)': + dependencies: + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + postcss: 8.5.3 + + '@csstools/postcss-font-format-keywords@4.0.0(postcss@8.5.3)': + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-gamut-mapping@2.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + postcss: 8.5.3 + + '@csstools/postcss-gradients-interpolation-method@5.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-hwb-function@4.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-ic-unit@4.0.0(postcss@8.5.3)': + dependencies: + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-initial@2.0.1(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + + '@csstools/postcss-is-pseudo-class@5.0.1(postcss@8.5.3)': + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + '@csstools/postcss-light-dark-function@2.0.7(postcss@8.5.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-logical-float-and-clear@3.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + + '@csstools/postcss-logical-overflow@2.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + + '@csstools/postcss-logical-overscroll-behavior@2.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + + '@csstools/postcss-logical-resize@3.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-logical-viewport-units@3.0.3(postcss@8.5.3)': + dependencies: + '@csstools/css-tokenizer': 3.0.3 + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-media-minmax@2.0.7(postcss@8.5.3)': + dependencies: + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + postcss: 8.5.3 + + '@csstools/postcss-media-queries-aspect-ratio-number-values@3.0.4(postcss@8.5.3)': + dependencies: + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + postcss: 8.5.3 + + '@csstools/postcss-nested-calc@4.0.0(postcss@8.5.3)': + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-normalize-display-values@4.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-oklab-function@4.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-progressive-custom-properties@4.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + '@csstools/postcss-random-function@1.0.3(postcss@8.5.3)': + dependencies: + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + postcss: 8.5.3 + + '@csstools/postcss-relative-color-syntax@3.0.8(postcss@8.5.3)': + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + '@csstools/postcss-scope-pseudo-class@4.0.1(postcss@8.5.3)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/types': 7.26.0 - esutils: 2.0.3 + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 - '@babel/preset-react@7.25.9(@babel/core@7.26.0)': + '@csstools/postcss-sign-functions@1.1.2(postcss@8.5.3)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + postcss: 8.5.3 - '@babel/preset-typescript@7.26.0(@babel/core@7.26.0)': + '@csstools/postcss-stepped-value-functions@4.0.7(postcss@8.5.3)': dependencies: - '@babel/core': 7.26.0 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) - '@babel/plugin-transform-modules-commonjs': 7.26.3(@babel/core@7.26.0) - '@babel/plugin-transform-typescript': 7.25.9(@babel/core@7.26.0) - transitivePeerDependencies: - - supports-color + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + postcss: 8.5.3 - '@babel/runtime@7.26.10': + '@csstools/postcss-text-decoration-shorthand@4.0.2(postcss@8.5.3)': dependencies: - regenerator-runtime: 0.14.1 + '@csstools/color-helpers': 5.0.2 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 - '@babel/template@7.25.9': + '@csstools/postcss-trigonometric-functions@4.0.7(postcss@8.5.3)': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@csstools/css-calc': 2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + postcss: 8.5.3 - '@babel/traverse@7.25.9': + '@csstools/postcss-unset-value@4.0.0(postcss@8.5.3)': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7 - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + postcss: 8.5.3 - '@babel/types@7.26.0': + '@csstools/selector-resolve-nested@3.0.0(postcss-selector-parser@7.1.0)': dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 + postcss-selector-parser: 7.1.0 - '@better-fetch/fetch@1.1.15': {} + '@csstools/selector-specificity@5.0.0(postcss-selector-parser@7.1.0)': + dependencies: + postcss-selector-parser: 7.1.0 + + '@csstools/utilities@2.0.0(postcss@8.5.3)': + dependencies: + postcss: 8.5.3 '@dhmk/utils@4.4.1': {} @@ -6327,9 +7299,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0)': + '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0(jiti@2.4.2))': dependencies: - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -6659,6 +7631,10 @@ snapshots: '@polka/url@1.0.0-next.28': {} + '@quansync/fs@0.1.1': + dependencies: + quansync: 0.2.8 + '@radix-ui/number@1.1.0': {} '@radix-ui/primitive@1.1.1': {} @@ -6910,8 +7886,6 @@ snapshots: '@types/json5@0.0.29': {} - '@types/lodash@4.17.16': {} - '@types/luxon@3.4.2': {} '@types/m3u8-parser@7.2.0': {} @@ -6959,21 +7933,32 @@ snapshots: dependencies: '@types/node': 22.10.0 + '@types/webpack-bundle-analyzer@4.7.0(webpack-cli@5.1.4)': + dependencies: + '@types/node': 22.10.0 + tapable: 2.2.1 + webpack: 5.96.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + - webpack-cli + '@types/wicg-task-scheduling@2024.1.0': {} '@types/ws@8.5.13': dependencies: '@types/node': 22.10.0 - '@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2)': + '@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.16.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/scope-manager': 8.16.0 - '@typescript-eslint/type-utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/type-utils': 8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.16.0 - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 @@ -6983,14 +7968,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2)': + '@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/scope-manager': 8.16.0 '@typescript-eslint/types': 8.16.0 '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2) '@typescript-eslint/visitor-keys': 8.16.0 debug: 4.3.7 - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: @@ -7001,12 +7986,12 @@ snapshots: '@typescript-eslint/types': 8.16.0 '@typescript-eslint/visitor-keys': 8.16.0 - '@typescript-eslint/type-utils@8.16.0(eslint@9.15.0)(typescript@5.7.2)': + '@typescript-eslint/type-utils@8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2) - '@typescript-eslint/utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) debug: 4.3.7 - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) ts-api-utils: 1.4.2(typescript@5.7.2) optionalDependencies: typescript: 5.7.2 @@ -7030,13 +8015,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.16.0(eslint@9.15.0)(typescript@5.7.2)': + '@typescript-eslint/utils@8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.2)) '@typescript-eslint/scope-manager': 8.16.0 '@typescript-eslint/types': 8.16.0 '@typescript-eslint/typescript-estree': 8.16.0(typescript@5.7.2) - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: @@ -7047,16 +8032,75 @@ snapshots: '@typescript-eslint/types': 8.16.0 eslint-visitor-keys: 4.2.0 + '@unocss/astro@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/reset': 66.1.0-beta.6 + '@unocss/vite': 66.1.0-beta.6 + transitivePeerDependencies: + - vue + + '@unocss/cli@66.1.0-beta.6': + dependencies: + '@ampproject/remapping': 2.3.0 + '@unocss/config': 66.1.0-beta.6 + '@unocss/core': 66.1.0-beta.6 + '@unocss/preset-uno': 66.1.0-beta.6 + cac: 6.7.14 + chokidar: 3.6.0 + colorette: 2.0.20 + consola: 3.4.2 + magic-string: 0.30.17 + pathe: 2.0.3 + perfect-debounce: 1.0.0 + tinyglobby: 0.2.12 + unplugin-utils: 0.2.4 + + '@unocss/config@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + unconfig: 7.3.1 + '@unocss/core@66.1.0-beta.5': {} + '@unocss/core@66.1.0-beta.6': {} + '@unocss/extractor-arbitrary-variants@66.1.0-beta.5': dependencies: '@unocss/core': 66.1.0-beta.5 + '@unocss/extractor-arbitrary-variants@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + + '@unocss/inspector@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/rule-utils': 66.1.0-beta.6 + colorette: 2.0.20 + gzip-size: 6.0.0 + sirv: 3.0.1 + vue-flow-layout: 0.1.1 + transitivePeerDependencies: + - vue + + '@unocss/postcss@66.1.0-beta.6(postcss@8.5.3)': + dependencies: + '@unocss/config': 66.1.0-beta.6 + '@unocss/core': 66.1.0-beta.6 + '@unocss/rule-utils': 66.1.0-beta.6 + css-tree: 3.1.0 + postcss: 8.5.3 + tinyglobby: 0.2.12 + '@unocss/preset-attributify@66.1.0-beta.5': dependencies: '@unocss/core': 66.1.0-beta.5 + '@unocss/preset-attributify@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/preset-icons@66.1.0-beta.5': dependencies: '@iconify/utils': 2.3.0 @@ -7065,36 +8109,125 @@ snapshots: transitivePeerDependencies: - supports-color + '@unocss/preset-icons@66.1.0-beta.6': + dependencies: + '@iconify/utils': 2.3.0 + '@unocss/core': 66.1.0-beta.6 + ofetch: 1.4.1 + transitivePeerDependencies: + - supports-color + '@unocss/preset-mini@66.1.0-beta.5': dependencies: '@unocss/core': 66.1.0-beta.5 '@unocss/extractor-arbitrary-variants': 66.1.0-beta.5 '@unocss/rule-utils': 66.1.0-beta.5 + '@unocss/preset-mini@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/extractor-arbitrary-variants': 66.1.0-beta.6 + '@unocss/rule-utils': 66.1.0-beta.6 + + '@unocss/preset-tagify@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + + '@unocss/preset-typography@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/preset-mini': 66.1.0-beta.6 + '@unocss/rule-utils': 66.1.0-beta.6 + '@unocss/preset-uno@66.1.0-beta.5': dependencies: '@unocss/core': 66.1.0-beta.5 '@unocss/preset-wind3': 66.1.0-beta.5 + '@unocss/preset-uno@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/preset-wind3': 66.1.0-beta.6 + + '@unocss/preset-web-fonts@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + ofetch: 1.4.1 + '@unocss/preset-wind3@66.1.0-beta.5': dependencies: '@unocss/core': 66.1.0-beta.5 '@unocss/preset-mini': 66.1.0-beta.5 '@unocss/rule-utils': 66.1.0-beta.5 + '@unocss/preset-wind3@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/preset-mini': 66.1.0-beta.6 + '@unocss/rule-utils': 66.1.0-beta.6 + + '@unocss/preset-wind4@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/extractor-arbitrary-variants': 66.1.0-beta.6 + '@unocss/rule-utils': 66.1.0-beta.6 + + '@unocss/preset-wind@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/preset-wind3': 66.1.0-beta.6 + '@unocss/reset@66.1.0-beta.5': {} + '@unocss/reset@66.1.0-beta.6': {} + '@unocss/rule-utils@66.1.0-beta.5': dependencies: '@unocss/core': 66.1.0-beta.5 magic-string: 0.30.17 + '@unocss/rule-utils@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + magic-string: 0.30.17 + '@unocss/runtime@66.1.0-beta.5': dependencies: '@unocss/core': 66.1.0-beta.5 '@unocss/preset-attributify': 66.1.0-beta.5 '@unocss/preset-uno': 66.1.0-beta.5 + '@unocss/transformer-attributify-jsx@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + + '@unocss/transformer-compile-class@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + + '@unocss/transformer-directives@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + '@unocss/rule-utils': 66.1.0-beta.6 + css-tree: 3.1.0 + + '@unocss/transformer-variant-group@66.1.0-beta.6': + dependencies: + '@unocss/core': 66.1.0-beta.6 + + '@unocss/vite@66.1.0-beta.6': + dependencies: + '@ampproject/remapping': 2.3.0 + '@unocss/config': 66.1.0-beta.6 + '@unocss/core': 66.1.0-beta.6 + '@unocss/inspector': 66.1.0-beta.6 + chokidar: 3.6.0 + magic-string: 0.30.17 + tinyglobby: 0.2.12 + unplugin-utils: 0.2.4 + transitivePeerDependencies: + - vue + '@videojs/http-streaming@3.16.2(video.js@8.21.0)': dependencies: '@babel/runtime': 7.26.10 @@ -7396,6 +8529,16 @@ snapshots: atomic-sleep@1.0.0: {} + autoprefixer@10.4.21(postcss@8.5.3): + dependencies: + browserslist: 4.24.4 + caniuse-lite: 1.0.30001707 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.1.1 + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 @@ -7500,6 +8643,13 @@ snapshots: node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) + browserslist@4.24.4: + dependencies: + caniuse-lite: 1.0.30001707 + electron-to-chromium: 1.5.123 + node-releases: 2.0.19 + update-browserslist-db: 1.1.1(browserslist@4.24.4) + buffer-from@1.1.2: {} bundle-name@4.1.0: @@ -7508,6 +8658,8 @@ snapshots: bytes@3.1.2: {} + cac@6.7.14: {} + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -7537,6 +8689,8 @@ snapshots: caniuse-lite@1.0.30001684: {} + caniuse-lite@1.0.30001707: {} + chalk@4.1.2: dependencies: ansi-styles: 4.3.0 @@ -7610,6 +8764,8 @@ snapshots: connect-history-api-fallback@2.0.0: {} + consola@3.4.2: {} + console-control-strings@1.1.0: {} content-disposition@0.5.4: @@ -7634,25 +8790,70 @@ snapshots: dependencies: browserslist: 4.24.2 - core-js@3.41.0: {} - core-util-is@1.0.3: {} + cosmiconfig@9.0.0(typescript@5.7.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.7.2 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 + css-blank-pseudo@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + css-has-pseudo@7.0.2(postcss@8.5.3): + dependencies: + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + css-in-js-utils@3.1.0: dependencies: hyphenate-style-name: 1.1.0 + css-loader@7.1.2(webpack@5.96.1): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.3) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.3) + postcss-modules-scope: 3.2.1(postcss@8.5.3) + postcss-modules-values: 4.0.0(postcss@8.5.3) + postcss-value-parser: 4.2.0 + semver: 7.6.3 + optionalDependencies: + webpack: 5.96.1(webpack-cli@5.1.4) + + css-prefers-color-scheme@10.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + css-tree@1.1.3: dependencies: mdn-data: 2.0.14 source-map: 0.6.1 + css-tree@3.1.0: + dependencies: + mdn-data: 2.12.2 + source-map-js: 1.2.1 + + cssdb@8.2.4: {} + + cssesc@3.0.0: {} + csstype@3.1.3: {} data-uri-to-buffer@4.0.1: {} @@ -7718,6 +8919,8 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.4: {} + delegates@1.0.0: {} depd@1.1.2: {} @@ -7784,6 +8987,8 @@ snapshots: ee-first@1.1.1: {} + electron-to-chromium@1.5.123: {} + electron-to-chromium@1.5.65: {} eme-encryption-scheme-polyfill@2.1.6: {} @@ -7803,8 +9008,14 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.1 + env-paths@2.2.1: {} + envinfo@7.14.0: {} + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + error-stack-parser@2.1.4: dependencies: stackframe: 1.3.4 @@ -8014,9 +9225,9 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@9.1.0(eslint@9.15.0): + eslint-config-prettier@9.1.0(eslint@9.15.0(jiti@2.4.2)): dependencies: - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) eslint-import-resolver-node@0.3.9: dependencies: @@ -8026,36 +9237,36 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.3(eslint-plugin-import@2.31.0)(eslint@9.15.0): + eslint-import-resolver-typescript@3.6.3(eslint-plugin-import@2.31.0)(eslint@9.15.0(jiti@2.4.2)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.3.7 enhanced-resolve: 5.17.1 - eslint: 9.15.0 - eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0) + eslint: 9.15.0(jiti@2.4.2) + eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0(jiti@2.4.2)) fast-glob: 3.3.2 get-tsconfig: 4.8.1 is-bun-module: 1.2.1 is-glob: 4.0.3 optionalDependencies: - eslint-plugin-import: 2.31.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0) + eslint-plugin-import: 2.31.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0(jiti@2.4.2)) transitivePeerDependencies: - '@typescript-eslint/parser' - eslint-import-resolver-node - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0): + eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0(jiti@2.4.2)): dependencies: debug: 3.2.7 optionalDependencies: - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.3(eslint-plugin-import@2.31.0)(eslint@9.15.0) + eslint-import-resolver-typescript: 3.6.3(eslint-plugin-import@2.31.0)(eslint@9.15.0(jiti@2.4.2)) transitivePeerDependencies: - supports-color - eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0): + eslint-plugin-import@2.31.0(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0(jiti@2.4.2)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -8064,9 +9275,9 @@ snapshots: array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0) + eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@9.15.0(jiti@2.4.2)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -8082,7 +9293,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-react@7.37.4(eslint@9.15.0): + eslint-plugin-react@7.37.4(eslint@9.15.0(jiti@2.4.2)): dependencies: array-includes: 3.1.8 array.prototype.findlast: 1.2.5 @@ -8090,7 +9301,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.15.0 + eslint: 9.15.0(jiti@2.4.2) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -8104,10 +9315,10 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-sort@4.0.0(eslint@9.15.0)(typescript@5.7.2): + eslint-plugin-sort@4.0.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2): dependencies: - '@typescript-eslint/utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) - eslint: 9.15.0 + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.15.0(jiti@2.4.2) isomorphic-resolve: 1.0.0 natural-compare: 1.4.0 transitivePeerDependencies: @@ -8128,9 +9339,9 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.15.0: + eslint@9.15.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.0 '@eslint/core': 0.9.0 @@ -8164,6 +9375,8 @@ snapshots: minimatch: 3.1.2 natural-compare: 1.4.0 optionator: 0.9.4 + optionalDependencies: + jiti: 2.4.2 transitivePeerDependencies: - supports-color @@ -8326,6 +9539,10 @@ snapshots: optionalDependencies: picomatch: 4.0.2 + fdir@6.4.3(picomatch@4.0.2): + optionalDependencies: + picomatch: 4.0.2 + fetch-blob@3.2.0: dependencies: node-domexception: 1.0.0 @@ -8411,6 +9628,8 @@ snapshots: forwarded@0.2.0: {} + fraction.js@4.3.7: {} + fresh@0.5.2: {} fs-minipass@2.1.0: @@ -8655,6 +9874,10 @@ snapshots: dependencies: safer-buffer: 2.1.2 + icss-utils@5.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + ignore@5.3.2: {} immediate@3.0.6: {} @@ -8704,6 +9927,8 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-arrayish@0.2.1: {} + is-async-function@2.0.0: dependencies: has-tostringtag: 1.0.2 @@ -8861,6 +10086,10 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 + jiti@1.21.7: {} + + jiti@2.4.2: {} + js-base64@3.7.7: {} js-cookie@2.2.1: {} @@ -8958,6 +10187,8 @@ snapshots: process-warning: 4.0.0 set-cookie-parser: 2.7.1 + lines-and-columns@1.2.4: {} + loader-runner@4.3.0: {} loader-utils@1.4.2: @@ -8988,8 +10219,6 @@ snapshots: lodash.merge@4.6.2: {} - lodash@4.17.21: {} - loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -9019,6 +10248,8 @@ snapshots: mdn-data@2.0.14: {} + mdn-data@2.12.2: {} + media-typer@0.3.0: {} memfs@4.14.0: @@ -9137,6 +10368,8 @@ snapshots: stacktrace-js: 2.0.2 stylis: 4.3.6 + nanoid@3.3.11: {} + natural-compare@1.4.0: {} negotiator@0.6.3: {} @@ -9165,12 +10398,16 @@ snapshots: node-releases@2.0.18: {} + node-releases@2.0.19: {} + nopt@5.0.0: dependencies: abbrev: 1.1.1 normalize-path@3.0.0: {} + normalize-range@0.1.2: {} + npmlog@5.0.1: dependencies: are-we-there-yet: 2.0.0 @@ -9305,10 +10542,6 @@ snapshots: dependencies: p-limit: 4.0.0 - p-min-delay@4.0.2: - dependencies: - yoctodelay: 1.2.0 - p-retry@6.2.1: dependencies: '@types/retry': 0.12.2 @@ -9329,6 +10562,13 @@ snapshots: dependencies: callsites: 3.1.0 + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.26.2 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + parseurl@1.3.3: {} path-exists@4.0.0: {} @@ -9352,6 +10592,8 @@ snapshots: pathe@2.0.3: {} + perfect-debounce@1.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -9412,6 +10654,263 @@ snapshots: possible-typed-array-names@1.0.0: {} + postcss-attribute-case-insensitive@7.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-clamp@4.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-color-functional-notation@7.0.8(postcss@8.5.3): + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + postcss-color-hex-alpha@10.0.0(postcss@8.5.3): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-color-rebeccapurple@10.0.0(postcss@8.5.3): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-custom-media@11.0.5(postcss@8.5.3): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/media-query-list-parser': 4.0.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + postcss: 8.5.3 + + postcss-custom-properties@14.0.4(postcss@8.5.3): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-custom-selectors@8.0.4(postcss@8.5.3): + dependencies: + '@csstools/cascade-layer-name-parser': 2.0.4(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-dir-pseudo-class@9.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-double-position-gradients@6.0.0(postcss@8.5.3): + dependencies: + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-focus-visible@10.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-focus-within@9.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-font-variant@5.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-gap-properties@6.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-image-set-function@7.0.0(postcss@8.5.3): + dependencies: + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-lab-function@7.0.8(postcss@8.5.3): + dependencies: + '@csstools/css-color-parser': 3.0.8(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) + '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) + '@csstools/css-tokenizer': 3.0.3 + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/utilities': 2.0.0(postcss@8.5.3) + postcss: 8.5.3 + + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.7.2)(webpack@5.96.1): + dependencies: + cosmiconfig: 9.0.0(typescript@5.7.2) + jiti: 1.21.7 + postcss: 8.5.3 + semver: 7.6.3 + optionalDependencies: + webpack: 5.96.1(webpack-cli@5.1.4) + transitivePeerDependencies: + - typescript + + postcss-logical@8.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-modules-extract-imports@3.1.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-modules-local-by-default@4.2.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + postcss-value-parser: 4.2.0 + + postcss-modules-scope@3.2.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-modules-values@4.0.0(postcss@8.5.3): + dependencies: + icss-utils: 5.1.0(postcss@8.5.3) + postcss: 8.5.3 + + postcss-nesting@13.0.1(postcss@8.5.3): + dependencies: + '@csstools/selector-resolve-nested': 3.0.0(postcss-selector-parser@7.1.0) + '@csstools/selector-specificity': 5.0.0(postcss-selector-parser@7.1.0) + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-opacity-percentage@3.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-overflow-shorthand@6.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-page-break@3.0.4(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-place@10.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-value-parser: 4.2.0 + + postcss-preset-env@10.1.5(postcss@8.5.3): + dependencies: + '@csstools/postcss-cascade-layers': 5.0.1(postcss@8.5.3) + '@csstools/postcss-color-function': 4.0.8(postcss@8.5.3) + '@csstools/postcss-color-mix-function': 3.0.8(postcss@8.5.3) + '@csstools/postcss-content-alt-text': 2.0.4(postcss@8.5.3) + '@csstools/postcss-exponential-functions': 2.0.7(postcss@8.5.3) + '@csstools/postcss-font-format-keywords': 4.0.0(postcss@8.5.3) + '@csstools/postcss-gamut-mapping': 2.0.8(postcss@8.5.3) + '@csstools/postcss-gradients-interpolation-method': 5.0.8(postcss@8.5.3) + '@csstools/postcss-hwb-function': 4.0.8(postcss@8.5.3) + '@csstools/postcss-ic-unit': 4.0.0(postcss@8.5.3) + '@csstools/postcss-initial': 2.0.1(postcss@8.5.3) + '@csstools/postcss-is-pseudo-class': 5.0.1(postcss@8.5.3) + '@csstools/postcss-light-dark-function': 2.0.7(postcss@8.5.3) + '@csstools/postcss-logical-float-and-clear': 3.0.0(postcss@8.5.3) + '@csstools/postcss-logical-overflow': 2.0.0(postcss@8.5.3) + '@csstools/postcss-logical-overscroll-behavior': 2.0.0(postcss@8.5.3) + '@csstools/postcss-logical-resize': 3.0.0(postcss@8.5.3) + '@csstools/postcss-logical-viewport-units': 3.0.3(postcss@8.5.3) + '@csstools/postcss-media-minmax': 2.0.7(postcss@8.5.3) + '@csstools/postcss-media-queries-aspect-ratio-number-values': 3.0.4(postcss@8.5.3) + '@csstools/postcss-nested-calc': 4.0.0(postcss@8.5.3) + '@csstools/postcss-normalize-display-values': 4.0.0(postcss@8.5.3) + '@csstools/postcss-oklab-function': 4.0.8(postcss@8.5.3) + '@csstools/postcss-progressive-custom-properties': 4.0.0(postcss@8.5.3) + '@csstools/postcss-random-function': 1.0.3(postcss@8.5.3) + '@csstools/postcss-relative-color-syntax': 3.0.8(postcss@8.5.3) + '@csstools/postcss-scope-pseudo-class': 4.0.1(postcss@8.5.3) + '@csstools/postcss-sign-functions': 1.1.2(postcss@8.5.3) + '@csstools/postcss-stepped-value-functions': 4.0.7(postcss@8.5.3) + '@csstools/postcss-text-decoration-shorthand': 4.0.2(postcss@8.5.3) + '@csstools/postcss-trigonometric-functions': 4.0.7(postcss@8.5.3) + '@csstools/postcss-unset-value': 4.0.0(postcss@8.5.3) + autoprefixer: 10.4.21(postcss@8.5.3) + browserslist: 4.24.4 + css-blank-pseudo: 7.0.1(postcss@8.5.3) + css-has-pseudo: 7.0.2(postcss@8.5.3) + css-prefers-color-scheme: 10.0.0(postcss@8.5.3) + cssdb: 8.2.4 + postcss: 8.5.3 + postcss-attribute-case-insensitive: 7.0.1(postcss@8.5.3) + postcss-clamp: 4.1.0(postcss@8.5.3) + postcss-color-functional-notation: 7.0.8(postcss@8.5.3) + postcss-color-hex-alpha: 10.0.0(postcss@8.5.3) + postcss-color-rebeccapurple: 10.0.0(postcss@8.5.3) + postcss-custom-media: 11.0.5(postcss@8.5.3) + postcss-custom-properties: 14.0.4(postcss@8.5.3) + postcss-custom-selectors: 8.0.4(postcss@8.5.3) + postcss-dir-pseudo-class: 9.0.1(postcss@8.5.3) + postcss-double-position-gradients: 6.0.0(postcss@8.5.3) + postcss-focus-visible: 10.0.1(postcss@8.5.3) + postcss-focus-within: 9.0.1(postcss@8.5.3) + postcss-font-variant: 5.0.0(postcss@8.5.3) + postcss-gap-properties: 6.0.0(postcss@8.5.3) + postcss-image-set-function: 7.0.0(postcss@8.5.3) + postcss-lab-function: 7.0.8(postcss@8.5.3) + postcss-logical: 8.1.0(postcss@8.5.3) + postcss-nesting: 13.0.1(postcss@8.5.3) + postcss-opacity-percentage: 3.0.0(postcss@8.5.3) + postcss-overflow-shorthand: 6.0.0(postcss@8.5.3) + postcss-page-break: 3.0.4(postcss@8.5.3) + postcss-place: 10.0.0(postcss@8.5.3) + postcss-pseudo-class-any-link: 10.0.1(postcss@8.5.3) + postcss-replace-overflow-wrap: 4.0.0(postcss@8.5.3) + postcss-selector-not: 8.0.1(postcss@8.5.3) + + postcss-pseudo-class-any-link@10.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-replace-overflow-wrap@4.0.0(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + + postcss-selector-not@8.0.1(postcss@8.5.3): + dependencies: + postcss: 8.5.3 + postcss-selector-parser: 7.1.0 + + postcss-selector-parser@7.1.0: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.3: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 + prelude-ls@1.2.1: {} prettier-plugin-packagejson@2.5.6(prettier@3.4.0): @@ -9874,6 +11373,12 @@ snapshots: mrmime: 2.0.1 totalist: 3.0.1 + sirv@3.0.1: + dependencies: + '@polka/url': 1.0.0-next.28 + mrmime: 2.0.1 + totalist: 3.0.1 + sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 @@ -9897,6 +11402,8 @@ snapshots: sort-object-keys: 1.1.3 tinyglobby: 0.2.10 + source-map-js@1.2.1: {} + source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -10032,6 +11539,10 @@ snapshots: strip-json-comments@3.1.1: {} + style-loader@4.0.0(webpack@5.96.1): + dependencies: + webpack: 5.96.1(webpack-cli@5.1.4) + stylis@4.3.6: {} supports-color@7.2.0: @@ -10099,6 +11610,11 @@ snapshots: fdir: 6.4.2(picomatch@4.0.2) picomatch: 4.0.2 + tinyglobby@0.2.12: + dependencies: + fdir: 6.4.3(picomatch@4.0.2) + picomatch: 4.0.2 + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -10185,12 +11701,12 @@ snapshots: possible-typed-array-names: 1.0.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.16.0(eslint@9.15.0)(typescript@5.7.2): + typescript-eslint@8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2) - '@typescript-eslint/parser': 8.16.0(eslint@9.15.0)(typescript@5.7.2) - '@typescript-eslint/utils': 8.16.0(eslint@9.15.0)(typescript@5.7.2) - eslint: 9.15.0 + '@typescript-eslint/eslint-plugin': 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2))(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/parser': 8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) + '@typescript-eslint/utils': 8.16.0(eslint@9.15.0(jiti@2.4.2))(typescript@5.7.2) + eslint: 9.15.0(jiti@2.4.2) optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: @@ -10207,6 +11723,13 @@ snapshots: has-symbols: 1.1.0 which-boxed-primitive: 1.1.1 + unconfig@7.3.1: + dependencies: + '@quansync/fs': 0.1.1 + defu: 6.1.4 + jiti: 2.4.2 + quansync: 0.2.8 + undici-types@6.20.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} @@ -10220,14 +11743,51 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} + unocss@66.1.0-beta.6(postcss@8.5.3): + dependencies: + '@unocss/astro': 66.1.0-beta.6 + '@unocss/cli': 66.1.0-beta.6 + '@unocss/core': 66.1.0-beta.6 + '@unocss/postcss': 66.1.0-beta.6(postcss@8.5.3) + '@unocss/preset-attributify': 66.1.0-beta.6 + '@unocss/preset-icons': 66.1.0-beta.6 + '@unocss/preset-mini': 66.1.0-beta.6 + '@unocss/preset-tagify': 66.1.0-beta.6 + '@unocss/preset-typography': 66.1.0-beta.6 + '@unocss/preset-uno': 66.1.0-beta.6 + '@unocss/preset-web-fonts': 66.1.0-beta.6 + '@unocss/preset-wind': 66.1.0-beta.6 + '@unocss/preset-wind3': 66.1.0-beta.6 + '@unocss/preset-wind4': 66.1.0-beta.6 + '@unocss/transformer-attributify-jsx': 66.1.0-beta.6 + '@unocss/transformer-compile-class': 66.1.0-beta.6 + '@unocss/transformer-directives': 66.1.0-beta.6 + '@unocss/transformer-variant-group': 66.1.0-beta.6 + '@unocss/vite': 66.1.0-beta.6 + transitivePeerDependencies: + - postcss + - supports-color + - vue + unpipe@1.0.0: {} + unplugin-utils@0.2.4: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.2 + update-browserslist-db@1.1.1(browserslist@4.24.2): dependencies: browserslist: 4.24.2 escalade: 3.2.0 picocolors: 1.1.1 + update-browserslist-db@1.1.1(browserslist@4.24.4): + dependencies: + browserslist: 4.24.4 + escalade: 3.2.0 + picocolors: 1.1.1 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -10281,7 +11841,7 @@ snapshots: dependencies: global: 4.4.0 - view-transitions-polyfill@1.0.3: {} + vue-flow-layout@0.1.1: {} watchpack@2.4.2: dependencies: @@ -10526,8 +12086,6 @@ snapshots: yocto-queue@1.1.1: {} - yoctodelay@1.2.0: {} - zod-openapi@4.2.0(zod@3.24.1): dependencies: zod: 3.24.1 diff --git a/public/arema.svg b/public/arema.svg index 3d9edda56..5f1e7f9e8 100644 --- a/public/arema.svg +++ b/public/arema.svg @@ -1,3 +1 @@ - - - + \ No newline at end of file diff --git a/public/icons/error-outline.svg b/public/icons/error-outline.svg new file mode 100644 index 000000000..b451914df --- /dev/null +++ b/public/icons/error-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/pause-rounded.svg b/public/icons/pause-rounded.svg new file mode 100644 index 000000000..8aa2cb26f --- /dev/null +++ b/public/icons/pause-rounded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/play-arrow-rounded.svg b/public/icons/play-arrow-rounded.svg new file mode 100644 index 000000000..8ab5eecf9 --- /dev/null +++ b/public/icons/play-arrow-rounded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/volume-off-rounded.svg b/public/icons/volume-off-rounded.svg new file mode 100644 index 000000000..69092a9b2 --- /dev/null +++ b/public/icons/volume-off-rounded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/volume-up-rounded.svg b/public/icons/volume-up-rounded.svg new file mode 100644 index 000000000..801417113 --- /dev/null +++ b/public/icons/volume-up-rounded.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons/warning-outline.svg b/public/icons/warning-outline.svg new file mode 100644 index 000000000..9228af3e3 --- /dev/null +++ b/public/icons/warning-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/logos/anime.svg b/public/logos/anime.svg index 7f8238b99..1aca4a493 100644 --- a/public/logos/anime.svg +++ b/public/logos/anime.svg @@ -2,7 +2,7 @@ diff --git a/public/logos/documentary.svg b/public/logos/documentary.svg index 400aa236a..35f0e957b 100644 --- a/public/logos/documentary.svg +++ b/public/logos/documentary.svg @@ -2,7 +2,7 @@ diff --git a/public/logos/drama.svg b/public/logos/drama.svg index 37107ee85..dde337453 100644 --- a/public/logos/drama.svg +++ b/public/logos/drama.svg @@ -2,7 +2,7 @@ diff --git a/public/logos/fightingsports.svg b/public/logos/fightingsports.svg index 4e8da0054..26019ae5f 100644 --- a/public/logos/fightingsports.svg +++ b/public/logos/fightingsports.svg @@ -2,7 +2,7 @@ diff --git a/public/logos/mahjong.svg b/public/logos/mahjong.svg index 88f719067..5bf730e53 100644 --- a/public/logos/mahjong.svg +++ b/public/logos/mahjong.svg @@ -2,9 +2,10 @@ + 麻雀 diff --git a/public/logos/music.svg b/public/logos/music.svg index f1d4a7ede..1c4f55975 100644 --- a/public/logos/music.svg +++ b/public/logos/music.svg @@ -2,9 +2,10 @@ + 音楽 diff --git a/public/logos/news.svg b/public/logos/news.svg index 1705a248a..f580246f8 100644 --- a/public/logos/news.svg +++ b/public/logos/news.svg @@ -1,11 +1,13 @@ - + - + ニュース diff --git a/public/logos/reality.svg b/public/logos/reality.svg index 804362fcd..666202488 100644 --- a/public/logos/reality.svg +++ b/public/logos/reality.svg @@ -1,11 +1,13 @@ - + - + リアリティショー diff --git a/public/logos/shogi.svg b/public/logos/shogi.svg index 8c8dbc195..cfa35eb3d 100644 --- a/public/logos/shogi.svg +++ b/public/logos/shogi.svg @@ -2,7 +2,7 @@ diff --git a/public/logos/soccer.svg b/public/logos/soccer.svg index 183e8654d..015d3f479 100644 --- a/public/logos/soccer.svg +++ b/public/logos/soccer.svg @@ -2,7 +2,7 @@ diff --git a/public/logos/sumo.svg b/public/logos/sumo.svg index 8cc17ad32..b478c5b73 100644 --- a/public/logos/sumo.svg +++ b/public/logos/sumo.svg @@ -2,7 +2,7 @@ diff --git a/public/logos/variety.svg b/public/logos/variety.svg index 805915a56..3417fc384 100644 --- a/public/logos/variety.svg +++ b/public/logos/variety.svg @@ -1,11 +1,13 @@ - - + + + diff --git a/workspaces/client/src/app/createRoutes.tsx b/workspaces/client/src/app/createRoutes.tsx index a81e12561..c4ef27252 100644 --- a/workspaces/client/src/app/createRoutes.tsx +++ b/workspaces/client/src/app/createRoutes.tsx @@ -1,4 +1,3 @@ -import lazy from 'p-min-delay'; import { RouteObject } from 'react-router'; import { Document, prefetch } from '@wsh-2025/client/src/app/Document'; @@ -11,10 +10,7 @@ export function createRoutes(store: ReturnType): RouteObject { index: true, async lazy() { - const { HomePage, prefetch } = await lazy( - import('@wsh-2025/client/src/pages/home/components/HomePage'), - 1000, - ); + const { HomePage, prefetch } = await import('@wsh-2025/client/src/pages/home/components/HomePage'); return { Component: HomePage, async loader() { @@ -25,10 +21,7 @@ export function createRoutes(store: ReturnType): RouteObject }, { async lazy() { - const { EpisodePage, prefetch } = await lazy( - import('@wsh-2025/client/src/pages/episode/components/EpisodePage'), - 1000, - ); + const { EpisodePage, prefetch } = await import('@wsh-2025/client/src/pages/episode/components/EpisodePage'); return { Component: EpisodePage, async loader({ params }) { @@ -40,10 +33,7 @@ export function createRoutes(store: ReturnType): RouteObject }, { async lazy() { - const { prefetch, ProgramPage } = await lazy( - import('@wsh-2025/client/src/pages/program/components/ProgramPage'), - 1000, - ); + const { prefetch, ProgramPage } = await import('@wsh-2025/client/src/pages/program/components/ProgramPage'); return { Component: ProgramPage, async loader({ params }) { @@ -55,10 +45,7 @@ export function createRoutes(store: ReturnType): RouteObject }, { async lazy() { - const { prefetch, SeriesPage } = await lazy( - import('@wsh-2025/client/src/pages/series/components/SeriesPage'), - 1000, - ); + const { prefetch, SeriesPage } = await import('@wsh-2025/client/src/pages/series/components/SeriesPage'); return { Component: SeriesPage, async loader({ params }) { @@ -70,9 +57,8 @@ export function createRoutes(store: ReturnType): RouteObject }, { async lazy() { - const { prefetch, TimetablePage } = await lazy( - import('@wsh-2025/client/src/pages/timetable/components/TimetablePage'), - 1000, + const { prefetch, TimetablePage } = await import( + '@wsh-2025/client/src/pages/timetable/components/TimetablePage' ); return { Component: TimetablePage, @@ -85,9 +71,8 @@ export function createRoutes(store: ReturnType): RouteObject }, { async lazy() { - const { NotFoundPage, prefetch } = await lazy( - import('@wsh-2025/client/src/pages/not_found/components/NotFoundPage'), - 1000, + const { NotFoundPage, prefetch } = await import( + '@wsh-2025/client/src/pages/not_found/components/NotFoundPage' ); return { Component: NotFoundPage, diff --git a/workspaces/client/src/app/createStore.ts b/workspaces/client/src/app/createStore.ts index 92d2abaaf..98302e6de 100644 --- a/workspaces/client/src/app/createStore.ts +++ b/workspaces/client/src/app/createStore.ts @@ -1,5 +1,4 @@ import { withLenses } from '@dhmk/zustand-lens'; -import _ from 'lodash'; import { createStore as createZustandStore } from 'zustand/vanilla'; import { createAuthStoreSlice } from '@wsh-2025/client/src/features/auth/stores/createAuthStoreSlice'; @@ -39,7 +38,38 @@ export const createStore = ({ hydrationData }: Props) => { })), ); - store.setState((s) => _.merge(s, hydrationData)); + store.setState((s) => { + if (hydrationData) { + return { ...s, ...deepMerge(s, hydrationData) }; + } + return s; + }); return store; }; + +type DeepMergeable = Record; + +function deepMerge(target: T, source: unknown): T { + if (!source || typeof source !== 'object') return { ...target }; + + const result = { ...target } as { [K in keyof T]: unknown }; + const typedSource = source as DeepMergeable; + + Object.keys(typedSource).forEach((key) => { + if (key in result) { + const targetValue = result[key as keyof T]; + const sourceValue = typedSource[key]; + + if (targetValue && sourceValue && typeof targetValue === 'object' && typeof sourceValue === 'object') { + result[key as keyof T] = deepMerge(targetValue as DeepMergeable, sourceValue) as unknown; + } else if (sourceValue !== undefined) { + result[key as keyof T] = sourceValue; + } + } else if (typedSource[key] !== undefined) { + (result as DeepMergeable)[key] = typedSource[key]; + } + }); + + return result as T; +} diff --git a/workspaces/client/src/features/auth/components/SignInDialog.tsx b/workspaces/client/src/features/auth/components/SignInDialog.tsx index 350d89edc..6769a1cdc 100644 --- a/workspaces/client/src/features/auth/components/SignInDialog.tsx +++ b/workspaces/client/src/features/auth/components/SignInDialog.tsx @@ -47,7 +47,7 @@ export const SignInDialog = ({ isOpen, onClose, onOpenSignUp }: Props) => {
- + Arema

ログイン

@@ -121,7 +121,12 @@ export const SignInDialog = ({ isOpen, onClose, onOpenSignUp }: Props) => { {submitError ? (
-
+ エラー {submitError}
) : null} diff --git a/workspaces/client/src/features/auth/components/SignOutDialog.tsx b/workspaces/client/src/features/auth/components/SignOutDialog.tsx index d7c1fd336..5f0dc8887 100644 --- a/workspaces/client/src/features/auth/components/SignOutDialog.tsx +++ b/workspaces/client/src/features/auth/components/SignOutDialog.tsx @@ -28,7 +28,7 @@ export const SignOutDialog = ({ isOpen, onClose }: Props) => {
- + Arema

ログアウト

@@ -37,13 +37,23 @@ export const SignOutDialog = ({ isOpen, onClose }: Props) => { {({ handleSubmit, submitError }) => (
void handleSubmit(ev)}>
-
+ 警告 プレミアムエピソードが視聴できなくなります。
{submitError ? (
-
+ エラー {submitError}
) : null} diff --git a/workspaces/client/src/features/auth/components/SignUpDialog.tsx b/workspaces/client/src/features/auth/components/SignUpDialog.tsx index 1cb939f8d..c16495c3c 100644 --- a/workspaces/client/src/features/auth/components/SignUpDialog.tsx +++ b/workspaces/client/src/features/auth/components/SignUpDialog.tsx @@ -47,7 +47,7 @@ export const SignUpDialog = ({ isOpen, onClose, onOpenSignIn }: Props) => {
- + Arema

会員登録

@@ -121,7 +121,12 @@ export const SignUpDialog = ({ isOpen, onClose, onOpenSignIn }: Props) => { {submitError ? (
-
+ エラー {submitError}
) : null} diff --git a/workspaces/client/src/features/layout/components/AspectRatio.tsx b/workspaces/client/src/features/layout/components/AspectRatio.tsx index 37b07a5a1..fc7f7580e 100644 --- a/workspaces/client/src/features/layout/components/AspectRatio.tsx +++ b/workspaces/client/src/features/layout/components/AspectRatio.tsx @@ -7,6 +7,9 @@ interface Props { ratioWidth: number; } +/** + * @deprecated + */ export const AspectRatio = ({ children, ratioHeight, ratioWidth }: Props) => { const forceUpdate = useUpdate(); const containerRef = useRef(null); @@ -24,7 +27,7 @@ export const AspectRatio = ({ children, ratioHeight, ratioWidth }: Props) => { const height = (width * ratioHeight) / ratioWidth; return ( -
+
{children}
); diff --git a/workspaces/client/src/features/layout/components/Hoverable.tsx b/workspaces/client/src/features/layout/components/Hoverable.tsx index b723d8aee..d547245d3 100644 --- a/workspaces/client/src/features/layout/components/Hoverable.tsx +++ b/workspaces/client/src/features/layout/components/Hoverable.tsx @@ -1,9 +1,7 @@ import classNames from 'classnames'; -import { Children, cloneElement, ReactElement, Ref, useRef } from 'react'; +import { Children, cloneElement, ReactElement, Ref, useRef, useState } from 'react'; import { useMergeRefs } from 'use-callback-ref'; -import { usePointer } from '@wsh-2025/client/src/features/layout/hooks/usePointer'; - interface Props { children: ReactElement<{ className?: string; ref?: Ref }>; classNames: { @@ -13,27 +11,28 @@ interface Props { } export const Hoverable = (props: Props) => { + const [isHovered, setIsHovered] = useState(false); const child = Children.only(props.children); const elementRef = useRef(null); const mergedRef = useMergeRefs([elementRef, child.props.ref].filter((v) => v != null)); - const pointer = usePointer(); - const elementRect = elementRef.current?.getBoundingClientRect(); + const handleMouseEnter = () => { + setIsHovered(true); + }; - const hovered = - elementRect != null && - elementRect.left <= pointer.x && - pointer.x <= elementRect.right && - elementRect.top <= pointer.y && - pointer.y <= elementRect.bottom; + const handleMouseLeave = () => { + setIsHovered(false); + }; return cloneElement(child, { className: classNames( child.props.className, 'cursor-pointer', - hovered ? props.classNames.hovered : props.classNames.default, + isHovered ? props.classNames.hovered : props.classNames.default, ), ref: mergedRef, + onMouseEnter: handleMouseEnter, + onMouseLeave: handleMouseLeave, }); }; diff --git a/workspaces/client/src/features/layout/components/Layout.tsx b/workspaces/client/src/features/layout/components/Layout.tsx index 99eadef4b..31ca5efbc 100644 --- a/workspaces/client/src/features/layout/components/Layout.tsx +++ b/workspaces/client/src/features/layout/components/Layout.tsx @@ -64,7 +64,7 @@ export const Layout = ({ children }: Props) => { )} > - AREMA + AREMA @@ -76,7 +76,10 @@ export const Layout = ({ children }: Props) => { onClick={isSignedIn ? authActions.openSignOutDialog : authActions.openSignInDialog} >
{isSignedIn ? 'ログアウト' : 'ログイン'} diff --git a/workspaces/client/src/features/recommended/components/CarouselSection.tsx b/workspaces/client/src/features/recommended/components/CarouselSection.tsx index e81aa410e..a10b64c0d 100644 --- a/workspaces/client/src/features/recommended/components/CarouselSection.tsx +++ b/workspaces/client/src/features/recommended/components/CarouselSection.tsx @@ -1,6 +1,7 @@ import { ElementScrollRestoration } from '@epic-web/restore-scroll'; import { StandardSchemaV1 } from '@standard-schema/spec'; import * as schema from '@wsh-2025/schema/src/api/schema'; +import { useMemo } from 'react'; import { ArrayValues } from 'type-fest'; import { useMergeRefs } from 'use-callback-ref'; @@ -18,6 +19,26 @@ export const CarouselSection = ({ module }: Props) => { const { ref: containerRefForItemWidth, width: itemWidth } = useCarouselItemWidth(); const mergedRef = useMergeRefs([containerRefForItemWidth, containerRefForScrollSnap]); + // アイテムスタイルをメモ化してレンダリングを最適化 + const itemStyle = useMemo( + () => ({ + width: `${itemWidth}px`, + flexShrink: 0, + flexGrow: 0, + }), + [itemWidth], + ); + + // moduleのアイテムをメモ化 + const renderedItems = useMemo(() => { + return module.items.map((item) => ( +
+ {item.series != null ? : null} + {item.episode != null ? : null} +
+ )); + }, [module.items, itemStyle]); + return ( <>
@@ -25,15 +46,10 @@ export const CarouselSection = ({ module }: Props) => {
- {module.items.map((item) => ( -
- {item.series != null ? : null} - {item.episode != null ? : null} -
- ))} + {renderedItems}
diff --git a/workspaces/client/src/features/recommended/components/EpisodeItem.tsx b/workspaces/client/src/features/recommended/components/EpisodeItem.tsx index 74b08745c..3d832ffe3 100644 --- a/workspaces/client/src/features/recommended/components/EpisodeItem.tsx +++ b/workspaces/client/src/features/recommended/components/EpisodeItem.tsx @@ -25,8 +25,13 @@ export const EpisodeItem = ({ episode }: Props) => { <>
- - + + 再生 {episode.premium ? ( プレミアム diff --git a/workspaces/client/src/features/recommended/components/JumbotronSection.tsx b/workspaces/client/src/features/recommended/components/JumbotronSection.tsx index 638c9cfd6..a14737e75 100644 --- a/workspaces/client/src/features/recommended/components/JumbotronSection.tsx +++ b/workspaces/client/src/features/recommended/components/JumbotronSection.tsx @@ -1,6 +1,6 @@ import { StandardSchemaV1 } from '@standard-schema/spec'; import * as schema from '@wsh-2025/schema/src/api/schema'; -import { useRef } from 'react'; +import { useEffect, useRef, useState } from 'react'; import Ellipsis from 'react-ellipsis-component'; import { Flipped } from 'react-flip-toolkit'; import { NavLink } from 'react-router'; @@ -19,15 +19,49 @@ interface Props { export const JumbotronSection = ({ module }: Props) => { const playerRef = useRef(null); + const [isVisible, setIsVisible] = useState(false); const episode = module.items[0]?.episode; invariant(episode); + // Intersection Observerを使用して可視性を検出 + useEffect(() => { + // コンポーネントがマウントされたら表示状態を検出する要素を取得 + const targetId = `jumbotron-${module.id}`; + const targetElement = document.getElementById(targetId); + + if (!targetElement) { + // 要素が見つからない場合はすぐに表示状態に + setIsVisible(true); + return; + } + + const observer = new IntersectionObserver( + (entries) => { + entries.forEach((entry) => { + if (entry.isIntersecting) { + setIsVisible(true); + // 一度表示されたら監視を停止 + observer.disconnect(); + } + }); + }, + { threshold: 0.1 }, // 10%見えたら読み込み開始 + ); + + observer.observe(targetElement); + + return () => { + observer.disconnect(); + }; + }, [module.id]); + return ( {({ isTransitioning }) => { @@ -44,13 +78,15 @@ export const JumbotronSection = ({ module }: Props) => {
- + {isVisible && ( + + )}
diff --git a/workspaces/client/src/features/recommended/components/SeriesItem.tsx b/workspaces/client/src/features/recommended/components/SeriesItem.tsx index 2477b7a97..2847e5e96 100644 --- a/workspaces/client/src/features/recommended/components/SeriesItem.tsx +++ b/workspaces/client/src/features/recommended/components/SeriesItem.tsx @@ -21,7 +21,7 @@ export const SeriesItem = ({ series }: Props) => { <>
- +
diff --git a/workspaces/client/src/features/recommended/hooks/useCarouselItemWidth.ts b/workspaces/client/src/features/recommended/hooks/useCarouselItemWidth.ts index 83a6afe94..b3835158b 100644 --- a/workspaces/client/src/features/recommended/hooks/useCarouselItemWidth.ts +++ b/workspaces/client/src/features/recommended/hooks/useCarouselItemWidth.ts @@ -1,31 +1,43 @@ -import { useEffect, useRef } from 'react'; -import { useUpdate } from 'react-use'; +import { useEffect, useRef, useState } from 'react'; const MIN_WIDTH = 276; const GAP = 12; // repeat(auto-fill, minmax(276px, 1fr)) を計算で求める export function useCarouselItemWidth() { - const forceUpdate = useUpdate(); + const [itemWidth, setItemWidth] = useState(MIN_WIDTH); const containerRef = useRef(null); useEffect(() => { - const interval = setInterval(function tick() { - forceUpdate(); - }, 250); - return () => { - clearInterval(interval); + if (!containerRef.current) return; + + const calculateWidth = () => { + if (!containerRef.current) return; + + const styles = window.getComputedStyle(containerRef.current); + const innerWidth = + containerRef.current.clientWidth - parseInt(styles.paddingLeft) - parseInt(styles.paddingRight); + const itemCount = Math.max(1, Math.floor((innerWidth + GAP) / (MIN_WIDTH + GAP))); + const newItemWidth = Math.floor((innerWidth + GAP) / itemCount - GAP); + + setItemWidth(newItemWidth); }; - }, []); - if (containerRef.current == null) { - return { ref: containerRef, width: MIN_WIDTH }; - } + // 初回計算 + calculateWidth(); - const styles = window.getComputedStyle(containerRef.current); - const innerWidth = containerRef.current.clientWidth - parseInt(styles.paddingLeft) - parseInt(styles.paddingRight); - const itemCount = Math.max(0, Math.floor((innerWidth + GAP) / (MIN_WIDTH + GAP))); - const itemWidth = Math.floor((innerWidth + GAP) / itemCount - GAP); + // ResizeObserverを使用して要素サイズ変更時のみ再計算 + const resizeObserver = new ResizeObserver(calculateWidth); + resizeObserver.observe(containerRef.current); + + // ウィンドウサイズ変更時も再計算 + window.addEventListener('resize', calculateWidth); + + return () => { + resizeObserver.disconnect(); + window.removeEventListener('resize', calculateWidth); + }; + }, []); return { ref: containerRef, width: itemWidth }; } diff --git a/workspaces/client/src/features/recommended/hooks/useScrollSnap.ts b/workspaces/client/src/features/recommended/hooks/useScrollSnap.ts index e6cb168e7..87b8f4551 100644 --- a/workspaces/client/src/features/recommended/hooks/useScrollSnap.ts +++ b/workspaces/client/src/features/recommended/hooks/useScrollSnap.ts @@ -10,66 +10,97 @@ export function useScrollSnap({ scrollPadding }: { scrollPadding: number }) { return; } + const container = containerRef.current; + let scrollEndTimer: ReturnType | null = null; + let snapTimer: ReturnType | null = null; + const handleScroll = () => { if (isScrolling.current) { return; } + isScrolling.current = true; - }; - const handleScrollend = () => { - if (!isScrolling.current) { - return; + // スクロール終了検出のためのタイマーをリセット + if (scrollEndTimer) { + clearTimeout(scrollEndTimer); } - isScrolling.current = false; + + scrollEndTimer = setTimeout(() => { + isScrolling.current = false; + + // スクロールが止まったらスナップを実行 + if (!isSnapping.current) { + performSnap(); + } + }, 150); // スクロール停止を検出するための短い遅延 }; - let timer: ReturnType | null = null; - let interval = setInterval(() => { - if (!containerRef.current) { - return; - } + const performSnap = () => { + if (isSnapping.current) return; - const childElements = Array.from(containerRef.current.children) as HTMLElement[]; + const childElements = Array.from(container.children) as HTMLElement[]; const childScrollPositions = childElements.map((element) => element.offsetLeft); - const scrollPosition = containerRef.current.scrollLeft; + const scrollPosition = container.scrollLeft; + + // 最も近い子要素のインデックスを見つける const childIndex = childScrollPositions.reduce((prev, curr, index) => { return Math.abs(curr - scrollPosition) < Math.abs((childScrollPositions[prev] ?? 0) - scrollPosition) ? index : prev; }, 0); - if (isScrolling.current) { - return; - } - - if (isSnapping.current) { - return; - } - isSnapping.current = true; - containerRef.current.scrollTo({ + + container.scrollTo({ behavior: 'smooth', left: (childScrollPositions[childIndex] ?? 0) - scrollPadding, }); - timer = setTimeout(() => { + // スナップアニメーション完了のタイマー + if (snapTimer) { + clearTimeout(snapTimer); + } + + snapTimer = setTimeout(() => { isSnapping.current = false; - }, 1000); - }); + }, 500); // スクロールアニメーションが完了する十分な時間 + }; + + // scrollendイベントがサポートされている場合は使用(モダンブラウザ) + const handleScrollEnd = () => { + if (!isScrolling.current) return; - containerRef.current.addEventListener('scroll', handleScroll); - containerRef.current.addEventListener('scrollend', handleScrollend); + isScrolling.current = false; + + if (!isSnapping.current) { + performSnap(); + } + }; + + container.addEventListener('scroll', handleScroll, { passive: true }); + + // scrollendイベントはモダンブラウザでのみ対応 + if ('onscrollend' in window) { + container.addEventListener('scrollend', handleScrollEnd); + } return () => { - containerRef.current?.removeEventListener('scroll', handleScroll); - containerRef.current?.removeEventListener('scrollend', handleScrollend); - clearInterval(interval); - if (timer) { - clearTimeout(timer); + container.removeEventListener('scroll', handleScroll); + + if ('onscrollend' in window) { + container.removeEventListener('scrollend', handleScrollEnd); + } + + if (scrollEndTimer) { + clearTimeout(scrollEndTimer); + } + + if (snapTimer) { + clearTimeout(snapTimer); } }; - }, []); + }, [scrollPadding]); return containerRef; } diff --git a/workspaces/client/src/features/series/components/SeriesEposideItem.tsx b/workspaces/client/src/features/series/components/SeriesEposideItem.tsx index 0a0067d95..19598f736 100644 --- a/workspaces/client/src/features/series/components/SeriesEposideItem.tsx +++ b/workspaces/client/src/features/series/components/SeriesEposideItem.tsx @@ -28,8 +28,13 @@ export const SeriesEpisodeItem = ({ episode, selected }: Props) => { <>
- - + + 再生 {episode.premium ? ( プレミアム diff --git a/workspaces/client/src/globals.css b/workspaces/client/src/globals.css new file mode 100644 index 000000000..676448a2a --- /dev/null +++ b/workspaces/client/src/globals.css @@ -0,0 +1,23 @@ +@view-transition { + navigation: auto; +} +html, +:host { + font-family: 'Noto Sans JP', sans-serif !important; +} + +video { + max-height: 100%; + max-width: 100%; +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@unocss; diff --git a/workspaces/client/src/main.tsx b/workspaces/client/src/main.tsx index 601b7a6a5..de7575846 100644 --- a/workspaces/client/src/main.tsx +++ b/workspaces/client/src/main.tsx @@ -1,6 +1,8 @@ import '@wsh-2025/client/src/setups/polyfills'; import '@wsh-2025/client/src/setups/luxon'; -import '@wsh-2025/client/src/setups/unocss'; +// import '@wsh-2025/client/src/setups/unocss'; +import '@unocss/reset/tailwind.css'; +import './globals.css'; import { StrictMode } from 'react'; import { hydrateRoot } from 'react-dom/client'; diff --git a/workspaces/client/src/pages/episode/components/EpisodePage.tsx b/workspaces/client/src/pages/episode/components/EpisodePage.tsx index 075eacc48..524a8d7ab 100644 --- a/workspaces/client/src/pages/episode/components/EpisodePage.tsx +++ b/workspaces/client/src/pages/episode/components/EpisodePage.tsx @@ -8,7 +8,6 @@ import { createStore } from '@wsh-2025/client/src/app/createStore'; import { useAuthActions } from '@wsh-2025/client/src/features/auth/hooks/useAuthActions'; import { useAuthUser } from '@wsh-2025/client/src/features/auth/hooks/useAuthUser'; import { useEpisodeById } from '@wsh-2025/client/src/features/episode/hooks/useEpisodeById'; -import { AspectRatio } from '@wsh-2025/client/src/features/layout/components/AspectRatio'; import { Player } from '@wsh-2025/client/src/features/player/components/Player'; import { PlayerType } from '@wsh-2025/client/src/features/player/constants/player_type'; import { RecommendedSection } from '@wsh-2025/client/src/features/recommended/components/RecommendedSection'; @@ -19,10 +18,12 @@ import { usePlayerRef } from '@wsh-2025/client/src/pages/episode/hooks/usePlayer export const prefetch = async (store: ReturnType, { episodeId }: Params) => { invariant(episodeId); - const episode = await store.getState().features.episode.fetchEpisodeById({ episodeId }); - const modules = await store - .getState() - .features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: episodeId }); + + const [episode, modules] = await Promise.all([ + store.getState().features.episode.fetchEpisodeById({ episodeId }), + store.getState().features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: episodeId }), + ]); + return { episode, modules }; }; @@ -51,7 +52,7 @@ export const EpisodePage = () => {
{isSignInRequired ? (
- +

@@ -69,17 +70,18 @@ export const EpisodePage = () => { ) : ( +

- +
} >
diff --git a/workspaces/client/src/pages/episode/components/PlayerController.tsx b/workspaces/client/src/pages/episode/components/PlayerController.tsx index f090a17a9..3e0c1fd81 100644 --- a/workspaces/client/src/pages/episode/components/PlayerController.tsx +++ b/workspaces/client/src/pages/episode/components/PlayerController.tsx @@ -61,8 +61,11 @@ export const PlayerController = ({ episode }: Props) => { togglePlaying(); }} > - @@ -82,8 +85,11 @@ export const PlayerController = ({ episode }: Props) => { className="block rounded-[4px]" type="button" > - { toggleMuted(); }} diff --git a/workspaces/client/src/pages/episode/components/SeekThumbnail.tsx b/workspaces/client/src/pages/episode/components/SeekThumbnail.tsx index b706a379b..c5e56cbe0 100644 --- a/workspaces/client/src/pages/episode/components/SeekThumbnail.tsx +++ b/workspaces/client/src/pages/episode/components/SeekThumbnail.tsx @@ -31,8 +31,9 @@ export const SeekThumbnail = ({ episode }: Props) => { return (
res.text())); parser.end(); + const { FFmpeg } = await import('@ffmpeg/ffmpeg'); // FFmpeg の初期化 const ffmpeg = new FFmpeg(); await ffmpeg.load({ diff --git a/workspaces/client/src/pages/not_found/components/NotFoundPage.tsx b/workspaces/client/src/pages/not_found/components/NotFoundPage.tsx index 66c861769..be4ce90dd 100644 --- a/workspaces/client/src/pages/not_found/components/NotFoundPage.tsx +++ b/workspaces/client/src/pages/not_found/components/NotFoundPage.tsx @@ -21,7 +21,7 @@ export const NotFoundPage = () => {

ページが見つかりませんでした

あなたが見ようとしたページは、残念ながら見つけられませんでした。

- +
{module != null ? : null}
diff --git a/workspaces/client/src/pages/program/components/PlayerController.tsx b/workspaces/client/src/pages/program/components/PlayerController.tsx index 6a1c7fef0..010226996 100644 --- a/workspaces/client/src/pages/program/components/PlayerController.tsx +++ b/workspaces/client/src/pages/program/components/PlayerController.tsx @@ -25,8 +25,11 @@ export const PlayerController = () => { toggleMuted(); }} > - diff --git a/workspaces/client/src/pages/program/components/ProgramPage.tsx b/workspaces/client/src/pages/program/components/ProgramPage.tsx index d13dc9426..39f119c40 100644 --- a/workspaces/client/src/pages/program/components/ProgramPage.tsx +++ b/workspaces/client/src/pages/program/components/ProgramPage.tsx @@ -24,12 +24,13 @@ export const prefetch = async (store: ReturnType, { programI const since = now.startOf('day').toISO(); const until = now.endOf('day').toISO(); - const program = await store.getState().features.program.fetchProgramById({ programId }); - const channels = await store.getState().features.channel.fetchChannels(); - const timetable = await store.getState().features.timetable.fetchTimetable({ since, until }); - const modules = await store - .getState() - .features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: programId }); + const [program, channels, timetable, modules] = await Promise.all([ + store.getState().features.program.fetchProgramById({ programId }), + store.getState().features.channel.fetchChannels(), + store.getState().features.timetable.fetchTimetable({ since, until }), + store.getState().features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: programId }), + ]); + return { channels, modules, program, timetable }; }; @@ -101,7 +102,7 @@ export const ProgramPage = () => {
{isArchivedRef.current ? (
- +

この番組は放送が終了しました

@@ -127,7 +128,7 @@ export const ProgramPage = () => {
) : (
- +

diff --git a/workspaces/client/src/pages/series/components/SeriesPage.tsx b/workspaces/client/src/pages/series/components/SeriesPage.tsx index abf35aee5..396f34760 100644 --- a/workspaces/client/src/pages/series/components/SeriesPage.tsx +++ b/workspaces/client/src/pages/series/components/SeriesPage.tsx @@ -11,10 +11,12 @@ import { useSeriesById } from '@wsh-2025/client/src/features/series/hooks/useSer export const prefetch = async (store: ReturnType, { seriesId }: Params) => { invariant(seriesId); - const series = await store.getState().features.series.fetchSeriesById({ seriesId }); - const modules = await store - .getState() - .features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: seriesId }); + + const [series, modules] = await Promise.all([ + store.getState().features.series.fetchSeriesById({ seriesId }), + store.getState().features.recommended.fetchRecommendedModulesByReferenceId({ referenceId: seriesId }), + ]); + return { modules, series }; }; @@ -37,6 +39,7 @@ export const SeriesPage = () => { diff --git a/workspaces/client/src/pages/timetable/components/ChannelTitle.tsx b/workspaces/client/src/pages/timetable/components/ChannelTitle.tsx index c2538c886..2ede9530f 100644 --- a/workspaces/client/src/pages/timetable/components/ChannelTitle.tsx +++ b/workspaces/client/src/pages/timetable/components/ChannelTitle.tsx @@ -16,8 +16,14 @@ export const ChannelTitle = ({ channelId }: Props) => { return (

-
- {channel.name} +
+ {channel.name}
diff --git a/workspaces/client/src/pages/timetable/components/NewTimetableFeatureDialog.tsx b/workspaces/client/src/pages/timetable/components/NewTimetableFeatureDialog.tsx index ce0f9224a..fc4902f5d 100644 --- a/workspaces/client/src/pages/timetable/components/NewTimetableFeatureDialog.tsx +++ b/workspaces/client/src/pages/timetable/components/NewTimetableFeatureDialog.tsx @@ -13,7 +13,7 @@ export const NewTimetableFeatureDialog = ({ isOpen }: Props) => {
- + Arema

拡大・縮小機能を新しく追加

@@ -29,7 +29,7 @@ export const NewTimetableFeatureDialog = ({ isOpen }: Props) => { 引き続き皆様に快適にご利用いただけるよう、サービスの改善に努めてまいります。今後ともどうぞよろしくお願いいたします。

- +