@maboussoleaidant/design-system 0.1.40 → 0.1.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -233,6 +233,8 @@ Utiliser comme `shadow-{name}`.
233
233
  | `--mba-shadow-xs` | `xs` |
234
234
  | `--mba-shadow-sm` | `sm` |
235
235
  | `--mba-shadow-md` | `md` |
236
+ | `--mba-shadow-footer` | `footer` |
237
+ | `--mba-shadow-footer-pro` | `footer-pro` |
236
238
  | `--mba-shadow-inner` | `inner` |
237
239
 
238
240
  <!-- AUTO-GENERATED:tokens-mapping END -->
package/CHANGELOG.md CHANGED
@@ -6,6 +6,91 @@ Format inspiré de [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/). Ver
6
6
 
7
7
  ---
8
8
 
9
+ ## [0.1.42] — 2026-09-15
10
+
11
+ Alignement des **logos du header** sur ceux du footer. **100 % rétrocompatible** (aucune classe modifiée).
12
+
13
+ ### 🖼️ Logos du header unifiés avec le footer
14
+
15
+ Le header et le footer référençaient deux jeux de logos distincts, de géométries différentes : `assets/logos/logo_mba_aidants.svg` et `logo_mba_partenaires.svg` (viewBox `0 0 143 21`) d'un côté, `assets/logo-mba-agirc-arrco.svg` et `-pro.svg` (viewBox `0 0 228 32`) de l'autre. Le CSS des deux composants étant identique (`max-width: 227.92px; height: 32px`), le logo du header rendait ~218 px de large contre 228 px pour celui du footer.
16
+
17
+ Les deux variantes du header pointent désormais sur les fichiers du footer :
18
+
19
+ | | MBA | Partenaire |
20
+ |---|---|---|
21
+ | Source | `assets/logo-mba-agirc-arrco.svg` | `assets/logo-mba-agirc-arrco-pro.svg` |
22
+ | Rendu desktop | 228 × 32 | 228 × 32 |
23
+ | Rendu mobile | 171 × 24 | 171 × 24 |
24
+
25
+ **Corrige au passage un défaut de packaging** : `build:assets` ne copiait pas `src/assets/logos/`, si bien que les logos du header étaient **absents du package npm** — ils n'existaient que dans Storybook, qui sert `src/`. Les fichiers désormais utilisés sont bien livrés dans `assets/`. Le dossier `src/assets/logos/` n'est plus référencé.
26
+
27
+ ### 🐛 Correctif
28
+
29
+ - **`.mba-header__logo-img`** (`src/components/_header.css`) — ajout de `width: auto`.
30
+ - **Problème** : le header réduit la hauteur du logo à 24 px sous 768 px. Dès qu'un balisage porte un attribut `width` (recommandé pour éviter le CLS), cette largeur restait figée et **écrasait le logo** — 228 × 24 au lieu du ratio, soit 9,5 contre 7,125 attendu.
31
+ - **Correction** : `width: auto` neutralise l'attribut, la hauteur pilote et le ratio suit. Vérifié à 1440 px (228 × 32) et 375 px (171 × 24), ratio constant à 7,12.
32
+
33
+ ---
34
+
35
+ ## [0.1.41] — 2026-09-15
36
+
37
+ Mise en conformité du **footer** avec la maquette : coins hauts arrondis et ombre portée. **100 % rétrocompatible** (aucune classe modifiée, aucun changement de structure HTML).
38
+
39
+ ### 💅 Style
40
+
41
+ - **`.mba-footer`** (`src/components/_footer.css`) — ajout de `border-radius` et `box-shadow`.
42
+ - `border-radius: var(--mba-radius-sm) var(--mba-radius-sm) 0 0` → 16 px sur les coins hauts uniquement, coins bas laissés droits.
43
+ - `box-shadow: var(--mba-shadow-footer)` → ombre projetée **vers le haut**, le footer étant ancré en bas de page.
44
+ - Coins hauts **en miroir du `.mba-header`**, qui arrondit ses coins bas avec le même `--mba-radius-sm`. Les deux extrémités de page se répondent désormais.
45
+ - `.mba-footer--pro` reçoit `--mba-shadow-footer-pro`, déclinaison bleue de la même ombre.
46
+ - Vérifié sur desktop / tablette (768 px) / mobile (375 px), variantes aidant et pro.
47
+
48
+ ### ✨ Nouveaux tokens
49
+
50
+ Ombres **sémantiques teintées marque** (`src/tokens/_shadows.css`), hors échelle d'élévation : celle-ci est grise (Grey 400) et à double couche, alors que ces deux ombres sont monocouche et colorées.
51
+
52
+ - **`--mba-shadow-footer`** — `0 -4px 8px 8px rgba(112, 57, 115, 0.04)`, soit Primary 500 (`#703973`, la couleur déposée) à 4 %. Transcription du style Figma « Footer aidant ».
53
+ - **`--mba-shadow-footer-pro`** — même géométrie en Primary Pro 500 (`#395172`) à 4 %.
54
+
55
+ Exposés côté Tailwind via `src/tailwind-preset.css` → `shadow-footer` et `shadow-footer-pro`.
56
+
57
+ ### 📐 Conteneur de page unifié (header + footer)
58
+
59
+ Le header et le footer utilisaient deux modèles de conteneur incompatibles : le header avait `max-width: 80rem` (1280 px) avec un padding horizontal fixe de 80 px, le footer `max-width: 1120px` avec un padding horizontal **nul** au-delà de 768 px. Leurs contenus ne s'alignaient qu'à partir de 1280 px de viewport, et la gouttière du footer s'effondrait complètement en dessous de 1120 px — logo collé au bord de l'écran.
60
+
61
+ - **Nouveau token `--mba-container-gutter`** (`src/tokens/_spacing.css`) — 16 px par défaut, 80 px à partir de 768 px.
62
+ - **`.mba-header__container`**, **`.mba-footer__main`** et **`.mba-footer__legal`** partagent désormais `box-sizing: content-box`, `max-width: var(--mba-container-width)` et `padding-inline: var(--mba-container-gutter)`.
63
+ - `content-box` est nécessaire : le `border-box` global du preflight aurait sinon rogné le contenu à 1120 px moins les gouttières.
64
+
65
+ Position du bord gauche du logo, avant → après :
66
+
67
+ | Viewport | Header | Footer |
68
+ |---|---|---|
69
+ | 1440 px | 160 → 160 px | 160 → 160 px |
70
+ | 1200 px | 80 → 80 px | 40 → **80 px** |
71
+ | 1023 px | 80 → 80 px | 0 → **80 px** |
72
+ | 375 px | 24 → **16 px** | 16 → 16 px |
73
+
74
+ Le rendu au-delà de 1280 px est **inchangé** pour les deux composants (1120 px de contenu utile). Les écarts se résorbent en dessous, et la gouttière ne tombe plus jamais à zéro.
75
+
76
+ ### 🍔 Bascule burger du header remontée à 1130 px
77
+
78
+ La nav horizontale ne tenait plus sur la ligne du logo bien avant l'ancien seuil de 768 px : le dernier item (« Espace partenaire ») débordait du conteneur. Le bloc responsive de `_header.css` est scindé en **deux seuils découplés** :
79
+
80
+ - **1130 px** — bascule nav → burger (`__nav`, `__burger`, `__mobile-menu`, et la hauteur fixe du dropdown Partenaire en desktop).
81
+ - **768 px** — traitement téléphone conservé tel quel (logo à 24 px, ombre retirée, rythme vertical resserré).
82
+
83
+ Ce découplage est délibéré : appliquer le traitement téléphone dès 1130 px rapetissait le logo et supprimait l'ombre sur un écran de portable.
84
+
85
+ | Viewport | Nav | Burger | Logo | Ombre |
86
+ |---|---|---|---|---|
87
+ | 1131 px | visible | masqué | 32 px | oui |
88
+ | 1130 px | masquée | **visible** | 32 px | oui |
89
+ | 769 px | masquée | visible | 32 px | oui |
90
+ | 768 px | masquée | visible | **24 px** | **non** |
91
+
92
+ ---
93
+
9
94
  ## [0.1.40] — 2026-08-07
