origam 2.23.2 → 2.25.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 +52 -0
  2. package/dist/src/assets/css/main.css +1 -1
  3. package/dist/src/assets/css/tokens/dark.css +24 -22
  4. package/dist/src/assets/css/tokens/light.css +12 -11
  5. package/dist/src/assets/css/tokens/origam-utilities.css +84 -0
  6. package/dist/src/assets/css/tokens/primitive.css +1 -0
  7. package/dist/src/assets/scss/tokens/_dark.scss +24 -22
  8. package/dist/src/assets/scss/tokens/_light.scss +12 -11
  9. package/dist/src/assets/scss/tokens/_origam-utilities.scss +84 -0
  10. package/dist/src/assets/scss/tokens/_primitive.scss +1 -0
  11. package/dist/src/components/Btn/OrigamBtn.vue +89 -124
  12. package/dist/src/components/Field/OrigamField.vue +120 -152
  13. package/dist/src/components/Skeleton/OrigamSkeleton.vue +89 -125
  14. package/dist/src/components/Skeleton/OrigamSkeletonGroup.vue +52 -0
  15. package/dist/src/components/Skeleton/index.cjs +7 -0
  16. package/dist/src/components/Skeleton/index.d.ts +1 -0
  17. package/dist/src/components/Skeleton/index.js +1 -0
  18. package/dist/src/components/Switch/OrigamSwitch.vue +1 -69
  19. package/dist/src/consts/Skeleton/skeleton.const.cjs +7 -0
  20. package/dist/src/consts/Skeleton/skeleton.const.d.ts +11 -0
  21. package/dist/src/consts/Skeleton/skeleton.const.js +1 -0
  22. package/dist/src/consts/index.cjs +11 -0
  23. package/dist/src/consts/index.d.ts +1 -0
  24. package/dist/src/consts/index.js +1 -0
  25. package/dist/src/enums/Skeleton/skeleton.enum.cjs +9 -2
  26. package/dist/src/enums/Skeleton/skeleton.enum.d.ts +27 -4
  27. package/dist/src/enums/Skeleton/skeleton.enum.js +7 -0
  28. package/dist/src/interfaces/Btn/btn.interface.d.ts +3 -3
  29. package/dist/src/interfaces/Commons/loader.interface.d.ts +13 -1
  30. package/dist/src/interfaces/Field/field.interface.d.ts +2 -2
  31. package/dist/src/interfaces/Skeleton/skeleton-group.interface.cjs +1 -0
  32. package/dist/src/interfaces/Skeleton/skeleton-group.interface.d.ts +34 -0
  33. package/dist/src/interfaces/Skeleton/skeleton-group.interface.js +0 -0
  34. package/dist/src/interfaces/Skeleton/skeleton.interface.d.ts +27 -10
  35. package/dist/src/interfaces/Switch/switch.interface.d.ts +2 -2
  36. package/dist/src/interfaces/index.cjs +11 -0
  37. package/dist/src/interfaces/index.d.ts +1 -0
  38. package/dist/src/interfaces/index.js +1 -0
  39. package/dist/src/themes/origam.theme.cjs +2 -4
  40. package/dist/src/themes/origam.theme.js +2 -2
  41. package/dist/src/types/Commons/loader.type.d.ts +24 -0
  42. package/dist/src/types/Skeleton/skeleton.type.d.ts +4 -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,58 @@ This project follows [Semantic Versioning](https://semver.org).
18
18
 
19
19
  ## [Unreleased]
20
20
 
21
+ ## [2.25.0] - 2026-10-14
22
+
23
+ ### Changed — `OrigamBtn`, `OrigamSwitch` et `OrigamField` n'ont plus de mode skeleton (#1080, lot 2a de #1073)
24
+
25
+ Decision n°2 du proprietaire sous #1073 : un controle qui execute une action n'est pas un placeholder. Avant, `loading: { type: 'skeleton' }` **remplacait** le controle : le bouton perdait son nom accessible (`button "Loading..."`) et imbriquait un `<div>` dans un `<span>` dans un `<button>`, l'interrupteur perdait sa case, le champ demontait son `<input>` et son label. Mesure (Chromium, `origin/develop` @ `3750f0791`, etude #1073).
26
+
27
+ **Ruptures (assumees, pre-1.0) :**
28
+ - `loading` n'accepte plus `{ type: 'skeleton', … }` sur `OrigamBtn`, `OrigamSwitch`, `OrigamField` et leurs derives (`OrigamSelect`, `OrigamTextField`, `OrigamTextareaField`, …) : **erreur de compilation**. Nouveaux types `TControlLoadingValue` / `TControlLoaderConfig` et interface `IControlLoaderProps` (`IBtnProps`, `ISwitchProps` et `IFieldProps` l'etendent a la place de `ILoaderProps`). `TLoadingValue` / `ILoaderProps` / `LOADER_KIND.SKELETON` restent inchanges pour les conteneurs (Card, ExpansionPanel, DataTable). Un appelant non type qui passe quand meme `skeleton` obtient le controle normal avec l'indicateur par defaut, jamais un placeholder.
29
+ - Tokens supprimes (plus lus par personne) : `--origam-switch__skeleton---width`, `---height`, `--origam-switch__skeleton-track---background-color`, `--origam-switch__skeleton-thumb---background-color`, `--origam-btn--loader-skeleton---min-width`, `---min-height`. Le repli `--origam-field__skeleton---min-height` disparait avec la regle `.origam-field__skeleton`.
30
+ - Classes supprimees : `origam-btn--loader-skeleton`, `origam-switch__skeleton*`, `origam-field__skeleton`. `origam-btn--loader-*` ne prend plus que `line` / `circular`.
31
+ - `OrigamBtn` : le slot `loader` remplace desormais l'indicateur (spinner ou bande) quel que soit le type de `loading` ; il n'etait atteignable qu'en mode skeleton.
32
+
33
+ **Comportement pendant une action :**
34
+ - `OrigamBtn` : le libelle reste dans le DOM (nom accessible inchange, largeur stable), l'indicateur se superpose. Le bouton porte `aria-busy="true"` **et** `aria-disabled="true"` — jamais `disabled`, donc il garde le focus — et un clic (souris, Entree, Espace, `@click` du consommateur compris) est avale tant que l'action dure. Le spinner est `aria-hidden` : il ne s'ajoute pas au nom du bouton.
35
+ - `OrigamSwitch` : valeur et label restent ; l'indicateur (pouce ou bande) accompagne la sauvegarde.
36
+ - `OrigamField` : `<input>`, label et valeur restent montes ; la bande `line` (defaut) ou le `circular` s'ajoute.
37
+
38
+ **Corrige (#1076 point 1, cote controles) :** plus de `<div>` dans `<span>`/`<button>` en mode skeleton, `origam-btn--loading` n'est plus emise deux fois, la racine du spinner de `OrigamBtn` est un `<span>`. **Non corrige :** la bande `line` de `OrigamBtn` rend `OrigamProgressLinear`, dont les barres sont des `<div>` (composant partage, hors perimetre).
39
+
40
+ **Stories :** un Variant fixe `Loading` par composant (`Btn`, `Switch`, `Field`, `TextField`, `Select`, `TextareaField`) ; l'option `{ type: skeleton }` des selecteurs `Loading Kind` est retiree (#1076 point 6).
41
+
42
+ ## [2.24.0] - 2026-10-14
43
+
44
+ ### Changed — refonte d'`OrigamSkeleton` : primitives, pulse par defaut, `OrigamSkeletonGroup` (#1073 lot 1, #1074, #1075, #1076)
45
+
46
+ Lot 1 de #1073. Les composants consommateurs (`OrigamBtn`, `OrigamCard`, `OrigamField`, `OrigamSwitch`, `OrigamDataTable*`, `OrigamExpansionPanel*`) ne sont PAS touches : ils continuent d'utiliser `OrigamSkeleton` (gabarits `card` / `list-item` conserves) et migrent au lot 2.
47
+
48
+ **Ruptures (assumees, pre-1.0) :**
49
+ - La prop booleenne `pulse` est **supprimee**. Elle declenchait en realite une vague : son nom mentait. Remplacee par `animation: 'pulse' | 'wave' | 'none'` (enum `SKELETON_ANIMATION`, type `TSkeletonAnimation`). `:pulse="false"` devient `animation="none"`. Defaut : `pulse`.
50
+ - Le defaut visuel change : une **pulsation d'opacite de 1,6 s** (1 vers 0,55) remplace la vague par `background-position` a 400 ms. `circular` ne **tourne plus** (il ressemblait a un spinner) : il suit la meme animation que les autres formes.
51
+ - Le remplissage est derive de la couleur du texte (`color-mix(in srgb, currentColor 10 %, transparent)`, 13 % en dark) au lieu de `--origam-color__surface---overlay`.
52
+ - `OrigamSkeleton` n'injecte plus de `<style id="origam-skeleton-…">` par instance dans `<head>` (double style `:style` + `useStyle()` retire) ; `defineExpose` ne porte plus `css`, `id`, `load`, `unload`, `isLoaded`.
53
+ - Un bloc de skeleton n'a plus `role="status"` quand il est dans un `OrigamSkeletonGroup` : il est `aria-hidden`, et c'est le groupe qui annonce.
54
+ - Tokens : `--origam-skeleton---animation-duration` lit desormais `--origam-motion__duration---loop` (nouveau palier, `1600ms`) au lieu de `---xslow` (400 ms). `---text-height` passe de `1.2em` a `0.7em`.
55
+ - `themes/origam.theme.ts` : `'origam-skeleton'` ne pose plus `rounded: 'sm'`.
56
+
57
+ **Ajouts :**
58
+ - Primitive `pill` ; `text` est une barre en pilule de `0.7em` centree dans la ligne. `width` / `height` passent par `IDimensionProps` (`min*` / `max*` honores).
59
+ - `OrigamSkeletonGroup` : une seule annonce (`role="status"`, `aria-busy`) par zone et une seule horloge d'animation pour tous les blocs.
60
+ - Mecanisme d'etat CSS sur l'hote : la classe utilitaire `.origam--skeleton` (+ `-wave`, `-none`, `-group-pulse`) peint n'importe quel element en placeholder via `::after`, sans noeud ajoute. Ne fonctionne pas sur `<input>`, `<textarea>`, `<select>`, images.
61
+ - Tokens : `---highlight-color` (remplace `---wave-color`, lu mais jamais declare), `---animation-iterations`, `---border-radius-pill`, `---text-margin-block`, `---circular-size`, `---pill-height`, `---pill-width`, `--origam-motion__duration---loop`. `---opacity-min/max` sont maintenant lus par le pulse.
62
+
63
+ **Corrige :**
64
+ - #1074 : sous `prefers-reduced-motion: reduce` toutes les animations du skeleton s'arretent (la regle (0,2,0) perdait contre (0,3,0)).
65
+ - WCAG 2.2.2 : l'animation est plafonnee a environ 10 s (6 iterations de 1,6 s), CSS seul.
66
+ - #1075 : `circular` rend un vrai cercle sous le theme `origam` (`aspect-ratio: 1`, plus de rayon `sm` impose par le theme).
67
+ - #1076 (cote composant) : double style, tokens morts, `wave-color` non declare, documentation (decrivait une pulsation que le code ne faisait pas).
68
+
69
+ ### Fixed — le cache Nitro des routes `/api/reference/**` servait une réponse d'ancien format (#1063)
70
+
71
+ Sans version de format dans la clé, une entrée de cache écrite avant un changement de forme (`name` -> `label`, #1046) était servie telle quelle par le SWR de Nitro : `/components/alert` répondait 500 au rendu serveur (`Cannot read properties of undefined (reading 'replace')`, reproduit puis supprimé en dev). Les 4 handlers de référence préfixent désormais leur clé de `REFERENCE_CACHE_FORMAT_VERSION` (`server/consts/cache.const.ts`), à incrémenter dans le commit de tout changement de forme d'une de leurs réponses. L'invalidation admin (`PATCH /api/admin/reference/:kind/:slug`) ne supprimait rien — elle visait `nitro:handlers` au lieu de `cache:nitro:handlers` et omettait la locale — : elle supprime maintenant toutes les variantes (locale, `limit`) de la fiche, à partir de la même construction de clé que le handler, et journalise une erreur de stockage au lieu de l'avaler. Les TTL redéclarés en ligne dans 6 handlers sont réunis dans `server/consts/cache.const.ts`. Site marketing uniquement : aucun changement du paquet `origam`.
72
+
21
73
  ## [2.23.2] - 2026-10-13
22
74
 
23
75
  ### Fixed — `OrigamBreadcrumbItem` rendait `href="[object Object]"`