import type { ReactNode } from 'react';
import * as AccordionPrimitive from '@radix-ui/react-accordion';
/**
 * 아코디언 아이템 구성
 */
export interface AccordionItemConfig {
    /** 아이템의 고유 값 */
    value: string;
    /** 트리거에 표시될 콘텐츠 */
    trigger: ReactNode;
    /** 펼쳐질 때 표시될 콘텐츠 */
    content: ReactNode;
    /** 아이템 비활성화 여부 */
    disabled?: boolean;
    /** 아이템에 적용할 클래스명 */
    className?: string;
    /** 아이템에 적용할 인라인 스타일 */
    style?: React.CSSProperties;
    /** 트리거에 적용할 클래스명 */
    triggerClassName?: string;
    /** 트리거에 적용할 인라인 스타일 */
    triggerStyle?: React.CSSProperties;
    /** 콘텐츠에 적용할 클래스명 */
    contentClassName?: string;
    /** 콘텐츠에 적용할 인라인 스타일 */
    contentStyle?: React.CSSProperties;
    /** 아이콘을 커스터마이징할 수 있는 ReactNode (기본 ChevronDown 아이콘 대신 사용) */
    icon?: ReactNode;
    /** 아이템별 접근성 라벨 */
    'aria-label'?: string;
    /** 아이템별 접근성 설명 ID */
    'aria-labelledby'?: string;
    /** 아이템에 전달할 추가 props */
    [key: string]: unknown;
}
/**
 * 아코디언 크기
 */
export type AccordionSize = 'small' | 'medium' | 'large';
/**
 * 아코디언 방향
 */
export type AccordionOrientation = 'vertical' | 'horizontal';
/**
 * 아코디언 컴포넌트 Props (Single 타입)
 */
export interface AccordionSingleProps extends Omit<AccordionPrimitive.AccordionSingleProps, 'children' | 'className'> {
    /** 아코디언 아이템 목록 */
    items: AccordionItemConfig[];
    /** 아코디언 방향 */
    orientation?: AccordionOrientation;
    /** 아코디언 크기 */
    size?: AccordionSize;
    /** 전체 아코디언에 대한 접근성 라벨 (ariaLabel과 ariaLabelledBy 중 하나만 제공) */
    ariaLabel?: string;
    /** 아코디언을 설명하는 요소의 ID (ariaLabel과 ariaLabelledBy 중 하나만 제공) */
    ariaLabelledBy?: string;
    /** 컨테이너에 적용할 클래스명 */
    className?: string;
    /** 컨테이너에 적용할 인라인 스타일 */
    style?: React.CSSProperties;
}
/**
 * 아코디언 컴포넌트 Props (Multiple 타입)
 */
export interface AccordionMultipleProps extends Omit<AccordionPrimitive.AccordionMultipleProps, 'children' | 'className'> {
    /** 아코디언 아이템 목록 */
    items: AccordionItemConfig[];
    /** 아코디언 방향 */
    orientation?: AccordionOrientation;
    /** 아코디언 크기 */
    size?: AccordionSize;
    /** 전체 아코디언에 대한 접근성 라벨 (ariaLabel과 ariaLabelledBy 중 하나만 제공) */
    ariaLabel?: string;
    /** 아코디언을 설명하는 요소의 ID (ariaLabel과 ariaLabelledBy 중 하나만 제공) */
    ariaLabelledBy?: string;
    /** 컨테이너에 적용할 클래스명 */
    className?: string;
    /** 컨테이너에 적용할 인라인 스타일 */
    style?: React.CSSProperties;
}
/**
 * 아코디언 컴포넌트 Props
 */
export interface AccordionProps {
    /** 아코디언 아이템 목록 */
    items: AccordionItemConfig[];
    /** 아코디언 방향 */
    orientation?: AccordionOrientation;
    /** 아코디언 크기 */
    size?: AccordionSize;
    /** 전체 아코디언에 대한 접근성 라벨 (ariaLabel과 ariaLabelledBy 중 하나만 제공) */
    ariaLabel?: string;
    /** 아코디언을 설명하는 요소의 ID (ariaLabel과 ariaLabelledBy 중 하나만 제공) */
    ariaLabelledBy?: string;
    /** 컨테이너에 적용할 클래스명 */
    className?: string;
    /** 컨테이너에 적용할 인라인 스타일 */
    style?: React.CSSProperties;
    /** 아코디언 타입 (single: 하나만 열림, multiple: 여러 개 열림) */
    type?: 'single' | 'multiple';
    /** 모든 아이템이 닫힐 수 있는지 여부 (type="single"일 때만 적용) */
    collapsible?: boolean;
    /** 기본으로 열릴 아이템의 값 */
    defaultValue?: string | string[];
    /** 현재 열린 아이템의 값 (제어 컴포넌트) */
    value?: string | string[];
    /** 아코디언 값이 변경될 때 호출되는 콜백 */
    onValueChange?: (value: string | string[]) => void;
    /** Radix UI Accordion Root의 추가 props */
    [key: string]: unknown;
}
//# sourceMappingURL=types.d.ts.map