import { MenuCategory } from '../composables/vue/useMenu'; /** * One level of the category menu, rendering itself for each deeper level. * * Recursion lives in its own component because a Vue SFC template cannot call * a local render function the way JSX can — a self-referencing component is the * idiomatic equivalent. State stays in `Menu.vue`: this receives the open path * and emits intent, so there is a single source of truth for what is open. */ export interface MenuLevelProps { /** Categories to render at this level. */ items: MenuCategory[]; /** 0-based depth of this level. */ level: number; /** Deepest level that may render, already resolved against the style's cap. */ maxDepth: number; /** Open branch, root → deepest, as category ids. */ openPath: number[]; /** `'columns'` for the flyout styles, `'accordion'` for the nested mobile menu. */ variant: 'columns' | 'accordion'; /** Resolves a category's href — owned by `Menu.vue` (honours `getUrl`/config). */ getUrl: (cat: MenuCategory) => string; /** Resolves a category's display name. */ getName: (cat: MenuCategory) => string; /** Resolves a category's visible children. */ getChildren: (cat: MenuCategory) => MenuCategory[]; /** Click handler — owned by `Menu.vue` so SPA routing stays in one place. */ onItemClick: (cat: MenuCategory, e: any) => void; } declare const _default: import('vue').DefineComponent any; toggle: (level: number, categoryId: number) => any; }, string, import('vue').PublicProps, Readonly & Readonly<{ onOpen?: ((level: number, categoryId: number | null) => any) | undefined; onToggle?: ((level: number, categoryId: number) => any) | undefined; }>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>; export default _default;