RadioButton
레이블을 포함한 라디오 버튼 입력 컴포넌트
개요
iCignal RadioButton은 Foundation RadioGroupItem을 래핑하여 레이블 기능을 추가한 컴포넌트입니다. RadioButtonGroup을 통해 그룹으로 관리합니다.
주요 특징
- ✅ 레이블 통합: 라디오 버튼 우측에 레이블 자동 배치
- ✅ 다양한 크기: xs, sm, md, lg, xl 5단계 크기 지원
- ✅ 읽기 전용: readOnly 상태에서 조회만 가능
- ✅ 오류 상태: error prop을 통한 시각적 오류 표시
- ✅ FormItem 통합: 그룹 레이블, 설명, 에러 메시지
- ✅ 접근성: ARIA 속성 자동 적용
- ✅ 디자인 토큰: 테마 커스터마이징 지원
사용 예시
기본 상태
상호 배타적인 선택지 중 하나를 선택하는 입력 요소입니다.
Preview
체크 상태 표시
선택 시 Checked 상태를 시각적으로 표시합니다.
Preview
읽기 전용 상태
읽기 전용 상태에서는 조회만 가능하며 선택 변경이 제한됩니다.
Preview
오류 상태 표시
오류 발생 시 그룹 단위로 오류 상태를 시각적으로 표현합니다.
Preview
필수 선택 항목입니다
레이블 제공
각 Radio Button의 Label은 버튼 우측에 배치됩니다. 레이블 클릭 시에도 선택이 동작합니다.
Preview
입력 가능 제어
Preview
API Reference
RadioButtonGroup Props
| Prop | Type | Default | Description |
|---|---|---|---|
items | RadioButtonProps[] | [] | 라디오 버튼 항목 배열 |
value | string | - | 선택된 값 (제어) |
defaultValue | string | - | 기본 선택 값 |
itemOrientation | "horizontal" | "vertical" | "horizontal" | 항목 배치 방향 |
size | "xs" | "sm" | "md" | "lg" | "xl" | "md" | 라디오 버튼 크기 |
disabled | boolean | - | 비활성화 여부 |
readOnly | boolean | - | 읽기 전용 여부 |
label | string | - | 필드 레이블 |
labelWidth | string | number | - | 레이블 너비 |
required | boolean | - | 필수 여부 |
orientation | "horizontal" | "vertical" | "horizontal" | 레이블-필드 배치 방향 |
description | string | - | 설명 텍스트 |
error | string | - | 에러 메시지 |
className | string | - | 추가 CSS 클래스 |
Events
| Event | Type | Description |
|---|---|---|
onValueChange | (value: string) => void | 값 변경 핸들러 |
RadioButton Props
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | - | 항목 값 |
label | string | - | 항목 레이블 |
disabled | boolean | - | 개별 비활성화 |
readOnly | boolean | - | 읽기 전용 여부 |
기본 사용법
import { RadioButtonGroup } from "@vortex/ui-icignal"
<RadioButtonGroup
label="옵션 선택"
labelWidth={100}
items={[
{ value: "a", label: "옵션 A" },
{ value: "b", label: "옵션 B" },
]}
defaultValue="a"
/>접근성
ARIA 속성
Base UI Radio가 자동으로 제공합니다:
// role="radiogroup" 자동 적용
// role="radio" 자동 적용
// aria-checked="true" | "false" 자동 적용
// aria-disabled 자동 적용권장 사항
- ✅
labelprop을 통해 그룹 레이블을 제공 - ✅ 각 항목에
label을 제공하여 개별 라벨 연결 - ✅ 에러 상태 시
errorprop으로 구체적 안내 - ❌ 라벨 없이 단독 사용 지양
관련 컴포넌트
- RadioGroup (Foundation): Foundation 레이어 라디오 그룹
- RadioButtonGroup: 동일 컴포넌트 (RadioButtonGroup 문서)
- CheckboxGroup: 다중 선택 그룹
- Select: 드롭다운 선택
Last updated on