origam 2.21.0 → 2.23.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.
- package/CHANGELOG.md +95 -0
- package/dist/src/assets/css/main.css +1 -1
- package/dist/src/assets/css/tokens/dark.css +8 -0
- package/dist/src/assets/css/tokens/light.css +3 -0
- package/dist/src/assets/scss/tokens/_dark.scss +8 -0
- package/dist/src/assets/scss/tokens/_light.scss +3 -0
- package/dist/src/components/CommandPalette/OrigamCommandPalette.vue +8 -2
- package/dist/src/components/ContextualMenu/OrigamContextualMenu.vue +1 -1
- package/dist/src/components/Dialog/OrigamDialog.vue +1 -1
- package/dist/src/components/Dialog/OrigamDialogConfirmation.vue +1 -1
- package/dist/src/components/Drawer/OrigamDrawer.vue +12 -2
- package/dist/src/components/Menu/OrigamMenu.vue +1 -1
- package/dist/src/components/Overlay/OrigamOverlay.vue +2 -2
- package/dist/src/components/Snackbar/OrigamSnackbar.vue +1 -1
- package/dist/src/components/Snackbar/OrigamSnackbarGroup.vue +8 -2
- package/dist/src/components/Tooltip/OrigamTooltip.vue +1 -1
- package/dist/src/composables/Code/code.composable.cjs +7 -5
- package/dist/src/composables/Code/code.composable.d.ts +7 -0
- package/dist/src/composables/Code/code.composable.js +8 -6
- package/dist/src/composables/Commons/hydration.composable.cjs +8 -3
- package/dist/src/composables/Commons/hydration.composable.d.ts +13 -5
- package/dist/src/composables/Commons/hydration.composable.js +6 -1
- package/dist/src/composables/Commons/teleport.composable.cjs +3 -0
- package/dist/src/composables/Commons/teleport.composable.d.ts +56 -0
- package/dist/src/composables/Commons/teleport.composable.js +3 -0
- package/dist/src/composables/Commons/variant.composable.d.ts +11 -3
- package/dist/src/consts/Code/code.const.cjs +3 -2
- package/dist/src/consts/Code/code.const.d.ts +14 -0
- package/dist/src/consts/Code/code.const.js +1 -0
- package/dist/src/interfaces/Btn/btn-group.interface.d.ts +2 -2
- package/dist/src/interfaces/Btn/btn.interface.d.ts +2 -2
- package/dist/src/interfaces/Code/code.interface.d.ts +33 -1
- package/dist/src/interfaces/CommandPalette/command-palette.interface.d.ts +2 -1
- package/dist/src/interfaces/Commons/attach.interface.cjs +1 -0
- package/dist/src/interfaces/Commons/attach.interface.d.ts +30 -0
- package/dist/src/interfaces/Commons/attach.interface.js +0 -0
- package/dist/src/interfaces/Commons/commons.interface.d.ts +2 -0
- package/dist/src/interfaces/Commons/variant.interface.d.ts +30 -8
- package/dist/src/interfaces/ConfirmWrapper/confirm-wrapper.interface.d.ts +7 -2
- package/dist/src/interfaces/Drawer/drawer.interface.d.ts +24 -1
- package/dist/src/interfaces/Field/field.interface.d.ts +2 -2
- package/dist/src/interfaces/NumberField/number-field.interface.d.ts +2 -2
- package/dist/src/interfaces/OtpInputField/otp-input-field.interface.d.ts +2 -2
- package/dist/src/interfaces/Overlay/overlay.interface.d.ts +2 -2
- package/dist/src/interfaces/Snackbar/snackbar-group.interface.d.ts +2 -1
- package/dist/src/interfaces/index.cjs +11 -0
- package/dist/src/interfaces/index.d.ts +1 -0
- package/dist/src/interfaces/index.js +1 -0
- package/dist/src/origam.cjs +1 -0
- package/dist/src/origam.js +2 -0
- package/dist/src/themes/origam.theme.cjs +10 -1
- package/dist/src/themes/origam.theme.js +10 -1
- package/dist/src/types/Code/code.type.d.ts +29 -0
- package/dist/src/types/tokens.type.d.ts +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,101 @@ This project follows [Semantic Versioning](https://semver.org).
|
|
|
18
18
|
|
|
19
19
|
## [Unreleased]
|
|
20
20
|
|
|
21
|
+
## [2.23.0] - 2026-10-08
|
|
22
|
+
|
|
23
|
+
### Added — `createOrigam({ code: { highlighter } })` : l'application fournit son highlighter
|
|
24
|
+
|
|
25
|
+
`OrigamCode` importait `shiki` par un **specificateur nu** que le navigateur ne sait pas resoudre. Mesure sur le build de production d'une application consommatrice, avec 2.21.0 : `Failed to resolve module specifier 'shiki'`, blocs de code non colorises, et un bloc `yaml` rendu **vide**. Declarer `shiki` en dependance de l'application ne suffisait pas.
|
|
26
|
+
|
|
27
|
+
⛔ **Le `@vite-ignore` n'etait pas une negligence** : sans lui, Rollup suit le graphe jusqu'au chargeur WASM de shiki et emet un chunk virtuel invalide (`default` est un mot reserve, esbuild rejette). Le retirer aurait casse `packages/docs` (VitePress). L'option contourne les deux : si l'application fournit un highlighter, **le DS ne touche jamais a `shiki`** dans ce chemin — plus d'import, plus de specificateur nu, plus de chunk WASM.
|
|
28
|
+
|
|
29
|
+
`TShikiModule` n'exige que **`createHighlighter`**, pas la surface entiere de `shiki` : un module allege bati sur `shiki/core` + moteur regex JS fonctionne, et c'est ce qui evite la cause racine du contournement. Mesure du consommateur : **+65 Ko gzip contre +417 Ko** avec shiki complet.
|
|
30
|
+
|
|
31
|
+
⚠️ **Non cassant** : sans l'option, le chemin par defaut est inchange ; `packages/docs` compile **sans aucune modification de sa part** (verifie, `exit 0`). Et le rattrapage vers le texte brut sur une langue non embarquee est **conserve deliberement** — c'est ce qui rend un highlighter partiel utilisable sans que la page casse.
|
|
32
|
+
|
|
33
|
+
### Changed — ⚠️ RUPTURE : `IVariantProps` scinde en `IActionVariantProps` / `IInputVariantProps`
|
|
34
|
+
|
|
35
|
+
**14 composants acceptaient des valeurs de `variant` qui ne faisaient rien.** `IVariantProps` etait un mixin **partage** entre composants d'action et de saisie, exposant l'union des deux vocabulaires (10 valeurs) alors que chaque famille n'en implemente que la moitie. Mesure en navigateur reel, avec contrôle positif :
|
|
36
|
+
|
|
37
|
+
| famille | implemente | **inerte** |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| `OrigamBtn`, `OrigamBtnGroup`, `OrigamBtnToggle` | les 7 de `VARIANT` | **`underlined` `filled` `solo`** — byte-identiques a `flat` sur les 7 longhands |
|
|
40
|
+
| `OrigamField` + 9 descendants | les 5 de `VARIANT_INPUT` | **`text` `flat` `elevated` `tonal` `ghost`** — identiques entre eux |
|
|
41
|
+
|
|
42
|
+
`useVariant()` emet bien la classe `--variant-{valeur}` — il n'a aucune liste blanche — mais **aucune regle CSS ne la cible**.
|
|
43
|
+
|
|
44
|
+
⚠️ **`outlined` et `plain` sont implementes des DEUX cotes**, avec un rendu different selon le composant. Ce chevauchement est **legitime** (deux patterns UI distincts partageant un nom) et ne change pas. Le defaut etait l'asymetrie, pas le recouvrement.
|
|
45
|
+
|
|
46
|
+
**`IVariantProps` est SUPPRIME** — mesure : zero consommateur hors des 14 composants, de son composable et de son test. `OrigamConfirmWrapper` recoit `IInputVariantProps` : son `variant` n'est qu'un defaut pousse vers les champs qu'il enveloppe.
|
|
47
|
+
|
|
48
|
+
**Ce que la restriction a revele** : `OrigamConfirmWrapper.story.vue` proposait `VARIANT_OPTIONS` (les 7 valeurs d'action) alors que ce composant pousse des defauts vers des **champs de formulaire** — faux en silence depuis la creation de la story.
|
|
49
|
+
|
|
50
|
+
**Cout de la rupture, mesure** : un consommateur qui passe `variant="solo"` a un `OrigamBtn` n'obtient **rien** aujourd'hui. La restriction transforme un silence en erreur de compilation, ce qui l'informe. La seule application cliente connue a audite ses deux etats : **zero occurrence**, et `git grep IVariantProps` y rend **0**.
|
|
51
|
+
|
|
52
|
+
Epingle par `packages/tests/TU/playground/variant-literal-union.spec.ts`, verifie **ROUGE sur le commit parent** (10/10) et **VERT apres** (7 et 5) — sur le descripteur resolu, pas sur le texte source.
|
|
53
|
+
|
|
54
|
+
### Fixed — un test unitaire reconstruisait deux fois le programme TypeScript entier
|
|
55
|
+
|
|
56
|
+
`extractLiteralUnions()` appelle `createChecker()`, qui rebatit tout le programme de `packages/ds/tsconfig.json` depuis zero a chaque appel. Le test l'appelait **une fois par `it()`**, payant ce cout deux fois. Un seul appel partage dans un `beforeAll` suffit aux deux cas.
|
|
57
|
+
|
|
58
|
+
⚠️ **Ce n'etait pas un defaut produit ni une particularite de Node 22**, et la mesure le montre : **3,73 s** isole, **54,6 s** sur le job CI Node 22 (un timeout), **36,0 s** sur le job Node 24 du **meme run** (vert, mais presque sans marge). Le facteur de 8 a 14 vient de la contention des workers Vitest sur un runner partage — Node 22 n'a pas cause l'echec, il l'a expose le premier.
|
|
59
|
+
|
|
60
|
+
⚠️ **Ne figure pas dans le paquet publie** : le lot de fondation du playground (`packages/playground`, prive) n'affecte pas le tarball.
|
|
61
|
+
|
|
62
|
+
## [2.22.0] - 2026-10-07
|
|
63
|
+
|
|
64
|
+
### Added — `attach` sur `OrigamCommandPalette`, `OrigamSnackbarGroup` et `OrigamDrawer`
|
|
65
|
+
|
|
66
|
+
Ces trois composants codaient en dur `<teleport to="body">` et n'offraient **aucun moyen de
|
|
67
|
+
rediriger** la cible, alors que toute la famille Overlay — Tooltip, Snackbar, Dialog, Menu, via
|
|
68
|
+
`IOverlayProps` — portait déjà `attach`. C'était une surface à moitié implémentée, et la directive
|
|
69
|
+
d'`adr-007-directional-props.md` est explicite : *si un format existe, il existe partout ; on ne
|
|
70
|
+
fait pas moitié*.
|
|
71
|
+
|
|
72
|
+
La prop est désormais extraite dans `interfaces/Commons/attach.interface.ts` (`IAttachProps`) au
|
|
73
|
+
lieu d'être redéclarée sur chaque interface, et consommée par le point unique existant,
|
|
74
|
+
`useTeleport`.
|
|
75
|
+
|
|
76
|
+
**Vérifié sur le parent DOM réel** du nœud téléporté, pas sur l'acceptation de la prop : les 9
|
|
77
|
+
tests `attach` sont **9/9 rouges sur le commit parent**, verts sur la branche.
|
|
78
|
+
|
|
79
|
+
### Added — `--origam-color__text---tertiary`
|
|
80
|
+
|
|
81
|
+
Troisième niveau de texte sémantique, déclaré dans `light.css` (`neutral-500`) et `dark.css`
|
|
82
|
+
(`neutral-400`), leurs jumeaux SCSS, et l'union `TTokenName`.
|
|
83
|
+
|
|
84
|
+
Il était **lu par 27 fichiers** de `packages/marketing` et déclaré **nulle part** : un canal de
|
|
85
|
+
thème mort depuis toujours, qui rendait correctement par son seul repli. Les pages de référence,
|
|
86
|
+
`HomeThemes`, `WhyOrigamThemeDemo`, les pages d'administration et `apple.theme.ts` le consommaient
|
|
87
|
+
tous dans le vide.
|
|
88
|
+
|
|
89
|
+
⚠️ **Aplatissement assumé** : en mode sombre, `tertiary` et `secondary` résolvent la même valeur
|
|
90
|
+
(`neutral-400`). Il n'existe aucun échelon entre `neutral-400` et `neutral-500`, et `neutral-500`
|
|
91
|
+
sur la surface sombre mesure **4,18:1** — sous le seuil AA de 4,5:1. Un niveau de hiérarchie perdu
|
|
92
|
+
a été préféré à une violation de contraste.
|
|
93
|
+
|
|
94
|
+
### Fixed — `useTeleport` ne réévaluait jamais sa cible après l'hydratation
|
|
95
|
+
|
|
96
|
+
Le `computed` qui résout la cible de téléportation n'avait **aucune dépendance réactive** sur
|
|
97
|
+
`document.querySelector`. Sous SSR — et sous Histoire, où chaque story est enveloppée dans un
|
|
98
|
+
`<Suspense>` — la première évaluation pouvait tomber **avant** que l'arbre voisin soit commité dans
|
|
99
|
+
le DOM, et rien ne la redéclenchait ensuite.
|
|
100
|
+
|
|
101
|
+
Le symptôme n'était pas théorique : quatre tests e2e du site marketing échouaient sur
|
|
102
|
+
« *sans erreur JS console* » et « *pas d'erreur d'hydratation* ».
|
|
103
|
+
|
|
104
|
+
Le correctif réutilise `useHydration()`, qui porte déjà les deux gardes nécessaires — `IN_BROWSER`
|
|
105
|
+
et `ssr` — au lieu d'un compteur de montage local qui les ignorait. Le défaut touchait **toute la
|
|
106
|
+
famille Overlay**, pas seulement les trois composants de ce lot ; c'est `OrigamDrawer` qui l'a
|
|
107
|
+
révélé.
|
|
108
|
+
|
|
109
|
+
### Fixed — le thème `origam` sombre posait un `text---tertiary` qui échoue en AA
|
|
110
|
+
|
|
111
|
+
`origamDarkTheme` fixait `tertiary` à `#737373`, soit **4,18:1** sur la surface sombre. Le défaut
|
|
112
|
+
était invisible parce que le canal n'était alimenté par aucune feuille — mais ce bloc runtime
|
|
113
|
+
**gagne la cascade** sur la feuille, donc déclarer le token sans corriger ce thème n'aurait rien
|
|
114
|
+
réglé en mode sombre. Attrapé par `theme-sheet-parity.spec.ts`, rouge avant / vert après.
|
|
115
|
+
|
|
21
116
|
## [2.21.0] - 2026-10-01
|
|
22
117
|
|
|
23
118
|
### Changed — ⚠️ `OrigamBlockquote` : le `variant` est un preset de props, plus un bloc SCSS
|