Menu de navigation (visiteur non connecté)
Le header non connecté est Orientation | Pistes d'études | Articles, sur les pages publiques SSR (voir ssr-pages.md) comme dans la SPA. Orientation est un groupe déroulant : au clic, des cartes (« Test d'orientation », « Échanger avec des étudiants »), en accordéon sur mobile.
Deux copies à garder synchronisées à la main
Le header existe deux fois, sans code partagé :
| Où | Fichiers |
|---|---|
| SPA (Vue/Quasar) | front/src/components/layouts/standard/menu-items.ts (données), toolbar/ToolbarContent.vue (desktop + drawer mobile), toolbar/MenuDropdown.vue et MenuDropdownCard.vue (panneau desktop), layouts/Logo.vue (lien du logo) |
| Pages SSR (Handlebars) | api/src/public-pages/views/partials/header.hbs, données des cartes dans services/orientation-menu.data.ts (exposées par le helper orientationMenu), styles .site-header__* dans api/src/public/css/public.css |
Modifier un libellé, un lien ou une carte impose de le faire des deux côtés (menu-items.ts d'un côté, orientation-menu.data.ts de l'autre). Les icônes des cartes (icone_Vert_boussole.png, icone_Vert_Bulle_discussion.png) ne sont qu'à un seul endroit, api/src/public/images/, servi à la SPA via le proxy /images/.
Règles non évidentes
- Dans
menu-items.ts, un item avecchildrenest un groupe déroulant (sanspath).NavMobile.vue(barre d'onglets du bas en mobile) les ignore : Orientation n'y apparaît pas, seul le drawer du burger le propose. - Le drawer mobile de la SPA est rendu dans le
q-headerde Quasar, dont le texte est blanc : tout élément qui n'est pas unDBtn(ex. l'en-tête deDExpansionItem) doit fixer sa couleur (text-text), sinon il est invisible sur fond blanc. - Le partial
header.hbsest chargé au démarrage de l'API (registerPartialsdansmain.ts) : en dev, un changement de ce fichier n'est visible qu'après redémarrage du conteneur API. Le CSS, lui, est servi à chaud. - Une règle globale
a:hover { text-decoration: underline; }(public.css) s'applique à toute balise<a>:.site-header__card:hoverdoit explicitement repasser entext-decoration: none, sinon le survol d'une carte souligne tout son texte. - Les icônes doivent être dans un dossier relayé vers l'API par le front (
/images/,/svg/ssr/: proxy Vite dansquasar.config.js,locationdansnginx.conf.template)./img/ne l'est pas : il est servi par le front (front/public/img/), donc un fichier déposé dansapi/src/public/img/renvoie une 404 depuis la page.