Components

DatePicker

사용 예시

마감일

Field로 감싸면 FieldLabel이 트리거의 이름이 돼요. 달을 넘겨도 값은 그대로이고, 날짜를 누르면 값을 바꾸고 닫혀요.

마감일이 지나면 목록에 표시돼요.

tsx
<Field className="w-64">  <FieldLabel>마감일</FieldLabel>  <DatePicker value={due} onValueChange={setDue} />  <FieldHelp>마감일이 지나면 목록에 표시돼요.</FieldHelp></Field>

고르지 않은 상태

값이 null이면 placeholder가 보여요. 달력은 오늘이 있는 달로 열려요.

tsx
<Field className="w-64">  <FieldLabel>시작일</FieldLabel>  <DatePicker value={start} onValueChange={setStart} placeholder="시작일을 고르세요" /></Field>

고를 수 있는 범위

시작일보다 앞선 마감일처럼 고르면 안 되는 날짜를 min과 max로 막아요.

11월 10일부터 11월 20일까지 고를 수 있어요.

tsx
<Field className="w-64">  <FieldLabel>마감일</FieldLabel>  <DatePicker value={due} onValueChange={setDue} min="2026-11-10" max="2026-11-20" />  <FieldHelp>11월 10일부터 11월 20일까지 고를 수 있어요.</FieldHelp></Field>

표시 형식

연도가 뻔한 화면에서는 format으로 짧게 보여요. 값은 그대로 YYYY-MM-DD예요.

tsx
<Field className="w-64">  <FieldLabel>마감일</FieldLabel>  <DatePicker value={due} onValueChange={setDue} format={monthDayWeekday} /></Field>

오류

Field에 invalid를 주면 트리거에 빨간 링이 보이고 스크린 리더가 오류 상태를 읽어요.

마감일은 시작일 뒤여야 해요. 11월 2일 이후로 고르세요.

tsx
<Field invalid className="w-64">  <FieldLabel>마감일</FieldLabel>  <DatePicker defaultValue="2026-11-01" />  <FieldError match>마감일은 시작일 뒤여야 해요. 11월 2일 이후로 고르세요.</FieldError></Field>

유형

surface

폼에서는 bare나 well, 표 셀과 헤더에서 값을 바로 고칠 때는 ghost를 써요.

tsx
<DatePicker surface="bare" defaultValue="2026-11-14" aria-label="bare" /><DatePicker surface="well" defaultValue="2026-11-14" aria-label="well" /><DatePicker surface="ghost" defaultValue="2026-11-14" aria-label="ghost" />

size

함께 놓인 Input과 같은 크기를 써요.

tsx
<DatePicker size="sm" defaultValue="2026-11-14" aria-label="sm" /><DatePicker size="md" defaultValue="2026-11-14" aria-label="md" /><DatePicker size="lg" defaultValue="2026-11-14" aria-label="lg" />

컨트롤

값"2026-11-14"
tsx
<DatePicker value={date} onValueChange={setDate} aria-label="날짜" />

명세

이름
이름값기본
valuestring | null-
고른 날짜예요. YYYY-MM-DD 글자 값이고 고르지 않은 상태는 null이에요.
defaultValuestring | nullnull
처음에 고를 날짜를 정해요.
onValueChange(value: string) => void-
날짜를 고르면 호출돼요. 이미 고른 날짜를 다시 누르면 호출되지 않아요.
minstring-
고를 수 있는 첫 날짜예요.
maxstring-
고를 수 있는 마지막 날짜예요.
todaystring브라우저의 오늘
오늘로 표시할 날짜예요. 서버 시간대를 따라야 할 때 넘겨요.
format(day: string) => ReactNodeYYYY년 M월 D일
트리거에 보일 글자를 정해요.
placeholderstring날짜를 고르세요
고르지 않은 상태에 보여요.
titlestring날짜 고르기
BottomSheet의 제목이고 Popover의 이름이에요.
surfacebare, well, ghostbare
Input의 surface와 같아요.
sizesm, md, lgmd
높이가 32, 36, 40px이에요.
disabledbooleanfalse
aria-labelstring-
Field 밖에서 쓸 때 이름을 정해요.
classNamestring-
트리거에 적용돼요. 폭은 wrapper로 정해요.