npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@sea-lion/react-checkbox-group

v0.3.0

Published

CheckboxGroup 是一组复选框组件,用于从一组数据中选择多个值。与单独使用的 Checkbox 相比,提供统一的值管理和布局控制,更适合成组使用。

Readme

react-checkbox-group

CheckboxGroup 是一组复选框组件,用于从一组数据中选择多个值。与单独使用的 Checkbox 相比,提供统一的值管理和布局控制,更适合成组使用。

安装

pnpm add @sea-lion/react-checkbox-group
# 或者
npm install @sea-lion/react-checkbox-group
yarn add @sea-lion/react-checkbox-group

使用

在代码中引入组件:

import * as CheckboxGroup from '@sea-lion/react-checkbox-group';

基本用法

<CheckboxGroup.Root value={selected} onValueChange={setSelected}>
  <CheckboxGroup.Item value="1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="2">选项 2</CheckboxGroup.Item>
  <CheckboxGroup.Item value="3">选项 3</CheckboxGroup.Item>
</CheckboxGroup.Root>

非受控用法(默认值)

使用 defaultValue 设置初始选中项,状态由组件内部管理:

<CheckboxGroup.Root defaultValue={['apple', 'banana']}>
  <CheckboxGroup.Item value="apple">苹果</CheckboxGroup.Item>
  <CheckboxGroup.Item value="banana">香蕉</CheckboxGroup.Item>
  <CheckboxGroup.Item value="orange">橙子</CheckboxGroup.Item>
  <CheckboxGroup.Item value="pear">梨</CheckboxGroup.Item>
</CheckboxGroup.Root>

受控用法

通过 valueonValueChange 完全控制选中状态:

const [value, setValue] = useState(['option2']);

<CheckboxGroup.Root value={value} onValueChange={setValue}>
  <CheckboxGroup.Item value="option1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option3">选项 3</CheckboxGroup.Item>
</CheckboxGroup.Root>

<p>当前选中值: {value.join(', ') || '无'}</p>

尺寸

支持三种尺寸:"1"(小)、"2"(中,默认)、"3"(大):

<CheckboxGroup.Root size="1" defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

<CheckboxGroup.Root size="2" defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

<CheckboxGroup.Root size="3" defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

变体

支持三种视觉变体:"classic"(默认)、"surface""soft"

<CheckboxGroup.Root variant="classic" defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">Classic 风格</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

<CheckboxGroup.Root variant="surface" defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">Surface 风格</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

<CheckboxGroup.Root variant="soft" defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">Soft 风格</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

颜色

通过 color 属性设置主题色,支持设计系统中的全部颜色令牌:

<CheckboxGroup.Root color="blue" defaultValue={['opt1']}>
  <CheckboxGroup.Item value="opt1">蓝色(默认)</CheckboxGroup.Item>
</CheckboxGroup.Root>

<CheckboxGroup.Root color="crimson" defaultValue={['opt1']}>
  <CheckboxGroup.Item value="opt1">猩红色</CheckboxGroup.Item>
</CheckboxGroup.Root>

<CheckboxGroup.Root color="grass" defaultValue={['opt1']}>
  <CheckboxGroup.Item value="opt1">草绿色</CheckboxGroup.Item>
</CheckboxGroup.Root>

<CheckboxGroup.Root color="amber" defaultValue={['opt1']}>
  <CheckboxGroup.Item value="opt1">琥珀色</CheckboxGroup.Item>
</CheckboxGroup.Root>

高对比度

使用 highContrast 属性增强可见性,适合对可访问性有更高要求的场景:

<CheckboxGroup.Root color="blue" highContrast defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">高对比度选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">高对比度选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

排列方向

通过 orientation 控制选项的排列方向:

{/* 垂直排列(默认) */}
<CheckboxGroup.Root defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

{/* 水平排列 */}
<CheckboxGroup.Root
  orientation="horizontal"
  defaultValue={['option1']}
  style={{ flexDirection: 'row', alignItems: 'center' }}
>
  <CheckboxGroup.Item value="option1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

禁用状态

支持整组禁用或单个选项禁用:

{/* 整组禁用 */}
<CheckboxGroup.Root disabled defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
</CheckboxGroup.Root>

{/* 个别选项禁用 */}
<CheckboxGroup.Root defaultValue={['option1']}>
  <CheckboxGroup.Item value="option1">选项 1</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option2" disabled>选项 2(禁用)</CheckboxGroup.Item>
  <CheckboxGroup.Item value="option3">选项 3</CheckboxGroup.Item>
</CheckboxGroup.Root>

表单用法(必选字段)

配合表单使用时,可设置 name(字段名)和 required(是否必选):

<form>
  <CheckboxGroup.Root required name="required-options" defaultValue={['option1']}>
    <CheckboxGroup.Item value="option1">选项 1(必选)</CheckboxGroup.Item>
    <CheckboxGroup.Item value="option2">选项 2</CheckboxGroup.Item>
    <CheckboxGroup.Item value="option3">选项 3</CheckboxGroup.Item>
  </CheckboxGroup.Root>
</form>

何时使用

  • 当用户需要从一组数据中选择多个选项时
  • 当用户需要在开/关状态之间切换多个选项时
  • 需要与表单一起使用,收集多个选项值的情况
  • 适用于配置项的选择、多条件筛选、数据列表的批量操作等场景

Props / API 属性

CheckboxGroup.Root

| 参数 | 说明 | 类型 | 默认值 | |------|------|------|--------| | size | 复选框尺寸 | "1" \| "2" \| "3" | "2" | | variant | 视觉变体 | "classic" \| "soft" \| "surface" | "classic" | | color | 主题颜色 | "gray" \| "blue" \| "crimson" \| "green" \| ... | — | | highContrast | 使用高对比度颜色 | boolean | false | | disabled | 禁用整个复选框组 | boolean | false | | orientation | 排列方向 | "horizontal" \| "vertical" | "vertical" | | value | 受控选中值(数组) | string[] | — | | defaultValue | 非受控默认选中值 | string[] | [] | | onValueChange | 选中值变化时的回调 | (value: string[]) => void | — | | required | 是否为必选字段 | boolean | false | | name | 表单字段名称 | string | — |

CheckboxGroup.Item

| 参数 | 说明 | 类型 | 默认值 | |------|------|------|--------| | value | 该选项的值(必填) | string | — | | disabled | 禁用该选项 | boolean | false |

查看更多

参考 Radix UI 官方文档 获取完整 API 与设计规范。