Get StartedFoundationsComponentsPatternsRulesDevelopAI & ToolsUpdates

Time Picker

휠을 굴려 오전·오후, 시, 분을 선택하는 12시간제 시간 선택 컴포넌트예요.

설치

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

Anatomy

Time Picker는 선택 상태를 관리하는 Root 아래에 휠 UI를 담아요. 내부적으로 Medium 크기의 Wheel Picker 를 재사용해요.

  • Period Column: 오전·오후를 고르는 휠이에요. 12시간제의 첫 칼럼이며, 한국어 표기 순서대로 시·분보다 앞에 둬요.
  • Hour Column: 시를 고르는 휠이에요. 12시간제에서는 12·1·2…11을 보여줘요.
  • Minute Column: 분을 고르는 휠이에요. Minute Step에 맞춰 선택지가 정해져요.
  • Selection Indicator: 휠 가운데의 강조된 선택 행이에요. 옅은 배경의 띠로 세 칼럼을 가로질러 현재 선택된 값의 위치를 알려줘요.

시·분 휠은 단위 접미사 없이 숫자만 보여주고, 단위는 오전·오후 칼럼과 선택 위치로 전달해요. (예: 오전 10 00 = 오전 10시 00분)

<TimePicker defaultValue={{ hour: 10, minute: 30 }} />

Properties

Minute Step

분 휠의 선택 간격을 정해요.

Minute Step선택지쓰임
100·01·02…59 (60칸)알람·타이머처럼 정확한 분이 필요할 때
5 (기본)00·05·10…55 (12칸)모임·약속 시간 등 대부분
1000·10·20…50 (6칸)느슨한 시간대 선택
1500·15·30·45 (4칸)예약 슬롯 (15분 단위)
3000·30 (2칸)영업시간·예약 슬롯 (30분 단위)

간격이 넓을수록 빠르게 선택할 수 있고, 좁을수록 정밀해져요. 선택된 분이 간격에 맞지 않으면 시각 전체를 기준으로 가장 가까운 값으로 반올림해요. (예: Minute Step 5에서 9시 13분 → 9시 15분, 23시 59분 → 0시 0분)

State

Enabled와 Disabled 상태를 가져요. disabled 를 사용하면 모든 컬럼을 조작하거나 포커스할 수 없어요.

Value

value 와 onValueChange 로 선택한 시간을 제어해요. 12시간제 UI지만 값은 오전·오후를 나누지 않은 24시간 형식 { hour, minute } 이에요. onValueChange 는 스크롤이 정착해 값이 확정됐을 때 호출돼요.

분 컬럼은 순환하지만 경계를 넘어도 시는 유지돼요. 예를 들어 10시 55분에서 다음 항목인 00을 고르면 10시 00분이 돼요.

Locale

locale 에 따라 오전·오후와 숫자 표기, 컬럼 순서가 달라져요. 전체와 각 컬럼의 기본 접근성 이름도 한국어, 영어, 일본어로 제공돼요.

Guidelines

Layout 선택하기

Time Picker가 화면에서 차지하는 비중과 플랫폼에 따라 Layout을 정해요.

  • Inline: 화면 흐름 안에 휠이 바로 펼쳐져요. 글쓰기·설정 플로우의 시간 단계에 사용해요.
  • Popover: 트리거를 누르면 트리거에 anchor된 패널로 떠올라요. 데스크탑 폼의 시간 입력 필드에 사용해요.
  • Sheet: 트리거를 누르면 화면 하단 시트로 올라와요. 모바일 폼의 시간 입력 필드에 사용해요.

Inline의 확정은 화면의 액션 영역(다음·완료 등)이, Popover·Sheet의 확정은 surface 안의 확인 버튼이 담당해요. Popover·Sheet에서는 사용자가 완료하기 전까지 임시 값을 관리하고, 확인 버튼을 누를 때 입력 필드에 반영해요.

진입 시 보여줄 시간

이미 선택된 시간이 있으면 그 값을, 없으면 00:00 을 가운데에 두고 열어요. 현재 시각에서 시작하려면 현재 시각을 defaultValue 로 전달해요. Minute Step에 맞게 자동으로 반올림돼요.

오후730
Do· 숫자만 표시

시·분 휠은 단위 없이 숫자만 보여줘요.

오후7시30분
Don't· 단위 접미사

단위를 반복하면 휠이 넓어지고 읽기 어려워요.

Date Picker와 함께 쓰기

날짜와 시간을 모두 받아야 할 때는 Date Picker 와 Time Picker를 함께 배치해요. 두 컴포넌트는 Layout 어휘(Inline·Popover·Sheet)를 공유하므로 함께 두기 좋아요. 꼭 같은 형태일 필요는 없고, 각자 화면에서의 비중에 맞는 Layout을 골라요. 날짜 선택의 동작·가이드는 Date Picker가 담당하고, Time Picker는 시간 선택만 책임져요.

Accessibility

Time Picker 전체는 group, 오전·오후·시·분 컬럼은 각각 spinbutton 으로 제공돼요. ArrowUp · ArrowDown 으로 이전·다음 항목을, Home · End 로 처음·마지막 항목을 선택해요. aria-labelledby 를 제공하지 않으면 전체 컴포넌트의 이름은 "시간 선택" 이에요.

Props

Prop

Type

On this page