本文件详细介绍了 apps/www 文档网站的结构和功能。该网站是 shadcn/ui 组件库面向用户的主要网站,提供组件文档、安装指南、示例和交互式组件预览。
有关 MDX 处理和组件预览生成的信息,请参阅 MDX 处理。有关导航配置和文档组织结构的详细信息,请参阅 导航结构。
该文档网站使用 Next.js 14 和 App Router 构建,并遵循结构化的布局模式,以确保所有页面具有一致的用户体验。
来源:apps/www/app/(app)/page.tsx44-99 apps/www/app/(app)/docs/[[...slug]]/page.tsx:84-154, apps/www/components/site-header.tsx11-45 apps/www/app/(app)/examples/layout.tsx41-81
该网站使用 Next.js App Router,为文档页面提供动态路由,并采用结构化的布局层级。
| 路由模式 | 文件位置 | 目的 |
|---|---|---|
/ | app/(app)/page.tsx | 落地页,包含主视觉区和组件预览 |
/docs/[...slug] | app/(app)/docs/[[...slug]]/page.tsx | 动态文档页面 |
/examples | app/(app)/examples/layout.tsx | 示例展示,带导航 |
/blocks | - | 组件块画廊 |
动态文档路由系统使用 generateStaticParams 函数在构建时预生成所有文档页面。
来源:apps/www/app/(app)/docs/[[...slug]]/page.tsx:24-33, apps/www/app/(app)/docs/[[...slug]]/page.tsx:76-82
该网站实施了多层导航系统,该系统可适应不同的屏幕尺寸并提供全面的网站导航。
SiteHeader 组件提供了主导航栏,具有响应式行为。
MainNav 组件,提供完整的导航菜单。MobileNav 组件,采用抽屉式导航。来源:apps/www/components/site-header.tsx11-45 apps/www/components/mobile-nav.tsx17-104
文档页面使用 DocsNav 组件进行侧边栏导航,该组件根据 docsConfig.sidebarNav 配置渲染导航项。
pathname 匹配来高亮当前页面。来源:apps/www/components/docs-nav.tsx10-86 apps/www/components/mobile-nav.tsx59-100
文档内容通过一个复杂的渲染管道进行处理,该管道将 MDX 处理与组件预览和目录生成相结合。
来源:apps/www/app/(app)/docs/[[...slug]]/page.tsx:84-154, apps/www/app/(app)/docs/[[...slug]]/page.tsx:35-74, apps/www/lib/toc.ts
该网站使用基于 CSS 自定义属性和 Tailwind CSS 工具的综合性 CSS-in-JS 主题系统。
全局样式表定义了 CSS 自定义属性,以实现浅色和深色模式之间的一致主题。
| 变量类别 | 属性 | 目的 |
|---|---|---|
| 核心颜色 | --background、--foreground、--primary | 基础配色方案 |
| 组件颜色 | --card、--popover、--secondary、--accent | UI 组件样式 |
| 状态颜色 | --destructive、--muted、--border | 交互状态 |
| 图表颜色 | --chart-1 至 --chart-5 | 数据可视化 |
| 侧边栏颜色 | --sidebar-background、--sidebar-foreground | 导航样式 |
深色模式的实现使用 .dark 类选择器,用相应的深色主题值覆盖这些变量。
来源:apps/www/styles/globals.css5-76
该网站定义了自定义的工具类,以实现一致的布局和间距。
container-wrapper 和 container 类,用于响应式宽度约束。border-grid 类,用于虚线边框样式。.step 工具类,用于编号的文档步骤。来源:apps/www/styles/globals.css115-156
主页使用 CardsDemo 组件展示了交互式组件预览,该组件展示了具有响应式行为和主题支持的实时组件示例。
该网站集成了命令菜单系统(CommandMenu 组件),可提供跨文档的快速导航和搜索功能。
该网站实现了全面的响应式设计模式。
MobileNav 的抽屉式导航。文档页面生成动态元数据,包括:
来源:apps/www/app/(app)/page.tsx20-42 apps/www/components/command-menu.tsx apps/www/app/(app)/docs/[[...slug]]/page.tsx:35-74