@create-ui/cli 0.5.5 → 0.5.6

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.
@@ -0,0 +1,3 @@
1
+ import {Q}from'./chunk-ZI2BN2TD.js';import {u}from'./chunk-Y7WZRQWW.js';import R from'fuzzysort';import {z as z$1}from'zod';async function I(r,t){let{query:a,limit:n,offset:g,useCache:i}=t||{},e=[];for(let u of r){let y=((await Q(u,{useCache:i})).items||[]).map(l=>({name:l.name,type:l.type,description:l.description,registry:u,addCommandArgument:E(l.name,u)}));e=e.concat(y);}a&&(e=z(e,{query:a,limit:e.length,keys:["name","description"]}));let s=g||0,m=n||e.length,c=e.length,f={pagination:{total:c,offset:s,limit:m,hasMore:s+m<c},items:e.slice(s,s+m)};return u.parse(f)}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 z(r,t){t={limit:100,threshold:-1e4,...t};let n=R.go(t.query,r,{keys:t.keys,threshold:t.threshold,limit:t.limit}).map(g=>g.obj);return z$1.array(x).parse(n)}function A(r){try{return new URL(r),!0}catch{return false}}function E(r,t){if(!A(t))return r;let a=t.indexOf("://")+3,n=t.indexOf("/",a);if(n===-1){let h=t.indexOf("?",a);if(h!==-1){let y=t.substring(0,h),b=t.substring(h).replace(/\bregistry\b/g,r);return y+b}return t}let g=t.substring(0,n),i=t.substring(n),e=i.indexOf("?")!==-1?i.indexOf("?"):i.length,s=i.substring(0,e),m=i.substring(e),c=s.lastIndexOf("registry"),f=s;c!==-1&&(f=s.substring(0,c)+r+s.substring(c+8));let u=m.replace(/\bregistry\b/g,r);return g+f+u}
2
+ export{I as a};//# sourceMappingURL=chunk-22VYY2DL.js.map
3
+ //# sourceMappingURL=chunk-22VYY2DL.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/registry/search.ts"],"names":["searchRegistries","registries","options","query","limit","offset","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-Z73MEB7I.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, useCache } = options || {}\n\n let allItems: z.infer<typeof searchResultItemSchema>[] = []\n\n for (const registry of registries) {\n const registryData = await getRegistry(registry, { 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 the built-in registry, returns the bare item name (e.g. \"button\").\n// For URL registries, replaces \"registry\" with the item name in the URL.\nexport function buildRegistryItemNameFromRegistry(\n name: string,\n registry: string\n) {\n // The built-in registry is referenced by bare item name.\n if (!isUrl(registry)) {\n return 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
+ {"version":3,"sources":["../src/registry/search.ts"],"names":["searchRegistries","registries","options","query","limit","offset","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-22VYY2DL.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, useCache } = options || {}\n\n let allItems: z.infer<typeof searchResultItemSchema>[] = []\n\n for (const registry of registries) {\n const registryData = await getRegistry(registry, { 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 the built-in registry, returns the bare item name (e.g. \"button\").\n// For URL registries, replaces \"registry\" with the item name in the URL.\nexport function buildRegistryItemNameFromRegistry(\n name: string,\n registry: string\n) {\n // The built-in registry is referenced by bare item name.\n if (!isUrl(registry)) {\n return 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,4 +1,4 @@
1
- import {a}from'./chunk-Z73MEB7I.js';import {S as S$1,H,f as f$1,G}from'./chunk-5YX4Z2U3.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(`
1
+ import {a}from'./chunk-22VYY2DL.js';import {R,G,f as f$1,F}from'./chunk-ZI2BN2TD.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 F({})}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
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
3
 
4
4
  ${m}
@@ -26,7 +26,7 @@ Found ${r.length} example${r.length>1?"s":""} matching "${e}":
26
26
  You can view an item by running:
27
27
  \`${await u("view <item-name>")}\`
28
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(", ")}
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 R(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
30
 
31
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
32
 
@@ -43,7 +43,7 @@ Found ${r.length} example${r.length>1?"s":""} matching "${e}":
43
43
 
44
44
  You can also:
45
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
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 R(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
47
 
48
48
  After adding or generating components, check the following common issues:
49
49
 
@@ -56,9 +56,9 @@ Found ${r.length} example${r.length>1?"s":""} matching "${e}":
56
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
57
  ${e.errors.map(i=>`- ${i.path.join(".")}: ${i.message}`).join(`
58
58
  `)}
59
- `}],isError:true};if(e instanceof H){let i=e.message;return e.suggestion&&(i+=`
59
+ `}],isError:true};if(e instanceof G){let i=e.message;return e.suggestion&&(i+=`
60
60
 
61
61
  \u{1F4A1} ${e.suggestion}`),e.context&&(i+=`
62
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-EF7MDUJN.js.map
64
- //# sourceMappingURL=chunk-EF7MDUJN.js.map
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-TGYTOZ2K.js.map
64
+ //# sourceMappingURL=chunk-TGYTOZ2K.js.map
@@ -1 +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-EF7MDUJN.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"]}
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-TGYTOZ2K.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,18 @@
1
+ import {m,l,d,b,a,c,n,s,o,q as q$1,r,w as w$1,e}from'./chunk-Y7WZRQWW.js';import {z as z$1}from'zod';import*as h from'path';import h__default,{basename}from'path';import*as z from'fs/promises';import {tmpdir,homedir}from'os';import {green,cyan,yellow,red}from'kleur/colors';import {loadConfig,createMatchPath}from'tsconfig-paths';import {cosmiconfig}from'cosmiconfig';import me from'fast-glob';import pe from'fs-extra';import {existsSync,statSync,promises}from'fs';import Lt from'ora';import {Project,SyntaxKind,ScriptKind}from'ts-morph';import {transformFromAstSync}from'@babel/core';import {parse}from'@babel/parser';import Kt from'@babel/plugin-transform-typescript';import*as he from'recast';import tr from'prompts';import q from'deepmerge';import {HttpsProxyAgent}from'https-proxy-agent';import Sr from'node-fetch';import {createHash}from'crypto';var U={NOT_FOUND:"NOT_FOUND",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",FETCH_ERROR:"FETCH_ERROR",LOCAL_FILE_ERROR:"LOCAL_FILE_ERROR",PARSE_ERROR:"PARSE_ERROR",UNKNOWN_ERROR:"UNKNOWN_ERROR"},$=class extends Error{code;statusCode;context;suggestion;timestamp;cause;constructor(t,r={}){super(t),this.name="RegistryError",this.code=r.code||U.UNKNOWN_ERROR,this.statusCode=r.statusCode,this.cause=r.cause,this.context=r.context,this.suggestion=r.suggestion,this.timestamp=new Date,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);}toJSON(){return {name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,context:this.context,suggestion:this.suggestion,timestamp:this.timestamp,stack:this.stack}}},se=class extends ${constructor(r,s){let n=`The item at ${r} was not found. It may not exist at the registry.`;super(n,{code:U.NOT_FOUND,statusCode:404,cause:s,context:{url:r},suggestion:"Check if the item name is correct and the registry URL is accessible."});this.url=r;this.name="RegistryNotFoundError";}},ne=class extends ${constructor(r,s){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:U.UNAUTHORIZED,statusCode:401,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryUnauthorizedError";}},ie=class extends ${constructor(r,s){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:U.FORBIDDEN,statusCode:403,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryForbiddenError";}},oe=class extends ${constructor(r,s,n,i){let o=s?`Failed to fetch from registry (${s}): ${r}`:`Failed to fetch from registry: ${r}`,a=typeof i=="string"&&i?`${o} - ${i}`:o,p="Check your network connection and try again.";s===404?p="The requested resource was not found. Check the URL or item name.":s===500?p="The registry server encountered an error. Try again later.":s&&s>=400&&s<500&&(p="There was a client error. Check your request parameters.");super(a,{code:U.FETCH_ERROR,statusCode:s,cause:i,context:{url:r,responseBody:n},suggestion:p});this.url=r;this.responseBody=n;this.name="RegistryFetchError";}},Z=class extends ${constructor(r,s){super(`Failed to read local registry file: ${r}`,{code:U.LOCAL_FILE_ERROR,cause:s,context:{filePath:r},suggestion:"Check if the file exists and you have read permissions."});this.filePath=r;this.name="RegistryLocalFileError";}},O=class extends ${constructor(r,s){let n=`Failed to parse registry item: ${r}`;s instanceof z$1.ZodError&&(n=`Failed to parse registry item: ${r}
2
+ ${s.errors.map(i=>` - ${i.path.join(".")}: ${i.message}`).join(`
3
+ `)}`);super(n,{code:U.PARSE_ERROR,cause:s,context:{item:r},suggestion:"The registry item may be corrupted or have an invalid format. Please make sure it returns a valid JSON object. See https://createui.co/schema/registry-item.json."});this.item=r;this.parseError=s,this.name="RegistryParseError";}parseError};var ae=process.env.REGISTRY_URL??"https://createui.co/r",mt=[{name:"indigo",label:"Indigo"},{name:"lime",label:"Lime"},{name:"green",label:"Green"},{name:"red",label:"Red"},{name:"orange",label:"Orange"},{name:"yellow",label:"Yellow"},{name:"cyan",label:"Cyan"},{name:"blue",label:"Blue"}],ut=mt,gt=[{name:"gray",label:"Gray"},{name:"slate",label:"Slate"},{name:"zinc",label:"Zinc"},{name:"base",label:"Base"},{name:"stone",label:"Stone"}];ut.map(e=>e.name);var Wr=gt.map(e=>e.name),Ur="gray",ce=[{name:"v1",label:"Default (Geist + JetBrains Mono)"}],Vr=ce.map(e=>e.name),Kr="v1";var Mr=[{name:"toast",deprecatedBy:"sonner",message:"The toast component is deprecated. Use the sonner component instead."},{name:"toaster",deprecatedBy:"sonner",message:"The toaster component is deprecated. Use the sonner component instead."}];var P={"next-app":{name:"next-app",label:"Next.js",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/nextjs"}},"next-pages":{name:"next-pages",label:"Next.js",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/nextjs"}},remix:{name:"remix",label:"Remix",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/remix"}},"react-router":{name:"react-router",label:"React Router",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/installation/framework-guides/react-router"}},vite:{name:"vite",label:"Vite",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/vite"}},astro:{name:"astro",label:"Astro",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/astro"}},laravel:{name:"laravel",label:"Laravel",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/laravel"}},"tanstack-start":{name:"tanstack-start",label:"TanStack Start",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/installation/using-postcss"}},gatsby:{name:"gatsby",label:"Gatsby",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/gatsby"}},expo:{name:"expo",label:"Expo",links:{installation:"https://createui.co/docs/installation",tailwind:"https://www.nativewind.dev/docs/getting-started/installation"}},manual:{name:"manual",label:"Manual",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/installation"}}};var k={error:red,warn:yellow,info:cyan,success:green};async function T(e,t){return createMatchPath(t.absoluteBaseUrl,t.paths)(e,void 0,()=>true,[".ts",".tsx",".jsx",".js",".css"])}var ns="@/components",is="@/lib/utils",os="app/globals.css",as="tailwind.config.js";var Et=cosmiconfig("components",{searchPlaces:["components.json"]});async function le(e){let t=await It(e);return t?(t.iconLibrary||(t.iconLibrary="createui"),await Ee(e,t)):null}async function Ee(e,t){let r=await loadConfig(e);if(r.resultType==="failed")throw new Error(`Failed to load ${t.tsx?"tsconfig":"jsconfig"}.json. ${r.message??""}`.trim());return b.parse({...t,resolvedPaths:{cwd:e,tailwindConfig:t.tailwind.config?h__default.resolve(e,t.tailwind.config):"",tailwindCss:h__default.resolve(e,t.tailwind.css),utils:await T(t.aliases.utils,r),components:await T(t.aliases.components,r),ui:t.aliases.ui?await T(t.aliases.ui,r):h__default.resolve(await T(t.aliases.components,r)??e,"ui"),lib:t.aliases.lib?await T(t.aliases.lib,r):h__default.resolve(await T(t.aliases.utils,r)??e,".."),hooks:t.aliases.hooks?await T(t.aliases.hooks,r):h__default.resolve(await T(t.aliases.components,r)??e,"..","hooks")}})}async function It(e){try{let t=await Et.search(e);return t?a.parse(t.config):null}catch{let r=`${e}/components.json`;throw new Error(`Invalid configuration found in ${k.info(r)}.`)}}async function cs(e){let t={};for(let s of Object.keys(e.aliases)){if(!Ct(s,e))continue;let n=e.resolvedPaths[s],i=await St(e.resolvedPaths.cwd,n);if(!i){t[s]=e;continue}t[s]=await le(i);}let r=c.safeParse(t);return r.success?r.data:null}async function St(e,t){let r=Pt(e,t),s=h__default.relative(r,t),i=(await me.glob("**/package.json",{cwd:r,deep:3,ignore:["**/node_modules/**","**/dist/**","**/build/**","**/public/**"]})).map(o=>h__default.dirname(o)).find(o=>s.startsWith(o));return i?h__default.join(r,i):null}function Ct(e,t){return Object.keys(t.resolvedPaths).filter(r=>r!=="utils").includes(e)}function Pt(e,t){let r=e.split(h__default.sep),s=t.split(h__default.sep),n=[];for(let i=0;i<Math.min(r.length,s.length)&&r[i]===s[i];i++)n.push(r[i]);return n.join(h__default.sep)}function Ke(e){let t={resolvedPaths:{cwd:process.cwd(),tailwindConfig:"",tailwindCss:"",utils:"",components:"",ui:"",lib:"",hooks:""},tailwind:{config:"",css:"",baseColor:"",cssVariables:false},rsc:false,tsx:true,aliases:{components:"",utils:""}};return e?{...t,...e,resolvedPaths:{...t.resolvedPaths,...e.resolvedPaths||{}},tailwind:{...t.tailwind,...e.tailwind||{}},aliases:{...t.aliases,...e.aliases||{}}}:t}function Ie(e="",t=true){let r=h__default.join(e,"package.json");return pe.readJSONSync(r,{throws:t})}var ue=["**/node_modules/**",".next","public","dist","build"];z$1.object({compilerOptions:z$1.object({paths:z$1.record(z$1.string().or(z$1.array(z$1.string())))})});async function B(e){let[t,r,s,n,i,o,a,p]=await Promise.all([me.glob("**/{next,vite,astro,app}.config.*|gatsby-config.*|composer.json|react-router.config.*",{cwd:e,deep:3,ignore:ue}),pe.pathExists(h__default.resolve(e,"src")),At(e),Ot(e),$t(e),Nt(e),Dt(e),Ie(e,false)]),l=await pe.pathExists(h__default.resolve(e,`${r?"src/":""}app`)),c={framework:P.manual,isSrcDir:r,isRSC:false,isTsx:s,tailwindConfigFile:n,tailwindCssFile:i,tailwindVersion:o,frameworkVersion:null,aliasPrefix:a};if(t.find(m=>m.startsWith("next.config."))?.length)return c.framework=l?P["next-app"]:P["next-pages"],c.isRSC=l,c.frameworkVersion=await Ft(c.framework,p),c;if(t.find(m=>m.startsWith("astro.config."))?.length)return c.framework=P.astro,c;if(t.find(m=>m.startsWith("gatsby-config."))?.length)return c.framework=P.gatsby,c;if(t.find(m=>m.startsWith("composer.json"))?.length)return c.framework=P.laravel,c;if(Object.keys(p?.dependencies??{}).find(m=>m.startsWith("@remix-run/")))return c.framework=P.remix,c;if([...Object.keys(p?.dependencies??{}),...Object.keys(p?.devDependencies??{})].find(m=>m.startsWith("@tanstack/react-start")))return c.framework=P["tanstack-start"],c;if(t.find(m=>m.startsWith("react-router.config."))?.length)return c.framework=P["react-router"],c;if(t.find(m=>m.startsWith("vite.config."))?.length)return c.framework=P.vite,c;let d=t.find(m=>m.startsWith("app.config"));return d?.length&&(await pe.readFile(h__default.resolve(e,d),"utf8")).includes("defineConfig")?(c.framework=P.vite,c):(p?.dependencies?.expo&&(c.framework=P.expo),c)}async function Ft(e,t){if(!t||!["next-app","next-pages"].includes(e.name))return null;let r=t.dependencies?.next||t.devDependencies?.next;if(!r)return null;let s=r.match(/^[\^~]?(\d+\.\d+\.\d+)/);if(s)return s[1];let n=r.match(/(\d+\.\d+\.\d+)/);return n?n[1]:r}async function Nt(e){let[t,r]=await Promise.all([Ie(e,false),le(e)]);return r?.tailwind?.config===""?"v4":!t?.dependencies?.tailwindcss&&!t?.devDependencies?.tailwindcss?null:"v4"}async function $t(e){let t=await me.glob(["**/*.css","**/*.scss"],{cwd:e,deep:5,ignore:ue});if(!t.length)return null;for(let r of t){let s=await pe.readFile(h__default.resolve(e,r),"utf8");if(s.includes('@import "tailwindcss"')||s.includes("@import 'tailwindcss'"))return r}return null}async function Ot(e){let t=await me.glob("tailwind.config.*",{cwd:e,deep:3,ignore:ue});return t.length?t[0]:null}async function Dt(e){let t=await loadConfig(e);if(t?.resultType==="failed"||!Object.entries(t?.paths).length)return null;for(let[r,s]of Object.entries(t.paths))if(s.includes("./*")||s.includes("./src/*")||s.includes("./app/*")||s.includes("./resources/js/*"))return r.replace(/\/\*$/,"")??null;return Object.keys(t?.paths)?.[0].replace(/\/\*$/,"")??null}async function At(e){return (await me.glob("tsconfig.*",{cwd:e,deep:1,ignore:ue})).length>0}async function Is(e,t=null){let[r,s]=await Promise.all([le(e),t?Promise.resolve(t):B(e)]);if(r)return r;if(!s||!s.tailwindCssFile)return null;let n={$schema:"https://createui.co/schema.json",rsc:s.isRSC,tsx:s.isTsx,tailwind:{config:s.tailwindConfigFile??"",baseColor:"zinc",css:s.tailwindCssFile,cssVariables:true,prefix:""},iconLibrary:"createui",aliases:{components:`${s.aliasPrefix}/components`,ui:`${s.aliasPrefix}/components/ui`,hooks:`${s.aliasPrefix}/hooks`,lib:`${s.aliasPrefix}/lib`,utils:`${s.aliasPrefix}/lib/utils`}};return await Ee(e,n)}function Me(e,t,r={}){let{ignoreImports:s=false}=r,n=e.replace(/\r\n/g,`
4
+ `).trim(),i=t.replace(/\r\n/g,`
5
+ `).trim();if(n===i)return true;if(!s)return false;let o=/^(import\s+(?:type\s+)?(?:\*\s+as\s+\w+|\{[^}]*\}|\w+)?(?:\s*,\s*(?:\{[^}]*\}|\w+))?\s+from\s+["'])([^"']+)(["'])/gm,a=c=>c.replace(o,(d,m,u,y)=>{if(u.startsWith("."))return `${m}${u}${y}`;let g=u.split("/"),v=g[g.length-1];return `${m}@normalized/${v}${y}`}),p=a(n),l=a(i);return p===l}function V(e){let t=h__default.basename(e);return /^\.env(\.|$)/.test(t)}function Ge(e){let t=[".env.local",".env",".env.development.local",".env.development"];for(let r of t){let s=h__default.join(e,r);if(existsSync(s))return s}return null}function G(e){let t=e.split(`
6
+ `),r={};for(let s of t){let n=s.trim();if(!n||n.startsWith("#"))continue;let i=n.indexOf("=");if(i===-1)continue;let o=n.substring(0,i).trim(),a=n.substring(i+1).trim();o&&(r[o]=a.replace(/^["']|["']$/g,""));}return r}function He(e,t){let r=G(e),s=G(t),n=[];for(let i of Object.keys(s))i in r||n.push(i);return n}function Je(e,t){let r=G(e),s=G(t),n=e.trimEnd();n&&!n.endsWith(`
7
+ `)&&(n+=`
8
+ `);let i=[];for(let[o,a]of Object.entries(s))o in r||i.push(`${o}=${a}`);return i.length>0?(n&&(n+=`
9
+ `),n+=i.join(`
10
+ `),n+`
11
+ `):n&&!n.endsWith(`
12
+ `)?n+`
13
+ `:n}var w={error(...e){console.log(k.error(e.join(" ")));},warn(...e){console.log(k.warn(e.join(" ")));},info(...e){console.log(k.info(e.join(" ")));},success(...e){console.log(k.success(e.join(" ")));},log(...e){console.log(e.join(" "));},break(){console.log("");}};function X(e,t){return Lt({text:e,isSilent:t?.silent})}var ge=async({sourceFile:e})=>e;var de=async({sourceFile:e,config:t,isRemote:r})=>{let s=t.aliases?.utils,i=`${typeof s=="string"&&s.includes("/")?s.split("/")[0]:"@"}/lib/utils`;if(![".tsx",".ts",".jsx",".js"].includes(e.getExtension()))return e;for(let o of e.getImportStringLiterals()){let a=Wt(o.getLiteralValue(),t,r);if(o.setLiteralValue(a),i===a||a==="@/lib/utils"){if(!o.getFirstAncestorByKind(SyntaxKind.ImportDeclaration)?.getNamedImports().some(c=>c.getName()==="cn")||!t.aliases.utils)continue;o.setLiteralValue(i===a?a.replace(i,t.aliases.utils):t.aliases.utils);}}return e};function Wt(e,t,r=false){if(!e.startsWith("@/")&&!r)return e;if(r&&e.startsWith("@/")&&(e=e.replace(/^@\//,"@/registry/_/")),!e.startsWith("@/registry/")){let s=t.aliases.components.split("/")[0];return e.replace(/^@\//,`${s}/`)}return e.match(/^@\/registry\/((.+)\/)?ui/)?e.replace(/^@\/registry\/((.+)\/)?ui/,t.aliases.ui??`${t.aliases.components}/ui`):t.aliases.components&&e.match(/^@\/registry\/((.+)\/)?components/)?e.replace(/^@\/registry\/((.+)\/)?components/,t.aliases.components):t.aliases.lib&&e.match(/^@\/registry\/((.+)\/)?lib/)?e.replace(/^@\/registry\/((.+)\/)?lib/,t.aliases.lib):t.aliases.hooks&&e.match(/^@\/registry\/((.+)\/)?hooks/)?e.replace(/^@\/registry\/((.+)\/)?hooks/,t.aliases.hooks):e.replace(/^@\/registry\/[^/]+/,t.aliases.components)}var Mt={sourceType:"module",allowImportExportEverywhere:true,allowReturnOutsideFunction:true,startLine:1,tokens:true,plugins:["asyncGenerators","bigInt","classPrivateMethods","classPrivateProperties","classProperties","classStaticBlock","decimal","decorators-legacy","doExpressions","dynamicImport","exportDefaultFrom","exportNamespaceFrom","functionBind","functionSent","importAssertions","importMeta","nullishCoalescingOperator","numericSeparator","objectRestSpread","optionalCatchBinding","optionalChaining",["pipelineOperator",{proposal:"minimal"}],["recordAndTuple",{syntaxType:"hash"}],"throwExpressions","topLevelAwait","v8intrinsic","typescript","jsx"]},qe=async({sourceFile:e,config:t})=>{let r=e.getFullText();if(t.tsx)return r;let s=he.parse(r,{parser:{parse:i=>parse(i,Mt)}}),n=transformFromAstSync(s,r,{cloneInputAst:false,code:false,ast:true,plugins:[Kt],configFile:false});if(!n||!n.ast)throw new Error("Failed to transform JSX");return he.print(n.ast).code};var Gt=/^["']use client["']$/g,ye=async({sourceFile:e,config:t})=>{if(t.rsc)return e;let r=e.getFirstChildByKind(SyntaxKind.ExpressionStatement);return r&&Gt.test(r.getText())&&r.remove(),e};var xe=async({sourceFile:e,config:t})=>(t.tailwind?.prefix&&(e.getDescendantsOfKind(SyntaxKind.CallExpression).filter(r=>r.getExpression().getText()==="cva").forEach(r=>{if(r.getArguments()[0]?.isKind(SyntaxKind.StringLiteral)){let s=r.getArguments()[0];s&&s.replaceWithText(`"${_(s.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}r.getArguments()[1]?.isKind(SyntaxKind.ObjectLiteralExpression)&&r.getArguments()[1]?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).find(s=>s.getName()==="variants")?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(s=>{s.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(n=>{let i=n.getInitializerIfKind(SyntaxKind.StringLiteral);i&&i?.replaceWithText(`"${_(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);});});}),e.getDescendantsOfKind(SyntaxKind.JsxAttribute).forEach(r=>{if(r.getNameNode().getText()==="className"){if(r.getInitializer()?.isKind(SyntaxKind.StringLiteral)){let s=r.getInitializer();s&&s.replaceWithText(`"${_(s.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}if(r.getInitializer()?.isKind(SyntaxKind.JsxExpression)){let s=r.getInitializer()?.getDescendantsOfKind(SyntaxKind.CallExpression).find(n=>n.getExpression().getText()==="cn");s&&s.getArguments().forEach(n=>{(n.isKind(SyntaxKind.ConditionalExpression)||n.isKind(SyntaxKind.BinaryExpression))&&n.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(i=>{i.replaceWithText(`"${_(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}),n.isKind(SyntaxKind.StringLiteral)&&n.replaceWithText(`"${_(n.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);});}}r.getNameNode().getText()==="classNames"&&r.getInitializer()?.isKind(SyntaxKind.JsxExpression)&&r.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(s=>{if(s.getInitializer()?.isKind(SyntaxKind.CallExpression)){let n=s.getInitializerIfKind(SyntaxKind.CallExpression);n&&n.getArguments().forEach(i=>{i.isKind(SyntaxKind.ConditionalExpression)&&i.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(o=>{o.replaceWithText(`"${_(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}),i.isKind(SyntaxKind.StringLiteral)&&i.replaceWithText(`"${_(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);});}if(s.getInitializer()?.isKind(SyntaxKind.StringLiteral)&&s.getNameNode().getText()!=="variant"){let n=s.getInitializer();n&&n.replaceWithText(`"${_(n.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}});})),e);function _(e,t=""){return e.split(" ").map(r=>r.indexOf(`${t}:`)===0?r:`${t}:${r.trim()}`).join(" ")}var Zt=new Project({compilerOptions:{}});async function Xt(e){let t=await promises.mkdtemp(h__default.join(tmpdir(),"createui-"));return h__default.join(t,e)}async function Ze(e,t=[de,ye,ge,xe]){let r=await Xt(e.filename),s=Zt.createSourceFile(r,e.raw,{scriptKind:ScriptKind.TSX});for(let n of t)await n({sourceFile:s,...e});return e.transformJsx?await qe({sourceFile:s,...e}):s.getText()}var Xe=async({sourceFile:e})=>(e.getFunctions().forEach(t=>{t.getName()==="middleware"&&t.rename("proxy");}),e.getVariableDeclarations().forEach(t=>{t.getName()==="middleware"&&t.rename("proxy");}),e.getExportDeclarations().forEach(t=>{t.getNamedExports().forEach(s=>{s.getName()==="middleware"&&s.setName("proxy"),s.getAliasNode()?.getText()==="middleware"&&s.setAlias("proxy");});}),e);async function In(e,t,r){if(!e?.length)return {filesCreated:[],filesUpdated:[],filesSkipped:[]};r={overwrite:false,force:false,silent:false,isRemote:false,isWorkspace:false,...r};let s=X("Updating files.",{silent:r.silent})?.start(),n=await B(t.resolvedPaths.cwd),i=[],o=[],a=[],p=[],l=null;for(let u=0;u<e.length;u++){let y=e[u];if(!y.content)continue;let g=Se(y,t,{isSrcDir:n?.isSrcDir,framework:n?.framework.name,commonRoot:Ce(e.map(E=>E.path),y.path),path:r.path,fileIndex:u});if(!g)continue;let v=basename(y.path),I=h__default.dirname(g);if(t.tsx||(g=g.replace(/\.tsx?$/,E=>E===".tsx"?".jsx":".js")),V(g)&&!existsSync(g)){let E=Ge(I);E&&(g=E);}let f=existsSync(g);if(f&&statSync(g).isDirectory())throw new Error(`Cannot write to ${g}: path exists and is a directory. Please provide a file path instead.`);let x=y.type==="registry:file"||y.type==="registry:item",b=V(g)||x?y.content:await Ze({filename:y.path,raw:y.content,config:t,transformJsx:!t.tsx,isRemote:r.isRemote},[de,ye,ge,xe,...Qe(g,n,t)?[Xe]:[]]);if(f&&!V(g)){let E=await promises.readFile(g,"utf-8");if(Me(E,b,{ignoreImports:r.isWorkspace})){a.push(h__default.relative(t.resolvedPaths.cwd,g));continue}}if(f&&!r.overwrite&&!V(g)){s.stop(),r.rootSpinner&&r.rootSpinner.stop();let{overwrite:E}=await tr({type:"confirm",name:"overwrite",message:`The file ${k.info(v)} already exists. Would you like to overwrite?`,initial:false});if(!E){a.push(h__default.relative(t.resolvedPaths.cwd,g)),r.rootSpinner&&r.rootSpinner.start();continue}s?.start(),r.rootSpinner&&r.rootSpinner.start();}if(Qe(g,n,t)&&(g=g.replace(/middleware\.(ts|js)$/,"proxy.$1")),existsSync(I)||await promises.mkdir(I,{recursive:true}),V(g)&&f){let E=await promises.readFile(g,"utf-8"),C=Je(E,b);if(p=He(E,b),l=h__default.relative(t.resolvedPaths.cwd,g),!p.length){a.push(h__default.relative(t.resolvedPaths.cwd,g));continue}await promises.writeFile(g,C,"utf-8"),o.push(h__default.relative(t.resolvedPaths.cwd,g));continue}await promises.writeFile(g,b,"utf-8"),f?o.push(h__default.relative(t.resolvedPaths.cwd,g)):(i.push(h__default.relative(t.resolvedPaths.cwd,g)),V(g)&&(p=Object.keys(G(b)),l=h__default.relative(t.resolvedPaths.cwd,g)));}let c=[...i,...o,...a],d=await cr(c,t);if(o.push(...d),o=o.filter(u=>!i.includes(u)),!(i.length||o.length)&&!a.length&&s?.info("No files updated."),i=Array.from(new Set(i)),o=Array.from(new Set(o)),a=Array.from(new Set(a)),i.length){if(s?.succeed(`Created ${i.length} ${i.length===1?"file":"files"}:`),!r.silent)for(let u of i)w.log(` - ${u}`);}else s?.stop();if(o.length&&(X(`Updated ${o.length} ${o.length===1?"file":"files"}:`,{silent:r.silent})?.info(),!r.silent))for(let u of o)w.log(` - ${u}`);if(a.length&&(X(`Skipped ${a.length} ${o.length===1?"file":"files"}: (files might be identical, use --overwrite to overwrite)`,{silent:r.silent})?.info(),!r.silent))for(let u of a)w.log(` - ${u}`);if(p.length&&l&&(X(`Added the following variables to ${k.info(l)}:`)?.info(),!r.silent))for(let u of p)w.log(` ${k.success("+")} ${u}`);return r.silent||w.break(),{filesCreated:i,filesUpdated:o,filesSkipped:a}}function Se(e,t,r){if(r.path){let i=h__default.isAbsolute(r.path)?r.path:h__default.join(t.resolvedPaths.cwd,r.path);if(/\.[^/\\]+$/.test(i)){if(r.fileIndex===0)return i}else {let a=h__default.basename(e.path);return h__default.join(i,a)}}if(e.target){if(e.target.startsWith("~/"))return h__default.join(t.resolvedPaths.cwd,e.target.replace("~/",""));let i=e.target;return e.type==="registry:page"&&(i=ar(i,r.framework),!i)?"":r.isSrcDir?h__default.join(t.resolvedPaths.cwd,"src",i.replace("src/","")):h__default.join(t.resolvedPaths.cwd,i.replace("src/",""))}let s=ir(e,t),n=or(e.path,s);return h__default.join(s,n)}function ir(e,t){return e.type==="registry:ui"?t.resolvedPaths.ui:e.type==="registry:lib"?t.resolvedPaths.lib:e.type==="registry:block"||e.type==="registry:component"?t.resolvedPaths.components:e.type==="registry:hook"?t.resolvedPaths.hooks:t.resolvedPaths.components}function Ce(e,t){let r=e.map(o=>o.replace(/^\//,"")),s=t.replace(/^\//,""),n=s.split("/").slice(0,-1).join("/");if(!n)return "";let i=n.split("/");for(let o=i.length;o>0;o--){let a=i.slice(0,o).join("/");if(r.some(l=>l!==s&&l.startsWith(a+"/")))return "/"+a}return "/"+n}function or(e,t){let r=e.replace(/^\/|\/$/g,""),s=t.replace(/^\/|\/$/g,""),n=r.split("/"),i=s.split("/"),o=i[i.length-1],a=n.findIndex(p=>p===o);return a===-1?n[n.length-1]:n.slice(a+1).join("/")}function ar(e,t){if(!t)return "";if(t==="next-app")return e;if(t==="next-pages"){let r=e.replace(/^app\//,"pages/");return r=r.replace(/\/page(\.[jt]sx?)$/,"$1"),r}if(t==="react-router"){let r=e.replace(/^app\//,"app/routes/");return r=r.replace(/\/page(\.[jt]sx?)$/,"$1"),r}if(t==="laravel"){let r=e.replace(/^app\//,"resources/js/pages/");return r=r.replace(/\/page(\.[jt]sx?)$/,"$1"),r}return ""}async function cr(e,t){let r=new Project({compilerOptions:{}}),s=await B(t.resolvedPaths.cwd),n=loadConfig(t.resolvedPaths.cwd),i=[];if(!s||n.resultType==="failed")return [];for(let o of e){let a=h__default.resolve(t.resolvedPaths.cwd,o);if(!existsSync(a))continue;let p=await promises.readFile(a,"utf-8"),l=await promises.mkdtemp(h__default.join(tmpdir(),"createui-")),c=r.createSourceFile(h__default.join(l,basename(a)),p,{scriptKind:ScriptKind.TSX});if(![".tsx",".ts",".jsx",".js"].includes(c.getExtension()))continue;let d=c.getImportDeclarations();for(let m of d){let u=m.getModuleSpecifierValue();if(s?.aliasPrefix&&!u.startsWith(`${s.aliasPrefix}/`))continue;let y=await T(u,n);if(!y)continue;let g=lr(y,e,t);if(!g)continue;let v=fr(g,t,s);!v||v===u||(m.setModuleSpecifier(v),await promises.writeFile(a,c.getFullText(),"utf-8"),i.push(o));}}return i}function lr(e,t,r,s=[".tsx",".ts",".js",".jsx",".css"]){let n=h__default.normalize(r.resolvedPaths.cwd),i=t.map(v=>v.split(h__default.sep).join(h__default.posix.sep)),o=new Set(i),a=h__default.extname(e),p=a!=="",l=p?e.slice(0,-a.length):e,d=h__default.relative(n,l).split(h__default.sep).join(h__default.posix.sep),m=p?[a]:s,u=new Set;for(let v of m){let I=l+v,f=h__default.posix.normalize(h__default.relative(n,I));(o.has(f)||existsSync(I))&&u.add(f);let x=h__default.join(l,`index${v}`),b=h__default.posix.normalize(h__default.relative(n,x));(o.has(b)||existsSync(x))&&u.add(b);}let y=h__default.basename(l);for(let v of i)m.some(I=>v.endsWith(`/${y}${I}`))&&u.add(v);return u.size===0?null:Array.from(u).sort((v,I)=>{let f=h__default.posix.extname(v),x=h__default.posix.extname(I),b=m.indexOf(f)-m.indexOf(x);if(b!==0)return b;let E=d&&v.startsWith(d)?-1:1,C=d&&I.startsWith(d)?-1:1;return E-C})[0]}function fr(e,t,r){let s=h__default.normalize(h__default.join(t.resolvedPaths.cwd,e)),n=Object.entries(t.resolvedPaths).filter(([,y])=>y&&s.startsWith(h__default.normalize(y+h__default.sep))).sort((y,g)=>g[1].length-y[1].length);if(n.length===0)return null;let[i,o]=n[0],a=h__default.relative(o,s);a=a.split(h__default.sep).join("/");let p=h__default.posix.extname(a),c=[".ts",".tsx",".js",".jsx"].includes(p)?"":p,d=a.slice(0,a.length-p.length);d.endsWith("/index")&&(d=d.slice(0,-6));let m=i==="cwd"?r.aliasPrefix:t.aliases[i];if(!m)return null;let u=d===""?"":`/${d}`;return u=u.replace("/src",""),`${m}${u}${c}`}function Qe(e,t,r){let s=e===h__default.join(r.resolvedPaths.cwd,"middleware.ts")||e===h__default.join(r.resolvedPaths.cwd,"middleware.js"),n=t?.framework.name==="next-app"||t?.framework.name==="next-pages";if(!s||!n||!t?.frameworkVersion)return false;let i=parseInt(t.frameworkVersion.split(".")[0]);return !isNaN(i)&&i>=16}var rt=[".tsx",".ts",".jsx",".js",".css"],st=["lib/utils.ts"],dr=[/^(react|react-dom|next)(\/.*)?$/,/^(node|jsr|npm):.*$/],hr=new Project({compilerOptions:{}});function yr(e){if(dr.some(t=>t.test(e)))return null;if(!e.startsWith("@")&&e.includes("/")&&(e=e.split("/")[0]),e.startsWith("@")){let t=e.split("/");t.length>2&&(e=t.slice(0,2).join("/"));}return e}async function xr(e,t,r,s=new Set){let n=h.resolve(t.resolvedPaths.cwd,e),i=h.relative(t.resolvedPaths.cwd,n);if(st.includes(i))return {dependencies:[],files:[]};let o=h.extname(e);if(!rt.includes(o))return {dependencies:[],files:[]};if(s.has(i))return {dependencies:[],files:[]};if(s.add(i),!(await z.stat(n)).isFile())return {dependencies:[],files:[]};let p=await z.readFile(n,"utf-8"),l=await wr(h.basename(n)),c=hr.createSourceFile(l,p,{scriptKind:ScriptKind.TSX}),d=await loadConfig(t.resolvedPaths.cwd);if(d.resultType==="failed")return {dependencies:[],files:[]};let m=[],u=new Set,y=nt(e),g={path:i,type:y,target:""};m.push(g);let v=c.getImportDeclarations();for(let f of v){let x=f.getModuleSpecifierValue(),b=x.startsWith(".");if(!x.startsWith(`${r.aliasPrefix}/`)&&!b){let N=yr(x);N&&u.add(N);continue}let C=await T(x,d);if(b&&(C=h.resolve(h.dirname(n),x)),!C)continue;if(!h.extname(C))for(let N of rt){let Ne=`${C}${N}`;try{await z.access(Ne),C=Ne;break}catch{continue}}let K=h.relative(t.resolvedPaths.cwd,C);if(s.has(K)||st.includes(K))continue;let Y=nt(x),Fe={path:K,type:Y,target:""};(Y==="registry:page"||Y==="registry:file")&&(Fe.target=x),m.push(Fe);let te=await xr(K,t,r,s);if(te.files)for(let N of te.files)s.has(N.path)||(s.add(N.path),m.push(N));te.dependencies&&te.dependencies.forEach(N=>u.add(N));}let I=Array.from(new Map(m.map(f=>[f.path,f])).values());return {dependencies:Array.from(u),files:I}}async function wr(e){let t=await z.mkdtemp(h.join(tmpdir(),"createui-"));return h.join(t,e)}function nt(e){return e.includes("/ui/")?"registry:ui":e.includes("/lib/")?"registry:lib":e.includes("/hooks/")?"registry:hook":(e.includes("/components/"),"registry:component")}function F(e){try{return new URL(e),!0}catch{return false}}function we(e){return e.endsWith(".json")&&!F(e)}function _n(e){return !e||e.type!=="registry:item"&&e.type!=="registry:file"?false:(e.files??[]).every(r=>!!r.target&&(r.type==="registry:file"||r.type==="registry:item"))}async function it(e$1,t){if(!vr(t))return z$1.array(e).parse(e$1.flat().filter(Boolean));let r=await B(t.resolvedPaths.cwd),s=new Map,n=z$1.array(e).parse(e$1.flat().filter(Boolean));return n.forEach(i=>{let o=Se(i,t,{isSrcDir:r?.isSrcDir,framework:r?.framework.name,commonRoot:Ce(n.map(a=>a.path),i.path)});o&&s.set(o,i);}),Array.from(s.values())}function vr(e){return !!(e?.resolvedPaths?.cwd&&(e?.resolvedPaths?.ui||e?.resolvedPaths?.lib||e?.resolvedPaths?.components||e?.resolvedPaths?.hooks))}function J(e){return F(e)?e:`${ae}/${e}`}function ot(e){let t=Ke();return e?b.parse(q(t,e)):t}var Cr=process.env.https_proxy?new HttpsProxyAgent(process.env.https_proxy):void 0,Pe=new Map;async function D(e,t={}){t={useCache:true,...t};try{return await Promise.all(e.map(async s=>{let n=J(s);if(t.useCache&&Pe.has(n))return Pe.get(n);let i=(async()=>{let o=await Sr(n,{agent:Cr});if(!o.ok){let a;if(o.headers.get("content-type")?.includes("application/json")){let p=await o.json(),l=z$1.object({detail:z$1.string().optional(),title:z$1.string().optional(),message:z$1.string().optional(),error:z$1.string().optional()}).safeParse(p);l.success&&(a=l.data.detail||l.data.message,l.data.error&&(a=`[${l.data.error}] ${a}`));}throw o.status===401?new ne(n,a):o.status===404?new se(n,a):o.status===403?new ie(n,a):new oe(n,o.status,a)}return o.json()})();return t.useCache&&Pe.set(n,i),i}))}catch(r){throw r}}async function ct(e){try{let t=e;e.startsWith("~/")&&(t=h__default.join(homedir(),e.slice(2)));let r=h__default.resolve(t),s=await promises.readFile(r,"utf8"),n$1=JSON.parse(s);try{return n.parse(n$1)}catch(i){throw new O(e,i)}}catch(t){throw t instanceof Error&&(t.message.includes("ENOENT")||t.message.includes("no such file"))?new Z(e,t):t instanceof O?t:new Z(e,t)}}async function ee(e,t={}){return await Promise.all(e.map(async s=>{if(we(s))return ct(s);if(F(s)){let[o]=await D([s],t);try{return n.parse(o)}catch(a){throw new O(s,a)}}let n$1=`${s}.json`,[i]=await D([n$1],t);try{return n.parse(i)}catch(o){throw new O(s,o)}}))}m.extend({type:d,_source:z$1.string().optional(),fontVariant:l.optional(),config:z$1.any().optional()}).passthrough();async function ft(e,t,r={}){r={useCache:true,...r};let s$1=[],n$1=[],i=[],o=Array.from(new Set(e)),a=await ee(o,r),p=new Map;for(let f=0;f<a.length;f++)a[f]&&p.set(o[f],a[f]);for(let[f,x]of Array.from(p.entries())){let b={...x,_source:f};if(s$1.push(b),x.registryDependencies){let{items:E,registryNames:C}=await ve(x.registryDependencies,t,r,new Set(o));n$1.push(...E),i.push(...C);}}if(s$1.push(...n$1),i.length>0){let f=Array.from(new Set(i)),x=await Te();if(!x&&s$1.length===0)return null;if(x){f.includes("index")&&f.unshift("index");let b=[];for(let K of f){let Y=await kr(K,t,r);b.push(...Y);}let E=Array.from(new Set(b)),C=await D(E,r),je=z$1.array(n).parse(C);s$1.push(...je);}}if(!s$1.length)return null;let l=new Map;s$1.forEach(f=>{let x=f._source||f.name;l.set(f,x);}),s$1=jr(s$1,l),s$1.sort((f,x)=>f.type==="registry:theme"&&x.type!=="registry:theme"?-1:f.type!=="registry:theme"&&x.type==="registry:theme"?1:0);let c={};s$1.forEach(f=>{c=q(c,f.tailwind??{});});let d={};s$1.forEach(f=>{d=q(d,f.cssVars??{});});let m={};s$1.forEach(f=>{m=q(m,f.css??{});});let u="";s$1.forEach(f=>{f.docs&&(u+=`${f.docs}
14
+ `);});let y={};s$1.forEach(f=>{y=q(y,f.envVars??{});});let g=await it(s$1.map(f=>f.files??[]),t),v=[];for(let f of s$1)if(f.type==="registry:font-variant"&&f.fontVariant)for(let x of ["display","body","numeric"]){let b=f.fontVariant[x];b&&v.push({name:`${f.name}-${x}`,type:"registry:font",role:x,font:b});}let I=s.parse({dependencies:q.all(s$1.map(f=>f.dependencies??[])),devDependencies:q.all(s$1.map(f=>f.devDependencies??[])),files:g,tailwind:c,cssVars:d,css:m,docs:u,fonts:v.length>0?v:void 0});return Object.keys(y).length>0&&(I.envVars=y),I}async function ve(e,t,r={},s=new Set){let n=[],i=[];for(let o of e)if(!s.has(o))if(s.add(o),F(o)||we(o)){let[a]=await ee([o],r);if(a&&(n.push(a),a.registryDependencies)){let p=await ve(a.registryDependencies,t,r,s);n.push(...p.items),i.push(...p.registryNames);}}else {i.push(o);try{let[a]=await ee([o],r);if(a&&a.registryDependencies){let p=await ve(a.registryDependencies,t,r,s);n.push(...p.items),i.push(...p.registryNames);}}catch{}}return {items:n,registryNames:i}}async function kr(e,t,r={}){if(F(e))return [e];let{registryNames:s}=await ve([e],t,r,new Set),n=s.map(i=>J(F(i)?i:`${i}.json`));return Array.from(new Set(n))}function W(e,t){let r=t||e.name,s=createHash("sha256").update(r).digest("hex").substring(0,8);return `${e.name}::${s}`}function Tr(e){if(F(e)){let r=new URL(e).pathname,s=r.match(/\/([^/]+)\.json$/),n=s?s[1]:h__default.basename(r,".json");return {name:n,hash:W({name:n},e)}}if(we(e)){let t=e.match(/\/([^/]+)\.json$/),r=t?t[1]:h__default.basename(e,".json");return {name:r,hash:W({name:r},e)}}return {name:e,hash:W({name:e},e)}}function jr(e,t){let r=new Map,s=new Map,n=new Map,i=new Map;e.forEach(l=>{let c=t.get(l)||l.name,d=W(l,c);r.set(d,l),s.set(d,l),n.set(d,0),i.set(d,[]);});let o=new Map;e.forEach(l=>{let c=t.get(l)||l.name,d=W(l,c);o.has(l.name)||o.set(l.name,[]),o.get(l.name).push(d),c!==l.name&&(o.has(c)||o.set(c,[]),o.get(c).push(d));}),e.forEach(l=>{let c=t.get(l)||l.name,d=W(l,c);l.registryDependencies&&l.registryDependencies.forEach(m=>{let u,y=o.get(m)||[];if(y.length===1)u=y[0];else if(y.length>1)u=y[0];else {let{name:g}=Tr(m),v=o.get(g)||[];v.length>0&&(u=v[0]);}u&&r.has(u)&&(i.get(u).push(d),n.set(d,n.get(d)+1));});});let a=[],p=[];for(n.forEach((l,c)=>{l===0&&a.push(c);});a.length>0;){let l=a.shift(),c=r.get(l);p.push(c),i.get(l).forEach(d=>{let m=n.get(d)-1;n.set(d,m),m===0&&a.push(d);});}if(p.length!==e.length){console.warn("Circular dependency detected in registry items");let l=new Set(p.map(c=>{let d=t.get(c)||c.name;return W(c,d)}));e.forEach(c=>{let d=t.get(c)||c.name,m=W(c,d);l.has(m)||p.push(c);});}return p}function Re(e){if(w.break(),w.error("Something went wrong. Please check the error below for more details."),w.error("If the problem persists, please open an issue on GitHub."),w.error(""),typeof e=="string"&&(w.error(e),w.break(),process.exit(1)),e instanceof $&&(e.message&&(w.error(e.cause?"Error:":"Message:"),w.error(e.message)),e.cause&&(w.error(`
15
+ Message:`),w.error(e.cause)),e.suggestion&&(w.error(`
16
+ Suggestion:`),w.error(e.suggestion)),w.break(),process.exit(1)),e instanceof z$1.ZodError){w.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))w.error(`- ${k.info(t)}: ${r}`);w.break(),process.exit(1);}e instanceof Error&&(w.error(e.message),w.break(),process.exit(1)),w.break(),process.exit(1);}async function $r(e,t){let{useCache:r}=t||{},s=F(e)?e:J("registry.json"),[n]=await D([s],{useCache:r});try{return o.parse(n)}catch(i){throw new O(e,i)}}async function Oi(e,t){let{useCache:r=false}=t||{};return ee(e,{useCache:r})}async function Di(e,t){let{config:r,useCache:s=false}=t||{};return ft(e,ot(r),{useCache:s})}async function Te(){try{return (await $r("registry.json")).items}catch(e){w.error(`
17
+ `),Re(e);}}async function Ai(){try{let[e]=await D(["styles/index.json"]);return q$1.parse(e)}catch{return []}}async function _i(){try{let[e]=await D(["icons/index.json"]);return r.parse(e)}catch(e){return Re(e),{}}}async function Or(e,t){let r=[];for(let s of t){let n=e.find(i=>i.name===s);if(n&&(r.push(n),n.registryDependencies)){let i=await Or(e,n.registryDependencies);r.push(...i);}}return r.filter((s,n,i)=>i.findIndex(o=>o.name===s.name)===n)}async function Li(e,t){try{let r=t.map(n=>`${n.name}.json`);return (await D(r)).map(n$1=>n.parse(n$1))}catch(r){return Re(r),[]}}async function zi(e,t,r){if(r)return r;if(t.type==="registry:ui")return e.resolvedPaths.ui??e.resolvedPaths.components;let[s,n]=t.type?.split(":")??[];return s in e.resolvedPaths?h__default.join(e.resolvedPaths[s],n):null}async function Dr(e){e={useCache:true,...e};let t=`${ae}/config.json`,[r]=await D([t],{useCache:e.useCache});return w$1.parse(r).presets}async function Wi(e,t){return (await Dr(t)).find(s=>s.name.toLowerCase()===e.toLowerCase())??null}function Ar(e){return (e.split(",")[0]?.trim().replace(/^['"]|['"]$/g,"")??e).replace(/\s*variable$/i,"").trim()}async function Ui(){try{let e=await Te()??[],t=[];for(let r of e){if(r.type!=="registry:font-variant"||!r.fontVariant)continue;let s=Array.from(new Set([r.fontVariant.display?.family,r.fontVariant.numeric?.family].filter(i=>!!i).map(Ar))),n=r.title??r.name;t.push({name:r.name.replace(/^font-variant-/,""),label:s.length?`${n} (${s.join(" + ")})`:n});}return t.length?t:[...ce]}catch{return [...ce]}}export{Ui as $,Ze as A,In as B,xr as C,F as D,_n as E,ot as F,$ as G,se as H,ne as I,ie as J,oe as K,Z as L,O as M,D as N,ft as O,Re as P,$r as Q,Oi as R,Di as S,Te as T,Ai as U,_i as V,Or as W,Li as X,zi as Y,Dr as Z,Wi as _,k as a,ns as b,is as c,os as d,as as e,le as f,Ee as g,cs as h,St as i,Pt as j,Ke as k,Ie as l,B as m,Is as n,w as o,X as p,mt as q,gt as r,Wr as s,Ur as t,Vr as u,Kr as v,Mr as w,Ge as x,He as y,Je as z};//# sourceMappingURL=chunk-ZI2BN2TD.js.map
18
+ //# sourceMappingURL=chunk-ZI2BN2TD.js.map