커스텀 푸터
푸터 재배치
푸터 버튼을 재배치하거나 TodayButton과 같은 새로운 버튼을 추가하세요. 각 버튼은 독립적인 컴파운드 컴포넌트(compound part)이므로, 순서와 레이아웃을 직접 제어할 수 있습니다.
import { useState } from "react";import { DateTimePicker } from "react-date-range-picker-tailwind4";
function CompoundCustomFooter() { const [value, setValue] = useState<Date | null>(null);
return ( <DateTimePicker.Root value={value} onChange={setValue}> <DateTimePicker.Trigger /> <DateTimePicker.Content> <DateTimePicker.Header> <DateTimePicker.PrevButton /> <DateTimePicker.Title /> <DateTimePicker.NextButton /> </DateTimePicker.Header> <DateTimePicker.Grid /> <DateTimePicker.TimeSection> <DateTimePicker.TimePanel target="single" /> </DateTimePicker.TimeSection> <DateTimePicker.Footer> <DateTimePicker.TodayButton /> <div style={{ flex: 1 }} /> <DateTimePicker.CancelButton /> <DateTimePicker.ConfirmButton /> </DateTimePicker.Footer> </DateTimePicker.Content> </DateTimePicker.Root> );}미니멀 레이아웃
필요 없는 부분은 생략하세요. 예를 들어, 미니멀한 팝업 캘린더를 위해 푸터 전체를 제외할 수 있습니다:
import { useState } from "react";import { DatePicker } from "react-date-range-picker-tailwind4";
function CompoundNoFooter() { const [value, setValue] = useState<Date | null>(null);
return ( <DatePicker.Root value={value} onChange={setValue}> <DatePicker.Trigger /> <DatePicker.Content> <DatePicker.Header> <DatePicker.PrevButton /> <DatePicker.Title /> <DatePicker.NextButton /> </DatePicker.Header> <DatePicker.Grid /> </DatePicker.Content> </DatePicker.Root> );}클래스 오버라이딩
모든 컴파운드 컴포넌트는 className prop을 허용합니다. Tailwind v4 패키지는 cn()(clsx + twMerge 유틸리티)을 사용하여 사용자의 클래스를 기본값과 병합하므로, 충돌하는 유틸리티가 올바르게 해결됩니다:
import { DatePicker } from "react-date-range-picker-tailwind4";
<DatePicker.Root value={value} onChange={setValue}> {/* Override trigger width and padding */} <DatePicker.Trigger className="min-w-[300px] px-4 py-3" /> <DatePicker.Content className="rounded-2xl shadow-xl"> <DatePicker.Header> <DatePicker.PrevButton /> <DatePicker.Title className="text-lg" /> <DatePicker.NextButton /> </DatePicker.Header> <DatePicker.Grid /> </DatePicker.Content></DatePicker.Root>;