10
95
 
11
96
  Correctif de **cascade layers**. **100 % rétrocompatible** (aucune classe modifiée).
@@ -374,6 +374,18 @@
374
374
  CONTAINER
375
375
  =========================================== */
376
376
  --mba-container-width: 70rem; /* 1120px */
377
+
378
+ /* Gouttière latérale du conteneur de page.
379
+ Partagée par le header et le footer : leurs contenus
380
+ (logo en tête) restent alignés à toutes les largeurs
381
+ et ne se collent jamais au bord du viewport.
382
+ Valeur mobile par défaut, élargie à partir de md. */
383
+ --mba-container-gutter: 1rem; /* 16px */
384
+ }
385
+ @media (min-width: 768px) {
386
+ :root {
387
+ --mba-container-gutter: 5rem; /* 80px */
388
+ }
377
389
  }
378
390
  /**
379
391
  * MBA Design System - Border Radius
@@ -432,6 +444,22 @@
432
444
  0 2px 24px 0 rgba(113, 113, 122, 0.04),
433
445
  1px 2px 24px 0 rgba(113, 113, 122, 0.08);
434
446
 
447
+ /* ===========================================
448
+ OMBRES SÉMANTIQUES (teintées marque)
449
+ Hors échelle d'élévation : couleur de marque
450
+ et non Grey 400, une seule couche.
451
+ =========================================== */
452
+
453
+ /* Footer — style Figma « Footer aidant »
454
+ 0 -4px 8px 8px, Primary 500 (#703973) à 4 %
455
+ Offset Y négatif : le footer est ancré en bas
456
+ de page, son ombre remonte sur le contenu. */
457
+ --mba-shadow-footer: 0 -4px 8px 8px rgba(112, 57, 115, 0.04);
458
+
459
+ /* Footer variante Pro — même géométrie,
460
+ Primary Pro 500 (#395172) à 4 %. */
461
+ --mba-shadow-footer-pro: 0 -4px 8px 8px rgba(57, 81, 114, 0.04);
462
+
435
463
  /* ===========================================
436
464
  VALEURS UTILITAIRES
437
465
  =========================================== */
