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
}
