layout.d.ts 841 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import {MENU_LINK_TYPE} from "~/types/enum/layout";
  2. interface IconItem {
  3. name?: string
  4. avatarId?: number | null
  5. avatarByDefault?: string
  6. }
  7. /**
  8. * Entrée d'un menu, correspondant à un lien de navigation
  9. */
  10. interface MenuItem {
  11. label: string
  12. icon?: IconItem
  13. to?: string
  14. /** Type de lien (interne, externe, v1) */
  15. type: MENU_LINK_TYPE
  16. avatar?: number
  17. /** Correspond à la page actuelle */
  18. active: boolean
  19. }
  20. /**
  21. * Sous-menu, regroupant d'autres MenuItem et/ou MenuGroup
  22. */
  23. interface MenuGroup {
  24. label: string
  25. icon?: IconItem
  26. children?: MenuItems
  27. actions?: MenuItems
  28. }
  29. type MenuItems = Array<MenuItem | MenuGroup>
  30. /**
  31. * Service responsable de la génération d'un menu
  32. */
  33. interface MenuBuilder {
  34. getMenuName: () => string
  35. build: () => MenuItem | MenuGroup | null
  36. }