| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import {MENU_LINK_TYPE} from "~/types/enum/layout";
- interface IconItem {
- name?: string
- avatarId?: number | null
- avatarByDefault?: string
- }
- /**
- * Entrée d'un menu, correspondant à un lien de navigation
- */
- interface MenuItem {
- label: string
- icon?: IconItem
- to?: string
- /** Type de lien (interne, externe, v1) */
- type: MENU_LINK_TYPE
- avatar?: number
- /** Correspond à la page actuelle */
- active: boolean
- }
- /**
- * Sous-menu, regroupant d'autres MenuItem et/ou MenuGroup
- */
- interface MenuGroup {
- label: string
- icon?: IconItem
- children?: MenuItems
- actions?: MenuItems
- }
- type MenuItems = Array<MenuItem | MenuGroup>
- /**
- * Service responsable de la génération d'un menu
- */
- interface MenuBuilder {
- getMenuName: () => string
- build: () => MenuItem | MenuGroup | null
- }
|