diff --git a/.github/workflows/accessibility.yml b/.github/workflows/accessibility.yml index acfa13b..6c81ee6 100644 --- a/.github/workflows/accessibility.yml +++ b/.github/workflows/accessibility.yml @@ -16,12 +16,10 @@ jobs: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4 - with: - version: 12 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version-file: .nvmrc cache: 'pnpm' - name: Install dependencies @@ -40,11 +38,12 @@ jobs: run: | npx @axe-core/cli \ http://localhost:4321/ \ - http://localhost:4321/about \ - http://localhost:4321/work \ - http://localhost:4321/articles \ - http://localhost:4321/notes \ - http://localhost:4321/resume \ + http://localhost:4321/about/ \ + http://localhost:4321/notes/ \ + http://localhost:4321/articles/ \ + http://localhost:4321/work/ \ + http://localhost:4321/resume/ \ + http://localhost:4321/feed.xml \ --exit \ --reporter json \ --save axe-results.json diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..b61e097 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,31 @@ +name: Type check + +on: + push: + branches: [main] + pull_request: + paths: + - 'src/**' + - 'astro.config.mjs' + - 'tsconfig.json' + - 'package.json' + +jobs: + check: + name: astro check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install + + - name: Type check + run: pnpm check diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..728af5e --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,35 @@ +name: Release + +on: + push: + branches: [main] + +permissions: + contents: write + issues: write + pull-requests: write + +jobs: + release: + name: semantic-release + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v4 + with: + node-version-file: .nvmrc + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install + + - name: Release + run: pnpm dlx semantic-release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.releaserc.json b/.releaserc.json index d03be39..7bf05ec 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -1,5 +1,5 @@ { - "branches": "main", + "branches": ["main"], "plugins": [ "@semantic-release/commit-analyzer", "@semantic-release/release-notes-generator", diff --git a/README.md b/README.md index 83bb4d5..2c3a44b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,51 @@ -# Website +# danmatthew.co.uk -This is my website. +Personal site for Dan Matthew — accessibility and design systems consultant. + +Built with [Astro](https://astro.build) and [TinaCMS](https://tina.io), deployed on Netlify. + +## Prerequisites + +- Node 24 (see `.nvmrc`) — use `nvm use` or `fnm use` +- pnpm 12 — installed automatically via `corepack enable` + +## Development + +Start the dev server with TinaCMS (CMS sidebar available at `/admin`): + +```sh +pnpm dev +``` + +Or run Astro alone (no CMS): + +```sh +pnpm astro dev +``` + +## Build + +```sh +pnpm build # TinaCMS pre-build + Astro build +pnpm build:ci # Astro build only (no TinaCMS, for CI) +pnpm preview # preview the dist/ output locally +``` + +## Type checking + +```sh +pnpm check # runs astro check +``` + +## Lint & format + +```sh +pnpm lint # ESLint (eslint-plugin-astro) +pnpm format # Prettier +``` + +## Content + +Posts live in `src/content/posts/`, articles in `src/content/articles/`, and work case studies in `src/content/work/`. All use Markdown or MDX. + +Set `published: false` in frontmatter to keep a post out of the build. TinaCMS reads and writes these files directly. diff --git a/astro.config.mjs b/astro.config.mjs index 44d5c3e..fb37399 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,11 +1,22 @@ -import { defineConfig } from 'astro/config'; +import { defineConfig, fontProviders } from 'astro/config'; +import mdx from '@astrojs/mdx'; +import sitemap from '@astrojs/sitemap'; -import mdx from "@astrojs/mdx"; - -// https://astro.build/config - -// https://astro.build/config export default defineConfig({ site: 'https://danmatthew.co.uk', - integrations: [mdx()] + trailingSlash: 'always', + prefetch: true, + integrations: [ + mdx(), + sitemap(), + ], + fonts: [ + { + provider: fontProviders.bunny(), + name: 'IBM Plex Sans', + cssVariable: '--font-ibm-plex', + weights: [400, 600, 700], + display: 'swap', + }, + ], }); diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..e897846 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,10 @@ +import eslintPluginAstro from 'eslint-plugin-astro'; +import prettierConfig from 'eslint-config-prettier'; + +export default [ + ...eslintPluginAstro.configs.recommended, + prettierConfig, + { + ignores: ['dist/', '.tina/__generated__/', 'node_modules/'], + }, +]; diff --git a/netlify.toml b/netlify.toml index ca469c7..b14be6f 100644 --- a/netlify.toml +++ b/netlify.toml @@ -2,18 +2,25 @@ command = "pnpm build" publish = "dist" +[[headers]] + for = "/_astro/*" + [headers.values] + Cache-Control = "public, max-age=31536000, immutable" + [[headers]] for = "/*" [headers.values] X-Content-Type-Options = "nosniff" X-Frame-Options = "DENY" - X-XSS-Protection = "1; mode=block" + Referrer-Policy = "strict-origin-when-cross-origin" + Permissions-Policy = "camera=(), microphone=(), geolocation=()" Content-Security-Policy = """ - default-src 'self' miro.com figma.com *.figma.com; - img-src 'self' res.cloudinary.com images.ctfassets.net; + default-src 'self'; + img-src 'self' res.cloudinary.com; script-src 'self' 'unsafe-inline'; - style-src 'self' 'unsafe-inline' fonts.bunny.net; - font-src 'self' fonts.bunny.net""" + style-src 'self' 'unsafe-inline'; + font-src 'self'; + frame-src miro.com figma.com *.figma.com""" [[headers]] for = "/admin*" @@ -22,16 +29,5 @@ [[redirects]] from = "/:year/:month/:date/:slug" - to = "/notes/:slug" + to = "/notes/:year-:month-:date-:slug/" status = 301 - -[[plugins]] -package = "@netlify/plugin-sitemap" - - [plugins.inputs] - buildDir = "dist" - -[[plugins]] -package = "netlify-plugin-hashfiles" - - diff --git a/package.json b/package.json index 5a18190..edde4ea 100644 --- a/package.json +++ b/package.json @@ -5,45 +5,40 @@ "dependencies": { "@astrojs/mdx": "^8.0.3", "@astrojs/rss": "^4.0.19", - "@georgedoescode/generative-utils": "^1.0.38", "@stackblitz/sdk": "^1.11.0", - "@svgdotjs/svg.js": "^3.2.5", - "@timohausmann/quadtree-js": "^1.2.6", "astro": "^7.3.8", - "eslint": "^9.39.4", "tinacms": "^3.14.3" }, "devDependencies": { + "@astrojs/check": "^0.9.4", + "@astrojs/sitemap": "^3.2.1", "@tinacms/cli": "^4.0.1", "@types/node": "^24.12.2", + "eslint": "^9.39.4", "eslint-config-prettier": "^9.1.2", + "eslint-plugin-astro": "^1.3.1", "husky": "^9.1.7", "lint-staged": "^15.5.2", - "prettier": "^3.8.3" + "prettier": "^3.8.3", + "typescript": "^5.8.3" }, "browserslist": [ "last 2 versions" ], "lint-staged": { - "*.js": [ + "*.{js,ts,astro}": [ "eslint --fix", "prettier --write" ] }, "scripts": { "dev": "tinacms dev -c \"astro dev\"", - "start": "astro start", "build": "tinacms build && astro build", "build:ci": "astro build", "preview": "astro preview", - "lint": "npm run lint:eslint && npm run lint:prettier", - "lint:eslint": "eslint .", - "lint:prettier": "prettier \"**/*.js\" --list-different || (echo '↑↑ these files are not prettier formatted ↑↑' && exit 1)", - "format": "npm run format:eslint && npm run format:prettier", - "format:eslint": "eslint . --fix", - "format:prettier": "prettier \"**/*.js\" --write", - "test": "playwright test", - "release": "npx standard-version && git push --follow-tags" + "check": "astro check", + "lint": "eslint .", + "format": "prettier --write \"**/*.{js,ts,astro}\"" }, "repository": { "type": "git", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0078d16..c2f8ef4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -176,37 +176,37 @@ importers: '@astrojs/rss': specifier: ^4.0.19 version: 4.0.19 - '@georgedoescode/generative-utils': - specifier: ^1.0.38 - version: 1.0.38 '@stackblitz/sdk': specifier: ^1.11.0 version: 1.11.1 - '@svgdotjs/svg.js': - specifier: ^3.2.5 - version: 3.2.8 - '@timohausmann/quadtree-js': - specifier: ^1.2.6 - version: 1.2.6 astro: specifier: ^7.3.8 version: 7.3.8(@types/node@24.19.2)(esbuild@0.28.2)(jiti@1.21.7)(yaml@2.9.1) - eslint: - specifier: ^9.39.4 - version: 9.39.5(jiti@1.21.7)(supports-color@7.2.0) tinacms: specifier: ^3.14.3 - version: 3.14.3(@types/node@24.19.2)(abstract-level@1.0.4)(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(supports-color@7.2.0)(typescript@5.6.3)(use-sync-external-store@1.7.0(react@18.3.1)) + version: 3.14.3(@types/node@24.19.2)(abstract-level@1.0.4)(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(supports-color@7.2.0)(typescript@5.9.3)(use-sync-external-store@1.7.0(react@18.3.1)) devDependencies: + '@astrojs/check': + specifier: ^0.9.4 + version: 0.9.12(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@5.9.3) + '@astrojs/sitemap': + specifier: ^3.2.1 + version: 3.7.4 '@tinacms/cli': specifier: ^4.0.1 version: 4.0.1(@codemirror/language@6.0.0)(@types/node@24.19.2)(abstract-level@1.0.4)(immer@10.2.0)(jiti@1.21.7)(lightningcss@1.33.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.64.5)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(supports-color@7.2.0)(use-sync-external-store@1.7.0(react@18.3.1))(yaml@2.9.1) '@types/node': specifier: ^24.12.2 version: 24.19.2 + eslint: + specifier: ^9.39.4 + version: 9.39.5(jiti@1.21.7)(supports-color@7.2.0) eslint-config-prettier: specifier: ^9.1.2 version: 9.1.2(eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0)) + eslint-plugin-astro: + specifier: ^1.3.1 + version: 1.7.0(eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0) husky: specifier: ^9.1.7 version: 9.1.7 @@ -216,6 +216,9 @@ importers: prettier: specifier: ^3.8.3 version: 3.9.10 + typescript: + specifier: ^5.8.3 + version: 5.9.3 packages: @@ -262,6 +265,16 @@ packages: '@ariakit/utils@0.2.1': resolution: {integrity: sha512-hJs71Orklyw1tW2bCrDdEDp2nEv6I2c3iP1bof88Chd3rTuJIHAp+3a3yDwU5UKjM3baB6QDrCg4x6jABgsEyw==} + '@astrojs/astro2tsx@0.1.3': + resolution: {integrity: sha512-GMDC7Eo0myBUA/QLBl0u+OcegJ8LiBhccmNZR34KmprQNP8gQUJlWlOOZWUsxNA2rNS6GuPYcGDyLoPnjmn4/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + + '@astrojs/check@0.9.12': + resolution: {integrity: sha512-hazpqxIfZWj2VhyPyR0pOEQ/IhFDM/2nIApL96zMXABdD8NrUKYDmhxTy7h+drTDl9MQG/Sd1ET/4amadVJUUA==} + hasBin: true + peerDependencies: + typescript: ^5.0.0 || ^6.0.0 + '@astrojs/compiler-binding-android-arm64@0.5.1': resolution: {integrity: sha512-nMb2nMIJtcWLNH+fV75Enmi+jp4tIOYOfsv4XtpgdOWkqc9P4uSSdK5u1xb340AzrXo5V18SxLl/nc3vcqtamQ==} engines: {node: ^20.19.0 || >=22.12.0} @@ -333,9 +346,24 @@ packages: resolution: {integrity: sha512-1k1acnX7DepIiea9U9/Y+d1hdAFfylu1ZQQkkYgRSwBOBAsXInolyZuh/2tax+83vu/A+hOYP6P3+265RvMTvw==} engines: {node: '>=22.12.0'} + '@astrojs/compiler@3.0.1': + resolution: {integrity: sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==} + '@astrojs/internal-helpers@0.12.0': resolution: {integrity: sha512-pKPuwCDtO0L7zgmt1JGd9X4Aes1+0SX3IEBSqBNPHsScYdPMlfmed3Y7DTbXyF7E+8ylnb563o/0OzGQPOFehw==} + '@astrojs/language-server@2.17.3': + resolution: {integrity: sha512-QIAFu1e/4quJMTPdmBOm+ZPXc5NDGZE4/YQjgR3EgjhGLl/tdidaWJDr5WmO2lesVc+BW1qN/xNBURmuePDG2A==} + hasBin: true + peerDependencies: + prettier: ^3.0.0 + prettier-plugin-astro: '>=0.11.0' + peerDependenciesMeta: + prettier: + optional: true + prettier-plugin-astro: + optional: true + '@astrojs/markdown-satteri@0.4.3': resolution: {integrity: sha512-PFbEHPnwUlLvpXd7RXrrKM+j12akF4bG+DSuNuoN+3eiwjOwp4HaPi+QQdbkBV7QEYXmzyKca50OJsmGxhNIUA==} @@ -357,10 +385,16 @@ packages: '@astrojs/rss@4.0.19': resolution: {integrity: sha512-e+z5wYeYtffQdHQO8c2tkSd2JEBdAuRXJV4ZEU5IxkYeE6e39woDd7nw1PH1Kk2tEYNCYuKdylnnbhGmt61awA==} + '@astrojs/sitemap@3.7.4': + resolution: {integrity: sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==} + '@astrojs/telemetry@3.3.3': resolution: {integrity: sha512-C1TLn5sPJr0x4vk56piHWKbnqlEB8BKyte5Y45V02U+D7BGO5eMqZDH5aPjnkXQWJggvmsTXxH03QMZ9NgWLzQ==} engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0} + '@astrojs/yaml2ts@0.2.4': + resolution: {integrity: sha512-8oddpOae35pJsXPQXhTkM0ypfKPskVsh2bCxRtbf7e+/Epw2nReakFYpLKjZMEr75CsoF203PMnCocpfz0s69A==} + '@babel/code-frame@7.29.7': resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} engines: {node: '>=6.9.0'} @@ -552,6 +586,27 @@ packages: peerDependencies: react: ^18.3.1 + '@emmetio/abbreviation@2.3.3': + resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==} + + '@emmetio/css-abbreviation@2.1.8': + resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==} + + '@emmetio/css-parser@0.4.1': + resolution: {integrity: sha512-2bC6m0MV/voF4CTZiAbG5MWKbq5EBmDPKu9Sb7s7nVcEzNQlrZP6mFFFlIaISM8X6514H9shWMme1fCm8cWAfQ==} + + '@emmetio/html-matcher@1.3.0': + resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==} + + '@emmetio/scanner@1.0.4': + resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==} + + '@emmetio/stream-reader-utils@0.1.0': + resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==} + + '@emmetio/stream-reader@2.2.0': + resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==} + '@emnapi/core@1.11.1': resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} @@ -791,9 +846,6 @@ packages: '@floating-ui/utils@0.2.12': resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} - '@georgedoescode/generative-utils@1.0.38': - resolution: {integrity: sha512-TrubU77D6D2RHREzOGU2OqDeHZqptHhyTvPzQ5YybPgNi2CpoRkAiAg80bu50W3RG+X45DD/9xF0nCs1tpd56g==} - '@graphiql/plugin-doc-explorer@0.2.2': resolution: {integrity: sha512-0Pj0vsNFfZJZJ3moC7O9xF1Dt2KWyvdxke+cFFZQLN1L2VxdTUa4cfGSg5ujv/ikDUUyyPQNTZuyXzagM4NG5g==} peerDependencies: @@ -1201,6 +1253,13 @@ packages: os: [linux] libc: [glibc] + '@napi-rs/wasm-runtime@1.2.4': + resolution: {integrity: sha512-AJxoUD2/15ESHbvpcyjU274nsAPLuOtPHCk0vKJM5pj//Fg/B1FXNWjPnXTT9PymCYYiHo4zPj0ZomXBKhoy7g==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 + '@napi-rs/wasm-runtime@1.2.5': resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} @@ -1229,6 +1288,10 @@ packages: '@oxc-project/types@0.153.0': resolution: {integrity: sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==} + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} + '@posthog/browser-common@0.9.4': resolution: {integrity: sha512-QlG0WZFG9iTp9cmXTypB4cgnxBAD3GImrj9AwmA84uh8uy5vIVgVLjoTTdOAW29XL+kh/eLn/5ZtBQt2JQfR+w==} @@ -1989,9 +2052,6 @@ packages: '@stackblitz/sdk@1.11.1': resolution: {integrity: sha512-5wl1j3IhtmE7POTl2W9VGQdbQyBQrRsF3jcYBK+0V353AuO8H2GFZkiFNyTRxL+TDY3HIFCHc3G983Osmg76Lg==} - '@svgdotjs/svg.js@3.2.8': - resolution: {integrity: sha512-NUdbI/7FDdqGpzKmqr09IQoy9MUcrAC/3bC8gLgXi6OfJuyri450zMLvJekFUhuq3iN5gpdPjoSoStNl9Eijfg==} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0': resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} engines: {node: '>=14'} @@ -2092,9 +2152,6 @@ packages: '@tanstack/virtual-core@3.18.0': resolution: {integrity: sha512-8frWsyfyBwLGoDQ6wN6Lq3CoT8j4BPJUzE6nH4P9mruLhxPOamk82prC3JxRMLJzYnNa9ISaZ8NtfxEiOGkHEQ==} - '@timohausmann/quadtree-js@1.2.6': - resolution: {integrity: sha512-EoAoLMFV2JfSG8+8XD9xWJQdyvfEB5xNpiQWGD7rTDSbDQQV8IVpkm0uOIxwJZ+1uC9hHKri9GmJ5wBSUO4jfg==} - '@tinacms/app@2.5.14': resolution: {integrity: sha512-/iqU4pBpV4OQxyMLU4ZSioueF3Oa/w6/sjM8HMCJNV/IVz20jEJsMnUibbjkwqR81dTm+TVOShDd8/cmbGOQuQ==} peerDependencies: @@ -2304,6 +2361,9 @@ packages: '@types/prismjs@1.26.6': resolution: {integrity: sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==} + '@types/sax@1.2.7': + resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} + '@types/tern@0.23.9': resolution: {integrity: sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==} @@ -2316,6 +2376,18 @@ packages: '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@typescript-eslint/scope-manager@8.72.1': + resolution: {integrity: sha512-lC/t6eMCZZQAAKZEYGL6RDVSuFehpdmMT6h+nJIjIa6oylN/PwDgDVtEIbB7O9xFfZYtZAYLoLlDNWKJhtF+uQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.72.1': + resolution: {integrity: sha512-LmE5IhQet1BWOWEXqBrVtBPsMAOQ6Nzk35d+WLh3mk4EUF33sqlfxjio1MdYeSvKSG5skactKKuixBIKXhL4Rw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.72.1': + resolution: {integrity: sha512-SB8xqipSzZHUePCCLNeYxqnxq83X61/qzNhjQGbTfjxGZIeOEP7tBgWYX05Tcd6CgE02WdTJnh5b8kMZJ/+bnQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@udecode/cmdk@0.2.2': resolution: {integrity: sha512-9+9W/UGtE2YJNpo/gXkiqsxKsdPh9G8fGVNaRwSKE31Cjh2B5YvCwrhHvajNpDVBsdepORbSuAJ0hJ6kfxCP6w==} peerDependencies: @@ -2541,6 +2613,47 @@ packages: peerDependencies: vite: ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + '@volar/kit@2.4.30': + resolution: {integrity: sha512-VocLtumfXnqnPQEWc9Yx7uC1uOh9gyjVNlrn2+6Zx/z9aM6yTLhPK8lSqM9Ilu81XRa48I00lcYJWLi2BLxx8Q==} + peerDependencies: + typescript: <7 + + '@volar/language-core@2.4.30': + resolution: {integrity: sha512-73fjwEV8wat6aOZ6U/y/hqtE30ocrIWECg67b0txGczOMNw+MffLmvJ5fnFfN9drVUEYZzLdaNo6VAy6G6avMw==} + + '@volar/language-server@2.4.30': + resolution: {integrity: sha512-tcP9fzzUBbsLIFHhgnRU4ncQjMn9G9Vax0ffkQmdCrXVEYqRroUepmyC5AVgiju5bCiLD6a55qen5iOTQHkb3g==} + peerDependencies: + typescript: <7 + peerDependenciesMeta: + typescript: + optional: true + + '@volar/language-service@2.4.30': + resolution: {integrity: sha512-w/xDsASiqC71ggCOm7sTDXDNk/l72XEptodeRC68tgZ0e5QM4hM3zAqBGC7mBctvhrpYwKfMG+t9xcUo2hEFtA==} + peerDependencies: + typescript: <7 + peerDependenciesMeta: + typescript: + optional: true + + '@volar/source-map@2.4.30': + resolution: {integrity: sha512-zym1ob/KwDDyN+0jGVtxwbxJSRRnUvv5HspCtz3yEfVVdCG4/dzxJktMGPAgemqRuVs81O0o/y0q3qOUErR8kg==} + + '@volar/typescript@2.4.30': + resolution: {integrity: sha512-/DgA5tgYFPfrLFuSjIMXMGHk1LQv2+P8eny6+BhGNzFJELWIW7UZlc56ZLIRFhLsPpMfIFxM8/HvOPBggrjTZg==} + peerDependencies: + typescript: <7 + peerDependenciesMeta: + typescript: + optional: true + + '@vscode/emmet-helper@2.11.0': + resolution: {integrity: sha512-QLxjQR3imPZPQltfbWRnHU6JecWTF1QSWhx3GAKQpslx7y3Dp6sIIXhKjiUJ/BR9FX8PVthjr9PD6pNwOJfAzw==} + + '@vscode/l10n@0.0.18': + resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} + '@vweevers/length-prefixed-stream@1.0.0': resolution: {integrity: sha512-0LRYNcKW2t/bWJmiKYhPIUVwz4iMNpC3aPh3UdvfUS8B+68kHpdht7pPcuawb08057rXuyuxZXavcVpoVL01AA==} engines: {node: '>=12'} @@ -2579,9 +2692,25 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-i18n@4.2.0: + resolution: {integrity: sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg==} + peerDependencies: + ajv: ^8.0.0-beta.0 + ajv@6.15.0: resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + altair-express-middleware@7.3.6: resolution: {integrity: sha512-VxllMZT67KvS51HvCkvKKT6r+asj0HbbRpK1n39hQiKKVatSoB/HFmyVm8PFSm+spgxMriuXo0xHkI+/X14qUA==} engines: {node: '>= 12'} @@ -2644,6 +2773,10 @@ packages: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} + astro-eslint-parser@1.4.0: + resolution: {integrity: sha512-+QDcgc7e+au6EZ0YjMmRRjNoQo5bDMlaR45aWDoFsuxQTCM9qmCHRoiKJPELgckJ8Wmr7vcfpa9eCDHBFh6G4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + astro@7.3.8: resolution: {integrity: sha512-LHzDHSaV+YzZiR3EFndDYTLLeNeuMtP1qX1FLcCNUUHOCqTTIWPczy2UV3zpA5VqvJe5cWZolqM9Z8JFqR2i9w==} engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'} @@ -2654,6 +2787,12 @@ packages: '@astrojs/markdown-remark': optional: true + astrojs-compiler-sync@1.1.1: + resolution: {integrity: sha512-0mKvB9sDQRIZPsEJadw6OaFbGJ92cJPPR++ICca9XEyiUAZqgVuk25jNmzHPT0KF80rI94trSZrUR5iHFXGGOQ==} + engines: {node: ^18.18.0 || >=20.9.0} + peerDependencies: + '@astrojs/compiler': '>=0.27.0' + async-lock@1.4.1: resolution: {integrity: sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==} @@ -2853,6 +2992,10 @@ packages: peerDependencies: typanion: '*' + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + clsx@1.2.1: resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} engines: {node: '>=6'} @@ -3340,6 +3483,9 @@ packages: electron-to-chromium@1.5.452: resolution: {integrity: sha512-cVvk1YBSj6571VmV6hdJTqj94Y79xSu8cj6Y9t6ae4Y4431z8/7EJFvu3rVp90xhfuv9BpPKUmaLfTo4+FOGBg==} + emmet@2.4.11: + resolution: {integrity: sha512-23QPJB3moh/U9sT4rQzGgeyyGIrcM+GH5uVYg2C6wZIxAIJq7Ng3QLT79tl8FUwDXhyq9SusfknOrofAKqvgyQ==} + emoji-regex-xs@1.0.0: resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==} @@ -3360,6 +3506,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + environment@1.1.0: resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} engines: {node: '>=18'} @@ -3408,12 +3558,24 @@ packages: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + eslint-compat-utils@0.6.5: + resolution: {integrity: sha512-vAUHYzue4YAa2hNACjB8HvUQj5yehAZgiClyFVVom9cP8z5NSFq3PwB/TtJslN2zAMgRX6FCFCjYBbQh71g5RQ==} + engines: {node: '>=12'} + peerDependencies: + eslint: '>=6.0.0' + eslint-config-prettier@9.1.2: resolution: {integrity: sha512-iI1f+D2ViGn+uvv5HuHVUamg8ll4tN+JRHGc6IJi4TP9Kl976C57fzPXgseXNs8v0iA8aSJpHsTWjDb9QJamGQ==} hasBin: true peerDependencies: eslint: '>=7.0.0' + eslint-plugin-astro@1.7.0: + resolution: {integrity: sha512-89xpAn528UKCdmyysbg0AHHqi6sqcK89wXnJIpu4F0mFBN03zATEBNK7pRtMfl6gwtMOm5ECXs+Wz5qDHhwTFw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: '>=8.57.0' + eslint-scope@8.4.0: resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3426,6 +3588,10 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + 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} @@ -3530,6 +3696,9 @@ packages: fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} + fast-uri@3.1.9: + resolution: {integrity: sha512-hS/0Wt3Ya043oKXs0sIxrMpKQITXhMLIrVAKKXi4gozGC9v7YRWVnXIZzjNPTO02M9BdxLCWqK1yRXgNziVyJQ==} + fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} @@ -3671,6 +3840,10 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.7.0: resolution: {integrity: sha512-XjH1AECxf0giL2V1aU8vKyRR2ppRUb5c0EvT7zuJTokQ74bNo52zOtghqdWIqrhUD79fo3x0WfKZdOqxF6LG1Q==} engines: {node: '>=18'} @@ -3717,6 +3890,10 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} + globals@16.5.0: + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==} + engines: {node: '>=18'} + globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} @@ -4072,17 +4249,20 @@ packages: json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - json-stringify-safe@5.0.1: - resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + jsonc-parser@2.3.1: + resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==} + jsonc-parser@3.3.1: resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} @@ -4623,6 +4803,9 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + mutative@1.1.0: resolution: {integrity: sha512-2PJADREjOusk3iJkD3rXV2YjAxTuaLxdfqtqTEt6vcY07LtEBR1seHuBHXWEIuscqRDGvbauYPs+A4Rj/KTczQ==} engines: {node: '>=14.0'} @@ -4811,6 +4994,9 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + path-data-parser@0.1.0: resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==} @@ -4936,6 +5122,10 @@ packages: resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} engines: {node: '>=4'} + postcss-selector-parser@7.1.7: + resolution: {integrity: sha512-wWBro/7hJ40ye6TPiXkUQoXKCw23xSsjriUvqd7Uls9Sso3oLiON1flc18cCdnjgCRXw4fBVqUJJeOdDTh3P3g==} + engines: {node: '>=4'} + postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} @@ -5065,14 +5255,6 @@ packages: raf@3.4.1: resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} - random-seed@0.3.0: - resolution: {integrity: sha512-y13xtn3kcTlLub3HKWXxJNeC2qK4mB59evwZ5EkeRlolx+Bp2ztF7LbcZmyCnOqlHQrLnfuNbi1sVmm9lPDlDA==} - engines: {node: '>= 0.6.0'} - - random@3.0.6: - resolution: {integrity: sha512-B53pp/8eFBxULg6sfQgjjmy3vZ2CWVt0Nk4OgkSpvmAf3VXfcEUgGASbNWbXiTiExWe8hCIf5HlddNHzrte9jg==} - engines: {node: '>=10'} - range-parser@1.2.1: resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==} engines: {node: '>= 0.6'} @@ -5282,6 +5464,16 @@ packages: remove-trailing-separator@1.1.0: resolution: {integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==} + request-light@0.5.8: + resolution: {integrity: sha512-3Zjgh+8b5fhRJBQZoy+zbVKpAQGLyka0MPgW3zruTF4dFFJ8Fqcfu9YsAvi/rvdcaTeWG3MkbZv4WKxAn/84Lg==} + + request-light@0.7.0: + resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + resize-observer-polyfill@1.5.1: resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} @@ -5381,9 +5573,6 @@ packages: resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==} engines: {node: '>=4'} - seedrandom@3.0.5: - resolution: {integrity: sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==} - semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true @@ -5477,12 +5666,14 @@ packages: simple-swizzle@0.2.4: resolution: {integrity: sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==} - simplex-noise@2.4.0: - resolution: {integrity: sha512-OjyDWm/QZjVbMrPxDVi9b2as+SeNn9EBXlrWVRlFW+TSyWMSXouDryXkQN0vf5YP+QZKobrmkvx1eQYPLtuqfw==} - sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + sitemap@9.0.1: + resolution: {integrity: sha512-S6hzjGJSG3d6if0YoF5kTyeRJvia6FSTBroE5fQ0bu1QNxyJqhhinfUsXi9fH3MgtXODWvwo2BDyQSnhPQ88uQ==} + engines: {node: '>=20.19.5', npm: '>=10.8.2'} + hasBin: true + slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} @@ -5584,6 +5775,10 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} + string-width@8.3.0: + resolution: {integrity: sha512-ZbmZM0JCihQN91dWnxoipT2KOEyHqEyfRXUyjuRhW8b/xnqPDoq4gWEVApTVa9db2wN8mmoikgFBbjh71+cGeQ==} + engines: {node: '>=20'} + string_decoder@1.3.0: resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} @@ -5643,6 +5838,10 @@ packages: swap-case@3.0.3: resolution: {integrity: sha512-6p4op8wE9CQv7uDFzulI6YXUw4lD9n4oQierdbFThEKVWVQcbQcUjdP27W8XE7V4QnWmnq9jueSHceyyQnqQVA==} + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + tabbable@6.5.0: resolution: {integrity: sha512-wieBHXygIm7OyQOu5hQlkk62/WyCFYGlWg7L6/ZCUZwx0o398Zkn4pVmMyfYhfMG8kGrj/Krt8eIk6UKC6VzwA==} @@ -5781,10 +5980,11 @@ packages: peerDependencies: typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} - engines: {node: '>=14.17'} - hasBin: true + typesafe-path@0.2.2: + resolution: {integrity: sha512-OJabfkAg1WLZSqJAJ0Z6Sdt3utnbzr/jh+NAHoyWHJe8CMSy79Gm085094M9nvTPy22KzTVn5Zq5mbapCI/hPA==} + + typescript-auto-import-cache@0.3.6: + resolution: {integrity: sha512-RpuHXrknHdVdK7wv/8ug3Fr0WNsNi5l5aB8MYYuXhq2UH5lnEB1htJ1smhtD5VeCsGr2p8mUDtd83LCQDFVgjQ==} typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} @@ -6134,9 +6334,117 @@ packages: vite: optional: true + volar-service-css@0.0.71: + resolution: {integrity: sha512-wRRFt9BpjMKCazcgOh67MSjUjiWUCAh99DyYSDIOTuxaRjEtDC7PpB0k1Y1wbJIW/pVtMUSVbpPo3UGSm0Byxw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-emmet@0.0.71: + resolution: {integrity: sha512-zqjzt6bN95e3CUstBm0PBFAJnrfz0ZAARka87fart46/gNCLLuP3Vujy8V/J8HEziTFLnfkgIASLFYPUhonJcA==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-html@0.0.71: + resolution: {integrity: sha512-e8tHPhgQ7ooLfudAEIku+kgd9pWkq3SSz8RbnQDI1+Eb8wbenkLGHqoirLqz5ORLV6wIMr2Iv08RWBG5eOcgpw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + volar-service-prettier@0.0.71: + resolution: {integrity: sha512-Rz7JVH3qD108UCdmIEiZvOBNljMt2nLFdbN8AXcDfn7xD9F5I2aCIsDVqBbXw21PsnxG0b7MfwtNF+zPS/NKUg==} + peerDependencies: + '@volar/language-service': ~2.4.0 + prettier: ^2.2 || ^3.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + prettier: + optional: true + + volar-service-typescript-twoslash-queries@0.0.71: + resolution: {integrity: sha512-9K2k72s4n7rV9s4bX0MyjbX9iBribvKZbBJKuEmTCZfeWJXs6Yh7bGpY4eoc7UufAjvpheBqwyZCOIPBvxCv0A==} + peerDependencies: + '@volar/language-service': ~2.4.0 + typescript: '*' + peerDependenciesMeta: + '@volar/language-service': + optional: true + typescript: + optional: true + + volar-service-typescript@0.0.71: + resolution: {integrity: sha512-yTtM/BVT6hoyEYnDtaCyAtNhdNeS/mhTTABlBOdw3NNiRBUin3IznFJpgfjer4c6RYopiPjjQjc9VFhxVl1mLw==} + peerDependencies: + '@volar/language-service': ~2.4.0 + typescript: '*' + peerDependenciesMeta: + '@volar/language-service': + optional: true + typescript: + optional: true + + volar-service-yaml@0.0.71: + resolution: {integrity: sha512-qYGWGuVpUTnZGu5P/CR4KLK4aIR8RrcVnmfZ2eRcj9q/I8VZCoC5yy9FtEvfNvnDp4MU17yhdJcvpQPIqhJS2Q==} + peerDependencies: + '@volar/language-service': ~2.4.0 + peerDependenciesMeta: + '@volar/language-service': + optional: true + + vscode-css-languageservice@6.3.10: + resolution: {integrity: sha512-eq5N9Er3fC4vA9zd9EFhyBG90wtCCuXgRSpAndaOgXMh1Wgep5lBgRIeDgjZBW9pa+332yC9+49cZMW8jcL3MA==} + + vscode-html-languageservice@5.6.2: + resolution: {integrity: sha512-ulCrSnFnfQ16YzvwnYUgEbUEl/ZG7u2eV27YhvLObSHKkb8fw1Z9cgsnUwjTEeDIdJDoTDTDpxuhQwoenoLNMg==} + + vscode-json-languageservice@4.1.8: + resolution: {integrity: sha512-0vSpg6Xd9hfV+eZAaYN63xVVMOTmJ4GgHxXnkLCh+9RsQBkWKIghzLhW2B9ebfG+LQQg8uLtsQ2aUKjTgE+QOg==} + engines: {npm: '>=7.0.0'} + + vscode-jsonrpc@10.0.0: + resolution: {integrity: sha512-USSfxg0vDIpTQqlQBGxF3mBARyoS8cU7LHLpbYNh6dOJt32dlskxPWB0Irrh5TllTmyf7oNLAvqDqzklbwwnpA==} + engines: {node: '>=14.17.0'} + + vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + + vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + + vscode-languageserver-protocol@3.18.5: + resolution: {integrity: sha512-FW4fBMzZ99N8xeob4py0l050wgCoRgTpEq5Xcsb9lM1bc29UKGR/wSV+4knaqFxssFHajy7OzNiKP/m3U1ZEuA==} + + vscode-languageserver-textdocument@1.0.16: + resolution: {integrity: sha512-qeNEuOi9a3qkqRf7Gfez2WL2VwlBTLCNekHBGO9kxPVUp9XuY15yfTJ9jwvOwKI0I2MhUUfZq95NSp+LK1CLQg==} + + vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + vscode-languageserver-types@3.18.4: resolution: {integrity: sha512-nQsacoiijvl0fRf2q28uFDrAVwRhdCa3QveiF7/CX0r18mLR5FU/1WskSsCKOjmEbtteKUnY8x8Yzxop+k0zwg==} + vscode-languageserver-types@3.18.5: + resolution: {integrity: sha512-kPd6+JQNz3HMJvjKlqUxERSlZHAntl/aGpsk7ImwIh0ewDKDcjgAEyVSYciPiOJD3ftbK9IrfiqUeTZLSbCizw==} + + vscode-languageserver@9.0.1: + resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==} + hasBin: true + + vscode-nls@5.2.0: + resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==} + + vscode-uri@3.2.0: + resolution: {integrity: sha512-m2gXo3bn0G1kT9InzMf07fTbqMbGtyckj3bH5ktLO+1Ssv+yiATZ4dhwaQv9UZWxJh6E9IFGnQyjgWVDWVBDrg==} + w3c-keyname@2.2.8: resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} @@ -6176,9 +6484,22 @@ packages: xxhash-wasm@1.1.0: resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + yaml-language-server@1.23.0: + resolution: {integrity: sha512-3qVyCOexLCWw06PQa5kRPwvMWMZ/eZeCRWUvgD6a0OkqL/4iCnxy2WumbWifa937Uo5xhyWJ0uxlU39ljhNh7A==} + hasBin: true + + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + engines: {node: '>= 14.6'} + hasBin: true + yaml@2.9.1: resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} engines: {node: '>= 14.6'} @@ -6188,6 +6509,10 @@ packages: resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yargs@18.2.0: + resolution: {integrity: sha512-9OpKOLeaoNFecEp7P6iYbzze/5CqWoH7N3SMs/6y1XF4nMvFMspEGZzJ6uFi9MmQwXhyzqYoSEKO3tvA3Z/o2w==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} @@ -6289,6 +6614,25 @@ snapshots: '@ariakit/utils@0.2.1': {} + '@astrojs/astro2tsx@0.1.3(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.3 + '@napi-rs/wasm-runtime': 1.2.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3) + transitivePeerDependencies: + - '@emnapi/runtime' + + '@astrojs/check@0.9.12(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@5.9.3)': + dependencies: + '@astrojs/language-server': 2.17.3(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@5.9.3) + chokidar: 5.0.0 + kleur: 4.1.5 + typescript: 5.9.3 + yargs: 18.2.0 + transitivePeerDependencies: + - '@emnapi/runtime' + - prettier + - prettier-plugin-astro + '@astrojs/compiler-binding-android-arm64@0.5.1': optional: true @@ -6340,6 +6684,8 @@ snapshots: dependencies: '@astrojs/compiler-binding': 0.5.1 + '@astrojs/compiler@3.0.1': {} + '@astrojs/internal-helpers@0.12.0': dependencies: '@types/hast': 3.0.5 @@ -6351,6 +6697,31 @@ snapshots: unified: 11.0.5 yaml: 2.9.1 + '@astrojs/language-server@2.17.3(@emnapi/runtime@1.11.3)(prettier@3.9.10)(typescript@5.9.3)': + dependencies: + '@astrojs/astro2tsx': 0.1.3(@emnapi/runtime@1.11.3) + '@astrojs/yaml2ts': 0.2.4 + '@volar/kit': 2.4.30(typescript@5.9.3) + '@volar/language-core': 2.4.30 + '@volar/language-server': 2.4.30(typescript@5.9.3) + '@volar/language-service': 2.4.30(typescript@5.9.3) + muggle-string: 0.4.1 + tinyglobby: 0.2.17 + volar-service-css: 0.0.71(@volar/language-service@2.4.30(typescript@5.9.3)) + volar-service-emmet: 0.0.71(@volar/language-service@2.4.30(typescript@5.9.3)) + volar-service-html: 0.0.71(@volar/language-service@2.4.30(typescript@5.9.3)) + volar-service-prettier: 0.0.71(@volar/language-service@2.4.30(typescript@5.9.3))(prettier@3.9.10) + volar-service-typescript: 0.0.71(@volar/language-service@2.4.30(typescript@5.9.3))(typescript@5.9.3) + volar-service-typescript-twoslash-queries: 0.0.71(@volar/language-service@2.4.30(typescript@5.9.3))(typescript@5.9.3) + volar-service-yaml: 0.0.71(@volar/language-service@2.4.30(typescript@5.9.3)) + vscode-html-languageservice: 5.6.2 + vscode-uri: 3.2.0 + optionalDependencies: + prettier: 3.9.10 + transitivePeerDependencies: + - '@emnapi/runtime' + - typescript + '@astrojs/markdown-satteri@0.4.3': dependencies: '@astrojs/internal-helpers': 0.12.0 @@ -6375,6 +6746,11 @@ snapshots: piccolore: 0.1.3 zod: 4.6.5 + '@astrojs/sitemap@3.7.4': + dependencies: + sitemap: 9.0.1 + zod: 4.6.5 + '@astrojs/telemetry@3.3.3': dependencies: ci-info: 4.4.0 @@ -6382,6 +6758,10 @@ snapshots: is-docker: 4.0.0 package-manager-detector: 1.9.0 + '@astrojs/yaml2ts@0.2.4': + dependencies: + yaml: 2.9.1 + '@babel/code-frame@7.29.7': dependencies: '@babel/helper-validator-identifier': 7.29.7 @@ -6596,6 +6976,29 @@ snapshots: react: 18.3.1 tslib: 2.8.1 + '@emmetio/abbreviation@2.3.3': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-abbreviation@2.1.8': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/css-parser@0.4.1': + dependencies: + '@emmetio/stream-reader': 2.2.0 + '@emmetio/stream-reader-utils': 0.1.0 + + '@emmetio/html-matcher@1.3.0': + dependencies: + '@emmetio/scanner': 1.0.4 + + '@emmetio/scanner@1.0.4': {} + + '@emmetio/stream-reader-utils@0.1.0': {} + + '@emmetio/stream-reader@2.2.0': {} + '@emnapi/core@1.11.1': dependencies: '@emnapi/wasi-threads': 1.2.2 @@ -6606,7 +7009,6 @@ snapshots: dependencies: '@emnapi/wasi-threads': 1.2.3 tslib: 2.8.1 - optional: true '@emnapi/runtime@1.11.1': dependencies: @@ -6616,7 +7018,6 @@ snapshots: '@emnapi/runtime@1.11.3': dependencies: tslib: 2.8.1 - optional: true '@emnapi/wasi-threads@1.2.2': dependencies: @@ -6626,7 +7027,6 @@ snapshots: '@emnapi/wasi-threads@1.2.3': dependencies: tslib: 2.8.1 - optional: true '@esbuild/aix-ppc64@0.28.2': optional: true @@ -6785,16 +7185,6 @@ snapshots: '@floating-ui/utils@0.2.12': {} - '@georgedoescode/generative-utils@1.0.38': - dependencies: - '@timohausmann/quadtree-js': 1.2.6 - d3: 7.9.0 - d3-delaunay: 6.0.4 - random: 3.0.6 - random-seed: 0.3.0 - seedrandom: 3.0.5 - simplex-noise: 2.4.0 - '@graphiql/plugin-doc-explorer@0.2.2(@codemirror/language@6.0.0)(@types/node@24.19.2)(graphql@15.8.0)(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(use-sync-external-store@1.7.0(react@18.3.1))': dependencies: '@graphiql/react': 0.34.1(@codemirror/language@6.0.0)(@types/node@24.19.2)(graphql@15.8.0)(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(use-sync-external-store@1.7.0(react@18.3.1)) @@ -7226,6 +7616,12 @@ snapshots: '@napi-rs/lzma-linux-x64-gnu@1.5.1': optional: true + '@napi-rs/wasm-runtime@1.2.4(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)': + dependencies: + '@emnapi/core': 1.11.3 + '@emnapi/runtime': 1.11.3 + '@tybys/wasm-util': 0.10.4 + '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': dependencies: '@emnapi/core': 1.11.1 @@ -7258,6 +7654,8 @@ snapshots: '@oxc-project/types@0.153.0': {} + '@pkgr/core@0.3.6': {} + '@posthog/browser-common@0.9.4': dependencies: '@posthog/core': 1.58.0 @@ -7846,8 +8244,6 @@ snapshots: '@stackblitz/sdk@1.11.1': {} - '@svgdotjs/svg.js@3.2.8': {} - '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.29.7(supports-color@7.2.0))': dependencies: '@babel/core': 7.29.7(supports-color@7.2.0) @@ -7938,8 +8334,6 @@ snapshots: '@tanstack/virtual-core@3.18.0': {} - '@timohausmann/quadtree-js@1.2.6': {} - '@tinacms/app@2.5.14(@codemirror/language@6.0.0)(@types/node@24.19.2)(abstract-level@1.0.4)(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(supports-color@7.2.0)(typescript@5.9.3)(use-sync-external-store@1.7.0(react@18.3.1))(yup@1.7.1)': dependencies: '@graphiql/toolkit': 0.11.3(@types/node@24.19.2)(graphql@15.8.0) @@ -8062,34 +8456,6 @@ snapshots: - use-sync-external-store - yaml - '@tinacms/graphql@0.0.0-ffbb4fa-20260624122203(react@18.3.1)(supports-color@7.2.0)(typescript@5.6.3)': - dependencies: - '@iarna/toml': 2.2.5 - '@tinacms/mdx': 0.0.0-ffbb4fa-20260624122203(react@18.3.1)(supports-color@7.2.0)(typescript@5.6.3)(yup@1.7.1) - '@tinacms/schema-tools': 0.0.0-ffbb4fa-20260624122203(react@18.3.1)(yup@1.7.1) - abstract-level: 1.0.4 - date-fns: 2.30.0 - es-toolkit: 1.52.0 - fast-glob: 3.3.3 - fs-extra: 11.4.1 - glob-parent: 6.0.2 - graphql: 15.8.0 - gray-matter: 4.0.3 - isomorphic-git: 1.43.3 - js-sha1: 0.6.0 - js-yaml: 3.15.2 - jsonpath-plus: 10.4.0 - many-level: 2.0.0 - micromatch: 4.0.8 - normalize-path: 3.0.0 - readable-stream: 4.8.0 - yup: 1.7.1 - transitivePeerDependencies: - - react - - react-native-b4a - - supports-color - - typescript - '@tinacms/graphql@0.0.0-ffbb4fa-20260624122203(react@18.3.1)(supports-color@7.2.0)(typescript@5.9.3)': dependencies: '@iarna/toml': 2.2.5 @@ -8145,7 +8511,7 @@ snapshots: - react-native-b4a - supports-color - '@tinacms/mdx@0.0.0-ffbb4fa-20260624122203(react@18.3.1)(supports-color@7.2.0)(typescript@5.6.3)(yup@1.7.1)': + '@tinacms/mdx@0.0.0-ffbb4fa-20260624122203(react@18.3.1)(supports-color@7.2.0)(typescript@5.9.3)(yup@1.7.1)': dependencies: '@tinacms/schema-tools': 0.0.0-ffbb4fa-20260624122203(react@18.3.1)(yup@1.7.1) acorn: 8.8.2 @@ -8170,44 +8536,7 @@ snapshots: remark-gfm: 2.0.0(supports-color@7.2.0) remark-mdx: 2.3.0(supports-color@7.2.0) stringify-entities: 4.0.3 - typedoc: 0.26.11(typescript@5.6.3) - unist-util-source: 4.0.2 - unist-util-stringify-position: 3.0.3 - unist-util-visit: 4.1.2 - uvu: 0.5.6 - vfile-message: 3.1.4 - transitivePeerDependencies: - - react - - supports-color - - typescript - - yup - - '@tinacms/mdx@0.0.0-ffbb4fa-20260624122203(react@18.3.1)(supports-color@7.2.0)(typescript@5.9.3)(yup@1.7.1)': - dependencies: - '@tinacms/schema-tools': 0.0.0-ffbb4fa-20260624122203(react@18.3.1)(yup@1.7.1) - acorn: 8.8.2 - ccount: 2.0.1 - estree-util-is-identifier-name: 2.1.0 - mdast-util-compact: 4.1.1 - mdast-util-directive: 2.2.4(supports-color@7.2.0) - mdast-util-from-markdown: 1.3.0(supports-color@7.2.0) - mdast-util-gfm: 2.0.2(supports-color@7.2.0) - mdast-util-mdx-jsx: 2.1.2(supports-color@7.2.0) - mdast-util-to-markdown: 1.5.0 - micromark-extension-gfm: 2.0.3 - micromark-factory-mdx-expression: 1.0.7 - micromark-factory-space: 1.0.0 - micromark-factory-whitespace: 1.0.0 - micromark-util-character: 1.1.0 - micromark-util-symbol: 1.0.1 - micromark-util-types: 1.1.0 - parse-entities: 4.0.1 - prettier: 2.8.8 - remark: 14.0.2(supports-color@7.2.0) - remark-gfm: 2.0.0(supports-color@7.2.0) - remark-mdx: 2.3.0(supports-color@7.2.0) - stringify-entities: 4.0.3 - typedoc: 0.26.11(typescript@5.9.3) + typedoc: 0.26.11(typescript@5.9.3) unist-util-source: 4.0.2 unist-util-stringify-position: 3.0.3 unist-util-visit: 4.1.2 @@ -8272,22 +8601,6 @@ snapshots: yup: 1.7.1 zod: 3.25.76 - '@tinacms/search@0.0.0-ffbb4fa-20260624122203(abstract-level@1.0.4)(react@18.3.1)(supports-color@7.2.0)(typescript@5.6.3)(yup@1.7.1)': - dependencies: - '@tinacms/graphql': 0.0.0-ffbb4fa-20260624122203(react@18.3.1)(supports-color@7.2.0)(typescript@5.6.3) - '@tinacms/schema-tools': 0.0.0-ffbb4fa-20260624122203(react@18.3.1)(yup@1.7.1) - memory-level: 1.0.0 - search-index: 4.0.0(abstract-level@1.0.4) - sqlite-level: 2.1.1 - stopword: 3.1.5 - transitivePeerDependencies: - - abstract-level - - react - - react-native-b4a - - supports-color - - typescript - - yup - '@tinacms/search@0.0.0-ffbb4fa-20260624122203(abstract-level@1.0.4)(react@18.3.1)(supports-color@7.2.0)(typescript@5.9.3)(yup@1.7.1)': dependencies: '@tinacms/graphql': 0.0.0-ffbb4fa-20260624122203(react@18.3.1)(supports-color@7.2.0)(typescript@5.9.3) @@ -8322,7 +8635,6 @@ snapshots: '@tybys/wasm-util@0.10.4': dependencies: tslib: 2.8.1 - optional: true '@types/acorn@4.0.6': dependencies: @@ -8518,6 +8830,10 @@ snapshots: '@types/prismjs@1.26.6': {} + '@types/sax@1.2.7': + dependencies: + '@types/node': 24.19.2 + '@types/tern@0.23.9': dependencies: '@types/estree': 1.0.9 @@ -8529,6 +8845,18 @@ snapshots: '@types/unist@3.0.3': {} + '@typescript-eslint/scope-manager@8.72.1': + dependencies: + '@typescript-eslint/types': 8.72.1 + '@typescript-eslint/visitor-keys': 8.72.1 + + '@typescript-eslint/types@8.72.1': {} + + '@typescript-eslint/visitor-keys@8.72.1': + dependencies: + '@typescript-eslint/types': 8.72.1 + eslint-visitor-keys: 5.0.1 + '@udecode/cmdk@0.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-dialog': 1.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -8823,6 +9151,63 @@ snapshots: transitivePeerDependencies: - supports-color + '@volar/kit@2.4.30(typescript@5.9.3)': + dependencies: + '@volar/language-service': 2.4.30(typescript@5.9.3) + '@volar/typescript': 2.4.30(typescript@5.9.3) + typesafe-path: 0.2.2 + typescript: 5.9.3 + vscode-languageserver-textdocument: 1.0.16 + vscode-uri: 3.2.0 + + '@volar/language-core@2.4.30': + dependencies: + '@volar/source-map': 2.4.30 + + '@volar/language-server@2.4.30(typescript@5.9.3)': + dependencies: + '@volar/language-core': 2.4.30 + '@volar/language-service': 2.4.30(typescript@5.9.3) + '@volar/typescript': 2.4.30(typescript@5.9.3) + path-browserify: 1.0.1 + request-light: 0.7.0 + vscode-languageserver: 9.0.1 + vscode-languageserver-protocol: 3.18.5 + vscode-languageserver-textdocument: 1.0.16 + vscode-uri: 3.2.0 + optionalDependencies: + typescript: 5.9.3 + + '@volar/language-service@2.4.30(typescript@5.9.3)': + dependencies: + '@volar/language-core': 2.4.30 + vscode-languageserver-protocol: 3.18.5 + vscode-languageserver-textdocument: 1.0.16 + vscode-uri: 3.2.0 + optionalDependencies: + typescript: 5.9.3 + + '@volar/source-map@2.4.30': {} + + '@volar/typescript@2.4.30(typescript@5.9.3)': + dependencies: + '@volar/language-core': 2.4.30 + '@volar/language-service': 2.4.30(typescript@5.9.3) + path-browserify: 1.0.1 + vscode-uri: 3.2.0 + optionalDependencies: + typescript: 5.9.3 + + '@vscode/emmet-helper@2.11.0': + dependencies: + emmet: 2.4.11 + jsonc-parser: 2.3.1 + vscode-languageserver-textdocument: 1.0.16 + vscode-languageserver-types: 3.18.4 + vscode-uri: 3.2.0 + + '@vscode/l10n@0.0.18': {} + '@vweevers/length-prefixed-stream@1.0.0': dependencies: inherits: 2.0.4 @@ -8862,6 +9247,14 @@ snapshots: acorn@8.8.2: {} + ajv-draft-04@1.0.0(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv-i18n@4.2.0(ajv@8.20.0): + dependencies: + ajv: 8.20.0 + ajv@6.15.0: dependencies: fast-deep-equal: 3.1.3 @@ -8869,6 +9262,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.9 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + altair-express-middleware@7.3.6(supports-color@7.2.0): dependencies: altair-static: 7.3.6 @@ -8921,6 +9321,23 @@ snapshots: array-union@2.1.0: {} + astro-eslint-parser@1.4.0(supports-color@7.2.0): + dependencies: + '@astrojs/compiler': 3.0.1 + '@typescript-eslint/scope-manager': 8.72.1 + '@typescript-eslint/types': 8.72.1 + astrojs-compiler-sync: 1.1.1(@astrojs/compiler@3.0.1) + debug: 4.4.3(supports-color@7.2.0) + entities: 7.0.1 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + fast-glob: 3.3.3 + is-glob: 4.0.3 + semver: 7.8.5 + transitivePeerDependencies: + - supports-color + astro@7.3.8(@types/node@24.19.2)(esbuild@0.28.2)(jiti@1.21.7)(yaml@2.9.1): dependencies: '@astrojs/compiler-rs': 0.5.1 @@ -9010,6 +9427,11 @@ snapshots: - uploadthing - yaml + astrojs-compiler-sync@1.1.1(@astrojs/compiler@3.0.1): + dependencies: + '@astrojs/compiler': 3.0.1 + synckit: 0.11.13 + async-lock@1.4.1: {} attr-accept@2.2.5: {} @@ -9210,6 +9632,12 @@ snapshots: dependencies: typanion: 3.13.0 + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + clsx@1.2.1: {} clsx@2.1.1: {} @@ -9683,6 +10111,11 @@ snapshots: electron-to-chromium@1.5.452: {} + emmet@2.4.11: + dependencies: + '@emmetio/abbreviation': 2.3.3 + '@emmetio/css-abbreviation': 2.1.8 + emoji-regex-xs@1.0.0: {} emoji-regex@10.6.0: {} @@ -9697,6 +10130,8 @@ snapshots: entities@4.5.0: {} + entities@7.0.1: {} + environment@1.1.0: {} error-ex@1.3.4: @@ -9756,10 +10191,29 @@ snapshots: escape-string-regexp@5.0.0: {} + eslint-compat-utils@0.6.5(eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0)): + dependencies: + eslint: 9.39.5(jiti@1.21.7)(supports-color@7.2.0) + semver: 7.8.5 + eslint-config-prettier@9.1.2(eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0)): dependencies: eslint: 9.39.5(jiti@1.21.7)(supports-color@7.2.0) + eslint-plugin-astro@1.7.0(eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0))(supports-color@7.2.0): + dependencies: + '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0)) + '@jridgewell/sourcemap-codec': 1.6.0 + '@typescript-eslint/types': 8.72.1 + astro-eslint-parser: 1.4.0(supports-color@7.2.0) + eslint: 9.39.5(jiti@1.21.7)(supports-color@7.2.0) + eslint-compat-utils: 0.6.5(eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0)) + globals: 16.5.0 + postcss: 8.5.29 + postcss-selector-parser: 7.1.7 + transitivePeerDependencies: + - supports-color + eslint-scope@8.4.0: dependencies: esrecurse: 4.3.0 @@ -9769,6 +10223,8 @@ snapshots: eslint-visitor-keys@4.2.1: {} + eslint-visitor-keys@5.0.1: {} + eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0): dependencies: '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@1.21.7)(supports-color@7.2.0)) @@ -9927,6 +10383,8 @@ snapshots: dependencies: fast-string-truncated-width: 3.0.3 + fast-uri@3.1.9: {} + fast-wrap-ansi@0.2.2: dependencies: fast-string-width: 3.0.2 @@ -10067,6 +10525,8 @@ snapshots: gensync@1.0.0-beta.2: {} + get-caller-file@2.0.5: {} + get-east-asian-width@1.7.0: {} get-intrinsic@1.3.0: @@ -10113,6 +10573,8 @@ snapshots: globals@14.0.0: {} + globals@16.5.0: {} + globby@11.1.0: dependencies: array-union: 2.1.0 @@ -10429,12 +10891,14 @@ snapshots: json-schema-traverse@0.4.1: {} - json-stable-stringify-without-jsonify@1.0.1: {} + json-schema-traverse@1.0.0: {} - json-stringify-safe@5.0.1: {} + json-stable-stringify-without-jsonify@1.0.1: {} json5@2.2.3: {} + jsonc-parser@2.3.1: {} + jsonc-parser@3.3.1: {} jsonfile@6.2.1: @@ -11227,6 +11691,8 @@ snapshots: ms@2.1.3: {} + muggle-string@0.4.1: {} + mutative@1.1.0: {} mz@2.7.0: @@ -11416,6 +11882,8 @@ snapshots: parseurl@1.3.3: {} + path-browserify@1.0.1: {} + path-data-parser@0.1.0: {} path-exists@4.0.0: {} @@ -11500,6 +11968,11 @@ snapshots: cssesc: 3.0.0 util-deprecate: 1.0.2 + postcss-selector-parser@7.1.7: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + postcss-value-parser@4.2.0: {} postcss@8.5.29: @@ -11626,14 +12099,6 @@ snapshots: dependencies: performance-now: 2.1.0 - random-seed@0.3.0: - dependencies: - json-stringify-safe: 5.0.1 - - random@3.0.6: - dependencies: - seedrandom: 3.0.5 - range-parser@1.2.1: {} raw-body@2.5.3: @@ -11885,6 +12350,12 @@ snapshots: remove-trailing-separator@1.1.0: {} + request-light@0.5.8: {} + + request-light@0.7.0: {} + + require-from-string@2.0.2: {} + resize-observer-polyfill@1.5.1: {} resolve-from@4.0.0: {} @@ -12049,8 +12520,6 @@ snapshots: extend-shallow: 2.0.1 kind-of: 6.0.3 - seedrandom@3.0.5: {} - semver@6.3.1: {} semver@7.8.5: {} @@ -12214,10 +12683,15 @@ snapshots: dependencies: is-arrayish: 0.3.4 - simplex-noise@2.4.0: {} - sisteransi@1.0.5: {} + sitemap@9.0.1: + dependencies: + '@types/node': 24.19.2 + '@types/sax': 1.2.7 + arg: 5.0.2 + sax: 1.6.1 + slash@3.0.0: {} slate-dom@0.114.0(slate@0.114.0): @@ -12326,6 +12800,11 @@ snapshots: get-east-asian-width: 1.7.0 strip-ansi: 7.2.0 + string-width@8.3.0: + dependencies: + get-east-asian-width: 1.7.0 + strip-ansi: 7.2.0 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -12388,6 +12867,10 @@ snapshots: swap-case@3.0.3: {} + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + tabbable@6.5.0: {} tailwind-merge@2.6.1: {} @@ -12447,101 +12930,6 @@ snapshots: throttle-debounce@3.0.1: {} - tinacms@3.14.3(@types/node@24.19.2)(abstract-level@1.0.4)(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(supports-color@7.2.0)(typescript@5.6.3)(use-sync-external-store@1.7.0(react@18.3.1)): - dependencies: - '@ariakit/react': 0.4.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dnd-kit/sortable': 8.0.0(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@dnd-kit/utilities': 3.2.2(react@18.3.1) - '@floating-ui/dom': 1.8.0 - '@floating-ui/react-dom': 2.1.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@graphql-inspector/core': 6.4.1(graphql@15.8.0) - '@radix-ui/react-dialog': 1.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dropdown-menu': 2.1.25(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popover': 1.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-select': 2.3.8(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-separator': 1.1.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.4.0(react@18.3.1) - '@radix-ui/react-toolbar': 1.1.20(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tooltip': 1.3.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@react-hook/window-size': 3.1.1(react@18.3.1) - '@tanstack/react-table': 8.21.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tinacms/bridge': 0.3.1 - '@tinacms/mdx': 2.3.0(react@18.3.1)(supports-color@7.2.0)(yup@1.7.1) - '@tinacms/schema-tools': 2.10.1(react@18.3.1)(yup@1.7.1) - '@tinacms/search': 0.0.0-ffbb4fa-20260624122203(abstract-level@1.0.4)(react@18.3.1)(supports-color@7.2.0)(typescript@5.6.3)(yup@1.7.1) - '@udecode/cmdk': 0.2.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/cn': 48.0.3(class-variance-authority@0.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwind-merge@2.6.1) - '@udecode/plate': 48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)) - '@udecode/plate-autoformat': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-basic-marks': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-block-quote': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-break': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-code-block': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-combobox': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-dnd': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dnd-html5-backend@16.0.1)(react-dnd@16.0.1(@types/node@24.19.2)(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-floating': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-heading': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-highlight': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-horizontal-rule': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-indent-list': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-link': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-list': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-node-id': 48.0.6(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-reset-node': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-resizable': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-selection': 48.0.5(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-slash-command': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-table': 48.0.6(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@udecode/plate-trailing-block': 48.0.0(@udecode/plate@48.0.5(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(use-sync-external-store@1.7.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - class-variance-authority: 0.7.1 - clsx: 2.1.1 - cmdk: 1.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - color-string: 1.9.1 - date-fns: 4.1.0 - es-toolkit: 1.52.0 - final-form: 4.20.10 - final-form-arrays: 3.1.0(final-form@4.20.10) - final-form-set-field-data: 1.0.2(final-form@4.20.10) - graphql: 15.8.0 - graphql-tag: 2.12.7(graphql@15.8.0) - is-hotkey: 0.2.0 - lucide-react: 0.424.0(react@18.3.1) - mermaid: 11.17.2 - posthog-js: 1.438.7(react@18.3.1) - prism-react-renderer: 2.4.1(react@18.3.1) - prop-types: 15.7.2 - react: 18.3.1 - react-colorful: 5.8.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-day-picker: 9.14.0(react@18.3.1) - react-dnd: 16.0.1(@types/node@24.19.2)(react@18.3.1) - react-dnd-html5-backend: 16.0.1 - react-dom: 18.3.1(react@18.3.1) - react-dropzone: 14.2.3(react@18.3.1) - react-final-form: 6.5.9(final-form@4.20.10)(react@18.3.1) - react-router-dom: 6.30.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-use: 17.6.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - tailwind-merge: 2.6.1 - webfontloader: 1.6.28 - yup: 1.7.1 - zod: 3.25.76 - transitivePeerDependencies: - - '@types/hoist-non-react-statics' - - '@types/node' - - '@types/react' - - '@types/react-dom' - - abstract-level - - immer - - preact-render-to-string - - react-native - - react-native-b4a - - scheduler - - slate - - slate-dom - - supports-color - - typescript - - use-sync-external-store - tinacms@3.14.3(@types/node@24.19.2)(abstract-level@1.0.4)(immer@10.2.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.28.0)(slate-dom@0.114.0(slate@0.114.0))(slate@0.114.0)(supports-color@7.2.0)(typescript@5.9.3)(use-sync-external-store@1.7.0(react@18.3.1)): dependencies: '@ariakit/react': 0.4.41(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -12713,15 +13101,6 @@ snapshots: es-errors: 1.3.0 is-typed-array: 1.1.15 - typedoc@0.26.11(typescript@5.6.3): - dependencies: - lunr: 2.3.9 - markdown-it: 14.3.2 - minimatch: 9.0.9 - shiki: 1.29.2 - typescript: 5.6.3 - yaml: 2.9.1 - typedoc@0.26.11(typescript@5.9.3): dependencies: lunr: 2.3.9 @@ -12731,7 +13110,11 @@ snapshots: typescript: 5.9.3 yaml: 2.9.1 - typescript@5.6.3: {} + typesafe-path@0.2.2: {} + + typescript-auto-import-cache@0.3.6: + dependencies: + semver: 7.8.5 typescript@5.9.3: {} @@ -12977,8 +13360,116 @@ snapshots: optionalDependencies: vite: 8.3.4(@types/node@24.19.2)(esbuild@0.28.2)(jiti@1.21.7)(yaml@2.9.1) + volar-service-css@0.0.71(@volar/language-service@2.4.30(typescript@5.9.3)): + dependencies: + vscode-css-languageservice: 6.3.10 + vscode-languageserver-textdocument: 1.0.16 + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.30(typescript@5.9.3) + + volar-service-emmet@0.0.71(@volar/language-service@2.4.30(typescript@5.9.3)): + dependencies: + '@emmetio/css-parser': 0.4.1 + '@emmetio/html-matcher': 1.3.0 + '@vscode/emmet-helper': 2.11.0 + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.30(typescript@5.9.3) + + volar-service-html@0.0.71(@volar/language-service@2.4.30(typescript@5.9.3)): + dependencies: + vscode-html-languageservice: 5.6.2 + vscode-languageserver-textdocument: 1.0.16 + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.30(typescript@5.9.3) + + volar-service-prettier@0.0.71(@volar/language-service@2.4.30(typescript@5.9.3))(prettier@3.9.10): + dependencies: + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.30(typescript@5.9.3) + prettier: 3.9.10 + + volar-service-typescript-twoslash-queries@0.0.71(@volar/language-service@2.4.30(typescript@5.9.3))(typescript@5.9.3): + dependencies: + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.30(typescript@5.9.3) + typescript: 5.9.3 + + volar-service-typescript@0.0.71(@volar/language-service@2.4.30(typescript@5.9.3))(typescript@5.9.3): + dependencies: + path-browserify: 1.0.1 + semver: 7.8.5 + typescript-auto-import-cache: 0.3.6 + vscode-languageserver-textdocument: 1.0.16 + vscode-nls: 5.2.0 + vscode-uri: 3.2.0 + optionalDependencies: + '@volar/language-service': 2.4.30(typescript@5.9.3) + typescript: 5.9.3 + + volar-service-yaml@0.0.71(@volar/language-service@2.4.30(typescript@5.9.3)): + dependencies: + vscode-uri: 3.2.0 + yaml-language-server: 1.23.0 + optionalDependencies: + '@volar/language-service': 2.4.30(typescript@5.9.3) + + vscode-css-languageservice@6.3.10: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.16 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.2.0 + + vscode-html-languageservice@5.6.2: + dependencies: + '@vscode/l10n': 0.0.18 + vscode-languageserver-textdocument: 1.0.16 + vscode-languageserver-types: 3.18.4 + vscode-uri: 3.2.0 + + vscode-json-languageservice@4.1.8: + dependencies: + jsonc-parser: 3.3.1 + vscode-languageserver-textdocument: 1.0.16 + vscode-languageserver-types: 3.18.4 + vscode-nls: 5.2.0 + vscode-uri: 3.2.0 + + vscode-jsonrpc@10.0.0: {} + + vscode-jsonrpc@8.2.0: {} + + vscode-languageserver-protocol@3.17.5: + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + + vscode-languageserver-protocol@3.18.5: + dependencies: + vscode-jsonrpc: 10.0.0 + vscode-languageserver-types: 3.18.5 + + vscode-languageserver-textdocument@1.0.16: {} + + vscode-languageserver-types@3.17.5: {} + vscode-languageserver-types@3.18.4: {} + vscode-languageserver-types@3.18.5: {} + + vscode-languageserver@9.0.1: + dependencies: + vscode-languageserver-protocol: 3.17.5 + + vscode-nls@5.2.0: {} + + vscode-uri@3.2.0: {} + w3c-keyname@2.2.8: {} web-vitals@6.2.1: {} @@ -13015,12 +13506,40 @@ snapshots: xxhash-wasm@1.1.0: {} + y18n@5.0.8: {} + yallist@3.1.1: {} + yaml-language-server@1.23.0: + dependencies: + '@vscode/l10n': 0.0.18 + ajv: 8.20.0 + ajv-draft-04: 1.0.0(ajv@8.20.0) + ajv-i18n: 4.2.0(ajv@8.20.0) + prettier: 3.9.10 + request-light: 0.5.8 + vscode-json-languageservice: 4.1.8 + vscode-languageserver: 9.0.1 + vscode-languageserver-textdocument: 1.0.16 + vscode-languageserver-types: 3.18.4 + vscode-uri: 3.2.0 + yaml: 2.8.3 + + yaml@2.8.3: {} + yaml@2.9.1: {} yargs-parser@22.0.0: {} + yargs@18.2.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 8.3.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + yocto-queue@0.1.0: {} yocto-queue@1.2.2: {} diff --git a/public/site.webmanifest b/public/site.webmanifest index b20abb7..d4d94db 100644 --- a/public/site.webmanifest +++ b/public/site.webmanifest @@ -1,6 +1,6 @@ { - "name": "", - "short_name": "", + "name": "Dan Matthew", + "short_name": "Dan Matthew", "icons": [ { "src": "/android-chrome-192x192.png", @@ -13,7 +13,7 @@ "type": "image/png" } ], - "theme_color": "#ffffff", - "background_color": "#ffffff", + "theme_color": "#fd7b2b", + "background_color": "#fcfcfc", "display": "standalone" } diff --git a/src/components/FormattedDate.astro b/src/components/FormattedDate.astro new file mode 100644 index 0000000..96c7c3a --- /dev/null +++ b/src/components/FormattedDate.astro @@ -0,0 +1,10 @@ +--- +interface Props { + date: Date; +} + +const { date } = Astro.props; +--- + diff --git a/src/components/Nav.astro b/src/components/Nav.astro index ba0eb4f..1ec16ce 100644 --- a/src/components/Nav.astro +++ b/src/components/Nav.astro @@ -1,28 +1,5 @@ --- const currentPath = Astro.url.pathname; - -function daysUntil(futureDate) { - // Convert input to Date if string provided - const targetDate = new Date(futureDate); - const today = new Date(); - - // Validate future date - if (targetDate < today) { - throw new Error('Please provide a future date'); - } - - // Calculate difference in milliseconds - const diffInMs = targetDate - today; - - // Convert to days and round down - const diffInDays = Math.floor(diffInMs / (1000 * 60 * 60 * 24)); - - return diffInDays; -} - -// Usage example: -// const christmas = daysUntil('2024-12-25'); -// const newYears = daysUntil(new Date(2025, 0, 1)); ---