@sia-ui/react-web 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/CHANGELOG.md +184 -0
  2. package/README.md +179 -1
  3. package/package.json +10 -10
package/CHANGELOG.md ADDED
@@ -0,0 +1,184 @@
1
+ # @sia-ui/react-web
2
+
3
+ ## 0.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ - Ajoute l’identité visuelle officielle de SIA UI et améliore la documentation publique, les changelogs et les ressources de contribution.
8
+ - Updated dependencies
9
+ - @sia-ui/headless@0.3.2
10
+ - @sia-ui/react@0.3.2
11
+ - @sia-ui/tokens@0.3.2
12
+ - @sia-ui/utils@0.3.2
13
+
14
+ ## 0.3.1
15
+
16
+ ### Patch Changes
17
+
18
+ - Expose public contribution flow on npm
19
+ - Updated dependencies
20
+ - @sia-ui/headless@0.3.1
21
+ - @sia-ui/react@0.3.1
22
+ - @sia-ui/tokens@0.3.1
23
+ - @sia-ui/utils@0.3.1
24
+
25
+ ## 0.3.0
26
+
27
+ ### Minor Changes
28
+
29
+ - Une ressource se déclare une fois, cinq composants refondus, et une
30
+ documentation qui décrit le produit plutôt que son développement.
31
+
32
+ ## Déclarer une ressource
33
+
34
+ `defineResource` décrit un objet métier **une seule fois**. Les colonnes du
35
+ tableau, les champs du formulaire, les lignes de la vue de détail, la
36
+ validation, les clés de recherche et les quatre règles de droits en sont
37
+ dérivés — et chaque dérivation reste remplaçable par la prop correspondante.
38
+
39
+ ```tsx
40
+ <CrudPage resource={FACTURE} data={factures} can={can}
41
+ onSubmit={…} onDelete={…} />
42
+ ```
43
+
44
+ Le rendu se déduit du type : un `currency` s'affiche formaté et aligné à
45
+ droite, un `select` avec ses `tones` devient une pastille, une `date` passe
46
+ par le format local. `permissions: "auto"` applique la convention
47
+ `<nom>.<verbe>`.
48
+
49
+ ## Les quatre opérations ouvrent leurs propres boîtes
50
+
51
+ `CrudPage` n'appelle plus seulement un gestionnaire : déclarer `fields` et
52
+ `onSubmit` suffit à obtenir un formulaire vide en création, le même prérempli
53
+ en modification, et une vue de détail. `onCreate`, `onEdit` et `onView`
54
+ restent la porte de sortie vers une page dédiée — fournis, ils passent devant
55
+ la boîte.
56
+
57
+ Les boîtes n'inventent rien : `Modal` pour la boîte, `Form` pour la saisie,
58
+ `Descriptions` pour la lecture.
59
+
60
+ ## Cinq composants refondus
61
+ - **`Sidebar`** — le rail réduit n'enferme plus ses sous-menus : ils sortent
62
+ en volet. Profondeur illimitée, droits en cascade, trois variantes.
63
+ - **`AppShell`** — se branche sur n'importe quel routeur par une seule
64
+ chaîne, l'adresse courante. Trois états de barre, tiroir ou onglets bas sur
65
+ mobile, filtrage des droits fait une seule fois.
66
+ - **`Avatar`** — teinte dérivée du nom, repli peint sous l'image, quatre états
67
+ de présence, et des piles qui résument leur surplus.
68
+ - **`DataTable`** — actions de ligne avec droits et confirmation, sélection et
69
+ barre groupée, vue en cartes, trois densités, états de chargement, d'erreur
70
+ et de vide.
71
+ - **`CrudPage`** — réécrit : il tenait en neuf lignes et n'offrait aucune des
72
+ quatre opérations qui lui donnent son nom.
73
+
74
+ ## Ruptures
75
+ - `CrudPage` : `actions` portait des nœuds d'en-tête, ils vont dans
76
+ `headerActions`. `data` est requis, et `columns` l'est aussi à moins qu'une
77
+ `resource` ne les fournisse.
78
+ - `Sidebar` et `AppShell` : les props ont changé. Voir
79
+ [La navigation latérale](https://beatjo.github.io/sia-ui-site/guides/navigation)
80
+ et [La coquille d'application](https://beatjo.github.io/sia-ui-site/guides/coquille-application).
81
+
82
+ ## Documentation
83
+
84
+ Les cent trois composants ont désormais une page de référence — ce qu'ils
85
+ font, comment les installer, et **toutes** leurs props avec type et valeur par
86
+ défaut. Ces pages sont écrites par le code : les props viennent des types, les
87
+ descriptions de leurs commentaires, la commande d'installation du registre.
88
+
89
+ Le catalogue est passé de seize sections en deux langues à neuf, ordonnées du
90
+ plus général au plus assemblé. Les comptes rendus de développement ont été
91
+ retirés de la documentation : ils décrivaient un chemin parcouru, pas un
92
+ produit.
93
+
94
+ ### Patch Changes
95
+
96
+ - Updated dependencies
97
+ - @sia-ui/headless@0.3.0
98
+ - @sia-ui/tokens@0.3.0
99
+ - @sia-ui/utils@0.3.0
100
+ - @sia-ui/react@0.3.0
101
+
102
+ ## 0.2.0
103
+
104
+ ### Minor Changes
105
+
106
+ - e4e4a72: Annonces, session et droits, formulaires sans dépendance, et vingt entrées de
107
+ registre de plus.
108
+
109
+ ## Composants
110
+ - **Annonces** — `toast()` s'appelle hors de React, variante `loading`, boutons
111
+ d'action, six coins réglables par annonce, balayage pour écarter, suivi de
112
+ promesse.
113
+ - **Session et droits** — `createSessionStore` avec sa machine à quatre états,
114
+ `createAccessLayer` à évaluateur injecté, `RequireSession` sans routeur.
115
+ - **Formulaires** — le contrat `FormAdapter` et `useLocalForm`, sans
116
+ dépendance. `Form` est écrit sur le contrat : il n'importe ni
117
+ react-hook-form ni zod, et se câble à l'un ou l'autre par un adaptateur.
118
+ - **Vingt entrées de registre de plus** — `progress`, `dropdown-menu`,
119
+ `accordion`, `sidebar`, `breadcrumb`, `steps`, `toggle`, `scroll-area`,
120
+ `hover-card`, `aspect-ratio`, `input-number`, `password-input`,
121
+ `phone-input`, `chart`, `require-session`, `form`…
122
+ - **Thème** — mode `system`, persistance et script anti-clignotement dans
123
+ `SiaProvider`, en remplacement de `next-themes`.
124
+
125
+ ## `@sia-ui/api`
126
+
127
+ Le client HTTP typé est un paquet à part : ni React, ni DOM, ni tokens. Il
128
+ s'installe seul, et copier un `Badge` depuis le registre ne l'entraîne pas.
129
+
130
+ ## Utilitaires
131
+
132
+ `@sia-ui/utils` passe de six à quatorze modules : `query`, `async`,
133
+ `collection`, `object`, `validation`, `file`, `clipboard`, `locale`.
134
+
135
+ ## Archives
136
+ - Plus de sourcemaps : elles pesaient environ soixante pour cent de chaque
137
+ archive — `@sia-ui/react-web` passe de 2,1 Mo à 759 Ko.
138
+ - Chaque paquet porte enfin la licence MIT qu'il annonce.
139
+
140
+ ## Vitrine en ligne
141
+
142
+ Trois surfaces publiées sur GitHub Pages à chaque poussée sur `main` : la
143
+ documentation à la racine, le catalogue Storybook sous `/storybook/`, la
144
+ démonstration sous `/preview/`. Le site de documentation est construit depuis
145
+ les fichiers de `docs/` eux-mêmes, qui restent du Markdown ordinaire.
146
+
147
+ ## Le registre n'est plus une voie sans retour
148
+
149
+ Installer était jusqu'ici définitif : plus rien ne disait ce qu'on avait, ce
150
+ qu'on avait retouché, ni ce qui avait bougé en amont — donc rien ne permettait
151
+ de corriger ni de déprécier une entrée après coup.
152
+ - **`sia-ui.lock.json`**, écrit à chaque `add` : version, date et empreinte de
153
+ chaque fichier copié.
154
+ - **Quatre commandes** : `diff`, `remove`, `doctor`, `list --outdated`.
155
+ `remove` refuse de casser un voisin ou d'effacer un fichier retouché.
156
+ - **Cycle de vie des entrées** — `experimental`, `stable`, `deprecated`,
157
+ `removed` — avec `replacedBy`. `add` refuse ce qui est retiré, `doctor`
158
+ signale ce qui est déprécié chez qui l'a déjà installé.
159
+ - **Journal du registre**, entrée par entrée, dont `pnpm check:changelog`
160
+ refuse qu'il mente.
161
+ - **Registre servi en HTTP**, versionné par l'URL : `…/r/v1/`. Corriger une
162
+ entrée n'oblige plus à republier la CLI.
163
+
164
+ ## Corrections
165
+ - La case à cocher et le bouton radio masquaient leur contrôle natif en
166
+ `opacity:0`. Le navigateur le peignait encore sous le visuel personnalisé, et
167
+ ce dessin clignotait au clic. Les deux utilisent désormais la recette
168
+ partagée `.sia-visually-hidden`, qui le découpe hors du rendu sans le retirer
169
+ du clavier.
170
+ - Une case à cocher non contrôlée ne se peignait jamais cochée : l'`<input>`
171
+ basculait, mais la classe qui dessine la case ne suivait pas.
172
+ - Le curseur de survol des graphes était ovale, et le tracé de la courbe
173
+ haché : les marqueurs sont sortis du SVG, qui est étiré sans conserver ses
174
+ proportions.
175
+ - L'entrée `drawer` du registre était impossible à installer — elle importait
176
+ deux dossiers que la CLI ne copie pas.
177
+
178
+ ### Patch Changes
179
+
180
+ - Updated dependencies [e4e4a72]
181
+ - @sia-ui/headless@0.2.0
182
+ - @sia-ui/tokens@0.2.0
183
+ - @sia-ui/utils@0.2.0
184
+ - @sia-ui/react@0.2.0
package/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ <p align="center"><img src="https://beatjo.github.io/sia-ui-site/brand/sia-ui-logo.png" alt="SIA UI" width="320"></p>
2
+
1
3
  # @sia-ui/react-web
2
4
 
3
5
  Les composants SIA UI pour le DOM.
@@ -50,7 +52,183 @@ Le fichier installé est **exactement** celui de ce paquet.
50
52
  ```
51
53
 
52
54
  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).
55
+ Voir [la documentation](https://beatjo.github.io/sia-ui-site).
56
+
57
+ ## Contribuer
58
+
59
+ 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.
60
+
61
+ - Signaler un bug : https://github.com/BeatJo/sia-ui-site/issues
62
+ - Lire la documentation : https://beatjo.github.io/sia-ui-site/
63
+ - Voir la démonstration : https://beatjo.github.io/sia-ui-site/preview/
64
+
65
+ Les contributions directes au code des packages se font sur invitation dans le dépôt source privé.
66
+ ## Journal des changements
67
+
68
+ Le contenu ci-dessous reprend intégralement `CHANGELOG.md` pour rester visible sur npm.
69
+
70
+ # @sia-ui/react-web
71
+
72
+ ## 0.3.0
73
+
74
+ ### Minor Changes
75
+
76
+ - Une ressource se déclare une fois, cinq composants refondus, et une
77
+ documentation qui décrit le produit plutôt que son développement.
78
+
79
+ ## Déclarer une ressource
80
+
81
+ `defineResource` décrit un objet métier **une seule fois**. Les colonnes du
82
+ tableau, les champs du formulaire, les lignes de la vue de détail, la
83
+ validation, les clés de recherche et les quatre règles de droits en sont
84
+ dérivés — et chaque dérivation reste remplaçable par la prop correspondante.
85
+
86
+ ```tsx
87
+ <CrudPage resource={FACTURE} data={factures} can={can}
88
+ onSubmit={…} onDelete={…} />
89
+ ```
90
+
91
+ Le rendu se déduit du type : un `currency` s'affiche formaté et aligné à
92
+ droite, un `select` avec ses `tones` devient une pastille, une `date` passe
93
+ par le format local. `permissions: "auto"` applique la convention
94
+ `<nom>.<verbe>`.
95
+
96
+ ## Les quatre opérations ouvrent leurs propres boîtes
97
+
98
+ `CrudPage` n'appelle plus seulement un gestionnaire : déclarer `fields` et
99
+ `onSubmit` suffit à obtenir un formulaire vide en création, le même prérempli
100
+ en modification, et une vue de détail. `onCreate`, `onEdit` et `onView`
101
+ restent la porte de sortie vers une page dédiée — fournis, ils passent devant
102
+ la boîte.
103
+
104
+ Les boîtes n'inventent rien : `Modal` pour la boîte, `Form` pour la saisie,
105
+ `Descriptions` pour la lecture.
106
+
107
+ ## Cinq composants refondus
108
+ - **`Sidebar`** — le rail réduit n'enferme plus ses sous-menus : ils sortent
109
+ en volet. Profondeur illimitée, droits en cascade, trois variantes.
110
+ - **`AppShell`** — se branche sur n'importe quel routeur par une seule
111
+ chaîne, l'adresse courante. Trois états de barre, tiroir ou onglets bas sur
112
+ mobile, filtrage des droits fait une seule fois.
113
+ - **`Avatar`** — teinte dérivée du nom, repli peint sous l'image, quatre états
114
+ de présence, et des piles qui résument leur surplus.
115
+ - **`DataTable`** — actions de ligne avec droits et confirmation, sélection et
116
+ barre groupée, vue en cartes, trois densités, états de chargement, d'erreur
117
+ et de vide.
118
+ - **`CrudPage`** — réécrit : il tenait en neuf lignes et n'offrait aucune des
119
+ quatre opérations qui lui donnent son nom.
120
+
121
+ ## Ruptures
122
+ - `CrudPage` : `actions` portait des nœuds d'en-tête, ils vont dans
123
+ `headerActions`. `data` est requis, et `columns` l'est aussi à moins qu'une
124
+ `resource` ne les fournisse.
125
+ - `Sidebar` et `AppShell` : les props ont changé. Voir
126
+ [La navigation latérale](https://beatjo.github.io/sia-ui-site/guides/navigation)
127
+ et [La coquille d'application](https://beatjo.github.io/sia-ui-site/guides/coquille-application).
128
+
129
+ ## Documentation
130
+
131
+ Les cent trois composants ont désormais une page de référence — ce qu'ils
132
+ font, comment les installer, et **toutes** leurs props avec type et valeur par
133
+ défaut. Ces pages sont écrites par le code : les props viennent des types, les
134
+ descriptions de leurs commentaires, la commande d'installation du registre.
135
+
136
+ Le catalogue est passé de seize sections en deux langues à neuf, ordonnées du
137
+ plus général au plus assemblé. Les comptes rendus de développement ont été
138
+ retirés de la documentation : ils décrivaient un chemin parcouru, pas un
139
+ produit.
140
+
141
+ ### Patch Changes
142
+
143
+ - Updated dependencies
144
+ - @sia-ui/headless@0.3.0
145
+ - @sia-ui/tokens@0.3.0
146
+ - @sia-ui/utils@0.3.0
147
+ - @sia-ui/react@0.3.0
148
+
149
+ ## 0.2.0
150
+
151
+ ### Minor Changes
152
+
153
+ - e4e4a72: Annonces, session et droits, formulaires sans dépendance, et vingt entrées de
154
+ registre de plus.
155
+
156
+ ## Composants
157
+ - **Annonces** — `toast()` s'appelle hors de React, variante `loading`, boutons
158
+ d'action, six coins réglables par annonce, balayage pour écarter, suivi de
159
+ promesse.
160
+ - **Session et droits** — `createSessionStore` avec sa machine à quatre états,
161
+ `createAccessLayer` à évaluateur injecté, `RequireSession` sans routeur.
162
+ - **Formulaires** — le contrat `FormAdapter` et `useLocalForm`, sans
163
+ dépendance. `Form` est écrit sur le contrat : il n'importe ni
164
+ react-hook-form ni zod, et se câble à l'un ou l'autre par un adaptateur.
165
+ - **Vingt entrées de registre de plus** — `progress`, `dropdown-menu`,
166
+ `accordion`, `sidebar`, `breadcrumb`, `steps`, `toggle`, `scroll-area`,
167
+ `hover-card`, `aspect-ratio`, `input-number`, `password-input`,
168
+ `phone-input`, `chart`, `require-session`, `form`…
169
+ - **Thème** — mode `system`, persistance et script anti-clignotement dans
170
+ `SiaProvider`, en remplacement de `next-themes`.
171
+
172
+ ## `@sia-ui/api`
173
+
174
+ Le client HTTP typé est un paquet à part : ni React, ni DOM, ni tokens. Il
175
+ s'installe seul, et copier un `Badge` depuis le registre ne l'entraîne pas.
176
+
177
+ ## Utilitaires
178
+
179
+ `@sia-ui/utils` passe de six à quatorze modules : `query`, `async`,
180
+ `collection`, `object`, `validation`, `file`, `clipboard`, `locale`.
181
+
182
+ ## Archives
183
+ - Plus de sourcemaps : elles pesaient environ soixante pour cent de chaque
184
+ archive — `@sia-ui/react-web` passe de 2,1 Mo à 759 Ko.
185
+ - Chaque paquet porte enfin la licence MIT qu'il annonce.
186
+
187
+ ## Vitrine en ligne
188
+
189
+ Trois surfaces publiées sur GitHub Pages à chaque poussée sur `main` : la
190
+ documentation à la racine, le catalogue Storybook sous `/storybook/`, la
191
+ démonstration sous `/preview/`. Le site de documentation est construit depuis
192
+ les fichiers de `docs/` eux-mêmes, qui restent du Markdown ordinaire.
193
+
194
+ ## Le registre n'est plus une voie sans retour
195
+
196
+ Installer était jusqu'ici définitif : plus rien ne disait ce qu'on avait, ce
197
+ qu'on avait retouché, ni ce qui avait bougé en amont — donc rien ne permettait
198
+ de corriger ni de déprécier une entrée après coup.
199
+ - **`sia-ui.lock.json`**, écrit à chaque `add` : version, date et empreinte de
200
+ chaque fichier copié.
201
+ - **Quatre commandes** : `diff`, `remove`, `doctor`, `list --outdated`.
202
+ `remove` refuse de casser un voisin ou d'effacer un fichier retouché.
203
+ - **Cycle de vie des entrées** — `experimental`, `stable`, `deprecated`,
204
+ `removed` — avec `replacedBy`. `add` refuse ce qui est retiré, `doctor`
205
+ signale ce qui est déprécié chez qui l'a déjà installé.
206
+ - **Journal du registre**, entrée par entrée, dont `pnpm check:changelog`
207
+ refuse qu'il mente.
208
+ - **Registre servi en HTTP**, versionné par l'URL : `…/r/v1/`. Corriger une
209
+ entrée n'oblige plus à republier la CLI.
210
+
211
+ ## Corrections
212
+ - La case à cocher et le bouton radio masquaient leur contrôle natif en
213
+ `opacity:0`. Le navigateur le peignait encore sous le visuel personnalisé, et
214
+ ce dessin clignotait au clic. Les deux utilisent désormais la recette
215
+ partagée `.sia-visually-hidden`, qui le découpe hors du rendu sans le retirer
216
+ du clavier.
217
+ - Une case à cocher non contrôlée ne se peignait jamais cochée : l'`<input>`
218
+ basculait, mais la classe qui dessine la case ne suivait pas.
219
+ - Le curseur de survol des graphes était ovale, et le tracé de la courbe
220
+ haché : les marqueurs sont sortis du SVG, qui est étiré sans conserver ses
221
+ proportions.
222
+ - L'entrée `drawer` du registre était impossible à installer — elle importait
223
+ deux dossiers que la CLI ne copie pas.
224
+
225
+ ### Patch Changes
226
+
227
+ - Updated dependencies [e4e4a72]
228
+ - @sia-ui/headless@0.2.0
229
+ - @sia-ui/tokens@0.2.0
230
+ - @sia-ui/utils@0.2.0
231
+ - @sia-ui/react@0.2.0
54
232
 
55
233
  ## Licence
56
234
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sia-ui/react-web",
3
- "version": "0.3.0",
3
+ "version": "0.3.2",
4
4
  "description": "DOM implementation of the SIA UI component contracts.",
5
5
  "keywords": [
6
6
  "sia-ui",
@@ -12,14 +12,13 @@
12
12
  ],
13
13
  "license": "MIT",
14
14
  "author": "Ivan Mbella",
15
- "homepage": "https://github.com/BeatJo/sia-ui#readme",
15
+ "homepage": "https://beatjo.github.io/sia-ui-site/",
16
16
  "bugs": {
17
- "url": "https://github.com/BeatJo/sia-ui/issues"
17
+ "url": "https://github.com/BeatJo/sia-ui-site/issues"
18
18
  },
19
19
  "repository": {
20
20
  "type": "git",
21
- "url": "git+https://github.com/BeatJo/sia-ui.git",
22
- "directory": "packages/react-web"
21
+ "url": "git+https://github.com/BeatJo/sia-ui-site.git"
23
22
  },
24
23
  "type": "module",
25
24
  "sideEffects": [
@@ -28,6 +27,7 @@
28
27
  "files": [
29
28
  "dist",
30
29
  "README.md",
30
+ "CHANGELOG.md",
31
31
  "LICENSE"
32
32
  ],
33
33
  "main": "./dist/index.cjs",
@@ -45,10 +45,10 @@
45
45
  "access": "public"
46
46
  },
47
47
  "dependencies": {
48
- "@sia-ui/react": "0.3.0",
49
- "@sia-ui/utils": "0.3.0",
50
- "@sia-ui/headless": "0.3.0",
51
- "@sia-ui/tokens": "0.3.0"
48
+ "@sia-ui/headless": "0.3.2",
49
+ "@sia-ui/react": "0.3.2",
50
+ "@sia-ui/utils": "0.3.2",
51
+ "@sia-ui/tokens": "0.3.2"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "react": ">=18.2.0",
@@ -67,7 +67,7 @@
67
67
  "tsup": "^8.5.1",
68
68
  "typescript": "^5.9.3",
69
69
  "vitest": "^4.0.16",
70
- "@sia-ui/api": "0.3.0"
70
+ "@sia-ui/api": "0.3.2"
71
71
  },
72
72
  "scripts": {
73
73
  "build": "node scripts/build-theme.mjs --check && tsup",