@zevra/ui 0.3.2 → 0.5.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 (143) hide show
  1. package/DECISIONS.md +25 -0
  2. package/README.md +83 -11
  3. package/dist/actions.d.ts +41 -0
  4. package/dist/actions.d.ts.map +1 -0
  5. package/dist/actions.js +24 -0
  6. package/dist/actions.js.map +1 -0
  7. package/dist/catalogue.d.ts +30 -0
  8. package/dist/catalogue.d.ts.map +1 -0
  9. package/dist/catalogue.js +830 -0
  10. package/dist/catalogue.js.map +1 -0
  11. package/dist/content.d.ts +135 -0
  12. package/dist/content.d.ts.map +1 -0
  13. package/dist/content.js +85 -0
  14. package/dist/content.js.map +1 -0
  15. package/dist/css-inline.d.ts +11 -0
  16. package/dist/css-inline.d.ts.map +1 -0
  17. package/dist/css-inline.js +13 -0
  18. package/dist/css-inline.js.map +1 -0
  19. package/dist/cx.d.ts +16 -0
  20. package/dist/cx.d.ts.map +1 -0
  21. package/dist/cx.js +20 -0
  22. package/dist/cx.js.map +1 -0
  23. package/dist/data.d.ts +136 -0
  24. package/dist/data.d.ts.map +1 -0
  25. package/dist/data.js +98 -0
  26. package/dist/data.js.map +1 -0
  27. package/dist/feedback.d.ts +88 -0
  28. package/dist/feedback.d.ts.map +1 -0
  29. package/dist/feedback.js +38 -0
  30. package/dist/feedback.js.map +1 -0
  31. package/dist/forms.d.ts +120 -0
  32. package/dist/forms.d.ts.map +1 -0
  33. package/dist/forms.js +60 -0
  34. package/dist/forms.js.map +1 -0
  35. package/dist/icon-data.d.ts +6 -0
  36. package/dist/icon-data.d.ts.map +1 -0
  37. package/dist/icon-data.js +77 -0
  38. package/dist/icon-data.js.map +1 -0
  39. package/dist/icon.d.ts +33 -0
  40. package/dist/icon.d.ts.map +1 -0
  41. package/dist/icon.js +13 -0
  42. package/dist/icon.js.map +1 -0
  43. package/dist/index.d.ts +13 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +41 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/layout.d.ts +166 -0
  48. package/dist/layout.d.ts.map +1 -0
  49. package/dist/layout.js +120 -0
  50. package/dist/layout.js.map +1 -0
  51. package/dist/navigation.d.ts +150 -0
  52. package/dist/navigation.d.ts.map +1 -0
  53. package/dist/navigation.js +104 -0
  54. package/dist/navigation.js.map +1 -0
  55. package/dist/overlays.d.ts +68 -0
  56. package/dist/overlays.d.ts.map +1 -0
  57. package/dist/overlays.js +114 -0
  58. package/dist/overlays.js.map +1 -0
  59. package/dist/surfaces.d.ts +61 -0
  60. package/dist/surfaces.d.ts.map +1 -0
  61. package/dist/surfaces.js +54 -0
  62. package/dist/surfaces.js.map +1 -0
  63. package/dist/typography.d.ts +89 -0
  64. package/dist/typography.d.ts.map +1 -0
  65. package/dist/typography.js +76 -0
  66. package/dist/typography.js.map +1 -0
  67. package/logos/index.json +10 -500
  68. package/package.json +36 -4
  69. package/react/actions.tsx +138 -0
  70. package/react/catalogue.tsx +1644 -0
  71. package/react/content.tsx +313 -0
  72. package/react/css-inline.ts +14 -0
  73. package/react/cx.ts +20 -0
  74. package/react/data.tsx +300 -0
  75. package/react/feedback.tsx +229 -0
  76. package/react/forms.tsx +383 -0
  77. package/react/icon-data.ts +114 -0
  78. package/react/icon.tsx +84 -0
  79. package/react/index.ts +42 -0
  80. package/react/layout.tsx +347 -0
  81. package/react/navigation.tsx +329 -0
  82. package/react/overlays.tsx +237 -0
  83. package/react/surfaces.tsx +161 -0
  84. package/react/typography.tsx +220 -0
  85. package/logos/png/campus-glyph-ink.png +0 -0
  86. package/logos/png/campus-glyph-white.png +0 -0
  87. package/logos/png/campus-lockup.png +0 -0
  88. package/logos/png/lexform-glyph-ink.png +0 -0
  89. package/logos/png/lexform-glyph-white.png +0 -0
  90. package/logos/png/lexform-lockup.png +0 -0
  91. package/logos/png/mcp-glyph-ink.png +0 -0
  92. package/logos/png/mcp-glyph-white.png +0 -0
  93. package/logos/png/mcp-lockup.png +0 -0
  94. package/logos/png/memoire-dark.png +0 -0
  95. package/logos/png/memoire-glyph-ink.png +0 -0
  96. package/logos/png/memoire-glyph-white.png +0 -0
  97. package/logos/png/memoire-lockup.png +0 -0
  98. package/logos/png/zevra-lockup-ink.png +0 -0
  99. package/logos/png/zevra-lockup-white.png +0 -0
  100. package/logos/png/zevra-lockup.png +0 -0
  101. package/logos/png/zevra-mark-ink.png +0 -0
  102. package/logos/png/zevra-mark-white.png +0 -0
  103. package/logos/png/zevra-mark.png +0 -0
  104. package/logos/svg/campus-glyph-ink.svg +0 -1
  105. package/logos/svg/campus-glyph-navy.svg +0 -1
  106. package/logos/svg/campus-glyph-orig.svg +0 -1
  107. package/logos/svg/campus-glyph-white.svg +0 -1
  108. package/logos/svg/campus-lockup-ink.svg +0 -1
  109. package/logos/svg/campus-lockup-navy.svg +0 -1
  110. package/logos/svg/campus-lockup-orig.svg +0 -1
  111. package/logos/svg/campus-lockup-white.svg +0 -1
  112. package/logos/svg/lexform-glyph-ink.svg +0 -1
  113. package/logos/svg/lexform-glyph-navy.svg +0 -1
  114. package/logos/svg/lexform-glyph-orig.svg +0 -1
  115. package/logos/svg/lexform-glyph-white.svg +0 -1
  116. package/logos/svg/lexform-lockup-ink.svg +0 -1
  117. package/logos/svg/lexform-lockup-navy.svg +0 -1
  118. package/logos/svg/lexform-lockup-orig.svg +0 -1
  119. package/logos/svg/lexform-lockup-white.svg +0 -1
  120. package/logos/svg/mcp-glyph-ink.svg +0 -1
  121. package/logos/svg/mcp-glyph-navy.svg +0 -1
  122. package/logos/svg/mcp-glyph-orig.svg +0 -1
  123. package/logos/svg/mcp-glyph-white.svg +0 -1
  124. package/logos/svg/mcp-lockup-ink.svg +0 -1
  125. package/logos/svg/mcp-lockup-navy.svg +0 -1
  126. package/logos/svg/mcp-lockup-orig.svg +0 -1
  127. package/logos/svg/mcp-lockup-white.svg +0 -1
  128. package/logos/svg/memoire-glyph-ink.svg +0 -1
  129. package/logos/svg/memoire-glyph-navy.svg +0 -1
  130. package/logos/svg/memoire-glyph-orig.svg +0 -1
  131. package/logos/svg/memoire-glyph-white.svg +0 -1
  132. package/logos/svg/memoire-lockup-ink.svg +0 -1
  133. package/logos/svg/memoire-lockup-navy.svg +0 -1
  134. package/logos/svg/memoire-lockup-orig.svg +0 -1
  135. package/logos/svg/memoire-lockup-white.svg +0 -1
  136. package/logos/svg/zevra-lockup-ink.svg +0 -1
  137. package/logos/svg/zevra-lockup-navy.svg +0 -1
  138. package/logos/svg/zevra-lockup-orig.svg +0 -1
  139. package/logos/svg/zevra-lockup-white.svg +0 -1
  140. package/logos/svg/zevra-mark-ink.svg +0 -1
  141. package/logos/svg/zevra-mark-navy.svg +0 -1
  142. package/logos/svg/zevra-mark-orig.svg +0 -1
  143. package/logos/svg/zevra-mark-white.svg +0 -1
