@nomosui/react 0.5.3 → 0.7.0
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/SKILL.md +38 -2
- package/dist/index.js +970 -41
- package/dist/mcp/bin.js +893 -60
- package/dist/types/components/code/code.d.ts +8 -0
- package/dist/types/components/code/manifest.d.ts +6 -0
- package/dist/types/components/code-block/code-block.d.ts +22 -0
- package/dist/types/components/code-block/manifest.d.ts +6 -0
- package/dist/types/components/copy-button/copy-button.d.ts +51 -0
- package/dist/types/components/copy-button/manifest.d.ts +6 -0
- package/dist/types/components/footer/footer.d.ts +17 -0
- package/dist/types/components/footer/manifest.d.ts +6 -0
- package/dist/types/components/heading/heading.d.ts +38 -0
- package/dist/types/components/heading/manifest.d.ts +6 -0
- package/dist/types/components/kicker/kicker.d.ts +31 -0
- package/dist/types/components/kicker/manifest.d.ts +3 -0
- package/dist/types/components/link/link.d.ts +10 -0
- package/dist/types/components/link/manifest.d.ts +6 -0
- package/dist/types/components/navbar/manifest.d.ts +3 -0
- package/dist/types/components/navbar/navbar.d.ts +17 -0
- package/dist/types/components/text/manifest.d.ts +6 -0
- package/dist/types/components/text/text.d.ts +34 -0
- package/dist/types/components/timeline/timeline.d.ts +15 -1
- package/dist/types/composites/index.d.ts +19 -0
- package/dist/types/index.d.ts +30 -0
- package/package.json +1 -1
- package/tokens/theme.css +24 -0
package/SKILL.md
CHANGED
|
@@ -27,17 +27,24 @@ pour expliquer une brique, elle appartient à l'app, pas au cœur.
|
|
|
27
27
|
- **Recueillir ou montrer une note** → `Rating` : interactif seulement si l'app fournit
|
|
28
28
|
`onValueChange`, sinon un affichage.
|
|
29
29
|
- **Lister des événements datés** → `Timeline` (frise, présentation seule ; le format de
|
|
30
|
-
la date vient de l'app).
|
|
30
|
+
la date vient de l'app). Un point porte un état — `done` (défaut) ou `past` (grisé) —
|
|
31
|
+
et un `past` exige un `stateLabel` fourni par l'app : la couleur seule ne suffit pas.
|
|
31
32
|
- **Nommer un contrôle iconique, glisser une aide courte** → `Tooltip` en famille (un
|
|
32
33
|
`TooltipProvider` autour de plusieurs, `Tooltip`, `TooltipTrigger`, `TooltipContent`).
|
|
33
34
|
Jamais pour une information essentielle : elle n'est ni au clavier seul ni au tactile.
|
|
34
35
|
- **Représenter une personne par son image** → `Avatar` (le texte alternatif et le repli
|
|
35
36
|
viennent de l'app ; natif `<img>` + `onError`, sans dépendance).
|
|
37
|
+
- **Coiffer un titre d'une accroche courte** → `Kicker` (un libellé en majuscules, un point
|
|
38
|
+
de ton optionnel via `dot` ; le texte est injecté par l'appelant).
|
|
36
39
|
|
|
37
40
|
### Agir, saisir
|
|
38
41
|
|
|
39
42
|
- **Agir** → `Button` (`variant` = le ton, `size` = la densité ; `asChild` pour poser le
|
|
40
43
|
style sur un lien).
|
|
44
|
+
- **Naviguer vers une URL** → `Link` (un `<a>` ; `href` et libellé injectés, le cœur ne
|
|
45
|
+
porte aucun routing ; `asChild` pour poser le style sur un composant de routing de l'app).
|
|
46
|
+
- **Copier un texte** → `CopyButton` (`value` à copier, `label`/`copiedLabel` et `icon`
|
|
47
|
+
injectés ; le libellé transitoire revient seul après ~2 s).
|
|
41
48
|
- **Saisir une ligne** → `Input` ; **un nombre borné** → `NumberField` (`step`, `min`,
|
|
42
49
|
`max` du natif) ; **chercher avec icône et effacement** → `SearchField` ; **plusieurs
|
|
43
50
|
lignes** → `Textarea`.
|
|
@@ -52,8 +59,13 @@ pour expliquer une brique, elle appartient à l'app, pas au cœur.
|
|
|
52
59
|
### Structurer
|
|
53
60
|
|
|
54
61
|
- **Une surface** (titre, corps, pied) → les parts de `Card`.
|
|
62
|
+
- **L'en-tête d'un site** (marque, navigation, actions) → `Navbar` : une barre sticky en
|
|
63
|
+
haut, bordure basse, fond du cœur. Les slots `brand`, `nav` et `actions` sont injectés
|
|
64
|
+
par l'app — aucun `href` ni mot produit dans le cœur (ADR 0030).
|
|
55
65
|
- **Un état vide, ou une panne à nommer** → `EmptyState` (la carte centrée ; le `detail`
|
|
56
66
|
brut nomme la vraie panne, plutôt qu'un zéro silencieux).
|
|
67
|
+
- **Un pied de page** (marque, rangée de liens, ligne légale) → `Footer` : des emplacements
|
|
68
|
+
injectés (`brand`, `links`, `legal`), sans routing ni libellé propre au cœur.
|
|
57
69
|
- **Une information inline** qui demande l'attention sans bloquer → `Alert` (le ton vient
|
|
58
70
|
du cœur ; `onClose` va avec `closeLabel`).
|
|
59
71
|
- **Séparer deux contenus** → `Separator` ; **tenir la place d'un contenu qui charge** →
|
|
@@ -86,6 +98,18 @@ pour expliquer une brique, elle appartient à l'app, pas au cœur.
|
|
|
86
98
|
(sélection multiple) ; ouverture et sélection sont contrôlées par props, le focus
|
|
87
99
|
clavier (rôle `tree`, flèches) est interne.
|
|
88
100
|
|
|
101
|
+
### Écrire
|
|
102
|
+
|
|
103
|
+
- **Titrer une section** → `Heading` : `level` choisit la balise `h1`..`h6` **et** la taille
|
|
104
|
+
sémantique (display, title, lead, body, caption, micro). La hiérarchie du document se
|
|
105
|
+
décide par le niveau, jamais par la taille.
|
|
106
|
+
- **Écrire le texte courant** → `Text` : `size` lit l'échelle sémantique (`lead`, `body`,
|
|
107
|
+
`caption`, `micro`), `as` choisit `p` (défaut) ou `span` pour un texte inline. Les tailles
|
|
108
|
+
viennent des tokens, jamais d'un utilitaire ad-hoc.
|
|
109
|
+
- **Montrer un extrait de code** → `Code` (inline, dans une phrase) ou `CodeBlock` (bloc
|
|
110
|
+
scrollable avec bouton de copie ; `code` est le texte copié, `children` le rendu, les
|
|
111
|
+
libellés sont injectés). La coloration syntaxique reste à l'app.
|
|
112
|
+
|
|
89
113
|
### Formulaire
|
|
90
114
|
|
|
91
115
|
- **Mettre en page** → `Form` (grille de champs + zone d'actions, `columns` pour deux
|
|
@@ -132,7 +156,10 @@ button
|
|
|
132
156
|
card
|
|
133
157
|
checkbox
|
|
134
158
|
chip
|
|
159
|
+
code
|
|
160
|
+
code-block
|
|
135
161
|
collapsible
|
|
162
|
+
copy-button
|
|
136
163
|
counter
|
|
137
164
|
data-table-pagination
|
|
138
165
|
data-table-toolbar
|
|
@@ -142,11 +169,16 @@ empty-state
|
|
|
142
169
|
facet-filter
|
|
143
170
|
field
|
|
144
171
|
fieldset
|
|
172
|
+
footer
|
|
145
173
|
form
|
|
146
174
|
freshness
|
|
175
|
+
heading
|
|
147
176
|
input
|
|
177
|
+
kicker
|
|
148
178
|
label
|
|
179
|
+
link
|
|
149
180
|
meter
|
|
181
|
+
navbar
|
|
150
182
|
number-field
|
|
151
183
|
popover
|
|
152
184
|
progress-bar
|
|
@@ -161,6 +193,7 @@ skeleton
|
|
|
161
193
|
switch
|
|
162
194
|
table
|
|
163
195
|
tabs
|
|
196
|
+
text
|
|
164
197
|
textarea
|
|
165
198
|
timeline
|
|
166
199
|
toast
|
|
@@ -193,7 +226,10 @@ aplati par mode) et `nomos://component/<nom>` (le manifeste).
|
|
|
193
226
|
Au-delà du manifeste, chaque brique a une **vue** servie en `ui://nomos/<nom>` — un
|
|
194
227
|
document auto-suffisant (`text/html;profile=mcp-app`) que l'hôte rend dans un iframe
|
|
195
228
|
sandboxé. Une **scène composite** (`ui://nomos/composite/<nom>`) assemble plusieurs
|
|
196
|
-
briques en un écran qui a du sens (un formulaire, une carte de statut).
|
|
229
|
+
briques en un écran qui a du sens (un formulaire, une carte de statut). Les scènes
|
|
230
|
+
sont aussi exportées sur la surface publique JS (`composites`, `compositeNames`,
|
|
231
|
+
`findComposite`, ADR 0031) : le serveur MCP et le site rendent la **même** source,
|
|
232
|
+
et leur copie par défaut est neutre — elle s'injecte par props.
|
|
197
233
|
|
|
198
234
|
La vue **émet des intentions** (`ready`, `select`, `change`, `error`) et ne mute jamais
|
|
199
235
|
l'état : l'hôte décide. Il lui pousse l'apparence (`set-view` : thème, densité) et les
|