Daraltılabilir
Dosya ağaçları, gelişmiş ayarlar ve “daha fazlasını göster” bölümleri için bir tetikleyici-panel çifti — neobrütalist tarzda kenarlık ve gölge efektleriyle.
"use client"
import * as React from "react"Daraltılabilir panel, akordeonun tek bölümlük kardeşidir: bir tetikleyici, bir panel — açık ya da kapalı. Base UI Collapsible bileşeni üzerine kuruludur ve neobrütalist reçeteye göre biçimlendirilmiştir: kalın kenarlıklar, sert gölgeler ve koyu tipografi.
Şu durumlarda tercih edin:
- Dosya ağaçları ve iç içe gezinme — klasörleri genişletmek için daraltılabilir panelleri iç içe kullanın (aşağıdaki dosya ağacı örneğine bakın).
- Gelişmiş ayarlar — sık kullanılan seçenekleri görünür tutun, gerisini bir açma/kapama düğmesinin arkasına katlayın.
- “Daha fazla göster” içerikleri — uzun değişiklik günlükleri, kısaltılmış listeler, yoğun sayfalarda isteğe bağlı ayrıntı.
Kurulum#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/collapsible.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/collapsible.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/collapsible.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/collapsible.json
Aşağıdaki bağımlılıkları yükleyin:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
"use client"
import { Collapsible as CollapsiblePrimitive } from "radix-ui"
import { cn } from "@/lib/utils"
function Collapsible({
...props
}: React.ComponentProps<typeof CollapsiblePrimitive.Root>) {
return <CollapsiblePrimitive.Root data-slot="collapsible" {...props} />
}
function CollapsibleTrigger({
...props
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleTrigger>) {
return (
<CollapsiblePrimitive.CollapsibleTrigger
data-slot="collapsible-trigger"
{...props}
/>
)
}
function CollapsibleContent({
className,
...props
}: React.ComponentProps<typeof CollapsiblePrimitive.CollapsibleContent>) {
return (
<CollapsiblePrimitive.CollapsibleContent
data-slot="collapsible-content"
// Radix publishes the measured height as
// `--radix-collapsible-content-height`; the collapsible-down/up keyframes
// interpolate against it for a real slide open/close.
className={cn(
"overflow-hidden data-[state=open]:animate-collapsible-down data-[state=closed]:animate-collapsible-up",
className
)}
{...props}
/>
)
}
export { Collapsible, CollapsibleTrigger, CollapsibleContent }
İçe aktarma yollarını proje kurulumunuza uyacak şekilde güncelleyin.
Kullanım#
import {
Collapsible,
CollapsibleContent,
CollapsibleTrigger,
} from "@/components/ui/collapsible"<Collapsible>
<CollapsibleTrigger>Can I use this in my project?</CollapsibleTrigger>
<CollapsibleContent>
Yes. Free to use for personal and commercial projects. No attribution
required.
</CollapsibleContent>
</Collapsible>Kompozisyon#
Bir Collapsible oluşturmak için aşağıdaki kompozisyonu kullanın:
Collapsible
├── CollapsibleTrigger
└── CollapsibleContentKontrollü Durum#
Durumu kontrol etmek için open ve onOpenChange prop'larını kullanın.
import * as React from "react"
export function Example() {
const [open, setOpen] = React.useState(false)
return (
<Collapsible open={open} onOpenChange={setOpen}>
<CollapsibleTrigger>Toggle</CollapsibleTrigger>
<CollapsibleContent>Content</CollapsibleContent>
</Collapsible>
)
}Örnekler#
Temel#
import { ChevronDownIcon } from "@/registry/icons/__lucide__"
import { Button } from "@/components/ui/button"
import { Card, CardContent } from "@/components/ui/card"Ayarlar Paneli#
Ek ayarları göstermek için bir tetikleyici düğme kullanın.
"use client"
import * as React from "react"Dosya Ağacı#
Bir dosya ağacı oluşturmak için iç içe collapsible'lar kullanın.
import { ChevronRightIcon, FileIcon, FolderIcon } from "lucide-react"
import { Button } from "@/components/ui/button"RTL#
Neobrutalism'de RTL desteğini etkinleştirmek için RTL yapılandırma kılavuzuna bakın.
"use client"
import * as React from "react"Erişilebilirlik#
Daraltılabilir panel, WAI-ARIA Disclosure desenini izler: tetikleyici, aria-expanded ve aria-controls ile bağlanmış gerçek bir düğmedir; ekran okuyucular böylece panelin açık olup olmadığını duyurur.
Klavye etkileşimleri:
| Tuş | Eylem |
|---|---|
Tab / Shift + Tab | Odağı tetikleyiciye taşır ve ondan alır |
Space / Enter | Paneli açar veya kapatır |
API Referansı#
Daha fazla bilgi için Base UI belgelerine bakın.