@zevra/ui 0.35.0 → 0.37.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 (104) hide show
  1. package/DECISIONS.md +306 -208
  2. package/README.md +21 -21
  3. package/demo/app.html +6 -6
  4. package/demo/index.html +3 -3
  5. package/dist/actions.d.ts +8 -8
  6. package/dist/actions.d.ts.map +1 -1
  7. package/dist/actions.js +1 -1
  8. package/dist/actions.js.map +1 -1
  9. package/dist/catalogue.d.ts +2 -2
  10. package/dist/catalogue.js +67 -67
  11. package/dist/catalogue.js.map +1 -1
  12. package/dist/content.d.ts +23 -23
  13. package/dist/content.d.ts.map +1 -1
  14. package/dist/content.js +16 -16
  15. package/dist/content.js.map +1 -1
  16. package/dist/css-inline.d.ts +1 -1
  17. package/dist/css-inline.d.ts.map +1 -1
  18. package/dist/css-inline.js +4 -4
  19. package/dist/css-inline.js.map +1 -1
  20. package/dist/data-table.d.ts +1 -1
  21. package/dist/data.d.ts +7 -7
  22. package/dist/data.js +5 -5
  23. package/dist/email-tokens.js +1 -1
  24. package/dist/email.d.ts +6 -6
  25. package/dist/email.js +8 -8
  26. package/dist/email.js.map +1 -1
  27. package/dist/feedback.d.ts +10 -10
  28. package/dist/feedback.d.ts.map +1 -1
  29. package/dist/feedback.js +3 -3
  30. package/dist/forms.d.ts +12 -12
  31. package/dist/forms.js +5 -5
  32. package/dist/glyph-data.d.ts +2 -2
  33. package/dist/glyph-data.js +3 -3
  34. package/dist/glyph-urls.js +1 -1
  35. package/dist/glyphes.d.ts +2 -2
  36. package/dist/glyphes.js +4 -4
  37. package/dist/icon-data.d.ts +1 -1
  38. package/dist/icon-data.js +2 -2
  39. package/dist/icon.d.ts +5 -5
  40. package/dist/icon.js +1 -1
  41. package/dist/index.js +4 -4
  42. package/dist/layout.d.ts +21 -21
  43. package/dist/layout.d.ts.map +1 -1
  44. package/dist/layout.js +15 -15
  45. package/dist/layout.js.map +1 -1
  46. package/dist/navigation.d.ts +16 -16
  47. package/dist/navigation.d.ts.map +1 -1
  48. package/dist/navigation.js +9 -9
  49. package/dist/navigation.js.map +1 -1
  50. package/dist/overlays.d.ts +6 -6
  51. package/dist/overlays.d.ts.map +1 -1
  52. package/dist/overlays.js +5 -5
  53. package/dist/select-menu.d.ts +1 -1
  54. package/dist/select-menu.js +2 -2
  55. package/dist/surfaces.d.ts +8 -8
  56. package/dist/surfaces.d.ts.map +1 -1
  57. package/dist/surfaces.js +6 -6
  58. package/dist/surfaces.js.map +1 -1
  59. package/dist/typography.d.ts +4 -4
  60. package/dist/typography.d.ts.map +1 -1
  61. package/dist/typography.js +3 -3
  62. package/dist/typography.js.map +1 -1
  63. package/icons/index.json +1 -1
  64. package/package.json +2 -2
  65. package/react/actions.tsx +9 -9
  66. package/react/catalogue.tsx +68 -68
  67. package/react/content.tsx +28 -28
  68. package/react/css-inline.ts +4 -4
  69. package/react/data-table.tsx +3 -3
  70. package/react/data.tsx +9 -9
  71. package/react/email-tokens.ts +1 -1
  72. package/react/email.ts +10 -10
  73. package/react/feedback.tsx +12 -12
  74. package/react/forms.tsx +15 -15
  75. package/react/glyph-data.ts +3 -3
  76. package/react/glyph-urls.ts +1 -1
  77. package/react/glyphes.ts +4 -4
  78. package/react/icon-data.ts +2 -2
  79. package/react/icon.tsx +6 -6
  80. package/react/index.ts +4 -4
  81. package/react/layout.tsx +22 -22
  82. package/react/navigation.tsx +18 -18
  83. package/react/overlays.tsx +9 -9
  84. package/react/select-menu.tsx +3 -3
  85. package/react/surfaces.tsx +10 -10
  86. package/react/typography.tsx +6 -6
  87. package/src/base.css +10 -10
  88. package/src/components.css +49 -49
  89. package/src/data.css +41 -41
  90. package/src/feedback.css +84 -59
  91. package/src/fonts.css +2 -2
  92. package/src/forms.css +50 -50
  93. package/src/icons.css +10 -10
  94. package/src/index.css +1 -1
  95. package/src/layout.css +27 -27
  96. package/src/motion.css +16 -16
  97. package/src/motion.js +4 -4
  98. package/src/nav.js +5 -5
  99. package/src/navigation.css +62 -62
  100. package/src/overlays.css +14 -14
  101. package/src/rail.js +6 -6
  102. package/src/surfaces.css +11 -11
  103. package/src/tokens.css +14 -14
  104. package/tokens/index.js +8 -8
