@nayan-ui/react-native
Version:
React Native Component Library for smooth and faster mobile application development.
55 lines (54 loc) • 1.65 kB
JavaScript
import React, { useMemo } from 'react';
import { NText } from "./NText.js";
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "./ui/accordion.js";
import { cn } from "../lib/utils.js";
import { jsx as _jsx, jsxs as _jsxs } from "react-native-css-interop/jsx-runtime";
export const NAccordion = /*#__PURE__*/React.memo(({
items,
multiple = false,
defaultValue,
className,
itemClassName,
titleClassName,
contentClassName
}) => {
const processedItems = useMemo(() => items.map((item, index) => ({
...item,
id: item.id || `item-${index}`
})), [items]);
const accordionProps = useMemo(() => ({
className: cn('w-full', className),
...(multiple ? {
type: 'multiple',
defaultValue: defaultValue || []
} : {
type: 'single',
collapsible: true,
defaultValue: defaultValue?.[0]
})
}), [multiple, defaultValue, className]);
return _jsx(Accordion, {
...accordionProps,
children: processedItems.map(item => _jsxs(AccordionItem, {
value: item.id,
disabled: item.disabled,
className: itemClassName,
children: [_jsx(AccordionTrigger, {
className: "px-4 py-3",
children: _jsx(NText, {
className: cn('text-lg font-medium', titleClassName),
children: item.title
})
}), _jsx(AccordionContent, {
className: "px-4 pb-3",
children: _jsx(NText, {
className: cn('text-muted', contentClassName),
children: item.content
})
})]
}, item.id))
});
});
NAccordion.displayName = 'NAccordion';
//# sourceMappingURL=NAccordion.js.map
;