Collapsible
Yüksekliği hareketle gösterilip gizlenen, yarıda tersine çevrilebilen ve yerleşimi zıplatmayan bir panel.
@preetsuthar17 starred 3 repositories
pnpm dlx shadcn@latest add https://hextaui.com/r/collapsible.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 cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/collapsible.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Varsayılan olarak açık
defaultOpen paneli state'ini devralmadan açık başlatır.
Daha fazla göster
Panel trigger'ının üstünde durur. Kapandığında üst öğenin flex düzenindeki boşluk aynı animasyonda daralır; böylece alttaki düğme asla zıplamaz.
Kontrollü
Paneli kendi state'inizle yönetmek için open ve onOpenChange geçin. Animasyon sırasında değiştirmek, panelin bulunduğu yerden geri döner.
Devre dışı
Kökteki disabled paneli mevcut durumunda tutar ve trigger'ın tıklamaları ve tuşları yok saymasını sağlar.
Özel simge
<CollapsibleTriggerIcon /> bileşeninin alt öğeleri oku değiştirir. Açık durumunu group-data-panel-open/collapsible-trigger ile stilleyin.
Dosya ağacı
Her klasör kendi collapsible'ıdır. İç paneller açıldıkça dış paneller düzgünce büyür.
Bir kartın içinde
Kapalı paneller hidden=“until-found” ile sayfada kalır; bu yüzden Cmd/Ctrl+F ile “webhook” aramak bunu açar.
Kapalıyken kaldırılır (unmount)
Kapalıyken DOM'dan kaldırmak için içerikte hiddenUntilFound={false} ayarlayın; baştan render edilmesini istemediğiniz ağır paneller için.
Uzun içerik
Kırılmayan dizeler sayfayı genişletmek yerine panelin içinde sarar.
Sağdan sola
Oklar yansıtılır ve iç içe girintiler okuma yönünü izler.
| Tuş | Action |
|---|---|
| EnterSpace | Paneli trigger'dan açar veya kapatır. |
| Tab | Odağı trigger'dan açık panelin içine taşır. Kapalı paneller atlanır. |
- Trigger otomatik olarak
aria-expandedvearia-controlsalır. - Yalnızca simgeli trigger'lar bir
aria-labelgerektirir.<CollapsibleTriggerIcon />yardımcı teknolojilerden gizlenir. - Azaltılmış harekette panel, yüksekliğini animasyonlamadan açılır ve kapanır.
Base UI collapsible üzerine kuruludur. Her parça, sardığı primitive'in prop'larını kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open: boolean, details) => void | – |
disabled | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="collapsible" | CSS'te kökü hedefleyin. |
data-open | Açıkken bulunur. |
data-closed | Kapalıyken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
renderGenellikle bir Button. | ReactElement | (props, state) => ReactElement | <button> |
| Öznitelik | Açıklama |
|---|---|
data-slot="collapsible-trigger" | CSS'te tetikleyiciyi hedefleyin. |
data-panel-open | Panel açıkken bulunur. Alt öğeleri group-data-panel-open/collapsible-trigger ile stilleyin. |
| Prop | Tür | Varsayılan |
|---|---|---|
childrenPanel açıldığında varsayılan ok ters döner. | ReactNode | <IconChevronDown /> |
render | ReactElement | (props, state) => ReactElement | <span> |
| Öznitelik | Açıklama |
|---|---|
data-slot="collapsible-trigger-icon" | Yardımcı teknolojilerden gizlenir. Trigger basılıyken aşağı kayar. |
| Prop | Tür | Varsayılan |
|---|---|---|
classNameİç sarmalayıcıya uygulanır; böylece dolgu hiçbir zaman yükseklik animasyonuyla çakışmaz. | string | – |
hiddenUntilFoundKapalı paneli DOM'da tutar; böylece sayfa içi arama onu bulup açabilir. | boolean | true |
keepMountedhiddenUntilFound açıkken yok sayılır. | boolean | false |
| Öznitelik | Açıklama |
|---|---|
data-slot="collapsible-content" | CSS'te paneli hedefleyin. |
data-open | Açıkken bulunur. |
data-closed | Kapalıyken bulunur. |
data-starting-style | Panel açılma animasyonu sırasında bulunur. |
data-ending-style | Panel kapanma animasyonu sırasında bulunur. |
--collapsible-panel-height | Panelin ölçülen yüksekliği. |
--collapsible-panel-width | Panelin ölçülen genişliği. |
--collapsible-gap-start | Üst öğenin panelden önceki boşluğu; kapalıyken daralır. |
--collapsible-gap-end | Üst öğenin panelden sonraki boşluğu; kapalıyken daralır. |
- AccordionHer biri bir panel gösteren yığılmış başlıklar; yarıda tersine çevrilebilen yükseklik hareketi ve kapalıyken de aranabilir kalan paneller.
- 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.
- 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.
Kullanıldığı bloklar
Collapsible üzerine kurulan bloklar.
- Agent TodosBir ajanın planını çalışırken gösterin. Her adım backlog'dan yapılacak, devam eden ve tamamlanana ilerler; canlı süreler, başarısızlıklar ve arkasındaki araç çağrıları ile birlikte. Yazma alanının üstü için bir durum hapı, görebildiğiniz plan değişiklikleri ve çalışmadan önce planı düzenlemek için bir gözden geçirme adımı.
- API keysOpenAI ve Anthropic konsolları gibi bir yapay zeka ürününün API anahtarları sayfası. Kapsamlı izinler ve son kullanma tarihiyle anahtar oluşturun, gizli anahtarı bir kez görün ve kopyalama onaylansın, geri alınabilir şekilde iptal edin, yerinde yeniden adlandırın, ek süreyle döndürün ve anahtar başına kullanımı görün.
- BillingBir yapay zeka ürünü için Cursor, Claude ve Vercel tarzında plan ve kullanım. Modele göre bölünmüş, dönem sonunu öngören ve krediler bitmeden uyaran bir kullanım ölçeri, üzerinde gezinebileceğiniz günlük bir grafik, ölçer üzerinde önizleyebileceğiniz uyarılara sahip bir harcama limiti, tam orantılı hesaplamayla plan değişiklikleri, gerçek doğrulamalı bir kart formu ve PDF olarak indirilen faturalar.
- Chat SidebarBir sohbet uygulaması için kenar çubuğu. Üstte logo, arama ve Yeni sohbet, altında kendi bağlantılarınız, sabitlenmiş sohbetler, sohbetlerini göstermek için genişleyen projeler, güne göre gruplanmış son sohbetler ve hover ile sağ tık menüleri, satır içi yeniden adlandırma, geri alınabilir silme ve canlı yanıt durumları olan satırlar.