网站配置
导航菜单
配置 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 派生的入口:
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。
添加内部链接
- 先创建真实存在的 TanStack file route。
- 在严格消息目录补齐
en与zh文案。 - 使用
HeaderLink的内部链接形态添加入口。 - 更新 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 关闭后入口是否完全消失。