SplitButton 分裂按钮
通用基础组件
分裂按钮 — Chaos UI 的通用基础组件。
何时使用
需要分裂按钮功能时使用本组件。
代码示例
基础用法
tsx
import { SplitButton } from "@/components/ui/split-button"
export function Basic() {
return <SplitButton />
}变体
tsx
{/* 展示 variant 变体 */}
<div className="flex flex-wrap items-center gap-3">
<SplitButton variant="default">Default</SplitButton>
<SplitButton variant="destructive">Destructive</SplitButton>
<SplitButton variant="outline">Outline</SplitButton>
<SplitButton variant="secondary">Secondary</SplitButton>
<SplitButton variant="ghost">Ghost</SplitButton>
</div>尺寸
tsx
{/* 尺寸对照 */}
<div className="flex flex-wrap items-center gap-3">
<SplitButton size="sm">Sm</SplitButton>
<SplitButton size="default">Default</SplitButton>
<SplitButton size="lg">Lg</SplitButton>
</div>样式变体
尺寸
| Size | 说明 | 默认 |
|---|---|---|
default | 默认尺寸 | ✓ |
sm | 小号 | |
lg | 大号 |
变体
| Variant | 说明 | 默认 |
|---|---|---|
default | 默认样式 | ✓ |
outline | 描边样式 | |
ghost | 幽灵(无背景)样式 |
变体
| Variant | 说明 | 默认 |
|---|---|---|
default | 默认样式 | ✓ |
destructive | 危险/删除样式 | |
outline | 描边样式 | |
secondary | 次要样式 | |
ghost | 幽灵(无背景)样式 |
尺寸
| Size | 说明 | 默认 |
|---|---|---|
default | 默认尺寸 | ✓ |
sm | 小号 | |
lg | 大号 |
API / Props
SplitButton
| Prop | Type | Default | 说明 |
|---|---|---|---|
className | string | — | 自定义样式类名 |
label | React.ReactNode | — | Main button label |
onClick | () => void | — | Main button click handler |
items | SplitButtonItem[] | — | Dropdown menu items |
onSelect | () => void | — | Called when a dropdown item is selected |
disabled | boolean | — | 是否禁用 |
| ...rest | React.HTMLAttributes | — | 透传原生 DOM 属性 |
注意事项
- Client Component: 使用
"use client",依赖 React hooks/状态,需在客户端渲染。 - CVA 变体: 通过
class-variance-authority管理样式变体,类型安全。变体对象可导出复用。
📘 完整交互式示例与控件属性请查看 Storybook 文档。