@create-ui/cli 0.1.0-beta.0 → 0.1.0-beta.1

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.
@@ -1,3 +0,0 @@
1
- import {aa}from'./chunk-BVZRYLRW.js';import {x as x$1}from'./chunk-TIYHWTW7.js';import b from'fuzzysort';import {z as z$1}from'zod';async function I(r,t){let{query:g,limit:s,offset:u,config:n,useCache:f}=t||{},e=[];for(let o of r){let p=((await aa(o,{config:n,useCache:f})).items||[]).map(m=>({name:m.name,type:m.type,description:m.description,registry:o,addCommandArgument:A(m.name,o)}));e=e.concat(p);}g&&(e=E(e,{query:g,limit:e.length,keys:["name","description"]}));let c=u||0,i=s||e.length,l=e.length,y={pagination:{total:l,offset:c,limit:i,hasMore:c+i<l},items:e.slice(c,c+i)};return x$1.parse(y)}var x=z$1.object({name:z$1.string(),type:z$1.string().optional(),description:z$1.string().optional(),registry:z$1.string().optional(),addCommandArgument:z$1.string().optional()}).passthrough();function E(r,t){t={limit:100,threshold:-1e4,...t};let s=b.go(t.query,r,{keys:t.keys,threshold:t.threshold,limit:t.limit}).map(u=>u.obj);return z$1.array(x).parse(s)}function z(r){try{return new URL(r),!0}catch{return false}}function A(r,t){if(!z(t))return `${t}/${r}`;let g=t.indexOf("://")+3,s=t.indexOf("/",g);if(s===-1){let o=t.indexOf("?",g);if(o!==-1){let d=t.substring(0,o),m=t.substring(o).replace(/\bregistry\b/g,r);return d+m}return t}let u=t.substring(0,s),n=t.substring(s),f=n.indexOf("?")!==-1?n.indexOf("?"):n.length,e=n.substring(0,f),c=n.substring(f),i=e.lastIndexOf("registry"),l=e;i!==-1&&(l=e.substring(0,i)+r+e.substring(i+8));let y=c.replace(/\bregistry\b/g,r);return u+l+y}
2
- export{I as a};//# sourceMappingURL=chunk-JWZJQI2B.js.map
3
- //# sourceMappingURL=chunk-JWZJQI2B.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/registry/search.ts"],"names":["searchRegistries","registries","options","query","limit","offset","config","useCache","allItems","registry","itemsWithRegistry","getRegistry","item","buildRegistryItemNameFromRegistry","searchItems","paginationOffset","paginationLimit","totalItems","result","searchResultsSchema","searchableItemSchema","z","items","results","fuzzysort","isUrl","string","name","protocolEnd","hostEnd","queryStart","beforeQuery","updatedQuery","hostPart","pathAndQuery","pathEnd","pathOnly","queryAndAfter","lastIndex","updatedPath"],"mappings":"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","file":"chunk-JWZJQI2B.js","sourcesContent":["import { searchResultItemSchema, searchResultsSchema } from \"@/src/schema\"\nimport { Config } from \"@/src/utils/get-config\"\nimport fuzzysort from \"fuzzysort\"\nimport { z } from \"zod\"\n\nimport { getRegistry } from \"./api\"\n\nexport async function searchRegistries(\n registries: string[],\n options?: {\n query?: string\n limit?: number\n offset?: number\n config?: Partial<Config>\n useCache?: boolean\n }\n) {\n const { query, limit, offset, config, useCache } = options || {}\n\n let allItems: z.infer<typeof searchResultItemSchema>[] = []\n\n for (const registry of registries) {\n const registryData = await getRegistry(registry, { config, useCache })\n\n const itemsWithRegistry = (registryData.items || []).map((item) => ({\n name: item.name,\n type: item.type,\n description: item.description,\n registry: registry,\n addCommandArgument: buildRegistryItemNameFromRegistry(\n item.name,\n registry\n ),\n }))\n\n allItems = allItems.concat(itemsWithRegistry)\n }\n\n if (query) {\n allItems = searchItems(allItems, {\n query,\n limit: allItems.length,\n keys: [\"name\", \"description\"],\n }) as z.infer<typeof searchResultItemSchema>[]\n }\n\n const paginationOffset = offset || 0\n const paginationLimit = limit || allItems.length\n const totalItems = allItems.length\n\n const result: z.infer<typeof searchResultsSchema> = {\n pagination: {\n total: totalItems,\n offset: paginationOffset,\n limit: paginationLimit,\n hasMore: paginationOffset + paginationLimit < totalItems,\n },\n items: allItems.slice(paginationOffset, paginationOffset + paginationLimit),\n }\n\n return searchResultsSchema.parse(result)\n}\n\nconst searchableItemSchema = z\n .object({\n name: z.string(),\n type: z.string().optional(),\n description: z.string().optional(),\n registry: z.string().optional(),\n addCommandArgument: z.string().optional(),\n })\n .passthrough()\n\ntype SearchableItem = z.infer<typeof searchableItemSchema>\n\nfunction searchItems<\n T extends {\n name: string\n type?: string\n description?: string\n addCommandArgument?: string\n [key: string]: any\n } = SearchableItem\n>(\n items: T[],\n options: {\n query: string\n } & Pick<Parameters<typeof fuzzysort.go>[2], \"keys\" | \"threshold\" | \"limit\">\n) {\n options = {\n limit: 100,\n threshold: -10000,\n ...options,\n }\n\n const searchResults = fuzzysort.go(options.query, items, {\n keys: options.keys,\n threshold: options.threshold,\n limit: options.limit,\n })\n\n const results = searchResults.map((result) => result.obj)\n\n return z.array(searchableItemSchema).parse(results)\n}\n\nfunction isUrl(string: string): boolean {\n try {\n new URL(string)\n return true\n } catch {\n return false\n }\n}\n\n// Builds the registry item name for the add command.\n// For namespaced registries, returns \"registry/item\".\n// For URL registries, replaces \"registry\" with the item name in the URL.\nexport function buildRegistryItemNameFromRegistry(\n name: string,\n registry: string\n) {\n // If registry is not a URL, return namespace format.\n if (!isUrl(registry)) {\n return `${registry}/${name}`\n }\n\n // Find where the host part ends in the original string.\n const protocolEnd = registry.indexOf(\"://\") + 3\n const hostEnd = registry.indexOf(\"/\", protocolEnd)\n\n if (hostEnd === -1) {\n // No path, check for query params.\n const queryStart = registry.indexOf(\"?\", protocolEnd)\n if (queryStart !== -1) {\n // Has query params but no path.\n const beforeQuery = registry.substring(0, queryStart)\n const queryAndAfter = registry.substring(queryStart)\n // Replace \"registry\" with itemName in query params only.\n const updatedQuery = queryAndAfter.replace(/\\bregistry\\b/g, name)\n return beforeQuery + updatedQuery\n }\n // No path or query, return as is.\n return registry\n }\n\n // Split at host boundary.\n const hostPart = registry.substring(0, hostEnd)\n const pathAndQuery = registry.substring(hostEnd)\n\n // Find all occurrences of \"registry\" in path and query.\n // Replace only the last occurrence in the path segment.\n const pathEnd =\n pathAndQuery.indexOf(\"?\") !== -1\n ? pathAndQuery.indexOf(\"?\")\n : pathAndQuery.length\n const pathOnly = pathAndQuery.substring(0, pathEnd)\n const queryAndAfter = pathAndQuery.substring(pathEnd)\n\n // Replace the last occurrence of \"registry\" in the path.\n const lastIndex = pathOnly.lastIndexOf(\"registry\")\n let updatedPath = pathOnly\n if (lastIndex !== -1) {\n updatedPath =\n pathOnly.substring(0, lastIndex) +\n name +\n pathOnly.substring(lastIndex + \"registry\".length)\n }\n\n // Replace all occurrences of \"registry\" in query params.\n const updatedQuery = queryAndAfter.replace(/\\bregistry\\b/g, name)\n\n return hostPart + updatedPath + updatedQuery\n}\n"]}
@@ -1,2 +0,0 @@
1
- import {z as z$1}from'zod';var c=z$1.union([z$1.string().refine(r=>r.includes("{name}"),{message:"Registry URL must include {name} placeholder"}),z$1.object({url:z$1.string().refine(r=>r.includes("{name}"),{message:"Registry URL must include {name} placeholder"}),params:z$1.record(z$1.string(),z$1.string()).optional(),headers:z$1.record(z$1.string(),z$1.string()).optional()})]),p=z$1.record(z$1.string().refine(r=>r.startsWith("@"),{message:"Registry names must start with @ (e.g., @acme, @my-company)"}),c),n=z$1.object({$schema:z$1.string().optional(),style:z$1.string().optional(),rsc:z$1.coerce.boolean().default(false),tsx:z$1.coerce.boolean().default(true),tailwind:z$1.object({config:z$1.string().optional(),css:z$1.string(),baseColor:z$1.string().optional(),cssVariables:z$1.boolean().default(true),prefix:z$1.string().default("").optional()}),iconLibrary:z$1.string().optional(),menuColor:z$1.enum(["default","inverted"]).default("default").optional(),menuAccent:z$1.enum(["subtle","bold"]).default("subtle").optional(),aliases:z$1.object({components:z$1.string(),utils:z$1.string(),ui:z$1.string().optional(),lib:z$1.string().optional(),hooks:z$1.string().optional()}),registries:p.optional()}).strict(),l=n.extend({resolvedPaths:z$1.object({cwd:z$1.string(),tailwindConfig:z$1.string(),tailwindCss:z$1.string(),utils:z$1.string(),components:z$1.string(),lib:z$1.string(),hooks:z$1.string(),ui:z$1.string()})}),I=z$1.record(l),s=z$1.enum(["registry:lib","registry:block","registry:component","registry:ui","registry:hook","registry:page","registry:file","registry:theme","registry:font-variant","registry:style","registry:item","registry:base","registry:example","registry:internal"]),m=z$1.discriminatedUnion("type",[z$1.object({path:z$1.string(),content:z$1.string().optional(),type:z$1.enum(["registry:file","registry:page"]),target:z$1.string()}),z$1.object({path:z$1.string(),content:z$1.string().optional(),type:s.exclude(["registry:file","registry:page"]),target:z$1.string().optional()})]),y=z$1.object({config:z$1.object({content:z$1.array(z$1.string()).optional(),theme:z$1.record(z$1.string(),z$1.any()).optional(),plugins:z$1.array(z$1.string()).optional()}).optional()}),d=z$1.object({light:z$1.record(z$1.string(),z$1.string()).optional(),dark:z$1.record(z$1.string(),z$1.string()).optional()}),o=z$1.record(z$1.string(),d),h=z$1.object({50:z$1.string(),100:z$1.string(),200:z$1.string(),300:z$1.string(),400:z$1.string(),500:z$1.string(),600:z$1.string(),700:z$1.string(),800:z$1.string(),900:z$1.string(),950:z$1.string(),"alpha-0":z$1.string(),"alpha-8":z$1.string(),"alpha-16":z$1.string(),"alpha-24":z$1.string(),"alpha-32":z$1.string(),"alpha-48":z$1.string()}),a=z$1.lazy(()=>z$1.union([z$1.string(),z$1.array(z$1.union([z$1.string(),z$1.record(z$1.string(),z$1.string())])),z$1.record(z$1.string(),a)])),u=z$1.record(z$1.string(),a),f=z$1.record(z$1.string(),z$1.string()),i=z$1.object({family:z$1.string(),provider:z$1.literal("google"),import:z$1.string(),variable:z$1.string(),weight:z$1.array(z$1.string()).optional(),subsets:z$1.array(z$1.string()).optional()}),b=z$1.object({display:i,body:i,numeric:i}),e=z$1.object({$schema:z$1.string().optional(),extends:z$1.string().optional(),name:z$1.string(),title:z$1.string().optional(),author:z$1.string().min(2).optional(),description:z$1.string().optional(),dependencies:z$1.array(z$1.string()).optional(),devDependencies:z$1.array(z$1.string()).optional(),registryDependencies:z$1.array(z$1.string()).optional(),files:z$1.array(m).optional(),tailwind:y.optional(),cssVars:o.optional(),css:u.optional(),envVars:f.optional(),meta:z$1.record(z$1.string(),z$1.any()).optional(),docs:z$1.string().optional(),categories:z$1.array(z$1.string()).optional()}),g=z$1.discriminatedUnion("type",[e.extend({type:z$1.literal("registry:base"),config:n.deepPartial().optional()}),e.extend({type:z$1.literal("registry:font-variant"),fontVariant:b}),e.extend({type:z$1.literal("registry:theme"),primary:h.optional()}),e.extend({type:s.exclude(["registry:base","registry:font-variant","registry:theme"])})]),C=z$1.object({name:z$1.string(),homepage:z$1.string(),items:z$1.array(g)}),R=z$1.array(g),v=z$1.array(z$1.object({name:z$1.string(),label:z$1.string()})),V=z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.string())),w=z$1.object({inlineColors:z$1.object({light:z$1.record(z$1.string(),z$1.string()),dark:z$1.record(z$1.string(),z$1.string())}),cssVars:o,inlineColorsTemplate:z$1.string(),cssVarsTemplate:z$1.string()}),z=e.pick({dependencies:true,devDependencies:true,files:true,tailwind:true,cssVars:true,css:true,envVars:true,docs:true}).extend({fonts:z$1.array(e.extend({type:z$1.literal("registry:font"),role:z$1.enum(["display","body","numeric"]),font:i})).optional()}),x=z$1.object({name:z$1.string(),type:z$1.string().optional(),description:z$1.string().optional(),registry:z$1.string(),addCommandArgument:z$1.string()}),k=z$1.object({pagination:z$1.object({total:z$1.number(),offset:z$1.number(),limit:z$1.number(),hasMore:z$1.boolean()}),items:z$1.array(x)}),F=z$1.record(z$1.string().regex(/^@[a-zA-Z0-9][a-zA-Z0-9-_]*$/),z$1.string()),T=z$1.array(z$1.object({name:z$1.string(),homepage:z$1.string().optional(),url:z$1.string(),description:z$1.string().optional()})),S=z$1.object({name:z$1.string(),title:z$1.string(),description:z$1.string(),base:z$1.string(),style:z$1.string(),baseColor:z$1.string(),theme:z$1.string(),iconLibrary:z$1.string(),fontVariant:z$1.string(),menuAccent:z$1.enum(["subtle","bold"]),menuColor:z$1.enum(["default","inverted"]),radius:z$1.string()}),A=z$1.object({presets:z$1.array(S)});export{S as A,A as B,c as a,p as b,n as c,l as d,I as e,s as f,m as g,y as h,o as i,h as j,u as k,f as l,i as m,b as n,e as o,g as p,C as q,R as r,v as s,V as t,w as u,z as v,x as w,k as x,F as y,T as z};//# sourceMappingURL=chunk-TIYHWTW7.js.map
2
- //# sourceMappingURL=chunk-TIYHWTW7.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/registry/schema.ts"],"names":["registryConfigItemSchema","z","s","registryConfigSchema","key","rawConfigSchema","configSchema","workspaceConfigSchema","registryItemTypeSchema","registryItemFileSchema","registryItemTailwindSchema","cssVarsCategorySchema","registryItemCssVarsSchema","registryItemThemePrimarySchema","cssValueSchema","registryItemCssSchema","registryItemEnvVarsSchema","registryItemFontSchema","registryItemFontVariantSchema","registryItemCommonSchema","registryItemSchema","registrySchema","registryIndexSchema","stylesSchema","iconsSchema","registryBaseColorSchema","registryResolvedItemsTreeSchema","searchResultItemSchema","searchResultsSchema","registriesIndexSchema","registriesSchema","presetSchema","configJsonSchema"],"mappings":"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","file":"chunk-TIYHWTW7.js","sourcesContent":["import { z } from \"zod\"\n\n// Note: if you edit the schema here, you must also edit the schema in the\n// apps/v4/public/schema/registry-item.json file.\n\nexport const registryConfigItemSchema = z.union([\n // Simple string format: \"https://example.com/{name}.json\"\n z.string().refine((s) => s.includes(\"{name}\"), {\n message: \"Registry URL must include {name} placeholder\",\n }),\n // Advanced object format with auth options\n z.object({\n url: z.string().refine((s) => s.includes(\"{name}\"), {\n message: \"Registry URL must include {name} placeholder\",\n }),\n params: z.record(z.string(), z.string()).optional(),\n headers: z.record(z.string(), z.string()).optional(),\n }),\n])\n\nexport const registryConfigSchema = z.record(\n z.string().refine((key) => key.startsWith(\"@\"), {\n message: \"Registry names must start with @ (e.g., @acme, @my-company)\",\n }),\n registryConfigItemSchema\n)\n\nexport const rawConfigSchema = z\n .object({\n $schema: z.string().optional(),\n style: z.string().optional(),\n rsc: z.coerce.boolean().default(false),\n tsx: z.coerce.boolean().default(true),\n tailwind: z.object({\n config: z.string().optional(),\n css: z.string(),\n baseColor: z.string().optional(),\n cssVariables: z.boolean().default(true),\n prefix: z.string().default(\"\").optional(),\n }),\n iconLibrary: z.string().optional(),\n menuColor: z.enum([\"default\", \"inverted\"]).default(\"default\").optional(),\n menuAccent: z.enum([\"subtle\", \"bold\"]).default(\"subtle\").optional(),\n aliases: z.object({\n components: z.string(),\n utils: z.string(),\n ui: z.string().optional(),\n lib: z.string().optional(),\n hooks: z.string().optional(),\n }),\n registries: registryConfigSchema.optional(),\n })\n .strict()\n\nexport const configSchema = rawConfigSchema.extend({\n resolvedPaths: z.object({\n cwd: z.string(),\n tailwindConfig: z.string(),\n tailwindCss: z.string(),\n utils: z.string(),\n components: z.string(),\n lib: z.string(),\n hooks: z.string(),\n ui: z.string(),\n }),\n})\n\n// TODO: type the key.\n// Okay for now since I don't want a breaking change.\nexport const workspaceConfigSchema = z.record(configSchema)\n\nexport const registryItemTypeSchema = z.enum([\n \"registry:lib\",\n \"registry:block\",\n \"registry:component\",\n \"registry:ui\",\n \"registry:hook\",\n \"registry:page\",\n \"registry:file\",\n \"registry:theme\",\n \"registry:font-variant\",\n \"registry:style\",\n \"registry:item\",\n \"registry:base\",\n\n // Internal use only.\n \"registry:example\",\n \"registry:internal\",\n])\n\nexport const registryItemFileSchema = z.discriminatedUnion(\"type\", [\n // Target is required for registry:file and registry:page\n z.object({\n path: z.string(),\n content: z.string().optional(),\n type: z.enum([\"registry:file\", \"registry:page\"]),\n target: z.string(),\n }),\n z.object({\n path: z.string(),\n content: z.string().optional(),\n type: registryItemTypeSchema.exclude([\"registry:file\", \"registry:page\"]),\n target: z.string().optional(),\n }),\n])\n\nexport const registryItemTailwindSchema = z.object({\n config: z\n .object({\n content: z.array(z.string()).optional(),\n theme: z.record(z.string(), z.any()).optional(),\n plugins: z.array(z.string()).optional(),\n })\n .optional(),\n})\n\nconst cssVarsCategorySchema = z.object({\n light: z.record(z.string(), z.string()).optional(),\n dark: z.record(z.string(), z.string()).optional(),\n})\n\nexport const registryItemCssVarsSchema = z.record(\n z.string(), // \"color\" | \"radius\" | \"shadow\" | \"font\" | \"typography\" | \"spacing\" | ...\n cssVarsCategorySchema\n)\n\nexport const registryItemThemePrimarySchema = z.object({\n \"50\": z.string(),\n \"100\": z.string(),\n \"200\": z.string(),\n \"300\": z.string(),\n \"400\": z.string(),\n \"500\": z.string(),\n \"600\": z.string(),\n \"700\": z.string(),\n \"800\": z.string(),\n \"900\": z.string(),\n \"950\": z.string(),\n \"alpha-0\": z.string(),\n \"alpha-8\": z.string(),\n \"alpha-16\": z.string(),\n \"alpha-24\": z.string(),\n \"alpha-32\": z.string(),\n \"alpha-48\": z.string(),\n})\n\n// Recursive type for CSS properties that supports empty objects at any level.\nconst cssValueSchema: z.ZodType<any> = z.lazy(() =>\n z.union([\n z.string(),\n z.array(z.union([z.string(), z.record(z.string(), z.string())])),\n z.record(z.string(), cssValueSchema),\n ])\n)\n\nexport const registryItemCssSchema = z.record(z.string(), cssValueSchema)\n\nexport const registryItemEnvVarsSchema = z.record(z.string(), z.string())\n\n// Font metadata schema for registry:font items.\nexport const registryItemFontSchema = z.object({\n family: z.string(),\n provider: z.literal(\"google\"),\n import: z.string(),\n variable: z.string(),\n weight: z.array(z.string()).optional(),\n subsets: z.array(z.string()).optional(),\n})\n\n// Font variant schema: groups three role-based fonts together.\nexport const registryItemFontVariantSchema = z.object({\n display: registryItemFontSchema,\n body: registryItemFontSchema,\n numeric: registryItemFontSchema,\n})\n\n// Common fields shared by all registry items.\nexport const registryItemCommonSchema = z.object({\n $schema: z.string().optional(),\n extends: z.string().optional(),\n name: z.string(),\n title: z.string().optional(),\n author: z.string().min(2).optional(),\n description: z.string().optional(),\n dependencies: z.array(z.string()).optional(),\n devDependencies: z.array(z.string()).optional(),\n registryDependencies: z.array(z.string()).optional(),\n files: z.array(registryItemFileSchema).optional(),\n tailwind: registryItemTailwindSchema.optional(),\n cssVars: registryItemCssVarsSchema.optional(),\n css: registryItemCssSchema.optional(),\n envVars: registryItemEnvVarsSchema.optional(),\n meta: z.record(z.string(), z.any()).optional(),\n docs: z.string().optional(),\n categories: z.array(z.string()).optional(),\n})\n\n// registry:base has a config field, registry:font has a font field, registry:theme has a primary field.\nexport const registryItemSchema = z.discriminatedUnion(\"type\", [\n registryItemCommonSchema.extend({\n type: z.literal(\"registry:base\"),\n config: rawConfigSchema.deepPartial().optional(),\n }),\n registryItemCommonSchema.extend({\n type: z.literal(\"registry:font-variant\"),\n fontVariant: registryItemFontVariantSchema,\n }),\n registryItemCommonSchema.extend({\n type: z.literal(\"registry:theme\"),\n primary: registryItemThemePrimarySchema.optional(),\n }),\n registryItemCommonSchema.extend({\n type: registryItemTypeSchema.exclude([\n \"registry:base\",\n \"registry:font-variant\",\n \"registry:theme\",\n ]),\n }),\n])\n\nexport type RegistryItem = z.infer<typeof registryItemSchema>\n\n// Helper type for registry:base items specifically.\nexport type RegistryBaseItem = Extract<RegistryItem, { type: \"registry:base\" }>\n\n// Internal type for decomposed font items used by the resolver/updater pipeline.\nexport type FontRole = \"display\" | \"body\" | \"numeric\"\n\nexport type RegistryFontItem = {\n name: string\n type: \"registry:font\"\n role: FontRole\n font: z.infer<typeof registryItemFontSchema>\n}\n\n// Helper type for registry:font-variant items specifically.\nexport type RegistryFontVariantItem = Extract<\n RegistryItem,\n { type: \"registry:font-variant\" }\n>\n\nexport const registrySchema = z.object({\n name: z.string(),\n homepage: z.string(),\n items: z.array(registryItemSchema),\n})\n\nexport type Registry = z.infer<typeof registrySchema>\n\nexport const registryIndexSchema = z.array(registryItemSchema)\n\nexport const stylesSchema = z.array(\n z.object({\n name: z.string(),\n label: z.string(),\n })\n)\n\nexport const iconsSchema = z.record(\n z.string(),\n z.record(z.string(), z.string())\n)\n\nexport const registryBaseColorSchema = z.object({\n inlineColors: z.object({\n light: z.record(z.string(), z.string()),\n dark: z.record(z.string(), z.string()),\n }),\n cssVars: registryItemCssVarsSchema,\n inlineColorsTemplate: z.string(),\n cssVarsTemplate: z.string(),\n})\n\nexport const registryResolvedItemsTreeSchema = registryItemCommonSchema\n .pick({\n dependencies: true,\n devDependencies: true,\n files: true,\n tailwind: true,\n cssVars: true,\n css: true,\n envVars: true,\n docs: true,\n })\n .extend({\n fonts: z\n .array(\n registryItemCommonSchema.extend({\n type: z.literal(\"registry:font\"),\n role: z.enum([\"display\", \"body\", \"numeric\"]),\n font: registryItemFontSchema,\n })\n )\n .optional(),\n })\n\nexport const searchResultItemSchema = z.object({\n name: z.string(),\n type: z.string().optional(),\n description: z.string().optional(),\n registry: z.string(),\n addCommandArgument: z.string(),\n})\n\nexport const searchResultsSchema = z.object({\n pagination: z.object({\n total: z.number(),\n offset: z.number(),\n limit: z.number(),\n hasMore: z.boolean(),\n }),\n items: z.array(searchResultItemSchema),\n})\n\n// Legacy schema for getRegistriesIndex() backward compatibility.\nexport const registriesIndexSchema = z.record(\n z.string().regex(/^@[a-zA-Z0-9][a-zA-Z0-9-_]*$/),\n z.string()\n)\n\n// New schema for getRegistries().\nexport const registriesSchema = z.array(\n z.object({\n name: z.string(),\n homepage: z.string().optional(),\n url: z.string(),\n description: z.string().optional(),\n })\n)\n\nexport const presetSchema = z.object({\n name: z.string(),\n title: z.string(),\n description: z.string(),\n base: z.string(),\n style: z.string(),\n baseColor: z.string(),\n theme: z.string(),\n iconLibrary: z.string(),\n fontVariant: z.string(),\n menuAccent: z.enum([\"subtle\", \"bold\"]),\n menuColor: z.enum([\"default\", \"inverted\"]),\n radius: z.string(),\n})\n\nexport type Preset = z.infer<typeof presetSchema>\n\nexport const configJsonSchema = z.object({\n presets: z.array(presetSchema),\n})\n\nexport type ConfigJson = z.infer<typeof configJsonSchema>\n"]}