@sia-ui/react-web 0.7.1 → 0.8.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/CHANGELOG.md +44 -0
- package/README.md +59 -11
- package/dist/index.cjs +3735 -2011
- package/dist/index.css +5048 -3917
- package/dist/index.d.cts +1908 -955
- package/dist/index.d.ts +1908 -955
- package/dist/index.js +3711 -2001
- package/package.json +6 -6
package/dist/index.d.cts
CHANGED
|
@@ -1,58 +1,618 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import * as react from 'react';
|
|
3
|
-
import { ReactNode,
|
|
4
|
-
import * as _sia_ui_headless from '@sia-ui/headless';
|
|
5
|
-
import { PermissionRule, Placement, TableQuery, SliderValue, FormAdapter, FormValidator, FormSubmitResult, TableQueryStorage, TableQueryState, TableParamsMapping, SessionStore, SessionState, ToastPlacement, ToastId, ToastOptions } from '@sia-ui/headless';
|
|
6
|
-
export { SliderValue, ToastId, ToastOptions, ToastPlacement, ToastTone, toast, toastStore } from '@sia-ui/headless';
|
|
3
|
+
import { ReactNode, ImgHTMLAttributes, HTMLAttributes, RefObject, ReactElement, InputHTMLAttributes, ButtonHTMLAttributes, CSSProperties, Key, ForwardRefExoticComponent, RefAttributes, SVGAttributes, TextareaHTMLAttributes, SVGProps, PropsWithChildren } from 'react';
|
|
7
4
|
import { ComponentTone, ComponentSize } from '@sia-ui/tokens';
|
|
5
|
+
import * as _sia_ui_headless from '@sia-ui/headless';
|
|
6
|
+
import { Placement, PermissionRule, TableQuery, ActivityLogMessages, SliderValue, AsyncFieldValidator, FormAdapter, FormValidator, FormSubmitResult, ResourceMessages, TableQueryStorage, TableQueryState, TableParamsMapping, CalendarEventInput, EventCalendarMessages, CalendarView, DayEvent, EventManagerMessages, SessionStore, SessionState, ToastPlacement, ToastId, ToastOptions } from '@sia-ui/headless';
|
|
7
|
+
export { CalendarView, SliderValue, ToastId, ToastOptions, ToastPlacement, ToastTone, eventDays, toast, toastStore } from '@sia-ui/headless';
|
|
8
8
|
import { Rule } from '@sia-ui/utils/validation';
|
|
9
9
|
|
|
10
|
-
interface AccordionItem {
|
|
11
|
-
key: string;
|
|
10
|
+
interface AccordionItem {
|
|
11
|
+
key: string;
|
|
12
|
+
title: ReactNode;
|
|
13
|
+
content: ReactNode;
|
|
14
|
+
/** Une ligne sous le titre, visible même replié. */
|
|
15
|
+
description?: ReactNode;
|
|
16
|
+
icon?: ReactNode;
|
|
17
|
+
/** À droite du titre : un compteur, un badge, un statut. */
|
|
18
|
+
meta?: ReactNode;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
}
|
|
21
|
+
interface AccordionProps {
|
|
22
|
+
items: AccordionItem[];
|
|
23
|
+
/** `single` referme la section précédente, `multiple` les cumule. */
|
|
24
|
+
type?: "single" | "multiple";
|
|
25
|
+
value?: string[];
|
|
26
|
+
defaultValue?: string[];
|
|
27
|
+
onValueChange?: (value: string[]) => void;
|
|
28
|
+
/** En `single`, autorise à tout refermer. */
|
|
29
|
+
collapsible?: boolean;
|
|
30
|
+
variant?: "bordered" | "separated" | "plain";
|
|
31
|
+
className?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Des sections dépliables.
|
|
35
|
+
*
|
|
36
|
+
* La hauteur s'anime sans être mesurée : le panneau est une grille dont la
|
|
37
|
+
* ligne passe de `0fr` à `1fr`. Pas de `scrollHeight`, pas de recalcul au
|
|
38
|
+
* redimensionnement, et un contenu qui change de taille suit tout seul.
|
|
39
|
+
*/
|
|
40
|
+
declare function Accordion({ items, type, value, defaultValue, onValueChange, collapsible, variant, className, }: AccordionProps): react_jsx_runtime.JSX.Element;
|
|
41
|
+
interface CollapseProps {
|
|
42
|
+
title: ReactNode;
|
|
43
|
+
children: ReactNode;
|
|
44
|
+
description?: ReactNode;
|
|
45
|
+
meta?: ReactNode;
|
|
46
|
+
icon?: ReactNode;
|
|
47
|
+
open?: boolean;
|
|
48
|
+
defaultOpen?: boolean;
|
|
49
|
+
onOpenChange?: (open: boolean) => void;
|
|
50
|
+
variant?: AccordionProps["variant"];
|
|
51
|
+
disabled?: boolean;
|
|
52
|
+
className?: string;
|
|
53
|
+
}
|
|
54
|
+
/** Une section seule. Le même rendu, pour le cas le plus courant. */
|
|
55
|
+
declare function Collapse({ title, children, description, meta, icon, open, defaultOpen, onOpenChange, variant, disabled, className, }: CollapseProps): react_jsx_runtime.JSX.Element;
|
|
56
|
+
|
|
57
|
+
type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
|
|
58
|
+
type AvatarShape = "circle" | "rounded" | "square";
|
|
59
|
+
type AvatarVariant = "soft" | "solid" | "outline";
|
|
60
|
+
/**
|
|
61
|
+
* La présence d'une personne.
|
|
62
|
+
*
|
|
63
|
+
* Quatre états et pas davantage : au-delà, la pastille devient un code que
|
|
64
|
+
* personne ne retient, et il faut une légende pour la lire.
|
|
65
|
+
*/
|
|
66
|
+
type AvatarStatus = "online" | "offline" | "busy" | "away";
|
|
67
|
+
/**
|
|
68
|
+
* Les teintes dérivées du nom.
|
|
69
|
+
*
|
|
70
|
+
* Deux personnes aux mêmes initiales doivent se distinguer : dans une liste
|
|
71
|
+
* de participants, six pastilles identiques ne valent pas mieux qu'aucune.
|
|
72
|
+
* La couleur est donc déterministe — la même personne garde la sienne d'un
|
|
73
|
+
* écran à l'autre, d'une session à l'autre.
|
|
74
|
+
*/
|
|
75
|
+
declare const TEINTES: readonly ["primary", "info", "success", "warning", "danger", "secondary"];
|
|
76
|
+
type AvatarTint = (typeof TEINTES)[number];
|
|
77
|
+
declare function tintForName(name: string): AvatarTint;
|
|
78
|
+
declare function initialsOf(name: string, count?: number): string;
|
|
79
|
+
interface AvatarProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "children" | "width" | "height"> {
|
|
80
|
+
/** Le nom de la personne : il sert au repli, à la couleur et à l'annonce. */
|
|
81
|
+
name: string;
|
|
82
|
+
size?: AvatarSize;
|
|
83
|
+
shape?: AvatarShape;
|
|
84
|
+
variant?: AvatarVariant;
|
|
85
|
+
/** Force la teinte au lieu de la dériver du nom. */
|
|
86
|
+
tint?: AvatarTint;
|
|
87
|
+
/** Remplace les initiales — une icône, un emoji, deux lettres à soi. */
|
|
88
|
+
fallback?: ReactNode;
|
|
89
|
+
/** Nombre d'initiales quand le repli est automatique. */
|
|
90
|
+
initials?: 1 | 2;
|
|
91
|
+
status?: AvatarStatus;
|
|
92
|
+
/** Le libellé du statut, pour les lecteurs d'écran. Par défaut, celui de la locale. */
|
|
93
|
+
statusLabel?: string;
|
|
94
|
+
/** Un liseré qui détache l'avatar de son fond. */
|
|
95
|
+
ring?: boolean;
|
|
96
|
+
/** Rend l'avatar actionnable — un menu de compte, par exemple. */
|
|
97
|
+
onPress?: () => void;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Le portrait d'une personne, ou ce qui le remplace.
|
|
101
|
+
*
|
|
102
|
+
* Une image met du temps à arriver, échoue parfois, et manque souvent. Les
|
|
103
|
+
* trois cas sont traités sans que la mise en page bouge : l'espace est réservé
|
|
104
|
+
* d'emblée, le repli est peint dessous, et l'image se fond par-dessus quand
|
|
105
|
+
* elle arrive.
|
|
106
|
+
*/
|
|
107
|
+
declare function Avatar({ name, size, shape, variant, tint, fallback, initials, status, statusLabel, ring, onPress, className, src, alt, onError, onLoad, style, ...props }: AvatarProps): react_jsx_runtime.JSX.Element;
|
|
108
|
+
interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
109
|
+
children: ReactNode;
|
|
110
|
+
/**
|
|
111
|
+
* Au-delà, les suivants sont résumés par un compteur.
|
|
112
|
+
*
|
|
113
|
+
* Sans limite, une réunion de quarante personnes déborde de sa ligne et
|
|
114
|
+
* n'apprend plus rien : au-delà de cinq visages, on ne lit plus des gens,
|
|
115
|
+
* on lit une foule.
|
|
116
|
+
*/
|
|
117
|
+
max?: number;
|
|
118
|
+
size?: AvatarSize;
|
|
119
|
+
shape?: AvatarShape;
|
|
120
|
+
variant?: AvatarVariant;
|
|
121
|
+
/** Le chevauchement, de 0 (côte à côte) à 1 (fortement empilés). */
|
|
122
|
+
overlap?: number;
|
|
123
|
+
/** Écarte les avatars au survol, pour les distinguer. */
|
|
124
|
+
spreadOnHover?: boolean;
|
|
125
|
+
/** Ce qu'affiche le compteur. Par défaut `+N`. */
|
|
126
|
+
renderOverflow?: (count: number) => ReactNode;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Plusieurs personnes, sur une ligne.
|
|
130
|
+
*
|
|
131
|
+
* Les avatars se chevauchent — c'est ce qui dit « un groupe » plutôt qu'« une
|
|
132
|
+
* liste ». Chacun porte un liseré de la couleur du fond, sans quoi la pile
|
|
133
|
+
* devient une bouillie dès que deux teintes se ressemblent.
|
|
134
|
+
*/
|
|
135
|
+
declare function AvatarGroup({ children, max, size, shape, variant, overlap, spreadOnHover, renderOverflow, className, style, ...props }: AvatarGroupProps): react_jsx_runtime.JSX.Element;
|
|
136
|
+
|
|
137
|
+
interface SpinnerProps extends HTMLAttributes<HTMLSpanElement> {
|
|
138
|
+
label?: string;
|
|
139
|
+
size?: "xs" | "sm" | "md" | "lg" | "xl";
|
|
140
|
+
variant?: "dots" | "ring" | "double-ring";
|
|
141
|
+
tone?: ComponentTone | "current";
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Une attente sans durée connue.
|
|
145
|
+
*
|
|
146
|
+
* Quand la durée est connue, une barre de progression en dit plus. Le ton
|
|
147
|
+
* `current` reprend la couleur du texte environnant : un indicateur posé
|
|
148
|
+
* dans un bouton doit suivre la couleur du bouton, pas celle du thème.
|
|
149
|
+
*/
|
|
150
|
+
declare function Spinner({ label: labelProp, size: sizeProp, variant: variantProp, tone: toneProp, className, ...props }: SpinnerProps): react_jsx_runtime.JSX.Element;
|
|
151
|
+
|
|
152
|
+
interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {
|
|
153
|
+
tone?: ComponentTone;
|
|
154
|
+
variant?: "soft" | "solid" | "outline";
|
|
155
|
+
left?: ReactNode;
|
|
156
|
+
right?: ReactNode;
|
|
157
|
+
loading?: boolean;
|
|
158
|
+
loadingLabel?: string;
|
|
159
|
+
spinnerProps?: Omit<SpinnerProps, "label">;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Une étiquette d'état, courte et dense.
|
|
163
|
+
*
|
|
164
|
+
* Elle porte un ton, jamais une action : un badge cliquable se confond avec
|
|
165
|
+
* un bouton petit, et l'on découvre qu'il ne l'était pas en cliquant. Ce
|
|
166
|
+
* qui agit est un bouton.
|
|
167
|
+
*/
|
|
168
|
+
declare function Badge({ tone: toneProp, variant: variantProp, left, right, loading, loadingLabel: loadingLabelProp, spinnerProps, className, children, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
|
|
169
|
+
/**
|
|
170
|
+
* Le ton d'une valeur, lu dans une table de correspondance.
|
|
171
|
+
*
|
|
172
|
+
* Un statut, une action de journal, un environnement : chaque écran tenait
|
|
173
|
+
* sa propre table et sa propre fonction pour la lire. Celle-ci est la seule.
|
|
174
|
+
*
|
|
175
|
+
* ```ts
|
|
176
|
+
* const TONS = { payee: "success", attente: "warning", annulee: "danger" };
|
|
177
|
+
* toneOf(TONS, facture.statut); // "success" | … | "neutral"
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
declare function toneOf(tones: Readonly<Record<string, ComponentTone>> | undefined, value: unknown, fallback?: ComponentTone): ComponentTone;
|
|
181
|
+
interface StatusBadgeProps extends Omit<BadgeProps, "tone" | "children"> {
|
|
182
|
+
/** La valeur brute : `"payee"`, `"prod"`, `"delete"`. */
|
|
183
|
+
value: string | number | null | undefined;
|
|
184
|
+
/** Le ton de chaque valeur. */
|
|
185
|
+
tones?: Readonly<Record<string, ComponentTone>>;
|
|
186
|
+
/** Le libellé de chaque valeur. À défaut, la valeur elle-même. */
|
|
187
|
+
labels?: Readonly<Record<string, ReactNode>>;
|
|
188
|
+
/** Le ton d'une valeur absente de `tones`. `neutral` par défaut. */
|
|
189
|
+
fallbackTone?: ComponentTone;
|
|
190
|
+
/** Ce qui s'affiche sans valeur. Rien par défaut. */
|
|
191
|
+
empty?: ReactNode;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Une valeur rendue en pastille, ton et libellé tirés de deux tables.
|
|
195
|
+
*
|
|
196
|
+
* Déclarées une fois par domaine — les statuts de facture, les actions du
|
|
197
|
+
* journal — puis passées partout où la valeur s'affiche : colonne libre,
|
|
198
|
+
* détail, carte. Une valeur inconnue garde une pastille neutre plutôt que de
|
|
199
|
+
* disparaître.
|
|
200
|
+
*/
|
|
201
|
+
declare function StatusBadge({ value, tones, labels, fallbackTone, empty, ...props }: StatusBadgeProps): react_jsx_runtime.JSX.Element;
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Les douze placements du moteur de géométrie.
|
|
205
|
+
*
|
|
206
|
+
* Ce composant n'en exposait que quatre — haut et bas — parce qu'il calculait
|
|
207
|
+
* lui-même sa position, en vertical seulement. Le calcul vit dans
|
|
208
|
+
* `@sia-ui/headless`, sait basculer et recadrer dans les deux axes, et sert
|
|
209
|
+
* déjà le natif : le refaire ici privait tous les flottants des côtés.
|
|
210
|
+
*/
|
|
211
|
+
type OverlayPlacement = Placement;
|
|
212
|
+
interface OverlayProps {
|
|
213
|
+
open: boolean;
|
|
214
|
+
anchorRef: RefObject<HTMLElement | null>;
|
|
215
|
+
onOpenChange: (open: boolean) => void;
|
|
216
|
+
children: ReactNode;
|
|
217
|
+
placement?: OverlayPlacement;
|
|
218
|
+
offset?: number;
|
|
219
|
+
matchAnchorWidth?: boolean;
|
|
220
|
+
viewportPadding?: number;
|
|
221
|
+
className?: string;
|
|
222
|
+
id?: string;
|
|
223
|
+
role?: string;
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Ce qui flotte à côté d'un élément.
|
|
227
|
+
*
|
|
228
|
+
* Le socle des menus, des listes déroulantes et des infobulles. Il place le
|
|
229
|
+
* panneau parmi douze positions, le retourne quand le bord de la fenêtre
|
|
230
|
+
* approche, et le ramène dans la vue plutôt que de le laisser déborder.
|
|
231
|
+
*
|
|
232
|
+
* Le calcul vit dans `@sia-ui/headless` : il ne dépend d'aucun rendu, et
|
|
233
|
+
* sert donc aussi à ce qui n'est pas le DOM.
|
|
234
|
+
*/
|
|
235
|
+
declare function Overlay({ open, anchorRef, onOpenChange, children, placement, offset, matchAnchorWidth, viewportPadding, className, ...props }: OverlayProps): react.ReactPortal | null;
|
|
236
|
+
|
|
237
|
+
interface MenuItem {
|
|
238
|
+
key: string;
|
|
239
|
+
label: ReactNode;
|
|
240
|
+
icon?: ReactNode;
|
|
241
|
+
/** Un raccourci affiché à droite. Purement indicatif : rien n'est écouté. */
|
|
242
|
+
shortcut?: string;
|
|
243
|
+
disabled?: boolean;
|
|
244
|
+
danger?: boolean;
|
|
245
|
+
/** Affiche une coche. `undefined` : l'entrée n'est pas cochable. */
|
|
246
|
+
checked?: boolean;
|
|
247
|
+
description?: ReactNode;
|
|
248
|
+
onSelect?: () => void;
|
|
249
|
+
}
|
|
250
|
+
interface MenuSeparator {
|
|
251
|
+
key: string;
|
|
252
|
+
type: "separator";
|
|
253
|
+
}
|
|
254
|
+
interface MenuLabel {
|
|
255
|
+
key: string;
|
|
256
|
+
type: "label";
|
|
257
|
+
label: ReactNode;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Un en-tête à contenu libre : le profil d'un menu de compte, un résumé.
|
|
261
|
+
*
|
|
262
|
+
* `label` est un titre de section — petit, en capitales, sur une ligne — et
|
|
263
|
+
* n'a pas vocation à porter un avatar, un nom, une adresse et un rôle.
|
|
264
|
+
* L'en-tête ne se sélectionne pas et le clavier le saute.
|
|
265
|
+
*/
|
|
266
|
+
interface MenuHeader {
|
|
267
|
+
key: string;
|
|
268
|
+
type: "header";
|
|
269
|
+
content: ReactNode;
|
|
270
|
+
}
|
|
271
|
+
type MenuEntry = MenuItem | MenuSeparator | MenuLabel | MenuHeader;
|
|
272
|
+
/** Ce qu'on règle de l'`Overlay` d'un menu : tout sauf ce que le menu pilote. */
|
|
273
|
+
type MenuOverlayProps = Partial<Omit<OverlayProps, "open" | "anchorRef" | "onOpenChange" | "children">>;
|
|
274
|
+
interface MenuListProps {
|
|
275
|
+
items: MenuEntry[];
|
|
276
|
+
onSelect: (item: MenuItem) => void;
|
|
277
|
+
onClose: () => void;
|
|
278
|
+
/** Index actif, piloté par le parent pour que le clavier suive. */
|
|
279
|
+
activeIndex: number;
|
|
280
|
+
onActiveIndexChange: (index: number) => void;
|
|
281
|
+
id?: string | undefined;
|
|
282
|
+
className?: string | undefined;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Le panneau seul, sans déclencheur.
|
|
286
|
+
*
|
|
287
|
+
* Extrait parce que `DropdownMenu` et `ContextMenu` n'ont en commun que lui :
|
|
288
|
+
* tout le reste — l'ancrage, le geste d'ouverture — diffère.
|
|
289
|
+
*/
|
|
290
|
+
declare function MenuList({ items, onSelect, onClose, activeIndex, onActiveIndexChange, id, className, }: MenuListProps): react_jsx_runtime.JSX.Element;
|
|
291
|
+
interface DropdownMenuProps {
|
|
292
|
+
items: MenuEntry[];
|
|
293
|
+
children: ReactElement<{
|
|
294
|
+
onClick?: () => void;
|
|
295
|
+
"aria-expanded"?: boolean;
|
|
296
|
+
}>;
|
|
297
|
+
onSelect?: (item: MenuItem) => void;
|
|
298
|
+
open?: boolean;
|
|
299
|
+
defaultOpen?: boolean;
|
|
300
|
+
onOpenChange?: (open: boolean) => void;
|
|
301
|
+
placement?: OverlayPlacement;
|
|
302
|
+
matchTriggerWidth?: boolean;
|
|
303
|
+
/** Le positionnement du panneau : décalage, marge au bord de l'écran, id. */
|
|
304
|
+
overlayProps?: MenuOverlayProps;
|
|
305
|
+
className?: string;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Un menu accroché à un bouton.
|
|
309
|
+
*
|
|
310
|
+
* Il repose sur `Overlay` : le repositionnement quand la place manque en bas,
|
|
311
|
+
* la fermeture au clic extérieur et à Échap sont déjà là et ne sont pas
|
|
312
|
+
* réécrites ici.
|
|
313
|
+
*/
|
|
314
|
+
declare function DropdownMenu({ items, children, onSelect, open: openProp, defaultOpen, onOpenChange, placement, matchTriggerWidth, overlayProps, className, }: DropdownMenuProps): react_jsx_runtime.JSX.Element;
|
|
315
|
+
interface ContextMenuProps {
|
|
316
|
+
items: MenuEntry[];
|
|
317
|
+
children: ReactNode;
|
|
318
|
+
onSelect?: (item: MenuItem) => void;
|
|
319
|
+
/** Le positionnement du panneau, comme pour `DropdownMenu`. */
|
|
320
|
+
overlayProps?: MenuOverlayProps;
|
|
321
|
+
className?: string;
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Le même menu, ouvert au clic droit sur une zone.
|
|
325
|
+
*
|
|
326
|
+
* L'ancre est un point, pas un élément : un repère de taille nulle est posé
|
|
327
|
+
* aux coordonnées du pointeur et confié à `Overlay`, qui ne voit pas la
|
|
328
|
+
* différence. C'est ce qui évite un second moteur de placement.
|
|
329
|
+
*/
|
|
330
|
+
declare function ContextMenu({ items, children, onSelect, overlayProps, className, }: ContextMenuProps): react_jsx_runtime.JSX.Element;
|
|
331
|
+
|
|
332
|
+
interface AccountMenuProps {
|
|
333
|
+
/** Le nom de la personne connectée : avatar, en-tête et libellé du bouton. */
|
|
334
|
+
name: string;
|
|
335
|
+
email?: ReactNode;
|
|
336
|
+
/** Le rôle, en pastille sous le nom : « Administrateur ». */
|
|
337
|
+
role?: ReactNode;
|
|
338
|
+
/** La photo. À défaut, les initiales de `name`. */
|
|
339
|
+
avatarSrc?: string;
|
|
340
|
+
/** Les entrées sous l'en-tête : profil, préférences, déconnexion. */
|
|
341
|
+
items: MenuEntry[];
|
|
342
|
+
onSelect?: (item: MenuItem) => void;
|
|
343
|
+
/** Le nom accessible du déclencheur. Par défaut, celui de la locale, `accountMenu.trigger` (« Compte de {name} »). */
|
|
344
|
+
triggerLabel?: string;
|
|
345
|
+
/** L'avatar du déclencheur — taille, forme, variante. */
|
|
346
|
+
avatarProps?: Partial<Omit<AvatarProps, "name">>;
|
|
347
|
+
/** L'avatar de l'en-tête du menu. */
|
|
348
|
+
headerAvatarProps?: Partial<Omit<AvatarProps, "name">>;
|
|
349
|
+
/** La pastille du rôle — ton, variante. */
|
|
350
|
+
roleBadgeProps?: Partial<Omit<BadgeProps, "children">>;
|
|
351
|
+
/** Le menu lui-même, hors entrées et déclencheur qu'il reçoit d'ici. */
|
|
352
|
+
dropdownMenuProps?: Partial<Omit<DropdownMenuProps, "items" | "children" | "onSelect">>;
|
|
353
|
+
className?: string;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Le menu du compte connecté : un avatar qui ouvre un menu à en-tête de profil.
|
|
357
|
+
*
|
|
358
|
+
* Chaque application le recomposait — avatar dans un bouton qui lui
|
|
359
|
+
* ajoutait un cadre, en-tête forcé dans un titre de section en capitales.
|
|
360
|
+
* Ici, le déclencheur est l'avatar seul, rond et sans fond, et l'en-tête une
|
|
361
|
+
* entrée `header` à contenu libre du `DropdownMenu`.
|
|
362
|
+
*/
|
|
363
|
+
declare function AccountMenu({ name, email, role, avatarSrc, items, onSelect, triggerLabel, avatarProps, headerAvatarProps, roleBadgeProps, dropdownMenuProps, className, }: AccountMenuProps): react_jsx_runtime.JSX.Element;
|
|
364
|
+
|
|
365
|
+
interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange"> {
|
|
366
|
+
value?: string;
|
|
367
|
+
defaultValue?: string;
|
|
368
|
+
onValueChange?: (value: string) => void;
|
|
369
|
+
/** Appelé à la validation, et après le délai si `searchDelay` est posé. */
|
|
370
|
+
onSearch?: (value: string) => void;
|
|
371
|
+
/**
|
|
372
|
+
* Millisecondes d'inactivité avant de déclencher `onSearch`.
|
|
373
|
+
*
|
|
374
|
+
* `0` — le défaut — ne déclenche qu'à la validation. Au-delà, la recherche
|
|
375
|
+
* part quand la frappe s'arrête : c'est ce que chaque projet réécrivait
|
|
376
|
+
* autour de ce champ.
|
|
377
|
+
*/
|
|
378
|
+
searchDelay?: number;
|
|
379
|
+
clearable?: boolean;
|
|
380
|
+
/** Le nom du champ. Par défaut, `search` de la locale. */
|
|
381
|
+
searchLabel?: string;
|
|
382
|
+
/** Le bouton qui vide le champ. Par défaut, `searchInput.clear` de la locale. */
|
|
383
|
+
clearLabel?: string;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Une recherche, avec son délai.
|
|
387
|
+
*
|
|
388
|
+
* `searchDelay` vaut zéro par défaut : la recherche ne part qu'à la
|
|
389
|
+
* validation. C'est le réglage sûr — une requête à chaque frappe se paie en
|
|
390
|
+
* appels serveur, et le défaut ne doit pas engager ce coût sans qu'on l'ait
|
|
391
|
+
* demandé.
|
|
392
|
+
*/
|
|
393
|
+
declare const SearchInput: react.ForwardRefExoticComponent<SearchInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
394
|
+
|
|
395
|
+
interface EmptyStateProps {
|
|
396
|
+
icon?: ReactNode;
|
|
397
|
+
title: ReactNode;
|
|
398
|
+
description?: ReactNode;
|
|
399
|
+
action?: ReactNode;
|
|
400
|
+
compact?: boolean;
|
|
401
|
+
className?: string;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Ce qu'on montre quand il n'y a rien.
|
|
405
|
+
*
|
|
406
|
+
* Une liste vide sans explication ressemble à un chargement bloqué. Elle
|
|
407
|
+
* porte donc une action : le vide initial est le meilleur moment pour
|
|
408
|
+
* proposer de créer le premier élément.
|
|
409
|
+
*/
|
|
410
|
+
declare function EmptyState({ icon, title, description, action, compact, className }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
411
|
+
|
|
412
|
+
type TooltipVariant = "solid" | "outline";
|
|
413
|
+
interface TooltipProps extends Omit<HTMLAttributes<HTMLSpanElement>, "content"> {
|
|
414
|
+
content?: ReactNode;
|
|
415
|
+
children: ReactNode;
|
|
416
|
+
tone?: ComponentTone;
|
|
417
|
+
/** Seules `sm`, `md` et `lg` sont dessinées — voir `styles.css`. */
|
|
418
|
+
size?: ComponentSize;
|
|
419
|
+
placement?: Placement;
|
|
420
|
+
variant?: TooltipVariant;
|
|
421
|
+
/** Délai avant apparition, en millisecondes. */
|
|
422
|
+
delay?: number;
|
|
423
|
+
disabled?: boolean;
|
|
424
|
+
}
|
|
425
|
+
/** Alias historique, conservé pour les composants venus du registre. */
|
|
426
|
+
type ITooltipProps = TooltipProps;
|
|
427
|
+
type ITooltipVariant = TooltipVariant;
|
|
428
|
+
/**
|
|
429
|
+
* Bulle d'aide positionnée hors du flux.
|
|
430
|
+
*
|
|
431
|
+
* Le contenu passe par un portail plutôt que par un `position: absolute` dans
|
|
432
|
+
* le flux : un tooltip posé dans une `Card` ou une cellule de `DataTable` —
|
|
433
|
+
* toutes deux en `overflow: hidden` — serait sinon rogné.
|
|
434
|
+
*/
|
|
435
|
+
declare function Tooltip({ content, children, placement, variant, tone, size, delay, disabled, className, ...props }: TooltipProps): react_jsx_runtime.JSX.Element;
|
|
436
|
+
|
|
437
|
+
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
438
|
+
variant?: "solid" | "outline" | "ghost";
|
|
439
|
+
/**
|
|
440
|
+
* Le ton sémantique de l'action.
|
|
441
|
+
*
|
|
442
|
+
* `.sia-button--danger` existait dans la feuille de style sans qu'aucune
|
|
443
|
+
* prop ne permette de l'atteindre : une action de suppression ne pouvait pas
|
|
444
|
+
* être rouge sans `className` manuel.
|
|
445
|
+
*/
|
|
446
|
+
tone?: ComponentTone;
|
|
447
|
+
size?: "sm" | "md" | "lg";
|
|
448
|
+
radius?: "default" | "none" | "sm" | "lg" | "full";
|
|
449
|
+
loading?: boolean;
|
|
450
|
+
loadingLabel?: string;
|
|
451
|
+
spinnerProps?: Omit<SpinnerProps, "label">;
|
|
452
|
+
tooltip?: Omit<TooltipProps, "children">;
|
|
453
|
+
leftIcon?: ReactNode;
|
|
454
|
+
rightIcon?: ReactNode;
|
|
455
|
+
}
|
|
456
|
+
/**
|
|
457
|
+
* L'action, sous toutes ses formes.
|
|
458
|
+
*
|
|
459
|
+
* Le chargement y est un état et non un remplacement : le bouton garde sa
|
|
460
|
+
* taille et son libellé pendant l'appel. Un bouton qui devient un rond
|
|
461
|
+
* tournant fait bouger la mise en page, et le clic suivant tombe à côté.
|
|
462
|
+
*/
|
|
463
|
+
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
464
|
+
|
|
465
|
+
interface ErrorStateProps {
|
|
466
|
+
title?: ReactNode;
|
|
467
|
+
description?: ReactNode;
|
|
468
|
+
error?: unknown;
|
|
469
|
+
action?: ReactNode;
|
|
470
|
+
onRetry?: () => void;
|
|
471
|
+
retryLabel?: string;
|
|
472
|
+
compact?: boolean;
|
|
473
|
+
className?: string;
|
|
474
|
+
/**
|
|
475
|
+
* Les props du bouton « Réessayer » — variante, taille, icône. Sans
|
|
476
|
+
* `onClick`, branché sur `onRetry`, ni `children` : le libellé passe par
|
|
477
|
+
* `retryLabel`.
|
|
478
|
+
*/
|
|
479
|
+
retryButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children">>;
|
|
480
|
+
}
|
|
481
|
+
/**
|
|
482
|
+
* Un échec, et de quoi en sortir.
|
|
483
|
+
*
|
|
484
|
+
* `error` accepte n'importe quoi : une `Error`, une réponse HTTP, une
|
|
485
|
+
* chaîne. Ce qui arrive d'un appel réseau n'a pas de forme garantie, et
|
|
486
|
+
* exiger un type ferait écrire un `try` autour de chaque affichage
|
|
487
|
+
* d'erreur.
|
|
488
|
+
*/
|
|
489
|
+
declare function ErrorState({ title: titleProp, description, error, action, onRetry, retryLabel: retryLabelProp, compact, className, retryButtonProps }: ErrorStateProps): react_jsx_runtime.JSX.Element;
|
|
490
|
+
|
|
491
|
+
interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
|
|
492
|
+
width?: CSSProperties["width"];
|
|
493
|
+
height?: CSSProperties["height"];
|
|
494
|
+
radius?: CSSProperties["borderRadius"];
|
|
495
|
+
circle?: boolean;
|
|
496
|
+
}
|
|
497
|
+
/**
|
|
498
|
+
* La forme de ce qui n'est pas encore là.
|
|
499
|
+
*
|
|
500
|
+
* Aux dimensions du contenu attendu, et non d'une taille générique : c'est
|
|
501
|
+
* ce qui évite le sursaut de mise en page à l'arrivée des données, lequel
|
|
502
|
+
* fait cliquer à côté.
|
|
503
|
+
*/
|
|
504
|
+
declare function Skeleton({ className, width, height, radius, circle, style, ...props }: SkeletonProps): react_jsx_runtime.JSX.Element;
|
|
505
|
+
|
|
506
|
+
type CheckboxValue = string | number;
|
|
507
|
+
interface CheckboxGroupProps {
|
|
508
|
+
value?: CheckboxValue[];
|
|
509
|
+
defaultValue?: CheckboxValue[];
|
|
510
|
+
onValueChange?: (value: CheckboxValue[]) => void;
|
|
511
|
+
disabled?: boolean;
|
|
512
|
+
variant?: "default" | "button";
|
|
513
|
+
orientation?: "horizontal" | "vertical";
|
|
514
|
+
size?: "sm" | "md" | "lg";
|
|
515
|
+
tone?: ComponentTone;
|
|
516
|
+
className?: string;
|
|
517
|
+
children: ReactNode;
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Une case, ou un groupe de cases.
|
|
521
|
+
*
|
|
522
|
+
* `CheckboxGroup` gère la liste des valeurs cochées; la case seule gère la
|
|
523
|
+
* sienne. L'état indéterminé est une troisième valeur, pas un entre-deux
|
|
524
|
+
* visuel : il dit « certains enfants sont cochés », ce qu'aucun booléen ne
|
|
525
|
+
* sait exprimer.
|
|
526
|
+
*/
|
|
527
|
+
declare function CheckboxGroup({ value, defaultValue, onValueChange, disabled, variant, orientation, size, tone, className, children, }: CheckboxGroupProps): react_jsx_runtime.JSX.Element;
|
|
528
|
+
interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "size"> {
|
|
529
|
+
value?: CheckboxValue;
|
|
530
|
+
label?: ReactNode;
|
|
531
|
+
children?: ReactNode;
|
|
532
|
+
description?: ReactNode;
|
|
533
|
+
indeterminate?: boolean;
|
|
534
|
+
onValueChange?: (checked: boolean) => void;
|
|
535
|
+
size?: "sm" | "md" | "lg";
|
|
536
|
+
tone?: ComponentTone;
|
|
537
|
+
}
|
|
538
|
+
declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLInputElement>>;
|
|
539
|
+
|
|
540
|
+
interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
541
|
+
label: string;
|
|
542
|
+
icon: ReactNode;
|
|
543
|
+
variant?: "solid" | "outline" | "ghost";
|
|
544
|
+
size?: "sm" | "md" | "lg";
|
|
545
|
+
radius?: "default" | "none" | "sm" | "lg" | "full";
|
|
546
|
+
tooltip?: Omit<TooltipProps, "children">;
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Une action réduite à son icône.
|
|
550
|
+
*
|
|
551
|
+
* `label` est obligatoire : une icône seule n'a pas de nom, et un lecteur
|
|
552
|
+
* d'écran annoncerait « bouton » sans dire lequel. Le libellé sert aussi
|
|
553
|
+
* d'infobulle — ce que l'icône signifie doit rester atteignable à la
|
|
554
|
+
* souris comme au clavier.
|
|
555
|
+
*/
|
|
556
|
+
declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
557
|
+
|
|
558
|
+
interface ModalProps {
|
|
559
|
+
open: boolean;
|
|
560
|
+
onOpenChange: (open: boolean) => void;
|
|
12
561
|
title: ReactNode;
|
|
13
|
-
content: ReactNode;
|
|
14
|
-
/** Une ligne sous le titre, visible même replié. */
|
|
15
562
|
description?: ReactNode;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
interface AccordionProps {
|
|
22
|
-
items: AccordionItem[];
|
|
23
|
-
/** `single` referme la section précédente, `multiple` les cumule. */
|
|
24
|
-
type?: "single" | "multiple";
|
|
25
|
-
value?: string[];
|
|
26
|
-
defaultValue?: string[];
|
|
27
|
-
onValueChange?: (value: string[]) => void;
|
|
28
|
-
/** En `single`, autorise à tout refermer. */
|
|
29
|
-
collapsible?: boolean;
|
|
30
|
-
variant?: "bordered" | "separated" | "plain";
|
|
563
|
+
children?: ReactNode;
|
|
564
|
+
footer?: ReactNode;
|
|
565
|
+
closeOnBackdrop?: boolean;
|
|
566
|
+
closeLabel?: string;
|
|
31
567
|
className?: string;
|
|
32
568
|
}
|
|
33
569
|
/**
|
|
34
|
-
*
|
|
570
|
+
* Une boîte qui interrompt.
|
|
35
571
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
572
|
+
* Elle enferme le focus et bloque le défilement de la page : sans cela, la
|
|
573
|
+
* tabulation continue derrière le voile, et l'on remplit un formulaire
|
|
574
|
+
* qu'on ne voit pas. L'échappement la referme toujours — c'est la sortie
|
|
575
|
+
* que tout le monde essaie en premier.
|
|
39
576
|
*/
|
|
40
|
-
declare function
|
|
41
|
-
|
|
577
|
+
declare function Modal({ open, onOpenChange, title, description, children, footer, closeOnBackdrop, closeLabel: closeLabelProp, className }: ModalProps): react.ReactPortal | null;
|
|
578
|
+
|
|
579
|
+
interface ConfirmDialogProps {
|
|
580
|
+
open: boolean;
|
|
581
|
+
onOpenChange: (open: boolean) => void;
|
|
42
582
|
title: ReactNode;
|
|
43
|
-
children: ReactNode;
|
|
44
583
|
description?: ReactNode;
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
584
|
+
confirmLabel?: string;
|
|
585
|
+
cancelLabel?: string;
|
|
586
|
+
tone?: Extract<ComponentTone, "primary" | "danger">;
|
|
587
|
+
loading?: boolean;
|
|
588
|
+
onConfirm: () => void | Promise<void>;
|
|
589
|
+
/**
|
|
590
|
+
* Les props de la `Modal`. Sans `open`, `onOpenChange`, `children` ni
|
|
591
|
+
* `footer`, que la boîte de confirmation tient elle-même. Pendant
|
|
592
|
+
* `loading`, un clic sur le voile ne ferme jamais, quel que soit
|
|
593
|
+
* `closeOnBackdrop` : ce serait abandonner un appel encore en vol.
|
|
594
|
+
*/
|
|
595
|
+
modalProps?: Partial<Omit<ModalProps, "open" | "onOpenChange" | "children" | "footer">>;
|
|
596
|
+
/**
|
|
597
|
+
* Les props du bouton de confirmation. Sans `onClick` ni `loading`,
|
|
598
|
+
* branchés sur `onConfirm` et `loading` ; le libellé passe par
|
|
599
|
+
* `confirmLabel`.
|
|
600
|
+
*/
|
|
601
|
+
confirmButtonProps?: Partial<Omit<ButtonProps, "onClick" | "loading" | "children">>;
|
|
602
|
+
/**
|
|
603
|
+
* Les props du bouton d'annulation. Sans `onClick`, qui referme la boîte ;
|
|
604
|
+
* `disabled` s'ajoute à `loading` au lieu de le remplacer.
|
|
605
|
+
*/
|
|
606
|
+
cancelButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children">>;
|
|
53
607
|
}
|
|
54
|
-
/**
|
|
55
|
-
|
|
608
|
+
/**
|
|
609
|
+
* La question qu'on pose avant de détruire.
|
|
610
|
+
*
|
|
611
|
+
* `onConfirm` peut rendre une promesse : le bouton reste occupé tant qu'elle
|
|
612
|
+
* n'a pas abouti. Sans cela, la boîte se referme sur un appel encore en
|
|
613
|
+
* vol, et l'on ignore si la suppression a eu lieu.
|
|
614
|
+
*/
|
|
615
|
+
declare function ConfirmDialog({ open, onOpenChange, title, description, confirmLabel: confirmLabelProp, cancelLabel: cancelLabelProp, tone, loading, onConfirm, modalProps, confirmButtonProps, cancelButtonProps }: ConfirmDialogProps): react_jsx_runtime.JSX.Element;
|
|
56
616
|
|
|
57
617
|
/** Liste dense, ou grille de cartes. */
|
|
58
618
|
type DataTableView = "table" | "cards";
|
|
@@ -145,6 +705,13 @@ interface DataTableProps<T> {
|
|
|
145
705
|
* lettre ; Entrée et l'effacement déclenchent sans attendre.
|
|
146
706
|
*/
|
|
147
707
|
searchDelay?: number;
|
|
708
|
+
/**
|
|
709
|
+
* Le champ de recherche : placeholder, libellés, `clearable`, classe.
|
|
710
|
+
*
|
|
711
|
+
* La valeur et les rappels restent au tableau — c'est lui qui filtre et
|
|
712
|
+
* qui temporise ; les déléguer ici ferait deux recherches concurrentes.
|
|
713
|
+
*/
|
|
714
|
+
searchInputProps?: Partial<Omit<SearchInputProps, "value" | "defaultValue" | "onValueChange" | "onSearch" | "searchDelay">>;
|
|
148
715
|
layout?: "auto" | "fixed";
|
|
149
716
|
/** Hauteur du corps. Sans elle, `stickyHeader` n'a rien où se coller. */
|
|
150
717
|
maxHeight?: string;
|
|
@@ -159,6 +726,32 @@ interface DataTableProps<T> {
|
|
|
159
726
|
actionsHeader?: ReactNode;
|
|
160
727
|
/** `icon` garde la colonne étroite sur un tableau déjà large. */
|
|
161
728
|
actionsDisplay?: "icon" | "label";
|
|
729
|
+
/**
|
|
730
|
+
* Les boutons d'action à libellé : variante, taille, classe.
|
|
731
|
+
*
|
|
732
|
+
* Le clic, le libellé et l'état désactivé viennent de chaque `RowAction`.
|
|
733
|
+
*/
|
|
734
|
+
rowActionButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children" | "disabled">>;
|
|
735
|
+
/**
|
|
736
|
+
* Les boutons d'action réduits à l'icône, déclencheur du menu « autres
|
|
737
|
+
* actions » compris. Une `tooltip` passée ici se fusionne avec celle de
|
|
738
|
+
* l'action, qui garde son libellé.
|
|
739
|
+
*/
|
|
740
|
+
rowActionIconButtonProps?: Partial<Omit<IconButtonProps, "onClick" | "label" | "icon" | "disabled">>;
|
|
741
|
+
/**
|
|
742
|
+
* Le menu des actions qui ne tiennent pas en ligne : placement, décalage.
|
|
743
|
+
*
|
|
744
|
+
* Ni `open` ni `defaultOpen` : partagés par toutes les lignes, ils
|
|
745
|
+
* ouvriraient tous les menus à la fois.
|
|
746
|
+
*/
|
|
747
|
+
rowActionsMenuProps?: Partial<Omit<DropdownMenuProps, "items" | "children" | "onSelect" | "open" | "defaultOpen">>;
|
|
748
|
+
/**
|
|
749
|
+
* La confirmation d'une action : libellés par défaut, `loading`.
|
|
750
|
+
*
|
|
751
|
+
* Ce que déclare `confirm` sur l'action l'emporte ; le ton suit
|
|
752
|
+
* `confirm.destructive`, l'ouverture et la validation restent au tableau.
|
|
753
|
+
*/
|
|
754
|
+
confirmDialogProps?: Partial<Omit<ConfirmDialogProps, "open" | "onOpenChange" | "onConfirm" | "title" | "tone">>;
|
|
162
755
|
/** Évalue les règles de permission des actions. */
|
|
163
756
|
can?: (rule: PermissionRule) => boolean;
|
|
164
757
|
view?: DataTableView;
|
|
@@ -176,13 +769,28 @@ interface DataTableProps<T> {
|
|
|
176
769
|
loading?: boolean;
|
|
177
770
|
/** Lignes fantômes pendant le premier chargement. */
|
|
178
771
|
skeletonRows?: number;
|
|
772
|
+
/** Les blocs fantômes : rayon, classe, style. Leurs tailles ne sont que des défauts. */
|
|
773
|
+
skeletonProps?: Partial<SkeletonProps>;
|
|
179
774
|
error?: ReactNode;
|
|
180
775
|
onRetry?: () => void;
|
|
776
|
+
/**
|
|
777
|
+
* L'état d'erreur : titre, libellé du bouton, action, `compact`.
|
|
778
|
+
*
|
|
779
|
+
* Le message vient de `error` ; `onRetry` du tableau l'emporte s'il est
|
|
780
|
+
* fourni.
|
|
781
|
+
*/
|
|
782
|
+
errorStateProps?: Partial<Omit<ErrorStateProps, "description" | "error">>;
|
|
181
783
|
empty?: {
|
|
182
784
|
title?: ReactNode;
|
|
183
785
|
description?: ReactNode;
|
|
184
786
|
action?: ReactNode;
|
|
787
|
+
icon?: ReactNode;
|
|
185
788
|
};
|
|
789
|
+
/**
|
|
790
|
+
* L'état vide au complet : icône, `compact`, classe. Ce que déclare `empty`
|
|
791
|
+
* l'emporte sur les mêmes clés.
|
|
792
|
+
*/
|
|
793
|
+
emptyStateProps?: Partial<EmptyStateProps>;
|
|
186
794
|
/**
|
|
187
795
|
* Ajoute une colonne de cases à cocher.
|
|
188
796
|
*
|
|
@@ -195,6 +803,13 @@ interface DataTableProps<T> {
|
|
|
195
803
|
defaultSelectedKeys?: Key[];
|
|
196
804
|
onSelectionChange?: (keys: Key[], rows: T[]) => void;
|
|
197
805
|
isRowSelectable?: (row: T, index: number) => boolean;
|
|
806
|
+
/**
|
|
807
|
+
* Les cases de sélection, en-tête comprise : taille, ton, classe.
|
|
808
|
+
*
|
|
809
|
+
* L'état coché, l'indétermination et le rappel sont calculés par le
|
|
810
|
+
* tableau ; le clic reste retenu pour ne pas déclencher `onRowClick`.
|
|
811
|
+
*/
|
|
812
|
+
checkboxProps?: Partial<Omit<CheckboxProps, "checked" | "defaultChecked" | "indeterminate" | "onValueChange" | "onChange" | "onClick" | "disabled" | "value">>;
|
|
198
813
|
/** Barre affichée dès qu'une ligne est cochée. */
|
|
199
814
|
selectionActions?: (context: {
|
|
200
815
|
keys: Key[];
|
|
@@ -212,39 +827,53 @@ interface DataTableProps<T> {
|
|
|
212
827
|
className?: string;
|
|
213
828
|
}
|
|
214
829
|
|
|
830
|
+
interface FiltersBarProps {
|
|
831
|
+
search?: ReactNode;
|
|
832
|
+
filters?: ReactNode;
|
|
833
|
+
actions?: ReactNode;
|
|
834
|
+
activeCount?: number;
|
|
835
|
+
onReset?: () => void;
|
|
836
|
+
resetLabel?: string;
|
|
837
|
+
/**
|
|
838
|
+
* La largeur de chaque filtre — `12rem` par défaut. Les filtres se placent
|
|
839
|
+
* côte à côte à cette largeur, et passent à la ligne quand elle manque.
|
|
840
|
+
*/
|
|
841
|
+
filterWidth?: string;
|
|
842
|
+
className?: string;
|
|
843
|
+
}
|
|
215
844
|
/**
|
|
216
|
-
*
|
|
845
|
+
* La barre au-dessus d'une liste : recherche, filtres, actions.
|
|
217
846
|
*
|
|
218
|
-
*
|
|
219
|
-
*
|
|
220
|
-
*
|
|
221
|
-
* déjà le natif : le refaire ici privait tous les flottants des côtés.
|
|
847
|
+
* `activeCount` affiche combien de filtres sont en vigueur. Sans ce compte,
|
|
848
|
+
* une liste filtrée ressemble à une liste vide, et l'on cherche la panne
|
|
849
|
+
* avant de penser au filtre posé la veille.
|
|
222
850
|
*/
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
851
|
+
declare function FiltersBar({ search, filters, actions, activeCount, onReset, resetLabel: resetLabelProp, filterWidth, className }: FiltersBarProps): react_jsx_runtime.JSX.Element;
|
|
852
|
+
|
|
853
|
+
interface PageHeaderProps {
|
|
854
|
+
title: ReactNode;
|
|
855
|
+
description?: ReactNode;
|
|
856
|
+
eyebrow?: ReactNode;
|
|
857
|
+
actions?: ReactNode;
|
|
858
|
+
/**
|
|
859
|
+
* Le niveau du titre. `1` — le défaut — pour l'en-tête d'un écran.
|
|
860
|
+
*
|
|
861
|
+
* `2` ou `3` pour une section dans un écran qui a déjà son `<h1>` : la
|
|
862
|
+
* liste des environnements dans la fiche d'un projet. Le titre y est plus
|
|
863
|
+
* petit et l'espace sous l'en-tête plus court.
|
|
864
|
+
*/
|
|
865
|
+
level?: 1 | 2 | 3;
|
|
233
866
|
className?: string;
|
|
234
|
-
id?: string;
|
|
235
|
-
role?: string;
|
|
236
867
|
}
|
|
237
868
|
/**
|
|
238
|
-
*
|
|
239
|
-
*
|
|
240
|
-
* Le socle des menus, des listes déroulantes et des infobulles. Il place le
|
|
241
|
-
* panneau parmi douze positions, le retourne quand le bord de la fenêtre
|
|
242
|
-
* approche, et le ramène dans la vue plutôt que de le laisser déborder.
|
|
869
|
+
* Le titre d'un écran, et ses actions.
|
|
243
870
|
*
|
|
244
|
-
*
|
|
245
|
-
*
|
|
871
|
+
* Un seul `<h1>` par page, rendu ici : la hiérarchie des titres est ce qui
|
|
872
|
+
* permet de parcourir un écran au lecteur d'écran, et deux `<h1>` la
|
|
873
|
+
* cassent sans que rien ne se voie. Une section imbriquée passe donc
|
|
874
|
+
* `level={2}`.
|
|
246
875
|
*/
|
|
247
|
-
declare function
|
|
876
|
+
declare function PageHeader({ title, description, eyebrow, actions, level, className, }: PageHeaderProps): react_jsx_runtime.JSX.Element;
|
|
248
877
|
|
|
249
878
|
interface SelectOption {
|
|
250
879
|
value: string;
|
|
@@ -262,13 +891,18 @@ interface SelectProps {
|
|
|
262
891
|
value?: string;
|
|
263
892
|
defaultValue?: string;
|
|
264
893
|
onValueChange?: (value: string, option?: SelectOption) => void;
|
|
894
|
+
/** Le texte du champ vide. Par défaut, `select` de la locale. */
|
|
265
895
|
placeholder?: string;
|
|
266
896
|
searchable?: boolean;
|
|
897
|
+
/** Le texte indicatif de la recherche. Par défaut, `searchPlaceholder` de la locale. */
|
|
267
898
|
searchPlaceholder?: string;
|
|
268
899
|
fetcher?: (query: string, signal?: AbortSignal) => Promise<SelectOption[]>;
|
|
269
900
|
debounce?: number;
|
|
901
|
+
/** Pendant le chargement distant. Par défaut, `selectField.loadingOptions` de la locale. */
|
|
270
902
|
loadingText?: ReactNode;
|
|
903
|
+
/** Quand rien ne correspond. Par défaut, `noResults` de la locale. */
|
|
271
904
|
emptyText?: ReactNode;
|
|
905
|
+
/** Quand le chargement échoue. Par défaut, `selectField.loadError` de la locale. */
|
|
272
906
|
errorText?: ReactNode;
|
|
273
907
|
clearable?: boolean;
|
|
274
908
|
disabled?: boolean;
|
|
@@ -276,37 +910,110 @@ interface SelectProps {
|
|
|
276
910
|
required?: boolean;
|
|
277
911
|
placement?: OverlayPlacement;
|
|
278
912
|
/**
|
|
279
|
-
*
|
|
280
|
-
*
|
|
281
|
-
|
|
282
|
-
|
|
913
|
+
* Réglages du panneau de la liste — décalage, marge au bord, classe.
|
|
914
|
+
* `matchAnchorWidth: false` le laisse prendre la largeur de ses options.
|
|
915
|
+
*/
|
|
916
|
+
overlayProps?: Partial<Omit<OverlayProps, "open" | "anchorRef" | "onOpenChange" | "children">>;
|
|
917
|
+
/** Réglages de l'indicateur de chargement des options distantes. */
|
|
918
|
+
spinnerProps?: Partial<SpinnerProps>;
|
|
919
|
+
/**
|
|
920
|
+
* Ce que montre le déclencheur. Par défaut, le libellé de l'option.
|
|
921
|
+
*
|
|
922
|
+
* La liste garde ses libellés complets — « 🇨🇲 Cameroun (+237) » — pendant
|
|
923
|
+
* que le champ fermé n'affiche que ce qui tient : « 🇨🇲 +237 ».
|
|
924
|
+
*/
|
|
925
|
+
renderValue?: (option: SelectOption | undefined) => ReactNode;
|
|
926
|
+
/**
|
|
927
|
+
* `embedded` retire bordure, fond et largeur pleine du déclencheur : le
|
|
928
|
+
* `Select` se loge alors dans un autre contrôle — l'indicatif d'un
|
|
929
|
+
* `PhoneInput`, la taille de page d'une `Pagination`.
|
|
930
|
+
*/
|
|
931
|
+
variant?: "default" | "embedded";
|
|
932
|
+
className?: string;
|
|
933
|
+
"aria-label"?: string;
|
|
934
|
+
"aria-describedby"?: string;
|
|
935
|
+
"aria-labelledby"?: string;
|
|
936
|
+
"aria-invalid"?: boolean;
|
|
937
|
+
"aria-required"?: boolean;
|
|
938
|
+
}
|
|
939
|
+
/**
|
|
940
|
+
* Un choix parmi une liste.
|
|
941
|
+
*
|
|
942
|
+
* Le champ n'est pas un `<select>` natif : celui-ci ne sait ni chercher, ni
|
|
943
|
+
* afficher une description sous chaque option, ni charger ses choix à la
|
|
944
|
+
* demande. Le comportement clavier du natif, lui, est reproduit — flèches,
|
|
945
|
+
* première lettre, échappement.
|
|
946
|
+
*
|
|
947
|
+
* `fetcher` sert les listes qu'on ne peut pas descendre en entier : la
|
|
948
|
+
* requête part après la frappe et s'annule si l'on continue à taper.
|
|
949
|
+
*/
|
|
950
|
+
declare const Select: react.ForwardRefExoticComponent<SelectProps & react.RefAttributes<HTMLButtonElement>>;
|
|
951
|
+
|
|
952
|
+
interface PaginationProps {
|
|
953
|
+
page: number;
|
|
954
|
+
totalPages: number;
|
|
955
|
+
onPageChange: (page: number) => void;
|
|
956
|
+
siblingCount?: number;
|
|
957
|
+
previousLabel?: string;
|
|
958
|
+
nextLabel?: string;
|
|
959
|
+
/**
|
|
960
|
+
* Ajoute un champ pour sauter directement à une page.
|
|
961
|
+
*
|
|
962
|
+
* Sur quarante pages, atteindre la vingt-septième demande sinon de cliquer
|
|
963
|
+
* dans les ellipses jusqu'à ce qu'elle apparaisse.
|
|
964
|
+
*/
|
|
965
|
+
jumpTo?: boolean;
|
|
966
|
+
/** Affiche « Page 3 sur 40 » à côté des numéros. */
|
|
967
|
+
showTotal?: boolean;
|
|
968
|
+
/** Masque les libellés et ne garde que les flèches. */
|
|
969
|
+
compact?: boolean;
|
|
970
|
+
/** Le nombre de lignes par page en vigueur. */
|
|
971
|
+
pageSize?: number;
|
|
972
|
+
/**
|
|
973
|
+
* Fourni avec `pageSize`, ajoute le choix du nombre de lignes par page.
|
|
974
|
+
*
|
|
975
|
+
* Seul le nouveau nombre est remonté : revenir en page 1 est l'affaire de
|
|
976
|
+
* qui tient l'état — `setPerPage` de `useTableQuery` le fait déjà.
|
|
977
|
+
*/
|
|
978
|
+
onPageSizeChange?: (pageSize: number) => void;
|
|
979
|
+
/**
|
|
980
|
+
* Les tailles proposées. Par défaut `10, 20, 50, 100`. Une taille en
|
|
981
|
+
* vigueur absente de la liste y est ajoutée, pour que le champ ne paraisse
|
|
982
|
+
* jamais vide.
|
|
283
983
|
*/
|
|
284
|
-
|
|
984
|
+
pageSizeOptions?: number[];
|
|
985
|
+
/** Le libellé du choix. Par défaut `locale.perPage` — « Par page ». */
|
|
986
|
+
pageSizeLabel?: string;
|
|
285
987
|
/**
|
|
286
|
-
*
|
|
287
|
-
*
|
|
288
|
-
* `PhoneInput`, la taille de page d'une `Pagination`.
|
|
988
|
+
* Remplace entièrement le contrôle — des boutons segmentés, un champ libre.
|
|
989
|
+
* Le choix des tailles et leur tri sont déjà faits.
|
|
289
990
|
*/
|
|
290
|
-
|
|
991
|
+
renderPageSize?: (context: PageSizeContext) => ReactNode;
|
|
992
|
+
/**
|
|
993
|
+
* Le `Select` de taille de page : placement, variante, classe.
|
|
994
|
+
*
|
|
995
|
+
* La valeur, les options et le rappel restent calculés ici — on les règle
|
|
996
|
+
* par `pageSize`, `pageSizeOptions` et `onPageSizeChange`.
|
|
997
|
+
*/
|
|
998
|
+
pageSizeSelectProps?: Partial<Omit<SelectProps, "value" | "defaultValue" | "options" | "children" | "onValueChange">>;
|
|
999
|
+
ariaLabel?: string;
|
|
291
1000
|
className?: string;
|
|
292
|
-
"aria-label"?: string;
|
|
293
|
-
"aria-describedby"?: string;
|
|
294
|
-
"aria-labelledby"?: string;
|
|
295
|
-
"aria-invalid"?: boolean;
|
|
296
|
-
"aria-required"?: boolean;
|
|
297
1001
|
}
|
|
1002
|
+
/** Ce que reçoit `renderPageSize`. */
|
|
1003
|
+
interface PageSizeContext {
|
|
1004
|
+
pageSize: number;
|
|
1005
|
+
options: number[];
|
|
1006
|
+
onChange: (pageSize: number) => void;
|
|
1007
|
+
label: string;
|
|
1008
|
+
}
|
|
1009
|
+
declare const DEFAULT_PAGE_SIZE_OPTIONS: number[];
|
|
298
1010
|
/**
|
|
299
|
-
*
|
|
300
|
-
*
|
|
301
|
-
* Le champ n'est pas un `<select>` natif : celui-ci ne sait ni chercher, ni
|
|
302
|
-
* afficher une description sous chaque option, ni charger ses choix à la
|
|
303
|
-
* demande. Le comportement clavier du natif, lui, est reproduit — flèches,
|
|
304
|
-
* première lettre, échappement.
|
|
1011
|
+
* La navigation entre les pages.
|
|
305
1012
|
*
|
|
306
|
-
*
|
|
307
|
-
*
|
|
1013
|
+
* Le calcul des numéros et des ellipses vient de `@sia-ui/headless` :
|
|
1014
|
+
* `usePagination` et ce composant appliquent la même règle, écrite une fois.
|
|
308
1015
|
*/
|
|
309
|
-
declare
|
|
1016
|
+
declare function Pagination({ page, totalPages, onPageChange, siblingCount, previousLabel: previousLabelProp, nextLabel: nextLabelProp, jumpTo, showTotal, compact, pageSize, onPageSizeChange, pageSizeOptions, pageSizeLabel, renderPageSize, pageSizeSelectProps, ariaLabel, className, }: PaginationProps): react_jsx_runtime.JSX.Element | null;
|
|
310
1017
|
|
|
311
1018
|
/** Une entrée de journal, dans sa forme la plus courante. */
|
|
312
1019
|
interface ActivityEntry {
|
|
@@ -362,11 +1069,52 @@ interface ActivityLogProps<T = ActivityEntry> {
|
|
|
362
1069
|
onRetry?: () => void;
|
|
363
1070
|
empty?: DataTableProps<T>["empty"];
|
|
364
1071
|
className?: string;
|
|
1072
|
+
/** Les props du `PageHeader`, rendu quand `title` est fourni. */
|
|
1073
|
+
pageHeaderProps?: Partial<PageHeaderProps>;
|
|
1074
|
+
/**
|
|
1075
|
+
* Les props de la `FiltersBar` — des actions, un autre libellé de
|
|
1076
|
+
* réinitialisation. Sans `search`, `filters`, `activeCount` ni `onReset`,
|
|
1077
|
+
* que le journal compose à partir de la requête.
|
|
1078
|
+
*/
|
|
1079
|
+
filtersBarProps?: Partial<Omit<FiltersBarProps, "search" | "filters" | "activeCount" | "onReset">>;
|
|
1080
|
+
/**
|
|
1081
|
+
* Les props du champ de recherche. Sans `value`, `defaultValue`,
|
|
1082
|
+
* `onValueChange` ni `onSearch` : la recherche en vigueur vit dans la
|
|
1083
|
+
* requête.
|
|
1084
|
+
*/
|
|
1085
|
+
searchInputProps?: Partial<Omit<SearchInputProps, "value" | "defaultValue" | "onValueChange" | "onSearch">>;
|
|
1086
|
+
/**
|
|
1087
|
+
* Les props communes aux `Select` des filtres. Sans `value`,
|
|
1088
|
+
* `onValueChange` ni `options`, propres à chaque filtre et branchés sur la
|
|
1089
|
+
* requête.
|
|
1090
|
+
*/
|
|
1091
|
+
filterSelectProps?: Partial<Omit<SelectProps, "value" | "onValueChange" | "options">>;
|
|
1092
|
+
/**
|
|
1093
|
+
* Les props du `StatusBadge` de la colonne « Action » par défaut. Sans
|
|
1094
|
+
* `value`, lue sur l'entrée. Sans effet quand `columns` est fourni.
|
|
1095
|
+
*/
|
|
1096
|
+
actionBadgeProps?: Partial<Omit<StatusBadgeProps, "value">>;
|
|
1097
|
+
/**
|
|
1098
|
+
* Les props du `DataTable` — densité, mode cartes, sélection. Sans
|
|
1099
|
+
* `columns` ni `data`, qui ont leurs props ici.
|
|
1100
|
+
*/
|
|
1101
|
+
tableProps?: Partial<Omit<DataTableProps<T>, "columns" | "data">>;
|
|
1102
|
+
/**
|
|
1103
|
+
* Les props de la `Pagination` — `jumpTo`, `pageSizeOptions`. Sans la page
|
|
1104
|
+
* et la taille de page ni leurs changements, branchés sur la requête.
|
|
1105
|
+
*/
|
|
1106
|
+
paginationProps?: Partial<Omit<PaginationProps, "page" | "totalPages" | "onPageChange" | "pageSize" | "onPageSizeChange">>;
|
|
365
1107
|
}
|
|
366
1108
|
/** Les colonnes d'une `ActivityEntry` : quand, qui, quoi, sur quoi. */
|
|
367
1109
|
declare function activityColumns(options?: {
|
|
368
1110
|
actionTones?: Record<string, ComponentTone> | undefined;
|
|
369
1111
|
actionLabels?: Record<string, ReactNode> | undefined;
|
|
1112
|
+
/** Les props du `StatusBadge` de la colonne « Action », sans `value`. */
|
|
1113
|
+
actionBadgeProps?: Partial<Omit<StatusBadgeProps, "value">> | undefined;
|
|
1114
|
+
/** Les en-têtes : le groupe `activityLog` de la locale. Français par défaut. */
|
|
1115
|
+
messages?: ActivityLogMessages | undefined;
|
|
1116
|
+
/** La langue des dates. Par défaut, `fr-FR`. */
|
|
1117
|
+
language?: string | undefined;
|
|
370
1118
|
}): Array<DataTableColumn<ActivityEntry>>;
|
|
371
1119
|
/**
|
|
372
1120
|
* Un journal d'activité, filtrable et paginé par le serveur.
|
|
@@ -376,7 +1124,7 @@ declare function activityColumns(options?: {
|
|
|
376
1124
|
* Filtres déclarés, recherche temporisée, pagination et taille de page : tout
|
|
377
1125
|
* passe par la requête, rien n'est filtré dans le navigateur.
|
|
378
1126
|
*/
|
|
379
|
-
declare function ActivityLog<T = ActivityEntry>({ entries, query, totalPages, filters, searchPlaceholder, columns, getRowKey, actionTones, actionLabels, title, description, headingLevel, loading, error, onRetry, empty, className, }: ActivityLogProps<T>): react_jsx_runtime.JSX.Element;
|
|
1127
|
+
declare function ActivityLog<T = ActivityEntry>({ entries, query, totalPages, filters, searchPlaceholder, columns, getRowKey, actionTones, actionLabels, title, description, headingLevel, loading, error, onRetry, empty, className, pageHeaderProps, filtersBarProps, searchInputProps, filterSelectProps, actionBadgeProps, tableProps, paginationProps, }: ActivityLogProps<T>): react_jsx_runtime.JSX.Element;
|
|
380
1128
|
|
|
381
1129
|
interface AlertProps {
|
|
382
1130
|
tone?: ComponentTone;
|
|
@@ -398,7 +1146,7 @@ declare function Alert({ tone, title, children, action, dismissLabel: dismissLab
|
|
|
398
1146
|
|
|
399
1147
|
interface AmountDisplayProps {
|
|
400
1148
|
value: number;
|
|
401
|
-
currency?: string;
|
|
1149
|
+
currency?: string; /** La langue du format. Par défaut, celle de la locale SIA. */
|
|
402
1150
|
locale?: string;
|
|
403
1151
|
label?: ReactNode;
|
|
404
1152
|
secondary?: ReactNode;
|
|
@@ -414,7 +1162,57 @@ interface AmountDisplayProps {
|
|
|
414
1162
|
* rouge seul. La couleur peut manquer — un daltonien, une impression en
|
|
415
1163
|
* noir et blanc — le signe, lui, reste.
|
|
416
1164
|
*/
|
|
417
|
-
declare function AmountDisplay({ value, currency, locale, label, secondary, sign, tone, className }: AmountDisplayProps): react_jsx_runtime.JSX.Element;
|
|
1165
|
+
declare function AmountDisplay({ value, currency, locale: localeProp, label, secondary, sign, tone, className }: AmountDisplayProps): react_jsx_runtime.JSX.Element;
|
|
1166
|
+
|
|
1167
|
+
/** Ce que la réf impérative expose — ouvrir un tiroir depuis l'extérieur. */
|
|
1168
|
+
type DrawerRef = {
|
|
1169
|
+
open: () => void;
|
|
1170
|
+
close: () => void;
|
|
1171
|
+
toggle: () => void;
|
|
1172
|
+
isOpen: () => boolean;
|
|
1173
|
+
};
|
|
1174
|
+
type DrawerPosition = "left" | "right" | "top" | "bottom";
|
|
1175
|
+
type DrawerSize = "sm" | "md" | "lg" | "xl";
|
|
1176
|
+
interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
1177
|
+
open?: boolean;
|
|
1178
|
+
defaultOpen?: boolean;
|
|
1179
|
+
onOpenChange?: (open: boolean) => void;
|
|
1180
|
+
position?: DrawerPosition;
|
|
1181
|
+
size?: DrawerSize;
|
|
1182
|
+
closeOnOutsideClick?: boolean;
|
|
1183
|
+
closeOnEsc?: boolean;
|
|
1184
|
+
}
|
|
1185
|
+
/** Alias historique, attendu par les composants venus du registre. */
|
|
1186
|
+
type IDrawerProps = DrawerProps;
|
|
1187
|
+
type DrawerComponent = ForwardRefExoticComponent<IDrawerProps & RefAttributes<DrawerRef>> & {
|
|
1188
|
+
Header: typeof DrawerHeader;
|
|
1189
|
+
Body: typeof DrawerBody;
|
|
1190
|
+
Footer: typeof DrawerFooter;
|
|
1191
|
+
Title: typeof DrawerTitle;
|
|
1192
|
+
Close: typeof DrawerClose;
|
|
1193
|
+
};
|
|
1194
|
+
/**
|
|
1195
|
+
* Un panneau qui entre par un bord.
|
|
1196
|
+
*
|
|
1197
|
+
* Il sert là où une boîte modale serait trop : un filtre qu'on ajuste en
|
|
1198
|
+
* regardant la liste derrière, un formulaire qu'on remplit sans perdre sa
|
|
1199
|
+
* place. Le focus y est enfermé tant qu'il est ouvert, comme dans un
|
|
1200
|
+
* modal — sans quoi la tabulation continue dans la page cachée.
|
|
1201
|
+
*/
|
|
1202
|
+
declare const Drawer: DrawerComponent;
|
|
1203
|
+
declare function DrawerHeader({ children }: {
|
|
1204
|
+
children: React.ReactNode;
|
|
1205
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1206
|
+
declare function DrawerTitle({ children }: {
|
|
1207
|
+
children: React.ReactNode;
|
|
1208
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1209
|
+
declare function DrawerBody({ children }: {
|
|
1210
|
+
children: React.ReactNode;
|
|
1211
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1212
|
+
declare function DrawerFooter({ children }: {
|
|
1213
|
+
children: React.ReactNode;
|
|
1214
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1215
|
+
declare function DrawerClose(): react_jsx_runtime.JSX.Element | null;
|
|
418
1216
|
|
|
419
1217
|
interface SidebarItem {
|
|
420
1218
|
key: string;
|
|
@@ -490,6 +1288,14 @@ interface SidebarProps {
|
|
|
490
1288
|
collapsed?: boolean;
|
|
491
1289
|
/** De quel côté sortent les volets du rail. */
|
|
492
1290
|
side?: "left" | "right";
|
|
1291
|
+
/**
|
|
1292
|
+
* Réglages des volets du rail — placement, décalage, classe.
|
|
1293
|
+
*
|
|
1294
|
+
* L'objet descend jusqu'aux nœuds mémoïsés : le passer stable (constante,
|
|
1295
|
+
* `useMemo`) plutôt qu'en littéral, sans quoi l'arbre se redessine à
|
|
1296
|
+
* chaque rendu du parent.
|
|
1297
|
+
*/
|
|
1298
|
+
overlayProps?: Partial<Omit<OverlayProps, "open" | "anchorRef" | "onOpenChange" | "children">>;
|
|
493
1299
|
variant?: "default" | "filled" | "floating";
|
|
494
1300
|
size?: "sm" | "md" | "lg";
|
|
495
1301
|
tone?: ComponentTone;
|
|
@@ -520,7 +1326,7 @@ interface SidebarProps {
|
|
|
520
1326
|
* profond que l'arborescence du produit, elle se réduit sans enfermer ses
|
|
521
1327
|
* sous-menus, et elle ne montre que ce que la session a le droit de voir.
|
|
522
1328
|
*/
|
|
523
|
-
declare function Sidebar({ items, activeKey, collapsed, side, variant, size, tone, can, openKeys, defaultOpenKeys, onOpenKeysChange, accordion, renderLink, header, footer, onNavigate, ariaLabel, className, }: SidebarProps): react_jsx_runtime.JSX.Element;
|
|
1329
|
+
declare function Sidebar({ items, activeKey, collapsed, side, overlayProps, variant, size, tone, can, openKeys, defaultOpenKeys, onOpenKeysChange, accordion, renderLink, header, footer, onNavigate, ariaLabel, className, }: SidebarProps): react_jsx_runtime.JSX.Element;
|
|
524
1330
|
|
|
525
1331
|
interface BottomTabsProps {
|
|
526
1332
|
/** Attendu déjà filtré : la coquille a fait le tri une seule fois. */
|
|
@@ -539,6 +1345,7 @@ interface BottomTabsProps {
|
|
|
539
1345
|
/** Le bouton qui ouvre l'arborescence complète. */
|
|
540
1346
|
more?: ReactNode;
|
|
541
1347
|
onMore?: () => void;
|
|
1348
|
+
/** Le libellé de « Plus ». Par défaut, celui de la locale. */
|
|
542
1349
|
moreLabel?: string;
|
|
543
1350
|
className?: string;
|
|
544
1351
|
}
|
|
@@ -692,6 +1499,18 @@ interface AppShellProps {
|
|
|
692
1499
|
mobileNav?: AppShellMobileNav;
|
|
693
1500
|
/** Sous cette largeur, la barre latérale cède la place. */
|
|
694
1501
|
mobileBreakpoint?: number;
|
|
1502
|
+
/**
|
|
1503
|
+
* Réglages de la barre latérale — taille, ton, accordéon, branches
|
|
1504
|
+
* ouvertes, volets du rail.
|
|
1505
|
+
*
|
|
1506
|
+
* Ce que la coquille décide seule en est retiré : les entrées filtrées,
|
|
1507
|
+
* l'entrée active, l'état réduit, les liens, l'en-tête et le pied, le côté
|
|
1508
|
+
* et la variante — tous déjà réglables ici, et qui doivent rester
|
|
1509
|
+
* d'accord avec la mise en page de la coquille.
|
|
1510
|
+
*/
|
|
1511
|
+
sidebarProps?: Partial<Omit<SidebarProps, "items" | "can" | "activeKey" | "collapsed" | "side" | "variant" | "renderLink" | "onNavigate" | "header" | "footer" | "ariaLabel">>;
|
|
1512
|
+
/** Réglages du tiroir mobile — taille, fermeture au clic extérieur, classe. */
|
|
1513
|
+
drawerProps?: Partial<Omit<DrawerProps, "open" | "defaultOpen" | "onOpenChange" | "children">>;
|
|
695
1514
|
ariaLabel?: string;
|
|
696
1515
|
className?: string;
|
|
697
1516
|
}
|
|
@@ -703,7 +1522,7 @@ interface AppShellProps {
|
|
|
703
1522
|
* l'assemblage — trois états de barre, une bascule mobile, et une seule
|
|
704
1523
|
* source de vérité pour ce qui est visible et pour ce qui est actif.
|
|
705
1524
|
*/
|
|
706
|
-
declare function AppShell({ nav, children, activeKey, currentPath, renderLink, onNavigate, can, brand, sidebarFooter, header, page, footer, contentWidth, side, variant, stickyHeader, sidebarState, defaultSidebarState, onSidebarStateChange, collapsible, sidebarWidth, sidebarCollapsedWidth, mobileNav, mobileBreakpoint, ariaLabel, className, }: AppShellProps): react_jsx_runtime.JSX.Element;
|
|
1525
|
+
declare function AppShell({ nav, children, activeKey, currentPath, renderLink, onNavigate, can, brand, sidebarFooter, header, page, footer, contentWidth, side, variant, stickyHeader, sidebarState, defaultSidebarState, onSidebarStateChange, collapsible, sidebarWidth, sidebarCollapsedWidth, mobileNav, mobileBreakpoint, sidebarProps, drawerProps, ariaLabel, className, }: AppShellProps): react_jsx_runtime.JSX.Element;
|
|
707
1526
|
|
|
708
1527
|
interface AspectRatioProps {
|
|
709
1528
|
/** Le rapport largeur / hauteur. `16 / 9`, `1`, `4 / 3`. */
|
|
@@ -729,226 +1548,136 @@ interface AsyncStateProps {
|
|
|
729
1548
|
emptyDescription?: ReactNode;
|
|
730
1549
|
onRetry?: () => void;
|
|
731
1550
|
children: ReactNode;
|
|
1551
|
+
/**
|
|
1552
|
+
* Les props de l'`Alert` d'erreur — un autre titre, un autre ton. Sans
|
|
1553
|
+
* `children` : le message est `error`.
|
|
1554
|
+
*/
|
|
1555
|
+
alertProps?: Partial<Omit<AlertProps, "children">>;
|
|
1556
|
+
/**
|
|
1557
|
+
* Les props du bouton « Réessayer ». Sans `onClick`, branché sur
|
|
1558
|
+
* `onRetry` : un bouton de reprise qui ne reprend rien serait pire que
|
|
1559
|
+
* pas de bouton.
|
|
1560
|
+
*/
|
|
1561
|
+
retryButtonProps?: Partial<Omit<ButtonProps, "onClick">>;
|
|
1562
|
+
/** Les props de l'`EmptyState` — une icône, une action, la taille. */
|
|
1563
|
+
emptyStateProps?: Partial<EmptyStateProps>;
|
|
1564
|
+
/** Le témoin de chargement. Son libellé vient de la locale. */
|
|
1565
|
+
spinnerProps?: Partial<Omit<SpinnerProps, "label">>;
|
|
732
1566
|
}
|
|
733
1567
|
/**
|
|
734
1568
|
* Les trois états d'un chargement, au même endroit.
|
|
735
1569
|
*
|
|
736
1570
|
* En attente, en erreur, ou vide : ce sont les mêmes trois cas à chaque
|
|
737
1571
|
* écran, et les écrire à la main en oublie toujours un — le plus souvent le
|
|
738
|
-
* vide, qui ressemble à un chargement qui n'en finit pas.
|
|
739
|
-
*/
|
|
740
|
-
declare function AsyncState({ loading, error, empty, emptyTitle, emptyDescription, onRetry, children }: AsyncStateProps): react_jsx_runtime.JSX.Element;
|
|
741
|
-
|
|
742
|
-
interface AuditEvent {
|
|
743
|
-
label: ReactNode;
|
|
744
|
-
at: Date | string | number;
|
|
745
|
-
by?: ReactNode;
|
|
746
|
-
detail?: ReactNode;
|
|
747
|
-
}
|
|
748
|
-
interface AuditMetaProps {
|
|
749
|
-
events: AuditEvent[];
|
|
750
|
-
locale
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
*
|
|
758
|
-
* Une liste d'événements plutôt qu'un dernier état : savoir qu'une facture
|
|
759
|
-
* a été validée n'apprend rien si l'on ignore qu'elle avait été rejetée la
|
|
760
|
-
* veille. Les dates sont relatives — « il y a deux jours » se compare sans
|
|
761
|
-
* calcul mental.
|
|
762
|
-
*/
|
|
763
|
-
declare function AuditMeta({ events, locale, title, emptyLabel, className }: AuditMetaProps): react_jsx_runtime.JSX.Element;
|
|
764
|
-
|
|
765
|
-
interface AuthLayoutProps {
|
|
766
|
-
title: ReactNode;
|
|
767
|
-
description?: ReactNode;
|
|
768
|
-
logo?: ReactNode;
|
|
769
|
-
aside?: ReactNode;
|
|
770
|
-
children: ReactNode;
|
|
771
|
-
footer?: ReactNode;
|
|
772
|
-
className?: string;
|
|
773
|
-
}
|
|
774
|
-
/**
|
|
775
|
-
* La page qui précède l'application : connexion, inscription, mot de passe
|
|
776
|
-
* oublié.
|
|
777
|
-
*
|
|
778
|
-
* Elle n'a ni navigation ni coquille, et c'est délibéré : tout ce qui mène
|
|
779
|
-
* ailleurs est hors de portée de quelqu'un qui n'est pas encore entré.
|
|
780
|
-
*/
|
|
781
|
-
declare function AuthLayout({ title, description, logo, aside, children, footer, className, }: AuthLayoutProps): react_jsx_runtime.JSX.Element;
|
|
782
|
-
|
|
783
|
-
interface AutocompleteProps {
|
|
784
|
-
id?: string;
|
|
785
|
-
options: SelectOption[];
|
|
786
|
-
value?: string;
|
|
787
|
-
defaultValue?: string;
|
|
788
|
-
onValueChange?: (value: string, option?: SelectOption) => void;
|
|
789
|
-
placeholder?: string;
|
|
790
|
-
allowCustomValue?: boolean;
|
|
791
|
-
disabled?: boolean;
|
|
792
|
-
className?: string;
|
|
793
|
-
"aria-describedby"?: string;
|
|
794
|
-
"aria-labelledby"?: string;
|
|
795
|
-
"aria-invalid"?: boolean;
|
|
796
|
-
"aria-required"?: boolean;
|
|
797
|
-
}
|
|
798
|
-
/**
|
|
799
|
-
* Un champ qui propose, sans imposer.
|
|
800
|
-
*
|
|
801
|
-
* `allowCustomValue` est vrai par défaut : la liste aide à trouver, elle ne
|
|
802
|
-
* dit pas ce qui existe. Un nom de client absent du référentiel reste
|
|
803
|
-
* saisissable, quitte à être créé ensuite.
|
|
804
|
-
*/
|
|
805
|
-
declare function Autocomplete({ id, options, value, defaultValue, onValueChange, placeholder: placeholderProp, allowCustomValue, disabled, className, ...ariaProps }: AutocompleteProps): react_jsx_runtime.JSX.Element;
|
|
806
|
-
|
|
807
|
-
type AvatarSize = "xs" | "sm" | "md" | "lg" | "xl";
|
|
808
|
-
type AvatarShape = "circle" | "rounded" | "square";
|
|
809
|
-
type AvatarVariant = "soft" | "solid" | "outline";
|
|
810
|
-
/**
|
|
811
|
-
* La présence d'une personne.
|
|
812
|
-
*
|
|
813
|
-
* Quatre états et pas davantage : au-delà, la pastille devient un code que
|
|
814
|
-
* personne ne retient, et il faut une légende pour la lire.
|
|
815
|
-
*/
|
|
816
|
-
type AvatarStatus = "online" | "offline" | "busy" | "away";
|
|
817
|
-
/**
|
|
818
|
-
* Les teintes dérivées du nom.
|
|
819
|
-
*
|
|
820
|
-
* Deux personnes aux mêmes initiales doivent se distinguer : dans une liste
|
|
821
|
-
* de participants, six pastilles identiques ne valent pas mieux qu'aucune.
|
|
822
|
-
* La couleur est donc déterministe — la même personne garde la sienne d'un
|
|
823
|
-
* écran à l'autre, d'une session à l'autre.
|
|
824
|
-
*/
|
|
825
|
-
declare const TEINTES: readonly ["primary", "info", "success", "warning", "danger", "secondary"];
|
|
826
|
-
type AvatarTint = (typeof TEINTES)[number];
|
|
827
|
-
declare function tintForName(name: string): AvatarTint;
|
|
828
|
-
declare function initialsOf(name: string, count?: number): string;
|
|
829
|
-
interface AvatarProps extends Omit<ImgHTMLAttributes<HTMLImageElement>, "children" | "width" | "height"> {
|
|
830
|
-
/** Le nom de la personne : il sert au repli, à la couleur et à l'annonce. */
|
|
831
|
-
name: string;
|
|
832
|
-
size?: AvatarSize;
|
|
833
|
-
shape?: AvatarShape;
|
|
834
|
-
variant?: AvatarVariant;
|
|
835
|
-
/** Force la teinte au lieu de la dériver du nom. */
|
|
836
|
-
tint?: AvatarTint;
|
|
837
|
-
/** Remplace les initiales — une icône, un emoji, deux lettres à soi. */
|
|
838
|
-
fallback?: ReactNode;
|
|
839
|
-
/** Nombre d'initiales quand le repli est automatique. */
|
|
840
|
-
initials?: 1 | 2;
|
|
841
|
-
status?: AvatarStatus;
|
|
842
|
-
/** Le libellé du statut, pour les lecteurs d'écran. */
|
|
843
|
-
statusLabel?: string;
|
|
844
|
-
/** Un liseré qui détache l'avatar de son fond. */
|
|
845
|
-
ring?: boolean;
|
|
846
|
-
/** Rend l'avatar actionnable — un menu de compte, par exemple. */
|
|
847
|
-
onPress?: () => void;
|
|
848
|
-
}
|
|
849
|
-
/**
|
|
850
|
-
* Le portrait d'une personne, ou ce qui le remplace.
|
|
851
|
-
*
|
|
852
|
-
* Une image met du temps à arriver, échoue parfois, et manque souvent. Les
|
|
853
|
-
* trois cas sont traités sans que la mise en page bouge : l'espace est réservé
|
|
854
|
-
* d'emblée, le repli est peint dessous, et l'image se fond par-dessus quand
|
|
855
|
-
* elle arrive.
|
|
856
|
-
*/
|
|
857
|
-
declare function Avatar({ name, size, shape, variant, tint, fallback, initials, status, statusLabel, ring, onPress, className, src, alt, onError, onLoad, style, ...props }: AvatarProps): react_jsx_runtime.JSX.Element;
|
|
858
|
-
interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {
|
|
859
|
-
children: ReactNode;
|
|
860
|
-
/**
|
|
861
|
-
* Au-delà, les suivants sont résumés par un compteur.
|
|
862
|
-
*
|
|
863
|
-
* Sans limite, une réunion de quarante personnes déborde de sa ligne et
|
|
864
|
-
* n'apprend plus rien : au-delà de cinq visages, on ne lit plus des gens,
|
|
865
|
-
* on lit une foule.
|
|
866
|
-
*/
|
|
867
|
-
max?: number;
|
|
868
|
-
size?: AvatarSize;
|
|
869
|
-
shape?: AvatarShape;
|
|
870
|
-
variant?: AvatarVariant;
|
|
871
|
-
/** Le chevauchement, de 0 (côte à côte) à 1 (fortement empilés). */
|
|
872
|
-
overlap?: number;
|
|
873
|
-
/** Écarte les avatars au survol, pour les distinguer. */
|
|
874
|
-
spreadOnHover?: boolean;
|
|
875
|
-
/** Ce qu'affiche le compteur. Par défaut `+N`. */
|
|
876
|
-
renderOverflow?: (count: number) => ReactNode;
|
|
1572
|
+
* vide, qui ressemble à un chargement qui n'en finit pas.
|
|
1573
|
+
*/
|
|
1574
|
+
declare function AsyncState({ loading, error, empty, emptyTitle, emptyDescription, onRetry, children, alertProps, retryButtonProps, emptyStateProps, spinnerProps }: AsyncStateProps): react_jsx_runtime.JSX.Element;
|
|
1575
|
+
|
|
1576
|
+
interface AuditEvent {
|
|
1577
|
+
label: ReactNode;
|
|
1578
|
+
at: Date | string | number;
|
|
1579
|
+
by?: ReactNode;
|
|
1580
|
+
detail?: ReactNode;
|
|
1581
|
+
}
|
|
1582
|
+
interface AuditMetaProps {
|
|
1583
|
+
events: AuditEvent[];
|
|
1584
|
+
/** La langue des dates. Par défaut, celle de la locale SIA. */
|
|
1585
|
+
locale?: string;
|
|
1586
|
+
/** Par défaut, « Historique » de la locale SIA. */
|
|
1587
|
+
title?: ReactNode;
|
|
1588
|
+
/** Par défaut, « Aucune activité » de la locale SIA. */
|
|
1589
|
+
emptyLabel?: ReactNode;
|
|
1590
|
+
className?: string;
|
|
877
1591
|
}
|
|
878
1592
|
/**
|
|
879
|
-
*
|
|
1593
|
+
* Qui a fait quoi, et quand.
|
|
880
1594
|
*
|
|
881
|
-
*
|
|
882
|
-
*
|
|
883
|
-
*
|
|
1595
|
+
* Une liste d'événements plutôt qu'un dernier état : savoir qu'une facture
|
|
1596
|
+
* a été validée n'apprend rien si l'on ignore qu'elle avait été rejetée la
|
|
1597
|
+
* veille. Les dates sont relatives — « il y a deux jours » se compare sans
|
|
1598
|
+
* calcul mental.
|
|
884
1599
|
*/
|
|
885
|
-
declare function
|
|
1600
|
+
declare function AuditMeta({ events, locale: localeProp, title: titleProp, emptyLabel: emptyLabelProp, className }: AuditMetaProps): react_jsx_runtime.JSX.Element;
|
|
886
1601
|
|
|
887
|
-
interface
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
1602
|
+
interface AuthLayoutProps {
|
|
1603
|
+
title: ReactNode;
|
|
1604
|
+
description?: ReactNode;
|
|
1605
|
+
logo?: ReactNode;
|
|
1606
|
+
aside?: ReactNode;
|
|
1607
|
+
children: ReactNode;
|
|
1608
|
+
footer?: ReactNode;
|
|
1609
|
+
className?: string;
|
|
892
1610
|
}
|
|
893
1611
|
/**
|
|
894
|
-
*
|
|
1612
|
+
* La page qui précède l'application : connexion, inscription, mot de passe
|
|
1613
|
+
* oublié.
|
|
895
1614
|
*
|
|
896
|
-
*
|
|
897
|
-
*
|
|
898
|
-
* dans un bouton doit suivre la couleur du bouton, pas celle du thème.
|
|
1615
|
+
* Elle n'a ni navigation ni coquille, et c'est délibéré : tout ce qui mène
|
|
1616
|
+
* ailleurs est hors de portée de quelqu'un qui n'est pas encore entré.
|
|
899
1617
|
*/
|
|
900
|
-
declare function
|
|
1618
|
+
declare function AuthLayout({ title, description, logo, aside, children, footer, className, }: AuthLayoutProps): react_jsx_runtime.JSX.Element;
|
|
901
1619
|
|
|
902
|
-
interface
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
1620
|
+
interface AutocompleteProps {
|
|
1621
|
+
id?: string;
|
|
1622
|
+
options: SelectOption[];
|
|
1623
|
+
value?: string;
|
|
1624
|
+
defaultValue?: string;
|
|
1625
|
+
onValueChange?: (value: string, option?: SelectOption) => void;
|
|
1626
|
+
placeholder?: string;
|
|
1627
|
+
allowCustomValue?: boolean;
|
|
1628
|
+
disabled?: boolean;
|
|
1629
|
+
className?: string;
|
|
1630
|
+
"aria-describedby"?: string;
|
|
1631
|
+
"aria-labelledby"?: string;
|
|
1632
|
+
"aria-invalid"?: boolean;
|
|
1633
|
+
"aria-required"?: boolean;
|
|
910
1634
|
}
|
|
911
1635
|
/**
|
|
912
|
-
*
|
|
1636
|
+
* Un champ qui propose, sans imposer.
|
|
913
1637
|
*
|
|
914
|
-
*
|
|
915
|
-
*
|
|
916
|
-
*
|
|
1638
|
+
* `allowCustomValue` est vrai par défaut : la liste aide à trouver, elle ne
|
|
1639
|
+
* dit pas ce qui existe. Un nom de client absent du référentiel reste
|
|
1640
|
+
* saisissable, quitte à être créé ensuite.
|
|
917
1641
|
*/
|
|
918
|
-
declare function
|
|
1642
|
+
declare function Autocomplete({ id, options, value, defaultValue, onValueChange, placeholder: placeholderProp, allowCustomValue, disabled, className, ...ariaProps }: AutocompleteProps): react_jsx_runtime.JSX.Element;
|
|
1643
|
+
|
|
919
1644
|
/**
|
|
920
|
-
*
|
|
921
|
-
*
|
|
922
|
-
* Un statut, une action de journal, un environnement : chaque écran tenait
|
|
923
|
-
* sa propre table et sa propre fonction pour la lire. Celle-ci est la seule.
|
|
924
|
-
*
|
|
925
|
-
* ```ts
|
|
926
|
-
* const TONS = { payee: "success", attente: "warning", annulee: "danger" };
|
|
927
|
-
* toneOf(TONS, facture.statut); // "success" | … | "neutral"
|
|
928
|
-
* ```
|
|
1645
|
+
* Une icône de marque, dans la forme d'un objet `simple-icons` : `path` est
|
|
1646
|
+
* le tracé d'un SVG 24×24, `hex` la couleur de la marque, sans dièse.
|
|
929
1647
|
*/
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
1648
|
+
interface BrandIconData {
|
|
1649
|
+
title: string;
|
|
1650
|
+
path: string;
|
|
1651
|
+
hex: string;
|
|
1652
|
+
}
|
|
1653
|
+
interface BrandIconProps extends Omit<SVGAttributes<SVGSVGElement>, "children" | "title"> {
|
|
1654
|
+
icon: BrandIconData;
|
|
1655
|
+
/** La taille du carré. `1em` par défaut : l'icône suit le texte. */
|
|
1656
|
+
size?: number | string;
|
|
1657
|
+
/** La couleur de la marque (défaut), ou `currentColor` quand il vaut `false`. */
|
|
1658
|
+
colored?: boolean;
|
|
1659
|
+
/** Le nom accessible. Par défaut, `icon.title`. */
|
|
1660
|
+
title?: string;
|
|
1661
|
+
/** Masquée des lecteurs d'écran : l'icône accompagne un texte qui la nomme déjà. */
|
|
1662
|
+
decorative?: boolean;
|
|
942
1663
|
}
|
|
943
1664
|
/**
|
|
944
|
-
*
|
|
1665
|
+
* Le logo d'un service tiers — Vercel, Supabase, GitHub — sans dépendance.
|
|
945
1666
|
*
|
|
946
|
-
*
|
|
947
|
-
*
|
|
948
|
-
*
|
|
949
|
-
*
|
|
1667
|
+
* Le système ne livre aucun logo : il prend l'objet d'icône que le projet
|
|
1668
|
+
* importe lui-même, et ne dépend donc ni d'un paquet d'icônes ni de sa
|
|
1669
|
+
* version.
|
|
1670
|
+
*
|
|
1671
|
+
* ```tsx
|
|
1672
|
+
* import { siVercel } from "simple-icons";
|
|
1673
|
+
* <BrandIcon icon={siVercel} />
|
|
1674
|
+
* ```
|
|
1675
|
+
*
|
|
1676
|
+
* Une marque quasi noire (Vercel, GitHub) disparaîtrait sur un fond sombre,
|
|
1677
|
+
* une marque quasi blanche sur un fond clair : sur le thème où elle serait
|
|
1678
|
+
* illisible, elle prend la couleur du texte plutôt que la sienne.
|
|
950
1679
|
*/
|
|
951
|
-
declare function
|
|
1680
|
+
declare function BrandIcon({ icon, size, colored, title, decorative, className, style, ...props }: BrandIconProps): react_jsx_runtime.JSX.Element;
|
|
952
1681
|
|
|
953
1682
|
interface BreadcrumbItem {
|
|
954
1683
|
key?: string;
|
|
@@ -968,6 +1697,11 @@ interface BreadcrumbProps {
|
|
|
968
1697
|
separator?: ReactNode;
|
|
969
1698
|
ariaLabel?: string;
|
|
970
1699
|
className?: string;
|
|
1700
|
+
/**
|
|
1701
|
+
* Le menu des niveaux repliés : placement, décalage, classe. Ses entrées
|
|
1702
|
+
* et son déclencheur viennent de `items`.
|
|
1703
|
+
*/
|
|
1704
|
+
dropdownMenuProps?: Partial<Omit<DropdownMenuProps, "items" | "children" | "onSelect">>;
|
|
971
1705
|
}
|
|
972
1706
|
/**
|
|
973
1707
|
* Le chemin parcouru.
|
|
@@ -975,60 +1709,7 @@ interface BreadcrumbProps {
|
|
|
975
1709
|
* Le dernier élément n'est jamais un lien : c'est la page courante, et un
|
|
976
1710
|
* lien vers l'endroit où l'on se trouve déjà n'existe pas.
|
|
977
1711
|
*/
|
|
978
|
-
declare function Breadcrumb({ items, maxVisible, separator, ariaLabel, className, }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
|
|
979
|
-
|
|
980
|
-
type TooltipVariant = "solid" | "outline";
|
|
981
|
-
interface TooltipProps extends Omit<HTMLAttributes<HTMLSpanElement>, "content"> {
|
|
982
|
-
content?: ReactNode;
|
|
983
|
-
children: ReactNode;
|
|
984
|
-
tone?: ComponentTone;
|
|
985
|
-
/** Seules `sm`, `md` et `lg` sont dessinées — voir `styles.css`. */
|
|
986
|
-
size?: ComponentSize;
|
|
987
|
-
placement?: Placement;
|
|
988
|
-
variant?: TooltipVariant;
|
|
989
|
-
/** Délai avant apparition, en millisecondes. */
|
|
990
|
-
delay?: number;
|
|
991
|
-
disabled?: boolean;
|
|
992
|
-
}
|
|
993
|
-
/** Alias historique, conservé pour les composants venus du registre. */
|
|
994
|
-
type ITooltipProps = TooltipProps;
|
|
995
|
-
type ITooltipVariant = TooltipVariant;
|
|
996
|
-
/**
|
|
997
|
-
* Bulle d'aide positionnée hors du flux.
|
|
998
|
-
*
|
|
999
|
-
* Le contenu passe par un portail plutôt que par un `position: absolute` dans
|
|
1000
|
-
* le flux : un tooltip posé dans une `Card` ou une cellule de `DataTable` —
|
|
1001
|
-
* toutes deux en `overflow: hidden` — serait sinon rogné.
|
|
1002
|
-
*/
|
|
1003
|
-
declare function Tooltip({ content, children, placement, variant, tone, size, delay, disabled, className, ...props }: TooltipProps): react_jsx_runtime.JSX.Element;
|
|
1004
|
-
|
|
1005
|
-
interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
1006
|
-
variant?: "solid" | "outline" | "ghost";
|
|
1007
|
-
/**
|
|
1008
|
-
* Le ton sémantique de l'action.
|
|
1009
|
-
*
|
|
1010
|
-
* `.sia-button--danger` existait dans la feuille de style sans qu'aucune
|
|
1011
|
-
* prop ne permette de l'atteindre : une action de suppression ne pouvait pas
|
|
1012
|
-
* être rouge sans `className` manuel.
|
|
1013
|
-
*/
|
|
1014
|
-
tone?: ComponentTone;
|
|
1015
|
-
size?: "sm" | "md" | "lg";
|
|
1016
|
-
radius?: "default" | "none" | "sm" | "lg" | "full";
|
|
1017
|
-
loading?: boolean;
|
|
1018
|
-
loadingLabel?: string;
|
|
1019
|
-
spinnerProps?: Omit<SpinnerProps, "label">;
|
|
1020
|
-
tooltip?: Omit<TooltipProps, "children">;
|
|
1021
|
-
leftIcon?: ReactNode;
|
|
1022
|
-
rightIcon?: ReactNode;
|
|
1023
|
-
}
|
|
1024
|
-
/**
|
|
1025
|
-
* L'action, sous toutes ses formes.
|
|
1026
|
-
*
|
|
1027
|
-
* Le chargement y est un état et non un remplacement : le bouton garde sa
|
|
1028
|
-
* taille et son libellé pendant l'appel. Un bouton qui devient un rond
|
|
1029
|
-
* tournant fait bouger la mise en page, et le clic suivant tombe à côté.
|
|
1030
|
-
*/
|
|
1031
|
-
declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
1712
|
+
declare function Breadcrumb({ items, maxVisible, separator, ariaLabel, className, dropdownMenuProps, }: BreadcrumbProps): react_jsx_runtime.JSX.Element;
|
|
1032
1713
|
|
|
1033
1714
|
interface CalendarDay {
|
|
1034
1715
|
date: string;
|
|
@@ -1071,6 +1752,7 @@ interface CalendarProps {
|
|
|
1071
1752
|
onModeChange: (mode: CalendarMode) => void;
|
|
1072
1753
|
}) => ReactNode;
|
|
1073
1754
|
renderExtraFooter?: () => ReactNode;
|
|
1755
|
+
/** La langue des jours et des mois. Par défaut, celle de la locale SIA. */
|
|
1074
1756
|
locale?: string;
|
|
1075
1757
|
firstDayOfWeek?: 0 | 1;
|
|
1076
1758
|
showWeek?: boolean;
|
|
@@ -1089,8 +1771,12 @@ interface CalendarProps {
|
|
|
1089
1771
|
* `Date` porte une heure et un fuseau dont une date de facture n'a que
|
|
1090
1772
|
* faire, et qui la décalent d'un jour une fois sur deux.
|
|
1091
1773
|
*/
|
|
1092
|
-
declare function Calendar({ value, defaultValue, range, defaultRange, selectionMode, month, defaultMonth, mode, defaultMode, onValueChange, onRangeChange, onSelect, onMonthChange, onPanelChange, disabledDate, validRange, renderDay, cellRender, headerRender, renderExtraFooter, locale, firstDayOfWeek, showWeek, fullscreen, tone, className, }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
1774
|
+
declare function Calendar({ value, defaultValue, range, defaultRange, selectionMode, month, defaultMonth, mode, defaultMode, onValueChange, onRangeChange, onSelect, onMonthChange, onPanelChange, disabledDate, validRange, renderDay, cellRender, headerRender, renderExtraFooter, locale: localeProp, firstDayOfWeek, showWeek, fullscreen, tone, className, }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
1093
1775
|
|
|
1776
|
+
type CardProps = HTMLAttributes<HTMLDivElement>;
|
|
1777
|
+
type CardHeaderProps = HTMLAttributes<HTMLDivElement>;
|
|
1778
|
+
type CardBodyProps = HTMLAttributes<HTMLDivElement>;
|
|
1779
|
+
type CardFooterProps = HTMLAttributes<HTMLDivElement>;
|
|
1094
1780
|
/**
|
|
1095
1781
|
* Une surface qui regroupe ce qui va ensemble.
|
|
1096
1782
|
*
|
|
@@ -1099,10 +1785,10 @@ declare function Calendar({ value, defaultValue, range, defaultRange, selectionM
|
|
|
1099
1785
|
* deux boutons et une pastille, une prop ne suffit plus, et l'on se retrouve
|
|
1100
1786
|
* à passer du JSX à travers une chaîne.
|
|
1101
1787
|
*/
|
|
1102
|
-
declare function Card({ className, ...props }:
|
|
1103
|
-
declare function CardHeader({ className, ...props }:
|
|
1104
|
-
declare function CardBody({ className, ...props }:
|
|
1105
|
-
declare function CardFooter({ className, ...props }:
|
|
1788
|
+
declare function Card({ className, ...props }: CardProps): react_jsx_runtime.JSX.Element;
|
|
1789
|
+
declare function CardHeader({ className, ...props }: CardHeaderProps): react_jsx_runtime.JSX.Element;
|
|
1790
|
+
declare function CardBody({ className, ...props }: CardBodyProps): react_jsx_runtime.JSX.Element;
|
|
1791
|
+
declare function CardFooter({ className, ...props }: CardFooterProps): react_jsx_runtime.JSX.Element;
|
|
1106
1792
|
|
|
1107
1793
|
interface ChartSeries {
|
|
1108
1794
|
key: string;
|
|
@@ -1158,40 +1844,6 @@ interface SparklineProps {
|
|
|
1158
1844
|
*/
|
|
1159
1845
|
declare function Sparkline({ values, tone, color, width, height, filled, className, }: SparklineProps): react_jsx_runtime.JSX.Element;
|
|
1160
1846
|
|
|
1161
|
-
type CheckboxValue = string | number;
|
|
1162
|
-
interface CheckboxGroupProps {
|
|
1163
|
-
value?: CheckboxValue[];
|
|
1164
|
-
defaultValue?: CheckboxValue[];
|
|
1165
|
-
onValueChange?: (value: CheckboxValue[]) => void;
|
|
1166
|
-
disabled?: boolean;
|
|
1167
|
-
variant?: "default" | "button";
|
|
1168
|
-
orientation?: "horizontal" | "vertical";
|
|
1169
|
-
size?: "sm" | "md" | "lg";
|
|
1170
|
-
tone?: ComponentTone;
|
|
1171
|
-
className?: string;
|
|
1172
|
-
children: ReactNode;
|
|
1173
|
-
}
|
|
1174
|
-
/**
|
|
1175
|
-
* Une case, ou un groupe de cases.
|
|
1176
|
-
*
|
|
1177
|
-
* `CheckboxGroup` gère la liste des valeurs cochées; la case seule gère la
|
|
1178
|
-
* sienne. L'état indéterminé est une troisième valeur, pas un entre-deux
|
|
1179
|
-
* visuel : il dit « certains enfants sont cochés », ce qu'aucun booléen ne
|
|
1180
|
-
* sait exprimer.
|
|
1181
|
-
*/
|
|
1182
|
-
declare function CheckboxGroup({ value, defaultValue, onValueChange, disabled, variant, orientation, size, tone, className, children, }: CheckboxGroupProps): react_jsx_runtime.JSX.Element;
|
|
1183
|
-
interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "size"> {
|
|
1184
|
-
value?: CheckboxValue;
|
|
1185
|
-
label?: ReactNode;
|
|
1186
|
-
children?: ReactNode;
|
|
1187
|
-
description?: ReactNode;
|
|
1188
|
-
indeterminate?: boolean;
|
|
1189
|
-
onValueChange?: (checked: boolean) => void;
|
|
1190
|
-
size?: "sm" | "md" | "lg";
|
|
1191
|
-
tone?: ComponentTone;
|
|
1192
|
-
}
|
|
1193
|
-
declare const Checkbox: react.ForwardRefExoticComponent<CheckboxProps & react.RefAttributes<HTMLInputElement>>;
|
|
1194
|
-
|
|
1195
1847
|
interface ColorPickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange"> {
|
|
1196
1848
|
onValueChange?: (value: string) => void;
|
|
1197
1849
|
showValue?: boolean;
|
|
@@ -1217,8 +1869,8 @@ interface CommandItem {
|
|
|
1217
1869
|
interface CommandPaletteProps {
|
|
1218
1870
|
open: boolean;
|
|
1219
1871
|
onOpenChange: (open: boolean) => void;
|
|
1220
|
-
items: CommandItem[];
|
|
1221
|
-
placeholder?: string;
|
|
1872
|
+
items: CommandItem[]; /** Par défaut, celui de la locale. */
|
|
1873
|
+
placeholder?: string; /** Par défaut, celui de la locale. */
|
|
1222
1874
|
emptyLabel?: string;
|
|
1223
1875
|
className?: string;
|
|
1224
1876
|
}
|
|
@@ -1229,27 +1881,23 @@ interface CommandPaletteProps {
|
|
|
1229
1881
|
* « facture » doit trouver « Nouvelle vente » sans avoir appris comment
|
|
1230
1882
|
* l'action s'appelle ici.
|
|
1231
1883
|
*/
|
|
1232
|
-
declare function CommandPalette({ open, onOpenChange, items, placeholder, emptyLabel, className }: CommandPaletteProps): react_jsx_runtime.JSX.Element | null;
|
|
1884
|
+
declare function CommandPalette({ open, onOpenChange, items, placeholder: placeholderProp, emptyLabel: emptyLabelProp, className }: CommandPaletteProps): react_jsx_runtime.JSX.Element | null;
|
|
1233
1885
|
|
|
1234
|
-
interface
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
confirmLabel?: string;
|
|
1240
|
-
cancelLabel?: string;
|
|
1241
|
-
tone?: Extract<ComponentTone, "primary" | "danger">;
|
|
1242
|
-
loading?: boolean;
|
|
1243
|
-
onConfirm: () => void | Promise<void>;
|
|
1886
|
+
interface ColorModeToggleProps extends Partial<Omit<IconButtonProps, "icon" | "onClick" | "aria-pressed">> {
|
|
1887
|
+
/** Le nom du bouton en mode clair. Par défaut, celui de la locale. */
|
|
1888
|
+
darkLabel?: string;
|
|
1889
|
+
/** Le nom du bouton en mode sombre. Par défaut, celui de la locale. */
|
|
1890
|
+
lightLabel?: string;
|
|
1244
1891
|
}
|
|
1245
1892
|
/**
|
|
1246
|
-
*
|
|
1893
|
+
* Le bouton de bascule clair / sombre.
|
|
1247
1894
|
*
|
|
1248
|
-
*
|
|
1249
|
-
*
|
|
1250
|
-
*
|
|
1895
|
+
* Il lit et écrit le mode de `SiaProvider` — persistance et script
|
|
1896
|
+
* anti-clignotement compris — plutôt que de tenir le sien. L'icône montre le
|
|
1897
|
+
* mode vers lequel on part, comme le libellé : le soleil en mode sombre.
|
|
1898
|
+
* Toutes les props d'`IconButton` passent, sauf ce qu'il pilote.
|
|
1251
1899
|
*/
|
|
1252
|
-
declare function
|
|
1900
|
+
declare function ColorModeToggle({ darkLabel: darkLabelProp, lightLabel: lightLabelProp, variant, ...props }: ColorModeToggleProps): react_jsx_runtime.JSX.Element;
|
|
1253
1901
|
|
|
1254
1902
|
/**
|
|
1255
1903
|
* La largeur de lecture, et l'espacement vertical.
|
|
@@ -1336,7 +1984,7 @@ declare const Textarea: react.ForwardRefExoticComponent<TextareaProps & react.Re
|
|
|
1336
1984
|
interface CurrencyInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultValue" | "onChange" | "inputMode"> {
|
|
1337
1985
|
value?: number | null;
|
|
1338
1986
|
defaultValue?: number | null;
|
|
1339
|
-
currency?: string;
|
|
1987
|
+
currency?: string; /** La langue du format et de la saisie. Par défaut, celle de la locale SIA. */
|
|
1340
1988
|
locale?: string;
|
|
1341
1989
|
onValueChange?: (value: number | null) => void;
|
|
1342
1990
|
invalid?: boolean;
|
|
@@ -1360,12 +2008,15 @@ interface DatePickerProps extends Pick<CalendarProps, "locale" | "firstDayOfWeek
|
|
|
1360
2008
|
onValueChange?: (value: string) => void;
|
|
1361
2009
|
onOpenChange?: (open: boolean) => void;
|
|
1362
2010
|
open?: boolean;
|
|
2011
|
+
/** Par défaut, « Sélectionner une date » de la locale SIA. */
|
|
1363
2012
|
placeholder?: string;
|
|
1364
2013
|
formatValue?: (value: string, locale: string) => ReactNode;
|
|
1365
2014
|
allowClear?: boolean;
|
|
1366
2015
|
showToday?: boolean;
|
|
1367
2016
|
renderExtraFooter?: () => ReactNode;
|
|
1368
2017
|
placement?: OverlayPlacement;
|
|
2018
|
+
/** Réglages du panneau flottant — décalage, marge au bord, classe. */
|
|
2019
|
+
overlayProps?: Partial<Omit<OverlayProps, "open" | "anchorRef" | "onOpenChange" | "children">>;
|
|
1369
2020
|
tone?: ComponentTone;
|
|
1370
2021
|
invalid?: boolean;
|
|
1371
2022
|
disabled?: boolean;
|
|
@@ -1399,6 +2050,7 @@ interface TimePickerProps {
|
|
|
1399
2050
|
hourFormat?: 12 | 24;
|
|
1400
2051
|
needConfirm?: boolean;
|
|
1401
2052
|
allowClear?: boolean;
|
|
2053
|
+
/** Par défaut, « Sélectionner une heure » de la locale SIA. */
|
|
1402
2054
|
placeholder?: string;
|
|
1403
2055
|
disabledTime?: (value: TimeParts) => boolean;
|
|
1404
2056
|
renderExtraFooter?: () => ReactNode;
|
|
@@ -1406,6 +2058,8 @@ interface TimePickerProps {
|
|
|
1406
2058
|
onOpenChange?: (open: boolean) => void;
|
|
1407
2059
|
open?: boolean;
|
|
1408
2060
|
placement?: OverlayPlacement;
|
|
2061
|
+
/** Réglages du panneau flottant — décalage, marge au bord, classe. */
|
|
2062
|
+
overlayProps?: Partial<Omit<OverlayProps, "open" | "anchorRef" | "onOpenChange" | "children">>;
|
|
1409
2063
|
tone?: ComponentTone;
|
|
1410
2064
|
invalid?: boolean;
|
|
1411
2065
|
disabled?: boolean;
|
|
@@ -1463,7 +2117,10 @@ interface MultiSelectProps {
|
|
|
1463
2117
|
value?: string[];
|
|
1464
2118
|
defaultValue?: string[];
|
|
1465
2119
|
onValueChange?: (value: string[]) => void;
|
|
2120
|
+
/** Le texte du champ vide. Par défaut, `select` de la locale. */
|
|
1466
2121
|
placeholder?: string;
|
|
2122
|
+
/** Le texte indicatif de la recherche. Par défaut, `searchPlaceholder` de la locale. */
|
|
2123
|
+
searchPlaceholder?: string;
|
|
1467
2124
|
searchable?: boolean;
|
|
1468
2125
|
disabled?: boolean;
|
|
1469
2126
|
className?: string;
|
|
@@ -1479,7 +2136,7 @@ interface MultiSelectProps {
|
|
|
1479
2136
|
* un compte seul — « 3 sélectionnés » — oblige à rouvrir la liste pour
|
|
1480
2137
|
* savoir lesquels.
|
|
1481
2138
|
*/
|
|
1482
|
-
declare function MultiSelect({ id, options, value, defaultValue, onValueChange, placeholder, searchable, disabled, className, ...ariaProps }: MultiSelectProps): react_jsx_runtime.JSX.Element;
|
|
2139
|
+
declare function MultiSelect({ id, options, value, defaultValue, onValueChange, placeholder: placeholderProp, searchPlaceholder: searchPlaceholderProp, searchable, disabled, className, ...ariaProps }: MultiSelectProps): react_jsx_runtime.JSX.Element;
|
|
1483
2140
|
|
|
1484
2141
|
type RadioValue = string | number;
|
|
1485
2142
|
interface RadioGroupProps {
|
|
@@ -1538,8 +2195,12 @@ interface SwitchProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "onC
|
|
|
1538
2195
|
declare const Switch: react.ForwardRefExoticComponent<SwitchProps & react.RefAttributes<HTMLButtonElement>>;
|
|
1539
2196
|
|
|
1540
2197
|
interface FileUploadProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange"> {
|
|
2198
|
+
/** Le titre de la zone. Par défaut, celui de la locale (`fileUpload.title`). */
|
|
1541
2199
|
label?: string;
|
|
2200
|
+
/** La phrase d'aide. Par défaut, celle de la locale (`fileUpload.description`). */
|
|
1542
2201
|
description?: string;
|
|
2202
|
+
/** Le bouton qui ouvre le sélecteur. Par défaut, celui de la locale (`fileUpload.browse`). */
|
|
2203
|
+
browseLabel?: string;
|
|
1543
2204
|
onFilesChange?: (files: File[]) => void;
|
|
1544
2205
|
}
|
|
1545
2206
|
/**
|
|
@@ -1549,13 +2210,22 @@ interface FileUploadProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "t
|
|
|
1549
2210
|
* ignore le geste que tout le monde essaie d'abord. Les deux mènent au même
|
|
1550
2211
|
* champ natif.
|
|
1551
2212
|
*/
|
|
1552
|
-
declare function FileUpload({ label, description, onFilesChange, className, multiple, accept, disabled, ...props }: FileUploadProps): react_jsx_runtime.JSX.Element;
|
|
2213
|
+
declare function FileUpload({ label: labelProp, description: descriptionProp, browseLabel: browseLabelProp, onFilesChange, className, multiple, accept, disabled, ...props }: FileUploadProps): react_jsx_runtime.JSX.Element;
|
|
1553
2214
|
|
|
2215
|
+
/**
|
|
2216
|
+
* Les props de `FileUpload`, transmises telles quelles au dépôt : libellé,
|
|
2217
|
+
* description, désactivation. `onFilesChange` cède la place à
|
|
2218
|
+
* `onValueChange`, qui porte l'aperçu, et `multiple` est forcé à `false` —
|
|
2219
|
+
* un aperçu ne montre qu'une image.
|
|
2220
|
+
*/
|
|
1554
2221
|
interface ImageUploadProps extends Omit<FileUploadProps, "accept" | "onFilesChange"> {
|
|
1555
2222
|
accept?: string;
|
|
1556
2223
|
value?: string;
|
|
1557
2224
|
onValueChange?: (file: File | null, previewUrl?: string) => void;
|
|
2225
|
+
/** Le texte alternatif de l'aperçu. Par défaut, celui de la locale (`imageUpload.previewAlt`). */
|
|
1558
2226
|
previewAlt?: string;
|
|
2227
|
+
/** Le bouton qui retire l'image. Par défaut, `delete` de la locale. */
|
|
2228
|
+
removeLabel?: string;
|
|
1559
2229
|
}
|
|
1560
2230
|
/**
|
|
1561
2231
|
* Un dépôt de fichier qui montre ce qu'on vient de choisir.
|
|
@@ -1564,7 +2234,7 @@ interface ImageUploadProps extends Omit<FileUploadProps, "accept" | "onFilesChan
|
|
|
1564
2234
|
* serveur pour afficher l'image laisse un carré vide au moment précis où
|
|
1565
2235
|
* l'on veut vérifier qu'on n'a pas pris la mauvaise.
|
|
1566
2236
|
*/
|
|
1567
|
-
declare function ImageUpload({ accept, value, onValueChange, previewAlt, className, ...props }: ImageUploadProps): react_jsx_runtime.JSX.Element;
|
|
2237
|
+
declare function ImageUpload({ accept, value, onValueChange, previewAlt: previewAltProp, removeLabel: removeLabelProp, className, ...props }: ImageUploadProps): react_jsx_runtime.JSX.Element;
|
|
1568
2238
|
|
|
1569
2239
|
type SliderRangeValue = [number, number];
|
|
1570
2240
|
interface SliderProps {
|
|
@@ -1590,12 +2260,20 @@ interface SliderProps {
|
|
|
1590
2260
|
showValue?: boolean | undefined;
|
|
1591
2261
|
/** Rendu de la valeur affichée — devise, unité, arrondi. */
|
|
1592
2262
|
formatValue?: ((value: number) => string) | undefined;
|
|
1593
|
-
/**
|
|
2263
|
+
/**
|
|
2264
|
+
* Libellé de la poignée basse, annoncé aux lecteurs d'écran. Par défaut,
|
|
2265
|
+
* `slider.thumb` de la locale.
|
|
2266
|
+
*/
|
|
1594
2267
|
startLabel?: string | undefined;
|
|
1595
2268
|
/** Libellé de la poignée haute, en mode plage. */
|
|
1596
2269
|
endLabel?: string | undefined;
|
|
1597
2270
|
disabled?: boolean | undefined;
|
|
1598
2271
|
className?: string | undefined;
|
|
2272
|
+
/**
|
|
2273
|
+
* Réglages de la bulle qui affiche la valeur au-dessus de chaque poignée —
|
|
2274
|
+
* placement, ton, délai. Son contenu reste la valeur formatée.
|
|
2275
|
+
*/
|
|
2276
|
+
tooltipProps?: Partial<Omit<TooltipProps, "content" | "children">> | undefined;
|
|
1599
2277
|
}
|
|
1600
2278
|
|
|
1601
2279
|
/**
|
|
@@ -1605,7 +2283,7 @@ interface SliderProps {
|
|
|
1605
2283
|
* non-croisement — vit dans `useSliderState`. Ce fichier ne garde que ce qui
|
|
1606
2284
|
* est propre au web : la mesure de la piste, les événements souris et le JSX.
|
|
1607
2285
|
*/
|
|
1608
|
-
declare function Slider({ name, value, defaultValue, min, max, step, range, minDistance, showValue, formatValue, startLabel, endLabel, onChange, onValueChange, disabled, className, }: SliderProps): react_jsx_runtime.JSX.Element;
|
|
2286
|
+
declare function Slider({ name, value, defaultValue, min, max, step, range, minDistance, showValue, formatValue, startLabel, endLabel, onChange, onValueChange, disabled, className, tooltipProps, }: SliderProps): react_jsx_runtime.JSX.Element;
|
|
1609
2287
|
|
|
1610
2288
|
interface RatingProps {
|
|
1611
2289
|
id?: string;
|
|
@@ -1617,6 +2295,7 @@ interface RatingProps {
|
|
|
1617
2295
|
allowHalf?: boolean;
|
|
1618
2296
|
allowClear?: boolean;
|
|
1619
2297
|
disabled?: boolean;
|
|
2298
|
+
/** Le nom du groupe d'étoiles. Par défaut, celui de la locale. */
|
|
1620
2299
|
label?: string;
|
|
1621
2300
|
className?: string;
|
|
1622
2301
|
"aria-describedby"?: string;
|
|
@@ -1630,7 +2309,7 @@ interface RatingProps {
|
|
|
1630
2309
|
* `allowClear` rend la note réversible : sans lui, cliquer une étoile par
|
|
1631
2310
|
* erreur est définitif, puisqu'aucune étoile ne vaut « aucune note ».
|
|
1632
2311
|
*/
|
|
1633
|
-
declare function Rating({ id, value, defaultValue, onValueChange, max, allowHalf, allowClear, disabled, label, className, ...ariaProps }: RatingProps): react_jsx_runtime.JSX.Element;
|
|
2312
|
+
declare function Rating({ id, value, defaultValue, onValueChange, max, allowHalf, allowClear, disabled, label: labelProp, className, ...ariaProps }: RatingProps): react_jsx_runtime.JSX.Element;
|
|
1634
2313
|
|
|
1635
2314
|
interface RichTextEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
1636
2315
|
value?: string;
|
|
@@ -1646,13 +2325,18 @@ interface RichTextEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, "onCh
|
|
|
1646
2325
|
* renvoie et s'affiche partout ailleurs sans qu'un convertisseur soit
|
|
1647
2326
|
* nécessaire.
|
|
1648
2327
|
*/
|
|
1649
|
-
declare function RichTextEditor({ value, defaultValue, onValueChange, placeholder, disabled, className, ...props }: RichTextEditorProps): react_jsx_runtime.JSX.Element;
|
|
2328
|
+
declare function RichTextEditor({ value, defaultValue, onValueChange, placeholder: placeholderProp, disabled, className, ...props }: RichTextEditorProps): react_jsx_runtime.JSX.Element;
|
|
1650
2329
|
|
|
1651
2330
|
interface MarkdownEditorProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "value" | "defaultValue" | "onChange"> {
|
|
1652
2331
|
value?: string;
|
|
1653
2332
|
defaultValue?: string;
|
|
1654
2333
|
onValueChange?: (value: string) => void;
|
|
1655
2334
|
preview?: (value: string) => ReactNode;
|
|
2335
|
+
/**
|
|
2336
|
+
* La zone de saisie elle-même : `resize`, `invalid`, classe. La valeur et
|
|
2337
|
+
* la saisie restent à l'éditeur, qui les partage avec l'aperçu.
|
|
2338
|
+
*/
|
|
2339
|
+
textareaProps?: Partial<Omit<TextareaProps, "value" | "defaultValue" | "onChange">>;
|
|
1656
2340
|
}
|
|
1657
2341
|
/**
|
|
1658
2342
|
* Une saisie Markdown, avec son aperçu.
|
|
@@ -1661,13 +2345,20 @@ interface MarkdownEditorProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaEl
|
|
|
1661
2345
|
* veut. Embarquer un moteur Markdown imposerait le nôtre à un projet qui a
|
|
1662
2346
|
* déjà le sien — et ferait grossir le paquet pour tous les autres.
|
|
1663
2347
|
*/
|
|
1664
|
-
declare function MarkdownEditor({ value, defaultValue, onValueChange, preview, className, ...props }: MarkdownEditorProps): react_jsx_runtime.JSX.Element;
|
|
2348
|
+
declare function MarkdownEditor({ value, defaultValue, onValueChange, preview, className, textareaProps, ...props }: MarkdownEditorProps): react_jsx_runtime.JSX.Element;
|
|
1665
2349
|
|
|
1666
2350
|
interface JsonEditorProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "value" | "defaultValue" | "onChange"> {
|
|
1667
2351
|
value?: string;
|
|
1668
2352
|
defaultValue?: string;
|
|
1669
2353
|
onValueChange?: (value: string, parsed: unknown | undefined) => void;
|
|
1670
2354
|
formatOnBlur?: boolean;
|
|
2355
|
+
/**
|
|
2356
|
+
* La zone de saisie elle-même : `resize`, classe, correcteur.
|
|
2357
|
+
*
|
|
2358
|
+
* La valeur, la saisie et `invalid` suivent l'analyse du JSON ; `onBlur`
|
|
2359
|
+
* se passe au composant, qui l'enchaîne après le formatage.
|
|
2360
|
+
*/
|
|
2361
|
+
textareaProps?: Partial<Omit<TextareaProps, "value" | "defaultValue" | "onChange" | "invalid" | "onBlur">>;
|
|
1671
2362
|
}
|
|
1672
2363
|
/**
|
|
1673
2364
|
* Une zone de saisie qui connaît la forme de ce qu'on y écrit.
|
|
@@ -1676,7 +2367,7 @@ interface JsonEditorProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElemen
|
|
|
1676
2367
|
* analysé à côté du texte : l'appelant reçoit donc les deux, et n'a pas à
|
|
1677
2368
|
* refaire un `JSON.parse` dans un `try`.
|
|
1678
2369
|
*/
|
|
1679
|
-
declare function JsonEditor({ value, defaultValue, onValueChange, formatOnBlur, className, ...props }: JsonEditorProps): react_jsx_runtime.JSX.Element;
|
|
2370
|
+
declare function JsonEditor({ value, defaultValue, onValueChange, formatOnBlur, className, textareaProps, ...props }: JsonEditorProps): react_jsx_runtime.JSX.Element;
|
|
1680
2371
|
|
|
1681
2372
|
interface OtpInputProps {
|
|
1682
2373
|
id?: string;
|
|
@@ -1724,11 +2415,16 @@ interface TagsInputProps {
|
|
|
1724
2415
|
* que ce sont les deux touches que l'on presse sans y penser après avoir
|
|
1725
2416
|
* tapé un mot.
|
|
1726
2417
|
*/
|
|
1727
|
-
declare function TagsInput({ id, value, defaultValue, onValueChange, placeholder, separators, maxTags, disabled, className, ...ariaProps }: TagsInputProps): react_jsx_runtime.JSX.Element;
|
|
2418
|
+
declare function TagsInput({ id, value, defaultValue, onValueChange, placeholder: placeholderProp, separators, maxTags, disabled, className, ...ariaProps }: TagsInputProps): react_jsx_runtime.JSX.Element;
|
|
1728
2419
|
|
|
1729
2420
|
interface ReferenceOption extends SelectOption {
|
|
1730
2421
|
description?: ReactNode;
|
|
1731
2422
|
}
|
|
2423
|
+
/**
|
|
2424
|
+
* Les props d'`Autocomplete`, transmises telles quelles : le composant n'est
|
|
2425
|
+
* qu'une mise en forme de ses options. Seules `options` changent de forme,
|
|
2426
|
+
* pour porter une description.
|
|
2427
|
+
*/
|
|
1732
2428
|
interface ReferenceSelectProps extends Omit<AutocompleteProps, "options"> {
|
|
1733
2429
|
options: ReferenceOption[];
|
|
1734
2430
|
}
|
|
@@ -1751,7 +2447,21 @@ type FieldControlProps = {
|
|
|
1751
2447
|
"aria-required"?: boolean;
|
|
1752
2448
|
};
|
|
1753
2449
|
type FieldValue = string | number | SliderRangeValue | boolean | string[] | DateTimeValue | File[] | File | null | undefined;
|
|
1754
|
-
|
|
2450
|
+
/**
|
|
2451
|
+
* Ce que le champ décide seul pour son contrôle, quel qu'il soit.
|
|
2452
|
+
*
|
|
2453
|
+
* La valeur et son changement viennent de `value`/`onValueChange` ou du
|
|
2454
|
+
* branchement `field` ; le nom, l'identifiant, les options, le texte
|
|
2455
|
+
* indicatif et la désactivation ont chacun leur prop sur `Field`. Les
|
|
2456
|
+
* laisser passer aussi par `controlProps` donnerait deux sources pour la
|
|
2457
|
+
* même chose, dont l'une serait silencieusement écrasée.
|
|
2458
|
+
*/
|
|
2459
|
+
type FieldPilotedKey = "value" | "defaultValue" | "onChange" | "onValueChange" | "onCheckedChange" | "onFilesChange" | "checked" | "defaultChecked" | "name" | "id" | "options" | "placeholder" | "disabled" | "children";
|
|
2460
|
+
/**
|
|
2461
|
+
* Distributif : un `Omit` posé sur l'union entière n'en garderait que les
|
|
2462
|
+
* clés communes, et `searchable` ou `maxLength` disparaîtraient.
|
|
2463
|
+
*/
|
|
2464
|
+
type FieldControlSlot<P> = P extends unknown ? Partial<Omit<P, FieldPilotedKey>> : never;
|
|
1755
2465
|
/**
|
|
1756
2466
|
* Un branchement de formulaire, quel que soit le type exact de sa valeur.
|
|
1757
2467
|
*
|
|
@@ -1797,6 +2507,7 @@ interface FieldProps {
|
|
|
1797
2507
|
success?: ReactNode;
|
|
1798
2508
|
required?: boolean;
|
|
1799
2509
|
optional?: boolean;
|
|
2510
|
+
/** La mention des champs facultatifs. Par défaut, `optional` de la locale. */
|
|
1800
2511
|
optionalLabel?: ReactNode;
|
|
1801
2512
|
htmlFor?: string;
|
|
1802
2513
|
orientation?: "vertical" | "horizontal";
|
|
@@ -1810,9 +2521,20 @@ interface FieldProps {
|
|
|
1810
2521
|
controlLabel?: ReactNode;
|
|
1811
2522
|
placeholder?: string;
|
|
1812
2523
|
disabled?: boolean;
|
|
1813
|
-
|
|
2524
|
+
/**
|
|
2525
|
+
* Réglages du contrôle que `type` choisit — `searchable` d'un `Select`,
|
|
2526
|
+
* `maxLength` d'un `Input`, `accept` d'un `FileUpload`. Pour `radio`, ils
|
|
2527
|
+
* vont au `RadioGroup`.
|
|
2528
|
+
*
|
|
2529
|
+
* Appliqués sous ce que le champ pilote : valeur, changement, nom,
|
|
2530
|
+
* identifiant, options, texte indicatif et désactivation gardent leurs
|
|
2531
|
+
* props dédiées. Ignorés quand le contrôle est fourni en `children`.
|
|
2532
|
+
*/
|
|
2533
|
+
controlProps?: FieldControlSlot<InputProps | TextareaProps | CurrencyInputProps | DatePickerProps | TimePickerProps | DateTimePickerProps | SelectProps | MultiSelectProps | RadioGroupProps | CheckboxProps | SwitchProps | FileUploadProps | ImageUploadProps | SliderProps | RatingProps | ColorPickerProps | RichTextEditorProps | MarkdownEditorProps | JsonEditorProps | OtpInputProps | TagsInputProps | AutocompleteProps | ReferenceSelectProps>;
|
|
1814
2534
|
children?: ReactElement<FieldControlProps>;
|
|
1815
2535
|
}
|
|
2536
|
+
/** Les réglages qu'accepte `controlProps`, pour les composer hors du JSX. */
|
|
2537
|
+
type FieldControlOverrides = NonNullable<FieldProps["controlProps"]>;
|
|
1816
2538
|
/**
|
|
1817
2539
|
* Le champ, et tout ce qui l'entoure.
|
|
1818
2540
|
*
|
|
@@ -1834,6 +2556,17 @@ interface FormFieldConfig extends Omit<FieldProps, "field" | "name"> {
|
|
|
1834
2556
|
/** Nombre de colonnes occupées. Ignoré sur une seule colonne. */
|
|
1835
2557
|
colSpan?: number;
|
|
1836
2558
|
rowSpan?: number;
|
|
2559
|
+
/**
|
|
2560
|
+
* Une vérification qui demande le serveur — un identifiant libre, un nom
|
|
2561
|
+
* de domaine disponible. Rend le message d'erreur, ou rien.
|
|
2562
|
+
*
|
|
2563
|
+
* Relancée après la frappe (`asyncValidationDelay`), annulée à la frappe
|
|
2564
|
+
* suivante par son `signal`. Pendant la vérification le champ l'annonce,
|
|
2565
|
+
* et l'envoi attend ; une valeur refusée bloque l'envoi.
|
|
2566
|
+
*/
|
|
2567
|
+
validateAsync?: AsyncFieldValidator<FieldValue>;
|
|
2568
|
+
/** Affiché sous le champ quand `validateAsync` accepte la valeur. */
|
|
2569
|
+
validText?: ReactNode;
|
|
1837
2570
|
}
|
|
1838
2571
|
/** Un groupe de champs, avec son titre et sa propre grille. */
|
|
1839
2572
|
interface FormFieldGroup {
|
|
@@ -1875,10 +2608,18 @@ interface FormProps<TValues extends FormShape = FormShape> {
|
|
|
1875
2608
|
*/
|
|
1876
2609
|
onSubmit?: (values: TValues) => FormSubmitResult<TValues> | Promise<FormSubmitResult<TValues>>;
|
|
1877
2610
|
columns?: number;
|
|
2611
|
+
/** Le texte du bouton d'envoi. Par défaut, `save` de la locale. */
|
|
1878
2612
|
submitText?: ReactNode;
|
|
2613
|
+
/** Le texte du bouton de remise à zéro. Par défaut, `reset` de la locale. */
|
|
1879
2614
|
clearText?: ReactNode;
|
|
1880
2615
|
showClear?: boolean;
|
|
2616
|
+
/**
|
|
2617
|
+
* Les props du bouton d'envoi. `disabled` s'ajoute aux conditions du
|
|
2618
|
+
* formulaire au lieu d'être remplacé par elles.
|
|
2619
|
+
*/
|
|
1881
2620
|
submitProps?: ButtonProps;
|
|
2621
|
+
/** Millisecondes sans frappe avant une vérification `validateAsync`. 400 par défaut. */
|
|
2622
|
+
asyncValidationDelay?: number;
|
|
1882
2623
|
/** Remplace entièrement la barre de boutons. */
|
|
1883
2624
|
actions?: ReactNode;
|
|
1884
2625
|
loading?: boolean;
|
|
@@ -1887,6 +2628,26 @@ interface FormProps<TValues extends FormShape = FormShape> {
|
|
|
1887
2628
|
/** Désactive l'envoi tant qu'une erreur est en vigueur. */
|
|
1888
2629
|
requireValid?: boolean;
|
|
1889
2630
|
className?: string;
|
|
2631
|
+
/**
|
|
2632
|
+
* Les props communes à tous les champs — orientation, libellé
|
|
2633
|
+
* « facultatif », `controlProps`. Chaque champ déclaré dans `fields`
|
|
2634
|
+
* l'emporte sur elles.
|
|
2635
|
+
*
|
|
2636
|
+
* Sans ce que le formulaire branche lui-même : le nom, la valeur, le
|
|
2637
|
+
* changement et la sortie de champ (`field`), ni les messages d'erreur et
|
|
2638
|
+
* de validation, qui sont propres à chaque champ.
|
|
2639
|
+
*/
|
|
2640
|
+
fieldProps?: Partial<Omit<FieldProps, "field" | "name" | "value" | "defaultValue" | "onValueChange" | "onBlur" | "error" | "success" | "message">>;
|
|
2641
|
+
/**
|
|
2642
|
+
* Les props de l'`Alert` qui annonce un échec d'envoi. Sans `children`, le
|
|
2643
|
+
* message d'échec, ni `onDismiss`, qui l'efface.
|
|
2644
|
+
*/
|
|
2645
|
+
alertProps?: Partial<Omit<AlertProps, "children" | "onDismiss">>;
|
|
2646
|
+
/**
|
|
2647
|
+
* Les props du `Spinner` d'une vérification `validateAsync` en cours.
|
|
2648
|
+
* Sans `label`, repris de la locale comme le texte qui l'accompagne.
|
|
2649
|
+
*/
|
|
2650
|
+
spinnerProps?: Partial<Omit<SpinnerProps, "label">>;
|
|
1890
2651
|
}
|
|
1891
2652
|
/**
|
|
1892
2653
|
* Un formulaire décrit par ses champs.
|
|
@@ -1908,7 +2669,7 @@ interface FormProps<TValues extends FormShape = FormShape> {
|
|
|
1908
2669
|
* />
|
|
1909
2670
|
* ```
|
|
1910
2671
|
*/
|
|
1911
|
-
declare function Form<TValues extends FormShape = FormShape>({ fields, form: adapter, defaultValues, validate, onSubmit, columns, submitText, clearText, showClear, submitProps, actions, loading, requireDirty, requireValid, className, }: FormProps<TValues>): react_jsx_runtime.JSX.Element;
|
|
2672
|
+
declare function Form<TValues extends FormShape = FormShape>({ fields, form: adapter, defaultValues, validate, onSubmit, columns, submitText, clearText, showClear, submitProps, actions, loading, requireDirty, requireValid, asyncValidationDelay, className, fieldProps, alertProps, spinnerProps, }: FormProps<TValues>): react_jsx_runtime.JSX.Element;
|
|
1912
2673
|
|
|
1913
2674
|
/**
|
|
1914
2675
|
* La description d'un objet métier, écrite une seule fois.
|
|
@@ -1998,6 +2759,13 @@ interface ResourceField<T = unknown> {
|
|
|
1998
2759
|
tones?: Record<string, ComponentTone>;
|
|
1999
2760
|
/** Le rendu en tableau et en détail. Écrase celui déduit du type. */
|
|
2000
2761
|
render?: (row: T, index: number) => ReactNode;
|
|
2762
|
+
/**
|
|
2763
|
+
* Les props du contrôle de saisie, transmises telles quelles par le
|
|
2764
|
+
* formulaire : `{ searchable: true }` pour un `select` long, `{ maxLength }`
|
|
2765
|
+
* pour un texte. Sans elles, régler le contrôle obligeait à redéclarer tous
|
|
2766
|
+
* les champs dans la page.
|
|
2767
|
+
*/
|
|
2768
|
+
controlProps?: FieldControlOverrides;
|
|
2001
2769
|
/**
|
|
2002
2770
|
* Une valeur calculée plutôt que lue sur la ligne.
|
|
2003
2771
|
*
|
|
@@ -2087,8 +2855,12 @@ declare function resourceFormFields<T>(resource: ResourceDefinition<T>, mode?: R
|
|
|
2087
2855
|
*
|
|
2088
2856
|
* Un champ `email` valide une adresse sans qu'on le demande : le type le dit
|
|
2089
2857
|
* déjà. Les règles déclarées s'y ajoutent, elles ne les remplacent pas.
|
|
2858
|
+
*
|
|
2859
|
+
* `messages` — `locale.resource`, lu avec `useSiaLocale()` — donne leurs
|
|
2860
|
+
* textes aux règles imposées ; `CrudPage` le passe. À défaut, les messages
|
|
2861
|
+
* par défaut de `@sia-ui/utils/validation`.
|
|
2090
2862
|
*/
|
|
2091
|
-
declare function resourceValidator<T>(resource: ResourceDefinition<T>, mode?: ResourceFormMode): FormValidator<FormShape> | undefined;
|
|
2863
|
+
declare function resourceValidator<T>(resource: ResourceDefinition<T>, mode?: ResourceFormMode, messages?: ResourceMessages): FormValidator<FormShape> | undefined;
|
|
2092
2864
|
/** Les clés que la recherche locale parcourt. */
|
|
2093
2865
|
declare function resourceSearchKeys<T>(resource: ResourceDefinition<T>): string[];
|
|
2094
2866
|
/** Les valeurs de départ d'une création : les champs du mode `create`. */
|
|
@@ -2109,6 +2881,28 @@ declare function resourcePermissions<T>(resource: ResourceDefinition<T>): {
|
|
|
2109
2881
|
delete?: PermissionRule;
|
|
2110
2882
|
};
|
|
2111
2883
|
|
|
2884
|
+
interface DescriptionItem {
|
|
2885
|
+
key: string;
|
|
2886
|
+
label: ReactNode;
|
|
2887
|
+
value: ReactNode;
|
|
2888
|
+
span?: 1 | 2 | 3;
|
|
2889
|
+
}
|
|
2890
|
+
interface DescriptionsProps {
|
|
2891
|
+
items: DescriptionItem[];
|
|
2892
|
+
title?: ReactNode;
|
|
2893
|
+
columns?: 1 | 2 | 3;
|
|
2894
|
+
bordered?: boolean;
|
|
2895
|
+
className?: string;
|
|
2896
|
+
}
|
|
2897
|
+
/**
|
|
2898
|
+
* Des paires libellé / valeur, en colonnes.
|
|
2899
|
+
*
|
|
2900
|
+
* C'est la forme d'une fiche en lecture — ce qu'un formulaire montre quand
|
|
2901
|
+
* il n'y a rien à saisir. `span` laisse une valeur longue occuper toute la
|
|
2902
|
+
* ligne plutôt que d'être coupée dans une colonne étroite.
|
|
2903
|
+
*/
|
|
2904
|
+
declare function Descriptions({ items, title, columns, bordered, className }: DescriptionsProps): react_jsx_runtime.JSX.Element;
|
|
2905
|
+
|
|
2112
2906
|
/** Laquelle des trois boîtes est ouverte, et sur quelle ligne. */
|
|
2113
2907
|
interface CrudDialogState<T> {
|
|
2114
2908
|
mode: "create" | "edit" | "view";
|
|
@@ -2129,6 +2923,26 @@ interface CrudDialogOptions {
|
|
|
2129
2923
|
/** Colonnes de la vue de détail. */
|
|
2130
2924
|
detailColumns?: 1 | 2 | 3;
|
|
2131
2925
|
}
|
|
2926
|
+
/**
|
|
2927
|
+
* Les props des deux `Modal` — formulaire et détail — qu'on peut régler.
|
|
2928
|
+
*
|
|
2929
|
+
* Sans `open` ni `onOpenChange`, qui suivent l'état des boîtes, ni
|
|
2930
|
+
* `children`. Sans `title` ni `description` non plus : ils diffèrent d'une
|
|
2931
|
+
* boîte à l'autre et se règlent par `dialog`. `className` s'ajoute à celui
|
|
2932
|
+
* des boîtes.
|
|
2933
|
+
*/
|
|
2934
|
+
type CrudModalProps = Partial<Omit<ModalProps, "open" | "onOpenChange" | "children" | "title" | "description">>;
|
|
2935
|
+
/**
|
|
2936
|
+
* Les props du `Form` de création et de modification qu'on peut régler —
|
|
2937
|
+
* `showClear`, `submitProps`, `fieldProps`.
|
|
2938
|
+
*
|
|
2939
|
+
* Sans ce que la boîte branche elle-même : les champs, les valeurs de
|
|
2940
|
+
* départ, la validation et l'envoi, qui ont leurs props sur la page ; ni
|
|
2941
|
+
* l'adaptateur `form`, qui couperait la boîte de ses propres valeurs.
|
|
2942
|
+
*/
|
|
2943
|
+
type CrudFormProps = Partial<Omit<FormProps, "fields" | "defaultValues" | "validate" | "onSubmit" | "form">>;
|
|
2944
|
+
/** Les props de la vue de détail par défaut. Sans `items`, tirés des colonnes. */
|
|
2945
|
+
type CrudDescriptionsProps = Partial<Omit<DescriptionsProps, "items">>;
|
|
2132
2946
|
interface CrudDialogsProps<T> {
|
|
2133
2947
|
state: CrudDialogState<T> | null;
|
|
2134
2948
|
onClose: () => void;
|
|
@@ -2152,6 +2966,12 @@ interface CrudDialogsProps<T> {
|
|
|
2152
2966
|
renderDetail?: ((row: T, index: number) => ReactNode) | undefined;
|
|
2153
2967
|
getRowKey?: ((row: T, index: number) => Key) | undefined;
|
|
2154
2968
|
dialog?: CrudDialogOptions | undefined;
|
|
2969
|
+
/** Voir `CrudModalProps`. */
|
|
2970
|
+
modalProps?: CrudModalProps | undefined;
|
|
2971
|
+
/** Voir `CrudFormProps`. */
|
|
2972
|
+
formProps?: CrudFormProps | undefined;
|
|
2973
|
+
/** Voir `CrudDescriptionsProps`. */
|
|
2974
|
+
descriptionsProps?: CrudDescriptionsProps | undefined;
|
|
2155
2975
|
}
|
|
2156
2976
|
/**
|
|
2157
2977
|
* Les boîtes du CRUD : créer, modifier, consulter.
|
|
@@ -2161,7 +2981,7 @@ interface CrudDialogsProps<T> {
|
|
|
2161
2981
|
* laquelle ouvrir, avec quelles valeurs, et de refermer une fois l'envoi
|
|
2162
2982
|
* passé.
|
|
2163
2983
|
*/
|
|
2164
|
-
declare function CrudDialogs<T>({ state, onClose, columns, fields: champsCreation, validate: validationCreation, editFields, editValidate, onSubmit, createDefaults, toFormValues, renderDetail, getRowKey, dialog, }: CrudDialogsProps<T>): react_jsx_runtime.JSX.Element;
|
|
2984
|
+
declare function CrudDialogs<T>({ state, onClose, columns, fields: champsCreation, validate: validationCreation, editFields, editValidate, onSubmit, createDefaults, toFormValues, renderDetail, getRowKey, dialog, modalProps, formProps, descriptionsProps, }: CrudDialogsProps<T>): react_jsx_runtime.JSX.Element;
|
|
2165
2985
|
|
|
2166
2986
|
/**
|
|
2167
2987
|
* La personnalisation d'une action standard.
|
|
@@ -2312,7 +3132,32 @@ interface CrudPageBase<T> {
|
|
|
2312
3132
|
* est là pour que TypeScript exige l'une ou l'autre — une page sans colonnes
|
|
2313
3133
|
* ni ressource ne montrerait rien, et le dirait à l'exécution.
|
|
2314
3134
|
*/
|
|
2315
|
-
type CrudPageProps<T> = CrudPageBase<T> &
|
|
3135
|
+
type CrudPageProps<T> = CrudPageBase<T> & {
|
|
3136
|
+
/**
|
|
3137
|
+
* Les props du `PageHeader`. Sans `actions`, composées de
|
|
3138
|
+
* `headerActions` et du bouton de création. `className` s'ajoute.
|
|
3139
|
+
*/
|
|
3140
|
+
pageHeaderProps?: Partial<Omit<PageHeaderProps, "actions">>;
|
|
3141
|
+
/**
|
|
3142
|
+
* Les props du bouton de création. Sans `onClick`, qui ouvre le
|
|
3143
|
+
* formulaire, ni `children` : le libellé passe par
|
|
3144
|
+
* `operations.create.label`.
|
|
3145
|
+
*/
|
|
3146
|
+
createButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children">>;
|
|
3147
|
+
/** Les props du bouton de suppression groupée. Sans `onClick`. */
|
|
3148
|
+
bulkDeleteButtonProps?: Partial<Omit<ButtonProps, "onClick">>;
|
|
3149
|
+
/**
|
|
3150
|
+
* Les props de la `Pagination` — `jumpTo`, `compact`, `siblingCount`.
|
|
3151
|
+
* Sans `page`, `totalPages` ni `onPageChange`, qui ont leurs props ici.
|
|
3152
|
+
*/
|
|
3153
|
+
paginationProps?: Partial<Omit<PaginationProps, "page" | "totalPages" | "onPageChange">>;
|
|
3154
|
+
/** Les props des `Modal` de formulaire et de détail — voir `CrudModalProps`. */
|
|
3155
|
+
modalProps?: CrudModalProps;
|
|
3156
|
+
/** Les props du `Form` des boîtes — voir `CrudFormProps`. */
|
|
3157
|
+
formProps?: CrudFormProps;
|
|
3158
|
+
/** Les props de la vue de détail par défaut — voir `CrudDescriptionsProps`. */
|
|
3159
|
+
descriptionsProps?: CrudDescriptionsProps;
|
|
3160
|
+
} & ({
|
|
2316
3161
|
/**
|
|
2317
3162
|
* La ressource, déclarée une fois avec `defineResource`.
|
|
2318
3163
|
*
|
|
@@ -2336,7 +3181,7 @@ type CrudPageProps<T> = CrudPageBase<T> & ({
|
|
|
2336
3181
|
*
|
|
2337
3182
|
* Ici, fournir le gestionnaire suffit. Ne pas le fournir retire l'action.
|
|
2338
3183
|
*/
|
|
2339
|
-
declare function CrudPage<T>({ resource, title, description, eyebrow, headingLevel, columns: colonnesFournies, data, getRowKey: cleFournie, onCreate, onView, onEdit, onDelete, fields: champsFournis, onSubmit, validate: validationFournie, createDefaults, toFormValues, detail, dialog, operations, extraRowActions, onBulkDelete, can, headerActions, toolbar, searchKeys: clesDeRecherche, searchPlaceholder, onSearch, searchDelay, loading, error, onRetry, empty, page, totalPages, onPageChange, pageSize, onPageSizeChange, pageSizeOptions, table, children, className, }: CrudPageProps<T>): react_jsx_runtime.JSX.Element;
|
|
3184
|
+
declare function CrudPage<T>({ resource, title, description, eyebrow, headingLevel, columns: colonnesFournies, data, getRowKey: cleFournie, onCreate, onView, onEdit, onDelete, fields: champsFournis, onSubmit, validate: validationFournie, createDefaults, toFormValues, detail, dialog, operations, extraRowActions, onBulkDelete, can, headerActions, toolbar, searchKeys: clesDeRecherche, searchPlaceholder, onSearch, searchDelay, loading, error, onRetry, empty, page, totalPages, onPageChange, pageSize, onPageSizeChange, pageSizeOptions, table, children, className, pageHeaderProps, createButtonProps, bulkDeleteButtonProps, paginationProps, modalProps, formProps, descriptionsProps, }: CrudPageProps<T>): react_jsx_runtime.JSX.Element;
|
|
2340
3185
|
|
|
2341
3186
|
/**
|
|
2342
3187
|
* L'état du tableau dans la barre d'adresse.
|
|
@@ -2425,7 +3270,7 @@ declare function useDataTableQuery(options?: UseDataTableQueryOptions): TableQue
|
|
|
2425
3270
|
* elle filtre les lignes déjà chargées — ce qui suffit tant que tout tient
|
|
2426
3271
|
* sur une page.
|
|
2427
3272
|
*/
|
|
2428
|
-
declare function DataTable<T>({ columns, data, getRowKey, title, description, toolbar, actions, searchKeys, searchPlaceholder, onSearch, searchDelay, layout, maxHeight, stickyHeader, density, striped, bordered, rowActions, inlineActionsLimit, actionsHeader, actionsDisplay, can, view: viewProp, defaultView, onViewChange, showViewToggle, responsive, cardsBreakpoint, renderCard, loading, skeletonRows, error, onRetry, empty, selectable, selectedKeys: selectedProp, defaultSelectedKeys, onSelectionChange, isRowSelectable, selectionActions, sort, onSortChange, onRowClick, rowClassName, caption, className, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
3273
|
+
declare function DataTable<T>({ columns, data, getRowKey, title, description, toolbar, actions, searchKeys, searchPlaceholder, onSearch, searchDelay, searchInputProps, layout, maxHeight, stickyHeader, density, striped, bordered, rowActions, inlineActionsLimit, actionsHeader, actionsDisplay, rowActionButtonProps, rowActionIconButtonProps, rowActionsMenuProps, confirmDialogProps, can, view: viewProp, defaultView, onViewChange, showViewToggle, responsive, cardsBreakpoint, renderCard, loading, skeletonRows, skeletonProps, error, onRetry, errorStateProps, empty, emptyStateProps, selectable, selectedKeys: selectedProp, defaultSelectedKeys, onSelectionChange, isRowSelectable, checkboxProps, selectionActions, sort, onSortChange, onRowClick, rowClassName, caption, className, }: DataTableProps<T>): react_jsx_runtime.JSX.Element;
|
|
2429
3274
|
|
|
2430
3275
|
type DateRangeValue = CalendarRangeValue;
|
|
2431
3276
|
interface DateRangePickerProps extends Pick<CalendarProps, "locale" | "firstDayOfWeek" | "disabledDate" | "cellRender" | "showWeek"> {
|
|
@@ -2434,10 +3279,14 @@ interface DateRangePickerProps extends Pick<CalendarProps, "locale" | "firstDayO
|
|
|
2434
3279
|
onValueChange?: (value: DateRangeValue) => void;
|
|
2435
3280
|
min?: string;
|
|
2436
3281
|
max?: string;
|
|
3282
|
+
/** Par défaut, « Date de début » de la locale SIA. */
|
|
2437
3283
|
startLabel?: string;
|
|
3284
|
+
/** Par défaut, « Date de fin » de la locale SIA. */
|
|
2438
3285
|
endLabel?: string;
|
|
2439
3286
|
allowClear?: boolean;
|
|
2440
3287
|
placement?: OverlayPlacement;
|
|
3288
|
+
/** Réglages du panneau flottant — décalage, marge au bord, classe. */
|
|
3289
|
+
overlayProps?: Partial<Omit<OverlayProps, "open" | "anchorRef" | "onOpenChange" | "children">>;
|
|
2441
3290
|
tone?: ComponentTone;
|
|
2442
3291
|
invalid?: boolean;
|
|
2443
3292
|
disabled?: boolean;
|
|
@@ -2450,7 +3299,7 @@ interface DateRangePickerProps extends Pick<CalendarProps, "locale" | "firstDayO
|
|
|
2450
3299
|
* faut alors décider lequel des deux avait tort. Ici les deux bornes sont
|
|
2451
3300
|
* une seule valeur, et le calendrier les tient dans l'ordre.
|
|
2452
3301
|
*/
|
|
2453
|
-
declare function DateRangePicker({ value, defaultValue, onValueChange, min, max, startLabel, endLabel, allowClear, placement, tone, invalid, disabled, locale, firstDayOfWeek, disabledDate, cellRender, showWeek, className }: DateRangePickerProps): react_jsx_runtime.JSX.Element;
|
|
3302
|
+
declare function DateRangePicker({ value, defaultValue, onValueChange, min, max, startLabel: startLabelProp, endLabel: endLabelProp, allowClear, placement, overlayProps, tone, invalid, disabled, locale: localeProp, firstDayOfWeek, disabledDate, cellRender, showWeek, className }: DateRangePickerProps): react_jsx_runtime.JSX.Element;
|
|
2454
3303
|
|
|
2455
3304
|
interface DateRangePreset {
|
|
2456
3305
|
label: ReactNode;
|
|
@@ -2461,6 +3310,8 @@ interface DateRangeFilterProps {
|
|
|
2461
3310
|
onValueChange: (value: DateRangeValue) => void;
|
|
2462
3311
|
presets?: DateRangePreset[];
|
|
2463
3312
|
onClear?: () => void;
|
|
3313
|
+
/** Réglages du sélecteur de période — bornes, libellés, jours désactivés. */
|
|
3314
|
+
dateRangePickerProps?: Partial<Omit<DateRangePickerProps, "value" | "defaultValue" | "onValueChange">>;
|
|
2464
3315
|
className?: string;
|
|
2465
3316
|
}
|
|
2466
3317
|
/**
|
|
@@ -2470,29 +3321,7 @@ interface DateRangeFilterProps {
|
|
|
2470
3321
|
* l'exercice — et les proposer évite de saisir deux dates pour la question
|
|
2471
3322
|
* que tout le monde pose en premier.
|
|
2472
3323
|
*/
|
|
2473
|
-
declare function DateRangeFilter({ value, onValueChange, presets, onClear, className }: DateRangeFilterProps): react_jsx_runtime.JSX.Element;
|
|
2474
|
-
|
|
2475
|
-
interface DescriptionItem {
|
|
2476
|
-
key: string;
|
|
2477
|
-
label: ReactNode;
|
|
2478
|
-
value: ReactNode;
|
|
2479
|
-
span?: 1 | 2 | 3;
|
|
2480
|
-
}
|
|
2481
|
-
interface DescriptionsProps {
|
|
2482
|
-
items: DescriptionItem[];
|
|
2483
|
-
title?: ReactNode;
|
|
2484
|
-
columns?: 1 | 2 | 3;
|
|
2485
|
-
bordered?: boolean;
|
|
2486
|
-
className?: string;
|
|
2487
|
-
}
|
|
2488
|
-
/**
|
|
2489
|
-
* Des paires libellé / valeur, en colonnes.
|
|
2490
|
-
*
|
|
2491
|
-
* C'est la forme d'une fiche en lecture — ce qu'un formulaire montre quand
|
|
2492
|
-
* il n'y a rien à saisir. `span` laisse une valeur longue occuper toute la
|
|
2493
|
-
* ligne plutôt que d'être coupée dans une colonne étroite.
|
|
2494
|
-
*/
|
|
2495
|
-
declare function Descriptions({ items, title, columns, bordered, className }: DescriptionsProps): react_jsx_runtime.JSX.Element;
|
|
3324
|
+
declare function DateRangeFilter({ value, onValueChange, presets, onClear, dateRangePickerProps, className }: DateRangeFilterProps): react_jsx_runtime.JSX.Element;
|
|
2496
3325
|
|
|
2497
3326
|
interface DividerProps extends HTMLAttributes<HTMLDivElement> {
|
|
2498
3327
|
orientation?: "horizontal" | "vertical";
|
|
@@ -2507,135 +3336,8 @@ interface DividerProps extends HTMLAttributes<HTMLDivElement> {
|
|
|
2507
3336
|
*/
|
|
2508
3337
|
declare function Divider({ orientation, decorative, className, ...props }: DividerProps): react_jsx_runtime.JSX.Element;
|
|
2509
3338
|
|
|
2510
|
-
/** Ce que la réf impérative expose — ouvrir un tiroir depuis l'extérieur. */
|
|
2511
|
-
type DrawerRef = {
|
|
2512
|
-
open: () => void;
|
|
2513
|
-
close: () => void;
|
|
2514
|
-
toggle: () => void;
|
|
2515
|
-
isOpen: () => boolean;
|
|
2516
|
-
};
|
|
2517
|
-
type DrawerPosition = "left" | "right" | "top" | "bottom";
|
|
2518
|
-
type DrawerSize = "sm" | "md" | "lg" | "xl";
|
|
2519
|
-
interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
2520
|
-
open?: boolean;
|
|
2521
|
-
defaultOpen?: boolean;
|
|
2522
|
-
onOpenChange?: (open: boolean) => void;
|
|
2523
|
-
position?: DrawerPosition;
|
|
2524
|
-
size?: DrawerSize;
|
|
2525
|
-
closeOnOutsideClick?: boolean;
|
|
2526
|
-
closeOnEsc?: boolean;
|
|
2527
|
-
}
|
|
2528
|
-
/** Alias historique, attendu par les composants venus du registre. */
|
|
2529
|
-
type IDrawerProps = DrawerProps;
|
|
2530
|
-
type DrawerComponent = ForwardRefExoticComponent<IDrawerProps & RefAttributes<DrawerRef>> & {
|
|
2531
|
-
Header: typeof DrawerHeader;
|
|
2532
|
-
Body: typeof DrawerBody;
|
|
2533
|
-
Footer: typeof DrawerFooter;
|
|
2534
|
-
Title: typeof DrawerTitle;
|
|
2535
|
-
Close: typeof DrawerClose;
|
|
2536
|
-
};
|
|
2537
|
-
/**
|
|
2538
|
-
* Un panneau qui entre par un bord.
|
|
2539
|
-
*
|
|
2540
|
-
* Il sert là où une boîte modale serait trop : un filtre qu'on ajuste en
|
|
2541
|
-
* regardant la liste derrière, un formulaire qu'on remplit sans perdre sa
|
|
2542
|
-
* place. Le focus y est enfermé tant qu'il est ouvert, comme dans un
|
|
2543
|
-
* modal — sans quoi la tabulation continue dans la page cachée.
|
|
2544
|
-
*/
|
|
2545
|
-
declare const Drawer: DrawerComponent;
|
|
2546
|
-
declare function DrawerHeader({ children }: {
|
|
2547
|
-
children: React.ReactNode;
|
|
2548
|
-
}): react_jsx_runtime.JSX.Element;
|
|
2549
|
-
declare function DrawerTitle({ children }: {
|
|
2550
|
-
children: React.ReactNode;
|
|
2551
|
-
}): react_jsx_runtime.JSX.Element;
|
|
2552
|
-
declare function DrawerBody({ children }: {
|
|
2553
|
-
children: React.ReactNode;
|
|
2554
|
-
}): react_jsx_runtime.JSX.Element;
|
|
2555
|
-
declare function DrawerFooter({ children }: {
|
|
2556
|
-
children: React.ReactNode;
|
|
2557
|
-
}): react_jsx_runtime.JSX.Element;
|
|
2558
|
-
declare function DrawerClose(): react_jsx_runtime.JSX.Element | null;
|
|
2559
|
-
|
|
2560
|
-
interface MenuItem {
|
|
2561
|
-
key: string;
|
|
2562
|
-
label: ReactNode;
|
|
2563
|
-
icon?: ReactNode;
|
|
2564
|
-
/** Un raccourci affiché à droite. Purement indicatif : rien n'est écouté. */
|
|
2565
|
-
shortcut?: string;
|
|
2566
|
-
disabled?: boolean;
|
|
2567
|
-
danger?: boolean;
|
|
2568
|
-
/** Affiche une coche. `undefined` : l'entrée n'est pas cochable. */
|
|
2569
|
-
checked?: boolean;
|
|
2570
|
-
description?: ReactNode;
|
|
2571
|
-
onSelect?: () => void;
|
|
2572
|
-
}
|
|
2573
|
-
interface MenuSeparator {
|
|
2574
|
-
key: string;
|
|
2575
|
-
type: "separator";
|
|
2576
|
-
}
|
|
2577
|
-
interface MenuLabel {
|
|
2578
|
-
key: string;
|
|
2579
|
-
type: "label";
|
|
2580
|
-
label: ReactNode;
|
|
2581
|
-
}
|
|
2582
|
-
type MenuEntry = MenuItem | MenuSeparator | MenuLabel;
|
|
2583
|
-
interface MenuListProps {
|
|
2584
|
-
items: MenuEntry[];
|
|
2585
|
-
onSelect: (item: MenuItem) => void;
|
|
2586
|
-
onClose: () => void;
|
|
2587
|
-
/** Index actif, piloté par le parent pour que le clavier suive. */
|
|
2588
|
-
activeIndex: number;
|
|
2589
|
-
onActiveIndexChange: (index: number) => void;
|
|
2590
|
-
id?: string | undefined;
|
|
2591
|
-
className?: string | undefined;
|
|
2592
|
-
}
|
|
2593
|
-
/**
|
|
2594
|
-
* Le panneau seul, sans déclencheur.
|
|
2595
|
-
*
|
|
2596
|
-
* Extrait parce que `DropdownMenu` et `ContextMenu` n'ont en commun que lui :
|
|
2597
|
-
* tout le reste — l'ancrage, le geste d'ouverture — diffère.
|
|
2598
|
-
*/
|
|
2599
|
-
declare function MenuList({ items, onSelect, onClose, activeIndex, onActiveIndexChange, id, className, }: MenuListProps): react_jsx_runtime.JSX.Element;
|
|
2600
|
-
interface DropdownMenuProps {
|
|
2601
|
-
items: MenuEntry[];
|
|
2602
|
-
children: ReactElement<{
|
|
2603
|
-
onClick?: () => void;
|
|
2604
|
-
"aria-expanded"?: boolean;
|
|
2605
|
-
}>;
|
|
2606
|
-
onSelect?: (item: MenuItem) => void;
|
|
2607
|
-
open?: boolean;
|
|
2608
|
-
defaultOpen?: boolean;
|
|
2609
|
-
onOpenChange?: (open: boolean) => void;
|
|
2610
|
-
placement?: OverlayPlacement;
|
|
2611
|
-
matchTriggerWidth?: boolean;
|
|
2612
|
-
className?: string;
|
|
2613
|
-
}
|
|
2614
|
-
/**
|
|
2615
|
-
* Un menu accroché à un bouton.
|
|
2616
|
-
*
|
|
2617
|
-
* Il repose sur `Overlay` : le repositionnement quand la place manque en bas,
|
|
2618
|
-
* la fermeture au clic extérieur et à Échap sont déjà là et ne sont pas
|
|
2619
|
-
* réécrites ici.
|
|
2620
|
-
*/
|
|
2621
|
-
declare function DropdownMenu({ items, children, onSelect, open: openProp, defaultOpen, onOpenChange, placement, matchTriggerWidth, className, }: DropdownMenuProps): react_jsx_runtime.JSX.Element;
|
|
2622
|
-
interface ContextMenuProps {
|
|
2623
|
-
items: MenuEntry[];
|
|
2624
|
-
children: ReactNode;
|
|
2625
|
-
onSelect?: (item: MenuItem) => void;
|
|
2626
|
-
className?: string;
|
|
2627
|
-
}
|
|
2628
|
-
/**
|
|
2629
|
-
* Le même menu, ouvert au clic droit sur une zone.
|
|
2630
|
-
*
|
|
2631
|
-
* L'ancre est un point, pas un élément : un repère de taille nulle est posé
|
|
2632
|
-
* aux coordonnées du pointeur et confié à `Overlay`, qui ne voit pas la
|
|
2633
|
-
* différence. C'est ce qui évite un second moteur de placement.
|
|
2634
|
-
*/
|
|
2635
|
-
declare function ContextMenu({ items, children, onSelect, className, }: ContextMenuProps): react_jsx_runtime.JSX.Element;
|
|
2636
|
-
|
|
2637
3339
|
interface DurationDisplayProps {
|
|
2638
|
-
milliseconds: number;
|
|
3340
|
+
milliseconds: number; /** La langue des nombres et des unités. Par défaut, celle de la locale SIA. */
|
|
2639
3341
|
locale?: string;
|
|
2640
3342
|
style?: "short" | "long" | "clock";
|
|
2641
3343
|
className?: string;
|
|
@@ -2646,24 +3348,7 @@ interface DurationDisplayProps {
|
|
|
2646
3348
|
* Trois styles pour trois usages : `clock` pour un chronomètre qu'on lit en
|
|
2647
3349
|
* continu, `short` pour une colonne de tableau, `long` pour une phrase.
|
|
2648
3350
|
*/
|
|
2649
|
-
declare function DurationDisplay({ milliseconds, locale, style, className }: DurationDisplayProps): react_jsx_runtime.JSX.Element;
|
|
2650
|
-
|
|
2651
|
-
interface EmptyStateProps {
|
|
2652
|
-
icon?: ReactNode;
|
|
2653
|
-
title: ReactNode;
|
|
2654
|
-
description?: ReactNode;
|
|
2655
|
-
action?: ReactNode;
|
|
2656
|
-
compact?: boolean;
|
|
2657
|
-
className?: string;
|
|
2658
|
-
}
|
|
2659
|
-
/**
|
|
2660
|
-
* Ce qu'on montre quand il n'y a rien.
|
|
2661
|
-
*
|
|
2662
|
-
* Une liste vide sans explication ressemble à un chargement bloqué. Elle
|
|
2663
|
-
* porte donc une action : le vide initial est le meilleur moment pour
|
|
2664
|
-
* proposer de créer le premier élément.
|
|
2665
|
-
*/
|
|
2666
|
-
declare function EmptyState({ icon, title, description, action, compact, className }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
3351
|
+
declare function DurationDisplay({ milliseconds, locale: localeProp, style, className }: DurationDisplayProps): react_jsx_runtime.JSX.Element;
|
|
2667
3352
|
|
|
2668
3353
|
interface EntityMetaProps {
|
|
2669
3354
|
createdAt?: Date | string | number;
|
|
@@ -2672,6 +3357,7 @@ interface EntityMetaProps {
|
|
|
2672
3357
|
updatedBy?: ReactNode;
|
|
2673
3358
|
identifier?: string;
|
|
2674
3359
|
status?: ReactNode;
|
|
3360
|
+
/** La langue des dates. Par défaut, celle de la locale SIA. */
|
|
2675
3361
|
locale?: string;
|
|
2676
3362
|
className?: string;
|
|
2677
3363
|
}
|
|
@@ -2682,65 +3368,208 @@ interface EntityMetaProps {
|
|
|
2682
3368
|
* c'est la première chose qu'on demande à un client, et une chaîne de
|
|
2683
3369
|
* trente-six caractères ne se dicte pas.
|
|
2684
3370
|
*/
|
|
2685
|
-
declare function EntityMeta({ createdAt, updatedAt, createdBy, updatedBy, identifier, status, locale, className }: EntityMetaProps): react_jsx_runtime.JSX.Element;
|
|
3371
|
+
declare function EntityMeta({ createdAt, updatedAt, createdBy, updatedBy, identifier, status, locale: localeProp, className }: EntityMetaProps): react_jsx_runtime.JSX.Element;
|
|
2686
3372
|
|
|
2687
|
-
interface
|
|
3373
|
+
interface PopoverProps {
|
|
3374
|
+
content: ReactNode;
|
|
2688
3375
|
title?: ReactNode;
|
|
2689
|
-
|
|
2690
|
-
|
|
2691
|
-
|
|
2692
|
-
|
|
2693
|
-
|
|
2694
|
-
|
|
3376
|
+
children: ReactElement<{
|
|
3377
|
+
onClick?: () => void;
|
|
3378
|
+
"aria-expanded"?: boolean;
|
|
3379
|
+
}>;
|
|
3380
|
+
open?: boolean;
|
|
3381
|
+
defaultOpen?: boolean;
|
|
3382
|
+
onOpenChange?: (open: boolean) => void;
|
|
3383
|
+
placement?: OverlayPlacement;
|
|
3384
|
+
/** Réglages du panneau flottant — décalage, marge au bord, rôle, classe. */
|
|
3385
|
+
overlayProps?: Partial<Omit<OverlayProps, "open" | "anchorRef" | "onOpenChange" | "children">>;
|
|
3386
|
+
trigger?: "click" | "hover";
|
|
3387
|
+
variant?: "solid" | "outline";
|
|
3388
|
+
tone?: ComponentTone;
|
|
3389
|
+
disabled?: boolean;
|
|
2695
3390
|
className?: string;
|
|
2696
3391
|
}
|
|
2697
3392
|
/**
|
|
2698
|
-
* Un
|
|
3393
|
+
* Un panneau attaché à un élément, avec du contenu qu'on peut viser.
|
|
2699
3394
|
*
|
|
2700
|
-
*
|
|
2701
|
-
*
|
|
2702
|
-
*
|
|
2703
|
-
* d'erreur.
|
|
3395
|
+
* À la différence d'une infobulle, il reste ouvert : on y met un lien, un
|
|
3396
|
+
* bouton, un petit formulaire. Une infobulle qui contient un bouton est une
|
|
3397
|
+
* infobulle cassée — elle disparaît dès qu'on va vers lui.
|
|
2704
3398
|
*/
|
|
2705
|
-
declare function
|
|
3399
|
+
declare function Popover({ content, title, children, open: openProp, defaultOpen, onOpenChange, placement, overlayProps, trigger, variant, tone, disabled, className }: PopoverProps): react_jsx_runtime.JSX.Element;
|
|
2706
3400
|
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
|
|
2711
|
-
|
|
2712
|
-
|
|
2713
|
-
|
|
2714
|
-
|
|
3401
|
+
/** Un événement du calendrier. Les champs métier en plus passent tels quels. */
|
|
3402
|
+
interface CalendarEvent extends Omit<CalendarEventInput, "start"> {
|
|
3403
|
+
/** `2026-09-30` pour la journée, `2026-09-30T14:30` pour une heure. */
|
|
3404
|
+
start?: string | undefined;
|
|
3405
|
+
/** @deprecated Ancien nom de `start`, gardé pour les projets existants. */
|
|
3406
|
+
date?: string | undefined;
|
|
3407
|
+
tone?: ComponentTone | undefined;
|
|
3408
|
+
description?: ReactNode | undefined;
|
|
3409
|
+
location?: ReactNode | undefined;
|
|
3410
|
+
}
|
|
3411
|
+
/**
|
|
3412
|
+
* Les libellés du calendrier : le groupe `eventCalendar` de la locale SIA.
|
|
3413
|
+
* « +N autres » se décline en `more_one` / `more_other`, avec `{count}`.
|
|
3414
|
+
*/
|
|
3415
|
+
type EventCalendarLabels = EventCalendarMessages;
|
|
3416
|
+
interface EventCalendarProps<T extends CalendarEvent = CalendarEvent> {
|
|
3417
|
+
events: T[];
|
|
3418
|
+
/** La vue affichée — mois, semaine, agenda. */
|
|
3419
|
+
view?: CalendarView;
|
|
3420
|
+
defaultView?: CalendarView;
|
|
3421
|
+
onViewChange?: (view: CalendarView) => void;
|
|
3422
|
+
/** Les vues proposées. Une seule masque le sélecteur. */
|
|
3423
|
+
views?: CalendarView[];
|
|
3424
|
+
/**
|
|
3425
|
+
* L'habillage de la grille. `bordered` : des cases tracées, comme un
|
|
3426
|
+
* agenda papier. `minimal` : aucune bordure intérieure, les jours se
|
|
3427
|
+
* lisent à leur numéro. `soft` : des cases sur fond teinté, séparées par
|
|
3428
|
+
* des blancs.
|
|
3429
|
+
*/
|
|
3430
|
+
variant?: "bordered" | "minimal" | "soft";
|
|
3431
|
+
/** Le rendu des événements : fond léger, plein, ou contour. */
|
|
3432
|
+
eventVariant?: "soft" | "solid" | "outline";
|
|
3433
|
+
/** `compact` resserre les cases et la grille horaire. */
|
|
3434
|
+
density?: "comfortable" | "compact";
|
|
3435
|
+
/** L'heure affichée en haut de la grille horaire à l'ouverture. 8 h par défaut. */
|
|
3436
|
+
scrollToHour?: number;
|
|
3437
|
+
/** Un jour de la période affichée (`2026-09-30`). Aujourd'hui par défaut. */
|
|
3438
|
+
date?: string;
|
|
3439
|
+
defaultDate?: string;
|
|
3440
|
+
onDateChange?: (date: string) => void;
|
|
3441
|
+
/** @deprecated Ancien nom de `defaultDate`. */
|
|
3442
|
+
defaultValue?: string;
|
|
3443
|
+
/** @deprecated Ancien nom de `defaultDate`, au mois près. */
|
|
3444
|
+
defaultMonth?: string;
|
|
3445
|
+
/**
|
|
3446
|
+
* La période visible, bornes incluses, à chaque changement de vue ou de
|
|
3447
|
+
* période — et au premier affichage. C'est elle qu'on demande au serveur.
|
|
3448
|
+
*/
|
|
3449
|
+
onRangeChange?: (range: {
|
|
3450
|
+
start: string;
|
|
3451
|
+
end: string;
|
|
3452
|
+
}, view: CalendarView) => void;
|
|
3453
|
+
/**
|
|
3454
|
+
* Un clic sur un jour, hors événement : le moment de créer. Dans la
|
|
3455
|
+
* grille horaire, `time` donne la demi-heure visée (`14:30`).
|
|
3456
|
+
*/
|
|
3457
|
+
onDateClick?: (date: string, time?: string) => void;
|
|
3458
|
+
onEventClick?: (event: T) => void;
|
|
3459
|
+
/** Événements visibles par case en vue mois ; le reste passe dans « +N ». */
|
|
2715
3460
|
maxEventsPerDay?: number;
|
|
2716
|
-
|
|
3461
|
+
firstDayOfWeek?: 0 | 1;
|
|
3462
|
+
/** La langue des dates. Par défaut, celle de la locale SIA. */
|
|
3463
|
+
locale?: string;
|
|
3464
|
+
/** Remplace le contenu d'un événement. Le bouton qui l'entoure reste. */
|
|
3465
|
+
renderEvent?: (event: T, placement: DayEvent<T & CalendarEventInput>) => ReactNode;
|
|
3466
|
+
/** Actions à droite de la barre : « Nouvel événement », un filtre. */
|
|
3467
|
+
toolbarActions?: ReactNode;
|
|
3468
|
+
loading?: boolean;
|
|
3469
|
+
/** Remplace, clé par clé, les textes du groupe `eventCalendar` de la locale. */
|
|
3470
|
+
labels?: Partial<EventCalendarLabels>;
|
|
3471
|
+
/** Le bouton « Aujourd'hui ». */
|
|
3472
|
+
toolbarButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children">>;
|
|
3473
|
+
/** Le sélecteur de vue — un `RadioGroup` en boutons. */
|
|
3474
|
+
viewSwitchProps?: Partial<Omit<RadioGroupProps, "value" | "defaultValue" | "onValueChange" | "children">>;
|
|
3475
|
+
/** Chaque bouton de vue. */
|
|
3476
|
+
viewButtonProps?: Partial<Omit<RadioButtonProps, "value" | "children">>;
|
|
3477
|
+
/** Le bouton « +N autres » d'une case chargée. */
|
|
3478
|
+
moreButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children">>;
|
|
3479
|
+
/** L'agenda vide. */
|
|
3480
|
+
emptyStateProps?: Partial<EmptyStateProps>;
|
|
3481
|
+
/** Le témoin de chargement de la barre. */
|
|
3482
|
+
spinnerProps?: Partial<Omit<SpinnerProps, "label">>;
|
|
3483
|
+
/** Les flèches de période. */
|
|
3484
|
+
navButtonProps?: Partial<Omit<IconButtonProps, "onClick" | "label" | "icon">>;
|
|
3485
|
+
/** La liste complète d'un jour chargé (« +N autres »). */
|
|
3486
|
+
popoverProps?: Partial<Omit<PopoverProps, "content" | "children">>;
|
|
3487
|
+
className?: string;
|
|
2717
3488
|
}
|
|
2718
3489
|
/**
|
|
2719
|
-
* Un calendrier
|
|
3490
|
+
* Un calendrier d'événements : mois, semaine, agenda.
|
|
2720
3491
|
*
|
|
2721
|
-
*
|
|
2722
|
-
*
|
|
2723
|
-
*
|
|
3492
|
+
* Il affiche et signale ; il ne gère pas. Un clic sur un jour appelle
|
|
3493
|
+
* `onDateClick`, un clic sur un événement `onEventClick` — `EventManager`
|
|
3494
|
+
* s'y branche pour créer, consulter, modifier et supprimer. Les données
|
|
3495
|
+
* viennent du serveur : `onRangeChange` donne la période à charger.
|
|
3496
|
+
*
|
|
3497
|
+
* Étroit, la grille du mois n'affiche plus que des points de couleur, et les
|
|
3498
|
+
* événements du jour choisi s'affichent dessous : une case de 45 px ne se lit
|
|
3499
|
+
* pas, une liste si.
|
|
2724
3500
|
*/
|
|
2725
|
-
declare function EventCalendar({ events,
|
|
3501
|
+
declare function EventCalendar<T extends CalendarEvent = CalendarEvent>({ events, view: viewProp, defaultView, onViewChange, views, variant, eventVariant, density, scrollToHour, date: dateProp, defaultDate, defaultValue, defaultMonth, onDateChange, onRangeChange, onDateClick, onEventClick, maxEventsPerDay, firstDayOfWeek, locale: localeProp, renderEvent, toolbarActions, loading, labels: labelsProp, toolbarButtonProps, viewSwitchProps, viewButtonProps, moreButtonProps, emptyStateProps, spinnerProps, navButtonProps, popoverProps, className, }: EventCalendarProps<T>): react_jsx_runtime.JSX.Element;
|
|
2726
3502
|
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
3503
|
+
/** Ce que le formulaire rend : un événement prêt à envoyer, champs métier compris. */
|
|
3504
|
+
interface EventDraft {
|
|
3505
|
+
title: string;
|
|
3506
|
+
start: string;
|
|
3507
|
+
end?: string | undefined;
|
|
3508
|
+
allDay: boolean;
|
|
3509
|
+
tone?: ComponentTone | undefined;
|
|
3510
|
+
location?: string | undefined;
|
|
3511
|
+
description?: string | undefined;
|
|
3512
|
+
/** Les champs déclarés dans `extraFields`, sous leur nom. */
|
|
3513
|
+
[champ: string]: unknown;
|
|
3514
|
+
}
|
|
3515
|
+
type Resultat = FormSubmitResult<FormShape> | Promise<FormSubmitResult<FormShape>>;
|
|
3516
|
+
/** Les libellés du gestionnaire : le groupe `eventManager` de la locale SIA. */
|
|
3517
|
+
type EventManagerLabels = EventManagerMessages;
|
|
3518
|
+
interface EventManagerProps<T extends CalendarEvent = CalendarEvent> {
|
|
3519
|
+
events: T[];
|
|
3520
|
+
/** Absent : pas de création. Rendre `{ champ: message }` garde le formulaire ouvert. */
|
|
3521
|
+
onCreate?: (draft: EventDraft) => Resultat;
|
|
3522
|
+
/** Absent : les événements se consultent sans se modifier. */
|
|
3523
|
+
onUpdate?: (event: T, draft: EventDraft) => Resultat;
|
|
3524
|
+
/** Absent : pas de suppression. Confirmée d'office. */
|
|
3525
|
+
onDelete?: (event: T) => void | Promise<void>;
|
|
3526
|
+
/** Des champs métier en plus : participants, salle, rappel. Leurs valeurs arrivent dans le brouillon. */
|
|
3527
|
+
extraFields?: FormEntry[];
|
|
3528
|
+
/** Les valeurs de départ de ces champs, et comment les relire sur un événement. */
|
|
3529
|
+
extraDefaults?: FormShape;
|
|
3530
|
+
/** Les couleurs proposées. Par défaut, les tons du système, nommés par la locale. */
|
|
3531
|
+
toneOptions?: Array<{
|
|
3532
|
+
value: ComponentTone;
|
|
3533
|
+
label: string;
|
|
3534
|
+
}>;
|
|
3535
|
+
/** Remplace le contenu de la fiche d'un événement. */
|
|
3536
|
+
renderDetail?: (event: T) => ReactNode;
|
|
3537
|
+
/** Remplace, clé par clé, les textes du groupe `eventManager` de la locale. */
|
|
3538
|
+
labels?: Partial<EventManagerLabels>;
|
|
3539
|
+
/** La langue des dates de la fiche. Par défaut, celle de la locale SIA. */
|
|
3540
|
+
locale?: string;
|
|
3541
|
+
/** Le calendrier lui-même : vues, variantes, période, rendu des événements. */
|
|
3542
|
+
calendarProps?: Partial<Omit<EventCalendarProps<T>, "events" | "onDateClick" | "onEventClick">>;
|
|
3543
|
+
/** Les boîtes de fiche et de formulaire. */
|
|
3544
|
+
modalProps?: Partial<Omit<ModalProps, "open" | "onOpenChange" | "children" | "title" | "footer">>;
|
|
3545
|
+
/** Le formulaire, hors champs, valeurs et envoi qu'il reçoit d'ici. */
|
|
3546
|
+
formProps?: Partial<Omit<FormProps, "fields" | "form" | "defaultValues" | "validate" | "onSubmit">>;
|
|
3547
|
+
/** La confirmation de suppression. */
|
|
3548
|
+
confirmDialogProps?: Partial<Omit<ConfirmDialogProps, "open" | "onOpenChange" | "onConfirm">>;
|
|
3549
|
+
/** Le bouton « Nouvel événement » de la barre. */
|
|
3550
|
+
createButtonProps?: Partial<Omit<ButtonProps, "onClick">>;
|
|
3551
|
+
/** La fiche d'un événement, hors rubriques qu'elle tire de l'événement. */
|
|
3552
|
+
descriptionsProps?: Partial<Omit<DescriptionsProps, "items">>;
|
|
3553
|
+
/** La pastille d'une couleur, dans la fiche et dans le choix des couleurs. */
|
|
3554
|
+
toneBadgeProps?: Partial<Omit<BadgeProps, "tone" | "children">>;
|
|
2734
3555
|
className?: string;
|
|
2735
3556
|
}
|
|
2736
3557
|
/**
|
|
2737
|
-
*
|
|
3558
|
+
* Un calendrier où l'on gère ses événements.
|
|
2738
3559
|
*
|
|
2739
|
-
*
|
|
2740
|
-
*
|
|
2741
|
-
*
|
|
3560
|
+
* Il assemble ce qui existe — \`EventCalendar\` pour voir, \`Modal\` et
|
|
3561
|
+
* \`Form\` pour saisir, \`ConfirmDialog\` pour supprimer — et tient le reste :
|
|
3562
|
+
*
|
|
3563
|
+
* - un clic sur un jour ouvre la création à cette date, et à la demi-heure
|
|
3564
|
+
* visée dans la grille horaire ;
|
|
3565
|
+
* - un clic sur un événement ouvre sa fiche, d'où l'on modifie ou supprime ;
|
|
3566
|
+
* - un refus du serveur garde le formulaire ouvert, erreurs sous les champs.
|
|
3567
|
+
*
|
|
3568
|
+
* Les données restent à l'appelant : `onCreate`, `onUpdate` et `onDelete`
|
|
3569
|
+
* reçoivent un brouillon prêt à envoyer, et le calendrier affiche ce qu'on
|
|
3570
|
+
* lui repasse dans `events`.
|
|
2742
3571
|
*/
|
|
2743
|
-
declare function
|
|
3572
|
+
declare function EventManager<T extends CalendarEvent = CalendarEvent>({ events, onCreate, onUpdate, onDelete, extraFields, extraDefaults, toneOptions: toneOptionsProp, renderDetail, labels: labelsProp, locale: localeProp, calendarProps, modalProps, formProps, confirmDialogProps, createButtonProps, descriptionsProps, toneBadgeProps, className, }: EventManagerProps<T>): react_jsx_runtime.JSX.Element;
|
|
2744
3573
|
|
|
2745
3574
|
interface HoverCardProps {
|
|
2746
3575
|
content: ReactNode;
|
|
@@ -2756,6 +3585,8 @@ interface HoverCardProps {
|
|
|
2756
3585
|
/** Délai avant fermeture, le temps d'atteindre le panneau à la souris. */
|
|
2757
3586
|
closeDelay?: number;
|
|
2758
3587
|
placement?: OverlayPlacement;
|
|
3588
|
+
/** Réglages du panneau flottant — décalage, marge au bord, rôle, classe. */
|
|
3589
|
+
overlayProps?: Partial<Omit<OverlayProps, "open" | "anchorRef" | "onOpenChange" | "children">>;
|
|
2759
3590
|
open?: boolean;
|
|
2760
3591
|
onOpenChange?: (open: boolean) => void;
|
|
2761
3592
|
width?: number | string;
|
|
@@ -2768,25 +3599,7 @@ interface HoverCardProps {
|
|
|
2768
3599
|
* d'œil, celui-là porte du contenu — une fiche, un résumé, une image — que
|
|
2769
3600
|
* l'on peut vouloir survoler à son tour, voire sélectionner.
|
|
2770
3601
|
*/
|
|
2771
|
-
declare function HoverCard({ content, children, openDelay, closeDelay, placement, open: openProp, onOpenChange, width, className, }: HoverCardProps): react_jsx_runtime.JSX.Element;
|
|
2772
|
-
|
|
2773
|
-
interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
2774
|
-
label: string;
|
|
2775
|
-
icon: ReactNode;
|
|
2776
|
-
variant?: "solid" | "outline" | "ghost";
|
|
2777
|
-
size?: "sm" | "md" | "lg";
|
|
2778
|
-
radius?: "default" | "none" | "sm" | "lg" | "full";
|
|
2779
|
-
tooltip?: Omit<TooltipProps, "children">;
|
|
2780
|
-
}
|
|
2781
|
-
/**
|
|
2782
|
-
* Une action réduite à son icône.
|
|
2783
|
-
*
|
|
2784
|
-
* `label` est obligatoire : une icône seule n'a pas de nom, et un lecteur
|
|
2785
|
-
* d'écran annoncerait « bouton » sans dire lequel. Le libellé sert aussi
|
|
2786
|
-
* d'infobulle — ce que l'icône signifie doit rester atteignable à la
|
|
2787
|
-
* souris comme au clavier.
|
|
2788
|
-
*/
|
|
2789
|
-
declare const IconButton: react.ForwardRefExoticComponent<IconButtonProps & react.RefAttributes<HTMLButtonElement>>;
|
|
3602
|
+
declare function HoverCard({ content, children, openDelay, closeDelay, placement, overlayProps, open: openProp, onOpenChange, width, className, }: HoverCardProps): react_jsx_runtime.JSX.Element;
|
|
2790
3603
|
|
|
2791
3604
|
type IconProps = SVGProps<SVGSVGElement>;
|
|
2792
3605
|
declare function CalendarIcon(props: IconProps): react_jsx_runtime.JSX.Element;
|
|
@@ -2820,6 +3633,8 @@ declare function KeyIcon(props: IconProps): react_jsx_runtime.JSX.Element;
|
|
|
2820
3633
|
declare function LockIcon(props: IconProps): react_jsx_runtime.JSX.Element;
|
|
2821
3634
|
declare function LogOutIcon(props: IconProps): react_jsx_runtime.JSX.Element;
|
|
2822
3635
|
declare function PencilIcon(props: IconProps): react_jsx_runtime.JSX.Element;
|
|
3636
|
+
declare function SunIcon(props: IconProps): react_jsx_runtime.JSX.Element;
|
|
3637
|
+
declare function MoonIcon(props: IconProps): react_jsx_runtime.JSX.Element;
|
|
2823
3638
|
|
|
2824
3639
|
interface InputNumberProps extends Omit<InputProps, "value" | "defaultValue" | "onChange" | "type" | "right"> {
|
|
2825
3640
|
value?: number | null;
|
|
@@ -2845,6 +3660,200 @@ interface InputNumberProps extends Omit<InputProps, "value" | "defaultValue" | "
|
|
|
2845
3660
|
*/
|
|
2846
3661
|
declare const InputNumber: react.ForwardRefExoticComponent<InputNumberProps & react.RefAttributes<HTMLInputElement>>;
|
|
2847
3662
|
|
|
3663
|
+
interface ProgressProps {
|
|
3664
|
+
/** La valeur courante. Omise, la barre passe en indéterminé. */
|
|
3665
|
+
value?: number | undefined;
|
|
3666
|
+
max?: number;
|
|
3667
|
+
shape?: "bar" | "circle";
|
|
3668
|
+
tone?: ComponentTone;
|
|
3669
|
+
size?: ComponentSize;
|
|
3670
|
+
/** Épaisseur du trait, en pixels. Par défaut selon la taille. */
|
|
3671
|
+
thickness?: number | undefined;
|
|
3672
|
+
/** Affiche le pourcentage — au centre du cercle, en bout de barre. */
|
|
3673
|
+
showValue?: boolean;
|
|
3674
|
+
/** Remplace l'affichage par défaut. */
|
|
3675
|
+
format?: ((percent: number, value: number, max: number) => ReactNode) | undefined;
|
|
3676
|
+
label?: ReactNode;
|
|
3677
|
+
className?: string;
|
|
3678
|
+
}
|
|
3679
|
+
/**
|
|
3680
|
+
* L'avancement d'une tâche.
|
|
3681
|
+
*
|
|
3682
|
+
* Sans `value`, le composant passe en indéterminé plutôt que d'afficher zéro :
|
|
3683
|
+
* « je travaille » et « je n'ai rien fait » ne se ressemblent pas.
|
|
3684
|
+
*/
|
|
3685
|
+
declare function Progress(props: ProgressProps): react_jsx_runtime.JSX.Element;
|
|
3686
|
+
|
|
3687
|
+
type StepStatus = "done" | "current" | "upcoming" | "error";
|
|
3688
|
+
interface StepItem {
|
|
3689
|
+
key: string;
|
|
3690
|
+
title: ReactNode;
|
|
3691
|
+
description?: ReactNode;
|
|
3692
|
+
icon?: ReactNode;
|
|
3693
|
+
/** Forcé au besoin; sinon déduit de `current`. */
|
|
3694
|
+
status?: StepStatus;
|
|
3695
|
+
disabled?: boolean;
|
|
3696
|
+
}
|
|
3697
|
+
interface StepsProps {
|
|
3698
|
+
items: StepItem[];
|
|
3699
|
+
/** Index de l'étape en cours. Ce qui précède est fait, ce qui suit à venir. */
|
|
3700
|
+
current?: number;
|
|
3701
|
+
orientation?: "horizontal" | "vertical";
|
|
3702
|
+
size?: "sm" | "md";
|
|
3703
|
+
/** Rend les étapes cliquables — pour revenir en arrière dans un tunnel. */
|
|
3704
|
+
onStepClick?: (item: StepItem, index: number) => void;
|
|
3705
|
+
className?: string;
|
|
3706
|
+
}
|
|
3707
|
+
/**
|
|
3708
|
+
* Une progression en étapes.
|
|
3709
|
+
*
|
|
3710
|
+
* Le trait entre deux étapes se remplit plutôt que de changer de couleur d'un
|
|
3711
|
+
* coup : c'est ce qui donne le sens de la marche, vers l'avant.
|
|
3712
|
+
*/
|
|
3713
|
+
declare function Steps({ items, current, orientation, size, onStepClick, className, }: StepsProps): react_jsx_runtime.JSX.Element;
|
|
3714
|
+
|
|
3715
|
+
/** Le cycle de vie d'une opération asynchrone. */
|
|
3716
|
+
type JobStatus = "queued" | "running" | "succeeded" | "failed" | "cancelled";
|
|
3717
|
+
/** Un instant : une date ISO, un horodatage ou une `Date`. */
|
|
3718
|
+
type JobInstant = string | number | Date;
|
|
3719
|
+
/**
|
|
3720
|
+
* Les textes du composant, à remplacer au cas par cas. Leur valeur par défaut
|
|
3721
|
+
* vient du groupe `jobProgress` de la locale (`JobProgressMessages`) ; ici,
|
|
3722
|
+
* un texte peut aussi être un nœud, et `attempts` une fonction.
|
|
3723
|
+
*/
|
|
3724
|
+
interface JobProgressLabels {
|
|
3725
|
+
queued: ReactNode;
|
|
3726
|
+
running: ReactNode;
|
|
3727
|
+
succeeded: ReactNode;
|
|
3728
|
+
failed: ReactNode;
|
|
3729
|
+
cancelled: ReactNode;
|
|
3730
|
+
/** « Essai 2 sur 3 », ou « Essai 2 » sans maximum connu. */
|
|
3731
|
+
attempts: (current: number, max?: number) => ReactNode;
|
|
3732
|
+
/** Le titre de l'encadré d'erreur. */
|
|
3733
|
+
errorTitle: ReactNode;
|
|
3734
|
+
retry: ReactNode;
|
|
3735
|
+
cancel: ReactNode;
|
|
3736
|
+
}
|
|
3737
|
+
interface JobProgressProps extends Omit<HTMLAttributes<HTMLElement>, "title"> {
|
|
3738
|
+
status: JobStatus;
|
|
3739
|
+
/** L'avancement, de 0 à 100. Absent pendant `queued`/`running` : indéterminé. */
|
|
3740
|
+
progress?: number;
|
|
3741
|
+
/** L'étape en cours : « Construction de l'image ». */
|
|
3742
|
+
step?: ReactNode;
|
|
3743
|
+
/** Les étapes de l'opération, affichées en liste ; `currentStep` la met en avant. */
|
|
3744
|
+
steps?: StepItem[];
|
|
3745
|
+
/** L'index de l'étape en cours dans `steps`. */
|
|
3746
|
+
currentStep?: number;
|
|
3747
|
+
/** L'essai en cours, et le nombre maximal quand il est connu. */
|
|
3748
|
+
attempts?: {
|
|
3749
|
+
current: number;
|
|
3750
|
+
max?: number;
|
|
3751
|
+
};
|
|
3752
|
+
startedAt?: JobInstant;
|
|
3753
|
+
/** Absent pendant `running` : la durée avance chaque seconde. */
|
|
3754
|
+
finishedAt?: JobInstant;
|
|
3755
|
+
/** Le message d'échec, affiché quand `status` vaut `failed`. */
|
|
3756
|
+
error?: ReactNode;
|
|
3757
|
+
/** Affiche « Relancer » quand l'opération a échoué. */
|
|
3758
|
+
onRetry?: () => void;
|
|
3759
|
+
/** Affiche « Annuler » tant que l'opération est en file ou en cours. */
|
|
3760
|
+
onCancel?: () => void;
|
|
3761
|
+
/** Un emplacement libre sous le reste : un journal, une sortie de commande. */
|
|
3762
|
+
logs?: ReactNode;
|
|
3763
|
+
title?: ReactNode;
|
|
3764
|
+
labels?: Partial<JobProgressLabels>;
|
|
3765
|
+
/** Le ton de chaque statut, pour la pastille et la barre. */
|
|
3766
|
+
statusTones?: Partial<Record<JobStatus, ComponentTone>>;
|
|
3767
|
+
/** Les props de la pastille de statut. Sans `value`, `tones` ni `labels`, tirés du statut. */
|
|
3768
|
+
statusBadgeProps?: Partial<Omit<StatusBadgeProps, "value" | "tones" | "labels">>;
|
|
3769
|
+
/** Les props de la barre. Sans `value`, tirée de `progress`. */
|
|
3770
|
+
progressProps?: Partial<Omit<ProgressProps, "value">>;
|
|
3771
|
+
/** Les props de la liste d'étapes. Sans `items` ni `current`. */
|
|
3772
|
+
stepsProps?: Partial<Omit<StepsProps, "items" | "current">>;
|
|
3773
|
+
/** Les props de la durée. Sans `milliseconds`, calculée des deux instants. */
|
|
3774
|
+
durationProps?: Partial<Omit<DurationDisplayProps, "milliseconds">>;
|
|
3775
|
+
/** Les props de l'encadré d'erreur. Sans `children`, qui est `error`. */
|
|
3776
|
+
alertProps?: Partial<Omit<AlertProps, "children">>;
|
|
3777
|
+
/** Les props du bouton « Relancer ». Sans `onClick`, qui est `onRetry`. */
|
|
3778
|
+
retryButtonProps?: Partial<Omit<ButtonProps, "onClick">>;
|
|
3779
|
+
/** Les props du bouton « Annuler ». Sans `onClick`, qui est `onCancel`. */
|
|
3780
|
+
cancelButtonProps?: Partial<Omit<ButtonProps, "onClick">>;
|
|
3781
|
+
}
|
|
3782
|
+
/**
|
|
3783
|
+
* Le suivi d'une opération asynchrone : un déploiement, un import, un export.
|
|
3784
|
+
*
|
|
3785
|
+
* Statut, étape, progression, essais, erreur et relance : chaque projet
|
|
3786
|
+
* recomposait ce motif avec les mêmes briques, et chacun oubliait une chose
|
|
3787
|
+
* différente — la durée figée pendant l'exécution, le bouton d'annulation
|
|
3788
|
+
* resté visible après l'échec. Le composant tranche ce qui s'affiche selon le
|
|
3789
|
+
* statut ; l'appelant ne fournit que l'état de l'opération.
|
|
3790
|
+
*
|
|
3791
|
+
* Pensé pour un tiroir de 28 à 40rem : dense, sur une colonne.
|
|
3792
|
+
*/
|
|
3793
|
+
declare function JobProgress({ status, progress, step, steps, currentStep, attempts, startedAt, finishedAt, error, onRetry, onCancel, logs, title, labels: labelsProp, statusTones, statusBadgeProps, progressProps, stepsProps, durationProps, alertProps, retryButtonProps, cancelButtonProps, className, ...props }: JobProgressProps): react_jsx_runtime.JSX.Element;
|
|
3794
|
+
|
|
3795
|
+
interface ScrollAreaProps {
|
|
3796
|
+
children: ReactNode;
|
|
3797
|
+
/** Hauteur maximale. Au-delà, la zone défile. */
|
|
3798
|
+
maxHeight?: number | string;
|
|
3799
|
+
height?: number | string;
|
|
3800
|
+
orientation?: "vertical" | "horizontal" | "both";
|
|
3801
|
+
/**
|
|
3802
|
+
* Estompe le contenu aux bords tant qu'il reste quelque chose à faire
|
|
3803
|
+
* défiler. C'est le seul indice fiable quand la barre est fine ou masquée.
|
|
3804
|
+
*/
|
|
3805
|
+
fade?: boolean;
|
|
3806
|
+
className?: string;
|
|
3807
|
+
}
|
|
3808
|
+
/**
|
|
3809
|
+
* Une zone défilante sobre.
|
|
3810
|
+
*
|
|
3811
|
+
* La barre reste celle du navigateur, seulement affinée : une barre
|
|
3812
|
+
* réimplémentée en JavaScript coûte un écouteur de défilement, deux mesures
|
|
3813
|
+
* par image et perd le défilement inertiel des pavés tactiles. Le seul ajout
|
|
3814
|
+
* est l'estompe des bords, qui ne demande qu'un booléen par côté.
|
|
3815
|
+
*/
|
|
3816
|
+
declare function ScrollArea({ children, maxHeight, height, orientation, fade, className, }: ScrollAreaProps): react_jsx_runtime.JSX.Element;
|
|
3817
|
+
|
|
3818
|
+
interface JsonViewProps {
|
|
3819
|
+
/** Une valeur déjà analysée : objet, tableau, scalaire. */
|
|
3820
|
+
value?: unknown;
|
|
3821
|
+
/**
|
|
3822
|
+
* Un texte JSON, analysé ici. S'il est invalide, il s'affiche tel quel
|
|
3823
|
+
* sous une alerte discrète : une réponse serveur tronquée reste lisible.
|
|
3824
|
+
* Prioritaire sur `value`.
|
|
3825
|
+
*/
|
|
3826
|
+
source?: string;
|
|
3827
|
+
/** Les niveaux ouverts au premier affichage. `2` par défaut. */
|
|
3828
|
+
defaultExpandDepth?: number;
|
|
3829
|
+
/** Faux : un simple bloc mis en forme, tout ouvert, sans bascule. */
|
|
3830
|
+
collapsible?: boolean;
|
|
3831
|
+
/** Au-delà, la zone défile. */
|
|
3832
|
+
maxHeight?: number | string;
|
|
3833
|
+
/** Vrai par défaut : un bouton copie le JSON mis en forme. */
|
|
3834
|
+
copyable?: boolean;
|
|
3835
|
+
copyLabel?: string;
|
|
3836
|
+
copiedLabel?: string;
|
|
3837
|
+
/** Le titre de l'alerte quand `source` ne s'analyse pas. */
|
|
3838
|
+
invalidLabel?: ReactNode;
|
|
3839
|
+
className?: string;
|
|
3840
|
+
/** Le bouton de copie. Son action et son libellé suivent la copie. */
|
|
3841
|
+
copyButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children">>;
|
|
3842
|
+
/** L'alerte d'un texte invalide. Son contenu est l'erreur d'analyse. */
|
|
3843
|
+
alertProps?: Partial<Omit<AlertProps, "children">>;
|
|
3844
|
+
/** La zone défilante. Sa hauteur maximale passe par `maxHeight`. */
|
|
3845
|
+
scrollAreaProps?: Partial<Omit<ScrollAreaProps, "children" | "maxHeight">>;
|
|
3846
|
+
}
|
|
3847
|
+
/**
|
|
3848
|
+
* Un JSON en lecture seule, que l'on déplie.
|
|
3849
|
+
*
|
|
3850
|
+
* Pour une réponse d'API, une charge utile, une configuration : les types se
|
|
3851
|
+
* distinguent à la couleur, les branches profondes restent repliées, et un
|
|
3852
|
+
* nœud replié dit ce qu'il contient — `{…} 3 clés`. À la différence de
|
|
3853
|
+
* `JsonEditor`, rien ne s'y saisit.
|
|
3854
|
+
*/
|
|
3855
|
+
declare function JsonView({ value, source, defaultExpandDepth, collapsible, maxHeight, copyable, copyLabel: copyLabelProp, copiedLabel: copiedLabelProp, invalidLabel: invalidLabelProp, className, copyButtonProps, alertProps, scrollAreaProps, }: JsonViewProps): react_jsx_runtime.JSX.Element;
|
|
3856
|
+
|
|
2848
3857
|
interface KpiGridProps extends HTMLAttributes<HTMLDivElement> {
|
|
2849
3858
|
columns?: 1 | 2 | 3 | 4;
|
|
2850
3859
|
}
|
|
@@ -2876,132 +3885,197 @@ type ILabelProps = LabelProps;
|
|
|
2876
3885
|
*/
|
|
2877
3886
|
declare const Label: react.ForwardRefExoticComponent<LabelProps & react.RefAttributes<HTMLLabelElement>>;
|
|
2878
3887
|
|
|
3888
|
+
type LiveStatus = "connecting" | "open" | "closed";
|
|
3889
|
+
interface LiveIndicatorProps extends Omit<HTMLAttributes<HTMLSpanElement>, "children"> {
|
|
3890
|
+
/** L'état de la connexion — `useRealtimeStatus(source)` le fournit. */
|
|
3891
|
+
status: LiveStatus;
|
|
3892
|
+
/** Les libellés de chaque état. Par défaut, ceux de la locale. */
|
|
3893
|
+
labels?: Partial<Record<LiveStatus, string>>;
|
|
3894
|
+
/** Le point seul, le libellé restant pour les lecteurs d'écran. */
|
|
3895
|
+
compact?: boolean;
|
|
3896
|
+
}
|
|
2879
3897
|
/**
|
|
2880
|
-
*
|
|
3898
|
+
* Dit si l'écran se met à jour tout seul.
|
|
2881
3899
|
*
|
|
2882
|
-
*
|
|
2883
|
-
*
|
|
2884
|
-
*
|
|
3900
|
+
* Sans lui, une liste qui ne bouge plus après une coupure réseau ressemble à
|
|
3901
|
+
* une liste à jour. Le point pulse en direct, clignote en connexion, s'éteint
|
|
3902
|
+
* hors ligne ; le libellé est annoncé quand il change.
|
|
2885
3903
|
*/
|
|
2886
|
-
declare function
|
|
3904
|
+
declare function LiveIndicator({ status, labels, compact, className, ...props }: LiveIndicatorProps): react_jsx_runtime.JSX.Element;
|
|
2887
3905
|
|
|
2888
|
-
interface
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2892
|
-
description?: ReactNode;
|
|
3906
|
+
interface ToggleProps {
|
|
3907
|
+
pressed?: boolean;
|
|
3908
|
+
defaultPressed?: boolean;
|
|
3909
|
+
onPressedChange?: (pressed: boolean) => void;
|
|
2893
3910
|
children?: ReactNode;
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
3911
|
+
icon?: ReactNode;
|
|
3912
|
+
/** Obligatoire quand le contenu se réduit à une icône. */
|
|
3913
|
+
ariaLabel?: string;
|
|
3914
|
+
size?: ComponentSize;
|
|
3915
|
+
tone?: ComponentTone;
|
|
3916
|
+
variant?: "solid" | "outline" | "ghost";
|
|
3917
|
+
disabled?: boolean;
|
|
2897
3918
|
className?: string;
|
|
2898
3919
|
}
|
|
2899
3920
|
/**
|
|
2900
|
-
*
|
|
3921
|
+
* Un bouton à deux états.
|
|
2901
3922
|
*
|
|
2902
|
-
*
|
|
2903
|
-
*
|
|
2904
|
-
*
|
|
2905
|
-
* que tout le monde essaie en premier.
|
|
3923
|
+
* Ce n'est pas un `Switch` : un interrupteur décrit un réglage qui persiste,
|
|
3924
|
+
* une bascule décrit un état de l'interface ici et maintenant — gras, filtre
|
|
3925
|
+
* actif, colonne affichée. `aria-pressed` porte cette différence.
|
|
2906
3926
|
*/
|
|
2907
|
-
declare function
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
3927
|
+
declare function Toggle({ pressed: pressedProp, defaultPressed, onPressedChange, children, icon, ariaLabel, size, tone, variant, disabled, className, }: ToggleProps): react_jsx_runtime.JSX.Element;
|
|
3928
|
+
interface ToggleGroupOption {
|
|
3929
|
+
value: string;
|
|
3930
|
+
label?: ReactNode;
|
|
3931
|
+
icon?: ReactNode;
|
|
3932
|
+
ariaLabel?: string;
|
|
3933
|
+
disabled?: boolean;
|
|
2912
3934
|
}
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
|
|
2917
|
-
|
|
2918
|
-
|
|
2919
|
-
*/
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
/**
|
|
2928
|
-
* Le niveau du titre. `1` — le défaut — pour l'en-tête d'un écran.
|
|
2929
|
-
*
|
|
2930
|
-
* `2` ou `3` pour une section dans un écran qui a déjà son `<h1>` : la
|
|
2931
|
-
* liste des environnements dans la fiche d'un projet. Le titre y est plus
|
|
2932
|
-
* petit et l'espace sous l'en-tête plus court.
|
|
2933
|
-
*/
|
|
2934
|
-
level?: 1 | 2 | 3;
|
|
3935
|
+
interface ToggleGroupProps {
|
|
3936
|
+
options: ToggleGroupOption[];
|
|
3937
|
+
/** `single` : une valeur ou aucune. `multiple` : un tableau. */
|
|
3938
|
+
type?: "single" | "multiple";
|
|
3939
|
+
value?: string | string[];
|
|
3940
|
+
defaultValue?: string | string[];
|
|
3941
|
+
/** Une chaîne en `single`, un tableau en `multiple` — comme `value`. */
|
|
3942
|
+
onValueChange?: (value: string | string[]) => void;
|
|
3943
|
+
size?: ComponentSize;
|
|
3944
|
+
tone?: ComponentTone;
|
|
3945
|
+
/** Autorise à tout désélectionner en `single`. */
|
|
3946
|
+
deselectable?: boolean;
|
|
3947
|
+
disabled?: boolean;
|
|
3948
|
+
ariaLabel?: string;
|
|
2935
3949
|
className?: string;
|
|
2936
3950
|
}
|
|
2937
3951
|
/**
|
|
2938
|
-
*
|
|
3952
|
+
* Plusieurs bascules qui partagent une valeur.
|
|
2939
3953
|
*
|
|
2940
|
-
*
|
|
2941
|
-
*
|
|
2942
|
-
* cassent sans que rien ne se voie. Une section imbriquée passe donc
|
|
2943
|
-
* `level={2}`.
|
|
3954
|
+
* Le repère glisse d'une option à l'autre au lieu de sauter : c'est la même
|
|
3955
|
+
* idée que les onglets, et c'est ce qui rend le changement lisible.
|
|
2944
3956
|
*/
|
|
2945
|
-
declare function
|
|
3957
|
+
declare function ToggleGroup({ options, type, value: valueProp, defaultValue, onValueChange, size, tone, deselectable, disabled, ariaLabel, className, }: ToggleGroupProps): react_jsx_runtime.JSX.Element;
|
|
2946
3958
|
|
|
2947
|
-
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
|
|
2951
|
-
siblingCount?: number;
|
|
2952
|
-
previousLabel?: string;
|
|
2953
|
-
nextLabel?: string;
|
|
3959
|
+
/** La gravité d'une ligne. */
|
|
3960
|
+
type LogLevel = "debug" | "info" | "warn" | "error" | "success";
|
|
3961
|
+
/** Une ligne de journal. */
|
|
3962
|
+
interface LogLine {
|
|
2954
3963
|
/**
|
|
2955
|
-
*
|
|
2956
|
-
*
|
|
2957
|
-
*
|
|
2958
|
-
* dans les ellipses jusqu'à ce qu'elle apparaisse.
|
|
3964
|
+
* Un identifiant stable. Facultatif, mais conseillé : sans lui, la ligne
|
|
3965
|
+
* est repérée par sa position, et un tableau raccourci par le début
|
|
3966
|
+
* obligerait à redessiner toutes les lignes.
|
|
2959
3967
|
*/
|
|
2960
|
-
|
|
2961
|
-
/**
|
|
2962
|
-
|
|
2963
|
-
|
|
2964
|
-
|
|
2965
|
-
/**
|
|
2966
|
-
|
|
3968
|
+
id?: string;
|
|
3969
|
+
/** Quand : une date ISO, un horodatage ou une `Date`. */
|
|
3970
|
+
time: string | number | Date;
|
|
3971
|
+
level: LogLevel;
|
|
3972
|
+
message: ReactNode;
|
|
3973
|
+
/** L'essai, l'étape ou la tâche : « Essai 1 », « Essai 2 ». */
|
|
3974
|
+
group?: string;
|
|
3975
|
+
}
|
|
3976
|
+
interface LogStreamProps {
|
|
3977
|
+
lines: LogLine[];
|
|
2967
3978
|
/**
|
|
2968
|
-
*
|
|
3979
|
+
* Le nombre de lignes gardées. Au-delà, les plus anciennes tombent.
|
|
2969
3980
|
*
|
|
2970
|
-
*
|
|
2971
|
-
*
|
|
3981
|
+
* C'est la réponse à un journal qui grossit sans fin, plutôt qu'une
|
|
3982
|
+
* virtualisation : mille lignes se dessinent sans peine, et une liste
|
|
3983
|
+
* virtuelle casserait la recherche du navigateur et la sélection au
|
|
3984
|
+
* clavier. `1000` par défaut.
|
|
2972
3985
|
*/
|
|
2973
|
-
|
|
2974
|
-
/**
|
|
2975
|
-
|
|
2976
|
-
* vigueur absente de la liste y est ajoutée, pour que le champ ne paraisse
|
|
2977
|
-
* jamais vide.
|
|
2978
|
-
*/
|
|
2979
|
-
pageSizeOptions?: number[];
|
|
2980
|
-
/** Le libellé du choix. Par défaut `locale.perPage` — « Par page ». */
|
|
2981
|
-
pageSizeLabel?: string;
|
|
3986
|
+
maxLines?: number;
|
|
3987
|
+
/** La hauteur de la zone défilante. `20rem` par défaut. */
|
|
3988
|
+
height?: number | string;
|
|
2982
3989
|
/**
|
|
2983
|
-
*
|
|
2984
|
-
*
|
|
3990
|
+
* Défiler jusqu'à la dernière ligne à chaque arrivée. Contrôlé quand il
|
|
3991
|
+
* est fourni ; remonter dans le journal appelle alors `onFollowChange(false)`.
|
|
2985
3992
|
*/
|
|
2986
|
-
|
|
3993
|
+
follow?: boolean;
|
|
3994
|
+
/** Vrai par défaut : un journal d'exécution se lit par la fin. */
|
|
3995
|
+
defaultFollow?: boolean;
|
|
3996
|
+
onFollowChange?: (follow: boolean) => void;
|
|
3997
|
+
/** Les niveaux affichés. Contrôlé quand il est fourni. */
|
|
3998
|
+
levels?: LogLevel[];
|
|
3999
|
+
/** Tous par défaut. */
|
|
4000
|
+
defaultLevels?: LogLevel[];
|
|
4001
|
+
onLevelsChange?: (levels: LogLevel[]) => void;
|
|
4002
|
+
/** Les libellés des niveaux, dans la colonne comme dans la copie. */
|
|
4003
|
+
levelLabels?: Partial<Record<LogLevel, string>>;
|
|
4004
|
+
/** Les groupes repliés au premier affichage. */
|
|
4005
|
+
defaultCollapsedGroups?: string[];
|
|
4006
|
+
/** Le premier chargement : rien n'est encore arrivé. */
|
|
4007
|
+
loading?: boolean;
|
|
4008
|
+
/** Des lignes arrivent encore. Un indicateur discret le dit. */
|
|
4009
|
+
streaming?: boolean;
|
|
4010
|
+
streamingLabel?: string;
|
|
4011
|
+
loadingLabel?: string;
|
|
4012
|
+
/** La langue du format horaire. Par défaut, celle de la locale SIA. */
|
|
4013
|
+
locale?: string;
|
|
4014
|
+
/** Sans barre d'outils : ni filtre, ni recherche, ni copie. */
|
|
4015
|
+
toolbar?: boolean;
|
|
4016
|
+
/** Le nom de la zone pour les lecteurs d'écran. */
|
|
2987
4017
|
ariaLabel?: string;
|
|
4018
|
+
searchPlaceholder?: string;
|
|
4019
|
+
copyLabel?: string;
|
|
4020
|
+
copiedLabel?: string;
|
|
4021
|
+
followLabel?: string;
|
|
4022
|
+
resumeLabel?: string;
|
|
2988
4023
|
className?: string;
|
|
4024
|
+
/**
|
|
4025
|
+
* Le filtre par niveau. Sans ses options ni sa valeur, tirées des niveaux,
|
|
4026
|
+
* ni son type : on en retient plusieurs à la fois.
|
|
4027
|
+
*/
|
|
4028
|
+
levelFilterProps?: Partial<Omit<ToggleGroupProps, "options" | "type" | "value" | "defaultValue" | "onValueChange">>;
|
|
4029
|
+
/** La recherche. Sa valeur reste celle du journal, qui filtre avec. */
|
|
4030
|
+
searchInputProps?: Partial<Omit<SearchInputProps, "value" | "defaultValue" | "onValueChange">>;
|
|
4031
|
+
/** Le bouton de copie. Son action et son libellé suivent la copie. */
|
|
4032
|
+
copyButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children">>;
|
|
4033
|
+
/** La bascule « Suivre la fin ». Son état est celui du suivi. */
|
|
4034
|
+
followToggleProps?: Partial<Omit<ToggleProps, "pressed" | "defaultPressed" | "onPressedChange">>;
|
|
4035
|
+
/** Le bouton « Reprendre le suivi », affiché quand le suivi est en pause. */
|
|
4036
|
+
resumeButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children">>;
|
|
4037
|
+
/**
|
|
4038
|
+
* L'en-tête repliable de chaque groupe. `aria-expanded` et
|
|
4039
|
+
* `aria-controls` restent calculés groupe par groupe.
|
|
4040
|
+
*/
|
|
4041
|
+
groupButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children" | "aria-expanded" | "aria-controls">>;
|
|
4042
|
+
/** L'état vide : pas encore de ligne, ou aucune qui corresponde. */
|
|
4043
|
+
emptyStateProps?: Partial<EmptyStateProps>;
|
|
4044
|
+
/** Les indicateurs de chargement et de flux en cours. Sans `label`. */
|
|
4045
|
+
spinnerProps?: Partial<Omit<SpinnerProps, "label">>;
|
|
2989
4046
|
}
|
|
2990
|
-
/** Ce que reçoit `renderPageSize`. */
|
|
2991
|
-
interface PageSizeContext {
|
|
2992
|
-
pageSize: number;
|
|
2993
|
-
options: number[];
|
|
2994
|
-
onChange: (pageSize: number) => void;
|
|
2995
|
-
label: string;
|
|
2996
|
-
}
|
|
2997
|
-
declare const DEFAULT_PAGE_SIZE_OPTIONS: number[];
|
|
2998
4047
|
/**
|
|
2999
|
-
*
|
|
4048
|
+
* Un journal d'exécution qui se lit en direct.
|
|
3000
4049
|
*
|
|
3001
|
-
*
|
|
3002
|
-
*
|
|
4050
|
+
* `Timeline` raconte des événements ; ici, on suit une exécution : heure en
|
|
4051
|
+
* colonne, niveau, police à chasse fixe, essais repliables. Le suivi de la
|
|
4052
|
+
* fin se met en pause dès qu'on remonte — lire une erreur pendant que le
|
|
4053
|
+
* journal défile sous les yeux est impossible — et un bouton dit combien de
|
|
4054
|
+
* lignes sont arrivées entre-temps.
|
|
4055
|
+
*/
|
|
4056
|
+
declare function LogStream({ lines, maxLines, height, follow, defaultFollow, onFollowChange, levels: levelsProp, defaultLevels, onLevelsChange, levelLabels, defaultCollapsedGroups, loading, streaming, streamingLabel: streamingLabelProp, loadingLabel: loadingLabelProp, locale: localeProp, toolbar, ariaLabel: ariaLabelProp, searchPlaceholder: searchPlaceholderProp, copyLabel: copyLabelProp, copiedLabel: copiedLabelProp, followLabel: followLabelProp, resumeLabel: resumeLabelProp, className, levelFilterProps, searchInputProps, copyButtonProps, followToggleProps, resumeButtonProps, groupButtonProps, emptyStateProps, spinnerProps, }: LogStreamProps): react_jsx_runtime.JSX.Element;
|
|
4057
|
+
|
|
4058
|
+
/**
|
|
4059
|
+
* Le même calendrier, en plus petit.
|
|
4060
|
+
*
|
|
4061
|
+
* Une variante de taille et non un composant à part : deux calendriers
|
|
4062
|
+
* séparés auraient divergé sur la sélection de plage, les jours désactivés
|
|
4063
|
+
* ou le premier jour de la semaine.
|
|
3003
4064
|
*/
|
|
3004
|
-
declare function
|
|
4065
|
+
declare function MiniCalendar({ className, ...props }: CalendarProps): react_jsx_runtime.JSX.Element;
|
|
4066
|
+
|
|
4067
|
+
interface MonthPickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange"> {
|
|
4068
|
+
onValueChange?: (value: string) => void;
|
|
4069
|
+
invalid?: boolean;
|
|
4070
|
+
}
|
|
4071
|
+
/**
|
|
4072
|
+
* Un mois, sans le jour.
|
|
4073
|
+
*
|
|
4074
|
+
* C'est le grain d'un exercice comptable ou d'un rapport mensuel : demander
|
|
4075
|
+
* un jour obligerait à en choisir un arbitrairement, et le premier du mois
|
|
4076
|
+
* finirait par être pris pour une vraie date.
|
|
4077
|
+
*/
|
|
4078
|
+
declare const MonthPicker: react.ForwardRefExoticComponent<MonthPickerProps & react.RefAttributes<HTMLInputElement>>;
|
|
3005
4079
|
|
|
3006
4080
|
interface PasswordStrength {
|
|
3007
4081
|
/** De 0 à 4. */
|
|
@@ -3015,7 +4089,8 @@ interface PasswordInputProps extends Omit<InputProps, "type" | "right"> {
|
|
|
3015
4089
|
hideToggle?: boolean;
|
|
3016
4090
|
/**
|
|
3017
4091
|
* Remplace l'évaluation par défaut. Un projet qui utilise `zxcvbn` branche
|
|
3018
|
-
* son résultat ici; le composant ne dépend de rien.
|
|
4092
|
+
* son résultat ici; le composant ne dépend de rien. Les libellés de
|
|
4093
|
+
* l'évaluation par défaut viennent de la locale (`passwordInput`).
|
|
3019
4094
|
*/
|
|
3020
4095
|
evaluate?: (value: string) => PasswordStrength;
|
|
3021
4096
|
}
|
|
@@ -3048,7 +4123,11 @@ interface PhoneCountry {
|
|
|
3048
4123
|
code: string;
|
|
3049
4124
|
/** Indicatif, avec le `+`. */
|
|
3050
4125
|
dial: string;
|
|
3051
|
-
|
|
4126
|
+
/**
|
|
4127
|
+
* Le nom affiché. Par défaut, celui que donne `Intl.DisplayNames` dans la
|
|
4128
|
+
* langue de la locale — « Cameroun », « Cameroon ».
|
|
4129
|
+
*/
|
|
4130
|
+
label?: string;
|
|
3052
4131
|
flag: string;
|
|
3053
4132
|
/** Nombre de chiffres attendus après l'indicatif. */
|
|
3054
4133
|
digits?: number;
|
|
@@ -3074,6 +4153,14 @@ interface PhoneInputProps extends Omit<InputProps, "value" | "defaultValue" | "o
|
|
|
3074
4153
|
defaultCountry?: string;
|
|
3075
4154
|
/** Verrouille le pays et masque le sélecteur. */
|
|
3076
4155
|
lockCountry?: boolean;
|
|
4156
|
+
/**
|
|
4157
|
+
* Le sélecteur d'indicatif : placement, recherche, rendu, classe.
|
|
4158
|
+
*
|
|
4159
|
+
* La valeur, les options et le rappel viennent de `countries` et du
|
|
4160
|
+
* numéro ; `disabled` suit celui du champ — pour figer le pays seul,
|
|
4161
|
+
* `lockCountry`.
|
|
4162
|
+
*/
|
|
4163
|
+
countrySelectProps?: Partial<Omit<SelectProps, "value" | "defaultValue" | "options" | "children" | "onValueChange" | "disabled">>;
|
|
3077
4164
|
}
|
|
3078
4165
|
/**
|
|
3079
4166
|
* Un numéro de téléphone international.
|
|
@@ -3088,59 +4175,9 @@ interface PhoneInputProps extends Omit<InputProps, "value" | "defaultValue" | "o
|
|
|
3088
4175
|
*/
|
|
3089
4176
|
declare const PhoneInput: react.ForwardRefExoticComponent<PhoneInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
3090
4177
|
|
|
3091
|
-
interface PopoverProps {
|
|
3092
|
-
content: ReactNode;
|
|
3093
|
-
title?: ReactNode;
|
|
3094
|
-
children: ReactElement<{
|
|
3095
|
-
onClick?: () => void;
|
|
3096
|
-
"aria-expanded"?: boolean;
|
|
3097
|
-
}>;
|
|
3098
|
-
open?: boolean;
|
|
3099
|
-
defaultOpen?: boolean;
|
|
3100
|
-
onOpenChange?: (open: boolean) => void;
|
|
3101
|
-
placement?: OverlayPlacement;
|
|
3102
|
-
trigger?: "click" | "hover";
|
|
3103
|
-
variant?: "solid" | "outline";
|
|
3104
|
-
tone?: ComponentTone;
|
|
3105
|
-
disabled?: boolean;
|
|
3106
|
-
className?: string;
|
|
3107
|
-
}
|
|
3108
|
-
/**
|
|
3109
|
-
* Un panneau attaché à un élément, avec du contenu qu'on peut viser.
|
|
3110
|
-
*
|
|
3111
|
-
* À la différence d'une infobulle, il reste ouvert : on y met un lien, un
|
|
3112
|
-
* bouton, un petit formulaire. Une infobulle qui contient un bouton est une
|
|
3113
|
-
* infobulle cassée — elle disparaît dès qu'on va vers lui.
|
|
3114
|
-
*/
|
|
3115
|
-
declare function Popover({ content, title, children, open: openProp, defaultOpen, onOpenChange, placement, trigger, variant, tone, disabled, className }: PopoverProps): react_jsx_runtime.JSX.Element;
|
|
3116
|
-
|
|
3117
|
-
interface ProgressProps {
|
|
3118
|
-
/** La valeur courante. Omise, la barre passe en indéterminé. */
|
|
3119
|
-
value?: number | undefined;
|
|
3120
|
-
max?: number;
|
|
3121
|
-
shape?: "bar" | "circle";
|
|
3122
|
-
tone?: ComponentTone;
|
|
3123
|
-
size?: ComponentSize;
|
|
3124
|
-
/** Épaisseur du trait, en pixels. Par défaut selon la taille. */
|
|
3125
|
-
thickness?: number | undefined;
|
|
3126
|
-
/** Affiche le pourcentage — au centre du cercle, en bout de barre. */
|
|
3127
|
-
showValue?: boolean;
|
|
3128
|
-
/** Remplace l'affichage par défaut. */
|
|
3129
|
-
format?: ((percent: number, value: number, max: number) => ReactNode) | undefined;
|
|
3130
|
-
label?: ReactNode;
|
|
3131
|
-
className?: string;
|
|
3132
|
-
}
|
|
3133
|
-
/**
|
|
3134
|
-
* L'avancement d'une tâche.
|
|
3135
|
-
*
|
|
3136
|
-
* Sans `value`, le composant passe en indéterminé plutôt que d'afficher zéro :
|
|
3137
|
-
* « je travaille » et « je n'ai rien fait » ne se ressemblent pas.
|
|
3138
|
-
*/
|
|
3139
|
-
declare function Progress(props: ProgressProps): react_jsx_runtime.JSX.Element;
|
|
3140
|
-
|
|
3141
4178
|
interface QRCodeProps {
|
|
3142
4179
|
value: string;
|
|
3143
|
-
size?: number;
|
|
4180
|
+
size?: number; /** Par défaut, celui de la locale. */
|
|
3144
4181
|
label?: string;
|
|
3145
4182
|
render?: (value: string, size: number) => ReactNode;
|
|
3146
4183
|
className?: string;
|
|
@@ -3152,10 +4189,11 @@ interface QRCodeProps {
|
|
|
3152
4189
|
* dépendance à tous ceux qui ne s'en servent pas, alors que les projets qui
|
|
3153
4190
|
* en ont besoin ont déjà le leur.
|
|
3154
4191
|
*/
|
|
3155
|
-
declare function QRCode({ value, size, label, render, className }: QRCodeProps): react_jsx_runtime.JSX.Element;
|
|
4192
|
+
declare function QRCode({ value, size, label: labelProp, render, className }: QRCodeProps): react_jsx_runtime.JSX.Element;
|
|
3156
4193
|
|
|
3157
4194
|
interface RelativeTimeProps extends Omit<HTMLAttributes<HTMLTimeElement>, "dateTime"> {
|
|
3158
4195
|
value: Date | string | number;
|
|
4196
|
+
/** La langue de la phrase. Par défaut, celle de la locale SIA. */
|
|
3159
4197
|
locale?: string;
|
|
3160
4198
|
prefix?: string;
|
|
3161
4199
|
refreshInterval?: number;
|
|
@@ -3166,7 +4204,7 @@ interface RelativeTimeProps extends Omit<HTMLAttributes<HTMLTimeElement>, "dateT
|
|
|
3166
4204
|
* Elle se rafraîchit d'elle-même : « il y a une minute » affiché une heure
|
|
3167
4205
|
* plus tard est faux, et rien ne le signale à qui lit l'écran resté ouvert.
|
|
3168
4206
|
*/
|
|
3169
|
-
declare function RelativeTime({ value, locale, prefix, refreshInterval, className, title, ...props }: RelativeTimeProps): react_jsx_runtime.JSX.Element | null;
|
|
4207
|
+
declare function RelativeTime({ value, locale: localeProp, prefix, refreshInterval, className, title, ...props }: RelativeTimeProps): react_jsx_runtime.JSX.Element | null;
|
|
3170
4208
|
|
|
3171
4209
|
interface RequireSessionProps<TUser, TTenant, TRule> {
|
|
3172
4210
|
session: SessionStore<TUser, TTenant, TRule>;
|
|
@@ -3198,18 +4236,23 @@ interface RequireSessionProps<TUser, TTenant, TRule> {
|
|
|
3198
4236
|
onForbidden?: (state: SessionState<TUser, TTenant>) => void;
|
|
3199
4237
|
onIncomplete?: (state: SessionState<TUser, TTenant>) => void;
|
|
3200
4238
|
className?: string;
|
|
4239
|
+
/**
|
|
4240
|
+
* Les props du `Spinner` d'attente par défaut — taille, variante, libellé
|
|
4241
|
+
* lu par les lecteurs d'écran. Sans effet quand `pending` est fourni.
|
|
4242
|
+
*/
|
|
4243
|
+
spinnerProps?: Partial<SpinnerProps>;
|
|
3201
4244
|
}
|
|
3202
4245
|
/**
|
|
3203
4246
|
* Ce qui se trouve derrière une session valide.
|
|
3204
4247
|
*
|
|
3205
|
-
*
|
|
3206
|
-
*
|
|
4248
|
+
* Chaque application l'écrit, presque toujours de la même façon, à la cible
|
|
4249
|
+
* de redirection près. Elle ne dépend d'aucun routeur : elle rend
|
|
3207
4250
|
* un état et prévient, l'application décide où aller.
|
|
3208
4251
|
*
|
|
3209
4252
|
* > Ceci protège l'interface, pas les données. Une route masquée reste une
|
|
3210
4253
|
* > route ouverte tant que le serveur ne refuse pas l'appel.
|
|
3211
4254
|
*/
|
|
3212
|
-
declare function RequireSession<TUser, TTenant, TRule = PermissionRule>({ session, children, require: rule, pending, fallback, forbidden, allowIncomplete, onUnauthenticated, onForbidden, onIncomplete, className, }: RequireSessionProps<TUser, TTenant, TRule>): react_jsx_runtime.JSX.Element;
|
|
4255
|
+
declare function RequireSession<TUser, TTenant, TRule = PermissionRule>({ session, children, require: rule, pending, fallback, forbidden, allowIncomplete, onUnauthenticated, onForbidden, onIncomplete, className, spinnerProps, }: RequireSessionProps<TUser, TTenant, TRule>): react_jsx_runtime.JSX.Element;
|
|
3213
4256
|
interface CanProps<TUser, TTenant, TRule> {
|
|
3214
4257
|
session: SessionStore<TUser, TTenant, TRule>;
|
|
3215
4258
|
require: TRule;
|
|
@@ -3243,57 +4286,6 @@ interface ResizablePanelProps {
|
|
|
3243
4286
|
*/
|
|
3244
4287
|
declare function ResizablePanel({ first, second, defaultSize, minSize, maxSize, direction, className }: ResizablePanelProps): react_jsx_runtime.JSX.Element;
|
|
3245
4288
|
|
|
3246
|
-
interface ScrollAreaProps {
|
|
3247
|
-
children: ReactNode;
|
|
3248
|
-
/** Hauteur maximale. Au-delà, la zone défile. */
|
|
3249
|
-
maxHeight?: number | string;
|
|
3250
|
-
height?: number | string;
|
|
3251
|
-
orientation?: "vertical" | "horizontal" | "both";
|
|
3252
|
-
/**
|
|
3253
|
-
* Estompe le contenu aux bords tant qu'il reste quelque chose à faire
|
|
3254
|
-
* défiler. C'est le seul indice fiable quand la barre est fine ou masquée.
|
|
3255
|
-
*/
|
|
3256
|
-
fade?: boolean;
|
|
3257
|
-
className?: string;
|
|
3258
|
-
}
|
|
3259
|
-
/**
|
|
3260
|
-
* Une zone défilante sobre.
|
|
3261
|
-
*
|
|
3262
|
-
* La barre reste celle du navigateur, seulement affinée : une barre
|
|
3263
|
-
* réimplémentée en JavaScript coûte un écouteur de défilement, deux mesures
|
|
3264
|
-
* par image et perd le défilement inertiel des pavés tactiles. Le seul ajout
|
|
3265
|
-
* est l'estompe des bords, qui ne demande qu'un booléen par côté.
|
|
3266
|
-
*/
|
|
3267
|
-
declare function ScrollArea({ children, maxHeight, height, orientation, fade, className, }: ScrollAreaProps): react_jsx_runtime.JSX.Element;
|
|
3268
|
-
|
|
3269
|
-
interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange"> {
|
|
3270
|
-
value?: string;
|
|
3271
|
-
defaultValue?: string;
|
|
3272
|
-
onValueChange?: (value: string) => void;
|
|
3273
|
-
/** Appelé à la validation, et après le délai si `searchDelay` est posé. */
|
|
3274
|
-
onSearch?: (value: string) => void;
|
|
3275
|
-
/**
|
|
3276
|
-
* Millisecondes d'inactivité avant de déclencher `onSearch`.
|
|
3277
|
-
*
|
|
3278
|
-
* `0` — le défaut — ne déclenche qu'à la validation. Au-delà, la recherche
|
|
3279
|
-
* part quand la frappe s'arrête : c'est ce que chaque projet réécrivait
|
|
3280
|
-
* autour de ce champ.
|
|
3281
|
-
*/
|
|
3282
|
-
searchDelay?: number;
|
|
3283
|
-
clearable?: boolean;
|
|
3284
|
-
searchLabel?: string;
|
|
3285
|
-
clearLabel?: string;
|
|
3286
|
-
}
|
|
3287
|
-
/**
|
|
3288
|
-
* Une recherche, avec son délai.
|
|
3289
|
-
*
|
|
3290
|
-
* `searchDelay` vaut zéro par défaut : la recherche ne part qu'à la
|
|
3291
|
-
* validation. C'est le réglage sûr — une requête à chaque frappe se paie en
|
|
3292
|
-
* appels serveur, et le défaut ne doit pas engager ce coût sans qu'on l'ait
|
|
3293
|
-
* demandé.
|
|
3294
|
-
*/
|
|
3295
|
-
declare const SearchInput: react.ForwardRefExoticComponent<SearchInputProps & react.RefAttributes<HTMLInputElement>>;
|
|
3296
|
-
|
|
3297
4289
|
/** Une paire nom / valeur. La valeur n'est jamais relue du serveur. */
|
|
3298
4290
|
interface SecretEntry {
|
|
3299
4291
|
key: string;
|
|
@@ -3315,12 +4307,39 @@ interface SecretFieldsProps {
|
|
|
3315
4307
|
templates?: string[];
|
|
3316
4308
|
/** La forme d'un nom valide. Par défaut, aucune contrainte. */
|
|
3317
4309
|
keyPattern?: RegExp;
|
|
4310
|
+
/** Les libellés ci-dessous viennent par défaut du groupe `secretFields` de la locale. */
|
|
3318
4311
|
keyPatternMessage?: string;
|
|
3319
4312
|
keyLabel?: string;
|
|
3320
4313
|
valueLabel?: string;
|
|
3321
4314
|
addLabel?: ReactNode;
|
|
3322
4315
|
disabled?: boolean;
|
|
3323
4316
|
className?: string;
|
|
4317
|
+
/**
|
|
4318
|
+
* Le bouton d'ajout : variante, taille, icône, classe. Son libellé passe
|
|
4319
|
+
* par `addLabel`.
|
|
4320
|
+
*/
|
|
4321
|
+
addButtonProps?: Partial<Omit<ButtonProps, "onClick" | "children" | "disabled">>;
|
|
4322
|
+
/**
|
|
4323
|
+
* Le bouton qui retire une ligne : icône, variante, taille.
|
|
4324
|
+
*
|
|
4325
|
+
* Son nom reste calculé ligne par ligne — « Retirer API_KEY » — pour que
|
|
4326
|
+
* chaque bouton dise lequel il retire.
|
|
4327
|
+
*/
|
|
4328
|
+
removeButtonProps?: Partial<Omit<IconButtonProps, "onClick" | "label" | "disabled">>;
|
|
4329
|
+
/**
|
|
4330
|
+
* Le champ du nom : placeholder, taille, classe.
|
|
4331
|
+
*
|
|
4332
|
+
* La valeur, la saisie et l'état d'erreur, avec son `aria-describedby`,
|
|
4333
|
+
* restent calculés par ligne.
|
|
4334
|
+
*/
|
|
4335
|
+
keyInputProps?: Partial<Omit<InputProps, "value" | "defaultValue" | "onChange" | "disabled" | "invalid" | "aria-describedby">>;
|
|
4336
|
+
/**
|
|
4337
|
+
* Le champ de la valeur : placeholder, jauge, classe.
|
|
4338
|
+
*
|
|
4339
|
+
* Pas d'`autoComplete` : `new-password` est ce qui empêche le navigateur
|
|
4340
|
+
* de proposer le mot de passe du compte à la place du secret.
|
|
4341
|
+
*/
|
|
4342
|
+
valueInputProps?: Partial<Omit<PasswordInputProps, "value" | "defaultValue" | "onChange" | "disabled" | "autoComplete">>;
|
|
3324
4343
|
}
|
|
3325
4344
|
/** Les valeurs effacées, les noms gardés — ce qu'on affiche après l'envoi. */
|
|
3326
4345
|
declare function clearSecretValues(entries: SecretEntry[]): SecretEntry[];
|
|
@@ -3335,7 +4354,7 @@ declare function clearSecretValues(entries: SecretEntry[]): SecretEntry[];
|
|
|
3335
4354
|
* Après l'envoi, `clearSecretValues` vide les valeurs : un secret ne reste pas
|
|
3336
4355
|
* affiché dans un formulaire ouvert.
|
|
3337
4356
|
*/
|
|
3338
|
-
declare function SecretFields({ value, defaultValue, onValueChange, storedKeys, templates, keyPattern, keyPatternMessage, keyLabel, valueLabel, addLabel, disabled, className, }: SecretFieldsProps): react_jsx_runtime.JSX.Element;
|
|
4357
|
+
declare function SecretFields({ value, defaultValue, onValueChange, storedKeys, templates, keyPattern, keyPatternMessage: keyPatternMessageProp, keyLabel: keyLabelProp, valueLabel: valueLabelProp, addLabel: addLabelProp, disabled, className, addButtonProps, removeButtonProps, keyInputProps, valueInputProps, }: SecretFieldsProps): react_jsx_runtime.JSX.Element;
|
|
3339
4358
|
/** Ce qu'il faut envoyer au serveur après une saisie dans `SecretFields`. */
|
|
3340
4359
|
interface SecretChanges {
|
|
3341
4360
|
/** À créer ou à remplacer (rotation) : nom → nouvelle valeur. */
|
|
@@ -3365,25 +4384,11 @@ interface SecretChanges {
|
|
|
3365
4384
|
*/
|
|
3366
4385
|
declare function secretChanges(entries: SecretEntry[], storedKeys?: string[]): SecretChanges;
|
|
3367
4386
|
|
|
3368
|
-
interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
|
|
3369
|
-
width?: CSSProperties["width"];
|
|
3370
|
-
height?: CSSProperties["height"];
|
|
3371
|
-
radius?: CSSProperties["borderRadius"];
|
|
3372
|
-
circle?: boolean;
|
|
3373
|
-
}
|
|
3374
|
-
/**
|
|
3375
|
-
* La forme de ce qui n'est pas encore là.
|
|
3376
|
-
*
|
|
3377
|
-
* Aux dimensions du contenu attendu, et non d'une taille générique : c'est
|
|
3378
|
-
* ce qui évite le sursaut de mise en page à l'arrivée des données, lequel
|
|
3379
|
-
* fait cliquer à côté.
|
|
3380
|
-
*/
|
|
3381
|
-
declare function Skeleton({ className, width, height, radius, circle, style, ...props }: SkeletonProps): react_jsx_runtime.JSX.Element;
|
|
3382
|
-
|
|
3383
4387
|
interface StatisticProps {
|
|
3384
4388
|
value: number;
|
|
3385
4389
|
label?: ReactNode;
|
|
3386
4390
|
format?: "number" | "currency" | "percent";
|
|
4391
|
+
/** La langue du format. Par défaut, celle de la locale SIA. */
|
|
3387
4392
|
locale?: string;
|
|
3388
4393
|
currency?: string;
|
|
3389
4394
|
precision?: number;
|
|
@@ -3399,12 +4404,20 @@ interface StatisticProps {
|
|
|
3399
4404
|
* décide du sens et de la couleur. Une flèche passée en prop finit par
|
|
3400
4405
|
* pointer vers le haut sur une baisse.
|
|
3401
4406
|
*/
|
|
3402
|
-
declare function Statistic({ value, label, format, locale, currency, precision, prefix, suffix, trend, className }: StatisticProps): react_jsx_runtime.JSX.Element;
|
|
4407
|
+
declare function Statistic({ value, label, format, locale: localeProp, currency, precision, prefix, suffix, trend, className }: StatisticProps): react_jsx_runtime.JSX.Element;
|
|
3403
4408
|
|
|
3404
4409
|
interface StatCardProps extends StatisticProps {
|
|
3405
4410
|
icon?: ReactNode;
|
|
3406
4411
|
description?: ReactNode;
|
|
3407
4412
|
action?: ReactNode;
|
|
4413
|
+
/**
|
|
4414
|
+
* Les props de la `Card` qui entoure l'indicateur — un `id`, un
|
|
4415
|
+
* `aria-label`, un gestionnaire de clic. Sans `children` : le contenu est
|
|
4416
|
+
* celui de l'indicateur. `className` s'ajoute à celui de la carte.
|
|
4417
|
+
*/
|
|
4418
|
+
cardProps?: Partial<Omit<CardProps, "children">>;
|
|
4419
|
+
/** Les props du `CardBody`, sans `children`, rempli par l'indicateur. */
|
|
4420
|
+
cardBodyProps?: Partial<Omit<CardBodyProps, "children">>;
|
|
3408
4421
|
}
|
|
3409
4422
|
/**
|
|
3410
4423
|
* Un indicateur, dans une carte.
|
|
@@ -3413,35 +4426,7 @@ interface StatCardProps extends StatisticProps {
|
|
|
3413
4426
|
* presque toujours ensemble, et qu'il serait fastidieux de recomposer à
|
|
3414
4427
|
* chaque tableau de bord.
|
|
3415
4428
|
*/
|
|
3416
|
-
declare function StatCard({ icon, description, action, className, ...statisticProps }: StatCardProps): react_jsx_runtime.JSX.Element;
|
|
3417
|
-
|
|
3418
|
-
type StepStatus = "done" | "current" | "upcoming" | "error";
|
|
3419
|
-
interface StepItem {
|
|
3420
|
-
key: string;
|
|
3421
|
-
title: ReactNode;
|
|
3422
|
-
description?: ReactNode;
|
|
3423
|
-
icon?: ReactNode;
|
|
3424
|
-
/** Forcé au besoin; sinon déduit de `current`. */
|
|
3425
|
-
status?: StepStatus;
|
|
3426
|
-
disabled?: boolean;
|
|
3427
|
-
}
|
|
3428
|
-
interface StepsProps {
|
|
3429
|
-
items: StepItem[];
|
|
3430
|
-
/** Index de l'étape en cours. Ce qui précède est fait, ce qui suit à venir. */
|
|
3431
|
-
current?: number;
|
|
3432
|
-
orientation?: "horizontal" | "vertical";
|
|
3433
|
-
size?: "sm" | "md";
|
|
3434
|
-
/** Rend les étapes cliquables — pour revenir en arrière dans un tunnel. */
|
|
3435
|
-
onStepClick?: (item: StepItem, index: number) => void;
|
|
3436
|
-
className?: string;
|
|
3437
|
-
}
|
|
3438
|
-
/**
|
|
3439
|
-
* Une progression en étapes.
|
|
3440
|
-
*
|
|
3441
|
-
* Le trait entre deux étapes se remplit plutôt que de changer de couleur d'un
|
|
3442
|
-
* coup : c'est ce qui donne le sens de la marche, vers l'avant.
|
|
3443
|
-
*/
|
|
3444
|
-
declare function Steps({ items, current, orientation, size, onStepClick, className, }: StepsProps): react_jsx_runtime.JSX.Element;
|
|
4429
|
+
declare function StatCard({ icon, description, action, className, cardProps, cardBodyProps, ...statisticProps }: StatCardProps): react_jsx_runtime.JSX.Element;
|
|
3445
4430
|
|
|
3446
4431
|
interface TabsProps {
|
|
3447
4432
|
value?: string;
|
|
@@ -3538,6 +4523,12 @@ interface ToasterProps {
|
|
|
3538
4523
|
*/
|
|
3539
4524
|
container?: HTMLElement | null | undefined;
|
|
3540
4525
|
className?: string;
|
|
4526
|
+
/**
|
|
4527
|
+
* Les props du `Spinner` des annonces en attente (`toast.loading`,
|
|
4528
|
+
* `toast.promise`) — variante, taille. Sans effet sur une annonce qui
|
|
4529
|
+
* fournit sa propre `icon`.
|
|
4530
|
+
*/
|
|
4531
|
+
spinnerProps?: Partial<SpinnerProps>;
|
|
3541
4532
|
}
|
|
3542
4533
|
/**
|
|
3543
4534
|
* La pile visible.
|
|
@@ -3547,7 +4538,7 @@ interface ToasterProps {
|
|
|
3547
4538
|
* d'apparaître près du geste qui l'a déclenchée et à une panne générale de
|
|
3548
4539
|
* s'imposer en haut de l'écran.
|
|
3549
4540
|
*/
|
|
3550
|
-
declare function Toaster({ placement, limit, duration, width, offset, container, className, }: ToasterProps): react.ReactPortal | null;
|
|
4541
|
+
declare function Toaster({ placement, limit, duration, width, offset, container, className, spinnerProps, }: ToasterProps): react.ReactPortal | null;
|
|
3551
4542
|
interface ToastProviderProps extends PropsWithChildren, ToasterProps {
|
|
3552
4543
|
}
|
|
3553
4544
|
/**
|
|
@@ -3575,59 +4566,6 @@ declare function useToast(): ((input: _sia_ui_headless.ToastInput) => string) &
|
|
|
3575
4566
|
custom: (options: ToastOptions) => string;
|
|
3576
4567
|
};
|
|
3577
4568
|
|
|
3578
|
-
interface ToggleProps {
|
|
3579
|
-
pressed?: boolean;
|
|
3580
|
-
defaultPressed?: boolean;
|
|
3581
|
-
onPressedChange?: (pressed: boolean) => void;
|
|
3582
|
-
children?: ReactNode;
|
|
3583
|
-
icon?: ReactNode;
|
|
3584
|
-
/** Obligatoire quand le contenu se réduit à une icône. */
|
|
3585
|
-
ariaLabel?: string;
|
|
3586
|
-
size?: ComponentSize;
|
|
3587
|
-
tone?: ComponentTone;
|
|
3588
|
-
variant?: "solid" | "outline" | "ghost";
|
|
3589
|
-
disabled?: boolean;
|
|
3590
|
-
className?: string;
|
|
3591
|
-
}
|
|
3592
|
-
/**
|
|
3593
|
-
* Un bouton à deux états.
|
|
3594
|
-
*
|
|
3595
|
-
* Ce n'est pas un `Switch` : un interrupteur décrit un réglage qui persiste,
|
|
3596
|
-
* une bascule décrit un état de l'interface ici et maintenant — gras, filtre
|
|
3597
|
-
* actif, colonne affichée. `aria-pressed` porte cette différence.
|
|
3598
|
-
*/
|
|
3599
|
-
declare function Toggle({ pressed: pressedProp, defaultPressed, onPressedChange, children, icon, ariaLabel, size, tone, variant, disabled, className, }: ToggleProps): react_jsx_runtime.JSX.Element;
|
|
3600
|
-
interface ToggleGroupOption {
|
|
3601
|
-
value: string;
|
|
3602
|
-
label?: ReactNode;
|
|
3603
|
-
icon?: ReactNode;
|
|
3604
|
-
ariaLabel?: string;
|
|
3605
|
-
disabled?: boolean;
|
|
3606
|
-
}
|
|
3607
|
-
interface ToggleGroupProps {
|
|
3608
|
-
options: ToggleGroupOption[];
|
|
3609
|
-
/** `single` : une valeur ou aucune. `multiple` : un tableau. */
|
|
3610
|
-
type?: "single" | "multiple";
|
|
3611
|
-
value?: string | string[];
|
|
3612
|
-
defaultValue?: string | string[];
|
|
3613
|
-
/** Une chaîne en `single`, un tableau en `multiple` — comme `value`. */
|
|
3614
|
-
onValueChange?: (value: string | string[]) => void;
|
|
3615
|
-
size?: ComponentSize;
|
|
3616
|
-
tone?: ComponentTone;
|
|
3617
|
-
/** Autorise à tout désélectionner en `single`. */
|
|
3618
|
-
deselectable?: boolean;
|
|
3619
|
-
disabled?: boolean;
|
|
3620
|
-
ariaLabel?: string;
|
|
3621
|
-
className?: string;
|
|
3622
|
-
}
|
|
3623
|
-
/**
|
|
3624
|
-
* Plusieurs bascules qui partagent une valeur.
|
|
3625
|
-
*
|
|
3626
|
-
* Le repère glisse d'une option à l'autre au lieu de sauter : c'est la même
|
|
3627
|
-
* idée que les onglets, et c'est ce qui rend le changement lisible.
|
|
3628
|
-
*/
|
|
3629
|
-
declare function ToggleGroup({ options, type, value: valueProp, defaultValue, onValueChange, size, tone, deselectable, disabled, ariaLabel, className, }: ToggleGroupProps): react_jsx_runtime.JSX.Element;
|
|
3630
|
-
|
|
3631
4569
|
interface TourStep {
|
|
3632
4570
|
target: string;
|
|
3633
4571
|
title: ReactNode;
|
|
@@ -3670,7 +4608,7 @@ interface TransferProps {
|
|
|
3670
4608
|
* cocher de deux cents lignes ne montre plus ce qui est retenu, alors que
|
|
3671
4609
|
* la colonne de droite ne contient que cela.
|
|
3672
4610
|
*/
|
|
3673
|
-
declare function Transfer({ items, targetKeys, onChange, sourceTitle, targetTitle, className }: TransferProps): react_jsx_runtime.JSX.Element;
|
|
4611
|
+
declare function Transfer({ items, targetKeys, onChange, sourceTitle: sourceTitleProp, targetTitle: targetTitleProp, className }: TransferProps): react_jsx_runtime.JSX.Element;
|
|
3674
4612
|
|
|
3675
4613
|
interface TreeNode {
|
|
3676
4614
|
key: Key;
|
|
@@ -3700,6 +4638,13 @@ interface TreeSelectProps {
|
|
|
3700
4638
|
onValueChange?: (value: Key, node: TreeNode) => void;
|
|
3701
4639
|
placeholder?: string;
|
|
3702
4640
|
className?: string;
|
|
4641
|
+
/**
|
|
4642
|
+
* L'arbre du panneau : nœuds dépliés à l'ouverture, classe.
|
|
4643
|
+
*
|
|
4644
|
+
* Les nœuds, la sélection et son rappel restent au sélecteur, qui se
|
|
4645
|
+
* referme sur le choix.
|
|
4646
|
+
*/
|
|
4647
|
+
treeProps?: Partial<Omit<TreeProps, "nodes" | "selectedKey" | "onSelect">>;
|
|
3703
4648
|
}
|
|
3704
4649
|
/**
|
|
3705
4650
|
* Un choix dans une arborescence.
|
|
@@ -3708,7 +4653,7 @@ interface TreeSelectProps {
|
|
|
3708
4653
|
* attente » ne se réduit pas à « En attente » sans devenir ambigu dès qu'un
|
|
3709
4654
|
* autre nœud porte le même nom.
|
|
3710
4655
|
*/
|
|
3711
|
-
declare function TreeSelect({ nodes, value, onValueChange, placeholder: placeholderProp, className }: TreeSelectProps): react_jsx_runtime.JSX.Element;
|
|
4656
|
+
declare function TreeSelect({ nodes, value, onValueChange, placeholder: placeholderProp, className, treeProps }: TreeSelectProps): react_jsx_runtime.JSX.Element;
|
|
3712
4657
|
|
|
3713
4658
|
interface HeadingProps extends HTMLAttributes<HTMLHeadingElement> {
|
|
3714
4659
|
level?: 1 | 2 | 3 | 4 | 5 | 6;
|
|
@@ -3732,6 +4677,7 @@ declare function InlineCode({ className, ...props }: HTMLAttributes<HTMLElement>
|
|
|
3732
4677
|
|
|
3733
4678
|
interface UnsavedChangesGuardProps {
|
|
3734
4679
|
when: boolean;
|
|
4680
|
+
/** Le message de la confirmation. Par défaut, `unsavedChangesGuard.message` de la locale. */
|
|
3735
4681
|
message?: string;
|
|
3736
4682
|
}
|
|
3737
4683
|
/**
|
|
@@ -3742,7 +4688,14 @@ interface UnsavedChangesGuardProps {
|
|
|
3742
4688
|
* confirmation interne, que `confirmUnsavedNavigation` déclenche avant une
|
|
3743
4689
|
* navigation du routeur.
|
|
3744
4690
|
*/
|
|
3745
|
-
declare function UnsavedChangesGuard({ when, message }: UnsavedChangesGuardProps): null;
|
|
4691
|
+
declare function UnsavedChangesGuard({ when, message: messageProp }: UnsavedChangesGuardProps): null;
|
|
4692
|
+
/**
|
|
4693
|
+
* La confirmation avant une navigation du routeur.
|
|
4694
|
+
*
|
|
4695
|
+
* Hors d'un composant, la locale n'est pas lisible : passer
|
|
4696
|
+
* `locale.unsavedChangesGuard.message` (lu avec `useSiaLocale()`) pour un
|
|
4697
|
+
* message dans la langue de l'application. À défaut, le message français.
|
|
4698
|
+
*/
|
|
3746
4699
|
declare function confirmUnsavedNavigation(when: boolean, message?: string): boolean;
|
|
3747
4700
|
|
|
3748
4701
|
interface WeekPickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "onChange"> {
|
|
@@ -3775,4 +4728,4 @@ interface YearPickerProps {
|
|
|
3775
4728
|
*/
|
|
3776
4729
|
declare function YearPicker({ value, defaultValue, min, max, onValueChange, className }: YearPickerProps): react_jsx_runtime.JSX.Element;
|
|
3777
4730
|
|
|
3778
|
-
export { Accordion, type AccordionItem, type AccordionProps, type ActivityEntry, ActivityIcon, ActivityLog, type ActivityLogFilter, type ActivityLogProps, Alert, AlertCircleIcon, type AlertProps, AmountDisplay, type AmountDisplayProps, AppShell, AppShellBrand, type AppShellBrandProps, type AppShellCollapsible, type AppShellContentWidth, type AppShellMobileNav, type AppShellProps, AppShellRailItem, type AppShellRailItemProps, ArrowRightIcon, AspectRatio, type AspectRatioProps, AsyncState, type AsyncStateProps, type AuditEvent, AuditMeta, type AuditMetaProps, AuthLayout, type AuthLayoutProps, Autocomplete, type AutocompleteProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, type AvatarTint, type AvatarVariant, Badge, type BadgeProps, BottomTabs, type BottomTabsProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, Calendar, type CalendarDay, type CalendarEvent, CalendarIcon, type CalendarMode, type CalendarProps, type CalendarRangeValue, Can, type CanProps, Card, CardBody, CardFooter, CardHeader, Chart, type ChartProps, type ChartSeries, CheckIcon, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ClockIcon, Collapse, type CollapseProps, ColorPicker, type ColorPickerProps, type ColumnCardRole, type CommandItem, CommandPalette, type CommandPaletteProps, ConfirmDialog, type ConfirmDialogProps, Container, ContextMenu, type ContextMenuProps, Countdown, type CountdownProps, type CrudActionOptions, type CrudCreateOptions, type CrudDialogOptions, type CrudDialogState, CrudDialogs, CrudPage, type CrudPageProps, CurrencyInput, type CurrencyInputProps, DEFAULT_COUNTRIES, DEFAULT_PAGE_SIZE_OPTIONS, DataTable, type DataTableColumn, type DataTableProps, type DataTableView, DatePicker, type DatePickerProps, DateRangeFilter, type DateRangeFilterProps, DateRangePicker, type DateRangePickerProps, type DateRangePreset, type DateRangeValue, DateTimePicker, type DateTimePickerProps, type DateTimeValue, type DescriptionItem, Descriptions, type DescriptionsProps, Divider, type DividerProps, Drawer, DrawerBody, DrawerClose, type DrawerComponent, DrawerFooter, DrawerHeader, type DrawerPosition, type DrawerProps, type DrawerRef, type DrawerSize, DrawerTitle, DropdownMenu, type DropdownMenuProps, DurationDisplay, type DurationDisplayProps, EmptyState, type EmptyStateProps, EntityMeta, type EntityMetaProps, ErrorState, type ErrorStateProps, EventCalendar, type EventCalendarProps, EyeIcon, EyeOffIcon, Field, type FieldBindingLike, type FieldProps, type FieldStatus, type FieldType, type FieldValue, FileUpload, type FileUploadProps, FiltersBar, type FiltersBarProps, FolderIcon, Form, type FormEntry, Field as FormField, type FormFieldConfig, type FormFieldGroup, type FieldProps as FormFieldProps, type FormProps, type FormShape, Heading, type HeadingProps, HomeIcon, HoverCard, type HoverCardProps, type IDrawerProps, type ILabelProps, type ITooltipProps, type ITooltipVariant, IconButton, type IconButtonProps, ImageUpload, type ImageUploadProps, InfoIcon, InlineCode, Input, InputNumber, type InputNumberProps, type InputProps, JsonEditor, type JsonEditorProps, KeyIcon, KpiGrid, type KpiGridProps, Label, type LabelProps, LockIcon, LogOutIcon, MarkdownEditor, type MarkdownEditorProps, type MenuEntry, type MenuItem, type MenuLabel, MenuList, type MenuListProps, type MenuSeparator, MiniCalendar, MinusIcon, Modal, type ModalProps, MonthPicker, type MonthPickerProps, MoreHorizontalIcon, MultiSelect, type MultiSelectProps, OtpInput, type OtpInputProps, Overlay, type OverlayPlacement, type OverlayProps, PageHeader, type PageHeaderProps, type PageSizeContext, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, type PasswordStrength, PencilIcon, PermissionGate, type PermissionGateProps, type PhoneCountry, PhoneInput, type PhoneInputProps, PlusIcon, Popover, type PopoverProps, Progress, type ProgressProps, QRCode, type QRCodeProps, Radio, RadioButton, type RadioButtonProps, RadioGroup, type RadioGroupProps, type RadioProps, Rating, type RatingProps, type ReferenceOption, ReferenceSelect, type ReferenceSelectProps, RelativeTime, type RelativeTimeProps, RequireSession, type RequireSessionProps, ResizablePanel, type ResizablePanelProps, type ResourceDefinition, type ResourceField, type ResourceFormMode, RichTextEditor, type RichTextEditorProps, type RowAction, ScrollArea, type ScrollAreaProps, SearchIcon, SearchInput, type SearchInputProps, type SecretChanges, type SecretEntry, SecretFields, type SecretFieldsProps, Select, type SelectOption, type SelectProps, ServerIcon, SettingsIcon, Sidebar, type SidebarEntry, type SidebarItem, type SidebarProps, type SidebarRenderLink, type SidebarSection, type SidebarState, Skeleton, type SkeletonProps, Slider, type SliderProps, type SliderRangeValue, Sparkline, type SparklineProps, Spinner, type SpinnerProps, Stack, StarIcon, StatCard, type StatCardProps, Statistic, type StatisticProps, StatusBadge, type StatusBadgeProps, type StepItem, type StepStatus, Steps, type StepsProps, Switch, type SwitchProps, Tabs, TabsContent, TabsList, type TabsProps, TabsTrigger, TagsInput, type TagsInputProps, type TanStackRouterLike, Text, type TextProps, Textarea, type TextareaProps, type TimeParts, TimePicker, type TimePickerProps, TimeRangePicker, type TimeRangePickerProps, type TimeRangeValue, Timeline, type TimelineItem, type TimelineProps, Timer, type TimerProps, ToastProvider, type ToastProviderProps, Toaster, type ToasterProps, Toggle, ToggleGroup, type ToggleGroupOption, type ToggleGroupProps, type ToggleProps, Tooltip, type TooltipProps, type TooltipVariant, Tour, type TourProps, type TourStep, Transfer, type TransferItem, type TransferProps, TrashIcon, Tree, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, UnsavedChangesGuard, type UnsavedChangesGuardProps, UploadIcon, type UseDataTableQueryOptions, UserIcon, UsersIcon, WeekPicker, type WeekPickerProps, XIcon, YearPicker, type YearPickerProps, activityColumns, clearSecretValues, confirmUnsavedNavigation, createTanStackRouterStorage, createUrlTableStorage, defineResource, formFieldNames, formatDuration, formatTimeValue, initialsOf, parseTimeValue, resourceColumns, resourceDefaults, resourceDetailColumns, resourceFormFields, resourcePermissions, resourceRowKey, resourceSearchKeys, resourceValidator, secretChanges, tintForName, toneOf, useDataTableQuery, useToast };
|
|
4731
|
+
export { Accordion, type AccordionItem, type AccordionProps, AccountMenu, type AccountMenuProps, type ActivityEntry, ActivityIcon, ActivityLog, type ActivityLogFilter, type ActivityLogProps, Alert, AlertCircleIcon, type AlertProps, AmountDisplay, type AmountDisplayProps, AppShell, AppShellBrand, type AppShellBrandProps, type AppShellCollapsible, type AppShellContentWidth, type AppShellMobileNav, type AppShellProps, AppShellRailItem, type AppShellRailItemProps, ArrowRightIcon, AspectRatio, type AspectRatioProps, AsyncState, type AsyncStateProps, type AuditEvent, AuditMeta, type AuditMetaProps, AuthLayout, type AuthLayoutProps, Autocomplete, type AutocompleteProps, Avatar, AvatarGroup, type AvatarGroupProps, type AvatarProps, type AvatarShape, type AvatarSize, type AvatarStatus, type AvatarTint, type AvatarVariant, Badge, type BadgeProps, BottomTabs, type BottomTabsProps, BrandIcon, type BrandIconData, type BrandIconProps, Breadcrumb, type BreadcrumbItem, type BreadcrumbProps, Button, type ButtonProps, Calendar, type CalendarDay, type CalendarEvent, CalendarIcon, type CalendarMode, type CalendarProps, type CalendarRangeValue, Can, type CanProps, Card, CardBody, type CardBodyProps, CardFooter, type CardFooterProps, CardHeader, type CardHeaderProps, type CardProps, Chart, type ChartProps, type ChartSeries, CheckIcon, Checkbox, CheckboxGroup, type CheckboxGroupProps, type CheckboxProps, ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpIcon, ClockIcon, Collapse, type CollapseProps, ColorModeToggle, type ColorModeToggleProps, ColorPicker, type ColorPickerProps, type ColumnCardRole, type CommandItem, CommandPalette, type CommandPaletteProps, ConfirmDialog, type ConfirmDialogProps, Container, ContextMenu, type ContextMenuProps, Countdown, type CountdownProps, type CrudActionOptions, type CrudCreateOptions, type CrudDescriptionsProps, type CrudDialogOptions, type CrudDialogState, CrudDialogs, type CrudFormProps, type CrudModalProps, CrudPage, type CrudPageProps, CurrencyInput, type CurrencyInputProps, DEFAULT_COUNTRIES, DEFAULT_PAGE_SIZE_OPTIONS, DataTable, type DataTableColumn, type DataTableProps, type DataTableView, DatePicker, type DatePickerProps, DateRangeFilter, type DateRangeFilterProps, DateRangePicker, type DateRangePickerProps, type DateRangePreset, type DateRangeValue, DateTimePicker, type DateTimePickerProps, type DateTimeValue, type DescriptionItem, Descriptions, type DescriptionsProps, Divider, type DividerProps, Drawer, DrawerBody, DrawerClose, type DrawerComponent, DrawerFooter, DrawerHeader, type DrawerPosition, type DrawerProps, type DrawerRef, type DrawerSize, DrawerTitle, DropdownMenu, type DropdownMenuProps, DurationDisplay, type DurationDisplayProps, EmptyState, type EmptyStateProps, EntityMeta, type EntityMetaProps, ErrorState, type ErrorStateProps, EventCalendar, type EventCalendarLabels, type EventCalendarProps, type EventDraft, EventManager, type EventManagerLabels, type EventManagerProps, EyeIcon, EyeOffIcon, Field, type FieldBindingLike, type FieldControlOverrides, type FieldProps, type FieldStatus, type FieldType, type FieldValue, FileUpload, type FileUploadProps, FiltersBar, type FiltersBarProps, FolderIcon, Form, type FormEntry, Field as FormField, type FormFieldConfig, type FormFieldGroup, type FieldProps as FormFieldProps, type FormProps, type FormShape, Heading, type HeadingProps, HomeIcon, HoverCard, type HoverCardProps, type IDrawerProps, type ILabelProps, type ITooltipProps, type ITooltipVariant, IconButton, type IconButtonProps, ImageUpload, type ImageUploadProps, InfoIcon, InlineCode, Input, InputNumber, type InputNumberProps, type InputProps, type JobInstant, JobProgress, type JobProgressLabels, type JobProgressProps, type JobStatus, JsonEditor, type JsonEditorProps, JsonView, type JsonViewProps, KeyIcon, KpiGrid, type KpiGridProps, Label, type LabelProps, LiveIndicator, type LiveIndicatorProps, type LiveStatus, LockIcon, type LogLevel, type LogLine, LogOutIcon, LogStream, type LogStreamProps, MarkdownEditor, type MarkdownEditorProps, type MenuEntry, type MenuHeader, type MenuItem, type MenuLabel, MenuList, type MenuListProps, type MenuOverlayProps, type MenuSeparator, MiniCalendar, MinusIcon, Modal, type ModalProps, MonthPicker, type MonthPickerProps, MoonIcon, MoreHorizontalIcon, MultiSelect, type MultiSelectProps, OtpInput, type OtpInputProps, Overlay, type OverlayPlacement, type OverlayProps, PageHeader, type PageHeaderProps, type PageSizeContext, Pagination, type PaginationProps, PasswordInput, type PasswordInputProps, type PasswordStrength, PencilIcon, PermissionGate, type PermissionGateProps, type PhoneCountry, PhoneInput, type PhoneInputProps, PlusIcon, Popover, type PopoverProps, Progress, type ProgressProps, QRCode, type QRCodeProps, Radio, RadioButton, type RadioButtonProps, RadioGroup, type RadioGroupProps, type RadioProps, Rating, type RatingProps, type ReferenceOption, ReferenceSelect, type ReferenceSelectProps, RelativeTime, type RelativeTimeProps, RequireSession, type RequireSessionProps, ResizablePanel, type ResizablePanelProps, type ResourceDefinition, type ResourceField, type ResourceFormMode, RichTextEditor, type RichTextEditorProps, type RowAction, ScrollArea, type ScrollAreaProps, SearchIcon, SearchInput, type SearchInputProps, type SecretChanges, type SecretEntry, SecretFields, type SecretFieldsProps, Select, type SelectOption, type SelectProps, ServerIcon, SettingsIcon, Sidebar, type SidebarEntry, type SidebarItem, type SidebarProps, type SidebarRenderLink, type SidebarSection, type SidebarState, Skeleton, type SkeletonProps, Slider, type SliderProps, type SliderRangeValue, Sparkline, type SparklineProps, Spinner, type SpinnerProps, Stack, StarIcon, StatCard, type StatCardProps, Statistic, type StatisticProps, StatusBadge, type StatusBadgeProps, type StepItem, type StepStatus, Steps, type StepsProps, SunIcon, Switch, type SwitchProps, Tabs, TabsContent, TabsList, type TabsProps, TabsTrigger, TagsInput, type TagsInputProps, type TanStackRouterLike, Text, type TextProps, Textarea, type TextareaProps, type TimeParts, TimePicker, type TimePickerProps, TimeRangePicker, type TimeRangePickerProps, type TimeRangeValue, Timeline, type TimelineItem, type TimelineProps, Timer, type TimerProps, ToastProvider, type ToastProviderProps, Toaster, type ToasterProps, Toggle, ToggleGroup, type ToggleGroupOption, type ToggleGroupProps, type ToggleProps, Tooltip, type TooltipProps, type TooltipVariant, Tour, type TourProps, type TourStep, Transfer, type TransferItem, type TransferProps, TrashIcon, Tree, type TreeNode, type TreeProps, TreeSelect, type TreeSelectProps, UnsavedChangesGuard, type UnsavedChangesGuardProps, UploadIcon, type UseDataTableQueryOptions, UserIcon, UsersIcon, WeekPicker, type WeekPickerProps, XIcon, YearPicker, type YearPickerProps, activityColumns, clearSecretValues, confirmUnsavedNavigation, createTanStackRouterStorage, createUrlTableStorage, defineResource, formFieldNames, formatDuration, formatTimeValue, initialsOf, parseTimeValue, resourceColumns, resourceDefaults, resourceDetailColumns, resourceFormFields, resourcePermissions, resourceRowKey, resourceSearchKeys, resourceValidator, secretChanges, tintForName, toneOf, useDataTableQuery, useToast };
|