@zevra/ui 0.4.0 → 0.6.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 +24 -0
- package/README.md +64 -1
- package/demo/index.html +33 -0
- package/dist/actions.d.ts +41 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +24 -0
- package/dist/actions.js.map +1 -0
- package/dist/catalogue.d.ts +30 -0
- package/dist/catalogue.d.ts.map +1 -0
- package/dist/catalogue.js +881 -0
- package/dist/catalogue.js.map +1 -0
- package/dist/content.d.ts +186 -0
- package/dist/content.d.ts.map +1 -0
- package/dist/content.js +122 -0
- package/dist/content.js.map +1 -0
- package/dist/css-inline.d.ts +11 -0
- package/dist/css-inline.d.ts.map +1 -0
- package/dist/css-inline.js +13 -0
- package/dist/css-inline.js.map +1 -0
- package/dist/cx.d.ts +16 -0
- package/dist/cx.d.ts.map +1 -0
- package/dist/cx.js +20 -0
- package/dist/cx.js.map +1 -0
- package/dist/data.d.ts +136 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +98 -0
- package/dist/data.js.map +1 -0
- package/dist/feedback.d.ts +88 -0
- package/dist/feedback.d.ts.map +1 -0
- package/dist/feedback.js +38 -0
- package/dist/feedback.js.map +1 -0
- package/dist/forms.d.ts +120 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +60 -0
- package/dist/forms.js.map +1 -0
- package/dist/icon-data.d.ts +6 -0
- package/dist/icon-data.d.ts.map +1 -0
- package/dist/icon-data.js +77 -0
- package/dist/icon-data.js.map +1 -0
- package/dist/icon.d.ts +33 -0
- package/dist/icon.d.ts.map +1 -0
- package/dist/icon.js +13 -0
- package/dist/icon.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/layout.d.ts +167 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +121 -0
- package/dist/layout.js.map +1 -0
- package/dist/navigation.d.ts +150 -0
- package/dist/navigation.d.ts.map +1 -0
- package/dist/navigation.js +104 -0
- package/dist/navigation.js.map +1 -0
- package/dist/overlays.d.ts +68 -0
- package/dist/overlays.d.ts.map +1 -0
- package/dist/overlays.js +114 -0
- package/dist/overlays.js.map +1 -0
- package/dist/surfaces.d.ts +61 -0
- package/dist/surfaces.d.ts.map +1 -0
- package/dist/surfaces.js +54 -0
- package/dist/surfaces.js.map +1 -0
- package/dist/typography.d.ts +89 -0
- package/dist/typography.d.ts.map +1 -0
- package/dist/typography.js +76 -0
- package/dist/typography.js.map +1 -0
- package/package.json +36 -4
- package/react/actions.tsx +138 -0
- package/react/catalogue.tsx +1752 -0
- package/react/content.tsx +417 -0
- package/react/css-inline.ts +14 -0
- package/react/cx.ts +20 -0
- package/react/data.tsx +300 -0
- package/react/feedback.tsx +229 -0
- package/react/forms.tsx +383 -0
- package/react/icon-data.ts +114 -0
- package/react/icon.tsx +84 -0
- package/react/index.ts +42 -0
- package/react/layout.tsx +348 -0
- package/react/navigation.tsx +329 -0
- package/react/overlays.tsx +237 -0
- package/react/surfaces.tsx +161 -0
- package/react/typography.tsx +220 -0
- package/src/components.css +201 -0
- package/src/layout.css +4 -0
package/DECISIONS.md
CHANGED
|
@@ -255,3 +255,27 @@ dur. Même chose pour `#8fd3a8` / `#f0a5ad`, les états sur fond sombre.
|
|
|
255
255
|
Trois rayons de surface pour un seul token : `--r-card` (16), la puce de
|
|
256
256
|
source (4px) et le rayon 18px de la carte verre de DesignSystem — ce dernier
|
|
257
257
|
ramené à `--r-card`, comme le fait Mobile.html.
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Hors relevé
|
|
263
|
+
|
|
264
|
+
### Blocs éditoriaux (0.5.0)
|
|
265
|
+
|
|
266
|
+
`zv-rows`, `zv-index` (+ `--cols`), `zv-flow`, `zv-callout` ne viennent
|
|
267
|
+
d'aucune planche : ils répondent à la règle de composition posée par la DA
|
|
268
|
+
le 24/08/2026 pour les pages du site (jamais deux blocs de même forme qui se
|
|
269
|
+
suivent, 80 % de formes différentes par page). Quatre façons de poser du
|
|
270
|
+
contenu sans carte, dessinées exclusivement dans les tokens existants.
|
|
271
|
+
`zv-flow` est la déclinaison verticale de `zv-steps` ; ses points reprennent
|
|
272
|
+
les couleurs des points de méthode, l'un des trois emplois autorisés du
|
|
273
|
+
spectre. À rejuger sur pièces si la DA en décide autrement.
|
|
274
|
+
|
|
275
|
+
### Colonnes 5 et 7 (0.5.0)
|
|
276
|
+
|
|
277
|
+
Le commentaire de `layout.css` relevait « 3+9, 8+4, 6+6 » — mais le
|
|
278
|
+
prototype `experience.html` compose toutes ses scènes produit en `span 5`
|
|
279
|
+
(glyphe) + `span 7` (discours), et c'est cette répartition qui équilibre
|
|
280
|
+
l'air entre le visuel et le texte. `zv-col-5` et `zv-col-7` complètent donc
|
|
281
|
+
le relevé ; en 4+8, le texte nage et le glyphe s'exile au bord.
|
package/README.md
CHANGED
|
@@ -50,6 +50,66 @@ unique à 768px reprend les valeurs mobiles du relevé.
|
|
|
50
50
|
Chaque valeur vient des maquettes de la passation. Là où deux planches se
|
|
51
51
|
contredisaient, l'arbitrage est écrit dans [DECISIONS.md](DECISIONS.md).
|
|
52
52
|
|
|
53
|
+
### Les composants React
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pnpm add @zevra/ui react
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
```tsx
|
|
60
|
+
import '@zevra/ui/tokens.css'
|
|
61
|
+
import '@zevra/ui/base.css'
|
|
62
|
+
import '@zevra/ui/forms.css'
|
|
63
|
+
|
|
64
|
+
import { Button, Field, Input } from '@zevra/ui/react'
|
|
65
|
+
|
|
66
|
+
<Field label="ADRESSE E-MAIL" htmlFor="mail" help="Votre adresse professionnelle.">
|
|
67
|
+
<Input id="mail" type="email" />
|
|
68
|
+
</Field>
|
|
69
|
+
<Button>Envoyer</Button>
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Ce ne sont **pas** des composants qui embarquent leur style : chacun n'est
|
|
73
|
+
qu'une façade typée et documentée au-dessus des classes `zv-`. Le CSS reste
|
|
74
|
+
la source de vérité, il s'importe à part, et un test
|
|
75
|
+
(`tests/react.test.js`) vérifie que toute classe qu'un composant peut émettre
|
|
76
|
+
existe bien dans un module CSS — c'est ce qui empêche les deux de diverger.
|
|
77
|
+
|
|
78
|
+
**Rendu serveur.** Un seul module est marqué `"use client"` : `overlays`
|
|
79
|
+
(tiroir, modale, notification), les seuls qui aient besoin du navigateur.
|
|
80
|
+
Tout le reste se rend au serveur — dans un composant serveur Next comme dans
|
|
81
|
+
une île Astro à zéro JavaScript. Les composants qui prennent un gestionnaire
|
|
82
|
+
d'événement (`Switch`, `Seg`, `Tabs`…) restent sans état : c'est un composant
|
|
83
|
+
client à toi qui détient l'état et les rend.
|
|
84
|
+
|
|
85
|
+
**Astro.** `@astrojs/react` rend ces composants en HTML statique à la
|
|
86
|
+
compilation, sans JavaScript envoyé, tant qu'aucune directive `client:*` n'est
|
|
87
|
+
posée. Un `<Button>` dans une `.astro` ne coûte donc rien de plus qu'un
|
|
88
|
+
`<button class="zv-btn">` — avec les props typées et la documentation en
|
|
89
|
+
prime. ⚠️ En revanche, un composant `.astro` ne peut pas être passé en enfant
|
|
90
|
+
d'un composant React : ce sens-là ne fonctionne pas.
|
|
91
|
+
|
|
92
|
+
**Les props sont en français**, comme le CSS et les commentaires. Celles qui
|
|
93
|
+
portent une décision de charte sont documentées à l'endroit où on les lit, et
|
|
94
|
+
les avertissements ⚠️ signalent ce qui casse le système si on le contourne —
|
|
95
|
+
pas de simples préférences.
|
|
96
|
+
|
|
97
|
+
**`className` est accepté partout**, mais c'est une sortie de secours, pas un
|
|
98
|
+
usage courant : une classe locale qui repeint un composant du système est une
|
|
99
|
+
divergence qui n'a pas dit son nom.
|
|
100
|
+
|
|
101
|
+
### Le catalogue
|
|
102
|
+
|
|
103
|
+
```tsx
|
|
104
|
+
import { CATALOGUE } from '@zevra/ui/react/catalogue'
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Chaque composant y a un exemple rendu, le code qui le produit, et le résumé de
|
|
108
|
+
ce qu'il fait — et surtout de quand ne pas l'employer. C'est ce que rend la
|
|
109
|
+
page « Design system » de l'admin, et c'est aussi le banc d'essai du test de
|
|
110
|
+
dérive : un composant sans exemple n'est ni documenté ni couvert, et le test
|
|
111
|
+
le refuse.
|
|
112
|
+
|
|
53
113
|
## Deux couches
|
|
54
114
|
|
|
55
115
|
Le paquet en porte deux, et elles ne servent pas au même usage.
|
|
@@ -167,7 +227,10 @@ Tiroir et modale s'ouvrent par un état porté sur le conteneur. Deux écritures
|
|
|
167
227
|
panneau resterait ouvert. C'est précisément pour cela que la variante en
|
|
168
228
|
classe existe.
|
|
169
229
|
|
|
170
|
-
Fermer sur Échap relève du gabarit : le CSS ne sait pas le faire.
|
|
230
|
+
Fermer sur Échap relève du gabarit : le CSS ne sait pas le faire. En React,
|
|
231
|
+
`Drawer` et `Modal` (`@zevra/ui/react`) le font déjà, avec le piège de focus,
|
|
232
|
+
la restitution du focus au bouton d'ouverture et le verrou de défilement —
|
|
233
|
+
et le hook `useOverlay` est exporté pour un enrobage maison.
|
|
171
234
|
|
|
172
235
|
## Les règles qui ne se négocient pas
|
|
173
236
|
|
package/demo/index.html
CHANGED
|
@@ -228,6 +228,39 @@
|
|
|
228
228
|
</div>
|
|
229
229
|
</section>
|
|
230
230
|
|
|
231
|
+
<!-- Blocs éditoriaux -->
|
|
232
|
+
<section class="zv-gutter demo-sec">
|
|
233
|
+
<span class="zv-kicker"><span class="zv-spec" aria-hidden="true"></span><span class="zv-mono">08 · Blocs éditoriaux</span></span>
|
|
234
|
+
<p class="zv-rule demo-note">Quatre façons de poser du contenu sans carte, pour que les grilles redeviennent un choix.</p>
|
|
235
|
+
|
|
236
|
+
<div class="zv-rows" style="margin-top:24px;max-width:760px">
|
|
237
|
+
<div class="zv-rows__row"><span class="zv-rows__key">Associés</span><span class="zv-rows__val">Vision stratégique, attentes, contraintes déontologiques.</span></div>
|
|
238
|
+
<div class="zv-rows__row"><span class="zv-rows__key">Collaborateurs</span><span class="zv-rows__val">Pratique réelle, points de friction, cas d'usage à fort impact.</span></div>
|
|
239
|
+
</div>
|
|
240
|
+
|
|
241
|
+
<div class="zv-index" style="margin-top:40px;max-width:760px">
|
|
242
|
+
<div class="zv-index__item"><span class="zv-index__num">01</span><div class="zv-index__body"><h3 class="zv-card-title">Une entrée de sommaire</h3><p class="zv-body">Le numéro en display léger, le contenu à droite, un filet entre les entrées.</p></div></div>
|
|
243
|
+
<div class="zv-index__item"><span class="zv-index__num">02</span><div class="zv-index__body"><h3 class="zv-card-title">La deuxième entrée</h3><p class="zv-body">Pour les suites longues qui étoufferaient en cartes.</p></div></div>
|
|
244
|
+
</div>
|
|
245
|
+
|
|
246
|
+
<div class="zv-index zv-index--cols" style="margin-top:40px">
|
|
247
|
+
<div class="zv-index__item"><span class="zv-index__num">01</span><div class="zv-index__body"><h3 class="zv-card-title" style="font-size:17px">En colonnes</h3><p class="zv-body zv-body--dense">La même entrée, posée en grille de trois.</p></div></div>
|
|
248
|
+
<div class="zv-index__item"><span class="zv-index__num">02</span><div class="zv-index__body"><h3 class="zv-card-title" style="font-size:17px">Sans filets</h3><p class="zv-body zv-body--dense">L'espace fait la séparation.</p></div></div>
|
|
249
|
+
<div class="zv-index__item"><span class="zv-index__num">03</span><div class="zv-index__body"><h3 class="zv-card-title" style="font-size:17px">Numéro pâle</h3><p class="zv-body zv-body--dense">L'accent-line, pour ne pas crier.</p></div></div>
|
|
250
|
+
</div>
|
|
251
|
+
|
|
252
|
+
<div class="zv-flow" style="margin-top:40px;max-width:560px">
|
|
253
|
+
<div class="zv-flow__step"><h3 class="zv-card-title">Le terrain</h3><p class="zv-rule">Le rail et ses points, à la verticale.</p></div>
|
|
254
|
+
<div class="zv-flow__step zv-flow__step--violet"><h3 class="zv-card-title">La synthèse</h3><p class="zv-rule">Pour les méthodes qui se lisent comme un récit.</p></div>
|
|
255
|
+
<div class="zv-flow__step zv-flow__step--cyan"><h3 class="zv-card-title">La restitution</h3><p class="zv-rule">Les couleurs des points de méthode.</p></div>
|
|
256
|
+
</div>
|
|
257
|
+
|
|
258
|
+
<div class="zv-callout" style="margin-top:40px">
|
|
259
|
+
<div style="display:flex;flex-direction:column;gap:6px"><span class="zv-mono zv-mono--label">Membres du Campus</span><h3 class="zv-callout__title">-30 % sur les produits Zevra <span class="zv-em">du Store.</span></h3></div>
|
|
260
|
+
<a class="zv-btn--ghost" href="#">Découvrir le Campus</a>
|
|
261
|
+
</div>
|
|
262
|
+
</section>
|
|
263
|
+
|
|
231
264
|
<!-- CTA -->
|
|
232
265
|
<section class="zv-cta zv-gutter--wide">
|
|
233
266
|
<span class="zv-halo zv-halo--cta" aria-hidden="true"></span>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { AnchorHTMLAttributes, ButtonHTMLAttributes, HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/** Variantes de bouton. Une seule pleine par écran — c'est la règle de charte. */
|
|
3
|
+
export type BoutonVariante = 'plein' | 'fantome' | 'encre';
|
|
4
|
+
export interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className'> {
|
|
5
|
+
variante?: BoutonVariante;
|
|
6
|
+
/** Hauteur réduite, pour une barre de navigation. */
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
/** Pleine largeur — l'appel à l'action d'un écran mobile. */
|
|
9
|
+
bloc?: boolean;
|
|
10
|
+
/** Échappatoire assumée. À employer pour un ajustement de position, jamais
|
|
11
|
+
* pour redéfinir une couleur ou une taille : c'est par là que les apps
|
|
12
|
+
* recommencent à écrire leur propre charte. */
|
|
13
|
+
className?: string;
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
}
|
|
16
|
+
export declare function Button({ variante, compact, bloc, className, type, ...reste }: ButtonProps): import("react").JSX.Element;
|
|
17
|
+
export interface ButtonLinkProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'className'> {
|
|
18
|
+
variante?: BoutonVariante;
|
|
19
|
+
compact?: boolean;
|
|
20
|
+
bloc?: boolean;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
/** Le même bouton, mais qui navigue. Un <a> et un <button> ne s'échangent pas :
|
|
24
|
+
* l'un ouvre dans un onglet, se copie et s'indexe, l'autre non. */
|
|
25
|
+
export declare function ButtonLink({ variante, compact, bloc, className, ...reste }: ButtonLinkProps): import("react").JSX.Element;
|
|
26
|
+
export interface ButtonRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
|
|
27
|
+
/** Empile les boutons et les étire — la disposition mobile. */
|
|
28
|
+
empile?: boolean;
|
|
29
|
+
className?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare function ButtonRow({ empile, className, ...reste }: ButtonRowProps): import("react").JSX.Element;
|
|
32
|
+
export interface LinkArrowProps extends Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'className'> {
|
|
33
|
+
/** Sur la bande manifeste, où le lien passe en blanc. */
|
|
34
|
+
surSombre?: boolean;
|
|
35
|
+
className?: string;
|
|
36
|
+
children?: ReactNode;
|
|
37
|
+
}
|
|
38
|
+
/** Lien fléché. La flèche est fournie : elle fait partie du composant, pas du
|
|
39
|
+
* contenu — la recopier à la main a produit trois tracés différents. */
|
|
40
|
+
export declare function LinkArrow({ surSombre, className, children, ...reste }: LinkArrowProps): import("react").JSX.Element;
|
|
41
|
+
//# sourceMappingURL=actions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../react/actions.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,SAAS,EACV,MAAM,OAAO,CAAA;AAGd,kFAAkF;AAClF,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAA;AAQ1D,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAClE,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,qDAAqD;IACrD,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;;oDAEgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,wBAAgB,MAAM,CAAC,EACrB,QAAkB,EAClB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,IAAe,EACf,GAAG,KAAK,EACT,EAAE,WAAW,+BAab;AAED,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAClE,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;oEACoE;AACpE,wBAAgB,UAAU,CAAC,EACzB,QAAkB,EAClB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,eAAe,+BAYjB;AAED,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,WAAW,CAAC;IACzD,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,+BAOxE;AAED,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC;IAClE,yDAAyD;IACzD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED;yEACyE;AACzE,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,+BAiBhB"}
|
package/dist/actions.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cx } from './cx.js';
|
|
3
|
+
const VARIANTE_BOUTON = {
|
|
4
|
+
plein: 'zv-btn',
|
|
5
|
+
fantome: 'zv-btn--ghost',
|
|
6
|
+
encre: 'zv-btn--ink',
|
|
7
|
+
};
|
|
8
|
+
export function Button({ variante = 'plein', compact, bloc, className, type = 'button', ...reste }) {
|
|
9
|
+
return (_jsx("button", { type: type, className: cx(VARIANTE_BOUTON[variante], compact && 'zv-btn--sm', bloc && 'zv-btn--block', className), ...reste }));
|
|
10
|
+
}
|
|
11
|
+
/** Le même bouton, mais qui navigue. Un <a> et un <button> ne s'échangent pas :
|
|
12
|
+
* l'un ouvre dans un onglet, se copie et s'indexe, l'autre non. */
|
|
13
|
+
export function ButtonLink({ variante = 'plein', compact, bloc, className, ...reste }) {
|
|
14
|
+
return (_jsx("a", { className: cx(VARIANTE_BOUTON[variante], compact && 'zv-btn--sm', bloc && 'zv-btn--block', className), ...reste }));
|
|
15
|
+
}
|
|
16
|
+
export function ButtonRow({ empile, className, ...reste }) {
|
|
17
|
+
return (_jsx("div", { className: cx('zv-btn-row', empile && 'zv-btn-row--stack', className), ...reste }));
|
|
18
|
+
}
|
|
19
|
+
/** Lien fléché. La flèche est fournie : elle fait partie du composant, pas du
|
|
20
|
+
* contenu — la recopier à la main a produit trois tracés différents. */
|
|
21
|
+
export function LinkArrow({ surSombre, className, children, ...reste }) {
|
|
22
|
+
return (_jsxs("a", { className: cx('zv-link-arrow', surSombre && 'zv-link-arrow--on-dark', className), ...reste, children: [children, _jsxs("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: [_jsx("path", { d: "M5 12h14" }), _jsx("path", { d: "M13 6l6 6-6 6" })] })] }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"actions.js","sourceRoot":"","sources":["../react/actions.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,EAAE,EAAE,MAAM,SAAS,CAAA;AAK5B,MAAM,eAAe,GAAmC;IACtD,KAAK,EAAE,QAAQ;IACf,OAAO,EAAE,eAAe;IACxB,KAAK,EAAE,aAAa;CACrB,CAAA;AAgBD,MAAM,UAAU,MAAM,CAAC,EACrB,QAAQ,GAAG,OAAO,EAClB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,GAAG,KAAK,EACI;IACZ,OAAO,CACL,iBACE,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CACX,eAAe,CAAC,QAAQ,CAAC,EACzB,OAAO,IAAI,YAAY,EACvB,IAAI,IAAI,eAAe,EACvB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAUD;oEACoE;AACpE,MAAM,UAAU,UAAU,CAAC,EACzB,QAAQ,GAAG,OAAO,EAClB,OAAO,EACP,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACQ;IAChB,OAAO,CACL,YACE,SAAS,EAAE,EAAE,CACX,eAAe,CAAC,QAAQ,CAAC,EACzB,OAAO,IAAI,YAAY,EACvB,IAAI,IAAI,eAAe,EACvB,SAAS,CACV,KACG,KAAK,GACT,CACH,CAAA;AACH,CAAC;AASD,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,EAAkB;IACvE,OAAO,CACL,cACE,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,MAAM,IAAI,mBAAmB,EAAE,SAAS,CAAC,KACjE,KAAK,GACT,CACH,CAAA;AACH,CAAC;AAUD;yEACyE;AACzE,MAAM,UAAU,SAAS,CAAC,EACxB,SAAS,EACT,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACO;IACf,OAAO,CACL,aACE,SAAS,EAAE,EAAE,CACX,eAAe,EACf,SAAS,IAAI,wBAAwB,EACrC,SAAS,CACV,KACG,KAAK,aAER,QAAQ,EACT,eAAK,OAAO,EAAC,WAAW,iBAAa,MAAM,aACzC,eAAM,CAAC,EAAC,UAAU,GAAG,EACrB,eAAM,CAAC,EAAC,eAAe,GAAG,IACtB,IACJ,CACL,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
export interface Exemple {
|
|
3
|
+
/** Identifiant stable — sert d'ancre dans la page de consultation. */
|
|
4
|
+
id: string;
|
|
5
|
+
nom: string;
|
|
6
|
+
/** Ce que le composant fait, et surtout quand NE PAS l'employer. */
|
|
7
|
+
resume: string;
|
|
8
|
+
/** Le code qui produit `rendu`, à copier tel quel. */
|
|
9
|
+
code: string;
|
|
10
|
+
rendu: ReactNode;
|
|
11
|
+
/** Rendu sur la bande manifeste plutôt que sur papier. */
|
|
12
|
+
surSombre?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface GroupeCatalogue {
|
|
15
|
+
id: string;
|
|
16
|
+
nom: string;
|
|
17
|
+
resume: string;
|
|
18
|
+
/** `applicatif` : interfaces internes. `vitrine` : pages publiques.
|
|
19
|
+
* `commun` : les deux. */
|
|
20
|
+
couche: 'commun' | 'applicatif' | 'vitrine';
|
|
21
|
+
/** Le module CSS à charger pour ce groupe. */
|
|
22
|
+
css: string;
|
|
23
|
+
exemples: Exemple[];
|
|
24
|
+
}
|
|
25
|
+
export declare const CATALOGUE: GroupeCatalogue[];
|
|
26
|
+
/** Tous les exemples à plat — pratique pour une recherche ou un test. */
|
|
27
|
+
export declare const EXEMPLES: (Exemple & {
|
|
28
|
+
groupe: string;
|
|
29
|
+
})[];
|
|
30
|
+
//# sourceMappingURL=catalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../react/catalogue.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAqChD,MAAM,WAAW,OAAO;IACtB,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,SAAS,CAAA;IAChB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,MAAM,CAAA;IACd;+BAC2B;IAC3B,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,CAAA;IAC3C,8CAA8C;IAC9C,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AA0JD,eAAO,MAAM,SAAS,EAAE,eAAe,EAw+CtC,CAAA;AAMD,yEAAyE;AACzE,eAAO,MAAM,QAAQ,EAAE,CAAC,OAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,EAEpD,CAAA"}
|