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