ابزارهای توسعه
npm package
v1.2.0
MIT

Persian Date Kit

Date Picker شمسی جلالی برای React

کامپوننت Date Picker حرفه‌ای با نمایش جلالی و ذخیره‌سازی گرگوری. پشتیبانی از انتخاب تکی، بازه، چندتایی و Time Picker.

React
TypeScript
Jalali Calendar
SSR Safe
RTL First

ویژگی‌های کلیدی

هر چیزی که برای کار با تاریخ جلالی در React نیاز داری.

نمایش جلالی، ذخیره گرگوری

تمام مقادیر به صورت Date (گرگوری) مدیریت می‌شوند. جلالی فقط برای نمایش و ورودی کاربر استفاده می‌شود.

کامپوننت‌های کنترل شده

شما مالک state هستید. کامپوننت‌ها controlled هستند و با value و onChange کار می‌کنند.

انتخاب تکی و بازه

پشتیبانی از انتخاب یک تاریخ یا بازه زمانی با کامپوننت‌های جداگانه PersianDatePicker و PersianDateRangePicker.

Time Picker

امکان انتخاب زمان به همراه تاریخ با قابلیت تنظیم ساعت، دقیقه و ثانیه.

انتخاب چندتایی

قابلیت انتخاب چندین تاریخ در یک کامپوننت با محدودیت تعداد انتخابات.

Inline و Popover

دو حالت نمایش: inline (همیشه باز) و popover (با input و باز شدن با کلیک).

React Hook Form

اداپتر آماده برای اتصال به React Hook Form بدون نیاز به کد اضافی.

قابل سفارشی‌سازی

استایل‌دهی کامل با CSS variables و classes prop برای کنترل کامل بر ظاهر.

نصب و راه‌اندازی

شروع سریع با چند خط کد

bash
npm install persian-date-kit

سپس استایل‌های پیش‌فرض را import کنید:

typescript
import 'persian-date-kit/styles.css'

نمونه‌های لایو

تمام کامپوننت‌ها به صورت واقعی و قابل تعامل هستند

Single Date Picker

انتخاب یک تاریخ با نمایش جلالی و ذخیره‌سازی گرگوری

مقدار گرگوری: ۱۴۰۵/۳/۲۵
ISO String: 2026-06-15T09:40:01.692Z

مثال‌های استفاده

انواع مختلف استفاده از کامپوننت‌ها

Single Date Picker

انتخاب یک تاریخ با نمایش جلالی و ذخیره‌سازی گرگوری

typescript
import { useState } from 'react'
import { PersianDatePicker } from 'persian-date-kit'
import 'persian-date-kit/styles.css'

const monthLabels = [
  'فروردین', 'اردیبهشت', 'خرداد', 'تیر',
  'مرداد', 'شهریور', 'مهر', 'آبان',
  'آذر', 'دی', 'بهمن', 'اسفند',
]

export function Example() {
  const [value, setValue] = useState<Date | null>(new Date())

  return (
    <PersianDatePicker
      value={value}
      onChange={setValue}
      placeholder="YYYY/MM/DD"
      monthLabels={monthLabels}
      weekdays={['ش', 'ی', 'د', 'س', 'چ', 'پ', 'ج']}
      minDate={new Date(2020, 0, 1)}
      maxDate={new Date(2030, 11, 31)}
    />
  )
}

مستندات Props

تمام props و تنظیمات قابل استفاده

PropTypeDefaultDescription
valueDate | null | Date[]مقدار کنترل شده (گرگوری)
onChange(date: Date | null | Date[]) => voidتابع callback برای تغییر مقدار
placeholderstringundefinedPlaceholder برای input (حالت popover)
multiplebooleanfalseفعال‌سازی انتخاب چندتایی
maxSelectionsnumberundefinedحداکثر تعداد انتخابات (فقط با multiple=true)
timePickerTimePickerConfig | booleanundefinedفعال‌سازی time picker
mode'popover' | 'inline''popover'حالت نمایش: popover یا inline
minDateDateundefinedحداقل تاریخ قابل انتخاب (گرگوری)
maxDateDateundefinedحداکثر تاریخ قابل انتخاب (گرگوری)
theme'light' | 'dark' | 'auto''light'تم استایل‌های پیش‌فرض
monthLabelsstring[]numericبرچسب‌های 12 ماه (index 0 => ماه 1)
weekdaysstring[]numericبرچسب‌های 7 روز هفته
classesPersianDatePickerClassesundefinedکلاس‌های سفارشی برای هر بخش

راهنمای استایل‌دهی

شخصی‌سازی ظاهر با CSS variables و classes

VariablePurposeDefault
--dvx-pdp-bgپس‌زمینه سطح#ffffff
--dvx-pdp-fgمتن اصلی#111827
--dvx-pdp-mutedمتن muted#6b7280
--dvx-pdp-borderحاشیه‌ها#e5e7eb
--dvx-pdp-shadowسایه popover0 10px 20px rgba(0, 0, 0, 0.08)
--dvx-pdp-accentرنگ accent / انتخاب شده#2563eb
--dvx-pdp-accentFgمتن روی accent#ffffff
--dvx-pdp-ringحلقه focusrgba(37, 99, 235, 0.3)
--dvx-pdp-dayHoverپس‌زمینه hoverrgba(37, 99, 235, 0.08)

Theme با CSS Variables

css
/* Theme via CSS variables */
.myPicker {
  --dvx-pdp-accent: #16a34a;
  --dvx-pdp-ring: rgba(22, 163, 74, 0.25);
}

<PersianDatePicker 
  className="myPicker" 
  theme="light" 
  value={value} 
  onChange={setValue} 
/>

Override با Classes

typescript
/* Override per-slot classes */
<PersianDatePicker
  value={value}
  onChange={setValue}
  classes={{
    input: 'w-full rounded-xl border border-slate-300 bg-white px-3 py-2',
    popover: 'z-[9999]',
    daySelected: '!bg-emerald-600 !text-white',
  }}
/>

آماده‌ای شروع کنی؟

با Persian Date Kit روی ویژگی‌های منحصربه‌فرد محصولت تمرکز کن و زمان توسعه را کوتاه‌تر کن.