체크박스 (Checkbox)

체크박스는 사용자가 여러 항목 중 원하는 것을 독립적으로 켜고 끄며 선택하도록 돕는 요소로, 약관 동의나 필터·목록의 다중 선택처럼 각 항목을 서로 영향 없이 개별적으로 고르거나 해제해야 할 때 사용해요.

Usage

import { Checkbox } from "podo-ui/react";import "podo-ui/styles.css";
<Checkbox label="이용약관 동의" defaultChecked />

크기 (size)

체크박스 크기는 사용 위치와 정보 밀도에 따라 md(base), lg로 구분해 사용해요. md는 폼이나 목록처럼 항목이 촘촘히 모이는 일반적인 상황에, lg는 모바일이나 터치 영역 확보가 필요한 화면, 시각적 강조가 필요한 선택에 사용하며, 함께 놓이는 텍스트·요소와 균형을 맞춰 정렬을 유지해요. 박스는 18px로 고정되고 크기는 라벨 텍스트에 적용돼요.

base
propertiesmdlg

상태 (state)

체크박스 상태는 선택 정도에 따라 unchecked, checked, indeterminate로 구분해 표현해요. unchecked는 선택되지 않은 기본 상태, checked는 항목이 선택된 상태를, indeterminate는 하위 항목 중 일부만 선택된 부분 선택 상태를 나타내요. indeterminate는 주로 상위 체크박스가 자식 항목의 전체·일부·미선택을 한 번에 보여줄 때 사용하며, 선택할 수 없는 경우 disabled를 더해 비활성 상태임을 함께 구분해요.

propertiesuncheckedcheckedindeterminatedisabled

강조 (bold)

체크박스는 함께 표시되는 레이블 텍스트의 강조 정도를 bold로 조절해요. 기본은 일반 굵기로 본문과 자연스럽게 어울리게 하고, bold는 항목의 중요도가 높거나 그룹의 제목·대표 선택지처럼 강조가 필요할 때 사용해요.

propertiesbold

속성 (props)

podo-ui/react의 Checkbox가 받는 속성이에요. 시안의 state(checked·unchecked)는 웹 표준 input[type=checkbox]에 맞춘 checked로, indeterminate는 별도 속성으로 표현돼요(스크린리더에는 mixed로 안내). checked를 생략하면 스스로 상태를 관리하는 비제어형으로 동작하고, 표준 input 속성(name, className, aria-* 등)도 그대로 전달돼요.

PropTypeDefault설명
checkedboolean— (비제어)선택 값 (시안 state=checked·unchecked). 지정하면 제어형으로 동작해요
defaultCheckedbooleanfalse비제어형일 때의 초기 값
indeterminatebooleanfalse부분 선택 표시 (시안 state=indeterminate). 상위 체크박스가 자식의 일부 선택을 보여줄 때 사용해요
size"md" | "lg""md"라벨 크기 (md 14 / lg 16). 박스는 18px로 고정이에요
boldbooleanfalse라벨을 SemiBold로 강조해요
labelReactNode박스 옆 라벨. 클릭 영역이 되고 체크박스의 접근성 이름도 돼요 (없으면 aria-label 권장)
disabledbooleanfalse비활성 상태. unchecked·checked·indeterminate 어디에서도 표시돼요
onCheckedChange(checked: boolean) => void전환될 때 다음 값과 함께 호출돼요