@zevra/ui 0.32.0 → 0.34.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/DECISIONS.md +63 -0
- package/dist/catalogue.d.ts.map +1 -1
- package/dist/catalogue.js +16 -8
- package/dist/catalogue.js.map +1 -1
- package/dist/content.d.ts +20 -2
- package/dist/content.d.ts.map +1 -1
- package/dist/content.js +2 -2
- package/dist/content.js.map +1 -1
- package/dist/css-inline.d.ts.map +1 -1
- package/dist/css-inline.js +1 -1
- package/dist/css-inline.js.map +1 -1
- package/dist/glyph-data.d.ts +3 -0
- package/dist/glyph-data.d.ts.map +1 -1
- package/dist/glyph-data.js +9 -0
- package/dist/glyph-data.js.map +1 -1
- package/dist/glyphes.d.ts +15 -2
- package/dist/glyphes.d.ts.map +1 -1
- package/dist/glyphes.js +15 -2
- package/dist/glyphes.js.map +1 -1
- package/logos/index.json +7 -0
- package/package.json +1 -1
- package/react/catalogue.tsx +18 -7
- package/react/content.tsx +23 -3
- package/react/css-inline.ts +1 -1
- package/react/glyph-data.ts +10 -0
- package/react/glyphes.ts +16 -1
- package/src/navigation.css +13 -0
package/dist/css-inline.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"css-inline.js","sourceRoot":"","sources":["../react/css-inline.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,0EAA0E;AAE1E;;;iEAGiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAW,
|
|
1
|
+
{"version":3,"file":"css-inline.js","sourceRoot":"","sources":["../react/css-inline.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,0EAA0E;AAE1E;;;iEAGiE;AACjE,MAAM,CAAC,MAAM,WAAW,GAAW,+/uRAA+/uR,CAAA;AAElivR;;;yBAGyB;AACzB,MAAM,CAAC,MAAM,WAAW,GAAW,03BAA03B,CAAA"}
|
package/dist/glyph-data.d.ts
CHANGED
|
@@ -7,4 +7,7 @@ export declare const MOT_ZEVRA = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0
|
|
|
7
7
|
export declare const NOMS_PRODUITS: Record<GlypheId, string>;
|
|
8
8
|
/** Ce que chaque produit FAIT, en deux mots — pour le lanceur d'apps. */
|
|
9
9
|
export declare const ACCROCHES_PRODUITS: Record<GlypheId, string>;
|
|
10
|
+
/** L'adresse des produits EN LIGNE. Partielle À DESSEIN : un produit qui n'a
|
|
11
|
+
* rien à ouvrir n'entre pas dans le lanceur. */
|
|
12
|
+
export declare const ADRESSES_PRODUITS: Partial<Record<GlypheId, string>>;
|
|
10
13
|
//# sourceMappingURL=glyph-data.d.ts.map
|
package/dist/glyph-data.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glyph-data.d.ts","sourceRoot":"","sources":["../react/glyph-data.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,SAAS,GACT,KAAK,GACL,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,CAAA;AAEX,6DAA6D;AAC7D,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQ5C,CAAA;AAED,mEAAmE;AACnE,eAAO,MAAM,SAAS,mgLAAmgL,CAAA;AAEzhL,iEAAiE;AACjE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQlD,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQvD,CAAA"}
|
|
1
|
+
{"version":3,"file":"glyph-data.d.ts","sourceRoot":"","sources":["../react/glyph-data.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAChB,QAAQ,GACR,SAAS,GACT,KAAK,GACL,SAAS,GACT,OAAO,GACP,YAAY,GACZ,OAAO,CAAA;AAEX,6DAA6D;AAC7D,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQ5C,CAAA;AAED,mEAAmE;AACnE,eAAO,MAAM,SAAS,mgLAAmgL,CAAA;AAEzhL,iEAAiE;AACjE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQlD,CAAA;AAED,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAQvD,CAAA;AAED;iDACiD;AACjD,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAM/D,CAAA"}
|
package/dist/glyph-data.js
CHANGED
|
@@ -32,4 +32,13 @@ export const ACCROCHES_PRODUITS = {
|
|
|
32
32
|
'supernovia': "Contenu sourcé",
|
|
33
33
|
'zevra': "La suite",
|
|
34
34
|
};
|
|
35
|
+
/** L'adresse des produits EN LIGNE. Partielle À DESSEIN : un produit qui n'a
|
|
36
|
+
* rien à ouvrir n'entre pas dans le lanceur. */
|
|
37
|
+
export const ADRESSES_PRODUITS = {
|
|
38
|
+
'campus': "https://campus.zevra.tech/",
|
|
39
|
+
'lexform': "https://lexform.zevra.tech/",
|
|
40
|
+
'mcp': "https://mcp.zevra.tech/",
|
|
41
|
+
'memoire': "https://memoire.zevra.tech/",
|
|
42
|
+
'zevra': "https://zevra.tech/",
|
|
43
|
+
};
|
|
35
44
|
//# sourceMappingURL=glyph-data.js.map
|
package/dist/glyph-data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glyph-data.js","sourceRoot":"","sources":["../react/glyph-data.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sEAAsE;AAWtE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,OAAO,GAA6B;IAC/C,QAAQ,EAAE,w/XAAw/X;IAClgY,SAAS,EAAE,wjRAAwjR;IACnkR,KAAK,EAAE,4jZAA4jZ;IACnkZ,SAAS,EAAE,40OAA40O;IACv1O,OAAO,EAAE,omYAAomY;IAC7mY,YAAY,EAAE,w1cAAw1c;IACt2c,OAAO,EAAE,40ZAA40Z;CACt1Z,CAAA;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,SAAS,GAAG,ggLAAggL,CAAA;AAEzhL,iEAAiE;AACjE,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,eAAe;IACtB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE,YAAY;IAC1B,OAAO,EAAE,OAAO;CACjB,CAAA;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAA6B;IAC1D,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,gBAAgB;IAC9B,OAAO,EAAE,UAAU;CACpB,CAAA"}
|
|
1
|
+
{"version":3,"file":"glyph-data.js","sourceRoot":"","sources":["../react/glyph-data.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,sEAAsE;AAWtE,6DAA6D;AAC7D,MAAM,CAAC,MAAM,OAAO,GAA6B;IAC/C,QAAQ,EAAE,w/XAAw/X;IAClgY,SAAS,EAAE,wjRAAwjR;IACnkR,KAAK,EAAE,4jZAA4jZ;IACnkZ,SAAS,EAAE,40OAA40O;IACv1O,OAAO,EAAE,omYAAomY;IAC7mY,YAAY,EAAE,w1cAAw1c;IACt2c,OAAO,EAAE,40ZAA40Z;CACt1Z,CAAA;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,SAAS,GAAG,ggLAAggL,CAAA;AAEzhL,iEAAiE;AACjE,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,QAAQ,EAAE,QAAQ;IAClB,SAAS,EAAE,SAAS;IACpB,KAAK,EAAE,eAAe;IACtB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE,YAAY;IAC1B,OAAO,EAAE,OAAO;CACjB,CAAA;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,kBAAkB,GAA6B;IAC1D,QAAQ,EAAE,WAAW;IACrB,SAAS,EAAE,eAAe;IAC1B,KAAK,EAAE,YAAY;IACnB,SAAS,EAAE,cAAc;IACzB,OAAO,EAAE,SAAS;IAClB,YAAY,EAAE,gBAAgB;IAC9B,OAAO,EAAE,UAAU;CACpB,CAAA;AAED;iDACiD;AACjD,MAAM,CAAC,MAAM,iBAAiB,GAAsC;IAClE,QAAQ,EAAE,4BAA4B;IACtC,SAAS,EAAE,6BAA6B;IACxC,KAAK,EAAE,yBAAyB;IAChC,SAAS,EAAE,6BAA6B;IACxC,OAAO,EAAE,qBAAqB;CAC/B,CAAA"}
|
package/dist/glyphes.d.ts
CHANGED
|
@@ -1,6 +1,19 @@
|
|
|
1
|
-
import { ACCROCHES_PRODUITS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS, type GlypheId } from './glyph-data.js';
|
|
1
|
+
import { ACCROCHES_PRODUITS, ADRESSES_PRODUITS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS, type GlypheId } from './glyph-data.js';
|
|
2
2
|
export type { GlypheId };
|
|
3
|
-
export { ACCROCHES_PRODUITS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS };
|
|
3
|
+
export { ACCROCHES_PRODUITS, ADRESSES_PRODUITS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS };
|
|
4
4
|
/** Les sept identifiants, triés. */
|
|
5
5
|
export declare const PRODUITS: GlypheId[];
|
|
6
|
+
/**
|
|
7
|
+
* Les produits À METTRE DANS LE LANCEUR — ceux qui ont une adresse.
|
|
8
|
+
*
|
|
9
|
+
* ⚠️ CE N'EST PAS `PRODUITS`, et l'écart est le sujet. Plume et Supernovia
|
|
10
|
+
* ont leur glyphe depuis le 26/08 et rien à ouvrir : une tuile qui mène à
|
|
11
|
+
* rien est pire qu'une absence — elle promet un produit, le visiteur clique,
|
|
12
|
+
* et il tombe. Le lanceur se construit sur CETTE liste.
|
|
13
|
+
*
|
|
14
|
+
* Elle se déduit du registre, elle n'est pas recopiée : le jour où Plume
|
|
15
|
+
* ouvre, une ligne dans `logos/index.json` la fait apparaître dans les sept
|
|
16
|
+
* apps sans qu'aucune ne soit touchée.
|
|
17
|
+
*/
|
|
18
|
+
export declare const APPS: GlypheId[];
|
|
6
19
|
//# sourceMappingURL=glyphes.d.ts.map
|
package/dist/glyphes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glyphes.d.ts","sourceRoot":"","sources":["../react/glyphes.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,aAAa,EACb,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAA;AAExB,YAAY,EAAE,QAAQ,EAAE,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"glyphes.d.ts","sourceRoot":"","sources":["../react/glyphes.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,aAAa,EACb,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAA;AAExB,YAAY,EAAE,QAAQ,EAAE,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA;AAEnF,oCAAoC;AACpC,eAAO,MAAM,QAAQ,EAA2B,QAAQ,EAAE,CAAA;AAE1D;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,IAAI,YAAiD,CAAA"}
|
package/dist/glyphes.js
CHANGED
|
@@ -13,8 +13,21 @@
|
|
|
13
13
|
// charte l'interdit. Sous 24 px, la charte demande une version monochrome :
|
|
14
14
|
// elle n'existe pas encore (retirée le 24/08, à regénérer), et ces glyphes
|
|
15
15
|
// ne doivent donc pas descendre sous cette taille.
|
|
16
|
-
import { ACCROCHES_PRODUITS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS, } from './glyph-data.js';
|
|
17
|
-
export { ACCROCHES_PRODUITS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS };
|
|
16
|
+
import { ACCROCHES_PRODUITS, ADRESSES_PRODUITS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS, } from './glyph-data.js';
|
|
17
|
+
export { ACCROCHES_PRODUITS, ADRESSES_PRODUITS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS };
|
|
18
18
|
/** Les sept identifiants, triés. */
|
|
19
19
|
export const PRODUITS = Object.keys(GLYPHES);
|
|
20
|
+
/**
|
|
21
|
+
* Les produits À METTRE DANS LE LANCEUR — ceux qui ont une adresse.
|
|
22
|
+
*
|
|
23
|
+
* ⚠️ CE N'EST PAS `PRODUITS`, et l'écart est le sujet. Plume et Supernovia
|
|
24
|
+
* ont leur glyphe depuis le 26/08 et rien à ouvrir : une tuile qui mène à
|
|
25
|
+
* rien est pire qu'une absence — elle promet un produit, le visiteur clique,
|
|
26
|
+
* et il tombe. Le lanceur se construit sur CETTE liste.
|
|
27
|
+
*
|
|
28
|
+
* Elle se déduit du registre, elle n'est pas recopiée : le jour où Plume
|
|
29
|
+
* ouvre, une ligne dans `logos/index.json` la fait apparaître dans les sept
|
|
30
|
+
* apps sans qu'aucune ne soit touchée.
|
|
31
|
+
*/
|
|
32
|
+
export const APPS = PRODUITS.filter((id) => ADRESSES_PRODUITS[id]);
|
|
20
33
|
//# sourceMappingURL=glyphes.js.map
|
package/dist/glyphes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"glyphes.js","sourceRoot":"","sources":["../react/glyphes.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,uCAAuC;AACvC,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,mDAAmD;AAEnD,OAAO,EACL,kBAAkB,EAClB,OAAO,EACP,SAAS,EACT,aAAa,GAEd,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,kBAAkB,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA;
|
|
1
|
+
{"version":3,"file":"glyphes.js","sourceRoot":"","sources":["../react/glyphes.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,uCAAuC;AACvC,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,qEAAqE;AACrE,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,mDAAmD;AAEnD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,aAAa,GAEd,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,CAAA;AAEnF,oCAAoC;AACpC,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAe,CAAA;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAA"}
|
package/logos/index.json
CHANGED
|
@@ -18,6 +18,13 @@
|
|
|
18
18
|
"plume": "Éditeur",
|
|
19
19
|
"supernovia": "Contenu sourcé"
|
|
20
20
|
},
|
|
21
|
+
"adresses": {
|
|
22
|
+
"zevra": "https://zevra.tech/",
|
|
23
|
+
"campus": "https://campus.zevra.tech/",
|
|
24
|
+
"lexform": "https://lexform.zevra.tech/",
|
|
25
|
+
"mcp": "https://mcp.zevra.tech/",
|
|
26
|
+
"memoire": "https://memoire.zevra.tech/"
|
|
27
|
+
},
|
|
21
28
|
"formes": {
|
|
22
29
|
"glyph": "Glyphe",
|
|
23
30
|
"lockup": "Lockup",
|
package/package.json
CHANGED
package/react/catalogue.tsx
CHANGED
|
@@ -39,7 +39,9 @@ import {
|
|
|
39
39
|
import { ICONES, Icon, IconButton, IconTile, NOMS_ICONES } from './icon.js'
|
|
40
40
|
// Les glyphes sont INLINÉS (data-URI) : le catalogue est rendu hors du dépôt
|
|
41
41
|
// — planche, kit de canvas, page d'admin — où un chemin d'image ne résout pas.
|
|
42
|
-
import {
|
|
42
|
+
import {
|
|
43
|
+
ACCROCHES_PRODUITS, ADRESSES_PRODUITS, APPS, GLYPHES, MOT_ZEVRA, NOMS_PRODUITS,
|
|
44
|
+
} from './glyphes.js'
|
|
43
45
|
import {
|
|
44
46
|
Banner, CTA, Carousel, CarouselItem, Col, Compte, CompteLien, Footer,
|
|
45
47
|
FooterMini, Grid, Grid12, Lanceur, LanceurApp, LanceurApps, LanceurGroupe, NavActions,
|
|
@@ -343,7 +345,6 @@ function DemoPopover() {
|
|
|
343
345
|
* du CSS, il n'y a rien à hydrater. La réserve sous chaque barre existe pour
|
|
344
346
|
* que le panneau ait la place de s'ouvrir sans être coupé. */
|
|
345
347
|
function DemoNav() {
|
|
346
|
-
const APPS = PRODUITS
|
|
347
348
|
const barre = (utilisateur?: { nom: string; email: string }) => (
|
|
348
349
|
<div style={{ border: '1px solid var(--hairline)', background: 'var(--white)' }}>
|
|
349
350
|
<Nav className="zv-nav--riche" style={{ padding: '0 20px', minHeight: 64 }}>
|
|
@@ -394,7 +395,7 @@ function DemoNav() {
|
|
|
394
395
|
{APPS.map((id) => (
|
|
395
396
|
<LanceurApp
|
|
396
397
|
key={id}
|
|
397
|
-
href=
|
|
398
|
+
href={ADRESSES_PRODUITS[id]}
|
|
398
399
|
nom={NOMS_PRODUITS[id]}
|
|
399
400
|
accroche={ACCROCHES_PRODUITS[id]}
|
|
400
401
|
glyphe={GLYPHES[id]}
|
|
@@ -1028,10 +1029,12 @@ export const CATALOGUE: GroupeCatalogue[] = [
|
|
|
1028
1029
|
id: 'page-erreur',
|
|
1029
1030
|
nom: 'Page d’erreur',
|
|
1030
1031
|
resume:
|
|
1031
|
-
'404, 403, 410, 500. ⚠️ Le composant ne porte AUCUN texte : une plaisanterie câblée dans un design system part dans les sept apps, dans une seule langue, et n’en revient jamais. La copie ci-dessous est la RÉFÉRENCE, à copier et à adapter. Elle plaisante en vocabulaire juridique — un mot juste employé de travers, pas une blague sur un ton qu’Encre & Papier n’a pas — et l’ordre est fixe : le titre dit la panne en clair, l’esprit vient ensuite et se dédit lui-même. Une page d’erreur qui fait rire avant d’informer est ratée.',
|
|
1032
|
+
'404, 403, 410, 500. ⚠️ Le glyphe est DÉCORATIF par défaut (glypheAlt=""), et le mot « Erreur » se passe en prop : la 0.32.0 posait alt="Zevra" et « Erreur » en dur, si bien que la 404 de Mémoire annonçait « Zevra » au lecteur d’écran et affichait « Erreur 404 » sous /en/. Le composant ne porte AUCUN texte : une plaisanterie câblée dans un design system part dans les sept apps, dans une seule langue, et n’en revient jamais. La copie ci-dessous est la RÉFÉRENCE, à copier et à adapter. Elle plaisante en vocabulaire juridique — un mot juste employé de travers, pas une blague sur un ton qu’Encre & Papier n’a pas — et l’ordre est fixe : le titre dit la panne en clair, l’esprit vient ensuite et se dédit lui-même. Une page d’erreur qui fait rire avant d’informer est ratée.',
|
|
1032
1033
|
code: `<PageErreur
|
|
1033
1034
|
code="404"
|
|
1034
|
-
|
|
1035
|
+
libelle="Erreur" {/* le mot est À VOUS : « Error » sous /en/ */}
|
|
1036
|
+
glyphe={GLYPHES.memoire} {/* le glyphe de VOTRE produit */}
|
|
1037
|
+
glypheAlt="" {/* vide = décoratif, et c'est le bon défaut */}
|
|
1035
1038
|
titre="Page introuvable"
|
|
1036
1039
|
reference={<>Réf. 404 · GET /dossier/2019</>}
|
|
1037
1040
|
actions={<>
|
|
@@ -1046,6 +1049,7 @@ export const CATALOGUE: GroupeCatalogue[] = [
|
|
|
1046
1049
|
rendu: (
|
|
1047
1050
|
<PageErreur
|
|
1048
1051
|
code="404"
|
|
1052
|
+
libelle="Erreur"
|
|
1049
1053
|
glyphe={GLYPHES.zevra}
|
|
1050
1054
|
titre="Page introuvable"
|
|
1051
1055
|
reference={<>Réf. 404 · GET /dossier/2019</>}
|
|
@@ -2128,11 +2132,18 @@ export const CATALOGUE: GroupeCatalogue[] = [
|
|
|
2128
2132
|
|
|
2129
2133
|
{/* RESTE à toutes les largeurs */}
|
|
2130
2134
|
<NavActions>
|
|
2135
|
+
{/* APPS = les produits QUI ONT UNE ADRESSE, pas les sept glyphes :
|
|
2136
|
+
une tuile qui mène à rien promet un produit et fait tomber le
|
|
2137
|
+
visiteur. Plume et Supernovia y entreront le jour où ils ouvrent,
|
|
2138
|
+
par une ligne dans logos/index.json — sans toucher aux apps. */}
|
|
2131
2139
|
<Lanceur> {/* titre="Applications" par défaut, filet de spectre */}
|
|
2132
2140
|
<LanceurGroupe>Suite Zevra</LanceurGroupe>
|
|
2133
2141
|
<LanceurApps>
|
|
2134
|
-
|
|
2135
|
-
|
|
2142
|
+
{APPS.map((id) => (
|
|
2143
|
+
<LanceurApp key={id} href={ADRESSES_PRODUITS[id]}
|
|
2144
|
+
nom={NOMS_PRODUITS[id]} accroche={ACCROCHES_PRODUITS[id]}
|
|
2145
|
+
glyphe={GLYPHES[id]} courant={id === 'memoire'} />
|
|
2146
|
+
))}
|
|
2136
2147
|
</LanceurApps>
|
|
2137
2148
|
</Lanceur>
|
|
2138
2149
|
<Compte utilisateur={utilisateur /* absent = visiteur */}>
|
package/react/content.tsx
CHANGED
|
@@ -732,10 +732,28 @@ export function LegalPage({
|
|
|
732
732
|
export interface PageErreurProps extends Div {
|
|
733
733
|
/** Le code, tel qu'il s'affiche dans le kicker (`404`, `403`, `500`). */
|
|
734
734
|
code: string
|
|
735
|
-
/**
|
|
735
|
+
/** Le mot qui précède le code (« Erreur », « Error », « Error »). Absent,
|
|
736
|
+
* seul le code s'affiche.
|
|
737
|
+
*
|
|
738
|
+
* ⚠️ EN PROP, et pas en dur : une 404 anglaise de Mémoire affichait
|
|
739
|
+
* « Erreur 404 ». Le composant est censé ne porter aucun texte — c'est
|
|
740
|
+
* écrit dans son arbitrage —, et il en portait quand même. */
|
|
741
|
+
libelle?: string
|
|
742
|
+
/** L'URL du glyphe — `GLYPHES.memoire` de `@zevra/ui/glyphes`. Sur une
|
|
736
743
|
* page qui n'a plus de contenu, c'est le seul repère qui dise encore où
|
|
737
744
|
* l'on se trouve. */
|
|
738
745
|
glyphe?: string
|
|
746
|
+
/** Le texte alternatif du glyphe. VIDE par défaut, donc décoratif : sur
|
|
747
|
+
* une page d'erreur, la marque n'apporte rien que le titre et le kicker
|
|
748
|
+
* ne disent déjà, et l'annoncer place un nom de produit devant
|
|
749
|
+
* l'information que le lecteur est venu chercher.
|
|
750
|
+
*
|
|
751
|
+
* ⚠️ Il valait `"Zevra"` en dur jusqu'à la 0.33.0 : sur la 404 de
|
|
752
|
+
* Mémoire, un lecteur d'écran annonçait « Zevra » devant le M de Mémoire,
|
|
753
|
+
* et aucune prop ne permettait de le corriger. Une valeur qu'une app aura
|
|
754
|
+
* légitimement besoin d'ajuster ne se pose pas en dur — c'est la règle du
|
|
755
|
+
* dépôt, et celle-ci l'enfreignait. */
|
|
756
|
+
glypheAlt?: string
|
|
739
757
|
/** Le titre. ⚠️ Il dit la panne EN CLAIR : « Page introuvable », pas un
|
|
740
758
|
* jeu de mots. L'esprit vient dans le texte, jamais avant l'information. */
|
|
741
759
|
titre: ReactNode
|
|
@@ -761,7 +779,9 @@ export interface PageErreurProps extends Div {
|
|
|
761
779
|
*/
|
|
762
780
|
export function PageErreur({
|
|
763
781
|
code,
|
|
782
|
+
libelle,
|
|
764
783
|
glyphe,
|
|
784
|
+
glypheAlt = '',
|
|
765
785
|
titre,
|
|
766
786
|
actions,
|
|
767
787
|
reference,
|
|
@@ -771,10 +791,10 @@ export function PageErreur({
|
|
|
771
791
|
}: PageErreurProps) {
|
|
772
792
|
return (
|
|
773
793
|
<div className={cx('zv-errpage', className)} {...reste}>
|
|
774
|
-
{glyphe && <img src={glyphe} alt=
|
|
794
|
+
{glyphe && <img src={glyphe} alt={glypheAlt} className="zv-errpage__glyphe" />}
|
|
775
795
|
<p className="zv-errpage__kicker">
|
|
776
796
|
<span className="zv-spec" aria-hidden="true" />
|
|
777
|
-
<span className="zv-mono zv-mono--label">
|
|
797
|
+
<span className="zv-mono zv-mono--label">{libelle ? `${libelle} ${code}` : code}</span>
|
|
778
798
|
</p>
|
|
779
799
|
<h1 className="zv-errpage__titre">{titre}</h1>
|
|
780
800
|
{children && <p className="zv-errpage__texte">{children}</p>}
|