Accordion
gymnopedies/accordionFreeComponent
Accordion — gymnopédies-themed shadcn primitive.
Install it
npx shadcn@latest add https://gymnopedies.shoota.work/r/accordion.jsonSource
1import { Accordion as AccordionPrimitive } from "@base-ui/react/accordion"23import { cn } from "@/lib/utils"4import { ChevronDownIcon, ChevronUpIcon } from "lucide-react"56function Accordion({ className, ...props }: AccordionPrimitive.Root.Props) {7 return (8 <AccordionPrimitive.Root9 data-slot="accordion"10 className={cn("flex w-full flex-col", className)}11 {...props}12 />13 )14}1516function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props) {17 return (18 <AccordionPrimitive.Item19 data-slot="accordion-item"20 className={cn("not-last:border-b", className)}21 {...props}22 />23 )24}2526function AccordionTrigger({27 className,28 children,29 ...props30}: AccordionPrimitive.Trigger.Props) {31 return (32 <AccordionPrimitive.Header className="flex">33 <AccordionPrimitive.Trigger34 data-slot="accordion-trigger"35 className={cn(36 "group/accordion-trigger relative flex flex-1 items-start justify-between rounded-lg border border-transparent py-2.5 text-left text-sm font-medium transition-all outline-none hover:underline focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:after:border-ring aria-disabled:pointer-events-none aria-disabled:opacity-50 **:data-[slot=accordion-trigger-icon]:ml-auto **:data-[slot=accordion-trigger-icon]:size-4 **:data-[slot=accordion-trigger-icon]:text-muted-foreground",37 className38 )}39 {...props}40 >41 {children}42 <ChevronDownIcon data-slot="accordion-trigger-icon" className="pointer-events-none shrink-0 group-aria-expanded/accordion-trigger:hidden" />43 <ChevronUpIcon data-slot="accordion-trigger-icon" className="pointer-events-none hidden shrink-0 group-aria-expanded/accordion-trigger:inline" />44 </AccordionPrimitive.Trigger>45 </AccordionPrimitive.Header>46 )47}4849function AccordionContent({50 className,51 children,52 ...props53}: AccordionPrimitive.Panel.Props) {54 return (55 <AccordionPrimitive.Panel56 data-slot="accordion-content"57 className="overflow-hidden text-sm data-open:animate-accordion-down data-closed:animate-accordion-up"58 {...props}59 >60 <div61 className={cn(62 "h-(--accordion-panel-height) pt-0 pb-2.5 data-ending-style:h-0 data-starting-style:h-0 [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4",63 className64 )}65 >66 {children}67 </div>68// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from gymnopedies
All 49 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Alertalert | gymnopedies | Components | Free | 1 dep | |
| Alert Dialogalert-dialog | gymnopedies | Components | Free | 1 dep | |
| Articlearticle | gymnopedies | Components | Free | no deps | |
| Aspect Ratioaspect-ratio | gymnopedies | Components | Free | no deps | |
| Avataravatar | gymnopedies | Components | Free | 1 dep | |
| Badgebadge | gymnopedies | Components | Free | 2 deps | |
| Breadcrumbbreadcrumb | gymnopedies | Components | Free | 2 deps | |
| Buttonbutton | gymnopedies | Components | Free | 2 deps |
