Files
3x-ui/docs/lib/layout.shared.tsx
T
MHSanaei df3ba568d1 feat(docs): publish the component Storybook on the docs site
The docs site and the component workbench were entirely disconnected. The Pages deploy now builds the frontend Storybook and bundles it into the artifact under /storybook, so the live component reference ships with the documentation, and the navbar links to it. Story changes trigger a redeploy so the published workbench cannot go stale.
2026-07-14 03:37:55 +02:00

67 lines
1.9 KiB
TypeScript

import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
import { Heart } from 'lucide-react';
import { Logo } from '@/components/logo';
import { TelegramIcon } from '@/components/icons';
import { appName, productRepoUrl, telegramChannel, telegramChannelUrl, donateUrl, siteUrl } from './shared';
import { getSiteMessages } from './site-i18n';
// Build locale-aware shared layout options. With `hideLocale: 'default-locale'`,
// English URLs have no prefix while other locales are prefixed (`/fa`, `/ru`, `/zh`).
export function baseOptions(lang: string): BaseLayoutProps {
const prefix = lang === 'en' ? '' : `/${lang}`;
const m = getSiteMessages(lang);
return {
nav: {
title: (
<span className="inline-flex items-center gap-2 font-semibold">
<Logo className="h-6" />
{appName}
</span>
),
url: `${prefix}/`,
},
githubUrl: productRepoUrl,
links: [
{
text: m.documentation,
url: `${prefix}/docs`,
active: 'nested-url',
},
// Live component workbench built from frontend/ and published alongside the docs.
{
text: 'Storybook',
url: `${siteUrl}/storybook/`,
external: true,
},
{
type: 'icon',
label: `Telegram channel (@${telegramChannel})`,
icon: <TelegramIcon />,
text: 'Telegram',
url: telegramChannelUrl,
external: true,
},
// Compact heart icon in the top nav bars (home + docs).
{
type: 'icon',
on: 'nav',
label: m.donate,
icon: <Heart />,
text: m.donate,
url: donateUrl,
external: true,
},
// Prominent labelled entry in the docs sidebar / mobile menu.
{
type: 'main',
on: 'menu',
icon: <Heart />,
text: m.donate,
url: donateUrl,
external: true,
},
],
};
}