Vercel UI SDK 0.1.0-beta.2 üzerine kurulu. API’si değişebilir.
Segmented control
Vercel UI SDK üzerinde kayan gösterge, üç boyut, yalnızca simgeli öğeler, tam genişlik, dikey düzen ve radyo grubu klavyesi olan bir segmentli kontrol.
- Form bileşenleri
- 2 parça
- 10 örnek
@ui-sdk/core@ui-sdk/react
pnpm dlx shadcn@latest add https://hextaui.com/r/ui-sdk-segmented-control.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.2 @ui-sdk/core@0.1.0-beta.2 cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/ui-sdk-segmented-control.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.
Segmentli kontrol birkaç görünüm veya ayar arasında geçiş yapar. Tek değeri ve tek sekme durağı olan bir radyo grubu gibi çalışır; seçili öğenin arkasındaki gösterge yeni seçime kayar. Onu aria-label veya aria-labelledby ile adlandırın. UI SDK onu 0.1.0-beta.2 sürümünde deneysel olarak işaretler.
Kontrol kendi göstergesini çizer, siz yalnızca öğeleri eklersiniz.
size, sm, default veya lg olur. Öğeler dokunmatik ekranlarda büyür.
Yalnızca simge içeren bir öğe kare olur. Onu aria-label ile adlandırın.
Kontrole w-full verin, öğeler genişliği paylaşır.
orientation="vertical" öğeleri üst üste dizer. Her iki eksendeki ok tuşları yine öğeler arasında gezinir.
Kontroldeki disabled her şeyi kapatır ve hiçbir şey göndermez. Bir öğede ise ok tuşları onu atlar.
value verin ve onValueChange içinde güncelleyin. createSegmentedControlController() ile oluşturulan bir denetleyici her yerden bir öğe seçer.
Her öğe gizli bir yerel radyo içerir; bu yüzden name seçili değeri gönderir, required bir seçim bekler ve sıfırlama varsayılana döner.
Salt okunur bir kontrol değerini korur ve yine gönderilir. Ok tuşları hiçbir şeyi seçmeden odağı taşır.
Öğeler sağdan başlar ve gösterge onları izler.
| Tuş | Action |
|---|---|
| Tab | Kontrole, seçili öğeye ya da ilk etkin öğeye girer. |
| ←→↑↓ | Sonraki veya önceki öğeye geçip onu seçer, devre dışı olanları atlar. loop false değilse başa döner. |
| Space | Odaktaki öğeyi seçer. |
| Enter | Formunu gönderir. |
Kontrol bir radyo grubu, her öğe de bir radyo düğmesidir; bu yüzden ekran okuyucular seçimi ve konumunu duyurur. Gösterge yalnızca görseldir ve ekran okuyucular onu atlar.
Gösterge yalnızca sayfa etkileşimli olunca kayar; yüklenirken asla canlanmaz ve azaltılmış hareket açıkken hiç kaymaz. Zorlanmış renklerde seçili öğe görünür bir kenarlık korur.
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.
| Prop | Tür | Varsayılan |
|---|---|---|
value | T | null | – |
defaultValue | T | null | – |
onValueChange | (value: T | null, details) => void | – |
size | "sm" | "default" | "lg" | "default" |
orientation | "horizontal" | "vertical" | "horizontal" |
loop | boolean | true |
disabled | boolean | false |
readOnly | boolean | false |
required | boolean | false |
name | string | – |
form | string | – |
controllercreateSegmentedControlController() ile oluşturulur. | SegmentedControlController | – |
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="segmented-control" | CSS'te segmentli kontrolü hedeflemek için. |
data-size | Boyut: sm, default veya lg. |
data-orientation | horizontal veya vertical. |
data-disabled | Devre dışıyken bulunur. |
data-readonly | Salt okunur olduğunda bulunur. |
data-required | Zorunlu olduğunda bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
value | string | – |
disabled | boolean | false |
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="segmented-control-item" | CSS'te bir öğeyi hedeflemek için. |
data-checked | Seçili öğede bulunur. |
data-unchecked | Diğer öğelerde bulunur. |
data-icon-only | Öğe yalnızca bir simge içerdiğinde bulunur. |
data-disabled | Devre dışıyken bulunur. |
- 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.
- InputÜç boyutlu, geçersiz ve salt okunur durumları, yerel doğrulama stilleri ve telefonların asla yakınlaştırmaması için 16px dokunmatik yazı tipi olan bir metin girişi.