Zmienne CSS

Pakiet styled używa niestandardowych właściwości CSS (zmiennych) dla wszystkich wartości wizualnych. Zastąp je w .rdrp-root lub dowolnym elemencie nadrzędnym, aby dostosować wygląd bez dotykania kodu komponentu.

Jak nadpisywać

Wszystkie zmienne są zdefiniowane w zakresie .rdrp-root. Nadpisz je w swoim własnym CSS:

/* Twój niestandardowy motyw */
.rdrp-root {
--rdrp-color-primary: #8b5cf6;
--rdrp-color-primary-hover: #7c3aed;
--rdrp-border-radius-lg: 12px;
}

Lub ogranicz nadpisania do konkretnej instancji, używając klasy otaczającej:

.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>

Referencja zmiennych

Kolory

ZmiennaDomyślnie (Jasny)Opis
--rdrp-color-primary#3b82f6Główny kolor akcji (wybrany dzień, przycisk potwierdzenia)
--rdrp-color-primary-hover#2563ebStan hover dla głównego koloru
--rdrp-color-primary-light#dbeafeTło zakresu, jasny akcent główny
--rdrp-color-primary-lighter#eff6ffTło aktywnego presetu
--rdrp-color-primary-disabled#93c5fdNieaktywny przycisk potwierdzenia
--rdrp-color-bg#ffffffKolor tła
--rdrp-color-bg-hover#f3f4f6Tło hover dla dni, przycisków
--rdrp-color-bg-subtle#f9fafbSubtelne tło
--rdrp-color-text#374151Domyślny kolor tekstu
--rdrp-color-text-strong#111827Mocny tekst (tytuły, aktywny czas)
--rdrp-color-text-muted#6b7280Wyciszony tekst (przyciski nawigacyjne, etykiety)
--rdrp-color-text-placeholder#6b7280Tekst zastępczy
--rdrp-color-text-disabled#d1d5dbTekst nieaktywnego dnia
--rdrp-color-text-outside#9ca3afDni poza miesiącem
--rdrp-color-text-inverse#ffffffTekst na tłach w głównym kolorze
--rdrp-color-text-danger#ef4444Tekst przycisku czyszczenia/niebezpieczeństwa
--rdrp-color-text-today#2563ebKolor wskaźnika dzisiejszego dnia
--rdrp-color-border#d1d5dbDomyślne obramowanie
--rdrp-color-border-light#e5e7ebJasne obramowanie (popup, selecty)
--rdrp-color-border-subtle#f3f4f6Subtelne obramowanie (stopka, presety)
--rdrp-color-border-hover#93c5fdStan hover obramowania
--rdrp-color-highlight-dot#f59e0bKolor kropki wyróżnienia
--rdrp-highlight-dot-size4pxŚrednica kropki wyróżnienia
--rdrp-color-range-bg#dbeafeTło dnia w zakresie
--rdrp-color-hover-range-bg#eff6ffTło podglądu zakresu przy najechaniu
--rdrp-color-hover-target-bg#bfdbfeTło punktu końcowego przy najechaniu
--rdrp-color-time-highlightrgba(59, 130, 246, 0.08)Pasek wyróżnienia panelu czasu

Typografia

ZmiennaDomyślnieOpis
--rdrp-font-familySystem font stackRodzina czcionek
--rdrp-font-size-xs11pxBardzo mały (nagłówek dnia tygodnia w małym rozmiarze)
--rdrp-font-size-sm12pxMały (nagłówki dni tygodnia, etykiety)
--rdrp-font-size-base13pxPodstawowy (komórki dni, przyciski)
--rdrp-font-size-md14pxŚredni (wyzwalacz, elementy czasu)
--rdrp-font-size-lg15pxDuży (tytuł nagłówka)
--rdrp-font-weight-normal400Normalna grubość
--rdrp-font-weight-medium500Średnia grubość
--rdrp-font-weight-semibold600Półgruba grubość
--rdrp-font-weight-bold700Gruba grubość (wskaźnik dzisiejszego dnia)

Odstępy

