Loading...
Installation
Usage
import { UniversalDatePicker } from "@/components/ruixen/universal-date-picker";
import { useState } from "react";
import { DateRange } from "react-day-picker";
export default function App() {
const [selectedSingle, setSelectedSingle] = useState<Date>();
const [selectedRange, setSelectedRange] = useState<DateRange>();
return (
<div className="space-y-6">
<UniversalDatePicker
mode="single"
selected={selectedSingle}
onChange={(value) => {
if (value instanceof Date || value === undefined) {
setSelectedSingle(value);
}
}}
label="Pick a single date"
/>
<UniversalDatePicker
mode="range"
selected={selectedRange}
onChange={(value) => {
if (!value || ("from" in value && "to" in value)) {
setSelectedRange(value as DateRange);
}
}}
label="Pick a date range"
/>
</div>
);
}
Props
Prop | Type | Default | Description |
---|---|---|---|
mode | "single" | "range" | "single" | Date selection mode |
onChange | (date: Date | DateRange | undefined) => void | - | Callback when date changes |
selected | Date | DateRange | - | Currently selected date(s) |
className | string | - | Additional CSS classes |
presets | Preset[] | - | Custom preset options |
label | string | "Date picker" | Label for the picker |
Features
- Mode Toggle: Switch between single and range selection
- Preset Shortcuts: Quick access to common date ranges
- Year Selector: Fast navigation to any year
- Popover Interface: Clean, non-intrusive UI
- Custom Presets: Define your own preset date ranges
- Responsive Design: Works on all devices