Get StartedFoundationsComponentsPatternsRulesDevelopAI & ToolsUpdates

Select Box

명확한 테두리를 가진 컨테이너로 정의된 목록 중 하나 이상의 옵션을 선택하는 컴포넌트예요.

설치

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

Anatomy

Select Box는 Container, Prefix, Title(Label), Description, Control, Custom Content(Footer)로 구성돼요.

  • Container: 1px 테두리를 가진 카드예요. 컴포넌트 자체에는 배경색이 없어요. 박스 전체가 하나의 터치 영역이에요.
  • Prefix: 왼쪽(세로형은 위쪽)에 놓이는 아이콘이에요. prefixIcon 으로 넣어요.
  • Label / Description: 옵션 이름과 보충 설명이에요.
  • Control: 오른쪽 끝에 놓여 선택 방식을 알려줘요. suffix 로 넣어요.
  • Footer: 선택한 뒤에만 펼쳐지는 추가 콘텐츠 영역이에요.
구성 요소다중 선택단일 선택
그룹CheckSelectBoxGroupRadioSelectBoxRoot
항목CheckSelectBoxRadioSelectBoxItem
ControlCheckSelectBoxCheckmarkRadioSelectBoxRadiomark

Properties

Control

Select Box 오른쪽 끝에 놓이는 Control 영역은 선택 방식을 나타내요. Checkmark, Radiomark, None 세 가지로 구분해서 사용해요.

Control사용 상황
Checkmark다중 선택이 가능한 경우
Radiomark단일 선택만 가능한 경우
None박스 테두리 변화만으로 선택 상태를 표현할 때. 시각적 노이즈를 줄이고 싶을 때 유용하고, 단일·다중 선택 모두 사용할 수 있어요.

State

선택(Selected), 미선택(Unselected) 상태를 가지며, 각각 사용자의 상호작용에 따라 활성화(Enabled), 비활성화(Disabled), 눌림(Pressed) 상태와 조합돼요. 선택되면 2px 테두리가 나타나요.

Columns

세로로 쌓이는 1열 배치는 Single Column, 한 줄에 2개 이상 놓이는 배치는 Multiple Columns를 사용해요. columns 가 1보다 크면 하위 항목의 layout 이 자동으로 vertical 이 되고, Prefix와 Control이 상단 정렬돼요. 필요하면 항목마다 layout 을 직접 지정할 수 있어요.

가로형(Horizontal)은 항상 단일 컬럼으로 배치하고, 세로형(Vertical)은 화면 폭에 맞춰 한 줄에 2~3개(최대 3개)의 컬럼으로 구성해요. 3컬럼 배치에서는 좁은 너비에서 가독성을 지키도록 정보 밀도를 낮춰요.

Prefix

Prefix는 Select Box 왼쪽에 놓여요. 옵션을 빠르게 구분할 수 있는 아이콘을 넣어요.

Custom Contents

기본 설명 이상의 상세 내용이 필요하거나, 선택한 뒤에만 추가 정보를 보여줘야 한다면 footer 를 사용해요. 텍스트 외에도 다양한 시각 요소를 담을 수 있어요. footerVisibility 로 표시 조건을 정해요.

  • when-selected (기본값): 선택되었을 때만 표시
  • when-not-selected: 선택되지 않았을 때만 표시
  • always: 항상 표시

Guidelines

터치 영역

Select Box는 박스 전체를 하나의 터치 영역으로 구성해서 오조작을 막아요. 박스 안의 특정 영역만 누를 수 있게 만들지 않아요. 추가 정보가 필요하면 Description이나 선택 후 펼쳐지는 Footer를 활용해요.

Selected 상태 전환

Pressed 상태는 Checkmark나 Radiomark 같은 컨트롤이 아니라 컨테이너 전체 영역에서 표현돼요.

간결하게 작성하기

사용자가 여러 옵션을 쉽고 빠르게 비교할 수 있도록 Label과 Description은 최대한 간결하게 써요. Description은 가독성을 위해 2줄 이내를 권장해요.

택배거래안전결제로 받아요.
Do· 간결한 Label과 Description

핵심만 짧게 써서 옵션끼리 바로 비교할 수 있게 해요.

택배거래판매자가 물건을 택배로 보내면 구매자가 받아서 확인한 뒤 구매를 확정하고, 확정되면 대금이 판매자에게 전달되는 방식이에요.
Don't· 길고 장황한 설명

설명이 길면 옵션을 비교하기 어려워요.

선택값 반영

Select Box는 옵션을 '선택'하는 도구이고, 그 자체로 동작을 '실행'하는 버튼이 아니에요. 선택한 값은 저장, 확인, 다음 단계 같은 별도의 실행 버튼(Submit Button)으로 최종 반영해요.

직거래
택배거래
다음
Do· 별도의 Submit Button

선택한 뒤 실행 버튼으로 값을 반영해요.

로그아웃
계정 삭제
Don't· 즉시 실행하는 버튼처럼 사용

Select Box를 누르자마자 동작이 실행되게 하지 않아요.

Multiple Columns 높이 규칙

같은 줄(Row)에 2개 이상 놓이면 시각적 균형을 위해 가장 긴 콘텐츠를 가진 Select Box를 기준으로 높이를 맞춰요. 그룹은 columns 가 1보다 크면 모든 행의 높이를 자동으로 통일해요.

최대 선택 가능 개수 안내

선택 마크가 없는 None 타입을 사용할 때는 사용자가 시행착오를 겪지 않도록 최대 선택 가능 개수를 미리 안내해요. 다중 선택에서 최대치에 도달하면 새 항목이 선택되지 않게 막고, Snackbar 같은 피드백을 먼저 보여줘요.

Select Box와 Chip 비교

상세한 정보 비교와 명확한 데이터 확정이 필요하면 Select Box를, 키워드 중심의 가벼운 필터링이나 유연한 태깅이 필요하면 Chip을 사용해요.

Select BoxChip (Selection)
정보 밀도상세 설명이나 추가 정보를 포함한 풍부한 정보 전달핵심 키워드 중심의 간결한 정보 전달
공간 활용다른 입력 필드와 수평·수직 정렬을 맞춤콘텐츠 길이에 따라 너비가 변하는 유연한 배치

Props

CheckSelectBoxGroup · RadioSelectBoxRoot

Prop

Type

CheckSelectBox · RadioSelectBoxItem

Prop

Type

On this page