ตัวแปร CSS

แพ็คเกจ styled ใช้คุณสมบัติ CSS ที่กำหนดเอง (ตัวแปร) สำหรับค่าที่มองเห็นได้ทั้งหมด สามารถปรับแต่งค่าเหล่านี้ได้บน .rdrp-root หรือองค์ประกอบแม่ใดๆ เพื่อปรับแต่งลักษณะที่ปรากฏโดยไม่ต้องแก้ไขโค้ดของคอมโพเนนต์

วิธีการปรับแต่งค่า

ตัวแปรทั้งหมดถูกกำหนดขอบเขตภายใต้ .rdrp-root สามารถปรับแต่งค่าได้ในไฟล์ CSS ของคุณเอง:

/* ธีมที่คุณกำหนดเอง */
.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สถานะ 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พื้นหลัง hover สำหรับวัน, ปุ่ม
--rdrp-color-bg-subtle#f9fafbพื้นหลังแบบเรียบง่าย
--rdrp-color-text#374151สีข้อความเริ่มต้น
--rdrp-color-text-strong#111827ข้อความเข้ม (หัวข้อ, เวลาที่ใช้งาน)
--rdrp-color-text-muted#6b7280ข้อความแบบเบา (ปุ่มนำทาง, ป้ายกำกับ)
--rdrp-color-text-placeholder#6b7280ข้อความ Placeholder
--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สถานะ hover ของเส้นขอบ
--rdrp-color-highlight-dot#f59e0bสีจุดไฮไลท์
--rdrp-highlight-dot-size4pxเส้นผ่านศูนย์กลางจุดไฮไลท์
--rdrp-color-range-bg#dbeafeพื้นหลังของวันที่อยู่ในช่วง
--rdrp-color-hover-range-bg#eff6ffพื้นหลังแสดงตัวอย่างช่วงที่ hover
--rdrp-color-hover-target-bg#bfdbfeพื้นหลังจุดสิ้นสุดที่ hover
--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-2xl24pxระยะห่างใหญ่พิเศษ 2 เท่า

เส้นขอบ

ตัวแปรค่าเริ่มต้นคำอธิบาย
--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-x14pxPadding แนวนอนของทริกเกอร์
--rdrp-trigger-padding-y8pxPadding แนวตั้งของทริกเกอร์
--rdrp-popup-padding16pxPadding ภายในของป๊อปอัป
--rdrp-popup-gap6pxช่องว่างเนื้อหาของป๊อปอัป
--rdrp-btn-padding-x14pxPadding แนวนอนของปุ่มส่วนท้าย
--rdrp-btn-padding-y6pxPadding แนวตั้งของปุ่มส่วนท้าย
--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-popup50z-index ของป๊อปอัป
--rdrp-z-day-button20z-index ของวันที่ถูกโฟกัส

การเปลี่ยนผ่าน

ตัวแปรค่าเริ่มต้นคำอธิบาย
--rdrp-transition-fast0.1sการเปลี่ยนผ่านที่รวดเร็ว (hover บนวัน)
--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 ดังนั้นการครอบตัวเลือกด้วย div ที่มี font-family ที่กำหนดเองจะนำไปใช้กับข้อความทั้งหมด ตัวอย่างนี้ใช้ DateRangePicker กับฟอนต์ Georgia serif

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

แทนที่จะใช้ prop size ที่มีมาให้, สามารถปรับแต่งค่าตัวแปรขนาดแต่ละตัวเพื่อการควบคุมที่แม่นยำยิ่งขึ้น ตัวอย่างนี้ใช้ 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>
);
}