import type { TabsProps } from 'react-aria-components'; import { Tab as AriaTab, TabList, TabPanel, TabPanels, Tabs } from 'react-aria-components'; import { twMerge } from 'tailwind-merge'; type TabItem = { key: string; label: React.ReactNode; children: React.ReactNode; disabled?: boolean; }; // type TabProps = { // items: TabItem[]; // activeKey?: string; // onClick?: (key: string) => void; // className?: string; // }; /** * @desc 탭 컴포넌트 * @param items 탭 아이템 목록 * @param activeKey 현재 활성화된 탭의 키 * @param onClick 탭 변경 이벤트 * @param className 추가 클래스명 */ export interface TabProps extends Omit { className?: string; items: TabItem[]; tabPanelClassName?: string; tabPanelsClassName?: string; } export const Tab = ({ items, className, tabPanelClassName, tabPanelsClassName, ...restProps }: TabProps) => { return ( {(item) => ( {item.label} )} {(item) => ( {item.children} )} ); };