@arolariu/components
Version:
🎨 70+ beautiful, accessible React components built on Base UI. TypeScript-first, CSS Modules styling, tree-shakeable, SSR-ready. Perfect for modern web apps, design systems & rapid prototyping. Zero config, maximum flexibility! ⚡
119 lines (118 loc) • 4.18 kB
JavaScript
"use client";
import { jsx, jsxs } from "react/jsx-runtime";
import { Accordion } from "@base-ui/react/accordion";
import { mergeProps } from "@base-ui/react/merge-props";
import { useRender } from "@base-ui/react/use-render";
import { ChevronDown } from "lucide-react";
import { cn } from "../../lib/utilities.js";
import accordion_module from "./accordion.module.js";
import * as __rspack_external_react from "react";
function accordion_Accordion(props) {
const { className, render, type = "single" } = props;
const accordionRender = useRender({
defaultTagName: "div",
render: render,
props: mergeProps({
className: cn(className)
}, {})
});
if ("multiple" === type) {
const { defaultValue, onValueChange, value, ...otherProps } = omitAccordionWrapperProps(props);
return /*#__PURE__*/ jsx(Accordion.Root, {
multiple: true,
defaultValue: defaultValue,
onValueChange: onValueChange,
value: value,
...otherProps,
render: accordionRender
});
}
const { defaultValue, onValueChange, value, ...otherProps } = omitAccordionWrapperProps(props);
return /*#__PURE__*/ jsx(Accordion.Root, {
multiple: false,
defaultValue: defaultValue ? [
defaultValue
] : void 0,
onValueChange: (nextValue, eventDetails)=>{
onValueChange?.(nextValue[0], eventDetails);
},
value: value ? [
value
] : void 0,
...otherProps,
render: accordionRender
});
}
accordion_Accordion.displayName = "Accordion";
function omitAccordionWrapperProps(props) {
const rootProps = {
...props
};
Reflect.deleteProperty(rootProps, "className");
Reflect.deleteProperty(rootProps, "collapsible");
Reflect.deleteProperty(rootProps, "render");
Reflect.deleteProperty(rootProps, "type");
return rootProps;
}
function AccordionItem(props) {
const { className, children, render, ...otherProps } = props;
return /*#__PURE__*/ jsx(Accordion.Item, {
...otherProps,
render: useRender({
defaultTagName: "div",
render: render,
props: mergeProps({
className: cn(accordion_module.item, className)
}, {})
}),
children: children
});
}
AccordionItem.displayName = "AccordionItem";
const AccordionTrigger = /*#__PURE__*/ __rspack_external_react.forwardRef((props, ref)=>{
const { className, children, render, ...otherProps } = props;
return /*#__PURE__*/ jsx(Accordion.Header, {
className: accordion_module.header,
children: /*#__PURE__*/ jsxs(Accordion.Trigger, {
ref: ref,
...otherProps,
render: useRender({
defaultTagName: "button",
render: render,
props: mergeProps({
className: cn(accordion_module.trigger, className)
}, {})
}),
children: [
/*#__PURE__*/ jsx("span", {
children: children
}),
/*#__PURE__*/ jsx(ChevronDown, {
className: accordion_module.icon
})
]
})
});
});
AccordionTrigger.displayName = "AccordionTrigger";
const AccordionContent = /*#__PURE__*/ __rspack_external_react.forwardRef((props, ref)=>{
const { className, children, render, ...otherProps } = props;
return /*#__PURE__*/ jsx(Accordion.Panel, {
ref: ref,
...otherProps,
render: useRender({
defaultTagName: "div",
render: render,
props: mergeProps({
className: accordion_module.panel
}, {})
}),
children: /*#__PURE__*/ jsx("div", {
className: cn(accordion_module.panelInner, className),
children: children
})
});
});
AccordionContent.displayName = "AccordionContent";
export { AccordionContent, AccordionItem, AccordionTrigger, accordion_Accordion as Accordion };
//# sourceMappingURL=accordion.js.map