diff --git a/.env.example b/.env.example index 08938382..ccd8b08c 100644 --- a/.env.example +++ b/.env.example @@ -24,6 +24,12 @@ PUBLIC_TIPPING_TIPJAR_ID="" PUBLIC_TIPPING_DEFAULT_AMOUNT="" PUBLIC_TIPPING_DEFAULT_CHECKED="false" +# Campaign limit +# Set a recurring day and month (DD-MM) to prevent projects from being in +# campaign past that date; the year is implicit and repeats every year +# Leave the value empty to disable the limit +PUBLIC_CAMPAIGN_MAX_END_DATE="" + # Facebook's share dialog # https://developers.facebook.com/docs/sharing/reference/share-dialog PUBLIC_FACEBOOK_APP_ID="" diff --git a/.github/workflows/crowdin-upload.yml b/.github/workflows/crowdin-upload.yml index e2e87ea7..49534405 100644 --- a/.github/workflows/crowdin-upload.yml +++ b/.github/workflows/crowdin-upload.yml @@ -25,7 +25,7 @@ jobs: download_translations: false push_translations: false create_pull_request: false - crowdin_branch_name: develop + crowdin_branch_name: ${{ github.ref_name }} env: CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }} CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }} @@ -33,20 +33,26 @@ jobs: - name: Resolve Crowdin branch and file IDs id: ids + env: + CROWDIN_BRANCH: ${{ github.ref_name }} run: | api="https://api.crowdin.com/api/v2/projects/${CROWDIN_PROJECT_ID}" auth="Authorization: Bearer ${CROWDIN_PERSONAL_TOKEN}" - branch_id=$(curl -fsS -H "$auth" "$api/branches?name=develop" \ + # Crowdin normalizes branch names: \ / : * ? " < > | become "." + branch_name=$(printf '%s' "$CROWDIN_BRANCH" | sed 's#[\\/:*?"<>|]#.#g') + + branch_id=$(curl -fsS -G -H "$auth" "$api/branches" \ + --data-urlencode "name=${branch_name}" \ | jq -r '.data[0].data.id') if [ -z "$branch_id" ] || [ "$branch_id" = "null" ]; then - echo "Branch 'develop' not found in Crowdin"; exit 1 + echo "Branch '${branch_name}' not found in Crowdin"; exit 1 fi - file_id=$(curl -fsS -H "$auth" "$api/files?branchId=${branch_id}&limit=500" \ + file_id=$(curl -fsS -H "$auth" "$api/files?branchId=${branch_id}&recursion=1&limit=500" \ | jq -r '.data[] | select(.data.name=="es.json") | .data.id' | head -n1) if [ -z "$file_id" ] || [ "$file_id" = "null" ]; then - echo "es.json not found in Crowdin branch 'develop'"; exit 1 + echo "es.json not found in Crowdin branch '${branch_name}'"; exit 1 fi echo "file_id=$file_id" >> "$GITHUB_OUTPUT" diff --git a/eslint.config.js b/eslint.config.js index c72a1629..9e2361e9 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -39,6 +39,7 @@ export default [ ".github/**", "env.d.ts", "storybook-static/**", + "graphify-out/**", ], }, { diff --git a/package.json b/package.json index 968dd7f0..1df47db4 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "@vitest/browser-playwright": "^4.1.10", "@vitest/coverage-v8": "^4.1.10", "cypress": "^15.18.1", - "eslint": "^10.0.1", + "eslint": "^9.39.5", "eslint-plugin-cypress": "^6.4.3", "eslint-plugin-import": "^2.32.0", "eslint-plugin-storybook": "^10.5.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d7b69995..c86a0fe3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 0.9.9(prettier-plugin-astro@0.14.1)(prettier@3.9.5)(typescript@5.9.3) '@astrojs/cloudflare': specifier: ^14.1.3 - version: 14.1.7(@types/node@26.1.1)(astro@7.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(jiti@2.7.0)(rollup@4.60.3)(yaml@2.8.4))(esbuild@0.28.1)(jiti@2.7.0)(wrangler@4.115.0(@cloudflare/workers-types@5.20260722.1))(yaml@2.8.4) + version: 14.1.7(@types/node@26.1.1)(astro@7.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(jiti@2.7.0)(rollup@4.60.3)(yaml@2.8.4))(esbuild@0.28.1)(jiti@2.7.0)(wrangler@4.118.0(@cloudflare/workers-types@5.20260722.1))(yaml@2.8.4) '@astrojs/node': specifier: ^11.0.2 version: 11.0.3(astro@7.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(jiti@2.7.0)(rollup@4.60.3)(yaml@2.8.4))(supports-color@8.1.1) @@ -119,7 +119,7 @@ importers: version: 5.20260722.1 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1)) + version: 10.0.1(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1)) '@hey-api/openapi-ts': specifier: ^0.69.2 version: 0.69.2(magicast@0.3.5)(typescript@5.9.3) @@ -149,10 +149,10 @@ importers: version: 26.1.1 '@typescript-eslint/eslint-plugin': specifier: ^8.64.0 - version: 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + version: 8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) '@typescript-eslint/parser': specifier: ^8.64.0 - version: 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + version: 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) '@vitest/browser-playwright': specifier: ^4.1.10 version: 4.1.10(playwright@1.61.1)(vite@8.2.0(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.8.4))(vitest@4.1.10) @@ -163,23 +163,23 @@ importers: specifier: ^15.18.1 version: 15.19.0 eslint: - specifier: ^10.0.1 - version: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + specifier: ^9.39.5 + version: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) eslint-plugin-cypress: specifier: ^6.4.3 - version: 6.4.3(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1)) + version: 6.4.3(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1)) eslint-plugin-import: specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1) + version: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1) eslint-plugin-storybook: specifier: ^10.5.2 - version: 10.5.3(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(storybook@10.5.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.11.2)(@types/react@19.2.14)(prettier@3.9.5)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(supports-color@8.1.1)(typescript@5.9.3) + version: 10.5.3(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(storybook@10.5.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.11.2)(@types/react@19.2.14)(prettier@3.9.5)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(supports-color@8.1.1)(typescript@5.9.3) eslint-plugin-svelte: specifier: ^3.22.0 - version: 3.22.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(svelte@5.56.7(@typescript-eslint/types@8.65.0)) + version: 3.22.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(svelte@5.56.7(@typescript-eslint/types@8.65.0)) eslint-plugin-unused-imports: specifier: ^4.4.1 - version: 4.4.1(@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1)) + version: 4.4.1(@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1)) flowbite: specifier: ^3.1.2 version: 3.1.2(rollup@4.60.3) @@ -221,7 +221,7 @@ importers: version: 4.1.1(svelte@5.56.7(@typescript-eslint/types@8.65.0)) typescript-eslint: specifier: ^8.64.0 - version: 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + version: 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) vitest: specifier: ^4.1.10 version: 4.1.10(@types/node@26.1.1)(@vitest/browser-playwright@4.1.10)(@vitest/coverage-v8@4.1.10)(vite@8.2.0(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.8.4)) @@ -230,7 +230,7 @@ importers: version: 9.1.0(debug@4.4.3(supports-color@8.1.1))(supports-color@8.1.1) wrangler: specifier: ^4.115.0 - version: 4.115.0(@cloudflare/workers-types@5.20260722.1) + version: 4.118.0(@cloudflare/workers-types@5.20260722.1) packages: @@ -547,39 +547,39 @@ packages: workerd: optional: true - '@cloudflare/vite-plugin@1.48.0': - resolution: {integrity: sha512-Qt+lhot9ws3K4qOZYRuvsU03QsdLjQ63dgVrQo47kTL+SJmHScaQYG40mnJAKYL84mVT/ai7eFQORUxM6vMrWQ==} + '@cloudflare/vite-plugin@1.50.0': + resolution: {integrity: sha512-zIhZim7Kr7OC22rlOkU81BLj0oRlUOqPRX+E6RU3hyRYg4xU1MbA3yiMIwFONr+jc/uV7Fxs20NlXrB89Fqjqg==} hasBin: true peerDependencies: vite: ^6.1.0 || ^7.0.0 || ^8.0.0 - wrangler: ^4.115.0 + wrangler: ^4.118.0 - '@cloudflare/workerd-darwin-64@1.20260722.1': - resolution: {integrity: sha512-vZOP8vIS3NwnuaO+gz0FZ7kIGeiO3bZmxV35Ph9zOXKSREhDFlH7wQ7mkCdhW3O4jnXsew+XT7b+DNEI2CcJGQ==} + '@cloudflare/workerd-darwin-64@1.20260730.1': + resolution: {integrity: sha512-+MBHmPaiTe2KajryW0T24rZvWFxb41hD3d8anNzQqHzft6vSEb18+sp0znSwxgij7ApPhSM1+vhkNg4f3YMguA==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260722.1': - resolution: {integrity: sha512-EmIQymihDq6WNdER4+LF8Qn80yqayBUpJ+tkOO7wmY8pmgfyXjIUFNXotl21AHovTeu2seR7HdVUgeN/BilCWw==} + '@cloudflare/workerd-darwin-arm64@1.20260730.1': + resolution: {integrity: sha512-SBHKntPkKvNPgaCrTe99xC1CAl8ygJDzlYfK0LbuJ1muKadIw35WnhO0wu894fKBtllsVQdNzDLee+cm0ppLSQ==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260722.1': - resolution: {integrity: sha512-jvZ3k9fxcnEn04s80CgIYxQfpOyAiz/8qC42DP8EBa9tR27qWyg9wmm31zIobVlrgBZn/+8NfdP73avRGcQOjQ==} + '@cloudflare/workerd-linux-64@1.20260730.1': + resolution: {integrity: sha512-ouyPOSMbiKPeSwUJUvxtMcxGAXs2J4aPE4T5ABIYX5ClcQx5j5bbHTmnqOQEY8sAuLTPjH7dY+iB6UI5ISlwwA==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260722.1': - resolution: {integrity: sha512-BOSB55SMNdy+DA5uj2WirgiNanpHGis5PVvXH1wSfvjRKr4JGgWK+EZzxz0RFUo6QjjQQC/NimEzNZ7va7jmKg==} + '@cloudflare/workerd-linux-arm64@1.20260730.1': + resolution: {integrity: sha512-YQ+Mi78U3TPdgBPtwq+Sm6rJU+Ihl2y0pjYtuuKkdmUbYzL7oLR6Xqq9wljhasnuCFICssDJaqhMep5WizYoEQ==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260722.1': - resolution: {integrity: sha512-sYM8YgUpKnRz2xjvdJLX1Ojzoi4MlA4gk8WTTExhGydjYB2UTs5NIbv0ZmpKgMoK9io3ixgmiW56ZnTbcWOdiA==} + '@cloudflare/workerd-windows-64@1.20260730.1': + resolution: {integrity: sha512-27fAN+vUECW1oYVc1KOcHYpkL8COM2Uxtxql7TL595kxbjoqS5yckw7NLz7bTf2pALFCZWjqXDjZGJ/xbG4ZKQ==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -974,17 +974,21 @@ packages: resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/config-array@0.23.5': - resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.6.0': - resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@1.2.1': - resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.6': + resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@10.0.1': resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} @@ -995,13 +999,17 @@ packages: eslint: optional: true - '@eslint/object-schema@3.0.5': - resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/js@9.39.5': + resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.7.2': - resolution: {integrity: sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@floating-ui/core@1.7.5': resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} @@ -1420,14 +1428,8 @@ packages: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - - '@napi-rs/wasm-runtime@1.2.1': - resolution: {integrity: sha512-KjZdi8Q1wh89gsVmghvbrMgWl6ZWmRmHV6wjB7/g4Zf0dyO+hH3neZUtuDNPO00qq5YE5RITVWvrIZKRaAmzGQ==} + '@napi-rs/wasm-runtime@1.2.2': + resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} peerDependencies: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 @@ -1948,32 +1950,32 @@ packages: '@rtsao/scc@1.1.0': resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - '@shikijs/core@4.3.1': - resolution: {integrity: sha512-ANMDxuaPsNMdDC1m4vfvhlDmJweMwkE5XitTwrq2rWHx5jM+dlm4MmHt2PP6t0uejfR77SuhrhJ0zEijIF/uhA==} + '@shikijs/core@4.4.1': + resolution: {integrity: sha512-VeR2CY6Nn9/WbisoYLOQZ7HZOnwTrpBuOw4wExjqLnBCi62BNWynBUO6K2uPIASPFJwAv7cX1fUu+LrPlSstcw==} engines: {node: '>=20'} - '@shikijs/engine-javascript@4.3.1': - resolution: {integrity: sha512-JBItcnPuYq7jVJdZo/vMj94r+szT7XEjHFX+mvFDGSEIbVAXAGyHAHzhbWzpGOwYidCZrErJLLgn2PVeiokHnQ==} + '@shikijs/engine-javascript@4.4.1': + resolution: {integrity: sha512-6U4lJBh8LTvIkEVqRHv/rr3ruwtO6IweFQt1ME1ntHJMGHS+6N86vfYGO1o8c/DtOCTia2lfhdQBtBrps1sDfQ==} engines: {node: '>=20'} - '@shikijs/engine-oniguruma@4.3.1': - resolution: {integrity: sha512-OXyNMzg0pews+msMj4cHeqT4xiYKKvbnn6VbdAXxfoFl3SSx4fJTc8FadECuc5/H9p3BzhNAoAUXKwAu9rWYhg==} + '@shikijs/engine-oniguruma@4.4.1': + resolution: {integrity: sha512-p23RugMKss0r5DAtRJW1yAXUDl60JvhQYV20yuxei//26JyDSJefV3umyWzzwep2weblMnJGDYahuti6XkcMgA==} engines: {node: '>=20'} - '@shikijs/langs@4.3.1': - resolution: {integrity: sha512-m0l9nsDqgBHvbZbk7A0/kXz/impK3uB/c6rAn6Gpg/uPtdZRQ+alsN/17MU5thb68XTj/4DxkZAotrM0GGSpDQ==} + '@shikijs/langs@4.4.1': + resolution: {integrity: sha512-xb2kCMloBCIraIy2fS5MW0t/BxVY3q2nDyQKBoeSeq6KNrQbShHetCFlw2n35fGIJ6t3+hXDLQogP5ir9O9bvA==} engines: {node: '>=20'} - '@shikijs/primitive@4.3.1': - resolution: {integrity: sha512-CXQRQOYy1leqQ8ceTeJdmXv/bsUY++6QyLpXJ94LZAAYj5X2SKRdc5ipguv4NPyGVKItB2PPwUpRNe0Sjh5S1A==} + '@shikijs/primitive@4.4.1': + resolution: {integrity: sha512-ko2OfDoG89YuQ7xL5LtcQiWKb7NIv1Ephb7g48TVU198OzAMLC8lXVEwaJGHK4sUMYrfAGJDqYmNLOLiW/Kz8w==} engines: {node: '>=20'} - '@shikijs/themes@4.3.1': - resolution: {integrity: sha512-dgpoJ4WqNi2yTmizQHBJ5zcX6j2lE6icN/0yt4l1kkf16jrY/pwPLoTb1ETsWMz0OBLf9ZNvwmxft+cH+N9qSA==} + '@shikijs/themes@4.4.1': + resolution: {integrity: sha512-wudOaoFro+/Zl9gQv2W1Ur5XlVduqvTuYLI483Xi0wgc1A+cy1hfB2r6ac6ufBgF+ID7KJEW7L41MHrzQ4wH+w==} engines: {node: '>=20'} - '@shikijs/types@4.3.1': - resolution: {integrity: sha512-CHFxE0jztBIZRHH6gxXE7DXUCFXjReEGxZ/j0rfSLGKZuwp2xBYycEP14875DSa9KLL/6700oxIq6oO6ef9K2g==} + '@shikijs/types@4.4.1': + resolution: {integrity: sha512-GOwCLQDHM5EjGUWNPrhzJbr6JP8V/Dx/CDVkWvbZ1Avw5JFnNUckrgbLmE07qtg4WlW7Q7QFndhjIkeU9XMPvw==} engines: {node: '>=20'} '@shikijs/vscode-textmate@10.0.2': @@ -2435,9 +2437,6 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} - '@types/esrecurse@4.3.1': - resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} - '@types/estree-jsx@1.0.5': resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} @@ -2447,6 +2446,9 @@ packages: '@types/hast@3.0.4': resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==} + '@types/hast@3.0.5': + resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} + '@types/iso-3166-2@1.0.4': resolution: {integrity: sha512-tXaeT4FDobC8rAy6LoFvbGA4vhOQQNIdSRC5DAoYfT3D9ohnKHkDFxHzSln6WqTKVeKLrnMiMQubM8m3fqNp/w==} @@ -2898,6 +2900,10 @@ packages: resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} engines: {node: '>= 0.4'} + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + caseless@0.12.0: resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} @@ -3415,10 +3421,6 @@ packages: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint-scope@9.1.2: - resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3431,9 +3433,9 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.7.0: - resolution: {integrity: sha512-GVTD7s1vdIl6UYvAfriOPeY1Df8LIZjfofLvHwde+erDHGGuHyuM6xoxRxmHiebhYuD2p1vN4wWh0XzPARSGDQ==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} + eslint@9.39.5: + resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: jiti: '*' @@ -3448,10 +3450,6 @@ packages: resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - espree@11.2.0: - resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -3724,6 +3722,10 @@ packages: resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} engines: {node: '>=10'} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + globals@16.5.0: resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} engines: {node: '>=18'} @@ -3846,6 +3848,10 @@ packages: imagesloaded@5.0.0: resolution: {integrity: sha512-/0JGSubc1MTCoDKVmonLHgbifBWHdyLkun+R/151E1c5n79hiSxcd7cB7mPXFgojYu8xnRZv7GYxzKoxW8BetQ==} + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -4069,10 +4075,6 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.1: - resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} - hasBin: true - js-yaml@4.3.0: resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} hasBin: true @@ -4299,6 +4301,9 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.once@4.1.1: resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} @@ -4412,10 +4417,9 @@ packages: resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} hasBin: true - miniflare@4.20260722.1: - resolution: {integrity: sha512-FJIg4omaCb2wwSyOeRosEdmVRi3JzGAOOH3pa3twmmtvWECl6BVZMIDwJbjByLKRyU+mrfk0M/n3oSiojFZvSA==} + miniflare@5.20260730.0-alpha: + resolution: {integrity: sha512-8/dspSXDshP6nSkCpjKO7BYc2qZoYSXm7iM+QxY7qJyJpAB3onnQSaiu0cvKJlfuMGwULl55hG69FJCcCMXU1Q==} engines: {node: '>=22.0.0'} - hasBin: true minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} @@ -4618,6 +4622,10 @@ packages: package-manager-detector@1.6.0: resolution: {integrity: sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA==} + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} @@ -4732,8 +4740,8 @@ packages: resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.23: - resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} + postcss@8.5.25: + resolution: {integrity: sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -4967,6 +4975,10 @@ packages: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -5111,8 +5123,8 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - shiki@4.3.1: - resolution: {integrity: sha512-oR+qDVi2OjX1tmDpyv+3KviX01KzO6Af+0NNnKnsp9491UEGz2YpxTuJboS/6VhYpTdqzmuJBuiTlrAWWJAssw==} + shiki@4.4.1: + resolution: {integrity: sha512-rFP+iYKzjLEIqiMiKANhARqiAbk4deDhWnBtnUO/K0D0dPxMGDH4N0FVfBY/VeI+lPrV4wNGCHQZp7EOr7NNBw==} engines: {node: '>=20'} side-channel-list@1.0.1: @@ -5261,6 +5273,10 @@ packages: resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} engines: {node: '>=8'} + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + strtok3@10.3.5: resolution: {integrity: sha512-ki4hZQfh5rX0QDLLkOCj+h+CVNkqmp/CMf8v8kZpkNVK6jGQooMytqzLZYUVYIZcFZ6yDB70EfD8POcFXiF5oA==} engines: {node: '>=18'} @@ -5918,17 +5934,17 @@ packages: wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} - workerd@1.20260722.1: - resolution: {integrity: sha512-NycKuc1x2onvsRfGGpM093vRlLFU2zHDAM0+APpccfg4+gZxDGCH27RmdDvkeBuoZyYqgLo3oAfF6re4mvC3vQ==} + workerd@1.20260730.1: + resolution: {integrity: sha512-zmfNIjwYSWFY5chGBOjWtH3xAE7p97FTC6vR4Ep98290ho6AeAR/NVcBD274YCLEUYzqm8yxdtZlxMybU8a3jA==} engines: {node: '>=16'} hasBin: true - wrangler@4.115.0: - resolution: {integrity: sha512-+upG2VW66M1sjb43yzgUZ6Ss8iYpJ6+7F3U4GF8TY5EYd+08sYdS54d24AEwCnhuef3J9KlSPusqiqR9WYy1UA==} + wrangler@4.118.0: + resolution: {integrity: sha512-9pkBw/b8zWqGx2S+oLhgHMR1M/4VOE8SynUFABnGWiSFGlcOQ4xiI/B71Xf66RYP2xzngU37IQFPtUruij3lYw==} engines: {node: '>=22.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^5.20260722.1 + '@cloudflare/workers-types': ^5.20260730.1 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -6057,15 +6073,15 @@ snapshots: - prettier - prettier-plugin-astro - '@astrojs/cloudflare@14.1.7(@types/node@26.1.1)(astro@7.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(jiti@2.7.0)(rollup@4.60.3)(yaml@2.8.4))(esbuild@0.28.1)(jiti@2.7.0)(wrangler@4.115.0(@cloudflare/workers-types@5.20260722.1))(yaml@2.8.4)': + '@astrojs/cloudflare@14.1.7(@types/node@26.1.1)(astro@7.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(jiti@2.7.0)(rollup@4.60.3)(yaml@2.8.4))(esbuild@0.28.1)(jiti@2.7.0)(wrangler@4.118.0(@cloudflare/workers-types@5.20260722.1))(yaml@2.8.4)': dependencies: '@astrojs/internal-helpers': 0.10.2 '@astrojs/underscore-redirects': 1.0.3 - '@cloudflare/vite-plugin': 1.48.0(vite@8.2.0(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.8.4))(wrangler@4.115.0(@cloudflare/workers-types@5.20260722.1)) + '@cloudflare/vite-plugin': 1.50.0(vite@8.2.0(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.8.4))(wrangler@4.118.0(@cloudflare/workers-types@5.20260722.1)) astro: 7.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)(@types/node@26.1.1)(jiti@2.7.0)(rollup@4.60.3)(yaml@2.8.4) piccolore: 0.1.3 vite: 8.2.0(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.8.4) - wrangler: 4.115.0(@cloudflare/workers-types@5.20260722.1) + wrangler: 4.118.0(@cloudflare/workers-types@5.20260722.1) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -6102,7 +6118,7 @@ snapshots: '@astrojs/compiler-binding-wasm32-wasi@0.3.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': dependencies: - '@napi-rs/wasm-runtime': 1.2.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -6145,7 +6161,7 @@ snapshots: js-yaml: 4.3.0 picomatch: 4.0.4 retext-smartypants: 6.2.0 - shiki: 4.3.1 + shiki: 4.4.1 smol-toml: 1.6.1 unified: 11.0.5 @@ -6455,7 +6471,7 @@ snapshots: dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) optional: true '@bruits/satteri-win32-arm64-msvc@0.9.5': @@ -6482,38 +6498,38 @@ snapshots: '@cloudflare/kv-asset-handler@0.5.0': {} - '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260722.1)': + '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260730.1)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260722.1 + workerd: 1.20260730.1 - '@cloudflare/vite-plugin@1.48.0(vite@8.2.0(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.8.4))(wrangler@4.115.0(@cloudflare/workers-types@5.20260722.1))': + '@cloudflare/vite-plugin@1.50.0(vite@8.2.0(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.8.4))(wrangler@4.118.0(@cloudflare/workers-types@5.20260722.1))': dependencies: - '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260722.1) - miniflare: 4.20260722.1 + '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260730.1) + miniflare: 5.20260730.0-alpha unenv: 2.0.0-rc.24 vite: 8.2.0(@types/node@26.1.1)(esbuild@0.28.1)(jiti@2.7.0)(yaml@2.8.4) - workerd: 1.20260722.1 - wrangler: 4.115.0(@cloudflare/workers-types@5.20260722.1) + workerd: 1.20260730.1 + wrangler: 4.118.0(@cloudflare/workers-types@5.20260722.1) ws: 8.21.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@cloudflare/workerd-darwin-64@1.20260722.1': + '@cloudflare/workerd-darwin-64@1.20260730.1': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260722.1': + '@cloudflare/workerd-darwin-arm64@1.20260730.1': optional: true - '@cloudflare/workerd-linux-64@1.20260722.1': + '@cloudflare/workerd-linux-64@1.20260730.1': optional: true - '@cloudflare/workerd-linux-arm64@1.20260722.1': + '@cloudflare/workerd-linux-arm64@1.20260730.1': optional: true - '@cloudflare/workerd-windows-64@1.20260722.1': + '@cloudflare/workerd-windows-64@1.20260730.1': optional: true '@cloudflare/workers-types@5.20260722.1': {} @@ -6786,38 +6802,54 @@ snapshots: '@esbuild/win32-x64@0.28.1': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))': + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))': dependencies: - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} - '@eslint/config-array@0.23.5(supports-color@8.1.1)': + '@eslint/config-array@0.21.2(supports-color@8.1.1)': dependencies: - '@eslint/object-schema': 3.0.5 + '@eslint/object-schema': 2.1.7 debug: 4.4.3(supports-color@8.1.1) - minimatch: 10.2.5 + minimatch: 3.1.5 transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.6.0': + '@eslint/config-helpers@0.4.2': dependencies: - '@eslint/core': 1.2.1 + '@eslint/core': 0.17.0 - '@eslint/core@1.2.1': + '@eslint/core@0.17.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))': - optionalDependencies: - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) - - '@eslint/object-schema@3.0.5': {} - - '@eslint/plugin-kit@0.7.2': + '@eslint/eslintrc@3.3.6(supports-color@8.1.1)': dependencies: - '@eslint/core': 1.2.1 + ajv: 6.15.0 + debug: 4.4.3(supports-color@8.1.1) + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.3.0 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@10.0.1(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))': + optionalDependencies: + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) + + '@eslint/js@9.39.5': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 levn: 0.4.1 '@floating-ui/core@1.7.5': @@ -6855,7 +6887,7 @@ snapshots: dependencies: '@jsdevtools/ono': 7.1.3 '@types/json-schema': 7.0.15 - js-yaml: 4.1.1 + js-yaml: 4.3.0 lodash: 4.18.1 '@hey-api/openapi-ts@0.69.2(magicast@0.3.5)(typescript@5.9.3)': @@ -7138,21 +7170,21 @@ snapshots: '@tybys/wasm-util': 0.10.2 optional: true - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.1 '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.2.1(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.2)': dependencies: '@emnapi/core': 1.11.1 '@emnapi/runtime': 1.11.2 '@tybys/wasm-util': 0.10.3 optional: true - '@napi-rs/wasm-runtime@1.2.1(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)': + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3)': dependencies: '@emnapi/core': 2.0.0-alpha.3 '@emnapi/runtime': 2.0.0-alpha.3 @@ -7350,7 +7382,7 @@ snapshots: dependencies: '@emnapi/core': 2.0.0-alpha.3 '@emnapi/runtime': 2.0.0-alpha.3 - '@napi-rs/wasm-runtime': 1.2.1(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@2.0.0-alpha.3)(@emnapi/runtime@2.0.0-alpha.3) optional: true '@rolldown/binding-win32-arm64-msvc@1.2.1': @@ -7456,43 +7488,43 @@ snapshots: '@rtsao/scc@1.1.0': {} - '@shikijs/core@4.3.1': + '@shikijs/core@4.4.1': dependencies: - '@shikijs/primitive': 4.3.1 - '@shikijs/types': 4.3.1 + '@shikijs/primitive': 4.4.1 + '@shikijs/types': 4.4.1 '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 hast-util-to-html: 9.0.5 - '@shikijs/engine-javascript@4.3.1': + '@shikijs/engine-javascript@4.4.1': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.1 '@shikijs/vscode-textmate': 10.0.2 oniguruma-to-es: 4.3.6 - '@shikijs/engine-oniguruma@4.3.1': + '@shikijs/engine-oniguruma@4.4.1': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.1 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs@4.3.1': + '@shikijs/langs@4.4.1': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.1 - '@shikijs/primitive@4.3.1': + '@shikijs/primitive@4.4.1': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.1 '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 - '@shikijs/themes@4.3.1': + '@shikijs/themes@4.4.1': dependencies: - '@shikijs/types': 4.3.1 + '@shikijs/types': 4.4.1 - '@shikijs/types@4.3.1': + '@shikijs/types@4.4.1': dependencies: '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 '@shikijs/vscode-textmate@10.0.2': {} @@ -7967,8 +7999,6 @@ snapshots: '@types/deep-eql@4.0.2': {} - '@types/esrecurse@4.3.1': {} - '@types/estree-jsx@1.0.5': dependencies: '@types/estree': 1.0.8 @@ -7979,6 +8009,10 @@ snapshots: dependencies: '@types/unist': 3.0.3 + '@types/hast@3.0.5': + dependencies: + '@types/unist': 3.0.3 + '@types/iso-3166-2@1.0.4': {} '@types/json-schema@7.0.15': {} @@ -8017,15 +8051,15 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/type-utils': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/type-utils': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.65.0 - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -8033,14 +8067,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3)': + '@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3)': dependencies: '@typescript-eslint/scope-manager': 8.65.0 '@typescript-eslint/types': 8.65.0 '@typescript-eslint/typescript-estree': 8.65.0(supports-color@8.1.1)(typescript@5.9.3) '@typescript-eslint/visitor-keys': 8.65.0 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -8063,13 +8097,13 @@ snapshots: dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.65.0 '@typescript-eslint/typescript-estree': 8.65.0(supports-color@8.1.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -8092,13 +8126,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3)': + '@typescript-eslint/utils@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1)) '@typescript-eslint/scope-manager': 8.65.0 '@typescript-eslint/types': 8.65.0 '@typescript-eslint/typescript-estree': 8.65.0(supports-color@8.1.1)(typescript@5.9.3) - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -8462,7 +8496,7 @@ snapshots: piccolore: 0.1.3 picomatch: 4.0.4 semver: 7.7.4 - shiki: 4.3.1 + shiki: 4.4.1 smol-toml: 1.6.1 svgo: 4.0.1 tinyclip: 0.1.15 @@ -8638,6 +8672,8 @@ snapshots: call-bind-apply-helpers: 1.0.2 get-intrinsic: 1.3.0 + callsites@3.1.0: {} + caseless@0.12.0: {} ccount@2.0.1: {} @@ -9163,24 +9199,24 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10(supports-color@8.1.1))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10(supports-color@8.1.1))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1): dependencies: debug: 3.2.7(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) eslint-import-resolver-node: 0.3.10(supports-color@8.1.1) transitivePeerDependencies: - supports-color - eslint-plugin-cypress@6.4.3(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1)): + eslint-plugin-cypress@6.4.3(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1)): dependencies: - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) globals: 17.7.0 optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9189,9 +9225,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7(supports-color@8.1.1) doctrine: 2.1.0 - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) eslint-import-resolver-node: 0.3.10(supports-color@8.1.1) - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10(supports-color@8.1.1))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.10(supports-color@8.1.1))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1) hasown: 2.0.3 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -9203,27 +9239,27 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-storybook@10.5.3(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(storybook@10.5.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.11.2)(@types/react@19.2.14)(prettier@3.9.5)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(supports-color@8.1.1)(typescript@5.9.3): + eslint-plugin-storybook@10.5.3(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(storybook@10.5.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.11.2)(@types/react@19.2.14)(prettier@3.9.5)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(supports-color@8.1.1)(typescript@5.9.3): dependencies: '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) storybook: 10.5.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.11.2)(@types/react@19.2.14)(prettier@3.9.5)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-svelte@3.22.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(svelte@5.56.7(@typescript-eslint/types@8.65.0)): + eslint-plugin-svelte@3.22.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(svelte@5.56.7(@typescript-eslint/types@8.65.0)): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1)) '@jridgewell/sourcemap-codec': 1.5.5 - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) esutils: 2.0.3 globals: 16.5.0 known-css-properties: 0.37.0 @@ -9237,49 +9273,45 @@ snapshots: transitivePeerDependencies: - ts-node - eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1)): + eslint-plugin-unused-imports@4.4.1(@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1)): dependencies: - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@9.1.2: - dependencies: - '@types/esrecurse': 4.3.1 - '@types/estree': 1.0.8 - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-visitor-keys@3.4.3: {} eslint-visitor-keys@4.2.1: {} eslint-visitor-keys@5.0.1: {} - eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1): + eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1)) + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1)) '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.23.5(supports-color@8.1.1) - '@eslint/config-helpers': 0.6.0 - '@eslint/core': 1.2.1 - '@eslint/plugin-kit': 0.7.2 + '@eslint/config-array': 0.21.2(supports-color@8.1.1) + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.6(supports-color@8.1.1) + '@eslint/js': 9.39.5 + '@eslint/plugin-kit': 0.4.1 '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.8 ajv: 6.15.0 + chalk: 4.1.2 cross-spawn: 7.0.6 debug: 4.4.3(supports-color@8.1.1) escape-string-regexp: 4.0.0 - eslint-scope: 9.1.2 - eslint-visitor-keys: 5.0.1 - espree: 11.2.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 esquery: 1.7.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -9290,7 +9322,8 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 json-stable-stringify-without-jsonify: 1.0.1 - minimatch: 10.2.5 + lodash.merge: 4.6.2 + minimatch: 3.1.5 natural-compare: 1.4.0 optionator: 0.9.4 optionalDependencies: @@ -9306,12 +9339,6 @@ snapshots: acorn-jsx: 5.3.2(acorn@8.16.0) eslint-visitor-keys: 4.2.1 - espree@11.2.0: - dependencies: - acorn: 8.16.0 - acorn-jsx: 5.3.2(acorn@8.16.0) - eslint-visitor-keys: 5.0.1 - esprima@4.0.1: {} esquery@1.7.0: @@ -9411,10 +9438,6 @@ snapshots: optionalDependencies: picomatch: 4.0.4 - fdir@6.5.0(picomatch@4.0.5): - optionalDependencies: - picomatch: 4.0.5 - file-entry-cache@8.0.0: dependencies: flat-cache: 4.0.1 @@ -9620,6 +9643,8 @@ snapshots: dependencies: ini: 2.0.0 + globals@14.0.0: {} + globals@16.5.0: {} globals@17.7.0: {} @@ -9774,6 +9799,11 @@ snapshots: dependencies: ev-emitter: 2.1.2 + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + imurmurhash@0.1.4: {} indent-string@4.0.0: {} @@ -9986,10 +10016,6 @@ snapshots: js-tokens@4.0.0: {} - js-yaml@4.1.1: - dependencies: - argparse: 2.0.1 - js-yaml@4.3.0: dependencies: argparse: 2.0.1 @@ -10161,6 +10187,8 @@ snapshots: dependencies: p-locate: 5.0.0 + lodash.merge@4.6.2: {} + lodash.once@4.1.1: {} lodash@4.18.1: {} @@ -10270,12 +10298,12 @@ snapshots: mini-svg-data-uri@1.4.4: {} - miniflare@4.20260722.1: + miniflare@5.20260730.0-alpha: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.35.2 undici: 7.28.0 - workerd: 1.20260722.1 + workerd: 1.20260730.1 ws: 8.21.0 youch: 4.1.0-beta.10 transitivePeerDependencies: @@ -10538,6 +10566,10 @@ snapshots: package-manager-detector@1.6.0: {} + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + parse5@7.3.0: dependencies: entities: 6.0.1 @@ -10620,7 +10652,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.23: + postcss@8.5.25: dependencies: nanoid: 3.3.16 picocolors: 1.1.1 @@ -10833,6 +10865,8 @@ snapshots: require-from-string@2.0.2: {} + resolve-from@4.0.0: {} + resolve-pkg-maps@1.0.0: {} resolve@1.22.12: @@ -11104,16 +11138,16 @@ snapshots: shebang-regex@3.0.0: {} - shiki@4.3.1: + shiki@4.4.1: dependencies: - '@shikijs/core': 4.3.1 - '@shikijs/engine-javascript': 4.3.1 - '@shikijs/engine-oniguruma': 4.3.1 - '@shikijs/langs': 4.3.1 - '@shikijs/themes': 4.3.1 - '@shikijs/types': 4.3.1 + '@shikijs/core': 4.4.1 + '@shikijs/engine-javascript': 4.4.1 + '@shikijs/engine-oniguruma': 4.4.1 + '@shikijs/langs': 4.4.1 + '@shikijs/themes': 4.4.1 + '@shikijs/types': 4.4.1 '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.4 + '@types/hast': 3.0.5 side-channel-list@1.0.1: dependencies: @@ -11309,6 +11343,8 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-json-comments@3.1.1: {} + strtok3@10.3.5: dependencies: '@tokenizer/token': 0.3.0 @@ -11451,8 +11487,8 @@ snapshots: tinyglobby@0.2.17: dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinyrainbow@2.0.0: {} @@ -11562,15 +11598,15 @@ snapshots: typescript-auto-import-cache@0.3.6: dependencies: - semver: 7.8.5 + semver: 7.7.4 - typescript-eslint@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3): + typescript-eslint@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) - '@typescript-eslint/parser': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) '@typescript-eslint/typescript-estree': 8.65.0(supports-color@8.1.1)(typescript@5.9.3) - '@typescript-eslint/utils': 8.65.0(eslint@10.7.0(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) - eslint: 10.7.0(jiti@2.7.0)(supports-color@8.1.1) + '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0)(supports-color@8.1.1))(supports-color@8.1.1)(typescript@5.9.3) + eslint: 9.39.5(jiti@2.7.0)(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -11707,7 +11743,7 @@ snapshots: dependencies: lightningcss: 1.33.0 picomatch: 4.0.5 - postcss: 8.5.23 + postcss: 8.5.25 rolldown: 1.2.1 tinyglobby: 0.2.17 optionalDependencies: @@ -11928,24 +11964,24 @@ snapshots: wordwrap@1.0.0: {} - workerd@1.20260722.1: + workerd@1.20260730.1: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260722.1 - '@cloudflare/workerd-darwin-arm64': 1.20260722.1 - '@cloudflare/workerd-linux-64': 1.20260722.1 - '@cloudflare/workerd-linux-arm64': 1.20260722.1 - '@cloudflare/workerd-windows-64': 1.20260722.1 + '@cloudflare/workerd-darwin-64': 1.20260730.1 + '@cloudflare/workerd-darwin-arm64': 1.20260730.1 + '@cloudflare/workerd-linux-64': 1.20260730.1 + '@cloudflare/workerd-linux-arm64': 1.20260730.1 + '@cloudflare/workerd-windows-64': 1.20260730.1 - wrangler@4.115.0(@cloudflare/workers-types@5.20260722.1): + wrangler@4.118.0(@cloudflare/workers-types@5.20260722.1): dependencies: '@cloudflare/kv-asset-handler': 0.5.0 - '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260722.1) + '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260730.1) blake3-wasm: 2.1.5 esbuild: 0.28.1 - miniflare: 4.20260722.1 + miniflare: 5.20260730.0-alpha path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260722.1 + workerd: 1.20260730.1 optionalDependencies: '@cloudflare/workers-types': 5.20260722.1 fsevents: 2.3.3 diff --git a/src/actions/payment.ts b/src/actions/payment.ts index a88f3717..d24a76fb 100644 --- a/src/actions/payment.ts +++ b/src/actions/payment.ts @@ -44,22 +44,24 @@ export const payment = defineAction({ } const charges: GatewayCharge[] = Object.values(cart.items); + const payload = { + origin: session.user.accounting!, + gateway: client.buildUrl({ + url: apiGatewaysIdGetUrl, + path: { id: paymentMethod }, + }), + returnUrl: `${context.url.origin}/checkout/verify`, + charges, + }; - const response = await apiGatewayCheckoutsPost({ + const { data, error } = await apiGatewayCheckoutsPost({ headers: session.token.asHttpHeaders, - body: { - origin: session.user.accounting!, - gateway: client.buildUrl({ - url: apiGatewaysIdGetUrl, - path: { id: paymentMethod }, - }), - returnUrl: `${context.url.origin}/checkout/verify`, - charges, - }, + body: payload, }); - if (response.error) { - console.log(response); + if (error) { + console.error(error); + console.log(payload); throw new ActionError({ code: "BAD_REQUEST", @@ -67,7 +69,7 @@ export const payment = defineAction({ }); } - return { success: true, checkout: response.data }; + return { success: true, checkout: data }; } catch (err) { console.error(err); diff --git a/src/components/admin/AdminNav.svelte b/src/components/admin/AdminNav.svelte new file mode 100644 index 00000000..f7dc93ca --- /dev/null +++ b/src/components/admin/AdminNav.svelte @@ -0,0 +1,53 @@ + + + + + diff --git a/src/components/admin/AdminSidebar.svelte b/src/components/admin/AdminSidebar.svelte new file mode 100644 index 00000000..027a2c4a --- /dev/null +++ b/src/components/admin/AdminSidebar.svelte @@ -0,0 +1,131 @@ + + + + + + +{#if isMobileOpen} + +{/if} + + +{#if isMobileOpen} + +{/if} + + + diff --git a/src/components/admin/Contributions.svelte b/src/components/admin/Contributions.svelte index 457f47be..9e6aa730 100644 --- a/src/components/admin/Contributions.svelte +++ b/src/components/admin/Contributions.svelte @@ -12,6 +12,7 @@ import { apiAccountingsIdGet, apiGatewayChargesGetCollection, + apiGatewayChargestotalsGetCollection, apiGatewayCheckoutsIdGet, apiGatewaysGetCollection, apiProjectsIdOrSlugGet, @@ -19,6 +20,7 @@ apiUsersIdOrHandleGet, type Accounting, type ApiGatewayChargesGetCollectionData, + type ApiGatewayChargestotalsGetCollectionData, type GatewayCharge, type GatewayCheckout, type Project, @@ -72,6 +74,7 @@ let isFirstLoad = $state(true); let selectedSort = $state(initialSort?.key ?? "date-desc"); let totalTips = $state("—"); + let selectedProjectsCount = $state("—"); async function loadTotalTips() { if (!isEnabled || !$session) return; @@ -90,6 +93,36 @@ } } + // Distinct count of Projects targeted by the charges matching the current filters. + // Served by the /v4/gateway_charges/totals aggregate (same filters as the collection). + let projectsCountRequestId = 0; + + async function loadSelectedProjectsCount( + chargeFilters: ApiGatewayChargesGetCollectionData["query"], + ) { + const requestId = ++projectsCountRequestId; + selectedProjectsCount = "—"; + + const headers = { + Accept: "application/ld+json", + ...($session?.token.asHttpHeaders ?? {}), + }; + + const { data, error } = await apiGatewayChargestotalsGetCollection({ + query: chargeFilters as ApiGatewayChargestotalsGetCollectionData["query"], + headers, + }); + + if (requestId !== projectsCountRequestId) return; + + if (error || data?.projects === undefined) { + console.error("Failed to load selected projects count:", error); + return; + } + + selectedProjectsCount = data.projects; + } + function buildChargesQuery( filters: ApiGatewayChargesGetCollectionData["query"], page: number, @@ -363,6 +396,23 @@ reloadCharges(); }); + // Plain (non-reactive) bookkeeping: avoids re-triggering the effect below on write. + let prevProjectsCountKey: string | undefined; + + $effect(() => { + const currentFilters = Object.fromEntries( + Object.entries(filters ?? {}).filter( + ([, value]) => value !== undefined && value !== "", + ), + ) as ApiGatewayChargesGetCollectionData["query"]; + const key = JSON.stringify(currentFilters); + + if (key === prevProjectsCountKey) return; + + prevProjectsCountKey = key; + loadSelectedProjectsCount(currentFilters); + }); + $effect(() => { const sort = sortOptions.find((option) => option.key === selectedSort); @@ -380,10 +430,10 @@ }); let chargeSlides = $derived([ - { title: $t("pages.admin.charges.totalizers.selected"), amount: $totalItems }, - { title: $t("pages.admin.charges.totalizers.totalCharges"), amount: "—" }, - { title: $t("pages.admin.charges.totalizers.totalTips"), amount: totalTips }, - { title: $t("pages.admin.charges.totalizers.totalFees"), amount: "—" }, + { title: $t("domain.charges.totalizers.selected"), amount: selectedProjectsCount }, + { title: $t("domain.charges.totalizers.totalCharges"), amount: "—" }, + { title: $t("domain.charges.totalizers.totalTips"), amount: totalTips }, + { title: $t("domain.charges.totalizers.totalFees"), amount: "—" }, ]); onMount(async () => { @@ -391,7 +441,7 @@ paymentMethodOptions = [ ["all", $t("pages.admin.charges.filters.paymentMethod.options.all")], - ...(paymentGateways ?? []).map((g): [string, string] => [g.id!, g.name!]), + ...(paymentGateways ?? []).map((g): [string, string] => [g.id!, g.name ?? ""]), ]; chargeStatusOptions = Object.entries( @@ -418,6 +468,7 @@ {paymentMethodOptions} {chargeStatusOptions} {rangeAmountOptions} + composedFiltersResource={["gateway_charge"]} onApplyFilters={handleApplyFilters} />
diff --git a/src/components/admin/Filters.svelte b/src/components/admin/Filters.svelte index 13b873a5..01dbc17e 100644 --- a/src/components/admin/Filters.svelte +++ b/src/components/admin/Filters.svelte @@ -5,17 +5,29 @@ import { type ApiGatewayChargesGetCollectionData } from "../../openapi/client/index"; import FiltersIcon from "../icons/filters/Filters.svelte"; import Button from "../library/buttons/Button.svelte"; + import FilterComposer from "../library/filters/FilterComposer.svelte"; import DateInput from "../library/inputs/DateInput.svelte"; import Grid from "../library/layout/Grid.svelte"; - let { filters, onApplyFilters, paymentMethodOptions, chargeStatusOptions, rangeAmountOptions } = - $props<{ - filters: ApiGatewayChargesGetCollectionData["query"]; - onApplyFilters: (filters: any) => void; - paymentMethodOptions: [string, string][]; - chargeStatusOptions: [string, string][]; - rangeAmountOptions: [string, string][]; - }>(); + import type { FilterResource } from "../../utils/filterComposer"; + + let { + filters, + onApplyFilters, + paymentMethodOptions, + chargeStatusOptions, + rangeAmountOptions, + composedFiltersResource, + initialSearchQuery = "", + } = $props<{ + filters: ApiGatewayChargesGetCollectionData["query"]; + onApplyFilters: (filters: any) => void; + paymentMethodOptions: [string, string][]; + chargeStatusOptions: [string, string][]; + rangeAmountOptions: [string, string][]; + composedFiltersResource: FilterResource[]; + initialSearchQuery?: string; + }>(); let showFilters = $state(false); @@ -25,6 +37,8 @@ let dateFrom = $state(""); let dateTo = $state(""); + let composerParams = $state>({}); + // Debounce auto-applied filter changes so they don't fire one API request per change let autoApplyTimeout: ReturnType; @@ -35,6 +49,7 @@ function applyFilters() { onApplyFilters({ ...filters, + ...composerParams, "checkout.gateway": selectedPaymentMethod || undefined, status: selectedChargeStatus || undefined, "money.amount[gte]": selectedRangeAmount || undefined, @@ -179,5 +194,15 @@
+ +
+