@@ -3495,9 +3523,13 @@ button.mba-input-icon__icon:hover {
3495
3523
  display: flex;
3496
3524
  align-items: center;
3497
3525
  justify-content: space-between;
3498
- padding: var(--mba-space-md) 5rem; /* vertical: md (24px), horizontal: 80px */
3499
- max-width: 80rem; /* 1280px = 1120px de contenu + 2 x 80px de padding */
3526
+ /* content-box : --mba-container-width borne le CONTENU, la gouttière
3527
+ s'ajoute autour. Sans cela, le border-box global du preflight
3528
+ rognerait le contenu à 1120px - 2 x gouttière. */
3529
+ box-sizing: content-box;
3530
+ max-width: var(--mba-container-width); /* 1120px de contenu */
3500
3531
  margin: 0 auto;
3532
+ padding: var(--mba-space-md) var(--mba-container-gutter);
3501
3533
  }
3502
3534
 
3503
3535
  /* ===========================================
@@ -3512,6 +3544,10 @@ button.mba-input-icon__icon:hover {
3512
3544
 
3513
3545
  .mba-header__logo-img {
3514
3546
  max-width: 227.92px;
3547
+ /* width:auto neutralise l'attribut width= du balisage : sans lui, la
3548
+ hauteur réduite en mobile (24px) écraserait le logo au lieu de le
3549
+ redimensionner. La hauteur pilote, le ratio suit. */
3550
+ width: auto;
3515
3551
  height: 32px;
3516
3552
  display: block;
3517
3553
  }
