@maboussoleaidant/design-system 0.1.40 → 0.1.41
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 +59 -0
- package/dist/mba-design-system.css +92 -25
- package/dist/mba-design-system.css.map +1 -1
- package/dist/mba-design-system.min.css +2 -2
- package/dist/mba-tailwind.css +40 -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,65 @@ Format inspiré de [Keep a Changelog](https://keepachangelog.com/fr/1.1.0/). Ver
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## [0.1.41] — 2026-09-15
|
|
10
|
+
|
|
11
|
+
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).
|
|
12
|
+
|
|
13
|
+
### 💅 Style
|
|
14
|
+
|
|
15
|
+
- **`.mba-footer`** (`src/components/_footer.css`) — ajout de `border-radius` et `box-shadow`.
|
|
16
|
+
- `border-radius: var(--mba-radius-sm) var(--mba-radius-sm) 0 0` → 16 px sur les coins hauts uniquement, coins bas laissés droits.
|
|
17
|
+
- `box-shadow: var(--mba-shadow-footer)` → ombre projetée **vers le haut**, le footer étant ancré en bas de page.
|
|
18
|
+
- 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.
|
|
19
|
+
- `.mba-footer--pro` reçoit `--mba-shadow-footer-pro`, déclinaison bleue de la même ombre.
|
|
20
|
+
- Vérifié sur desktop / tablette (768 px) / mobile (375 px), variantes aidant et pro.
|
|
21
|
+
|
|
22
|
+
### ✨ Nouveaux tokens
|
|
23
|
+
|
|
24
|
+
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.
|
|
25
|
+
|
|
26
|
+
- **`--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 ».
|
|
27
|
+
- **`--mba-shadow-footer-pro`** — même géométrie en Primary Pro 500 (`#395172`) à 4 %.
|
|
28
|
+
|
|
29
|
+
Exposés côté Tailwind via `src/tailwind-preset.css` → `shadow-footer` et `shadow-footer-pro`.
|
|
30
|
+
|
|
31
|
+
### 📐 Conteneur de page unifié (header + footer)
|
|
32
|
+
|
|
33
|
+
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.
|
|
34
|
+
|
|
35
|
+
- **Nouveau token `--mba-container-gutter`** (`src/tokens/_spacing.css`) — 16 px par défaut, 80 px à partir de 768 px.
|
|
36
|
+
- **`.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)`.
|
|
37
|
+
- `content-box` est nécessaire : le `border-box` global du preflight aurait sinon rogné le contenu à 1120 px moins les gouttières.
|
|
38
|
+
|
|
39
|
+
Position du bord gauche du logo, avant → après :
|
|
40
|
+
|
|
41
|
+
| Viewport | Header | Footer |
|
|
42
|
+
|---|---|---|
|
|
43
|
+
| 1440 px | 160 → 160 px | 160 → 160 px |
|
|
44
|
+
| 1200 px | 80 → 80 px | 40 → **80 px** |
|
|
45
|
+
| 1023 px | 80 → 80 px | 0 → **80 px** |
|
|
46
|
+
| 375 px | 24 → **16 px** | 16 → 16 px |
|
|
47
|
+
|
|
48
|
+
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.
|
|
49
|
+
|
|
50
|
+
### 🍔 Bascule burger du header remontée à 1130 px
|
|
51
|
+
|
|
52
|
+
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** :
|
|
53
|
+
|
|
54
|
+
- **1130 px** — bascule nav → burger (`__nav`, `__burger`, `__mobile-menu`, et la hauteur fixe du dropdown Partenaire en desktop).
|
|
55
|
+
- **768 px** — traitement téléphone conservé tel quel (logo à 24 px, ombre retirée, rythme vertical resserré).
|
|
56
|
+
|
|
57
|
+
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.
|
|
58
|
+
|
|
59
|
+
| Viewport | Nav | Burger | Logo | Ombre |
|
|
60
|
+
|---|---|---|---|---|
|
|
61
|
+
| 1131 px | visible | masqué | 32 px | oui |
|
|
62
|
+
| 1130 px | masquée | **visible** | 32 px | oui |
|
|
63
|
+
| 769 px | masquée | visible | 32 px | oui |
|
|
64
|
+
| 768 px | masquée | visible | **24 px** | **non** |
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
9
68
|
## [0.1.40] — 2026-08-07
|
|
10
69
|
|
|
11
70
|
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
|
/* ===========================================
|
|
@@ -4082,21 +4114,23 @@ button.mba-input-icon__icon:hover {
|
|
|
4082
4114
|
|
|
4083
4115
|
/* ===========================================
|
|
4084
4116
|
RESPONSIVE
|
|
4085
|
-
=========================================== */
|
|
4086
|
-
@media (max-width: 768px) {
|
|
4087
|
-
.mba-header {
|
|
4088
|
-
box-shadow: none; /* pas de shadow en mobile */
|
|
4089
|
-
}
|
|
4090
4117
|
|
|
4091
|
-
|
|
4092
|
-
padding: var(--mba-space-sm) var(--mba-space-md); /* 12px 16px */
|
|
4093
|
-
justify-content: space-between;
|
|
4094
|
-
}
|
|
4118
|
+
Deux seuils distincts, volontairement découplés :
|
|
4095
4119
|
|
|
4096
|
-
|
|
4097
|
-
|
|
4098
|
-
|
|
4120
|
+
- 1130px — bascule nav horizontale → menu burger.
|
|
4121
|
+
En dessous, la nav complète ne tient plus sur la ligne
|
|
4122
|
+
du logo et le dernier item débordait du conteneur.
|
|
4099
4123
|
|
|
4124
|
+
- 768px — traitement téléphone (logo réduit, ombre
|
|
4125
|
+
retirée, rythme vertical resserré). Ces choix sont
|
|
4126
|
+
propres au petit écran : les appliquer dès 1130px
|
|
4127
|
+
rapetisserait le logo sur un portable.
|
|
4128
|
+
=========================================== */
|
|
4129
|
+
|
|
4130
|
+
/* -------------------------------------------
|
|
4131
|
+
Bascule nav → burger
|
|
4132
|
+
------------------------------------------- */
|
|
4133
|
+
@media (max-width: 1130px) {
|
|
4100
4134
|
.mba-header__nav {
|
|
4101
4135
|
display: none;
|
|
4102
4136
|
}
|
|
@@ -4105,16 +4139,12 @@ button.mba-input-icon__icon:hover {
|
|
|
4105
4139
|
display: flex;
|
|
4106
4140
|
}
|
|
4107
4141
|
|
|
4108
|
-
.mba-
|
|
4109
|
-
|
|
4110
|
-
}
|
|
4111
|
-
|
|
4112
|
-
.mba-icon {
|
|
4113
|
-
margin-top: var(--mba-space-xxs);
|
|
4142
|
+
.mba-header__mobile-menu {
|
|
4143
|
+
padding: var(--mba-space-sm) var(--mba-space-xs); /* top/bottom SM, left/right XS */
|
|
4114
4144
|
}
|
|
4115
4145
|
}
|
|
4116
4146
|
|
|
4117
|
-
@media (min-width:
|
|
4147
|
+
@media (min-width: 1131px) {
|
|
4118
4148
|
.mba-header__mobile-menu {
|
|
4119
4149
|
display: none !important;
|
|
4120
4150
|
}
|
|
@@ -4132,6 +4162,30 @@ button.mba-input-icon__icon:hover {
|
|
|
4132
4162
|
}
|
|
4133
4163
|
}
|
|
4134
4164
|
|
|
4165
|
+
/* -------------------------------------------
|
|
4166
|
+
Traitement téléphone
|
|
4167
|
+
------------------------------------------- */
|
|
4168
|
+
@media (max-width: 768px) {
|
|
4169
|
+
.mba-header {
|
|
4170
|
+
box-shadow: none; /* pas de shadow en mobile */
|
|
4171
|
+
}
|
|
4172
|
+
|
|
4173
|
+
.mba-header__container {
|
|
4174
|
+
/* Gouttière héritée du token (16px sous md), seul le rythme
|
|
4175
|
+
vertical est resserré en mobile. */
|
|
4176
|
+
padding: var(--mba-space-sm) var(--mba-container-gutter);
|
|
4177
|
+
justify-content: space-between;
|
|
4178
|
+
}
|
|
4179
|
+
|
|
4180
|
+
.mba-header__logo-img {
|
|
4181
|
+
height: 24px;
|
|
4182
|
+
}
|
|
4183
|
+
|
|
4184
|
+
.mba-icon {
|
|
4185
|
+
margin-top: var(--mba-space-xxs);
|
|
4186
|
+
}
|
|
4187
|
+
}
|
|
4188
|
+
|
|
4135
4189
|
}
|
|
4136
4190
|
/* end @layer components */
|
|
4137
4191
|
/**
|
|
@@ -4428,6 +4482,10 @@ button.mba-input-icon__icon:hover {
|
|
|
4428
4482
|
*
|
|
4429
4483
|
* Footer principal avec logo, navigation, réseaux sociaux et mentions légales.
|
|
4430
4484
|
*
|
|
4485
|
+
* Coins hauts arrondis (--mba-radius-sm), en miroir du .mba-header qui
|
|
4486
|
+
* arrondit ses coins bas avec la même valeur, et ombre projetée vers le haut
|
|
4487
|
+
* (--mba-shadow-footer, style Figma « Footer aidant »).
|
|
4488
|
+
*
|
|
4431
4489
|
* Structure:
|
|
4432
4490
|
* .mba-footer
|
|
4433
4491
|
* .mba-footer__main - Section principale (flex, space-between)
|
|
@@ -4450,6 +4508,8 @@ button.mba-input-icon__icon:hover {
|
|
|
4450
4508
|
.mba-footer {
|
|
4451
4509
|
width: 100%;
|
|
4452
4510
|
background-color: var(--mba-color-white);
|
|
4511
|
+
border-radius: var(--mba-radius-sm) var(--mba-radius-sm) 0 0;
|
|
4512
|
+
box-shadow: var(--mba-shadow-footer);
|
|
4453
4513
|
}
|
|
4454
4514
|
|
|
4455
4515
|
/* ===========================================
|
|
@@ -4457,9 +4517,12 @@ button.mba-input-icon__icon:hover {
|
|
|
4457
4517
|
=========================================== */
|
|
4458
4518
|
|
|
4459
4519
|
.mba-footer__main {
|
|
4520
|
+
/* Conteneur commun avec .mba-header__container : même largeur de
|
|
4521
|
+
contenu, même gouttière, donc logos alignés à toutes les largeurs. */
|
|
4522
|
+
box-sizing: content-box;
|
|
4460
4523
|
max-width: var(--mba-container-width);
|
|
4461
4524
|
margin: 0 auto;
|
|
4462
|
-
padding: var(--mba-space-xl) var(--mba-
|
|
4525
|
+
padding: var(--mba-space-xl) var(--mba-container-gutter) var(--mba-space-sm);
|
|
4463
4526
|
display: flex;
|
|
4464
4527
|
flex-direction: column;
|
|
4465
4528
|
gap: var(--mba-space-lg);
|
|
@@ -4467,7 +4530,7 @@ button.mba-input-icon__icon:hover {
|
|
|
4467
4530
|
|
|
4468
4531
|
@media (min-width: 768px) {
|
|
4469
4532
|
.mba-footer__main {
|
|
4470
|
-
padding: var(--mba-space-xl)
|
|
4533
|
+
padding: var(--mba-space-xl) var(--mba-container-gutter);
|
|
4471
4534
|
}
|
|
4472
4535
|
}
|
|
4473
4536
|
|
|
@@ -4719,9 +4782,10 @@ button.mba-input-icon__icon:hover {
|
|
|
4719
4782
|
|
|
4720
4783
|
|
|
4721
4784
|
.mba-footer__legal {
|
|
4785
|
+
box-sizing: content-box;
|
|
4722
4786
|
max-width: var(--mba-container-width);
|
|
4723
4787
|
margin: 0 auto;
|
|
4724
|
-
padding: var(--mba-space-md) var(--mba-
|
|
4788
|
+
padding: var(--mba-space-md) var(--mba-container-gutter);
|
|
4725
4789
|
display: flex;
|
|
4726
4790
|
flex-direction: column;
|
|
4727
4791
|
gap: var(--mba-space-sm);
|
|
@@ -4729,7 +4793,6 @@ button.mba-input-icon__icon:hover {
|
|
|
4729
4793
|
|
|
4730
4794
|
@media (min-width: 768px) {
|
|
4731
4795
|
.mba-footer__legal {
|
|
4732
|
-
padding: var(--mba-space-md) 0;
|
|
4733
4796
|
flex-direction: row;
|
|
4734
4797
|
justify-content: space-between;
|
|
4735
4798
|
align-items: center;
|
|
@@ -4789,6 +4852,10 @@ button.mba-input-icon__icon:hover {
|
|
|
4789
4852
|
PRO VARIANT
|
|
4790
4853
|
=========================================== */
|
|
4791
4854
|
|
|
4855
|
+
.mba-footer--pro {
|
|
4856
|
+
box-shadow: var(--mba-shadow-footer-pro);
|
|
4857
|
+
}
|
|
4858
|
+
|
|
4792
4859
|
.mba-footer--pro .mba-footer__contact,
|
|
4793
4860
|
.mba-footer--pro .mba-footer__nav-link,
|
|
4794
4861
|
.mba-footer--pro .mba-footer__legal-link {
|