Pages équipe + conclusion, colonnes de page libre, réglages couverture
- Page « équipe » : roster statique du collectif (composables/useTeam), portraits servis depuis public/portraits, grille ≤ 3 colonnes équilibrée (portrait/nom/rôle/présentation), sélection + surcharges par membre (repliables, réordonnables, réinitialisables) dans le composeur - Page « conclusion » : « Merci ! » centré + rappel des contacts - Page libre : 1 à 3 colonnes texte (markdown) ou images avec sous-titres, réordonnables ; migration des champs body/media legacy vers columns - Couverture : texte libre sous l'intro, adresse en bas à gauche (3 lignes), case « afficher les années » au niveau du document - Sommaire : items centrés (self-center), filet en points dégradés stable - Retrait de la dépendance morte pagedjs - Docs à jour (CLAUDE.md, README) ; spec marquée comme archive réalisée
This commit is contained in:
35
CLAUDE.md
35
CLAUDE.md
@@ -31,21 +31,36 @@ Mot de passe dev : `figureslibres` (`PORTFOLIO_PASSWORD`).
|
||||
- `portfolio-store.ts` : CRUD des portfolios (JSON sur disque), gel/dégel du contenu.
|
||||
- `media.ts`, `session.ts`.
|
||||
- `server/api/` — endpoints (auth, projects, portfolios, media, sync, exports, public).
|
||||
- `components/templates/` — pages du gabarit (cover, toc, projet, grille, page libre).
|
||||
- `components/templates/` — pages du gabarit (cover, toc, projet, grille, page
|
||||
libre, équipe `TeamTemplate`, conclusion `OutroTemplate`).
|
||||
- `components/preview/` — `PageRenderer` (dispatch) + `PageViewport` (aperçu à l'échelle).
|
||||
- `components/composer/` — UI de composition (curation médias, fonds, pickers).
|
||||
- `composables/useTeam.ts` — roster statique du collectif (`TEAM_ROSTER` : nom,
|
||||
portrait, rôle et présentation par défaut de chaque membre) ; les portraits
|
||||
sont servis en statique depuis `public/portraits/`.
|
||||
- `pages/print/[id].vue` — **rendu print servant à la génération PDF** (ne pas casser).
|
||||
- `types/index.ts` — modèle de données complet et commenté (source de vérité du schéma).
|
||||
|
||||
## Modèle de données (résumé)
|
||||
|
||||
Un `Portfolio` = `cover` (CoverConfig) + `pages[]`. Types de page : `cover`,
|
||||
`toc`, `project` (couverture d'un projet, disposition `band` = bandeau haut **ou**
|
||||
`split` = colonne texte + image pleine hauteur à droite), `project-grid` (grille
|
||||
d'images entières), `free`. Le contenu Grav (`Project`, `MediaAsset`) est **en
|
||||
lecture seule**. À la génération, le contenu utilisé est **figé** dans
|
||||
`data/frozen/<id>/` (`FrozenSnapshot`) : régénérer redonne le même PDF ;
|
||||
« Réactualiser depuis Grav » resynchronise volontairement.
|
||||
Un `Portfolio` = `cover` (CoverConfig) + `pages[]`. Types de page :
|
||||
- `cover` — couverture (titre, texte libre, date, site/mail, adresse en bas à
|
||||
gauche) ; `showYears` (au niveau du portfolio) masque les années des projets.
|
||||
- `toc` — sommaire, généré depuis les pages projet (hérite du filet de la couverture).
|
||||
- `project` — couverture d'un projet, disposition `band` (bandeau haut) **ou**
|
||||
`split` (colonne texte + image pleine hauteur à droite).
|
||||
- `project-grid` — grille d'images entières.
|
||||
- `free` — page libre : 1 à 3 **colonnes** (`FreeColumn`) de texte (markdown) ou
|
||||
d'images, chacune avec sous-titre optionnel (les champs `body`/`media` legacy
|
||||
sont migrés vers `columns` à l'ouverture, avec repli au rendu disque).
|
||||
- `team` — page équipe : membres du roster en grille (≤ 3 colonnes, équilibrée),
|
||||
portrait + nom + rôle + présentation ; sélection et surcharges par membre.
|
||||
- `outro` — page de conclusion : « Merci ! » centré + rappel des contacts.
|
||||
|
||||
Le contenu Grav (`Project`, `MediaAsset`) est **en lecture seule**. À la
|
||||
génération, le contenu utilisé est **figé** dans `data/frozen/<id>/`
|
||||
(`FrozenSnapshot`) : régénérer redonne le même PDF ; « Réactualiser depuis Grav »
|
||||
resynchronise volontairement.
|
||||
|
||||
Chaque page porte un **fond unifié** `background` à trois modes :
|
||||
`white` | `tint` (aplat beige fixe `#efece3`) | `full` (la page — ou le bandeau /
|
||||
@@ -70,8 +85,8 @@ encre `FL_INK`). Il n'y a **plus** de couleur automatique par catégorie
|
||||
seule exception : le mot « Figures Libres » de la couverture (Bold).
|
||||
- **Liens Grav** : `stripTargetParam` retire le `?target=_blank` que Grav accole à
|
||||
chaque URL (lien projet + liens dans les corps de texte), à l'affichage.
|
||||
- Filet : `--fl-strip` (5 mm, couverture/sommaire/page libre) ou `--fl-strip-light`
|
||||
(2 mm, filet fin des grilles et des couvertures projet non « plein »).
|
||||
- Filet : `--fl-strip` (5 mm, couverture/sommaire/page libre/équipe/conclusion) ou
|
||||
`--fl-strip-light` (2 mm, filet fin des grilles et des couvertures projet non « plein »).
|
||||
|
||||
## Pièges Chromium print (avant de toucher aux templates)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user