123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import { ensureLang } from '../utils/lang'
- import guideLocale from '../i18n/pages/guide.json'
- import componentLocale from '../i18n/pages/component.json'
- function getGuideSidebar() {
- return Object.fromEntries(
- Object.entries(guideLocale).map(([lang, val]) => [
- lang,
- Object.values(val).map((item) => mapPrefix(item, lang)),
- ])
- )
- }
- function getComponentsSideBar() {
- return Object.fromEntries(
- Object.entries(componentLocale).map(([lang, val]) => [
- lang,
- Object.values(val).map((item) => mapPrefix(item, lang, '/component')),
- ])
- )
- }
- // return sidebar with language configs.
- // this might create duplicated data but the overhead is ignorable
- const getSidebars = () => {
- return {
- '/guide/': getGuideSidebar(),
- '/component/': getComponentsSideBar(),
- }
- }
- type Item = {
- text: string
- children?: Item[]
- link?: string
- }
- function mapPrefix(item: Item, lang: string, prefix = '') {
- if (item.children && item.children.length > 0) {
- return {
- ...item,
- children: item.children.map((child) => mapPrefix(child, lang, prefix)),
- }
- }
- return {
- ...item,
- link: `${ensureLang(lang)}${prefix}${item.link}`,
- }
- }
- export const sidebars = getSidebars()
|