菜单

组件系统

相关源文件

本文档概述了 shadcn/ui 组件库、其组织结构以及可用的不同类型的 UI 组件。它涵盖了组件架构、注册表系统以及组件的分类和分发方式。

有关基于 CLI 的组件安装信息,请参阅 CLI 工具。有关主题和样式细节,请参阅 主题和样式

组件架构

shadcn/ui 组件系统采用分层架构,从基础图元到复杂组合。

来源: apps/www/registry/default/ui/sidebar.tsx1-774 apps/www/registry/new-york/ui/sidebar.tsx1-774 apps/www/public/r/styles/default/sidebar.json1-17

组件类别

组件系统根据功能和复杂性分为不同的类别。

类别目的示例文件模式
核心组件基本交互元素ButtonInputLabelui/button.tsxui/input.tsx
布局组件结构和导航SidebarMenubarui/sidebar.tsxui/menubar.tsx
复杂组件高级 UI 模式DialogSelectTooltipui/dialog.tsxui/select.tsx
表单组件表单控件和输入Toggle GroupSwitchui/toggle-group.tsx
实用组件辅助和增强SeparatorSkeletonui/separator.tsx

核心组件结构

来源: apps/v4/registry/new-york-v4/ui/button.tsx7-36 apps/www/public/r/styles/new-york-v4/button.json1-15

注册系统

注册表系统通过 JSON 配置文件和 TypeScript 实现来管理组件分发和元数据。

注册表结构

注册表模式

每个组件的注册表条目都遵循标准化的模式,定义了依赖项和元数据。

来源: apps/www/public/r/styles/new-york/sidebar.json1-19 apps/www/public/r/styles/default/select.json1-17

组件依赖

组件具有两种由注册表系统管理的依赖项类型:

外部依赖

组件需要的第三方包

  • @radix-ui/react-* - 关注可访问性的图元
  • class-variance-authority - 变体管理
  • lucide-react - 图标库

注册表依赖项

其他组件依赖的内部 shadcn/ui 组件

来源: apps/www/public/r/styles/new-york/sidebar.json10-18 apps/www/public/r/styles/new-york/select.json6-8

组件变体

组件通过 class-variance-authority 模式支持多种视觉变体。

变体实现模式

组件通常使用 cva() 函数实现变体。

样式系统集成

每种样式变体(default、new-york、new-york-v4)都提供了不同的视觉效果,同时保持相同的组件 API。

来源: apps/v4/registry/new-york-v4/ui/button.tsx7-36 apps/www/registry/new-york/ui/select.tsx15-33

组件块

组件块是预构建的组合,将多个组件结合成更大的 UI 模式。

块类型示例注册表模式
侧边栏变体sidebar-09sidebar-16类型为 registry:block
导航模式头部组合复杂组合
布局模板仪表盘布局多组件设置

块结构

块包含完整的页面实现和组件组合。

来源: apps/www/public/r/styles/new-york/sidebar-09.json1-26 apps/www/public/r/styles/new-york-v4/sidebar-09.json1-20