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