Collapsible
adn-ui/collapsibleFreeComponent
A collapsible panel controlled by a trigger button.
Live preview
live · rendered by the registry
Rendered by adn-ui on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://ui.awaiden.com/r/collapsible.jsonSource
1"use client";23import "./collapsible.css";4import { Collapsible as BaseCollapsible } from "@base-ui/react/collapsible";5import type React from "react";6import { cn } from "tailwind-variants";78import { CollapsibleContext, useCollapsibleContext } from "./collapsible.context";9import { collapsibleVariants, type CollapsibleVariants } from "./collapsible.variants";1011export type CollapsibleProps = CollapsibleVariants &12 React.ComponentProps<typeof BaseCollapsible.Root>;1314export const CollapsibleRoot = ({ children, className, variant, ...props }: CollapsibleProps) => {15 const slots = collapsibleVariants({ variant });1617 return (18 <CollapsibleContext.Provider value={{ slots }}>19 <BaseCollapsible.Root className={cn(slots.root(), className)} {...props}>20 {children}21 </BaseCollapsible.Root>22 </CollapsibleContext.Provider>23 );24};2526export type CollapsibleTriggerProps = React.ComponentProps<typeof BaseCollapsible.Trigger> & {27 hideChevron?: boolean;28};2930export const CollapsibleTrigger = ({31 children,32 className,33 hideChevron = false,34 ...props35}: CollapsibleTriggerProps) => {36 const { slots } = useCollapsibleContext();37 return (38 <BaseCollapsible.Trigger className={cn(slots.trigger(), className)} {...props}>39 {children}40 {!hideChevron && (41 <svg42 className="text-muted-foreground h-4 w-4 shrink-0 transition-transform duration-150 group-data-panel-open:rotate-90"43 fill="none"44 stroke="currentColor"45 strokeLinecap="round"46 strokeLinejoin="round"47 strokeWidth="2"48 viewBox="0 0 24 24"49 >50 <path d="m9 18 6-6-6-6" />51 </svg>52 )}53 </BaseCollapsible.Trigger>54 );55};5657export type CollapsiblePanelProps = React.ComponentProps<typeof BaseCollapsible.Panel>;5859export const CollapsiblePanel = ({ children, className, ...props }: CollapsiblePanelProps) => {60 const { slots } = useCollapsibleContext();61 return (62 <BaseCollapsible.Panel className={cn(slots.panel(), className)} {...props}>63 <div className="text-muted-foreground px-1 py-2">{children}</div>64 </BaseCollapsible.Panel>65 );66};
What it pulls in
npm packages
Files it writes
More from adn-ui
All 46 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | adn-ui | Components | Free | 2 deps · 5 files | |
| Alert Dialogalert-dialog | adn-ui | Components | Free | 2 deps · 5 files | |
| Aspect Ratioaspect-ratio | adn-ui | Components | Free | 1 dep · 5 files | |
| Autocompleteautocomplete | adn-ui | Components | Free | 2 deps · 5 files | |
| Avataravatar | adn-ui | Components | Free | 2 deps · 5 files | |
| Badgebadge | adn-ui | Components | Free | 1 dep · 5 files | |
| Breadcrumbbreadcrumb | adn-ui | Components | Free | 1 dep · 5 files | |
| Buttonbutton | adn-ui | Components | Free | 1 dep · 4 files |
