feat(donut): noms de catégories sur l'anneau intermédiaire (ceiling ring)
Les noms étaient tout à l'extérieur (R=275), au-delà des limites planétaires.
L'utilisateur veut "sur le cercle intermédiaire entre les camemberts des
catégories et les limites planétaires" — c'est-à-dire SUR l'anneau gris du
plafond écologique qui sépare la zone sûre (où vivent les wedges colorés)
des limites planétaires.
- R_CAT_LABEL : 275 → 212 (milieu de l'anneau gris 200..225)
- viewBox : retour à 560×560 (plus besoin d'étendre à R=275)
- Cream background : 295 → 270 (idem)
- Font-size : 11 → 10 (plus discret sur ring)
- paint-order + stroke #FAFAF6 sur le texte : "halo" cream autour des
lettres pour rester lisibles malgré le pattern strié du ring gris.
Plus simple qu'un mask et fonctionne dans tous les browsers modernes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -58,8 +58,8 @@ onMounted(load)
|
|||||||
// lisibles : circonférence ≈ 2π × R, donc plus R est grand, plus chaque label
|
// lisibles : circonférence ≈ 2π × R, donc plus R est grand, plus chaque label
|
||||||
// d'arc dispose de place. Le centre et le ring extérieur ne bougent pas, c'est
|
// d'arc dispose de place. Le centre et le ring extérieur ne bougent pas, c'est
|
||||||
// uniquement la zone intérieure qui grossit, en mangeant un peu sur l'espace sûr.
|
// uniquement la zone intérieure qui grossit, en mangeant un peu sur l'espace sûr.
|
||||||
const R_CAT_LABEL = 275 // noms de catégories EN ARC, tout à l'extérieur
|
const R_PLANET_LABEL = 252 // étiquettes des limites planétaires (extérieur)
|
||||||
const R_PLANET_LABEL = 252 // étiquettes des limites planétaires (entre catégories et ceiling)
|
const R_CAT_LABEL = 212 // noms de catégories EN ARC, sur l'anneau gris du plafond (intermédiaire)
|
||||||
const R_CEILING_OUTER = 225
|
const R_CEILING_OUTER = 225
|
||||||
const R_CEILING_INNER = 200
|
const R_CEILING_INNER = 200
|
||||||
const R_FLOOR_OUTER = 125
|
const R_FLOOR_OUTER = 125
|
||||||
@@ -358,7 +358,7 @@ function gotoProject(p: ProjectListRow) {
|
|||||||
<div v-else class="mt-10 grid grid-cols-1 lg:grid-cols-5 gap-10 items-start">
|
<div v-else class="mt-10 grid grid-cols-1 lg:grid-cols-5 gap-10 items-start">
|
||||||
<!-- Donut SVG (3/5 sur grands écrans) -->
|
<!-- Donut SVG (3/5 sur grands écrans) -->
|
||||||
<div class="lg:col-span-3 flex flex-col items-center">
|
<div class="lg:col-span-3 flex flex-col items-center">
|
||||||
<svg viewBox="-300 -300 600 600" class="w-full max-w-[680px] aspect-square">
|
<svg viewBox="-280 -280 560 560" class="w-full max-w-[640px] aspect-square">
|
||||||
<defs>
|
<defs>
|
||||||
<!-- Anneaux gris légèrement striés -->
|
<!-- Anneaux gris légèrement striés -->
|
||||||
<pattern id="ring-stripes" patternUnits="userSpaceOnUse" width="6" height="6" patternTransform="rotate(45)">
|
<pattern id="ring-stripes" patternUnits="userSpaceOnUse" width="6" height="6" patternTransform="rotate(45)">
|
||||||
@@ -382,8 +382,8 @@ function gotoProject(p: ProjectListRow) {
|
|||||||
</defs>
|
</defs>
|
||||||
|
|
||||||
<!-- 1) ZONE D'OVERSHOOT (au-delà du plafond) -->
|
<!-- 1) ZONE D'OVERSHOOT (au-delà du plafond) -->
|
||||||
<!-- fond cream clair pour soutenir les labels limites planétaires + catégories -->
|
<!-- fond cream clair pour soutenir les labels limites planétaires -->
|
||||||
<circle r="295" fill="#F5F2EA" />
|
<circle r="270" fill="#F5F2EA" />
|
||||||
|
|
||||||
<!-- 2) Étiquettes des 9 LIMITES PLANÉTAIRES, le long de leur arc -->
|
<!-- 2) Étiquettes des 9 LIMITES PLANÉTAIRES, le long de leur arc -->
|
||||||
<g>
|
<g>
|
||||||
@@ -424,14 +424,15 @@ function gotoProject(p: ProjectListRow) {
|
|||||||
/>
|
/>
|
||||||
</g>
|
</g>
|
||||||
|
|
||||||
<!-- 7) Noms des CATÉGORIES en arc, tout à l'extérieur du donut, en couleur catégorie -->
|
<!-- 7) Noms des CATÉGORIES en arc, SUR L'ANNEAU GRIS DU PLAFOND (entre wedges et
|
||||||
|
limites planétaires), en couleur catégorie pour contraster avec le pattern. -->
|
||||||
<g>
|
<g>
|
||||||
<text
|
<text
|
||||||
v-for="arc in categoryArcs" :key="`cat-text-${arc.key}`"
|
v-for="arc in categoryArcs" :key="`cat-text-${arc.key}`"
|
||||||
font-size="11"
|
font-size="10"
|
||||||
font-weight="700"
|
font-weight="700"
|
||||||
:fill="categories[arc.key]?.color_hex ?? '#111827'"
|
:fill="categories[arc.key]?.color_hex ?? '#111827'"
|
||||||
style="letter-spacing: 0.5px"
|
style="letter-spacing: 0.5px; paint-order: stroke; stroke: #FAFAF6; stroke-width: 2.5; stroke-linejoin: round"
|
||||||
>
|
>
|
||||||
<textPath :href="`#${arc.lines[0].pathId}`" startOffset="50%" text-anchor="middle">
|
<textPath :href="`#${arc.lines[0].pathId}`" startOffset="50%" text-anchor="middle">
|
||||||
{{ arc.lines[0].text }}
|
{{ arc.lines[0].text }}
|
||||||
|
|||||||
Reference in New Issue
Block a user