Sizes
The styled package includes 4 built-in size variants that scale typography, spacing, cell dimensions, and trigger dimensions proportionally.
Available Sizes
| Size | Cell Size | Font Base | Trigger Min Width |
|---|---|---|---|
small | 28px | 11px | 160px |
medium | 36px | 13px | 200px |
large | 44px | 14px | 240px |
x-large | 52px | 15px | 280px |
medium is the default.
Usage
Pass the size prop to any picker component:
import { useState } from "react";import { DatePicker } from "react-date-range-picker-styled";import "react-date-range-picker-styled/rdrp-styles.css";import type { DatePickerSize } from "react-date-range-picker-headless";
const sizes: DatePickerSize[] = ["small", "medium", "large", "x-large"];
function Sizes() { const [values, setValues] = useState<Record<DatePickerSize, Date | null>>({ small: null, medium: null, large: null, "x-large": null, });
return ( <div style={{ display: "flex", flexDirection: "column", gap: 20 }}> {sizes.map((size) => ( <div key={size} style={{ display: "flex", alignItems: "center", gap: 12 }}> <span style={{ width: 60, fontSize: 13, fontWeight: 600, opacity: 0.5, flexShrink: 0 }}> {size} </span> <DatePicker value={values[size]} onChange={(date) => setValues((prev) => ({ ...prev, [size]: date }))} size={size} /> </div> ))} </div> );}small
medium
large
x-large
What Changes Per Size
Each size variant overrides a set of CSS variables via a class (e.g. rdrp-size-small). Here’s what each size adjusts:
Small
.rdrp-size-small { --rdrp-cell-size: 28px; --rdrp-nav-btn-size: 24px; --rdrp-weekday-height: 24px; --rdrp-grid-min-height: 168px; --rdrp-panel-min-width: 196px; --rdrp-dual-gap: 16px;
--rdrp-font-size-xs: 10px; --rdrp-font-size-sm: 11px; --rdrp-font-size-base: 11px; --rdrp-font-size-md: 12px; --rdrp-font-size-lg: 13px;
--rdrp-trigger-min-width: 160px; --rdrp-trigger-padding-x: 10px; --rdrp-trigger-padding-y: 6px; --rdrp-popup-padding: 12px;
--rdrp-btn-padding-x: 10px; --rdrp-btn-padding-y: 4px;
--rdrp-spacing-lg: 8px; --rdrp-spacing-xl: 12px;
--rdrp-time-item-height: 28px; --rdrp-time-panel-height: 148px; --rdrp-time-column-height: 132px; --rdrp-time-panel-min-width: 100px; --rdrp-time-picker-content-min-width: 210px;
--rdrp-preset-min-width: 110px;}Large
.rdrp-size-large { --rdrp-cell-size: 44px; --rdrp-nav-btn-size: 32px; --rdrp-weekday-height: 32px; --rdrp-grid-min-height: 264px; --rdrp-panel-min-width: 308px; --rdrp-dual-gap: 28px;
--rdrp-font-size-xs: 12px; --rdrp-font-size-sm: 13px; --rdrp-font-size-base: 14px; --rdrp-font-size-md: 15px; --rdrp-font-size-lg: 16px;
--rdrp-trigger-min-width: 240px; --rdrp-trigger-padding-x: 16px; --rdrp-trigger-padding-y: 10px; --rdrp-popup-padding: 20px;
--rdrp-btn-padding-x: 16px; --rdrp-btn-padding-y: 8px;
--rdrp-spacing-lg: 16px; --rdrp-spacing-xl: 20px;
--rdrp-time-item-height: 36px; --rdrp-time-panel-height: 196px; --rdrp-time-column-height: 180px; --rdrp-time-panel-min-width: 140px; --rdrp-time-picker-content-min-width: 290px;
--rdrp-preset-min-width: 160px;}X-Large
.rdrp-size-x-large { --rdrp-cell-size: 52px; --rdrp-nav-btn-size: 36px; --rdrp-weekday-height: 36px; --rdrp-grid-min-height: 312px; --rdrp-panel-min-width: 364px; --rdrp-dual-gap: 32px;
--rdrp-font-size-xs: 13px; --rdrp-font-size-sm: 14px; --rdrp-font-size-base: 15px; --rdrp-font-size-md: 16px; --rdrp-font-size-lg: 18px;
--rdrp-trigger-min-width: 280px; --rdrp-trigger-padding-x: 20px; --rdrp-trigger-padding-y: 12px; --rdrp-popup-padding: 24px;
--rdrp-btn-padding-x: 20px; --rdrp-btn-padding-y: 10px;
--rdrp-spacing-lg: 20px; --rdrp-spacing-xl: 24px;
--rdrp-time-item-height: 40px; --rdrp-time-panel-height: 216px; --rdrp-time-column-height: 200px; --rdrp-time-panel-min-width: 160px;
--rdrp-preset-min-width: 180px;}Custom Sizes
Create your own size by defining a CSS class that overrides the sizing variables:
.rdrp-size-custom { --rdrp-cell-size: 40px; --rdrp-nav-btn-size: 30px; --rdrp-font-size-base: 14px; --rdrp-font-size-md: 15px; --rdrp-trigger-min-width: 220px; --rdrp-popup-padding: 18px;}Then apply it via a wrapper:
<div className="rdrp-size-custom"> <DatePicker value={value} onChange={setValue} /></div>Or with the Compound Component API, add the class to Root:
<DatePicker.Root value={value} onChange={setValue} className="rdrp-size-custom"> {/* ... */}</DatePicker.Root>You can also override sizing variables via inline styles:
import { useState } from "react";import { DatePicker } from "react-date-range-picker-styled";import "react-date-range-picker-styled/rdrp-styles.css";
function CustomSizeViaCSS() { const [value, setValue] = useState<Date | null>(null);
return ( <div style={{ ["--rdrp-cell-size" as string]: "44px", ["--rdrp-font-size-base" as string]: "15px", ["--rdrp-font-size-md" as string]: "16px", ["--rdrp-font-size-lg" as string]: "18px", ["--rdrp-nav-btn-size" as string]: "34px", ["--rdrp-trigger-padding-x" as string]: "18px", ["--rdrp-trigger-padding-y" as string]: "12px", }} > <DatePicker value={value} onChange={setValue} /> </div> );} 💡 Tip
The medium size is the default and doesn’t apply any overrides. The base variables in
variables.css are the medium values.