@@ -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,i7xRAAi7xR,CAAA;AAEp9xR;;;yBAGyB;AACzB,MAAM,CAAC,MAAM,WAAW,GAAW,03BAA03B,CAAA"}
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,gyzRAAgyzR,CAAA;AAEn0zR;;;yBAGyB;AACzB,MAAM,CAAC,MAAM,WAAW,GAAW,y3BAAy3B,CAAA"}
@@ -21,7 +21,7 @@ export interface DataTableProps<T> {
21
21
  * d'absence qu'on attend ici (filtre trop étroit), pas l'écran d'absence :
22
22
  * l'en-tête doit rester visible pour qu'on puisse élargir le filtre. */
23
23
  vide?: ReactNode;
24
- /** Appelé au clic sur une ligne. Sans lui, la ligne n'est pas cliquable —
24
+ /** Appelé au clic sur une ligne. Sans lui, la ligne n'est pas cliquable :
25
25
  * et elle ne doit pas en avoir l'air. */
26
26
  onRowClick?: (ligne: T) => void;
27
27
  className?: string;
package/dist/data.d.ts CHANGED
@@ -8,7 +8,7 @@ export interface TableProps extends Div {
8
8
  /** Tableau de PROSE : les cellules reviennent à la ligne au lieu de
9
9
  * tronquer, et les colonnes s'alignent en haut.
10
10
  *
11
- * ⚠️ À employer dès qu'une cellule porte une phrase plutôt qu'une donnée —
11
+ * ⚠️ À employer dès qu'une cellule porte une phrase plutôt qu'une donnée :
12
12
  * une clause de contrat, un fondement juridique, une garantie de
13
13
  * transfert. Tronquer une clause ne la raccourcit pas, ça la CACHE, et le
14
14
  * lecteur n'a aucun moyen de savoir qu'il manque quelque chose. Le défaut
@@ -75,7 +75,7 @@ export interface MetaProps extends Span {
75
75
  className?: string;
76
76
  }
77
77
  /** Second registre mono du système, en BAS DE CASSE : taille de fichier,
78
- * date, horodatage, latence. Ni capitales ni interlettrage — c'est ce qui le
78
+ * date, horodatage, latence. Ni capitales ni interlettrage : c'est ce qui le
79
79
  * distingue de `Tag` et `Mono`, et une date en capitales espacées devient
80
80
  * illisible. */
81
81
  export declare function Meta({ taille, discret, className, ...reste }: MetaProps): import("react").JSX.Element;
@@ -136,7 +136,7 @@ export declare function CiteRow({ className, ...reste }: Div & {
136
136
  }): import("react").JSX.Element;
137
137
  export interface FileTypeProps extends Span {
138
138
  /** Règle de choix relevée : DOCX si le type MIME contient « word »,
139
- * PDF sinon. Les couleurs ne viennent PAS de la charte — ce sont celles
139
+ * PDF sinon. Les couleurs ne viennent PAS de la charte : ce sont celles
140
140
  * que le monde associe à ces formats. */
141
141
  format: 'pdf' | 'docx';
142
142
  className?: string;
@@ -145,7 +145,7 @@ export declare function FileType({ format, className, ...reste }: FileTypeProps)
145
145
  export interface FoldProps extends Omit<DetailsHTMLAttributes<HTMLDetailsElement>, 'className' | 'open'> {
146
146
  titre: ReactNode;
147
147
  /** Ouverte au premier rendu. L'état vit ensuite dans le NAVIGATEUR
148
- * (<details> natif) : pas de prop contrôlée, pas de JavaScript — le
148
+ * (<details> natif) : pas de prop contrôlée, pas de JavaScript, le
149
149
  * clavier et l'annonce viennent avec. `open` est retiré des attributs :
150
150
  * deux canaux pour le même état, et c'est le silencieux qui gagnerait. */
151
151
  ouvert?: boolean;
@@ -153,11 +153,11 @@ export interface FoldProps extends Omit<DetailsHTMLAttributes<HTMLDetailsElement
153
153
  children?: ReactNode;
154
154
  }
155
155
  /** Le pliage de l'applicatif : options avancées, détail d'une ligne de
156
- * journal. La FAQ (contenu) reste le pliage de la VITRINE — question en
156
+ * journal. La FAQ (contenu) reste le pliage de la VITRINE : question en
157
157
  * 14px, respiration éditoriale ; celui-ci est un chrome dense. Le chevron
158
158
  * fait partie du composant, comme la flèche de LinkArrow. */
159
159
  export declare function Fold({ titre, ouvert, className, children, ...reste }: FoldProps): import("react").JSX.Element;
160
- /** Une touche, une seule : « ⌘K » est DEUX touches, donc deux `Kbd` — les
160
+ /** Une touche, une seule : « ⌘K » est DEUX touches, donc deux `Kbd`, les
161
161
  * fondre dans une seule dessine une touche qui n'existe sur aucun
162
162
  * clavier. */
163
163
  export declare function Kbd({ className, ...reste }: Omit<HTMLAttributes<HTMLElement>, 'className'> & {
@@ -169,7 +169,7 @@ export declare function Code({ className, ...reste }: Omit<HTMLAttributes<HTMLEl
169
169
  className?: string;
170
170
  }): import("react").JSX.Element;
171
171
  /** Bloc de code. Chasse fixe RÉELLE (--font-code) : --font-mono est
172
- * proportionnelle et n'aligne pas du code. Aucune coloration syntaxique —
172
+ * proportionnelle et n'aligne pas du code. Aucune coloration syntaxique :
173
173
  * elle imposerait une palette entière que la charte n'a pas. Le bloc
174
174
  * défile en son sein : une ligne longue ne pousse jamais la page. */
175
175
  export declare function CodeBlock({ className, children, ...reste }: Omit<HTMLAttributes<HTMLPreElement>, 'className'> & {
package/dist/data.js CHANGED
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { cx } from './cx.js';
3
3
  /** `--zv-cols` est un PARAMÈTRE de grille, pas un token de marque : il se
4
4
  * pose en style inline sur le cadre, et l'en-tête comme les lignes en
5
- * héritent. Une seule déclaration pour les deux — recopié aux deux
5
+ * héritent. Une seule déclaration pour les deux : recopié aux deux
6
6
  * endroits, on l'oublie à l'un et les intitulés se décalent des valeurs
7
7
  * sans que rien ne casse visiblement. */
8
8
  function cols(gabarit, style) {
@@ -46,7 +46,7 @@ export function ListName({ className, ...reste }) {
46
46
  return _jsx("span", { className: cx('zv-list__name', className), ...reste });
47
47
  }
48
48
  /** Second registre mono du système, en BAS DE CASSE : taille de fichier,
49
- * date, horodatage, latence. Ni capitales ni interlettrage — c'est ce qui le
49
+ * date, horodatage, latence. Ni capitales ni interlettrage : c'est ce qui le
50
50
  * distingue de `Tag` et `Mono`, et une date en capitales espacées devient
51
51
  * illisible. */
52
52
  export function Meta({ taille = 'normal', discret, className, ...reste }) {
@@ -96,14 +96,14 @@ export function FileType({ format, className, ...reste }) {
96
96
  return (_jsx("span", { className: cx('zv-filetype', `zv-filetype--${format}`, className), ...reste, children: format.toUpperCase() }));
97
97
  }
98
98
  /** Le pliage de l'applicatif : options avancées, détail d'une ligne de
99
- * journal. La FAQ (contenu) reste le pliage de la VITRINE — question en
99
+ * journal. La FAQ (contenu) reste le pliage de la VITRINE : question en
100
100
  * 14px, respiration éditoriale ; celui-ci est un chrome dense. Le chevron
101
101
  * fait partie du composant, comme la flèche de LinkArrow. */
102
102
  export function Fold({ titre, ouvert, className, children, ...reste }) {
103
103
  return (_jsxs("details", { className: cx('zv-fold', className), open: ouvert, ...reste, children: [_jsxs("summary", { className: "zv-fold__titre", children: [titre, _jsx("svg", { className: "zv-fold__chevron", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "square", strokeLinejoin: "miter", "aria-hidden": "true", children: _jsx("path", { d: "M6.67 9.33 L12 14.67 L17.33 9.33" }) })] }), _jsx("div", { className: "zv-fold__corps", children: children })] }));
104
104
  }
105
105
  /* ─── Touche de clavier ────────────────────────────────────────────── */
106
- /** Une touche, une seule : « ⌘K » est DEUX touches, donc deux `Kbd` — les
106
+ /** Une touche, une seule : « ⌘K » est DEUX touches, donc deux `Kbd`, les
107
107
  * fondre dans une seule dessine une touche qui n'existe sur aucun
108
108
  * clavier. */
109
109
  export function Kbd({ className, ...reste }) {
@@ -116,7 +116,7 @@ export function Code({ className, ...reste }) {
116
116
  return _jsx("code", { className: cx('zv-code', className), ...reste });
117
117
  }
118
118
  /** Bloc de code. Chasse fixe RÉELLE (--font-code) : --font-mono est
119
- * proportionnelle et n'aligne pas du code. Aucune coloration syntaxique —
119
+ * proportionnelle et n'aligne pas du code. Aucune coloration syntaxique :
120
120
  * elle imposerait une palette entière que la charte n'a pas. Le bloc
121
121
  * défile en son sein : une ligne longue ne pousse jamais la page. */
122
122
  export function CodeBlock({ className, children, ...reste }) {
@@ -1,4 +1,4 @@
1
- // GÉNÉRÉ par scripts/build-email-tokens.mjs — ne pas éditer à la main.
1
+ // GÉNÉRÉ par scripts/build-email-tokens.mjs : ne pas éditer à la main.
2
2
  // Source de vérité : tokens/index.js, lui-même miroir de src/tokens.css.
3
3
  export const COULEURS = {
4
4
  "ink": "#0b1020",
package/dist/email.d.ts CHANGED
@@ -13,11 +13,11 @@ export declare function emailKicker(texte: string): string;
13
13
  * tenue à l'ouverture. */
14
14
  export declare function emailTitre(texte: string): string;
15
15
  /** Un paragraphe. Le HTML d'enrichissement (`<strong>`, `<a>`) est admis :
16
- * c'est du texte rédigé, pas une saisie utilisateur — l'échapper
16
+ * c'est du texte rédigé, pas une saisie utilisateur, l'échapper
17
17
  * afficherait des chevrons. Passer par `echappe` toute valeur qui vient
18
18
  * d'une base. */
19
19
  export declare function emailTexte(html: string): string;
20
- /** L'action. UN SEUL bouton plein par e-mail, comme par page — c'est ce qui
20
+ /** L'action. UN SEUL bouton plein par e-mail, comme par page : c'est ce qui
21
21
  * fait qu'on sait où cliquer.
22
22
  * Construit en table : le `padding` d'un `<a>` est ignoré par Outlook, qui
23
23
  * rendrait un lien nu au milieu du message. Aplat indigo et non dégradé,
@@ -27,7 +27,7 @@ export declare function emailBouton({ href, libelle }: {
27
27
  libelle: string;
28
28
  }): string;
29
29
  /** Le lien secondaire, sous le bouton : l'autre chemin, pour qui ne veut pas
30
- * du premier. Souligné — dans un e-mail, la couleur seule ne suffit pas à
30
+ * du premier. Souligné : dans un e-mail, la couleur seule ne suffit pas à
31
31
  * annoncer un lien. */
32
32
  export declare function emailLienSecondaire({ href, libelle }: {
33
33
  href: string;
@@ -44,7 +44,7 @@ export interface EmailOptions {
44
44
  * à l'envoi, dans l'en-tête SMTP. */
45
45
  titre: string;
46
46
  /** Le texte gris qui suit l'objet dans la liste des messages. Sans lui,
47
- * le client y affiche les premiers mots du HTML — souvent « Voir cet
47
+ * le client y affiche les premiers mots du HTML : souvent « Voir cet
48
48
  * e-mail dans votre navigateur », ce qui gâche la seule ligne dont on
49
49
  * dispose pour convaincre d'ouvrir. */
50
50
  preheader?: string;
@@ -52,7 +52,7 @@ export interface EmailOptions {
52
52
  * un logo : une image sur deux est bloquée par défaut, et un e-mail qui
53
53
  * ne dit pas de qui il vient part à la corbeille. */
54
54
  marque: string;
55
- /** L'URL ABSOLUE du logo — une image d'e-mail ne se résout pas depuis un
55
+ /** L'URL ABSOLUE du logo : une image d'e-mail ne se résout pas depuis un
56
56
  * chemin relatif, et les data-URI sont bloquées par Gmail. */
57
57
  logo?: {
58
58
  src: string;
@@ -73,7 +73,7 @@ export interface EmailOptions {
73
73
  *
74
74
  * ⚠️ Le mode sombre est REFUSÉ explicitement (`color-scheme: light`) : la
75
75
  * charte est claire par nature, et l'inversion automatique d'Apple Mail
76
- * retourne les neutres sans toucher aux aplats — l'indigo du bouton
76
+ * retourne les neutres sans toucher aux aplats, l'indigo du bouton
77
77
  * resterait sur un fond devenu noir, et les contrastes réglés dans un sens
78
78
  * partiraient dans l'autre. C'est la même règle que pour les surfaces
79
79
  * sombres du système : elles se font avec la bande manifeste, jamais en
package/dist/email.js CHANGED
@@ -8,10 +8,10 @@
8
8
  // · il n'y a pas de feuille de style à charger dans un e-mail ;
9
9
  // · Outlook et Gmail SUPPRIMENT les propriétés personnalisées : un
10
10
  // `var(--accent)` s'y rend en couleur nulle, donc en texte noir sur fond
11
- // transparent. Les valeurs sont donc écrites en clair — mais tirées du
11
+ // transparent. Les valeurs sont donc écrites en clair : mais tirées du
12
12
  // miroir JS des tokens, que tests/tokens.test.js tient aligné sur le CSS ;
13
13
  // · ni flexbox ni grid ne sont fiables : la mise en page est en TABLES ;
14
- // · les dégradés ne se rendent pas dans Outlook — le bouton plein perd le
14
+ // · les dégradés ne se rendent pas dans Outlook : le bouton plein perd le
15
15
  // sien et devient un aplat, le filet de spectre devient trois aplats.
16
16
  //
17
17
  // Il vit dans react/ parce que c'est la racine de compilation du paquet
@@ -22,7 +22,7 @@
22
22
  // s'affichera pas. Ne pas y ajouter de classes en espérant qu'elles soient
23
23
  // stylées.
24
24
  import { COULEURS, POLICES as PILES } from './email-tokens.js';
25
- // Les URL publiques des glyphes — sept chaînes, aucune image inlinée : un
25
+ // Les URL publiques des glyphes, sept chaînes, aucune image inlinée : un
26
26
  // client de messagerie ne résout pas une data-URI (Gmail les bloque), il lui
27
27
  // faut une adresse absolue.
28
28
  import { LOGOS_PRODUITS } from './glyph-urls.js';
@@ -32,7 +32,7 @@ export { BASE_RESSOURCES, LOGOS_PRODUITS } from './glyph-urls.js';
32
32
  * délimité par ces mêmes guillemets : l'attribut se refermerait au premier
33
33
  * guillemet interne, et TOUT le style du nœud serait perdu. En HTML, un
34
34
  * guillemet simple est équivalent à l'intérieur d'une valeur de police.
35
- * Cette faute ne se voit pas à la relecture — elle se voit au rendu, où
35
+ * Cette faute ne se voit pas à la relecture : elle se voit au rendu, où
36
36
  * l'e-mail entier repasse en Times sans style. */
37
37
  const pourAttribut = (pile) => pile.replace(/"/g, "'");
38
38
  const POLICES = {
@@ -75,13 +75,13 @@ export function emailTitre(texte) {
75
75
  return `<h1 style="${TITRE}font-size:26px;line-height:1.2;margin:0 0 18px;">${echappe(texte)}</h1>`;
76
76
  }
77
77
  /** Un paragraphe. Le HTML d'enrichissement (`<strong>`, `<a>`) est admis :
78
- * c'est du texte rédigé, pas une saisie utilisateur — l'échapper
78
+ * c'est du texte rédigé, pas une saisie utilisateur, l'échapper
79
79
  * afficherait des chevrons. Passer par `echappe` toute valeur qui vient
80
80
  * d'une base. */
81
81
  export function emailTexte(html) {
82
82
  return `<p style="${CORPS}margin:0 0 16px;">${html}</p>`;
83
83
  }
84
- /** L'action. UN SEUL bouton plein par e-mail, comme par page — c'est ce qui
84
+ /** L'action. UN SEUL bouton plein par e-mail, comme par page : c'est ce qui
85
85
  * fait qu'on sait où cliquer.
86
86
  * Construit en table : le `padding` d'un `<a>` est ignoré par Outlook, qui
87
87
  * rendrait un lien nu au milieu du message. Aplat indigo et non dégradé,
@@ -93,7 +93,7 @@ export function emailBouton({ href, libelle }) {
93
93
  </td></tr></table>`;
94
94
  }
95
95
  /** Le lien secondaire, sous le bouton : l'autre chemin, pour qui ne veut pas
96
- * du premier. Souligné — dans un e-mail, la couleur seule ne suffit pas à
96
+ * du premier. Souligné : dans un e-mail, la couleur seule ne suffit pas à
97
97
  * annoncer un lien. */
98
98
  export function emailLienSecondaire({ href, libelle }) {
99
99
  return `<p style="${CORPS}font-size:14px;margin:0 0 16px;"><a href="${echappe(href)}" style="color:${COULEURS.accent};text-decoration:underline;">${echappe(libelle)}</a></p>`;
@@ -118,7 +118,7 @@ export function emailFilet() {
118
118
  *
119
119
  * ⚠️ Le mode sombre est REFUSÉ explicitement (`color-scheme: light`) : la
120
120
  * charte est claire par nature, et l'inversion automatique d'Apple Mail
121
- * retourne les neutres sans toucher aux aplats — l'indigo du bouton
121
+ * retourne les neutres sans toucher aux aplats, l'indigo du bouton
122
122
  * resterait sur un fond devenu noir, et les contrastes réglés dans un sens
123
123
  * partiraient dans l'autre. C'est la même règle que pour les surfaces
124
124
  * sombres du système : elles se font avec la bande manifeste, jamais en
package/dist/email.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"email.js","sourceRoot":"","sources":["../react/email.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email.js","sourceRoot":"","sources":["../react/email.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export interface AlertProps extends Div {
6
6
  /** OBLIGATOIRE : sans ton, le bandeau hérite d'un filet en `currentColor`,
7
7
  * soit un trait d'encre autour d'un fond blanc. */
8
8
  ton: AlertTon;
9
- /** `sm` resserre, `lg` amplifie — ce dernier pour le message qui REMPLACE
9
+ /** `sm` resserre, `lg` amplifie : ce dernier pour le message qui REMPLACE
10
10
  * un contenu attendu (incident, réponse impossible). */
11
11
  taille?: 'sm' | 'normal' | 'lg';
12
12
  className?: string;
@@ -28,8 +28,8 @@ export interface BadgeProps extends Span {
28
28
  export declare function Badge({ ton, gabarit, pastille, className, children, ...reste }: BadgeProps): import("react").JSX.Element;
29
29
  export type DotEtat = 'recu' | 'ocr' | 'indexation' | 'indexe' | 'ok' | 'erreur';
30
30
  export interface DotProps extends Span {
31
- /** Sans état, la pastille reste GRISE : un statut inconnu — ajouté côté
32
- * serveur, pas encore côté interface — ne doit pas passer pour un succès. */
31
+ /** Sans état, la pastille reste GRISE : un statut inconnu (ajouté côté
32
+ * serveur, pas encore côté interface) ne doit pas passer pour un succès. */
33
33
  etat?: DotEtat;
34
34
  taille?: 'sm' | 'normal' | 'lg';
35
35
  /** CARRÉE : marque une SOURCE, pas un état. Ne pas uniformiser. */
@@ -77,7 +77,7 @@ export interface ProgressProps extends Div {
77
77
  /** Entre 0 et 1. Hors bornes, la valeur est ramenée dedans : une barre à
78
78
  * 140 % déborde de son cadre. */
79
79
  valeur: number;
80
- /** Ce que la barre mesure — annoncé, jamais dessiné. */
80
+ /** Ce que la barre mesure : annoncé, jamais dessiné. */
81
81
  label?: string;
82
82
  className?: string;
83
83
  }
@@ -88,13 +88,13 @@ export interface SpinnerProps extends Span {
88
88
  /** En tête d'un panneau d'attente : la roue seule, plus grande. */
89
89
  grand?: boolean;
90
90
  /** Ce qu'on attend, annoncé au lecteur d'écran. Sans lui la roue est
91
- * DÉCORATIVE et masquée — le bon défaut quand une phrase voisine dit
91
+ * DÉCORATIVE et masquée : le bon défaut quand une phrase voisine dit
92
92
  * déjà le travail (`Loading`, ou le libellé d'un bouton `occupe`). */
93
93
  label?: string;
94
94
  className?: string;
95
95
  }
96
96
  /** Attente COURTE ET LOCALE : un bouton, une cellule, un panneau sans la
97
- * place d'une phrase. Pour l'attente d'un écran, préférer `Loading` — la
97
+ * place d'une phrase. Pour l'attente d'un écran, préférer `Loading` : la
98
98
  * phrase qui dit le travail réel reste le motif par défaut du système.
99
99
  * Le libellé est un TEXTE masqué visuellement, pas un aria-label : sur un
100
100
  * span vide, l'aria-label n'est pas annoncé par tous les lecteurs. */
@@ -108,17 +108,17 @@ export interface SkeletonProps extends Div {
108
108
  hauteur?: number | string;
109
109
  className?: string;
110
110
  }
111
- /** Il ANNONCE une structure connue (la carte, la ligne qui va venir) — pour
111
+ /** Il ANNONCE une structure connue (la carte, la ligne qui va venir) : pour
112
112
  * un contenu dont la forme est inconnue, c'est `Loading` qui dit ce cas.
113
113
  * Le squelette est masqué aux lecteurs d'écran : c'est la zone qui charge
114
114
  * qui porte aria-busy, pas chaque os. */
115
115
  export declare function Skeleton({ texte, largeur, hauteur, className, style, ...reste }: SkeletonProps): import("react").JSX.Element;
116
116
  export interface TooltipProps extends Span {
117
- /** Le complément — un raccourci, une date exacte, une unité. JAMAIS le
117
+ /** Le complément : un raccourci, une date exacte, une unité. JAMAIS le
118
118
  * nom de la commande : lui vit sur la cible (libellé ou aria-label), une
119
119
  * infobulle n'existe pas au doigt. */
120
120
  contenu: ReactNode;
121
- /** Identifiant EXPLICITE, à répéter en `aria-describedby` sur la cible —
121
+ /** Identifiant EXPLICITE, à répéter en `aria-describedby` sur la cible,
122
122
  * le contrat du couple htmlFor/id de Field, pour la même raison : pas de
123
123
  * useId, le composant reste rendu au serveur. */
124
124
  id?: string;
@@ -130,7 +130,7 @@ export interface TooltipProps extends Span {
130
130
  children?: ReactNode;
131
131
  }
132
132
  /** Échap ferme la bulle jusqu'au blur (WCAG 1.4.13) : la classe est posée
133
- * sur le nœud sans état React — le composant reste rendu au serveur, et
133
+ * sur le nœud sans état React, le composant reste rendu au serveur, et
134
134
  * sans script la bulle reste simplement au comportement survol/focus. */
135
135
  export declare function Tooltip({ contenu, id, bas, className, children, ...reste }: TooltipProps): import("react").JSX.Element;
136
136
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../react/feedback.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../react/feedback.tsx"],"names":[],"mappings":"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"}
package/dist/feedback.js CHANGED
@@ -36,14 +36,14 @@ export function Progress({ valeur, label, className, ...reste }) {
36
36
  return (_jsx("div", { role: "progressbar", "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuenow": Math.round(part * 100), "aria-label": label, className: cx('zv-progress', className), ...reste, children: _jsx("div", { className: "zv-progress__fill", style: { width: `${part * 100}%` } }) }));
37
37
  }
38
38
  /** Attente COURTE ET LOCALE : un bouton, une cellule, un panneau sans la
39
- * place d'une phrase. Pour l'attente d'un écran, préférer `Loading` — la
39
+ * place d'une phrase. Pour l'attente d'un écran, préférer `Loading` : la
40
40
  * phrase qui dit le travail réel reste le motif par défaut du système.
41
41
  * Le libellé est un TEXTE masqué visuellement, pas un aria-label : sur un
42
42
  * span vide, l'aria-label n'est pas annoncé par tous les lecteurs. */
43
43
  export function Spinner({ grand, label, className, ...reste }) {
44
44
  return (_jsx("span", { role: label ? 'status' : undefined, "aria-hidden": label ? undefined : true, className: cx('zv-spinner', grand && 'zv-spinner--lg', className), ...reste, children: label && _jsx("span", { className: "zv-sr-only", children: label }) }));
45
45
  }
46
- /** Il ANNONCE une structure connue (la carte, la ligne qui va venir) — pour
46
+ /** Il ANNONCE une structure connue (la carte, la ligne qui va venir) : pour
47
47
  * un contenu dont la forme est inconnue, c'est `Loading` qui dit ce cas.
48
48
  * Le squelette est masqué aux lecteurs d'écran : c'est la zone qui charge
49
49
  * qui porte aria-busy, pas chaque os. */
@@ -51,7 +51,7 @@ export function Skeleton({ texte, largeur, hauteur, className, style, ...reste }
51
51
  return (_jsx("div", { "aria-hidden": "true", className: cx('zv-skeleton', texte && 'zv-skeleton--text', className), style: { width: largeur, height: hauteur, ...style }, ...reste }));
52
52
  }
53
53
  /** Échap ferme la bulle jusqu'au blur (WCAG 1.4.13) : la classe est posée
54
- * sur le nœud sans état React — le composant reste rendu au serveur, et
54
+ * sur le nœud sans état React, le composant reste rendu au serveur, et
55
55
  * sans script la bulle reste simplement au comportement survol/focus. */
56
56
  export function Tooltip({ contenu, id, bas, className, children, ...reste }) {
57
57
  return (_jsxs("span", { className: cx('zv-tooltip-hit', className), onKeyDown: (e) => {
package/dist/forms.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { ButtonHTMLAttributes, HTMLAttributes, InputHTMLAttributes, ReactNode, SelectHTMLAttributes, TextareaHTMLAttributes } from 'react';
2
2
  export interface FieldProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
3
3
  label?: ReactNode;
4
- /** Identifiant du contrôle enveloppé — à répéter en `id` sur le contrôle. */
4
+ /** Identifiant du contrôle enveloppé : à répéter en `id` sur le contrôle. */
5
5
  htmlFor?: string;
6
6
  /** Posé à droite de l'intitulé, sur la même ligne de base
7
7
  * (« Mot de passe oublié ? »). */
@@ -22,7 +22,7 @@ export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
22
22
  /** Ni fond ni filet : c'est le CADRE qui l'entoure qui fait le champ.
23
23
  * Lui laisser sa bordure dessinerait deux cadres imbriqués. */
24
24
  nu?: boolean;
25
- /** Pose `aria-invalid` — c'est lui qui rend l'erreur audible, et le CSS le
25
+ /** Pose `aria-invalid` : c'est lui qui rend l'erreur audible, et le CSS le
26
26
  * suit autant que la classe. */
27
27
  erreur?: boolean;
28
28
  className?: string;
@@ -34,7 +34,7 @@ export interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaE
34
34
  }
35
35
  export declare function Textarea({ erreur, className, ...reste }: TextareaProps): import("react").JSX.Element;
36
36
  /** <select> NATIF habillé comme le champ : la flèche, l'ouverture au clavier
37
- * et l'annonce viennent du navigateur. C'est le motif de choix par défaut —
37
+ * et l'annonce viennent du navigateur. C'est le motif de choix par défaut :
38
38
  * `SelectTrigger` est un menu maison, à réserver aux filtres. */
39
39
  export declare function Select({ className, ...reste }: Omit<SelectHTMLAttributes<HTMLSelectElement>, 'className'> & {
40
40
  className?: string;
@@ -69,7 +69,7 @@ export declare function Radio({ className, ...reste }: Omit<InputHTMLAttributes<
69
69
  export interface SwitchProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'onChange'> {
70
70
  /** État courant. Composant CONTRÔLÉ : il ne mémorise rien. */
71
71
  on: boolean;
72
- /** Libellé accolé — c'est lui qui porte le sens, la piste seule ne dit pas
72
+ /** Libellé accolé : c'est lui qui porte le sens, la piste seule ne dit pas
73
73
  * ce qui est activé. */
74
74
  texte?: ReactNode;
75
75
  className?: string;
@@ -119,26 +119,26 @@ export declare function DropInput({ className, ...reste }: Omit<InputHTMLAttribu
119
119
  }): import("react").JSX.Element;
120
120
  export interface InputAffixProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
121
121
  /** Préfixe, en mono label : « € », « HT ». Une unité est un libellé, pas
122
- * une donnée — elle ne se saisit pas, elle qualifie ce qui est saisi. */
122
+ * une donnée : elle ne se saisit pas, elle qualifie ce qui est saisi. */
123
123
  avant?: ReactNode;
124
124
  /** Suffixe : « JOURS », « / MOIS », « .zevra.tech ». */
125
125
  apres?: ReactNode;
126
126
  /** Identifiants EXPLICITES des affixes, à citer dans `aria-describedby`
127
- * sur le champ intérieur — le contrat htmlFor/id de `Field`, pour la
127
+ * sur le champ intérieur, le contrat htmlFor/id de `Field`, pour la
128
128
  * même raison : pas de useId, le composant reste rendu au serveur.
129
129
  * ⚠️ Sans ce câblage, un lecteur d'écran en mode formulaire entend
130
- * « 1200 » sans jamais apprendre qu'il s'agit d'euros HT — exactement le
130
+ * « 1200 » sans jamais apprendre qu'il s'agit d'euros HT : exactement le
131
131
  * défaut que le composant existe pour corriger. */
132
132
  idAvant?: string;
133
133
  idApres?: string;
134
134
  className?: string;
135
- /** Le champ lui-même — un `<Input nu>` : c'est le CADRE qui fait le champ,
135
+ /** Le champ lui-même, un `<Input nu>` : c'est le CADRE qui fait le champ,
136
136
  * un `<Input>` bordé dessinerait deux cadres imbriqués. */
137
137
  children?: ReactNode;
138
138
  }
139
139
  /** Cadre à affixe : « 30 », seul dans un champ, ne dit pas s'il s'agit de
140
140
  * jours ou d'euros. Même grammaire que `Search` (cadre + champ nu) ; à ne
141
- * pas employer quand l'unité est déjà dans l'intitulé du champ — deux fois
141
+ * pas employer quand l'unité est déjà dans l'intitulé du champ : deux fois
142
142
  * la même unité se lisent comme deux informations. */
143
143
  export declare function InputAffix({ avant, apres, idAvant, idApres, className, children, ...reste }: InputAffixProps): import("react").JSX.Element;
144
144
  export interface RangeProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'type'> {
@@ -146,7 +146,7 @@ export interface RangeProps extends Omit<InputHTMLAttributes<HTMLInputElement>,
146
146
  }
147
147
  /** Curseur natif habillé (`<input type="range">`) : clavier, annonce et
148
148
  * bornes viennent du navigateur. Le remplissage de la piste est calculé
149
- * ici depuis value/min/max — une géométrie, comme la largeur de
149
+ * ici depuis value/min/max : une géométrie, comme la largeur de
150
150
  * `Progress`, pas une valeur de charte. En NON contrôlé, il reflète la
151
151
  * valeur initiale et ne suit plus le doigt : contrôler le champ dès que le
152
152
  * remplissage doit suivre.
@@ -171,8 +171,8 @@ export interface InputPasswordProps extends Omit<InputHTMLAttributes<HTMLInputEl
171
171
  * l'appelant, qui est déjà un composant client puisqu'il tient la valeur du
172
172
  * champ. Le paquet ne tire pas React côté navigateur pour un champ.
173
173
  *
174
- * Le libellé du bouton change avec l'état — une icône seule ne dit pas ce qui
175
- * va se passer — et `aria-pressed` l'annonce aux lecteurs d'écran.
174
+ * Le libellé du bouton change avec l'état, une icône seule ne dit pas ce qui
175
+ * va se passer, et `aria-pressed` l'annonce aux lecteurs d'écran.
176
176
  */
177
177
  export declare function InputPassword({ visible, onBascule, className, ...reste }: InputPasswordProps): import("react").JSX.Element;
178
178
  //# sourceMappingURL=forms.d.ts.map
package/dist/forms.js CHANGED
@@ -12,7 +12,7 @@ export function Textarea({ erreur, className, ...reste }) {
12
12
  return (_jsx("textarea", { className: cx('zv-textarea', className), "aria-invalid": erreur || undefined, ...reste }));
13
13
  }
14
14
  /** <select> NATIF habillé comme le champ : la flèche, l'ouverture au clavier
15
- * et l'annonce viennent du navigateur. C'est le motif de choix par défaut —
15
+ * et l'annonce viennent du navigateur. C'est le motif de choix par défaut :
16
16
  * `SelectTrigger` est un menu maison, à réserver aux filtres. */
17
17
  export function Select({ className, ...reste }) {
18
18
  return _jsx("select", { className: cx('zv-input', 'zv-input--select', className), ...reste });
@@ -60,14 +60,14 @@ export function DropInput({ className, ...reste }) {
60
60
  }
61
61
  /** Cadre à affixe : « 30 », seul dans un champ, ne dit pas s'il s'agit de
62
62
  * jours ou d'euros. Même grammaire que `Search` (cadre + champ nu) ; à ne
63
- * pas employer quand l'unité est déjà dans l'intitulé du champ — deux fois
63
+ * pas employer quand l'unité est déjà dans l'intitulé du champ : deux fois
64
64
  * la même unité se lisent comme deux informations. */
65
65
  export function InputAffix({ avant, apres, idAvant, idApres, className, children, ...reste }) {
66
66
  return (_jsxs("div", { className: cx('zv-affix', className), ...reste, children: [avant != null && (_jsx("span", { className: "zv-affix__add", id: idAvant, children: avant })), children, apres != null && (_jsx("span", { className: "zv-affix__add", id: idApres, children: apres }))] }));
67
67
  }
68
68
  /** Curseur natif habillé (`<input type="range">`) : clavier, annonce et
69
69
  * bornes viennent du navigateur. Le remplissage de la piste est calculé
70
- * ici depuis value/min/max — une géométrie, comme la largeur de
70
+ * ici depuis value/min/max : une géométrie, comme la largeur de
71
71
  * `Progress`, pas une valeur de charte. En NON contrôlé, il reflète la
72
72
  * valeur initiale et ne suit plus le doigt : contrôler le champ dès que le
73
73
  * remplissage doit suivre.
@@ -93,8 +93,8 @@ export function Range({ className, style, min, max, value, defaultValue, ...rest
93
93
  * l'appelant, qui est déjà un composant client puisqu'il tient la valeur du
94
94
  * champ. Le paquet ne tire pas React côté navigateur pour un champ.
95
95
  *
96
- * Le libellé du bouton change avec l'état — une icône seule ne dit pas ce qui
97
- * va se passer — et `aria-pressed` l'annonce aux lecteurs d'écran.
96
+ * Le libellé du bouton change avec l'état, une icône seule ne dit pas ce qui
97
+ * va se passer, et `aria-pressed` l'annonce aux lecteurs d'écran.
98
98
  */
99
99
  export function InputPassword({ visible, onBascule, className, ...reste }) {
100
100
  return (_jsxs("div", { className: cx('zv-affix', className), children: [_jsx("input", { type: visible ? 'text' : 'password', className: "zv-input zv-input--bare", ...reste }), onBascule && (_jsx("button", { type: "button", className: "zv-affix__btn", onClick: onBascule, "aria-pressed": visible ?? false, "aria-label": visible ? 'Masquer le mot de passe' : 'Afficher le mot de passe', title: visible ? 'Masquer le mot de passe' : 'Afficher le mot de passe', children: _jsx(Icon, { nom: visible ? 'oeil-barre' : 'oeil', taille: "sm" }) }))] }));
@@ -1,11 +1,11 @@
1
1
  export type GlypheId = 'campus' | 'lexform' | 'mcp' | 'memoire' | 'plume' | 'supernovia' | 'zevra';
2
2
  /** Les glyphes couleur des produits, inlinés en data-URI. */
3
3
  export declare const GLYPHES: Record<GlypheId, string>;
4
- /** Le mot « Zevra » — le wordmark officiel, tracé, en data-URI. */
4
+ /** Le mot « Zevra » : le wordmark officiel, tracé, en data-URI. */
5
5
  export declare const MOT_ZEVRA = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0NTMuOCAxMDAiIHJvbGU9ImltZyIgYXJpYS1sYWJlbD0iWmV2cmEiPgogIDx0aXRsZT5aZXZyYTwvdGl0bGU+CiAgPCEtLSBMZSBtb3QgWmV2cmEsIHJlbGV2w6kgc3VyIGxlIGxvY2t1cCBkJ29yaWdpbmUuIExhIGhhdXRldXIgZGUgY2FwaXRhbGUKICAgICAgIHZhdXQgMTAwIHVuaXTDqXMgOiB1bmUgaGF1dGV1ciBDU1MgcG9zw6llIHN1ciBjZSBmaWNoaWVyIEVTVCBsYSBjYXBpdGFsZSwKICAgICAgIGNlIHF1aSByZW5kIGxlcyBwcm9wb3J0aW9ucyBkdSBsb2NrdXAgY2FsY3VsYWJsZXMgKHZvaXIgLnp2LWxvY2t1cCkuIC0tPgogIDxwYXRoIGZpbGw9ImN1cnJlbnRDb2xvciIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNIDQxMy4zMSAwLjE4IEwgNDEzLjg1IDAuMTggTCA0MTQuMjEgMC4wMCBMIDQxNC43NCAwLjAwIEwgNDE1LjI4IDAuMDAgTCA0MTUuODEgMC4wMCBMIDQxNi4zNSAwLjAwIEwgNDE2Ljg4IDAuMDAgTCA0MTcuNDIgMC4wMCBMIDQxNy45NiAwLjAwIEwgNDE4LjQ5IDAuMDAgTCA0MTkuMDMgMC4wMCBMIDQxOS41NiAwLjAwIEwgNDIwLjEwIDAuMDAgTCA0MjAuNjMgMC4wMCBMIDQyMC45OSAwLjE4IEwgNDIxLjM1IDAuMzYgTCA0MjEuNzEgMC4zNiBMIDQ1My44MCA4MC4yOCBMIDQ0MS44MyA4NS4wNiBMIDQzMi41NyA2MS43NyBMIDQwMi40OSA2MS43NyBMIDM5My4xOSA4NS4wMiBMIDM4MS4yMiA4MC4zMCBaIE0gMC4xOCA4MC44OCBMIDQ4Ljg2IDEzLjIxIEwgNy4zMiAxMi44NSBMIDYuOTYgMTIuMzIgTCA2Ljk2IDExLjQzIEwgNi45NiAxMC41MyBMIDYuOTYgOS42NCBMIDYuOTYgOC43NSBMIDYuOTYgNy44NiBMIDYuOTYgNi45NiBMIDYuOTYgNi4wNyBMIDYuOTYgNS4xOCBMIDYuOTYgNC4yOCBMIDYuOTYgMy4zOSBMIDYuOTYgMi41MCBMIDYuOTYgMS42MSBMIDcuMTQgMC44OSBMIDcuMzIgMC41NCBMIDc0LjA4IDAuMTggTCAxOS41MCA3Ni4wNiBMIDYxLjA2IDc2LjU5IEwgNjEuMjQgNzcuMzEgTCA2MS40MiA3OC4wMiBMIDYxLjQyIDc4LjkxIEwgNjEuNDIgNzkuODEgTCA2MS40MiA4MC43MCBMIDYxLjQyIDgxLjU5IEwgNjEuNDIgODIuNDggTCA2MS40MiA4My4zOCBMIDYxLjQyIDg0LjI3IEwgNjEuNDIgODUuMTYgTCA2MS40MiA4Ni4wNSBMIDYxLjQyIDg2Ljk1IEwgNjEuNDIgODcuODQgTCA2MS4wNiA4OC4zOCBMIDYxLjA2IDg4LjczIEwgMC4zNiA4OC43MyBMIDAuMTggODguMzggTCAwLjAwIDg4LjAyIEwgMC4wMCA4Ny40OCBMIDAuMDAgODYuOTUgTCAwLjAwIDg2LjQxIEwgMC4wMCA4NS44OCBMIDAuMDAgODUuMzQgTCAwLjAwIDg0LjgxIEwgMC4wMCA4NC4yNyBMIDAuMDAgODMuNzMgTCAwLjAwIDgzLjIwIEwgMC4wMCA4Mi42NiBMIDAuMDAgODIuMTMgTCAwLjAwIDgxLjU5IEwgMC4xOCA4MS4yMyBaIE0gOTYuMjMgMC41NCBMIDE1MC41MSAwLjcxIEwgMTUwLjY5IDEuNDMgTCAxNTAuODYgMi4xNCBMIDE1MC44NiAzLjA0IEwgMTUwLjg2IDMuOTMgTCAxNTAuODYgNC44MiBMIDE1MC44NiA1LjcxIEwgMTUwLjg2IDYuNjEgTCAxNTAuODYgNy41MCBMIDE1MC44NiA4LjM5IEwgMTUwLjg2IDkuMjggTCAxNTAuODYgMTAuMTggTCAxNTAuODYgMTEuMDcgTCAxNTAuODYgMTEuOTYgTCAxNTAuNTEgMTIuNTAgTCAxNTAuNTEgMTIuNjggTCAxMDkuMDkgMTMuMzkgTCAxMDguNzMgMTQuODIgTCAxMDguNzMgMTYuMjUgTCAxMDguNzMgMTguMDMgTCAxMDguNzMgMTkuODIgTCAxMDguNzMgMjEuNjAgTCAxMDguNzMgMjMuMzkgTCAxMDguNzMgMjUuMTcgTCAxMDguNzMgMjYuOTYgTCAxMDguNzMgMjguNzQgTCAxMDguNzMgMzAuNTMgTCAxMDguNzMgMzIuMzIgTCAxMDguNzMgMzQuMTAgTCAxMDguNzMgMzUuODkgTCAxMDguOTEgMzcuNDkgTCAxMDkuMDkgMzguMjEgTCAxNDMuMjIgMzguMzkgTCAxNDMuMTEgNTEuMjQgTCAxMDkuMDkgNTEuNDIgTCAxMDguNzMgNTIuODUgTCAxMDguNzMgNTQuNjMgTCAxMDguNzMgNTYuNDIgTCAxMDguNzMgNTguMjAgTCAxMDguNzMgNTkuOTkgTCAxMDguNzMgNjEuNzcgTCAxMDguNzMgNjMuNTYgTCAxMDguNzMgNjUuMzQgTCAxMDguNzMgNjcuMTMgTCAxMDguNzMgNjguOTIgTCAxMDguNzMgNzAuNzAgTCAxMDguNzMgNzIuNDkgTCAxMDguNzMgNzQuMjcgTCAxMDkuMDkgNzUuNzAgTCAxMDkuMDkgNzUuODggTCAxNTAuMTUgNzYuNTkgTCAxNTAuNTEgNzcuMTMgTCAxNTAuODYgNzcuNjYgTCAxNTAuODYgNzguNTYgTCAxNTAuODYgNzkuNDUgTCAxNTAuODYgODAuMzQgTCAxNTAuODYgODEuMjMgTCAxNTAuODYgODIuMTMgTCAxNTAuODYgODMuMDIgTCAxNTAuODYgODMuOTEgTCAxNTAuODYgODQuODEgTCAxNTAuODYgODUuNzAgTCAxNTAuODYgODYuNTkgTCAxNTAuODYgODcuNDggTCAxNTAuNjkgODguMjAgTCAxNTAuNjkgODguMzggTCA5Ni40MSA4OC45MSBMIDk1Ljg3IDgzLjU2IEwgOTUuODcgNzcuMzEgTCA5NS44NyA3MS4wNiBMIDk1Ljg3IDY0LjgxIEwgOTUuODcgNTguNTYgTCA5NS44NyA1Mi4zMSBMIDk1Ljg3IDQ2LjA2IEwgOTUuODcgMzkuODEgTCA5NS44NyAzMy41NyBMIDk1Ljg3IDI3LjMyIEwgOTUuODcgMjEuMDcgTCA5NS44NyAxNC44MiBMIDk1Ljg3IDguNTcgTCA5NS44NyAyLjMyIFogTSAyODcuMjcgMC41NCBMIDI5NS44NCAwLjE4IEwgMzA0Ljc2IDAuMTggTCAzMTMuNjkgMC4xOCBMIDMyMi4yNiAwLjU0IEwgMzI5LjIyIDIuNTAgTCAzMzQuOTQgNS43MSBMIDMzOS41OCAxMC4wMCBMIDM0Mi45NyAxNS41MyBMIDM0NS40NyAyMS45NiBMIDM0NS42NSAzMC4zNSBMIDM0NC4wNCAzNy42NyBMIDM0MC42NSA0My4yMSBMIDMzNi4zNiA0Ny44NSBMIDMzMS4xOSA1MS42MCBMIDMzMC44MyA1MS45NSBMIDM1MS4zNCA3OC43MCBMIDM0MS4yMCA4Ni42MyBMIDMxNS45MyA1NC4yOCBMIDMwMC4xMiA1NC40NSBMIDI5OS43NiA1Ni4wNiBMIDI5OS43NiA1OC4wMiBMIDI5OS43NiA1OS45OSBMIDI5OS43NiA2MS45NSBMIDI5OS43NiA2My45MiBMIDI5OS43NiA2NS44OCBMIDI5OS43NiA2Ny44NCBMIDI5OS43NiA2OS44MSBMIDI5OS43NiA3MS43NyBMIDI5OS43NiA3My43NCBMIDI5OS43NiA3NS43MCBMIDI5OS43NiA3Ny42NiBMIDI5OS43NiA3OS42MyBMIDI5OS43NiA4MS41OSBMIDI5OS40MSA4Mi40OCBMIDI4Ny4yNyA4Mi40OCBMIDI4Ni45MSA3Ni45NSBMIDI4Ni45MSA3MS4wNiBMIDI4Ni45MSA2NS4xNyBMIDI4Ni45MSA1OS4yNyBMIDI4Ni45MSA1My4zOCBMIDI4Ni45MSA0Ny40OSBMIDI4Ni45MSA0MS42MCBMIDI4Ni45MSAzNS43MSBMIDI4Ni45MSAyOS44MiBMIDI4Ni45MSAyMy45MiBMIDI4Ni45MSAxOC4wMyBMIDI4Ni45MSAxMi4xNCBMIDI4Ni45MSA2LjI1IEwgMjg3LjI3IDAuNzEgWiBNIDE4NS43NSA5LjI1IEwgMTk3LjY5IDQuNDMgTCAyMjIuMDIgNjUuMzQgTCAyNDYuMzUgNC40MyBMIDI1OC4yOCA5LjI0IEwgMjIyLjAyIDEwMC4wMCBaIE0gMzAwLjEyIDEzLjU3IEwgMzAyLjgwIDEzLjIxIEwgMzA1LjgzIDEzLjIxIEwgMzA4Ljg3IDEzLjIxIEwgMzExLjkwIDEzLjIxIEwgMzE0Ljk0IDEzLjIxIEwgMzE3Ljk3IDEzLjIxIEwgMzIwLjgzIDEzLjM5IEwgMzIzLjE1IDE0LjEwIEwgMzI1LjQ3IDE0LjgyIEwgMzI3LjI2IDE2LjA3IEwgMzI4Ljg3IDE3LjUwIEwgMzMwLjI5IDE5LjEwIEwgMzMxLjU0IDIwLjg5IEwgMzMyLjQ0IDIzLjAzIEwgMzMyLjYyIDIzLjIxIEwgMzMyLjk3IDI2LjQyIEwgMzMyLjc5IDI5LjgyIEwgMzMxLjkwIDMyLjQ5IEwgMzMwLjgzIDM0Ljk5IEwgMzI5LjIyIDM2Ljk2IEwgMzI3LjI2IDM4LjU2IEwgMzI1LjEyIDM5Ljk5IEwgMzIyLjQ0IDQwLjg5IEwgMzE5LjQwIDQxLjQyIEwgMzE1LjgzIDQxLjQyIEwgMzEyLjI2IDQxLjQyIEwgMzA4LjY5IDQxLjQyIEwgMzA1LjEyIDQxLjQyIEwgMzAxLjU1IDQxLjQyIEwgMzAwLjEyIDQxLjA2IEwgMjk5Ljc2IDM5LjQ2IEwgMjk5Ljc2IDM3LjQ5IEwgMjk5Ljc2IDM1LjUzIEwgMjk5Ljc2IDMzLjU3IEwgMjk5Ljc2IDMxLjYwIEwgMjk5Ljc2IDI5LjY0IEwgMjk5Ljc2IDI3LjY3IEwgMjk5Ljc2IDI1LjcxIEwgMjk5Ljc2IDIzLjc1IEwgMjk5Ljc2IDIxLjc4IEwgMjk5Ljc2IDE5LjgyIEwgMjk5Ljc2IDE3Ljg1IEwgMjk5Ljc2IDE1Ljg5IEwgMjk5Ljk0IDE0LjEwIFogTSA0MTcuNTIgMjQuMTIgTCA0MjcuMzMgNDguNzQgTCA0MDcuNzAgNDguNzQgWiIvPgo8L3N2Zz4K";
6
6
  /** Le nom lisible de chaque produit, depuis logos/index.json. */
7
7
  export declare const NOMS_PRODUITS: Record<GlypheId, string>;
8
- /** Ce que chaque produit FAIT, en deux mots — pour le lanceur d'apps. */
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
10
  /** L'adresse des produits EN LIGNE. Partielle À DESSEIN : un produit qui n'a
11
11
  * rien à ouvrir n'entre pas dans le lanceur. */