import React, { HTMLAttributes } from 'react'; export interface MenuContextProps { activeMenu?: string; activeMenuGroup?: string; setActiveMenu: (id?: string) => void; setActiveMenuGroup: (id?: string) => void; openMenuGroupIds: string[]; /** MenuGroup 열림 상태를 토글합니다. accordion이면 나머지 그룹은 닫힙니다. */ toggleMenuGroup: (groupId: string) => void; /** MenuGroup을 펼칩니다. 이미 열려 있으면 유지합니다. */ expandMenuGroup: (groupId: string) => void; /** @deprecated openMenuGroupIds를 대신 사용해주세요. */ openMenuGroup?: string; /** @deprecated toggleMenuGroup, expandMenuGroup을 대신 사용해주세요. */ setOpenMenuGroup: (groupId?: string) => void; onClickMenu: ({ id, groupId }: { id?: string; groupId?: string; }) => void; onMenuGroupOpenChange?: (groupId: string) => void; /** 한 번에 하나의 MenuGroup만 열립니다. */ accordion: boolean; /** accordion일 때만 적용됩니다. */ toggleMode: boolean; dense: boolean; } export declare const MenuContext: React.Context; export declare const useMenuContext: () => MenuContextProps; export interface MenuProps extends Omit, 'onChange'> { /** 선택된 메뉴 ID */ selected?: MenuContextProps['activeMenu']; /** 메뉴 선택 시 호출되는 함수 */ onChange?: (id: MenuContextProps['activeMenu']) => void; /** * MenuGroup 서브 메뉴 open/close시 이벤트를 전달합니다. */ onGroupOpenChange?: (id: MenuContextProps['activeMenuGroup']) => void; /** * 한 번에 하나의 MenuGroup만 열리게 합니다. * @default false */ accordion?: MenuContextProps['accordion']; /** * 열려 있는 MenuGroup을 다시 눌러 닫을 수 있는지 여부입니다. * accordion일 때만 적용되며, 기본 동작(다중 열림)에서는 항상 토글되므로 무시됩니다. * @default false */ collapsible?: MenuContextProps['toggleMode']; /** @default true */ dense?: boolean; } export declare const Menu: React.ForwardRefExoticComponent>;