@mostajs/wagon-ui 0.5.0 → 0.5.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 +6 -0
- package/llms.txt +1 -0
- package/package.json +1 -1
- package/src/index.js +6 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
+
## 0.5.1 — 2026-10-09
|
|
9
|
+
|
|
10
|
+
**Corrigé** (audit du 09/10/2026) : `page({ chemin })` — l'adresse canonique et les liens de langue désignent la page
|
|
11
|
+
affichée, pas l'onglet actif (une fiche /voyages/<circuit> déclarait /voyages ; changer de langue ramenait à la
|
|
12
|
+
liste). Sans `chemin`, rien ne change. Essai T-WUI-22.
|
|
13
|
+
|
|
8
14
|
## 0.5.0 — 2026-10-08
|
|
9
15
|
|
|
10
16
|
L'en-tête de la maquette Bolt de travel, devenu disponible pour tous les sites du wagon. Trois options, toutes
|
package/llms.txt
CHANGED
|
@@ -26,6 +26,7 @@ Rendre les écrans communs à tout SaaS, identiques d'un produit à l'autre, san
|
|
|
26
26
|
`/`, `/tarifs`, `/aide`, `/apropos`, `/inscription` (POST : plan, nom, courriel, motdepasse), `/connexion` (POST : courriel, motdepasse), `/deconnexion`, `/compte`, `/compte/cles` (POST : libelle), `/compte/cles/revoquer` (POST : prefix), `/compte/portail` (POST), `/paiement` (POST : compte, plan), `/admin/plans` (POST), `/admin/usage`, `/mentions-legales`, `/cgu`, `/cgv`, `/confidentialite`.
|
|
27
27
|
|
|
28
28
|
## PIÈGES
|
|
29
|
+
- 0.5.1 : `page({ chemin })` — canonique et liens de langue sur la page réelle.
|
|
29
30
|
- 0.5.0 : `creerWagonUi({ …, collant: true, appel: { href, libelle }, selecteurLangue: 'menu' })` — en-tête collant, bouton d'appel, langue en menu déroulant sans script ; défauts inchangés.
|
|
30
31
|
- 0.4.0 : `tarifs.clesPluriel` n'existe plus → `tarifs.cles_one` / `tarifs.cles_other` (+ formes arabes) ; prix formatés par langue (« 9,99 € »).
|
|
31
32
|
- `legal({ html })` n'échappe pas `html` : il doit venir des textes de l'éditeur (mostajs/templates), jamais d'un formulaire.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mostajs/wagon-ui",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"description": "Les pages du wagon d'un SaaS — mise en page (langues, pied légal, en-têtes pour les moteurs), accueil, tarifs, inscription, connexion (mot de passe ou code), espace client (palier, jauges, clés, factures, gestion de l'abonnement), administration (paliers, usage), pages légales — en fr, en, ar. Extraites de mdseal, sans ce qu'il vend : l'identité et les ressources mesurées viennent de la configuration. Vues pures, zéro dépendance.",
|
|
5
5
|
"license": "AGPL-3.0-or-later",
|
|
6
6
|
"author": "Dr Hamid MADANI <drmdh@msn.com>",
|
package/src/index.js
CHANGED
|
@@ -222,12 +222,15 @@ export function creerWagonUi({ marque, couleurs = {}, langues = ['fr', 'en', 'ar
|
|
|
222
222
|
* La page entière. `contenu` est du HTML déjà rendu (par une vue de ce module, ou par la charge
|
|
223
223
|
* utile). `base` — l'adresse publique — ajoute les en-têtes que lisent les moteurs et les aperçus.
|
|
224
224
|
*/
|
|
225
|
-
page({ actif = '/', titre = '', contenu = '', lang, connecte = false, base = '', description = '' }) {
|
|
225
|
+
page({ actif = '/', chemin: cheminPage = '', titre = '', contenu = '', lang, connecte = false, base = '', description = '' }) {
|
|
226
226
|
const L = langueDe(lang); const tr = t(L);
|
|
227
227
|
const nom = esc(marque.nom);
|
|
228
228
|
const slogan = dansLangue(marque.slogan, L);
|
|
229
|
-
|
|
230
|
-
|
|
229
|
+
// 0.5.1 — la page RÉELLE (`chemin`) fait l'adresse canonique et les liens de langue ; l'onglet (`actif`) ne
|
|
230
|
+
// sert qu'à la navigation. Sans `chemin`, comportement d'avant.
|
|
231
|
+
const ici = cheminPage || actif;
|
|
232
|
+
const chemin = lien(ici);
|
|
233
|
+
const canonique = base ? `${String(base).replace(/\/$/, '')}${ici === '/' ? '/' : ici}` : '';
|
|
231
234
|
const tete = canonique ? `<meta name="description" content="${esc(description || slogan)}">
|
|
232
235
|
<link rel="canonical" href="${esc(canonique)}">${LANGUES.map((l) => `<link rel="alternate" hreflang="${l}" href="${esc(canonique)}?lang=${l}">`).join('')}<link rel="alternate" hreflang="x-default" href="${esc(canonique)}">
|
|
233
236
|
<meta property="og:type" content="website"><meta property="og:site_name" content="${nom}"><meta property="og:title" content="${esc(titre)} — ${nom}">
|