origam 2.27.0 → 2.29.1
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 +43 -0
- package/dist/src/assets/css/main.css +1 -1
- package/dist/src/assets/css/tokens/dark.css +2 -0
- package/dist/src/assets/css/tokens/light.css +1 -0
- package/dist/src/assets/scss/tokens/_dark.scss +2 -0
- package/dist/src/assets/scss/tokens/_light.scss +1 -0
- package/dist/src/components/Btn/OrigamBtn.vue +53 -14
- package/dist/src/components/Chart/OrigamChartCartesian.vue +1 -1
- package/dist/src/components/Chart/OrigamChartPolar.vue +1 -1
- package/dist/src/components/Chip/OrigamChip.vue +1 -1
- package/dist/src/components/Code/OrigamCode.vue +0 -2
- package/dist/src/composables/Commons/style.composable.cjs +14 -1
- package/dist/src/composables/Commons/style.composable.d.ts +0 -14
- package/dist/src/composables/Commons/style.composable.js +13 -2
- package/dist/src/composables/Commons/styleTag.composable.cjs +10 -4
- package/dist/src/composables/Commons/styleTag.composable.js +11 -5
- package/dist/src/consts/Commons/ssr-style.const.cjs +8 -0
- package/dist/src/consts/Commons/ssr-style.const.d.ts +19 -0
- package/dist/src/consts/Commons/ssr-style.const.js +2 -0
- package/dist/src/consts/index.cjs +11 -0
- package/dist/src/consts/index.d.ts +1 -0
- package/dist/src/consts/index.js +1 -0
- package/dist/src/directives/Contrast/contrast.directive.cjs +58 -6
- package/dist/src/directives/Contrast/contrast.directive.d.ts +10 -0
- package/dist/src/directives/Contrast/contrast.directive.js +61 -9
- package/dist/src/interfaces/Btn/btn.interface.d.ts +1 -0
- package/dist/src/interfaces/Commons/commons.interface.d.ts +14 -0
- package/dist/src/interfaces/Commons/style.interface.d.ts +21 -0
- package/dist/src/nuxt/plugin.server.cjs +18 -0
- package/dist/src/nuxt/plugin.server.js +9 -0
- package/dist/src/origam.cjs +3 -0
- package/dist/src/origam.js +5 -1
- package/dist/src/types/tokens.type.d.ts +1 -1
- package/dist/src/utils/Commons/ssr-styles.util.cjs +41 -0
- package/dist/src/utils/Commons/ssr-styles.util.d.ts +6 -0
- package/dist/src/utils/Commons/ssr-styles.util.js +26 -0
- package/dist/src/utils/index.cjs +11 -0
- package/dist/src/utils/index.d.ts +1 -0
- package/dist/src/utils/index.js +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,49 @@ This project follows [Semantic Versioning](https://semver.org).
|
|
|
18
18
|
|
|
19
19
|
## [Unreleased]
|
|
20
20
|
|
|
21
|
+
## [2.29.1] - 2026-10-15
|
|
22
|
+
|
|
23
|
+
### Fixed — publication de rattrapage : 2.28.0 et 2.29.0 n'avaient pas été publiées
|
|
24
|
+
|
|
25
|
+
Les commits de release 2.28.0 et 2.29.0 ont échoué au quality gate SonarQube du workflow Build (`[CODE_SMELL/CRITICAL] contrast.directive.ts:346 — Remove this use of the "void" operator`, introduit par #1112). Aucune des deux n'a été publiée sur npm. Le défaut est corrigé (#1124 : helper `forceStyleRecalc(el)` dans `v-contrast`, le recalcul de style a toujours lieu), et **2.29.1 livre le contenu des sections 2.28.0 et 2.29.0 ci-dessous**. Depuis 2.27.0, monter directement en 2.29.1. Le trou du quality gate (Sonar ne tourne pas sur les PR) est suivi dans #1123.
|
|
26
|
+
|
|
27
|
+
## [2.29.0] - 2026-10-15
|
|
28
|
+
|
|
29
|
+
> **Non publiée sur npm** — bloquée par le quality gate SonarQube ; contenu livré dans **2.29.1**.
|
|
30
|
+
|
|
31
|
+
### Changed — `OrigamBtn` : prop `wrap`, hauteur MINIMALE, `padding-block` lu (#1093, #1094, #929)
|
|
32
|
+
|
|
33
|
+
Trois defauts du meme geste : un libelle plus long que le bouton ne pouvait ni passer a la ligne (#1093), ni agrandir le bouton (#1094), ni etre aere par un padding vertical (#929). Mesure : sonde Chromium `pnpm -F @origam/tests audit:btn-height`, meme code de sonde avant (`origin/develop`) et apres, 8 identites x 2 modes.
|
|
34
|
+
|
|
35
|
+
- **`wrap`** (nouvelle prop booleenne, classe `origam-btn--wrap`) : `__content` passe de `white-space: nowrap` a `normal`, texte centre. Themable par props comme toute prop (`theme.components['origam-btn']`). Mesure, `block` dans 320 px, libelle FR de 445 px : sans `wrap` le contenu depasse de 70 px ; avec `wrap` il tient (0 px de debordement) sur deux lignes.
|
|
36
|
+
- **Hauteur = minimum** : `height: auto` + `min-height` = `calc(--origam-btn---height + --origam-btn---density)` (inchange). Un bouton dont le contenu tient garde sa hauteur ; il ne grandit que si le contenu depasse. Mesure, `size="large"` dans 160 px avec `wrap` : 44 px -> 112 px (contenu : 112 px). La racine declare `align-items: center` (effet sur `block`, en `flex`) pour garder le contenu centre dans le minimum.
|
|
37
|
+
- **`--origam-btn---padding-block`** est enfin LU (repli `0px`, declare dans `light.css` / `dark.css` et leurs jumeaux SCSS). Les regles `&--size-*` et `&--slim` ne posent plus que `padding-inline` ; un shorthand `padding: 0 …` remettrait le bloc a zero.
|
|
38
|
+
|
|
39
|
+
**Hauteur au repos, avant/apres** : 2 672 `rect-height` releves (identite x mode x forme x taille x densite, plus Chip, Code, `BtnGroup`, `BtnToggle`), **2 654 identiques, 18 ecarts** — tous `x-small` + `compact` (boite de 12 px) dont le contenu ne tenait deja pas : `border="thick"` 12 -> 14 px (16 configurations), `outlined` sous l'identite `cartoon` 12 -> 16 px (2 configurations, 1 px de debordement avant). Aucun autre ecart de hauteur ni de largeur. `BtnGroup` et `BtnToggle` : 0 ecart.
|
|
40
|
+
|
|
41
|
+
**Ruptures (assumees, pre-1.0) :**
|
|
42
|
+
- Rendu : limite aux boutons dont le contenu depassait deja la hauteur fixe (cf. les 18 cas ci-dessus). Les boutons `icon` gardent une hauteur FIXE (`&--icon { height: calc(token) }`) : leur largeur derive du meme token, aucun libelle ne peut deborder.
|
|
43
|
+
- `--origam-btn---min-height: 0` n'est plus sans effet : avec `height: auto` il SUPPRIME le plancher et le bouton retombe a la hauteur de son contenu. Les cinq ecritures de ce `0` dans le DS (`OrigamChip`, `OrigamCode` x2, `OrigamChartCartesian`, `OrigamChartPolar`) etaient sans effet sous une hauteur fixe et ont ete retirees ; un consommateur externe qui l'ecrit doit faire de meme. `--origam-btn---min-height` peut toujours RELEVER le minimum.
|
|
44
|
+
- Mesure documentee, non corrigee : sans police d'icones chargee, le contenu d'un bouton avec `prepend-icon` aux tailles `x-small`, `large` et `x-large` se decale de 0,5 px vers le haut (144 releves sur 16 configurations). Je ne sais pas si l'ecart se voit avec la vraie police d'icones.
|
|
45
|
+
|
|
46
|
+
## [2.28.0] - 2026-10-15
|
|
47
|
+
|
|
48
|
+
> **Non publiée sur npm** — bloquée par le quality gate SonarQube ; contenu livré dans **2.29.1**.
|
|
49
|
+
|
|
50
|
+
### Fixed — `useStyle` emet sa regle cote serveur ; `v-contrast` attend la fin reelle de la transition et ne logge plus qu'en dev (#1092)
|
|
51
|
+
|
|
52
|
+
**`useStyle` (140 composants).** La regle `#id { … }` n'etait ecrite dans `<head>` que depuis `onMounted`, qui ne tourne jamais cote serveur : un composant qui ne se peint que par cette regle (`OrigamBtn`, `OrigamBtnToggle`, `OrigamBtnGroup`, `OrigamAvatar`, `OrigamBreadcrumb`, `OrigamBottomNav`, `OrigamStepper`) sortait nu du HTML servi. Mesure du ticket, site marketing en production, `/contact`, bouton primaire, JS coupe puis actif : fond `rgb(251, 245, 255)` → `rgb(124, 58, 237)`, rayon `8px` → `12px`. Meme page, build corrige : `rgb(124, 58, 237)` / `12px` des le premier paint, identique apres hydratation.
|
|
53
|
+
|
|
54
|
+
- Cote serveur, `createOrigam()` fournit un collecteur **par app** ; `useStyle` y enregistre sa regle. Nuxt : le plugin serveur du module pousse les regles dans le head (`app:rendered`). Vue SSR sans Nuxt : `renderSsrStyles(app)` / `getSsrStyles(app)` (exports de `origam/utils`), a inserer dans `<head>` apres `renderToString`.
|
|
55
|
+
- Chaque `<style>` porte un `id` derive du `useId()` de l'instance (+ l'index de l'appel `useStyle` dans l'instance) : le client **reutilise** le tag du serveur au montage. Un second `useStyle` dans un meme document (deuxieme app) ne partage plus le tag du premier ; `useStyleTag.unload()` retire l'element qu'il detient au lieu de `removeChild(getElementById(id))`, qui levait quand le `<head>` avait ete vide.
|
|
56
|
+
- Une valeur de style contenant `</style` est echappee (`<\/style`) : elle ne peut plus fermer le tag.
|
|
57
|
+
|
|
58
|
+
**Rupture (assumee, pre-1.0) :** l'`id` par defaut du `<style>` d'un `useStyle` passe de `origam_styletag_<N>` (compteur de module) a `origam-style-<composant>-<useId>-<index>`. `styleTagId` change donc de valeur et de forme ; `useStyleTag(css)` appele sans `id` garde son defaut.
|
|
59
|
+
|
|
60
|
+
**`v-contrast`.** La correction reste active en production, `!important` conserve. Changements :
|
|
61
|
+
- le `console.warn` n'est plus emis que sous `import.meta.env?.DEV` (le texte disparait du bundle de production : `Low text contrast` absent de `.output`) ;
|
|
62
|
+
- **une seule** mesure, prise une fois les transitions de couleur de l'element et de ses ancetres terminees (`getAnimations()` apres `getComputedStyle` ; repli : timer derive de `transition-duration` + `transition-delay`). Remplace rAF + `setTimeout(250)` : avec la transition de 280 ms du Btn, la 2e passe lisait une couleur en cours de transition (2 avertissements par bouton, le second contre `rgb(125, 60, 237)` pour un fond qui se pose a `rgb(124, 58, 237)`).
|
|
63
|
+
|
|
21
64
|
## [2.27.0] - 2026-10-15
|
|
22
65
|
|
|
23
66
|
### Removed — `OrigamSkeleton` : les gabarits `card` et `list-item` (BREAKING, #1073 lot 3, #1083)
|