11import { observer } from 'mobx-react' ;
22import { GetStaticProps } from 'next' ;
33import React , { FC , useContext } from 'react' ;
4- import { Container } from 'react-bootstrap' ;
4+ import { Badge , Card , Container } from 'react-bootstrap' ;
55import { treeFrom } from 'web-utility' ;
66
77import { PageHead } from '../../components/Layout/PageHead' ;
@@ -17,8 +17,8 @@ export const getStaticProps: GetStaticProps = async () => {
1717 } ;
1818} ;
1919
20- const renderTree = ( nodes : WikiNode [ ] , level = 0 ) : React . ReactElement => (
21- < ul className = { level === 0 ? 'list-unstyled' : '' } >
20+ const renderTree = ( nodes : WikiNode [ ] , level = 0 ) => (
21+ < ol className = { level === 0 ? 'list-unstyled' : '' } >
2222 { nodes . map ( ( node ) => (
2323 < li key = { node . path } className = { level > 0 ? 'ms-3' : '' } >
2424 < div className = "d-flex align-items-center py-1" >
@@ -29,41 +29,43 @@ const renderTree = (nodes: WikiNode[], level = 0): React.ReactElement => (
2929 { node . title }
3030 </ a >
3131 { node . metadata ?. [ '主题分类' ] && (
32- < span className = "badge bg- secondary ms-2 small">
32+ < Badge bg = " secondary" className = " ms-2 small">
3333 { node . metadata [ '主题分类' ] }
34- </ span >
34+ </ Badge >
3535 ) }
3636 </ div >
37- { node . children && node . children . length > 0 && renderTree ( node . children , level + 1 ) }
37+ { node . children ?. length && node . children . length > 0 && renderTree ( node . children , level + 1 ) }
3838 </ li >
3939 ) ) }
40- </ ul >
40+ </ ol >
4141) ;
4242
4343const WikiIndexPage : FC < { nodes : WikiNode [ ] } > = observer ( ( { nodes } ) => {
4444 const { t } = useContext ( I18nContext ) ;
4545
4646 return (
4747 < Container className = "py-4" >
48- < PageHead title = { `${ t ( 'wiki' ) } - 政策文档 ` } />
48+ < PageHead title = { `${ t ( 'wiki' ) } - ${ t ( 'knowledge_base' ) } ` } />
4949
5050 < div className = "d-flex justify-content-between align-items-center mb-4" >
51- < h1 > 政策 Wiki ({ nodes . length } )</ h1 >
51+ < h1 > { t ( 'wiki' ) } ({ nodes . length } )</ h1 >
5252 < a
5353 href = "https://github.com/fpsig/open-source-policy"
5454 target = "_blank"
5555 rel = "noopener noreferrer"
5656 className = "btn btn-outline-primary"
5757 >
58- 贡献内容
58+ { t ( 'contribute_content' ) }
5959 </ a >
6060 </ div >
6161
6262 { nodes . length === 0 ? (
63- < div className = "text-muted" >
64- < p > 暂无政策文档。</ p >
65- < p > 政策文档将从 GitHub 仓库中自动加载。</ p >
66- </ div >
63+ < Card >
64+ < Card . Body className = "text-muted text-center" >
65+ < p > { t ( 'no_docs_available' ) } </ p >
66+ < p > { t ( 'docs_auto_load_from_github' ) } </ p >
67+ </ Card . Body >
68+ </ Card >
6769 ) : (
6870 renderTree (
6971 treeFrom ( nodes , 'path' , 'parent_path' , 'children' ) ,
0 commit comments