import React, { useMemo } from "react"; import { Accordion, cn } from "heroui-native"; import { NText } from "./NText"; export interface AccordionItemData { id?: string; title: string; content: string; isDisabled?: boolean; } export interface NAccordionProps { items: AccordionItemData[]; selectionMode?: "single" | "multiple"; /** Alias of `selectionMode`; the React package calls it `type`. */ type?: "single" | "multiple"; defaultValue?: string | string[]; variant?: "default" | "surface"; hideSeparator?: boolean; isCollapsible?: boolean; isDisabled?: boolean; /** Alias of `isDisabled`. */ disabled?: boolean; className?: string; itemClassName?: string; titleClassName?: string; contentClassName?: string; } export const NAccordion = React.memo( ({ items, selectionMode, type, defaultValue, variant, hideSeparator, isCollapsible, isDisabled, disabled, className, itemClassName, titleClassName, contentClassName, }) => { const mode = selectionMode ?? type ?? "single"; const off = disabled ?? isDisabled; const processedItems = useMemo( () => items.map((item, index) => ({ ...item, id: item.id || `item-${index}`, })), [items], ); return ( {processedItems.map((item) => ( {item.title} {item.content} ))} ); }, ); NAccordion.displayName = "NAccordion";