import { z } from "zod"; /** * shadcn/ui component definitions for json-render catalogs. * * These can be used directly or extended with custom components. * All components are built using Radix UI primitives + Tailwind CSS. */ export declare const shadcnComponentDefinitions: { Card: { props: z.ZodObject<{ title: z.ZodNullable; description: z.ZodNullable; maxWidth: z.ZodNullable>; centered: z.ZodNullable; }, z.core.$strip>; slots: string[]; description: string; example: { title: string; description: string; }; }; Stack: { props: z.ZodObject<{ direction: z.ZodNullable>; gap: z.ZodNullable>; align: z.ZodNullable>; justify: z.ZodNullable>; }, z.core.$strip>; slots: string[]; description: string; example: { direction: string; gap: string; }; }; Grid: { props: z.ZodObject<{ columns: z.ZodNullable; gap: z.ZodNullable>; }, z.core.$strip>; slots: string[]; description: string; example: { columns: number; gap: string; }; }; Separator: { props: z.ZodObject<{ orientation: z.ZodNullable>; }, z.core.$strip>; description: string; }; Tabs: { props: z.ZodObject<{ tabs: z.ZodArray>; defaultValue: z.ZodNullable; value: z.ZodNullable; }, z.core.$strip>; slots: string[]; events: string[]; description: string; }; Accordion: { props: z.ZodObject<{ items: z.ZodArray>; type: z.ZodNullable>; }, z.core.$strip>; description: string; }; Collapsible: { props: z.ZodObject<{ title: z.ZodString; defaultOpen: z.ZodNullable; }, z.core.$strip>; slots: string[]; description: string; }; Dialog: { props: z.ZodObject<{ title: z.ZodString; description: z.ZodNullable; openPath: z.ZodString; }, z.core.$strip>; slots: string[]; description: string; }; Drawer: { props: z.ZodObject<{ title: z.ZodString; description: z.ZodNullable; openPath: z.ZodString; }, z.core.$strip>; slots: string[]; description: string; }; Carousel: { props: z.ZodObject<{ items: z.ZodArray; description: z.ZodNullable; }, z.core.$strip>>; }, z.core.$strip>; description: string; }; Table: { props: z.ZodObject<{ columns: z.ZodArray; rows: z.ZodArray>; caption: z.ZodNullable; }, z.core.$strip>; description: string; example: { columns: string[]; rows: string[][]; }; }; Heading: { props: z.ZodObject<{ text: z.ZodString; level: z.ZodNullable>; }, z.core.$strip>; description: string; example: { text: string; level: string; }; }; Text: { props: z.ZodObject<{ text: z.ZodString; variant: z.ZodNullable>; }, z.core.$strip>; description: string; example: { text: string; }; }; Image: { props: z.ZodObject<{ src: z.ZodNullable; alt: z.ZodString; width: z.ZodNullable; height: z.ZodNullable; }, z.core.$strip>; description: string; }; Avatar: { props: z.ZodObject<{ src: z.ZodNullable; name: z.ZodString; size: z.ZodNullable>; }, z.core.$strip>; description: string; example: { name: string; size: string; }; }; Badge: { props: z.ZodObject<{ text: z.ZodString; variant: z.ZodNullable>; }, z.core.$strip>; description: string; example: { text: string; variant: string; }; }; Alert: { props: z.ZodObject<{ title: z.ZodString; message: z.ZodNullable; type: z.ZodNullable>; }, z.core.$strip>; description: string; example: { title: string; message: string; type: string; }; }; Progress: { props: z.ZodObject<{ value: z.ZodNumber; max: z.ZodNullable; label: z.ZodNullable; }, z.core.$strip>; description: string; example: { value: number; max: number; label: string; }; }; Skeleton: { props: z.ZodObject<{ width: z.ZodNullable; height: z.ZodNullable; rounded: z.ZodNullable; }, z.core.$strip>; description: string; }; Spinner: { props: z.ZodObject<{ size: z.ZodNullable>; label: z.ZodNullable; }, z.core.$strip>; description: string; }; Tooltip: { props: z.ZodObject<{ content: z.ZodString; text: z.ZodString; }, z.core.$strip>; description: string; }; Popover: { props: z.ZodObject<{ trigger: z.ZodString; content: z.ZodString; }, z.core.$strip>; description: string; }; Input: { props: z.ZodObject<{ label: z.ZodString; name: z.ZodString; type: z.ZodNullable>; placeholder: z.ZodNullable; value: z.ZodNullable; checks: z.ZodNullable>; }, z.core.$strip>>>; validateOn: z.ZodNullable>; }, z.core.$strip>; events: string[]; description: string; example: { label: string; name: string; type: string; placeholder: string; }; }; Textarea: { props: z.ZodObject<{ label: z.ZodString; name: z.ZodString; placeholder: z.ZodNullable; rows: z.ZodNullable; value: z.ZodNullable; checks: z.ZodNullable>; }, z.core.$strip>>>; validateOn: z.ZodNullable>; }, z.core.$strip>; description: string; }; Select: { props: z.ZodObject<{ label: z.ZodString; name: z.ZodString; options: z.ZodArray; placeholder: z.ZodNullable; value: z.ZodNullable; checks: z.ZodNullable>; }, z.core.$strip>>>; validateOn: z.ZodNullable>; }, z.core.$strip>; events: string[]; description: string; }; Checkbox: { props: z.ZodObject<{ label: z.ZodString; name: z.ZodString; checked: z.ZodNullable; checks: z.ZodNullable>; }, z.core.$strip>>>; validateOn: z.ZodNullable>; }, z.core.$strip>; events: string[]; description: string; }; Radio: { props: z.ZodObject<{ label: z.ZodString; name: z.ZodString; options: z.ZodArray; value: z.ZodNullable; checks: z.ZodNullable>; }, z.core.$strip>>>; validateOn: z.ZodNullable>; }, z.core.$strip>; events: string[]; description: string; }; Switch: { props: z.ZodObject<{ label: z.ZodString; name: z.ZodString; checked: z.ZodNullable; checks: z.ZodNullable>; }, z.core.$strip>>>; validateOn: z.ZodNullable>; }, z.core.$strip>; events: string[]; description: string; }; Slider: { props: z.ZodObject<{ label: z.ZodNullable; min: z.ZodNullable; max: z.ZodNullable; step: z.ZodNullable; value: z.ZodNullable; }, z.core.$strip>; events: string[]; description: string; }; Button: { props: z.ZodObject<{ label: z.ZodString; variant: z.ZodNullable>; disabled: z.ZodNullable; }, z.core.$strip>; events: string[]; description: string; example: { label: string; variant: string; }; }; Link: { props: z.ZodObject<{ label: z.ZodString; href: z.ZodString; }, z.core.$strip>; events: string[]; description: string; }; DropdownMenu: { props: z.ZodObject<{ label: z.ZodString; items: z.ZodArray>; value: z.ZodNullable; }, z.core.$strip>; events: string[]; description: string; }; Toggle: { props: z.ZodObject<{ label: z.ZodString; pressed: z.ZodNullable; variant: z.ZodNullable>; }, z.core.$strip>; events: string[]; description: string; }; ToggleGroup: { props: z.ZodObject<{ items: z.ZodArray>; type: z.ZodNullable>; value: z.ZodNullable; }, z.core.$strip>; events: string[]; description: string; }; ButtonGroup: { props: z.ZodObject<{ buttons: z.ZodArray>; selected: z.ZodNullable; }, z.core.$strip>; events: string[]; description: string; }; Pagination: { props: z.ZodObject<{ totalPages: z.ZodNumber; page: z.ZodNullable; }, z.core.$strip>; events: string[]; description: string; }; }; /** * Type for a component definition */ export type ComponentDefinition = { props: z.ZodType; slots?: string[]; events?: string[]; description: string; example?: Record; }; /** * Infer the props type for a shadcn component by name. * Derives the TypeScript type directly from the Zod schema, * so component implementations stay in sync with catalog definitions. * * @example * ```ts * type CardProps = ShadcnProps<"Card">; * // { title: string | null; description: string | null; ... } * ``` */ export type ShadcnProps = z.output<(typeof shadcnComponentDefinitions)[K]["props"]>; //# sourceMappingURL=catalog.d.ts.map