@vibes.diy/prompts 14.3.64 → 14.3.65
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/llms/index.d.ts +29 -1
- package/llms/index.js +84 -0
- package/llms/index.js.map +1 -1
- package/llms/pouf-blog.d.ts +2 -0
- package/llms/pouf-blog.js +6 -0
- package/llms/pouf-blog.js.map +1 -0
- package/llms/pouf-blog.md +305 -0
- package/llms/pouf-booking.d.ts +2 -0
- package/llms/pouf-booking.js +6 -0
- package/llms/pouf-booking.js.map +1 -0
- package/llms/pouf-booking.md +397 -0
- package/llms/pouf-calendar.d.ts +2 -0
- package/llms/pouf-calendar.js +6 -0
- package/llms/pouf-calendar.js.map +1 -0
- package/llms/pouf-calendar.md +352 -0
- package/llms/pouf-chat.d.ts +2 -0
- package/llms/pouf-chat.js +6 -0
- package/llms/pouf-chat.js.map +1 -0
- package/llms/pouf-chat.md +220 -0
- package/llms/pouf-contact.d.ts +2 -0
- package/llms/pouf-contact.js +6 -0
- package/llms/pouf-contact.js.map +1 -0
- package/llms/pouf-contact.md +231 -0
- package/llms/pouf-course.d.ts +2 -0
- package/llms/pouf-course.js +6 -0
- package/llms/pouf-course.js.map +1 -0
- package/llms/pouf-course.md +299 -0
- package/llms/pouf-crm.d.ts +2 -0
- package/llms/pouf-crm.js +6 -0
- package/llms/pouf-crm.js.map +1 -0
- package/llms/pouf-crm.md +330 -0
- package/llms/pouf-dashboard.d.ts +2 -0
- package/llms/pouf-dashboard.js +6 -0
- package/llms/pouf-dashboard.js.map +1 -0
- package/llms/pouf-dashboard.md +269 -0
- package/llms/pouf-editorial.d.ts +2 -0
- package/llms/pouf-editorial.js +6 -0
- package/llms/pouf-editorial.js.map +1 -0
- package/llms/pouf-editorial.md +247 -0
- package/llms/pouf-event.d.ts +2 -0
- package/llms/pouf-event.js +6 -0
- package/llms/pouf-event.js.map +1 -0
- package/llms/pouf-event.md +237 -0
- package/llms/pouf-feed.d.ts +2 -0
- package/llms/pouf-feed.js +6 -0
- package/llms/pouf-feed.js.map +1 -0
- package/llms/pouf-feed.md +249 -0
- package/llms/pouf-game.d.ts +2 -0
- package/llms/pouf-game.js +6 -0
- package/llms/pouf-game.js.map +1 -0
- package/llms/pouf-game.md +273 -0
- package/llms/pouf-inbox.d.ts +2 -0
- package/llms/pouf-inbox.js +6 -0
- package/llms/pouf-inbox.js.map +1 -0
- package/llms/pouf-inbox.md +317 -0
- package/llms/pouf-inventory.d.ts +2 -0
- package/llms/pouf-inventory.js +6 -0
- package/llms/pouf-inventory.js.map +1 -0
- package/llms/pouf-inventory.md +345 -0
- package/llms/pouf-kanban.d.ts +2 -0
- package/llms/pouf-kanban.js +6 -0
- package/llms/pouf-kanban.js.map +1 -0
- package/llms/pouf-kanban.md +235 -0
- package/llms/pouf-landing.d.ts +2 -0
- package/llms/pouf-landing.js +6 -0
- package/llms/pouf-landing.js.map +1 -0
- package/llms/pouf-landing.md +222 -0
- package/llms/pouf-login.d.ts +2 -0
- package/llms/pouf-login.js +6 -0
- package/llms/pouf-login.js.map +1 -0
- package/llms/pouf-login.md +162 -0
- package/llms/pouf-music.d.ts +2 -0
- package/llms/pouf-music.js +6 -0
- package/llms/pouf-music.js.map +1 -0
- package/llms/pouf-music.md +190 -0
- package/llms/pouf-onboarding.d.ts +2 -0
- package/llms/pouf-onboarding.js +6 -0
- package/llms/pouf-onboarding.js.map +1 -0
- package/llms/pouf-onboarding.md +227 -0
- package/llms/pouf-pricing.d.ts +2 -0
- package/llms/pouf-pricing.js +6 -0
- package/llms/pouf-pricing.js.map +1 -0
- package/llms/pouf-pricing.md +193 -0
- package/llms/pouf-profile.d.ts +2 -0
- package/llms/pouf-profile.js +6 -0
- package/llms/pouf-profile.js.map +1 -0
- package/llms/pouf-profile.md +177 -0
- package/llms/pouf-quiz.d.ts +2 -0
- package/llms/pouf-quiz.js +6 -0
- package/llms/pouf-quiz.js.map +1 -0
- package/llms/pouf-quiz.md +267 -0
- package/llms/pouf-settings.d.ts +2 -0
- package/llms/pouf-settings.js +6 -0
- package/llms/pouf-settings.js.map +1 -0
- package/llms/pouf-settings.md +220 -0
- package/llms/pouf-storefront.d.ts +2 -0
- package/llms/pouf-storefront.js +6 -0
- package/llms/pouf-storefront.js.map +1 -0
- package/llms/pouf-storefront.md +293 -0
- package/llms/pouf-support.d.ts +2 -0
- package/llms/pouf-support.js +6 -0
- package/llms/pouf-support.js.map +1 -0
- package/llms/pouf-support.md +322 -0
- package/llms/pouf-testimonials.d.ts +2 -0
- package/llms/pouf-testimonials.js +6 -0
- package/llms/pouf-testimonials.js.map +1 -0
- package/llms/pouf-testimonials.md +156 -0
- package/llms/pouf-todo.d.ts +2 -0
- package/llms/pouf-todo.js +6 -0
- package/llms/pouf-todo.js.map +1 -0
- package/llms/pouf-todo.md +179 -0
- package/llms/pouf-weather.d.ts +2 -0
- package/llms/pouf-weather.js +6 -0
- package/llms/pouf-weather.js.map +1 -0
- package/llms/pouf-weather.md +186 -0
- package/package.json +4 -4
- package/prompts.js +2 -2
- package/prompts.js.map +1 -1
- package/themes/colorsets.d.ts +1 -1
- package/themes/colorsets.js +63 -1
- package/themes/colorsets.js.map +1 -1
- package/themes/index.d.ts +1 -0
- package/themes/index.js +1 -0
- package/themes/index.js.map +1 -1
- package/themes/looks/index.js +6 -2
- package/themes/looks/index.js.map +1 -1
- package/themes/looks/pouf/brief.md +144 -0
- package/themes/looks/pouf/catalog.generated.d.ts +16 -0
- package/themes/looks/pouf/catalog.generated.js +764 -0
- package/themes/looks/pouf/catalog.generated.js.map +1 -0
- package/themes/looks/pouf/variety.d.ts +4 -0
- package/themes/looks/pouf/variety.js +36 -0
- package/themes/looks/pouf/variety.js.map +1 -0
|
@@ -0,0 +1,764 @@
|
|
|
1
|
+
export const POUF_ENTRY_SPECIFIER = {
|
|
2
|
+
index: "@vibes.diy/pouf",
|
|
3
|
+
interactive: "@vibes.diy/pouf/interactive",
|
|
4
|
+
charts: "@vibes.diy/pouf/charts",
|
|
5
|
+
};
|
|
6
|
+
export const POUF_CATALOG = [
|
|
7
|
+
{
|
|
8
|
+
name: "AlertBell",
|
|
9
|
+
entry: "index",
|
|
10
|
+
purpose: "A bell button with an unread count that opens the session's alert history",
|
|
11
|
+
props: [
|
|
12
|
+
{ name: "alerts", type: "AlertBellItem[]", required: true },
|
|
13
|
+
{ name: "unread", type: "number", required: true },
|
|
14
|
+
{ name: "connected", required: true },
|
|
15
|
+
{ name: "onOpen", type: "() => void", required: true },
|
|
16
|
+
],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: "Badge",
|
|
20
|
+
entry: "index",
|
|
21
|
+
purpose: "A small tonal label for a count, category or state",
|
|
22
|
+
props: [{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false }],
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "Blob",
|
|
26
|
+
entry: "index",
|
|
27
|
+
purpose: "A tonal icon tile that fronts a stat, list row or feature",
|
|
28
|
+
props: [
|
|
29
|
+
{ name: "icon", type: "IconLike", required: true },
|
|
30
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
31
|
+
{ name: "size", values: ["sm", "md", "lg"], required: false },
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "Breadcrumb",
|
|
36
|
+
entry: "index",
|
|
37
|
+
purpose: "Shows where the current page sits in a hierarchy, with links back up",
|
|
38
|
+
props: [{ name: "items", type: "BreadcrumbItem[]", required: true }],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "Button",
|
|
42
|
+
entry: "index",
|
|
43
|
+
purpose: "The action button; give one primary action per area",
|
|
44
|
+
props: [
|
|
45
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
46
|
+
{ name: "size", values: ["sm", "md", "lg"], required: false },
|
|
47
|
+
{ name: "variant", values: ["solid", "quiet"], required: false },
|
|
48
|
+
{ name: "block", required: false },
|
|
49
|
+
{ name: "disabled", required: false },
|
|
50
|
+
{ name: "loading", required: false },
|
|
51
|
+
{ name: "type", values: ["button", "submit"], required: false },
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: "CTA",
|
|
56
|
+
entry: "index",
|
|
57
|
+
purpose: "A call-to-action banner: a big tonal cushion with a headline and an action",
|
|
58
|
+
props: [
|
|
59
|
+
{ name: "title", type: "string", required: true },
|
|
60
|
+
{ name: "action", type: "ReactNode", required: true },
|
|
61
|
+
{ name: "tone", values: ["purple", "pink", "blue", "mint", "yellow", "surface"], required: false },
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: "Card",
|
|
66
|
+
entry: "index",
|
|
67
|
+
purpose: "The raised surface that groups related content into a panel",
|
|
68
|
+
props: [
|
|
69
|
+
{ name: "variant", values: ["default", "flush", "tight"], required: false },
|
|
70
|
+
{ name: "motion", values: ["none", "lift", "tilt-left", "tilt-right"], required: false },
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
name: "Dot",
|
|
75
|
+
entry: "index",
|
|
76
|
+
purpose: "A status dot",
|
|
77
|
+
props: [{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false }],
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "Empty",
|
|
81
|
+
entry: "index",
|
|
82
|
+
purpose: "The empty state for a list or panel with nothing in it yet",
|
|
83
|
+
props: [{ name: "title", type: "string", required: true }],
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: "ErrorBoundary",
|
|
87
|
+
entry: "index",
|
|
88
|
+
purpose: "Catches render crashes so one broken part can't blank the whole page",
|
|
89
|
+
props: [{ name: "name", type: "string", required: true }],
|
|
90
|
+
},
|
|
91
|
+
{ name: "ErrorNote", entry: "index", purpose: "An inline message that says a request or action failed", props: [] },
|
|
92
|
+
{ name: "Eyebrow", entry: "index", purpose: "A small uppercase label above a section heading", props: [] },
|
|
93
|
+
{
|
|
94
|
+
name: "Field",
|
|
95
|
+
entry: "index",
|
|
96
|
+
purpose: "Wraps a form control with its label, hint and error text",
|
|
97
|
+
props: [
|
|
98
|
+
{ name: "label", type: "string", required: true },
|
|
99
|
+
{ name: "children", type: "(id: string, describedBy: string | undefined) => ReactNode", required: true },
|
|
100
|
+
],
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "Figure",
|
|
104
|
+
entry: "index",
|
|
105
|
+
purpose: "An image, framed in clay",
|
|
106
|
+
props: [
|
|
107
|
+
{ name: "src", type: "string", required: true },
|
|
108
|
+
{ name: "alt", type: "string", required: true },
|
|
109
|
+
{ name: "width", type: "number", required: true },
|
|
110
|
+
{ name: "height", type: "number", required: true },
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "Footer",
|
|
115
|
+
entry: "index",
|
|
116
|
+
purpose: "A site footer on one big cushion: brand block plus columns of links, with an optional bottom note",
|
|
117
|
+
props: [{ name: "brand", type: "ReactNode", required: true }],
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: "Freshness",
|
|
121
|
+
entry: "index",
|
|
122
|
+
purpose: "Speaks only when the data on screen can no longer be trusted",
|
|
123
|
+
props: [
|
|
124
|
+
{ name: "at", type: "number", required: true },
|
|
125
|
+
{ name: "isError", required: false },
|
|
126
|
+
],
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
name: "Grid",
|
|
130
|
+
entry: "index",
|
|
131
|
+
purpose: "Lays children out in columns, or main plus side, stacking on narrow screens",
|
|
132
|
+
props: [
|
|
133
|
+
{ name: "cols", values: ["2", "3", "4", "sidebar"], required: false },
|
|
134
|
+
{ name: "gap", values: ["1", "2", "3", "4", "5", "6"], required: false },
|
|
135
|
+
],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
name: "Heading",
|
|
139
|
+
entry: "index",
|
|
140
|
+
purpose: "A page or section heading at level 1, 2 or 3",
|
|
141
|
+
props: [{ name: "level", values: ["1", "2", "3"], required: false }],
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
name: "Highlight",
|
|
145
|
+
entry: "index",
|
|
146
|
+
purpose: "Puts a tonal swatch behind a word or short phrase to make it pop",
|
|
147
|
+
props: [{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false }],
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: "Icon",
|
|
151
|
+
entry: "index",
|
|
152
|
+
purpose: "A named glyph from the built-in icon set",
|
|
153
|
+
props: [
|
|
154
|
+
{
|
|
155
|
+
name: "name",
|
|
156
|
+
values: [
|
|
157
|
+
"up",
|
|
158
|
+
"down",
|
|
159
|
+
"warn",
|
|
160
|
+
"info",
|
|
161
|
+
"idle",
|
|
162
|
+
"overview",
|
|
163
|
+
"chart",
|
|
164
|
+
"log",
|
|
165
|
+
"channels",
|
|
166
|
+
"activity",
|
|
167
|
+
"lab",
|
|
168
|
+
"history",
|
|
169
|
+
"performance",
|
|
170
|
+
"settings",
|
|
171
|
+
"database",
|
|
172
|
+
"menu",
|
|
173
|
+
"flat",
|
|
174
|
+
"ok",
|
|
175
|
+
"fail",
|
|
176
|
+
"off",
|
|
177
|
+
"live",
|
|
178
|
+
"draft",
|
|
179
|
+
"target",
|
|
180
|
+
"alerts",
|
|
181
|
+
"add",
|
|
182
|
+
"remove",
|
|
183
|
+
"search",
|
|
184
|
+
"close",
|
|
185
|
+
"expand",
|
|
186
|
+
"prev",
|
|
187
|
+
"next",
|
|
188
|
+
"photo",
|
|
189
|
+
"heart",
|
|
190
|
+
"heart-filled",
|
|
191
|
+
"comment",
|
|
192
|
+
"play",
|
|
193
|
+
"pause",
|
|
194
|
+
"rewind",
|
|
195
|
+
"forward",
|
|
196
|
+
"sun",
|
|
197
|
+
"cloud",
|
|
198
|
+
"rain",
|
|
199
|
+
"star",
|
|
200
|
+
"calendar",
|
|
201
|
+
"clock",
|
|
202
|
+
"user",
|
|
203
|
+
"users",
|
|
204
|
+
"mail",
|
|
205
|
+
"lock",
|
|
206
|
+
"send",
|
|
207
|
+
"home",
|
|
208
|
+
"trophy",
|
|
209
|
+
"flame",
|
|
210
|
+
"sparkle",
|
|
211
|
+
"music",
|
|
212
|
+
"cart",
|
|
213
|
+
"tag",
|
|
214
|
+
"dots",
|
|
215
|
+
"sword",
|
|
216
|
+
"shield",
|
|
217
|
+
"wand",
|
|
218
|
+
"smile",
|
|
219
|
+
"card",
|
|
220
|
+
"pin",
|
|
221
|
+
"wind",
|
|
222
|
+
"drop",
|
|
223
|
+
],
|
|
224
|
+
required: true,
|
|
225
|
+
},
|
|
226
|
+
{ name: "size", values: ["sm", "md", "lg"], required: false },
|
|
227
|
+
],
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
name: "IconButton",
|
|
231
|
+
entry: "index",
|
|
232
|
+
purpose: "A square, labelled icon action",
|
|
233
|
+
props: [
|
|
234
|
+
{ name: "icon", type: "ReactNode", required: true },
|
|
235
|
+
{ name: "label", type: "string", required: true },
|
|
236
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
237
|
+
{ name: "size", values: ["sm", "md", "lg"], required: false },
|
|
238
|
+
{ name: "variant", values: ["solid", "quiet"], required: false },
|
|
239
|
+
{ name: "disabled", required: false },
|
|
240
|
+
{ name: "loading", required: false },
|
|
241
|
+
{ name: "type", values: ["button", "submit"], required: false },
|
|
242
|
+
],
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
name: "Input",
|
|
246
|
+
entry: "index",
|
|
247
|
+
purpose: "A single-line text field; wrap it in Field for its label",
|
|
248
|
+
props: [
|
|
249
|
+
{ name: "value", type: "string", required: true },
|
|
250
|
+
{ name: "onChange", type: "(value: string) => void", required: true },
|
|
251
|
+
{ name: "inputMode", values: ["search", "none", "email", "tel", "text", "url", "numeric", "decimal"], required: false },
|
|
252
|
+
{ name: "spellCheck", required: false },
|
|
253
|
+
{ name: "required", required: false },
|
|
254
|
+
{ name: "mono", required: false },
|
|
255
|
+
{ name: "invalid", required: false },
|
|
256
|
+
{ name: "disabled", required: false },
|
|
257
|
+
{ name: "bare", required: false },
|
|
258
|
+
],
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
name: "Metric",
|
|
262
|
+
entry: "index",
|
|
263
|
+
purpose: "A labelled readout: small muted label, value beneath",
|
|
264
|
+
props: [
|
|
265
|
+
{ name: "label", type: "string", required: true },
|
|
266
|
+
{ name: "value", type: "ReactNode", required: true },
|
|
267
|
+
{ name: "num", required: false },
|
|
268
|
+
{ name: "mono", required: false },
|
|
269
|
+
],
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
name: "ModeBanner",
|
|
273
|
+
entry: "index",
|
|
274
|
+
purpose: "The draft/live (or any two-mode) indicator",
|
|
275
|
+
props: [{ name: "live", required: true }],
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
name: "NavLink",
|
|
279
|
+
entry: "index",
|
|
280
|
+
purpose: "A navigation link that marks itself active on the current path",
|
|
281
|
+
props: [
|
|
282
|
+
{ name: "href", type: "string", required: true },
|
|
283
|
+
{ name: "currentPath", type: "string", required: true },
|
|
284
|
+
{ name: "icon", type: "IconLike", required: true },
|
|
285
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
286
|
+
],
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
name: "Navbar",
|
|
290
|
+
entry: "index",
|
|
291
|
+
purpose: "A top navigation bar on a floating cushion",
|
|
292
|
+
props: [{ name: "brand", type: "ReactNode", required: true }],
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
name: "NumberInput",
|
|
296
|
+
entry: "index",
|
|
297
|
+
purpose: "A numeric field with step buttons; wrap it in Field for its label",
|
|
298
|
+
props: [
|
|
299
|
+
{ name: "value", type: "string", required: true },
|
|
300
|
+
{ name: "onChange", type: "(value: string) => void", required: true },
|
|
301
|
+
{ name: "invalid", required: false },
|
|
302
|
+
{ name: "disabled", required: false },
|
|
303
|
+
],
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
name: "Pagination",
|
|
307
|
+
entry: "index",
|
|
308
|
+
purpose: "Previous and next page controls with a page indicator for long lists",
|
|
309
|
+
props: [
|
|
310
|
+
{ name: "page", type: "number", required: true },
|
|
311
|
+
{ name: "total", type: "number", required: true },
|
|
312
|
+
{ name: "onChange", type: "(page: number) => void", required: true },
|
|
313
|
+
],
|
|
314
|
+
},
|
|
315
|
+
{
|
|
316
|
+
name: "Row",
|
|
317
|
+
entry: "index",
|
|
318
|
+
purpose: "Lays children out horizontally with a gap, alignment and wrapping",
|
|
319
|
+
props: [
|
|
320
|
+
{ name: "gap", values: ["1", "2", "3", "4", "5", "6"], required: false },
|
|
321
|
+
{ name: "align", values: ["center", "top"], required: false },
|
|
322
|
+
{ name: "justify", values: ["start", "center", "between", "end"], required: false },
|
|
323
|
+
{ name: "wrap", required: false },
|
|
324
|
+
],
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
name: "RowCard",
|
|
328
|
+
entry: "index",
|
|
329
|
+
purpose: "One raised row per item in a list; clickable when given onClick",
|
|
330
|
+
props: [{ name: "selected", required: false }],
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
name: "Segmented",
|
|
334
|
+
entry: "index",
|
|
335
|
+
purpose: "A mutually-exclusive choice: grid vs list, draft vs live, and similar",
|
|
336
|
+
props: [
|
|
337
|
+
{ name: "value", type: "T", required: true },
|
|
338
|
+
{ name: "onChange", type: "(value: T) => void", required: true },
|
|
339
|
+
{ name: "options", type: "SegmentedOption<T>[]", required: true },
|
|
340
|
+
{ name: "label", type: "string", required: true },
|
|
341
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
342
|
+
],
|
|
343
|
+
},
|
|
344
|
+
{ name: "Shell", entry: "index", purpose: "The page frame: a sidebar column beside the main content", props: [] },
|
|
345
|
+
{
|
|
346
|
+
name: "Sidebar",
|
|
347
|
+
entry: "index",
|
|
348
|
+
purpose: "The side navigation column inside Shell",
|
|
349
|
+
props: [{ name: "mobile", values: ["show", "hide"], required: false }],
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
name: "Skeleton",
|
|
353
|
+
entry: "index",
|
|
354
|
+
purpose: "A loading placeholder shaped like the text, row or card it stands in for",
|
|
355
|
+
props: [{ name: "variant", values: ["text", "row", "card"], required: false }],
|
|
356
|
+
},
|
|
357
|
+
{ name: "Spacer", entry: "index", purpose: "Pushes the items after it to the far end of a Row", props: [] },
|
|
358
|
+
{
|
|
359
|
+
name: "Stack",
|
|
360
|
+
entry: "index",
|
|
361
|
+
purpose: "Stacks children vertically with an even gap",
|
|
362
|
+
props: [{ name: "gap", values: ["1", "2", "3", "4", "5", "6"], required: false }],
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
name: "Stat",
|
|
366
|
+
entry: "index",
|
|
367
|
+
purpose: "A headline figure on its own cushion",
|
|
368
|
+
props: [
|
|
369
|
+
{ name: "label", type: "string", required: true },
|
|
370
|
+
{ name: "value", type: "string", required: true },
|
|
371
|
+
{ name: "icon", type: "IconLike", required: true },
|
|
372
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: true },
|
|
373
|
+
],
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
name: "Status",
|
|
377
|
+
entry: "index",
|
|
378
|
+
purpose: "A labelled status dot that turns unknown when its reading goes stale",
|
|
379
|
+
props: [
|
|
380
|
+
{ name: "label", type: "string", required: true },
|
|
381
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: true },
|
|
382
|
+
],
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
name: "Table",
|
|
386
|
+
entry: "index",
|
|
387
|
+
purpose: "A data table with typed columns; rows can be clickable",
|
|
388
|
+
props: [
|
|
389
|
+
{ name: "columns", type: "TableColumn<T>[]", required: true },
|
|
390
|
+
{ name: "rows", type: "T[]", required: true },
|
|
391
|
+
{ name: "getKey", type: "(row: T) => string", required: true },
|
|
392
|
+
],
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
name: "Text",
|
|
396
|
+
entry: "index",
|
|
397
|
+
purpose: "Body text: size, muted, numeric and monospace variants",
|
|
398
|
+
props: [
|
|
399
|
+
{ name: "size", values: ["sm", "md"], required: false },
|
|
400
|
+
{ name: "muted", required: false },
|
|
401
|
+
{ name: "num", required: false },
|
|
402
|
+
{ name: "mono", required: false },
|
|
403
|
+
{ name: "truncate", required: false },
|
|
404
|
+
],
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
name: "Textarea",
|
|
408
|
+
entry: "index",
|
|
409
|
+
purpose: "A multi-line text field; wrap it in Field for its label",
|
|
410
|
+
props: [
|
|
411
|
+
{ name: "value", type: "string", required: true },
|
|
412
|
+
{ name: "onChange", type: "(value: string) => void", required: true },
|
|
413
|
+
{ name: "spellCheck", required: false },
|
|
414
|
+
{ name: "required", required: false },
|
|
415
|
+
{ name: "mono", required: false },
|
|
416
|
+
{ name: "invalid", required: false },
|
|
417
|
+
{ name: "disabled", required: false },
|
|
418
|
+
],
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
name: "Accordion",
|
|
422
|
+
entry: "interactive",
|
|
423
|
+
purpose: "A stack of expandable sections with one open at a time",
|
|
424
|
+
props: [{ name: "items", type: "AccordionItem[]", required: true }],
|
|
425
|
+
},
|
|
426
|
+
{ name: "AspectRatio", entry: "interactive", purpose: "Holds media at a fixed width-to-height ratio", props: [] },
|
|
427
|
+
{
|
|
428
|
+
name: "Avatar",
|
|
429
|
+
entry: "interactive",
|
|
430
|
+
purpose: "A person's picture, with initials or an icon when there is none",
|
|
431
|
+
props: [
|
|
432
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
433
|
+
{ name: "size", values: ["sm", "md", "lg"], required: false },
|
|
434
|
+
],
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
name: "BottomNav",
|
|
438
|
+
entry: "interactive",
|
|
439
|
+
purpose: "Mobile bottom navigation",
|
|
440
|
+
props: [
|
|
441
|
+
{ name: "primary", type: "NavItem[]", required: true },
|
|
442
|
+
{ name: "groups", type: "NavGroup[]", required: true },
|
|
443
|
+
{ name: "currentPath", type: "string", required: true },
|
|
444
|
+
],
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
name: "Checkbox",
|
|
448
|
+
entry: "interactive",
|
|
449
|
+
purpose: "A labelled on/off checkbox",
|
|
450
|
+
props: [
|
|
451
|
+
{ name: "checked", type: 'boolean | "indeterminate"', required: true },
|
|
452
|
+
{ name: "onChange", type: '(checked: boolean | "indeterminate") => void', required: true },
|
|
453
|
+
{ name: "disabled", required: false },
|
|
454
|
+
{ name: "hideLabel", required: false },
|
|
455
|
+
],
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
name: "Collapsible",
|
|
459
|
+
entry: "interactive",
|
|
460
|
+
purpose: "A single section that shows or hides its content from a trigger",
|
|
461
|
+
props: [
|
|
462
|
+
{ name: "trigger", type: "ReactNode", required: true },
|
|
463
|
+
{ name: "open", required: false },
|
|
464
|
+
],
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
name: "Combobox",
|
|
468
|
+
entry: "interactive",
|
|
469
|
+
purpose: "A text field with suggestions: pick from the list or type a new value",
|
|
470
|
+
props: [
|
|
471
|
+
{ name: "value", type: "string", required: true },
|
|
472
|
+
{ name: "onChange", type: "(value: string) => void", required: true },
|
|
473
|
+
{ name: "options", type: "string[]", required: true },
|
|
474
|
+
{ name: "loading", required: false },
|
|
475
|
+
{ name: "mono", required: false },
|
|
476
|
+
],
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
name: "Confirm",
|
|
480
|
+
entry: "interactive",
|
|
481
|
+
purpose: "Asks the person to confirm before an irreversible action such as a delete",
|
|
482
|
+
props: [
|
|
483
|
+
{ name: "title", type: "string", required: true },
|
|
484
|
+
{ name: "body", type: "string", required: true },
|
|
485
|
+
{ name: "confirmLabel", type: "string", required: true },
|
|
486
|
+
{ name: "cancelLabel", type: "string", required: true },
|
|
487
|
+
{ name: "onConfirm", type: "() => void", required: true },
|
|
488
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
489
|
+
{ name: "loading", required: false },
|
|
490
|
+
],
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
name: "ContextMenu",
|
|
494
|
+
entry: "interactive",
|
|
495
|
+
purpose: "A menu of actions that opens on right-click or long-press",
|
|
496
|
+
props: [{ name: "items", type: '(MenuEntry | "separator")[]', required: true }],
|
|
497
|
+
},
|
|
498
|
+
{
|
|
499
|
+
name: "Dialog",
|
|
500
|
+
entry: "interactive",
|
|
501
|
+
purpose: "A modal window for a focused task or form",
|
|
502
|
+
props: [
|
|
503
|
+
{ name: "trigger", type: "ReactNode", required: true },
|
|
504
|
+
{ name: "title", type: "string", required: true },
|
|
505
|
+
{ name: "open", required: false },
|
|
506
|
+
{ name: "size", values: ["md", "lg"], required: false },
|
|
507
|
+
],
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
name: "DropdownMenu",
|
|
511
|
+
entry: "interactive",
|
|
512
|
+
purpose: "A menu of actions that opens from a trigger button",
|
|
513
|
+
props: [{ name: "items", type: '("separator" | MenuItem)[]', required: true }],
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
name: "HoverCard",
|
|
517
|
+
entry: "interactive",
|
|
518
|
+
purpose: "A preview card that appears on hover over its trigger",
|
|
519
|
+
props: [
|
|
520
|
+
{ name: "content", type: "ReactNode", required: true },
|
|
521
|
+
{ name: "side", values: ["top", "right", "bottom", "left"], required: false },
|
|
522
|
+
{ name: "align", values: ["start", "center", "end"], required: false },
|
|
523
|
+
],
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
name: "Menubar",
|
|
527
|
+
entry: "interactive",
|
|
528
|
+
purpose: "An application menu bar (File / Edit / View…)",
|
|
529
|
+
props: [{ name: "menus", type: "MenubarMenu[]", required: true }],
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
name: "Progress",
|
|
533
|
+
entry: "interactive",
|
|
534
|
+
purpose: "A progress bar for a value out of a maximum",
|
|
535
|
+
props: [
|
|
536
|
+
{ name: "value", type: "number", required: true },
|
|
537
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
538
|
+
],
|
|
539
|
+
},
|
|
540
|
+
{
|
|
541
|
+
name: "RadioGroup",
|
|
542
|
+
entry: "interactive",
|
|
543
|
+
purpose: "A labelled set of options where exactly one is chosen",
|
|
544
|
+
props: [
|
|
545
|
+
{ name: "value", type: "string", required: true },
|
|
546
|
+
{ name: "onChange", type: "(value: string) => void", required: true },
|
|
547
|
+
{ name: "options", type: "RadioOption[]", required: true },
|
|
548
|
+
{ name: "label", type: "string", required: true },
|
|
549
|
+
{ name: "disabled", required: false },
|
|
550
|
+
],
|
|
551
|
+
},
|
|
552
|
+
{ name: "ScrollArea", entry: "interactive", purpose: "A fixed-height region that scrolls its own content", props: [] },
|
|
553
|
+
{
|
|
554
|
+
name: "Select",
|
|
555
|
+
entry: "interactive",
|
|
556
|
+
purpose: "A dropdown for picking one option from a list",
|
|
557
|
+
props: [
|
|
558
|
+
{ name: "value", type: "string", required: true },
|
|
559
|
+
{ name: "onChange", type: "(value: string) => void", required: true },
|
|
560
|
+
{ name: "options", type: "SelectOption[]", required: true },
|
|
561
|
+
{ name: "disabled", required: false },
|
|
562
|
+
],
|
|
563
|
+
},
|
|
564
|
+
{ name: "Separator", entry: "interactive", purpose: "A thin divider line between groups of content", props: [] },
|
|
565
|
+
{
|
|
566
|
+
name: "Sheet",
|
|
567
|
+
entry: "interactive",
|
|
568
|
+
purpose: "A panel that slides in from the side for secondary tasks",
|
|
569
|
+
props: [
|
|
570
|
+
{ name: "title", type: "string", required: true },
|
|
571
|
+
{ name: "open", required: false },
|
|
572
|
+
],
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
name: "Slider",
|
|
576
|
+
entry: "interactive",
|
|
577
|
+
purpose: "Picks a number in a range by dragging",
|
|
578
|
+
props: [
|
|
579
|
+
{ name: "value", type: "number[]", required: true },
|
|
580
|
+
{ name: "onChange", type: "(value: number[]) => void", required: true },
|
|
581
|
+
{ name: "disabled", required: false },
|
|
582
|
+
],
|
|
583
|
+
},
|
|
584
|
+
{
|
|
585
|
+
name: "Switch",
|
|
586
|
+
entry: "interactive",
|
|
587
|
+
purpose: "A labelled on/off toggle for a setting that applies at once",
|
|
588
|
+
props: [
|
|
589
|
+
{ name: "checked", required: true },
|
|
590
|
+
{ name: "onChange", type: "(checked: boolean) => void", required: true },
|
|
591
|
+
{ name: "disabled", required: false },
|
|
592
|
+
],
|
|
593
|
+
},
|
|
594
|
+
{
|
|
595
|
+
name: "Tabs",
|
|
596
|
+
entry: "interactive",
|
|
597
|
+
purpose: "Switches between panels of content under one heading",
|
|
598
|
+
props: [
|
|
599
|
+
{ name: "tabs", type: "Tab[]", required: true },
|
|
600
|
+
{ name: "value", type: "string", required: true },
|
|
601
|
+
{ name: "onChange", type: "(value: string) => void", required: true },
|
|
602
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
603
|
+
],
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
name: "Toast",
|
|
607
|
+
entry: "interactive",
|
|
608
|
+
purpose: "One alert message with a severity and a dismiss button",
|
|
609
|
+
props: [
|
|
610
|
+
{ name: "id", type: "number", required: true },
|
|
611
|
+
{ name: "severity", values: ["critical", "info"], required: true },
|
|
612
|
+
{ name: "onDismiss", type: "(id: number) => void", required: true },
|
|
613
|
+
],
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
name: "ToastViewport",
|
|
617
|
+
entry: "interactive",
|
|
618
|
+
purpose: "Renders a list of alert messages your app keeps in state",
|
|
619
|
+
props: [
|
|
620
|
+
{ name: "toasts", type: "ToastItem[]", required: true },
|
|
621
|
+
{ name: "onDismiss", type: "(id: number) => void", required: true },
|
|
622
|
+
],
|
|
623
|
+
},
|
|
624
|
+
{ name: "Toaster", entry: "interactive", purpose: "Mount once in the app so toast() calls appear on screen", props: [] },
|
|
625
|
+
{
|
|
626
|
+
name: "ToggleGroup",
|
|
627
|
+
entry: "interactive",
|
|
628
|
+
purpose: "A row of toggle buttons where several can be on at once",
|
|
629
|
+
props: [
|
|
630
|
+
{ name: "value", type: "string[]", required: true },
|
|
631
|
+
{ name: "onChange", type: "(value: string[]) => void", required: true },
|
|
632
|
+
{ name: "options", type: "ToggleOption[]", required: true },
|
|
633
|
+
{ name: "label", type: "string", required: true },
|
|
634
|
+
{ name: "tone", values: ["up", "down", "warn", "info", "idle", "purple", "orange"], required: false },
|
|
635
|
+
],
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
name: "Tooltip",
|
|
639
|
+
entry: "interactive",
|
|
640
|
+
purpose: "A short hint on hover or focus; needs a TooltipProvider above it",
|
|
641
|
+
props: [{ name: "tip", type: "string", required: true }],
|
|
642
|
+
},
|
|
643
|
+
{ name: "TooltipProvider", entry: "interactive", purpose: "Wrap the app once; every Tooltip must sit inside it", props: [] },
|
|
644
|
+
{
|
|
645
|
+
name: "AreaChart",
|
|
646
|
+
entry: "charts",
|
|
647
|
+
purpose: "An area chart of one or more series over a category axis",
|
|
648
|
+
props: [
|
|
649
|
+
{ name: "data", type: "Record<string, unknown>[]", required: true },
|
|
650
|
+
{ name: "dataKey", type: "string", required: true },
|
|
651
|
+
{ name: "series", type: "ChartSeries[]", required: true },
|
|
652
|
+
{ name: "stacked", required: false },
|
|
653
|
+
],
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
name: "BarChart",
|
|
657
|
+
entry: "charts",
|
|
658
|
+
purpose: "A bar chart of one or more series, optionally stacked",
|
|
659
|
+
props: [
|
|
660
|
+
{ name: "data", type: "Record<string, unknown>[]", required: true },
|
|
661
|
+
{ name: "dataKey", type: "string", required: true },
|
|
662
|
+
{ name: "series", type: "ChartSeries[]", required: true },
|
|
663
|
+
{ name: "stacked", required: false },
|
|
664
|
+
],
|
|
665
|
+
},
|
|
666
|
+
{
|
|
667
|
+
name: "LineChart",
|
|
668
|
+
entry: "charts",
|
|
669
|
+
purpose: "A line chart of one or more series over a category axis",
|
|
670
|
+
props: [
|
|
671
|
+
{ name: "data", type: "Record<string, unknown>[]", required: true },
|
|
672
|
+
{ name: "dataKey", type: "string", required: true },
|
|
673
|
+
{ name: "series", type: "ChartSeries[]", required: true },
|
|
674
|
+
],
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
name: "PieChart",
|
|
678
|
+
entry: "charts",
|
|
679
|
+
purpose: "A pie or donut chart of parts of a whole",
|
|
680
|
+
props: [
|
|
681
|
+
{ name: "data", type: "PieSlice[]", required: true },
|
|
682
|
+
{ name: "donut", required: false },
|
|
683
|
+
{ name: "labelled", required: false },
|
|
684
|
+
],
|
|
685
|
+
},
|
|
686
|
+
];
|
|
687
|
+
export const POUF_COMPONENT_NAMES = {
|
|
688
|
+
index: [
|
|
689
|
+
"AlertBell",
|
|
690
|
+
"Badge",
|
|
691
|
+
"Blob",
|
|
692
|
+
"Breadcrumb",
|
|
693
|
+
"Button",
|
|
694
|
+
"CTA",
|
|
695
|
+
"Card",
|
|
696
|
+
"Dot",
|
|
697
|
+
"Empty",
|
|
698
|
+
"ErrorBoundary",
|
|
699
|
+
"ErrorNote",
|
|
700
|
+
"Eyebrow",
|
|
701
|
+
"Field",
|
|
702
|
+
"Figure",
|
|
703
|
+
"Footer",
|
|
704
|
+
"Freshness",
|
|
705
|
+
"Grid",
|
|
706
|
+
"Heading",
|
|
707
|
+
"Highlight",
|
|
708
|
+
"Icon",
|
|
709
|
+
"IconButton",
|
|
710
|
+
"Input",
|
|
711
|
+
"Metric",
|
|
712
|
+
"ModeBanner",
|
|
713
|
+
"NavLink",
|
|
714
|
+
"Navbar",
|
|
715
|
+
"NumberInput",
|
|
716
|
+
"Pagination",
|
|
717
|
+
"Row",
|
|
718
|
+
"RowCard",
|
|
719
|
+
"Segmented",
|
|
720
|
+
"Shell",
|
|
721
|
+
"Sidebar",
|
|
722
|
+
"Skeleton",
|
|
723
|
+
"Spacer",
|
|
724
|
+
"Stack",
|
|
725
|
+
"Stat",
|
|
726
|
+
"Status",
|
|
727
|
+
"Table",
|
|
728
|
+
"Text",
|
|
729
|
+
"Textarea",
|
|
730
|
+
],
|
|
731
|
+
interactive: [
|
|
732
|
+
"Accordion",
|
|
733
|
+
"AspectRatio",
|
|
734
|
+
"Avatar",
|
|
735
|
+
"BottomNav",
|
|
736
|
+
"Checkbox",
|
|
737
|
+
"Collapsible",
|
|
738
|
+
"Combobox",
|
|
739
|
+
"Confirm",
|
|
740
|
+
"ContextMenu",
|
|
741
|
+
"Dialog",
|
|
742
|
+
"DropdownMenu",
|
|
743
|
+
"HoverCard",
|
|
744
|
+
"Menubar",
|
|
745
|
+
"Progress",
|
|
746
|
+
"RadioGroup",
|
|
747
|
+
"ScrollArea",
|
|
748
|
+
"Select",
|
|
749
|
+
"Separator",
|
|
750
|
+
"Sheet",
|
|
751
|
+
"Slider",
|
|
752
|
+
"Switch",
|
|
753
|
+
"Tabs",
|
|
754
|
+
"Toast",
|
|
755
|
+
"ToastViewport",
|
|
756
|
+
"Toaster",
|
|
757
|
+
"ToggleGroup",
|
|
758
|
+
"Tooltip",
|
|
759
|
+
"TooltipProvider",
|
|
760
|
+
],
|
|
761
|
+
charts: ["AreaChart", "BarChart", "LineChart", "PieChart"],
|
|
762
|
+
};
|
|
763
|
+
export const POUF_CATALOG_MD = '- `AlertBell` (`@vibes.diy/pouf`) — A bell button with an unread count that opens the session\'s alert history. Props: `alerts` (required) AlertBellItem[]; `unread` (required) number; `connected` (required); `onOpen` (required) () => void\n- `Badge` (`@vibes.diy/pouf`) — A small tonal label for a count, category or state. Props: `tone` up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Blob` (`@vibes.diy/pouf`) — A tonal icon tile that fronts a stat, list row or feature. Props: `icon` (required) IconLike; `tone` up|down|warn|info|idle|purple (lead)|orange (decorative); `size` sm|md|lg\n- `Breadcrumb` (`@vibes.diy/pouf`) — Shows where the current page sits in a hierarchy, with links back up. Props: `items` (required) BreadcrumbItem[]\n- `Button` (`@vibes.diy/pouf`) — The action button; give one primary action per area. Props: `tone` up|down|warn|info|idle|purple (lead)|orange (decorative); `size` sm|md|lg; `variant` solid|quiet; `block`; `disabled`; `loading`; `type` button|submit\n- `CTA` (`@vibes.diy/pouf`) — A call-to-action banner: a big tonal cushion with a headline and an action. Props: `title` (required) string; `action` (required) ReactNode; `tone` purple (lead)|pink|blue|mint|yellow|surface\n- `Card` (`@vibes.diy/pouf`) — The raised surface that groups related content into a panel. Props: `variant` default|flush|tight; `motion` none|lift|tilt-left|tilt-right\n- `Dot` (`@vibes.diy/pouf`) — A status dot. Props: `tone` up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Empty` (`@vibes.diy/pouf`) — The empty state for a list or panel with nothing in it yet. Props: `title` (required) string\n- `ErrorBoundary` (`@vibes.diy/pouf`) — Catches render crashes so one broken part can\'t blank the whole page. Props: `name` (required) string\n- `ErrorNote` (`@vibes.diy/pouf`) — An inline message that says a request or action failed.\n- `Eyebrow` (`@vibes.diy/pouf`) — A small uppercase label above a section heading.\n- `Field` (`@vibes.diy/pouf`) — Wraps a form control with its label, hint and error text. Props: `label` (required) string; `children` (required) (id: string, describedBy: string | undefined) => ReactNode\n- `Figure` (`@vibes.diy/pouf`) — An image, framed in clay. Props: `src` (required) string; `alt` (required) string; `width` (required) number; `height` (required) number\n- `Footer` (`@vibes.diy/pouf`) — A site footer on one big cushion: brand block plus columns of links, with an optional bottom note. Props: `brand` (required) ReactNode\n- `Freshness` (`@vibes.diy/pouf`) — Speaks only when the data on screen can no longer be trusted. Props: `at` (required) number; `isError`\n- `Grid` (`@vibes.diy/pouf`) — Lays children out in columns, or main plus side, stacking on narrow screens. Props: `cols` 2|3|4|sidebar; `gap` 1|2|3|4|5|6\n- `Heading` (`@vibes.diy/pouf`) — A page or section heading at level 1, 2 or 3. Props: `level` 1|2|3\n- `Highlight` (`@vibes.diy/pouf`) — Puts a tonal swatch behind a word or short phrase to make it pop. Props: `tone` up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Icon` (`@vibes.diy/pouf`) — A named glyph from the built-in icon set. Props: `name` (required) up|down|warn|info|idle|overview|chart|log|channels|activity|lab|history|performance|settings|database|menu|flat|ok|fail|off|live|draft|target|alerts|add|remove|search|close|expand|prev|next|photo|heart|heart-filled|comment|play|pause|rewind|forward|sun|cloud|rain|star|calendar|clock|user|users|mail|lock|send|home|trophy|flame|sparkle|music|cart|tag|dots|sword|shield|wand|smile|card|pin|wind|drop; `size` sm|md|lg\n- `IconButton` (`@vibes.diy/pouf`) — A square, labelled icon action. Props: `icon` (required) ReactNode; `label` (required) string; `tone` up|down|warn|info|idle|purple (lead)|orange (decorative); `size` sm|md|lg; `variant` solid|quiet; `disabled`; `loading`; `type` button|submit\n- `Input` (`@vibes.diy/pouf`) — A single-line text field; wrap it in Field for its label. Props: `value` (required) string; `onChange` (required) (value: string) => void; `inputMode` search|none|email|tel|text|url|numeric|decimal; `spellCheck`; `required`; `mono`; `invalid`; `disabled`; `bare`\n- `Metric` (`@vibes.diy/pouf`) — A labelled readout: small muted label, value beneath. Props: `label` (required) string; `value` (required) ReactNode; `num`; `mono`\n- `ModeBanner` (`@vibes.diy/pouf`) — The draft/live (or any two-mode) indicator. Props: `live` (required)\n- `NavLink` (`@vibes.diy/pouf`) — A navigation link that marks itself active on the current path. Props: `href` (required) string; `currentPath` (required) string; `icon` (required) IconLike; `tone` up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Navbar` (`@vibes.diy/pouf`) — A top navigation bar on a floating cushion. Props: `brand` (required) ReactNode\n- `NumberInput` (`@vibes.diy/pouf`) — A numeric field with step buttons; wrap it in Field for its label. Props: `value` (required) string; `onChange` (required) (value: string) => void; `invalid`; `disabled`\n- `Pagination` (`@vibes.diy/pouf`) — Previous and next page controls with a page indicator for long lists. Props: `page` (required) number; `total` (required) number; `onChange` (required) (page: number) => void\n- `Row` (`@vibes.diy/pouf`) — Lays children out horizontally with a gap, alignment and wrapping. Props: `gap` 1|2|3|4|5|6; `align` center|top; `justify` start|center|between|end; `wrap`\n- `RowCard` (`@vibes.diy/pouf`) — One raised row per item in a list; clickable when given onClick. Props: `selected`\n- `Segmented` (`@vibes.diy/pouf`) — A mutually-exclusive choice: grid vs list, draft vs live, and similar. Props: `value` (required) T; `onChange` (required) (value: T) => void; `options` (required) SegmentedOption<T>[]; `label` (required) string; `tone` up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Shell` (`@vibes.diy/pouf`) — The page frame: a sidebar column beside the main content.\n- `Sidebar` (`@vibes.diy/pouf`) — The side navigation column inside Shell. Props: `mobile` show|hide\n- `Skeleton` (`@vibes.diy/pouf`) — A loading placeholder shaped like the text, row or card it stands in for. Props: `variant` text|row|card\n- `Spacer` (`@vibes.diy/pouf`) — Pushes the items after it to the far end of a Row.\n- `Stack` (`@vibes.diy/pouf`) — Stacks children vertically with an even gap. Props: `gap` 1|2|3|4|5|6\n- `Stat` (`@vibes.diy/pouf`) — A headline figure on its own cushion. Props: `label` (required) string; `value` (required) string; `icon` (required) IconLike; `tone` (required) up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Status` (`@vibes.diy/pouf`) — A labelled status dot that turns unknown when its reading goes stale. Props: `label` (required) string; `tone` (required) up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Table` (`@vibes.diy/pouf`) — A data table with typed columns; rows can be clickable. Props: `columns` (required) TableColumn<T>[]; `rows` (required) T[]; `getKey` (required) (row: T) => string\n- `Text` (`@vibes.diy/pouf`) — Body text: size, muted, numeric and monospace variants. Props: `size` sm|md; `muted`; `num`; `mono`; `truncate`\n- `Textarea` (`@vibes.diy/pouf`) — A multi-line text field; wrap it in Field for its label. Props: `value` (required) string; `onChange` (required) (value: string) => void; `spellCheck`; `required`; `mono`; `invalid`; `disabled`\n- `Accordion` (`@vibes.diy/pouf/interactive`) — A stack of expandable sections with one open at a time. Props: `items` (required) AccordionItem[]\n- `AspectRatio` (`@vibes.diy/pouf/interactive`) — Holds media at a fixed width-to-height ratio.\n- `Avatar` (`@vibes.diy/pouf/interactive`) — A person\'s picture, with initials or an icon when there is none. Props: `tone` up|down|warn|info|idle|purple (lead)|orange (decorative); `size` sm|md|lg\n- `BottomNav` (`@vibes.diy/pouf/interactive`) — Mobile bottom navigation. Props: `primary` (required) NavItem[]; `groups` (required) NavGroup[]; `currentPath` (required) string\n- `Checkbox` (`@vibes.diy/pouf/interactive`) — A labelled on/off checkbox. Props: `checked` (required) boolean | "indeterminate"; `onChange` (required) (checked: boolean | "indeterminate") => void; `disabled`; `hideLabel`\n- `Collapsible` (`@vibes.diy/pouf/interactive`) — A single section that shows or hides its content from a trigger. Props: `trigger` (required) ReactNode; `open`\n- `Combobox` (`@vibes.diy/pouf/interactive`) — A text field with suggestions: pick from the list or type a new value. Props: `value` (required) string; `onChange` (required) (value: string) => void; `options` (required) string[]; `loading`; `mono`\n- `Confirm` (`@vibes.diy/pouf/interactive`) — Asks the person to confirm before an irreversible action such as a delete. Props: `title` (required) string; `body` (required) string; `confirmLabel` (required) string; `cancelLabel` (required) string; `onConfirm` (required) () => void; `tone` up|down|warn|info|idle|purple (lead)|orange (decorative); `loading`\n- `ContextMenu` (`@vibes.diy/pouf/interactive`) — A menu of actions that opens on right-click or long-press. Props: `items` (required) (MenuEntry | "separator")[]\n- `Dialog` (`@vibes.diy/pouf/interactive`) — A modal window for a focused task or form. Props: `trigger` (required) ReactNode; `title` (required) string; `open`; `size` md|lg\n- `DropdownMenu` (`@vibes.diy/pouf/interactive`) — A menu of actions that opens from a trigger button. Props: `items` (required) ("separator" | MenuItem)[]\n- `HoverCard` (`@vibes.diy/pouf/interactive`) — A preview card that appears on hover over its trigger. Props: `content` (required) ReactNode; `side` top|right|bottom|left; `align` start|center|end\n- `Menubar` (`@vibes.diy/pouf/interactive`) — An application menu bar (File / Edit / View…). Props: `menus` (required) MenubarMenu[]\n- `Progress` (`@vibes.diy/pouf/interactive`) — A progress bar for a value out of a maximum. Props: `value` (required) number; `tone` up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `RadioGroup` (`@vibes.diy/pouf/interactive`) — A labelled set of options where exactly one is chosen. Props: `value` (required) string; `onChange` (required) (value: string) => void; `options` (required) RadioOption[]; `label` (required) string; `disabled`\n- `ScrollArea` (`@vibes.diy/pouf/interactive`) — A fixed-height region that scrolls its own content.\n- `Select` (`@vibes.diy/pouf/interactive`) — A dropdown for picking one option from a list. Props: `value` (required) string; `onChange` (required) (value: string) => void; `options` (required) SelectOption[]; `disabled`\n- `Separator` (`@vibes.diy/pouf/interactive`) — A thin divider line between groups of content.\n- `Sheet` (`@vibes.diy/pouf/interactive`) — A panel that slides in from the side for secondary tasks. Props: `title` (required) string; `open`\n- `Slider` (`@vibes.diy/pouf/interactive`) — Picks a number in a range by dragging. Props: `value` (required) number[]; `onChange` (required) (value: number[]) => void; `disabled`\n- `Switch` (`@vibes.diy/pouf/interactive`) — A labelled on/off toggle for a setting that applies at once. Props: `checked` (required); `onChange` (required) (checked: boolean) => void; `disabled`\n- `Tabs` (`@vibes.diy/pouf/interactive`) — Switches between panels of content under one heading. Props: `tabs` (required) Tab[]; `value` (required) string; `onChange` (required) (value: string) => void; `tone` up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Toast` (`@vibes.diy/pouf/interactive`) — One alert message with a severity and a dismiss button. Props: `id` (required) number; `severity` (required) critical|info; `onDismiss` (required) (id: number) => void\n- `ToastViewport` (`@vibes.diy/pouf/interactive`) — Renders a list of alert messages your app keeps in state. Props: `toasts` (required) ToastItem[]; `onDismiss` (required) (id: number) => void\n- `Toaster` (`@vibes.diy/pouf/interactive`) — Mount once in the app so toast() calls appear on screen.\n- `ToggleGroup` (`@vibes.diy/pouf/interactive`) — A row of toggle buttons where several can be on at once. Props: `value` (required) string[]; `onChange` (required) (value: string[]) => void; `options` (required) ToggleOption[]; `label` (required) string; `tone` up|down|warn|info|idle|purple (lead)|orange (decorative)\n- `Tooltip` (`@vibes.diy/pouf/interactive`) — A short hint on hover or focus; needs a TooltipProvider above it. Props: `tip` (required) string\n- `TooltipProvider` (`@vibes.diy/pouf/interactive`) — Wrap the app once; every Tooltip must sit inside it.\n- `AreaChart` (`@vibes.diy/pouf/charts`) — An area chart of one or more series over a category axis. Props: `data` (required) Record<string, unknown>[]; `dataKey` (required) string; `series` (required) ChartSeries[]; `stacked`\n- `BarChart` (`@vibes.diy/pouf/charts`) — A bar chart of one or more series, optionally stacked. Props: `data` (required) Record<string, unknown>[]; `dataKey` (required) string; `series` (required) ChartSeries[]; `stacked`\n- `LineChart` (`@vibes.diy/pouf/charts`) — A line chart of one or more series over a category axis. Props: `data` (required) Record<string, unknown>[]; `dataKey` (required) string; `series` (required) ChartSeries[]\n- `PieChart` (`@vibes.diy/pouf/charts`) — A pie or donut chart of parts of a whole. Props: `data` (required) PieSlice[]; `donut`; `labelled`';
|
|
764
|
+
//# sourceMappingURL=catalog.generated.js.map
|