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;
}

또는 래퍼 클래스를 사용하여 특정 인스턴스에 대한 재정의 범위를 지정할 수 있습니다:

.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기본 호버 상태
--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밝은 테두리 (팝업, 선택)
--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중간 반경 (버튼, 선택)
--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-index

변수기본값설명
--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>
);
}

사용자 지정 글꼴 (세리프)

글꼴은 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>
);
}

각진 모서리 (테두리 반경 없음)

모든 테두리 반경 변수를 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>
);
}