Modern, customizable, and user-friendly React DatePicker component with dark mode and multi-language support.
- β Modern and elegant design
- β Dark Mode - Full dark mode support
- β 11 Language Support - English, Turkish, German, French, Spanish, Italian, Portuguese, Russian, Japanese, Chinese, Arabic
- β Theme System - 4 preset themes + custom theme support
- β Storybook - Interactive component showcase
- β API Documentation - Complete API reference
- β Test Coverage - 90+ unit tests
- β Date selection
- β Date and time selection
- β Date range selection (DateRangePicker)
- β Min/Max date constraints
- β Time Picker (TimePicker)
- β Disableable
- β TypeScript support
- β Fully customizable
- β Responsive design
npm install react-datepicker-bkrdmrcioglu
# or
yarn add react-datepicker-bkrdmrcioglu
# or
pnpm add react-datepicker-bkrdmrcioglu- React 16.8+
- React DOM 16.8+
The component comes with its own CSS. Import it in your root layout or entry file:
import 'react-datepicker-bkrdmrcioglu/dist/style.css';npm install
npm run devOpen http://localhost:3000 in your browser.
import { DatePicker } from 'react-datepicker-bkrdmrcioglu';
import { useState } from 'react';
function MyComponent() {
const [date, setDate] = useState<Date | null>(null);
return (
<DatePicker
value={date}
onChange={setDate}
language="en" // Default: 'en'
/>
);
}import { DatePicker } from 'react-datepicker-bkrdmrcioglu';
import type { Language } from 'react-datepicker-bkrdmrcioglu';
// English (default)
<DatePicker language="en" />
// Turkish
<DatePicker language="tr" />
// German
<DatePicker language="de" />
// French
<DatePicker language="fr" />
// Spanish
<DatePicker language="es" />
// Italian
<DatePicker language="it" />
// Portuguese
<DatePicker language="pt" />
// Russian
<DatePicker language="ru" />
// Japanese
<DatePicker language="ja" />
// Chinese
<DatePicker language="zh" />
// Arabic
<DatePicker language="ar" /><DatePicker
value={date}
onChange={setDate}
showTime={true}
placeholder="Select date and time..."
/>const minDate = new Date();
minDate.setDate(minDate.getDate() - 7);
const maxDate = new Date();
maxDate.setDate(maxDate.getDate() + 30);
<DatePicker
value={date}
onChange={setDate}
minDate={minDate}
maxDate={maxDate}
/>import { DateRangePicker } from 'react-datepicker-bkrdmrcioglu';
import { useState } from 'react';
function MyComponent() {
const [startDate, setStartDate] = useState<Date | null>(null);
const [endDate, setEndDate] = useState<Date | null>(null);
return (
<DateRangePicker
startDate={startDate}
endDate={endDate}
onChange={(start, end) => {
setStartDate(start);
setEndDate(end);
}}
/>
);
}import { TimePicker } from 'react-datepicker-bkrdmrcioglu';
import { useState } from 'react';
function MyComponent() {
const [time, setTime] = useState<string | null>(null);
return (
<TimePicker
value={time}
onChange={setTime}
placeholder="Select time..."
/>
);
}| Prop | Type | Default | Description |
|---|---|---|---|
value |
Date | null |
undefined |
Selected date |
onChange |
(date: Date | null) => void |
undefined |
Called when date changes |
placeholder |
string |
"Select date..." |
Input placeholder text |
minDate |
Date |
undefined |
Minimum selectable date |
maxDate |
Date |
undefined |
Maximum selectable date |
disabled |
boolean |
false |
Disable the picker |
className |
string |
"" |
Additional CSS classes |
showTime |
boolean |
false |
Show time selection |
format |
string |
"DD/MM/YYYY" |
Date format |
language |
Language |
"en" |
Language selection (en, tr, de, fr, es, it, pt, ru, ja, zh, ar) |
| Prop | Type | Default | Description |
|---|---|---|---|
startDate |
Date | null |
undefined |
Start date |
endDate |
Date | null |
undefined |
End date |
onChange |
(start: Date | null, end: Date | null) => void |
undefined |
Called when dates change |
placeholder |
string |
"Select date range..." |
Placeholder text |
minDate |
Date |
undefined |
Minimum selectable date |
maxDate |
Date |
undefined |
Maximum selectable date |
disabled |
boolean |
false |
Disable the picker |
className |
string |
"" |
Additional CSS classes |
| Prop | Type | Default | Description |
|---|---|---|---|
value |
string | null |
undefined |
Selected time (HH:MM) |
onChange |
(time: string | null) => void |
undefined |
Called when time changes |
placeholder |
string |
"Select time..." |
Placeholder text |
disabled |
boolean |
false |
Disable the picker |
className |
string |
"" |
Additional CSS classes |
format |
"24h" | "12h" |
"24h" |
Time format (currently 24h) |
language |
Language |
"en" |
Language selection |
Components are highly customizable through props, themes, and CSS.
Dark mode is automatically set based on system preference or can be controlled manually using the DarkModeToggle component. All components support dark mode.
Important: You need to add the dark class to the HTML element for dark mode:
import { DarkModeToggle } from 'react-datepicker-bkrdmrcioglu';
function MyComponent() {
return <DarkModeToggle />;
}To manually control dark mode:
// Enable dark mode
document.documentElement.classList.add('dark');
// Disable dark mode
document.documentElement.classList.remove('dark');You can use the LanguageSelector component for language selection:
import { LanguageSelector, DatePicker } from 'react-datepicker-bkrdmrcioglu';
import type { Language } from 'react-datepicker-bkrdmrcioglu';
import { useState } from 'react';
function MyComponent() {
const [language, setLanguage] = useState<Language>('en');
return (
<>
<LanguageSelector value={language} onChange={setLanguage} />
<DatePicker language={language} />
</>
);
}Customize the appearance of DatePicker components using the built-in theme system:
import { ThemeProvider, DatePicker } from 'react-datepicker-bkrdmrcioglu';
function App() {
return (
<ThemeProvider defaultTheme="material">
<DatePicker value={date} onChange={setDate} />
</ThemeProvider>
);
}default- Clean and modern designmaterial- Google Material Design inspiredminimal- Simple and cleanglassmorphism- Modern glass effect
import { ThemeProvider } from 'react-datepicker-bkrdmrcioglu';
import type { Theme } from 'react-datepicker-bkrdmrcioglu';
const customTheme: Theme = {
name: 'Custom',
colors: {
primary: '#8b5cf6',
background: '#ffffff',
// ... other colors
},
// ... other theme properties
};
function App() {
return (
<ThemeProvider defaultTheme={customTheme}>
<DatePicker />
</ThemeProvider>
);
}- Live Demo: https://react-datepicker-mu.vercel.app
- API Reference:
/docs/api- Complete API documentation - Theme Playground:
/docs/themes- Interactive theme customization - Storybook: Run
npm run storybookfor interactive component showcase
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverageMIT License - Feel free to use it.
We welcome your contributions! Please open an issue or submit a pull request.
You can use GitHub Issues for your questions.
β If you liked this project, don't forget to give it a star!