@@ -4,17 +4,20 @@ import {
44 Link ,
55 type DocLayoutProps ,
66} from '@rspress/core/theme-original' ;
7+ import { Announcement } from '@rstackjs/doc-ui/announcement' ;
78import { BlogBackButton } from '@rstackjs/doc-ui/blog-back-button' ;
89import { NavIcon } from '@rstackjs/doc-ui/nav-icon' ;
910import { HomeLayout } from './pages' ;
1011import '@rstackjs/doc-ui/theme.css' ;
1112import './index.scss' ;
12- import { useLang , usePage } from '@rspress/core/runtime' ;
13+ import { NoSSR , useLang , usePage } from '@rspress/core/runtime' ;
1314import {
1415 Search as PluginAlgoliaSearch ,
1516 ZH_LOCALES ,
1617} from '@rspress/plugin-algolia/runtime' ;
1718
19+ const ANNOUNCEMENT_URL = '/blog/v1-0' ;
20+
1821const DocLayout = ( props : DocLayoutProps ) => {
1922 const { page } = usePage ( ) ;
2023 const lang = useLang ( ) ;
@@ -36,7 +39,32 @@ const DocLayout = (props: DocLayoutProps) => {
3639 ) ;
3740} ;
3841
39- const Layout = ( ) => < BaseLayout beforeNavTitle = { < NavIcon /> } /> ;
42+ const Layout = ( ) => {
43+ const { page } = usePage ( ) ;
44+ const lang = useLang ( ) ;
45+
46+ return (
47+ < BaseLayout
48+ beforeNavTitle = { < NavIcon /> }
49+ beforeNav = {
50+ < NoSSR >
51+ < Announcement
52+ href = {
53+ lang === 'en' ? ANNOUNCEMENT_URL : `/${ lang } ${ ANNOUNCEMENT_URL } `
54+ }
55+ message = {
56+ lang === 'en'
57+ ? 'Rslib 1.0 has been released!'
58+ : 'Rslib 1.0 正式发布!'
59+ }
60+ localStorageKey = "rslib-v1-announcement-closed"
61+ display = { page . pageType === 'home' }
62+ />
63+ </ NoSSR >
64+ }
65+ />
66+ ) ;
67+ } ;
4068
4169const Search = ( ) => {
4270 const lang = useLang ( ) ;
0 commit comments