| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- 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
- /** Le sous-menu est-il déplié ou non */
- expanded: boolean
- }
- type MenuItems = Array<MenuItem | MenuGroup>
- /**
- * Service responsable de la génération d'un menu
- */
- interface MenuBuilder {
- build: () => MenuItem | MenuGroup | null
- }
|