Featuring Design System
Legacy

CoreCheckbox

레거시 체크박스 컴포넌트. Checkbox로 마이그레이션을 권장합니다.

개요

마이그레이션 안내 — 이 컴포넌트는 레거시입니다. 신규 프로젝트에서는 Checkbox를 사용하세요.

CoreCheckbox는 단일 컴포넌트 기반 체크박스입니다.

  • 네이티브 <input type="checkbox"> 기반 — form 제출 호환
  • Indeterminate 상태indeterminate prop으로 중간 선택 표현
  • 커스텀 라벨labelReactNode 전달 가능
  • Controlled / Uncontrolled 모두 지원

Usage

기본 사용법

<CoreCheckbox label="동의합니다" />

Controlled

() => {
const [checked, setChecked] = React.useState(false);
return (
  <CoreCheckbox
    label="제어된 체크박스"
    checked={checked}
    onChange={(e) => setChecked(e.target.checked)}
  />
);
}

Indeterminate 상태

<CoreCheckbox label="부분 선택" indeterminate />

비활성화 상태

<VStack $css={{ gap: '8px' }}>
<CoreCheckbox label="미체크 비활성" disabled />
<CoreCheckbox label="체크 비활성" checked disabled />
<CoreCheckbox label="Indeterminate 비활성" indeterminate disabled />
</VStack>

커스텀 라벨

<CoreCheckbox
label={
  <span>
    <strong>필수 약관</strong>에 동의합니다
  </span>
}
/>

Props

ComponentPropsWithoutRef<'input'>을 확장한 컴포넌트입니다.

Prop

Type

스타일

기본 스타일 속성

영역속성
Label wrapperdisplay: flex, gap: spacing-150 (6px), min-height: 18px
Inputopacity: 0, position: absolute (숨김, 커스텀 아이콘으로 대체)
Icon wrapperwidth: 16px, height: 16px
Label texttypography: body[2]

States — 상태별 토큰

상태아이콘 스타일
기본 (미체크)stroke: toggle-primary[3]
기본 hoverfill: toggle-hover-bg
체크fill: toggle-primary[1]
체크 hoverfill: toggle-primary[2]
Indeterminatefill: toggle-primary[1]
Disabledfill: toggle-disabled-bg, stroke: toggle-disabled-border
Focusoutline stroke: focus 색상

마이그레이션 가이드

Checkbox는 Compound composition 패턴으로 레이아웃 유연성이 높아졌습니다.

Before / After

// Before (CoreCheckbox)
<CoreCheckbox
  label="동의합니다"
  checked={checked}
  onChange={(e) => setChecked(e.target.checked)}
/>
// After (Checkbox)
<Label.Root>
  <Checkbox checked={checked} onChange={(e) => setChecked(e.currentTarget.checked)} />
  <Label.Text>동의합니다</Label.Text>
</Label.Root>

변경 사항

CoreCheckboxCheckbox + Label
label propLabel.Text 서브컴포넌트
onChange={(e) => ...}onChange={(e) => ...} (동일)
indeterminateindeterminate (동일)
labelClassNameLabel.TextclassName