Tanplate Docs
网站配置

导航菜单

配置 Web Header 的桌面导航、移动菜单与功能入口。

Web 主导航由公共 Header 统一组合:

apps/web/src/pages/_app/-components/layout/
  header.tsx
  header-link.ts
  -components/header-actions-menu.tsx

导航来源

header.tsx 中的 links 数组包含固定入口和按 Capability Profile 派生的入口:

apps/web/src/pages/_app/-components/layout/header.tsx
const links: HeaderLink[] = [
  { href: '/', label: t('nav.home') },
  ...projectLinks,
  ...(CONTENT_FEATURES.blog
    ? [{ href: '/blog', label: t('content.blog.title') }]
    : []),
  { external: true, href: DOCS_URL, label: t('nav.docs') },
]

Projects 链接来自 projects-ui-profile,因此 Projects 关闭时不会进入导航;Blog、Changelog、Newsletter、Search、Developer API 和 Product AI 也各自遵循构建期 gate。

添加内部链接

  1. 先创建真实存在的 TanStack file route。
  2. 在严格消息目录补齐 enzh 文案。
  3. 使用 HeaderLink 的内部链接形态添加入口。
  4. 更新 Header Header、layout .folder.md 与相关 Capability Profile 测试。

内部链接用 TanStack Router Link,以获得 active 状态和类型检查。不要用裸 <a> 访问站内 route。

添加外部链接

外部链接显式设置 external: true。Docs URL 当前集中在 apps/web/src/config/app.ts,需要替换文档域名时只修改这个常量,并检查首页 CTA 等其他消费者。

移动端菜单

桌面 Header 与 HeaderActionsMenu 共用同一个 links 数组,移动端不会维护第二份导航。语言和主题控制只在移动菜单内部追加,不应混入业务链接数组。

图标与可访问性

导航里的工具入口使用本地 Iconify Solar/Carbon class,并通过 aria-label / title 提供名称。通用动作禁止使用 Simple Icons;只有 GitHub 等真实品牌标志允许 i-simple-icons-*

验证

pnpm --filter web typecheck
pnpm --filter web test
pnpm --filter web build

新增或移除入口时还应检查窄屏菜单、当前路由高亮,以及对应 Capability 关闭后入口是否完全消失。

On this page