Skyroc UI
输入

Checkbox

用于多选、批量选择和卡片式选项的复选框组件

复选框(Checkbox)用于在一组选项中选择一个或多个值。组件同时提供基础复选框、数据驱动的复选框组、卡片式复选框和卡片式复选框组。

import {
  Checkbox,
  CheckboxCard,
  CheckboxControl,
  CheckboxGroup,
  CheckboxGroupCard,
  CheckboxIndicator,
  CheckboxRoot
} from '@skyroc/web-ui';

架构说明

Checkbox 由 Radix Checkbox 封装而来,基础组件负责单个选中状态,Group 组件负责多值集合状态。

  • Checkbox:单个复选框,支持 checkeddefaultCheckedindeterminate
  • CheckboxGroup:数据驱动的复选框组,通过 items 渲染多个 Checkbox
  • CheckboxCard:卡片样式的单个复选框,支持图标、标题、描述和左右控制器位置。
  • CheckboxGroupCard:数据驱动的卡片式复选框组,状态模型与 CheckboxGroup 一致。
  • CheckboxRootCheckboxControlCheckboxIndicator:基础结构子组件,适合需要完全自定义组合时使用。

何时使用

  • 用户可以选择多个选项,且每个选项可以独立开关时。
  • 需要通过“全选”展示部分选中状态时。
  • 需要从一组配置项、权限项、偏好项中选择多个值时。
  • 选项需要图标、描述或更大点击区域时,使用 CheckboxCardCheckboxGroupCard
  • 如果用户只能选择一个选项,应使用 Radio;如果只是开关单一功能状态,应使用 Switch。

基础用法

Checkbox 支持受控与非受控模式。受控模式通过 checkedonCheckedChange 管理状态。

Preview
Code
Loading...

颜色

通过 color 控制选中和半选状态的颜色。基础 Checkbox 和卡片 Checkbox 都使用同一套主题颜色。

Preview
Code
Loading...

尺寸

通过 size 控制控制器尺寸、文字间距以及 Group 间距,从 xs2xl 共 6 个尺寸。

Preview
Code
Loading...

状态

checked 可以是 truefalse'indeterminate'。半选状态常用于全选控件,表示子项只选中了其中一部分。

Preview
Code
Loading...

禁用

设置 disabled 后,复选框不可交互。Group 上的 disabled 会传递给所有子项,子项也可以单独设置 disabled

Preview
Code
Loading...

复选框组

CheckboxGroup 使用 items 渲染选项列表,value / defaultValue 是当前选中的 value 数组。onValueChange 返回完整的新数组。

Preview
Code
Loading...

卡片复选框

CheckboxCard 适合展示更丰富的可选项。iconlabeldescription 组成内容区,checkboxPosition 控制复选框在左侧还是右侧。

Preview
Code
Loading...

卡片复选框组

CheckboxGroupCardCheckboxGroup 使用相同的多值状态模型,但每个选项会渲染为 CheckboxCard。适合权限、能力、套餐、偏好等更强调内容说明的选择场景。

Preview
Code
Loading...

API

Checkbox

通用属性参考:支持 Radix Checkbox Root 的属性,如 checkeddefaultCheckeddisabledrequirednamevalueonCheckedChange

属性说明类型默认值
checked受控选中状态,支持半选状态boolean | 'indeterminate'-
defaultChecked非受控默认选中状态boolean | 'indeterminate'-
onCheckedChange选中状态变化时触发(checked: boolean | 'indeterminate') => void-
color主题颜色,影响选中和半选状态'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent''primary'
shape控制器形状'square' | 'rounded''square'
size尺寸,影响控制器大小和文字间距'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
children标签内容,存在时会渲染为可点击 LabelReactNode-
checkedIcon选中状态图标ReactNode-
indeterminateIcon半选状态图标ReactNode-
forceMountIndicator强制挂载 Indicator,常用于动画控制true-
className根容器 class;存在时优先于 classNames.rootClassValue-
classNames各 slot 的自定义 classCheckboxUi-
indicatorProps传递给 CheckboxIndicator 的额外 propsCheckboxIndicatorProps-
rootProps传递给 CheckboxRoot 的额外 propsCheckboxRootProps-

CheckboxGroup

CheckboxGroup 是数据驱动组件。items 中每一项都会渲染为一个 Checkbox,Group 负责维护 value 数组。

