From 9a8f0cad65153ab1a4e4a529ed43d1a9201715dd Mon Sep 17 00:00:00 2001 From: Pontoporeia Date: Mon, 8 Jun 2026 10:50:15 +0200 Subject: [PATCH] =?UTF-8?q?fix(r=C3=A9pertoire):=20colonnes=20diff=C3=A9re?= =?UTF-8?q?nci=C3=A9es,=20scrollbars=20discr=C3=A8tes,=20fontes=20conforme?= =?UTF-8?q?s=20maquette,=20AP=20entre=20crochets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - grid-template-columns: années=0.4fr, orientations=1.2fr, AP/finalité/intermédiaires - scrollbars: WebKit 5px transparent + Firefox scrollbar-width:thin global - rep-entry: BBBDMSans Regular 398, --step--1 - années: BBBDMSans Medium 498 (semi-bold) - titres colonnes: Ductus Regular 398, text-secondary, letter-spacing 0.12em - AP: diminutifs entre crochets (ex: Design et Politique du Multiple [DPM]) - TODO: marquer les 4 correctifs répertoire comme faits --- TODO.md | 4 ++++ app/public/assets/css/base.css | 26 +++++++++++++++++++++ app/public/assets/css/repertoire.css | 25 +++++++++++++------- app/templates/partials/repertoire-index.php | 14 ++++++++++- 4 files changed, 59 insertions(+), 10 deletions(-) diff --git a/TODO.md b/TODO.md index b66813b..8ab051f 100644 --- a/TODO.md +++ b/TODO.md @@ -7,3 +7,7 @@ - [x] Fix `.gitignore`: anchor `vendor/` to root (`/vendor/`) so `app/public/assets/js/vendor/` (htmx, OverType, FilePond) is tracked - [x] Fix migration `025_lowercase_languages.sql`: deduplicate languages before LOWER() to avoid UNIQUE constraint violation (`Néerlandais`/`néerlandais`) - [x] Fix home page: load ALL published theses grouped by year (desc), shuffled randomly within each year (instead of only ~20 from latest year) +- [x] Répertoire: colonnes à largeurs différenciées (Années plus étroites, Orientations/AP plus larges) +- [x] Répertoire: barres de scroll discrètes (thin + semi-transparentes) +- [x] Répertoire: fontes/graisses conformes à la maquette (Ductus pour titres colonnes, années en bold, etc.) +- [x] Répertoire: diminutifs des AP entre crochets (ex: Design et Politique du Multiple [DPM]) diff --git a/app/public/assets/css/base.css b/app/public/assets/css/base.css index 0c0d7a7..a1fcace 100644 --- a/app/public/assets/css/base.css +++ b/app/public/assets/css/base.css @@ -10,6 +10,32 @@ html, body { overflow: hidden; } +/* ── Discreet scrollbars ─────────────────────────────────────────── */ +/* WebKit browsers */ +::-webkit-scrollbar { + width: 5px; + height: 5px; +} + +::-webkit-scrollbar-track { + background: transparent; +} + +::-webkit-scrollbar-thumb { + background: var(--text-tertiary); + border-radius: 3px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--text-secondary); +} + +/* Firefox */ +* { + scrollbar-width: thin; + scrollbar-color: var(--text-tertiary) transparent; +} + body { font-family: var(--font-body); background: var(--bg-primary); diff --git a/app/public/assets/css/repertoire.css b/app/public/assets/css/repertoire.css index 94fab53..12d2434 100644 --- a/app/public/assets/css/repertoire.css +++ b/app/public/assets/css/repertoire.css @@ -11,9 +11,16 @@ } /* ---- 6-column index layout ---- */ +/* Column fractions: years=0.4 ap=1 or=1.2 fi=0.7 students=1 kw=1 */ .repertoire-index { display: grid; - grid-template-columns: repeat(6, minmax(15vw, min-content)); + grid-template-columns: + minmax(3rem, 0.4fr) + minmax(7rem, 1fr) + minmax(9rem, 1.2fr) + minmax(6rem, 0.7fr) + minmax(8rem, 1fr) + minmax(7rem, 1fr); grid-template-rows: auto 1fr; gap: var(--space-s); justify-content: space-between; @@ -72,10 +79,10 @@ grid-row: 1; font-family: var(--font-display); font-size: var(--step--2); - letter-spacing: 0.1em; + letter-spacing: 0.12em; text-transform: uppercase; - color: var(--text-primary); - font-weight: 400; + color: var(--text-secondary); + font-weight: 398; margin: 0; padding: var(--space-xs) var(--space-2xs) var(--space-3xs); border-bottom: 1px solid var(--border-secondary); @@ -104,9 +111,9 @@ border: none; padding: var(--space-3xs) 0; margin: 0; - font-family: inherit; - font-size: var(--step-0); - font-weight: normal; + font-family: var(--font-body); + font-size: var(--step--1); + font-weight: 398; color: var(--text-primary); line-height: 1.4; cursor: pointer; @@ -137,10 +144,10 @@ pointer-events: none; } -/* Years column — big bold numbers */ +/* Years column — big numbers, semi-bold (BBBDMSans Medium weight) */ .repertoire-col[data-col="years"] .rep-entry { font-size: var(--step-3); - font-weight: normal; + font-weight: 498; line-height: 1.1; letter-spacing: -0.02em; padding: var(--space-3xs) 0; diff --git a/app/templates/partials/repertoire-index.php b/app/templates/partials/repertoire-index.php index 0c43239..49fe50a 100644 --- a/app/templates/partials/repertoire-index.php +++ b/app/templates/partials/repertoire-index.php @@ -30,6 +30,18 @@ ksort($studentWorks); // ── Shared helpers ────────────────────────────────────────────────────────── +// AP abbreviation mapping (cf. maquette: diminutifs entre crochets) +const AP_ABBREVIATIONS = [ + 'Atelier Pratiques Situées' => '[APS]', + 'Design et Politique du Multiple' => '[DPM]', + 'Lieux, Interdisciplinarités, Écologie, Nécessité, Systèmes' => '[L.I.E.N.S.]', +]; + +function formatApDisplay(string $name): string { + $abbr = AP_ABBREVIATIONS[$name] ?? ''; + return $abbr !== '' ? "$name $abbr" : $name; +} + function repToggleUrl(array $sets, string $dim, string $value): string { if (in_array($value, $sets[$dim], true)) { $sets[$dim] = array_values(array_filter($sets[$dim], fn($v) => $v !== $value)); @@ -66,7 +78,7 @@ function repFilterEntry(