diff --git a/markdoc.config.mjs b/markdoc.config.mjs index 77b301d..206c7cd 100644 --- a/markdoc.config.mjs +++ b/markdoc.config.mjs @@ -6,12 +6,6 @@ import { } from '@astrojs/markdoc/config'; export default defineMarkdocConfig({ - nodes: { - table: { - ...nodes.table, - render: component('./src/components/markdoc/Table.astro'), - }, - }, tags: { ElementSymbol: { render: component('./src/components/content/ElementSymbol.astro'), @@ -47,6 +41,12 @@ export default defineMarkdocConfig({ credit: { type: String }, }, }, + TableWrapper: { + render: component('./src/components/markdoc/TableWrapper.astro'), + attributes: { + variants: { type: Array }, + }, + }, Sidenote: { selfClosing: true, attributes: { diff --git a/package-lock.json b/package-lock.json index a770881..0766f5f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "0.0.61", "license": "MIT", "dependencies": { - "@astrojs/markdoc": "^0.12.9", - "@astrojs/node": "^9.5.4", - "@astrojs/preact": "^4.1.3", - "@astrojs/react": "^4.2.0", + "@astrojs/markdoc": "^1.0.0", + "@astrojs/node": "^10.0.0", + "@astrojs/preact": "^5.0.0", + "@astrojs/react": "^5.0.0", "@fontsource-variable/geist": "^5.2.8", "@fontsource-variable/geist-mono": "^5.2.7", "@fontsource/blaka": "^5.2.7", @@ -22,7 +22,7 @@ "@markdoc/markdoc": "^0.5.5", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", - "astro": "^5.2.5", + "astro": "^6.0.2", "preact": "^10.28.4", "react": "^19.0.0", "react-dom": "^19.0.0" @@ -65,126 +65,127 @@ "version": "2.13.1", "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.13.1.tgz", "integrity": "sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==", + "dev": true, "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.6.1.tgz", - "integrity": "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==", - "license": "MIT" - }, - "node_modules/@astrojs/markdoc": { - "version": "0.12.11", - "resolved": "https://registry.npmjs.org/@astrojs/markdoc/-/markdoc-0.12.11.tgz", - "integrity": "sha512-qyZu/QS5llCp3pPzF/DeJpTrnlT1OEPk73z94I4arJ+T0ALqjmVjjM3o3Px4rEU+l88OHMlkoKyFhtCTnProoQ==", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.8.0.tgz", + "integrity": "sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.6.1", - "@astrojs/markdown-remark": "6.2.1", - "@astrojs/prism": "3.2.0", - "@markdoc/markdoc": "^0.5.1", - "esbuild": "^0.25.0", + "picomatch": "^4.0.3" + } + }, + "node_modules/@astrojs/markdoc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdoc/-/markdoc-1.0.0.tgz", + "integrity": "sha512-xpOtgQeJ0YJT5lFGqNYX/MFmQhdUQOmLfEprLiYwo7F3VAooTR39bSu++8/7/Trv4iuQGOJz7wXamAq+/cTJ1A==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.8.0", + "@astrojs/markdown-remark": "7.0.0", + "@astrojs/prism": "4.0.0", + "@markdoc/markdoc": "^0.5.4", + "esbuild": "^0.27.3", "github-slugger": "^2.0.0", - "htmlparser2": "^10.0.0" + "htmlparser2": "^10.1.0" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + "node": "^20.19.1 || >=22.12.0" }, "peerDependencies": { - "astro": "^5.0.0" + "astro": "^6.0.0-alpha.0" } }, "node_modules/@astrojs/markdown-remark": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.2.1.tgz", - "integrity": "sha512-qtQXfZXeG84XSH9bMgG2e/kZfA4J7U19PKjhmFDNsKX47nautSHC0DitvxaWgQFSED66k6hWKDHLq3VKHCy/rg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-7.0.0.tgz", + "integrity": "sha512-jTAXHPy45L7o1ljH4jYV+ShtOHtyQUa1mGp3a5fJp1soX8lInuTJQ6ihmldHzVM4Q7QptU4SzIDIcKbBJO7sXQ==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.6.1", - "@astrojs/prism": "3.2.0", + "@astrojs/internal-helpers": "0.8.0", + "@astrojs/prism": "4.0.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.1.0", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.1", + "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", - "shiki": "^1.29.2", - "smol-toml": "^1.3.1", + "shiki": "^4.0.0", + "smol-toml": "^1.6.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.1", + "unist-util-visit": "^5.1.0", + "unist-util-visit-parents": "^6.0.2", "vfile": "^6.0.3" } }, "node_modules/@astrojs/node": { - "version": "9.5.4", - "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-9.5.4.tgz", - "integrity": "sha512-AbPSZsMGu8hXPR2XxV79RaKy8h6wijhtoqZGeUf4OXg2w1mxXlx4VnIc1D+QvtsgauSz7P5PLhmvf6w/J41GJg==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/node/-/node-10.0.0.tgz", + "integrity": "sha512-MYz73s+U1CxdSLoYlbB9lrgA2ryi6K8ULH2rM3SBQDFbWtXuTFiBAfG8c5BHy75tsSRn2p0rc7jdFiQAzuZOyw==", "license": "MIT", "dependencies": { - "@astrojs/internal-helpers": "0.7.5", + "@astrojs/internal-helpers": "0.8.0", "send": "^1.2.1", "server-destroy": "^1.0.1" }, "peerDependencies": { - "astro": "^5.17.3" + "astro": "^6.0.0-alpha.0" } }, - "node_modules/@astrojs/node/node_modules/@astrojs/internal-helpers": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", - "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", - "license": "MIT" - }, "node_modules/@astrojs/preact": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/@astrojs/preact/-/preact-4.1.3.tgz", - "integrity": "sha512-Ph416wbgyumkmYr7erZ83l/d+LXdZethlHRRCbgoKEn8wo3Rkq13shKFp0QYXYSDYxVaA6UBdkdimeowy/lMLQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/preact/-/preact-5.0.0.tgz", + "integrity": "sha512-KJBLQtKxmx/MnNMqDNFFp2N6o430eyx90uaLKJS4IzUnR0fOgekyGOPjE+3deuetIS+7uNcp1kALpLPG21/tFQ==", "license": "MIT", "dependencies": { - "@preact/preset-vite": "^2.10.2", - "@preact/signals": "^2.3.1", - "preact-render-to-string": "^6.6.1", - "vite": "^6.4.1" + "@astrojs/internal-helpers": "0.8.0", + "@preact/preset-vite": "^2.10.3", + "@preact/signals": "^2.8.1", + "devalue": "^5.6.3", + "preact-render-to-string": "^6.6.6", + "vite": "^7.3.1" }, "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" + "node": "^20.19.1 || >=22.12.0" }, "peerDependencies": { "preact": "^10.6.5" } }, "node_modules/@astrojs/prism": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz", - "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-4.0.0.tgz", + "integrity": "sha512-NndtNPpxaGinRpRytljGBvYHpTOwHycSZ/c+lQi5cHvkqqrHKWdkPEhImlODBNmbuB+vyQUNUDXyjzt66CihJg==", "license": "MIT", "dependencies": { - "prismjs": "^1.29.0" + "prismjs": "^1.30.0" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + "node": "^20.19.1 || >=22.12.0" } }, "node_modules/@astrojs/react": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-4.4.2.tgz", - "integrity": "sha512-1tl95bpGfuaDMDn8O3x/5Dxii1HPvzjvpL2YTuqOOrQehs60I2DKiDgh1jrKc7G8lv+LQT5H15V6QONQ+9waeQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-5.0.0.tgz", + "integrity": "sha512-OuM+0QFsoPkvv8ZB57kVLxKOqvR+84GR/Em9lh/tAL4fV4CnpBPDxc++0vd1CipH4o99Is7GribuTHFy3doF6g==", "license": "MIT", "dependencies": { - "@vitejs/plugin-react": "^4.7.0", + "@astrojs/internal-helpers": "0.8.0", + "@vitejs/plugin-react": "^5.1.4", + "devalue": "^5.6.3", "ultrahtml": "^1.6.0", - "vite": "^6.4.1" + "vite": "^7.3.1" }, "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" + "node": "^20.19.1 || >=22.12.0" }, "peerDependencies": { "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", @@ -638,6 +639,25 @@ "node": ">=18" } }, + "node_modules/@clack/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.1.0.tgz", + "integrity": "sha512-SVcm4Dqm2ukn64/8Gub2wnlA5nS2iWJyCkdNHcvNHPIeBTGojpdJ+9cZKwLfmqy7irD4N5qLteSilJlE0WLAtA==", + "license": "MIT", + "dependencies": { + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.1.0.tgz", + "integrity": "sha512-pkqbPGtohJAvm4Dphs2M8xE29ggupihHdy1x84HNojZuMtFsHiUlRvqD24tM2+XmI+61LlfNceM3Wr7U5QES5g==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.1.0", + "sisteransi": "^1.0.5" + } + }, "node_modules/@csstools/cascade-layer-name-parser": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-3.0.0.tgz", @@ -2143,9 +2163,9 @@ "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", "cpu": [ "ppc64" ], @@ -2159,9 +2179,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", "cpu": [ "arm" ], @@ -2175,9 +2195,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", "cpu": [ "arm64" ], @@ -2191,9 +2211,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", "cpu": [ "x64" ], @@ -2207,9 +2227,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", "cpu": [ "arm64" ], @@ -2223,9 +2243,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", "cpu": [ "x64" ], @@ -2239,9 +2259,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", "cpu": [ "arm64" ], @@ -2255,9 +2275,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", "cpu": [ "x64" ], @@ -2271,9 +2291,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", "cpu": [ "arm" ], @@ -2287,9 +2307,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", "cpu": [ "arm64" ], @@ -2303,9 +2323,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", "cpu": [ "ia32" ], @@ -2319,9 +2339,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", "cpu": [ "loong64" ], @@ -2335,9 +2355,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", "cpu": [ "mips64el" ], @@ -2351,9 +2371,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", "cpu": [ "ppc64" ], @@ -2367,9 +2387,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", "cpu": [ "riscv64" ], @@ -2383,9 +2403,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", "cpu": [ "s390x" ], @@ -2399,9 +2419,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", "cpu": [ "x64" ], @@ -2415,9 +2435,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", "cpu": [ "arm64" ], @@ -2431,9 +2451,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", "cpu": [ "x64" ], @@ -2447,9 +2467,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", "cpu": [ "arm64" ], @@ -2463,9 +2483,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", "cpu": [ "x64" ], @@ -2479,9 +2499,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", "cpu": [ "arm64" ], @@ -2495,9 +2515,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", "cpu": [ "x64" ], @@ -2511,9 +2531,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", "cpu": [ "arm64" ], @@ -2527,9 +2547,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", "cpu": [ "ia32" ], @@ -2543,9 +2563,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", "cpu": [ "x64" ], @@ -5471,9 +5491,9 @@ } }, "node_modules/@rolldown/pluginutils": { - "version": "1.0.0-beta.27", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", - "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", "license": "MIT" }, "node_modules/@rollup/pluginutils": { @@ -5505,9 +5525,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "cpu": [ "arm" ], @@ -5518,9 +5538,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "cpu": [ "arm64" ], @@ -5531,9 +5551,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], @@ -5544,9 +5564,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], @@ -5557,9 +5577,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "cpu": [ "arm64" ], @@ -5570,9 +5590,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], @@ -5583,9 +5603,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], @@ -5596,9 +5616,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ "arm" ], @@ -5609,9 +5629,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], @@ -5622,9 +5642,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ "arm64" ], @@ -5635,9 +5655,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", "cpu": [ "loong64" ], @@ -5648,9 +5668,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ "loong64" ], @@ -5661,9 +5681,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", "cpu": [ "ppc64" ], @@ -5674,9 +5694,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "cpu": [ "ppc64" ], @@ -5687,9 +5707,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", "cpu": [ "riscv64" ], @@ -5700,9 +5720,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "cpu": [ "riscv64" ], @@ -5713,9 +5733,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "cpu": [ "s390x" ], @@ -5726,9 +5746,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "cpu": [ "x64" ], @@ -5739,9 +5759,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "cpu": [ "x64" ], @@ -5752,9 +5772,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", "cpu": [ "x64" ], @@ -5765,9 +5785,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", "cpu": [ "arm64" ], @@ -5778,9 +5798,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "cpu": [ "arm64" ], @@ -5791,9 +5811,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "cpu": [ "ia32" ], @@ -5804,9 +5824,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", "cpu": [ "x64" ], @@ -5817,9 +5837,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "cpu": [ "x64" ], @@ -5830,66 +5850,97 @@ ] }, "node_modules/@shikijs/core": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", - "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.0.2.tgz", + "integrity": "sha512-hxT0YF4ExEqB8G/qFdtJvpmHXBYJ2lWW7qTHDarVkIudPFE6iCIrqdgWxGn5s+ppkGXI0aEGlibI0PAyzP3zlw==", "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/primitive": "4.0.2", + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" + "hast-util-to-html": "^9.0.5" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", - "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.0.2.tgz", + "integrity": "sha512-7PW0Nm49DcoUIQEXlJhNNBHyoGMjalRETTCcjMqEaMoJRLljy1Bi/EGV3/qLBgLKQejdspiiYuHGQW6dX94Nag==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "^2.2.0" + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.4" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", - "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.0.2.tgz", + "integrity": "sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1" + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/langs": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", - "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.0.2.tgz", + "integrity": "sha512-KaXby5dvoeuZzN0rYQiPMjFoUrz4hgwIE+D6Du9owcHcl6/g16/yT5BQxSW5cGt2MZBz6Hl0YuRqf12omRfUUg==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.29.2" + "@shikijs/types": "4.0.2" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@shikijs/primitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.0.2.tgz", + "integrity": "sha512-M6UMPrSa3fN5ayeJwFVl9qWofl273wtK1VG8ySDZ1mQBfhCpdd8nEx7nPZ/tk7k+TYcpqBZzj/AnwxT9lO+HJw==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/themes": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", - "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.0.2.tgz", + "integrity": "sha512-mjCafwt8lJJaVSsQvNVrJumbnnj1RI8jbUKrPKgE6E3OvQKxnuRoBaYC51H4IGHePsGN/QtALglWBU7DoKDFnA==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.29.2" + "@shikijs/types": "4.0.2" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/types": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", - "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.0.2.tgz", + "integrity": "sha512-qzbeRooUTPnLE+sHD/Z8DStmaDgnbbc/pMrU203950aRqjX/6AFHeDYT+j00y2lPdz0ywJKx7o/7qnqTivtlXg==", "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" } }, "node_modules/@shikijs/vscode-textmate": { @@ -6480,20 +6531,20 @@ } }, "node_modules/@vitejs/plugin-react": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.7.0.tgz", - "integrity": "sha512-gUu9hwfWvvEDBBmgtAowQCojwZmJ5mcLn3aufeCsitijs3+f2NsrPtlAWIR6OPiqljl96GVCUbLe0HyqIpVaoA==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.1.4.tgz", + "integrity": "sha512-VIcFLdRi/VYRU8OL/puL7QXMYafHmqOnwTZY50U1JPlCNj30PxCMx65c494b1K9be9hX83KVt0+gTEwTWLqToA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.28.0", + "@babel/core": "^7.29.0", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", - "@rolldown/pluginutils": "1.0.0-beta.27", + "@rolldown/pluginutils": "1.0.0-rc.3", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.17.0" + "react-refresh": "^0.18.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" + "node": "^20.19.0 || >=22.12.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" @@ -6537,60 +6588,11 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -6599,18 +6601,6 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", @@ -6684,80 +6674,72 @@ } }, "node_modules/astro": { - "version": "5.17.3", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.17.3.tgz", - "integrity": "sha512-69dcfPe8LsHzklwj+hl+vunWUbpMB6pmg35mACjetxbJeUNNys90JaBM8ZiwsPK689SAj/4Zqb1ayaANls9/MA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/astro/-/astro-6.0.2.tgz", + "integrity": "sha512-aYCU9QcaV3QlOxO+JU2lR4xazVuPaH7oFhc990H/fhbWLMm1MWlRnjfnti1gYMm9N9l7gqPb3t7JsQBlUEQXIg==", "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.13.0", - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/markdown-remark": "6.3.10", + "@astrojs/compiler": "^3.0.0", + "@astrojs/internal-helpers": "0.8.0", + "@astrojs/markdown-remark": "7.0.0", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", + "@clack/prompts": "^1.0.1", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", - "acorn": "^8.15.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", - "boxen": "8.0.1", - "ci-info": "^4.3.1", + "ci-info": "^4.4.0", "clsx": "^2.1.1", - "common-ancestor-path": "^1.0.1", + "common-ancestor-path": "^2.0.0", "cookie": "^1.1.1", - "cssesc": "^3.0.0", - "debug": "^4.4.3", - "deterministic-object-hash": "^2.0.2", - "devalue": "^5.6.2", + "devalue": "^5.6.3", "diff": "^8.0.3", "dlv": "^1.1.3", "dset": "^3.1.4", - "es-module-lexer": "^1.7.0", + "es-module-lexer": "^2.0.0", "esbuild": "^0.27.3", - "estree-walker": "^3.0.3", "flattie": "^1.1.1", - "fontace": "~0.4.0", + "fontace": "~0.4.1", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", - "import-meta-resolve": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", - "magicast": "^0.5.1", + "magicast": "^0.5.2", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", - "p-limit": "^6.2.0", - "p-queue": "^8.1.1", + "obug": "^2.1.1", + "p-limit": "^7.3.0", + "p-queue": "^9.1.0", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", - "prompts": "^2.4.2", "rehype": "^13.0.2", - "semver": "^7.7.3", - "shiki": "^3.21.0", + "semver": "^7.7.4", + "shiki": "^4.0.0", "smol-toml": "^1.6.0", "svgo": "^4.0.0", + "tinyclip": "^0.1.6", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", - "unifont": "~0.7.3", - "unist-util-visit": "^5.0.0", + "unifont": "~0.7.4", + "unist-util-visit": "^5.1.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", - "vite": "^6.4.1", - "vitefu": "^1.1.1", + "vite": "^7.3.1", + "vitefu": "^1.1.2", "xxhash-wasm": "^1.1.0", - "yargs-parser": "^21.1.1", - "yocto-spinner": "^0.2.3", - "zod": "^3.25.76", - "zod-to-json-schema": "^3.25.1", - "zod-to-ts": "^1.2.0" + "yargs-parser": "^22.0.0", + "zod": "^4.3.6" }, "bin": { - "astro": "astro.js" + "astro": "bin/astro.mjs" }, "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0", + "node": "^20.19.1 || >=22.12.0", "npm": ">=9.6.5", "pnpm": ">=7.1.0" }, @@ -6870,600 +6852,12 @@ "node": ">=10" } }, - "node_modules/astro/node_modules/@astrojs/internal-helpers": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.5.tgz", - "integrity": "sha512-vreGnYSSKhAjFJCWAwe/CNhONvoc5lokxtRoZims+0wa3KbHBdPHSSthJsKxPd8d/aic6lWKpRTYGY/hsgK6EA==", + "node_modules/astro/node_modules/@astrojs/compiler": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-3.0.0.tgz", + "integrity": "sha512-MwAbDE5mawZ1SS+D8qWiHdprdME5Tlj2e0YjxnEICvcOpbSukNS7Sa7hA5PK+6RrmUr/t6Gi5YgrdZKjbO/WPQ==", "license": "MIT" }, - "node_modules/astro/node_modules/@astrojs/markdown-remark": { - "version": "6.3.10", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.10.tgz", - "integrity": "sha512-kk4HeYR6AcnzC4QV8iSlOfh+N8TZ3MEStxPyenyCtemqn8IpEATBFMTJcfrNW32dgpt6MY3oCkMM/Tv3/I4G3A==", - "license": "MIT", - "dependencies": { - "@astrojs/internal-helpers": "0.7.5", - "@astrojs/prism": "3.3.0", - "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.3", - "hast-util-to-text": "^4.0.2", - "import-meta-resolve": "^4.2.0", - "js-yaml": "^4.1.1", - "mdast-util-definitions": "^6.0.0", - "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-smartypants": "^3.0.2", - "shiki": "^3.19.0", - "smol-toml": "^1.5.2", - "unified": "^11.0.5", - "unist-util-remove-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-parents": "^6.0.2", - "vfile": "^6.0.3" - } - }, - "node_modules/astro/node_modules/@astrojs/prism": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", - "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", - "license": "MIT", - "dependencies": { - "prismjs": "^1.30.0" - }, - "engines": { - "node": "18.20.8 || ^20.3.0 || >=22.0.0" - } - }, - "node_modules/astro/node_modules/@esbuild/aix-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", - "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/android-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", - "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/android-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", - "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/android-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", - "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/darwin-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", - "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/darwin-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", - "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", - "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/freebsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", - "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-arm": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", - "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", - "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", - "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-loong64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", - "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", - "cpu": [ - "loong64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-mips64el": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", - "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", - "cpu": [ - "mips64el" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-ppc64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", - "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", - "cpu": [ - "ppc64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-riscv64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", - "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", - "cpu": [ - "riscv64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-s390x": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", - "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", - "cpu": [ - "s390x" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/linux-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", - "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", - "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/netbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", - "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", - "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/openbsd-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", - "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", - "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/sunos-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", - "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/win32-arm64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", - "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/win32-ia32": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", - "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", - "cpu": [ - "ia32" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@esbuild/win32-x64": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", - "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/astro/node_modules/@shikijs/core": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.22.0.tgz", - "integrity": "sha512-iAlTtSDDbJiRpvgL5ugKEATDtHdUVkqgHDm/gbD2ZS9c88mx7G1zSYjjOxp5Qa0eaW0MAQosFRmJSk354PRoQA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.22.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - } - }, - "node_modules/astro/node_modules/@shikijs/engine-javascript": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.22.0.tgz", - "integrity": "sha512-jdKhfgW9CRtj3Tor0L7+yPwdG3CgP7W+ZEqSsojrMzCjD1e0IxIbwUMDDpYlVBlC08TACg4puwFGkZfLS+56Tw==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.22.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.4" - } - }, - "node_modules/astro/node_modules/@shikijs/engine-oniguruma": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.22.0.tgz", - "integrity": "sha512-DyXsOG0vGtNtl7ygvabHd7Mt5EY8gCNqR9Y7Lpbbd/PbJvgWrqaKzH1JW6H6qFkuUa8aCxoiYVv8/YfFljiQxA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.22.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/astro/node_modules/@shikijs/langs": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.22.0.tgz", - "integrity": "sha512-x/42TfhWmp6H00T6uwVrdTJGKgNdFbrEdhaDwSR5fd5zhQ1Q46bHq9EO61SCEWJR0HY7z2HNDMaBZp8JRmKiIA==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.22.0" - } - }, - "node_modules/astro/node_modules/@shikijs/themes": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.22.0.tgz", - "integrity": "sha512-o+tlOKqsr6FE4+mYJG08tfCFDS+3CG20HbldXeVoyP+cYSUxDhrFf3GPjE60U55iOkkjbpY2uC3It/eeja35/g==", - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.22.0" - } - }, - "node_modules/astro/node_modules/@shikijs/types": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.22.0.tgz", - "integrity": "sha512-491iAekgKDBFE67z70Ok5a8KBMsQ2IJwOWw3us/7ffQkIBCyOQfm/aNwVMBUriP02QshIfgHCBSIYAl3u2eWjg==", - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/astro/node_modules/esbuild": { - "version": "0.27.3", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", - "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.3", - "@esbuild/android-arm": "0.27.3", - "@esbuild/android-arm64": "0.27.3", - "@esbuild/android-x64": "0.27.3", - "@esbuild/darwin-arm64": "0.27.3", - "@esbuild/darwin-x64": "0.27.3", - "@esbuild/freebsd-arm64": "0.27.3", - "@esbuild/freebsd-x64": "0.27.3", - "@esbuild/linux-arm": "0.27.3", - "@esbuild/linux-arm64": "0.27.3", - "@esbuild/linux-ia32": "0.27.3", - "@esbuild/linux-loong64": "0.27.3", - "@esbuild/linux-mips64el": "0.27.3", - "@esbuild/linux-ppc64": "0.27.3", - "@esbuild/linux-riscv64": "0.27.3", - "@esbuild/linux-s390x": "0.27.3", - "@esbuild/linux-x64": "0.27.3", - "@esbuild/netbsd-arm64": "0.27.3", - "@esbuild/netbsd-x64": "0.27.3", - "@esbuild/openbsd-arm64": "0.27.3", - "@esbuild/openbsd-x64": "0.27.3", - "@esbuild/openharmony-arm64": "0.27.3", - "@esbuild/sunos-x64": "0.27.3", - "@esbuild/win32-arm64": "0.27.3", - "@esbuild/win32-ia32": "0.27.3", - "@esbuild/win32-x64": "0.27.3" - } - }, - "node_modules/astro/node_modules/oniguruma-to-es": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", - "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", - "license": "MIT", - "dependencies": { - "oniguruma-parser": "^0.12.1", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, - "node_modules/astro/node_modules/regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", - "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/astro/node_modules/regex-recursion": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", - "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "license": "MIT", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, "node_modules/astro/node_modules/semver": { "version": "7.7.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", @@ -7476,22 +6870,6 @@ "node": ">=10" } }, - "node_modules/astro/node_modules/shiki": { - "version": "3.22.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.22.0.tgz", - "integrity": "sha512-LBnhsoYEe0Eou4e1VgJACes+O6S6QC0w71fCSp5Oya79inkwkm15gQ1UF6VtQ8j/taMDh79hAB49WUk8ALQW3g==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "3.22.0", - "@shikijs/engine-javascript": "3.22.0", - "@shikijs/engine-oniguruma": "3.22.0", - "@shikijs/langs": "3.22.0", - "@shikijs/themes": "3.22.0", - "@shikijs/types": "3.22.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, "node_modules/astrojs-compiler-sync": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/astrojs-compiler-sync/-/astrojs-compiler-sync-1.1.1.tgz", @@ -7597,12 +6975,6 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, - "node_modules/base-64": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", - "integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==", - "license": "MIT" - }, "node_modules/baseline-browser-mapping": { "version": "2.9.19", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.19.tgz", @@ -7618,28 +6990,6 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "license": "ISC" }, - "node_modules/boxen": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", - "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^8.0.0", - "chalk": "^5.3.0", - "cli-boxes": "^3.0.0", - "string-width": "^7.2.0", - "type-fest": "^4.21.0", - "widest-line": "^5.0.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/brace-expansion": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", @@ -7728,18 +7078,6 @@ "node": ">=6" } }, - "node_modules/camelcase": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", - "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/camelcase-css": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", @@ -7780,18 +7118,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/character-entities": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", @@ -7862,18 +7188,6 @@ "node": ">=8" } }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -7930,10 +7244,13 @@ } }, "node_modules/common-ancestor-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", - "integrity": "sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==", - "license": "ISC" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-2.0.0.tgz", + "integrity": "sha512-dnN3ibLeoRf2HNC+OlCiNc5d2zxbLJXOtiZUudNFSXZrNSydxcCsSpRzXwfu7BBWCIfHPw+xTayeBvJCP/D8Ng==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">= 18" + } }, "node_modules/compute-scroll-into-view": { "version": "3.1.1", @@ -8164,6 +7481,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, "license": "MIT", "bin": { "cssesc": "bin/cssesc" @@ -8294,22 +7612,10 @@ "node": ">=8" } }, - "node_modules/deterministic-object-hash": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/deterministic-object-hash/-/deterministic-object-hash-2.0.2.tgz", - "integrity": "sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==", - "license": "MIT", - "dependencies": { - "base-64": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/devalue": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz", - "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.3.tgz", + "integrity": "sha512-nc7XjUU/2Lb+SvEFVGcWLiKkzfw8+qHI7zn8WYXKkLMgfGSHbgCEaR6bJpev8Cm6Rmrb19Gfd/tZvGqx9is3wg==", "license": "MIT" }, "node_modules/devlop": { @@ -8447,18 +7753,6 @@ "integrity": "sha512-mMoO3uGDoiw/DmZ/YekT9gEoC0IFAXNWzYVukY8+/j0Wt8un1IDraIYGx+cMbRh+fHaCDE6Ui7zFAN8ezZSsAA==", "license": "MIT" }, - "node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "license": "MIT" - }, - "node_modules/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", - "license": "MIT" - }, "node_modules/encodeurl": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", @@ -8500,15 +7794,15 @@ } }, "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.0.0.tgz", + "integrity": "sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==", "license": "MIT" }, "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -8518,32 +7812,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, "node_modules/escalade": { @@ -8859,15 +8153,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -9180,6 +8465,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -9696,6 +8982,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "dev": true, "license": "MIT", "funding": { "type": "github", @@ -9830,6 +9117,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -10047,15 +9335,6 @@ "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/known-css-properties": { "version": "0.37.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.37.0.tgz", @@ -11450,6 +10729,16 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, + "node_modules/obug": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", + "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", + "funding": [ + "https://github.com/sponsors/sxzz", + "https://opencollective.com/debug" + ], + "license": "MIT" + }, "node_modules/ofetch": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.5.1.tgz", @@ -11486,14 +10775,14 @@ "license": "MIT" }, "node_modules/oniguruma-to-es": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", - "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.4.tgz", + "integrity": "sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==", "license": "MIT", "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" } }, "node_modules/optionator": { @@ -11521,15 +10810,15 @@ "license": "MIT" }, "node_modules/p-limit": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", - "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-7.3.0.tgz", + "integrity": "sha512-7cIXg/Z0M5WZRblrsOla88S4wAK+zOQQWeBYfV3qJuJXMr+LnbYjaadrFaS0JILfEDPVqHyKnZ1Z/1d6J9VVUw==", "license": "MIT", "dependencies": { - "yocto-queue": "^1.1.1" + "yocto-queue": "^1.2.1" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11581,28 +10870,28 @@ } }, "node_modules/p-queue": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", - "integrity": "sha512-aNZ+VfjobsWryoiPnEApGGmf5WmNsCo9xu8dfaYamG5qaLP7ClhLN6NgsFe6SwJ2UbLEBK5dv9x8Mn5+RVhMWQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-9.1.0.tgz", + "integrity": "sha512-O/ZPaXuQV29uSLbxWBGGZO1mCQXV2BLIwUr59JUU9SoH76mnYvtms7aafH/isNSNGwuEfP6W/4xD0/TJXxrizw==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" + "p-timeout": "^7.0.0" }, "engines": { - "node": ">=18" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-timeout": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", - "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-7.0.1.tgz", + "integrity": "sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==", "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12833,19 +12122,6 @@ "node": ">=6" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/property-information": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", @@ -13023,9 +12299,9 @@ } }, "node_modules/react-refresh": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", - "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", "license": "MIT", "engines": { "node": ">=0.10.0" @@ -13055,21 +12331,20 @@ } }, "node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.1.0.tgz", + "integrity": "sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==", "license": "MIT", "dependencies": { "regex-utilities": "^2.3.0" } }, "node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", "license": "MIT", "dependencies": { - "regex": "^5.1.1", "regex-utilities": "^2.3.0" } }, @@ -13339,9 +12614,9 @@ } }, "node_modules/rollup": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", - "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -13354,31 +12629,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.57.1", - "@rollup/rollup-android-arm64": "4.57.1", - "@rollup/rollup-darwin-arm64": "4.57.1", - "@rollup/rollup-darwin-x64": "4.57.1", - "@rollup/rollup-freebsd-arm64": "4.57.1", - "@rollup/rollup-freebsd-x64": "4.57.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", - "@rollup/rollup-linux-arm-musleabihf": "4.57.1", - "@rollup/rollup-linux-arm64-gnu": "4.57.1", - "@rollup/rollup-linux-arm64-musl": "4.57.1", - "@rollup/rollup-linux-loong64-gnu": "4.57.1", - "@rollup/rollup-linux-loong64-musl": "4.57.1", - "@rollup/rollup-linux-ppc64-gnu": "4.57.1", - "@rollup/rollup-linux-ppc64-musl": "4.57.1", - "@rollup/rollup-linux-riscv64-gnu": "4.57.1", - "@rollup/rollup-linux-riscv64-musl": "4.57.1", - "@rollup/rollup-linux-s390x-gnu": "4.57.1", - "@rollup/rollup-linux-x64-gnu": "4.57.1", - "@rollup/rollup-linux-x64-musl": "4.57.1", - "@rollup/rollup-openbsd-x64": "4.57.1", - "@rollup/rollup-openharmony-arm64": "4.57.1", - "@rollup/rollup-win32-arm64-msvc": "4.57.1", - "@rollup/rollup-win32-ia32-msvc": "4.57.1", - "@rollup/rollup-win32-x64-gnu": "4.57.1", - "@rollup/rollup-win32-x64-msvc": "4.57.1", + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, @@ -13588,19 +12863,22 @@ } }, "node_modules/shiki": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", - "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.0.2.tgz", + "integrity": "sha512-eAVKTMedR5ckPo4xne/PjYQYrU3qx78gtJZ+sHlXEg5IHhhoQhMfZVzetTYuaJS0L2Ef3AcCRzCHV8T0WI6nIQ==", "license": "MIT", "dependencies": { - "@shikijs/core": "1.29.2", - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/langs": "1.29.2", - "@shikijs/themes": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", + "@shikijs/core": "4.0.2", + "@shikijs/engine-javascript": "4.0.2", + "@shikijs/engine-oniguruma": "4.0.2", + "@shikijs/langs": "4.0.2", + "@shikijs/themes": "4.0.2", + "@shikijs/types": "4.0.2", + "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" + }, + "engines": { + "node": ">=20" } }, "node_modules/signal-exit": { @@ -13802,23 +13080,6 @@ "node": ">= 0.8" } }, - "node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/stringify-entities": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", @@ -13837,6 +13098,7 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -14126,7 +13388,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/sugarss/-/sugarss-5.0.1.tgz", "integrity": "sha512-ctS5RYCBVvPoZAnzIaX5QSShK8ZiZxD5HUqSxlusvEMC+QZQIPCPOIJg6aceFX+K2rf4+SH89eu++h1Zmsr2nw==", - "devOptional": true, + "dev": true, "funding": [ { "type": "opencollective", @@ -14353,6 +13615,15 @@ "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", "license": "MIT" }, + "node_modules/tinyclip": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/tinyclip/-/tinyclip-0.1.12.tgz", + "integrity": "sha512-Ae3OVUqifDw0wBriIBS7yVaW44Dp6eSHQcyq4Igc7eN2TJH/2YsicswaW+J/OuMvhpDPOKEgpAZCjkb4hpoyeA==", + "license": "MIT", + "engines": { + "node": "^16.14.0 || >= 17.3.0" + } + }, "node_modules/tinyexec": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", @@ -14472,22 +13743,11 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typescript": { "version": "5.9.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", + "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", @@ -14912,23 +14172,23 @@ } }, "node_modules/vite": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.1.tgz", - "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -14937,14 +14197,14 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", - "less": "*", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -15012,9 +14272,9 @@ } }, "node_modules/vitefu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz", - "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.2.tgz", + "integrity": "sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==", "license": "MIT", "workspaces": [ "tests/deps/*", @@ -15022,7 +14282,7 @@ "tests/projects/workspace/packages/*" ], "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-beta.0" }, "peerDependenciesMeta": { "vite": { @@ -15071,21 +14331,6 @@ "node": ">=4" } }, - "node_modules/widest-line": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", - "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", - "license": "MIT", - "dependencies": { - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/wonka": { "version": "6.3.5", "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", @@ -15102,23 +14347,6 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.2.tgz", - "integrity": "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/write-file-atomic": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-7.0.0.tgz", @@ -15197,30 +14425,13 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "license": "ISC" }, - "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", - "license": "ISC", - "optional": true, - "peer": true, - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "version": "22.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-22.0.0.tgz", + "integrity": "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==", "license": "ISC", "engines": { - "node": ">=12" + "node": "^20.19.0 || ^22.12.0 || >=23" } }, "node_modules/yjs": { @@ -15252,60 +14463,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yocto-spinner": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz", - "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==", - "license": "MIT", - "dependencies": { - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": ">=18.19" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zod-to-json-schema": { - "version": "3.25.1", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.1.tgz", - "integrity": "sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==", - "license": "ISC", - "peerDependencies": { - "zod": "^3.25 || ^4" - } - }, - "node_modules/zod-to-ts": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/zod-to-ts/-/zod-to-ts-1.2.0.tgz", - "integrity": "sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==", - "peerDependencies": { - "typescript": "^4.9.4 || ^5.0.2", - "zod": "^3" - } - }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/package.json b/package.json index 3f7b0f3..f45198e 100644 --- a/package.json +++ b/package.json @@ -8,10 +8,10 @@ "directory": "templates/astro" }, "dependencies": { - "@astrojs/markdoc": "^0.12.9", - "@astrojs/node": "^9.5.4", - "@astrojs/preact": "^4.1.3", - "@astrojs/react": "^4.2.0", + "@astrojs/markdoc": "^1.0.0", + "@astrojs/node": "^10.0.0", + "@astrojs/preact": "^5.0.0", + "@astrojs/react": "^5.0.0", "@fontsource-variable/geist": "^5.2.8", "@fontsource-variable/geist-mono": "^5.2.7", "@fontsource/blaka": "^5.2.7", @@ -21,7 +21,7 @@ "@markdoc/markdoc": "^0.5.5", "@types/react": "^19.0.8", "@types/react-dom": "^19.0.3", - "astro": "^5.2.5", + "astro": "^6.0.2", "preact": "^10.28.4", "react": "^19.0.0", "react-dom": "^19.0.0" diff --git a/src/components/markdoc/Table.astro b/src/components/markdoc/Table.astro deleted file mode 100644 index 8f858bd..0000000 --- a/src/components/markdoc/Table.astro +++ /dev/null @@ -1,16 +0,0 @@ ---- ---- - -
- - -
-
- - diff --git a/src/components/markdoc/TableWrapper.astro b/src/components/markdoc/TableWrapper.astro new file mode 100644 index 0000000..beeeb79 --- /dev/null +++ b/src/components/markdoc/TableWrapper.astro @@ -0,0 +1,19 @@ +--- +interface Props { + variants: string[]; +} +const { variants = [] } = Astro.props; +const classes = variants.filter((v) => v !== "default") +--- + +
+ +
+ + diff --git a/src/content/config.ts b/src/content.config.ts similarity index 100% rename from src/content/config.ts rename to src/content.config.ts diff --git a/src/content/articles/domain/index.mdoc b/src/content/articles/domain/index.mdoc index 416c5e6..2a66b27 100644 --- a/src/content/articles/domain/index.mdoc +++ b/src/content/articles/domain/index.mdoc @@ -1,6 +1,6 @@ --- title: Domain -subtitle: What the earth provides +subtitle: Preparing the Ground summary: >- Climate, topography, biome, features, resources. The ground beneath; what grows, what weathers, what the soil yields. The material conditions that force @@ -30,8 +30,8 @@ seo: - **Climate =>** 10 types; simplified Köppen-Geiger; temperature, precipitation, characteristics - **Topography =>** 6 types; elevation and terrain character - **Biome =>** 10 types; dominant vegetation; -- **Features**{% Sidenote #features-resources title="Relevance of features & resources" marker="⋄" content="Features and resources are only relevant on the locality level" type="optional" /%} **=>** 10 types; rivers, coasts, volcanoes, passes, settlements; affect availability tables downstream -- **Resources =>** 75 entries; what the land yields in abundance +- **Features**=>** 10 types; rivers, coasts, volcanoes, passes, settlements; affect availability tables downstream +- **Resources**{% Sidenote #resources title="Relevance of resources" marker="⋄" content="Resources influence the subsistence system of the locality and the asset generation of a Realm (in the Conjuction stage)" type="optional" /%} **=>** 75 entries; what the land yields in abundance - Tables follow below; elemental association appear later when they become mechanically relevant ## Procedure @@ -42,8 +42,9 @@ seo: 1. **Assign features** – rivers, coasts, passes, settlements 1. **Roll for resources** – each locality has a **1-in-10 chance** to generate a resource 1. **Read the dominant pattern** – the Climate, Topography, and Biome that appear most across localities become the domain signature for the culture living there -{% Callout type="example" title="Gwayth Teyd" %} -Looking at the map for my »Chainbreaker« setting, I decide to start with the area on the western coast of Khimbria – my northern continent which is dominated by temperate rainforest. Knowing that I want to the dominant culture to be inspired by the britannic tribes of the antiquity, I decide to call it: the Gwayth Ted. + +{% Callout type="example" title="Bardùnai" %} +Looking at the map for my »Chainbreaker« setting, I decide to start with a mountain range in the somewhat centre of the map. Knowing that I want the dominant culture there to be inspired by the pre-roman nuragic people, I decide to call the range – Bardùnai {% /Callout %} ## Climate @@ -157,7 +158,7 @@ Looking at the map for my »Chainbreaker« setting, I decide to start with the a ## Biome - Dominant Vegetation -- What grows tells you what lives +- What grows tells you what lives {% table %} - Biome @@ -195,7 +196,9 @@ Looking at the map for my »Chainbreaker« setting, I decide to start with the a {% /table %} ## Features + - Geographical features at the locality level + {% table %} - Feature - Description @@ -232,90 +235,243 @@ Looking at the map for my »Chainbreaker« setting, I decide to start with the a {% /table %} ## Resources + - What the land provides - Each locality has a **1-in-10 chance** to generate a resource - Mark **abundance** – a defining surplus worth trading or fighting over - Resources are used in the *Conjuction* state - Use the following [table](https://docs.google.com/spreadsheets/d/1bUUr5F93SrQ4fZm7ONf2YTudJ-1lnbyKiFHbtLgMgrY/edit?usp=sharing) to roll for the resource of a locality -| Resources | Description | -|--------------------|-------------------------------------------------------------------------------------------------------| -| Stone | Limestone, granite, sandstone, slate; ubiquitous building and toolmaking material | -| Base Metals | Copper, tin, lead, zinc; smelted from ore into everyday tools, vessels, fittings | -| Vegetables | Root crops, legumes, leafy greens; garden staples grown in moist soil | -| Fruits | Orchard and vine crops; apples, figs, pomegranates, pears; wind-pollinated, sun-ripened | -| Staple Grains | Wheat, barley, millet, sorghum; the caloric foundation of settled civilization | -| Clay | Shaped wet, hardened by kiln; pottery, brick, tile, ceramic | -| Alchemical Earths | Calcium oxide, potash, natron, vitriol; reactive mineral substances used in processing and craft | -| Fish | River and coastal catch; preserved by salt, smoke, or drying | -| Hunting Companions | Hawks, falcons, hounds; trained animals used in pursuit and killing of game | -| Resins | Hardened tree sap; pine tar, frankincense, myrrh; sealant, adhesive, incense | -| Salt | Mineral preservative and seasoning; harvested from sea, spring, or mine | -| Oilseeds | Sesame, flax, rapeseed; pressed and heated into oil for lamps, cooking, and craft | -| Furs | Beaver, rabbit, fox pelts; insulation, clothing, and high-volume trade commodity | -| Livestock | Cattle, sheep, goats, pigs; kept for meat, milk, wool, leather, traction | -| Reeds | Marsh grasses; used for weaving, thatching, basket-making, matting | -| Hemp | Coarse fiber plant; rope, sailcloth, sacking, rough textile | -| Softwoods | Pine, fir, spruce; fast-growing construction timber and primary fuel wood | -| Dye Plants | Indigo, madder, weld; plants processed into colorfast textile dyes | -| Flax | Fine fiber plant; retted and spun into linen; light, breathable fabric and sailcloth | -| Aromatic Herbs | Lavender, rosemary, sage, thyme; culinary and ritual aromatics | -| Woad | Leaf-derived blue pigment; body paint, textile dye; labor-intensive extraction | -| Psychoactives | Mushrooms, ergot, datura, cannabis; mind-altering substances used in ritual and medicine | -| Honey | Bee product; sweetener, preservative, fermented into mead; harvested from wild or kept hives | -| Wild Game | Deer, boar, hare, game birds; hunted in open country and woodland | -| Earth Pigments | Ochre, umber, sienna; mineral pigments ground for paint, body decoration, and burial rites | -| Seals | Marine mammals hunted for blubber, oil, meat, and heavy pelts; cold-water resource | -| Iron | Smelted from bog or mountain ore; tools, weapons, structural hardware; the essential metal | -| Olives | Long-lived orchard tree; fruit pressed into oil for cooking, lighting, preservation, and anointing | -| Hardwoods | Oak, ash, elm, walnut; dense timber for shipbuilding, furniture, tools, construction | -| Jade | Nephrite or jadeite; dense, hard stone worked into blades, ornaments, and ritual objects | -| Dates | Desert palm fruit; high-calorie staple of arid regions; dried for storage and transport | -| Artisan Stone | Alabaster, marble, pumice, soapstone; decorative and sculptural stone shaped by cutting and polishing | -| Dyes | Processed colorants; cochineal, kermes, woad extract; requiring boiling, mordanting, vat fermentation | -| Bamboo | Fast-growing giant grass; hollow, light, strong; construction, scaffolding, weapons, tools | -| Obsidian | Volcanic glass; fractures to razor edges; blades, arrowheads, mirrors | -| Rice | Grain cultivated in flooded paddies; requires irrigation infrastructure and water management | -| Citrus | Lemons, oranges, limes; juicy, acidic fruit; prevents scurvy, flavors food, preserves | -| Papyrus | Aquatic reed processed into writing material; stripped, layered, pressed, dried | -| Grapes | Vine fruit; eaten fresh, dried as raisins, crushed and fermented into wine and vinegar | -| Medicinal Herbs | Healing plants; prepared as poultice, tincture, tea, or salve; specialized knowledge required | -| Special Livestock | Camels, llamas, yaks, reindeer; animals adapted to extreme terrain; transport, milk, fiber, meat | -| Cotton | Tropical fiber plant; ginned, carded, spun into soft, dyeable textile | -| Pelts | Luxury furs; ermine, sable, marten; high-value status goods moving through long-distance trade | -| Horses | Riding, draft, and pack animal; cavalry, courier, transport; requires pasture and fodder | -| Silk | Caterpillar cocoon fiber; reeled, twisted, woven into extremely fine, strong fabric | -| Maize | Corn; high-yield grain requiring processing (nixtamalization); flour, porridge, flatbread | -| Yew | Slow-growing toxic hardwood; exceptional bow-stave timber; durable, flexible, poisonous | -| Tea | Dried leaf steeped in hot water; stimulant beverage; requires specific highland growing conditions | -| Ivory (marine) | Walrus and narwhal tusk; carved into fine objects, jewelry, inlay; rare and highly portable | -| Amber | Fossilized tree resin; translucent, sometimes containing preserved insects; ornamental and trade good | -| Porphyry | Dense purple-red igneous stone; extremely hard to quarry and work; imperial building material | -| Bitumen | Natural tar and petroleum seeps; waterproofing, adhesive, fuel, caulking | -| Murex | Sea snail harvested for purple dye; thousands of shells yield grams of pigment | -| Saffron | Crocus flower stigma; harvested by hand, three threads per flower; dye, spice, medicine | -| Kaolin | Crocus flower stigma; harvested by hand, three threads per flower; dye, spice, medicine | -| War Beasts | Elephants, rhinoceri, or similar; large animals trained for combat; living siege weapons | -| Precious Stones | Diamonds, rubies, sapphires, emeralds; formed under extreme pressure and heat; cut and polished | -| Arsenic | Realgar, orpiment; toxic mineral compounds; pigment, poison, glass-making additive | -| Sulfur | Yellow mineral from volcanic deposits; combustible; used in fumigation, medicine, fire-weapons | -| Cinnabar | Mercury sulfide ore; bright vermillion pigment; toxic; source of liquid mercury | -| Sugar | Cane or beet juice boiled and crystallized; requires heavy irrigation and intensive labor | -| Spices | Pepper, cinnamon, clove, nutmeg; dried seeds, bark, and buds; flavor, preservation, medicine | -| Pearls | Formed inside oysters and mussels; harvested by diving; gems requiring no cutting or polishing | -| Precious Metals | Gold and silver; panned, mined, smelted; currency, jewelry, gilding, ritual objects | -| Silphium | Extinct or near-extinct plant; medicinal, contraceptive, culinary; once worth its weight in coin | -| Steppe Horses | Superior war and riding breeds from harsh grassland; exceptional endurance and hardiness | -| Coffee | Roasted bean brewed into stimulant drink; requires specific tropical highland growing conditions | -| Whales | Hunted for oil, bone, baleen, ambergris; deep-ocean pursuit requiring specialized vessels | -| Rare Woods | Ebony, lignum vitae, purpleheart, sandalwood; dense exotic timber from distant sources | -| Cedar | Aromatic rot-resistant softwood; temple and ship timber; naturally insect-repellent | -| Cocoa | Tree pod containing bitter seeds; roasted and ground into paste or drink; requires tropical lowlands | -| Incense | Frankincense, myrrh, and similar gum resins; burned to produce aromatic smoke | -| Lapis Lazuli | Deep blue metamorphic stone; ground into ultramarine pigment; jewelry, inlay, decoration | -| Coca | Shrub leaf chewed or brewed as stimulant; suppresses hunger and altitude sickness; highland crop | -| Poppy | Flower producing opium latex; powerful painkiller and sedative; highly addictive | +{% table %} +- Resources +- Description +--- +- Stone +- Limestone, granite, sandstone, slate; ubiquitous building and toolmaking material +--- +- Base Metals +- Copper, tin, lead, zinc; smelted from ore into everyday tools, vessels, fittings +--- +- Vegetables +- Root crops, legumes, leafy greens; garden staples grown in moist soil +--- +- Fruits +- Orchard and vine crops; apples, figs, pomegranates, pears; wind-pollinated, sun-ripened +--- +- Staple Grains +- Wheat, barley, millet, sorghum; the caloric foundation of settled civilization +--- +- Clay +- Shaped wet, hardened by kiln; pottery, brick, tile, ceramic +--- +- Alchemical Earths +- Calcium oxide, potash, natron, vitriol; reactive mineral substances used in processing and craft +--- +- Fish +- River and coastal catch; preserved by salt, smoke, or drying +--- +- Hunting Companions +- Hawks, falcons, hounds; trained animals used in pursuit and killing of game +--- +- Resins +- Hardened tree sap; pine tar, frankincense, myrrh; sealant, adhesive, incense +--- +- Salt +- Mineral preservative and seasoning; harvested from sea, spring, or mine +--- +- Oilseeds +- Sesame, flax, rapeseed; pressed and heated into oil for lamps, cooking, and craft +--- +- Furs +- Beaver, rabbit, fox pelts; insulation, clothing, and high-volume trade commodity +--- +- Livestock +- Cattle, sheep, goats, pigs; kept for meat, milk, wool, leather, traction +--- +- Reeds +- Marsh grasses; used for weaving, thatching, basket-making, matting +--- +- Hemp +- Coarse fiber plant; rope, sailcloth, sacking, rough textile +--- +- Softwoods +- Pine, fir, spruce; fast-growing construction timber and primary fuel wood +--- +- Dye Plants +- Indigo, madder, weld; plants processed into colorfast textile dyes +--- +- Flax +- Fine fiber plant; retted and spun into linen; light, breathable fabric and sailcloth +--- +- Aromatic Herbs +- Lavender, rosemary, sage, thyme; culinary and ritual aromatics +--- +- Woad +- Leaf-derived blue pigment; body paint, textile dye; labor-intensive extraction +--- +- Psychoactives +- Mushrooms, ergot, datura, cannabis; mind-altering substances used in ritual and medicine +--- +- Honey +- Bee product; sweetener, preservative, fermented into mead; harvested from wild or kept hives +--- +- Wild Game +- Deer, boar, hare, game birds; hunted in open country and woodland +--- +- Earth Pigments +- Ochre, umber, sienna; mineral pigments ground for paint, body decoration, and burial rites +--- +- Seals +- Marine mammals hunted for blubber, oil, meat, and heavy pelts; cold-water resource +--- +- Iron +- Smelted from bog or mountain ore; tools, weapons, structural hardware; the essential metal +--- +- Olives +- Long-lived orchard tree; fruit pressed into oil for cooking, lighting, preservation, and anointing +--- +- Hardwoods +- Oak, ash, elm, walnut; dense timber for shipbuilding, furniture, tools, construction +--- +- Jade +- Nephrite or jadeite; dense, hard stone worked into blades, ornaments, and ritual objects +--- +- Dates +- Desert palm fruit; high-calorie staple of arid regions; dried for storage and transport +--- +- Artisan Stone +- Alabaster, marble, pumice, soapstone; decorative and sculptural stone shaped by cutting and polishing +--- +- Dyes +- Processed colorants; cochineal, kermes, woad extract; requiring boiling, mordanting, vat fermentation +--- +- Bamboo +- Fast-growing giant grass; hollow, light, strong; construction, scaffolding, weapons, tools +--- +- Obsidian +- Volcanic glass; fractures to razor edges; blades, arrowheads, mirrors +--- +- Rice +- Grain cultivated in flooded paddies; requires irrigation infrastructure and water management +--- +- Citrus +- Lemons, oranges, limes; juicy, acidic fruit; prevents scurvy, flavors food, preserves +--- +- Papyrus +- Aquatic reed processed into writing material; stripped, layered, pressed, dried +--- +- Grapes +- Vine fruit; eaten fresh, dried as raisins, crushed and fermented into wine and vinegar +--- +- Medicinal Herbs +- Healing plants; prepared as poultice, tincture, tea, or salve; specialized knowledge required +--- +- Special Livestock +- Camels, llamas, yaks, reindeer; animals adapted to extreme terrain; transport, milk, fiber, meat +--- +- Cotton +- Tropical fiber plant; ginned, carded, spun into soft, dyeable textile +--- +- Pelts +- Luxury furs; ermine, sable, marten; high-value status goods moving through long-distance trade +--- +- Horses +- Riding, draft, and pack animal; cavalry, courier, transport; requires pasture and fodder +--- +- Silk +- Caterpillar cocoon fiber; reeled, twisted, woven into extremely fine, strong fabric +--- +- Maize +- Corn; high-yield grain requiring processing (nixtamalization); flour, porridge, flatbread +--- +- Yew +- Slow-growing toxic hardwood; exceptional bow-stave timber; durable, flexible, poisonous +--- +- Tea +- Dried leaf steeped in hot water; stimulant beverage; requires specific highland growing conditions +--- +- Ivory (marine) +- Walrus and narwhal tusk; carved into fine objects, jewelry, inlay; rare and highly portable +--- +- Amber +- Fossilized tree resin; translucent, sometimes containing preserved insects; ornamental and trade good +--- +- Porphyry +- Dense purple-red igneous stone; extremely hard to quarry and work; imperial building material +--- +- Bitumen +- Natural tar and petroleum seeps; waterproofing, adhesive, fuel, caulking +--- +- Murex +- Sea snail harvested for purple dye; thousands of shells yield grams of pigment +--- +- Saffron +- Crocus flower stigma; harvested by hand, three threads per flower; dye, spice, medicine +--- +- Kaolin +- Crocus flower stigma; harvested by hand, three threads per flower; dye, spice, medicine +--- +- War Beasts +- Elephants, rhinoceri, or similar; large animals trained for combat; living siege weapons +--- +- Precious Stones +- Diamonds, rubies, sapphires, emeralds; formed under extreme pressure and heat; cut and polished +--- +- Arsenic +- Realgar, orpiment; toxic mineral compounds; pigment, poison, glass-making additive +--- +- Sulfur +- Yellow mineral from volcanic deposits; combustible; used in fumigation, medicine, fire-weapons +--- +- Cinnabar +- Mercury sulfide ore; bright vermillion pigment; toxic; source of liquid mercury +--- +- Sugar +- Cane or beet juice boiled and crystallized; requires heavy irrigation and intensive labor +--- +- Spices +- Pepper, cinnamon, clove, nutmeg; dried seeds, bark, and buds; flavor, preservation, medicine +--- +- Pearls +- Formed inside oysters and mussels; harvested by diving; gems requiring no cutting or polishing +--- +- Precious Metals +- Gold and silver; panned, mined, smelted; currency, jewelry, gilding, ritual objects +--- +- Silphium +- Extinct or near-extinct plant; medicinal, contraceptive, culinary; once worth its weight in coin +--- +- Steppe Horses +- Superior war and riding breeds from harsh grassland; exceptional endurance and hardiness +--- +- Coffee +- Roasted bean brewed into stimulant drink; requires specific tropical highland growing conditions +--- +- Whales +- Hunted for oil, bone, baleen, ambergris; deep-ocean pursuit requiring specialized vessels +--- +- Rare Woods +- Ebony, lignum vitae, purpleheart, sandalwood; dense exotic timber from distant sources +--- +- Cedar +- Aromatic rot-resistant softwood; temple and ship timber; naturally insect-repellent +--- +- Cocoa +- Tree pod containing bitter seeds; roasted and ground into paste or drink; requires tropical lowlands +--- +- Incense +- Frankincense, myrrh, and similar gum resins; burned to produce aromatic smoke +--- +- Lapis Lazuli +- Deep blue metamorphic stone; ground into ultramarine pigment; jewelry, inlay, decoration +--- +- Coca +- Shrub leaf chewed or brewed as stimulant; suppresses hunger and altitude sickness; highland crop +--- +- Poppy +- Flower producing opium latex; powerful painkiller and sedative; highly addictive +{% /table %} -{% Callout type="example" title="Gwayth Teyd Part II" %} -After having generated the localities of the Gwayth Teyd, I discover that most of its localities have a *Oceanic climate* while the terrain is mostly *Lowlands* with a *Forest* vegetation. The Gwayth Teyd also features a surpsingly high number of *Silk* and *Dye* resources. +{% Callout type="example" title="Bardùnai - Part II" %} +After having generated the localities of the Bardùnai, I discover that most of its localities have a *Subarctic* climate while the terrain is mostly *Mountains* with a *Barren* vegetation – ouch. Unsurpringly, they feature a large number of metal and stone deposits. {% /Callout %} diff --git a/src/content/articles/kindred-legacy/index.mdoc b/src/content/articles/kindred-legacy/index.mdoc new file mode 100644 index 0000000..06ff1c6 --- /dev/null +++ b/src/content/articles/kindred-legacy/index.mdoc @@ -0,0 +1,768 @@ +--- +title: Kindred +subtitle: All hail the new flesh +summary: >- + Species-level biology. The body you're born in, not the culture you're born + into. Humans are the baseline; everything else carries elemental weight. +cover: + showInHeader: false +publishDate: 2026-03-05T08:51:00.000Z +status: archived +isFeatured: false +parent: prima-materia +tags: + - Prima Materia + - Generator +relatedArticles: [] +seo: + noIndex: false +--- +## Overview + +- **Species-level biology:** the flesh before culture touches it{% Sidenote #biology-not-culture title="Kindred is not Culture" marker="⋄" content="Kindred define what a species IS physically – not how it worships, organises, or fights. Cultural variation (like Drucchi vs. Eonir vs. Asur) happens in the »Calcination« stage." type="default" /%} +- **Baseline kindred** => represent the norm or the most numerous species (e.g. humans in many settings) + +## Procedure + +1. **Themes:** Generate themes for the Kindred +1. **Special Abilities:** Generate a number of *Special Abilities/Knacks* +1. **Physical Features:** Generate a number of distinctive physical features + +## Step I: Generate Themes + +- Non-baseline Kindred receive 1–3 themes +- Each theme provides 1 *Prime* & 1 *Essences* +- Roll `d35`{% Sidenote #d35 title="What is a D35" marker="ᗗ" content="You roll a d35 by using a d3 and d5, similar to the d100: The d3 denotes the ten digit while the d5 denotes the one digit. " type="default" /%} on the following table or choose + +{% table %} +- d35 +- Prime +- Essence +- Example Themes +--- +- **11** +- **Soul** +- **Earth** +- *Feral* | *Primordial* | *Elemental* | *Wild* +--- +- **12** +- **Soul** +- **Fire** +- *Titans* | *Voracious* | *Incandescent* | *Predatory* +--- +- **13** +- **Soul** +- **Water** +- *Protean* | *Abyssal* | *Venomous* | *Mimic* +--- +- **14** +- **Soul** +- **Air** +- *Ascendant* | *Far-Sensing* | *Ephemal* | *Resonant* +--- +- **15** +- **Soul** +- **Aether** +- *Arcane* | *Godbound* | *Infernal* | *Mystic* | *Transcendent* +--- +- **21** +- **Body** +- **Earth** +- *Enduring* | *Harmonious* | *Subterranean* | *Symbiotic* | *Lithic* +--- +- **22** +- **Body** +- **Fire** +- *Furnace-Born* | *Swarm* | *Molten* | *Eruptive* +--- +- **23** +- **Body** +- **Water** +- *Tidal* | *Amphibious* | *Brood* | *Diluvian* +--- +- **24** +- **Body** +- **Air** +- *Firstborn* | *Radiant* | *Spore* | *Chorus* | *Aeolian* +--- +- **25** +- **Body** +- **Aether** +- *Celestial* | *Divine* | *Eternal* | *Underworld* | *Deathless* +--- +- **31** +- **Spirit** +- **Earth** +- *Blighted* | *Dying* | *Newcomers* | *Plagued* | *Resilient* +--- +- **32** +- **Spirit** +- **Fire** +- *Phoenix* | *Slag-born* | *Cauterized* | *Ember* +--- +- **33** +- **Spirit** +- **Water** +- *Cursed* | *Echoes* | *Enigmatic* | *Entwined* | *Haunted* | *Shadowbound* | *Dillute* | *Brackish* +--- +- **34** +- **Spirit** +- **Air** +- *Fading* | *Dispersed* | *Whispering* | *Vagrant* +--- +- **35** +- **Spirit** +- **Aether** +- *Corrupted* | *Forsaken* | *Twilight* | *Veiled* +{% /table %} + +### Themes + +- Is the **innate biological disposition** of a kindred – what it bodies are built to do, how its flesh and instincts are wired before any culture, hiostory, or environment shapes it +- **Primes** tell **how** that nature expresses: through individual specimens *(Soul),* collective organism *(Body),* or through adaption *(Spirit)* +- **Essences** tell **what character** that nature carries – heavy and material *(Earth),* consuming and intense *(Fire)*, fluid and deep *(Water),* expansive and permeating *(Air),* or transcendent and numinous *(Aether)* +- The Theme is where those two meet. Not what the species does – what it IS. + +#### Example Themes + +{% table %} +- Theme +- Description +- Reference +--- +- *Feral* +- Untamed, instinct-driven, individually territorial +- Beastmen [Warhammer] | Broo [Glorantha] | Satyrs [Greek] +--- +- *Primordial* +- From the world's dawn, raw elemental biology +- Zoats [Warhammer] | Aldryami [Glorantha] | Titans [Greek] +--- +- *Wild* +- Undomesticated bodies, build for open land +- Cacacae [Bas-Lang] | Centaurs [Greek] +--- +- *Elemental* +- Flesh infused with raw material force +- Mostali [Glorantha] | Rockgut Troggoths [AoS] +--- +- *Titans* +- Immense power or size, physically overwhelming +- Ogres [Warhammer] | Giants [Dark Souls] +--- +- *Voracious* +- Fast metabolism, constant hunger, rapid growth +- Tyranids [WH40K] | Ogres [Warhammer] | Wendigo [Algonquin] +--- +- *Incendescent* +- Bodies that burn hot, intense and short-lived +- Magmadroth Riders [AoS] | Fire Giants [Glorantha] +--- +- *Predatory* +- Apex biology, built to pursue and consume +- Kroot [WH 40K] | Fenrir's brood [Norse] +--- +- *Protean* +- Naturally shapeshifting, physically mutable +- Doppelgangers [Glorantha] | Selkies [Celtic] +--- +- *Abyssal* +- Deep-origin, enormous interiority, pressure-forged +- Idoneth Deepkin [AoS] | Uz [Glorantha] +--- +- *Venomous* +- Dissolving, corroding, breaking down through contact +- Dragonewts [Glorantha] | Xenomorphs [Alien] | Clan Eshin [Warhammer] +--- +- *Mimic* +- Innate camouflage, becoming what surrounds them +- Lyssans [SotDL] | Changelings [SotDL] +--- +- *Ascendant* +- Lighter than they should be, gravity-defying, rising +- Wind Children [Glorantha] | Garuda [Hindu] +--- +- *Far-Sensing* +- Perception across vast distance, senses that reach +- Kolat spirit-seers [Glorantha] +--- +- *Ephemeral* +- Partially insubstantial, hard to pin down physically +- Hollows [Dark Souls] | Spite-Revenants [AoS] +--- +- *Resonant* +- Bodies that vibrate and project, voice as biological force +- Thunder Lizards [AoS] +--- +- *Arcane* +- Innately magical, woven into supernatural forces +- Slann [Warhammer] +--- +- *Godbound* +- Divinely marked, blessed or cursed at birth +- Stormcast Eternals [AoS] | Nephilim [Biblical] +--- +- *Infernal* +- Tainted by dark powers, demonic biology +- Tieflings [DnD] | Jötnar [Norse] +--- +- *Mystic* +- Innate sensitivity to the hidden and numinous +- Huan To [Glorantha] +--- +- *Transcendent* +- Biologically surpassing mortal limits +- C'tan [WH 40K] | Tuatha Dé Danann [Irish] +--- +- *Enduring* +- Collectively unbreakable, outlasting everything +- Mostali [Glorantha] | Duardins [AoS] | Jötnar of Jotunheim [Norse] +--- +- *Harmonious* +- Biologically balanced with their environment +- Aldryami [Glorantha] | Sylvaneth [AoS] +--- +- *Subterranean* +- Deep-earth dwellers, adapted to darkness and stone +- Skaven [Warhammer] | Night Goblins [Warhammer] | Dvergar [Norse] +--- +- *Symbiotic* +- Bodies interpendent with other organisms +- Sylvaneth [AoS] | Hsunchen [Glorantha] +--- +- *Lithic* +- Mineral-infused flesh, stone-like density +- Rockmen [Glorantha] | Dvergar [Norse] +--- +- *Furnace-born* +- Generate immense heat, built for extremes +- Fyreslayers [AoS] | Chaos Dwarves [Warhammer] | Cyclopes [Greek] +--- +- *Swarm* +- Individually small, collectively devastating +- Skaven [Warhammer], Hormagaunts [WH 40K] +--- +- *Molten* +- Fluid and destructive in aggregate, lava-blooded +- Magmadroth [AoS], Salamanders [Warhammer] +--- +- *Eruptive* +- Cycles of dormancy and violent collective emergence +- Orks [Warhammer] | Scorchlings [SotDL] +--- +- *Tidal* +- Biological cycles synchronize the whole species +- Idoneth Deepkin [AoS] | Triolini [Glorantha] +--- +- *Amphibious* +- Dual-natured, equally home in water and on land +- Newtlings [Glorantha] | River Trolls [Warhammer] | Vodyanoy [Slavic] +--- +- *Brood* +- Eusocial, physically specialized castes +- Tyranid [WH 40K] | Scorpionmen [Glorantha] +--- +- *Dilluvian* +- Ancient aquatic origin, bodies still carrying the deep +- Deep Ones [Lovecraft] | Ludoch [Glorantha] | Merrow [Irish] +--- +- *Firstborn* +- The original stock, biologically ancient and prime +- Slann [Warhammer] | Elder Race [Glorantha] | Protogenoi [Greek] +--- +- *Radiant* +- Physically luminous, emanating light or energy +- Yelm-kin [Glorantha] +--- +- *Spore* +- Reproducing through dispersal, colonizing as biology +- Orks [Warhammer] | Myconids [SotDL] +--- +- *Chorus* +- Linked through sound, vibration, or pheromone +- Genestealer Cults [WH 40K] +--- +- *Aeolian* +- Wind-adapted, light-boned, membrane-winged +- Harpies [Glorantha] | Tzaangors [AoS] +--- +- *Celestial* +- Heavenly origin, cosmic biology +- Stormcast Eternals [AoS] | Star Captains [Glorantha] | Deva [Hindu] +--- +- *Divine* +- God-like physical natured, revered or feared +- Seraphon [AoS] | Vanir [Norse] +--- +- *Eternal* +- Biologically timless, immune to aging +- Necrons [WH 40K] | Aldryami [Glorantha] +--- +- *Underworld* +- Death-associated, adapted to realms beyond +- Vampires [Warhammer] | Draugr [Norse] +--- +- *Blighted* +- Corrupted flesh, adapting around the rot +- Fomorians [Irish] +--- +- *Dying* +- Species in decline, biology falling +- Mostali [Glorantha] | Tomb Kings [Warhammer] +--- +- *Newcomers* +- Recently emerged, still adapting to existence +- Constructed [SotDL] +--- +- *Plagued* +- Afflicted at the biological level +- Plagueborn [SotDL] | Clan Pestilens [Warhammer] +--- +- *Resilient* +- Surviving material conditions that kill others +- Kroxigor [Warhammer] | Trollkin [Glorantha] +--- +- *Phoenix* +- Must burn to regenrate, cyclical destruction-rebirth +- Flamespyre Phoenix [AoS] +--- +- *Slag-born* +- Emerged from waste and catastrophe +- Chaos Dwarves [Warhammer] | Infernals [SotDL] +--- +- *Cauterized* +- Scarred at the species lvel, adapted around the wound +- Dark Eldar [WH 40K] | Arkat's people [Glorantha] +--- +- *Ember* +- Diminishing but still hot at its core, refusing extinction +- Fyreslayers [AoS] +--- +- *Cursed* +- Bearing innate biological curse +- Ghouls [Warhammer] | Lycaon's line [Greek] +--- +- *Echoes* +- Resonating with something past, bodies as living memory +- Gorgers [Warhammer] | Einherjar [Norse] +--- +- *Enigmatic* +- Biologically inscrutable, unknowable physiology +- Dragonwets [Glorantha] | Deepkin Namarti [AoS] +--- +- *Entwined* +- Fate-linked to another species by biology +- Genestealer Hybrids [WH 40K] | Telmori [Glorantha] +--- +- *Haunted* +- Marked by supernatural presence they can't shed +- Soulblight [AoS] | Selkies [Irish] +--- +- *Shadowbound* +- Existing in margins, adapted to edges and darkness +- Druchi [Warhammer] | Dehori-touched [Glorantha] +--- +- *Dilute* +- Thinning, dissolving into surrounding populations +- Half-breeds [SotDL] | Civilized Trollkin [Glorantha] +--- +- *Brakish* +- Mixed-origin, born from incompatible biological streams +- Gors [Warhammer] | Chaos Hybrids [Warhammer] +--- +- *Fading* +- Becoming less substantial, thinning out of existence +- Asur [Warhammer] +--- +- *Dispersed* +- Scattered so thin they barely cohere +- Craftworld Eldar [WH 40K] +--- +- *Whispering* +- Communication IS their biology, bodies as signal-carriers +- Waertagi [Glorantha] | Valkyries [Norse] +--- +- *Vagrant* +- Biologically rootless, must keep moving or deteriorate +- Harlquins [WH 40K] | Nomad God peoples [Glorantha] +--- +- *Corrupted* +- Tainted by supernatural forces at biological level +- Fimir [Warhammer] | Trolls [Norse] +--- +- *Forsaken* +- Abandoned by whatever made them, fiding strength in it +- Morathi's Melusai [AoS] | God forgot people [Glorantha] +--- +- *Twilight* +- Inhabiting threshold between mortal and divine biology +- Lunar Bat-people [Glorantha] +--- +- *Veiled* +- True nature cloaked, biology that hides itself +- Mandrakes [WH 40K] | Hidden Kings [Glorantha] +{% /table %} + +{% Callout type="example" title="The Iddùrath - Themes" %} +The Iddùrath are the dwarves of Chainbreaker. Once human they reached for immortality and got it – as punishment. Their priests tore holes between the worlds, trying the cage a god and the god answered. Now sunlight turns them into stone – not death, not transformation but *entombment.* Possibly still aware. Possibly forever. + +With this sketch, I generate three themes from the table: + +1. `14` => **Spirit + Fire** -> *Cauterized:* Adapted to the curse +1. `15` => **Spirit + Air** -> *Echoes:* Flesh remembers being human +1. `14` => **Spirit + Fire** -> *Embers:* Running hotter than a dying species has any right to +{% /Callout %} + +## Step 2: Determine Special Abilities + +- **Unique biological capacity** – something a kindred can DO that no other species can. +- **Prime × Essence combination** defines ability's mechanical space – what it does, who triggers it, what it costs; **Theme** flavors specific expression +- Tokens generated by Step 1 are spent here + +### Ability Tiers + +{% table %} +- Tier +- Name +- Cost +- Effect +--- +- 1 +- **Quirk** +- 1 Token (Prime OR Essence) +- Minor biological trait – flavourful but narrow +--- +- 2 +- **Trait** +- 2 Tokens (1 Prime + 1 Essence) +- Defining species ability – the thing people know you for +--- +- 3 +- **Nature** +- 3 Tokens (must include both Prime + Essences) +- Species-defining power with real weight – comes with a drawback +--- +- 4 +- **Birthright** +- 4 tokens (must include both Prime + Essences) +- Overwhelming biological reality – major power, major cost +{% /table %} + +## Step III: Determine Physical Features + +1. Roll `1d4` for number of distinctive Features +1. For each feature roll `2d6` on the »Distinctive Features« table +1. Roll on the appropriate sub-table +1. Or simply choose + +### Distinctive Features + +{% table %} +- 2d6 +- Feature Type +--- +- 2–4 +- Distinctive Skin +--- +- 5–6 +- Distinctive Hair +--- +- 7–8 +- Distinctive Eyes +--- +- 9–10 +- Distinctive Build +--- +- 11–12 +- Physical Trait +{% /table %} + +### Distinctive Skin + +{% table %} +- 3d6 +- Skin +--- +- 3 +- Uniformity{% Sidenote #uniformity-distinction title="Uniformity as distinction" marker="ஃ" content="Uniformity on these tables mean that all members of the kindred, regardless of age, gender and so on, share the same eye color, hair type, etc." type="default" /%} +--- +- 4 +- Fur +--- +- 5 +- Scales +--- +- 6 +- Translucent +--- +- 7 +- Irisdescent +--- +- 8 +- Bioluminescent +--- +- 9 +- Metallic +--- +- 10 +- Elemental +--- +- 11 +- Thorny +--- +- 12 +- Chitinous +--- +- 13 +- Luminous +--- +- 14 +- Patterned +--- +- 15 +- Bestial +--- +- 16 +- Botanical +--- +- 17 +- Unusual Color +--- +- 18 +- Shifting +{% /table %} + +### Distinctive Hair + +{% table %} +- 2d6 +- Hair +--- +- 2 +- Uniformityஃ +--- +- 3 +- Metallic +--- +- 4 +- Elemental +--- +- 5 +- Crystalline +--- +- 6 +- Living (vines, tentacles, etc.) +--- +- 7 +- Bioluminescent +--- +- 8 +- Unusual Color +--- +- 9 +- Multicolored +--- +- 10 +- Patterned +--- +- 11 +- Shifting +--- +- 12 +- Absent / Hairless +{% /table %} + +### Distinctive Eyes + +{% table %} +- 2d6 +- Eye +--- +- 2 +- Uniformityஃ +--- +- 3 +- Gemstone +--- +- 4 +- Elemental +--- +- 5 +- Arcane +--- +- 6 +- Bestial +--- +- 7 +- Void +--- +- 8 +- Pupilless/Lenseless +--- +- 9 +- Multicolored +--- +- 10 +- Patterned +--- +- 11 +- Shifting +--- +- 12 +- Metallic +{% /table %} + +## Distinctive Build + +{% table %} +- 5d6 +- Build +--- +- 5 +- Tiny +--- +- 6 +- Tiny & Delicate +--- +- 7 +- Tiny & Plump +--- +- 8 +- Tiny & Robust +--- +- 9 +- Tiny & Wiry +--- +- 10 +- Small +--- +- 11 +- Small & Brawny +--- +- 12 +- Small & Rounded +--- +- 13 +- Small & Slender +--- +- 14 +- Small & Sturdy +--- +- 15 +- Lithe +--- +- 16 +- Lean +--- +- 17 +- Lithe +--- +- 18 +- Muscular +--- +- 19 +- Pouchy +--- +- 20 +- Stout +--- +- 21 +- Large +--- +- 22 +- Large & Agile +--- +- 23 +- Large & Bulky +--- +- 24 +- Large & Lanky +--- +- 25 +- Large & Rotund +--- +- 26 +- Huge +--- +- 27 +- Huge & Fat +--- +- 28 +- Huge & Lumbering +--- +- 29 +- Huge & Sinewy +--- +- 30 +- Huge & Svelte +{% /table %} + +### Distinctive Traits + +{% table %} +- 5d6 +- Trait +--- +- 6 +- Ageless +--- +- 7 +- Animalistic Features +--- +- 8 +- Antennae +--- +- 9 +- Bone Spikes +--- +- 10 +- Claws +--- +- 11 +- Elaborate Facial Markings +--- +- 12 +- Elemental Manifestation +--- +- 13 +- Excess Eyes +--- +- 14 +- Excess Mouths +--- +- 15 +- External Organs +--- +- 16 +- Extremely Pronounced Dimorphism +--- +- 17 +- Lack of Sexual Dimorphism +--- +- 18 +- Natural Crest +--- +- 19 +- Natural Horns +--- +- 20 +- Tetacles +--- +- 21 +- Tusks/Fangs +--- +- 22 +- Uncanny Proportions +--- +- 23 +- Unusual Body Shape +--- +- 24 +- Vestigal Limbs +--- +- 25 +- Weeping Sores +--- +- 26 – 30 +- Make something up +{% /table %} diff --git a/src/content/articles/kindred/index.mdoc b/src/content/articles/kindred/index.mdoc index 60e109a..8773f1b 100644 --- a/src/content/articles/kindred/index.mdoc +++ b/src/content/articles/kindred/index.mdoc @@ -1,19 +1,905 @@ --- title: Kindred -subtitle: What the Body is +subtitle: All hail the new flesh summary: >- Species-level biology. The body you're born in, not the culture you're born into. Humans are the baseline; everything else carries elemental weight. cover: showInHeader: false publishDate: 2026-03-05T08:51:00.000Z -status: draft +status: published isFeatured: false parent: prima-materia tags: - Prima Materia - - Generator + - Generation + - Species relatedArticles: [] seo: noIndex: false --- +## Overview + +- **Kindred = non-baseline species;** biologically distinctive organisms; bodies that work differently from whatever species you declare as baseline +- **Kindred is NOT culture**; all cultural variatiation happens at the *Calcination* stage + - **Example:** *Elves* -> Kindred; *Sea Elves, High Elves, Wood Elves, Dark Elves* -> Heritages +- **The SIN Engine –** every biological power traces to a biological constraint; the further from baseline the more tokens generated in the *Materia,* the more abilities purchased; but every deviation IS a limitation +- **Baseline =>** the default sapient species in your setting; usually human; zero deviations, zero tokens, zero abilities; the blank canvas culture writes on + +## Procedure + +1. [**Choose deviations**](#step-1-the-seven-axes){% Sidenote #step-1-2-switch title="Switching Step 1 & 2" marker="§" content="It should go without saying, that you can switch Step 1 and 2. Start with the themes and then choose the Deviations, or mix and match. The important part is that you have a couple of deviations and themes at the end." type="default" /%} from baseline across seven biological axes +1. [**Theme each deviation**](#step-2-themes) – roll or choose; determines the material character of the deviation (1 Prime × 1 Essence) +1. [**Generate Materia**](#step-3-generate-materia) – Accumulate tokens from themes and deviations into a single pool +1. [**Drives** ](#step-4-drives) – tally the materia to determine drive +1. [**Gifts**](#step-5-gifts) – combine tokens to generate a kindred's unique traits and abilities +1. [**Leftovers**](#step-6-leftovers) – unspent tokens flow downstream to the heritage + +### Step 1: The Seven Axes + +#### Size + +{% TableWrapper variants=["axes"] %} +{% table %} +- Position +- Steps +- Description +--- +- *Tiny* +- 2 +- Fraction of baseline; fits in a hand or on a shoulder +--- +- *Small* +- 1 +- 1 Noticeably smaller; roughly ½ to ¾ baseline mass +--- +- **Medium** +- **0** +- **Baseline** +--- +- *Large* +- 1 +- Noticeably larger, roughly double baseline mass +--- +- *Huge* +- 2 +- Dwarfs baseline; several times the mass and height +{% /table %} +{% /TableWrapper %} + +#### Lifespan + +{% TableWrapper variants=["axes"] %} +{% table %} +- Position +- Steps +- Description +--- +- *Brief* +- 2 +- Fraction of the baseline; less than ¼ +--- +- *Short* +- 1 +- Noticeable shorter; around ½ to ¾ of baseline +--- +- **Standard** +- **0** +- **Baseline lifespan** +--- +- *Long* +- **1** +- Several times the baseline's lifespand +--- +- *Ageless* +- 2 +- Biologically immortal +{% /table %} +{% /TableWrapper %} + +#### Reproduction + +{% TableWrapper variants=["axes"] %} +{% table %} +- Position +- Steps +- Description +--- +- *Prolific* +- 2 +- Swarm-breeding; dozens of offspring; +--- +- *Fertile* +- 1 +- More offspring; shorter gestation; +--- +- **Standard** +- **0** +- **Baseline** +--- +- *Slow* +- 1 +- Few offspring; long gestation +--- +- *Barren* +- 2 +- Near-sterile; on the edge of extinction; or non-reproductive +{% /table %} +{% /TableWrapper %} + +#### Habitat{% Sidenote #habitat-element marker="⋄" content="Habitat says HOW MUCH the environment constrains; the theme say HOW. An Earth-themed Dependent needs stone and darkness. A Fire-themed Vulnerable is killed by Drought or Cold" type="default" /%} + +{% TableWrapper variants=["axes"] %} +{% table %} +- Position +- Steps +- Description +--- +- *Dependent* +- 2 +- Dies without specific environmental condition +--- +- *Adapted* +- 1 +- Weakened outside preferred environment +--- +- **Baseline** +- **0** +- **Environmental Generalist** +--- +- *Sensitive* +- 1 +- Common environmental condition causes harm +--- +- *Vulnerable* +- 2 +- Specific common condition is lethal +{% /table %} +{% /TableWrapper %} + +#### Metabolism + +{% TableWrapper variants=["axes"] %} +{% table %} +- Position +- Steps +- Description +--- +- *Dormant* +- 2 +- Long hibernation cycles; barely active; geological patience +--- +- *Cold* +- 1 +- Slow metabolism; energy-efficient; sluggish +--- +- **Standard** +- **0** +- **Baseline** +--- +- *Hyper* +- 1 +- Constant hunger; rapid energy burn; can't rest +--- +- *Exotic* +- 2 +- Parasitic, photosynthetic, lithivore, magic-feeding – alien fuel source +{% /table %} +{% /TableWrapper %} + +#### Attunement + +{% TableWrapper variants=["axes"] %} +{% table %} +- Position +- Steps +- Description +--- +- *Null* +- 2 +- Completely cut off from the numinous +--- +- *Dim* +- 1 +- Weak connected; magic is harder +--- +- **Standard** +- **0** +- **Baseline** +--- +- *Sensity* +- 1 +- Innately aware of supernatural forces +--- +- *Saturated* +- 2 +- Soaked in numinous energy; magic is inescapable +{% /table %} +{% /TableWrapper %} + +#### Cognition + +{% TableWrapper variants=["axes"] %} +{% table %} +- Position +- Steps +- Description +--- +- *Bestial* +- 2 +- Driven almost entirely by instinct; barely sapient +--- +- *Feral* +- 1 +- Sapient but instinct-dominant; thinking is effortful +--- +- **Standard** +- **0** +- **Baseline** +--- +- *Cerebral* +- 1 +- Reason-dominant; instinct suppressed; deliberation over reaction +--- +- *Alien* +- 2 +- Cognitive architecture incomprehensible to baseline minds +{% /table %} +{% /TableWrapper %} + +{% Callout type="example" title="The Galla – Deviations" %} +Dwarves of Chainbreaker. Adapted to life underground, ageless, cursed by sunlight, slow-thinking. Once baseline — now something else. +{% TableWrapper variants=["default"] %} +{% table %} +- Axis +- Position +- Step +- Description +--- +- Size +- Small +- 1 +- Compact; adapted to subterranean life +--- +- Lifespan +- Ageless +- 2 +- Tissue doesn't decay; mineralisation preserves indefinitely +--- +- Habitat +- Sensitive +- 1 +- Cumulative sunlight exposure triggers progressive mineral deposition in tissue +--- +- Cognition +- Cerebral +- 1 +- Deliberation over impulse; prudent and calculating +{% /table %} +{% /TableWrapper %} +{% /Callout %} + +### Step 2: Themes + +- Describe the **material character** of each variation – what the flesh does, not why +- First theme in each combination is the default – broadest expression. Others are narrower variants for more specific species concepts +- Choose{% Sidenote #monothematism title="Mono-thematic Kindred" marker="º" content="It is completely viable to assign multiple (or even all) deviations the same theme, mono-thematism can be fun, but in its default the Crucible will always try to create tension through contradiction." type="default" /%} or roll: + - Roll `1d3` for Prime (1 = Soul, 2 = Body, 3 = Spirit) + - Roll `1d5` for Essence (1 = Earth, 2 = Fire, 3= Water, 4 = Air, 5 = Aether) + +{% TableWrapper variants=["elemental-grid"] %} +{% table %} +- +- Earth (1) +- Fire (2) +- Water (3) +- Air (4) +- Aether (5) +--- +- Soul (1) +- [*Dense*](#11--soul--earth-dense) +- [*Volatile*](#12--soul--fire-volatile) +- [*Mutable*](#13---soul--water-mutable) +- [*Diffuse*](#14--soul--air-diffuse) +- [*Numinous*](#15--soul--aether-numinous) +--- +- Body (2) +- [*Massive*](#21--body--earth-massive) +- [*Eruptive*](#22---body--fire-eruptive) +- [*Confluent*](#23--body--water-confluent) +- [*Dispersed*](#24--body--air-dispersed) +- [*Consecrated*](#25--body--aether-consecrated) +--- +- Spirit (3) +- [*Calcified*](#31--spirit--earth-calcified) +- [*Pyroclastic*](#32--spirit--fire-pyroclastic) +- [*Dissolving*](#33--spirit--water-dissolving) +- [*Attenuating*](#34--spirit--air-attenuating) +- [*Transfiguring*](#35--spirit--aether-transfiguring) +{% /table %} +{% /TableWrapper %} + +#### 11 – Soul + Earth: Dense + +- Individual biology that is heavy, rooted, materially present. The organism is MORE THERE than the baseline + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Dense* +- Flesh is heavier, harder, more present than baseline +- Galeb Duhr (D&D) | Ogres (Warhammer) +--- +- *Rooted* +- Biology anchors to terrain; grips, burrows, refuses displacement +- Treants (D&D) | Sylvaneth (AoS) +--- +- *Crude* +- Raw, oversized biological machinery; brute-force organs +- Trolls (D&D) | Troggoths (AoS) | Oni (Japanese) +--- +- *Territorial* +- Individual instinct claims physical space; the body reads ground as self +- Minotaurs (Greek) | Broo (Glorantha) | Bullywugs (D&D) +{% /table %} +{% /TableWrapper %} + +#### 12 – Soul + Fire: Volatile + +- Individual biology that burns hot, consumes fast, runs itense. The organism is a furnace + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Volatile* +- Metabolism runs hot; rapid burn, high input, fast depletion +- Kobolds (D&D) | Goblins (Warhammer) | Skinks (Warhammer) +--- +- *Consumptive* +- Body demands constant fuel; build around intake and processing +- Ogres (Warhammer) | Kroot (WH 40K) | Wendigo (Algonquin) +--- +- *Incandescent* +- Flesh generates excess heat, light, or energy; the organism radiates +- Azer(D&D) | Salamanders (SotDL) +--- +- *Predatory* +- Apex pursuit biology – sensory focus, burst speed, kill-optimized +- Displacer Beasts (D&D) | Wargs (Tolkien) | Varghulf (Warhammer) +{% /table %} +{% /TableWrapper %} + +#### 13 - Soul + Water: Mutable + +- Individual biology that flows, shifts, dissolves boundaries + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Mutable* +- Flesh is physically plastic; reshapes its own body +- Changelings (D&D) | Doppelgangers (D&D) | Selkies (Celtic) +--- +- *Solvent* +- Biology dissolves or corrodes what it contacts +- Black Pudding (D&D) | Xenomorphs (Alien) | Trolls (Glorantha) +--- +- *Permeable* +- Boundaries between self and environment are thin; absorbs and leaks +- Myconids (D&D) | Flumphs (D&D) | Newtlings (Glorantha) +--- +- Cryptic +- Biology conceals; pigment, texture, scent shift to match surroundings +- Mimics (D&D) | Skinks (Warhammer) +{% /table %} +{% /TableWrapper %} + +#### 14 – Soul + Air: Diffuse + +- Individual biology that extends beyond the body's envelope. Presence exceeds flesh. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Diffuse* +- Biological presence extends past physical boundary – fields, emanations, reach +- Mind Flayers (D&D) | Zoats (Warhammer) | Will-o'-Wisps (Folklore) +--- +- *Buoyant* +- Body lighter than it should be; resists gravity, tends upward +- Arakocra (D&D) | Sylphs (Paracelsus) | Wind Children (Glorantha) +--- +- *Resonant* +- Generates vibration, sound, or signal as biological function +- Harpies (Greek) | Sirens (Greek) | Thunder Lizards (AoS) +--- +- *Attenuated* +- Stretched thin, fine-boned, more space with less mass +- Eladrin (D&D) +{% /table %} +{% /TableWrapper %} + +#### 15 – Soul + Aether: Numinous + +- Individual biology that interfaces with forces beyond the material. Flesh conducts what shouldn't be there. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Numinous* +- Flesh conducts supernatural energy; the body is a natural channel +- Slann (Warhammer) | Tieflings (D&D) | Nephilim (Biblical) +--- +- *Marked* +- Visible signs of numinous contact – luminescense, patterning, stigmata +- Aasimar (D&D) | Stormcast Eternals (AoS) | Genasi (D&D) +--- +- *Liminal* +- Body exists partially outside material reality; perceptually unstable +- Shadar-Kai (D&D) | Phase Spiders (D&D) | Mandrakes (WH 40K) +--- +- *Saturated* +- Flesh infused with numinous substance; biologically more-than-material +- Celestials (D&D) | Seraphon (AoS) | Tuatha De Danann (Irish) +{% /table %} +{% /TableWrapper %} + +#### 21 – Body + Earth: Massive + +- Collective biology that is heavy, persistent, materially dominant. Together they are harder to move or break. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Massive* +- Collective mass exceeds sum of parts; proximity increases density or hardness +- Orks (WH 40K) | Kroxigor (Warhammer) +--- +- *Sessile* +- Biology anchors population to substrate; the species grows INTO its environment +- Sylvaneth (AoS) | Aldryami (Glorantha) +--- +- *Stratified* +- Bodies differentiate by role — bone density, muscle mass, organs vary by function +- Formorians (D&D) | Mostali (Glorantha) +--- +- *Lithic* +- Mineral deposits build up in flesh; bone spurs, stone veins, shell growths; harder and denser over time +- Galeb Duhr (D&D) | Rockgut Troggoths (AoS) +{% /table %} +{% /TableWrapper %} + +#### 22 - Body + Fire: Eruptive + +- Collective biology that burns or overwhelms through combined intensity. Output compounds with numbers. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Eruptive* +- Dormancy cycles punctuated by mass activation; collective biological spike +- Greenkins (Warhammer) | Slaadi (D&D) +--- +- *Furnace* +- Proximity generates compounding heat; collective metabolism exceeds individual capacity +- Fyreslayers (AoS) | Azer (D&D) +--- +- *Swarm* +- Small bodies, devastating collective effect; consumption scales with numbers +- Skaven (Warhammer) | Hormagaunts (WH 40K) +--- +- *Catalytic* +- Proximity triggers accelerated biological processes – growth, healing, mutation, decay +- Genestealer Cults (WH 40K) | Clan Moulder (Warhammer) +{% /table %} +{% /TableWrapper %} + +#### 23 – Body + Water: Confluent + +- Collective biology where individual boundaries thin. Shared function across specimens. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Confluent* +- Boundaries between specimens naturally thin; fluid, chemical, or neural sharing +- Tyranids (WH 40K) | Oblex (D&D) +--- +- *Tidal* +- Species-wide biological cycles synchronize — breeding, dormancy, migration, molt +- Idoneth Deepkin (AoS) | Kuo-toa (D&D) | Sahuagin (D&D) +--- +- *Caste* +- Bodies specialize in response to collective chemical signals; role shapes flesh +- Thri-Keen (D&D) | Tyranids (WH 40K) | Scorpionmen (Glorantha) +--- +- *Amphibious* +- Biology operates across two states or media; straddles environments +- Locathah (D&D) | Merfolk (D&D) | Newtlings (Glorantha) +{% /table %} +{% /TableWrapper %} + +#### 24 – Body + Air: Dispersed + +- Collective biology that spreads and communicates across distance. Coherence despite separation. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Dispersed* +- Maintains biological function across wide physical separation +- Hsunchen (Glorantha) | Kenku (DnD) | Pixies (D&D) +--- +- *Sporal* +- Reproduction and communication through airborne biological material +- Orks (WH 40K) | Myconids (D&D) | Vegepygmies (D&D) +--- +- *Choral* +- Linked through vibration, pheromone, or signal; what one senses, all access +- Genestealer Cults (WH 40K) | Cranium Rats (D&D) +--- +- *Filamentous* +- Extends fine structures — tendrils, mycelia, sensory threads — networking the population +- Dryads (D&D) | Sylvaneth (AoS) | Goblins (Glorantha) +{% /table %} +{% /TableWrapper %} + +#### 25 – Body + Aether: Consecrated + +- Collective biology that channels numinous force through combined presence. More bodies, stronger signal. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Consecrated* +- Combined presence amplifies numinous conductivity; the congregation is the antenna +- Stormcast Eternals (AoS) | Deva Hosts (Hindu) | Modrons (D&D) +--- +- *Undying* +- Collectively resists death; expired specimen persist biologically +- Ossiarch Bonereapers (AoS) | Draugr (Norse) +--- +- *Sanctified* +- Flesh develops numinous properties over time; older specimens become more-than-material +- Dragons (D&D) | Seraphon (AoS) | Treelords (AoS) +--- +- *Reliquary* +- Dead Flesh retains function; bones, shells, husks remain active components of the collective +- Necrons (WH 40K) | Bone Nagas (D&D) | Tomb Kings (Warhammer) +{% /table %} +{% /TableWrapper %} + +#### 31 – Spirit + Earth: Calcified + +- Biology transforming toward material fixity. Hardening, slowing, becoming more mineral than animal. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Calcified* +- Flesh progressively mineralizes; slowly becoming stone +- Stone Cursed (D&D) +--- +- *Subsiding* +- Biology settling, compressing; denser and less mobile over generations +- Mostali (Glorantha) | Treants (D&D) | Dao (D&D) +--- +- *Accreted* +- Body accumulates environmental material — shells, deposits, encrustations that don't shed +- Tortles (D&D) | Zaratan (D&D) | Flail Snails (D&D) +--- +- *Silted* +- Biological processes slowing; metabolism, reproduction, cognition thickening +- Ents (Tolkien) | Huorn (Tolkien) | Aldryami +{% /table %} +{% /TableWrapper %} + +#### 32 – Spirit + Fire: Pyroclastic + +- Biology that breaks down and regrows. Flesh fails, scars, replaces itself. The body cycles through collapse and renewal. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Pyroclastic* +- Flesh cycles through breakdown and regrowth; old flesh dies, new flesh replaces it on a biological clock +- Phoenix (Egyptian/Greek) | Trolls (D&D) | Fyreslayers (AoS) +--- +- *Slagged* +- Each regrowth leaves waste – biological residue that accumulates in or on the body +- Chaos Dwarves (Warhammer) | Half-Golems (D&D) | Infernals (SotDL) +--- +- *Cauterized* +- Healed-over systemic damage; the body bears visible evidence of past biological crisis in every specimen +- Githyanki (D&D) | Orcs (Tolkien) +--- +- *Diminishing* +- Each regrowth cycle yields less; organs smaller, Flesh thinner, output lower; the species is winding down +- Fyreslayers (AoS) | Petty-Dwarves (Tolkien) | Derro (D&D) +{% /table %} +{% /TableWrapper %} + +#### 33 – Spirit + Water: Dissolving + +- Biology losing definition. Flesh boundaries soften; organs blur into each other; the body is less distinct than it should be and getting worse. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Dissolving* +- Flesh boundaries between organs, systems, or specimens are soft and getting softer; flesh merges where it shouldn't +- Gibbering Mouth (D&D) | Flesh-Eater Courts (AoS) | Shoggoth (Lovecraft) +--- +- *Brackish* +- Body contains incompatible Fleshs side by side; mixed-origin biology that shouldn't coexist but does +- Beastmen (Warhammer) | Mutants (Warhammer) | Mongrelfolk (D&D) | Chimera (Greek) +--- +- *Regressive* +- Under stress, Flesh reverts to earlier developmental forms; ancestral organs resurface, current structures degrade +- Lycanthrophes (D&D) | Werewolves (Folklore) | Gorgers (Warhammer) +--- +- *Cursive* +- Carries a progressive condition in the blood – cumulative, irreversible, visibly advancing through the body over time +- Vampires (Folklore) | Strigoi (Romanian) | Dhampir (D&D) +{% /table %} +{% /TableWrapper %} + +#### 34 – Spirit + Air: Attenuating + +- Biology losing mass, density, substance. Bones hollow out; Flesh thins; the body is lighter and less solid each generation. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Attenuating* +- Flesh becomes measurably less dense; bone hollows, muscle thins, skin translucifies +- Elves (Tolkien) | Eldarin (D&D) | Tuatha De Danann +--- +- *Dispersing* +- The body sheds material — skin flakes, spores, dust, dander — constantly losing substance to the air +- Spore Servants (D&D) | Dust Mephits (D&D) +--- +- *Volatilizing* +- Solid Flesh converting to gas or vapor; the body literally evaporates at the margins +- Air Genasi (D&D) | Wraiths (D&D) | Steam Mephits (D&D) +--- +- *Echoing* +- Biological output (voice, scent, vibration) persits longer than the flesh that produced it +- Banshees (Irish) | Ghostwise Halflings (D&D) | Nazgul (Tolkien) +{% /table %} +{% /TableWrapper %} + +#### 35 – Spirit + Aether: Transfiguring + +- Biology being actively rewritten by numinous exposure. Flesh changes in ways that don't follow normal biological rules; organs appear, disappear, or restructure without developmental cause. + +{% TableWrapper variants=["theme"] %} +{% table %} +- Theme +- What the body does +- References +--- +- *Transfiguring* +- Flesh actively restructuring without biological trigger; new organs, new structures, new chemistry each generation +- Slaadi (D&D) | Dragonewts (Glorantha) +--- +- *Veiled* +- Flesh becoming harder to observe directly; light bends wrong around the body, eyes slide off, memory of the specimen fades +- Mandrakes (WH 40K) | Skulks (D&D) | Silence (Doctor Who) +--- +- *Threshold* +- Flesh flickers between material states; solid then not; warm then cold; present then absent; measurably unstable +- Phase Spiders (D&D) | Nighthaunt (AoS) +--- +- *Hollow* +- Whatever sustained the biology is gone; Flesh is structurally intact but running on fumes; functional but emptying out +- Hollows (Dark Souls) | Revenants (D&D) | God Forgot Peoples (Glorantha) +{% /table %} +{% /TableWrapper %} + +{% Callout type="example" title="The Galla – Themes" %} +The Galla use the following themes for their deviations: +- **Size =>** _Cauterized [Spirit+Fire]:_ healed-over systemic trauma; galla bear evidence of deliberate biological restructuring; compact frames shaped by generations of selection and modification +- **Lifespan =>** _Lithic [Body+Earth]:_ miniral deposits build in flesh over time; bone densifies, skin thickens, veins calcite; oldest specimen are more stone than flesh; immortality IS the mineralisation +- **Habitat =>** _Cursive [Spirit+Water]:_ progressive condition flowing through blood; sunlight exposure triggers mineral deposition; cumulative, irreversible; visibly advancing through the body +- **Cognition =>** _Accreted [Spirit+Earth]:_ mind accumulates and never clears; every thought, memory, grudge layered on the last; cognition as geological deposit; nothing discarded, everything compressed +{% /Callout %} + +### Step 3: Generate Materia + +- **1 Step Deviation =>** theme provides Prime×Essence; choose ONE (take Prime or Essence) +- **2 Step Deviation =>** theme provides Prime×Essence; take both +- Tokens accumulate from all deviations into a single pool – the **Materia** +- *Materia* is the kindred's identity – what's dominant, what's secondary, where the tensions are + +{% Callout type="example" title="The Galla – Materia" %} +Based on their themes, the Galla have a _Materia_ composed of +- **1 Body** _(Lithic)_ +- **1 Spirit** _(Cauterized)_ +- **1 Water** _(Cursive)_ +- **2 Earth** _(Lithic & Accreted)_ +{% /Callout %} + +### Step 4: Drives + +- **Drive =>** biological compulsion hardwired into the kindred; +- Instinct that flesh imposes, **NOT cultural value;** culture can suppress, channel, or celebrate drive, but can't eliminate it +- *Cage Test:* put kindred in a controlled enviroment without culture, language, or history – what behaviours emerge from the flesh itself +- *Reading the drive:* **Dominant essence** determines *WHAT* the compulsion is; **dominant prime** colors *HOW* it feels + +#### Example Drives + +##### Earth – Material Compulsion + +- **Accrete =>** accumulates and refuses to release + - *+Soul:* every loss is a wound; lets go of nothing because releasing feels like dying + - *+Body:* the weight of what's gathered becomes the foundation; the hoard IS the home; remove it and there's nothing underneath + - *+Spirit:* collect scars, grudges, memories as much as objects; the accumulation is emotional as much as material; layered with things that should have been shed long ago +- **Brace =>** resists displacement disappropriate to threat + - *+Soul:* pride that won't bend; the resusal is identity; »I don't move« is who they are + - *+Body:* can't stop reinforcing; keeps adding weight, adding layers, adding strructure to what's already holding; stopping feels like collapse + - *+Spirit:* doesn't know what it's bracing against; the tension is permanent, purposeless; rigid against threats that may never come; anxious stillness + +##### Fire – Consuming Compulsion + +- **Hunger =>** seeks fuel even when sated + - *+Soul:* wants with the whole self; the craving is identity; »I want« is the only thought that feels real + - *+Body:* slow, inexorable consumption; not frenzied but relentless; still eating when the table is bare and the guests are gone + - *+Spirit:* the hunger is for something that doesn'T exist yet; feeds and feeds but the satisfication keeps dissolving; chasing a taste it imagined once +- **Flare =>** escalates past what the situation warrants + - *+Soul:* white-hot and personal; the insult burns; can't let it go because letting it go means the fire goes out + - *+Body:* anger outlasts the cause; grudge-fury; still seething about something three generations ago + - *+Spirit:* doesn't know what it's angry at; the rage is free-floating, attaches to whatever's nearest; wakes up furious at nothing + +##### Water – Boundary Compulsion + +- **Seek =>** orients toward absent stimuli; biological homesickness + - *+Soul:* heartbreak as compass; the absent thing is more real than anything; every joy is hollow because it isn't THAT + - *+Body:* keeps returning to the same place, the same name, the same absence; the faithfulness outlasts the memory of WHY + - *+Spirit:* homesick for something that keeps changing; every time it gets close, the longing reshapes itself; seeks something it could never name +- **Cling =>** won't release bonds; separation triggers crisis + - *+Soul:* love that suffocates; holds so tight it bruises; terrified that loosening the grip means losing everything + - *+Body:* the bond has become the structure; the relationship IS the organism's skeleton; can't separate because separation is amputation + - *+Spirit:* clings to one thing, then another; the attachment is desperate and transferable; not loyal to WHAT it holds but to the act of holding + +##### Air – Expansive Compulsion + +- **Probe =>** investigates novel stimuli before assessing threat + - *+Soul:* can't leave a mystery alone; the unknown is an itch; picks at secrets the way a tongue finds a broken tooth + - *+Body:* thorough, patient investigation that never concludes; still cataloguing, still testing, still mapping long after the question was answered + - *+Spirit:* the investigation unravels things that were holding together; probes until the structure comes apart; curiosity as inadvertent destruction +- **Flee =>** confinement triggers escape; any constraint, obligation, or enclosure demands immediate flight + - *+Soul:* can't tolerate being known; intimacy is a cage; the moment someone gets close, the organism bolts; every relationship is an escape route + - *+Body:* walls close in; obligations accumulate like weight; the organism endures and endures util one day, it simply isn't there anymore; quiet disappearance + - *+Spirit:* doesn't know what it's runnig from; the flight keeps changing direction; escapes one thing and immediately feels trapped by the next; freedom itself becomes the cage + +##### Aether – Numinous Compulsion + +- **Fixate =>** locks onto stimulus and cannot disengage + - *+Soul:* pattern is the only thing that matters; everything else dims; the fixation is a form of worship and a form of starvation + - *+Body:* can't stop repeating; the pattern demands completion; every cycle demands another cycle; the ritual grows heavier but stopping is unthinkable + - *+Spirit:* fiates with terrifying intensity then drops it completely; the obsession is total and tempoary; burns through fascination like fuel +- **Breach =>** pushes against material limits; testing boundaries and thresholds + - *+Soul:* daring instinguishable from self-destruction; crosses the line because NOT crossing it feels like cowardice; the forbidden is a dare the self makes to itself + - *+Body:* keeps pushing even when the boundary is already broken; the pressure never lets up; finds new walls inside the ruins of old ones; can't stop leaning against something + - *+Spirit:* picks at the seams of things; doesn'T just cross boundaries but dissolves them; leaves reality slightly less coherent wherever it's been + +{% Callout type="example" title="The Galla – Drive" %} +Based on their materia, _Earth_ is the strongest essence, and while the primes _Body_ and _Spirit_ tie, their themes show a definitive weight towards _Sprit,_ so we choose **Accrete** through _Spirit_ as their drive. + +Galla collect scars, grudges, memories as much as objects; layered with things that should have been shed long ago; the accumulation keeps transforming but never stops. +{% /Callout %} + +### Step 5: Gifts + +- is a **unique biological capacity** – some the Kindred can DO that baseline can't +- **Grammar =>** built by combining elemental tokens – *Primes* and *Essences* each carry their full elemental character into the combinations + - Combine tokens until Gift is described + - Each element used once per gift; **no stacking** + - **Minimum:** *1 Prime + 1 Essence* + - Combination is the description; elements tell you what the Gift does + +#### Primes – Character + +- **Soul =>** what burns; the spark; individual agency, desire, will, passion, the inner fire; the self as initiator; *what ignites* +- **Body =>** what remains; persistence, structure, endurance, weight; the material, the external, the collective; *what holds* +- **Spirit =>** what escapes; the volatile, the liminal, the transformative; what can't be pinned down; what crosses thresholds; *the medium through which change happens* + +#### Essences - Character + +- **Earth =>** heavy, material, foundational, dense, enduring, fertile, buried, crushing + - *+Soul:* tougher flesh; pain suppressed; instinct that digs in and won't yield; possessive grip; rooted and immoveable + - *+Body:* matter shaped, hardened or crushed; petrification; walls raised; bones broken; weight imposed; substance densified + - *+Spirit:* wards anchored in substance; the liminal given weight; bindings that hold; transformation frozen mid-step; the between solidified +- **Fire =>** bright, consuming, refining, revealing, urgent, purifying, forging + - *+Soul:* senses sharpened to a point; metabolism spiked; fear burned away; fever clarity; passion that consumed the self; the inner fire that won't dim + - *+Body:* breath weapons; venom; radiant heat; light that blinds or reveals; destruction that clears; purifying force imposed outward + - *+Spirit:* sacrifice that opens doors; the veil burned thin; what's hidden made visible; purification of the crossing; the threshold set alight +- **Water =>** flowing, deep, dissolving, adaptive, reflective, concealing, relentless + - *+Soul:* identity loosened; memory as current; the self that becomes what it needs to be; depth concealed beneath surface; the inner ocean + - *+Body:* acid; erosion; matter reshaped slowly; bonds formed or dissolved; barriers penetrated; structure loosened + - *+Spirit:* boundaries between states softened; the crossing eased or blocked; fate as undertow; transformation that flows rather than breaks +- **Air =>** invisible, expansive, swift, carrying, scattering, permeating, howling + - *+Soul:* senses extended past the body; voice that carries; awareness of what's distant or hidden; the self that reaches; presence that fills a space + - *+Body:* distance collapsed; flight; sonic force; atmosphere manipulated; signals broadcast; space stretched or compressed + - *+Spirit:* presence dispersed across space; the veil thinned wide; haunting; change carried on the wind; the between stretched thin +- **Aether =>** transcendent, numinous, sacred, alien, ordered, fated, veiled + - *+Soul:* innate magic; spirit-sight; prophetic dreams; the mind touching what it wasn't build to touch; inner sancticity or inner corruption + - *+Body:* sacred ground; blessed or cursed matter; relics; physical reality charged with the divine; substance suffused with meaning + - *+Soul:* the veil itself manipulated; doorway opened or sealed; the boundary between worlds; the crossing itself as territory + +#### Building a Gift + +1. Describe what the Gift does in plain language; +1. Identify the elemental **character** of how it works (*Primes & Essences*) +1. Spend those tokens from the pool +1. Name it + +##### Example Gifts + +- **Flight [Body+Air] =>** material body *(Body)* extending through space *(Air);* wings, hollow bones, light frames; biological flight +- **Levitation [Soul+Aether] =>** self *(Soul)* touching the beyond *(Aether);* no wings, no physics – organism just rises +- **Telepathy [Soul+Air] =>** self *(Soul)* extending awareness across distance *(Air);* always on psychic broadcast +- **Fear Aura [Body+Fire+Air] =>** intense *(Fire)* signal *(Air)* projected outward with persistent weight *(Body);* biological terror field +- **Petrifying Gaze [Body+Earth+Air] =>** material substance *(Body+Earth)* imposed through signal at distance *(Air);* eyes that turn flesh to stone +- **Skin-shifting [Spirit+Water+Aether] =>** liminal *(Spirit)* dissolving form *(Water)* across a threshold *(Aether);* organism doesn'T choose to change – crosses a boundary and flesh follows; +- **Regeneration [Spirit+Earth+Fire] =>** transformation *(Spirit)* of material flesh *(earth)* through consuming and refining damaged tissue *(Fire);* the wound is fuel +- **Venom Spit [Body+Fire] =>** destructive biological output *(Fire)* directed at external targets *(Body);* caustic secretion, always producing +- **Spirit Sight [Soul+Aether] =>** self *(Soul)* touching the numinous *(Aether);* ghost-sight, sensing magic, perceive the hidden +- **Emotional Manipulation [Body+Fire] =>** persistent itensity *(Fire)* directed at external targets *(Body);* amplifies whatever the target already feels; proximity-only +- **Compulsion Song [Body+Fire+Air] =>** Intense *(Fire)* signal *(Air)* broadcast outward *(Body);* irresistible broadcast +- **Environmental adaption [Soul+Water] =>** self *(Soul)* loosened and adaptive *(Water);* body conforms to its surroundings over time +- **Corpse Puppeting [Body+Earth+Water+Spirit] =>** Material substance *(Body+Earth)* penetrated and flowed into *(Water)* and transformed into something it wasn't *(Spirit);* colony inhabiting dead flesh + +{% Callout type="example" title="The Galla – Gifts" %} +**Galla Curing [Spirit+Earth+Water] =>** Galla are able to direct their own mineralisation; harden a fist before strike, calcifying a wound shut, soften joints for precision; every use advances the curse +{% /Callout %} + +### Step 6: Leftovers +- Unspent tokens flow downstream to *Calcination;* every token spent on gifts is a token culture doesn't get; every token saved for culture is a gift the species doen't have + +{% Callout type="example" title="The Galla – Leftovers" %} +Every Galla heritage or ancestry autmatically receives **1 Earth & 1 Body Token.** +{% /Callout %} diff --git a/src/keystatic/collections/articles.ts b/src/keystatic/collections/articles.ts index e3a7036..20da7cc 100644 --- a/src/keystatic/collections/articles.ts +++ b/src/keystatic/collections/articles.ts @@ -8,6 +8,7 @@ export const articles = collection({ path: 'src/content/articles/*/', format: { contentField: 'body' }, entryLayout: 'content', + columns: ['title', 'parent', 'status', 'publishDate'], schema: { ...createBaseArticleFields(), body: createContentField(), diff --git a/src/keystatic/components/index.ts b/src/keystatic/components/index.ts index f7b2f0e..d6ad609 100644 --- a/src/keystatic/components/index.ts +++ b/src/keystatic/components/index.ts @@ -2,10 +2,12 @@ import elementComponent from './element.ts'; import calloutComponent from './callout.ts'; import sidenoteComponent from './sidenote.ts'; import figureComponent from './figure.ts'; +import tablewrapperComponent from './tablewrapper.ts'; export const generalComponents = { ...elementComponent, ...calloutComponent, ...sidenoteComponent, ...figureComponent, + ...tablewrapperComponent, }; diff --git a/src/keystatic/components/tablewrapper.ts b/src/keystatic/components/tablewrapper.ts new file mode 100644 index 0000000..0ecd248 --- /dev/null +++ b/src/keystatic/components/tablewrapper.ts @@ -0,0 +1,42 @@ +import { wrapper } from '@keystatic/core/content-components'; +import { fields } from '@keystatic/core'; + +const tableWrapperComponent = { + TableWrapper: wrapper({ + label: 'Table Wrap', + schema: { + variants: fields.multiselect({ + label: 'Variants', + defaultValue: ['default'], + options: [ + { + label: 'Default', + value: 'default', + }, + { + label: 'Random', + value: 'random', + }, + { + label: 'Elemental', + value: 'elemental', + }, + { + label: 'Axes', + value: 'axes', + }, + { + label: 'Elemental Grid', + value: 'elemental-grid', + }, + { + label: 'Theme', + value: 'theme', + }, + ], + }), + }, + }), +}; + +export default tableWrapperComponent; diff --git a/src/styles/base/content.css b/src/styles/base/content.css index 3c1046c..713044f 100644 --- a/src/styles/base/content.css +++ b/src/styles/base/content.css @@ -1,13 +1,13 @@ .content { font-family: var(--font-body); - font-size: clamp(1rem, 2.5vw, 1.25rem); + font-size: var(--layout-responsive-font); } .prose { @mixin py var(--space-8); @mixin typo_body; - font-size: clamp(1rem, 2.5vw, 1.25rem); + font-size: var(--layout-responsive-font); & ::selection { color: var(--color-palette-ice-blue); @@ -31,6 +31,8 @@ @mixin mb var(--space-6); @mixin pl var(--space-4); @mixin border-l var(--size-8), solid, var(--color-text-primary); + + hyphens: auto; } & h3 { @@ -40,6 +42,7 @@ @mixin py var(--space-2); @mixin px var(--space-4); + hyphens: auto; color: var(--color-text-inverse); background: var(--color-surface-inverse); } @@ -52,6 +55,7 @@ @mixin px var(--space-4); @mixin border-y var(--size-6), solid, var(--color-text-secondary); + hyphens: auto; color: var(--color-text-secondary); } @@ -60,6 +64,7 @@ @mixin mt var(--space-9); @mixin mb var(--space-4); + hyphens: auto; color: var(--color-text-secondary); &::before { @@ -74,6 +79,7 @@ @mixin mt var(--space-8); @mixin mb var(--space-2); + hyphens: auto; color: var(--color-text-tertiary); } @@ -234,7 +240,7 @@ list-style: none; & > li { - @mixin ml var(--space-6); + @mixin ml var(--space-9); @mixin pl var(--space-4); counter-increment: ol-l1; @@ -322,6 +328,61 @@ } } + & .axes { + & table { + & th, + & td { + &:first-child { + width: 10em; + } + + &:nth-child(2) { + width: 5em; + } + + &:nth-child(3) { + text-align: left; + } + } + } + } + + .elemental-grid { + & table { + & td { + &:first-child { + @mixin typo_table-header; + @mixin py var(--space-2); + @mixin px var(--space-4); + + border: var(--size-1) solid var(--color-border-strong); + color: var(--color-text-inverse); + background: var(--color-surface-inverse); + } + } + } + } + + .theme { + & table { + & th, + & td { + &:first-child { + width: 10em; + } + + &:nth-child(2) { + width: 50%; + text-align: left; + } + + &:nth-child(3) { + width: calc(50% - 10em) + } + } + } + } + /* === DEFINTION LISTS === */ & dl { @mixin my var(--space-3); diff --git a/src/styles/base/primitives.css b/src/styles/base/primitives.css index fcea5b5..9d4e69d 100644 --- a/src/styles/base/primitives.css +++ b/src/styles/base/primitives.css @@ -211,4 +211,5 @@ --layout-page-margin: var(--space-8); --layout-max-width: 90rem; --layout-header-height: 3.125rem; + --layout-responsive-font: clamp(0.875rem, 2.5vw, 1.25rem); }