属性说明类型默认值
items*复选框组选项列表CheckboxItemProps[]-
value受控选中值数组string[]-
defaultValue非受控默认选中值数组string[]-
onValueChange选中值数组变化时触发(value: string[]) => void-
orientation排列方向'horizontal' | 'vertical''horizontal'
color统一设置子项主题颜色'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent''primary'
size统一设置子项尺寸和组间距'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
disabled禁用整组复选框booleanfalse
checkedIcon统一设置子项选中图标ReactNode-
indeterminateIcon统一设置子项半选图标ReactNode-
className组根容器 class;存在时优先于 classNames.groupRootClassValue-
classNames组和子项共用的 slot classCheckboxUi-

CheckboxCard

CheckboxCard 支持 Radix Checkbox Root 的属性,并额外提供卡片内容和布局属性。

属性说明类型默认值
checked受控选中状态,支持半选状态boolean | 'indeterminate'-
defaultChecked非受控默认选中状态boolean | 'indeterminate'-
onCheckedChange选中状态变化时触发(checked: boolean | 'indeterminate') => void-
label卡片标题ReactNode-
description卡片描述文本ReactNode-
icon卡片内容区图标ReactNode-
checkboxPosition复选框在卡片中的位置'left' | 'right''left'
color主题颜色,影响控制器和选中边框'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent''primary'
shape控制器形状'square' | 'rounded''square'
size尺寸,影响控制器大小'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
checkedIcon选中状态图标ReactNode-
indeterminateIcon半选状态图标ReactNode-
forceMountIndicator强制挂载 Indicatortrue-
className卡片根容器 class;存在时优先于 classNames.cardClassValue-
classNames各 slot 的自定义 classCheckboxUi-

CheckboxGroupCard

CheckboxGroupCard 使用 CheckboxGroupCardItem[] 渲染卡片式选项,受控和非受控规则与 CheckboxGroup 一致。

属性说明类型默认值
items*卡片式复选框组选项列表CheckboxGroupCardItem[]-
value受控选中值数组string[]-
defaultValue非受控默认选中值数组string[]-
onValueChange选中值数组变化时触发(value: string[]) => void-
checkboxPosition复选框在卡片中的位置'left' | 'right''right'
shape控制器形状'square' | 'rounded''rounded'
orientation排列方向'horizontal' | 'vertical''horizontal'
color统一设置子项主题颜色'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent''primary'
size统一设置子项尺寸和组间距'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl''md'
disabled禁用整组卡片复选框booleanfalse
className组根容器 class;存在时优先于 classNames.groupRootClassValue-
classNames组和卡片子项共用的 slot classCheckboxUi-

子组件

属性说明类型默认值
CheckboxRoot基础根容器,支持原生 div 属性CheckboxRootProps-
CheckboxControlRadix Checkbox Root 控制器CheckboxControlProps-
CheckboxIndicator选中状态指示器CheckboxIndicatorProps-

类型

CheckboxProps

基础 Checkbox 属性。继承 CheckboxControlProps,并增加图标、slot class 和子组件 props 配置。

字段类型说明
checkedboolean | 'indeterminate'受控选中状态。
defaultCheckedboolean | 'indeterminate'非受控默认选中状态。
onCheckedChange(checked: boolean | 'indeterminate') => void选中状态变化回调。
color'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent'主题颜色。来自 CheckboxControlProps。
shape'square' | 'rounded'控制器形状。来自 CheckboxControlProps。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸。来自 CheckboxControlProps。
checkedIconReactNode选中状态图标。
childrenReactNode标签内容。
classNameClassValue根容器 class。
classNamesCheckboxUi各 slot 的自定义 class。
forceMountIndicatortrue强制挂载 Indicator。
indeterminateIconReactNode半选状态图标。
indicatorPropsCheckboxIndicatorPropsIndicator 属性。
rootPropsCheckboxRootProps根容器属性。

CheckboxGroupProps

复选框组属性。通过 items 渲染多个 Checkbox,并维护多值数组。

字段类型说明
items*CheckboxItemProps[]选项列表。
valuestring[]受控选中值数组。
defaultValuestring[]非受控默认选中值数组。
onValueChange(value: string[]) => void选中值数组变化回调。
orientation'horizontal' | 'vertical'排列方向。
color'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent'统一设置子项颜色。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'统一设置尺寸。
disabledboolean禁用整组。
checkedIconReactNode统一设置选中图标。
classNameClassValue组根容器 class。
classNamesCheckboxUi组和子项 slot class。
indeterminateIconReactNode统一设置半选图标。

