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>;