From e67493e194ac5b9bf2989668d891473d3732390e Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Fri, 1 May 2026 10:50:56 +0900 Subject: [PATCH 1/5] refactor: remove unnecessary reset SCSS Reset is done by Tailwind --- src/assets/scss/base/_reset.scss | 130 ------------------------------- src/assets/scss/index.scss | 1 - 2 files changed, 131 deletions(-) delete mode 100644 src/assets/scss/base/_reset.scss diff --git a/src/assets/scss/base/_reset.scss b/src/assets/scss/base/_reset.scss deleted file mode 100644 index 295432d..0000000 --- a/src/assets/scss/base/_reset.scss +++ /dev/null @@ -1,130 +0,0 @@ -@layer base { - html { - box-sizing: border-box; - scroll-behavior: smooth; - } - - *, - *::after, - *::before { - box-sizing: inherit; - } - - *:focus, - *:focus-visible { - outline: 2px dashed black; - outline-color: black; - outline-offset: 0; - -webkit-box-shadow: 0 0 0 2px white; - box-shadow: 0 0 0 2px white; - } - - *:focus:not(:focus-visible) { - outline: none; - box-shadow: none; - } - - blockquote, - body, - figure, - h1, - h2, - h3, - h4, - h5, - h6, - hr, - li, - ol, - p, - pre, - ul { - margin: 0; - padding: 0; - } - - ul:where([class]) { - list-style: none; - } - - button, - input, - select, - textarea { - color: inherit; - font: inherit; - letter-spacing: inherit; - } - - input[type='text'], - textarea { - inline-size: 100%; - } - - fieldset { - border: none; - padding: 0; - } - - legend { - margin-block-end: 0.5rem; - max-inline-size: 100%; - } - - input, - textarea { - border: 1px solid gray; - } - - button { - border: none; - border-radius: 0; - background-color: transparent; - padding: 0; - } - - button * { - pointer-events: none; - } - - button:hover { - cursor: pointer; - } - - embed, - iframe, - img, - object, - svg, - video { - display: block; - max-width: 100%; - } - - table { - inline-size: 100%; - table-layout: fixed; - } - - [hidden] { - display: none !important; - } - - noscript { - display: block; - margin-block-start: 1em; - margin-block-end: 1em; - } - - [tabindex='-1'] { - outline: none !important; - box-shadow: none !important; - } - - [popover] { - position: absolute; - inset: auto; - border: none; - padding: 0; - } -} diff --git a/src/assets/scss/index.scss b/src/assets/scss/index.scss index ae777c7..729c1dc 100644 --- a/src/assets/scss/index.scss +++ b/src/assets/scss/index.scss @@ -1,4 +1,3 @@ -@use 'base/reset'; @use 'base/root'; @use 'base/font'; @use 'base/list'; From 5d121a19b2cbc772e2230af528ca0b9c67a6cb49 Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Fri, 1 May 2026 10:45:49 +0900 Subject: [PATCH 2/5] refactor: migrate button style from SCSS to Tailwind --- src/assets/scss/base/_button.scss | 52 -------------- src/assets/scss/index.scss | 1 - src/styles/tailwind.css | 108 ++++++++++++++++++++++++++++++ 3 files changed, 108 insertions(+), 53 deletions(-) delete mode 100644 src/assets/scss/base/_button.scss diff --git a/src/assets/scss/base/_button.scss b/src/assets/scss/base/_button.scss deleted file mode 100644 index 8adc665..0000000 --- a/src/assets/scss/base/_button.scss +++ /dev/null @@ -1,52 +0,0 @@ -@use './mixins' as *; - -.button { - display: inline-flex; - position: relative; - justify-content: center; - align-items: center; - transition: all var(--animation-speed-fast) var(--cubic-bezier); - cursor: pointer; - border: 3px solid light-dark(var(--color-primary-200), var(--color-primary-100)); - border-radius: var(--radius-s); - background-color: light-dark(var(--color-primary-200), var(--color-primary-100)); - padding: var(--space-xs) var(--space-s); - inline-size: fit-content; - color: var(--color-neutral-900); - font-weight: 700; - - @include text-decoration(transparent, currentColor); - - &:where(:hover, :focus-visible) { - border-color: light-dark(var(--color-primary-300), var(--color-primary-300)); - background-color: light-dark(var(--color-primary-300), var(--color-primary-300)); - text-decoration-thickness: 2px; - } - - &.color-secondary { - border-color: light-dark(var(--color-secondary-100), var(--color-secondary-100)); - background-color: light-dark(var(--color-secondary-100), var(--color-secondary-100)); - - &:where(:hover, :focus-visible) { - border-color: light-dark(var(--color-secondary-300), var(--color-secondary-300)); - background-color: light-dark(var(--color-secondary-300), var(--color-secondary-300)); - } - } - - &.has-icon { - display: flex; - align-items: center; - gap: var(--space-2xs); - - [data-icon] { - inline-size: 30px; - block-size: auto; - } - - &:where(:hover, :focus-visible) { - [data-icon] { - animation: boop 0.5s cubic-bezier(0.165, 0.84, 0.44, 1) forwards; - } - } - } -} diff --git a/src/assets/scss/index.scss b/src/assets/scss/index.scss index 729c1dc..e3132b2 100644 --- a/src/assets/scss/index.scss +++ b/src/assets/scss/index.scss @@ -2,7 +2,6 @@ @use 'base/font'; @use 'base/list'; @use 'base/breakpoint'; -@use 'base/button'; @use 'base/general'; @use 'base/kbd'; @use 'base/mixins'; diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css index f1d8c73..f30a237 100644 --- a/src/styles/tailwind.css +++ b/src/styles/tailwind.css @@ -1 +1,109 @@ @import "tailwindcss"; + +@theme { + --color-primary-100: var(--color-primary-100); + --color-primary-200: var(--color-primary-200); + --color-primary-300: var(--color-primary-300); + --color-primary-400: var(--color-primary-400); + --color-primary-500: var(--color-primary-500); + --color-secondary-100: var(--color-secondary-100); + --color-secondary-200: var(--color-secondary-200); + --color-secondary-300: var(--color-secondary-300); + --color-secondary-400: var(--color-secondary-400); + --color-secondary-500: var(--color-secondary-500); + --color-neutral-100: var(--color-neutral-100); + --color-neutral-200: var(--color-neutral-200); + --color-neutral-300: var(--color-neutral-300); + --color-neutral-400: var(--color-neutral-400); + --color-neutral-500: var(--color-neutral-500); + --color-neutral-600: var(--color-neutral-600); + --color-neutral-700: var(--color-neutral-700); + --color-neutral-800: var(--color-neutral-800); + --color-neutral-900: var(--color-neutral-900); + + --space-5xs: var(--space-5xs); + --space-4xs: var(--space-4xs); + --space-3xs: var(--space-3xs); + --space-2xs: var(--space-2xs); + --space-xs: var(--space-xs); + --space-s: var(--space-s); + --space-m: var(--space-m); + --space-l: var(--space-l); + --space-xl: var(--space-xl); + --space-2xl: var(--space-2xl); + --space-3xl: var(--space-3xl); + --space-4xl: var(--space-4xl); + --space-5xl: var(--space-5xl); + + --radius-xs: var(--radius-xs); + --radius-s: var(--radius-s); + --radius-m: var(--radius-m); + --radius-l: var(--radius-l); + --radius-h: var(--radius-h); + + --animation-boop: boop 0.5s cubic-bezier(0.165, 0.84, 0.44, 1) forwards; +} + +@keyframes boop { + 0% { + transform: scale(1.2); + } + 100% { + transform: scale(1); + } +} + +@layer components { + .button { + @apply inline-flex relative justify-center items-center cursor-pointer; + border: 3px solid light-dark(var(--color-primary-200), var(--color-primary-100)); + border-radius: var(--radius-s); + background-color: light-dark(var(--color-primary-200), var(--color-primary-100)); + padding: var(--space-xs) var(--space-s); + inline-size: fit-content; + color: var(--color-neutral-900); + font-weight: 700; + transition: all var(--animation-speed-fast) var(--cubic-bezier); + transition-duration: var(--animation-speed-fast); + transition-timing-function: var(--cubic-bezier); + text-decoration-line: underline; + text-decoration-style: solid; + text-decoration-color: transparent; + text-decoration-skip-ink: none; + text-underline-offset: 4px; + + &:where(:hover, :focus-visible) { + border-color: light-dark(var(--color-primary-300), var(--color-primary-300)); + background-color: light-dark(var(--color-primary-300), var(--color-primary-300)); + text-decoration-color: currentColor; + text-underline-offset: 2px; + text-decoration-thickness: 2px; + } + + &.color-secondary { + border-color: light-dark(var(--color-secondary-100), var(--color-secondary-100)); + background-color: light-dark(var(--color-secondary-100), var(--color-secondary-100)); + + &:where(:hover, :focus-visible) { + border-color: light-dark(var(--color-secondary-300), var(--color-secondary-300)); + background-color: light-dark(var(--color-secondary-300), var(--color-secondary-300)); + } + } + + &.has-icon { + @apply flex items-center; + gap: var(--space-2xs); + + [data-icon] { + inline-size: 30px; + block-size: auto; + } + + &:where(:hover, :focus-visible) { + [data-icon] { + animation: var(--animation-boop); + } + } + } + } +} From c1f39dfd3eff6aa26d3998e0290ab61ef651a84b Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Fri, 1 May 2026 11:34:54 +0900 Subject: [PATCH 3/5] refactor: default button & link styles --- src/assets/scss/base/_general.scss | 17 ----------------- src/styles/tailwind.css | 11 +++++++++-- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/assets/scss/base/_general.scss b/src/assets/scss/base/_general.scss index dfc0df0..2b3af52 100644 --- a/src/assets/scss/base/_general.scss +++ b/src/assets/scss/base/_general.scss @@ -19,25 +19,8 @@ body { color: var(--foreground-color); } -a { - transition: color var(--animation-speed-fast) var(--cubic-bezier); - color: var(--link-color); - - &:where(:hover, :focus-visible) { - color: var(--link-hover-color); - } -} - main a, footer a { - @include text-decoration(var(--link-color), var(--link-hover-color)); - - color: var(--link-color); - - &:where(:hover, :focus-visible) { - color: var(--link-hover-color); - } - &.external-link { display: inline-flex; align-items: center; diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css index f30a237..468faa4 100644 --- a/src/styles/tailwind.css +++ b/src/styles/tailwind.css @@ -54,9 +54,12 @@ } @layer components { + .link { + @apply underline text-blue-400; + } + .button { - @apply inline-flex relative justify-center items-center cursor-pointer; - border: 3px solid light-dark(var(--color-primary-200), var(--color-primary-100)); + @apply inline-flex relative justify-center items-center cursor-pointer border-0; border-radius: var(--radius-s); background-color: light-dark(var(--color-primary-200), var(--color-primary-100)); padding: var(--space-xs) var(--space-s); @@ -106,4 +109,8 @@ } } } + + .button-secondary { + @apply bg-secondary-300 text-black; + } } From bfccff0ac4978dc025165315a712043a4683a404 Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Fri, 1 May 2026 11:47:34 +0900 Subject: [PATCH 4/5] ci: enable *.workers.dev URL --- wrangler.jsonc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wrangler.jsonc b/wrangler.jsonc index 10537a9..d292b6a 100644 --- a/wrangler.jsonc +++ b/wrangler.jsonc @@ -4,7 +4,7 @@ "name": "guildkit-website", "compatibility_date": "2025-09-25", "compatibility_flags": [ "nodejs_compat" ], - "workers_dev": false, + "workers_dev": true, "placement": { "mode": "smart" }, From 07ae9662f1e8529f8a17d20d512b1a37c58d56a7 Mon Sep 17 00:00:00 2001 From: Jumpei Ogawa Date: Fri, 1 May 2026 10:00:36 +0900 Subject: [PATCH 5/5] chore: update deps --- pnpm-lock.yaml | 189 +++++++++++++++++++++++++------------------------ 1 file changed, 97 insertions(+), 92 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 607cd53..b213011 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,13 +20,13 @@ importers: version: 0.9.9(prettier@3.8.3)(typescript@6.0.3) '@astrojs/mdx': specifier: ^5.0.4 - version: 5.0.4(astro@6.1.10(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3)) + version: 5.0.4(astro@6.2.1(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3)) '@astrojs/partytown': specifier: ^2.1.4 version: 2.1.7 '@cloudflare/workers-types': specifier: ^4.20240909.0 - version: 4.20260430.1 + version: 4.20260501.1 '@iconify-json/lucide': specifier: ^1.2.44 version: 1.2.105 @@ -44,7 +44,7 @@ importers: version: 24.12.2 astro: specifier: ^6.1.9 - version: 6.1.10(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3) + version: 6.2.1(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3) astro-compress: specifier: ^2.3.8 version: 2.4.1(@types/node@24.12.2)(jiti@2.6.1)(rollup@4.60.2)(sass@1.99.0)(typescript@6.0.3)(yaml@2.8.3) @@ -77,7 +77,7 @@ importers: version: 6.0.3 wrangler: specifier: ^4.0.0 - version: 4.86.0(@cloudflare/workers-types@4.20260430.1) + version: 4.87.0(@cloudflare/workers-types@4.20260501.1) packages: @@ -99,6 +99,9 @@ packages: '@astrojs/compiler@3.0.1': resolution: {integrity: sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==} + '@astrojs/compiler@4.0.0': + resolution: {integrity: sha512-eouss7G8ygdZqHuke033VMcVw5HTZUu+PXd/h06DGDUg/jt5btPYPqh66ENWw/mU78rBrf/oeC4oqoBwMtDMNA==} + '@astrojs/internal-helpers@0.9.0': resolution: {integrity: sha512-GdYkzR26re8izmyYlBqf4z2s7zNngmWLFuxw0UKiPNqHraZGS6GKWIwSHgS22RDlu2ePFJ8bzmpBcUszut/SDg==} @@ -145,8 +148,8 @@ packages: resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.2': - resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} + '@babel/parser@7.29.3': + resolution: {integrity: sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA==} engines: {node: '>=6.0.0'} hasBin: true @@ -166,9 +169,9 @@ packages: resolution: {integrity: sha512-GgcWwRCs/xPtaqlMy8qRhPnZf9vlWcWZNHAitnVQ3yk7JmSralSiq5q07yaffYE8SogtDm7zFeKccx1QNVARpw==} engines: {node: '>= 20.12.0'} - '@cloudflare/kv-asset-handler@0.4.2': - resolution: {integrity: sha512-SIOD2DxrRRwQ+jgzlXCqoEFiKOFqaPjhnNTGKXSRLvp1HiOvapLaFG2kEr9dYQTYe8rKrd9uvDUzmAITeNyaHQ==} - engines: {node: '>=18.0.0'} + '@cloudflare/kv-asset-handler@0.5.0': + resolution: {integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==} + engines: {node: '>=22.0.0'} '@cloudflare/unenv-preset@2.16.1': resolution: {integrity: sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw==} @@ -179,38 +182,38 @@ packages: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20260426.1': - resolution: {integrity: sha512-Ch7DqsmYzSQRTY87pZpsGsFVz9VVBnLPnCBOHxKt1HH25a7oMu1w1PbPWqVmE0VerCLsj/TScX7Ob3v6E14TZw==} + '@cloudflare/workerd-darwin-64@1.20260430.1': + resolution: {integrity: sha512-ADohZUHf7NBvPp2PdZig2Opxx+hDkk3ve7jrTne3JRx9kDSB73zc4LzcEeEN8LKkbAcqZmvfRJfpChSlusu0lA==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260426.1': - resolution: {integrity: sha512-0m0U8vaPRH25SpKjbSyRql6gmPe4rCsETRV2WW0qBnuMdKNr5Vh5/Uez80xVrfiCCRMTULGeg63Nqg2vg6CDOA==} + '@cloudflare/workerd-darwin-arm64@1.20260430.1': + resolution: {integrity: sha512-/DoYC/1wHs+YRZzzqSQg1/EHB4hiv1yV5U8FnmapRRIzVaPtnt+ApeOXeMrIdKidgKOI8TqQzgBU8xbIM7Cl4Q==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260426.1': - resolution: {integrity: sha512-C8LlC8uSYzg49y51n++75esxZmMp+Uz1OKHHA/4lkv6rjOTbcHQJuEwSLppjybVIXpv7A8MBhbu9iyCTvyv1mw==} + '@cloudflare/workerd-linux-64@1.20260430.1': + resolution: {integrity: sha512-koJhBWvEVZPKCVFtMLp2iMHlYr+lFCF47wGbnlKdHVlemV0zTxJEyHI8aLlrhPLhBmOmYLp46rXw09/qJkRIhQ==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260426.1': - resolution: {integrity: sha512-ESVp/OIFMAqjQsa8BOP2BQQz5Vpfv6ncN6lNnIuNeOgsISQBdYk+LA60bwQHMud9tvmnSYtONp1zkZ8OQz+x6w==} + '@cloudflare/workerd-linux-arm64@1.20260430.1': + resolution: {integrity: sha512-hMdapNAzNQZDXGGkg4Slydc3fRJP5FUZLJVVcZCW/+imhhJro9Z1rv5n/wfR+txKoSWhTYR8eOp8Pyi2bzLzlw==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260426.1': - resolution: {integrity: sha512-d3Xj/IjINRgNVwH+eKhpUn4xkkcEewbWXbOvBlapiirKWh5zl9m0Epi3qOqmjyRYK6MICqIGXg4qZBEt0lxudw==} + '@cloudflare/workerd-windows-64@1.20260430.1': + resolution: {integrity: sha512-jS3ffixjb5USOwz4frw4WzCz0HrjVxkgyU3WiYb06N7hBAfN6eOrveAJ4QRef0+suK4V1vQFoB1oKdRBsXe9Dw==} engines: {node: '>=16'} cpu: [x64] os: [win32] - '@cloudflare/workers-types@4.20260430.1': - resolution: {integrity: sha512-Rguf/SdQNm1HG2yZi8m57K4qvVh2fic+Xny4UidY1pCgHagOAq7Cy0WIp1JKQx54T8lgOgOWFzIaCK4iwLpxlg==} + '@cloudflare/workers-types@4.20260501.1': + resolution: {integrity: sha512-B/VX2w3my/sCqxKyWOX7SxUpFC1uD8Gh7I2zbI1d3zA8p7Tx03AFsnuEx8lYLmcd8yONAA93YsAZb1wAaLK83w==} '@cspotcode/source-map-support@0.8.1': resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} @@ -588,12 +591,12 @@ packages: resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/css-tree@3.6.9': - resolution: {integrity: sha512-3D5/OHibNEGk+wKwNwMbz63NMf367EoR4mVNNpxddCHKEb2Nez7z62J2U6YjtErSsZDoY0CsccmoUpdEbkogNA==} - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + '@eslint/css-tree@4.0.3': + resolution: {integrity: sha512-lMgQJ5zg4YwsGPWtKS7Rc5Z4xqc2B9iOTtmDvhjMRa8GJ8/9zoKRtz26D7gCtWquy0J7oyeOJBwRP5M8slM/4w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/css@1.1.0': - resolution: {integrity: sha512-sNwfLcU3nKXv/v2YglqujwMU4Iv3BDhxldNUd/2FckVab0zdvc9pPlKWxjR6Ap/EU+Y8Pdu853iwvcUpemRhRw==} + '@eslint/css@1.2.0': + resolution: {integrity: sha512-aVASadH1EVw+6A+JuzRmV+v2MIsoVolj/k6/jqAXlP6bB0LYrTwH9DI4RO1Z/vvM3BZxMyqsB9QGnnOm78z9iQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/js@10.0.1': @@ -1645,8 +1648,8 @@ packages: astro-icon@1.1.5: resolution: {integrity: sha512-CJYS5nWOw9jz4RpGWmzNQY7D0y2ZZacH7atL2K9DeJXJVaz7/5WrxeyIxO8KASk1jCM96Q4LjRx/F3R+InjJrw==} - astro@6.1.10: - resolution: {integrity: sha512-jQAIki6c862oxRr7OXXC+h3n4wg1EpmKgCH3vv1FtXM9VFmD2iTjlaxrfb0I6eQCwtUjSBxfJBFBDSXHu7Wing==} + astro@6.2.1: + resolution: {integrity: sha512-3g1sYNly+QAkuO5ErNEQBYvsxorNDSCUNIeStBs+kcXGchvKQl1Q9EuDNOvSg010XLlHJFLVFZs9LV18Jjp4Hg==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} hasBin: true @@ -1929,8 +1932,8 @@ packages: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} - devalue@5.7.1: - resolution: {integrity: sha512-MUbZ586EgQqdRnC4yDrlod3BEdyvE4TapGYHMW2CiaW+KkkFmWEFqBUaLltEZCGi0iFXCEjRF0OjF0DV2QHjOA==} + devalue@5.8.0: + resolution: {integrity: sha512-2zA9pFEsnp7vWBZbXF5JAgAq0fsUIt/1XPbRiAmRV3lp/2C3upzH+sADiyy66aFCihoLEsrQHxNM5w1gIDfsBg==} devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} @@ -2929,12 +2932,12 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - mdn-data@2.23.0: - resolution: {integrity: sha512-786vq1+4079JSeu2XdcDjrhi/Ry7BWtjDl9WtGPWLiIHb2T66GvIVflZTBoSNZ5JqTtJGYEVMuFA/lbQlMOyDQ==} - mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + mdn-data@2.28.0: + resolution: {integrity: sha512-uy9AS1yt+wW5eUEefgE3lOpqPghanUttycV0GXKbiXyBjwvbeE8XPj4u1C+voRfz7dEjwU4NDHTMfZ/s/JtZrQ==} + merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} @@ -3048,9 +3051,9 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - miniflare@4.20260426.0: - resolution: {integrity: sha512-KM+v76d04qT+NsPfVKVQEgnnuLNE3uzCCl2QKMTJ5OXor5JbBm1vpkQwQ+l7o5ELCrZ74RnyKhJKLiJyUA39Tw==} - engines: {node: '>=18.0.0'} + miniflare@4.20260430.0: + resolution: {integrity: sha512-MWvMm3Siho9Yj7lbJZidLs8hbrRvIcOrif2mnsHQZdvoKfedpea+GaN8XJxbpRcq0B2WzNI1BB1ihdnqes3/ZA==} + engines: {node: '>=22.0.0'} hasBin: true minimatch@10.2.5: @@ -3084,8 +3087,8 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -3288,8 +3291,8 @@ packages: resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} - postcss@8.5.12: - resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} + postcss@8.5.13: + resolution: {integrity: sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -4066,17 +4069,17 @@ packages: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} - workerd@1.20260426.1: - resolution: {integrity: sha512-ELvGgN8c9oo+E6EPyecxk1TEf6/eAK4TxxQTW5mQ87C7jbjCzhMbg0P2ije49UBHV0dkBYPJcJvcklUltipl2A==} + workerd@1.20260430.1: + resolution: {integrity: sha512-KEgIWyiw3Jmn+DCd/L3ePo5fmiiYb/UcwKvDWPf/nLLOiwShDFzDSsegU5NY/JcwgvO/QsLHVi2FYrbkcXNY5Q==} engines: {node: '>=16'} hasBin: true - wrangler@4.86.0: - resolution: {integrity: sha512-9aa/gbF/HiUeeUEwyQpW5LDPBEzyt7iaE6xHwm0vk2Ly8A6J+jh03pzchqVnCCWR832mNyA28MD8oAYt0Kfvlw==} - engines: {node: '>=20.3.0'} + wrangler@4.87.0: + resolution: {integrity: sha512-lfhfKwLfQlowwgV0xhlYgE9fU3n0I30d4ccGY/rTCEm/n42Mjvlr0Ng3ZPNqlsrsKBcDR531V7dsPkgELvrk/Q==} + engines: {node: '>=22.0.0'} hasBin: true peerDependencies: - '@cloudflare/workers-types': ^4.20260426.1 + '@cloudflare/workers-types': ^4.20260430.1 peerDependenciesMeta: '@cloudflare/workers-types': optional: true @@ -4184,6 +4187,8 @@ snapshots: '@astrojs/compiler@3.0.1': {} + '@astrojs/compiler@4.0.0': {} + '@astrojs/internal-helpers@0.9.0': dependencies: picomatch: 4.0.4 @@ -4239,12 +4244,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@5.0.4(astro@6.1.10(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3))': + '@astrojs/mdx@5.0.4(astro@6.2.1(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3))': dependencies: '@astrojs/markdown-remark': 7.1.1 '@mdx-js/mdx': 3.1.1 acorn: 8.16.0 - astro: 6.1.10(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3) + astro: 6.2.1(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3) es-module-lexer: 2.1.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -4284,7 +4289,7 @@ snapshots: '@babel/helper-validator-identifier@7.28.5': {} - '@babel/parser@7.29.2': + '@babel/parser@7.29.3': dependencies: '@babel/types': 7.29.0 @@ -4309,30 +4314,30 @@ snapshots: fast-wrap-ansi: 0.2.0 sisteransi: 1.0.5 - '@cloudflare/kv-asset-handler@0.4.2': {} + '@cloudflare/kv-asset-handler@0.5.0': {} - '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260426.1)': + '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260430.1)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260426.1 + workerd: 1.20260430.1 - '@cloudflare/workerd-darwin-64@1.20260426.1': + '@cloudflare/workerd-darwin-64@1.20260430.1': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260426.1': + '@cloudflare/workerd-darwin-arm64@1.20260430.1': optional: true - '@cloudflare/workerd-linux-64@1.20260426.1': + '@cloudflare/workerd-linux-64@1.20260430.1': optional: true - '@cloudflare/workerd-linux-arm64@1.20260426.1': + '@cloudflare/workerd-linux-arm64@1.20260430.1': optional: true - '@cloudflare/workerd-windows-64@1.20260426.1': + '@cloudflare/workerd-windows-64@1.20260430.1': optional: true - '@cloudflare/workers-types@4.20260430.1': {} + '@cloudflare/workers-types@4.20260501.1': {} '@cspotcode/source-map-support@0.8.1': dependencies: @@ -4566,16 +4571,16 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/css-tree@3.6.9': + '@eslint/css-tree@4.0.3': dependencies: - mdn-data: 2.23.0 + mdn-data: 2.28.0 source-map-js: 1.2.1 - '@eslint/css@1.1.0': + '@eslint/css@1.2.0': dependencies: '@eslint/core': 1.2.1 - '@eslint/css-tree': 3.6.9 - '@eslint/plugin-kit': 0.6.1 + '@eslint/css-tree': 4.0.3 + '@eslint/plugin-kit': 0.7.1 '@eslint/js@10.0.1(eslint@10.2.1(jiti@2.6.1))': optionalDependencies: @@ -4901,7 +4906,7 @@ snapshots: '@phanect/lint@2026.4.28(@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3))(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3))(@typescript-eslint/parser@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3))(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3)': dependencies: - '@eslint/css': 1.1.0 + '@eslint/css': 1.2.0 '@eslint/js': 10.0.1(eslint@10.2.1(jiti@2.6.1)) '@stylistic/eslint-plugin': 5.10.0(eslint@10.2.1(jiti@2.6.1)) '@vitest/eslint-plugin': 1.6.16(@typescript-eslint/eslint-plugin@8.59.1(@typescript-eslint/parser@8.59.1(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3))(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3))(eslint@10.2.1(jiti@2.6.1))(typescript@6.0.3) @@ -5533,7 +5538,7 @@ snapshots: '@playform/pipe': 0.1.5 '@types/csso': 5.0.4 '@types/html-minifier-terser': 7.0.2 - astro: 6.1.10(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3) + astro: 6.2.1(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3) commander: 14.0.3 csso: 5.0.5 deepmerge-ts: 7.1.5 @@ -5602,9 +5607,9 @@ snapshots: transitivePeerDependencies: - supports-color - astro@6.1.10(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3): + astro@6.2.1(@types/node@24.12.2)(jiti@2.6.1)(lightningcss@1.32.0)(rollup@4.60.2)(sass@1.99.0)(terser@5.46.1)(typescript@6.0.3)(yaml@2.8.3): dependencies: - '@astrojs/compiler': 3.0.1 + '@astrojs/compiler': 4.0.0 '@astrojs/internal-helpers': 0.9.0 '@astrojs/markdown-remark': 7.1.1 '@astrojs/telemetry': 3.3.1 @@ -5618,7 +5623,7 @@ snapshots: clsx: 2.1.1 common-ancestor-path: 2.0.0 cookie: 1.1.1 - devalue: 5.7.1 + devalue: 5.8.0 diff: 8.0.4 dset: 3.1.4 es-module-lexer: 2.1.0 @@ -5949,7 +5954,7 @@ snapshots: detect-libc@2.1.2: {} - devalue@5.7.1: {} + devalue@5.8.0: {} devlop@1.1.0: dependencies: @@ -6257,7 +6262,7 @@ snapshots: eslint: 10.2.1(jiti@2.6.1) eslint-compat-utils: 0.6.5(eslint@10.2.1(jiti@2.6.1)) globals: 16.5.0 - postcss: 8.5.12 + postcss: 8.5.13 postcss-selector-parser: 7.1.1 transitivePeerDependencies: - supports-color @@ -7134,7 +7139,7 @@ snapshots: magicast@0.5.2: dependencies: - '@babel/parser': 7.29.2 + '@babel/parser': 7.29.3 '@babel/types': 7.29.0 source-map-js: 1.2.1 @@ -7317,10 +7322,10 @@ snapshots: mdn-data@2.0.30: {} - mdn-data@2.23.0: {} - mdn-data@2.27.1: {} + mdn-data@2.28.0: {} + merge2@1.4.1: {} micromark-core-commonmark@2.0.3: @@ -7592,12 +7597,12 @@ snapshots: braces: 3.0.3 picomatch: 2.3.2 - miniflare@4.20260426.0: + miniflare@4.20260430.0: dependencies: '@cspotcode/source-map-support': 0.8.1 sharp: 0.34.5 undici: 7.24.8 - workerd: 1.20260426.1 + workerd: 1.20260430.1 ws: 8.18.0 youch: 4.1.0-beta.10 transitivePeerDependencies: @@ -7633,7 +7638,7 @@ snapshots: muggle-string@0.4.1: {} - nanoid@3.3.11: {} + nanoid@3.3.12: {} napi-postinstall@0.3.4: {} @@ -7861,9 +7866,9 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss@8.5.12: + postcss@8.5.13: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -8145,7 +8150,7 @@ snapshots: htmlparser2: 10.1.0 is-plain-object: 5.0.0 parse-srcset: 1.0.2 - postcss: 8.5.12 + postcss: 8.5.13 sass@1.99.0: dependencies: @@ -8641,7 +8646,7 @@ snapshots: esbuild: 0.27.7 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - postcss: 8.5.12 + postcss: 8.5.13 rollup: 4.60.2 tinyglobby: 0.2.16 optionalDependencies: @@ -8811,26 +8816,26 @@ snapshots: word-wrap@1.2.5: {} - workerd@1.20260426.1: + workerd@1.20260430.1: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260426.1 - '@cloudflare/workerd-darwin-arm64': 1.20260426.1 - '@cloudflare/workerd-linux-64': 1.20260426.1 - '@cloudflare/workerd-linux-arm64': 1.20260426.1 - '@cloudflare/workerd-windows-64': 1.20260426.1 + '@cloudflare/workerd-darwin-64': 1.20260430.1 + '@cloudflare/workerd-darwin-arm64': 1.20260430.1 + '@cloudflare/workerd-linux-64': 1.20260430.1 + '@cloudflare/workerd-linux-arm64': 1.20260430.1 + '@cloudflare/workerd-windows-64': 1.20260430.1 - wrangler@4.86.0(@cloudflare/workers-types@4.20260430.1): + wrangler@4.87.0(@cloudflare/workers-types@4.20260501.1): dependencies: - '@cloudflare/kv-asset-handler': 0.4.2 - '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260426.1) + '@cloudflare/kv-asset-handler': 0.5.0 + '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260430.1) blake3-wasm: 2.1.5 esbuild: 0.27.3 - miniflare: 4.20260426.0 + miniflare: 4.20260430.0 path-to-regexp: 6.3.0 unenv: 2.0.0-rc.24 - workerd: 1.20260426.1 + workerd: 1.20260430.1 optionalDependencies: - '@cloudflare/workers-types': 4.20260430.1 + '@cloudflare/workers-types': 4.20260501.1 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil