Item
Listeler, ayarlar ve seçiciler için medya, metin ve eylemlerden oluşan bir satır; gruplanmış bir yüzey ve satırlar arasında kayan bir hover vurgusu içerir.
pnpm dlx shadcn@latest add https://hextaui.com/r/item.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 @base-ui/react @tabler/icons-react class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/item.tsx lib/motion.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
iOS Settings gibi renkli karolar için simge medyasına bir tone verin veya nötr bir karo için ayarlamadan bırakın. Bir öğe, render ile bağlantı, düğme veya etiket olarak render edildiğinde etkileşimli olur. Yalnızca o zaman üzerine gelme, basma ve odak stillerini alır; böylece statik satırlar asla tıklanabilirmiş gibi davranmaz.
Gruplanmış
variant="grouped" öğeleri tek bir yüzeye yerleştirir. Ayırıcılar sizin için çizilir ve metne göre girintilenir, ilk ve son satırlar dış köşelere sahip olur, üzerine gelinen veya odaklanılan satırın yanındaki ayırıcılar kaybolur.
Üzerine gelme vurgusu
Bir gruptaki etkileşimli öğeler, işaretçinin altındaki satıra kayan ve köşelerini alan tek bir vurguyu paylaşır. Yalnızca fareyi veya kalemi izler, dokunmayı asla; highlight={false} ile kapatın. Görsel medya köşeleri satırla eş merkezlidir.
Seçilebilir
Bir öğeyi Checkbox çevresinde bir <label> olarak işlerseniz tüm satır onu açıp kapatır. İşaretli bir denetim ya da öğedeki aria-selected, aria-checked veya aria-pressed, satırı seçili olarak işaretler.
Varyantlar
default yüzeysizdir, outline ince bir çizgi çizer, muted yumuşak bir dolgu üzerinde durur.
Boyutlar
size dolgu, boşluk, köşe yarıçapı ve medyayı birlikte ölçekler. Grup, boşluğunu buna uyacak şekilde daraltır.
Avatar
Varsayılan <ItemMedia /> yalnızca içeriğini ortalar; bu yüzden Avatar veya AvatarGroup doğrudan yerleşir.
Kişiler
Gruplanmış bir kişi listesi. Ayırıcılar, medya slotunda ne olursa olsun metnin başladığı yerden başlar; böylece adların altında hizalanır.
Eylemler
<ItemActions /> düğmeleri satırın sonunda tutar. Öğe düğmeler içerdiğinde öğenin kendisini statik tutun; böylece bir bağlantının içinde asla düğme olmaz.
Üst ve alt bilgi
<ItemHeader /> ve <ItemFooter /> içeriğin üstünde ve altında tam bir satır kaplar.
Separator
Varsayılan bir grupta öğeler arasına kendiniz bir <ItemSeparator /> koyun.
Uzun içerik
Başlıklar bir satıra, açıklamalar iki satıra kısaltılır. Bölünmeyen dizeler satırı genişletmek yerine alt satıra sarar.
Sağdan sola
Dolgu, ayırıcı girintileri ve ok işareti okuma yönünü izler.
| Tuş | Action |
|---|---|
| Tab | Sonraki etkileşimli öğeye, herhangi bir bağlantı veya düğme gibi kaynak sırasıyla geçer. |
| Enter | Bağlantı öğesini izler veya düğme öğesine basar. |
| Space | Düğme öğesine basar veya etiket öğesini açıp kapatır. |
- Öğeleri düz satırlarsa grup bir listedir. Bağlantı veya düğme olarak render edilen öğeler kendi rollerini korur ve işaretleme geçerli kalsın diye grup liste rolünü bırakır. İkisini de istiyorsanız grubu
<ul>, öğeleri bağlantıları saran<li>olarak render edin. <ItemMedia variant="icon" />ve ok ekran okuyuculardan gizlenir. Anlam taşıyan görsellere gerçek alt metni verin.- Vurgu yalnızca dekorasyondur. Klavye odağı odak halkasını gösterir; vurgu odağı hiçbir zaman taşımaz ve sekme sırasını değiştirmez.
Her parça varsayılan olarak bir <div> render eder ve render ile öğesinin niteliklerini kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
variant | "default" | "outline" | "muted" | "default" |
size | "default" | "sm" | "xs" | "default" |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="item" | CSS'te öğeleri hedefleyin. |
data-variant | Geçerli varyant. |
data-size | Geçerli boyut. |
data-interactive | Öğe bağlantı, düğme veya etiket olarak işlendiğinde bulunur. |
data-highlighted | Grup vurgusu üzerindeyken bulunur. |
--item-radius | Köşe yarıçapı. Medya köşeleri bundan türetilir. Boyuta göre ayarlanır. |
--item-px / --item-py / --item-gap | Dolgu ve boşluk. Boyuta göre ayarlanır. |
--item-media-size | Simge ve görsel medyanın boyutu. size ile belirlenir. |
--item-inset | Gruplanmış ayırıcının başladığı yer. Medya ne olursa olsun ItemContent ile hizalanacak şekilde ölçülür. |
| Prop | Tür | Varsayılan |
|---|---|---|
variantgrouped, öğeleri otomatik ayırıcılarla tek bir yüzeye yerleştirir. | "default" | "grouped" | "default" |
highlightHover sırasında etkileşimli öğeler arasında kayan tek bir vurgu gösterir. | boolean | true |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="item-group" | CSS'te grupları hedefleyin. |
data-variant | Geçerli varyant. |
data-highlight | Hover vurgusu açıkken bulunur. |
--item-group-radius | Gruplanmış yüzeyin köşe yarıçapı. İlk ve son öğeler onu izler. |
data-slot="item-highlight" | Vurgu öğesi; data-visible ve data-pressed ile birlikte gelir. |
| Prop | Tür | Varsayılan |
|---|---|---|
varianticon, simgeyi bir kutucuğa koyar ve ekran okuyuculardan gizler. image kareye kırpar. İkisinin de köşeleri öğeyle eş merkezlidir. | "default" | "icon" | "image" | "default" |
toneicon varyantıyla kutucuğu düz bir renkle doldurur ve simgeyi iOS Ayarlar'daki gibi beyaza çevirir. Nötr bir kutucuk için ayarlamayın. | "gray" | "red" | "orange" | "yellow" | "green" | "teal" | "sky" | "blue" | "indigo" | "purple" | "pink" | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="item-media" | CSS'te medyayı hedefler. |
data-variant | Geçerli varyant. |
data-tone | Bir simgede tone ayarlandığında kutucuk rengi. |
--item-media-tone | Kutucuk rengi. Özel bir ton için herhangi bir renk verin. |
| Öznitelik | Açıklama |
|---|---|
data-slot="item-content" | Satırı dolduracak şekilde büyür. İkinci bir içerik bloğu metnine sarılır. |
| Öznitelik | Açıklama |
|---|---|
data-slot="item-title" | Bir satırla sınırlı. |
| Prop | Tür | Varsayılan |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <p> |
| Öznitelik | Açıklama |
|---|---|
data-slot="item-description" | İki satırla sınırlı. |
| Öznitelik | Açıklama |
|---|---|
data-slot="item-actions" | CSS'te eylemleri hedefleyin. |
| Öznitelik | Açıklama |
|---|---|
data-slot="item-header" | İçeriğin üstünde tam genişlikte bir satır. |
data-slot="item-footer" | İçeriğin altında tam genişlikte bir satır. |
Öğenin üzerine gelindiğinde okuma yönüne doğru hafifçe kayan bir son ok. Her Tabler simge prop'unu kabul eder.
| Öznitelik | Açıklama |
|---|---|
data-slot="item-chevron" | CSS'te ok işaretini hedefler. |
| Öznitelik | Açıklama |
|---|---|
data-slot="item-separator" | role="separator" olan ince bir çizgi. |
- MotionHer bileşenin kullandığı yumuşatma eğrileri, süreler ve azaltılmış hareket denetimi; ayrıca boyut dönüşümleri ve kayan vurgular için hook'lar.
- AvatarBaş harf yedekli kullanıcı fotoğrafları, durum rozetleri ve sayıya daralan yığılmış gruplar.
- BadgeRenkli noktalı durum etiketleri, kayarak kapanan kaldırılabilir etiketler ve yeni değerine dönen sayaçlar.
- Cardİçeriği gruplamak için bir yüzey; üç varyant, kenardan kenara medya, eşmerkezli yarıçaplar ve tüm kartı kaplayan bağlantılar içerir.
- ChartTema renkli Recharts grafikleri; etiketleri tek bir yapılandırmadan okuyan bir tooltip ve gösterge, ayrıca görünür odak halkalı klavye gezintisi.
- Data tableGerçek veriler için bir tablo; sıralama, arama, satır seçimi, sabitlenmiş sütunlar, yapışkan başlık ve sayfalama içerir.