import type { ShallowRef } from "vue"; import type { Alignment, Placement } from "@affino/menu-core"; import type { MenuController } from "./useMenuController"; import { type MenuTreeSnapshot } from "./useMenuTreeState"; export interface MenuPositioningOptions { placement?: Placement; align?: Alignment; gutter?: number; viewportPadding?: number; } export interface MenuProviderValue { controller: MenuController; parentController: MenuController | null; rootId: string; submenuItemId?: string; positioning?: MenuPositioningOptions; tree: { state: ShallowRef; }; /** Direct reference to the parent provider for collapsing submenu plumbing. */ parent?: MenuProviderValue | null; } export interface SubmenuProviderValue { parent: MenuProviderValue; child: MenuProviderValue; parentSubmenu?: SubmenuProviderValue | null; } interface ProvideMenuProviderArgs { controller: MenuController; parentController?: MenuController | null; parent?: MenuProviderValue | null; rootId?: string; submenuItemId?: string; positioning?: MenuPositioningOptions; } /** * Registers the current menu scope, wiring it to the shared tree snapshot and exposing * convenience references to the parent/root providers. */ export declare function provideMenuProvider(value: ProvideMenuProviderArgs): MenuProviderValue; export declare function useMenuProvider(): MenuProviderValue; interface ProvideSubmenuProviderArgs { parent: MenuProviderValue; child: MenuProviderValue; parentSubmenu?: SubmenuProviderValue | null; } /** Links the current submenu with its parent so pointer prediction can walk the chain. */ export declare function provideSubmenuProvider(value: ProvideSubmenuProviderArgs): SubmenuProviderValue; export declare function useSubmenuProvider(): SubmenuProviderValue; export declare function useOptionalSubmenuProvider(): SubmenuProviderValue | null; export type { MenuTreeSnapshot } from "./useMenuTreeState"; //# sourceMappingURL=context.d.ts.map