@create-ui/cli 0.1.0-beta.0 ā 0.5.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 +194 -24
- package/dist/chunk-EWAP55CF.js +18 -0
- package/dist/chunk-EWAP55CF.js.map +1 -0
- package/dist/chunk-MK3CCMH4.js +3 -0
- package/dist/chunk-MK3CCMH4.js.map +1 -0
- package/dist/chunk-UVIUVCLG.js +64 -0
- package/dist/chunk-UVIUVCLG.js.map +1 -0
- package/dist/chunk-Y7WZRQWW.js +2 -0
- package/dist/chunk-Y7WZRQWW.js.map +1 -0
- package/dist/index.d.ts +43 -111
- package/dist/index.js +62 -61
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/registry/index.d.ts +3 -20
- package/dist/registry/index.js +1 -1
- package/dist/schema/index.d.ts +123 -432
- package/dist/schema/index.js +1 -1
- package/dist/skills/createui/SKILL.md +212 -0
- package/dist/skills/createui/agents/openai.yml +5 -0
- package/dist/skills/createui/assets/createui-small.png +0 -0
- package/dist/skills/createui/assets/createui.png +0 -0
- package/dist/skills/createui/cli.md +309 -0
- package/dist/skills/createui/contributing.md +213 -0
- package/dist/skills/createui/customization.md +284 -0
- package/dist/skills/createui/evals/evals.json +47 -0
- package/dist/skills/createui/mcp.md +151 -0
- package/dist/skills/createui/rules/composition.md +249 -0
- package/dist/skills/createui/rules/forms.md +301 -0
- package/dist/skills/createui/rules/icons.md +130 -0
- package/dist/skills/createui/rules/styling.md +253 -0
- package/dist/utils/index.d.ts +2 -5
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +4 -3
- package/dist/chunk-7MKTQPYI.js +0 -72
- package/dist/chunk-7MKTQPYI.js.map +0 -1
- package/dist/chunk-BVZRYLRW.js +0 -32
- package/dist/chunk-BVZRYLRW.js.map +0 -1
- package/dist/chunk-JWZJQI2B.js +0 -3
- package/dist/chunk-JWZJQI2B.js.map +0 -1
- package/dist/chunk-TIYHWTW7.js +0 -2
- package/dist/chunk-TIYHWTW7.js.map +0 -1
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import {a}from'./chunk-MK3CCMH4.js';import {S as S$1,H,f as f$1,G}from'./chunk-EWAP55CF.js';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {ListToolsRequestSchema,CallToolRequestSchema}from'@modelcontextprotocol/sdk/types.js';import o from'dedent';import {z}from'zod';import {zodToJsonSchema}from'zod-to-json-schema';import {detect}from'@antfu/ni';async function v(r,{withFallback:e}={withFallback:false}){let n=await detect({programmatic:true,cwd:r});if(n==="yarn@berry")return "yarn";if(n==="pnpm@6")return "pnpm";if(n==="bun")return "bun";if(n==="deno")return "deno";if(!e)return n??"npm";let i=process.env.npm_config_user_agent||"";return i.startsWith("yarn")?"yarn":i.startsWith("pnpm")?"pnpm":i.startsWith("bun")?"bun":"npm"}async function $(r){let e=await v(r);return e==="pnpm"?"pnpm dlx":e==="bun"?"bunx":"npx"}var q="@create-ui/cli";async function u(r){return `${await $(process.cwd())} ${q} ${r}`}function y(r){return r.startsWith("@")&&r.includes("/")?r.slice(r.indexOf("/")+1):r}async function f(r=process.cwd()){try{let e=await f$1(r);if(e)return e}catch{}return G({})}async function x(r,e){let{query:n,registries:i}=e||{},s=await Promise.all(r.items.map(async c=>{let g=[`- ${c.name}`];return c.type&&g.push(`(${c.type})`),c.description&&g.push(`- ${c.description}`),c.registry&&g.push(`[${c.registry}]`),g.push(`
|
|
2
|
+
Add command: \`${await u(`add ${c.addCommandArgument}`)}\``),g.join(" ")})),a=`Found ${r.pagination.total} items`;n&&(a+=` matching "${n}"`),i&&i.length>0&&(a+=` in registries ${i.join(", ")}`),a+=":";let m=`Showing items ${r.pagination.offset+1}-${Math.min(r.pagination.offset+r.pagination.limit,r.pagination.total)} of ${r.pagination.total}:`,d=`${a}
|
|
3
|
+
|
|
4
|
+
${m}
|
|
5
|
+
|
|
6
|
+
${s.join(`
|
|
7
|
+
|
|
8
|
+
`)}`;return r.pagination.hasMore&&(d+=`
|
|
9
|
+
|
|
10
|
+
More items available. Use offset: ${r.pagination.offset+r.pagination.limit} to see the next page.`),d}function j(r){return r.map(e=>[`## ${e.name}`,e.description?`
|
|
11
|
+
${e.description}
|
|
12
|
+
`:"",e.type?`**Type:** ${e.type}`:"",e.files&&e.files.length>0?`**Files:** ${e.files.length} file(s)`:"",e.dependencies&&e.dependencies.length>0?`**Dependencies:** ${e.dependencies.join(", ")}`:"",e.devDependencies&&e.devDependencies.length>0?`**Dev Dependencies:** ${e.devDependencies.join(", ")}`:""].filter(Boolean).join(`
|
|
13
|
+
`))}function S(r,e){let n=r.map(s=>{let a=[`## Example: ${s.name}`,s.description?`
|
|
14
|
+
${s.description}
|
|
15
|
+
`:""];return s.files?.length&&s.files.forEach(m=>{m.content&&(a.push(`### Code (${m.path}):
|
|
16
|
+
`),a.push("```tsx"),a.push(m.content),a.push("```"));}),a.filter(Boolean).join(`
|
|
17
|
+
`)});return `# Usage Examples
|
|
18
|
+
|
|
19
|
+
Found ${r.length} example${r.length>1?"s":""} matching "${e}":
|
|
20
|
+
`+n.join(`
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
`)}var k=new Server({name:"createui",version:"1.0.0"},{capabilities:{resources:{},tools:{}}});k.setRequestHandler(ListToolsRequestSchema,async()=>({tools:[{name:"get_project_registries",description:"Get the registry used by this project. createui uses a single built-in @createui registry.",inputSchema:zodToJsonSchema(z.object({}))},{name:"list_items_in_registries",description:"List items from registries (requires components.json - use init_project if missing)",inputSchema:zodToJsonSchema(z.object({registries:z.array(z.string()).describe("Array of registry names to search (e.g., ['@createui', '@acme'])"),limit:z.number().optional().describe("Maximum number of items to return"),offset:z.number().optional().describe("Number of items to skip for pagination")}))},{name:"search_items_in_registries",description:"Search for components in registries using fuzzy matching (requires components.json). After finding an item, use get_item_examples_from_registries to see usage examples.",inputSchema:zodToJsonSchema(z.object({registries:z.array(z.string()).describe("Array of registry names to search (e.g., ['@createui', '@acme'])"),query:z.string().describe("Search query string for fuzzy matching against item names and descriptions"),limit:z.number().optional().describe("Maximum number of items to return"),offset:z.number().optional().describe("Number of items to skip for pagination")}))},{name:"view_items_in_registries",description:"View detailed information about specific registry items including the name, description, type and files content. For usage examples, use get_item_examples_from_registries instead.",inputSchema:zodToJsonSchema(z.object({items:z.array(z.string()).describe("Array of item names (e.g., ['button', 'card']). A '@createui/' prefix is also accepted.")}))},{name:"get_item_examples_from_registries",description:"Find usage examples and demos with their complete code. Search for patterns like 'accordion-demo', 'button example', 'card-demo', etc. Returns full implementation code with dependencies.",inputSchema:zodToJsonSchema(z.object({registries:z.array(z.string()).describe("Array of registry names to search (e.g., ['@createui', '@acme'])"),query:z.string().describe("Search query for examples (e.g., 'accordion-demo', 'button demo', 'card example', 'tooltip-demo', 'example-booking-form', 'example-hero'). Common patterns: '{item-name}-demo', '{item-name} example', 'example {item-name}'")}))},{name:"get_add_command_for_items",description:"Get the createui CLI add command for specific items in a registry. This is useful for adding one or more components to your project.",inputSchema:zodToJsonSchema(z.object({items:z.array(z.string()).describe("Array of items to get the add command for (e.g., ['button', 'card']). A '@createui/' prefix is also accepted.")}))},{name:"get_audit_checklist",description:"After creating new components or generating new code files, use this tool for a quick checklist to verify that everything is working as expected. Make sure to run the tool after all required steps have been completed.",inputSchema:zodToJsonSchema(z.object({}))}]}));k.setRequestHandler(CallToolRequestSchema,async r=>{try{if(!r.params.arguments)throw new Error("No tool arguments provided.");switch(r.params.name){case "get_project_registries":return {content:[{type:"text",text:o`This project uses the built-in \`@createui\` registry.
|
|
25
|
+
|
|
26
|
+
You can view an item by running:
|
|
27
|
+
\`${await u("view <item-name>")}\`
|
|
28
|
+
|
|
29
|
+
For example: \`${await u("view button")}\`.`}]};case "search_items_in_registries":{let n=z.object({registries:z.array(z.string()),query:z.string(),limit:z.number().optional(),offset:z.number().optional()}).parse(r.params.arguments),i=await a(n.registries,{query:n.query,limit:n.limit,offset:n.offset,config:await f(process.cwd()),useCache:!1});return i.items.length===0?{content:[{type:"text",text:o`No items found matching "${n.query}" in registries ${n.registries.join(", ")}, Try searching with a different query or registry.`}]}:{content:[{type:"text",text:await x(i,{query:n.query,registries:n.registries})}]}}case "list_items_in_registries":{let n=z.object({registries:z.array(z.string()),limit:z.number().optional(),offset:z.number().optional(),cwd:z.string().optional()}).parse(r.params.arguments),i=await a(n.registries,{limit:n.limit,offset:n.offset,config:await f(process.cwd()),useCache:!1});return i.items.length===0?{content:[{type:"text",text:o`No items found in registries ${n.registries.join(", ")}.`}]}:{content:[{type:"text",text:await x(i,{registries:n.registries})}]}}case "view_items_in_registries":{let n=z.object({items:z.array(z.string())}).parse(r.params.arguments),i=await S$1(n.items.map(y),{config:await f(process.cwd()),useCache:!1});if(i?.length===0)return {content:[{type:"text",text:o`No items found for: ${n.items.join(", ")}
|
|
30
|
+
|
|
31
|
+
Make sure the item names are correct (e.g., button, card).`}]};let s=j(i);return {content:[{type:"text",text:o`Item Details:
|
|
32
|
+
|
|
33
|
+
${s.join(`
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
`)}`}]}}case "get_item_examples_from_registries":{let n=z.object({query:z.string(),registries:z.array(z.string())}).parse(r.params.arguments),i=await f(),s=await a(n.registries,{query:n.query,config:i,useCache:!1});if(s.items.length===0)return {content:[{type:"text",text:o`No examples found for query "${n.query}".
|
|
38
|
+
|
|
39
|
+
Try searching with patterns like:
|
|
40
|
+
- "accordion-demo" for accordion examples
|
|
41
|
+
- "button demo" or "button example"
|
|
42
|
+
- Component name followed by "-demo" or "example"
|
|
43
|
+
|
|
44
|
+
You can also:
|
|
45
|
+
1. Use search_items_in_registries to find all items matching your query
|
|
46
|
+
2. View the main component with view_items_in_registries for inline usage documentation`}]};let a$1=s.items.map(d=>d.addCommandArgument),m=await S$1(a$1,{config:i,useCache:!1});return {content:[{type:"text",text:S(m,n.query)}]}}case "get_add_command_for_items":{let e=z.object({items:z.array(z.string())}).parse(r.params.arguments);return {content:[{type:"text",text:await u(`add ${e.items.map(y).join(" ")}`)}]}}case "get_audit_checklist":return {content:[{type:"text",text:o`## Component Audit Checklist
|
|
47
|
+
|
|
48
|
+
After adding or generating components, check the following common issues:
|
|
49
|
+
|
|
50
|
+
- [ ] Ensure imports are correct i.e named vs default imports
|
|
51
|
+
- [ ] If using next/image, ensure images.remotePatterns next.config.js is configured correctly.
|
|
52
|
+
- [ ] Ensure all dependencies are installed.
|
|
53
|
+
- [ ] Check for linting errors or warnings
|
|
54
|
+
- [ ] Check for TypeScript errors
|
|
55
|
+
- [ ] Use the Playwright MCP if available.
|
|
56
|
+
`}]};default:throw new Error(`Tool ${r.params.name} not found`)}}catch(e){if(e instanceof z.ZodError)return {content:[{type:"text",text:o`Invalid input parameters:
|
|
57
|
+
${e.errors.map(i=>`- ${i.path.join(".")}: ${i.message}`).join(`
|
|
58
|
+
`)}
|
|
59
|
+
`}],isError:true};if(e instanceof H){let i=e.message;return e.suggestion&&(i+=`
|
|
60
|
+
|
|
61
|
+
\u{1F4A1} ${e.suggestion}`),e.context&&(i+=`
|
|
62
|
+
|
|
63
|
+
Context: ${JSON.stringify(e.context,null,2)}`),{content:[{type:"text",text:o`Error (${e.code}): ${i}`}],isError:true}}let n=e instanceof Error?e.message:String(e);return {content:[{type:"text",text:o`Error: ${n}`}],isError:true}}});export{v as a,k as b};//# sourceMappingURL=chunk-UVIUVCLG.js.map
|
|
64
|
+
//# sourceMappingURL=chunk-UVIUVCLG.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/get-package-manager.ts","../src/mcp/utils.ts","../src/mcp/index.ts"],"names":["getPackageManager","targetDir","withFallback","packageManager","detect","userAgent","getPackageRunner","cwd","createui_CLI_COMMAND","npxcreateui","command","normalizeRegistryItemName","item","getMcpConfig","config","getConfig","configWithDefaults","formatSearchResultsWithPagination","results","options","query","registries","formattedItems","parts","header","showingRange","output","formatRegistryItems","items","formatItemExamples","sections","file","server","Server","ListToolsRequestSchema","zodToJsonSchema","z","CallToolRequestSchema","request","dedent","args","searchRegistries","registryItems","getRegistryItems","itemNames","fullItems","error","e","RegistryError","errorMessage"],"mappings":"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","file":"chunk-UVIUVCLG.js","sourcesContent":["import { detect } from \"@antfu/ni\"\n\nexport async function getPackageManager(\n targetDir: string,\n { withFallback }: { withFallback?: boolean } = {\n withFallback: false,\n }\n): Promise<\"yarn\" | \"pnpm\" | \"bun\" | \"npm\" | \"deno\"> {\n const packageManager = await detect({ programmatic: true, cwd: targetDir })\n\n if (packageManager === \"yarn@berry\") return \"yarn\"\n if (packageManager === \"pnpm@6\") return \"pnpm\"\n if (packageManager === \"bun\") return \"bun\"\n if (packageManager === \"deno\") return \"deno\"\n if (!withFallback) {\n return packageManager ?? \"npm\"\n }\n\n // Fallback to user agent if not detected.\n const userAgent = process.env.npm_config_user_agent || \"\"\n\n if (userAgent.startsWith(\"yarn\")) {\n return \"yarn\"\n }\n\n if (userAgent.startsWith(\"pnpm\")) {\n return \"pnpm\"\n }\n\n if (userAgent.startsWith(\"bun\")) {\n return \"bun\"\n }\n\n return \"npm\"\n}\n\nexport async function getPackageRunner(cwd: string) {\n const packageManager = await getPackageManager(cwd)\n\n if (packageManager === \"pnpm\") return \"pnpm dlx\"\n\n if (packageManager === \"bun\") return \"bunx\"\n\n return \"npx\"\n}\n","import { configWithDefaults } from \"@/src/registry/config\"\nimport { registryItemSchema, searchResultsSchema } from \"@/src/schema\"\nimport { getConfig } from \"@/src/utils/get-config\"\nimport { getPackageRunner } from \"@/src/utils/get-package-manager\"\nimport { z } from \"zod\"\n\nconst createui_CLI_COMMAND = \"@create-ui/cli\"\n\nexport async function npxcreateui(command: string) {\n const packageRunner = await getPackageRunner(process.cwd())\n return `${packageRunner} ${createui_CLI_COMMAND} ${command}`\n}\n\n// Single-provider: items resolve by bare name (e.g. \"button\"). The MCP tools\n// historically accepted a \"@registry/item\" convention, so strip an optional\n// leading \"@registry/\" prefix. URLs and local file paths are returned untouched.\nexport function normalizeRegistryItemName(item: string) {\n if (item.startsWith(\"@\") && item.includes(\"/\")) {\n return item.slice(item.indexOf(\"/\") + 1)\n }\n\n return item\n}\n\nexport async function getMcpConfig(cwd = process.cwd()) {\n try {\n const config = await getConfig(cwd)\n if (config) {\n return config\n }\n } catch {\n // Fall back to defaults when components.json is missing or invalid.\n }\n\n return configWithDefaults({})\n}\n\nexport async function formatSearchResultsWithPagination(\n results: z.infer<typeof searchResultsSchema>,\n options?: {\n query?: string\n registries?: string[]\n }\n) {\n const { query, registries } = options || {}\n\n const formattedItems = await Promise.all(\n results.items.map(async (item) => {\n const parts: string[] = [`- ${item.name}`]\n\n if (item.type) {\n parts.push(`(${item.type})`)\n }\n\n if (item.description) {\n parts.push(`- ${item.description}`)\n }\n\n if (item.registry) {\n parts.push(`[${item.registry}]`)\n }\n\n parts.push(\n `\\n Add command: \\`${await npxcreateui(\n `add ${item.addCommandArgument}`\n )}\\``\n )\n\n return parts.join(\" \")\n })\n )\n\n let header = `Found ${results.pagination.total} items`\n if (query) {\n header += ` matching \"${query}\"`\n }\n if (registries && registries.length > 0) {\n header += ` in registries ${registries.join(\", \")}`\n }\n header += \":\"\n\n const showingRange = `Showing items ${\n results.pagination.offset + 1\n }-${Math.min(\n results.pagination.offset + results.pagination.limit,\n results.pagination.total\n )} of ${results.pagination.total}:`\n\n let output = `${header}\\n\\n${showingRange}\\n\\n${formattedItems.join(\"\\n\\n\")}`\n\n if (results.pagination.hasMore) {\n output += `\\n\\nMore items available. Use offset: ${\n results.pagination.offset + results.pagination.limit\n } to see the next page.`\n }\n\n return output\n}\n\nexport function formatRegistryItems(\n items: z.infer<typeof registryItemSchema>[]\n) {\n return items.map((item) => {\n const parts: string[] = [\n `## ${item.name}`,\n item.description ? `\\n${item.description}\\n` : \"\",\n item.type ? `**Type:** ${item.type}` : \"\",\n item.files && item.files.length > 0\n ? `**Files:** ${item.files.length} file(s)`\n : \"\",\n item.dependencies && item.dependencies.length > 0\n ? `**Dependencies:** ${item.dependencies.join(\", \")}`\n : \"\",\n item.devDependencies && item.devDependencies.length > 0\n ? `**Dev Dependencies:** ${item.devDependencies.join(\", \")}`\n : \"\",\n ]\n return parts.filter(Boolean).join(\"\\n\")\n })\n}\n\nexport function formatItemExamples(\n items: z.infer<typeof registryItemSchema>[],\n query: string\n) {\n const sections = items.map((item) => {\n const parts: string[] = [\n `## Example: ${item.name}`,\n item.description ? `\\n${item.description}\\n` : \"\",\n ]\n\n if (item.files?.length) {\n item.files.forEach((file) => {\n if (file.content) {\n parts.push(`### Code (${file.path}):\\n`)\n parts.push(\"```tsx\")\n parts.push(file.content)\n parts.push(\"```\")\n }\n })\n }\n\n return parts.filter(Boolean).join(\"\\n\")\n })\n\n const header = `# Usage Examples\\n\\nFound ${items.length} example${\n items.length > 1 ? \"s\" : \"\"\n } matching \"${query}\":\\n`\n\n return header + sections.join(\"\\n\\n---\\n\\n\")\n}\n","import { getRegistryItems, searchRegistries } from \"@/src/registry\"\nimport { RegistryError } from \"@/src/registry/errors\"\nimport { Server } from \"@modelcontextprotocol/sdk/server/index.js\"\nimport {\n CallToolRequestSchema,\n ListToolsRequestSchema,\n} from \"@modelcontextprotocol/sdk/types.js\"\nimport dedent from \"dedent\"\nimport { z } from \"zod\"\nimport { zodToJsonSchema } from \"zod-to-json-schema\"\n\nimport {\n formatItemExamples,\n formatRegistryItems,\n formatSearchResultsWithPagination,\n getMcpConfig,\n normalizeRegistryItemName,\n npxcreateui,\n} from \"./utils\"\n\nexport const server = new Server(\n {\n name: \"createui\",\n version: \"1.0.0\",\n },\n {\n capabilities: {\n resources: {},\n tools: {},\n },\n }\n)\n\nserver.setRequestHandler(ListToolsRequestSchema, async () => {\n return {\n tools: [\n {\n name: \"get_project_registries\",\n description:\n \"Get the registry used by this project. createui uses a single built-in @createui registry.\",\n inputSchema: zodToJsonSchema(z.object({})),\n },\n {\n name: \"list_items_in_registries\",\n description:\n \"List items from registries (requires components.json - use init_project if missing)\",\n inputSchema: zodToJsonSchema(\n z.object({\n registries: z\n .array(z.string())\n .describe(\n \"Array of registry names to search (e.g., ['@createui', '@acme'])\"\n ),\n limit: z\n .number()\n .optional()\n .describe(\"Maximum number of items to return\"),\n offset: z\n .number()\n .optional()\n .describe(\"Number of items to skip for pagination\"),\n })\n ),\n },\n {\n name: \"search_items_in_registries\",\n description:\n \"Search for components in registries using fuzzy matching (requires components.json). After finding an item, use get_item_examples_from_registries to see usage examples.\",\n inputSchema: zodToJsonSchema(\n z.object({\n registries: z\n .array(z.string())\n .describe(\n \"Array of registry names to search (e.g., ['@createui', '@acme'])\"\n ),\n query: z\n .string()\n .describe(\n \"Search query string for fuzzy matching against item names and descriptions\"\n ),\n limit: z\n .number()\n .optional()\n .describe(\"Maximum number of items to return\"),\n offset: z\n .number()\n .optional()\n .describe(\"Number of items to skip for pagination\"),\n })\n ),\n },\n {\n name: \"view_items_in_registries\",\n description:\n \"View detailed information about specific registry items including the name, description, type and files content. For usage examples, use get_item_examples_from_registries instead.\",\n inputSchema: zodToJsonSchema(\n z.object({\n items: z\n .array(z.string())\n .describe(\n \"Array of item names (e.g., ['button', 'card']). A '@createui/' prefix is also accepted.\"\n ),\n })\n ),\n },\n {\n name: \"get_item_examples_from_registries\",\n description:\n \"Find usage examples and demos with their complete code. Search for patterns like 'accordion-demo', 'button example', 'card-demo', etc. Returns full implementation code with dependencies.\",\n inputSchema: zodToJsonSchema(\n z.object({\n registries: z\n .array(z.string())\n .describe(\n \"Array of registry names to search (e.g., ['@createui', '@acme'])\"\n ),\n query: z\n .string()\n .describe(\n \"Search query for examples (e.g., 'accordion-demo', 'button demo', 'card example', 'tooltip-demo', 'example-booking-form', 'example-hero'). Common patterns: '{item-name}-demo', '{item-name} example', 'example {item-name}'\"\n ),\n })\n ),\n },\n {\n name: \"get_add_command_for_items\",\n description:\n \"Get the createui CLI add command for specific items in a registry. This is useful for adding one or more components to your project.\",\n inputSchema: zodToJsonSchema(\n z.object({\n items: z\n .array(z.string())\n .describe(\n \"Array of items to get the add command for (e.g., ['button', 'card']). A '@createui/' prefix is also accepted.\"\n ),\n })\n ),\n },\n {\n name: \"get_audit_checklist\",\n description:\n \"After creating new components or generating new code files, use this tool for a quick checklist to verify that everything is working as expected. Make sure to run the tool after all required steps have been completed.\",\n inputSchema: zodToJsonSchema(z.object({})),\n },\n ],\n }\n})\n\nserver.setRequestHandler(CallToolRequestSchema, async (request) => {\n try {\n if (!request.params.arguments) {\n throw new Error(\"No tool arguments provided.\")\n }\n\n switch (request.params.name) {\n case \"get_project_registries\": {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`This project uses the built-in \\`@createui\\` registry.\n\n You can view an item by running:\n \\`${await npxcreateui(\"view <item-name>\")}\\`\n\n For example: \\`${await npxcreateui(\"view button\")}\\`.`,\n },\n ],\n }\n }\n\n case \"search_items_in_registries\": {\n const inputSchema = z.object({\n registries: z.array(z.string()),\n query: z.string(),\n limit: z.number().optional(),\n offset: z.number().optional(),\n })\n\n const args = inputSchema.parse(request.params.arguments)\n const results = await searchRegistries(args.registries, {\n query: args.query,\n limit: args.limit,\n offset: args.offset,\n config: await getMcpConfig(process.cwd()),\n useCache: false,\n })\n\n if (results.items.length === 0) {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`No items found matching \"${\n args.query\n }\" in registries ${args.registries.join(\n \", \"\n )}, Try searching with a different query or registry.`,\n },\n ],\n }\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: await formatSearchResultsWithPagination(results, {\n query: args.query,\n registries: args.registries,\n }),\n },\n ],\n }\n }\n\n case \"list_items_in_registries\": {\n const inputSchema = z.object({\n registries: z.array(z.string()),\n limit: z.number().optional(),\n offset: z.number().optional(),\n cwd: z.string().optional(),\n })\n\n const args = inputSchema.parse(request.params.arguments)\n const results = await searchRegistries(args.registries, {\n limit: args.limit,\n offset: args.offset,\n config: await getMcpConfig(process.cwd()),\n useCache: false,\n })\n\n if (results.items.length === 0) {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`No items found in registries ${args.registries.join(\n \", \"\n )}.`,\n },\n ],\n }\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: await formatSearchResultsWithPagination(results, {\n registries: args.registries,\n }),\n },\n ],\n }\n }\n\n case \"view_items_in_registries\": {\n const inputSchema = z.object({\n items: z.array(z.string()),\n })\n\n const args = inputSchema.parse(request.params.arguments)\n const registryItems = await getRegistryItems(\n args.items.map(normalizeRegistryItemName),\n {\n config: await getMcpConfig(process.cwd()),\n useCache: false,\n }\n )\n\n if (registryItems?.length === 0) {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`No items found for: ${args.items.join(\", \")}\n\n Make sure the item names are correct (e.g., button, card).`,\n },\n ],\n }\n }\n\n const formattedItems = formatRegistryItems(registryItems)\n\n return {\n content: [\n {\n type: \"text\",\n text: dedent`Item Details:\n\n ${formattedItems.join(\"\\n\\n---\\n\\n\")}`,\n },\n ],\n }\n }\n\n case \"get_item_examples_from_registries\": {\n const inputSchema = z.object({\n query: z.string(),\n registries: z.array(z.string()),\n })\n\n const args = inputSchema.parse(request.params.arguments)\n const config = await getMcpConfig()\n\n const results = await searchRegistries(args.registries, {\n query: args.query,\n config,\n useCache: false,\n })\n\n if (results.items.length === 0) {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`No examples found for query \"${args.query}\".\n\n Try searching with patterns like:\n - \"accordion-demo\" for accordion examples\n - \"button demo\" or \"button example\"\n - Component name followed by \"-demo\" or \"example\"\n\n You can also:\n 1. Use search_items_in_registries to find all items matching your query\n 2. View the main component with view_items_in_registries for inline usage documentation`,\n },\n ],\n }\n }\n\n const itemNames = results.items.map((item) => item.addCommandArgument)\n const fullItems = await getRegistryItems(itemNames, {\n config,\n useCache: false,\n })\n\n return {\n content: [\n {\n type: \"text\",\n text: formatItemExamples(fullItems, args.query),\n },\n ],\n }\n }\n\n case \"get_add_command_for_items\": {\n const args = z\n .object({\n items: z.array(z.string()),\n })\n .parse(request.params.arguments)\n\n return {\n content: [\n {\n type: \"text\",\n text: await npxcreateui(\n `add ${args.items.map(normalizeRegistryItemName).join(\" \")}`\n ),\n },\n ],\n }\n }\n\n case \"get_audit_checklist\": {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`## Component Audit Checklist\n\n After adding or generating components, check the following common issues:\n\n - [ ] Ensure imports are correct i.e named vs default imports\n - [ ] If using next/image, ensure images.remotePatterns next.config.js is configured correctly.\n - [ ] Ensure all dependencies are installed.\n - [ ] Check for linting errors or warnings\n - [ ] Check for TypeScript errors\n - [ ] Use the Playwright MCP if available.\n `,\n },\n ],\n }\n }\n\n default:\n throw new Error(`Tool ${request.params.name} not found`)\n }\n } catch (error) {\n if (error instanceof z.ZodError) {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`Invalid input parameters:\n ${error.errors\n .map((e) => `- ${e.path.join(\".\")}: ${e.message}`)\n .join(\"\\n\")}\n `,\n },\n ],\n isError: true,\n }\n }\n\n if (error instanceof RegistryError) {\n let errorMessage = error.message\n\n if (error.suggestion) {\n errorMessage += `\\n\\nš” ${error.suggestion}`\n }\n\n if (error.context) {\n errorMessage += `\\n\\nContext: ${JSON.stringify(error.context, null, 2)}`\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: dedent`Error (${error.code}): ${errorMessage}`,\n },\n ],\n isError: true,\n }\n }\n\n const errorMessage = error instanceof Error ? error.message : String(error)\n return {\n content: [\n {\n type: \"text\",\n text: dedent`Error: ${errorMessage}`,\n },\n ],\n isError: true,\n }\n }\n})\n"]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {z}from'zod';var i=z.object({$schema:z.string().optional(),rsc:z.coerce.boolean().default(false),tsx:z.coerce.boolean().default(true),tailwind:z.object({config:z.string().optional(),css:z.string(),baseColor:z.string().optional(),cssVariables:z.boolean().default(true),prefix:z.string().default("").optional()}),iconLibrary:z.string().optional(),menuColor:z.enum(["default","inverted"]).default("default").optional(),menuAccent:z.enum(["subtle","bold"]).default("subtle").optional(),aliases:z.object({components:z.string(),utils:z.string(),ui:z.string().optional(),lib:z.string().optional(),hooks:z.string().optional()})}).strict(),a=i.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(),ui:z.string()})}),x=z.record(a),n=z.enum(["registry:lib","registry:block","registry:component","registry:ui","registry:hook","registry:page","registry:file","registry:theme","registry:font-variant","registry:item","registry:base","registry:example","registry:internal"]),g=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:n.exclude(["registry:file","registry:page"]),target:z.string().optional()})]),c=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()}),p=z.object({light:z.record(z.string(),z.string()).optional(),dark:z.record(z.string(),z.string()).optional()}),l=z.record(z.string(),p),y=z.object({50:z.string(),100:z.string(),200:z.string(),300:z.string(),400:z.string(),500:z.string(),600:z.string(),700:z.string(),800:z.string(),900:z.string(),950:z.string(),"alpha-0":z.string(),"alpha-8":z.string(),"alpha-16":z.string(),"alpha-24":z.string(),"alpha-32":z.string(),"alpha-48":z.string()}),o=z.lazy(()=>z.union([z.string(),z.array(z.union([z.string(),z.record(z.string(),z.string())])),z.record(z.string(),o)])),m=z.record(z.string(),o),d=z.record(z.string(),z.string()),r=z.object({family:z.string(),provider:z.literal("google"),import:z.string(),variable:z.string(),weight:z.array(z.string()).optional(),subsets:z.array(z.string()).optional()}),h=z.object({display:r,body:r,numeric:r}),e=z.object({$schema:z.string().optional(),extends:z.string().optional(),name:z.string(),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(g).optional(),tailwind:c.optional(),cssVars:l.optional(),css:m.optional(),envVars:d.optional(),meta:z.record(z.string(),z.any()).optional(),docs:z.string().optional(),categories:z.array(z.string()).optional()}),s=z.discriminatedUnion("type",[e.extend({type:z.literal("registry:base"),config:i.deepPartial().optional()}),e.extend({type:z.literal("registry:font-variant"),fontVariant:h}),e.extend({type:z.literal("registry:theme"),primary:y.optional()}),e.extend({type:n.exclude(["registry:base","registry:font-variant","registry:theme"])})]),S=z.object({name:z.string(),homepage:z.string(),items:z.array(s)}),I=z.array(s),j=z.array(z.object({name:z.string(),label:z.string()})),v=z.record(z.string(),z.record(z.string(),z.string())),C=e.pick({dependencies:true,devDependencies:true,files:true,tailwind:true,cssVars:true,css:true,envVars:true,docs:true}).extend({fonts:z.array(e.extend({type:z.literal("registry:font"),role:z.enum(["display","body","numeric"]),font:r})).optional()}),u=z.object({name:z.string(),type:z.string().optional(),description:z.string().optional(),registry:z.string(),addCommandArgument:z.string()}),V=z.object({pagination:z.object({total:z.number(),offset:z.number(),limit:z.number(),hasMore:z.boolean()}),items:z.array(u)}),f=z.object({name:z.string(),title:z.string(),description:z.string(),theme:z.string(),neutralTheme:z.string(),iconLibrary:z.string(),fontVariant:z.string(),item:z.string().optional(),menuAccent:z.enum(["subtle","bold"]),menuColor:z.enum(["default","inverted"])}),R=z.object({presets:z.array(f)});export{i as a,a as b,x as c,n as d,g as e,c as f,l as g,y as h,m as i,d as j,r as k,h as l,e as m,s as n,S as o,I as p,j as q,v as r,C as s,u as t,V as u,f as v,R as w};//# sourceMappingURL=chunk-Y7WZRQWW.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-Y7WZRQWW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry/schema.ts"],"names":["rawConfigSchema","z","configSchema","workspaceConfigSchema","registryItemTypeSchema","registryItemFileSchema","registryItemTailwindSchema","cssVarsCategorySchema","registryItemCssVarsSchema","registryItemThemePrimarySchema","cssValueSchema","registryItemCssSchema","registryItemEnvVarsSchema","registryItemFontSchema","registryItemFontVariantSchema","registryItemCommonSchema","registryItemSchema","registrySchema","registryIndexSchema","stylesSchema","iconsSchema","registryResolvedItemsTreeSchema","searchResultItemSchema","searchResultsSchema","presetSchema","configJsonSchema"],"mappings":"oBAKO,IAAMA,CAAAA,CAAkBC,EAC5B,MAAA,CAAO,CACN,OAAA,CAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,UAAS,CAC7B,GAAA,CAAKA,CAAAA,CAAE,MAAA,CAAO,OAAA,EAAQ,CAAE,OAAA,CAAQ,KAAK,CAAA,CACrC,GAAA,CAAKA,CAAAA,CAAE,MAAA,CAAO,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CACpC,QAAA,CAAUA,CAAAA,CAAE,MAAA,CAAO,CACjB,MAAA,CAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC5B,GAAA,CAAKA,CAAAA,CAAE,QAAO,CACd,SAAA,CAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC/B,YAAA,CAAcA,CAAAA,CAAE,OAAA,EAAQ,CAAE,OAAA,CAAQ,IAAI,CAAA,CACtC,OAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,OAAA,CAAQ,EAAE,CAAA,CAAE,QAAA,EACjC,CAAC,CAAA,CACD,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,UAAS,CACjC,SAAA,CAAWA,CAAAA,CAAE,IAAA,CAAK,CAAC,SAAA,CAAW,UAAU,CAAC,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAA,EAAS,CACvE,WAAYA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,CAAU,MAAM,CAAC,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,CAAE,QAAA,EAAS,CAClE,OAAA,CAASA,CAAAA,CAAE,OAAO,CAChB,UAAA,CAAYA,CAAAA,CAAE,MAAA,EAAO,CACrB,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,EAAA,CAAIA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GACf,GAAA,CAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CACzB,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EACpB,CAAC,CACH,CAAC,CAAA,CACA,MAAA,EAAO,CAEGC,CAAAA,CAAeF,CAAAA,CAAgB,MAAA,CAAO,CACjD,aAAA,CAAeC,CAAAA,CAAE,MAAA,CAAO,CACtB,GAAA,CAAKA,CAAAA,CAAE,MAAA,GACP,cAAA,CAAgBA,CAAAA,CAAE,MAAA,EAAO,CACzB,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CACtB,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,UAAA,CAAYA,CAAAA,CAAE,QAAO,CACrB,GAAA,CAAKA,CAAAA,CAAE,MAAA,EAAO,CACd,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,EAAA,CAAIA,CAAAA,CAAE,MAAA,EACR,CAAC,CACH,CAAC,CAAA,CAIYE,CAAAA,CAAwBF,CAAAA,CAAE,MAAA,CAAOC,CAAY,CAAA,CAE7CE,CAAAA,CAAyBH,CAAAA,CAAE,IAAA,CAAK,CAC3C,cAAA,CACA,gBAAA,CACA,oBAAA,CACA,cACA,eAAA,CACA,eAAA,CACA,eAAA,CACA,gBAAA,CACA,uBAAA,CACA,eAAA,CACA,eAAA,CAGA,kBAAA,CACA,mBACF,CAAC,CAAA,CAEYI,CAAAA,CAAyBJ,CAAAA,CAAE,kBAAA,CAAmB,OAAQ,CAEjEA,CAAAA,CAAE,MAAA,CAAO,CACP,IAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CACf,OAAA,CAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC7B,KAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,eAAA,CAAiB,eAAe,CAAC,CAAA,CAC/C,MAAA,CAAQA,CAAAA,CAAE,MAAA,EACZ,CAAC,CAAA,CACDA,CAAAA,CAAE,OAAO,CACP,IAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CACf,OAAA,CAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC7B,IAAA,CAAMG,CAAAA,CAAuB,OAAA,CAAQ,CAAC,eAAA,CAAiB,eAAe,CAAC,CAAA,CACvE,MAAA,CAAQH,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EACrB,CAAC,CACH,CAAC,CAAA,CAEYK,EAA6BL,CAAAA,CAAE,MAAA,CAAO,CACjD,MAAA,CAAQA,CAAAA,CACL,MAAA,CAAO,CACN,OAAA,CAASA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,UAAS,CACtC,KAAA,CAAOA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAC9C,OAAA,CAASA,EAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAC/B,CAAC,CAAA,CACA,QAAA,EACL,CAAC,CAAA,CAEKM,CAAAA,CAAwBN,EAAE,MAAA,CAAO,CACrC,KAAA,CAAOA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CACjD,KAAMA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EACzC,CAAC,CAAA,CAEYO,CAAAA,CAA4BP,EAAE,MAAA,CACzCA,CAAAA,CAAE,MAAA,EAAO,CACTM,CACF,CAAA,CAEaE,CAAAA,CAAiCR,CAAAA,CAAE,MAAA,CAAO,CACrD,EAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CACf,IAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,GAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,GAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,GAAA,CAAOA,CAAAA,CAAE,MAAA,GACT,GAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,GAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,GAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,GAAA,CAAOA,CAAAA,CAAE,QAAO,CAChB,GAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,GAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,SAAA,CAAWA,CAAAA,CAAE,MAAA,EAAO,CACpB,SAAA,CAAWA,EAAE,MAAA,EAAO,CACpB,UAAA,CAAYA,CAAAA,CAAE,MAAA,EAAO,CACrB,UAAA,CAAYA,CAAAA,CAAE,MAAA,EAAO,CACrB,UAAA,CAAYA,CAAAA,CAAE,MAAA,EAAO,CACrB,WAAYA,CAAAA,CAAE,MAAA,EAChB,CAAC,CAAA,CAGKS,CAAAA,CAAiCT,CAAAA,CAAE,IAAA,CAAK,IAC5CA,CAAAA,CAAE,KAAA,CAAM,CACNA,CAAAA,CAAE,MAAA,GACFA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,MAAA,EAAO,CAAGA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGA,CAAAA,CAAE,QAAQ,CAAC,CAAC,CAAC,CAAA,CAC/DA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGS,CAAc,CACrC,CAAC,CACH,EAEaC,CAAAA,CAAwBV,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGS,CAAc,CAAA,CAE3DE,CAAAA,CAA4BX,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGA,EAAE,MAAA,EAAQ,CAAA,CAG3DY,CAAAA,CAAyBZ,CAAAA,CAAE,MAAA,CAAO,CAC7C,MAAA,CAAQA,CAAAA,CAAE,MAAA,EAAO,CACjB,QAAA,CAAUA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,CAC5B,MAAA,CAAQA,CAAAA,CAAE,MAAA,EAAO,CACjB,QAAA,CAAUA,CAAAA,CAAE,MAAA,EAAO,CACnB,MAAA,CAAQA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CACrC,OAAA,CAASA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAC/B,CAAC,CAAA,CAGYa,EAAgCb,CAAAA,CAAE,MAAA,CAAO,CACpD,OAAA,CAASY,CAAAA,CACT,IAAA,CAAMA,CAAAA,CACN,OAAA,CAASA,CACX,CAAC,CAAA,CAGYE,CAAAA,CAA2Bd,CAAAA,CAAE,MAAA,CAAO,CAC/C,OAAA,CAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC7B,OAAA,CAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC7B,IAAA,CAAMA,CAAAA,CAAE,QAAO,CACf,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CAC3B,MAAA,CAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,UAAS,CACnC,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CACjC,YAAA,CAAcA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,UAAS,CAC3C,eAAA,CAAiBA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAC9C,oBAAA,CAAsBA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,QAAQ,CAAA,CAAE,QAAA,EAAS,CACnD,KAAA,CAAOA,CAAAA,CAAE,KAAA,CAAMI,CAAsB,CAAA,CAAE,QAAA,EAAS,CAChD,QAAA,CAAUC,CAAAA,CAA2B,QAAA,GACrC,OAAA,CAASE,CAAAA,CAA0B,QAAA,EAAS,CAC5C,GAAA,CAAKG,CAAAA,CAAsB,QAAA,EAAS,CACpC,OAAA,CAASC,CAAAA,CAA0B,QAAA,EAAS,CAC5C,IAAA,CAAMX,CAAAA,CAAE,OAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGA,CAAAA,CAAE,GAAA,EAAK,CAAA,CAAE,QAAA,EAAS,CAC7C,IAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GACjB,UAAA,CAAYA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAClC,CAAC,CAAA,CAGYe,CAAAA,CAAqBf,CAAAA,CAAE,kBAAA,CAAmB,OAAQ,CAC7Dc,CAAAA,CAAyB,MAAA,CAAO,CAC9B,IAAA,CAAMd,CAAAA,CAAE,OAAA,CAAQ,eAAe,CAAA,CAC/B,MAAA,CAAQD,CAAAA,CAAgB,WAAA,EAAY,CAAE,QAAA,EACxC,CAAC,CAAA,CACDe,CAAAA,CAAyB,MAAA,CAAO,CAC9B,IAAA,CAAMd,CAAAA,CAAE,OAAA,CAAQ,uBAAuB,CAAA,CACvC,WAAA,CAAaa,CACf,CAAC,CAAA,CACDC,EAAyB,MAAA,CAAO,CAC9B,IAAA,CAAMd,CAAAA,CAAE,OAAA,CAAQ,gBAAgB,CAAA,CAChC,OAAA,CAASQ,CAAAA,CAA+B,QAAA,EAC1C,CAAC,CAAA,CACDM,CAAAA,CAAyB,OAAO,CAC9B,IAAA,CAAMX,CAAAA,CAAuB,OAAA,CAAQ,CACnC,eAAA,CACA,uBAAA,CACA,gBACF,CAAC,CACH,CAAC,CACH,CAAC,CAAA,CAuBYa,EAAiBhB,CAAAA,CAAE,MAAA,CAAO,CACrC,IAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CACf,QAAA,CAAUA,CAAAA,CAAE,MAAA,EAAO,CACnB,KAAA,CAAOA,CAAAA,CAAE,KAAA,CAAMe,CAAkB,CACnC,CAAC,CAAA,CAIYE,CAAAA,CAAsBjB,CAAAA,CAAE,KAAA,CAAMe,CAAkB,CAAA,CAEhDG,CAAAA,CAAelB,CAAAA,CAAE,KAAA,CAC5BA,CAAAA,CAAE,MAAA,CAAO,CACP,KAAMA,CAAAA,CAAE,MAAA,EAAO,CACf,KAAA,CAAOA,CAAAA,CAAE,MAAA,EACX,CAAC,CACH,CAAA,CAEamB,CAAAA,CAAcnB,CAAAA,CAAE,MAAA,CAC3BA,CAAAA,CAAE,QAAO,CACTA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAAGA,CAAAA,CAAE,MAAA,EAAQ,CACjC,CAAA,CAEaoB,CAAAA,CAAkCN,CAAAA,CAC5C,IAAA,CAAK,CACJ,YAAA,CAAc,IAAA,CACd,eAAA,CAAiB,IAAA,CACjB,KAAA,CAAO,IAAA,CACP,QAAA,CAAU,IAAA,CACV,OAAA,CAAS,IAAA,CACT,GAAA,CAAK,IAAA,CACL,OAAA,CAAS,IAAA,CACT,KAAM,IACR,CAAC,CAAA,CACA,MAAA,CAAO,CACN,KAAA,CAAOd,CAAAA,CACJ,KAAA,CACCc,CAAAA,CAAyB,MAAA,CAAO,CAC9B,IAAA,CAAMd,CAAAA,CAAE,OAAA,CAAQ,eAAe,CAAA,CAC/B,IAAA,CAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,SAAA,CAAW,MAAA,CAAQ,SAAS,CAAC,CAAA,CAC3C,IAAA,CAAMY,CACR,CAAC,CACH,EACC,QAAA,EACL,CAAC,CAAA,CAEUS,CAAAA,CAAyBrB,CAAAA,CAAE,MAAA,CAAO,CAC7C,IAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CACf,IAAA,CAAMA,CAAAA,CAAE,QAAO,CAAE,QAAA,EAAS,CAC1B,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS,CACjC,QAAA,CAAUA,CAAAA,CAAE,MAAA,EAAO,CACnB,kBAAA,CAAoBA,EAAE,MAAA,EACxB,CAAC,CAAA,CAEYsB,CAAAA,CAAsBtB,CAAAA,CAAE,MAAA,CAAO,CAC1C,UAAA,CAAYA,CAAAA,CAAE,MAAA,CAAO,CACnB,KAAA,CAAOA,CAAAA,CAAE,QAAO,CAChB,MAAA,CAAQA,CAAAA,CAAE,MAAA,EAAO,CACjB,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,OAAA,CAASA,CAAAA,CAAE,OAAA,EACb,CAAC,EACD,KAAA,CAAOA,CAAAA,CAAE,KAAA,CAAMqB,CAAsB,CACvC,CAAC,CAAA,CAEYE,CAAAA,CAAevB,CAAAA,CAAE,MAAA,CAAO,CACnC,IAAA,CAAMA,CAAAA,CAAE,MAAA,GACR,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CACtB,KAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,CAChB,YAAA,CAAcA,CAAAA,CAAE,QAAO,CACvB,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CACtB,WAAA,CAAaA,CAAAA,CAAE,MAAA,EAAO,CACtB,IAAA,CAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,GACjB,UAAA,CAAYA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,CAAU,MAAM,CAAC,CAAA,CACrC,SAAA,CAAWA,CAAAA,CAAE,IAAA,CAAK,CAAC,SAAA,CAAW,UAAU,CAAC,CAC3C,CAAC,CAAA,CAIYwB,CAAAA,CAAmBxB,CAAAA,CAAE,MAAA,CAAO,CACvC,OAAA,CAASA,CAAAA,CAAE,KAAA,CAAMuB,CAAY,CAC/B,CAAC","file":"chunk-Y7WZRQWW.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 rawConfigSchema = z\n .object({\n $schema: 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 })\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: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 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\nexport const presetSchema = z.object({\n name: z.string(),\n title: z.string(),\n description: z.string(),\n theme: z.string(),\n neutralTheme: z.string(),\n iconLibrary: z.string(),\n fontVariant: z.string(),\n item: z.string().optional(),\n menuAccent: z.enum([\"subtle\", \"bold\"]),\n menuColor: z.enum([\"default\", \"inverted\"]),\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"]}
|