커스텀 날짜 셀

GridDay 렌더 프롭(render props)을 사용하여 각 날짜의 렌더링 방식을 커스터마이즈하세요. 이를 통해 이벤트 표시기, 커스텀 스타일, 또는 개별 날짜 셀에 추가 콘텐츠를 넣을 수 있습니다.

import { useState } from "react";
import { DatePicker } from "react-date-range-picker-tailwind4";
const eventDates = new Set([5, 12, 18, 25]);
function CompoundCustomDay() {
const [value, setValue] = useState<Date | null>(null);
return (
<DatePicker.Root value={value} onChange={setValue} inline>
<DatePicker.Content>
<DatePicker.Header>
<DatePicker.PrevButton />
<DatePicker.Title />
<DatePicker.NextButton />
</DatePicker.Header>
<DatePicker.Grid>
{({ date }) => (
<DatePicker.Day date={date}>
{({ day, isDisabled, isSelected, isToday, onClick, onMouseEnter, onMouseLeave }) => (
<button
type="button"
onClick={onClick}
onMouseEnter={onMouseEnter}
onMouseLeave={onMouseLeave}
disabled={isDisabled}
style={{
display: "flex",
flexDirection: "column",
alignItems: "center",
justifyContent: "center",
width: 36,
height: 36,
border: "none",
borderRadius: 6,
cursor: isDisabled ? "default" : "pointer",
background: isSelected ? "#3b82f6" : "transparent",
color: isSelected ? "#fff" : isToday ? "#2563eb" : undefined,
fontWeight: isToday || isSelected ? 600 : 400,
fontSize: 13,
position: "relative",
}}
>
{day}
{eventDates.has(date.getDate()) && (
<span
style={{
position: "absolute",
bottom: 2,
width: 4,
height: 4,
borderRadius: "50%",
background: isSelected ? "#fff" : "#f59e0b",
}}
/>
)}
</button>
)}
</DatePicker.Day>
)}
</DatePicker.Grid>
</DatePicker.Content>
</DatePicker.Root>
);
}
March 2026
Su
Mo
Tu
We
Th
Fr
Sa

Day 렌더 프롭

Prop타입설명
dateDate날짜 객체
daynumber해당 월의 일 (1-31)
isTodayboolean오늘인지 여부
isSelectedboolean선택된 날짜인지 여부
isDisabledboolean비활성화된 날짜인지 여부
isInRangeboolean선택된 범위 내에 있는지 여부
isRangeStartboolean범위의 시작인지 여부
isRangeEndboolean범위의 끝인지 여부
isInHoverRangeboolean호버(hover) 미리보기 범위 내에 있는지 여부
isHoverTargetboolean호버(hover)의 끝점인지 여부
isOutsideDayboolean인접한 월에 속한 날짜인지 여부
isHighlightedboolean강조 표시(highlight) 점이 있는지 여부
isFocusedboolean키보드 포커스가 있는지 여부
onClick() => void클릭 핸들러
onMouseEnter() => void마우스 엔터(enter) 핸들러
onMouseLeave() => void마우스 리브(leave) 핸들러