CSS 변수

styled 패키지는 모든 시각적 값에 CSS 사용자 지정 속성(변수)을 사용합니다. .rdrp-root 또는 부모 요소에서 이를 재정의하여 컴포넌트 코드를 건드리지 않고도 모양을 커스터마이징할 수 있습니다.

재정의 방법

모든 변수는 .rdrp-root 아래에 스코프가 지정되어 있습니다. 자체 CSS에서 이를 재정의하세요:

/* Your custom theme */
.rdrp-root {
--rdrp-color-primary: #8b5cf6;
--rdrp-color-primary-hover: #7c3aed;
--rdrp-border-radius-lg: 12px;
}

또는 래퍼(wrapper) 클래스를 사용하여 특정 인스턴스에만 재정의를 적용할 수 있습니다:

.my-purple-picker .rdrp-root {
--rdrp-color-primary: #8b5cf6;
--rdrp-color-primary-hover: #7c3aed;
--rdrp-color-primary-light: #ede9fe;
--rdrp-color-primary-lighter: #f5f3ff;
}
<div className="my-purple-picker">
<DatePicker value={value} onChange={setValue} />
</div>

변수 참조

색상

변수기본값 (라이트)설명
--rdrp-color-primary#3b82f6기본 액션 색상 (선택된 날짜, 확인 버튼)
--rdrp-color-primary-hover#2563eb기본 호버(hover) 상태
--rdrp-color-primary-light#dbeafe범위 배경, 밝은 기본 강조 색상
--rdrp-color-primary-lighter#eff6ff활성화된 프리셋 배경
--rdrp-color-primary-disabled#93c5fd비활성화된 확인 버튼
--rdrp-color-bg#ffffff배경 색상
--rdrp-color-bg-hover#f3f4f6날짜, 버튼의 호버 배경
--rdrp-color-bg-subtle#f9fafb미세한 배경
--rdrp-color-text#374151기본 텍스트 색상
--rdrp-color-text-strong#111827강조 텍스트 (제목, 활성화된 시간)
--rdrp-color-text-muted#6b7280흐린 텍스트 (네비게이션 버튼, 라벨)
--rdrp-color-text-placeholder#6b7280플레이스홀더 텍스트
--rdrp-color-text-disabled#d1d5db비활성화된 날짜 텍스트
--rdrp-color-text-outside#9ca3af이전/다음 달의 날짜
--rdrp-color-text-inverse#ffffff기본 배경 위의 텍스트
--rdrp-color-text-danger#ef4444지우기/위험 버튼 텍스트
--rdrp-color-text-today#2563eb오늘 날짜 표시 색상
--rdrp-color-border#d1d5db기본 테두리
--rdrp-color-border-light#e5e7eb밝은 테두리 (팝업, select 요소)
--rdrp-color-border-subtle#f3f4f6미세한 테두리 (푸터, 프리셋)
--rdrp-color-border-hover#93c5fd테두리 호버 상태
--rdrp-color-highlight-dot#f59e0b강조 점 색상
--rdrp-highlight-dot-size4px강조 점 지름
--rdrp-color-range-bg#dbeafe범위 내 날짜 배경
--rdrp-color-hover-range-bg#eff6ff호버 시 범위 미리보기 배경
--rdrp-color-hover-target-bg#bfdbfe호버 시 끝점 배경
--rdrp-color-time-highlightrgba(59, 130, 246, 0.08)시간 패널 강조 바

타이포그래피

변수기본값설명
--rdrp-font-familySystem font stack폰트 패밀리
--rdrp-font-size-xs11px아주 작음 (작은 크기의 요일 헤더)
--rdrp-font-size-sm12px작음 (요일 헤더, 라벨)
--rdrp-font-size-base13px기본 (날짜 셀, 버튼)
--rdrp-font-size-md14px중간 (트리거, 시간 항목)
--rdrp-font-size-lg15px큼 (헤더 제목)
--rdrp-font-weight-normal400보통 굵기
--rdrp-font-weight-medium500중간 굵기
--rdrp-font-weight-semibold600약간 굵은 굵기
--rdrp-font-weight-bold700굵은 굵기 (오늘 날짜 표시)

간격

변수기본값설명
--rdrp-spacing-xs2px아주 좁은 간격
--rdrp-spacing-sm4px좁은 간격
--rdrp-spacing-md8px중간 간격
--rdrp-spacing-lg12px넓은 간격
--rdrp-spacing-xl16px아주 넓은 간격
--rdrp-spacing-2xl24px2배 아주 넓은 간격

테두리

변수기본값설명
--rdrp-border-radius-sm4px작은 둥근 모서리
--rdrp-border-radius-md6px중간 둥근 모서리 (버튼, select 요소)
--rdrp-border-radius-lg8px큰 둥근 모서리 (날짜, 트리거)
--rdrp-border-radius-xl12px아주 큰 둥근 모서리 (팝업)
--rdrp-border-radius-full9999px완전한 둥근 모서리 (강조 점)
--rdrp-border-width1px테두리 두께

그림자

변수기본값설명
--rdrp-shadow-popup0 10px 25px rgba(0,0,0,0.1)팝업 그림자
--rdrp-shadow-inline0 4px 12px rgba(0,0,0,0.06)인라인 모드 그림자
--rdrp-shadow-sm0 2px 6px rgba(0,0,0,0.04)작은 그림자

