- 手风琴 (Accordion)
- 警告 (Alert)
- 警告对话框 (Alert Dialog)
- 宽高比 (Aspect Ratio)
- 头像 (Avatar)
- 徽章 (Badge)
- 面包屑 (Breadcrumb)
- 按钮 (Button)
- 按钮组 (Button Group)
- 日历 (Calendar)
- 卡片 (Card)
- 轮播图 (Carousel)
- 图表 (Chart)
- 复选框 (Checkbox)
- 折叠面板 (Collapsible)
- 组合框 (Combobox)
- 命令面板 (Command)
- 上下文菜单 (Context Menu)
- 数据表格 (Data Table)
- 日期选择器 (Date Picker)
- 对话框 (Dialog)
- 抽屉 (Drawer)
- 下拉菜单 (Dropdown Menu)
- 空状态 (Empty)
- 字段 (Field)
- 表单 (Form)
- 悬停卡片 (Hover Card)
- 输入框 (Input)
- 输入组 (Input Group)
- 验证码输入 (Input OTP)
- 项 (Item)
- 键盘按键 (Kbd)
- 标签 (Label)
- 菜单栏 (Menubar)
- 原生选择器 (Native Select)
- 导航菜单 (Navigation Menu)
- 数字输入框 (Number Field)
- 分页 (Pagination)
- 引脚输入 (Pin Input)
- 气泡卡片 (Popover)
- 进度条 (Progress)
- 单选框组 (Radio Group)
- 范围日历 (Range Calendar)
- 可调整大小 (Resizable)
- 滚动区域 (Scroll Area)
- 选择器 (Select)
- 分隔线 (Separator)
- 侧边栏抽屉 (Sheet)
- 侧边栏 (Sidebar)
- 骨架屏 (Skeleton)
- 滑块 (Slider)
- 轻量提示 (Sonner)
- 加载动画 (Spinner)
- 步骤条 (Stepper)
- 开关 (Switch)
- 表格 (Table)
- 标签页 (Tabs)
- 标签输入 (Tags Input)
- 文本域 (Textarea)
- 吐司提示 (Toast)
- 切换按钮 (Toggle)
- 切换按钮组 (Toggle Group)
- 工具提示 (Tooltip)
- 排版 (Typography)
registry-item.json 架构用于定义您的自定义注册表项。
{
"$schema": "https://vue.shadcn.org.cn/schema/registry-item.json",
"name": "hello-world",
"type": "registry:block",
"title": "Hello World",
"description": "A simple hello world component.",
"files": [
{
"path": "registry/new-york/HelloWorld/HelloWorld.vue",
"type": "registry:component"
},
{
"path": "registry/new-york/HelloWorld/useHelloWorld.ts",
"type": "registry:hook"
}
]
}定义
您可以在此处查看 registry-item.json 的 JSON 架构。
$schema
$schema 属性用于指定 registry-item.json 文件的架构。
{
"$schema": "https://vue.shadcn.org.cn/schema/registry-item.json"
}name
name 属性用于指定您的注册表项名称。
{
"name": "hello-world"
}title
注册表项的人类可读标题。请保持简短且具有描述性。
{
"title": "Hello World"
}description
注册表项的描述。相比 title,它可以更长、更详细。
{
"description": "A simple hello world component."
}type
type 属性用于指定注册表项的类型。
{
"type": "registry:block"
}支持以下类型
| 类型 | 描述 |
|---|---|
registry:block | 用于包含多个文件的复杂组件。 |
registry:component | 用于简单组件。 |
registry:lib | 用于库和工具函数。 |
registry:hook | 用于组合式函数 (hooks)。 |
registry:ui | 用于 UI 组件和单文件原语。 |
registry:page | 用于页面或基于文件的路由。 |
registry:file | 用于杂项文件。 |
author
author 属性用于指定注册表项的作者。
它可以是该注册表项特有的,也可以与注册表作者相同。
{
"author": "John Doe <john@doe.com>"
}dependencies
dependencies 属性用于指定注册表项的依赖项。这针对的是 npm 包。
使用 @version 来指定注册表项的版本。
{
"dependencies": [
"reka-ui",
"zod",
"lucide-vue-next",
"name@1.0.2"
]
}registryDependencies
用于注册表依赖项。可以是名称或 URL。
- 对于
shadcn/ui注册表项(如button、input、select等),请使用其名称,例如['button', 'input', 'select']。 - 对于自定义注册表项,请使用其 URL,例如
['https://example.com/r/hello-world.json']。
{
"registryDependencies": [
"button",
"input",
"select",
"https://example.com/r/editor.json"
]
}注意:CLI 将自动解析远程注册表依赖项。
files
files 属性用于指定注册表项包含的文件。每个文件都有 path、type 和 target(可选)属性。
target 属性对于 registry:page 和 registry:file 类型是必需的。
{
"files": [
{
"path": "registry/new-york/HelloWorld/page.vue",
"type": "registry:page",
"target": "pages/hello/index.vue"
},
{
"path": "registry/new-york/HelloWorld/HelloWorld.vue",
"type": "registry:component"
},
{
"path": "registry/new-york/HelloWorld/useHelloWorld.ts",
"type": "registry:hook"
},
{
"path": "registry/new-york/HelloWorld/.env",
"type": "registry:file",
"target": "~/.env"
}
]
}path
path 属性用于指定注册表中文件的路径。构建脚本使用此路径来解析、转换和构建注册表 JSON 载荷。
type
type 属性用于指定文件类型。更多信息请参阅 type 部分。
target
target 属性用于指示文件应放置在项目中的位置。它是可选的,仅在 registry:page 和 registry:file 类型中是必需的。
默认情况下,shadcn-vue CLI 会读取项目的 components.json 文件来确定目标路径。对于某些文件(如路由或配置),您可以手动指定目标路径。
使用 ~ 指代项目根目录,例如 ~/foo.config.js。
tailwind
已弃用: 对于 Tailwind v4 项目,请改用 cssVars.theme。
tailwind 属性用于 Tailwind 配置,如 theme、plugins 和 content。
您可以使用 tailwind.config 属性将颜色、动画和插件添加到您的注册表项中。
{
"tailwind": {
"config": {
"theme": {
"extend": {
"colors": {
"brand": "hsl(var(--brand))"
},
"keyframes": {
"wiggle": {
"0%, 100%": { "transform": "rotate(-3deg)" },
"50%": { "transform": "rotate(3deg)" }
}
},
"animation": {
"wiggle": "wiggle 1s ease-in-out infinite"
}
}
}
}
}
}cssVars
用于定义注册表项的 CSS 变量。
{
"cssVars": {
"light": {
"brand": "20 14.3% 4.1%",
"radius": "0.5rem"
},
"dark": {
"brand": "20 14.3% 4.1%"
}
}
}css
使用 css 向项目的 CSS 文件添加新规则,例如 @layer base、@layer components、@utility、@keyframes 等。
{
"css": {
"@layer base": {
"body": {
"font-size": "var(--text-base)",
"line-height": "1.5"
}
},
"@layer components": {
"button": {
"background-color": "var(--color-primary)",
"color": "var(--color-white)"
}
},
"@utility text-magic": {
"font-size": "var(--text-base)",
"line-height": "1.5"
},
"@keyframes wiggle": {
"0%, 100%": {
"transform": "rotate(-3deg)"
},
"50%": {
"transform": "rotate(3deg)"
}
}
}
}docs
使用 docs 在通过 CLI 安装注册表项时显示自定义文档或消息。
{
"docs": "Remember to add the FOO_BAR environment variable to your .env file."
}categories
使用 categories 来组织您的注册表项。
{
"categories": ["sidebar", "dashboard"]
}meta
使用 meta 向您的注册表项添加额外元数据。您可以添加任何想要提供给注册表项使用的键值对。
{
"meta": { "foo": "bar" }
}