origam 2.20.0 → 2.22.0

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/dist/src/assets/css/main.css +1 -1
  3. package/dist/src/assets/css/tokens/dark.css +8 -16
  4. package/dist/src/assets/css/tokens/light.css +3 -8
  5. package/dist/src/assets/scss/tokens/_dark.scss +8 -16
  6. package/dist/src/assets/scss/tokens/_light.scss +3 -8
  7. package/dist/src/components/Blockquote/OrigamBlockquote.vue +15 -65
  8. package/dist/src/components/CommandPalette/OrigamCommandPalette.vue +8 -2
  9. package/dist/src/components/ContextualMenu/OrigamContextualMenu.vue +1 -1
  10. package/dist/src/components/Dialog/OrigamDialog.vue +1 -1
  11. package/dist/src/components/Dialog/OrigamDialogConfirmation.vue +1 -1
  12. package/dist/src/components/Drawer/OrigamDrawer.vue +12 -2
  13. package/dist/src/components/Menu/OrigamMenu.vue +1 -1
  14. package/dist/src/components/Overlay/OrigamOverlay.vue +2 -2
  15. package/dist/src/components/Snackbar/OrigamSnackbar.vue +1 -1
  16. package/dist/src/components/Snackbar/OrigamSnackbarGroup.vue +8 -2
  17. package/dist/src/components/Tooltip/OrigamTooltip.vue +1 -1
  18. package/dist/src/composables/Commons/hydration.composable.cjs +8 -3
  19. package/dist/src/composables/Commons/hydration.composable.d.ts +13 -5
  20. package/dist/src/composables/Commons/hydration.composable.js +6 -1
  21. package/dist/src/composables/Commons/teleport.composable.cjs +3 -0
  22. package/dist/src/composables/Commons/teleport.composable.d.ts +56 -0
  23. package/dist/src/composables/Commons/teleport.composable.js +3 -0
  24. package/dist/src/consts/Blockquote/blockquote.const.cjs +38 -1
  25. package/dist/src/consts/Blockquote/blockquote.const.d.ts +113 -0
  26. package/dist/src/consts/Blockquote/blockquote.const.js +37 -0
  27. package/dist/src/consts/Commons/variant-preset.const.cjs +2 -0
  28. package/dist/src/consts/Commons/variant-preset.const.d.ts +19 -8
  29. package/dist/src/consts/Commons/variant-preset.const.js +2 -0
  30. package/dist/src/interfaces/Blockquote/blockquote.interface.d.ts +59 -4
  31. package/dist/src/interfaces/CommandPalette/command-palette.interface.d.ts +2 -1
  32. package/dist/src/interfaces/Commons/attach.interface.cjs +1 -0
  33. package/dist/src/interfaces/Commons/attach.interface.d.ts +30 -0
  34. package/dist/src/interfaces/Commons/attach.interface.js +0 -0
  35. package/dist/src/interfaces/Drawer/drawer.interface.d.ts +24 -1
  36. package/dist/src/interfaces/Overlay/overlay.interface.d.ts +2 -2
  37. package/dist/src/interfaces/Snackbar/snackbar-group.interface.d.ts +2 -1
  38. package/dist/src/interfaces/index.cjs +11 -0
  39. package/dist/src/interfaces/index.d.ts +1 -0
  40. package/dist/src/interfaces/index.js +1 -0
  41. package/dist/src/themes/origam.theme.cjs +10 -1
  42. package/dist/src/themes/origam.theme.js +10 -1
  43. package/dist/src/types/tokens.type.d.ts +1 -1
  44. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -18,6 +18,105 @@ This project follows [Semantic Versioning](https://semver.org).
18
18
 
19
19
  ## [Unreleased]
20
20
 
21
+ ## [2.22.0] - 2026-10-07
22
+
23
+ ### Added — `attach` sur `OrigamCommandPalette`, `OrigamSnackbarGroup` et `OrigamDrawer`
24
+
25
+ Ces trois composants codaient en dur `<teleport to="body">` et n'offraient **aucun moyen de
26
+ rediriger** la cible, alors que toute la famille Overlay — Tooltip, Snackbar, Dialog, Menu, via
27
+ `IOverlayProps` — portait déjà `attach`. C'était une surface à moitié implémentée, et la directive
28
+ d'`adr-007-directional-props.md` est explicite : *si un format existe, il existe partout ; on ne
29
+ fait pas moitié*.
30
+
31
+ La prop est désormais extraite dans `interfaces/Commons/attach.interface.ts` (`IAttachProps`) au
32
+ lieu d'être redéclarée sur chaque interface, et consommée par le point unique existant,
33
+ `useTeleport`.
34
+
35
+ **Vérifié sur le parent DOM réel** du nœud téléporté, pas sur l'acceptation de la prop : les 9
36
+ tests `attach` sont **9/9 rouges sur le commit parent**, verts sur la branche.
37
+
38
+ ### Added — `--origam-color__text---tertiary`
39
+
40
+ Troisième niveau de texte sémantique, déclaré dans `light.css` (`neutral-500`) et `dark.css`
41
+ (`neutral-400`), leurs jumeaux SCSS, et l'union `TTokenName`.
42
+
43
+ Il était **lu par 27 fichiers** de `packages/marketing` et déclaré **nulle part** : un canal de
44
+ thème mort depuis toujours, qui rendait correctement par son seul repli. Les pages de référence,
45
+ `HomeThemes`, `WhyOrigamThemeDemo`, les pages d'administration et `apple.theme.ts` le consommaient
46
+ tous dans le vide.
47
+
48
+ ⚠️ **Aplatissement assumé** : en mode sombre, `tertiary` et `secondary` résolvent la même valeur
49
+ (`neutral-400`). Il n'existe aucun échelon entre `neutral-400` et `neutral-500`, et `neutral-500`
50
+ sur la surface sombre mesure **4,18:1** — sous le seuil AA de 4,5:1. Un niveau de hiérarchie perdu
51
+ a été préféré à une violation de contraste.
52
+
53
+ ### Fixed — `useTeleport` ne réévaluait jamais sa cible après l'hydratation
54
+
55
+ Le `computed` qui résout la cible de téléportation n'avait **aucune dépendance réactive** sur
56
+ `document.querySelector`. Sous SSR — et sous Histoire, où chaque story est enveloppée dans un
57
+ `<Suspense>` — la première évaluation pouvait tomber **avant** que l'arbre voisin soit commité dans
58
+ le DOM, et rien ne la redéclenchait ensuite.
59
+
60
+ Le symptôme n'était pas théorique : quatre tests e2e du site marketing échouaient sur
61
+ « *sans erreur JS console* » et « *pas d'erreur d'hydratation* ».
62
+
63
+ Le correctif réutilise `useHydration()`, qui porte déjà les deux gardes nécessaires — `IN_BROWSER`
64
+ et `ssr` — au lieu d'un compteur de montage local qui les ignorait. Le défaut touchait **toute la
65
+ famille Overlay**, pas seulement les trois composants de ce lot ; c'est `OrigamDrawer` qui l'a
66
+ révélé.
67
+
68
+ ### Fixed — le thème `origam` sombre posait un `text---tertiary` qui échoue en AA
69
+
70
+ `origamDarkTheme` fixait `tertiary` à `#737373`, soit **4,18:1** sur la surface sombre. Le défaut
71
+ était invisible parce que le canal n'était alimenté par aucune feuille — mais ce bloc runtime
72
+ **gagne la cascade** sur la feuille, donc déclarer le token sans corriger ce thème n'aurait rien
73
+ réglé en mode sombre. Attrapé par `theme-sheet-parity.spec.ts`, rouge avant / vert après.
74
+
75
+ ## [2.21.0] - 2026-10-01
76
+
77
+ ### Changed — ⚠️ `OrigamBlockquote` : le `variant` est un preset de props, plus un bloc SCSS
78
+
79
+ Deuxième composant converti après le pilote `OrigamKbd`, et premier de la **famille A** au sens de
80
+ la décision D5. Les cinq valeurs — `default`, `elegant`, `quoted`, `minimal`, `pull` — ne sont plus
81
+ cinq règles CSS : ce sont cinq `Partial<IBlockquoteProps>` dans
82
+ `consts/Blockquote/blockquote.const.ts`, résolus au rang **preset** du resolveur de props.
83
+
84
+ La garde `no-variant-css` passe de **32 à 27** entrées, sans aucune `Blockquote` restante.
85
+
86
+ **Ce que ça change pour un consommateur** : une prop écrite au site d'appel **bat désormais le
87
+ variant**. Avant, `<origam-blockquote variant="elegant" font-size="sm">` rendait 18px — la taille
88
+ du variant — et la prop était **inerte**. Elle peint maintenant.
89
+
90
+ ⚠️ **La classe `--variant-{valeur}` est conservée** et reste émise : c'est un crochet d'override
91
+ pour le consommateur. Mais le DS ne livre plus **aucune** règle qui la cible (décision D3), donc une
92
+ feuille applicative qui comptait sur la cascade du DS pour la styler ne trouve plus rien à battre.
93
+
94
+ ⚠️ **Deux effets quittent le variant pour une prop comportementale**, parce qu'ils n'étaient pas du
95
+ style : le marqueur de citation de `quoted` (il *monte un élément*) et l'alignement par défaut de
96
+ `pull`. L'exemption est désormais documentée **sur la prop**, au lieu d'être implicite dans une
97
+ règle CSS.
98
+
99
+ ### Removed — ⚠️ 8 tokens typographiques de variant
100
+
101
+ `--origam-blockquote__{elegant,minimal,pull}---{font-family,font-size,font-weight,line-height}`
102
+ sont retirés des 4 feuilles et de `TTokenName`. Ils n'avaient **plus aucun lecteur** une fois les
103
+ règles supprimées, et **aucun thème ne les lisait** : chaque échelon visé par le preset est
104
+ byte-pour-byte l'alias que la feuille portait déjà. Le canal de personnalisation n'est pas perdu,
105
+ il a changé de nature — il passe par `theme.variants['origam-blockquote']`, ce que D4 prévoit.
106
+
107
+ ⛔ **Le canal de thème des filets d'accent est préservé, et c'était la contrainte dure du lot.**
108
+ Vérifié en navigateur sur les 8 identités × 2 modes : le thème `editorial`, qui pose
109
+ `--origam-blockquote__accent---width: 3px`, rend **3px avant comme après**, les sept autres
110
+ identités rendant 4px — **zéro écart** sur les variants nus. Le preset porte la chaîne
111
+ `var(--origam-blockquote__accent---width, 4px)` et non une largeur en dur, précisément pour ça.
112
+
113
+ ### Fixed — une non-régression qui affirmait le contraire de ce qu'elle garantissait
114
+
115
+ `utility-cascade-padding-margin-950.spec.ts` échangeait la **classe** de variant et attendait que
116
+ le style suive — l'inverse de la décision D3, qui veut que cette classe ne porte aucun style du DS.
117
+ Réécrit sur le canal **inline**, avec le contrôle d'actuation qu'il n'avait jamais eu : la garantie
118
+ de #950 tient désormais par un mécanisme plus fort que la spécificité.
119
+
21
120
  ## [2.20.0] - 2026-10-01
22
121
 
23
122
  ### Added — la grille de props LOGIQUES PAR CÔTÉ, les 20 qui manquaient