@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 +2 -0
- package/CHANGELOG.md +85 -0
- package/dist/mba-design-system.css +96 -25
- package/dist/mba-design-system.css.map +1 -1
- package/dist/mba-design-system.min.css +2 -2
- package/dist/mba-tailwind.css +41 -23
- package/dist/mba-tailwind.css.map +1 -1
- package/dist/mba-tailwind.min.css +2 -2
- package/dist/mba-tokens-only.css +29 -0
- package/dist/mba-tokens-only.css.map +1 -1
- package/package.json +1 -1
- package/src/tailwind-preset.css +2 -0
- package/src/tokens/_shadows.css +16 -0
- package/src/tokens/_spacing.css +13 -0
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
|
-
|
|
3499
|
-
|
|
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
|
-
|
|
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
|
-
|
|
4097
|
-
|
|
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-
|
|
4109
|
-
|
|
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:
|
|
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-
|
|
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)
|
|
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-
|
|
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 {
|