# Checkbox > 2026-10-10 추가 수정 요청 기준: `asChild`는 단일 React DOM 호환 요소를 받으며 소비자 자식·ID·이벤트·ref를 보존하고 내부 Indicator를 추가한다. 커스텀 요소는 props/ref를 최종 DOM으로 전달해야 한다. 기존 기본 button·외부 form 유지. 과거 검증 기록은 당시 결과이며 현재 검증은 [추가 수정 보고서](../guidelines/publisher-additional-review-2026-10-10.md)를 따릅니다. 현재 HM 구현의 기준 문서. 공통 원칙은 `docs/guidelines/프로젝트-지침.md`(§6, §7), Token 구조 원칙은 `테마-토큰-가이드.md`를 따른다. 이 문서는 Checkbox 고유의 API·Token·상태·결정만 기록한다. ## 1. 상태 | 항목 | 내용 | |---|---| | 구현 상태 | 구현 완료 (현재 HM 규격) | | 기준일 | 2026-10-02 | | 기반 | shadcn/ui Checkbox (Radix `Checkbox`) | | 대표 Story | `Components/Form/Checkbox` → `All` (이름 "Checkbox") | | 보류 | 아래 §11 | ## 2. 적용 근거 - **참고 근거**: ui-viz 기존 테스트 규격에는 Checkbox 문서가 없다(border·radius·indicator는 TBD, mark는 native UA 소유, HOLD). 구현 값으로 쓸 수 있는 확정 규격이 없어 참고만 했다. - **현재 HM 규격**: 아래 §3~§4. 현재 HM Semantic 체계(surface, stroke, action-primary, state-active, on-state-active)로 새로 정했다. - **구현 방식**: shadcn / Radix Checkbox 구조(Root/Indicator, `data-state`, indeterminate, 키보드, Label 연결, 폼 동작)를 유지하고 theme CSS로 HM 스타일을 연결. - **보류**: §11. ## 3. 기본 규격 (현재 HM 규격) | 항목 | 값 | 비고 | |---|---|---| | Box | 18 × 18px | 현재 HM | | Border | 1px `--hm-sem-stroke-default` | Semantic | | Radius | `--hm-radius-control-md` (4px) | 공통 control radius | | Face | `--hm-sem-bg-surface` | Semantic | | Indicator | shadcn `CheckIcon` / `MinusIcon`, 14px, `--hm-sem-on-state-active` | shadcn 아이콘 유지 | | Hit area | 18px box + 연결된 `Label` 클릭 | 별도 확장 없음 | shadcn(lucide) 아이콘을 유지했다. 별도 HM glyph는 만들지 않았다. ## 4. 상태 규격 | 상태 | 값 | |---|---| | Unchecked | 위 기본 규격 | | Checked (`data-state="checked"`) | border·face `--hm-sem-state-active`, 체크 아이콘 | | Indeterminate (`data-state="indeterminate"`) | Checked와 같은 면, 마이너스 아이콘 | | Hover (미체크) | border `--hm-sem-action-primary` | | Hover (체크·indeterminate) | Black 20% overlay (`--hm-color-action-overlay-hover`) | | Focus (`:focus-visible`) | shadcn ring (`ring-3 ring-ring/50`) 유지 | | Error (`aria-invalid="true"`) | border `--hm-sem-action-destructive` | | Disabled | `opacity: 0.6` (이 컴포넌트 값, 전역 Disabled 규칙으로 승격 안 함), `cursor: not-allowed` | ## 5. API Radix Checkbox props 그대로 (`checked` / `defaultChecked` / `onCheckedChange`, `"indeterminate"`, `disabled`, `required`, `name`, `value`, `form`). 추가 prop 없음. 출력 속성: `data-slot="checkbox"`, Radix `data-state`·`data-disabled`. - Label과의 연결은 `