import {MENU_LINK_TYPE} from "~/types/enum/layout"; interface IconItem { name?: string // TODO: les avatars sont ils encore utiles? 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 // TODO: revoir l'utilité de avatar? 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 /** * Service responsable de la génération d'un menu */ interface MenuBuilder { build: () => MenuItem | MenuGroup | null }