package/dist/data.d.ts ADDED
@@ -0,0 +1,136 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ type Div = Omit<HTMLAttributes<HTMLDivElement>, 'className'>;
3
+ type Span = Omit<HTMLAttributes<HTMLSpanElement>, 'className'>;
4
+ export interface TableProps extends Div {
5
+ /** Gabarit de colonnes, en syntaxe `grid-template-columns`
6
+ * (ex. `'minmax(0,2fr) 120px 90px'`). Hérité par l'en-tête et les lignes. */
7
+ gabarit?: string;
8
+ className?: string;
9
+ }
10
+ /** Le tableau défile DANS son cadre : sans ce confinement, une colonne trop
11
+ * large fait défiler la page entière et le rail de navigation part avec. */
12
+ export declare function Table({ gabarit, className, style, ...reste }: TableProps): import("react").JSX.Element;
13
+ export interface TableHeadProps extends Div {
14
+ /** En-tête en retrait, pour un tableau posé dans une carte. */
15
+ inset?: boolean;
16
+ className?: string;
17
+ }
18
+ export declare function TableHead({ inset, className, ...reste }: TableHeadProps): import("react").JSX.Element;
19
+ export interface RowProps extends Div {
20
+ /** Rend la rangée comme un lien : la cible entière devient cliquable, ce
21
+ * qu'un `onClick` sur un `<div>` ne donne jamais (ni clavier, ni ouverture
22
+ * dans un nouvel onglet). */
23
+ href?: string;
24
+ className?: string;
25
+ }
26
+ export declare function Row({ href, className, ...reste }: RowProps): import("react").JSX.Element;
27
+ export interface CellProps extends Div {
28
+ /** `nom` : la colonne d'identité, la seule en encre pleine.
29
+ * `num` : chiffres alignés à droite, en chasse tabulaire. */
30
+ registre?: 'nom' | 'num';
31
+ /** Intitulé qui REMPLACE l'en-tête quand celui-ci disparaît (mobile). */
32
+ label?: ReactNode;
33
+ /** Unité accolée au nombre, en plus petit. */
34
+ unite?: ReactNode;
35
+ className?: string;
36
+ children?: ReactNode;
37
+ }
38
+ export declare function Cell({ registre, label, unite, className, children, ...reste }: CellProps): import("react").JSX.Element;
39
+ /** Groupe deux ou trois cellules pour l'empilement mobile, puis s'efface
40
+ * (`display: contents`) et rend ses enfants DIRECTEMENT à la grille.
41
+ * ⚠️ N'exprime QUE ce sens-là : le mouvement inverse (pile au-dessus du
42
+ * seuil, colonnes en dessous) n'est pas cette classe. */
43
+ export declare function Unwrap({ className, ...reste }: Div & {
44
+ className?: string;
45
+ }): import("react").JSX.Element;
46
+ export declare function List({ className, ...reste }: Div & {
47
+ className?: string;
48
+ }): import("react").JSX.Element;
49
+ export interface ListRowProps extends Div {
50
+ /** Rangée de dépôt en cours : gabarit propre à l'écran d'import. */
51
+ upload?: boolean;
52
+ className?: string;
53
+ }
54
+ export declare function ListRow({ upload, className, ...reste }: ListRowProps): import("react").JSX.Element;
55
+ export declare function ListMain({ className, ...reste }: Div & {
56
+ className?: string;
57
+ }): import("react").JSX.Element;
58
+ export declare function ListName({ className, ...reste }: Span & {
59
+ className?: string;
60
+ }): import("react").JSX.Element;
61
+ export interface MetaProps extends Span {
62
+ taille?: 'sm' | 'normal' | 'md';
63
+ /** Encore plus effacée : contexte de second plan. */
64
+ discret?: boolean;
65
+ className?: string;
66
+ }
67
+ /** Second registre mono du système, en BAS DE CASSE : taille de fichier,
68
+ * date, horodatage, latence. Ni capitales ni interlettrage — c'est ce qui le
69
+ * distingue de `Tag` et `Mono`, et une date en capitales espacées devient
70
+ * illisible. */
71
+ export declare function Meta({ taille, discret, className, ...reste }: MetaProps): import("react").JSX.Element;
72
+ export declare function MetaRow({ className, ...reste }: Div & {
73
+ className?: string;
74
+ }): import("react").JSX.Element;
75
+ export interface KVProps extends Div {
76
+ /** `grid` : deux colonnes alignées. `foot` : bloc de pied de fiche. */
77
+ variante?: 'grid' | 'foot';
78
+ className?: string;
79
+ }
80
+ export declare function KV({ variante, className, ...reste }: KVProps): import("react").JSX.Element;
81
+ export interface KVRowProps extends Div {
82
+ /** ⚠️ La CLÉ est en mono, en accent, et se coupe ; la VALEUR est en texte
83
+ * courant, en gris, et ne se coupe jamais. Inverser les deux change ce que
84
+ * l'œil balaie en premier dans une colonne de métadonnées. */
85
+ cle: ReactNode;
86
+ className?: string;
87
+ children?: ReactNode;
88
+ }
89
+ export declare function KVRow({ cle, className, children, ...reste }: KVRowProps): import("react").JSX.Element;
90
+ export interface AvatarProps extends Span {
91
+ /** ⚠️ La teinte dit la NATURE de l'entité, elle n'est pas décorative :
92
+ * la changer, c'est changer le sens. */
93
+ ton?: 'accent' | 'ink' | 'soft';
94
+ petit?: boolean;
95
+ className?: string;
96
+ }
97
+ /** CARRÉE, jamais ronde : le rond est un usage de réseau social, l'encre et
98
+ * le papier posent des blocs. */
99
+ export declare function Avatar({ ton, petit, className, ...reste }: AvatarProps): import("react").JSX.Element;
100
+ /** Coupe sur une ligne avec des points de suspension. Jamais interchangeable
101
+ * avec `Break`, qui revient à la ligne. */
102
+ export declare function Trunc({ className, ...reste }: Span & {
103
+ className?: string;
104
+ }): import("react").JSX.Element;
105
+ /** Revient à la ligne au milieu d'un mot : jetons, URLs, chemins. */
106
+ export declare function Break({ className, ...reste }: Span & {
107
+ className?: string;
108
+ }): import("react").JSX.Element;
109
+ export interface ChipProps extends Span {
110
+ /** `mono` : identifiant, code. `outline` : filet au lieu du fond. */
111
+ variante?: 'mono' | 'outline';
112
+ className?: string;
113
+ }
114
+ /** Étiquette NON porteuse d'alerte : nature d'entité, matière, mot-clé.
115
+ * À ne pas confondre avec `Badge` (couleur sémantique) ni `Tag` (kicker
116
+ * éditorial). Une catégorie n'a pas à crier. */
117
+ export declare function Chip({ variante, className, ...reste }: ChipProps): import("react").JSX.Element;
118
+ export declare function ChipRow({ className, ...reste }: Div & {
119
+ className?: string;
120
+ }): import("react").JSX.Element;
121
+ export declare function Cite({ className, ...reste }: Omit<HTMLAttributes<HTMLButtonElement>, 'className'> & {
122
+ className?: string;
123
+ }): import("react").JSX.Element;
124
+ export declare function CiteRow({ className, ...reste }: Div & {
125
+ className?: string;
126
+ }): import("react").JSX.Element;
127
+ export interface FileTypeProps extends Span {
128
+ /** Règle de choix relevée : DOCX si le type MIME contient « word »,
129
+ * PDF sinon. Les couleurs ne viennent PAS de la charte — ce sont celles
130
+ * que le monde associe à ces formats. */
131
+ format: 'pdf' | 'docx';
132
+ className?: string;
133
+ }
134
+ export declare function FileType({ format, className, ...reste }: FileTypeProps): import("react").JSX.Element;
135
+ export {};
136
+ //# sourceMappingURL=data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../react/data.tsx"],"names":[],"mappings":"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"}
package/dist/data.js ADDED
@@ -0,0 +1,98 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cx } from './cx.js';
3
+ /** `--zv-cols` est un PARAMÈTRE de grille, pas un token de marque : il se
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
6
+ * endroits, on l'oublie à l'un et les intitulés se décalent des valeurs
7
+ * sans que rien ne casse visiblement. */
8
+ function cols(gabarit, style) {
9
+ return gabarit ? { ...style, ['--zv-cols']: gabarit } : style;
10
+ }
11
+ /** Le tableau défile DANS son cadre : sans ce confinement, une colonne trop
12
+ * large fait défiler la page entière et le rail de navigation part avec. */
13
+ export function Table({ gabarit, className, style, ...reste }) {
14
+ return (_jsx("div", { className: cx('zv-table', className), style: cols(gabarit, style), ...reste }));
15
+ }
16
+ export function TableHead({ inset, className, ...reste }) {
17
+ return (_jsx("div", { className: cx('zv-table__head', inset && 'zv-table__head--inset', className), ...reste }));
18
+ }
19
+ export function Row({ href, className, ...reste }) {
20
+ if (href) {
21
+ return (_jsx("a", { href: href, className: cx('zv-row', className), ...reste }));
22
+ }
23
+ return _jsx("div", { className: cx('zv-row', className), ...reste });
24
+ }
25
+ export function Cell({ registre, label, unite, className, children, ...reste }) {
26
+ return (_jsxs("div", { className: cx('zv-cell', registre === 'nom' && 'zv-cell--name', registre === 'num' && 'zv-cell--num', className), ...reste, children: [label && _jsx("span", { className: "zv-cell__label", children: label }), children, unite && _jsx("span", { className: "zv-cell__unit", children: unite })] }));
27
+ }
28
+ /** Groupe deux ou trois cellules pour l'empilement mobile, puis s'efface
29
+ * (`display: contents`) et rend ses enfants DIRECTEMENT à la grille.
30
+ * ⚠️ N'exprime QUE ce sens-là : le mouvement inverse (pile au-dessus du
31
+ * seuil, colonnes en dessous) n'est pas cette classe. */
32
+ export function Unwrap({ className, ...reste }) {
33
+ return _jsx("div", { className: cx('zv-unwrap', className), ...reste });
34
+ }
35
+ /* ─── Liste sans colonnes ──────────────────────────────────────────── */
36
+ export function List({ className, ...reste }) {
37
+ return _jsx("div", { className: cx('zv-list', className), ...reste });
38
+ }
39
+ export function ListRow({ upload, className, ...reste }) {
40
+ return (_jsx("div", { className: cx('zv-list__row', upload && 'zv-list__row--upload', className), ...reste }));
41
+ }
42
+ export function ListMain({ className, ...reste }) {
43
+ return _jsx("div", { className: cx('zv-list__main', className), ...reste });
44
+ }
45
+ export function ListName({ className, ...reste }) {
46
+ return _jsx("span", { className: cx('zv-list__name', className), ...reste });
47
+ }
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
50
+ * distingue de `Tag` et `Mono`, et une date en capitales espacées devient
51
+ * illisible. */
52
+ export function Meta({ taille = 'normal', discret, className, ...reste }) {
53
+ return (_jsx("span", { className: cx('zv-meta', taille === 'sm' && 'zv-meta--sm', taille === 'md' && 'zv-meta--md', discret && 'zv-meta--quiet', className), ...reste }));
54
+ }
55
+ export function MetaRow({ className, ...reste }) {
56
+ return _jsx("div", { className: cx('zv-meta-row', className), ...reste });
57
+ }
58
+ export function KV({ variante, className, ...reste }) {
59
+ return (_jsx("div", { className: cx('zv-kv', variante && `zv-kv--${variante}`, className), ...reste }));
60
+ }
61
+ export function KVRow({ cle, className, children, ...reste }) {
62
+ return (_jsxs("div", { className: cx('zv-kv__row', className), ...reste, children: [_jsx("span", { className: "zv-kv__key", children: cle }), _jsx("span", { className: "zv-kv__val", children: children })] }));
63
+ }
64
+ /** CARRÉE, jamais ronde : le rond est un usage de réseau social, l'encre et
65
+ * le papier posent des blocs. */
66
+ export function Avatar({ ton, petit, className, ...reste }) {
67
+ return (_jsx("span", { "aria-hidden": "true", className: cx('zv-avatar', ton && `zv-avatar--${ton}`, petit && 'zv-avatar--sm', className), ...reste }));
68
+ }
69
+ /* ─── Troncature ───────────────────────────────────────────────────── */
70
+ /** Coupe sur une ligne avec des points de suspension. Jamais interchangeable
71
+ * avec `Break`, qui revient à la ligne. */
72
+ export function Trunc({ className, ...reste }) {
73
+ return _jsx("span", { className: cx('zv-trunc', className), ...reste });
74
+ }
75
+ /** Revient à la ligne au milieu d'un mot : jetons, URLs, chemins. */
76
+ export function Break({ className, ...reste }) {
77
+ return _jsx("span", { className: cx('zv-break', className), ...reste });
78
+ }
79
+ /** Étiquette NON porteuse d'alerte : nature d'entité, matière, mot-clé.
80
+ * À ne pas confondre avec `Badge` (couleur sémantique) ni `Tag` (kicker
81
+ * éditorial). Une catégorie n'a pas à crier. */
82
+ export function Chip({ variante, className, ...reste }) {
83
+ return (_jsx("span", { className: cx('zv-chip', variante && `zv-chip--${variante}`, className), ...reste }));
84
+ }
85
+ export function ChipRow({ className, ...reste }) {
86
+ return _jsx("div", { className: cx('zv-chip-row', className), ...reste });
87
+ }
88
+ /* ─── Citation ─────────────────────────────────────────────────────── */
89
+ export function Cite({ className, ...reste }) {
90
+ return _jsx("button", { type: "button", className: cx('zv-cite', className), ...reste });
91
+ }
92
+ export function CiteRow({ className, ...reste }) {
93
+ return _jsx("div", { className: cx('zv-cite-row', className), ...reste });
94
+ }
95
+ export function FileType({ format, className, ...reste }) {
96
+ return (_jsx("span", { className: cx('zv-filetype', `zv-filetype--${format}`, className), ...reste, children: format.toUpperCase() }));
97
+ }
98
+ //# sourceMappingURL=data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../react/data.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ type Div = Omit<HTMLAttributes<HTMLDivElement>, 'className'>;
3
+ type Span = Omit<HTMLAttributes<HTMLSpanElement>, 'className'>;
4
+ export type AlertTon = 'info' | 'ok' | 'warn' | 'err' | 'dash';
5
+ export interface AlertProps extends Div {
6
+ /** OBLIGATOIRE : sans ton, le bandeau hérite d'un filet en `currentColor`,
7
+ * soit un trait d'encre autour d'un fond blanc. */
8
+ ton: AlertTon;
9
+ /** `sm` resserre, `lg` amplifie — ce dernier pour le message qui REMPLACE
10
+ * un contenu attendu (incident, réponse impossible). */
11
+ taille?: 'sm' | 'normal' | 'lg';
12
+ className?: string;
13
+ }
14
+ export declare function Alert({ ton, taille, className, ...reste }: AlertProps): import("react").JSX.Element;
15
+ export type BadgeTon = 'neutre' | 'accent' | 'ok' | 'warn' | 'err';
16
+ export interface BadgeProps extends Span {
17
+ ton?: BadgeTon;
18
+ /** `micro` : niveau de log en tête de ligne, badge de coque.
19
+ * `state` : état de service (OK / CHARGE). */
20
+ gabarit?: 'micro' | 'state';
21
+ /** Pastille en tête, de la couleur du texte. */
22
+ pastille?: boolean;
23
+ className?: string;
24
+ children?: ReactNode;
25
+ }
26
+ /** Le libellé s'écrit EN CAPITALES dans le contenu, pas en CSS : transformé
27
+ * par le navigateur, « INDEXÉ » se casse selon la locale. */
28
+ export declare function Badge({ ton, gabarit, pastille, className, children, ...reste }: BadgeProps): import("react").JSX.Element;
29
+ export type DotEtat = 'recu' | 'ocr' | 'indexation' | 'indexe' | 'ok' | 'erreur';
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. */
33
+ etat?: DotEtat;
34
+ taille?: 'sm' | 'normal' | 'lg';
35
+ /** CARRÉE : marque une SOURCE, pas un état. Ne pas uniformiser. */
36
+ carree?: boolean;
37
+ className?: string;
38
+ }
39
+ export declare function Dot({ etat, taille, carree, className, ...reste }: DotProps): import("react").JSX.Element;
40
+ export interface StatusProps extends Div {
41
+ etat?: DotEtat;
42
+ /** Le message d'erreur REMPLACE le libellé quand il y en a un :
43
+ * l'utilisateur veut lire la cause, pas le mot « Erreur ». */
44
+ children?: ReactNode;
45
+ className?: string;
46
+ }
47
+ export declare function Status({ etat, className, children, ...reste }: StatusProps): import("react").JSX.Element;
48
+ export interface EmptyProps extends Div {
49
+ /** ⚠️ DEUX OBJETS DISTINCTS. Sans `titre` c'est la LIGNE d'absence : un
50
+ * filtre trop étroit, la collection existe, l'en-tête du tableau reste
51
+ * visible. Avec `titre` et `page`, c'est l'ÉCRAN d'absence : la collection
52
+ * est vide et il faut lui offrir une porte de sortie. Les confondre
53
+ * affiche un écran de bienvenue à chaque filtre trop strict. */
54
+ titre?: ReactNode;
55
+ page?: boolean;
56
+ /** L'action qui remplira la collection. Réservée à l'écran d'absence. */
57
+ action?: ReactNode;
58
+ className?: string;
59
+ children?: ReactNode;
60
+ }
61
+ export declare function Empty({ titre, page, action, className, children, ...reste }: EmptyProps): import("react").JSX.Element;
62
+ export interface LoadingProps extends Div {
63
+ className?: string;
64
+ children?: ReactNode;
65
+ }
66
+ /** Pastille + phrase qui dit le travail réel (« Recherche dans 4 812
67
+ * documents anonymisés… »). STATIQUE : la pastille ne bat pas, et lui
68
+ * ajouter un pouls est l'invention la plus tentante du système. */
69
+ export declare function Loading({ className, children, ...reste }: LoadingProps): import("react").JSX.Element;
70
+ /** Bloc collé à la fin d'un texte en cours de diffusion, sur le DERNIER
71
+ * message seulement : sans lui, une réponse coupée à mi-phrase se lit comme
72
+ * une réponse complète et fausse. */
73
+ export declare function Caret({ className, ...reste }: Span & {
74
+ className?: string;
75
+ }): import("react").JSX.Element;
76
+ export interface ProgressProps extends Div {
77
+ /** Entre 0 et 1. Hors bornes, la valeur est ramenée dedans : une barre à
78
+ * 140 % déborde de son cadre. */
79
+ valeur: number;
80
+ /** Ce que la barre mesure — annoncé, jamais dessiné. */
81
+ label?: string;
82
+ className?: string;
83
+ }
84
+ /** Deuxième des trois emplois autorisés du spectre (avec le filet de section
85
+ * et les points de méthode). Jamais en fond, jamais en texte. */
86
+ export declare function Progress({ valeur, label, className, ...reste }: ProgressProps): import("react").JSX.Element;
87
+ export {};
88
+ //# sourceMappingURL=feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../react/feedback.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cx } from './cx.js';
3
+ export function Alert({ ton, taille = 'normal', className, ...reste }) {
4
+ return (_jsx("div", { role: "alert", className: cx('zv-alert', `zv-alert--${ton}`, taille === 'sm' && 'zv-alert--sm', taille === 'lg' && 'zv-alert--lg', className), ...reste }));
5
+ }
6
+ /** Le libellé s'écrit EN CAPITALES dans le contenu, pas en CSS : transformé
7
+ * par le navigateur, « INDEXÉ » se casse selon la locale. */
8
+ export function Badge({ ton = 'neutre', gabarit, pastille, className, children, ...reste }) {
9
+ return (_jsxs("span", { className: cx('zv-badge', `zv-badge--${ton}`, gabarit === 'micro' && 'zv-badge--micro', gabarit === 'state' && 'zv-badge--state', pastille && 'zv-badge--dot', className), ...reste, children: [pastille && _jsx("span", { className: "zv-dot", "aria-hidden": "true" }), children] }));
10
+ }
11
+ export function Dot({ etat, taille = 'normal', carree, className, ...reste }) {
12
+ return (_jsx("span", { "aria-hidden": "true", className: cx('zv-dot', etat && `zv-dot--${etat}`, taille === 'sm' && 'zv-dot--sm', taille === 'lg' && 'zv-dot--lg', carree && 'zv-dot--square', className), ...reste }));
13
+ }
14
+ export function Status({ etat, className, children, ...reste }) {
15
+ return (_jsxs("div", { className: cx('zv-status', className), ...reste, children: [_jsx(Dot, { etat: etat }), _jsx("span", { className: "zv-status__label", children: children })] }));
16
+ }
17
+ export function Empty({ titre, page, action, className, children, ...reste }) {
18
+ return (_jsxs("div", { className: cx('zv-empty', page && 'zv-empty--page', className), ...reste, children: [titre && _jsx("p", { className: "zv-empty__title", children: titre }), children && _jsx("p", { className: "zv-empty__text", children: children }), action && _jsx("div", { className: "zv-empty__action", children: action })] }));
19
+ }
20
+ /** Pastille + phrase qui dit le travail réel (« Recherche dans 4 812
21
+ * documents anonymisés… »). STATIQUE : la pastille ne bat pas, et lui
22
+ * ajouter un pouls est l'invention la plus tentante du système. */
23
+ export function Loading({ className, children, ...reste }) {
24
+ return (_jsxs("div", { role: "status", "aria-live": "polite", className: cx('zv-loading', className), ...reste, children: [_jsx("span", { className: "zv-dot", "aria-hidden": "true" }), children] }));
25
+ }
26
+ /** Bloc collé à la fin d'un texte en cours de diffusion, sur le DERNIER
27
+ * message seulement : sans lui, une réponse coupée à mi-phrase se lit comme
28
+ * une réponse complète et fausse. */
29
+ export function Caret({ className, ...reste }) {
30
+ return (_jsx("span", { className: cx('zv-caret', className), "aria-hidden": "true", ...reste, children: "\u258D" }));
31
+ }
32
+ /** Deuxième des trois emplois autorisés du spectre (avec le filet de section
33
+ * et les points de méthode). Jamais en fond, jamais en texte. */
34
+ export function Progress({ valeur, label, className, ...reste }) {
35
+ const part = Math.min(1, Math.max(0, valeur));
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
+ }
38
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../react/feedback.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,120 @@
1
+ import type { ButtonHTMLAttributes, HTMLAttributes, InputHTMLAttributes, ReactNode, SelectHTMLAttributes, TextareaHTMLAttributes } from 'react';
2
+ export interface FieldProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
3
+ label?: ReactNode;
4
+ /** Identifiant du contrôle enveloppé — à répéter en `id` sur le contrôle. */
5
+ htmlFor?: string;
6
+ /** Posé à droite de l'intitulé, sur la même ligne de base
7
+ * (« Mot de passe oublié ? »). */
8
+ action?: ReactNode;
9
+ /** Aide permanente. Effacée par `erreur` : les deux au même endroit se
10
+ * chevaucheraient. */
11
+ help?: ReactNode;
12
+ /** Message d'erreur. Sa présence passe aussi le groupe en `--err`, ce qui
13
+ * repeint le filet du contrôle. */
14
+ erreur?: ReactNode;
15
+ className?: string;
16
+ children?: ReactNode;
17
+ }
18
+ export declare function Field({ label, htmlFor, action, help, erreur, className, children, ...reste }: FieldProps): import("react").JSX.Element;
19
+ export interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className'> {
20
+ /** Chiffres et tirets alignés (identifiant d'organisation, jeton). */
21
+ mono?: boolean;
22
+ /** Ni fond ni filet : c'est le CADRE qui l'entoure qui fait le champ.
23
+ * Lui laisser sa bordure dessinerait deux cadres imbriqués. */
24
+ nu?: boolean;
25
+ /** Pose `aria-invalid` — c'est lui qui rend l'erreur audible, et le CSS le
26
+ * suit autant que la classe. */
27
+ erreur?: boolean;
28
+ className?: string;
29
+ }
30
+ export declare function Input({ mono, nu, erreur, className, ...reste }: InputProps): import("react").JSX.Element;
31
+ export interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'className'> {
32
+ erreur?: boolean;
33
+ className?: string;
34
+ }
35
+ export declare function Textarea({ erreur, className, ...reste }: TextareaProps): import("react").JSX.Element;
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 —
38
+ * `SelectTrigger` est un menu maison, à réserver aux filtres. */
39
+ export declare function Select({ className, ...reste }: Omit<SelectHTMLAttributes<HTMLSelectElement>, 'className'> & {
40
+ className?: string;
41
+ }): import("react").JSX.Element;
42
+ export interface SearchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'className'> {
43
+ /** Enveloppe : c'est elle qui porte le cadre et la largeur. */
44
+ className?: string;
45
+ }
46
+ /** Cadre + loupe + champ nu. La loupe est dans le balisage (et non un fond
47
+ * CSS) pour suivre `currentColor` et rester nette en zoom. */
48
+ export declare function Search({ className, ...reste }: SearchProps): import("react").JSX.Element;
49
+ export declare function SelectAnchor({ className, ...reste }: Omit<HTMLAttributes<HTMLDivElement>, 'className'> & {
50
+ className?: string;
51
+ }): import("react").JSX.Element;
52
+ export interface SelectTriggerProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'value'> {
53
+ /** L'intitulé, en capitales (« PÉRIMÈTRE »). */
54
+ label?: ReactNode;
55
+ /** La valeur courante, seule partie mise en avant. */
56
+ value?: ReactNode;
57
+ className?: string;
58
+ }
59
+ /** Bouton qui ouvre un `Menu`. Pour un vrai choix dans une liste, préférer
60
+ * `Select` (natif). À poser dans un `SelectAnchor` : c'est l'enveloppe qui
61
+ * ancre le menu, pas le déclencheur. */
62
+ export declare function SelectTrigger({ label, value, className, ...reste }: SelectTriggerProps): import("react").JSX.Element;
63
+ export declare function Checkbox({ className, ...reste }: Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'type'> & {
64
+ className?: string;
65
+ }): import("react").JSX.Element;
66
+ export declare function Radio({ className, ...reste }: Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'type'> & {
67
+ className?: string;
68
+ }): import("react").JSX.Element;
69
+ export interface SwitchProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className' | 'onChange'> {
70
+ /** État courant. Composant CONTRÔLÉ : il ne mémorise rien. */
71
+ on: boolean;
72
+ /** Libellé accolé — c'est lui qui porte le sens, la piste seule ne dit pas
73
+ * ce qui est activé. */
74
+ texte?: ReactNode;
75
+ className?: string;
76
+ }
77
+ export declare function Switch({ on, texte, className, ...reste }: SwitchProps): import("react").JSX.Element;
78
+ export interface SegGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className'> {
79
+ /** Rangée qui défile au lieu de passer à la ligne. À poser explicitement :
80
+ * par défaut les puces s'enroulent. */
81
+ rail?: boolean;
82
+ className?: string;
83
+ }
84
+ export declare function SegGroup({ rail, className, ...reste }: SegGroupProps): import("react").JSX.Element;
85
+ export interface SegProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'className'> {
86
+ on?: boolean;
87
+ /** Sélection PLEINE au lieu de douce. ⚠️ Un seul groupe plein par page, et
88
+ * jamais sur une page qui porte déjà un bouton plein. */
89
+ plein?: boolean;
90
+ /** Libellés de longueur inégale centrés (INFO, WARN, ERROR). */
91
+ mono?: boolean;
92
+ /** Compteur accolé (« Contrats 12 »). */
93
+ compte?: ReactNode;
94
+ className?: string;
95
+ children?: ReactNode;
96
+ }
97
+ export declare function Seg({ on, plein, mono, compte, className, children, ...reste }: SegProps): import("react").JSX.Element;
98
+ export interface DropProps extends Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'title'> {
99
+ titre?: ReactNode;
100
+ /** Précision sous le titre (« PDF, DOCX · 25 Mo max »). */
101
+ spec?: ReactNode;
102
+ /** Alternative tactile : sous le point de rupture, le lien souligné cède
103
+ * la place à cette cible. Le CSS échange les deux, les deux nœuds restent
104
+ * posés en permanence. */
105
+ parcourir?: ReactNode;
106
+ /** Un fichier est en cours de survol : même rendu que le survol souris. */
107
+ survol?: boolean;
108
+ desactive?: boolean;
109
+ className?: string;
110
+ children?: ReactNode;
111
+ }
112
+ /** ⚠️ `role="button"` + `tabIndex` sont posés ici et non laissés au bon
113
+ * vouloir de l'appelant : une zone de dépôt sans eux rend la page
114
+ * inatteignable au clavier. Penser à remettre `value=''` sur l'input après
115
+ * chaque sélection, sinon redéposer le même fichier ne déclenche rien. */
116
+ export declare function Drop({ titre, spec, parcourir, survol, desactive, className, children, ...reste }: DropProps): import("react").JSX.Element;
117
+ export declare function DropInput({ className, ...reste }: Omit<InputHTMLAttributes<HTMLInputElement>, 'className' | 'type'> & {
118
+ className?: string;
119
+ }): import("react").JSX.Element;
120
+ //# sourceMappingURL=forms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.d.ts","sourceRoot":"","sources":["../react/forms.tsx"],"names":[],"mappings":"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"}
package/dist/forms.js ADDED
@@ -0,0 +1,60 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cx } from './cx.js';
3
+ export function Field({ label, htmlFor, action, help, erreur, className, children, ...reste }) {
4
+ return (_jsxs("div", { className: cx('zv-field', !!erreur && 'zv-field--err', className), ...reste, children: [(label || action) &&
5
+ (action ? (_jsxs("div", { className: "zv-field__head", children: [_jsx("label", { className: "zv-field__label", htmlFor: htmlFor, children: label }), action] })) : (_jsx("label", { className: "zv-field__label", htmlFor: htmlFor, children: label }))), children, erreur ? (_jsx("span", { className: "zv-field__err", id: htmlFor ? `${htmlFor}-err` : undefined, children: erreur })) : (help && _jsx("span", { className: "zv-field__help", children: help }))] }));
6
+ }
7
+ export function Input({ mono, nu, erreur, className, ...reste }) {
8
+ return (_jsx("input", { className: cx('zv-input', mono && 'zv-input--mono', nu && 'zv-input--bare', className), "aria-invalid": erreur || undefined, ...reste }));
9
+ }
10
+ export function Textarea({ erreur, className, ...reste }) {
11
+ return (_jsx("textarea", { className: cx('zv-textarea', className), "aria-invalid": erreur || undefined, ...reste }));
12
+ }
13
+ /** <select> NATIF habillé comme le champ : la flèche, l'ouverture au clavier
14
+ * et l'annonce viennent du navigateur. C'est le motif de choix par défaut —
15
+ * `SelectTrigger` est un menu maison, à réserver aux filtres. */
16
+ export function Select({ className, ...reste }) {
17
+ return _jsx("select", { className: cx('zv-input', 'zv-input--select', className), ...reste });
18
+ }
19
+ /** Cadre + loupe + champ nu. La loupe est dans le balisage (et non un fond
20
+ * CSS) pour suivre `currentColor` et rester nette en zoom. */
21
+ export function Search({ className, ...reste }) {
22
+ return (_jsxs("div", { className: cx('zv-search', className), children: [_jsxs("svg", { className: "zv-search__icon", viewBox: "0 0 13 13", fill: "none", strokeWidth: "1.5", "aria-hidden": "true", children: [_jsx("circle", { cx: "5.5", cy: "5.5", r: "4" }), _jsx("line", { x1: "8.6", y1: "8.6", x2: "12", y2: "12" })] }), _jsx("input", { type: "search", className: "zv-search__input", ...reste })] }));
23
+ }
24
+ /* ─── Déclencheur de sélection (menu maison) ───────────────────────── */
25
+ export function SelectAnchor({ className, ...reste }) {
26
+ return _jsx("div", { className: cx('zv-select-anchor', className), ...reste });
27
+ }
28
+ /** Bouton qui ouvre un `Menu`. Pour un vrai choix dans une liste, préférer
29
+ * `Select` (natif). À poser dans un `SelectAnchor` : c'est l'enveloppe qui
30
+ * ancre le menu, pas le déclencheur. */
31
+ export function SelectTrigger({ label, value, className, ...reste }) {
32
+ return (_jsxs("button", { type: "button", className: cx('zv-select', className), ...reste, children: [label, value != null && _jsx("strong", { children: value }), _jsx("span", { className: "zv-select__chevron", "aria-hidden": "true", children: "\u25BE" })] }));
33
+ }
34
+ /* ─── Case, radio ──────────────────────────────────────────────────── */
35
+ export function Checkbox({ className, ...reste }) {
36
+ return _jsx("input", { type: "checkbox", className: cx('zv-check-box', className), ...reste });
37
+ }
38
+ export function Radio({ className, ...reste }) {
39
+ return _jsx("input", { type: "radio", className: cx('zv-radio', className), ...reste });
40
+ }
41
+ export function Switch({ on, texte, className, ...reste }) {
42
+ return (_jsxs("button", { type: "button", role: "switch", "aria-checked": on, className: cx('zv-switch-hit', className), ...reste, children: [_jsx("span", { className: cx('zv-switch', on && 'zv-switch--on'), children: _jsx("span", { className: "zv-switch__knob" }) }), texte && (_jsx("span", { className: cx('zv-switch__text', on && 'zv-switch__text--on'), children: texte }))] }));
43
+ }
44
+ export function SegGroup({ rail, className, ...reste }) {
45
+ return (_jsx("div", { className: cx('zv-seg-group', rail && 'zv-seg-group--rail', className), ...reste }));
46
+ }
47
+ export function Seg({ on, plein, mono, compte, className, children, ...reste }) {
48
+ return (_jsxs("button", { type: "button", "aria-pressed": on ?? false, className: cx('zv-seg', mono && 'zv-seg--mono', on && (plein ? 'zv-seg--on-solid' : 'zv-seg--on'), className), ...reste, children: [children, compte != null && _jsx("span", { className: "zv-seg__count", children: compte })] }));
49
+ }
50
+ /** ⚠️ `role="button"` + `tabIndex` sont posés ici et non laissés au bon
51
+ * vouloir de l'appelant : une zone de dépôt sans eux rend la page
52
+ * inatteignable au clavier. Penser à remettre `value=''` sur l'input après
53
+ * chaque sélection, sinon redéposer le même fichier ne déclenche rien. */
54
+ export function Drop({ titre, spec, parcourir, survol, desactive, className, children, ...reste }) {
55
+ return (_jsxs("div", { role: "button", tabIndex: desactive ? -1 : 0, "aria-disabled": desactive || undefined, className: cx('zv-drop', survol && 'is-dragging', desactive && 'zv-drop--disabled', className), ...reste, children: [_jsxs("svg", { viewBox: "0 0 30 30", width: "30", height: "30", fill: "none", stroke: "var(--accent)", strokeWidth: "1.5", strokeLinecap: "round", "aria-hidden": "true", children: [_jsx("line", { x1: "15", y1: "4", x2: "15", y2: "18" }), _jsx("polyline", { points: "9.5,12.5 15,18 20.5,12.5" }), _jsx("path", { d: "M5 21 v3 a2 2 0 0 0 2 2 h16 a2 2 0 0 0 2-2 v-3" })] }), titre && _jsx("span", { className: "zv-drop__title", children: titre }), parcourir && _jsx("span", { className: "zv-drop__browse", children: parcourir }), spec && _jsx("span", { className: "zv-drop__spec", children: spec }), children] }));
56
+ }
57
+ export function DropInput({ className, ...reste }) {
58
+ return _jsx("input", { type: "file", className: cx('zv-drop__input', className), ...reste });
59
+ }
60
+ //# sourceMappingURL=forms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms.js","sourceRoot":"","sources":["../react/forms.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export type IconId = 'accueil' | 'activite' | 'app-couches' | 'archiver' | 'base-de-donnees' | 'bouclier-verifie' | 'cadenas' | 'cadrer' | 'chevron-bas' | 'chevron-droit' | 'chevron-gauche' | 'coche' | 'copier' | 'corbeille' | 'cube' | 'deconnexion' | 'depot-fichier' | 'dossier' | 'eclair' | 'equipe' | 'etincelles' | 'fermer' | 'horloge' | 'lien-externe' | 'menu' | 'moins' | 'oeil' | 'plus' | 'recherche' | 'registre' | 'reglages' | 'reseau' | 'taches' | 'trois-points';
2
+ export declare const CORPS: Record<IconId, string>;
3
+ /** Nom lisible de chaque icône — sert de titre accessible par défaut à
4
+ * `IconButton`, et de libellé dans la page de consultation de l'admin. */
5
+ export declare const NOMS: Record<IconId, string>;
6
+ //# sourceMappingURL=icon-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"icon-data.d.ts","sourceRoot":"","sources":["../react/icon-data.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,MAAM,GACd,SAAS,GACT,UAAU,GACV,aAAa,GACb,UAAU,GACV,iBAAiB,GACjB,kBAAkB,GAClB,SAAS,GACT,QAAQ,GACR,aAAa,GACb,eAAe,GACf,gBAAgB,GAChB,OAAO,GACP,QAAQ,GACR,WAAW,GACX,MAAM,GACN,aAAa,GACb,eAAe,GACf,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,cAAc,GACd,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,WAAW,GACX,UAAU,GACV,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,cAAc,CAAA;AAElB,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmCxC,CAAA;AAED;2EAC2E;AAC3E,eAAO,MAAM,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAmCvC,CAAA"}