CheckboxCardProps

卡片式 Checkbox 属性。继承 CheckboxControlProps,并增加卡片内容和布局配置。

字段类型说明
checkedboolean | 'indeterminate'受控选中状态。
defaultCheckedboolean | 'indeterminate'非受控默认选中状态。
onCheckedChange(checked: boolean | 'indeterminate') => void选中状态变化回调。
checkboxPosition'left' | 'right'复选框在卡片中的位置。
checkedIconReactNode选中状态图标。
classNameClassValue卡片根容器 class。
classNamesCheckboxUi各 slot 的自定义 class。
color'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent'主题颜色。
descriptionReactNode描述文本。
disabledboolean禁用状态。
forceMountIndicatortrue强制挂载 Indicator。
iconReactNode内容区图标。
indeterminateIconReactNode半选状态图标。
labelReactNode卡片标题。
shape'square' | 'rounded'控制器形状。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸。

CheckboxGroupCardProps

卡片式复选框组属性。继承 CheckboxGroupProps 的多值状态模型,并使用 CheckboxGroupCardItem 渲染子项。

字段类型说明
items*CheckboxGroupCardItem[]卡片选项列表。
valuestring[]受控选中值数组。
defaultValuestring[]非受控默认选中值数组。
onValueChange(value: string[]) => void选中值数组变化回调。
checkboxPosition'left' | 'right'复选框在卡片中的位置。
shape'square' | 'rounded'控制器形状。
orientation'horizontal' | 'vertical'排列方向。
color'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent'统一设置子项颜色。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'统一设置尺寸。
disabledboolean禁用整组。
classNameClassValue组根容器 class。
classNamesCheckboxUi组和卡片子项 slot class。

CheckboxItemProps

CheckboxGroup 的单个选项配置。继承 CheckboxProps 的大部分属性,但使用 label 作为展示内容。

字段类型说明
label*ReactNode选项显示内容。
value*string选项值。
checkedIconReactNode该项选中图标。
classNamesCheckboxUi该项 slot class。
color'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent'该项主题颜色。
disabledboolean该项禁用状态。
indeterminateIconReactNode该项半选图标。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'该项尺寸。

CheckboxGroupCardItem

CheckboxGroupCard 的单个选项配置。继承 CheckboxItemProps,并增加 icon。

字段类型说明
iconReactNode卡片内容区图标。
label*ReactNode卡片标题。
value*string选项值。
descriptionReactNode卡片描述文本。
disabledboolean该项禁用状态。
classNamesCheckboxUi该项 slot class。

CheckboxUi

Checkbox 全部 slot 的 class 配置。

字段类型说明
rootClassValue基础 Checkbox 根容器 class。
controlClassValue复选框控制器 class。
indicatorClassValue选中指示器 class。
labelClassValue基础 Checkbox 标签 class。
groupRootClassValueGroup 根容器 class。
cardClassValue卡片根容器 class。
cardContentClassValue卡片内容区 class。
cardLabelClassValue卡片标题 class。
cardDescriptionClassValue卡片描述 class。

CheckboxRootProps

基础根容器属性,支持原生 div 属性。

字段类型说明
childrenReactNode子节点。
classNameClassValue根容器 class。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'尺寸,影响与标签的间距。

CheckboxControlProps

复选框控制器属性。继承 Radix Checkbox Root 属性,并增加主题颜色、尺寸和形状。

字段类型说明
checkedboolean | 'indeterminate'受控选中状态。
defaultCheckedboolean | 'indeterminate'非受控默认选中状态。
onCheckedChange(checked: boolean | 'indeterminate') => void选中状态变化回调。
color'primary' | 'destructive' | 'success' | 'warning' | 'info' | 'carbon' | 'secondary' | 'accent'主题颜色。
shape'square' | 'rounded'控制器形状。
size'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'控制器尺寸。
disabledboolean禁用状态。
idstring控制器 id。
namestring表单字段名。
requiredboolean是否必填。
valuestring表单提交值。

CheckboxIndicatorProps

选中指示器属性,继承 Radix Checkbox Indicator 属性。

字段类型说明
childrenReactNode指示器内容。
classNameClassValue指示器 class。
forceMounttrue强制挂载指示器。

ClassValue

CSS 类名类型

string | null | undefined | Record<string, boolean> | ClassValue[]

On this page