aboutsummaryrefslogtreecommitdiff
path: root/website/src/components/Banner.astro
diff options
context:
space:
mode:
Diffstat (limited to 'website/src/components/Banner.astro')
-rw-r--r--website/src/components/Banner.astro29
1 files changed, 28 insertions, 1 deletions
diff --git a/website/src/components/Banner.astro b/website/src/components/Banner.astro
index 8a4bad22..01098659 100644
--- a/website/src/components/Banner.astro
+++ b/website/src/components/Banner.astro
@@ -1,4 +1,7 @@
---
+import versions from '../data/docs-versions.json';
+import { docsRoute, docsTargetHref } from '../docs-path';
+
const { entry, locale, isFallback } = Astro.locals.starlightRoute;
const { banner } = entry.data;
@@ -8,9 +11,24 @@ const translationNotices = {
'zh-cn': `本页面的翻译由 LLM 生成。如果你发现翻译有误,请<a href="${issuesUrl}">在 GitHub 上提交 issue</a> 告诉我们。`,
};
const translationNotice = locale && !isFallback ? translationNotices[locale] : undefined;
+const docs = docsRoute(Astro.url.pathname);
+const archivedVersion =
+ docs.target !== 'stable' && docs.target !== 'preview' && docs.target !== versions.current
+ ? docs.target
+ : undefined;
+const latestHref = docsTargetHref(docs, 'stable', versions.scopes);
+const archivedNotices = {
+ root: `This page documents Herdr ${archivedVersion}. <a href="${latestHref}">Switch to the latest release.</a>`,
+ ja: `このページは Herdr ${archivedVersion} のドキュメントです。<a href="${latestHref}">最新版に切り替えてください。</a>`,
+ 'zh-cn': `本页面是 Herdr ${archivedVersion} 的文档。<a href="${latestHref}">切换到最新版本。</a>`,
+};
+const archivedNotice = archivedVersion ? archivedNotices[locale ?? 'root'] : undefined;
---
{banner && <div class="sl-banner" data-pagefind-ignore set:html={banner.content} />}
+{archivedNotice && (
+ <div class="version-notice" data-pagefind-ignore set:html={archivedNotice} />
+)}
{translationNotice && (
<div class="translation-notice" data-pagefind-ignore set:html={translationNotice} />
)}
@@ -31,7 +49,8 @@ const translationNotice = locale && !isFallback ? translationNotices[locale] : u
color: var(--__sl-banner-text);
}
- .translation-notice {
+ .translation-notice,
+ .version-notice {
padding: 0.5rem var(--sl-nav-pad-x);
background-color: var(--sl-color-bg-nav);
border-bottom: 1px solid var(--sl-color-hairline);
@@ -41,8 +60,16 @@ const translationNotice = locale && !isFallback ? translationNotices[locale] : u
text-align: center;
text-wrap: balance;
}
+ .version-notice {
+ background-color: var(--sl-color-orange-low);
+ border-bottom-color: var(--sl-color-orange);
+ color: var(--sl-color-orange-high);
+ }
.translation-notice :global(a) {
color: var(--sl-color-text-accent);
}
+ .version-notice :global(a) {
+ color: var(--sl-color-orange-high);
+ }
}
</style>