diff --git a/astro.config.mjs b/astro.config.mjs
index da4b1f41..1b38c0a6 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -7,7 +7,6 @@ import starlightLinksValidator from 'starlight-links-validator';
import starlightImageZoom from 'starlight-image-zoom';
import sitemap from '@astrojs/sitemap';
import starlightFullViewMode from 'starlight-fullview-mode';
-import starlightTocOverviewCustomizer from 'starlight-toc-overview-customizer';
import markdoc from '@astrojs/markdoc';
@@ -20,7 +19,7 @@ const response = await fetch(
'https://api.github.com/repos/localstack/localstack/releases/latest',
{
headers: { Accept: 'application/vnd.github+json' },
- }
+ },
);
const data = await response.json();
const latestVersion = data.tag_name.replace('v', '');
@@ -43,6 +42,7 @@ export default defineConfig({
starlight({
title: 'Docs',
favicon: '/images/favicons/favicon.ico',
+ routeMiddleware: './src/routeData.ts',
customCss: [
'./src/fonts/font-face.css',
'./src/styles/global.css',
@@ -54,6 +54,7 @@ export default defineConfig({
components: {
PageSidebar: './src/components/PageSidebarWithBadges.astro',
LanguageSelect: './src/components/LanguageSelectWithGetStarted.astro',
+ Banner: './src/components/BannerWithPersistentAnnouncement.astro',
},
expressiveCode: {
themes: ['one-light', 'one-dark-pro'],
@@ -189,9 +190,6 @@ export default defineConfig({
starlightImageZoom({
showCaptions: true,
}),
- starlightTocOverviewCustomizer({
- overviewTitle: 'Back to top',
- }),
starlightFullViewMode({
leftSidebarEnabled: false,
}),
diff --git a/package-lock.json b/package-lock.json
index 148bfe39..0875a3b6 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,8 +10,8 @@
"dependencies": {
"@astrojs/markdoc": "^0.15.10",
"@astrojs/react": "^4.4.2",
- "@astrojs/sitemap": "^3.6.0",
- "@astrojs/starlight": "^0.37.1",
+ "@astrojs/sitemap": "^3.7.0",
+ "@astrojs/starlight": "^0.37.4",
"@astrojs/starlight-docsearch": "^0.6.1",
"@astrojs/starlight-markdoc": "^0.5.1",
"@astrojs/starlight-tailwind": "^4.0.2",
@@ -21,7 +21,7 @@
"@tanstack/react-table": "^8.21.3",
"@types/react": "^19.1.3",
"@types/react-dom": "^19.1.3",
- "astro": "^5.16.6",
+ "astro": "^5.17.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.509.0",
@@ -31,7 +31,6 @@
"starlight-fullview-mode": "^0.2.3",
"starlight-image-zoom": "^0.12.0",
"starlight-links-validator": "^0.17.0",
- "starlight-toc-overview-customizer": "^0.1.0",
"tailwind-merge": "^3.2.0",
"tailwindcss": "^4.1.6"
},
@@ -429,20 +428,20 @@
}
},
"node_modules/@astrojs/sitemap": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.6.0.tgz",
- "integrity": "sha512-4aHkvcOZBWJigRmMIAJwRQXBS+ayoP5z40OklTXYXhUDhwusz+DyDl+nSshY6y9DvkVEavwNcFO8FD81iGhXjg==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.0.tgz",
+ "integrity": "sha512-+qxjUrz6Jcgh+D5VE1gKUJTA3pSthuPHe6Ao5JCxok794Lewx8hBFaWHtOnN0ntb2lfOf7gvOi9TefUswQ/ZVA==",
"license": "MIT",
"dependencies": {
- "sitemap": "^8.0.0",
+ "sitemap": "^8.0.2",
"stream-replace-string": "^2.0.0",
"zod": "^3.25.76"
}
},
"node_modules/@astrojs/starlight": {
- "version": "0.37.1",
- "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.37.1.tgz",
- "integrity": "sha512-STNsR5PaDoiW4IgcX17Fp42FfyqwuweWPts/EWEMcFPAeg9Nvpu3UvVCorasYrgfJgaJTeydsOV++0ACA1KYDA==",
+ "version": "0.37.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/starlight/-/starlight-0.37.4.tgz",
+ "integrity": "sha512-ygPGDgRd9nCcNgaYMNN7UeAMAkDOR1ibv3ps3xEz+cuvKG3CRLd19UwdB+Gyz1tbkyfjPWPkFKNhLwNybro8Tw==",
"license": "MIT",
"dependencies": {
"@astrojs/markdown-remark": "^6.3.1",
@@ -823,12 +822,12 @@
}
},
"node_modules/@capsizecss/unpack": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-3.0.1.tgz",
- "integrity": "sha512-8XqW8xGn++Eqqbz3e9wKuK7mxryeRjs4LOHLxbh2lwKeSbuNR4NFifDZT4KzvjU6HMOPbiNTsWpniK5EJfTWkg==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-4.0.0.tgz",
+ "integrity": "sha512-VERIM64vtTP1C4mxQ5thVT9fK0apjPFobqybMtA1UdUujWka24ERHbRHFGmpbbhp73MhV+KSsHQH9C6uOTdEQA==",
"license": "MIT",
"dependencies": {
- "fontkit": "^2.0.2"
+ "fontkitten": "^1.0.0"
},
"engines": {
"node": ">=18"
@@ -2334,60 +2333,60 @@
]
},
"node_modules/@shikijs/core": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.20.0.tgz",
- "integrity": "sha512-f2ED7HYV4JEk827mtMDwe/yQ25pRiXZmtHjWF8uzZKuKiEsJR7Ce1nuQ+HhV9FzDcbIo4ObBCD9GPTzNuy9S1g==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.21.0.tgz",
+ "integrity": "sha512-AXSQu/2n1UIQekY8euBJlvFYZIw0PHY63jUzGbrOma4wPxzznJXTXkri+QcHeBNaFxiiOljKxxJkVSoB3PjbyA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.20.0",
+ "@shikijs/types": "3.21.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.5"
}
},
"node_modules/@shikijs/engine-javascript": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.20.0.tgz",
- "integrity": "sha512-OFx8fHAZuk7I42Z9YAdZ95To6jDePQ9Rnfbw9uSRTSbBhYBp1kEOKv/3jOimcj3VRUKusDYM6DswLauwfhboLg==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.21.0.tgz",
+ "integrity": "sha512-ATwv86xlbmfD9n9gKRiwuPpWgPENAWCLwYCGz9ugTJlsO2kOzhOkvoyV/UD+tJ0uT7YRyD530x6ugNSffmvIiQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.20.0",
+ "@shikijs/types": "3.21.0",
"@shikijs/vscode-textmate": "^10.0.2",
"oniguruma-to-es": "^4.3.4"
}
},
"node_modules/@shikijs/engine-oniguruma": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.20.0.tgz",
- "integrity": "sha512-Yx3gy7xLzM0ZOjqoxciHjA7dAt5tyzJE3L4uQoM83agahy+PlW244XJSrmJRSBvGYELDhYXPacD4R/cauV5bzQ==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.21.0.tgz",
+ "integrity": "sha512-OYknTCct6qiwpQDqDdf3iedRdzj6hFlOPv5hMvI+hkWfCKs5mlJ4TXziBG9nyabLwGulrUjHiCq3xCspSzErYQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.20.0",
+ "@shikijs/types": "3.21.0",
"@shikijs/vscode-textmate": "^10.0.2"
}
},
"node_modules/@shikijs/langs": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.20.0.tgz",
- "integrity": "sha512-le+bssCxcSHrygCWuOrYJHvjus6zhQ2K7q/0mgjiffRbkhM4o1EWu2m+29l0yEsHDbWaWPNnDUTRVVBvBBeKaA==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.21.0.tgz",
+ "integrity": "sha512-g6mn5m+Y6GBJ4wxmBYqalK9Sp0CFkUqfNzUy2pJglUginz6ZpWbaWjDB4fbQ/8SHzFjYbtU6Ddlp1pc+PPNDVA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.20.0"
+ "@shikijs/types": "3.21.0"
}
},
"node_modules/@shikijs/themes": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.20.0.tgz",
- "integrity": "sha512-U1NSU7Sl26Q7ErRvJUouArxfM2euWqq1xaSrbqMu2iqa+tSp0D1Yah8216sDYbdDHw4C8b75UpE65eWorm2erQ==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.21.0.tgz",
+ "integrity": "sha512-BAE4cr9EDiZyYzwIHEk7JTBJ9CzlPuM4PchfcA5ao1dWXb25nv6hYsoDiBq2aZK9E3dlt3WB78uI96UESD+8Mw==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.20.0"
+ "@shikijs/types": "3.21.0"
}
},
"node_modules/@shikijs/types": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.20.0.tgz",
- "integrity": "sha512-lhYAATn10nkZcBQ0BlzSbJA3wcmL5MXUUF8d2Zzon6saZDlToKaiRX60n2+ZaHJCmXEcZRWNzn+k9vplr8Jhsw==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.21.0.tgz",
+ "integrity": "sha512-zGrWOxZ0/+0ovPY7PvBU2gIS9tmhSUUt30jAcNV0Bq0gb2S98gwfjIs1vxlmH5zM7/4YxLamT6ChlqqAJmPPjA==",
"license": "MIT",
"dependencies": {
"@shikijs/vscode-textmate": "^10.0.2",
@@ -2400,15 +2399,6 @@
"integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==",
"license": "MIT"
},
- "node_modules/@swc/helpers": {
- "version": "0.5.17",
- "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz",
- "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==",
- "license": "Apache-2.0",
- "dependencies": {
- "tslib": "^2.8.0"
- }
- },
"node_modules/@tailwindcss/node": {
"version": "4.1.6",
"resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.6.tgz",
@@ -2769,15 +2759,6 @@
"@types/estree": "*"
}
},
- "node_modules/@types/fontkit": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/@types/fontkit/-/fontkit-2.0.8.tgz",
- "integrity": "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*"
- }
- },
"node_modules/@types/hast": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
@@ -3117,16 +3098,16 @@
}
},
"node_modules/astro": {
- "version": "5.16.6",
- "resolved": "https://registry.npmjs.org/astro/-/astro-5.16.6.tgz",
- "integrity": "sha512-6mF/YrvwwRxLTu+aMEa5pwzKUNl5ZetWbTyZCs9Um0F12HUmxUiF5UHiZPy4rifzU3gtpM3xP2DfdmkNX9eZRg==",
+ "version": "5.17.1",
+ "resolved": "https://registry.npmjs.org/astro/-/astro-5.17.1.tgz",
+ "integrity": "sha512-oD3tlxTaVWGq/Wfbqk6gxzVRz98xa/rYlpe+gU2jXJMSD01k6sEDL01ZlT8mVSYB/rMgnvIOfiQQ3BbLdN237A==",
"license": "MIT",
"dependencies": {
"@astrojs/compiler": "^2.13.0",
"@astrojs/internal-helpers": "0.7.5",
"@astrojs/markdown-remark": "6.3.10",
"@astrojs/telemetry": "3.3.0",
- "@capsizecss/unpack": "^3.0.1",
+ "@capsizecss/unpack": "^4.0.0",
"@oslojs/encoding": "^1.1.0",
"@rollup/pluginutils": "^5.3.0",
"acorn": "^8.15.0",
@@ -3136,19 +3117,19 @@
"ci-info": "^4.3.1",
"clsx": "^2.1.1",
"common-ancestor-path": "^1.0.1",
- "cookie": "^1.0.2",
+ "cookie": "^1.1.1",
"cssesc": "^3.0.0",
"debug": "^4.4.3",
"deterministic-object-hash": "^2.0.2",
- "devalue": "^5.5.0",
- "diff": "^5.2.0",
+ "devalue": "^5.6.2",
+ "diff": "^8.0.3",
"dlv": "^1.1.3",
"dset": "^3.1.4",
"es-module-lexer": "^1.7.0",
"esbuild": "^0.25.0",
"estree-walker": "^3.0.3",
"flattie": "^1.1.1",
- "fontace": "~0.3.1",
+ "fontace": "~0.4.0",
"github-slugger": "^2.0.0",
"html-escaper": "3.0.3",
"http-cache-semantics": "^4.2.0",
@@ -3160,22 +3141,22 @@
"neotraverse": "^0.6.18",
"p-limit": "^6.2.0",
"p-queue": "^8.1.1",
- "package-manager-detector": "^1.5.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.15.0",
- "smol-toml": "^1.5.2",
+ "shiki": "^3.21.0",
+ "smol-toml": "^1.6.0",
"svgo": "^4.0.0",
"tinyexec": "^1.0.2",
"tinyglobby": "^0.2.15",
"tsconfck": "^3.1.6",
"ultrahtml": "^1.6.0",
- "unifont": "~0.6.0",
+ "unifont": "~0.7.3",
"unist-util-visit": "^5.0.0",
- "unstorage": "^1.17.3",
+ "unstorage": "^1.17.4",
"vfile": "^6.0.3",
"vite": "^6.4.1",
"vitefu": "^1.1.1",
@@ -3183,7 +3164,7 @@
"yargs-parser": "^21.1.1",
"yocto-spinner": "^0.2.3",
"zod": "^3.25.76",
- "zod-to-json-schema": "^3.25.0",
+ "zod-to-json-schema": "^3.25.1",
"zod-to-ts": "^1.2.0"
},
"bin": {
@@ -3515,15 +3496,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/brotli": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz",
- "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==",
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.1.2"
- }
- },
"node_modules/browserslist": {
"version": "4.28.1",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
@@ -3676,15 +3648,15 @@
}
},
"node_modules/chokidar": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
- "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz",
+ "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==",
"license": "MIT",
"dependencies": {
- "readdirp": "^4.0.1"
+ "readdirp": "^5.0.0"
},
"engines": {
- "node": ">= 14.16.0"
+ "node": ">= 20.19.0"
},
"funding": {
"url": "https://paulmillr.com/funding/"
@@ -3735,15 +3707,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/clone": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
- "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==",
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
"node_modules/clsx": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz",
@@ -3836,12 +3799,16 @@
"license": "MIT"
},
"node_modules/cookie": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
- "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
+ "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
"license": "MIT",
"engines": {
"node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/cookie-es": {
@@ -4064,9 +4031,9 @@
}
},
"node_modules/devalue": {
- "version": "5.6.1",
- "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.1.tgz",
- "integrity": "sha512-jDwizj+IlEZBunHcOuuFVBnIMPAEHvTsJj0BcIp94xYguLRVBcXO853px/MyIJvbVzWdsGvrRweIUWJw8hBP7A==",
+ "version": "5.6.2",
+ "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.6.2.tgz",
+ "integrity": "sha512-nPRkjWzzDQlsejL1WVifk5rvcFi/y1onBRxjaFMjZeR9mFpqu2gmAZ9xUB9/IEanEP/vBtGeGganC/GO1fmufg==",
"license": "MIT"
},
"node_modules/devlop": {
@@ -4082,16 +4049,10 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/dfa": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz",
- "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==",
- "license": "MIT"
- },
"node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "version": "8.0.3",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.3.tgz",
+ "integrity": "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.3.1"
@@ -4462,12 +4423,6 @@
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
"license": "MIT"
},
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "license": "MIT"
- },
"node_modules/fast-fifo": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
@@ -4501,30 +4456,24 @@
}
},
"node_modules/fontace": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.1.tgz",
- "integrity": "sha512-9f5g4feWT1jWT8+SbL85aLIRLIXUaDygaM2xPXRmzPYxrOMNok79Lr3FGJoKVNKibE0WCunNiEVG2mwuE+2qEg==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.4.0.tgz",
+ "integrity": "sha512-moThBCItUe2bjZip5PF/iZClpKHGLwMvR79Kp8XpGRBrvoRSnySN4VcILdv3/MJzbhvUA5WeiUXF5o538m5fvg==",
"license": "MIT",
"dependencies": {
- "@types/fontkit": "^2.0.8",
- "fontkit": "^2.0.4"
+ "fontkitten": "^1.0.0"
}
},
- "node_modules/fontkit": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz",
- "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==",
+ "node_modules/fontkitten": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/fontkitten/-/fontkitten-1.0.2.tgz",
+ "integrity": "sha512-piJxbLnkD9Xcyi7dWJRnqszEURixe7CrF/efBfbffe2DPyabmuIuqraruY8cXTs19QoM8VJzx47BDRVNXETM7Q==",
"license": "MIT",
"dependencies": {
- "@swc/helpers": "^0.5.12",
- "brotli": "^1.3.2",
- "clone": "^2.1.2",
- "dfa": "^1.2.0",
- "fast-deep-equal": "^3.1.3",
- "restructure": "^3.0.0",
- "tiny-inflate": "^1.0.3",
- "unicode-properties": "^1.4.0",
- "unicode-trie": "^2.0.0"
+ "tiny-inflate": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=20"
}
},
"node_modules/fs-constants": {
@@ -4587,9 +4536,9 @@
"license": "ISC"
},
"node_modules/h3": {
- "version": "1.15.4",
- "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz",
- "integrity": "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==",
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.5.tgz",
+ "integrity": "sha512-xEyq3rSl+dhGX2Lm0+eFQIAzlDN6Fs0EcC4f7BNUmzaRX/PTzeuM+Tr2lHB8FoXggsQIeXLj8EDVgs5ywxyxmg==",
"license": "MIT",
"dependencies": {
"cookie-es": "^1.2.2",
@@ -4597,9 +4546,9 @@
"defu": "^6.1.4",
"destr": "^2.0.5",
"iron-webcrypto": "^1.2.1",
- "node-mock-http": "^1.0.2",
+ "node-mock-http": "^1.0.4",
"radix3": "^1.1.2",
- "ufo": "^1.6.1",
+ "ufo": "^1.6.3",
"uncrypto": "^0.1.3"
}
},
@@ -6972,12 +6921,6 @@
"@pagefind/windows-x64": "1.3.0"
}
},
- "node_modules/pako": {
- "version": "0.2.9",
- "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz",
- "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==",
- "license": "MIT"
- },
"node_modules/parse-entities": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
@@ -7309,12 +7252,12 @@
}
},
"node_modules/readdirp": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
- "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz",
+ "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==",
"license": "MIT",
"engines": {
- "node": ">= 14.18.0"
+ "node": ">= 20.19.0"
},
"funding": {
"type": "individual",
@@ -7650,12 +7593,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/restructure": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz",
- "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==",
- "license": "MIT"
- },
"node_modules/retext": {
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz",
@@ -7830,17 +7767,17 @@
}
},
"node_modules/shiki": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.20.0.tgz",
- "integrity": "sha512-kgCOlsnyWb+p0WU+01RjkCH+eBVsjL1jOwUYWv0YDWkM2/A46+LDKVs5yZCUXjJG6bj4ndFoAg5iLIIue6dulg==",
+ "version": "3.21.0",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.21.0.tgz",
+ "integrity": "sha512-N65B/3bqL/TI2crrXr+4UivctrAGEjmsib5rPMMPpFp1xAx/w03v8WZ9RDDFYteXoEgY7qZ4HGgl5KBIu1153w==",
"license": "MIT",
"dependencies": {
- "@shikijs/core": "3.20.0",
- "@shikijs/engine-javascript": "3.20.0",
- "@shikijs/engine-oniguruma": "3.20.0",
- "@shikijs/langs": "3.20.0",
- "@shikijs/themes": "3.20.0",
- "@shikijs/types": "3.20.0",
+ "@shikijs/core": "3.21.0",
+ "@shikijs/engine-javascript": "3.21.0",
+ "@shikijs/engine-oniguruma": "3.21.0",
+ "@shikijs/langs": "3.21.0",
+ "@shikijs/themes": "3.21.0",
+ "@shikijs/types": "3.21.0",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4"
}
@@ -7906,15 +7843,15 @@
"license": "MIT"
},
"node_modules/sitemap": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.0.tgz",
- "integrity": "sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==",
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.2.tgz",
+ "integrity": "sha512-LwktpJcyZDoa0IL6KT++lQ53pbSrx2c9ge41/SeLTyqy2XUNA6uR4+P9u5IVo5lPeL2arAcOKn1aZAxoYbCKlQ==",
"license": "MIT",
"dependencies": {
"@types/node": "^17.0.5",
"@types/sax": "^1.2.1",
"arg": "^5.0.0",
- "sax": "^1.2.4"
+ "sax": "^1.4.1"
},
"bin": {
"sitemap": "dist/cli.js"
@@ -7931,9 +7868,9 @@
"license": "MIT"
},
"node_modules/smol-toml": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.5.2.tgz",
- "integrity": "sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.0.tgz",
+ "integrity": "sha512-4zemZi0HvTnYwLfrpk/CF9LOd9Lt87kAt50GnqhMpyF9U3poDAP2+iukq2bZsO/ufegbYehBkqINbsWxj4l4cw==",
"license": "BSD-3-Clause",
"engines": {
"node": ">= 18"
@@ -8024,17 +7961,6 @@
"@astrojs/starlight": ">=0.32.0"
}
},
- "node_modules/starlight-toc-overview-customizer": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/starlight-toc-overview-customizer/-/starlight-toc-overview-customizer-0.1.0.tgz",
- "integrity": "sha512-WV+eGl4LrSSHgnnScQQndpji65IfSEDx5sGRiaOKSQC7kkPInjll9TDPACxVyyxh8fN096ip/fwYaM3OBUWHAQ==",
- "engines": {
- "node": "^18.17.1 || ^20.3.0 || >=21.0.0"
- },
- "peerDependencies": {
- "@astrojs/starlight": ">=0.32"
- }
- },
"node_modules/stream-replace-string": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/stream-replace-string/-/stream-replace-string-2.0.0.tgz",
@@ -8387,9 +8313,9 @@
}
},
"node_modules/ufo": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
- "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz",
+ "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==",
"license": "MIT"
},
"node_modules/ultrahtml": {
@@ -8410,26 +8336,6 @@
"integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
"license": "MIT"
},
- "node_modules/unicode-properties": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz",
- "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==",
- "license": "MIT",
- "dependencies": {
- "base64-js": "^1.3.0",
- "unicode-trie": "^2.0.0"
- }
- },
- "node_modules/unicode-trie": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz",
- "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==",
- "license": "MIT",
- "dependencies": {
- "pako": "^0.2.5",
- "tiny-inflate": "^1.0.0"
- }
- },
"node_modules/unified": {
"version": "11.0.5",
"resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz",
@@ -8450,14 +8356,14 @@
}
},
"node_modules/unifont": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.6.0.tgz",
- "integrity": "sha512-5Fx50fFQMQL5aeHyWnZX9122sSLckcDvcfFiBf3QYeHa7a1MKJooUy52b67moi2MJYkrfo/TWY+CoLdr/w0tTA==",
+ "version": "0.7.3",
+ "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.7.3.tgz",
+ "integrity": "sha512-b0GtQzKCyuSHGsfj5vyN8st7muZ6VCI4XD4vFlr7Uy1rlWVYxC3npnfk8MyreHxJYrz1ooLDqDzFe9XqQTlAhA==",
"license": "MIT",
"dependencies": {
- "css-tree": "^3.0.0",
- "ofetch": "^1.4.1",
- "ohash": "^2.0.0"
+ "css-tree": "^3.1.0",
+ "ofetch": "^1.5.1",
+ "ohash": "^2.0.11"
}
},
"node_modules/unist-util-find-after": {
@@ -8597,19 +8503,19 @@
}
},
"node_modules/unstorage": {
- "version": "1.17.3",
- "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.3.tgz",
- "integrity": "sha512-i+JYyy0DoKmQ3FximTHbGadmIYb8JEpq7lxUjnjeB702bCPum0vzo6oy5Mfu0lpqISw7hCyMW2yj4nWC8bqJ3Q==",
+ "version": "1.17.4",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.17.4.tgz",
+ "integrity": "sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==",
"license": "MIT",
"dependencies": {
"anymatch": "^3.1.3",
- "chokidar": "^4.0.3",
+ "chokidar": "^5.0.0",
"destr": "^2.0.5",
- "h3": "^1.15.4",
- "lru-cache": "^10.4.3",
+ "h3": "^1.15.5",
+ "lru-cache": "^11.2.0",
"node-fetch-native": "^1.6.7",
"ofetch": "^1.5.1",
- "ufo": "^1.6.1"
+ "ufo": "^1.6.3"
},
"peerDependencies": {
"@azure/app-configuration": "^1.8.0",
@@ -8618,14 +8524,14 @@
"@azure/identity": "^4.6.0",
"@azure/keyvault-secrets": "^4.9.0",
"@azure/storage-blob": "^12.26.0",
- "@capacitor/preferences": "^6.0.3 || ^7.0.0",
+ "@capacitor/preferences": "^6 || ^7 || ^8",
"@deno/kv": ">=0.9.0",
"@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0",
"@planetscale/database": "^1.19.0",
"@upstash/redis": "^1.34.3",
"@vercel/blob": ">=0.27.1",
"@vercel/functions": "^2.2.12 || ^3.0.0",
- "@vercel/kv": "^1.0.1",
+ "@vercel/kv": "^1 || ^2 || ^3",
"aws4fetch": "^1.0.20",
"db0": ">=0.2.1",
"idb-keyval": "^6.2.1",
@@ -8693,10 +8599,13 @@
}
},
"node_modules/unstorage/node_modules/lru-cache": {
- "version": "10.4.3",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
- "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
- "license": "ISC"
+ "version": "11.2.5",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz",
+ "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==",
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": "20 || >=22"
+ }
},
"node_modules/update-browserslist-db": {
"version": "1.2.3",
@@ -8996,9 +8905,9 @@
}
},
"node_modules/zod-to-json-schema": {
- "version": "3.25.0",
- "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.25.0.tgz",
- "integrity": "sha512-HvWtU2UG41LALjajJrML6uQejQhNJx+JBO9IflpSja4R03iNWfKXrj6W2h7ljuLyc1nKS+9yDyL/9tD1U/yBnQ==",
+ "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"
diff --git a/package.json b/package.json
index 4d3ee358..1536bc0b 100644
--- a/package.json
+++ b/package.json
@@ -12,8 +12,8 @@
"dependencies": {
"@astrojs/markdoc": "^0.15.10",
"@astrojs/react": "^4.4.2",
- "@astrojs/sitemap": "^3.6.0",
- "@astrojs/starlight": "^0.37.1",
+ "@astrojs/sitemap": "^3.7.0",
+ "@astrojs/starlight": "^0.37.4",
"@astrojs/starlight-docsearch": "^0.6.1",
"@astrojs/starlight-markdoc": "^0.5.1",
"@astrojs/starlight-tailwind": "^4.0.2",
@@ -23,7 +23,7 @@
"@tanstack/react-table": "^8.21.3",
"@types/react": "^19.1.3",
"@types/react-dom": "^19.1.3",
- "astro": "^5.16.6",
+ "astro": "^5.17.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.509.0",
@@ -33,7 +33,6 @@
"starlight-fullview-mode": "^0.2.3",
"starlight-image-zoom": "^0.12.0",
"starlight-links-validator": "^0.17.0",
- "starlight-toc-overview-customizer": "^0.1.0",
"tailwind-merge": "^3.2.0",
"tailwindcss": "^4.1.6"
},
diff --git a/src/components/BannerWithPersistentAnnouncement.astro b/src/components/BannerWithPersistentAnnouncement.astro
new file mode 100644
index 00000000..22e0e33a
--- /dev/null
+++ b/src/components/BannerWithPersistentAnnouncement.astro
@@ -0,0 +1,13 @@
+---
+import Default from '@astrojs/starlight/components/Banner.astro';
+
+const route = Astro.locals.starlightRoute;
+if (route.id.startsWith('aws')) {
+ route.entry.data.banner = {
+ content:
+ 'Starting on March 23, 2026, LocalStack for AWS will consolidate into a single image that requires authentication. Learn more about what’s changing and what this means for your setup in this blog post.',
+ };
+}
+---
+
+
diff --git a/src/routeData.ts b/src/routeData.ts
new file mode 100644
index 00000000..4db05922
--- /dev/null
+++ b/src/routeData.ts
@@ -0,0 +1,8 @@
+import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
+
+export const onRequest = defineRouteMiddleware((context) => {
+ const { starlightRoute } = context.locals;
+
+ const overviewItem = starlightRoute.toc?.items[0];
+ if (overviewItem) overviewItem.text = 'Back to top';
+});
diff --git a/src/styles/custom.css b/src/styles/custom.css
index e9c041dd..68ce4aaf 100644
--- a/src/styles/custom.css
+++ b/src/styles/custom.css
@@ -142,37 +142,37 @@
}
/* Second level navigation text styles - group headers and direct links */
-.sidebar-content .top-level li details ul > li > a > span,
+.sidebar-content .top-level li details ul>li>a>span,
.sidebar-content .top-level li details summary span {
- font-family: 'AeonikFono', sans-serif !important;
- font-size: 15px !important;
- font-weight:500;
- color: var(--sl-color-gray-3);
+ font-family: 'AeonikFono', sans-serif !important;
+ font-size: 15px !important;
+ font-weight: 500;
+ color: var(--sl-color-gray-3);
}
-.sidebar-content .top-level li details ul > li > a:hover,
-.sidebar-content .top-level li details ul > li > details > summary:hover,
-.sidebar-content .top-level > li .large:hover,
-.sidebar-content .top-level > li summary:hover {
+.sidebar-content .top-level li details ul>li>a:hover,
+.sidebar-content .top-level li details ul>li>details>summary:hover,
+.sidebar-content .top-level>li .large:hover,
+.sidebar-content .top-level>li summary:hover {
background-color: var(--sl-color-gray-5) !important;
border-radius: 4px;
}
/* Third level navigation text styles */
.sidebar-content .top-level li details ul li details ul li a span {
- font-size: 14px !important;
- color: var(--sl-color-gray-3) !important;
- font-weight: normal !important;
+ font-size: 14px !important;
+ color: var(--sl-color-gray-3) !important;
+ font-weight: normal !important;
}
-.sidebar-content .top-level > li {
+.sidebar-content .top-level>li {
min-height: 32.4px;
}
-.sidebar-content .top-level > li .large {
+.sidebar-content .top-level>li .large {
font-family: 'AeonikFono', sans-serif;
font-size: 16px !important;
- font-weight:500;
+ font-weight: 500;
line-height: 1.0;
color: var(--sl-color-gray-3);
letter-spacing: -0.15%;
@@ -187,7 +187,8 @@ select.astro-oojz3yon {
font-size: 18px;
}
-:where(.astro-3ii7xxms)[aria-current="page"], :where(.astro-3ii7xxms)[aria-current="page"] > span {
+:where(.astro-3ii7xxms)[aria-current="page"],
+:where(.astro-3ii7xxms)[aria-current="page"]>span {
background-color: transparent;
color: var(--sl-color-accent) !important;
}
@@ -196,16 +197,16 @@ select.astro-oojz3yon {
.sidebar-content .top-level li details ul li details ul li a[aria-current="page"] span {
background-color: transparent;
color: var(--sl-color-accent) !important;
- }
+}
/* Style the parent li element when it contains an active page link */
-li:has([aria-current="page"]) > details > summary > div > span {
+li:has([aria-current="page"])>details>summary>div>span {
color: var(--sl-color-accent) !important;
}
/* Style the SVG icons purple when parent contains active page link */
-li:has([aria-current="page"]) > details > summary > div > span::before,
-li:has([aria-current="page"]) > a > span::before {
+li:has([aria-current="page"])>details>summary>div>span::before,
+li:has([aria-current="page"])>a>span::before {
filter: brightness(0) saturate(100%) invert(29%) sepia(78%) saturate(2234%) hue-rotate(249deg) brightness(91%) contrast(95%);
}
@@ -230,7 +231,7 @@ li:has([aria-current="page"]) > a > span::before {
color: var(--localstack-purple);
}
-.sl-markdown-content .sl-link-button {
+.sl-markdown-content .sl-link-button {
border-radius: 6px;
border: 1px solid #848799;
padding: 12px 14px;
@@ -241,17 +242,20 @@ li:has([aria-current="page"]) > a > span::before {
border: 1px solid var(--sl-color-asides-border);
}
-a[rel="prev"], a[rel="next"] {
- border:none;
+a[rel="prev"],
+a[rel="next"] {
+ border: none;
box-shadow: none;
}
-a[rel="prev"] span, a[rel="next"] span {
+a[rel="prev"] span,
+a[rel="next"] span {
color: var(--sl-color-gray-4);
font-size: 12px;
}
-a[rel="prev"] span span, a[rel="next"] span span {
+a[rel="prev"] span span,
+a[rel="next"] span span {
color: var(--sl-color-gray-2);
font-family: "Aeonikpro";
font-size: 16px;
@@ -260,7 +264,8 @@ a[rel="prev"] span span, a[rel="next"] span span {
letter-spacing: -0.15px;
}
-a[rel="prev"] span::before, a[rel="next"] span::before {
+a[rel="prev"] span::before,
+a[rel="next"] span::before {
filter: brightness(0) saturate(100%) invert(29%) sepia(78%) saturate(2234%) hue-rotate(249deg) brightness(91%) contrast(95%);
}
@@ -298,3 +303,19 @@ h2#starlight__on-this-page::before {
.sidebar-pane {
scrollbar-gutter: stable;
}
+
+.sl-banner {
+ margin-top: 1rem;
+ background-color: var(--sl-color-gray-6);
+ color: var(--sl-color-accent-high);
+ padding: 1rem;
+ border-radius: 6px;
+ border: 1px solid var(--sl-color-accent);
+ font-size: 17px;
+ line-height: 1.4;
+}
+
+.sl-banner a {
+ color: var(--sl-color-accent);
+ text-decoration: underline;
+}
\ No newline at end of file