Accordion
Her biri bir panel gösteren yığılmış başlıklar; yarıda tersine çevrilebilen yükseklik hareketi ve kapalıyken de aranabilir kalan paneller.
pnpm dlx shadcn@latest add https://hextaui.com/r/accordion.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/accordion.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Outline
Öğeler, dış köşeleri yuvarlatılmış tek bir çerçeveli yüzeyi paylaşır.
Separated
Her öğe kendi kartıdır.
Ghost
Kenarlık yok. Trigger'lar üzerine gelindiğinde ve açıkken yumuşak bir dolgu alır.
Çoklu
Birden fazla öğenin açık kalmasına izin vermek için multiple ayarlayın.
Devre dışı
Tek bir öğeyi <AccordionItem /> üzerinde disabled ile veya tüm accordion'u kökte devre dışı bırakın.
Kontrollü
Açık öğeleri kendi state'inizde tutmak için value ve onValueChange geçin.
Özel simge
icon'a herhangi bir öğe geçin. Açık durumunu group-data-panel-open/accordion-trigger ile stilleyin.
Öncü simgeler
Etiketten önceki simgeler sizin için boyutlandırılır ve hizalanır. icon={null} ok simgesini kaldırır.
Uzun içerik
Uzun başlıklar alt satıra sarar, simge ise ilk satırda kalır. Kapalı paneller aranabilir kalır; bu yüzden Cmd/Ctrl+F ile “retention” aramak bunu açar.
İç içe
İç içe bir accordion kendi variant'ını, odak stillerini ve ok tuşuyla gezinmesini korur.
Sağdan sola
İçerik, simgeler ve açılma hareketi okuma yönünü izler.
| Tuş | Action |
|---|---|
| EnterSpace | Odaktaki öğeyi açar veya kapatır. |
| ↓ | Odağı sonraki trigger'a taşır. |
| ↑ | Odağı önceki trigger'a taşır. |
| Home | Odağı ilk trigger'a taşır. |
| End | Odağı son trigger'a taşır. |
| Tab | Odağı açık panelin içine, sonra bir sonraki trigger'a taşır. |
Base UI accordion üzerine kuruludur. Her parça, sardığı primitive'in prop'larını kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
variant | "default" | "outline" | "separated" | "ghost" | "default" |
multipleBirden fazla öğenin açık olmasına izin verin. | boolean | false |
value | Value[] | – |
defaultValue | Value[] | – |
onValueChange | (value: Value[], details) => void | – |
disabled | boolean | false |
hiddenUntilFoundKapalı panelleri tarayıcının sayfa içi aramasıyla bulunabilir tutun. | boolean | true |
keepMountedhiddenUntilFound açıkken yok sayılır. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="accordion" | CSS'te kökü hedefleyin. |
data-variant | Geçerli varyant. |
data-disabled | Accordion devre dışı olduğunda bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
valueBelirtilmezse otomatik olarak oluşturulur. | Value | – |
disabled | boolean | false |
onOpenChange | (open: boolean, details) => void | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="accordion-item" | CSS'te öğeleri hedefleyin. |
data-open | Öğe açık olduğunda bulunur. |
data-disabled | Öğe devre dışıyken bulunur. |
data-index | Öğenin konumu, 0'dan başlar. |
| Prop | Tür | Varsayılan |
|---|---|---|
iconnull simgeyi kaldırır. | ReactNode | null | <IconChevronDown /> |
render | ReactElement | (props, state) => ReactElement | <button> |
| Öznitelik | Açıklama |
|---|---|
data-slot="accordion-trigger" | CSS'te tetikleyicileri hedefleyin. |
data-panel-open | Paneli açıkken bulunur. Simgeyi group-data-panel-open/accordion-trigger ile stilleyin. |
data-disabled | Öğe devre dışıyken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
classNameİç sarmalayıcıya uygulanır; böylece dolgu hiçbir zaman yükseklik animasyonuyla çakışmaz. | string | – |
keepMounted | boolean | false |
hiddenUntilFound | boolean | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="accordion-content" | CSS'te panelleri hedefleyin. |
data-open | Panel açık olduğunda bulunur. |
data-starting-style | Panel açılma animasyonu sırasında bulunur. |
data-ending-style | Panel kapanma animasyonu sırasında bulunur. |
data-settled | Panel tamamen açıldığında bulunur. O anda kırpma durur; böylece iç içe bir accordion'daki odak halkaları tam görünür. |
--accordion-panel-height | Panelin ölçülen yüksekliği; yükseklik animasyonu için kullanılır. |
- Aspect ratioMedya yüklenmeden önce şeklini koruyan, yüklenirken parıldayan, medyayı yumuşakça görünür kılan ve hata durumunda yedeğe düşen bir kutu.
- CarouselDokunmatik ekranda ivmeli, fare sürüklemeli, ok tuşlu, noktalı, küçük resimli yerel scroll-snap slaytları ve gerektiğinde duran bir otomatik oynatma.
- CollapsibleYüksekliği hareketle gösterilip gizlenen, yarıda tersine çevrilebilen ve yerleşimi zıplatmayan bir panel.
- ResizableBirbirinden ayırabileceğiniz paneller; hover'da uyanan sakin bir ayırıcı, sıfırlama ya da daraltmada kayarak değişen boyutlar ve kalıcı düzenler sunar.
- Scroll areaMinimal bir kaydırma çubuğuyla yerel kaydırma, yalnızca görülecek daha fazla şey olan yerde solan kenarlar ve son öğeyi ikiye bölen isteğe bağlı bir göz atma payı.
- Separatorİçeriği yatay ya da dikey olarak ayıran ince bir çizgi; isteğe bağlı etiket ve yalnızca görsel çizgiler için dekoratif bir mod içerir.