import type { MENU_LINK_TYPE } from '~/types/enum/layout' import type { LINK_TARGET } from '~/types/enum/enums' 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 /** Définit l'attribut 'target' du lien */ target?: LINK_TARGET } /** * Sous-menu, regroupant d'autres MenuItem et/ou MenuGroup */ interface MenuGroup { label: string icon?: IconItem children?: MenuItems actions?: MenuItems target?: LINK_TARGET } type MenuItems = Array /** * Service responsable de la génération d'un menu */ interface MenuBuilder { getMenuName: () => string build: () => MenuItem | MenuGroup | null }