Get startedFoundationsComponentsPatternsRules

Toggle

토글은 설정을 즉시 켜거나 끌 때 써요.

설치

pnpm dlx shadcn@latest add https://rebar.conmarket-landing.workers.dev/r/steel/toggle.json

Examples

Size

기본은 regular(32×16px) 이고, 더 눈에 띄어야 하면 large(40×20px) 를 써요.

Controlled

isChecked 와 onChange 로 상태를 직접 관리해요. 새 값은 e.currentTarget.checked 로 읽어요. 관리할 필요가 없으면 defaultChecked 만 줘요.

Disabled

isDisabled 를 주면 회색으로 바뀌고 탭 순서에서도 빠져요. 왜 바꿀 수 없는지 설명을 함께 두고 descriptionId 로 연결해요.

Loading

상태를 서버에서 불러오거나 저장하는 동안 isLoading 을 주면 아이콘 자리에 스피너가 나와요. 스크린 리더에는 "불러오는 중" 이 함께 읽혀요.

Label

보이는 라벨을 둘 수 없을 때만 label 로 접근성 이름을 줘요. 보이는 라벨이 있다면 <label htmlFor> 와 id 로 연결하는 쪽이 좋아요.

Usage guidelines

토글은 무언가를 바로 켜고 끄게 할 때 써요. 벽의 전등 스위치처럼 누르는 즉시 결과가 반영되는 동작이라면 토글이 맞아요. (예: 프로젝트를 외부에 공개하기)

  • 토글을 바꾸면 무슨 일이 생기는지 툴팁으로 설명해 주면 좋아요.
  • 토글은 저장 버튼 없이 바로 적용돼야 해요. 제출 버튼을 눌러야 적용되는 폼 안의 설정이라면 Checkbox 를 써요.
  • 목록에서 하나를 고르는 데는 쓰지 않아요. 보이는 선택지 중 하나를 고를 땐 Radio 를 써요.
Do· 즉시 적용되는 설정
바꾸는 순간 바로 반영되는 켜기·끄기에 써요.
Don't· 버튼으로 확정하는 설정
저장 버튼을 눌러야 적용되는 옵션에는 토글 대신 체크박스를 써요.
  • 라벨은 상태와 관계없이 그대로 둬요. 켜짐·꺼짐에 따라 라벨 문구를 바꾸지 않아요.

Accessibility

  • 컨트롤은 role="switch" 와 aria-checked 를 가져요. 켜짐은 체크 아이콘과 초록 트랙, 꺼짐은 엑스 아이콘과 어두운 트랙으로 색 외의 단서도 함께 보여줘요.
  • Tab 으로 포커스를 옮기고 Space 나 Enter 로 상태를 바꿔요. 포커스가 있으면 트랙 둘레에 포커스 테두리가 보여요.
  • 보이는 라벨은 id 와 <label htmlFor> 로 연결하고, 보이는 라벨이 없을 때만 label 을 써요.
  • 비활성 토글은 왜 바꿀 수 없는지 설명하고, 필요하면 스크린 리더 전용 텍스트로 그 옵션이 있다는 사실을 알려줘요.

Props

Prop

Type

On this page