UNPKG

shadcn-vue

Version:
153 lines (151 loc) 5.68 kB
import { z } from "zod"; //#region src/registry/schema.ts const registryItemTypeSchema = z.enum([ "registry:lib", "registry:block", "registry:component", "registry:ui", "registry:hook", "registry:composable", "registry:page", "registry:file", "registry:theme", "registry:style", "registry:item", "registry:example", "registry:internal" ]); const registryItemFileSchema = z.discriminatedUnion("type", [z.object({ path: z.string(), content: z.string().optional(), type: z.enum(["registry:file", "registry:page"]), target: z.string() }), z.object({ path: z.string(), content: z.string().optional(), type: registryItemTypeSchema.exclude(["registry:file", "registry:page"]), target: z.string().optional() })]); const registryItemTailwindSchema = z.object({ config: z.object({ content: z.array(z.string()).optional(), theme: z.record(z.string(), z.any()).optional(), plugins: z.array(z.string()).optional() }).optional() }); const registryItemCssVarsSchema = z.object({ theme: z.record(z.string(), z.string()).optional(), light: z.record(z.string(), z.string()).optional(), dark: z.record(z.string(), z.string()).optional() }); const registryItemCssSchema = z.record(z.string(), z.lazy(() => z.union([z.string(), z.record(z.string(), z.union([z.string(), z.record(z.string(), z.string())]))]))); const registryItemEnvVarsSchema = z.record(z.string(), z.string()); const registryItemSchema = z.object({ $schema: z.string().optional(), extends: z.string().optional(), name: z.string(), type: registryItemTypeSchema, title: z.string().optional(), author: z.string().min(2).optional(), description: z.string().optional(), dependencies: z.array(z.string()).optional(), devDependencies: z.array(z.string()).optional(), registryDependencies: z.array(z.string()).optional(), files: z.array(registryItemFileSchema).optional(), tailwind: registryItemTailwindSchema.optional(), cssVars: registryItemCssVarsSchema.optional(), css: registryItemCssSchema.optional(), envVars: registryItemEnvVarsSchema.optional(), meta: z.record(z.string(), z.any()).optional(), docs: z.string().optional(), categories: z.array(z.string()).optional() }); const registrySchema = z.object({ name: z.string(), homepage: z.string(), items: z.array(registryItemSchema) }); const registryIndexSchema = z.array(registryItemSchema); const stylesSchema = z.array(z.object({ name: z.string(), label: z.string() })); const iconsSchema = z.record(z.string(), z.record(z.string(), z.string())); const registryBaseColorSchema = z.object({ inlineColors: z.object({ light: z.record(z.string(), z.string()), dark: z.record(z.string(), z.string()) }), cssVars: registryItemCssVarsSchema, cssVarsV4: registryItemCssVarsSchema.optional(), inlineColorsTemplate: z.string(), cssVarsTemplate: z.string() }); const registryResolvedItemsTreeSchema = registryItemSchema.pick({ dependencies: true, devDependencies: true, files: true, tailwind: true, cssVars: true, css: true, envVars: true, docs: true }); const registryConfigItemSchema = z.union([z.string().refine((s) => s.includes("{name}"), { message: "Registry URL must include {name} placeholder" }), z.object({ url: z.string().refine((s) => s.includes("{name}"), { message: "Registry URL must include {name} placeholder" }), params: z.record(z.string(), z.string()).optional(), headers: z.record(z.string(), z.string()).optional() })]); const registryConfigSchema = z.record(z.string().refine((key) => key.startsWith("@"), { message: "Registry names must start with @ (e.g., @v0, @acme)" }), registryConfigItemSchema); const rawConfigSchema = z.object({ $schema: z.string().optional(), style: z.string(), typescript: z.boolean().default(true), tailwind: z.object({ config: z.string().optional(), css: z.string(), baseColor: z.string(), cssVariables: z.boolean().default(true), prefix: z.string().default("").optional() }), iconLibrary: z.string().optional(), aliases: z.object({ components: z.string(), utils: z.string(), ui: z.string().optional(), lib: z.string().optional(), hooks: z.string().optional(), composables: z.string().optional() }), registries: registryConfigSchema.optional() }).strict(); const configSchema = rawConfigSchema.extend({ resolvedPaths: z.object({ cwd: z.string(), tailwindConfig: z.string(), tailwindCss: z.string(), utils: z.string(), components: z.string(), lib: z.string(), hooks: z.string().optional(), composables: z.string().optional(), ui: z.string() }) }); const workspaceConfigSchema = z.record(configSchema); const searchResultItemSchema = z.object({ name: z.string(), type: z.string().optional(), description: z.string().optional(), registry: z.string(), addCommandArgument: z.string() }); const searchResultsSchema = z.object({ pagination: z.object({ total: z.number(), offset: z.number(), limit: z.number(), hasMore: z.boolean() }), items: z.array(searchResultItemSchema) }); const registriesIndexSchema = z.record(z.string().regex(/^@[a-zA-Z0-9][a-zA-Z0-9-_]*$/), z.string()); //#endregion export { registrySchema as _, registryBaseColorSchema as a, stylesSchema as b, registryIndexSchema as c, registryItemEnvVarsSchema as d, registryItemFileSchema as f, registryResolvedItemsTreeSchema as g, registryItemTypeSchema as h, registriesIndexSchema as i, registryItemCssSchema as l, registryItemTailwindSchema as m, iconsSchema as n, registryConfigItemSchema as o, registryItemSchema as p, rawConfigSchema as r, registryConfigSchema as s, configSchema as t, registryItemCssVarsSchema as u, searchResultItemSchema as v, workspaceConfigSchema as x, searchResultsSchema as y }; //# sourceMappingURL=schema-Brc22MYG.js.map