accordion
9ui/accordionFreeComponent
9ui publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by 9ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://9ui.dev/r/accordion.jsonSource
1import * as React from "react"2import { Accordion as BaseAccordion } from "@base-ui/react/accordion"3import { ChevronDownIcon } from "lucide-react"45import { cn } from "@/lib/utils"67function Accordion({8 ...props9}: React.ComponentProps<typeof BaseAccordion.Root>) {10 return <BaseAccordion.Root data-slot="accordion" {...props} />11}1213function AccordionItem({14 className,15 ...props16}: React.ComponentProps<typeof BaseAccordion.Item>) {17 return (18 <BaseAccordion.Item19 data-slot="accordion-item"20 className={cn("border-b last:border-b-0", className)}21 {...props}22 />23 )24}2526function AccordionTrigger({27 children,28 className,29 ...props30}: React.ComponentProps<typeof BaseAccordion.Trigger>) {31 return (32 <BaseAccordion.Header className="flex">33 <BaseAccordion.Trigger34 data-slot="accordion-trigger"35 className={cn(36 "focus-visible:ring-ring/50 flex flex-1 items-center justify-between gap-4 rounded-md py-3 text-left text-sm font-medium underline-offset-2 outline-none hover:underline focus-visible:ring-[3px] data-disabled:pointer-events-none data-disabled:opacity-50 data-panel-open:[&_*[data-slot=accordion-icon]]:rotate-180",37 className38 )}39 {...props}40 >41 {children}42 <ChevronDownIcon43 data-slot="accordion-icon"44 className="text-muted-foreground size-4 shrink-0 transition-transform duration-200"45 />46 </BaseAccordion.Trigger>47 </BaseAccordion.Header>48 )49}5051function AccordionContent({52 children,53 className,54 ...props55}: React.ComponentProps<typeof BaseAccordion.Panel>) {56 return (57 <BaseAccordion.Panel58 data-slot="accordion-content"59 className="h-(--accordion-panel-height) overflow-hidden text-sm transition-[height] duration-200 ease-out data-ending-style:h-0 data-starting-style:h-0 [&[hidden]:not([hidden='until-found'])]:hidden"60 {...props}61 >62 <div className={cn("pb-2.5", className)}>{children}</div>63 </BaseAccordion.Panel>64 )65}6667export { Accordion, AccordionItem, AccordionTrigger, AccordionContent }
Files it writes
More from 9ui
All 56 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| alertalert | 9ui | Components | Free | no deps | |
| alert-dialogalert-dialog | 9ui | Components | Free | no deps | |
| aspect-ratioaspect-ratio | 9ui | Components | Free | no deps | |
| autocompleteautocomplete | 9ui | Components | Free | no deps | |
| avataravatar | 9ui | Components | Free | no deps | |
| badgebadge | 9ui | Components | Free | no deps | |
| breadcrumbsbreadcrumbs | 9ui | Components | Free | no deps | |
| buttonbutton | 9ui | Components | Free | no deps |
