Checkbox · Docs

스토리북 개발자들을 위한 내부 문서

Components

Checkbox

Docs

Checkbox API 사용가이드입니다. 조합 예시는 Overview를 참고하세요.

API

CheckboxGroup · Checkbox · CheckboxItem을 조합합니다. value는 string[]이며 다중 선택을 지원합니다. shape · size · color는 그룹 또는 개별에 전달합니다.

import { CheckboxGroup, Checkbox, CheckboxItem } from "@/components/checkbox";
import { Label } from "@/components/label";

{/* CheckboxItem — 레이블 포함, 다중 선택 */}
<CheckboxGroup
  name="features"
  defaultValue={["a"]}
  className="flex flex-col gap-[var(--gap-8)]"
>
  <CheckboxItem value="a">옵션 A</CheckboxItem>
  <CheckboxItem value="b">옵션 B</CheckboxItem>
</CheckboxGroup>

{/* circle + large */}
<CheckboxGroup
  shape="circle"
  size="large"
  defaultValue={["pro"]}
  className="flex flex-col gap-[var(--gap-8)]"
>
  <CheckboxItem value="free">Free</CheckboxItem>
  <CheckboxItem value="pro">Pro</CheckboxItem>
</CheckboxGroup>

{/* max — 최대 2개 */}
<CheckboxGroup
  max={2}
  defaultValue={["a"]}
  className="flex flex-col gap-[var(--gap-8)]"
>
  <CheckboxItem value="a">A</CheckboxItem>
  <CheckboxItem value="b">B</CheckboxItem>
  <CheckboxItem value="c">C</CheckboxItem>
</CheckboxGroup>

{/* Checkbox + Label */}
<div className="flex items-center gap-[var(--gap-8)]">
  <Checkbox id="agree" name="agree" value="yes" />
  <Label htmlFor="agree">동의합니다</Label>
</div>

Props

NameTypeDefaultDescription
CheckboxGroup.value
string[]제어 모드 선택값 배열. onValueChange와 함께 사용합니다.
CheckboxGroup.defaultValue
string[]비제어 초기 선택값 배열. Selected + Disabled는 해당 value를 defaultValue에 넣고 disabled합니다.
CheckboxGroup.max
number최대 선택 개수. 미전달 시 제한 없음. 1 이상 전달 시 1~max개까지 선택 가능합니다.
CheckboxGroup.shape
"square" | "circle""square"박스 형태. circle은 다중 선택용 원형입니다. 단일 선택은 Radio를 사용하세요.
CheckboxGroup.size
"medium" | "large""medium"박스 크기.
CheckboxGroup.color
stringvar(--surface-primary)선택(Selected) 배경색. CSS 색 또는 토큰 변수(예: var(--status-success)).
CheckboxGroup.name
string폼 제출 시 필드 키. 생략 시 자동 생성.
CheckboxGroup.disabled
boolean그룹 전체 비활성화.
CheckboxGroup.className
string레이아웃용. 예: flex flex-col gap-… / flex flex-row flex-wrap gap-…
Checkbox.value
string그룹 내 항목 식별값. 선택 시 value 배열에 포함됩니다.
Checkbox.shape / size / color
동일개별 오버라이드. 미전달 시 그룹 값을 따릅니다.
CheckboxItem.children
ReactNode레이블 텍스트.

Events

NameSignatureDescription
onValueChange(value: string[]) => void선택 배열이 바뀔 때 호출됩니다.
onChange(event: ChangeEvent<HTMLInputElement>) => voidnative checkbox onChange (필요 시).

Notes

  • 소비 앱 필수: React 19, Tailwind CSS v4, ClaBi tokens.css(+ @theme 매핑), clsx.
  • clsx 유틸이 필수입니다. className 병합에 사용하므로 소비 앱에 clsx가 있어야 합니다.
  • value/defaultValue/onValueChange는 string[] (다중 선택)입니다.
  • max 미전달 시 제한 없음. max={1}이면 최대 1개(추가 선택은 기존 항목 해제 후 가능).
  • shape는 옵션으로 통일합니다. square/circle을 별도 컴포넌트로 나누지 않습니다.
  • disabled만이면 Disabled(미선택). Selected + Disabled는 defaultValue에 넣고 disabled합니다 (muted 토큰, opacity 아님).
  • components는 @/shared에 의존하지 않습니다. className 병합은 clsx 직import입니다.