+ {$t("pages.admin.charges.filters.composer.title")} +

+ (composerParams = params)} + /> +
{/if} diff --git a/src/components/admin/Table.svelte b/src/components/admin/Table.svelte index c7488efa..55f25bc0 100644 --- a/src/components/admin/Table.svelte +++ b/src/components/admin/Table.svelte @@ -46,7 +46,7 @@ { name: "pages.admin.charges.headers.origin", sortable: false }, { name: "pages.admin.charges.headers.paymentMethod", sortable: false }, { name: "pages.admin.charges.headers.date", sortable: true, sortKey: "date" }, - { name: "pages.admin.charges.headers.chargeStatus", sortable: false, sortKey: "status" }, + { name: "pages.admin.charges.headers.chargeStatus", sortable: true, sortKey: "status" }, { name: "pages.admin.charges.headers.refundToWallet", sortable: false }, { name: "", sortable: false }, // For the empty expand/collapse button at the end of the table ]; diff --git a/src/components/checkout/Cart.svelte b/src/components/checkout/Cart.svelte index 1a394aaf..0a2ca444 100644 --- a/src/components/checkout/Cart.svelte +++ b/src/components/checkout/Cart.svelte @@ -1,7 +1,7 @@ - 1 ? $cartCount : undefined} /> + 0 ? $cartCount : undefined} /> diff --git a/src/components/checkout/CartItem.svelte b/src/components/checkout/CartItem.svelte index 3f2ac73d..958f6be0 100644 --- a/src/components/checkout/CartItem.svelte +++ b/src/components/checkout/CartItem.svelte @@ -3,12 +3,12 @@ import { formatCurrency } from "../../utils/currencies"; import MoreAndLess from "../icons/filters/MoreAndLess.svelte"; - import type { CartItem } from "../../stores/cart"; + import type { CheckoutItem } from "../../stores/checkoutsStore"; - export let item: CartItem; - export let onIncrement: (item: CartItem) => void; - export let onDecrement: (item: CartItem) => void; - export let onRemove: (item: CartItem) => void; + export let item: CheckoutItem; + export let onIncrement: (item: CheckoutItem) => void; + export let onDecrement: (item: CheckoutItem) => void; + export let onRemove: (item: CheckoutItem) => void; function handleDecrement() { if (item.quantity === 1) { diff --git a/src/components/checkout/PaymentMethod.astro b/src/components/checkout/PaymentMethod.astro index 3b8e98e0..17f686a0 100644 --- a/src/components/checkout/PaymentMethod.astro +++ b/src/components/checkout/PaymentMethod.astro @@ -87,8 +87,11 @@ const { accounting } = Astro.props; diff --git a/src/components/create/CreateProjectForm.svelte b/src/components/create/CreateProjectForm.svelte index c5f1d7d9..52d0d57c 100644 --- a/src/components/create/CreateProjectForm.svelte +++ b/src/components/create/CreateProjectForm.svelte @@ -26,6 +26,7 @@ validationErrors, type CreateProjectForm, } from "../../stores/drafts/projectDraft"; + import { maxEndDate } from "../../utils/campaign"; import { getDefaultCurrency } from "../../utils/consts"; import { formatCurrency } from "../../utils/currencies"; import Button from "../library/buttons/Button.svelte"; @@ -373,6 +374,7 @@ name="release" bind:value={releaseDate} min={getMinDate()} + max={maxEndDate} error={shouldShowError("release") ? $t($validationErrors.release) : undefined} onBlur={() => handleFieldBlur("release")} onInput={(date: any) => handleFieldChange("release", date)} diff --git a/src/components/home/Campaigns.astro b/src/components/home/Campaigns.astro index 8f77081d..9058cf4f 100644 --- a/src/components/home/Campaigns.astro +++ b/src/components/home/Campaigns.astro @@ -28,7 +28,7 @@ const { data: projects } = await apiProjectsGetCollection({ }); const campaigns: Campaign[] = await Promise.all( - projects!.map(async (project, index) => { + (projects ?? []).map(async (project, index) => { const { data: accounting } = (await client.get({ url: client.buildUrl({ url: project.accounting! }), })) as { data: Accounting }; diff --git a/src/components/home/CampaignsTabs.astro b/src/components/home/CampaignsTabs.astro index f3cc521b..996eb0f7 100644 --- a/src/components/home/CampaignsTabs.astro +++ b/src/components/home/CampaignsTabs.astro @@ -31,7 +31,7 @@ const { data: projects } = await apiProjectsGetCollection({ }); const campaigns: Campaign[] = await Promise.all( - projects!.map(async (project) => { + (projects ?? []).map(async (project) => { const { data: accounting } = (await client.get({ url: client.buildUrl({ url: project.accounting! }), })) as { data: Accounting }; diff --git a/src/components/library/dropdown/DropdownItem.svelte b/src/components/library/dropdown/DropdownItem.svelte index 6ddef268..e3f2212e 100644 --- a/src/components/library/dropdown/DropdownItem.svelte +++ b/src/components/library/dropdown/DropdownItem.svelte @@ -24,12 +24,12 @@
{#if variant === "multiselect"} -
+ diff --git a/src/components/library/filters/FilterComposerRow.svelte b/src/components/library/filters/FilterComposerRow.svelte new file mode 100644 index 00000000..b2d708a7 --- /dev/null +++ b/src/components/library/filters/FilterComposerRow.svelte @@ -0,0 +1,325 @@ + + +
+
+ +
+ +
+ +
+ +
+ {#if currentSubject?.options && operator === "equals" && subjectKey} + + {:else if currentSubject?.options && operator === "is_any_of" && subjectKey} + {#if !showStaticDropdown && dropdownSelected.length > 0} +
(showStaticDropdown = true)} + role="button" + tabindex="0" + onkeydown={(e) => e.key === "Enter" && (showStaticDropdown = true)} + > + {#each dropdownSelected as item} + + {item.label} + + + {/each} +
+ {:else} +
(showStaticDropdown = false)}> + +
+ {/if} + {:else if currentSubject?.suggest && subjectKey && operator === "equals"} + {#if referent && !Array.isArray(referent) && !showSuggestSearch} +
+ + +
+ {:else} + + {/if} + {:else if currentSubject?.suggest && subjectKey && operator} + {#if !showSuggestSearch && dropdownSelected.length > 0} +
(showSuggestSearch = true)} + role="button" + tabindex="0" + onkeydown={(e) => e.key === "Enter" && (showSuggestSearch = true)} + > + {#each dropdownSelected as item} + + {item.label} + + + {/each} +
+ {:else} +
(showSuggestSearch = false)}> + +
+ {/if} + {:else if currentSubject?.type === "date"} + (referent = date)} + labelText={$t("pages.admin.charges.filters.composer.referentPlaceholder")} + /> + {:else if currentSubject?.type === "number"} + + {:else} + + {/if} +
+ + +
diff --git a/src/components/library/inputs/DateInput.svelte b/src/components/library/inputs/DateInput.svelte index 9ed05c01..196fd5de 100644 --- a/src/components/library/inputs/DateInput.svelte +++ b/src/components/library/inputs/DateInput.svelte @@ -203,7 +203,7 @@ aria-expanded={open} aria-describedby={error ? `${finalId}-error` : helperText ? `helper-${finalId}` : undefined} class={twMerge( - "border-secondary text-secondary flex w-full items-center justify-between rounded-md border bg-white p-4 text-base focus:outline-none", + "border-secondary text-secondary flex w-full items-center justify-between rounded-md border bg-white p-4 text-base hover:cursor-pointer focus:outline-none", disabled && "cursor-not-allowed", error && "border-red-500 focus:ring-red-500", )} @@ -247,7 +247,7 @@ @@ -302,6 +302,7 @@ border-radius: 9999px; color: var(--color-secondary); background: transparent; + cursor: pointer; } .datepicker :global(#datepicker-dropdown [role="columnheader"]) { diff --git a/src/components/library/inputs/Search.svelte b/src/components/library/inputs/Search.svelte index 4e97b233..25319101 100644 --- a/src/components/library/inputs/Search.svelte +++ b/src/components/library/inputs/Search.svelte @@ -41,7 +41,7 @@ )} > {#if label !== undefined && value} -