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