@@ -4082,21 +4118,23 @@ button.mba-input-icon__icon:hover {
4082
4118
 
4083
4119
  /* ===========================================
4084
4120
  RESPONSIVE
4085
- =========================================== */
4086
- @media (max-width: 768px) {
4087
- .mba-header {
4088
- box-shadow: none; /* pas de shadow en mobile */
4089
- }
4090
4121
 
4091
- .mba-header__container {
4092
- padding: var(--mba-space-sm) var(--mba-space-md); /* 12px 16px */
4093
- justify-content: space-between;
4094
- }
4122
+ Deux seuils distincts, volontairement découplés :
4095
4123
 
4096
- .mba-header__mobile-menu {
4097
- padding: var(--mba-space-sm) var(--mba-space-xs); /* top/bottom SM, left/right XS */
4098
- }
4124
+ - 1130px — bascule nav horizontale → menu burger.
4125
+ En dessous, la nav complète ne tient plus sur la ligne
4126
+ du logo et le dernier item débordait du conteneur.
4099
4127
 
4128
+ - 768px — traitement téléphone (logo réduit, ombre
4129
+ retirée, rythme vertical resserré). Ces choix sont
4130
+ propres au petit écran : les appliquer dès 1130px
4131
+ rapetisserait le logo sur un portable.
4132
+ =========================================== */
4133
+
4134
+ /* -------------------------------------------
4135
+ Bascule nav → burger
4136
+ ------------------------------------------- */
4137
+ @media (max-width: 1130px) {
4100
4138
  .mba-header__nav {
4101
4139
  display: none;
4102
4140
  }
@@ -4105,16 +4143,12 @@ button.mba-input-icon__icon:hover {
4105
4143
  display: flex;
4106
4144
  }
4107
4145
 
4108
- .mba-header__logo-img {
4109
- height: 24px;
4110
- }
4111
-
4112
- .mba-icon {
4113
- margin-top: var(--mba-space-xxs);
4146
+ .mba-header__mobile-menu {
4147
+ padding: var(--mba-space-sm) var(--mba-space-xs); /* top/bottom SM, left/right XS */
4114
4148
  }
4115
4149
  }
4116
4150
 
4117
- @media (min-width: 769px) {
4151
+ @media (min-width: 1131px) {
4118
4152
  .mba-header__mobile-menu {
4119
4153
  display: none !important;
4120
4154
  }
@@ -4132,6 +4166,30 @@ button.mba-input-icon__icon:hover {
4132
4166
  }
4133
4167
  }
4134
4168
 
4169
+ /* -------------------------------------------
4170
+ Traitement téléphone
4171
+ ------------------------------------------- */
4172
+ @media (max-width: 768px) {
4173
+ .mba-header {
4174
+ box-shadow: none; /* pas de shadow en mobile */
4175
+ }
4176
+
4177
+ .mba-header__container {
4178
+ /* Gouttière héritée du token (16px sous md), seul le rythme
4179
+ vertical est resserré en mobile. */
4180
+ padding: var(--mba-space-sm) var(--mba-container-gutter);
4181
+ justify-content: space-between;
4182
+ }
4183
+
4184
+ .mba-header__logo-img {
4185
+ height: 24px;
4186
+ }
4187
+
4188
+ .mba-icon {
4189
+ margin-top: var(--mba-space-xxs);
4190
+ }
4191
+ }
4192
+
4135
4193
  }
4136
4194
  /* end @layer components */
4137
4195
  /**
@@ -4428,6 +4486,10 @@ button.mba-input-icon__icon:hover {
4428
4486
  *
4429
4487
  * Footer principal avec logo, navigation, réseaux sociaux et mentions légales.
4430
4488
  *
4489
+ * Coins hauts arrondis (--mba-radius-sm), en miroir du .mba-header qui
4490
+ * arrondit ses coins bas avec la même valeur, et ombre projetée vers le haut
4491
+ * (--mba-shadow-footer, style Figma « Footer aidant »).
4492
+ *
4431
4493
  * Structure:
4432
4494
  * .mba-footer
4433
4495
  * .mba-footer__main - Section principale (flex, space-between)
@@ -4450,6 +4512,8 @@ button.mba-input-icon__icon:hover {
4450
4512
  .mba-footer {
4451
4513
  width: 100%;
4452
4514
  background-color: var(--mba-color-white);
4515
+ border-radius: var(--mba-radius-sm) var(--mba-radius-sm) 0 0;
4516
+ box-shadow: var(--mba-shadow-footer);
4453
4517
  }
4454
4518
 
4455
4519
  /* ===========================================
@@ -4457,9 +4521,12 @@ button.mba-input-icon__icon:hover {
4457
4521
  =========================================== */
4458
4522
 
4459
4523
  .mba-footer__main {
4524
+ /* Conteneur commun avec .mba-header__container : même largeur de
4525
+ contenu, même gouttière, donc logos alignés à toutes les largeurs. */
4526
+ box-sizing: content-box;
4460
4527
  max-width: var(--mba-container-width);
4461
4528
  margin: 0 auto;
4462
- padding: var(--mba-space-xl) var(--mba-space-sm) var(--mba-space-sm);
4529
+ padding: var(--mba-space-xl) var(--mba-container-gutter) var(--mba-space-sm);
4463
4530
  display: flex;
4464
4531
  flex-direction: column;
4465
4532
  gap: var(--mba-space-lg);
@@ -4467,7 +4534,7 @@ button.mba-input-icon__icon:hover {
4467
4534
 
4468
4535
  @media (min-width: 768px) {
4469
4536
  .mba-footer__main {
4470
- padding: var(--mba-space-xl) 0;
4537
+ padding: var(--mba-space-xl) var(--mba-container-gutter);
4471
4538
  }
4472
4539
  }
4473
4540
 
@@ -4719,9 +4786,10 @@ button.mba-input-icon__icon:hover {
4719
4786
 
4720
4787
 
4721
4788
  .mba-footer__legal {
4789
+ box-sizing: content-box;
4722
4790
  max-width: var(--mba-container-width);
4723
4791
  margin: 0 auto;
4724
- padding: var(--mba-space-md) var(--mba-space-sm);
4792
+ padding: var(--mba-space-md) var(--mba-container-gutter);
4725
4793
  display: flex;
4726
4794
  flex-direction: column;
4727
4795
  gap: var(--mba-space-sm);
@@ -4729,7 +4797,6 @@ button.mba-input-icon__icon:hover {
4729
4797
 
4730
4798
  @media (min-width: 768px) {
4731
4799
  .mba-footer__legal {
4732
- padding: var(--mba-space-md) 0;
4733
4800
  flex-direction: row;
4734
4801
  justify-content: space-between;
4735
4802
  align-items: center;
@@ -4789,6 +4856,10 @@ button.mba-input-icon__icon:hover {
4789
4856
  PRO VARIANT
4790
4857
  =========================================== */
4791
4858
 
4859
+ .mba-footer--pro {
4860
+ box-shadow: var(--mba-shadow-footer-pro);
4861
+ }
4862
+
4792
4863
  .mba-footer--pro .mba-footer__contact,
4793
4864
  .mba-footer--pro .mba-footer__nav-link,
4794
4865
  .mba-footer--pro .mba-footer__legal-link {