Checkbox 多选框

多选框用于在一组选项中进行多项选择,支持选中、未选中和不确定三种状态。

引入

import { Checkbox } from 'kitty-react';

基础用法

这是一个带有描述信息的多选框
import React, { useState } from 'react';
import { Checkbox } from 'kitty-react';

function BasicCheckbox() {
  const [checked, setChecked] = useState(false);

  return (
    <div className="space-y-4">
      <Checkbox
        checked={checked}
        onChange={(e) => setChecked(e.target.checked)}
        label="基础多选框"
      />
      <Checkbox
        checked={checked}
        onChange={(e) => setChecked(e.target.checked)}
        label="带描述的多选框"
        description="这是一个带有描述信息的多选框"
      />
    </div>
  );
}

不同尺寸

多选框提供三种尺寸:小号 (sm)、中号 (md) 和大号 (lg)。

这是 sm 尺寸的多选框
这是 md 尺寸的多选框
这是 lg 尺寸的多选框
<div className="space-y-4">
  <Checkbox size="sm" label="小号多选框" />
  <Checkbox size="md" label="中号多选框" />
  <Checkbox size="lg" label="大号多选框" />
</div>

不同颜色

多选框支持多种颜色主题。

这是 blue 颜色的多选框
这是 green 颜色的多选框
这是 red 颜色的多选框
这是 gray 颜色的多选框
<div className="space-y-4">
  <Checkbox color="blue" defaultChecked label="蓝色多选框" />
  <Checkbox color="green" defaultChecked label="绿色多选框" />
  <Checkbox color="red" defaultChecked label="红色多选框" />
  <Checkbox color="gray" defaultChecked label="灰色多选框" />
</div>

不同状态

多选框支持禁用、不确定和错误状态。

点击可切换到选中状态
这是一个错误信息
<div className="space-y-4">
  <Checkbox disabled label="禁用状态" />
  <Checkbox disabled defaultChecked label="禁用且选中状态" />
  <Checkbox
    indeterminate={true}
    label="不确定状态"
    description="用于表示部分选中的状态"
  />
  <Checkbox
    error
    label="错误状态"
    errorMessage="这是一个错误信息"
  />
</div>

多选框组

实现全选功能和分组选择。

已选择 0 / 3 项
红色的水果
黄色的水果
橙色的水果
import React, { useState } from 'react';
import { Checkbox } from 'kitty-react';

function CheckboxGroup() {
  const [selectedItems, setSelectedItems] = useState([]);
  const items = [
    { id: 'apple', label: '苹果', description: '红色的水果' },
    { id: 'banana', label: '香蕉', description: '黄色的水果' },
    { id: 'orange', label: '橙子', description: '橙色的水果' },
  ];

  const allSelected = selectedItems.length === items.length;
  const someSelected = selectedItems.length > 0 && selectedItems.length < items.length;

  return (
    <div className="space-y-4">
      <Checkbox
        checked={allSelected}
        indeterminate={someSelected}
        onChange={(e) => handleSelectAll(e.target.checked)}
        label="全选"
      />
      <div className="ml-6 space-y-2">
        {items.map((item) => (
          <Checkbox
            key={item.id}
            checked={selectedItems.includes(item.id)}
            onChange={(e) => handleItemChange(item.id, e.target.checked)}
            label={item.label}
            description={item.description}
          />
        ))}
      </div>
    </div>
  );
}

API

Checkbox Props

属性类型默认值说明
size'sm' | 'md' | 'lg''md'多选框尺寸
color'blue' | 'green' | 'red' | 'gray''blue'多选框颜色
disabledbooleanfalse是否禁用
indeterminatebooleanfalse是否为不确定状态
labelReact.ReactNode-标签文本
descriptionReact.ReactNode-描述文本
errorbooleanfalse是否为错误状态
errorMessagestring-错误信息
classNamestring-容器自定义样式类
labelClassNamestring-标签自定义样式类
checkboxClassNamestring-多选框自定义样式类

其他属性继承自 HTML input 元素的属性。