@sia-ui/react-web 0.2.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 ADDED
@@ -0,0 +1,173 @@
1
+ # @sia-ui/react-web
2
+
3
+ ## 0.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Expose public contribution flow on npm
8
+ - Updated dependencies
9
+ - @sia-ui/headless@0.3.1
10
+ - @sia-ui/react@0.3.1
11
+ - @sia-ui/tokens@0.3.1
12
+ - @sia-ui/utils@0.3.1
13
+
14
+ ## 0.3.0
15
+
16
+ ### Minor Changes
17
+
18
+ - Une ressource se déclare une fois, cinq composants refondus, et une
19
+ documentation qui décrit le produit plutôt que son développement.
20
+
21
+ ## Déclarer une ressource
22
+
23
+ `defineResource` décrit un objet métier **une seule fois**. Les colonnes du
24
+ tableau, les champs du formulaire, les lignes de la vue de détail, la
25
+ validation, les clés de recherche et les quatre règles de droits en sont
26
+ dérivés — et chaque dérivation reste remplaçable par la prop correspondante.
27
+
28
+ ```tsx
29
+ <CrudPage resource={FACTURE} data={factures} can={can}
30
+ onSubmit={…} onDelete={…} />
31
+ ```
32
+
33
+ Le rendu se déduit du type : un `currency` s'affiche formaté et aligné à
34
+ droite, un `select` avec ses `tones` devient une pastille, une `date` passe
35
+ par le format local. `permissions: "auto"` applique la convention
36
+ `<nom>.<verbe>`.
37
+
38
+ ## Les quatre opérations ouvrent leurs propres boîtes
39
+
40
+ `CrudPage` n'appelle plus seulement un gestionnaire : déclarer `fields` et
41
+ `onSubmit` suffit à obtenir un formulaire vide en création, le même prérempli
42
+ en modification, et une vue de détail. `onCreate`, `onEdit` et `onView`
43
+ restent la porte de sortie vers une page dédiée — fournis, ils passent devant
44
+ la boîte.
45
+
46
+ Les boîtes n'inventent rien : `Modal` pour la boîte, `Form` pour la saisie,
47
+ `Descriptions` pour la lecture.
48
+
49
+ ## Cinq composants refondus
50
+ - **`Sidebar`** — le rail réduit n'enferme plus ses sous-menus : ils sortent
51
+ en volet. Profondeur illimitée, droits en cascade, trois variantes.
52
+ - **`AppShell`** — se branche sur n'importe quel routeur par une seule
53
+ chaîne, l'adresse courante. Trois états de barre, tiroir ou onglets bas sur
54
+ mobile, filtrage des droits fait une seule fois.
55
+ - **`Avatar`** — teinte dérivée du nom, repli peint sous l'image, quatre états
56
+ de présence, et des piles qui résument leur surplus.
57
+ - **`DataTable`** — actions de ligne avec droits et confirmation, sélection et
58
+ barre groupée, vue en cartes, trois densités, états de chargement, d'erreur
59
+ et de vide.
60
+ - **`CrudPage`** — réécrit : il tenait en neuf lignes et n'offrait aucune des
61
+ quatre opérations qui lui donnent son nom.
62
+
63
+ ## Ruptures
64
+ - `CrudPage` : `actions` portait des nœuds d'en-tête, ils vont dans
65
+ `headerActions`. `data` est requis, et `columns` l'est aussi à moins qu'une
66
+ `resource` ne les fournisse.
67
+ - `Sidebar` et `AppShell` : les props ont changé. Voir
68
+ [La navigation latérale](https://beatjo.github.io/sia-ui-site/guides/navigation)
69
+ et [La coquille d'application](https://beatjo.github.io/sia-ui-site/guides/coquille-application).
70
+
71
+ ## Documentation
72
+
73
+ Les cent trois composants ont désormais une page de référence — ce qu'ils
74
+ font, comment les installer, et **toutes** leurs props avec type et valeur par
75
+ défaut. Ces pages sont écrites par le code : les props viennent des types, les
76
+ descriptions de leurs commentaires, la commande d'installation du registre.
77
+
78
+ Le catalogue est passé de seize sections en deux langues à neuf, ordonnées du
79
+ plus général au plus assemblé. Les comptes rendus de développement ont été
80
+ retirés de la documentation : ils décrivaient un chemin parcouru, pas un
81
+ produit.
82
+
83
+ ### Patch Changes
84
+
85
+ - Updated dependencies
86
+ - @sia-ui/headless@0.3.0
87
+ - @sia-ui/tokens@0.3.0
88
+ - @sia-ui/utils@0.3.0
89
+ - @sia-ui/react@0.3.0
90
+
91
+ ## 0.2.0
92
+
93
+ ### Minor Changes
94
+
95
+ - e4e4a72: Annonces, session et droits, formulaires sans dépendance, et vingt entrées de
96
+ registre de plus.
97
+
98
+ ## Composants
99
+ - **Annonces** — `toast()` s'appelle hors de React, variante `loading`, boutons
100
+ d'action, six coins réglables par annonce, balayage pour écarter, suivi de
101
+ promesse.
102
+ - **Session et droits** — `createSessionStore` avec sa machine à quatre états,
103
+ `createAccessLayer` à évaluateur injecté, `RequireSession` sans routeur.
104
+ - **Formulaires** — le contrat `FormAdapter` et `useLocalForm`, sans
105
+ dépendance. `Form` est écrit sur le contrat : il n'importe ni
106
+ react-hook-form ni zod, et se câble à l'un ou l'autre par un adaptateur.
107
+ - **Vingt entrées de registre de plus** — `progress`, `dropdown-menu`,
108
+ `accordion`, `sidebar`, `breadcrumb`, `steps`, `toggle`, `scroll-area`,
109
+ `hover-card`, `aspect-ratio`, `input-number`, `password-input`,
110
+ `phone-input`, `chart`, `require-session`, `form`…
111
+ - **Thème** — mode `system`, persistance et script anti-clignotement dans
112
+ `SiaProvider`, en remplacement de `next-themes`.
113
+
114
+ ## `@sia-ui/api`
115
+
116
+ Le client HTTP typé est un paquet à part : ni React, ni DOM, ni tokens. Il
117
+ s'installe seul, et copier un `Badge` depuis le registre ne l'entraîne pas.
118
+
119
+ ## Utilitaires
120
+
121
+ `@sia-ui/utils` passe de six à quatorze modules : `query`, `async`,
122
+ `collection`, `object`, `validation`, `file`, `clipboard`, `locale`.
123
+
124
+ ## Archives
125
+ - Plus de sourcemaps : elles pesaient environ soixante pour cent de chaque
126
+ archive — `@sia-ui/react-web` passe de 2,1 Mo à 759 Ko.
127
+ - Chaque paquet porte enfin la licence MIT qu'il annonce.
128
+
129
+ ## Vitrine en ligne
130
+
131
+ Trois surfaces publiées sur GitHub Pages à chaque poussée sur `main` : la
132
+ documentation à la racine, le catalogue Storybook sous `/storybook/`, la
133
+ démonstration sous `/preview/`. Le site de documentation est construit depuis
134
+ les fichiers de `docs/` eux-mêmes, qui restent du Markdown ordinaire.
135
+
136
+ ## Le registre n'est plus une voie sans retour
137
+
138
+ Installer était jusqu'ici définitif : plus rien ne disait ce qu'on avait, ce
139
+ qu'on avait retouché, ni ce qui avait bougé en amont — donc rien ne permettait
140
+ de corriger ni de déprécier une entrée après coup.
141
+ - **`sia-ui.lock.json`**, écrit à chaque `add` : version, date et empreinte de
142
+ chaque fichier copié.
143
+ - **Quatre commandes** : `diff`, `remove`, `doctor`, `list --outdated`.
144
+ `remove` refuse de casser un voisin ou d'effacer un fichier retouché.
145
+ - **Cycle de vie des entrées** — `experimental`, `stable`, `deprecated`,
146
+ `removed` — avec `replacedBy`. `add` refuse ce qui est retiré, `doctor`
147
+ signale ce qui est déprécié chez qui l'a déjà installé.
148
+ - **Journal du registre**, entrée par entrée, dont `pnpm check:changelog`
149
+ refuse qu'il mente.
150
+ - **Registre servi en HTTP**, versionné par l'URL : `…/r/v1/`. Corriger une
151
+ entrée n'oblige plus à republier la CLI.
152
+
153
+ ## Corrections
154
+ - La case à cocher et le bouton radio masquaient leur contrôle natif en
155
+ `opacity:0`. Le navigateur le peignait encore sous le visuel personnalisé, et
156
+ ce dessin clignotait au clic. Les deux utilisent désormais la recette
157
+ partagée `.sia-visually-hidden`, qui le découpe hors du rendu sans le retirer
158
+ du clavier.
159
+ - Une case à cocher non contrôlée ne se peignait jamais cochée : l'`<input>`
160
+ basculait, mais la classe qui dessine la case ne suivait pas.
161
+ - Le curseur de survol des graphes était ovale, et le tracé de la courbe
162
+ haché : les marqueurs sont sortis du SVG, qui est étiré sans conserver ses
163
+ proportions.
164
+ - L'entrée `drawer` du registre était impossible à installer — elle importait
165
+ deux dossiers que la CLI ne copie pas.
166
+
167
+ ### Patch Changes
168
+
169
+ - Updated dependencies [e4e4a72]
170
+ - @sia-ui/headless@0.2.0
171
+ - @sia-ui/tokens@0.2.0
172
+ - @sia-ui/utils@0.2.0
173
+ - @sia-ui/react@0.2.0
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Ivan Mbella
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Ivan Mbella
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,57 +1,233 @@
1
+ # @sia-ui/react-web
2
+
3
+ Les composants SIA UI pour le DOM.
4
+
5
+ ```bash
6
+ pnpm add @sia-ui/react-web
7
+ ```
8
+
9
+ ```tsx
10
+ import { Button, DataTable, DatePicker } from "@sia-ui/react-web";
11
+ import "@sia-ui/react-web/styles.css";
12
+ ```
13
+
14
+ 88 composants : primitives, saisie, date et heure, affichage de données,
15
+ feedback et patterns applicatifs — `CrudPage`, `AppShell`, `FiltersBar`,
16
+ `AuthLayout`.
17
+
18
+ ## Valeurs par défaut et libellés
19
+
20
+ ```tsx
21
+ import { SiaConfigProvider } from "@sia-ui/headless";
22
+
23
+ <SiaConfigProvider
24
+ defaults={{ button: { variant: "outline" } }}
25
+ locale={{ loading: "Loading", empty: "No data" }}
26
+ >
27
+ ```
28
+
29
+ Aucune librairie d'i18n n'est requise : toutes les chaînes sont des props, et
30
+ le fournisseur ne fixe que les défauts.
31
+
32
+ ## Ou copier le code
33
+
34
+ ```bash
35
+ npx sia-ui add data-table
36
+ ```
37
+
38
+ Le fichier installé est **exactement** celui de ce paquet.
39
+
40
+ ## Place dans SIA UI
41
+
42
+ ```
43
+ @sia-ui/tokens valeurs : couleurs, espacements, mouvement, vocabulaire
44
+ @sia-ui/utils fonctions sans dépendance
45
+ @sia-ui/api client HTTP — indépendant de l'interface
46
+ @sia-ui/headless comportement, avec React, sans plateforme
47
+ @sia-ui/react primitives de runtime DOM
48
+ @sia-ui/react-web composants DOM
49
+ @sia-ui/react-native composants natifs, à venir
50
+ ```
51
+
52
+ Une chose s'écrit au niveau le plus bas où elle a du sens, et une seule fois.
53
+ Voir [la documentation](https://beatjo.github.io/sia-ui-site).
54
+
55
+ ## Contribuer
56
+
57
+ 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.
58
+
59
+ - Signaler un bug : https://github.com/BeatJo/sia-ui-site/issues
60
+ - Lire la documentation : https://beatjo.github.io/sia-ui-site/
61
+ - Voir la démonstration : https://beatjo.github.io/sia-ui-site/preview/
62
+
63
+ Les contributions directes au code des packages se font sur invitation dans le dépôt source privé.
64
+ ## Journal des changements
65
+
66
+ Le contenu ci-dessous reprend intégralement `CHANGELOG.md` pour rester visible sur npm.
67
+
1
68
  # @sia-ui/react-web
2
69
 
3
- Les composants SIA UI pour le DOM.
4
-
5
- ```bash
6
- pnpm add @sia-ui/react-web
7
- ```
8
-
9
- ```tsx
10
- import { Button, DataTable, DatePicker } from "@sia-ui/react-web";
11
- import "@sia-ui/react-web/styles.css";
12
- ```
13
-
14
- 88 composants : primitives, saisie, date et heure, affichage de données,
15
- feedback et patterns applicatifs — `CrudPage`, `AppShell`, `FiltersBar`,
16
- `AuthLayout`.
17
-
18
- ## Valeurs par défaut et libellés
19
-
20
- ```tsx
21
- import { SiaConfigProvider } from "@sia-ui/headless";
22
-
23
- <SiaConfigProvider
24
- defaults={{ button: { variant: "outline" } }}
25
- locale={{ loading: "Loading", empty: "No data" }}
26
- >
27
- ```
28
-
29
- Aucune librairie d'i18n n'est requise : toutes les chaînes sont des props, et
30
- le fournisseur ne fixe que les défauts.
31
-
32
- ## Ou copier le code
33
-
34
- ```bash
35
- npx sia-ui add data-table
36
- ```
37
-
38
- Le fichier installé est **exactement** celui de ce paquet.
39
-
40
- ## Place dans SIA UI
41
-
42
- ```
43
- @sia-ui/tokens valeurs : couleurs, espacements, mouvement, vocabulaire
44
- @sia-ui/utils fonctions sans dépendance
45
- @sia-ui/api client HTTP — indépendant de l'interface
46
- @sia-ui/headless comportement, avec React, sans plateforme
47
- @sia-ui/react primitives de runtime DOM
48
- @sia-ui/react-web composants DOM
49
- @sia-ui/react-native composants natifs, à venir
50
- ```
51
-
52
- Une chose s'écrit au niveau le plus bas où elle a du sens, et une seule fois.
53
- Voir [la documentation](https://github.com/BeatJo/sia-ui/tree/main/docs).
54
-
55
- ## Licence
56
-
57
- MIT
70
+ ## 0.3.0
71
+
72
+ ### Minor Changes
73
+
74
+ - Une ressource se déclare une fois, cinq composants refondus, et une
75
+ documentation qui décrit le produit plutôt que son développement.
76
+
77
+ ## Déclarer une ressource
78
+
79
+ `defineResource` décrit un objet métier **une seule fois**. Les colonnes du
80
+ tableau, les champs du formulaire, les lignes de la vue de détail, la
81
+ validation, les clés de recherche et les quatre règles de droits en sont
82
+ dérivés — et chaque dérivation reste remplaçable par la prop correspondante.
83
+
84
+ ```tsx
85
+ <CrudPage resource={FACTURE} data={factures} can={can}
86
+ onSubmit={…} onDelete={…} />
87
+ ```
88
+
89
+ Le rendu se déduit du type : un `currency` s'affiche formaté et aligné à
90
+ droite, un `select` avec ses `tones` devient une pastille, une `date` passe
91
+ par le format local. `permissions: "auto"` applique la convention
92
+ `<nom>.<verbe>`.
93
+
94
+ ## Les quatre opérations ouvrent leurs propres boîtes
95
+
96
+ `CrudPage` n'appelle plus seulement un gestionnaire : déclarer `fields` et
97
+ `onSubmit` suffit à obtenir un formulaire vide en création, le même prérempli
98
+ en modification, et une vue de détail. `onCreate`, `onEdit` et `onView`
99
+ restent la porte de sortie vers une page dédiée — fournis, ils passent devant
100
+ la boîte.
101
+
102
+ Les boîtes n'inventent rien : `Modal` pour la boîte, `Form` pour la saisie,
103
+ `Descriptions` pour la lecture.
104
+
105
+ ## Cinq composants refondus
106
+ - **`Sidebar`** — le rail réduit n'enferme plus ses sous-menus : ils sortent
107
+ en volet. Profondeur illimitée, droits en cascade, trois variantes.
108
+ - **`AppShell`** — se branche sur n'importe quel routeur par une seule
109
+ chaîne, l'adresse courante. Trois états de barre, tiroir ou onglets bas sur
110
+ mobile, filtrage des droits fait une seule fois.
111
+ - **`Avatar`** — teinte dérivée du nom, repli peint sous l'image, quatre états
112
+ de présence, et des piles qui résument leur surplus.
113
+ - **`DataTable`** — actions de ligne avec droits et confirmation, sélection et
114
+ barre groupée, vue en cartes, trois densités, états de chargement, d'erreur
115
+ et de vide.
116
+ - **`CrudPage`** — réécrit : il tenait en neuf lignes et n'offrait aucune des
117
+ quatre opérations qui lui donnent son nom.
118
+
119
+ ## Ruptures
120
+ - `CrudPage` : `actions` portait des nœuds d'en-tête, ils vont dans
121
+ `headerActions`. `data` est requis, et `columns` l'est aussi à moins qu'une
122
+ `resource` ne les fournisse.
123
+ - `Sidebar` et `AppShell` : les props ont changé. Voir
124
+ [La navigation latérale](https://beatjo.github.io/sia-ui-site/guides/navigation)
125
+ et [La coquille d'application](https://beatjo.github.io/sia-ui-site/guides/coquille-application).
126
+
127
+ ## Documentation
128
+
129
+ Les cent trois composants ont désormais une page de référence — ce qu'ils
130
+ font, comment les installer, et **toutes** leurs props avec type et valeur par
131
+ défaut. Ces pages sont écrites par le code : les props viennent des types, les
132
+ descriptions de leurs commentaires, la commande d'installation du registre.
133
+
134
+ Le catalogue est passé de seize sections en deux langues à neuf, ordonnées du
135
+ plus général au plus assemblé. Les comptes rendus de développement ont été
136
+ retirés de la documentation : ils décrivaient un chemin parcouru, pas un
137
+ produit.
138
+
139
+ ### Patch Changes
140
+
141
+ - Updated dependencies
142
+ - @sia-ui/headless@0.3.0
143
+ - @sia-ui/tokens@0.3.0
144
+ - @sia-ui/utils@0.3.0
145
+ - @sia-ui/react@0.3.0
146
+
147
+ ## 0.2.0
148
+
149
+ ### Minor Changes
150
+
151
+ - e4e4a72: Annonces, session et droits, formulaires sans dépendance, et vingt entrées de
152
+ registre de plus.
153
+
154
+ ## Composants
155
+ - **Annonces** — `toast()` s'appelle hors de React, variante `loading`, boutons
156
+ d'action, six coins réglables par annonce, balayage pour écarter, suivi de
157
+ promesse.
158
+ - **Session et droits** — `createSessionStore` avec sa machine à quatre états,
159
+ `createAccessLayer` à évaluateur injecté, `RequireSession` sans routeur.
160
+ - **Formulaires** — le contrat `FormAdapter` et `useLocalForm`, sans
161
+ dépendance. `Form` est écrit sur le contrat : il n'importe ni
162
+ react-hook-form ni zod, et se câble à l'un ou l'autre par un adaptateur.
163
+ - **Vingt entrées de registre de plus** — `progress`, `dropdown-menu`,
164
+ `accordion`, `sidebar`, `breadcrumb`, `steps`, `toggle`, `scroll-area`,
165
+ `hover-card`, `aspect-ratio`, `input-number`, `password-input`,
166
+ `phone-input`, `chart`, `require-session`, `form`…
167
+ - **Thème** — mode `system`, persistance et script anti-clignotement dans
168
+ `SiaProvider`, en remplacement de `next-themes`.
169
+
170
+ ## `@sia-ui/api`
171
+
172
+ Le client HTTP typé est un paquet à part : ni React, ni DOM, ni tokens. Il
173
+ s'installe seul, et copier un `Badge` depuis le registre ne l'entraîne pas.
174
+
175
+ ## Utilitaires
176
+
177
+ `@sia-ui/utils` passe de six à quatorze modules : `query`, `async`,
178
+ `collection`, `object`, `validation`, `file`, `clipboard`, `locale`.
179
+
180
+ ## Archives
181
+ - Plus de sourcemaps : elles pesaient environ soixante pour cent de chaque
182
+ archive — `@sia-ui/react-web` passe de 2,1 Mo à 759 Ko.
183
+ - Chaque paquet porte enfin la licence MIT qu'il annonce.
184
+
185
+ ## Vitrine en ligne
186
+
187
+ Trois surfaces publiées sur GitHub Pages à chaque poussée sur `main` : la
188
+ documentation à la racine, le catalogue Storybook sous `/storybook/`, la
189
+ démonstration sous `/preview/`. Le site de documentation est construit depuis
190
+ les fichiers de `docs/` eux-mêmes, qui restent du Markdown ordinaire.
191
+
192
+ ## Le registre n'est plus une voie sans retour
193
+
194
+ Installer était jusqu'ici définitif : plus rien ne disait ce qu'on avait, ce
195
+ qu'on avait retouché, ni ce qui avait bougé en amont — donc rien ne permettait
196
+ de corriger ni de déprécier une entrée après coup.
197
+ - **`sia-ui.lock.json`**, écrit à chaque `add` : version, date et empreinte de
198
+ chaque fichier copié.
199
+ - **Quatre commandes** : `diff`, `remove`, `doctor`, `list --outdated`.
200
+ `remove` refuse de casser un voisin ou d'effacer un fichier retouché.
201
+ - **Cycle de vie des entrées** — `experimental`, `stable`, `deprecated`,
202
+ `removed` — avec `replacedBy`. `add` refuse ce qui est retiré, `doctor`
203
+ signale ce qui est déprécié chez qui l'a déjà installé.
204
+ - **Journal du registre**, entrée par entrée, dont `pnpm check:changelog`
205
+ refuse qu'il mente.
206
+ - **Registre servi en HTTP**, versionné par l'URL : `…/r/v1/`. Corriger une
207
+ entrée n'oblige plus à republier la CLI.
208
+
209
+ ## Corrections
210
+ - La case à cocher et le bouton radio masquaient leur contrôle natif en
211
+ `opacity:0`. Le navigateur le peignait encore sous le visuel personnalisé, et
212
+ ce dessin clignotait au clic. Les deux utilisent désormais la recette
213
+ partagée `.sia-visually-hidden`, qui le découpe hors du rendu sans le retirer
214
+ du clavier.
215
+ - Une case à cocher non contrôlée ne se peignait jamais cochée : l'`<input>`
216
+ basculait, mais la classe qui dessine la case ne suivait pas.
217
+ - Le curseur de survol des graphes était ovale, et le tracé de la courbe
218
+ haché : les marqueurs sont sortis du SVG, qui est étiré sans conserver ses
219
+ proportions.
220
+ - L'entrée `drawer` du registre était impossible à installer — elle importait
221
+ deux dossiers que la CLI ne copie pas.
222
+
223
+ ### Patch Changes
224
+
225
+ - Updated dependencies [e4e4a72]
226
+ - @sia-ui/headless@0.2.0
227
+ - @sia-ui/tokens@0.2.0
228
+ - @sia-ui/utils@0.2.0
229
+ - @sia-ui/react@0.2.0
230
+
231
+ ## Licence
232
+
233
+ MIT