origam 2.18.20 → 2.19.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 (29) hide show
  1. package/CHANGELOG.md +125 -0
  2. package/dist/src/assets/css/main.css +1 -1
  3. package/dist/src/assets/css/tokens/dark.css +0 -6
  4. package/dist/src/assets/css/tokens/light.css +0 -3
  5. package/dist/src/assets/scss/tokens/_dark.scss +0 -6
  6. package/dist/src/assets/scss/tokens/_light.scss +0 -3
  7. package/dist/src/components/Blockquote/OrigamBlockquote.vue +2 -1
  8. package/dist/src/components/Kbd/OrigamKbd.vue +23 -41
  9. package/dist/src/components/TextMask/OrigamTextMask.vue +2 -1
  10. package/dist/src/components/Title/OrigamTitle.vue +2 -1
  11. package/dist/src/composables/Commons/typography.composable.cjs +7 -0
  12. package/dist/src/composables/Commons/typography.composable.d.ts +6 -1
  13. package/dist/src/composables/Commons/typography.composable.js +9 -0
  14. package/dist/src/consts/Commons/border.const.cjs +4 -1
  15. package/dist/src/consts/Commons/border.const.d.ts +0 -18
  16. package/dist/src/consts/Commons/border.const.js +7 -2
  17. package/dist/src/consts/Commons/variant-preset.const.cjs +4 -1
  18. package/dist/src/consts/Commons/variant-preset.const.d.ts +22 -13
  19. package/dist/src/consts/Commons/variant-preset.const.js +4 -1
  20. package/dist/src/consts/Kbd/kbd.const.cjs +22 -0
  21. package/dist/src/consts/Kbd/kbd.const.d.ts +102 -0
  22. package/dist/src/consts/Kbd/kbd.const.js +16 -0
  23. package/dist/src/consts/index.cjs +11 -0
  24. package/dist/src/consts/index.d.ts +1 -0
  25. package/dist/src/consts/index.js +1 -0
  26. package/dist/src/interfaces/Commons/typography.interface.d.ts +47 -3
  27. package/dist/src/interfaces/Kbd/kbd.interface.d.ts +2 -1
  28. package/dist/src/types/tokens.type.d.ts +1 -1
  29. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -18,6 +18,131 @@ This project follows [Semantic Versioning](https://semver.org).
18
18
 
19
19
  ## [Unreleased]
20
20
 
21
+ ## [2.19.0] - 2026-09-30
22
+
23
+ ### Changed — ADR-005 lot 2 : `OrigamKbd` converti, ⚠️ deux ruptures
24
+
25
+ Le lot 1 avait posé le mécanisme et laissé le registre **vide**. Premier
26
+ composant converti : le variant de Kbd n'est plus un bloc SCSS, c'est
27
+ `KBD_VARIANT_PRESETS`. La garde `no-variant-css` passe de **36 à 32**.
28
+
29
+ Kbd n'était pas convertible mécaniquement, et la cause tient en une phrase :
30
+ **une propriété custom hérite.** `&--combination` posait
31
+ `--origam-kbd---border-width: 0` pour désépaissir l'enveloppe, la valeur
32
+ descendait dans chaque `__key` — dont le mixin `key-surface` lit précisément
33
+ `var(--origam-kbd---border-width, …)` — et les touches perdaient leur bordure.
34
+ C'est **pour la rattraper** que chaque règle de variant devait se redéclarer une
35
+ seconde fois en `&--variant-x &__key`, et c'est ce doublon qui rendait le variant
36
+ inconvertible : une prop de racine ne peut pas peindre un descendant. La
37
+ neutralisation passe donc par `border-width: 0`, propriété physique, qui n'hérite
38
+ pas ; et le composant lie ses déclarations de surface à l'élément qui **est** une
39
+ touche — la racine en forme simple, chaque `__key` en combinaison, les deux ne
40
+ coexistant jamais.
41
+
42
+ Bénéfice non prévu, relevé par une garde : la règle `&--variant-outlined`, **toujours
43
+ active** puisque `outlined` est le défaut de `withDefaults`, **confisquait**
44
+ `--origam-kbd---border-width` à tout thème de marque.
45
+ `theme-channel-confiscation` passe de **37 à 36**.
46
+
47
+ ⚠️ **Rupture 1** — sur une combinaison, les props de surface (`bgColor`, `color`,
48
+ `border`, `elevation`) peignent désormais **les touches** et non l'enveloppe.
49
+ `<origam-kbd :combination="['Ctrl','S']" bg-color="primary">` rendait un cadre
50
+ coloré autour de touches non colorées ; il colore les touches.
51
+
52
+ ⚠️ **Rupture 2** — `--origam-kbd--outlined---border-width`,
53
+ `--origam-kbd__filled---border-width` et `--origam-kbd__tonal---border-width`
54
+ sont **supprimés**. Ils ne portaient aucune valeur propre : les deux premiers
55
+ valaient `{border.width.thin}`, déjà le défaut de `--origam-kbd---border-width`,
56
+ et le troisième `{border.width.0}`. Pour régler la largeur d'un variant, passer
57
+ par `--origam-kbd---border-width` ou par le prop `border`.
58
+
59
+ `OrigamKbd` gagne `elevation` (`IElevationProps`) — c'est le canal sur lequel
60
+ voyage l'ombre d'embossage de chaque variant.
61
+
62
+ Non-régression **mesurée** et non affirmée : un harnais neuf
63
+ (`pnpm -F @origam/tests audit:kbd-preset`) monte le composant sous les **8
64
+ identités × 2 modes** et relève 11 longhands sur chaque surface peinte, `__key`
65
+ compris — Histoire étant épinglé `data-theme="light"` et n'enregistrant aucune
66
+ marque, l'axe des identités y est immesurable. Sur le variant **nu**, zéro écart
67
+ sur `background-color`, `border-*`, `color`, `border-radius`, `padding`,
68
+ `font-size` et `min-width`. Seul `box-shadow` bouge, en deux familles **prouvées
69
+ non-peignantes au pixel** : la sérialisation du blanc
70
+ (`rgba(255,255,255,a)` → `color(srgb 1 1 1 / a)`, même couleur) et, sur `tonal`,
71
+ le mot-clé `none` → `rgba(0,0,0,0) 0px 0px 0px 0px` — étendue et alpha nuls,
72
+ `elevation` ne pouvant pas émettre le mot-clé.
73
+
74
+ ⚠️ La limite du canal `border` découverte en chemin — un
75
+ `border="var(--…---border-width, 1px)"` matchait le groupe `color` de
76
+ `BORDER_REGEX` et émettait un `border-color` — **a été corrigée depuis, en
77
+ 2.18.21** (section juste en dessous). Ce qui reste : `IBorderProps` n'expose
78
+ toujours pas de `borderWidth` autonome, et une largeur `var()` **contenant une
79
+ espace** ne voyage que par une prop par côté ou d'axe, la prop globale `border`
80
+ la coupant à son `split(' ')`. Ajouter `borderWidth` avait par ailleurs été
81
+ rejeté sur la mesure, indépendamment de la regex : 24 composants déclarent
82
+ `IBorderProps` sans consommer ses props autonomes, et `unconsumed-props` passait
83
+ de 0 à 24. La suppression des trois tokens de largeur ne repose de toute façon
84
+ pas sur cette limite, mais sur le fait qu'ils ne portaient **aucune valeur
85
+ propre**.
86
+ ## [2.18.21] - 2026-09-30
87
+
88
+ ### Fixed — `useBorder` supprimait silencieusement une largeur en `var()`
89
+
90
+ `BORDER_REGEX` n'acceptait en largeur que des chiffres suivis d'une unite,
91
+ tandis que son groupe **couleur** accepte `var(--…)`. Une chaine comme
92
+ `borderLeft="var(--x) solid var(--y)"` etait donc happee **entierement par le
93
+ groupe couleur** : `parseBorderPositionValue` renvoyait une largeur vide,
94
+ `formatBorderPositionStylesVar` sautait la declaration, et le navigateur
95
+ jetait le `border-left-color` invalide. Resultat rendu : un bord `medium`
96
+ (~3px) en `currentColor` au lieu de la largeur et de la couleur demandees.
97
+
98
+ ⛔ **Aucun diagnostic.** Le type-check passait, rien n'etait leve, rien
99
+ n'etait logue. Le chemin booleen (`borderLeft: true`) emettait pourtant un
100
+ `var()` correctement — seul l'analyseur de chaine refusait.
101
+
102
+ Le groupe `width` accepte desormais une alternative `var()`, **conditionnee
103
+ par un lookahead sur un mot-clé de style**. Ce garde n'est pas decoratif : les
104
+ trois groupes de la regex peuvent matcher vide, donc une alternative `var()`
105
+ nue aurait happe `var(--ma-couleur)` — une couleur SEULE, cas courant qui
106
+ fonctionnait — et aurait inverse la panne. Le lookahead tire sa liste de
107
+ `BORDER_STYLE`, pour qu'elle ne puisse plus deriver de celle du groupe `style`.
108
+
109
+ ⚠️ **Limite connue, pinnee par trois tests et non corrigee ici.** Une largeur
110
+ `var()` **contenant une espace** (`var(--x, 4px)`) ne passe que par les props
111
+ PAR COTE. La prop globale `border` fait un `split(' ')` et coupe la valeur en
112
+ fragments invalides. Avant ce lot la meme valeur tombait entiere dans `color`
113
+ et y etait scindee en quatre — aucun bord dans les deux cas, donc pas de
114
+ regression, mais pas repare. **Un preset portant une largeur tokenisee doit
115
+ viser une prop par cote ou d'axe, jamais `border`.**
116
+
117
+ ### Added — `fontStyle` en passthrough sur `ITypographyProps`
118
+
119
+ `font-style` n'avait ni prop, ni groupe de tokens, ni classe utilitaire
120
+ (`0` occurrence dans `interfaces/Commons/` et `composables/Commons/`, `0` pour
121
+ `font__style` dans `primitive.css`). `useTypography` enveloppant toute valeur
122
+ en token, `italic` / `normal` — des mots-clés CSS, pas des echelons — devaient
123
+ passer **litteralement**. Aucun canal nouveau : `--origam-blockquote---font-style`
124
+ etait deja declare et deja lu.
125
+
126
+ ### Internal — ce que la campagne zero-changement ne prouve pas
127
+
128
+ `BORDER_REGEX` sert la prop `border` sur ~100 composants sans baseline VRT, et
129
+ la verification exigee etait donc : aucune valeur du depot ne change de
130
+ decoupage. Verdict — **81 valeurs `border*` distinctes, 81 decoupages
131
+ identiques, delta zero**.
132
+
133
+ ⛔ Mais la regex **naive** que ce garde-fou existe pour eviter ne diverge, elle
134
+ non plus, **sur aucune des 81 valeurs reelles** : aucun fichier du depot ne
135
+ passe une couleur `var()` seule a une prop de bordure. **Le corpus reel
136
+ n'aurait pas attrape la regression inverse** — seul le controle negatif
137
+ synthetique `var(--c)` l'attrape. Une campagne sur valeurs reelles prouve
138
+ moins qu'elle n'en a l'air ; les controles negatifs sont ce qui la rend
139
+ concluante. Consigne dans `border.const.ts`.
140
+
141
+ Hors paquet publie, dans le meme intervalle : `pnpm audit` est repasse de
142
+ **7 high / 7 moderate / 3 low** a **0**, par relevement de trois `overrides`
143
+ (`brace-expansion@2`, `brace-expansion@5`, `undici@8`). Aucun fichier de
144
+ `packages/ds` touche, donc le tarball est inchange par cette partie.
145
+
21
146
  ## [2.18.20] - 2026-09-30
22
147
 
23
148
  ### Added — surfaces de props `opacity` et `backdrop`, et les deux trous de `IStateEffectConfig`