@json-render/shadcn 0.9.1 → 0.10.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/README.md +18 -7
- package/dist/catalog.d.mts +45 -0
- package/dist/catalog.d.ts +45 -0
- package/dist/catalog.js +29 -30
- package/dist/catalog.js.map +1 -1
- package/dist/catalog.mjs +1 -1
- package/dist/{chunk-VZQBPEYT.mjs → chunk-F5LRX6LB.mjs} +30 -31
- package/dist/chunk-F5LRX6LB.mjs.map +1 -0
- package/dist/index.js +99 -63
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +71 -34
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
- package/dist/chunk-VZQBPEYT.mjs.map +0 -1
package/README.md
CHANGED
|
@@ -167,12 +167,12 @@ const { registry } = defineRegistry(catalog, {
|
|
|
167
167
|
|-----------|-------------|
|
|
168
168
|
| `Button` | Clickable button with variants |
|
|
169
169
|
| `Link` | Anchor link |
|
|
170
|
-
| `Input` | Text input with label and
|
|
171
|
-
| `Textarea` | Multi-line text input |
|
|
172
|
-
| `Select` | Dropdown select |
|
|
173
|
-
| `Checkbox` | Checkbox input |
|
|
174
|
-
| `Radio` | Radio button group |
|
|
175
|
-
| `Switch` | Toggle switch |
|
|
170
|
+
| `Input` | Text input with label, validation, and `validateOn` timing |
|
|
171
|
+
| `Textarea` | Multi-line text input with validation and `validateOn` |
|
|
172
|
+
| `Select` | Dropdown select with validation and `validateOn` |
|
|
173
|
+
| `Checkbox` | Checkbox input with validation and `validateOn` |
|
|
174
|
+
| `Radio` | Radio button group with validation and `validateOn` |
|
|
175
|
+
| `Switch` | Toggle switch with validation and `validateOn` |
|
|
176
176
|
| `Slider` | Range slider |
|
|
177
177
|
| `Toggle` | Toggle button |
|
|
178
178
|
| `ToggleGroup` | Group of toggle buttons |
|
|
@@ -180,13 +180,24 @@ const { registry } = defineRegistry(catalog, {
|
|
|
180
180
|
|
|
181
181
|
## Built-in Actions
|
|
182
182
|
|
|
183
|
-
State actions (`setState`, `pushState`, `removeState`) are built into the `@json-render/react` schema and handled automatically by `ActionProvider`. They are included in prompts without needing to be declared in your catalog.
|
|
183
|
+
State actions (`setState`, `pushState`, `removeState`, `validateForm`) are built into the `@json-render/react` schema and handled automatically by `ActionProvider`. They are included in prompts without needing to be declared in your catalog.
|
|
184
184
|
|
|
185
185
|
| Action | Description |
|
|
186
186
|
|--------|-------------|
|
|
187
187
|
| `setState` | Set a value at a state path |
|
|
188
188
|
| `pushState` | Push a value onto an array in state |
|
|
189
189
|
| `removeState` | Remove an item from an array in state |
|
|
190
|
+
| `validateForm` | Validate all fields and write result to state |
|
|
191
|
+
|
|
192
|
+
### Validation Timing (`validateOn`)
|
|
193
|
+
|
|
194
|
+
All form components support the `validateOn` prop to control when validation runs:
|
|
195
|
+
|
|
196
|
+
| Value | Description | Default For |
|
|
197
|
+
|-------|-------------|-------------|
|
|
198
|
+
| `"change"` | Validate on every input change | Select, Checkbox, Radio, Switch |
|
|
199
|
+
| `"blur"` | Validate when field loses focus | Input, Textarea |
|
|
200
|
+
| `"submit"` | Validate only on form submission | — |
|
|
190
201
|
|
|
191
202
|
## Exports
|
|
192
203
|
|
package/dist/catalog.d.mts
CHANGED
|
@@ -311,6 +311,11 @@ declare const shadcnComponentDefinitions: {
|
|
|
311
311
|
message: z.ZodString;
|
|
312
312
|
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
313
313
|
}, z.core.$strip>>>;
|
|
314
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
315
|
+
change: "change";
|
|
316
|
+
blur: "blur";
|
|
317
|
+
submit: "submit";
|
|
318
|
+
}>>;
|
|
314
319
|
}, z.core.$strip>;
|
|
315
320
|
events: string[];
|
|
316
321
|
description: string;
|
|
@@ -333,6 +338,11 @@ declare const shadcnComponentDefinitions: {
|
|
|
333
338
|
message: z.ZodString;
|
|
334
339
|
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
335
340
|
}, z.core.$strip>>>;
|
|
341
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
342
|
+
change: "change";
|
|
343
|
+
blur: "blur";
|
|
344
|
+
submit: "submit";
|
|
345
|
+
}>>;
|
|
336
346
|
}, z.core.$strip>;
|
|
337
347
|
description: string;
|
|
338
348
|
};
|
|
@@ -348,6 +358,11 @@ declare const shadcnComponentDefinitions: {
|
|
|
348
358
|
message: z.ZodString;
|
|
349
359
|
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
350
360
|
}, z.core.$strip>>>;
|
|
361
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
362
|
+
change: "change";
|
|
363
|
+
blur: "blur";
|
|
364
|
+
submit: "submit";
|
|
365
|
+
}>>;
|
|
351
366
|
}, z.core.$strip>;
|
|
352
367
|
events: string[];
|
|
353
368
|
description: string;
|
|
@@ -357,6 +372,16 @@ declare const shadcnComponentDefinitions: {
|
|
|
357
372
|
label: z.ZodString;
|
|
358
373
|
name: z.ZodString;
|
|
359
374
|
checked: z.ZodNullable<z.ZodBoolean>;
|
|
375
|
+
checks: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
376
|
+
type: z.ZodString;
|
|
377
|
+
message: z.ZodString;
|
|
378
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
379
|
+
}, z.core.$strip>>>;
|
|
380
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
381
|
+
change: "change";
|
|
382
|
+
blur: "blur";
|
|
383
|
+
submit: "submit";
|
|
384
|
+
}>>;
|
|
360
385
|
}, z.core.$strip>;
|
|
361
386
|
events: string[];
|
|
362
387
|
description: string;
|
|
@@ -367,6 +392,16 @@ declare const shadcnComponentDefinitions: {
|
|
|
367
392
|
name: z.ZodString;
|
|
368
393
|
options: z.ZodArray<z.ZodString>;
|
|
369
394
|
value: z.ZodNullable<z.ZodString>;
|
|
395
|
+
checks: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
396
|
+
type: z.ZodString;
|
|
397
|
+
message: z.ZodString;
|
|
398
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
399
|
+
}, z.core.$strip>>>;
|
|
400
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
401
|
+
change: "change";
|
|
402
|
+
blur: "blur";
|
|
403
|
+
submit: "submit";
|
|
404
|
+
}>>;
|
|
370
405
|
}, z.core.$strip>;
|
|
371
406
|
events: string[];
|
|
372
407
|
description: string;
|
|
@@ -376,6 +411,16 @@ declare const shadcnComponentDefinitions: {
|
|
|
376
411
|
label: z.ZodString;
|
|
377
412
|
name: z.ZodString;
|
|
378
413
|
checked: z.ZodNullable<z.ZodBoolean>;
|
|
414
|
+
checks: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
415
|
+
type: z.ZodString;
|
|
416
|
+
message: z.ZodString;
|
|
417
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
418
|
+
}, z.core.$strip>>>;
|
|
419
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
420
|
+
change: "change";
|
|
421
|
+
blur: "blur";
|
|
422
|
+
submit: "submit";
|
|
423
|
+
}>>;
|
|
379
424
|
}, z.core.$strip>;
|
|
380
425
|
events: string[];
|
|
381
426
|
description: string;
|
package/dist/catalog.d.ts
CHANGED
|
@@ -311,6 +311,11 @@ declare const shadcnComponentDefinitions: {
|
|
|
311
311
|
message: z.ZodString;
|
|
312
312
|
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
313
313
|
}, z.core.$strip>>>;
|
|
314
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
315
|
+
change: "change";
|
|
316
|
+
blur: "blur";
|
|
317
|
+
submit: "submit";
|
|
318
|
+
}>>;
|
|
314
319
|
}, z.core.$strip>;
|
|
315
320
|
events: string[];
|
|
316
321
|
description: string;
|
|
@@ -333,6 +338,11 @@ declare const shadcnComponentDefinitions: {
|
|
|
333
338
|
message: z.ZodString;
|
|
334
339
|
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
335
340
|
}, z.core.$strip>>>;
|
|
341
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
342
|
+
change: "change";
|
|
343
|
+
blur: "blur";
|
|
344
|
+
submit: "submit";
|
|
345
|
+
}>>;
|
|
336
346
|
}, z.core.$strip>;
|
|
337
347
|
description: string;
|
|
338
348
|
};
|
|
@@ -348,6 +358,11 @@ declare const shadcnComponentDefinitions: {
|
|
|
348
358
|
message: z.ZodString;
|
|
349
359
|
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
350
360
|
}, z.core.$strip>>>;
|
|
361
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
362
|
+
change: "change";
|
|
363
|
+
blur: "blur";
|
|
364
|
+
submit: "submit";
|
|
365
|
+
}>>;
|
|
351
366
|
}, z.core.$strip>;
|
|
352
367
|
events: string[];
|
|
353
368
|
description: string;
|
|
@@ -357,6 +372,16 @@ declare const shadcnComponentDefinitions: {
|
|
|
357
372
|
label: z.ZodString;
|
|
358
373
|
name: z.ZodString;
|
|
359
374
|
checked: z.ZodNullable<z.ZodBoolean>;
|
|
375
|
+
checks: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
376
|
+
type: z.ZodString;
|
|
377
|
+
message: z.ZodString;
|
|
378
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
379
|
+
}, z.core.$strip>>>;
|
|
380
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
381
|
+
change: "change";
|
|
382
|
+
blur: "blur";
|
|
383
|
+
submit: "submit";
|
|
384
|
+
}>>;
|
|
360
385
|
}, z.core.$strip>;
|
|
361
386
|
events: string[];
|
|
362
387
|
description: string;
|
|
@@ -367,6 +392,16 @@ declare const shadcnComponentDefinitions: {
|
|
|
367
392
|
name: z.ZodString;
|
|
368
393
|
options: z.ZodArray<z.ZodString>;
|
|
369
394
|
value: z.ZodNullable<z.ZodString>;
|
|
395
|
+
checks: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
396
|
+
type: z.ZodString;
|
|
397
|
+
message: z.ZodString;
|
|
398
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
399
|
+
}, z.core.$strip>>>;
|
|
400
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
401
|
+
change: "change";
|
|
402
|
+
blur: "blur";
|
|
403
|
+
submit: "submit";
|
|
404
|
+
}>>;
|
|
370
405
|
}, z.core.$strip>;
|
|
371
406
|
events: string[];
|
|
372
407
|
description: string;
|
|
@@ -376,6 +411,16 @@ declare const shadcnComponentDefinitions: {
|
|
|
376
411
|
label: z.ZodString;
|
|
377
412
|
name: z.ZodString;
|
|
378
413
|
checked: z.ZodNullable<z.ZodBoolean>;
|
|
414
|
+
checks: z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
415
|
+
type: z.ZodString;
|
|
416
|
+
message: z.ZodString;
|
|
417
|
+
args: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
418
|
+
}, z.core.$strip>>>;
|
|
419
|
+
validateOn: z.ZodNullable<z.ZodEnum<{
|
|
420
|
+
change: "change";
|
|
421
|
+
blur: "blur";
|
|
422
|
+
submit: "submit";
|
|
423
|
+
}>>;
|
|
379
424
|
}, z.core.$strip>;
|
|
380
425
|
events: string[];
|
|
381
426
|
description: string;
|
package/dist/catalog.js
CHANGED
|
@@ -24,6 +24,14 @@ __export(catalog_exports, {
|
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(catalog_exports);
|
|
26
26
|
var import_zod = require("zod");
|
|
27
|
+
var validationCheckSchema = import_zod.z.array(
|
|
28
|
+
import_zod.z.object({
|
|
29
|
+
type: import_zod.z.string(),
|
|
30
|
+
message: import_zod.z.string(),
|
|
31
|
+
args: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional()
|
|
32
|
+
})
|
|
33
|
+
).nullable();
|
|
34
|
+
var validateOnSchema = import_zod.z.enum(["change", "blur", "submit"]).nullable();
|
|
27
35
|
var shadcnComponentDefinitions = {
|
|
28
36
|
// ==========================================================================
|
|
29
37
|
// Layout Components
|
|
@@ -250,16 +258,11 @@ var shadcnComponentDefinitions = {
|
|
|
250
258
|
type: import_zod.z.enum(["text", "email", "password", "number"]).nullable(),
|
|
251
259
|
placeholder: import_zod.z.string().nullable(),
|
|
252
260
|
value: import_zod.z.string().nullable(),
|
|
253
|
-
checks:
|
|
254
|
-
|
|
255
|
-
type: import_zod.z.string(),
|
|
256
|
-
message: import_zod.z.string(),
|
|
257
|
-
args: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional()
|
|
258
|
-
})
|
|
259
|
-
).nullable()
|
|
261
|
+
checks: validationCheckSchema,
|
|
262
|
+
validateOn: validateOnSchema
|
|
260
263
|
}),
|
|
261
264
|
events: ["submit", "focus", "blur"],
|
|
262
|
-
description: "Text input field. Use { $bindState } on value for two-way binding. Use checks for validation (e.g. required, email, minLength).",
|
|
265
|
+
description: "Text input field. Use { $bindState } on value for two-way binding. Use checks for validation (e.g. required, email, minLength). validateOn controls timing (default: blur).",
|
|
263
266
|
example: {
|
|
264
267
|
label: "Email",
|
|
265
268
|
name: "email",
|
|
@@ -274,15 +277,10 @@ var shadcnComponentDefinitions = {
|
|
|
274
277
|
placeholder: import_zod.z.string().nullable(),
|
|
275
278
|
rows: import_zod.z.number().nullable(),
|
|
276
279
|
value: import_zod.z.string().nullable(),
|
|
277
|
-
checks:
|
|
278
|
-
|
|
279
|
-
type: import_zod.z.string(),
|
|
280
|
-
message: import_zod.z.string(),
|
|
281
|
-
args: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional()
|
|
282
|
-
})
|
|
283
|
-
).nullable()
|
|
280
|
+
checks: validationCheckSchema,
|
|
281
|
+
validateOn: validateOnSchema
|
|
284
282
|
}),
|
|
285
|
-
description: "Multi-line text input. Use { $bindState } on value for binding. Use checks for validation."
|
|
283
|
+
description: "Multi-line text input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: blur)."
|
|
286
284
|
},
|
|
287
285
|
Select: {
|
|
288
286
|
props: import_zod.z.object({
|
|
@@ -291,44 +289,45 @@ var shadcnComponentDefinitions = {
|
|
|
291
289
|
options: import_zod.z.array(import_zod.z.string()),
|
|
292
290
|
placeholder: import_zod.z.string().nullable(),
|
|
293
291
|
value: import_zod.z.string().nullable(),
|
|
294
|
-
checks:
|
|
295
|
-
|
|
296
|
-
type: import_zod.z.string(),
|
|
297
|
-
message: import_zod.z.string(),
|
|
298
|
-
args: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional()
|
|
299
|
-
})
|
|
300
|
-
).nullable()
|
|
292
|
+
checks: validationCheckSchema,
|
|
293
|
+
validateOn: validateOnSchema
|
|
301
294
|
}),
|
|
302
295
|
events: ["change"],
|
|
303
|
-
description: "Dropdown select input. Use { $bindState } on value for binding. Use checks for validation."
|
|
296
|
+
description: "Dropdown select input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change)."
|
|
304
297
|
},
|
|
305
298
|
Checkbox: {
|
|
306
299
|
props: import_zod.z.object({
|
|
307
300
|
label: import_zod.z.string(),
|
|
308
301
|
name: import_zod.z.string(),
|
|
309
|
-
checked: import_zod.z.boolean().nullable()
|
|
302
|
+
checked: import_zod.z.boolean().nullable(),
|
|
303
|
+
checks: validationCheckSchema,
|
|
304
|
+
validateOn: validateOnSchema
|
|
310
305
|
}),
|
|
311
306
|
events: ["change"],
|
|
312
|
-
description: "Checkbox input. Use { $bindState } on checked for binding."
|
|
307
|
+
description: "Checkbox input. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change)."
|
|
313
308
|
},
|
|
314
309
|
Radio: {
|
|
315
310
|
props: import_zod.z.object({
|
|
316
311
|
label: import_zod.z.string(),
|
|
317
312
|
name: import_zod.z.string(),
|
|
318
313
|
options: import_zod.z.array(import_zod.z.string()),
|
|
319
|
-
value: import_zod.z.string().nullable()
|
|
314
|
+
value: import_zod.z.string().nullable(),
|
|
315
|
+
checks: validationCheckSchema,
|
|
316
|
+
validateOn: validateOnSchema
|
|
320
317
|
}),
|
|
321
318
|
events: ["change"],
|
|
322
|
-
description: "Radio button group. Use { $bindState } on value for binding."
|
|
319
|
+
description: "Radio button group. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change)."
|
|
323
320
|
},
|
|
324
321
|
Switch: {
|
|
325
322
|
props: import_zod.z.object({
|
|
326
323
|
label: import_zod.z.string(),
|
|
327
324
|
name: import_zod.z.string(),
|
|
328
|
-
checked: import_zod.z.boolean().nullable()
|
|
325
|
+
checked: import_zod.z.boolean().nullable(),
|
|
326
|
+
checks: validationCheckSchema,
|
|
327
|
+
validateOn: validateOnSchema
|
|
329
328
|
}),
|
|
330
329
|
events: ["change"],
|
|
331
|
-
description: "Toggle switch. Use { $bindState } on checked for binding."
|
|
330
|
+
description: "Toggle switch. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change)."
|
|
332
331
|
},
|
|
333
332
|
Slider: {
|
|
334
333
|
props: import_zod.z.object({
|
package/dist/catalog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/catalog.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// =============================================================================\n// shadcn/ui Component Definitions\n// =============================================================================\n\n/**\n * shadcn/ui component definitions for json-render catalogs.\n *\n * These can be used directly or extended with custom components.\n * All components are built using Radix UI primitives + Tailwind CSS.\n */\nexport const shadcnComponentDefinitions = {\n // ==========================================================================\n // Layout Components\n // ==========================================================================\n\n Card: {\n props: z.object({\n title: z.string().nullable(),\n description: z.string().nullable(),\n maxWidth: z.enum([\"sm\", \"md\", \"lg\", \"full\"]).nullable(),\n centered: z.boolean().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Container card for content sections. Use for forms/content boxes, NOT for page headers.\",\n example: { title: \"Overview\", description: \"Your account summary\" },\n },\n\n Stack: {\n props: z.object({\n direction: z.enum([\"horizontal\", \"vertical\"]).nullable(),\n gap: z.enum([\"none\", \"sm\", \"md\", \"lg\"]).nullable(),\n align: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).nullable(),\n justify: z\n .enum([\"start\", \"center\", \"end\", \"between\", \"around\"])\n .nullable(),\n }),\n slots: [\"default\"],\n description: \"Flex container for layouts\",\n example: { direction: \"vertical\", gap: \"md\" },\n },\n\n Grid: {\n props: z.object({\n columns: z.number().nullable(),\n gap: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n }),\n slots: [\"default\"],\n description: \"Grid layout (1-6 columns)\",\n example: { columns: 3, gap: \"md\" },\n },\n\n Separator: {\n props: z.object({\n orientation: z.enum([\"horizontal\", \"vertical\"]).nullable(),\n }),\n description: \"Visual separator line\",\n },\n\n Tabs: {\n props: z.object({\n tabs: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n defaultValue: z.string().nullable(),\n value: z.string().nullable(),\n }),\n slots: [\"default\"],\n events: [\"change\"],\n description:\n \"Tab navigation. Use { $bindState } on value for active tab binding.\",\n },\n\n Accordion: {\n props: z.object({\n items: z.array(\n z.object({\n title: z.string(),\n content: z.string(),\n }),\n ),\n type: z.enum([\"single\", \"multiple\"]).nullable(),\n }),\n description:\n \"Collapsible sections. Items as [{title, content}]. Type 'single' (default) or 'multiple'.\",\n },\n\n Collapsible: {\n props: z.object({\n title: z.string(),\n defaultOpen: z.boolean().nullable(),\n }),\n slots: [\"default\"],\n description: \"Collapsible section with trigger. Children render inside.\",\n },\n\n Dialog: {\n props: z.object({\n title: z.string(),\n description: z.string().nullable(),\n openPath: z.string(),\n }),\n slots: [\"default\"],\n description:\n \"Modal dialog. Set openPath to a boolean state path. Use setState to toggle.\",\n },\n\n Drawer: {\n props: z.object({\n title: z.string(),\n description: z.string().nullable(),\n openPath: z.string(),\n }),\n slots: [\"default\"],\n description:\n \"Bottom sheet drawer. Set openPath to a boolean state path. Use setState to toggle.\",\n },\n\n Carousel: {\n props: z.object({\n items: z.array(\n z.object({\n title: z.string().nullable(),\n description: z.string().nullable(),\n }),\n ),\n }),\n description: \"Horizontally scrollable carousel of cards.\",\n },\n\n // ==========================================================================\n // Data Display Components\n // ==========================================================================\n\n Table: {\n props: z.object({\n columns: z.array(z.string()),\n rows: z.array(z.array(z.string())),\n caption: z.string().nullable(),\n }),\n description:\n 'Data table. columns: header labels. rows: 2D array of cell strings, e.g. [[\"Alice\",\"admin\"],[\"Bob\",\"user\"]].',\n example: {\n columns: [\"Name\", \"Role\"],\n rows: [\n [\"Alice\", \"Admin\"],\n [\"Bob\", \"User\"],\n ],\n },\n },\n\n Heading: {\n props: z.object({\n text: z.string(),\n level: z.enum([\"h1\", \"h2\", \"h3\", \"h4\"]).nullable(),\n }),\n description: \"Heading text (h1-h4)\",\n example: { text: \"Welcome\", level: \"h1\" },\n },\n\n Text: {\n props: z.object({\n text: z.string(),\n variant: z.enum([\"body\", \"caption\", \"muted\", \"lead\", \"code\"]).nullable(),\n }),\n description: \"Paragraph text\",\n example: { text: \"Hello, world!\" },\n },\n\n Image: {\n props: z.object({\n src: z.string().nullable(),\n alt: z.string(),\n width: z.number().nullable(),\n height: z.number().nullable(),\n }),\n description:\n \"Image component. Renders an img tag when src is provided, otherwise a placeholder.\",\n },\n\n Avatar: {\n props: z.object({\n src: z.string().nullable(),\n name: z.string(),\n size: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n }),\n description: \"User avatar with fallback initials\",\n example: { name: \"Jane Doe\", size: \"md\" },\n },\n\n Badge: {\n props: z.object({\n text: z.string(),\n variant: z\n .enum([\"default\", \"secondary\", \"destructive\", \"outline\"])\n .nullable(),\n }),\n description: \"Status badge\",\n example: { text: \"Active\", variant: \"default\" },\n },\n\n Alert: {\n props: z.object({\n title: z.string(),\n message: z.string().nullable(),\n type: z.enum([\"info\", \"success\", \"warning\", \"error\"]).nullable(),\n }),\n description: \"Alert banner\",\n example: {\n title: \"Note\",\n message: \"Your changes have been saved.\",\n type: \"success\",\n },\n },\n\n Progress: {\n props: z.object({\n value: z.number(),\n max: z.number().nullable(),\n label: z.string().nullable(),\n }),\n description: \"Progress bar (value 0-100)\",\n example: { value: 65, max: 100, label: \"Upload progress\" },\n },\n\n Skeleton: {\n props: z.object({\n width: z.string().nullable(),\n height: z.string().nullable(),\n rounded: z.boolean().nullable(),\n }),\n description: \"Loading placeholder skeleton\",\n },\n\n Spinner: {\n props: z.object({\n size: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n label: z.string().nullable(),\n }),\n description: \"Loading spinner indicator\",\n },\n\n Tooltip: {\n props: z.object({\n content: z.string(),\n text: z.string(),\n }),\n description: \"Hover tooltip. Shows content on hover over text.\",\n },\n\n Popover: {\n props: z.object({\n trigger: z.string(),\n content: z.string(),\n }),\n description: \"Popover that appears on click of trigger.\",\n },\n\n // ==========================================================================\n // Form Input Components\n // ==========================================================================\n\n Input: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n type: z.enum([\"text\", \"email\", \"password\", \"number\"]).nullable(),\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n checks: z\n .array(\n z.object({\n type: z.string(),\n message: z.string(),\n args: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .nullable(),\n }),\n events: [\"submit\", \"focus\", \"blur\"],\n description:\n \"Text input field. Use { $bindState } on value for two-way binding. Use checks for validation (e.g. required, email, minLength).\",\n example: {\n label: \"Email\",\n name: \"email\",\n type: \"email\",\n placeholder: \"you@example.com\",\n },\n },\n\n Textarea: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n placeholder: z.string().nullable(),\n rows: z.number().nullable(),\n value: z.string().nullable(),\n checks: z\n .array(\n z.object({\n type: z.string(),\n message: z.string(),\n args: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .nullable(),\n }),\n description:\n \"Multi-line text input. Use { $bindState } on value for binding. Use checks for validation.\",\n },\n\n Select: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n options: z.array(z.string()),\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n checks: z\n .array(\n z.object({\n type: z.string(),\n message: z.string(),\n args: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .nullable(),\n }),\n events: [\"change\"],\n description:\n \"Dropdown select input. Use { $bindState } on value for binding. Use checks for validation.\",\n },\n\n Checkbox: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n checked: z.boolean().nullable(),\n }),\n events: [\"change\"],\n description: \"Checkbox input. Use { $bindState } on checked for binding.\",\n },\n\n Radio: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n options: z.array(z.string()),\n value: z.string().nullable(),\n }),\n events: [\"change\"],\n description: \"Radio button group. Use { $bindState } on value for binding.\",\n },\n\n Switch: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n checked: z.boolean().nullable(),\n }),\n events: [\"change\"],\n description: \"Toggle switch. Use { $bindState } on checked for binding.\",\n },\n\n Slider: {\n props: z.object({\n label: z.string().nullable(),\n min: z.number().nullable(),\n max: z.number().nullable(),\n step: z.number().nullable(),\n value: z.number().nullable(),\n }),\n events: [\"change\"],\n description: \"Range slider input. Use { $bindState } on value for binding.\",\n },\n\n // ==========================================================================\n // Action Components\n // ==========================================================================\n\n Button: {\n props: z.object({\n label: z.string(),\n variant: z.enum([\"primary\", \"secondary\", \"danger\"]).nullable(),\n disabled: z.boolean().nullable(),\n }),\n events: [\"press\"],\n description: \"Clickable button. Bind on.press for handler.\",\n example: { label: \"Submit\", variant: \"primary\" },\n },\n\n Link: {\n props: z.object({\n label: z.string(),\n href: z.string(),\n }),\n events: [\"press\"],\n description: \"Anchor link. Bind on.press for click handler.\",\n },\n\n DropdownMenu: {\n props: z.object({\n label: z.string(),\n items: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n value: z.string().nullable(),\n }),\n events: [\"select\"],\n description:\n \"Dropdown menu with trigger button and selectable items. Use { $bindState } on value for selected item binding.\",\n },\n\n Toggle: {\n props: z.object({\n label: z.string(),\n pressed: z.boolean().nullable(),\n variant: z.enum([\"default\", \"outline\"]).nullable(),\n }),\n events: [\"change\"],\n description:\n \"Toggle button. Use { $bindState } on pressed for state binding.\",\n },\n\n ToggleGroup: {\n props: z.object({\n items: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n type: z.enum([\"single\", \"multiple\"]).nullable(),\n value: z.string().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Group of toggle buttons. Type 'single' (default) or 'multiple'. Use { $bindState } on value.\",\n },\n\n ButtonGroup: {\n props: z.object({\n buttons: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n selected: z.string().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Segmented button group. Use { $bindState } on selected for selected value.\",\n },\n\n Pagination: {\n props: z.object({\n totalPages: z.number(),\n page: z.number().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Page navigation. Use { $bindState } on page for current page number.\",\n },\n};\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Type for a component definition\n */\nexport type ComponentDefinition = {\n props: z.ZodType;\n slots?: string[];\n events?: string[];\n description: string;\n example?: Record<string, unknown>;\n};\n\n/**\n * Infer the props type for a shadcn component by name.\n * Derives the TypeScript type directly from the Zod schema,\n * so component implementations stay in sync with catalog definitions.\n *\n * @example\n * ```ts\n * type CardProps = ShadcnProps<\"Card\">;\n * // { title: string | null; description: string | null; ... }\n * ```\n */\nexport type ShadcnProps<K extends keyof typeof shadcnComponentDefinitions> =\n z.output<(typeof shadcnComponentDefinitions)[K][\"props\"]>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAkB;AAYX,IAAM,6BAA6B;AAAA;AAAA;AAAA;AAAA,EAKxC,MAAM;AAAA,IACJ,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,MACjC,UAAU,aAAE,KAAK,CAAC,MAAM,MAAM,MAAM,MAAM,CAAC,EAAE,SAAS;AAAA,MACtD,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,IACjC,CAAC;AAAA,IACD,OAAO,CAAC,SAAS;AAAA,IACjB,aACE;AAAA,IACF,SAAS,EAAE,OAAO,YAAY,aAAa,uBAAuB;AAAA,EACpE;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,aAAE,OAAO;AAAA,MACd,WAAW,aAAE,KAAK,CAAC,cAAc,UAAU,CAAC,EAAE,SAAS;AAAA,MACvD,KAAK,aAAE,KAAK,CAAC,QAAQ,MAAM,MAAM,IAAI,CAAC,EAAE,SAAS;AAAA,MACjD,OAAO,aAAE,KAAK,CAAC,SAAS,UAAU,OAAO,SAAS,CAAC,EAAE,SAAS;AAAA,MAC9D,SAAS,aACN,KAAK,CAAC,SAAS,UAAU,OAAO,WAAW,QAAQ,CAAC,EACpD,SAAS;AAAA,IACd,CAAC;AAAA,IACD,OAAO,CAAC,SAAS;AAAA,IACjB,aAAa;AAAA,IACb,SAAS,EAAE,WAAW,YAAY,KAAK,KAAK;AAAA,EAC9C;AAAA,EAEA,MAAM;AAAA,IACJ,OAAO,aAAE,OAAO;AAAA,MACd,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,MAC7B,KAAK,aAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,EAAE,SAAS;AAAA,IAC3C,CAAC;AAAA,IACD,OAAO,CAAC,SAAS;AAAA,IACjB,aAAa;AAAA,IACb,SAAS,EAAE,SAAS,GAAG,KAAK,KAAK;AAAA,EACnC;AAAA,EAEA,WAAW;AAAA,IACT,OAAO,aAAE,OAAO;AAAA,MACd,aAAa,aAAE,KAAK,CAAC,cAAc,UAAU,CAAC,EAAE,SAAS;AAAA,IAC3D,CAAC;AAAA,IACD,aAAa;AAAA,EACf;AAAA,EAEA,MAAM;AAAA,IACJ,OAAO,aAAE,OAAO;AAAA,MACd,MAAM,aAAE;AAAA,QACN,aAAE,OAAO;AAAA,UACP,OAAO,aAAE,OAAO;AAAA,UAChB,OAAO,aAAE,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,cAAc,aAAE,OAAO,EAAE,SAAS;AAAA,MAClC,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,IACD,OAAO,CAAC,SAAS;AAAA,IACjB,QAAQ,CAAC,QAAQ;AAAA,IACjB,aACE;AAAA,EACJ;AAAA,EAEA,WAAW;AAAA,IACT,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE;AAAA,QACP,aAAE,OAAO;AAAA,UACP,OAAO,aAAE,OAAO;AAAA,UAChB,SAAS,aAAE,OAAO;AAAA,QACpB,CAAC;AAAA,MACH;AAAA,MACA,MAAM,aAAE,KAAK,CAAC,UAAU,UAAU,CAAC,EAAE,SAAS;AAAA,IAChD,CAAC;AAAA,IACD,aACE;AAAA,EACJ;AAAA,EAEA,aAAa;AAAA,IACX,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,aAAa,aAAE,QAAQ,EAAE,SAAS;AAAA,IACpC,CAAC;AAAA,IACD,OAAO,CAAC,SAAS;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EAEA,QAAQ;AAAA,IACN,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,MACjC,UAAU,aAAE,OAAO;AAAA,IACrB,CAAC;AAAA,IACD,OAAO,CAAC,SAAS;AAAA,IACjB,aACE;AAAA,EACJ;AAAA,EAEA,QAAQ;AAAA,IACN,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,MACjC,UAAU,aAAE,OAAO;AAAA,IACrB,CAAC;AAAA,IACD,OAAO,CAAC,SAAS;AAAA,IACjB,aACE;AAAA,EACJ;AAAA,EAEA,UAAU;AAAA,IACR,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE;AAAA,QACP,aAAE,OAAO;AAAA,UACP,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,UAC3B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,QACnC,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,IACD,aAAa;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO;AAAA,IACL,OAAO,aAAE,OAAO;AAAA,MACd,SAAS,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,MAC3B,MAAM,aAAE,MAAM,aAAE,MAAM,aAAE,OAAO,CAAC,CAAC;AAAA,MACjC,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,CAAC;AAAA,IACD,aACE;AAAA,IACF,SAAS;AAAA,MACP,SAAS,CAAC,QAAQ,MAAM;AAAA,MACxB,MAAM;AAAA,QACJ,CAAC,SAAS,OAAO;AAAA,QACjB,CAAC,OAAO,MAAM;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,SAAS;AAAA,IACP,OAAO,aAAE,OAAO;AAAA,MACd,MAAM,aAAE,OAAO;AAAA,MACf,OAAO,aAAE,KAAK,CAAC,MAAM,MAAM,MAAM,IAAI,CAAC,EAAE,SAAS;AAAA,IACnD,CAAC;AAAA,IACD,aAAa;AAAA,IACb,SAAS,EAAE,MAAM,WAAW,OAAO,KAAK;AAAA,EAC1C;AAAA,EAEA,MAAM;AAAA,IACJ,OAAO,aAAE,OAAO;AAAA,MACd,MAAM,aAAE,OAAO;AAAA,MACf,SAAS,aAAE,KAAK,CAAC,QAAQ,WAAW,SAAS,QAAQ,MAAM,CAAC,EAAE,SAAS;AAAA,IACzE,CAAC;AAAA,IACD,aAAa;AAAA,IACb,SAAS,EAAE,MAAM,gBAAgB;AAAA,EACnC;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,aAAE,OAAO;AAAA,MACd,KAAK,aAAE,OAAO,EAAE,SAAS;AAAA,MACzB,KAAK,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,QAAQ,aAAE,OAAO,EAAE,SAAS;AAAA,IAC9B,CAAC;AAAA,IACD,aACE;AAAA,EACJ;AAAA,EAEA,QAAQ;AAAA,IACN,OAAO,aAAE,OAAO;AAAA,MACd,KAAK,aAAE,OAAO,EAAE,SAAS;AAAA,MACzB,MAAM,aAAE,OAAO;AAAA,MACf,MAAM,aAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,EAAE,SAAS;AAAA,IAC5C,CAAC;AAAA,IACD,aAAa;AAAA,IACb,SAAS,EAAE,MAAM,YAAY,MAAM,KAAK;AAAA,EAC1C;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,aAAE,OAAO;AAAA,MACd,MAAM,aAAE,OAAO;AAAA,MACf,SAAS,aACN,KAAK,CAAC,WAAW,aAAa,eAAe,SAAS,CAAC,EACvD,SAAS;AAAA,IACd,CAAC;AAAA,IACD,aAAa;AAAA,IACb,SAAS,EAAE,MAAM,UAAU,SAAS,UAAU;AAAA,EAChD;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,MAC7B,MAAM,aAAE,KAAK,CAAC,QAAQ,WAAW,WAAW,OAAO,CAAC,EAAE,SAAS;AAAA,IACjE,CAAC;AAAA,IACD,aAAa;AAAA,IACb,SAAS;AAAA,MACP,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEA,UAAU;AAAA,IACR,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,KAAK,aAAE,OAAO,EAAE,SAAS;AAAA,MACzB,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,IACD,aAAa;AAAA,IACb,SAAS,EAAE,OAAO,IAAI,KAAK,KAAK,OAAO,kBAAkB;AAAA,EAC3D;AAAA,EAEA,UAAU;AAAA,IACR,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,QAAQ,aAAE,OAAO,EAAE,SAAS;AAAA,MAC5B,SAAS,aAAE,QAAQ,EAAE,SAAS;AAAA,IAChC,CAAC;AAAA,IACD,aAAa;AAAA,EACf;AAAA,EAEA,SAAS;AAAA,IACP,OAAO,aAAE,OAAO;AAAA,MACd,MAAM,aAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,EAAE,SAAS;AAAA,MAC1C,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,IACD,aAAa;AAAA,EACf;AAAA,EAEA,SAAS;AAAA,IACP,OAAO,aAAE,OAAO;AAAA,MACd,SAAS,aAAE,OAAO;AAAA,MAClB,MAAM,aAAE,OAAO;AAAA,IACjB,CAAC;AAAA,IACD,aAAa;AAAA,EACf;AAAA,EAEA,SAAS;AAAA,IACP,OAAO,aAAE,OAAO;AAAA,MACd,SAAS,aAAE,OAAO;AAAA,MAClB,SAAS,aAAE,OAAO;AAAA,IACpB,CAAC;AAAA,IACD,aAAa;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO;AAAA,IACL,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,MAAM,aAAE,OAAO;AAAA,MACf,MAAM,aAAE,KAAK,CAAC,QAAQ,SAAS,YAAY,QAAQ,CAAC,EAAE,SAAS;AAAA,MAC/D,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,MACjC,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,QAAQ,aACL;AAAA,QACC,aAAE,OAAO;AAAA,UACP,MAAM,aAAE,OAAO;AAAA,UACf,SAAS,aAAE,OAAO;AAAA,UAClB,MAAM,aAAE,OAAO,aAAE,OAAO,GAAG,aAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,QACnD,CAAC;AAAA,MACH,EACC,SAAS;AAAA,IACd,CAAC;AAAA,IACD,QAAQ,CAAC,UAAU,SAAS,MAAM;AAAA,IAClC,aACE;AAAA,IACF,SAAS;AAAA,MACP,OAAO;AAAA,MACP,MAAM;AAAA,MACN,MAAM;AAAA,MACN,aAAa;AAAA,IACf;AAAA,EACF;AAAA,EAEA,UAAU;AAAA,IACR,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,MAAM,aAAE,OAAO;AAAA,MACf,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,MACjC,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA,MAC1B,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,QAAQ,aACL;AAAA,QACC,aAAE,OAAO;AAAA,UACP,MAAM,aAAE,OAAO;AAAA,UACf,SAAS,aAAE,OAAO;AAAA,UAClB,MAAM,aAAE,OAAO,aAAE,OAAO,GAAG,aAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,QACnD,CAAC;AAAA,MACH,EACC,SAAS;AAAA,IACd,CAAC;AAAA,IACD,aACE;AAAA,EACJ;AAAA,EAEA,QAAQ;AAAA,IACN,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,MAAM,aAAE,OAAO;AAAA,MACf,SAAS,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,MAC3B,aAAa,aAAE,OAAO,EAAE,SAAS;AAAA,MACjC,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,QAAQ,aACL;AAAA,QACC,aAAE,OAAO;AAAA,UACP,MAAM,aAAE,OAAO;AAAA,UACf,SAAS,aAAE,OAAO;AAAA,UAClB,MAAM,aAAE,OAAO,aAAE,OAAO,GAAG,aAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,QACnD,CAAC;AAAA,MACH,EACC,SAAS;AAAA,IACd,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aACE;AAAA,EACJ;AAAA,EAEA,UAAU;AAAA,IACR,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,MAAM,aAAE,OAAO;AAAA,MACf,SAAS,aAAE,QAAQ,EAAE,SAAS;AAAA,IAChC,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EAEA,OAAO;AAAA,IACL,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,MAAM,aAAE,OAAO;AAAA,MACf,SAAS,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,MAC3B,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EAEA,QAAQ;AAAA,IACN,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,MAAM,aAAE,OAAO;AAAA,MACf,SAAS,aAAE,QAAQ,EAAE,SAAS;AAAA,IAChC,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aAAa;AAAA,EACf;AAAA,EAEA,QAAQ;AAAA,IACN,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,MAC3B,KAAK,aAAE,OAAO,EAAE,SAAS;AAAA,MACzB,KAAK,aAAE,OAAO,EAAE,SAAS;AAAA,MACzB,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA,MAC1B,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aAAa;AAAA,EACf;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ;AAAA,IACN,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,SAAS,aAAE,KAAK,CAAC,WAAW,aAAa,QAAQ,CAAC,EAAE,SAAS;AAAA,MAC7D,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,IACjC,CAAC;AAAA,IACD,QAAQ,CAAC,OAAO;AAAA,IAChB,aAAa;AAAA,IACb,SAAS,EAAE,OAAO,UAAU,SAAS,UAAU;AAAA,EACjD;AAAA,EAEA,MAAM;AAAA,IACJ,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,MAAM,aAAE,OAAO;AAAA,IACjB,CAAC;AAAA,IACD,QAAQ,CAAC,OAAO;AAAA,IAChB,aAAa;AAAA,EACf;AAAA,EAEA,cAAc;AAAA,IACZ,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,OAAO,aAAE;AAAA,QACP,aAAE,OAAO;AAAA,UACP,OAAO,aAAE,OAAO;AAAA,UAChB,OAAO,aAAE,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aACE;AAAA,EACJ;AAAA,EAEA,QAAQ;AAAA,IACN,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE,OAAO;AAAA,MAChB,SAAS,aAAE,QAAQ,EAAE,SAAS;AAAA,MAC9B,SAAS,aAAE,KAAK,CAAC,WAAW,SAAS,CAAC,EAAE,SAAS;AAAA,IACnD,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aACE;AAAA,EACJ;AAAA,EAEA,aAAa;AAAA,IACX,OAAO,aAAE,OAAO;AAAA,MACd,OAAO,aAAE;AAAA,QACP,aAAE,OAAO;AAAA,UACP,OAAO,aAAE,OAAO;AAAA,UAChB,OAAO,aAAE,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,MAAM,aAAE,KAAK,CAAC,UAAU,UAAU,CAAC,EAAE,SAAS;AAAA,MAC9C,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,IAC7B,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aACE;AAAA,EACJ;AAAA,EAEA,aAAa;AAAA,IACX,OAAO,aAAE,OAAO;AAAA,MACd,SAAS,aAAE;AAAA,QACT,aAAE,OAAO;AAAA,UACP,OAAO,aAAE,OAAO;AAAA,UAChB,OAAO,aAAE,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAAA,MACA,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,IAChC,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aACE;AAAA,EACJ;AAAA,EAEA,YAAY;AAAA,IACV,OAAO,aAAE,OAAO;AAAA,MACd,YAAY,aAAE,OAAO;AAAA,MACrB,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA,IAC5B,CAAC;AAAA,IACD,QAAQ,CAAC,QAAQ;AAAA,IACjB,aACE;AAAA,EACJ;AACF;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/catalog.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// =============================================================================\n// Shared validation schemas used across form components\n// =============================================================================\n\nconst validationCheckSchema = z\n .array(\n z.object({\n type: z.string(),\n message: z.string(),\n args: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .nullable();\n\nconst validateOnSchema = z.enum([\"change\", \"blur\", \"submit\"]).nullable();\n\n// =============================================================================\n// shadcn/ui Component Definitions\n// =============================================================================\n\n/**\n * shadcn/ui component definitions for json-render catalogs.\n *\n * These can be used directly or extended with custom components.\n * All components are built using Radix UI primitives + Tailwind CSS.\n */\nexport const shadcnComponentDefinitions = {\n // ==========================================================================\n // Layout Components\n // ==========================================================================\n\n Card: {\n props: z.object({\n title: z.string().nullable(),\n description: z.string().nullable(),\n maxWidth: z.enum([\"sm\", \"md\", \"lg\", \"full\"]).nullable(),\n centered: z.boolean().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Container card for content sections. Use for forms/content boxes, NOT for page headers.\",\n example: { title: \"Overview\", description: \"Your account summary\" },\n },\n\n Stack: {\n props: z.object({\n direction: z.enum([\"horizontal\", \"vertical\"]).nullable(),\n gap: z.enum([\"none\", \"sm\", \"md\", \"lg\"]).nullable(),\n align: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).nullable(),\n justify: z\n .enum([\"start\", \"center\", \"end\", \"between\", \"around\"])\n .nullable(),\n }),\n slots: [\"default\"],\n description: \"Flex container for layouts\",\n example: { direction: \"vertical\", gap: \"md\" },\n },\n\n Grid: {\n props: z.object({\n columns: z.number().nullable(),\n gap: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n }),\n slots: [\"default\"],\n description: \"Grid layout (1-6 columns)\",\n example: { columns: 3, gap: \"md\" },\n },\n\n Separator: {\n props: z.object({\n orientation: z.enum([\"horizontal\", \"vertical\"]).nullable(),\n }),\n description: \"Visual separator line\",\n },\n\n Tabs: {\n props: z.object({\n tabs: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n defaultValue: z.string().nullable(),\n value: z.string().nullable(),\n }),\n slots: [\"default\"],\n events: [\"change\"],\n description:\n \"Tab navigation. Use { $bindState } on value for active tab binding.\",\n },\n\n Accordion: {\n props: z.object({\n items: z.array(\n z.object({\n title: z.string(),\n content: z.string(),\n }),\n ),\n type: z.enum([\"single\", \"multiple\"]).nullable(),\n }),\n description:\n \"Collapsible sections. Items as [{title, content}]. Type 'single' (default) or 'multiple'.\",\n },\n\n Collapsible: {\n props: z.object({\n title: z.string(),\n defaultOpen: z.boolean().nullable(),\n }),\n slots: [\"default\"],\n description: \"Collapsible section with trigger. Children render inside.\",\n },\n\n Dialog: {\n props: z.object({\n title: z.string(),\n description: z.string().nullable(),\n openPath: z.string(),\n }),\n slots: [\"default\"],\n description:\n \"Modal dialog. Set openPath to a boolean state path. Use setState to toggle.\",\n },\n\n Drawer: {\n props: z.object({\n title: z.string(),\n description: z.string().nullable(),\n openPath: z.string(),\n }),\n slots: [\"default\"],\n description:\n \"Bottom sheet drawer. Set openPath to a boolean state path. Use setState to toggle.\",\n },\n\n Carousel: {\n props: z.object({\n items: z.array(\n z.object({\n title: z.string().nullable(),\n description: z.string().nullable(),\n }),\n ),\n }),\n description: \"Horizontally scrollable carousel of cards.\",\n },\n\n // ==========================================================================\n // Data Display Components\n // ==========================================================================\n\n Table: {\n props: z.object({\n columns: z.array(z.string()),\n rows: z.array(z.array(z.string())),\n caption: z.string().nullable(),\n }),\n description:\n 'Data table. columns: header labels. rows: 2D array of cell strings, e.g. [[\"Alice\",\"admin\"],[\"Bob\",\"user\"]].',\n example: {\n columns: [\"Name\", \"Role\"],\n rows: [\n [\"Alice\", \"Admin\"],\n [\"Bob\", \"User\"],\n ],\n },\n },\n\n Heading: {\n props: z.object({\n text: z.string(),\n level: z.enum([\"h1\", \"h2\", \"h3\", \"h4\"]).nullable(),\n }),\n description: \"Heading text (h1-h4)\",\n example: { text: \"Welcome\", level: \"h1\" },\n },\n\n Text: {\n props: z.object({\n text: z.string(),\n variant: z.enum([\"body\", \"caption\", \"muted\", \"lead\", \"code\"]).nullable(),\n }),\n description: \"Paragraph text\",\n example: { text: \"Hello, world!\" },\n },\n\n Image: {\n props: z.object({\n src: z.string().nullable(),\n alt: z.string(),\n width: z.number().nullable(),\n height: z.number().nullable(),\n }),\n description:\n \"Image component. Renders an img tag when src is provided, otherwise a placeholder.\",\n },\n\n Avatar: {\n props: z.object({\n src: z.string().nullable(),\n name: z.string(),\n size: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n }),\n description: \"User avatar with fallback initials\",\n example: { name: \"Jane Doe\", size: \"md\" },\n },\n\n Badge: {\n props: z.object({\n text: z.string(),\n variant: z\n .enum([\"default\", \"secondary\", \"destructive\", \"outline\"])\n .nullable(),\n }),\n description: \"Status badge\",\n example: { text: \"Active\", variant: \"default\" },\n },\n\n Alert: {\n props: z.object({\n title: z.string(),\n message: z.string().nullable(),\n type: z.enum([\"info\", \"success\", \"warning\", \"error\"]).nullable(),\n }),\n description: \"Alert banner\",\n example: {\n title: \"Note\",\n message: \"Your changes have been saved.\",\n type: \"success\",\n },\n },\n\n Progress: {\n props: z.object({\n value: z.number(),\n max: z.number().nullable(),\n label: z.string().nullable(),\n }),\n description: \"Progress bar (value 0-100)\",\n example: { value: 65, max: 100, label: \"Upload progress\" },\n },\n\n Skeleton: {\n props: z.object({\n width: z.string().nullable(),\n height: z.string().nullable(),\n rounded: z.boolean().nullable(),\n }),\n description: \"Loading placeholder skeleton\",\n },\n\n Spinner: {\n props: z.object({\n size: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n label: z.string().nullable(),\n }),\n description: \"Loading spinner indicator\",\n },\n\n Tooltip: {\n props: z.object({\n content: z.string(),\n text: z.string(),\n }),\n description: \"Hover tooltip. Shows content on hover over text.\",\n },\n\n Popover: {\n props: z.object({\n trigger: z.string(),\n content: z.string(),\n }),\n description: \"Popover that appears on click of trigger.\",\n },\n\n // ==========================================================================\n // Form Input Components\n // ==========================================================================\n\n Input: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n type: z.enum([\"text\", \"email\", \"password\", \"number\"]).nullable(),\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"submit\", \"focus\", \"blur\"],\n description:\n \"Text input field. Use { $bindState } on value for two-way binding. Use checks for validation (e.g. required, email, minLength). validateOn controls timing (default: blur).\",\n example: {\n label: \"Email\",\n name: \"email\",\n type: \"email\",\n placeholder: \"you@example.com\",\n },\n },\n\n Textarea: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n placeholder: z.string().nullable(),\n rows: z.number().nullable(),\n value: z.string().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n description:\n \"Multi-line text input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: blur).\",\n },\n\n Select: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n options: z.array(z.string()),\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"change\"],\n description:\n \"Dropdown select input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change).\",\n },\n\n Checkbox: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n checked: z.boolean().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"change\"],\n description:\n \"Checkbox input. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change).\",\n },\n\n Radio: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n options: z.array(z.string()),\n value: z.string().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"change\"],\n description:\n \"Radio button group. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change).\",\n },\n\n Switch: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n checked: z.boolean().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"change\"],\n description:\n \"Toggle switch. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change).\",\n },\n\n Slider: {\n props: z.object({\n label: z.string().nullable(),\n min: z.number().nullable(),\n max: z.number().nullable(),\n step: z.number().nullable(),\n value: z.number().nullable(),\n }),\n events: [\"change\"],\n description: \"Range slider input. Use { $bindState } on value for binding.\",\n },\n\n // ==========================================================================\n // Action Components\n // ==========================================================================\n\n Button: {\n props: z.object({\n label: z.string(),\n variant: z.enum([\"primary\", \"secondary\", \"danger\"]).nullable(),\n disabled: z.boolean().nullable(),\n }),\n events: [\"press\"],\n description: \"Clickable button. Bind on.press for handler.\",\n example: { label: \"Submit\", variant: \"primary\" },\n },\n\n Link: {\n props: z.object({\n label: z.string(),\n href: z.string(),\n }),\n events: [\"press\"],\n description: \"Anchor link. Bind on.press for click handler.\",\n },\n\n DropdownMenu: {\n props: z.object({\n label: z.string(),\n items: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n value: z.string().nullable(),\n }),\n events: [\"select\"],\n description:\n \"Dropdown menu with trigger button and selectable items. Use { $bindState } on value for selected item binding.\",\n },\n\n Toggle: {\n props: z.object({\n label: z.string(),\n pressed: z.boolean().nullable(),\n variant: z.enum([\"default\", \"outline\"]).nullable(),\n }),\n events: [\"change\"],\n description:\n \"Toggle button. Use { $bindState } on pressed for state binding.\",\n },\n\n ToggleGroup: {\n props: z.object({\n items: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n type: z.enum([\"single\", \"multiple\"]).nullable(),\n value: z.string().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Group of toggle buttons. Type 'single' (default) or 'multiple'. Use { $bindState } on value.\",\n },\n\n ButtonGroup: {\n props: z.object({\n buttons: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n selected: z.string().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Segmented button group. Use { $bindState } on selected for selected value.\",\n },\n\n Pagination: {\n props: z.object({\n totalPages: z.number(),\n page: z.number().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Page navigation. Use { $bindState } on page for current page number.\",\n },\n};\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Type for a component definition\n */\nexport type ComponentDefinition = {\n props: z.ZodType;\n slots?: string[];\n events?: string[];\n description: string;\n example?: Record<string, unknown>;\n};\n\n/**\n * Infer the props type for a shadcn component by name.\n * Derives the TypeScript type directly from the Zod schema,\n * so component implementations stay in sync with catalog definitions.\n *\n * @example\n * ```ts\n * type CardProps = ShadcnProps<\"Card\">;\n * // { title: string | null; description: string | null; ... }\n * ```\n */\nexport type ShadcnProps<K extends keyof typeof shadcnComponentDefinitions> =\n z.output<(typeof shadcnComponentDefinitions)[K][\"props\"]>;\n"],"mappings":"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","names":[]}
|
package/dist/catalog.mjs
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
// src/catalog.ts
|
|
2
2
|
import { z } from "zod";
|
|
3
|
+
var validationCheckSchema = z.array(
|
|
4
|
+
z.object({
|
|
5
|
+
type: z.string(),
|
|
6
|
+
message: z.string(),
|
|
7
|
+
args: z.record(z.string(), z.unknown()).optional()
|
|
8
|
+
})
|
|
9
|
+
).nullable();
|
|
10
|
+
var validateOnSchema = z.enum(["change", "blur", "submit"]).nullable();
|
|
3
11
|
var shadcnComponentDefinitions = {
|
|
4
12
|
// ==========================================================================
|
|
5
13
|
// Layout Components
|
|
@@ -226,16 +234,11 @@ var shadcnComponentDefinitions = {
|
|
|
226
234
|
type: z.enum(["text", "email", "password", "number"]).nullable(),
|
|
227
235
|
placeholder: z.string().nullable(),
|
|
228
236
|
value: z.string().nullable(),
|
|
229
|
-
checks:
|
|
230
|
-
|
|
231
|
-
type: z.string(),
|
|
232
|
-
message: z.string(),
|
|
233
|
-
args: z.record(z.string(), z.unknown()).optional()
|
|
234
|
-
})
|
|
235
|
-
).nullable()
|
|
237
|
+
checks: validationCheckSchema,
|
|
238
|
+
validateOn: validateOnSchema
|
|
236
239
|
}),
|
|
237
240
|
events: ["submit", "focus", "blur"],
|
|
238
|
-
description: "Text input field. Use { $bindState } on value for two-way binding. Use checks for validation (e.g. required, email, minLength).",
|
|
241
|
+
description: "Text input field. Use { $bindState } on value for two-way binding. Use checks for validation (e.g. required, email, minLength). validateOn controls timing (default: blur).",
|
|
239
242
|
example: {
|
|
240
243
|
label: "Email",
|
|
241
244
|
name: "email",
|
|
@@ -250,15 +253,10 @@ var shadcnComponentDefinitions = {
|
|
|
250
253
|
placeholder: z.string().nullable(),
|
|
251
254
|
rows: z.number().nullable(),
|
|
252
255
|
value: z.string().nullable(),
|
|
253
|
-
checks:
|
|
254
|
-
|
|
255
|
-
type: z.string(),
|
|
256
|
-
message: z.string(),
|
|
257
|
-
args: z.record(z.string(), z.unknown()).optional()
|
|
258
|
-
})
|
|
259
|
-
).nullable()
|
|
256
|
+
checks: validationCheckSchema,
|
|
257
|
+
validateOn: validateOnSchema
|
|
260
258
|
}),
|
|
261
|
-
description: "Multi-line text input. Use { $bindState } on value for binding. Use checks for validation."
|
|
259
|
+
description: "Multi-line text input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: blur)."
|
|
262
260
|
},
|
|
263
261
|
Select: {
|
|
264
262
|
props: z.object({
|
|
@@ -267,44 +265,45 @@ var shadcnComponentDefinitions = {
|
|
|
267
265
|
options: z.array(z.string()),
|
|
268
266
|
placeholder: z.string().nullable(),
|
|
269
267
|
value: z.string().nullable(),
|
|
270
|
-
checks:
|
|
271
|
-
|
|
272
|
-
type: z.string(),
|
|
273
|
-
message: z.string(),
|
|
274
|
-
args: z.record(z.string(), z.unknown()).optional()
|
|
275
|
-
})
|
|
276
|
-
).nullable()
|
|
268
|
+
checks: validationCheckSchema,
|
|
269
|
+
validateOn: validateOnSchema
|
|
277
270
|
}),
|
|
278
271
|
events: ["change"],
|
|
279
|
-
description: "Dropdown select input. Use { $bindState } on value for binding. Use checks for validation."
|
|
272
|
+
description: "Dropdown select input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change)."
|
|
280
273
|
},
|
|
281
274
|
Checkbox: {
|
|
282
275
|
props: z.object({
|
|
283
276
|
label: z.string(),
|
|
284
277
|
name: z.string(),
|
|
285
|
-
checked: z.boolean().nullable()
|
|
278
|
+
checked: z.boolean().nullable(),
|
|
279
|
+
checks: validationCheckSchema,
|
|
280
|
+
validateOn: validateOnSchema
|
|
286
281
|
}),
|
|
287
282
|
events: ["change"],
|
|
288
|
-
description: "Checkbox input. Use { $bindState } on checked for binding."
|
|
283
|
+
description: "Checkbox input. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change)."
|
|
289
284
|
},
|
|
290
285
|
Radio: {
|
|
291
286
|
props: z.object({
|
|
292
287
|
label: z.string(),
|
|
293
288
|
name: z.string(),
|
|
294
289
|
options: z.array(z.string()),
|
|
295
|
-
value: z.string().nullable()
|
|
290
|
+
value: z.string().nullable(),
|
|
291
|
+
checks: validationCheckSchema,
|
|
292
|
+
validateOn: validateOnSchema
|
|
296
293
|
}),
|
|
297
294
|
events: ["change"],
|
|
298
|
-
description: "Radio button group. Use { $bindState } on value for binding."
|
|
295
|
+
description: "Radio button group. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change)."
|
|
299
296
|
},
|
|
300
297
|
Switch: {
|
|
301
298
|
props: z.object({
|
|
302
299
|
label: z.string(),
|
|
303
300
|
name: z.string(),
|
|
304
|
-
checked: z.boolean().nullable()
|
|
301
|
+
checked: z.boolean().nullable(),
|
|
302
|
+
checks: validationCheckSchema,
|
|
303
|
+
validateOn: validateOnSchema
|
|
305
304
|
}),
|
|
306
305
|
events: ["change"],
|
|
307
|
-
description: "Toggle switch. Use { $bindState } on checked for binding."
|
|
306
|
+
description: "Toggle switch. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change)."
|
|
308
307
|
},
|
|
309
308
|
Slider: {
|
|
310
309
|
props: z.object({
|
|
@@ -401,4 +400,4 @@ var shadcnComponentDefinitions = {
|
|
|
401
400
|
export {
|
|
402
401
|
shadcnComponentDefinitions
|
|
403
402
|
};
|
|
404
|
-
//# sourceMappingURL=chunk-
|
|
403
|
+
//# sourceMappingURL=chunk-F5LRX6LB.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/catalog.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// =============================================================================\n// Shared validation schemas used across form components\n// =============================================================================\n\nconst validationCheckSchema = z\n .array(\n z.object({\n type: z.string(),\n message: z.string(),\n args: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .nullable();\n\nconst validateOnSchema = z.enum([\"change\", \"blur\", \"submit\"]).nullable();\n\n// =============================================================================\n// shadcn/ui Component Definitions\n// =============================================================================\n\n/**\n * shadcn/ui component definitions for json-render catalogs.\n *\n * These can be used directly or extended with custom components.\n * All components are built using Radix UI primitives + Tailwind CSS.\n */\nexport const shadcnComponentDefinitions = {\n // ==========================================================================\n // Layout Components\n // ==========================================================================\n\n Card: {\n props: z.object({\n title: z.string().nullable(),\n description: z.string().nullable(),\n maxWidth: z.enum([\"sm\", \"md\", \"lg\", \"full\"]).nullable(),\n centered: z.boolean().nullable(),\n }),\n slots: [\"default\"],\n description:\n \"Container card for content sections. Use for forms/content boxes, NOT for page headers.\",\n example: { title: \"Overview\", description: \"Your account summary\" },\n },\n\n Stack: {\n props: z.object({\n direction: z.enum([\"horizontal\", \"vertical\"]).nullable(),\n gap: z.enum([\"none\", \"sm\", \"md\", \"lg\"]).nullable(),\n align: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).nullable(),\n justify: z\n .enum([\"start\", \"center\", \"end\", \"between\", \"around\"])\n .nullable(),\n }),\n slots: [\"default\"],\n description: \"Flex container for layouts\",\n example: { direction: \"vertical\", gap: \"md\" },\n },\n\n Grid: {\n props: z.object({\n columns: z.number().nullable(),\n gap: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n }),\n slots: [\"default\"],\n description: \"Grid layout (1-6 columns)\",\n example: { columns: 3, gap: \"md\" },\n },\n\n Separator: {\n props: z.object({\n orientation: z.enum([\"horizontal\", \"vertical\"]).nullable(),\n }),\n description: \"Visual separator line\",\n },\n\n Tabs: {\n props: z.object({\n tabs: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n defaultValue: z.string().nullable(),\n value: z.string().nullable(),\n }),\n slots: [\"default\"],\n events: [\"change\"],\n description:\n \"Tab navigation. Use { $bindState } on value for active tab binding.\",\n },\n\n Accordion: {\n props: z.object({\n items: z.array(\n z.object({\n title: z.string(),\n content: z.string(),\n }),\n ),\n type: z.enum([\"single\", \"multiple\"]).nullable(),\n }),\n description:\n \"Collapsible sections. Items as [{title, content}]. Type 'single' (default) or 'multiple'.\",\n },\n\n Collapsible: {\n props: z.object({\n title: z.string(),\n defaultOpen: z.boolean().nullable(),\n }),\n slots: [\"default\"],\n description: \"Collapsible section with trigger. Children render inside.\",\n },\n\n Dialog: {\n props: z.object({\n title: z.string(),\n description: z.string().nullable(),\n openPath: z.string(),\n }),\n slots: [\"default\"],\n description:\n \"Modal dialog. Set openPath to a boolean state path. Use setState to toggle.\",\n },\n\n Drawer: {\n props: z.object({\n title: z.string(),\n description: z.string().nullable(),\n openPath: z.string(),\n }),\n slots: [\"default\"],\n description:\n \"Bottom sheet drawer. Set openPath to a boolean state path. Use setState to toggle.\",\n },\n\n Carousel: {\n props: z.object({\n items: z.array(\n z.object({\n title: z.string().nullable(),\n description: z.string().nullable(),\n }),\n ),\n }),\n description: \"Horizontally scrollable carousel of cards.\",\n },\n\n // ==========================================================================\n // Data Display Components\n // ==========================================================================\n\n Table: {\n props: z.object({\n columns: z.array(z.string()),\n rows: z.array(z.array(z.string())),\n caption: z.string().nullable(),\n }),\n description:\n 'Data table. columns: header labels. rows: 2D array of cell strings, e.g. [[\"Alice\",\"admin\"],[\"Bob\",\"user\"]].',\n example: {\n columns: [\"Name\", \"Role\"],\n rows: [\n [\"Alice\", \"Admin\"],\n [\"Bob\", \"User\"],\n ],\n },\n },\n\n Heading: {\n props: z.object({\n text: z.string(),\n level: z.enum([\"h1\", \"h2\", \"h3\", \"h4\"]).nullable(),\n }),\n description: \"Heading text (h1-h4)\",\n example: { text: \"Welcome\", level: \"h1\" },\n },\n\n Text: {\n props: z.object({\n text: z.string(),\n variant: z.enum([\"body\", \"caption\", \"muted\", \"lead\", \"code\"]).nullable(),\n }),\n description: \"Paragraph text\",\n example: { text: \"Hello, world!\" },\n },\n\n Image: {\n props: z.object({\n src: z.string().nullable(),\n alt: z.string(),\n width: z.number().nullable(),\n height: z.number().nullable(),\n }),\n description:\n \"Image component. Renders an img tag when src is provided, otherwise a placeholder.\",\n },\n\n Avatar: {\n props: z.object({\n src: z.string().nullable(),\n name: z.string(),\n size: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n }),\n description: \"User avatar with fallback initials\",\n example: { name: \"Jane Doe\", size: \"md\" },\n },\n\n Badge: {\n props: z.object({\n text: z.string(),\n variant: z\n .enum([\"default\", \"secondary\", \"destructive\", \"outline\"])\n .nullable(),\n }),\n description: \"Status badge\",\n example: { text: \"Active\", variant: \"default\" },\n },\n\n Alert: {\n props: z.object({\n title: z.string(),\n message: z.string().nullable(),\n type: z.enum([\"info\", \"success\", \"warning\", \"error\"]).nullable(),\n }),\n description: \"Alert banner\",\n example: {\n title: \"Note\",\n message: \"Your changes have been saved.\",\n type: \"success\",\n },\n },\n\n Progress: {\n props: z.object({\n value: z.number(),\n max: z.number().nullable(),\n label: z.string().nullable(),\n }),\n description: \"Progress bar (value 0-100)\",\n example: { value: 65, max: 100, label: \"Upload progress\" },\n },\n\n Skeleton: {\n props: z.object({\n width: z.string().nullable(),\n height: z.string().nullable(),\n rounded: z.boolean().nullable(),\n }),\n description: \"Loading placeholder skeleton\",\n },\n\n Spinner: {\n props: z.object({\n size: z.enum([\"sm\", \"md\", \"lg\"]).nullable(),\n label: z.string().nullable(),\n }),\n description: \"Loading spinner indicator\",\n },\n\n Tooltip: {\n props: z.object({\n content: z.string(),\n text: z.string(),\n }),\n description: \"Hover tooltip. Shows content on hover over text.\",\n },\n\n Popover: {\n props: z.object({\n trigger: z.string(),\n content: z.string(),\n }),\n description: \"Popover that appears on click of trigger.\",\n },\n\n // ==========================================================================\n // Form Input Components\n // ==========================================================================\n\n Input: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n type: z.enum([\"text\", \"email\", \"password\", \"number\"]).nullable(),\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"submit\", \"focus\", \"blur\"],\n description:\n \"Text input field. Use { $bindState } on value for two-way binding. Use checks for validation (e.g. required, email, minLength). validateOn controls timing (default: blur).\",\n example: {\n label: \"Email\",\n name: \"email\",\n type: \"email\",\n placeholder: \"you@example.com\",\n },\n },\n\n Textarea: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n placeholder: z.string().nullable(),\n rows: z.number().nullable(),\n value: z.string().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n description:\n \"Multi-line text input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: blur).\",\n },\n\n Select: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n options: z.array(z.string()),\n placeholder: z.string().nullable(),\n value: z.string().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"change\"],\n description:\n \"Dropdown select input. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change).\",\n },\n\n Checkbox: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n checked: z.boolean().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"change\"],\n description:\n \"Checkbox input. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change).\",\n },\n\n Radio: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n options: z.array(z.string()),\n value: z.string().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"change\"],\n description:\n \"Radio button group. Use { $bindState } on value for binding. Use checks for validation. validateOn controls timing (default: change).\",\n },\n\n Switch: {\n props: z.object({\n label: z.string(),\n name: z.string(),\n checked: z.boolean().nullable(),\n checks: validationCheckSchema,\n validateOn: validateOnSchema,\n }),\n events: [\"change\"],\n description:\n \"Toggle switch. Use { $bindState } on checked for binding. Use checks for validation. validateOn controls timing (default: change).\",\n },\n\n Slider: {\n props: z.object({\n label: z.string().nullable(),\n min: z.number().nullable(),\n max: z.number().nullable(),\n step: z.number().nullable(),\n value: z.number().nullable(),\n }),\n events: [\"change\"],\n description: \"Range slider input. Use { $bindState } on value for binding.\",\n },\n\n // ==========================================================================\n // Action Components\n // ==========================================================================\n\n Button: {\n props: z.object({\n label: z.string(),\n variant: z.enum([\"primary\", \"secondary\", \"danger\"]).nullable(),\n disabled: z.boolean().nullable(),\n }),\n events: [\"press\"],\n description: \"Clickable button. Bind on.press for handler.\",\n example: { label: \"Submit\", variant: \"primary\" },\n },\n\n Link: {\n props: z.object({\n label: z.string(),\n href: z.string(),\n }),\n events: [\"press\"],\n description: \"Anchor link. Bind on.press for click handler.\",\n },\n\n DropdownMenu: {\n props: z.object({\n label: z.string(),\n items: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n value: z.string().nullable(),\n }),\n events: [\"select\"],\n description:\n \"Dropdown menu with trigger button and selectable items. Use { $bindState } on value for selected item binding.\",\n },\n\n Toggle: {\n props: z.object({\n label: z.string(),\n pressed: z.boolean().nullable(),\n variant: z.enum([\"default\", \"outline\"]).nullable(),\n }),\n events: [\"change\"],\n description:\n \"Toggle button. Use { $bindState } on pressed for state binding.\",\n },\n\n ToggleGroup: {\n props: z.object({\n items: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n type: z.enum([\"single\", \"multiple\"]).nullable(),\n value: z.string().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Group of toggle buttons. Type 'single' (default) or 'multiple'. Use { $bindState } on value.\",\n },\n\n ButtonGroup: {\n props: z.object({\n buttons: z.array(\n z.object({\n label: z.string(),\n value: z.string(),\n }),\n ),\n selected: z.string().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Segmented button group. Use { $bindState } on selected for selected value.\",\n },\n\n Pagination: {\n props: z.object({\n totalPages: z.number(),\n page: z.number().nullable(),\n }),\n events: [\"change\"],\n description:\n \"Page navigation. Use { $bindState } on page for current page number.\",\n },\n};\n\n// =============================================================================\n// Types\n// =============================================================================\n\n/**\n * Type for a component definition\n */\nexport type ComponentDefinition = {\n props: z.ZodType;\n slots?: string[];\n events?: string[];\n description: string;\n example?: Record<string, unknown>;\n};\n\n/**\n * Infer the props type for a shadcn component by name.\n * Derives the TypeScript type directly from the Zod schema,\n * so component implementations stay in sync with catalog definitions.\n *\n * @example\n * ```ts\n * type CardProps = ShadcnProps<\"Card\">;\n * // { title: string | null; description: string | null; ... }\n * ```\n */\nexport type ShadcnProps<K extends keyof typeof shadcnComponentDefinitions> =\n z.output<(typeof shadcnComponentDefinitions)[K][\"props\"]>;\n"],"mappings":"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","names":[]}
|