import type { HTMLAttributes, JSX, ReactNode } from 'react';
import type { Severity } from '../../constants/severity.types';
export interface AccordionItem {
id?: string;
header: ReactNode;
subheader?: ReactNode;
headerAddition?: ReactNode;
headerActions?: ReactNode;
headerIcon?: ReactNode;
severity?: Severity;
children: ReactNode;
disabled?: boolean;
}
type Size = 'sm' | 'md' | 'lg';
type Mode = 'single' | 'multiple';
type Variant = 'filled' | 'outlined' | 'default';
type OpenIndexes = number[] | 'all';
type RenderMode = 'lazy' | 'eager';
export interface AccordionProps extends Omit, 'children'> {
items: AccordionItem[];
mode?: Mode;
size?: Size;
variant?: Variant;
renderMode?: RenderMode;
/** Uncontrolled defaults */
defaultOpenIndex?: number | null;
defaultOpenIndexes?: OpenIndexes;
/** Controlled state */
openIndex?: number | null;
openIndexes?: OpenIndexes;
/** Change callbacks */
onOpenIndexChange?: (index: number | null) => void;
onOpenIndexesChange?: (indexes: number[]) => void;
}
export declare function Accordion({ items, mode, size, variant, renderMode, defaultOpenIndex, defaultOpenIndexes, openIndex, openIndexes, onOpenIndexChange, onOpenIndexesChange, className, ...rest }: AccordionProps): JSX.Element;
export {};