@sia-ui/registry 0.3.0 → 0.3.1
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 +6 -0
- package/README.md +434 -1
- package/package.json +4 -5
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,12 @@ vérifie, et la CI le lance. Sans quoi une entrée monterait de version sans
|
|
|
10
10
|
que personne ne puisse savoir ce qui a changé dans le fichier qu'il a déjà
|
|
11
11
|
chez lui.
|
|
12
12
|
|
|
13
|
+
## 0.3.1
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Expose public contribution flow on npm
|
|
18
|
+
|
|
13
19
|
## 0.3.0
|
|
14
20
|
|
|
15
21
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -28,7 +28,440 @@ Ce paquet sert surtout à la [CLI](https://www.npmjs.com/package/@sia-ui/cli).
|
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
Une chose s'écrit au niveau le plus bas où elle a du sens, et une seule fois.
|
|
31
|
-
Voir [la documentation](https://github.
|
|
31
|
+
Voir [la documentation](https://beatjo.github.io/sia-ui-site).
|
|
32
|
+
|
|
33
|
+
## Contribuer
|
|
34
|
+
|
|
35
|
+
Le code source principal de SIA UI est privé pour le moment. Les retours publics passent par le dépôt `BeatJo/sia-ui-site` : bugs, demandes de composants, corrections de documentation et questions d'usage.
|
|
36
|
+
|
|
37
|
+
- Signaler un bug : https://github.com/BeatJo/sia-ui-site/issues
|
|
38
|
+
- Lire la documentation : https://beatjo.github.io/sia-ui-site/
|
|
39
|
+
- Voir la démonstration : https://beatjo.github.io/sia-ui-site/preview/
|
|
40
|
+
|
|
41
|
+
Les contributions directes au code des packages se font sur invitation dans le dépôt source privé.
|
|
42
|
+
## Journal des changements
|
|
43
|
+
|
|
44
|
+
Le contenu ci-dessous reprend intégralement `CHANGELOG.md` pour rester visible sur npm.
|
|
45
|
+
|
|
46
|
+
# Journal du registre
|
|
47
|
+
|
|
48
|
+
Les versions des **entrées**, pas celles des paquets. Un composant copié
|
|
49
|
+
cesse de suivre `@sia-ui/react-web` : il vit dans le dépôt de qui l'a
|
|
50
|
+
installé. C'est ce numéro-là, noté dans son `sia-ui.lock.json`, que
|
|
51
|
+
`sia-ui list --outdated` compare.
|
|
52
|
+
|
|
53
|
+
Chaque version d'une entrée doit apparaître ici — `pnpm check:changelog` le
|
|
54
|
+
vérifie, et la CI le lance. Sans quoi une entrée monterait de version sans
|
|
55
|
+
que personne ne puisse savoir ce qui a changé dans le fichier qu'il a déjà
|
|
56
|
+
chez lui.
|
|
57
|
+
|
|
58
|
+
## 0.3.0
|
|
59
|
+
|
|
60
|
+
### Minor Changes
|
|
61
|
+
|
|
62
|
+
- Une ressource se déclare une fois, cinq composants refondus, et une
|
|
63
|
+
documentation qui décrit le produit plutôt que son développement.
|
|
64
|
+
|
|
65
|
+
## Déclarer une ressource
|
|
66
|
+
|
|
67
|
+
`defineResource` décrit un objet métier **une seule fois**. Les colonnes du
|
|
68
|
+
tableau, les champs du formulaire, les lignes de la vue de détail, la
|
|
69
|
+
validation, les clés de recherche et les quatre règles de droits en sont
|
|
70
|
+
dérivés — et chaque dérivation reste remplaçable par la prop correspondante.
|
|
71
|
+
|
|
72
|
+
```tsx
|
|
73
|
+
<CrudPage resource={FACTURE} data={factures} can={can}
|
|
74
|
+
onSubmit={…} onDelete={…} />
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Le rendu se déduit du type : un `currency` s'affiche formaté et aligné à
|
|
78
|
+
droite, un `select` avec ses `tones` devient une pastille, une `date` passe
|
|
79
|
+
par le format local. `permissions: "auto"` applique la convention
|
|
80
|
+
`<nom>.<verbe>`.
|
|
81
|
+
|
|
82
|
+
## Les quatre opérations ouvrent leurs propres boîtes
|
|
83
|
+
|
|
84
|
+
`CrudPage` n'appelle plus seulement un gestionnaire : déclarer `fields` et
|
|
85
|
+
`onSubmit` suffit à obtenir un formulaire vide en création, le même prérempli
|
|
86
|
+
en modification, et une vue de détail. `onCreate`, `onEdit` et `onView`
|
|
87
|
+
restent la porte de sortie vers une page dédiée — fournis, ils passent devant
|
|
88
|
+
la boîte.
|
|
89
|
+
|
|
90
|
+
Les boîtes n'inventent rien : `Modal` pour la boîte, `Form` pour la saisie,
|
|
91
|
+
`Descriptions` pour la lecture.
|
|
92
|
+
|
|
93
|
+
## Cinq composants refondus
|
|
94
|
+
- **`Sidebar`** — le rail réduit n'enferme plus ses sous-menus : ils sortent
|
|
95
|
+
en volet. Profondeur illimitée, droits en cascade, trois variantes.
|
|
96
|
+
- **`AppShell`** — se branche sur n'importe quel routeur par une seule
|
|
97
|
+
chaîne, l'adresse courante. Trois états de barre, tiroir ou onglets bas sur
|
|
98
|
+
mobile, filtrage des droits fait une seule fois.
|
|
99
|
+
- **`Avatar`** — teinte dérivée du nom, repli peint sous l'image, quatre états
|
|
100
|
+
de présence, et des piles qui résument leur surplus.
|
|
101
|
+
- **`DataTable`** — actions de ligne avec droits et confirmation, sélection et
|
|
102
|
+
barre groupée, vue en cartes, trois densités, états de chargement, d'erreur
|
|
103
|
+
et de vide.
|
|
104
|
+
- **`CrudPage`** — réécrit : il tenait en neuf lignes et n'offrait aucune des
|
|
105
|
+
quatre opérations qui lui donnent son nom.
|
|
106
|
+
|
|
107
|
+
## Ruptures
|
|
108
|
+
- `CrudPage` : `actions` portait des nœuds d'en-tête, ils vont dans
|
|
109
|
+
`headerActions`. `data` est requis, et `columns` l'est aussi à moins qu'une
|
|
110
|
+
`resource` ne les fournisse.
|
|
111
|
+
- `Sidebar` et `AppShell` : les props ont changé. Voir
|
|
112
|
+
[La navigation latérale](https://beatjo.github.io/sia-ui-site/guides/navigation)
|
|
113
|
+
et [La coquille d'application](https://beatjo.github.io/sia-ui-site/guides/coquille-application).
|
|
114
|
+
|
|
115
|
+
## Documentation
|
|
116
|
+
|
|
117
|
+
Les cent trois composants ont désormais une page de référence — ce qu'ils
|
|
118
|
+
font, comment les installer, et **toutes** leurs props avec type et valeur par
|
|
119
|
+
défaut. Ces pages sont écrites par le code : les props viennent des types, les
|
|
120
|
+
descriptions de leurs commentaires, la commande d'installation du registre.
|
|
121
|
+
|
|
122
|
+
Le catalogue est passé de seize sections en deux langues à neuf, ordonnées du
|
|
123
|
+
plus général au plus assemblé. Les comptes rendus de développement ont été
|
|
124
|
+
retirés de la documentation : ils décrivaient un chemin parcouru, pas un
|
|
125
|
+
produit.
|
|
126
|
+
|
|
127
|
+
## 0.2.0
|
|
128
|
+
|
|
129
|
+
### Minor Changes
|
|
130
|
+
|
|
131
|
+
- e4e4a72: Annonces, session et droits, formulaires sans dépendance, et vingt entrées de
|
|
132
|
+
registre de plus.
|
|
133
|
+
|
|
134
|
+
## Composants
|
|
135
|
+
- **Annonces** — `toast()` s'appelle hors de React, variante `loading`, boutons
|
|
136
|
+
d'action, six coins réglables par annonce, balayage pour écarter, suivi de
|
|
137
|
+
promesse.
|
|
138
|
+
- **Session et droits** — `createSessionStore` avec sa machine à quatre états,
|
|
139
|
+
`createAccessLayer` à évaluateur injecté, `RequireSession` sans routeur.
|
|
140
|
+
- **Formulaires** — le contrat `FormAdapter` et `useLocalForm`, sans
|
|
141
|
+
dépendance. `Form` est écrit sur le contrat : il n'importe ni
|
|
142
|
+
react-hook-form ni zod, et se câble à l'un ou l'autre par un adaptateur.
|
|
143
|
+
- **Vingt entrées de registre de plus** — `progress`, `dropdown-menu`,
|
|
144
|
+
`accordion`, `sidebar`, `breadcrumb`, `steps`, `toggle`, `scroll-area`,
|
|
145
|
+
`hover-card`, `aspect-ratio`, `input-number`, `password-input`,
|
|
146
|
+
`phone-input`, `chart`, `require-session`, `form`…
|
|
147
|
+
- **Thème** — mode `system`, persistance et script anti-clignotement dans
|
|
148
|
+
`SiaProvider`, en remplacement de `next-themes`.
|
|
149
|
+
|
|
150
|
+
## `@sia-ui/api`
|
|
151
|
+
|
|
152
|
+
Le client HTTP typé est un paquet à part : ni React, ni DOM, ni tokens. Il
|
|
153
|
+
s'installe seul, et copier un `Badge` depuis le registre ne l'entraîne pas.
|
|
154
|
+
|
|
155
|
+
## Utilitaires
|
|
156
|
+
|
|
157
|
+
`@sia-ui/utils` passe de six à quatorze modules : `query`, `async`,
|
|
158
|
+
`collection`, `object`, `validation`, `file`, `clipboard`, `locale`.
|
|
159
|
+
|
|
160
|
+
## Archives
|
|
161
|
+
- Plus de sourcemaps : elles pesaient environ soixante pour cent de chaque
|
|
162
|
+
archive — `@sia-ui/react-web` passe de 2,1 Mo à 759 Ko.
|
|
163
|
+
- Chaque paquet porte enfin la licence MIT qu'il annonce.
|
|
164
|
+
|
|
165
|
+
## Vitrine en ligne
|
|
166
|
+
|
|
167
|
+
Trois surfaces publiées sur GitHub Pages à chaque poussée sur `main` : la
|
|
168
|
+
documentation à la racine, le catalogue Storybook sous `/storybook/`, la
|
|
169
|
+
démonstration sous `/preview/`. Le site de documentation est construit depuis
|
|
170
|
+
les fichiers de `docs/` eux-mêmes, qui restent du Markdown ordinaire.
|
|
171
|
+
|
|
172
|
+
## Le registre n'est plus une voie sans retour
|
|
173
|
+
|
|
174
|
+
Installer était jusqu'ici définitif : plus rien ne disait ce qu'on avait, ce
|
|
175
|
+
qu'on avait retouché, ni ce qui avait bougé en amont — donc rien ne permettait
|
|
176
|
+
de corriger ni de déprécier une entrée après coup.
|
|
177
|
+
- **`sia-ui.lock.json`**, écrit à chaque `add` : version, date et empreinte de
|
|
178
|
+
chaque fichier copié.
|
|
179
|
+
- **Quatre commandes** : `diff`, `remove`, `doctor`, `list --outdated`.
|
|
180
|
+
`remove` refuse de casser un voisin ou d'effacer un fichier retouché.
|
|
181
|
+
- **Cycle de vie des entrées** — `experimental`, `stable`, `deprecated`,
|
|
182
|
+
`removed` — avec `replacedBy`. `add` refuse ce qui est retiré, `doctor`
|
|
183
|
+
signale ce qui est déprécié chez qui l'a déjà installé.
|
|
184
|
+
- **Journal du registre**, entrée par entrée, dont `pnpm check:changelog`
|
|
185
|
+
refuse qu'il mente.
|
|
186
|
+
- **Registre servi en HTTP**, versionné par l'URL : `…/r/v1/`. Corriger une
|
|
187
|
+
entrée n'oblige plus à republier la CLI.
|
|
188
|
+
|
|
189
|
+
## Corrections
|
|
190
|
+
- La case à cocher et le bouton radio masquaient leur contrôle natif en
|
|
191
|
+
`opacity:0`. Le navigateur le peignait encore sous le visuel personnalisé, et
|
|
192
|
+
ce dessin clignotait au clic. Les deux utilisent désormais la recette
|
|
193
|
+
partagée `.sia-visually-hidden`, qui le découpe hors du rendu sans le retirer
|
|
194
|
+
du clavier.
|
|
195
|
+
- Une case à cocher non contrôlée ne se peignait jamais cochée : l'`<input>`
|
|
196
|
+
basculait, mais la classe qui dessine la case ne suivait pas.
|
|
197
|
+
- Le curseur de survol des graphes était ovale, et le tracé de la courbe
|
|
198
|
+
haché : les marqueurs sont sortis du SVG, qui est étiré sans conserver ses
|
|
199
|
+
proportions.
|
|
200
|
+
- L'entrée `drawer` du registre était impossible à installer — elle importait
|
|
201
|
+
deux dossiers que la CLI ne copie pas.
|
|
202
|
+
|
|
203
|
+
### Patch Changes
|
|
204
|
+
|
|
205
|
+
- Include component styles when installing registry components
|
|
206
|
+
|
|
207
|
+
## 0.2.0
|
|
208
|
+
|
|
209
|
+
- `resource` — **nouvelle entrée**. Une page de liste décrivait le même objet
|
|
210
|
+
trois fois : en colonnes pour le tableau, en champs pour le formulaire, en
|
|
211
|
+
lignes pour le détail. Plus la validation, les clés de recherche et la règle
|
|
212
|
+
de droits par opération. Ces descriptions divergent, et toujours dans le
|
|
213
|
+
même sens — c'est le formulaire qui oublie le champ que le tableau affiche.
|
|
214
|
+
|
|
215
|
+
`defineResource` la décrit **une seule fois**. Colonnes, champs, détail,
|
|
216
|
+
validation, recherche, clé de ligne et droits en sont dérivés. Le rendu se
|
|
217
|
+
déduit du type : un `currency` s'affiche formaté et aligné à droite, un
|
|
218
|
+
`select` avec ses `tones` devient une pastille, une `date` passe par le
|
|
219
|
+
format local.
|
|
220
|
+
|
|
221
|
+
Trois surfaces, trois défauts : `inTable` écarte ce qui est trop long pour
|
|
222
|
+
une cellule, `inForm` écarte ce que `readOnly` marque, `inDetail` garde
|
|
223
|
+
tout. Le détail n'est donc pas le tableau — une note de trois phrases sort
|
|
224
|
+
des colonnes et reste dans la boîte de consultation.
|
|
225
|
+
|
|
226
|
+
`permissions: "auto"` applique la convention `<nom>.<verbe>`. Chaque
|
|
227
|
+
dérivation cède à la prop correspondante : passer `columns` ne coûte ni le
|
|
228
|
+
formulaire, ni les droits.
|
|
229
|
+
|
|
230
|
+
- `crud-page` — **réécrit**. Il tenait en neuf lignes : un titre, un
|
|
231
|
+
emplacement libre et une pagination. Les quatre opérations d'une page de
|
|
232
|
+
liste étaient à réécrire à chaque écran, ce qui produit quatre variantes
|
|
233
|
+
qui divergent — celle qui oublie la confirmation, celle qui ne vérifie
|
|
234
|
+
pas les droits, celle dont le bouton reste actif pendant l'appel.
|
|
235
|
+
|
|
236
|
+
Créer, consulter, modifier, supprimer **fonctionnent d'emblée** : fournir
|
|
237
|
+
le gestionnaire suffit, ne pas le fournir retire l'action. La suppression
|
|
238
|
+
est confirmée d'office — on peut lever la confirmation, encore faut-il
|
|
239
|
+
l'avoir écrit.
|
|
240
|
+
|
|
241
|
+
`operations` personnalise chaque action : libellé, icône, droits,
|
|
242
|
+
visibilité ligne par ligne, confirmation. `extraRowActions` en ajoute
|
|
243
|
+
d'autres, `onBulkDelete` active la sélection et sa barre.
|
|
244
|
+
|
|
245
|
+
Sans gestionnaire, les actions **ouvrent leurs propres boîtes** : déclarer
|
|
246
|
+
`fields` et `onSubmit` suffit à obtenir un formulaire vide en création, le
|
|
247
|
+
même prérempli en modification, et une vue de détail dérivée des colonnes.
|
|
248
|
+
`onCreate`, `onEdit` et `onView` restent la porte de sortie vers une page
|
|
249
|
+
dédiée : fournis, ils passent devant la boîte. `resource` va plus loin et
|
|
250
|
+
dérive tout d'une seule déclaration.
|
|
251
|
+
|
|
252
|
+
**Migration, rupture** : `actions` portait des nœuds d'en-tête; ils vont
|
|
253
|
+
dans `headerActions`. Le nom `actions` désignerait sinon deux choses
|
|
254
|
+
différentes selon la version, ce qui est le pire cas — le code compile et
|
|
255
|
+
se comporte autrement. `data` est désormais requis, et `columns` l'est
|
|
256
|
+
aussi à moins qu'une `resource` ne les fournisse; le tableau reste
|
|
257
|
+
remplaçable par `children`.
|
|
258
|
+
|
|
259
|
+
- `data-table` — refonte. Il affichait des colonnes et un tri délégué.
|
|
260
|
+
S'ajoutent les **actions de ligne** — avec droits, confirmation, et
|
|
261
|
+
passage en menu au-delà de la limite —, la **sélection** et sa barre
|
|
262
|
+
d'actions groupées, une **vue en cartes** qui bascule d'elle-même sous
|
|
263
|
+
768 px, la recherche locale, trois densités, les états de chargement,
|
|
264
|
+
d'erreur et de vide.
|
|
265
|
+
|
|
266
|
+
Les actions de ligne s'estompent hors survol : une colonne pleine de
|
|
267
|
+
boutons attire l'œil plus que les données. Elles restent entières au
|
|
268
|
+
clavier et sur tactile, où il n'y a pas de survol.
|
|
269
|
+
|
|
270
|
+
**Migration, rupture** : `align` passe de `left`/`right` à `start`/`end`,
|
|
271
|
+
et `getRowKey` devient facultatif. `useDataTableQuery` et
|
|
272
|
+
`createUrlTableStorage` sont inchangés.
|
|
273
|
+
|
|
274
|
+
- `app-shell` — **réécrit**. Il tenait en six lignes : une grille à deux
|
|
275
|
+
colonnes, un bouton de repli écrit `☰`, et des emplacements libres. Il ne
|
|
276
|
+
réutilisait ni la navigation, ni le tiroir, ni rien.
|
|
277
|
+
|
|
278
|
+
Il assemble maintenant le `Sidebar` et le `Drawer`, filtre les droits **une
|
|
279
|
+
seule fois** pour la barre comme pour les onglets, et se branche sur
|
|
280
|
+
n'importe quel routeur par une seule chaîne :
|
|
281
|
+
|
|
282
|
+
```tsx
|
|
283
|
+
<AppShell nav={NAV} currentPath={usePathname()} renderLink={…} />
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
De là il déduit l'entrée courante par le préfixe le plus long — une page
|
|
287
|
+
`/factures/12/lignes` marque bien `Factures` — et referme le tiroir mobile
|
|
288
|
+
à chaque navigation, sans jamais importer de routeur.
|
|
289
|
+
|
|
290
|
+
S'ajoutent trois états de barre (`expanded`, `collapsed`, `hidden`), trois
|
|
291
|
+
stratégies mobiles (`drawer`, `tabs`, `both`), `contentWidth`, `side`, les
|
|
292
|
+
largeurs personnalisables, et `BottomTabs` — qui ne montre que des
|
|
293
|
+
feuilles, un onglet ouvrant un sous-menu étant un piège tactile.
|
|
294
|
+
|
|
295
|
+
**Migration, rupture** : `logo` devient `brand`, `navigation` devient
|
|
296
|
+
`nav` et prend des données plutôt que des nœuds. `header` est inchangé.
|
|
297
|
+
Le titre de page n'est pas une prop : le poser dans `page`, avec
|
|
298
|
+
`PageHeader` — une coquille qui rend le `<h1>` force chaque écran à passer
|
|
299
|
+
par ses props.
|
|
300
|
+
|
|
301
|
+
L'entrée annonçait deux fichiers et une dépendance; elle en annonce
|
|
302
|
+
maintenant trois et cinq. Copiée telle quelle, elle serait arrivée cassée.
|
|
303
|
+
|
|
304
|
+
- `avatar` — refonte. Il servait une image, trois tailles et des initiales.
|
|
305
|
+
S'ajoutent : une **teinte dérivée du nom**, stable d'un écran à l'autre,
|
|
306
|
+
pour distinguer deux personnes aux mêmes initiales; trois formes et trois
|
|
307
|
+
variantes (`soft`, `solid`, `outline`); cinq tailles; une pastille de
|
|
308
|
+
présence à quatre états; et `AvatarGroup`, qui empile et résume son
|
|
309
|
+
surplus.
|
|
310
|
+
|
|
311
|
+
Le repli est désormais peint **sous** l'image plutôt qu'à sa place : la
|
|
312
|
+
mise en page ne bouge plus entre l'attente, la réussite et l'échec.
|
|
313
|
+
|
|
314
|
+
Les initiales prennent la première et la dernière partie du nom, particules
|
|
315
|
+
écartées : « Jean-Baptiste Kouassi Mbella » donne « JM », « Marie de la
|
|
316
|
+
Tour » donne « MT ».
|
|
317
|
+
|
|
318
|
+
**Migration** : aucune prop retirée. `fallback` accepte maintenant un
|
|
319
|
+
nœud React et non plus seulement une chaîne.
|
|
320
|
+
|
|
321
|
+
- `sidebar` — refonte. Trois défauts corrigés :
|
|
322
|
+
|
|
323
|
+
**Réduite, la barre enfermait ses sous-entrées.** Une règle forçait le
|
|
324
|
+
panneau des enfants à une hauteur nulle quel que soit son état : une
|
|
325
|
+
rubrique à sous-menus devenait inatteignable dès qu'on repliait la barre.
|
|
326
|
+
Les sous-menus sortent maintenant en volet, au survol ou au clavier.
|
|
327
|
+
|
|
328
|
+
**L'arbre s'arrêtait à deux niveaux**, interdits par le type lui-même
|
|
329
|
+
(`items?: Array<Omit<SidebarItem, "items">>`). Il descend désormais aussi
|
|
330
|
+
profond que l'arborescence du produit.
|
|
331
|
+
|
|
332
|
+
**Aucun filtrage par droits.** `permission` sur une entrée, `can` sur le
|
|
333
|
+
composant, et une cascade : un parent dont toute la descendance est
|
|
334
|
+
filtrée disparaît avec elle, sauf `keepWhenEmpty`.
|
|
335
|
+
|
|
336
|
+
S'ajoutent `renderLink` pour brancher un routeur sans en dépendre,
|
|
337
|
+
`openKeys` pour piloter les branches ouvertes, `accordion`, `side`, et les
|
|
338
|
+
variantes `default` / `filled` / `floating` en trois tailles.
|
|
339
|
+
|
|
340
|
+
**Migration** : aucune prop retirée. `registryDependencies` gagne
|
|
341
|
+
`overlay` — `sia-ui add sidebar --overwrite` l'installe.
|
|
342
|
+
|
|
343
|
+
## 0.1.1
|
|
344
|
+
|
|
345
|
+
- `button` — l'entrée n'annonçait que son `index.tsx`. Installé, le bouton
|
|
346
|
+
arrivait donc sans sa feuille de style. `components/Button/styles.css`
|
|
347
|
+
rejoint ses fichiers.
|
|
348
|
+
|
|
349
|
+
## 0.1.0
|
|
350
|
+
|
|
351
|
+
Première version des 104 entrées du registre.
|
|
352
|
+
|
|
353
|
+
### Primitives (19)
|
|
354
|
+
|
|
355
|
+
- `aspect-ratio` — Box locked to a width / height ratio.
|
|
356
|
+
- `avatar` — Image avatar with automatic initials fallback.
|
|
357
|
+
- `badge` — Compact semantic status label with side content and loading state.
|
|
358
|
+
- `button` — Accessible button with loading and icon states.
|
|
359
|
+
- `card` — Composable card with header, body and footer regions.
|
|
360
|
+
- `checkbox` — Checkbox and CheckboxGroup with indeterminate, button and tone variants.
|
|
361
|
+
- `container` — Responsive page container and stack primitives.
|
|
362
|
+
- `divider` — Horizontal or vertical semantic separator.
|
|
363
|
+
- `form-adapter-rhf` — react-hook-form adapter for the FormAdapter contract. Requires react-hook-form.
|
|
364
|
+
- `icon-button` — Accessible icon-only action with required label.
|
|
365
|
+
- `icons` — Jeu d'icônes SVG sans dépendance, servi par le package.
|
|
366
|
+
- `input` — Accessible text input with side content and loading state.
|
|
367
|
+
- `overlay` — Positioned portal foundation with viewport collision handling and dismissal.
|
|
368
|
+
- `radio-group` — Controlled radio group with standard and RadioButton controls.
|
|
369
|
+
- `skeleton` — Token-based loading placeholder for content layouts.
|
|
370
|
+
- `spinner` — Accessible loading indicator with sizes and screen-reader label.
|
|
371
|
+
- `switch` — Controlled or uncontrolled accessible boolean switch.
|
|
372
|
+
- `textarea` — Accessible multiline input with invalid and resize states.
|
|
373
|
+
- `typography` — Headings, body text and inline code with semantic sizing and tones.
|
|
374
|
+
|
|
375
|
+
### Composants (65)
|
|
376
|
+
|
|
377
|
+
- `accordion` — Collapsible sections with animated height.
|
|
378
|
+
- `alert` — Semantic feedback alert with tones, action and dismissal.
|
|
379
|
+
- `amount-display` — Consistent semantic amount display for finance interfaces.
|
|
380
|
+
- `autocomplete` — Combobox with local filtering and optional custom values.
|
|
381
|
+
- `breadcrumb` — Navigation trail that folds middle levels into a menu.
|
|
382
|
+
- `calendar` — Localized month and year calendar with range selection and custom cells.
|
|
383
|
+
- `chart` — Dependency-free line, area and bar charts.
|
|
384
|
+
- `color-picker` — Native color selection with visible serialized value.
|
|
385
|
+
- `countdown` — Countdown specialization of Timer.
|
|
386
|
+
- `currency-input` — Locale-aware currency input exposing a numeric value.
|
|
387
|
+
- `data-table` — Generic typed table with loading and empty states.
|
|
388
|
+
- `date-picker` — Calendar-based date picker with overlay, tones, limits and custom cells.
|
|
389
|
+
- `date-range-picker` — Unified calendar range selection with serializable boundaries.
|
|
390
|
+
- `date-time-picker` — Composable date and time selection with serializable values.
|
|
391
|
+
- `descriptions` — Responsive labeled value grid for entity details.
|
|
392
|
+
- `drawer` — Accessible side panel with focus management and portal rendering.
|
|
393
|
+
- `dropdown-menu` — Dropdown and context menus with keyboard navigation.
|
|
394
|
+
- `duration-display` — Localized duration display in text or clock format.
|
|
395
|
+
- `event-calendar` — Calendar with per-day business events.
|
|
396
|
+
- `field` — Typed form field factory reusing the SIA UI control catalog.
|
|
397
|
+
- `file-upload` — Accessible file picker with drag and drop.
|
|
398
|
+
- `form-field` — Deprecated compatibility alias for Field.
|
|
399
|
+
- `hover-card` — Rich preview on hover, with open and close delays.
|
|
400
|
+
- `image-upload` — Image file upload with local preview and removal.
|
|
401
|
+
- `input-number` — Numeric input with stepper, bounds and decimal handling.
|
|
402
|
+
- `json-editor` — JSON textarea with validation and formatting.
|
|
403
|
+
- `label` — Libellé de champ, avec marque d'obligation.
|
|
404
|
+
- `markdown-editor` — Markdown writing and pluggable preview surface.
|
|
405
|
+
- `mini-calendar` — Compact calendar built on the shared calendar foundation.
|
|
406
|
+
- `modal` — Accessible modal dialog with portal, Escape and backdrop handling.
|
|
407
|
+
- `month-picker` — Native serializable month selection.
|
|
408
|
+
- `multi-select` — Searchable multiple selection with removable values.
|
|
409
|
+
- `otp-input` — Keyboard and paste friendly one-time code input.
|
|
410
|
+
- `pagination` — Accessible controlled pagination with compact page ranges.
|
|
411
|
+
- `password-input` — Password field with reveal toggle and strength meter.
|
|
412
|
+
- `phone-input` — International phone input with dial code and grouping.
|
|
413
|
+
- `popover` — Click or hover popover composed from the shared positioned Overlay.
|
|
414
|
+
- `progress` — Determinate and indeterminate progress, bar or circle.
|
|
415
|
+
- `qr-code` — Accessible QR code frame with pluggable encoder renderer.
|
|
416
|
+
- `rating` — Accessible controlled or uncontrolled rating control.
|
|
417
|
+
- `reference-select` — Entity reference selection built on Autocomplete.
|
|
418
|
+
- `relative-time` — Auto-refreshing semantic relative date display.
|
|
419
|
+
- `resizable-panel` — Keyboard and pointer resizable split panels.
|
|
420
|
+
- `rich-text-editor` — Lightweight rich text input with basic formatting commands.
|
|
421
|
+
- `scroll-area` — Scrollable region with thin scrollbars and edge fades.
|
|
422
|
+
- `search-input` — Controlled or uncontrolled search field with submit and clear actions.
|
|
423
|
+
- `select` — Accessible searchable select with positioned overlay and async option loading.
|
|
424
|
+
- `slider` — Accessible single or interval slider with formatted values.
|
|
425
|
+
- `statistic` — Locale-aware number, currency and percentage display with trend.
|
|
426
|
+
- `steps` — Step progression, horizontal or vertical, with status.
|
|
427
|
+
- `tabs` — Accessible controlled or uncontrolled tabs with keyboard navigation.
|
|
428
|
+
- `tags-input` — Create and remove string tags from a text input.
|
|
429
|
+
- `time-picker` — Timer-based time selection panel with steps, confirmation and tones.
|
|
430
|
+
- `time-range-picker` — Serializable start and end time selection.
|
|
431
|
+
- `timeline` — Chronological events with semantic tones.
|
|
432
|
+
- `timer` — Reliable count-up or count-down timer based on absolute time.
|
|
433
|
+
- `toast` — Toast queue with placement, pause on hover and promise tracking.
|
|
434
|
+
- `toggle` — Two-state button and toggle group.
|
|
435
|
+
- `tooltip` — Accessible contextual tooltip for hover and focus targets.
|
|
436
|
+
- `tour` — Guided multi-step product tour overlay.
|
|
437
|
+
- `transfer` — Move items between available and selected lists.
|
|
438
|
+
- `tree` — Accessible expandable hierarchical data view.
|
|
439
|
+
- `tree-select` — Hierarchical value selection built on Tree.
|
|
440
|
+
- `week-picker` — Native ISO week selection.
|
|
441
|
+
- `year-picker` — Bounded year selection.
|
|
442
|
+
|
|
443
|
+
### Patterns applicatifs (20)
|
|
444
|
+
|
|
445
|
+
- `app-shell` — Responsive application shell with collapsible navigation.
|
|
446
|
+
- `async-state` — Loading, empty and error states for remotely loaded content.
|
|
447
|
+
- `audit-meta` — Chronological audit history for admin and finance entities.
|
|
448
|
+
- `auth-layout` — Reusable authentication page composition.
|
|
449
|
+
- `command-palette` — Keyboard command search and execution dialog.
|
|
450
|
+
- `confirm-dialog` — Confirmation dialog composed from Modal and Button.
|
|
451
|
+
- `crud-page` — CRUD page composition with header, async states and pagination.
|
|
452
|
+
- `date-range-filter` — Date range filter with reusable presets and clear action.
|
|
453
|
+
- `empty-state` — Reusable empty state with icon, description and action.
|
|
454
|
+
- `entity-meta` — Compact audit and entity metadata block for admin and finance screens.
|
|
455
|
+
- `error-state` — Reusable error state with message extraction and retry action.
|
|
456
|
+
- `filters-bar` — Composable search, filter, reset and action toolbar.
|
|
457
|
+
- `form` — Declarative form driven by a field list, wired to any FormAdapter.
|
|
458
|
+
- `kpi-grid` — Responsive grid for KPI and statistic cards.
|
|
459
|
+
- `page-header` — Consistent page title, description and action area.
|
|
460
|
+
- `permission-gate` — Render content according to application permissions.
|
|
461
|
+
- `require-session` — Route guard on a session store, with a permission rule and no router dependency.
|
|
462
|
+
- `sidebar` — Collapsible application navigation with groups and sub-items.
|
|
463
|
+
- `stat-card` — Business metric card composed from Card and Statistic.
|
|
464
|
+
- `unsaved-changes-guard` — Protect browser and in-app navigation with unsaved changes.
|
|
32
465
|
|
|
33
466
|
## Licence
|
|
34
467
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sia-ui/registry",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Installable component registry for SIA UI.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sia-ui",
|
|
@@ -10,14 +10,13 @@
|
|
|
10
10
|
],
|
|
11
11
|
"license": "MIT",
|
|
12
12
|
"author": "Ivan Mbella",
|
|
13
|
-
"homepage": "https://github.
|
|
13
|
+
"homepage": "https://beatjo.github.io/sia-ui-site/",
|
|
14
14
|
"bugs": {
|
|
15
|
-
"url": "https://github.com/BeatJo/sia-ui/issues"
|
|
15
|
+
"url": "https://github.com/BeatJo/sia-ui-site/issues"
|
|
16
16
|
},
|
|
17
17
|
"repository": {
|
|
18
18
|
"type": "git",
|
|
19
|
-
"url": "git+https://github.com/BeatJo/sia-ui.git"
|
|
20
|
-
"directory": "packages/registry"
|
|
19
|
+
"url": "git+https://github.com/BeatJo/sia-ui-site.git"
|
|
21
20
|
},
|
|
22
21
|
"type": "module",
|
|
23
22
|
"files": [
|