크기

변수기본값설명
--rdrp-cell-size36px날짜 셀 너비/높이
--rdrp-nav-btn-size28px네비게이션 버튼 크기
--rdrp-weekday-height28px요일 헤더 행 높이
--rdrp-grid-min-height216px달력 그리드 최소 높이
--rdrp-panel-min-width252px단일 달력 패널 너비
--rdrp-dual-gap24px듀얼 달력 사이의 간격
--rdrp-trigger-min-width200px트리거 버튼 최소 너비
--rdrp-trigger-padding-x14px트리거 가로 패딩
--rdrp-trigger-padding-y8px트리거 세로 패딩
--rdrp-popup-padding16px팝업 내부 패딩
--rdrp-popup-gap6px팝업 콘텐츠 간격
--rdrp-btn-padding-x14px푸터 버튼 가로 패딩
--rdrp-btn-padding-y6px푸터 버튼 세로 패딩
--rdrp-preset-min-width140px프리셋 사이드바 최소 너비

시간 선택기

변수기본값설명
--rdrp-time-item-height32px시간 스크롤 항목 높이
--rdrp-time-panel-height176px시간 패널 전체 높이
--rdrp-time-column-height160px스크롤 가능한 열 높이
--rdrp-time-panel-min-width120px시간 패널 최소 너비
--rdrp-time-colon-width12px콜론 구분자 너비

Z-인덱스

변수기본값설명
--rdrp-z-popup50팝업 z-index
--rdrp-z-day-button20포커스된 날짜 z-index

트랜지션

변수기본값설명
--rdrp-transition-fast0.1s빠른 트랜지션 (날짜 호버)
--rdrp-transition-normal0.15s일반 트랜지션 (트리거, 버튼)

라이브 예제

커스텀 색상 (퍼플 테마)

기본 색상 변수를 재정의하여 완전히 다른 색상 체계를 만듭니다. 이 예제에서는 바이올렛/퍼플 톤의 DatePicker를 사용합니다.

import { useState } from "react";
import { DatePicker } from "react-date-range-picker-styled";
import "react-date-range-picker-styled/rdrp-styles.css";
function CustomColors() {
const [value, setValue] = useState<Date | null>(null);
return (
<div
style={
{
"--rdrp-color-primary": "#7c3aed",
"--rdrp-color-primary-hover": "#6d28d9",
"--rdrp-color-primary-light": "#ede9fe",
"--rdrp-color-primary-lighter": "#f5f3ff",
"--rdrp-color-primary-disabled": "#c4b5fd",
"--rdrp-color-text-today": "#7c3aed",
"--rdrp-color-border-hover": "#c4b5fd",
} as React.CSSProperties
}
>
<DatePicker value={value} onChange={setValue} />
</div>
);
}

커스텀 폰트 (Serif)

폰트는 CSS를 통해 캐스케이딩되므로 커스텀 font-family가 있는 div로 픽커를 감싸면 모든 텍스트에 적용됩니다. 이 예제에서는 Georgia 세리프 폰트를 사용한 DateRangePicker를 사용합니다.

import { useState } from "react";
import { DateRangePicker } from "react-date-range-picker-styled";
import "react-date-range-picker-styled/rdrp-styles.css";
function CustomFont() {
const [value, setValue] = useState<{ start: Date | null; end: Date | null }>({
start: null,
end: null,
});
return (
<div style={{ fontFamily: "'Georgia', serif" }}>
<DateRangePicker value={value} onChange={setValue} />
</div>
);
}

날카로운 모서리 (Border Radius 없음)

모든 border radius 변수를 0px로 설정하여 완전히 각진 모양을 만듭니다.

import { useState } from "react";
import { DatePicker } from "react-date-range-picker-styled";
import "react-date-range-picker-styled/rdrp-styles.css";
function CustomBorderRadius() {
const [value, setValue] = useState<Date | null>(null);
return (
<div
style={
{
"--rdrp-border-radius-sm": "0px",
"--rdrp-border-radius-md": "0px",
"--rdrp-border-radius-lg": "0px",
"--rdrp-border-radius-xl": "0px",
} as React.CSSProperties
}
>
<DatePicker value={value} onChange={setValue} />
</div>
);
}

CSS 변수를 통한 커스텀 크기 지정

내장된 size prop을 사용하는 대신, 개별 크기 지정 변수를 재정의하여 정밀하게 제어합니다. 이 예제에서는 커스텀 셀 크기와 폰트 크기를 적용한 DateRangePicker를 사용합니다.

import { useState } from "react";
import { DateRangePicker } from "react-date-range-picker-styled";
import "react-date-range-picker-styled/rdrp-styles.css";
function CustomSize() {
const [value, setValue] = useState<{ start: Date | null; end: Date | null }>({
start: null,
end: null,
});
return (
<div
style={
{
"--rdrp-cell-size": "44px",
"--rdrp-font-size-base": "15px",
"--rdrp-font-size-md": "16px",
"--rdrp-font-size-lg": "18px",
"--rdrp-spacing-sm": "6px",
"--rdrp-spacing-md": "10px",
"--rdrp-spacing-lg": "14px",
} as React.CSSProperties
}
>
<DateRangePicker value={value} onChange={setValue} />
</div>
);
}