@usevyre/ai-context 1.0.1 → 1.1.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/dist/anti-patterns.json +106 -1
- package/dist/cheat-sheets/buttongroup.md +42 -0
- package/dist/cheat-sheets/combobox.md +37 -0
- package/dist/cheat-sheets/datagrid.md +44 -0
- package/dist/cheat-sheets/index.md +6 -0
- package/dist/cheat-sheets/tag.md +46 -0
- package/dist/cheat-sheets/taggroup.md +33 -0
- package/dist/cheat-sheets/tagsinput.md +35 -0
- package/dist/claude-context.md +198 -1
- package/dist/copilot-instructions.md +198 -1
- package/dist/cursor-rules.md +72 -1
- package/dist/full-context.md +197 -0
- package/dist/index.js +1493 -113
- package/dist/schema.json +368 -5
- package/dist/version-info.json +112 -65
- package/dist/windsurf-rules.md +198 -1
- package/package.json +1 -1
package/dist/version-info.json
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
3
|
-
"packageVersion": "1.
|
|
4
|
-
"generatedAt": "2026-05-
|
|
2
|
+
"version": "1.1.0",
|
|
3
|
+
"packageVersion": "1.1.0",
|
|
4
|
+
"generatedAt": "2026-05-15T15:01:34.101Z",
|
|
5
5
|
"validFor": [
|
|
6
|
-
"@usevyre/react@1.
|
|
7
|
-
"@usevyre/vue@1.
|
|
6
|
+
"@usevyre/react@1.1.0+",
|
|
7
|
+
"@usevyre/vue@1.1.0+"
|
|
8
8
|
],
|
|
9
9
|
"changelog": {
|
|
10
|
+
"1.1.0": {
|
|
11
|
+
"date": "2026-05-15",
|
|
12
|
+
"breaking": false,
|
|
13
|
+
"summary": "Added 6 components: ButtonGroup, TagsInput, Combobox, DataGrid, Tag, TagGroup"
|
|
14
|
+
},
|
|
10
15
|
"1.0.0": {
|
|
11
16
|
"date": "2026-05-13",
|
|
12
17
|
"breaking": true,
|
|
@@ -25,211 +30,253 @@
|
|
|
25
30
|
},
|
|
26
31
|
"components": {
|
|
27
32
|
"Accordion": {
|
|
28
|
-
"version": "1.
|
|
29
|
-
"lastUpdated": "2026-05-
|
|
33
|
+
"version": "1.1.0",
|
|
34
|
+
"lastUpdated": "2026-05-15",
|
|
30
35
|
"breaking": false,
|
|
31
36
|
"stable": true,
|
|
32
37
|
"changelog": null
|
|
33
38
|
},
|
|
34
39
|
"Alert": {
|
|
35
|
-
"version": "1.
|
|
36
|
-
"lastUpdated": "2026-05-
|
|
40
|
+
"version": "1.1.0",
|
|
41
|
+
"lastUpdated": "2026-05-15",
|
|
37
42
|
"breaking": false,
|
|
38
43
|
"stable": true,
|
|
39
44
|
"changelog": null
|
|
40
45
|
},
|
|
41
46
|
"Avatar": {
|
|
42
|
-
"version": "1.
|
|
43
|
-
"lastUpdated": "2026-05-
|
|
47
|
+
"version": "1.1.0",
|
|
48
|
+
"lastUpdated": "2026-05-15",
|
|
44
49
|
"breaking": false,
|
|
45
50
|
"stable": true,
|
|
46
51
|
"changelog": null
|
|
47
52
|
},
|
|
48
53
|
"Badge": {
|
|
49
|
-
"version": "1.
|
|
50
|
-
"lastUpdated": "2026-05-
|
|
54
|
+
"version": "1.1.0",
|
|
55
|
+
"lastUpdated": "2026-05-15",
|
|
51
56
|
"breaking": false,
|
|
52
57
|
"stable": true,
|
|
53
58
|
"changelog": null
|
|
54
59
|
},
|
|
55
60
|
"Breadcrumb": {
|
|
56
|
-
"version": "1.
|
|
57
|
-
"lastUpdated": "2026-05-
|
|
61
|
+
"version": "1.1.0",
|
|
62
|
+
"lastUpdated": "2026-05-15",
|
|
58
63
|
"breaking": false,
|
|
59
64
|
"stable": true,
|
|
60
65
|
"changelog": null
|
|
61
66
|
},
|
|
62
67
|
"Button": {
|
|
63
|
-
"version": "1.
|
|
64
|
-
"lastUpdated": "2026-05-
|
|
68
|
+
"version": "1.1.0",
|
|
69
|
+
"lastUpdated": "2026-05-15",
|
|
65
70
|
"breaking": false,
|
|
66
71
|
"stable": true,
|
|
67
72
|
"changelog": null
|
|
68
73
|
},
|
|
69
74
|
"Calendar": {
|
|
70
|
-
"version": "1.
|
|
71
|
-
"lastUpdated": "2026-05-
|
|
75
|
+
"version": "1.1.0",
|
|
76
|
+
"lastUpdated": "2026-05-15",
|
|
72
77
|
"breaking": false,
|
|
73
78
|
"stable": true,
|
|
74
79
|
"changelog": null
|
|
75
80
|
},
|
|
76
81
|
"Card": {
|
|
77
|
-
"version": "1.
|
|
78
|
-
"lastUpdated": "2026-05-
|
|
82
|
+
"version": "1.1.0",
|
|
83
|
+
"lastUpdated": "2026-05-15",
|
|
79
84
|
"breaking": false,
|
|
80
85
|
"stable": true,
|
|
81
86
|
"changelog": null
|
|
82
87
|
},
|
|
83
88
|
"Checkbox": {
|
|
84
|
-
"version": "1.
|
|
85
|
-
"lastUpdated": "2026-05-
|
|
89
|
+
"version": "1.1.0",
|
|
90
|
+
"lastUpdated": "2026-05-15",
|
|
86
91
|
"breaking": false,
|
|
87
92
|
"stable": true,
|
|
88
93
|
"changelog": null
|
|
89
94
|
},
|
|
90
95
|
"Command": {
|
|
91
|
-
"version": "1.
|
|
92
|
-
"lastUpdated": "2026-05-
|
|
96
|
+
"version": "1.1.0",
|
|
97
|
+
"lastUpdated": "2026-05-15",
|
|
93
98
|
"breaking": false,
|
|
94
99
|
"stable": true,
|
|
95
100
|
"changelog": null
|
|
96
101
|
},
|
|
97
102
|
"DropdownMenu": {
|
|
98
|
-
"version": "1.
|
|
99
|
-
"lastUpdated": "2026-05-
|
|
103
|
+
"version": "1.1.0",
|
|
104
|
+
"lastUpdated": "2026-05-15",
|
|
100
105
|
"breaking": false,
|
|
101
106
|
"stable": true,
|
|
102
107
|
"changelog": null
|
|
103
108
|
},
|
|
104
109
|
"Field": {
|
|
105
|
-
"version": "1.
|
|
106
|
-
"lastUpdated": "2026-05-
|
|
110
|
+
"version": "1.1.0",
|
|
111
|
+
"lastUpdated": "2026-05-15",
|
|
107
112
|
"breaking": false,
|
|
108
113
|
"stable": true,
|
|
109
114
|
"changelog": null
|
|
110
115
|
},
|
|
111
116
|
"Input": {
|
|
112
|
-
"version": "1.
|
|
113
|
-
"lastUpdated": "2026-05-
|
|
117
|
+
"version": "1.1.0",
|
|
118
|
+
"lastUpdated": "2026-05-15",
|
|
114
119
|
"breaking": false,
|
|
115
120
|
"stable": true,
|
|
116
121
|
"changelog": null
|
|
117
122
|
},
|
|
118
123
|
"Label": {
|
|
119
|
-
"version": "1.
|
|
120
|
-
"lastUpdated": "2026-05-
|
|
124
|
+
"version": "1.1.0",
|
|
125
|
+
"lastUpdated": "2026-05-15",
|
|
121
126
|
"breaking": false,
|
|
122
127
|
"stable": true,
|
|
123
128
|
"changelog": null
|
|
124
129
|
},
|
|
125
130
|
"Modal": {
|
|
126
|
-
"version": "1.
|
|
127
|
-
"lastUpdated": "2026-05-
|
|
131
|
+
"version": "1.1.0",
|
|
132
|
+
"lastUpdated": "2026-05-15",
|
|
128
133
|
"breaking": false,
|
|
129
134
|
"stable": true,
|
|
130
135
|
"changelog": null
|
|
131
136
|
},
|
|
132
137
|
"Pagination": {
|
|
133
|
-
"version": "1.
|
|
134
|
-
"lastUpdated": "2026-05-
|
|
138
|
+
"version": "1.1.0",
|
|
139
|
+
"lastUpdated": "2026-05-15",
|
|
135
140
|
"breaking": false,
|
|
136
141
|
"stable": true,
|
|
137
142
|
"changelog": null
|
|
138
143
|
},
|
|
139
144
|
"Popover": {
|
|
140
|
-
"version": "1.
|
|
141
|
-
"lastUpdated": "2026-05-
|
|
145
|
+
"version": "1.1.0",
|
|
146
|
+
"lastUpdated": "2026-05-15",
|
|
142
147
|
"breaking": false,
|
|
143
148
|
"stable": true,
|
|
144
149
|
"changelog": null
|
|
145
150
|
},
|
|
146
151
|
"Progress": {
|
|
147
|
-
"version": "1.
|
|
148
|
-
"lastUpdated": "2026-05-
|
|
152
|
+
"version": "1.1.0",
|
|
153
|
+
"lastUpdated": "2026-05-15",
|
|
149
154
|
"breaking": false,
|
|
150
155
|
"stable": true,
|
|
151
156
|
"changelog": null
|
|
152
157
|
},
|
|
153
158
|
"Select": {
|
|
154
|
-
"version": "1.
|
|
155
|
-
"lastUpdated": "2026-05-
|
|
159
|
+
"version": "1.1.0",
|
|
160
|
+
"lastUpdated": "2026-05-15",
|
|
156
161
|
"breaking": false,
|
|
157
162
|
"stable": true,
|
|
158
163
|
"changelog": null
|
|
159
164
|
},
|
|
160
165
|
"Separator": {
|
|
161
|
-
"version": "1.
|
|
162
|
-
"lastUpdated": "2026-05-
|
|
166
|
+
"version": "1.1.0",
|
|
167
|
+
"lastUpdated": "2026-05-15",
|
|
163
168
|
"breaking": false,
|
|
164
169
|
"stable": true,
|
|
165
170
|
"changelog": null
|
|
166
171
|
},
|
|
167
172
|
"Sheet": {
|
|
168
|
-
"version": "1.
|
|
169
|
-
"lastUpdated": "2026-05-
|
|
173
|
+
"version": "1.1.0",
|
|
174
|
+
"lastUpdated": "2026-05-15",
|
|
170
175
|
"breaking": false,
|
|
171
176
|
"stable": true,
|
|
172
177
|
"changelog": null
|
|
173
178
|
},
|
|
174
179
|
"Sidebar": {
|
|
175
|
-
"version": "1.
|
|
176
|
-
"lastUpdated": "2026-05-
|
|
180
|
+
"version": "1.1.0",
|
|
181
|
+
"lastUpdated": "2026-05-15",
|
|
177
182
|
"breaking": false,
|
|
178
183
|
"stable": true,
|
|
179
184
|
"changelog": null
|
|
180
185
|
},
|
|
181
186
|
"Skeleton": {
|
|
182
|
-
"version": "1.
|
|
183
|
-
"lastUpdated": "2026-05-
|
|
187
|
+
"version": "1.1.0",
|
|
188
|
+
"lastUpdated": "2026-05-15",
|
|
184
189
|
"breaking": false,
|
|
185
190
|
"stable": true,
|
|
186
191
|
"changelog": null
|
|
187
192
|
},
|
|
188
193
|
"Slider": {
|
|
189
|
-
"version": "1.
|
|
190
|
-
"lastUpdated": "2026-05-
|
|
194
|
+
"version": "1.1.0",
|
|
195
|
+
"lastUpdated": "2026-05-15",
|
|
191
196
|
"breaking": false,
|
|
192
197
|
"stable": true,
|
|
193
198
|
"changelog": null
|
|
194
199
|
},
|
|
195
200
|
"Switch": {
|
|
196
|
-
"version": "1.
|
|
197
|
-
"lastUpdated": "2026-05-
|
|
201
|
+
"version": "1.1.0",
|
|
202
|
+
"lastUpdated": "2026-05-15",
|
|
198
203
|
"breaking": false,
|
|
199
204
|
"stable": true,
|
|
200
205
|
"changelog": null
|
|
201
206
|
},
|
|
202
207
|
"Table": {
|
|
203
|
-
"version": "1.
|
|
204
|
-
"lastUpdated": "2026-05-
|
|
208
|
+
"version": "1.1.0",
|
|
209
|
+
"lastUpdated": "2026-05-15",
|
|
205
210
|
"breaking": false,
|
|
206
211
|
"stable": true,
|
|
207
212
|
"changelog": null
|
|
208
213
|
},
|
|
209
214
|
"Tabs": {
|
|
210
|
-
"version": "1.
|
|
211
|
-
"lastUpdated": "2026-05-
|
|
215
|
+
"version": "1.1.0",
|
|
216
|
+
"lastUpdated": "2026-05-15",
|
|
212
217
|
"breaking": false,
|
|
213
218
|
"stable": true,
|
|
214
219
|
"changelog": null
|
|
215
220
|
},
|
|
216
221
|
"Toast": {
|
|
217
|
-
"version": "1.
|
|
218
|
-
"lastUpdated": "2026-05-
|
|
222
|
+
"version": "1.1.0",
|
|
223
|
+
"lastUpdated": "2026-05-15",
|
|
219
224
|
"breaking": false,
|
|
220
225
|
"stable": true,
|
|
221
226
|
"changelog": null
|
|
222
227
|
},
|
|
223
228
|
"Tooltip": {
|
|
224
|
-
"version": "1.
|
|
225
|
-
"lastUpdated": "2026-05-
|
|
229
|
+
"version": "1.1.0",
|
|
230
|
+
"lastUpdated": "2026-05-15",
|
|
226
231
|
"breaking": false,
|
|
227
232
|
"stable": true,
|
|
228
233
|
"changelog": null
|
|
229
234
|
},
|
|
230
235
|
"Typography": {
|
|
231
|
-
"version": "1.
|
|
232
|
-
"lastUpdated": "2026-05-
|
|
236
|
+
"version": "1.1.0",
|
|
237
|
+
"lastUpdated": "2026-05-15",
|
|
238
|
+
"breaking": false,
|
|
239
|
+
"stable": true,
|
|
240
|
+
"changelog": null
|
|
241
|
+
},
|
|
242
|
+
"ButtonGroup": {
|
|
243
|
+
"version": "1.1.0",
|
|
244
|
+
"lastUpdated": "2026-05-15",
|
|
245
|
+
"breaking": false,
|
|
246
|
+
"stable": true,
|
|
247
|
+
"changelog": null
|
|
248
|
+
},
|
|
249
|
+
"TagsInput": {
|
|
250
|
+
"version": "1.1.0",
|
|
251
|
+
"lastUpdated": "2026-05-15",
|
|
252
|
+
"breaking": false,
|
|
253
|
+
"stable": true,
|
|
254
|
+
"changelog": null
|
|
255
|
+
},
|
|
256
|
+
"Combobox": {
|
|
257
|
+
"version": "1.1.0",
|
|
258
|
+
"lastUpdated": "2026-05-15",
|
|
259
|
+
"breaking": false,
|
|
260
|
+
"stable": true,
|
|
261
|
+
"changelog": null
|
|
262
|
+
},
|
|
263
|
+
"DataGrid": {
|
|
264
|
+
"version": "1.1.0",
|
|
265
|
+
"lastUpdated": "2026-05-15",
|
|
266
|
+
"breaking": false,
|
|
267
|
+
"stable": true,
|
|
268
|
+
"changelog": null
|
|
269
|
+
},
|
|
270
|
+
"Tag": {
|
|
271
|
+
"version": "1.1.0",
|
|
272
|
+
"lastUpdated": "2026-05-15",
|
|
273
|
+
"breaking": false,
|
|
274
|
+
"stable": true,
|
|
275
|
+
"changelog": null
|
|
276
|
+
},
|
|
277
|
+
"TagGroup": {
|
|
278
|
+
"version": "1.1.0",
|
|
279
|
+
"lastUpdated": "2026-05-15",
|
|
233
280
|
"breaking": false,
|
|
234
281
|
"stable": true,
|
|
235
282
|
"changelog": null
|
package/dist/windsurf-rules.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# useVyre Rules for Windsurf
|
|
2
|
-
# Version: 1.
|
|
2
|
+
# Version: 1.1.0
|
|
3
3
|
|
|
4
4
|
# useVyre Design System — AI Context
|
|
5
5
|
# Version: 0.2.0
|
|
@@ -884,6 +884,188 @@ import { Text, Heading, Lead, Code, Blockquote } from "@usevyre/react"
|
|
|
884
884
|
|
|
885
885
|
---
|
|
886
886
|
|
|
887
|
+
### ButtonGroup
|
|
888
|
+
|
|
889
|
+
Groups multiple Button components into one visual unit (toolbar, segmented control). Pure layout — no internal state.
|
|
890
|
+
|
|
891
|
+
```tsx
|
|
892
|
+
import { ButtonGroup, Button } from "@usevyre/react"
|
|
893
|
+
|
|
894
|
+
// Props:
|
|
895
|
+
// orientation = "horizontal" | "vertical" (default: horizontal)
|
|
896
|
+
// attached = boolean (default: false)
|
|
897
|
+
// size = "sm" | "md" | "lg" | "icon"
|
|
898
|
+
|
|
899
|
+
// Examples:
|
|
900
|
+
<ButtonGroup attached>
|
|
901
|
+
<Button variant="secondary">Day</Button>
|
|
902
|
+
<Button variant="secondary">Week</Button>
|
|
903
|
+
<Button variant="secondary">Month</Button>
|
|
904
|
+
</ButtonGroup>
|
|
905
|
+
<ButtonGroup orientation="vertical" attached>
|
|
906
|
+
<Button variant="secondary">Top</Button>
|
|
907
|
+
<Button variant="secondary">Bottom</Button>
|
|
908
|
+
</ButtonGroup>
|
|
909
|
+
```
|
|
910
|
+
|
|
911
|
+
**Common mistakes:**
|
|
912
|
+
- ❌ `ButtonGroup variant="..."` → Set variant on each <Button> inside the group
|
|
913
|
+
- ❌ `ButtonGroup without Button children` → Place <Button> elements as direct children
|
|
914
|
+
|
|
915
|
+
---
|
|
916
|
+
|
|
917
|
+
### TagsInput
|
|
918
|
+
|
|
919
|
+
Multi-tag input. Type and press Enter or comma to add a tag, click x to remove, Backspace on empty input removes the last tag. Controlled.
|
|
920
|
+
|
|
921
|
+
```tsx
|
|
922
|
+
import { TagsInput } from "@usevyre/react"
|
|
923
|
+
|
|
924
|
+
// Props:
|
|
925
|
+
// value = string[]
|
|
926
|
+
// onChange = (tags: string[]) => void
|
|
927
|
+
// placeholder = string
|
|
928
|
+
// disabled = boolean (default: false)
|
|
929
|
+
// max = number
|
|
930
|
+
// size = "sm" | "md" | "lg" (default: md)
|
|
931
|
+
|
|
932
|
+
// Examples:
|
|
933
|
+
const [tags, setTags] = useState<string[]>([]);
|
|
934
|
+
<TagsInput value={tags} onChange={setTags} placeholder="Add a tag…" />
|
|
935
|
+
<TagsInput value={tags} onChange={setTags} max={5} />
|
|
936
|
+
```
|
|
937
|
+
|
|
938
|
+
**Common mistakes:**
|
|
939
|
+
- ❌ `TagsInput value={string}` → Pass an array: value={['react','vue']}
|
|
940
|
+
- ❌ `TagsInput without onChange` → Provide value and onChange (React) or v-model (Vue)
|
|
941
|
+
|
|
942
|
+
---
|
|
943
|
+
|
|
944
|
+
### Combobox
|
|
945
|
+
|
|
946
|
+
Searchable single-select dropdown with typeahead filtering and keyboard navigation. Use when the list is long enough to need search. Differs from Select (no search) and Command (palette).
|
|
947
|
+
|
|
948
|
+
```tsx
|
|
949
|
+
import { Combobox } from "@usevyre/react"
|
|
950
|
+
|
|
951
|
+
// Props:
|
|
952
|
+
// options = { value: string; label: string; disabled?: boolean }[]
|
|
953
|
+
// value = string | null
|
|
954
|
+
// onChange = (value: string | null) => void
|
|
955
|
+
// placeholder = string (default: "Search…")
|
|
956
|
+
// disabled = boolean (default: false)
|
|
957
|
+
// size = "sm" | "md" | "lg" (default: md)
|
|
958
|
+
// emptyText = string (default: "No results")
|
|
959
|
+
|
|
960
|
+
// Examples:
|
|
961
|
+
const [lang, setLang] = useState<string | null>(null);
|
|
962
|
+
<Combobox
|
|
963
|
+
options={[{ value: "ts", label: "TypeScript" }, { value: "go", label: "Go" }]}
|
|
964
|
+
value={lang}
|
|
965
|
+
onChange={setLang}
|
|
966
|
+
placeholder="Search language…"
|
|
967
|
+
/>
|
|
968
|
+
```
|
|
969
|
+
|
|
970
|
+
**Common mistakes:**
|
|
971
|
+
- ❌ `Combobox value=""` → Use value={null} for no selection
|
|
972
|
+
- ❌ `Combobox options={string[]}` → Use [{ value: 'ts', label: 'TypeScript' }]
|
|
973
|
+
- ❌ `Using Combobox for command palette` → Use Command for command palettes
|
|
974
|
+
|
|
975
|
+
---
|
|
976
|
+
|
|
977
|
+
### DataGrid
|
|
978
|
+
|
|
979
|
+
Table with built-in column sorting, loading skeletons, and empty state. Filtering and pagination are out of scope — compose with the Pagination component.
|
|
980
|
+
|
|
981
|
+
```tsx
|
|
982
|
+
import { DataGrid } from "@usevyre/react"
|
|
983
|
+
|
|
984
|
+
// Props:
|
|
985
|
+
// columns = { key: string; label: string; sortable?: boolean; width?: string }[]
|
|
986
|
+
// rows = Record<string, unknown>[]
|
|
987
|
+
// sortKey = string
|
|
988
|
+
// sortDir = "asc" | "desc"
|
|
989
|
+
// onSort = (key: string, dir: 'asc' | 'desc') => void
|
|
990
|
+
// loading = boolean (default: false)
|
|
991
|
+
// emptyText = string (default: "No data")
|
|
992
|
+
// stickyHeader = boolean (default: false)
|
|
993
|
+
|
|
994
|
+
// Examples:
|
|
995
|
+
const cols = [{ key: "name", label: "Name", sortable: true }];
|
|
996
|
+
<DataGrid
|
|
997
|
+
columns={cols}
|
|
998
|
+
rows={people}
|
|
999
|
+
sortKey={sortKey}
|
|
1000
|
+
sortDir={sortDir}
|
|
1001
|
+
onSort={(k, d) => { setSortKey(k); setSortDir(d); }}
|
|
1002
|
+
/>
|
|
1003
|
+
<DataGrid columns={cols} rows={[]} loading />
|
|
1004
|
+
```
|
|
1005
|
+
|
|
1006
|
+
**Common mistakes:**
|
|
1007
|
+
- ❌ `DataGrid expecting built-in pagination` → Slice rows yourself and use the Pagination component
|
|
1008
|
+
- ❌ `DataGrid expecting built-in filtering` → Filter the rows array before passing it in
|
|
1009
|
+
- ❌ `sortable without onSort` → Handle onSort and sort the rows array in your state
|
|
1010
|
+
|
|
1011
|
+
---
|
|
1012
|
+
|
|
1013
|
+
### Tag
|
|
1014
|
+
|
|
1015
|
+
Standalone display tag/chip for categories, labels, or filter chips. NOT an input — for tag input use TagsInput. Group multiple with TagGroup.
|
|
1016
|
+
|
|
1017
|
+
```tsx
|
|
1018
|
+
import { Tag } from "@usevyre/react"
|
|
1019
|
+
|
|
1020
|
+
// Props:
|
|
1021
|
+
// variant = "default" | "accent" | "danger" (default: default)
|
|
1022
|
+
// size = "sm" | "md" | "lg" (default: md)
|
|
1023
|
+
// onRemove = () => void
|
|
1024
|
+
// onClick = () => void
|
|
1025
|
+
// disabled = boolean (default: false)
|
|
1026
|
+
|
|
1027
|
+
// Examples:
|
|
1028
|
+
<TagGroup>
|
|
1029
|
+
<Tag>Design</Tag>
|
|
1030
|
+
<Tag variant="accent">Featured</Tag>
|
|
1031
|
+
<Tag>Engineering</Tag>
|
|
1032
|
+
</TagGroup>
|
|
1033
|
+
<Tag onRemove={() => removeFilter("react")}>react</Tag>
|
|
1034
|
+
<Tag onClick={() => toggleFilter("vue")}>vue</Tag>
|
|
1035
|
+
```
|
|
1036
|
+
|
|
1037
|
+
**Common mistakes:**
|
|
1038
|
+
- ❌ `Tag variant="success"` → Use Badge for success/warning/teal status colors; Tag is for categories/filters
|
|
1039
|
+
- ❌ `Using Tag for tag input` → Use TagsInput for adding/removing tags via keyboard
|
|
1040
|
+
- ❌ `Tag size="xl"` → Use size="lg"
|
|
1041
|
+
|
|
1042
|
+
---
|
|
1043
|
+
|
|
1044
|
+
### TagGroup
|
|
1045
|
+
|
|
1046
|
+
Read-only container that lays out multiple Tag elements with automatic wrapping and consistent spacing. For tag input use TagsInput.
|
|
1047
|
+
|
|
1048
|
+
```tsx
|
|
1049
|
+
import { TagGroup, Tag } from "@usevyre/react"
|
|
1050
|
+
|
|
1051
|
+
// Props:
|
|
1052
|
+
// gap = "sm" | "md" | "lg" (default: md)
|
|
1053
|
+
// wrap = boolean (default: true)
|
|
1054
|
+
|
|
1055
|
+
// Examples:
|
|
1056
|
+
<TagGroup gap="sm">
|
|
1057
|
+
<Tag>React</Tag>
|
|
1058
|
+
<Tag>Vue</Tag>
|
|
1059
|
+
<Tag variant="accent">TypeScript</Tag>
|
|
1060
|
+
</TagGroup>
|
|
1061
|
+
```
|
|
1062
|
+
|
|
1063
|
+
**Common mistakes:**
|
|
1064
|
+
- ❌ `TagGroup without Tag children` → Place <Tag> elements as direct children
|
|
1065
|
+
- ❌ `Using TagGroup for tag input` → Use TagsInput for an editable tag field
|
|
1066
|
+
|
|
1067
|
+
---
|
|
1068
|
+
|
|
887
1069
|
## Hallucination Guard — Common AI Mistakes
|
|
888
1070
|
|
|
889
1071
|
The following prop values and patterns do NOT exist in useVyre.
|
|
@@ -920,6 +1102,21 @@ If you generate these, you are hallucinating.
|
|
|
920
1102
|
- ❌ `<Toast variant="info">` → Use variant="default"
|
|
921
1103
|
- ❌ `<Tooltip Using Tooltip for rich content (forms, buttons, etc.)>` → Use Popover for rich interactive content
|
|
922
1104
|
- ❌ `<Typography Using raw <h1>, <p> tags instead of Typography components>` → Use <Heading>, <Text>, <Lead> from @usevyre/react
|
|
1105
|
+
- ❌ `<ButtonGroup ButtonGroup variant="...">` → Set variant on each <Button> inside the group
|
|
1106
|
+
- ❌ `<ButtonGroup ButtonGroup without Button children>` → Place <Button> elements as direct children
|
|
1107
|
+
- ❌ `<TagsInput TagsInput value={string}>` → Pass an array: value={['react','vue']}
|
|
1108
|
+
- ❌ `<TagsInput TagsInput without onChange>` → Provide value and onChange (React) or v-model (Vue)
|
|
1109
|
+
- ❌ `<Combobox Combobox value="">` → Use value={null} for no selection
|
|
1110
|
+
- ❌ `<Combobox Combobox options={string[]}>` → Use [{ value: 'ts', label: 'TypeScript' }]
|
|
1111
|
+
- ❌ `<Combobox Using Combobox for command palette>` → Use Command for command palettes
|
|
1112
|
+
- ❌ `<DataGrid DataGrid expecting built-in pagination>` → Slice rows yourself and use the Pagination component
|
|
1113
|
+
- ❌ `<DataGrid DataGrid expecting built-in filtering>` → Filter the rows array before passing it in
|
|
1114
|
+
- ❌ `<DataGrid sortable without onSort>` → Handle onSort and sort the rows array in your state
|
|
1115
|
+
- ❌ `<Tag Tag variant="success">` → Use Badge for success/warning/teal status colors; Tag is for categories/filters
|
|
1116
|
+
- ❌ `<Tag Using Tag for tag input>` → Use TagsInput for adding/removing tags via keyboard
|
|
1117
|
+
- ❌ `<Tag Tag size="xl">` → Use size="lg"
|
|
1118
|
+
- ❌ `<TagGroup TagGroup without Tag children>` → Place <Tag> elements as direct children
|
|
1119
|
+
- ❌ `<TagGroup Using TagGroup for tag input>` → Use TagsInput for an editable tag field
|
|
923
1120
|
|
|
924
1121
|
---
|
|
925
1122
|
|