Vercel UI SDK 0.1.0-beta.1 üzerine kurulu. API’si değişebilir.
Rating
Vercel UI SDK üzerinde tam veya yarım yıldızlı, üzerine gelince önizleme, salt okunur ortalamalar ve form desteği sunan bir yıldız puanlama.
- Form bileşenleri
- 2 parça
- 10 örnek
@tabler/icons-react@ui-sdk/core@ui-sdk/reactclass-variance-authority
pnpm dlx shadcn@latest add https://hextaui.com/r/ui-sdk-rating.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 class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/ui-sdk-rating.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.
Rating alt öğesini her yıldız için bir kez çizer; bu yüzden içine bir RatingItem koyun. Her yıldız, --rating-fill ile kırpılmış dolu bir yıldızla boş bir yıldız çizer; böylece yarım yıldızlar ve 4,3 gibi ortalamalar tam görünür.
step={0.5} ile her yıldız yarısı kendi radyosudur ve ok tuşları yarım yıldız ilerler.
Salt okunur bir puanlama, getValueLabel ile adlandırılan tek bir görseldir ve ortalama gibi her puanı gösterir.
size, sm, default veya lg olur.
deselectable ile işaretli yıldıza yeniden basmak puanı temizler.
value ve onValueChange verin; null henüz puan olmadığı anlamına gelir. createRatingController() ile oluşturulan bir controller puanı her yerden ayarlar.
Bir name ile puan formla birlikte gönderilir. required, puan verilene kadar gönderimi tarayıcının kendi mesajıyla engeller.
Kendi simgenizi RatingItem alt öğesi olarak verin ve data-filled ile değiştirin. tone rengi belirler.
Devre dışı bir puanlama odak almaz, değişmez ve hiçbir şey göndermez.
Yıldızlar sağdan başlar ve yarım yıldız sağ kenarından dolar.
| Tuş | Action |
|---|---|
| Tab | Puanlamaya, işaretli yıldıza ya da ilk yıldıza geçer. |
| ←→↑↓ | Sonraki veya önceki puana geçip işaretler; loop ayarlı değilse uçlarda durur. |
| Space | Odaktaki yıldızı işaretler; işaretliyse ve puanlama seçimi kaldırılabilirse temizler. |
| Enter | Formu gönderir. |
Puanlama, tek sekme durağı olan bir radyo grubudur. Her yıldız, seçebileceği her puan için getValueLabel ile adlandırılan bir radyo içerir; bu yüzden puanları insanların kullandığı sözcüklerle adlandırın, örneğin “Harika, 5 üzerinden 5”. Yıldız simgeleri ekran okuyuculardan gizlenir. Salt okunur bir puanlama ise tek bir görseldir.
Yıldızlar yalnızca harekete izin verildiğinde üzerine gelince büyür ve basınca küçülür. Dokunmatik ekranlarda her yıldıza ek dolgu eklenir; zorunlu renkler modunda dolu yıldızlar metin rengini, boş olanlar sistemin grisini kullanı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.
| Prop | Tür | Varsayılan |
|---|---|---|
value | number | null | – |
defaultValue | number | null | – |
onValueChange | (value: number | null, details) => void | – |
max | number | 5 |
step | number | 1 |
size | "sm" | "default" | "lg" | "default" |
tone | "default" | "neutral" | "destructive" | "default" |
deselectable | boolean | false |
readOnly | boolean | false |
disabled | boolean | false |
required | boolean | false |
name | string | – |
loop | boolean | false |
getValueLabelHer puanı radyosu ve salt okunur puanlama için adlandırır. | (value: number, max: number) => string | – |
controllercreateRatingController() ile oluşturulur. | RatingController | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="rating" | CSS’te puanlamayı hedefler. |
data-size | Boyut: sm, default veya lg. |
data-tone | Ton: default, neutral veya destructive. |
data-readonly | Salt okunur olduğunda bulunur. |
data-disabled | Devre dışıyken bulunur. |
--rating-color | Dolu yıldızların rengi; tone ile ayarlanır. |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenYıldızın simgesi. Varsayılan olarak --rating-fill ile dolan bir Tabler yıldızıdır. | ReactNode | – |
render | ReactElement | (props, state) => ReactElement | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="rating-item" | CSS’te bir yıldızı hedefler. |
data-filled | Gösterilen puanın tamamen kapladığı yıldızlarda bulunur. |
data-partial | Gösterilen puanın bir kısmını kapladığı yıldızda bulunur. |
data-checked | Puanın bittiği yıldızda bulunur. |
data-highlighted | İşaretçinin önizlediği puana kadar olan yıldızlarda bulunur. |
--rating-fill | Gösterilen puanın yıldızın ne kadarını kapladığı, 0 ile 1 arasında. |
- 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.