@arolariu/components
Version:
🎨 60+ beautiful, accessible React components built on Radix UI. TypeScript-first, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡
49 lines (48 loc) • 2.14 kB
JavaScript
"use client";
import { jsx, jsxs } from "react/jsx-runtime";
import "react";
import { Content, Header, Item, Root, Trigger } from "@radix-ui/react-accordion";
import { ChevronDownIcon } from "lucide-react";
import { cn } from "../../lib/utils.js";
function Accordion({ ...props }) {
return /*#__PURE__*/ jsx(Root, {
"data-slot": "accordion",
...props
});
}
function AccordionItem({ className, ...props }) {
return /*#__PURE__*/ jsx(Item, {
"data-slot": "accordion-item",
className: cn("border-b last:border-b-0", className),
...props
});
}
function AccordionTrigger({ className, children, ...props }) {
return /*#__PURE__*/ jsx(Header, {
className: "flex",
children: /*#__PURE__*/ jsxs(Trigger, {
"data-slot": "accordion-trigger",
className: cn("focus-visible:border-neutral-950 focus-visible:ring-neutral-950/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 dark:focus-visible:border-neutral-300 dark:focus-visible:ring-neutral-300/50", className),
...props,
children: [
children,
/*#__PURE__*/ jsx(ChevronDownIcon, {
className: "text-neutral-500 pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200 dark:text-neutral-400"
})
]
})
});
}
function AccordionContent({ className, children, ...props }) {
return /*#__PURE__*/ jsx(Content, {
"data-slot": "accordion-content",
className: "data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",
...props,
children: /*#__PURE__*/ jsx("div", {
className: cn("pt-0 pb-4", className),
children: children
})
});
}
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger };
//# sourceMappingURL=accordion.js.map