From 8fc8c21b7e979b02a783996417ff793b0b9d3bd7 Mon Sep 17 00:00:00 2001 From: Arnaud Date: Thu, 28 May 2026 22:34:20 +0200 Subject: [PATCH] =?UTF-8?q?feat(donut):=20libell=C3=A9s=20du=20plancher=20?= =?UTF-8?q?social=20sur=202=20lignes=20(arc=20multi-niveaux)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Beaucoup de dimensions Raworth dépassent l'arc disponible à R=88 : « Revenu & travail », « Liens sociaux », « Égalité de genre », « Équité sociale », « Voix politique », « Paix & justice ». Posées en une seule ligne, le texte débordait ou était illisible. Solution : permettre 2 lignes par libellé, chaque ligne ayant son propre arc à un rayon décalé. Du coup ces 6 dimensions sont séparées en 2 mots empilés radialement. Les 6 autres (Alimentation, Santé, Éducation, Eau, Énergie, Logement) restent sur une seule ligne. Refactor : - Type `Label = readonly string[]` (1..N lignes) - PLANETARY_BOUNDARIES et SOCIAL_FOUNDATIONS unifiés au format tableau de tableaux (planétaires restent toutes à 1 ligne, sociales mixtes) - arcLabelPaths() gère le multi-lignes : une ArcLine par ligne, avec décalage radial de ±lineSpacing/2 - lineSpacing = 9u (légèrement > font-size 8 pour éviter le chevauchement) - Inversion du décalage radial selon la moitié du donut pour que la ligne "primaire" reste toujours du côté lecteur (haut de l'écran) : top : ligne 0 = R+offset (extérieur) bot : ligne 0 = R-offset (intérieur) - Aplatissement via flatMap pour rendre comme une flat-list dans le SVG (pas de `