Sizes

The styled package includes 4 built-in size variants that scale typography, spacing, cell dimensions, and trigger dimensions proportionally.

Available Sizes

SizeCell SizeFont BaseTrigger Min Width
small28px11px160px
medium36px13px200px
large44px14px240px
x-large52px15px280px

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.