Accordion
avail-widgets/accordionFreeComponent
UI primitive: Accordion
Install it
npx shadcn@latest add https://elements.nexus.availproject.org/r/accordion.jsonSource
1"use client";23import * as React from "react";4import * as AccordionPrimitive from "@radix-ui/react-accordion";5import { ChevronDownIcon } from "lucide-react";67import { cn } from "@/lib/utils";89function Accordion({10 ...props11}: React.ComponentProps<typeof AccordionPrimitive.Root>) {12 return <AccordionPrimitive.Root data-slot="accordion" {...props} />;13}1415function AccordionItem({16 className,17 ...props18}: React.ComponentProps<typeof AccordionPrimitive.Item>) {19 return (20 <AccordionPrimitive.Item21 data-slot="accordion-item"22 className={cn("border-b last:border-b-0", className)}23 {...props}24 />25 );26}2728function AccordionTrigger({29 className,30 children,31 hideChevron = true,32 containerClassName = "w-full",33 ...props34}: React.ComponentProps<typeof AccordionPrimitive.Trigger> & {35 hideChevron?: boolean;36 containerClassName?: string;37}) {38 return (39 <AccordionPrimitive.Header className={cn("flex", containerClassName)}>40 <AccordionPrimitive.Trigger41 data-slot="accordion-trigger"42 className={cn(43 "focus-visible:border-ring focus-visible:ring-ring/50 flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:ring-[3px] disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",44 className,45 )}46 {...props}47 >48 {children}49 {!hideChevron && (50 <ChevronDownIcon className="text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200" />51 )}52 </AccordionPrimitive.Trigger>53 </AccordionPrimitive.Header>54 );55}5657function AccordionContent({58 className,59 children,60 ...props61}: React.ComponentProps<typeof AccordionPrimitive.Content>) {62 return (63 <AccordionPrimitive.Content64 data-slot="accordion-content"65 className="data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm"66 {...props}67 >68 <div className={cn("pt-0 pb-4", className)}>{children}</div>69 </AccordionPrimitive.Content>70 );71}7273export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
What it pulls in
npm packages
Other registry items
Files it writes
More from avail-widgets
All 27 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| All Elementsall | avail-widgets | Components | Free | no deps | |
| Animated Spinneranimated-spinner | avail-widgets | Components | Free | no deps | |
| Badgebadge | avail-widgets | Components | Free | 2 deps | |
| Bridge Depositbridge-deposit | avail-widgets | Components | Free | 3 deps · 32 files | |
| Buttonbutton | avail-widgets | Components | Free | 2 deps | |
| Cardcard | avail-widgets | Components | Free | no deps | |
| Checkboxcheckbox | avail-widgets | Components | Free | 2 deps | |
| Collapsiblecollapsible | avail-widgets | Components | Free | 1 dep |
