| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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<MenuItem | MenuGroup>
- /**
- * Service responsable de la génération d'un menu
- */
- interface MenuBuilder {
- getMenuName: () => string
- build: () => MenuItem | MenuGroup | null
- }
|