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));
---