origam 2.18.18 → 2.18.20
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/CHANGELOG.md +183 -0
- package/dist/src/assets/css/main.css +1 -1
- package/dist/src/assets/css/tokens/dark.css +124 -6
- package/dist/src/assets/css/tokens/light.css +62 -3
- package/dist/src/assets/css/tokens/origam-utilities.css +30 -0
- package/dist/src/assets/css/tokens/primitive.css +5 -0
- package/dist/src/assets/scss/tokens/_dark.scss +124 -6
- package/dist/src/assets/scss/tokens/_light.scss +62 -3
- package/dist/src/assets/scss/tokens/_origam-utilities.scss +30 -0
- package/dist/src/assets/scss/tokens/_primitive.scss +5 -0
- package/dist/src/components/Audio/OrigamAudio.vue +66 -2
- package/dist/src/components/Chip/OrigamChip.vue +34 -0
- package/dist/src/components/Field/OrigamField.vue +76 -3
- package/dist/src/components/List/OrigamList.vue +90 -3
- package/dist/src/components/Main/OrigamMain.vue +2 -2
- package/dist/src/components/Media/OrigamMediaScrubber.vue +11 -1
- package/dist/src/components/SliderField/OrigamSliderField.vue +138 -3
- package/dist/src/components/SliderField/OrigamSliderFieldTrack.vue +12 -1
- package/dist/src/components/Snackbar/OrigamSnackbar.vue +2 -2
- package/dist/src/components/Switch/OrigamSwitch.vue +32 -0
- package/dist/src/components/TextField/OrigamTextField.vue +3 -1
- package/dist/src/components/Video/OrigamVideo.vue +11 -1
- package/dist/src/composables/Commons/backdrop.composable.cjs +50 -0
- package/dist/src/composables/Commons/backdrop.composable.d.ts +32 -0
- package/dist/src/composables/Commons/backdrop.composable.js +33 -0
- package/dist/src/composables/Commons/layout.composable.cjs +2 -2
- package/dist/src/composables/Commons/layout.composable.d.ts +16 -2
- package/dist/src/composables/Commons/layout.composable.js +1 -1
- package/dist/src/composables/Commons/opacity.composable.cjs +50 -0
- package/dist/src/composables/Commons/opacity.composable.d.ts +33 -0
- package/dist/src/composables/Commons/opacity.composable.js +34 -0
- package/dist/src/composables/Commons/stateEffect.composable.cjs +17 -2
- package/dist/src/composables/Commons/stateEffect.composable.d.ts +7 -2
- package/dist/src/composables/Commons/stateEffect.composable.js +23 -2
- package/dist/src/composables/Commons/theme-props-resolver.composable.cjs +44 -9
- package/dist/src/composables/Commons/theme-props-resolver.composable.d.ts +33 -1
- package/dist/src/composables/Commons/theme-props-resolver.composable.js +42 -10
- package/dist/src/composables/index.cjs +24 -0
- package/dist/src/composables/index.d.ts +2 -0
- package/dist/src/composables/index.js +2 -0
- package/dist/src/consts/Commons/backdrop.const.cjs +15 -0
- package/dist/src/consts/Commons/backdrop.const.d.ts +47 -0
- package/dist/src/consts/Commons/backdrop.const.js +9 -0
- package/dist/src/consts/Commons/opacity.const.cjs +20 -0
- package/dist/src/consts/Commons/opacity.const.d.ts +58 -0
- package/dist/src/consts/Commons/opacity.const.js +14 -0
- package/dist/src/consts/Commons/variant-preset.const.cjs +8 -0
- package/dist/src/consts/Commons/variant-preset.const.d.ts +60 -0
- package/dist/src/consts/Commons/variant-preset.const.js +2 -0
- package/dist/src/consts/index.cjs +33 -0
- package/dist/src/consts/index.d.ts +3 -0
- package/dist/src/consts/index.js +3 -0
- package/dist/src/interfaces/Commons/backdrop.interface.cjs +1 -0
- package/dist/src/interfaces/Commons/backdrop.interface.d.ts +49 -0
- package/dist/src/interfaces/Commons/backdrop.interface.js +0 -0
- package/dist/src/interfaces/Commons/opacity.interface.cjs +1 -0
- package/dist/src/interfaces/Commons/opacity.interface.d.ts +37 -0
- package/dist/src/interfaces/Commons/opacity.interface.js +0 -0
- package/dist/src/interfaces/Commons/state-effect.interface.d.ts +31 -0
- package/dist/src/interfaces/Commons/theme.interface.d.ts +33 -0
- package/dist/src/interfaces/Masonry/masonry.interface.d.ts +2 -2
- package/dist/src/interfaces/index.cjs +22 -0
- package/dist/src/interfaces/index.d.ts +2 -0
- package/dist/src/interfaces/index.js +2 -0
- package/dist/src/origam.cjs +2 -1
- package/dist/src/origam.js +8 -2
- package/dist/src/types/Commons/backdrop.type.cjs +1 -0
- package/dist/src/types/Commons/backdrop.type.d.ts +23 -0
- package/dist/src/types/Commons/backdrop.type.js +0 -0
- package/dist/src/types/Commons/opacity.type.cjs +1 -0
- package/dist/src/types/Commons/opacity.type.d.ts +36 -0
- package/dist/src/types/Commons/opacity.type.js +0 -0
- package/dist/src/types/Commons/state-effect.type.d.ts +2 -1
- package/dist/src/types/Commons/variant-preset.type.cjs +1 -0
- package/dist/src/types/Commons/variant-preset.type.d.ts +73 -0
- package/dist/src/types/Commons/variant-preset.type.js +0 -0
- package/dist/src/types/index.cjs +33 -0
- package/dist/src/types/index.d.ts +3 -0
- package/dist/src/types/index.js +3 -0
- package/dist/src/types/tokens.type.d.ts +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,189 @@ This project follows [Semantic Versioning](https://semver.org).
|
|
|
18
18
|
|
|
19
19
|
## [Unreleased]
|
|
20
20
|
|
|
21
|
+
## [2.18.20] - 2026-09-30
|
|
22
|
+
|
|
23
|
+
### Added — surfaces de props `opacity` et `backdrop`, et les deux trous de `IStateEffectConfig`
|
|
24
|
+
|
|
25
|
+
**Aucun composant converti.** Ce lot pose les surfaces de props sans lesquelles
|
|
26
|
+
les variants `plain` et `ghost` d'`OrigamBtn` ne peuvent pas devenir des presets
|
|
27
|
+
ADR-005 — c'est du déblocage, la conversion vient après.
|
|
28
|
+
|
|
29
|
+
- `IOpacityProps` + `useOpacity`, `IBackdropProps` + `useBackdrop` — quatre
|
|
30
|
+
absences vérifiées à **0 occurrence** avant ce lot.
|
|
31
|
+
- `IStateEffectConfig` gagne **`opacity` ET `borderColor`**. L'audit D6 de
|
|
32
|
+
l'ADR-005 ne citait que le premier : `outlined --active` pose un
|
|
33
|
+
`border-color`, que le raccourci `border` ne peut pas porter. Trouvé à la
|
|
34
|
+
mesure, consigné en commentaire sur la prop elle-même.
|
|
35
|
+
- Nouvelle échelle primitive de flou — `--origam-blur---{xs,sm,md,lg,xl}` =
|
|
36
|
+
`4 / 6 / 8 / 16 / 24px`. Les échelons viennent d'un **comptage des littéraux
|
|
37
|
+
`blur(Npx)`** sur `packages/ds/src` + `packages/marketing/src`
|
|
38
|
+
(`8px ×25, 16px ×21, 6px ×17, 20px ×14, 24px ×7, 12px ×7, 28px ×5`), d'où
|
|
39
|
+
`sm = 6px` plutôt qu'un doublement régulier.
|
|
40
|
+
- 30 classes utilitaires, dans la feuille CSS **et** son jumeau SCSS.
|
|
41
|
+
|
|
42
|
+
### Internal — réutilisé plutôt que créé
|
|
43
|
+
|
|
44
|
+
Deux des quatre manques annoncés par l'ADR n'en étaient qu'à moitié :
|
|
45
|
+
|
|
46
|
+
- **L'échelle primitive d'opacité existait déjà** — `--origam-opacity---{0,12,
|
|
47
|
+
26,32,50,60,70,87,100}`, déclarée dans `primitive.css` et **déjà lue** par la
|
|
48
|
+
règle `--variant-plain` de Btn. D6 proposait « `IOpacityProps` + un groupe de
|
|
49
|
+
tokens » : seule la première moitié manquait. Aucune seconde échelle n'a été
|
|
50
|
+
déclarée.
|
|
51
|
+
- **Le canal `--origam-{cmp}---backdrop-filter` était déjà en place sur 12
|
|
52
|
+
composants** (Alert, Card, Chip, Field, Menu, Sheet, Snackbar, Tooltip,
|
|
53
|
+
Toolbar, Overlay, CommandPalette, Btn). Ce qui manquait vraiment, c'était
|
|
54
|
+
l'échelle de flou ci-dessus.
|
|
55
|
+
|
|
56
|
+
`borderColor` et `opacity` sur `IStateEffectConfig` empruntent leurs types à
|
|
57
|
+
`IBorderProps['borderColor']` et `IOpacityProps` — comme `border` le faisait
|
|
58
|
+
déjà. `useStateEffect` transmettait **déjà** `borderColor` à `useBorder`, mais
|
|
59
|
+
en le lisant sur `props` et documenté « non state-swappable » : le getter passe
|
|
60
|
+
désormais par `pickEffective`, sans nouveau chemin de code.
|
|
61
|
+
|
|
62
|
+
## [2.18.19] - 2026-09-30
|
|
63
|
+
|
|
64
|
+
### Changed — ⚠️ RUPTURE : `useLayout` renommé `useLayoutMain`
|
|
65
|
+
|
|
66
|
+
Le DS exportait `useLayout`, **le même nom que l'auto-import natif de Nuxt**
|
|
67
|
+
(`#app/composables/layout`). Chez tout consommateur Nuxt, c'est le nôtre qui
|
|
68
|
+
gagnait et celui du framework qui était ignoré — relevé dans le journal d'un
|
|
69
|
+
serveur de dev, pas par un test :
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
WARN [NUXT_B6002] useLayout is already auto-imported by Nuxt as a built-in
|
|
73
|
+
WARN Duplicated imports "useLayout", the one from "#app/composables/layout"
|
|
74
|
+
has been ignored
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
⛔ Ce n'était pas cosmétique : notre version **lève une exception** sans provider
|
|
78
|
+
Origam (`throw new Error('[Origam] Could not find injected layout')`). Tout code
|
|
79
|
+
Nuxt appelant `useLayout` hors d'un `OrigamLayout` plantait au lieu de recevoir
|
|
80
|
+
le composable du framework.
|
|
81
|
+
|
|
82
|
+
Le nouveau nom dit ce qu'il fait — il expose la zone **main** (`mainRect`,
|
|
83
|
+
`mainStyles`, `mainId`) — et s'aligne sur `useLayoutItem` et `useCreateLayout`,
|
|
84
|
+
avec lesquels il partage le contrat `ORIGAM_LAYOUT_KEY`. Rupture d'API publique
|
|
85
|
+
assumée, livrée en mineure conformément à la politique du dépôt.
|
|
86
|
+
|
|
87
|
+
### Added — ADR-005 lot 1 : le variant devient un preset de props
|
|
88
|
+
|
|
89
|
+
Le mécanisme que l'ADR décrivait depuis des mois **n'avait jamais été
|
|
90
|
+
construit** : ni `variant-preset.type.ts`, ni table de presets, ni code
|
|
91
|
+
d'application. Seule la garde `no-variant-css` existait, et elle ne faisait que
|
|
92
|
+
**geler** 36 violations sans jamais en retirer une.
|
|
93
|
+
|
|
94
|
+
Ce lot pose le mécanisme, pas les conversions : le type, le registre, le **rang
|
|
95
|
+
dans le resolver** (site d'appel > thème > preset > `withDefaults`, l'ordre
|
|
96
|
+
arbitré en round 2 de l'ADR), la clé `IOrigamTheme.variants` et sa fusion à
|
|
97
|
+
l'installation. 19 specs, dont deux qui épinglent des **no-op silencieux** que le
|
|
98
|
+
lot risquait : l'early-out qui ne patchait rien sans thème enregistré — le cas
|
|
99
|
+
par défaut depuis #360 — et l'union des clés limitée au variant actif, qui gelait
|
|
100
|
+
un basculement à l'exécution.
|
|
101
|
+
|
|
102
|
+
La preuve de non-régression est une VRT : les 7 variants d'`OrigamBtn` restent
|
|
103
|
+
**pixel-identiques** à leurs références.
|
|
104
|
+
|
|
105
|
+
Mesure conservée dans l'en-tête de la garde : chaque `!important` d'un bloc
|
|
106
|
+
variant n'existait que pour battre la déclaration **inline**, jamais l'utilitaire
|
|
107
|
+
tokenisé que la règle scopée battait déjà sur la spécificité. Une fois le variant
|
|
108
|
+
résolu au rang des props, la bataille de cascade **n'a plus lieu**.
|
|
109
|
+
|
|
110
|
+
### Fixed — le menu de navigation était disproportionné sur les 8 identités
|
|
111
|
+
|
|
112
|
+
Signalé par le propriétaire. Mesuré sur la section « Features » (10 items), en
|
|
113
|
+
mesurant la **pastille** et non le texte :
|
|
114
|
+
|
|
115
|
+
| | avant | après |
|
|
116
|
+
|---|---|---|
|
|
117
|
+
| rangée | 48px | **36px** |
|
|
118
|
+
| côtés gauche/droite | 12-15px | **8-11px** |
|
|
119
|
+
| haut/bas | 5-7px | **8-11px** |
|
|
120
|
+
| écart entre pastilles | **0px** sur 7 identités sur 8 | **2px** |
|
|
121
|
+
| largeur du menu | **180px fixes** pour 114px de contenu | **128-140px** |
|
|
122
|
+
| hauteur du menu | ~590px | **394px** |
|
|
123
|
+
|
|
124
|
+
Quatre causes distinctes :
|
|
125
|
+
|
|
126
|
+
- `--origam-list---padding-block-*` valait **0 sur sept identités** — la matrice
|
|
127
|
+
runtime l'émet à zéro pour chaque marque, et `origam` n'y échappait que par le
|
|
128
|
+
reset généré qu'elle traîne encore (#609) ;
|
|
129
|
+
- l'indent `-8px` du mode nav ne s'applique qu'au côté *start*, d'où une
|
|
130
|
+
asymétrie gauche/droite sur cinq identités ;
|
|
131
|
+
- aucun écart entre items, et la liste étant un conteneur **bloc**, `gap` n'était
|
|
132
|
+
pas disponible sans la passer en flex — ce qui toucherait ~200 consommateurs ;
|
|
133
|
+
- `layouts/default.vue` posait `min-width: 180px` **et** `width: 180px`, une
|
|
134
|
+
largeur figée pour 114px de contenu utile.
|
|
135
|
+
|
|
136
|
+
⚠️ La rangée à 36px passe **sous la cible tactile 44×44** de WCAG 2.5.5.
|
|
137
|
+
Compromis assumé par le propriétaire pour un menu d'en-tête pointé à la souris,
|
|
138
|
+
et confiné à `&--nav` : une liste de contenu garde ses 48px. Les trois valeurs
|
|
139
|
+
sont des **tokens déclarés**, pas des littéraux.
|
|
140
|
+
|
|
141
|
+
### Fixed — le catalogue marketing vendait un pipeline supprimé (#960)
|
|
142
|
+
|
|
143
|
+
Le tableau de tokens de **chaque** page composant affichait une légende
|
|
144
|
+
promettant `--origam-<composant>---<propriété>` au-dessus d'un bouton **Copier**
|
|
145
|
+
qui livrait `alert.background-color` pour `{color.surface.disabled}`.
|
|
146
|
+
|
|
147
|
+
523 des 603 lignes re-dérivées ; **80 abandonnées sans qu'aucune soit inventée**
|
|
148
|
+
— repointer vers un token voisin aurait remplacé un nom qui ne résout rien par un
|
|
149
|
+
nom qui résout *la mauvaise chose*. Vérifié par un second analyseur de feuilles
|
|
150
|
+
écrit indépendamment : 3204 déclarations des deux côtés, 0 divergence.
|
|
151
|
+
`pipelineNote` supprimé partout, baseline 230 → 0.
|
|
152
|
+
|
|
153
|
+
### Fixed — trois attributs ARIA morts sur tout `OrigamSelect` (#938)
|
|
154
|
+
|
|
155
|
+
`OrigamTextField` appelait `filterInputAttrs(attrs)` **une seule fois dans le
|
|
156
|
+
corps de `setup()`**, ce qui **copie** les clés hors du proxy `$attrs` et fige la
|
|
157
|
+
distribution au montage. `aria-expanded` restait donc à `"false"` listbox ouvert,
|
|
158
|
+
et `aria-controls` / `aria-activedescendant` n'étaient **jamais posés** : un
|
|
159
|
+
lecteur d'écran annonçait le select comme toujours replié, et la navigation
|
|
160
|
+
clavier était muette de bout en bout.
|
|
161
|
+
|
|
162
|
+
C'est la règle « un prop lu *eagerly* dans `setup()` ne voit jamais le thème »
|
|
163
|
+
appliquée aux `$attrs`. Le spec qui gardait ce contrat expirait à **45,7 s** sans
|
|
164
|
+
jamais atteindre son assertion ; il passe en **796 ms** et tient 25/25 en
|
|
165
|
+
`--repeat-each=5`.
|
|
166
|
+
|
|
167
|
+
⛔ Ce spec **ne tournait pas en CI** : il figurait parmi les 174 enregistrées
|
|
168
|
+
comme non exécutées. La garantie n'existait donc pas. Il entre dans `GREEN_SPECS`
|
|
169
|
+
(81 → 82 specs réellement exécutées).
|
|
170
|
+
|
|
171
|
+
### Fixed — #597, #596 : 58 canaux de thème morts résorbés
|
|
172
|
+
|
|
173
|
+
Btn, DataTable, Grid, List (#597) puis Tabs, Toolbar, Pagination (#596).
|
|
174
|
+
**Aucune** variante ni état de `Tabs` n'était déclaré — 17 canaux, donc toute
|
|
175
|
+
édition de thème sur eux était un **no-op silencieux**.
|
|
176
|
+
|
|
177
|
+
13 alias de nommage DataTable **renommés au lieu d'être dupliqués** : net nul au
|
|
178
|
+
lieu de +13 tokens, confirmé par l'ensemble émetteur passant de 3142 à 3129.
|
|
179
|
+
|
|
180
|
+
## [2.18.18] - 2026-09-30
|
|
181
|
+
|
|
182
|
+
### Fixed — #596 : Tabs, Toolbar et Pagination (26 canaux morts)
|
|
183
|
+
|
|
184
|
+
299 → 273 canaux de thème morts. Le constat qui justifie le tag à lui seul :
|
|
185
|
+
**aucune** des variantes ni des états de `Tabs` n'était déclarée (17 canaux), donc
|
|
186
|
+
toute édition de thème sur eux était un no-op silencieux.
|
|
187
|
+
|
|
188
|
+
Zéro changement de rendu, **mesuré par canal** : Playwright/Chromium contre le
|
|
189
|
+
Histoire statique, light et dark, A (livré) vs B (token neutralisé à `initial`,
|
|
190
|
+
donc le repli reconstitue le rendu d'avant) vs C (sonde) — 52 lignes, A==B
|
|
191
|
+
partout, C!=A partout.
|
|
192
|
+
|
|
193
|
+
### Fixed — six versions publiées sans entrée de changelog
|
|
194
|
+
|
|
195
|
+
`v2.18.12` à `v2.18.17` étaient **taguées et publiées sur npm** mais absentes de
|
|
196
|
+
ce document — et donc de la page publique `/changelog`, qui annonçait 2.18.11
|
|
197
|
+
quand npm servait 2.18.16.
|
|
198
|
+
|
|
199
|
+
⚠️ Le job « Changelog drift check » ne pouvait pas le voir : il vérifie que la
|
|
200
|
+
constante marketing colle au document, **jamais que le document couvre les
|
|
201
|
+
tags**. Angle mot documenté dans l'en-tête de `generate-changelog.mjs`.
|
|
202
|
+
|
|
203
|
+
|
|
21
204
|
## [2.18.17] - 2026-09-29
|
|
22
205
|
|
|
23
206
|
Dix-huit commits, dont la réparation qui débloquait `Type-check (vue-tsc)` sur
|