Vercel UI SDK 0.1.0-beta.1 üzerine kurulu. API’si değişebilir.
Date picker
Vercel UI SDK üzerinde, tarihi kendi dilinde yazıp ya da seçerek girilen; aralık, hazır seçim ve ISO değerleri sunan bir tarih seçici.
- Form bileşenleri
- 18 parça
- 9 örnek
@tabler/icons-react@ui-sdk/core@ui-sdk/react
pnpm dlx shadcn@latest add https://hextaui.com/r/ui-sdk-date-picker.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @ui-sdk/react@0.1.0-beta.1 @ui-sdk/core@0.1.0-beta.1 @tabler/icons-react cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/ui-sdk-date-picker.tsx components/ui/button.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
UI SDK, ui-sdk adlı bir cascade katmanında kendi CSS’ini biraz ekler. Sınıflarınızın kazanması için bu katmanı genel stil dosyanızın en üstünde, Tailwind import’unun üzerinde tanımlayın.
Değerler 2026-11-20 gibi saat ve saat dilimi içermeyen ISO tarih dizeleridir, bu yüzden bir tarih kütüphanesine gerek yoktur. Kişiler 11/20/2026 veya 20.11.2026 gibi kendi tarih sıralarıyla yazar; alan, Enter’a basıldığında veya alandan çıkıldığında tarihi biçimlendirir. Çocuksuz DatePickerContent stilli bir takvim gösterir.
mode="range" ile end içeren ikinci bir input ekleyin. Takvim ilk tarihten sonra açık kalır, ikinciden sonra kapanır. months={2} iki ayı yan yana, küçük ekranlarda alt alta gösterir.
Bir DatePickerPreset kendi value değerini seçer ve popup’ı kapatır. Değeri seçili olduğu sürece basılı görünür.
min, max ve unavailable hem yazarken hem seçerken geçerlidir. Burada hafta sonları ve iki tatil günü seçilemez; yazılan biri geçersiz olarak işaretlenir.
locale yazma biçimini, ipucunu ve takvimdeki adları belirler. Verilmezse seçici sayfanın lang değerini okur. Düğmelerin adları İngilizcedir; çevirmek için aria-label verin.
Bir name ile tarih ISO dizesi olarak gönderilir. required boş gönderimi engeller, tarih olmayan metin de engeller ve reset defaultValue değerine döner.
createDatePickerController() ile oluşturulan bir controller tarihi ayarlar veya takvimi her yerden açar; onValueChange her değişikliği bildirir. Takvimin controller’ın seçtiği aya geçebilmesi için burada value vermeyin.
disabled yazmayı ve açmayı durdurur. readOnly takvimi bakmak için yine açar ama hiçbir şey değişemez.
dir=rtl içinde Arapça bir yerel ayarla alan, oklar ve takvim sağdan başlar.
| Tuş | Action |
|---|---|
| Enter | Input’ta yazılan tarihi okur. Bir günün üzerinde o günü seçer. |
| ←→↑↓ | Günler arasında, yukarı ve aşağıda bir hafta ilerler. |
| Page UpPage Down | Bir ay geri veya ileri gider. |
| HomeEnd | Haftanın başına veya sonuna geçer. |
| Esc | Bitmemiş bir aralığı iptal eder, yoksa takvimi kapatır. |
Takvim, her biri “Friday, November 20, 2026” gibi tam adıyla anılan günlerden oluşan bir ızgarayla diyalog olarak açılır. İpucu input’u tanımlar, böylece ekran okuyucular yazılacak biçimi duyar. Tarih olmayan bir metin aria-invalid ayarlar ve eski değeri korur; kullanılamayan günler odaklanabilir kalır, böylece klavye kullananlar onları yine de duyar.
Tetikleyici, popup ve oklar İngilizce adlara sahiptir. Çevirmek için her birine aria-label verin. Input’lar dokunmatik ekranlarda iOS yakınlaştırmasın diye 16px yazı kullanır ve popup yalnızca harekete izin verildiğinde ölçeklenerek açılır.
Her parça aynı adlı UI SDK parçasını sarar ve render ile parçanın durumuna bağlı bir fonksiyon olabilen className dahil tüm prop’larını kabul eder. DatePickerControl, DatePickerSeparator ve DatePickerCalendar HextaUI düzen parçalarıdır.
| Prop | Tür | Varsayılan |
|---|---|---|
mode | "single" | "range" | "single" |
value | string | [string, string] | null | – |
defaultValue | string | [string, string] | null | – |
onValueChange | (value, details) => void | – |
min | string | – |
max | string | – |
unavailableISO tarihleri, { from, to }, { weekday }, { before }, { after } veya bir fonksiyon. | DateMatchers | – |
months | number | 1 |
pageBy | "month" | "page" | "month" |
locale | string | – |
weekStartsOn | number | – |
minDays | number | – |
maxDays | number | – |
closeOnSelect | boolean | true |
disabled | boolean | false |
readOnly | boolean | false |
name | string | – |
startName | string | – |
endName | string | – |
required | boolean | false |
open | boolean | – |
onOpenChange | (open, details) => void | – |
controllercreateDatePickerController() ile oluşturulur. | DatePickerController | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="date-picker" | CSS’te tarih seçiciyi hedefler. |
data-open | Açıkken bulunur. |
data-invalid | Bir input tarih olmayan bir metin içerdiği sürece bulunur. |
data-disabled | Devre dışıyken bulunur. |
data-readonly | Salt okunur olduğunda bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
endOnu bir aralığın sonu yapar. | boolean | false |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenVarsayılan olarak bir takvim simgesi. | ReactNode | – |
aria-label | string | "Choose date" |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenVarsayılan olarak Clear adlı bir X simgesi. Temizlenecek bir şey yokken gizlenir. | ReactNode | – |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenVarsayılan olarak bir DatePickerCalendar. | ReactNode | – |
align | Align | "start" |
sideOffset | number | 6 |
collisionPadding | number | 8 |
| Öznitelik | Açıklama |
|---|---|
data-slot="date-picker-content" | Popup’ı CSS’te hedeflemek için. |
--cell-size | Her günün boyutu; dokunmatik ekranlarda daha büyük. |
| Prop | Tür | Varsayılan |
|---|---|---|
monthsYan yana kaç ızgara gösterileceği. | number | 1 |
| Prop | Tür | Varsayılan |
|---|---|---|
value | string | [string, string] | – |
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="calendar-day" | CSS’te bir günü hedefler. |
data-today | Bugünde bulunur. |
data-range-start | Bir aralığın başladığı yerde bulunur. |
data-range-end | Bir aralığın bittiği yerde bulunur. |
data-unavailable | Seçilemeyen bir günde bulunur. |
data-outside | Sonraki veya önceki ayın bir gününde bulunur. |
- ButtonHer varyant ve boyutta düğmeler; hızlı istekler için spinner'ı atlayan yerleşik yükleme, başarı ve hata akışı.
- CalendarTekli, aralık ve çoklu seçim için, kayan aylar, aralık önizlemeleri ve dokunmaya uygun boyutta günler içeren bir tarih ızgarası.
- Checkboxİşareti çizilerek beliren, belirsiz üst öğeleri, grupları ve hover durumunu paylaşan etiketleri olan bir onay kutusu.
- ComboboxÇipler, gruplar ve asenkron sonuçlar içeren, siz yazdıkça boyutu değişen bir açılır pencerede filtrelenebilir bir select.
- Date pickerTek tarihler ve aralıklar için takvimi bir popover içinde, telefonlarda ise alt sayfa olarak açan bir düğme.
- FieldKontrolüne bağlanmış etiketler, açıklamalar ve hatalar; doğrulama durumları ve formlar için düzenler içerir.