ZmiennaDomyślnieOpis
--rdrp-spacing-xs2pxBardzo mały odstęp
--rdrp-spacing-sm4pxMały odstęp
--rdrp-spacing-md8pxŚredni odstęp
--rdrp-spacing-lg12pxDuży odstęp
--rdrp-spacing-xl16pxBardzo duży odstęp
--rdrp-spacing-2xl24px2x bardzo duży odstęp

Obramowania

ZmiennaDomyślnieOpis
--rdrp-border-radius-sm4pxMały promień
--rdrp-border-radius-md6pxŚredni promień (przyciski, selecty)
--rdrp-border-radius-lg8pxDuży promień (dni, wyzwalacz)
--rdrp-border-radius-xl12pxBardzo duży promień (popup)
--rdrp-border-radius-full9999pxPełny promień (kropka wyróżnienia)
--rdrp-border-width1pxSzerokość obramowania

Cienie

ZmiennaDomyślnieOpis
--rdrp-shadow-popup0 10px 25px rgba(0,0,0,0.1)Cień okna popup
--rdrp-shadow-inline0 4px 12px rgba(0,0,0,0.06)Cień trybu inline
--rdrp-shadow-sm0 2px 6px rgba(0,0,0,0.04)Mały cień

Rozmiary

ZmiennaDomyślnieOpis
--rdrp-cell-size36pxSzerokość/wysokość komórki dnia
--rdrp-nav-btn-size28pxRozmiar przycisku nawigacyjnego
--rdrp-weekday-height28pxWysokość wiersza nagłówka dni tygodnia
--rdrp-grid-min-height216pxMinimalna wysokość siatki kalendarza
--rdrp-panel-min-width252pxSzerokość pojedynczego panelu kalendarza
--rdrp-dual-gap24pxOdstęp między podwójnymi kalendarzami
--rdrp-trigger-min-width200pxMinimalna szerokość przycisku wyzwalającego
--rdrp-trigger-padding-x14pxPoziomy padding wyzwalacza
--rdrp-trigger-padding-y8pxPionowy padding wyzwalacza
--rdrp-popup-padding16pxWewnętrzny padding okna popup
--rdrp-popup-gap6pxOdstęp zawartości okna popup
--rdrp-btn-padding-x14pxPoziomy padding przycisku stopki
--rdrp-btn-padding-y6pxPionowy padding przycisku stopki
--rdrp-preset-min-width140pxMinimalna szerokość paska bocznego presetów

Wybór czasu

ZmiennaDomyślnieOpis
--rdrp-time-item-height32pxWysokość elementu przewijania czasu
--rdrp-time-panel-height176pxCałkowita wysokość panelu czasu
--rdrp-time-column-height160pxWysokość kolumny przewijalnej
--rdrp-time-panel-min-width120pxMinimalna szerokość panelu czasu
--rdrp-time-colon-width12pxSzerokość separatora dwukropka

Z-index

ZmiennaDomyślnieOpis
--rdrp-z-popup50z-index okna popup
--rdrp-z-day-button20z-index aktywnego dnia

Przejścia

ZmiennaDomyślnieOpis
--rdrp-transition-fast0.1sSzybkie przejścia (najechanie na dzień)
--rdrp-transition-normal0.15sNormalne przejścia (wyzwalacz, przyciski)

Przykłady na żywo

Niestandardowe kolory (motyw fioletowy)

Nadpisz zmienne kolorów podstawowych, aby stworzyć zupełnie inny schemat kolorów. Ten przykład używa DatePicker z odcieniami fioletu.

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

Niestandardowa czcionka (szeryfowa)

Czcionki są dziedziczone kaskadowo w CSS, więc opakowanie komponentu w div z niestandardową font-family zastosuje ją do całego tekstu. Ten przykład używa DateRangePicker z czcionką szeryfową Georgia.

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

Ostre rogi (bez zaokrąglenia)

Ustaw wszystkie zmienne border-radius na 0px, aby uzyskać całkowicie kwadratowy wygląd.

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

Niestandardowy rozmiar za pomocą zmiennych CSS

Zamiast używać wbudowanego propa size, nadpisz poszczególne zmienne rozmiaru, aby uzyskać precyzyjną kontrolę. Ten przykład używa DateRangePicker z niestandardowym rozmiarem komórek i czcionek.

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