From 80a9f2bd2488947c69d2e29f3dffcbc414cc98ed Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Tue, 13 Oct 2026 16:41:10 +0100 Subject: [PATCH] docs: web-token styles and site config (sitemap, links validator, socials) --- docs/astro.config.mjs | 19 ++- docs/package-lock.json | 151 ++++++++++++++++++++++-- docs/package.json | 2 + docs/pnpm-lock.yaml | 203 ++++++++++++++++++++++++--------- docs/src/components/Hero.astro | 4 +- docs/src/starlightRouteData.ts | 22 ++++ docs/src/stubs/app-paths.ts | 7 ++ docs/src/styles/custom.css | 26 +++-- docs/src/styles/global.css | 32 +++++- docs/src/styles/tangled.css | 22 ++++ 10 files changed, 413 insertions(+), 75 deletions(-) create mode 100644 docs/src/starlightRouteData.ts create mode 100644 docs/src/stubs/app-paths.ts diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs index b49b267b2..b3f6d7de0 100644 --- a/docs/astro.config.mjs +++ b/docs/astro.config.mjs @@ -3,6 +3,8 @@ import { fileURLToPath } from "node:url"; import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; import starlightLlmActions from "starlight-llm-actions"; +import starlightLinksValidator from "starlight-links-validator"; +import sitemap from "@astrojs/sitemap"; import svelte from "@astrojs/svelte"; import tailwindcss from "@tailwindcss/vite"; import Icons from "unplugin-icons/vite"; @@ -29,15 +31,26 @@ export default defineConfig({ title: "Tangled Docs", titleDelimiter: "·", disable404Route: true, + routeMiddleware: ["./src/starlightRouteData.ts"], + tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 2 }, plugins: [ starlightLlmActions({ renderMarkdown: "simple", linkAlternate: true, llmsTxt: { exclude: ["index"] }, }), + starlightLinksValidator(), ], description: "Documentation for Tangled — decentralized code collaboration built on the AT Protocol.", + social: [ + { icon: "x.com", label: "X", href: "https://x.com/tangled_org" }, + { + icon: "blueSky", + label: "Bluesky", + href: "https://bsky.app/profile/tangled.org", + }, + ], favicon: "/favicon.svg", head: [ { @@ -108,9 +121,8 @@ export default defineConfig({ "guides/repositories", "guides/pull-requests", "guides/access", - "guides/social", + "guides/vouching", "guides/notifications", - "guides/strings", "guides/organizations", "guides/signing-commits", "guides/importing", @@ -193,6 +205,7 @@ export default defineConfig({ }, ], }), + sitemap(), svelte(), ], vite: { @@ -202,6 +215,8 @@ export default defineConfig({ alias: { $lib: webLib, "$icon/": "~icons/lucide/", + // routing is sveltekit-only; components that build hrefs import it + "$app/paths": fileURLToPath(new URL("./src/stubs/app-paths.ts", import.meta.url)), }, // web/ has no node_modules in the nix build: resolve the components' // runtime deps (and svelte itself, which must be a single copy) from here diff --git a/docs/package-lock.json b/docs/package-lock.json index 4be8eca75..8da0e7ead 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -9,6 +9,7 @@ "version": "0.0.1", "dependencies": { "@astrojs/mdx": "^4.3.14", + "@astrojs/sitemap": "^3.7.4", "@astrojs/starlight": "^0.36.0", "@astrojs/starlight-tailwind": "^4.0.2", "@astrojs/svelte": "^7.2.5", @@ -20,6 +21,7 @@ "remark-gfm": "^4.0.1", "remark-stringify": "^11.0.0", "sharp": "^0.34.0", + "starlight-links-validator": "^0.19.2", "starlight-llm-actions": "0.13.0", "svelte": "^5.57.2", "tailwind-merge": "^3.7.0", @@ -129,13 +131,12 @@ } }, "node_modules/@astrojs/sitemap": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.3.tgz", - "integrity": "sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==", + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.4.tgz", + "integrity": "sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==", "license": "MIT", "dependencies": { "sitemap": "^9.0.0", - "stream-replace-string": "^2.0.0", "zod": "^4.3.6" } }, @@ -2434,6 +2435,12 @@ "undici-types": "~7.18.0" } }, + "node_modules/@types/picomatch": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-3.0.2.tgz", + "integrity": "sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==", + "license": "MIT" + }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", @@ -2526,6 +2533,21 @@ "node": ">=8" } }, + "node_modules/ansi-escapes": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", + "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", @@ -3347,6 +3369,18 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/es-module-lexer": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", @@ -3685,6 +3719,18 @@ "uncrypto": "^0.1.3" } }, + "node_modules/has-flag": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-5.0.1.tgz", + "integrity": "sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/hast-util-embedded": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", @@ -4156,6 +4202,18 @@ "url": "https://github.com/sponsors/brc-dd" } }, + "node_modules/is-absolute-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-4.0.1.tgz", + "integrity": "sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -6794,6 +6852,41 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/starlight-links-validator": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/starlight-links-validator/-/starlight-links-validator-0.19.2.tgz", + "integrity": "sha512-IHeK3R78fsmv53VfRkGbXkwK1CQEUBHM9QPzBEyoAxjZ/ssi5gjV+F4oNNUppTR48iPp+lEY0MTAmvkX7yNnkw==", + "license": "MIT", + "dependencies": { + "@types/picomatch": "^3.0.1", + "github-slugger": "^2.0.0", + "hast-util-from-html": "^2.0.3", + "hast-util-has-property": "^3.0.0", + "is-absolute-url": "^4.0.1", + "kleur": "^4.1.5", + "mdast-util-mdx-jsx": "^3.1.3", + "mdast-util-to-string": "^4.0.0", + "picomatch": "^4.0.2", + "terminal-link": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "engines": { + "node": ">=18.17.1" + }, + "peerDependencies": { + "@astrojs/starlight": ">=0.32.0", + "astro": ">=5.1.5" + } + }, + "node_modules/starlight-links-validator/node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/starlight-llm-actions": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/starlight-llm-actions/-/starlight-llm-actions-0.13.0.tgz", @@ -6846,12 +6939,6 @@ } } }, - "node_modules/stream-replace-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz", - "integrity": "sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==", - "license": "MIT" - }, "node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -6916,6 +7003,34 @@ "inline-style-parser": "0.2.7" } }, + "node_modules/supports-color": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-10.2.2.tgz", + "integrity": "sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/supports-hyperlinks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-4.6.0.tgz", + "integrity": "sha512-FL/q/YePS4tFFTNiBOR+zPk2ZrKheqNtmTJ/9OUZ4e1wKHJofDbGQSmSsxS0XNnabSkqexryCaXGvEKz1vf9UQ==", + "license": "MIT", + "dependencies": { + "has-flag": "^5.0.1", + "supports-color": "^10.2.2" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/chalk/supports-hyperlinks?sponsor=1" + } + }, "node_modules/svelte": { "version": "5.57.2", "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.57.2.tgz", @@ -7041,6 +7156,22 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/terminal-link": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-5.0.0.tgz", + "integrity": "sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==", + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "supports-hyperlinks": "^4.1.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tiny-inflate": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", diff --git a/docs/package.json b/docs/package.json index cc01790ec..831a121b7 100644 --- a/docs/package.json +++ b/docs/package.json @@ -10,6 +10,7 @@ }, "dependencies": { "@astrojs/mdx": "^4.3.14", + "@astrojs/sitemap": "^3.7.4", "@astrojs/starlight": "^0.36.0", "@astrojs/starlight-tailwind": "^4.0.2", "@astrojs/svelte": "^7.2.5", @@ -21,6 +22,7 @@ "remark-gfm": "^4.0.1", "remark-stringify": "^11.0.0", "sharp": "^0.34.0", + "starlight-links-validator": "^0.19.2", "starlight-llm-actions": "0.13.0", "svelte": "^5.57.2", "tailwind-merge": "^3.7.0", diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml index f939f0306..111283b0a 100644 --- a/docs/pnpm-lock.yaml +++ b/docs/pnpm-lock.yaml @@ -10,22 +10,25 @@ importers: dependencies: '@astrojs/mdx': specifier: ^4.3.14 - version: 4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)) + version: 4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) + '@astrojs/sitemap': + specifier: ^3.7.4 + version: 3.7.4 '@astrojs/starlight': specifier: ^0.36.0 - version: 0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)) + version: 0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) '@astrojs/starlight-tailwind': specifier: ^4.0.2 - version: 4.0.2(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)))(tailwindcss@4.3.3) + version: 4.0.2(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)))(tailwindcss@4.3.3) '@astrojs/svelte': specifier: ^7.2.5 - version: 7.2.5(@types/node@24.13.3)(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3))(jiti@2.7.0)(lightningcss@1.32.0)(svelte@5.57.2)(typescript@5.9.3) + version: 7.2.5(@types/node@24.13.3)(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1))(jiti@2.7.0)(lightningcss@1.32.0)(svelte@5.57.2)(typescript@5.9.3)(yaml@2.9.1) '@tailwindcss/vite': specifier: ^4.3.3 - version: 4.3.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 4.3.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) astro: specifier: ^5.14.0 - version: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3) + version: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1) hast-util-select: specifier: ^6.0.4 version: 6.0.4 @@ -44,9 +47,12 @@ importers: sharp: specifier: ^0.34.0 version: 0.34.5 + starlight-links-validator: + specifier: ^0.19.2 + version: 0.19.2(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)))(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) starlight-llm-actions: specifier: 0.13.0 - version: 0.13.0(@astrojs/mdx@4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)))(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)))(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3))(hast-util-select@6.0.4)(rehype-parse@9.0.1)(rehype-remark@10.0.1)(remark-gfm@4.0.1)(remark-stringify@11.0.0)(unified@11.0.5)(unist-util-remove@4.0.0)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 0.13.0(@astrojs/mdx@4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)))(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)))(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1))(hast-util-select@6.0.4)(rehype-parse@9.0.1)(rehype-remark@10.0.1)(remark-gfm@4.0.1)(remark-stringify@11.0.0)(unified@11.0.5)(unist-util-remove@4.0.0)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) svelte: specifier: ^5.57.2 version: 5.57.2 @@ -74,7 +80,7 @@ importers: version: 5.9.3 unplugin-icons: specifier: ^24.0.0 - version: 24.0.0(esbuild@0.27.7)(rollup@4.62.4)(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) + version: 24.0.0(esbuild@0.27.7)(rollup@4.62.4)(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) packages: @@ -106,6 +112,9 @@ packages: '@astrojs/sitemap@3.7.3': resolution: {integrity: sha512-f8euLVsyeAmAkSm/1M2Kb8sL8byQmfgbvBNaHFItCheTj/IpiJYSEWVcqDHZ/yEHxiS7+w87mQkzwZaPHmk5GA==} + '@astrojs/sitemap@3.7.4': + resolution: {integrity: sha512-LbKNC24bdUWcQf/pThB6qLlSqHojxGjZDURIzFocY8rlWnAn2t74nnhnK6S5x0NHriHoAduLEpVjRykmeGiVvA==} + '@astrojs/starlight-tailwind@4.0.2': resolution: {integrity: sha512-SYN/6zq6hJO5tWqbQ2tWT9/jd8ubUkzkBCcF94vByC/ZJ20Mi5GPjFvAh89Yky/aIM+jXxT6W5q4p6l58GKHiQ==} peerDependencies: @@ -1029,6 +1038,9 @@ packages: '@types/node@24.13.3': resolution: {integrity: sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==} + '@types/picomatch@3.0.2': + resolution: {integrity: sha512-n0i8TD3UDB7paoMMxA3Y65vUncFJXjcUf7lQY7YyKGl6031FNjfsLs6pdLFCy2GNFxItPJG8GvvpbZc2skH7WA==} + '@types/sax@1.2.7': resolution: {integrity: sha512-rO73L89PJxeYM3s3pPPjiPgVVcymqU490g0YO5n5By0k2Erzj6tay/4lr1CHAAU4JyOWd1rpQ8bCf6cZfHU96A==} @@ -1054,6 +1066,10 @@ packages: ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1311,6 +1327,10 @@ packages: resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} engines: {node: '>=0.12'} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + es-module-lexer@1.7.0: resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} @@ -1419,6 +1439,10 @@ packages: h3@1.15.11: resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==} + has-flag@5.0.1: + resolution: {integrity: sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA==} + engines: {node: '>=12'} + hast-util-embedded@3.0.0: resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==} @@ -1506,6 +1530,10 @@ packages: iron-webcrypto@1.2.1: resolution: {integrity: sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==} + is-absolute-url@4.0.1: + resolution: {integrity: sha512-/51/TKE88Lmm7Gc4/8btclNXWS+g50wXhYJq8HWIBAGUBnoAdRu1aXeh364t/O7wXDAcTJDP8PNuNKWUDWie+A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-alphabetical@2.0.1: resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} @@ -2104,6 +2132,13 @@ packages: space-separated-tokens@2.0.2: resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} + starlight-links-validator@0.19.2: + resolution: {integrity: sha512-IHeK3R78fsmv53VfRkGbXkwK1CQEUBHM9QPzBEyoAxjZ/ssi5gjV+F4oNNUppTR48iPp+lEY0MTAmvkX7yNnkw==} + engines: {node: '>=18.17.1'} + peerDependencies: + '@astrojs/starlight': '>=0.32.0' + astro: '>=5.1.5' + starlight-llm-actions@0.13.0: resolution: {integrity: sha512-U2Aw6iegQr9i6uQ4bteMcwcUtZ0qKgZOUA0vm3td1OL/Es0StC+ixB2yNkFswl9cXNDX1CElgx+YsivENePzGw==} engines: {node: ^22.0.0 || >=24.0.0} @@ -2165,6 +2200,14 @@ packages: style-to-object@1.0.14: resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} + supports-color@10.2.2: + resolution: {integrity: sha512-SS+jx45GF1QjgEXQx4NJZV9ImqmO2NPz5FNsIHrsDjh2YsHnawpan7SNQ1o8NuhrbHZy9AZhIoCUiCeaW/C80g==} + engines: {node: '>=18'} + + supports-hyperlinks@4.6.0: + resolution: {integrity: sha512-FL/q/YePS4tFFTNiBOR+zPk2ZrKheqNtmTJ/9OUZ4e1wKHJofDbGQSmSsxS0XNnabSkqexryCaXGvEKz1vf9UQ==} + engines: {node: '>=20'} + svelte2tsx@0.7.61: resolution: {integrity: sha512-EpQ/+UHITBULeUojx/LLD3uTYasZXcX1BrqlrzfLUnT9vdUhaOWK59a3ryWcFU8L0sY1SP+gRhJ2Beiis98+qw==} peerDependencies: @@ -2202,6 +2245,10 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} + terminal-link@5.0.0: + resolution: {integrity: sha512-qFAy10MTMwjzjU8U16YS4YoZD+NQLHzLssFMNqgravjbvIPNiqkGFR4yjhJfmY9R5OFU7+yHxc6y+uGHkKwLRA==} + engines: {node: '>=20'} + tiny-inflate@1.0.3: resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==} @@ -2499,6 +2546,11 @@ packages: xxhash-wasm@1.1.0: resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==} + yaml@2.9.1: + resolution: {integrity: sha512-3NxN8+78OdzbT7C/WjGsyfPAtJaN3FNDsWxv7Y7mcDsT/oOmgW8BpyQQFFBnvZE3j9Y2Sdz1ULFLezL7Eb2yFw==} + engines: {node: '>= 14.6'} + hasBin: true + yargs-parser@21.1.1: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} @@ -2580,12 +2632,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/mdx@4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3))': + '@astrojs/mdx@4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1))': dependencies: '@astrojs/markdown-remark': 6.3.11 '@mdx-js/mdx': 3.1.1 acorn: 8.18.0 - astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3) + astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1) es-module-lexer: 1.7.0 estree-util-visit: 2.0.0 hast-util-to-html: 9.0.5 @@ -2609,22 +2661,27 @@ snapshots: stream-replace-string: 2.0.0 zod: 4.4.3 - '@astrojs/starlight-tailwind@4.0.2(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)))(tailwindcss@4.3.3)': + '@astrojs/sitemap@3.7.4': + dependencies: + sitemap: 9.0.1 + zod: 4.4.3 + + '@astrojs/starlight-tailwind@4.0.2(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)))(tailwindcss@4.3.3)': dependencies: - '@astrojs/starlight': 0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)) + '@astrojs/starlight': 0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) tailwindcss: 4.3.3 - '@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3))': + '@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1))': dependencies: '@astrojs/markdown-remark': 6.3.11 - '@astrojs/mdx': 4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)) + '@astrojs/mdx': 4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) '@astrojs/sitemap': 3.7.3 '@pagefind/default-ui': 1.5.2 '@types/hast': 3.0.5 '@types/js-yaml': 4.0.9 '@types/mdast': 4.0.4 - astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3) - astro-expressive-code: 0.41.7(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)) + astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1) + astro-expressive-code: 0.41.7(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) bcp-47: 2.1.1 hast-util-from-html: 2.0.3 hast-util-select: 6.0.4 @@ -2647,14 +2704,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@astrojs/svelte@7.2.5(@types/node@24.13.3)(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3))(jiti@2.7.0)(lightningcss@1.32.0)(svelte@5.57.2)(typescript@5.9.3)': + '@astrojs/svelte@7.2.5(@types/node@24.13.3)(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1))(jiti@2.7.0)(lightningcss@1.32.0)(svelte@5.57.2)(typescript@5.9.3)(yaml@2.9.1)': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) - astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) + astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1) svelte: 5.57.2 svelte2tsx: 0.7.61(svelte@5.57.2)(typescript@5.9.3) typescript: 5.9.3 - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1) transitivePeerDependencies: - '@types/node' - jiti @@ -3195,25 +3252,25 @@ snapshots: dependencies: acorn: 8.18.0 - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)))(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)))(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) + '@sveltejs/vite-plugin-svelte': 5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) debug: 4.4.3 svelte: 5.57.2 - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0))': + '@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)))(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.1.1(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)))(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) debug: 4.4.3 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.21 svelte: 5.57.2 - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0) - vitefu: 1.1.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) + vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1) + vitefu: 1.1.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) transitivePeerDependencies: - supports-color @@ -3278,12 +3335,12 @@ snapshots: '@tailwindcss/oxide-win32-arm64-msvc': 4.3.3 '@tailwindcss/oxide-win32-x64-msvc': 4.3.3 - '@tailwindcss/vite@4.3.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0))': + '@tailwindcss/vite@4.3.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1))': dependencies: '@tailwindcss/node': 4.3.3 '@tailwindcss/oxide': 4.3.3 tailwindcss: 4.3.3 - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1) '@types/debug@4.1.13': dependencies: @@ -3317,6 +3374,8 @@ snapshots: dependencies: undici-types: 7.18.2 + '@types/picomatch@3.0.2': {} + '@types/sax@1.2.7': dependencies: '@types/node': 24.13.3 @@ -3337,6 +3396,10 @@ snapshots: dependencies: string-width: 4.2.3 + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.2.2: {} @@ -3360,12 +3423,12 @@ snapshots: astring@1.9.0: {} - astro-expressive-code@0.41.7(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)): + astro-expressive-code@0.41.7(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)): dependencies: - astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3) + astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1) rehype-expressive-code: 0.41.7 - astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3): + astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1): dependencies: '@astrojs/compiler': 2.13.1 '@astrojs/internal-helpers': 0.7.6 @@ -3422,8 +3485,8 @@ snapshots: unist-util-visit: 5.1.0 unstorage: 1.17.5 vfile: 6.0.3 - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0) - vitefu: 1.1.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) + vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1) + vitefu: 1.1.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) xxhash-wasm: 1.1.0 yargs-parser: 21.1.1 yocto-spinner: 0.2.3 @@ -3637,6 +3700,8 @@ snapshots: entities@6.0.1: {} + environment@1.1.0: {} + es-module-lexer@1.7.0: {} esast-util-from-estree@2.0.0: @@ -3767,10 +3832,6 @@ snapshots: extend@3.0.2: {} - fdir@6.5.0(picomatch@4.0.5): - optionalDependencies: - picomatch: 4.0.5 - fdir@6.5.0(picomatch@4.0.7): optionalDependencies: picomatch: 4.0.7 @@ -3806,6 +3867,8 @@ snapshots: ufo: 1.6.4 uncrypto: 0.1.3 + has-flag@5.0.1: {} + hast-util-embedded@3.0.0: dependencies: '@types/hast': 3.0.5 @@ -4030,6 +4093,8 @@ snapshots: iron-webcrypto@1.2.1: {} + is-absolute-url@4.0.1: {} + is-alphabetical@2.0.1: {} is-alphanumerical@2.0.1: @@ -5028,15 +5093,33 @@ snapshots: space-separated-tokens@2.0.2: {} - starlight-llm-actions@0.13.0(@astrojs/mdx@4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)))(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)))(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3))(hast-util-select@6.0.4)(rehype-parse@9.0.1)(rehype-remark@10.0.1)(remark-gfm@4.0.1)(remark-stringify@11.0.0)(unified@11.0.5)(unist-util-remove@4.0.0)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)): + starlight-links-validator@0.19.2(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)))(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)): dependencies: - '@astrojs/starlight': 0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)) - astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3) + '@astrojs/starlight': 0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) + '@types/picomatch': 3.0.2 + astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1) + github-slugger: 2.0.0 + hast-util-from-html: 2.0.3 + hast-util-has-property: 3.0.0 + is-absolute-url: 4.0.1 + kleur: 4.1.5 + mdast-util-mdx-jsx: 3.2.0 + mdast-util-to-string: 4.0.0 picomatch: 4.0.7 - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0) + terminal-link: 5.0.0 + unist-util-visit: 5.1.0 + transitivePeerDependencies: + - supports-color + + starlight-llm-actions@0.13.0(@astrojs/mdx@4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)))(@astrojs/starlight@0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)))(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1))(hast-util-select@6.0.4)(rehype-parse@9.0.1)(rehype-remark@10.0.1)(remark-gfm@4.0.1)(remark-stringify@11.0.0)(unified@11.0.5)(unist-util-remove@4.0.0)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)): + dependencies: + '@astrojs/starlight': 0.36.3(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) + astro: 5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1) + picomatch: 4.0.7 + vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1) zod: 4.4.3 optionalDependencies: - '@astrojs/mdx': 4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)) + '@astrojs/mdx': 4.3.14(astro@5.18.2(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(rollup@4.62.4)(typescript@5.9.3)(yaml@2.9.1)) hast-util-select: 6.0.4 rehype-parse: 9.0.1 rehype-remark: 10.0.1 @@ -5080,6 +5163,13 @@ snapshots: dependencies: inline-style-parser: 0.2.7 + supports-color@10.2.2: {} + + supports-hyperlinks@4.6.0: + dependencies: + has-flag: 5.0.1 + supports-color: 10.2.2 + svelte2tsx@0.7.61(svelte@5.57.2)(typescript@5.9.3): dependencies: dedent-js: 1.0.1 @@ -5128,6 +5218,11 @@ snapshots: tapable@2.3.3: {} + terminal-link@5.0.0: + dependencies: + ansi-escapes: 7.3.0 + supports-hyperlinks: 4.6.0 + tiny-inflate@1.0.3: {} tinyexec@1.3.0: {} @@ -5232,13 +5327,13 @@ snapshots: unist-util-is: 6.0.1 unist-util-visit-parents: 6.0.2 - unplugin-icons@24.0.0(esbuild@0.27.7)(rollup@4.62.4)(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)): + unplugin-icons@24.0.0(esbuild@0.27.7)(rollup@4.62.4)(svelte@5.57.2)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)): dependencies: '@antfu/install-pkg': 1.1.0 '@iconify/utils': 3.1.7 local-pkg: 1.2.1 obug: 2.2.1 - unplugin: 3.4.0(esbuild@0.27.7)(rollup@4.62.4)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)) + unplugin: 3.4.0(esbuild@0.27.7)(rollup@4.62.4)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)) optionalDependencies: svelte: 5.57.2 transitivePeerDependencies: @@ -5253,7 +5348,7 @@ snapshots: - vite - webpack - unplugin@3.4.0(esbuild@0.27.7)(rollup@4.62.4)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)): + unplugin@3.4.0(esbuild@0.27.7)(rollup@4.62.4)(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)): dependencies: '@jridgewell/remapping': 2.3.5 picomatch: 4.0.7 @@ -5261,7 +5356,7 @@ snapshots: optionalDependencies: esbuild: 0.27.7 rollup: 4.62.4 - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1) unstorage@1.17.5: dependencies: @@ -5291,11 +5386,11 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0): + vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1): dependencies: esbuild: 0.25.12 - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 + fdir: 6.5.0(picomatch@4.0.7) + picomatch: 4.0.7 postcss: 8.5.25 rollup: 4.62.4 tinyglobby: 0.2.17 @@ -5304,10 +5399,11 @@ snapshots: fsevents: 2.3.3 jiti: 2.7.0 lightningcss: 1.32.0 + yaml: 2.9.1 - vitefu@1.1.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)): + vitefu@1.1.3(vite@6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1)): optionalDependencies: - vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0) + vite: 6.4.3(@types/node@24.13.3)(jiti@2.7.0)(lightningcss@1.32.0)(yaml@2.9.1) web-namespaces@2.0.1: {} @@ -5327,6 +5423,9 @@ snapshots: xxhash-wasm@1.1.0: {} + yaml@2.9.1: + optional: true + yargs-parser@21.1.1: {} yocto-queue@1.2.2: {} diff --git a/docs/src/components/Hero.astro b/docs/src/components/Hero.astro index d3dc705c5..8fbcfd554 100644 --- a/docs/src/components/Hero.astro +++ b/docs/src/components/Hero.astro @@ -49,7 +49,7 @@ const variants = { primary: "primary", secondary: "default", minimal: "ghost" } {rawHtml &&
}
-

+

{tagline &&
}
{ @@ -106,7 +106,7 @@ const variants = { primary: "primary", secondary: "default", minimal: "ghost" } max-width: 50ch; } - h1 { + h2 { font-size: clamp(var(--sl-text-3xl), calc(0.25rem + 5vw), var(--sl-text-6xl)); line-height: var(--sl-line-height-headings); font-weight: 600; diff --git a/docs/src/starlightRouteData.ts b/docs/src/starlightRouteData.ts new file mode 100644 index 000000000..4277e4ead --- /dev/null +++ b/docs/src/starlightRouteData.ts @@ -0,0 +1,22 @@ +import { defineRouteMiddleware } from "@astrojs/starlight/route-data"; +import type { StarlightRouteData } from "@astrojs/starlight/route-data"; + +// starlight always seeds the table of contents with a link back to the page +// title, so `toc` is truthy even on pages with no headings and the "on this +// page" overview renders empty. drop it in that case. +const PAGE_TITLE_ID = "_top"; + +type TocItem = NonNullable["items"][number]; + +function hasSections(items: TocItem[]): boolean { + return items.some( + (item) => item.slug !== PAGE_TITLE_ID || hasSections(item.children), + ); +} + +export const onRequest = defineRouteMiddleware((context) => { + const route = context.locals.starlightRoute; + if (route.toc && !hasSections(route.toc.items)) { + route.toc = undefined; + } +}); diff --git a/docs/src/stubs/app-paths.ts b/docs/src/stubs/app-paths.ts new file mode 100644 index 000000000..a0a17fa8f --- /dev/null +++ b/docs/src/stubs/app-paths.ts @@ -0,0 +1,7 @@ +// the docs render the web app's components outside sveltekit, so its routing +// virtual module is stubbed here (see the alias in astro.config.mjs). only +// `resolve` is used, and only for hrefs, so returning the path is enough. +export const base = ""; +export const assets = ""; +export const resolve = (path: string): string => path; +export const asset = (path: string): string => path; diff --git a/docs/src/styles/custom.css b/docs/src/styles/custom.css index a6cadacc4..2c84c344e 100644 --- a/docs/src/styles/custom.css +++ b/docs/src/styles/custom.css @@ -63,11 +63,6 @@ color: var(--color-foreground-default); } -/* the landing title is one line, so it needs a wider column than prose */ -:root[data-has-hero] { - --sl-content-width: 48rem; -} - /* ButtonCard is sized for app chrome (12px). on the landing page the cards are content, so step them up like the welcome tiles in web: title one step above the description, the description one step below the body */ @@ -94,12 +89,29 @@ height: 1rem; } +/* + * pages without a table of contents drop `data-has-toc`, and starlight then + * lets the main pane fill the full width and centers its content, so prose + * jumps sideways between pages. size and align it as if the right column were + * still there, leaving the space reserved, so nothing shifts + */ +@media (min-width: 72rem) { + [data-has-sidebar]:not([data-has-toc]) .main-pane { + --sl-content-margin-inline: auto 0; + order: 1; + width: calc( + var(--sl-content-width) + + (100% - var(--sl-content-width) - var(--sl-sidebar-width)) / 2 + ); + } +} + /* hero tweaks for the landing page */ [data-has-hero] .hero { padding-block: 0 3rem; } -[data-has-hero] .hero h1 { - font-size: clamp(2rem, 5vw, 3.25rem); +[data-has-hero] .hero h2 { + font-size: clamp(1.75rem, 4.5vw, 2.5rem); letter-spacing: -0.02em; } diff --git a/docs/src/styles/global.css b/docs/src/styles/global.css index 7c1b9031d..3f4f67ac4 100644 --- a/docs/src/styles/global.css +++ b/docs/src/styles/global.css @@ -19,11 +19,39 @@ @import "../../../web/src/markup.css"; @source "../../../web/src/lib/components/ui"; +@source "../../../web/src/lib/components/repo"; -/* preflight's link reset, which the components assume (starlight-tailwind - doesn't restore it): links outside content take their parent's color */ +/* preflight resets the components assume. starlight-tailwind restores only the + border reset and the fonts, so the rest is put back here: links outside + content take their parent's color, and native controls -- buttons above all + -- otherwise paint from the UA, which shows up as grey chrome on components + the app styles from scratch */ @layer base { a { color: inherit; } + + button, + input, + select, + optgroup, + textarea, + ::file-selector-button { + box-sizing: border-box; + margin: 0; + padding: 0; + font: inherit; + font-feature-settings: inherit; + font-variation-settings: inherit; + letter-spacing: inherit; + color: inherit; + border-radius: 0; + background-color: transparent; + opacity: 1; + } + + button, + input:where([type="button"], [type="reset"], [type="submit"]) { + appearance: button; + } } diff --git a/docs/src/styles/tangled.css b/docs/src/styles/tangled.css index f2836dc49..4160cf3ed 100644 --- a/docs/src/styles/tangled.css +++ b/docs/src/styles/tangled.css @@ -250,6 +250,28 @@ starlight-menu-button button:focus-visible { border-spacing: 0; } +/* code blocks are the same kind of panel, so match the table radius. + markup.css gives every `pre` the smaller inline radius, which also wins over + expressive-code's own border radius, so override it here */ +.markup pre { + border-radius: var(--radius-md); +} + +/* keyboard keys follow kumo-svelte's prose `kbd`: a flat keycap -- a hairline + border on the base surface, no inset shadow -- set in mono at 0.875em */ +.markup kbd { + padding: 0.125rem 0.375rem; + border: 1px solid var(--color-border-default); + border-radius: 0.25rem; + background-color: var(--color-background-default); + color: var(--color-foreground-default); + font-family: var(--font-mono); + font-size: 0.875em; + font-weight: 400; + line-height: inherit; + box-shadow: none; +} + .markup :is(th, td) { border: 0; border-inline-end: 1px solid var(--color-border-default); -- 2.54.0