hghcn 3.6.13 → 3.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-IY6XVAAS.js → chunk-2UMNCOIB.js} +7 -7
- package/dist/{chunk-IY6XVAAS.js.map → chunk-2UMNCOIB.js.map} +1 -1
- package/dist/{chunk-YAVCZ2NG.js → chunk-X3VF5OTV.js} +7 -7
- package/dist/chunk-X3VF5OTV.js.map +1 -0
- package/dist/index.js +56 -60
- package/dist/index.js.map +1 -1
- package/dist/mcp/index.js +1 -1
- package/dist/registry/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-YAVCZ2NG.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {ma,_,u as u$1,aa}from'./chunk-X3VF5OTV.js';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {ListToolsRequestSchema,CallToolRequestSchema}from'@modelcontextprotocol/sdk/types.js';import a from'dedent';import {z}from'zod';import {zodToJsonSchema}from'zod-to-json-schema';import {detect}from'@antfu/ni';async function k(n,{withFallback:e}={withFallback:false}){let r=await detect({programmatic:true,cwd:n});if(r==="yarn@berry")return "yarn";if(r==="pnpm@6")return "pnpm";if(r==="bun")return "bun";if(r==="deno")return "deno";if(!e)return r??"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 b(n){let e=await k(n);return e==="pnpm"?"pnpm dlx":e==="bun"?"bunx":"npx"}var C="shadcn@latest";async function g(n){return `${await b(process.cwd())} ${C} ${n}`}async function u(n=process.cwd()){return {registries:(await aa(n,{useCache:false})).registries}}function y(n,e){let{query:r,registries:i}=e||{},s=n.items.map(c=>{let f=[`- ${c.name}`];return c.type&&f.push(`(${c.type})`),c.description&&f.push(`- ${c.description}`),c.registry&&f.push(`[${c.registry}]`),f.push(`
|
|
2
2
|
Add command: \`${g(`add ${c.addCommandArgument}`)}\``),f.join(" ")}),o=`Found ${n.pagination.total} items`;r&&(o+=` matching "${r}"`),i&&i.length>0&&(o+=` in registries ${i.join(", ")}`),o+=":";let m=`Showing items ${n.pagination.offset+1}-${Math.min(n.pagination.offset+n.pagination.limit,n.pagination.total)} of ${n.pagination.total}:`,d=`${o}
|
|
3
3
|
|
|
4
4
|
${m}
|
|
@@ -34,7 +34,7 @@ Found ${n.length} example${n.length>1?"s":""} matching "${e}":
|
|
|
34
34
|
|
|
35
35
|
To fix this:
|
|
36
36
|
1. Use the \`init\` command to create a components.json file
|
|
37
|
-
2. Or manually create components.json with a registries section`}]}}case "search_items_in_registries":{let r=z.object({registries:z.array(z.string()),query:z.string(),limit:z.number().optional(),offset:z.number().optional()}).parse(n.params.arguments),i=await
|
|
37
|
+
2. Or manually create components.json with a registries section`}]}}case "search_items_in_registries":{let r=z.object({registries:z.array(z.string()),query:z.string(),limit:z.number().optional(),offset:z.number().optional()}).parse(n.params.arguments),i=await ma(r.registries,{query:r.query,limit:r.limit,offset:r.offset,config:await u(process.cwd()),useCache:!1});return i.items.length===0?{content:[{type:"text",text:a`No items found matching "${r.query}" in registries ${r.registries.join(", ")}, Try searching with a different query or registry.`}]}:{content:[{type:"text",text:y(i,{query:r.query,registries:r.registries})}]}}case "list_items_in_registries":{let r=z.object({registries:z.array(z.string()),limit:z.number().optional(),offset:z.number().optional(),cwd:z.string().optional()}).parse(n.params.arguments),i=await ma(r.registries,{limit:r.limit,offset:r.offset,config:await u(process.cwd()),useCache:!1});return i.items.length===0?{content:[{type:"text",text:a`No items found in registries ${r.registries.join(", ")}.`}]}:{content:[{type:"text",text:y(i,{registries:r.registries})}]}}case "view_items_in_registries":{let r=z.object({items:z.array(z.string())}).parse(n.params.arguments),i=await _(r.items,{config:await u(process.cwd()),useCache:!1});if(i?.length===0)return {content:[{type:"text",text:a`No items found for: ${r.items.join(", ")}
|
|
38
38
|
|
|
39
39
|
Make sure the item names are correct and include the registry prefix (e.g., @shadcn/button).`}]};let s=w(i);return {content:[{type:"text",text:a`Item Details:
|
|
40
40
|
|
|
@@ -42,7 +42,7 @@ Found ${n.length} example${n.length>1?"s":""} matching "${e}":
|
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
45
|
-
`)}`}]}}case "get_item_examples_from_registries":{let r=z.object({query:z.string(),registries:z.array(z.string())}).parse(n.params.arguments),i=await u(),s=await
|
|
45
|
+
`)}`}]}}case "get_item_examples_from_registries":{let r=z.object({query:z.string(),registries:z.array(z.string())}).parse(n.params.arguments),i=await u(),s=await ma(r.registries,{query:r.query,config:i,useCache:!1});if(s.items.length===0)return {content:[{type:"text",text:a`No examples found for query "${r.query}".
|
|
46
46
|
|
|
47
47
|
Try searching with patterns like:
|
|
48
48
|
- "accordion-demo" for accordion examples
|
|
@@ -51,7 +51,7 @@ Found ${n.length} example${n.length>1?"s":""} matching "${e}":
|
|
|
51
51
|
|
|
52
52
|
You can also:
|
|
53
53
|
1. Use search_items_in_registries to find all items matching your query
|
|
54
|
-
2. View the main component with view_items_in_registries for inline usage documentation`}]};let o=s.items.map(d=>d.addCommandArgument),m=await
|
|
54
|
+
2. View the main component with view_items_in_registries for inline usage documentation`}]};let o=s.items.map(d=>d.addCommandArgument),m=await _(o,{config:i,useCache:!1});return {content:[{type:"text",text:$(m,r.query)}]}}case "get_add_command_for_items":{let e=z.object({items:z.array(z.string())}).parse(n.params.arguments);return {content:[{type:"text",text:await g(`add ${e.items.join(" ")}`)}]}}case "get_audit_checklist":return {content:[{type:"text",text:a`## Component Audit Checklist
|
|
55
55
|
|
|
56
56
|
After adding or generating components, check the following common issues:
|
|
57
57
|
|
|
@@ -64,9 +64,9 @@ Found ${n.length} example${n.length>1?"s":""} matching "${e}":
|
|
|
64
64
|
`}]};default:throw new Error(`Tool ${n.params.name} not found`)}}catch(e){if(e instanceof z.ZodError)return {content:[{type:"text",text:a`Invalid input parameters:
|
|
65
65
|
${e.errors.map(i=>`- ${i.path.join(".")}: ${i.message}`).join(`
|
|
66
66
|
`)}
|
|
67
|
-
`}],isError:true};if(e instanceof
|
|
67
|
+
`}],isError:true};if(e instanceof u$1){let i=e.message;return e.suggestion&&(i+=`
|
|
68
68
|
|
|
69
69
|
\u{1F4A1} ${e.suggestion}`),e.context&&(i+=`
|
|
70
70
|
|
|
71
|
-
Context: ${JSON.stringify(e.context,null,2)}`),{content:[{type:"text",text:a`Error (${e.code}): ${i}`}],isError:true}}let r=e instanceof Error?e.message:String(e);return {content:[{type:"text",text:a`Error: ${r}`}],isError:true}}});export{k as a,j as b};//# sourceMappingURL=chunk-
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
Context: ${JSON.stringify(e.context,null,2)}`),{content:[{type:"text",text:a`Error (${e.code}): ${i}`}],isError:true}}let r=e instanceof Error?e.message:String(e);return {content:[{type:"text",text:a`Error: ${r}`}],isError:true}}});export{k as a,j as b};//# sourceMappingURL=chunk-2UMNCOIB.js.map
|
|
72
|
+
//# sourceMappingURL=chunk-2UMNCOIB.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","SHADCN_CLI_COMMAND","npxShadcn","command","getMcpConfig","getRegistriesConfig","formatSearchResultsWithPagination","results","options","query","registries","formattedItems","item","parts","header","showingRange","output","formatRegistryItems","items","formatItemExamples","sections","file","server","Server","ListToolsRequestSchema","zodToJsonSchema","z","CallToolRequestSchema","request","config","dedent","registry","args","searchRegistries","registryItems","getRegistryItems","itemNames","fullItems","error","e","RegistryError","errorMessage"],"mappings":"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","file":"chunk-IY6XVAAS.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 { getRegistriesConfig } from \"@/src/registry/api\"\nimport { registryItemSchema, searchResultsSchema } from \"@/src/schema\"\nimport { getPackageRunner } from \"@/src/utils/get-package-manager\"\nimport { z } from \"zod\"\n\nconst SHADCN_CLI_COMMAND = \"shadcn@latest\"\n\nexport async function npxShadcn(command: string) {\n const packageRunner = await getPackageRunner(process.cwd())\n return `${packageRunner} ${SHADCN_CLI_COMMAND} ${command}`\n}\n\nexport async function getMcpConfig(cwd = process.cwd()) {\n const config = await getRegistriesConfig(cwd, {\n useCache: false,\n })\n\n return {\n registries: config.registries,\n }\n}\n\nexport 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 = results.items.map((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: \\`${npxShadcn(`add ${item.addCommandArgument}`)}\\``\n )\n\n return parts.join(\" \")\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 npxShadcn,\n} from \"./utils\"\n\nexport const server = new Server(\n {\n name: \"shadcn\",\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 configured registry names from components.json - Returns error if no components.json exists (use init_project to create one)\",\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., ['@shadcn', '@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., ['@shadcn', '@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 with registry prefix (e.g., ['@shadcn/button', '@shadcn/card'])\"\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., ['@shadcn', '@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 shadcn 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 prefixed with the registry name (e.g., ['@shadcn/button', '@shadcn/card'])\"\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 const config = await getMcpConfig(process.cwd())\n\n if (!config?.registries) {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`No components.json found or no registries configured.\n\n To fix this:\n 1. Use the \\`init\\` command to create a components.json file\n 2. Or manually create components.json with a registries section`,\n },\n ],\n }\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: dedent`The following registries are configured in the current project:\n\n ${Object.keys(config.registries)\n .map((registry) => `- ${registry}`)\n .join(\"\\n\")}\n\n You can view the items in a registry by running:\n \\`${await npxShadcn(\"view @name-of-registry\")}\\`\n\n For example: \\`${await npxShadcn(\n \"view @shadcn\"\n )}\\` or \\`${await npxShadcn(\n \"view @shadcn @acme\"\n )}\\` to view multiple registries.\n `,\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: 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: 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(args.items, {\n config: await getMcpConfig(process.cwd()),\n useCache: false,\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 and include the registry prefix (e.g., @shadcn/button).`,\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 npxShadcn(`add ${args.items.join(\" \")}`),\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","SHADCN_CLI_COMMAND","npxShadcn","command","getMcpConfig","getRegistriesConfig","formatSearchResultsWithPagination","results","options","query","registries","formattedItems","item","parts","header","showingRange","output","formatRegistryItems","items","formatItemExamples","sections","file","server","Server","ListToolsRequestSchema","zodToJsonSchema","z","CallToolRequestSchema","request","config","dedent","registry","args","searchRegistries","registryItems","getRegistryItems","itemNames","fullItems","error","e","RegistryError","errorMessage"],"mappings":"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","file":"chunk-2UMNCOIB.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 { getRegistriesConfig } from \"@/src/registry/api\"\nimport { registryItemSchema, searchResultsSchema } from \"@/src/schema\"\nimport { getPackageRunner } from \"@/src/utils/get-package-manager\"\nimport { z } from \"zod\"\n\nconst SHADCN_CLI_COMMAND = \"shadcn@latest\"\n\nexport async function npxShadcn(command: string) {\n const packageRunner = await getPackageRunner(process.cwd())\n return `${packageRunner} ${SHADCN_CLI_COMMAND} ${command}`\n}\n\nexport async function getMcpConfig(cwd = process.cwd()) {\n const config = await getRegistriesConfig(cwd, {\n useCache: false,\n })\n\n return {\n registries: config.registries,\n }\n}\n\nexport 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 = results.items.map((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: \\`${npxShadcn(`add ${item.addCommandArgument}`)}\\``\n )\n\n return parts.join(\" \")\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 npxShadcn,\n} from \"./utils\"\n\nexport const server = new Server(\n {\n name: \"shadcn\",\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 configured registry names from components.json - Returns error if no components.json exists (use init_project to create one)\",\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., ['@shadcn', '@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., ['@shadcn', '@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 with registry prefix (e.g., ['@shadcn/button', '@shadcn/card'])\"\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., ['@shadcn', '@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 shadcn 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 prefixed with the registry name (e.g., ['@shadcn/button', '@shadcn/card'])\"\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 const config = await getMcpConfig(process.cwd())\n\n if (!config?.registries) {\n return {\n content: [\n {\n type: \"text\",\n text: dedent`No components.json found or no registries configured.\n\n To fix this:\n 1. Use the \\`init\\` command to create a components.json file\n 2. Or manually create components.json with a registries section`,\n },\n ],\n }\n }\n\n return {\n content: [\n {\n type: \"text\",\n text: dedent`The following registries are configured in the current project:\n\n ${Object.keys(config.registries)\n .map((registry) => `- ${registry}`)\n .join(\"\\n\")}\n\n You can view the items in a registry by running:\n \\`${await npxShadcn(\"view @name-of-registry\")}\\`\n\n For example: \\`${await npxShadcn(\n \"view @shadcn\"\n )}\\` or \\`${await npxShadcn(\n \"view @shadcn @acme\"\n )}\\` to view multiple registries.\n `,\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: 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: 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(args.items, {\n config: await getMcpConfig(process.cwd()),\n useCache: false,\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 and include the registry prefix (e.g., @shadcn/button).`,\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 npxShadcn(`add ${args.items.join(\" \")}`),\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"]}
|
|
@@ -14,7 +14,7 @@ ${s.errors.map(i=>` - ${i.path.join(".")}: ${i.message}`).join(`
|
|
|
14
14
|
${t.errors.map(n=>` - ${n.path.join(".")}: ${n.message}`).join(`
|
|
15
15
|
`)}`:r=`Failed to parse registries index:
|
|
16
16
|
${t.errors.map(n=>` - ${n.path.join(".")}: ${n.message}`).join(`
|
|
17
|
-
`)}`;}super(r,{code:N.PARSE_ERROR,cause:t,context:{parseError:t},suggestion:"The registries index may be corrupted or have invalid registry namespace format. Registry names must start with @ (e.g., @shadcn, @example)."}),this.parseError=t,this.name="RegistriesIndexParseError";}};var pr=/^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\/(.+)$/;function se(e){if(!e.startsWith("@"))return {registry:null,item:e};let t=e.match(pr);return t?{registry:t[1],item:t[2]}:{registry:null,item:e}}var A={"next-app":{name:"next-app",label:"Next.js",links:{installation:"https://ui.shadcn.com/docs/installation/next",tailwind:"https://tailwindcss.com/docs/guides/nextjs"}},"next-pages":{name:"next-pages",label:"Next.js",links:{installation:"https://ui.shadcn.com/docs/installation/next",tailwind:"https://tailwindcss.com/docs/guides/nextjs"}},remix:{name:"remix",label:"Remix",links:{installation:"https://ui.shadcn.com/docs/installation/remix",tailwind:"https://tailwindcss.com/docs/guides/remix"}},"react-router":{name:"react-router",label:"React Router",links:{installation:"https://ui.shadcn.com/docs/installation/react-router",tailwind:"https://tailwindcss.com/docs/installation/framework-guides/react-router"}},vite:{name:"vite",label:"Vite",links:{installation:"https://ui.shadcn.com/docs/installation/vite",tailwind:"https://tailwindcss.com/docs/guides/vite"}},astro:{name:"astro",label:"Astro",links:{installation:"https://ui.shadcn.com/docs/installation/astro",tailwind:"https://tailwindcss.com/docs/guides/astro"}},laravel:{name:"laravel",label:"Laravel",links:{installation:"https://ui.shadcn.com/docs/installation/laravel",tailwind:"https://tailwindcss.com/docs/guides/laravel"}},"tanstack-start":{name:"tanstack-start",label:"TanStack Start",links:{installation:"https://ui.shadcn.com/docs/installation/tanstack",tailwind:"https://tailwindcss.com/docs/installation/using-postcss"}},gatsby:{name:"gatsby",label:"Gatsby",links:{installation:"https://ui.shadcn.com/docs/installation/gatsby",tailwind:"https://tailwindcss.com/docs/guides/gatsby"}},expo:{name:"expo",label:"Expo",links:{installation:"https://ui.shadcn.com/docs/installation/expo",tailwind:"https://www.nativewind.dev/docs/getting-started/installation"}},manual:{name:"manual",label:"Manual",links:{installation:"https://ui.shadcn.com/docs/installation/manual",tailwind:"https://tailwindcss.com/docs/installation"}}};var P={error:red,warn:yellow,info:cyan,success:green};async function O(e,t){return createMatchPath(t.absoluteBaseUrl,t.paths)(e,void 0,()=>true,[".ts",".tsx",".jsx",".js",".css"])}var kn="@/components",$n="@/lib/utils"
|
|
17
|
+
`)}`;}super(r,{code:N.PARSE_ERROR,cause:t,context:{parseError:t},suggestion:"The registries index may be corrupted or have invalid registry namespace format. Registry names must start with @ (e.g., @shadcn, @example)."}),this.parseError=t,this.name="RegistriesIndexParseError";}};var pr=/^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\/(.+)$/;function se(e){if(!e.startsWith("@"))return {registry:null,item:e};let t=e.match(pr);return t?{registry:t[1],item:t[2]}:{registry:null,item:e}}var A={"next-app":{name:"next-app",label:"Next.js",links:{installation:"https://ui.shadcn.com/docs/installation/next",tailwind:"https://tailwindcss.com/docs/guides/nextjs"}},"next-pages":{name:"next-pages",label:"Next.js",links:{installation:"https://ui.shadcn.com/docs/installation/next",tailwind:"https://tailwindcss.com/docs/guides/nextjs"}},remix:{name:"remix",label:"Remix",links:{installation:"https://ui.shadcn.com/docs/installation/remix",tailwind:"https://tailwindcss.com/docs/guides/remix"}},"react-router":{name:"react-router",label:"React Router",links:{installation:"https://ui.shadcn.com/docs/installation/react-router",tailwind:"https://tailwindcss.com/docs/installation/framework-guides/react-router"}},vite:{name:"vite",label:"Vite",links:{installation:"https://ui.shadcn.com/docs/installation/vite",tailwind:"https://tailwindcss.com/docs/guides/vite"}},astro:{name:"astro",label:"Astro",links:{installation:"https://ui.shadcn.com/docs/installation/astro",tailwind:"https://tailwindcss.com/docs/guides/astro"}},laravel:{name:"laravel",label:"Laravel",links:{installation:"https://ui.shadcn.com/docs/installation/laravel",tailwind:"https://tailwindcss.com/docs/guides/laravel"}},"tanstack-start":{name:"tanstack-start",label:"TanStack Start",links:{installation:"https://ui.shadcn.com/docs/installation/tanstack",tailwind:"https://tailwindcss.com/docs/installation/using-postcss"}},gatsby:{name:"gatsby",label:"Gatsby",links:{installation:"https://ui.shadcn.com/docs/installation/gatsby",tailwind:"https://tailwindcss.com/docs/guides/gatsby"}},expo:{name:"expo",label:"Expo",links:{installation:"https://ui.shadcn.com/docs/installation/expo",tailwind:"https://www.nativewind.dev/docs/getting-started/installation"}},manual:{name:"manual",label:"Manual",links:{installation:"https://ui.shadcn.com/docs/installation/manual",tailwind:"https://tailwindcss.com/docs/installation"}}};var P={error:red,warn:yellow,info:cyan,success:green};async function O(e,t){return createMatchPath(t.absoluteBaseUrl,t.paths)(e,void 0,()=>true,[".ts",".tsx",".jsx",".js",".css"])}var kn="@/components",$n="@/lib/utils",An="app/globals.css",wr="tailwind.config.js";var Ae=cosmiconfig("components",{searchPlaces:["components.json"]});async function Oe(e){let t=await Er(e);return t?(t.iconLibrary||(t.iconLibrary=t.style==="new-york"?"radix":"lucide"),await Qe(e,t)):null}async function Qe(e,t){t.registries={...F,...t.registries||{}};let r=await loadConfig(e);if(r.resultType==="failed")throw new Error(`Failed to load ${t.tsx?"tsconfig":"jsconfig"}.json. ${r.message??""}`.trim());return d.parse({...t,resolvedPaths:{cwd:e,tailwindConfig:t.tailwind.config?y__default.resolve(e,t.tailwind.config):wr,tailwindCss:y__default.resolve(e,t.tailwind.css),utils:await O(t.aliases.utils,r),components:await O(t.aliases.components,r),ui:t.aliases.ui?await O(t.aliases.ui,r):y__default.resolve(await O(t.aliases.components,r)??e,"ui"),lib:t.aliases.lib?await O(t.aliases.lib,r):y__default.resolve(await O(t.aliases.utils,r)??e,".."),hooks:t.aliases.hooks?await O(t.aliases.hooks,r):y__default.resolve(await O(t.aliases.components,r)??e,"..","hooks")}})}async function Er(e){try{let t=await Ae.search(e);if(!t)return null;let r=c.parse(t.config);if(r.registries){for(let s of Object.keys(r.registries))if(s in F)throw new Error(`"${s}" is a built-in registry and cannot be overridden.`)}return r}catch(t){let r=`${e}/components.json`;throw t instanceof Error&&t.message.includes("reserved registry")?t:new Error(`Invalid configuration found in ${P.info(r)}.`)}}async function On(e$1){let t={};for(let s of Object.keys(e$1.aliases)){if(!Rr(s,e$1))continue;let n=e$1.resolvedPaths[s],i=await vr(e$1.resolvedPaths.cwd,n);if(!i){t[s]=e$1;continue}t[s]=await Oe(i);}let r=e.safeParse(t);return r.success?r.data:null}async function vr(e,t){let r=Cr(e,t),s=y__default.relative(r,t),i=(await Le.glob("**/package.json",{cwd:r,deep:3,ignore:["**/node_modules/**","**/dist/**","**/build/**","**/public/**"]})).map(o=>y__default.dirname(o)).find(o=>s.startsWith(o));return i?y__default.join(r,i):null}function Rr(e,t){return Object.keys(t.resolvedPaths).filter(r=>r!=="utils").includes(e)}function Cr(e,t){let r=e.split(y__default.sep),s=t.split(y__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(y__default.sep)}async function Tt(e,t){return (await W(e))?.tailwindVersion==="v4"?"new-york-v4":t}function Pt(e){let t={resolvedPaths:{cwd:process.cwd(),tailwindConfig:"",tailwindCss:"",utils:"",components:"",ui:"",lib:"",hooks:""},style:"",tailwind:{config:"",css:"",baseColor:"",cssVariables:false},rsc:false,tsx:true,aliases:{components:"",utils:""},registries:{...F}};return e?{...t,...e,resolvedPaths:{...t.resolvedPaths,...e.resolvedPaths||{}},tailwind:{...t.tailwind,...e.tailwind||{}},aliases:{...t.aliases,...e.aliases||{}},registries:{...t.registries,...e.registries||{}}}:t}function Xe(e="",t=true){let r=y__default.join(e,"package.json");return Ne.readJSONSync(r,{throws:t})}var De=["**/node_modules/**",".next","public","dist","build"];z.object({compilerOptions:z.object({paths:z.record(z.string().or(z.array(z.string())))})});async function W(e){let[t,r,s,n,i,o,a,p]=await Promise.all([Le.glob("**/{next,vite,astro,app}.config.*|gatsby-config.*|composer.json|react-router.config.*",{cwd:e,deep:3,ignore:De}),Ne.pathExists(y__default.resolve(e,"src")),$r(e),jr(e),Pr(e),jt(e),kr(e),Xe(e,false)]),c=await Ne.pathExists(y__default.resolve(e,`${r?"src/":""}app`)),l={framework:A.manual,isSrcDir:r,isRSC:false,isTsx:s,tailwindConfigFile:n,tailwindCssFile:i,tailwindVersion:o,frameworkVersion:null,aliasPrefix:a};if(t.find(f=>f.startsWith("next.config."))?.length)return l.framework=c?A["next-app"]:A["next-pages"],l.isRSC=c,l.frameworkVersion=await Tr(l.framework,p),l;if(t.find(f=>f.startsWith("astro.config."))?.length)return l.framework=A.astro,l;if(t.find(f=>f.startsWith("gatsby-config."))?.length)return l.framework=A.gatsby,l;if(t.find(f=>f.startsWith("composer.json"))?.length)return l.framework=A.laravel,l;if(Object.keys(p?.dependencies??{}).find(f=>f.startsWith("@remix-run/")))return l.framework=A.remix,l;if([...Object.keys(p?.dependencies??{}),...Object.keys(p?.devDependencies??{})].find(f=>f.startsWith("@tanstack/react-start")))return l.framework=A["tanstack-start"],l;if(t.find(f=>f.startsWith("react-router.config."))?.length)return l.framework=A["react-router"],l;if(t.find(f=>f.startsWith("vite.config."))?.length)return l.framework=A.vite,l;let d=t.find(f=>f.startsWith("app.config"));return d?.length&&(await Ne.readFile(y__default.resolve(e,d),"utf8")).includes("defineConfig")?(l.framework=A.vite,l):(p?.dependencies?.expo&&(l.framework=A.expo),l)}async function Tr(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 jt(e){let[t,r]=await Promise.all([Xe(e,false),Oe(e)]);return r?.tailwind?.config===""?"v4":!t?.dependencies?.tailwindcss&&!t?.devDependencies?.tailwindcss?null:/^(?:\^|~)?3(?:\.\d+)*(?:-.*)?$/.test(t?.dependencies?.tailwindcss||t?.devDependencies?.tailwindcss||"")?"v3":"v4"}async function Pr(e){let[t,r]=await Promise.all([Le.glob(["**/*.css","**/*.scss"],{cwd:e,deep:5,ignore:De}),jt(e)]);if(!t.length)return null;for(let n of t){let i=await Ne.readFile(y__default.resolve(e,n),"utf8");if(i.includes('@import "tailwindcss"')||i.includes("@import 'tailwindcss'")||i.includes("@tailwind base"))return n}return null}async function jr(e){let t=await Le.glob("tailwind.config.*",{cwd:e,deep:3,ignore:De});return t.length?t[0]:null}async function kr(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 $r(e){return (await Le.glob("tsconfig.*",{cwd:e,deep:1,ignore:De})).length>0}async function qn(e,t=null){let[r,s]=await Promise.all([Oe(e),t?Promise.resolve(t):W(e)]);if(r)return r;if(!s||!s.tailwindCssFile||s.tailwindVersion==="v3"&&!s.tailwindConfigFile)return null;let n={$schema:"https://ui.shadcn.com/schema.json",rsc:s.isRSC,tsx:s.isTsx,style:"new-york",tailwind:{config:s.tailwindConfigFile??"",baseColor:"zinc",css:s.tailwindCssFile,cssVariables:true,prefix:""},iconLibrary:"lucide",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 Qe(e,n)}async function ze(e){if(!e.resolvedPaths?.cwd)return "v3";let t=await W(e.resolvedPaths.cwd);return t?.tailwindVersion?t.tailwindVersion:null}function kt(e,t,r={}){let{ignoreImports:s=false}=r,n=e.replace(/\r\n/g,`
|
|
18
18
|
`).trim(),i=t.replace(/\r\n/g,`
|
|
19
19
|
`).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=l=>l.replace(o,(d,f,x,u)=>{if(x.startsWith("."))return `${f}${x}${u}`;let w=x.split("/"),m=w[w.length-1];return `${f}@normalized/${m}${u}`}),p=a(n),c=a(i);return p===c}function Y(e){let t=y__default.basename(e);return /^\.env(\.|$)/.test(t)}function At(e){let t=[".env.local",".env",".env.development.local",".env.development"];for(let r of t){let s=y__default.join(e,r);if(existsSync(s))return s}return null}function ie(e){let t=e.split(`
|
|
20
20
|
`),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 Ot(e,t){let r=ie(e),s=ie(t),n=[];for(let i of Object.keys(s))i in r||n.push(i);return n}function Ft(e,t){let r=ie(e),s=ie(t),n=e.trimEnd();n&&!n.endsWith(`
|
|
@@ -24,11 +24,11 @@ ${t.errors.map(n=>` - ${n.path.join(".")}: ${n.message}`).join(`
|
|
|
24
24
|
`),n+`
|
|
25
25
|
`):n&&!n.endsWith(`
|
|
26
26
|
`)?n+`
|
|
27
|
-
`:n}var R={error(...e){console.log(P.error(e.join(" ")));},warn(...e){console.log(P.warn(e.join(" ")));},info(...e){console.log(P.info(e.join(" ")));},success(...e){console.log(P.success(e.join(" ")));},log(...e){console.log(e.join(" "));},break(){console.log("");}};function Z(e,t){return Or({text:e,isSilent:t?.silent})}var _e=async({sourceFile:e,config:t,baseColor:r})=>(t.tailwind?.cssVariables||!r?.inlineColors||e.getDescendantsOfKind(SyntaxKind.StringLiteral).forEach(s=>{let n=s.getLiteralText(),i=Lr(n,r.inlineColors).trim();i!==n&&s.setLiteralValue(i);}),e);function et(e){if(!e.includes("/")&&!e.includes(":"))return [null,e,null];let t=[],[r,s]=e.split("/");if(!r.includes(":"))return [null,r,s];let n=r.split(":"),i=n.pop(),o=n.join(":");return t.push(o??null,i??null,s??null),t}var Nr=["bg-","text-","border-","ring-offset-","ring-"];function Lr(e,t){e.includes(" border ")&&(e=e.replace(" border "," border border-border "));let r=e.split(" "),s=new Set,n=new Set;for(let i of r){let[o,a,p]=et(i),c=Nr.find(d=>a?.startsWith(d));if(!c){s.has(i)||s.add(i);continue}let l=a?.replace(c,"");if(l&&l in t.light){s.add([o,`${c}${t.light[l]}`].filter(Boolean).join(":")+(p?`/${p}`:"")),n.add(["dark",o,`${c}${t.dark[l]}`].filter(Boolean).join(":")+(p?`/${p}`:""));continue}s.has(i)||s.add(i);}return [...Array.from(s),...Array.from(n)].join(" ").trim()}var Ke=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=zr(o.getLiteralValue(),t,r);if(o.setLiteralValue(a),i===a||a==="@/lib/utils"){if(!o.getFirstAncestorByKind(SyntaxKind.ImportDeclaration)?.getNamedImports().some(l=>l.getName()==="cn")||!t.aliases.utils)continue;o.setLiteralValue(i===a?a.replace(i,t.aliases.utils):t.aliases.utils);}}return e};function zr(e,t,r=false){if(!e.startsWith("@/")&&!r)return e;if(r&&e.startsWith("@/")&&(e=e.replace(/^@\//,"@/registry/new-york/")),!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 Wr={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"]},Nt=async({sourceFile:e,config:t})=>{let r=e.getFullText();if(t.tsx)return r;let s=Ve.parse(r,{parser:{parse:i=>parse(i,Wr)}}),n=transformFromAstSync(s,r,{cloneInputAst:false,code:false,ast:true,plugins:[Vr],configFile:false});if(!n||!n.ast)throw new Error("Failed to transform JSX");return Ve.print(n.ast).code};var Mr=/^["']use client["']$/g,We=async({sourceFile:e,config:t})=>{if(t.rsc)return e;let r=e.getFirstChildByKind(SyntaxKind.ExpressionStatement);return r&&Mr.test(r.getText())&&r.remove(),e};var Ue=async({sourceFile:e,config:t})=>{if(!t.tailwind?.prefix)return e;let r=await ze(t);return e.getDescendantsOfKind(SyntaxKind.CallExpression).filter(s=>s.getExpression().getText()==="cva").forEach(s=>{if(s.getArguments()[0]?.isKind(SyntaxKind.StringLiteral)){let n=s.getArguments()[0];n&&n.replaceWithText(`"${M(n.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}s.getArguments()[1]?.isKind(SyntaxKind.ObjectLiteralExpression)&&s.getArguments()[1]?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).find(n=>n.getName()==="variants")?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(n=>{n.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(i=>{let o=i.getInitializerIfKind(SyntaxKind.StringLiteral);o&&o?.replaceWithText(`"${M(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);});});}),e.getDescendantsOfKind(SyntaxKind.JsxAttribute).forEach(s=>{if(s.getNameNode().getText()==="className"){if(s.getInitializer()?.isKind(SyntaxKind.StringLiteral)){let n=s.getInitializer();n&&n.replaceWithText(`"${M(n.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}if(s.getInitializer()?.isKind(SyntaxKind.JsxExpression)){let n=s.getInitializer()?.getDescendantsOfKind(SyntaxKind.CallExpression).find(i=>i.getExpression().getText()==="cn");n&&n.getArguments().forEach(i=>{(i.isKind(SyntaxKind.ConditionalExpression)||i.isKind(SyntaxKind.BinaryExpression))&&i.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(o=>{o.replaceWithText(`"${M(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}),i.isKind(SyntaxKind.StringLiteral)&&i.replaceWithText(`"${M(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);});}}s.getNameNode().getText()==="classNames"&&s.getInitializer()?.isKind(SyntaxKind.JsxExpression)&&s.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(n=>{if(n.getInitializer()?.isKind(SyntaxKind.CallExpression)){let i=n.getInitializerIfKind(SyntaxKind.CallExpression);i&&i.getArguments().forEach(o=>{o.isKind(SyntaxKind.ConditionalExpression)&&o.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(a=>{a.replaceWithText(`"${M(a.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}),o.isKind(SyntaxKind.StringLiteral)&&o.replaceWithText(`"${M(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);});}if(n.getInitializer()?.isKind(SyntaxKind.StringLiteral)&&n.getNameNode().getText()!=="variant"){let i=n.getInitializer();i&&i.replaceWithText(`"${M(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}});}),e};function M(e,t="",r){return r==="v3"?e.split(" ").map(s=>{let[n,i,o]=et(s);return n?o?`${n}:${t}${i}/${o}`:`${n}:${t}${i}`:o?`${t}${i}/${o}`:`${t}${i}`}).join(" "):e.split(" ").map(s=>s.indexOf(`${t}:`)===0?s:`${t}:${s.trim()}`).join(" ")}var qr=new Project({compilerOptions:{}});async function Yr(e){let t=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-"));return y__default.join(t,e)}async function Dt(e,t=[Ke,We,_e,Ue,a]){let r=await Yr(e.filename),s=qr.createSourceFile(r,e.raw,{scriptKind:ScriptKind.TSX});for(let n of t)await n({sourceFile:s,...e});return e.transformJsx?await Nt({sourceFile:s,...e}):s.getText()}var Zr=["a","span","div","Link","label","Label"],zt=async({sourceFile:e,config:t})=>{if(!t.style?.startsWith("base-"))return e;let r=[],s=e.getDescendantsOfKind(SyntaxKind.JsxElement);for(let n of s){let i=n.getOpeningElement(),o=i.getAttribute("asChild");if(!o)continue;let a=i.getTagNameNode().getText(),c=n.getJsxChildren().find(u=>u.getKind()===SyntaxKind.JsxElement||u.getKind()===SyntaxKind.JsxSelfClosingElement);if(!c){o.remove();continue}let l,d,f;if(c.getKind()===SyntaxKind.JsxSelfClosingElement){let u=c.asKindOrThrow(SyntaxKind.JsxSelfClosingElement);l=u.getTagNameNode().getText(),d=u.getAttributes().map(w=>w.getText()).join(" "),f="";}else {let u=c.asKindOrThrow(SyntaxKind.JsxElement),w=u.getOpeningElement();l=w.getTagNameNode().getText(),d=w.getAttributes().map(m=>m.getText()).join(" "),f=u.getJsxChildren().map(m=>m.getText()).join("");}let x=Zr.includes(l);r.push({parentElement:n,parentTagName:a,childTagName:l,childProps:d,childChildren:f,needsNativeButton:x});}for(let n of r.reverse()){let i=n.parentElement.getOpeningElement();n.parentElement.getClosingElement();let a=i.getAttributes().filter(f=>f.getKind()===SyntaxKind.JsxAttribute?f.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()!=="asChild":true).map(f=>f.getText()).join(" "),p=n.childProps?`{<${n.childTagName} ${n.childProps} />}`:`{<${n.childTagName} />}`,c=a?`${a} `:"";c+=`render=${p}`,n.needsNativeButton&&(c+=" nativeButton={false}");let l=n.childChildren.trim()?`${n.childChildren}`:"",d=`<${n.parentTagName} ${c}>${l}</${n.parentTagName}>`;n.parentElement.replaceWithText(d);}return e};var _t=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 oo(e,t,r){if(!e?.length)return {filesCreated:[],filesUpdated:[],filesSkipped:[]};r={overwrite:false,force:false,silent:false,isRemote:false,isWorkspace:false,...r};let s=Z("Updating files.",{silent:r.silent})?.start(),[n,i]=await Promise.all([W(t.resolvedPaths.cwd),t.tailwind.baseColor?Me(t.tailwind.baseColor):Promise.resolve(void 0)]),o=[],a$1=[],p=[],c=[],l=null;for(let u=0;u<e.length;u++){let w=e[u];if(!w.content)continue;let m=tt(w,t,{isSrcDir:n?.isSrcDir,framework:n?.framework.name,commonRoot:rt(e.map(v=>v.path),w.path),path:r.path,fileIndex:u});if(!m)continue;let k=basename(w.path),g=y__default.dirname(m);if(t.tsx||(m=m.replace(/\.tsx?$/,v=>v===".tsx"?".jsx":".js")),Y(m)&&!existsSync(m)){let v=At(g);v&&(m=v);}let E=existsSync(m);if(E&&statSync(m).isDirectory())throw new Error(`Cannot write to ${m}: path exists and is a directory. Please provide a file path instead.`);let S=Y(m)?w.content:await Dt({filename:w.path,raw:w.content,config:t,baseColor:i,transformJsx:!t.tsx,isRemote:r.isRemote},[Ke,We,_e,Ue,a,b,zt,...Kt(m,n,t)?[_t]:[]]);if(E&&!Y(m)){let v=await promises.readFile(m,"utf-8");if(kt(v,S,{ignoreImports:r.isWorkspace})){p.push(y__default.relative(t.resolvedPaths.cwd,m));continue}}if(E&&!r.overwrite&&!Y(m)){s.stop(),r.rootSpinner&&r.rootSpinner.stop();let{overwrite:v}=await es({type:"confirm",name:"overwrite",message:`The file ${P.info(k)} already exists. Would you like to overwrite?`,initial:false});if(!v){p.push(y__default.relative(t.resolvedPaths.cwd,m)),r.rootSpinner&&r.rootSpinner.start();continue}s?.start(),r.rootSpinner&&r.rootSpinner.start();}if(Kt(m,n,t)&&(m=m.replace(/middleware\.(ts|js)$/,"proxy.$1")),existsSync(g)||await promises.mkdir(g,{recursive:true}),Y(m)&&E){let v=await promises.readFile(m,"utf-8"),b=Ft(v,S);if(c=Ot(v,S),l=y__default.relative(t.resolvedPaths.cwd,m),!c.length){p.push(y__default.relative(t.resolvedPaths.cwd,m));continue}await promises.writeFile(m,b,"utf-8"),a$1.push(y__default.relative(t.resolvedPaths.cwd,m));continue}await promises.writeFile(m,S,"utf-8"),E?a$1.push(y__default.relative(t.resolvedPaths.cwd,m)):(o.push(y__default.relative(t.resolvedPaths.cwd,m)),Y(m)&&(c=Object.keys(ie(S)),l=y__default.relative(t.resolvedPaths.cwd,m)));}let d=[...o,...a$1,...p],f=await as(d,t);if(a$1.push(...f),a$1=a$1.filter(u=>!o.includes(u)),!(o.length||a$1.length)&&!p.length&&s?.info("No files updated."),o=Array.from(new Set(o)),a$1=Array.from(new Set(a$1)),p=Array.from(new Set(p)),o.length){if(s?.succeed(`Created ${o.length} ${o.length===1?"file":"files"}:`),!r.silent)for(let u of o)R.log(` - ${u}`);}else s?.stop();if(a$1.length&&(Z(`Updated ${a$1.length} ${a$1.length===1?"file":"files"}:`,{silent:r.silent})?.info(),!r.silent))for(let u of a$1)R.log(` - ${u}`);if(p.length&&(Z(`Skipped ${p.length} ${a$1.length===1?"file":"files"}: (files might be identical, use --overwrite to overwrite)`,{silent:r.silent})?.info(),!r.silent))for(let u of p)R.log(` - ${u}`);if(c.length&&l&&(Z(`Added the following variables to ${P.info(l)}:`)?.info(),!r.silent))for(let u of c)R.log(` ${P.success("+")} ${u}`);return r.silent||R.break(),{filesCreated:o,filesUpdated:a$1,filesSkipped:p}}function tt(e,t,r){if(r.path){let i=y__default.isAbsolute(r.path)?r.path:y__default.join(t.resolvedPaths.cwd,r.path);if(/\.[^/\\]+$/.test(i)){if(r.fileIndex===0)return i}else {let a=y__default.basename(e.path);return y__default.join(i,a)}}if(e.target){if(e.target.startsWith("~/"))return y__default.join(t.resolvedPaths.cwd,e.target.replace("~/",""));let i=e.target;return e.type==="registry:page"&&(i=os(i,r.framework),!i)?"":r.isSrcDir?y__default.join(t.resolvedPaths.cwd,"src",i.replace("src/","")):y__default.join(t.resolvedPaths.cwd,i.replace("src/",""))}let s=ns(e,t),n=is(e.path,s);return y__default.join(s,n)}function ns(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 rt(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(c=>c!==s&&c.startsWith(a+"/")))return "/"+a}return "/"+n}function is(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 os(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 as(e,t){let r=new Project({compilerOptions:{}}),s=await W(t.resolvedPaths.cwd),n=loadConfig(t.resolvedPaths.cwd),i=[];if(!s||n.resultType==="failed")return [];for(let o of e){let a=y__default.resolve(t.resolvedPaths.cwd,o);if(!existsSync(a))continue;let p=await promises.readFile(a,"utf-8"),c=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-")),l=r.createSourceFile(y__default.join(c,basename(a)),p,{scriptKind:ScriptKind.TSX});if(![".tsx",".ts",".jsx",".js"].includes(l.getExtension()))continue;let d=l.getImportDeclarations();for(let f of d){let x=f.getModuleSpecifierValue();if(s?.aliasPrefix&&!x.startsWith(`${s.aliasPrefix}/`))continue;let u=await O(x,n);if(!u)continue;let w=ls(u,e,t);if(!w)continue;let m=cs(w,t,s);!m||m===x||(f.setModuleSpecifier(m),await promises.writeFile(a,l.getFullText(),"utf-8"),i.push(o));}}return i}function ls(e,t,r,s=[".tsx",".ts",".js",".jsx",".css"]){let n=y__default.normalize(r.resolvedPaths.cwd),i=t.map(m=>m.split(y__default.sep).join(y__default.posix.sep)),o=new Set(i),a=y__default.extname(e),p=a!=="",c=p?e.slice(0,-a.length):e,d=y__default.relative(n,c).split(y__default.sep).join(y__default.posix.sep),f=p?[a]:s,x=new Set;for(let m of f){let k=c+m,g=y__default.posix.normalize(y__default.relative(n,k));(o.has(g)||existsSync(k))&&x.add(g);let E=y__default.join(c,`index${m}`),S=y__default.posix.normalize(y__default.relative(n,E));(o.has(S)||existsSync(E))&&x.add(S);}let u=y__default.basename(c);for(let m of i)f.some(k=>m.endsWith(`/${u}${k}`))&&x.add(m);return x.size===0?null:Array.from(x).sort((m,k)=>{let g=y__default.posix.extname(m),E=y__default.posix.extname(k),S=f.indexOf(g)-f.indexOf(E);if(S!==0)return S;let v=d&&m.startsWith(d)?-1:1,b=d&&k.startsWith(d)?-1:1;return v-b})[0]}function cs(e,t,r){let s=y__default.normalize(y__default.join(t.resolvedPaths.cwd,e)),n=Object.entries(t.resolvedPaths).filter(([,u])=>u&&s.startsWith(y__default.normalize(u+y__default.sep))).sort((u,w)=>w[1].length-u[1].length);if(n.length===0)return null;let[i,o]=n[0],a=y__default.relative(o,s);a=a.split(y__default.sep).join("/");let p=y__default.posix.extname(a),l=[".ts",".tsx",".js",".jsx"].includes(p)?"":p,d=a.slice(0,a.length-p.length);d.endsWith("/index")&&(d=d.slice(0,-6));let f=i==="cwd"?r.aliasPrefix:t.aliases[i];if(!f)return null;let x=d===""?"":`/${d}`;return x=x.replace("/src",""),`${f}${x}${l}`}function Kt(e,t,r){let s=e===y__default.join(r.resolvedPaths.cwd,"middleware.ts")||e===y__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 Ut=[".tsx",".ts",".jsx",".js",".css"],Mt=["lib/utils.ts"],gs=[/^(react|react-dom|next)(\/.*)?$/,/^(node|jsr|npm):.*$/],us=new Project({compilerOptions:{}});function hs(e){if(gs.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 ys(e,t,r,s=new Set){let n=y.resolve(t.resolvedPaths.cwd,e),i=y.relative(t.resolvedPaths.cwd,n);if(Mt.includes(i))return {dependencies:[],files:[]};let o=y.extname(e);if(!Ut.includes(o))return {dependencies:[],files:[]};if(s.has(i))return {dependencies:[],files:[]};if(s.add(i),!(await G.stat(n)).isFile())return {dependencies:[],files:[]};let p=await G.readFile(n,"utf-8"),c=await xs(y.basename(n)),l=us.createSourceFile(c,p,{scriptKind:ScriptKind.TSX}),d=await loadConfig(t.resolvedPaths.cwd);if(d.resultType==="failed")return {dependencies:[],files:[]};let f=[],x=new Set,u=Bt(e),w={path:i,type:u,target:""};f.push(w);let m=l.getImportDeclarations();for(let g of m){let E=g.getModuleSpecifierValue(),S=E.startsWith(".");if(!E.startsWith(`${r.aliasPrefix}/`)&&!S){let _=hs(E);_&&x.add(_);continue}let b=await O(E,d);if(S&&(b=y.resolve(y.dirname(n),E)),!b)continue;if(!y.extname(b))for(let _ of Ut){let pt=`${b}${_}`;try{await G.access(pt),b=pt;break}catch{continue}}let D=y.relative(t.resolvedPaths.cwd,b);if(s.has(D)||Mt.includes(D))continue;let K=Bt(E),Te={path:D,type:K,target:""};(K==="registry:page"||K==="registry:file")&&(Te.target=E),f.push(Te);let ee=await ys(D,t,r,s);if(ee.files)for(let _ of ee.files)s.has(_.path)||(s.add(_.path),f.push(_));ee.dependencies&&ee.dependencies.forEach(_=>x.add(_));}let k=Array.from(new Map(f.map(g=>[g.path,g])).values());return {dependencies:Array.from(x),files:k}}async function xs(e){let t=await G.mkdtemp(y.join(tmpdir(),"shadcn-"));return y.join(t,e)}function Bt(e){return e.includes("/ui/")?"registry:ui":e.includes("/lib/")?"registry:lib":e.includes("/hooks/")?"registry:hook":(e.includes("/components/"),"registry:component")}function L(e){try{return new URL(e),!0}catch{return false}}function ae(e){return e.endsWith(".json")&&!L(e)}function Eo(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 Jt(e,t){if(!ws(t))return z.array(g).parse(e.flat().filter(Boolean));let r=await W(t.resolvedPaths.cwd),s=new Map,n=z.array(g).parse(e.flat().filter(Boolean));return n.forEach(i=>{let o=tt(i,t,{isSrcDir:r?.isSrcDir,framework:r?.framework.name,commonRoot:rt(n.map(a=>a.path),i.path)});o&&s.set(o,i);}),Array.from(s.values())}function ws(e){return !!(e?.resolvedPaths?.cwd&&(e?.resolvedPaths?.ui||e?.resolvedPaths?.lib||e?.resolvedPaths?.components||e?.resolvedPaths?.hooks))}function vs(e){return e.style?e.style==="new-york"&&e.tailwind?.config===""?ke:e.style:ke}function le(e){let t=Pt({style:ke,registries:F});return e?d.parse(pe(t,{...e,style:vs(e),registries:{...F,...e.registries}})):t}var Be={headers:{}};function ve(e){Be.headers={...Be.headers,...e};}function Gt(e){return Be.headers[e]||{}}function Re(){Be.headers={};}function Rs(e){let t=new Set;return typeof e=="string"?ge(e).forEach(r=>t.add(r)):(ge(e.url).forEach(r=>t.add(r)),e.params&&Object.values(e.params).forEach(r=>{ge(r).forEach(s=>t.add(s));}),e.headers&&Object.values(e.headers).forEach(r=>{ge(r).forEach(s=>t.add(s));})),Array.from(t)}function Ht(e,t){let s=Rs(t).filter(n=>!process.env[n]);if(s.length>0)throw new xe(e,s)}function No(e,t){for(let r of e)ce(r,le(t));Re();}var qt="{name}",Je="{style}",Yt=/\${(\w+)}/g,Zt="?",Cs="&";function Ss(e){return e.startsWith("./")||e.startsWith("/")}function ce(e,t){let{registry:r,item:s}=se(e);if(!r){if(L(e)||ae(e)||Ss(e))return null;r="@shadcn";}let i={...F,...t?.registries}[r];if(!i)throw new U(r);return Ht(r,i),{url:bs(s,i,t),headers:Is(i)}}function bs(e,t,r){if(typeof t=="string"){let n=t.replace(qt,e);return r?.style&&n.includes(Je)&&(n=n.replace(Je,r.style)),de(n)}let s=t.url.replace(qt,e);return r?.style&&s.includes(Je)&&(s=s.replace(Je,r.style)),s=de(s),t.params?Ts(s,t.params):s}function Is(e){if(typeof e=="string"||!e.headers)return {};let t={};for(let[r,s]of Object.entries(e.headers)){let n=de(s);Ps(s,n)&&(t[r]=n);}return t}function Ts(e,t){let r=new URLSearchParams;for(let[i,o]of Object.entries(t)){let a=de(o);a&&r.append(i,a);}let s=r.toString();if(!s)return e;let n=e.includes(Zt)?Cs:Zt;return `${e}${n}${s}`}function Ps(e,t){let r=t.trim();if(!r)return false;if(e.includes("${")&&e.match(Yt)){let n=e.replace(Yt,"").trim();return r!==n}return true}function Ge(e){if(L(e)){let t=new URL(e);return t.pathname.match(/\/chat\/b\//)&&!t.pathname.endsWith("/json")&&(t.pathname=`${t.pathname}/json`),t.toString()}return `${te}/${e}`}var Os=process.env.https_proxy?new HttpsProxyAgent(process.env.https_proxy):void 0,st=new Map;async function j(e,t={}){t={useCache:true,...t};try{return await Promise.all(e.map(async s=>{let n=Ge(s);if(t.useCache&&st.has(n))return st.get(n);let i=(async()=>{let o=Gt(n),a=await As(n,{agent:Os,headers:{...o}});if(!a.ok){let p;if(a.headers.get("content-type")?.includes("application/json")){let c=await a.json(),l=z.object({detail:z.string().optional(),title:z.string().optional(),message:z.string().optional(),error:z.string().optional()}).safeParse(c);l.success&&(p=l.data.detail||l.data.message,l.data.error&&(p=`[${l.data.error}] ${p}`));}throw a.status===401?new ue(n,p):a.status===404?new q(n,p):a.status===403?new he(n,p):new ye(n,a.status,p)}return a.json()})();return t.useCache&&st.set(n,i),i}))}catch(r){throw r}}async function Xt(e){try{let t=e;e.startsWith("~/")&&(t=y__default.join(homedir(),e.slice(2)));let r=y__default.resolve(t),s=await promises.readFile(r,"utf8"),n$1=JSON.parse(s);try{return n.parse(n$1)}catch(i){throw new $(e,i)}}catch(t){throw t instanceof Error&&(t.message.includes("ENOENT")||t.message.includes("no such file"))?new re(e,t):t instanceof $?t:new re(e,t)}}async function da(e,t,r){if(!e||(r={silent:false,tailwindVersion:"v3",...r},r.tailwindVersion==="v4"))return;let s=y__default.relative(t.resolvedPaths.cwd,t.resolvedPaths.tailwindConfig),n=Z(`Updating ${P.info(s)}`,{silent:r.silent}).start(),i=await promises.readFile(t.resolvedPaths.tailwindConfig,"utf8"),o=await _s(i,e,t);await promises.writeFile(t.resolvedPaths.tailwindConfig,o,"utf8"),n?.succeed();}async function _s(e,t,r){let s=await tr(e,r),n=s.getDescendantsOfKind(SyntaxKind.ObjectLiteralExpression).find(o=>o.getProperties().some(a=>a.isKind(SyntaxKind.PropertyAssignment)&&a.getName()==="content"));if(!n)return e;let i=Us(n);return Ks(n,{name:"darkMode",value:"class"},{quoteChar:i}),t.plugins?.forEach(o=>{Ws(n,o);}),t.theme&&await Vs(n,t.theme),s.getFullText()}function Ks(e,t,{quoteChar:r}){let s=e.getProperty("darkMode");if(!s){let n={name:t.name,initializer:`[${r}${t.value}${r}]`};return t.name==="darkMode"?(e.insertPropertyAssignment(0,n),e):(e.addPropertyAssignment(n),e)}if(s.isKind(SyntaxKind.PropertyAssignment)){let n=s.getInitializer(),i=`${r}${t.value}${r}`;if(n?.isKind(SyntaxKind.StringLiteral)){let o=n.getText();return n.replaceWithText(`[${o}, ${i}]`),e}if(n?.isKind(SyntaxKind.ArrayLiteralExpression)){if(n.getElements().map(o=>o.getText()).includes(i))return e;n.addElement(i);}return e}return e}async function Vs(e,t){e.getProperty("theme")||e.addPropertyAssignment({name:"theme",initializer:"{}"}),it(e);let s=(e.getPropertyOrThrow("theme")?.asKindOrThrow(SyntaxKind.PropertyAssignment)).getInitializer();if(s?.isKind(SyntaxKind.ObjectLiteralExpression)){let n=s.getText(),i=await Ms(n),o=pe(i,t,{arrayMerge:(p,c)=>c}),a=Ls(o).replace(/\'\.\.\.(.*)\'/g,"...$1").replace(/\'\"/g,"'").replace(/\"\'/g,"'").replace(/\'\[/g,"[").replace(/\]\'/g,"]").replace(/\'\\\'/g,"'").replace(/\\\'/g,"'").replace(/\\\'\'/g,"'").replace(/\'\'/g,"'");s.replaceWithText(a);}ot(e);}function Ws(e,t){let r=e.getProperty("plugins");if(!r)return e.addPropertyAssignment({name:"plugins",initializer:`[${t}]`}),e;if(r.isKind(SyntaxKind.PropertyAssignment)){let s=r.getInitializer();if(s?.isKind(SyntaxKind.ArrayLiteralExpression)){if(s.getElements().map(n=>n.getText().replace(/["']/g,"")).includes(t.replace(/["']/g,"")))return e;s.addElement(t);}return e}return e}async function tr(e,t){let r=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-")),s=t?.resolvedPaths?.tailwindConfig||"tailwind.config.ts",n=y__default.join(r,`shadcn-${y__default.basename(s)}`);return new Project({compilerOptions:{}}).createSourceFile(n,e,{scriptKind:y__default.extname(s)===".ts"?ScriptKind.TS:ScriptKind.JS})}function Us(e){return e.getFirstDescendantByKind(SyntaxKind.StringLiteral)?.getQuoteKind()===QuoteKind.Single?"'":'"'}function it(e){let t=e.getProperties();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.SpreadAssignment)){let n=s.asKindOrThrow(SyntaxKind.SpreadAssignment),i=n.getExpression().getText();e.insertPropertyAssignment(r,{name:`"___${i.replace(/^\.\.\./,"")}"`,initializer:`"...${i.replace(/^\.\.\./,"")}"`}),n.remove();}else if(s.isKind(SyntaxKind.PropertyAssignment)){let i=s.asKindOrThrow(SyntaxKind.PropertyAssignment).getInitializer();i&&i.isKind(SyntaxKind.ObjectLiteralExpression)?it(i.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)):i&&i.isKind(SyntaxKind.ArrayLiteralExpression)&&rr(i.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));}}}function rr(e){let t=e.getElements();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.ObjectLiteralExpression))it(s.asKindOrThrow(SyntaxKind.ObjectLiteralExpression));else if(s.isKind(SyntaxKind.ArrayLiteralExpression))rr(s.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));else if(s.isKind(SyntaxKind.SpreadElement)){let n=s.getText();e.removeElement(r),e.insertElement(r,`"${n}"`);}}}function ot(e){let t=e.getProperties();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.PropertyAssignment)){let n=s,i=n.getInitializer();if(i&&i.isKind(SyntaxKind.StringLiteral)){let o=i.asKindOrThrow(SyntaxKind.StringLiteral).getLiteralValue();o.startsWith("...")&&(e.insertSpreadAssignment(r,{expression:o.slice(3)}),n.remove());}else i?.isKind(SyntaxKind.ObjectLiteralExpression)?ot(i):i&&i.isKind(SyntaxKind.ArrayLiteralExpression)&&sr(i.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));}}}function sr(e){let t=e.getElements();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.ObjectLiteralExpression))ot(s.asKindOrThrow(SyntaxKind.ObjectLiteralExpression));else if(s.isKind(SyntaxKind.ArrayLiteralExpression))sr(s.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));else if(s.isKind(SyntaxKind.StringLiteral)){let n=s.getText(),i=/(?:^['"])(\.\.\..*)(?:['"]$)/g;i.test(n)&&(e.removeElement(r),e.insertElement(r,n.replace(i,"$1")));}}}async function Ms(e){let r=(await tr(`const theme = ${e}`,null)).getStatements()[0];if(r?.getKind()===SyntaxKind.VariableStatement){let n=(r.getDeclarationList()?.getDeclarations()[0]).getInitializer();if(n?.isKind(SyntaxKind.ObjectLiteralExpression))return await He(n)}throw new Error("Invalid input: not an object literal")}function He(e){let t={};for(let r of e.getProperties())if(r.isKind(SyntaxKind.PropertyAssignment)){let s=r.getName().replace(/\'/g,"");r.getInitializer()?.isKind(SyntaxKind.ObjectLiteralExpression)?t[s]=He(r.getInitializer()):r.getInitializer()?.isKind(SyntaxKind.ArrayLiteralExpression)?t[s]=nr(r.getInitializer()):t[s]=at(r.getInitializer());}return t}function nr(e){let t=[];for(let r of e.getElements())r.isKind(SyntaxKind.ObjectLiteralExpression)?t.push(He(r.asKindOrThrow(SyntaxKind.ObjectLiteralExpression))):r.isKind(SyntaxKind.ArrayLiteralExpression)?t.push(nr(r.asKindOrThrow(SyntaxKind.ArrayLiteralExpression))):t.push(at(r));return t}function at(e){switch(e.getKind()){case SyntaxKind.StringLiteral:return e.getText();case SyntaxKind.NumericLiteral:return Number(e.getText());case SyntaxKind.TrueKeyword:return true;case SyntaxKind.FalseKeyword:return false;case SyntaxKind.NullKeyword:return null;case SyntaxKind.ArrayLiteralExpression:return e.getElements().map(at);case SyntaxKind.ObjectLiteralExpression:return He(e);default:return e.getText()}}function ir(e){let t={};for(let r of Object.keys(e)){let s=r.split("-"),n=s[0],i=s.slice(1).join("-");i===""?typeof t[n]=="object"?t[n].DEFAULT=`hsl(var(--${r}))`:t[n]=`hsl(var(--${r}))`:(typeof t[n]!="object"&&(t[n]={DEFAULT:`hsl(var(--${n}))`}),t[n][i]=`hsl(var(--${r}))`);}for(let[r,s]of Object.entries(t))typeof s=="object"&&s.DEFAULT===`hsl(var(--${r}))`&&!(r in e)&&delete s.DEFAULT;return t}function be(e,t){let r={},s=[...e];if(!t?.registries)return ve({}),s;for(let n=0;n<s.length;n++){let i=ce(s[n],t);i&&(s[n]=i.url,Object.keys(i.headers).length>0&&(r[i.url]=i.headers));}return ve(r),s}async function Q(e,t,r={}){return await Promise.all(e.map(async n$1=>{if(ae(n$1))return Xt(n$1);if(L(n$1)){let[a]=await j([n$1],r);try{return n.parse(a)}catch(p){throw new $(n$1,p)}}if(n$1.startsWith("@")&&t?.registries){let a=be([n$1],t),[p]=await j(a,r);try{return n.parse(p)}catch(c){throw new $(n$1,c)}}let i=`styles/${t?.style??"new-york-v4"}/${n$1}.json`,[o]=await j([i],r);try{return n.parse(o)}catch(a){throw new $(n$1,a)}}))}m.extend({type:f,_source:z.string().optional(),font:l.optional(),config:z.any().optional()}).passthrough();async function ar(e,t$1,r={}){r={useCache:true,...r};let s=[],n$1=[],i=[],o=Array.from(new Set(e)),a=await Q(o,t$1,r),p=new Map;for(let g=0;g<a.length;g++)a[g]&&p.set(o[g],a[g]);for(let[g,E]of Array.from(p.entries())){let S={...E,_source:g};if(s.push(S),E.registryDependencies){let v=E.registryDependencies;if(t$1?.registries)v=be(E.registryDependencies,t$1);else {let D=E.registryDependencies.filter(K=>K.startsWith("@"));if(D.length>0){let{registry:K}=se(D[0]);throw new U(K)}}let{items:b,registryNames:me}=await Ie(v,t$1,r,new Set(o));n$1.push(...b),i.push(...me);}}if(s.push(...n$1),i.length>0){let g=Array.from(new Set(i)),E=g.filter(v=>!v.startsWith("@")),S=g.filter(v=>v.startsWith("@"));if(S.length>0){let v=await Q(S,t$1,r);for(let b=0;b<v.length;b++){let D={...v[b],_source:S[b]};s.push(D);}}if(E.length>0){let v=await lr();if(!v&&s.length===0)return null;if(v){E.includes("index")&&E.unshift("index");let b=[];for(let Te of E){let ee=await Js(Te,t$1,r);b.push(...ee);}let me=Array.from(new Set(b)),D=await j(me,r),K=z.array(n).parse(D);s.push(...K);}}}if(!s.length)return null;if((o.includes("index")||i.includes("index"))&&t$1.tailwind.baseColor){let g=await Gs(t$1.tailwind.baseColor,t$1);g&&s.unshift(g);}let c=new Map;s.forEach(g=>{let E=g._source||g.name;c.set(g,E);}),s=qs(s,c),s.sort((g,E)=>g.type==="registry:theme"&&E.type!=="registry:theme"?-1:g.type!=="registry:theme"&&E.type==="registry:theme"?1:0);let l={};s.forEach(g=>{l=pe(l,g.tailwind??{});});let d={};s.forEach(g=>{d=pe(d,g.cssVars??{});});let f={};s.forEach(g=>{f=pe(f,g.css??{});});let x="";s.forEach(g=>{g.docs&&(x+=`${g.docs}
|
|
27
|
+
`:n}var R={error(...e){console.log(P.error(e.join(" ")));},warn(...e){console.log(P.warn(e.join(" ")));},info(...e){console.log(P.info(e.join(" ")));},success(...e){console.log(P.success(e.join(" ")));},log(...e){console.log(e.join(" "));},break(){console.log("");}};function Z(e,t){return Or({text:e,isSilent:t?.silent})}var _e=async({sourceFile:e,config:t,baseColor:r})=>(t.tailwind?.cssVariables||!r?.inlineColors||e.getDescendantsOfKind(SyntaxKind.StringLiteral).forEach(s=>{let n=s.getLiteralText(),i=Lr(n,r.inlineColors).trim();i!==n&&s.setLiteralValue(i);}),e);function et(e){if(!e.includes("/")&&!e.includes(":"))return [null,e,null];let t=[],[r,s]=e.split("/");if(!r.includes(":"))return [null,r,s];let n=r.split(":"),i=n.pop(),o=n.join(":");return t.push(o??null,i??null,s??null),t}var Nr=["bg-","text-","border-","ring-offset-","ring-"];function Lr(e,t){e.includes(" border ")&&(e=e.replace(" border "," border border-border "));let r=e.split(" "),s=new Set,n=new Set;for(let i of r){let[o,a,p]=et(i),c=Nr.find(d=>a?.startsWith(d));if(!c){s.has(i)||s.add(i);continue}let l=a?.replace(c,"");if(l&&l in t.light){s.add([o,`${c}${t.light[l]}`].filter(Boolean).join(":")+(p?`/${p}`:"")),n.add(["dark",o,`${c}${t.dark[l]}`].filter(Boolean).join(":")+(p?`/${p}`:""));continue}s.has(i)||s.add(i);}return [...Array.from(s),...Array.from(n)].join(" ").trim()}var Ke=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=zr(o.getLiteralValue(),t,r);if(o.setLiteralValue(a),i===a||a==="@/lib/utils"){if(!o.getFirstAncestorByKind(SyntaxKind.ImportDeclaration)?.getNamedImports().some(l=>l.getName()==="cn")||!t.aliases.utils)continue;o.setLiteralValue(i===a?a.replace(i,t.aliases.utils):t.aliases.utils);}}return e};function zr(e,t,r=false){if(!e.startsWith("@/")&&!r)return e;if(r&&e.startsWith("@/")&&(e=e.replace(/^@\//,"@/registry/new-york/")),!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 Wr={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"]},Nt=async({sourceFile:e,config:t})=>{let r=e.getFullText();if(t.tsx)return r;let s=Ve.parse(r,{parser:{parse:i=>parse(i,Wr)}}),n=transformFromAstSync(s,r,{cloneInputAst:false,code:false,ast:true,plugins:[Vr],configFile:false});if(!n||!n.ast)throw new Error("Failed to transform JSX");return Ve.print(n.ast).code};var Mr=/^["']use client["']$/g,We=async({sourceFile:e,config:t})=>{if(t.rsc)return e;let r=e.getFirstChildByKind(SyntaxKind.ExpressionStatement);return r&&Mr.test(r.getText())&&r.remove(),e};var Ue=async({sourceFile:e,config:t})=>{if(!t.tailwind?.prefix)return e;let r=await ze(t);return e.getDescendantsOfKind(SyntaxKind.CallExpression).filter(s=>s.getExpression().getText()==="cva").forEach(s=>{if(s.getArguments()[0]?.isKind(SyntaxKind.StringLiteral)){let n=s.getArguments()[0];n&&n.replaceWithText(`"${M(n.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}s.getArguments()[1]?.isKind(SyntaxKind.ObjectLiteralExpression)&&s.getArguments()[1]?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).find(n=>n.getName()==="variants")?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(n=>{n.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(i=>{let o=i.getInitializerIfKind(SyntaxKind.StringLiteral);o&&o?.replaceWithText(`"${M(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);});});}),e.getDescendantsOfKind(SyntaxKind.JsxAttribute).forEach(s=>{if(s.getNameNode().getText()==="className"){if(s.getInitializer()?.isKind(SyntaxKind.StringLiteral)){let n=s.getInitializer();n&&n.replaceWithText(`"${M(n.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}if(s.getInitializer()?.isKind(SyntaxKind.JsxExpression)){let n=s.getInitializer()?.getDescendantsOfKind(SyntaxKind.CallExpression).find(i=>i.getExpression().getText()==="cn");n&&n.getArguments().forEach(i=>{(i.isKind(SyntaxKind.ConditionalExpression)||i.isKind(SyntaxKind.BinaryExpression))&&i.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(o=>{o.replaceWithText(`"${M(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}),i.isKind(SyntaxKind.StringLiteral)&&i.replaceWithText(`"${M(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);});}}s.getNameNode().getText()==="classNames"&&s.getInitializer()?.isKind(SyntaxKind.JsxExpression)&&s.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(n=>{if(n.getInitializer()?.isKind(SyntaxKind.CallExpression)){let i=n.getInitializerIfKind(SyntaxKind.CallExpression);i&&i.getArguments().forEach(o=>{o.isKind(SyntaxKind.ConditionalExpression)&&o.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(a=>{a.replaceWithText(`"${M(a.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}),o.isKind(SyntaxKind.StringLiteral)&&o.replaceWithText(`"${M(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);});}if(n.getInitializer()?.isKind(SyntaxKind.StringLiteral)&&n.getNameNode().getText()!=="variant"){let i=n.getInitializer();i&&i.replaceWithText(`"${M(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}});}),e};function M(e,t="",r){return r==="v3"?e.split(" ").map(s=>{let[n,i,o]=et(s);return n?o?`${n}:${t}${i}/${o}`:`${n}:${t}${i}`:o?`${t}${i}/${o}`:`${t}${i}`}).join(" "):e.split(" ").map(s=>s.indexOf(`${t}:`)===0?s:`${t}:${s.trim()}`).join(" ")}var qr=new Project({compilerOptions:{}});async function Yr(e){let t=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-"));return y__default.join(t,e)}async function Dt(e,t=[Ke,We,_e,Ue,a]){let r=await Yr(e.filename),s=qr.createSourceFile(r,e.raw,{scriptKind:ScriptKind.TSX});for(let n of t)await n({sourceFile:s,...e});return e.transformJsx?await Nt({sourceFile:s,...e}):s.getText()}var Zr=["a","span","div","Link","label","Label"],zt=async({sourceFile:e,config:t})=>{if(!t.style?.startsWith("base-"))return e;let r=[],s=e.getDescendantsOfKind(SyntaxKind.JsxElement);for(let n of s){let i=n.getOpeningElement(),o=i.getAttribute("asChild");if(!o)continue;let a=i.getTagNameNode().getText(),c=n.getJsxChildren().find(u=>u.getKind()===SyntaxKind.JsxElement||u.getKind()===SyntaxKind.JsxSelfClosingElement);if(!c){o.remove();continue}let l,d,f;if(c.getKind()===SyntaxKind.JsxSelfClosingElement){let u=c.asKindOrThrow(SyntaxKind.JsxSelfClosingElement);l=u.getTagNameNode().getText(),d=u.getAttributes().map(w=>w.getText()).join(" "),f="";}else {let u=c.asKindOrThrow(SyntaxKind.JsxElement),w=u.getOpeningElement();l=w.getTagNameNode().getText(),d=w.getAttributes().map(m=>m.getText()).join(" "),f=u.getJsxChildren().map(m=>m.getText()).join("");}let x=Zr.includes(l);r.push({parentElement:n,parentTagName:a,childTagName:l,childProps:d,childChildren:f,needsNativeButton:x});}for(let n of r.reverse()){let i=n.parentElement.getOpeningElement();n.parentElement.getClosingElement();let a=i.getAttributes().filter(f=>f.getKind()===SyntaxKind.JsxAttribute?f.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()!=="asChild":true).map(f=>f.getText()).join(" "),p=n.childProps?`{<${n.childTagName} ${n.childProps} />}`:`{<${n.childTagName} />}`,c=a?`${a} `:"";c+=`render=${p}`,n.needsNativeButton&&(c+=" nativeButton={false}");let l=n.childChildren.trim()?`${n.childChildren}`:"",d=`<${n.parentTagName} ${c}>${l}</${n.parentTagName}>`;n.parentElement.replaceWithText(d);}return e};var _t=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 ao(e,t,r){if(!e?.length)return {filesCreated:[],filesUpdated:[],filesSkipped:[]};r={overwrite:false,force:false,silent:false,isRemote:false,isWorkspace:false,...r};let s=Z("Updating files.",{silent:r.silent})?.start(),[n,i]=await Promise.all([W(t.resolvedPaths.cwd),t.tailwind.baseColor?Me(t.tailwind.baseColor):Promise.resolve(void 0)]),o=[],a$1=[],p=[],c=[],l=null;for(let u=0;u<e.length;u++){let w=e[u];if(!w.content)continue;let m=tt(w,t,{isSrcDir:n?.isSrcDir,framework:n?.framework.name,commonRoot:rt(e.map(v=>v.path),w.path),path:r.path,fileIndex:u});if(!m)continue;let k=basename(w.path),g=y__default.dirname(m);if(t.tsx||(m=m.replace(/\.tsx?$/,v=>v===".tsx"?".jsx":".js")),Y(m)&&!existsSync(m)){let v=At(g);v&&(m=v);}let E=existsSync(m);if(E&&statSync(m).isDirectory())throw new Error(`Cannot write to ${m}: path exists and is a directory. Please provide a file path instead.`);let S=Y(m)?w.content:await Dt({filename:w.path,raw:w.content,config:t,baseColor:i,transformJsx:!t.tsx,isRemote:r.isRemote},[Ke,We,_e,Ue,a,b,zt,...Kt(m,n,t)?[_t]:[]]);if(E&&!Y(m)){let v=await promises.readFile(m,"utf-8");if(kt(v,S,{ignoreImports:r.isWorkspace})){p.push(y__default.relative(t.resolvedPaths.cwd,m));continue}}if(E&&!r.overwrite&&!Y(m)){s.stop(),r.rootSpinner&&r.rootSpinner.stop();let{overwrite:v}=await es({type:"confirm",name:"overwrite",message:`The file ${P.info(k)} already exists. Would you like to overwrite?`,initial:false});if(!v){p.push(y__default.relative(t.resolvedPaths.cwd,m)),r.rootSpinner&&r.rootSpinner.start();continue}s?.start(),r.rootSpinner&&r.rootSpinner.start();}if(Kt(m,n,t)&&(m=m.replace(/middleware\.(ts|js)$/,"proxy.$1")),existsSync(g)||await promises.mkdir(g,{recursive:true}),Y(m)&&E){let v=await promises.readFile(m,"utf-8"),b=Ft(v,S);if(c=Ot(v,S),l=y__default.relative(t.resolvedPaths.cwd,m),!c.length){p.push(y__default.relative(t.resolvedPaths.cwd,m));continue}await promises.writeFile(m,b,"utf-8"),a$1.push(y__default.relative(t.resolvedPaths.cwd,m));continue}await promises.writeFile(m,S,"utf-8"),E?a$1.push(y__default.relative(t.resolvedPaths.cwd,m)):(o.push(y__default.relative(t.resolvedPaths.cwd,m)),Y(m)&&(c=Object.keys(ie(S)),l=y__default.relative(t.resolvedPaths.cwd,m)));}let d=[...o,...a$1,...p],f=await as(d,t);if(a$1.push(...f),a$1=a$1.filter(u=>!o.includes(u)),!(o.length||a$1.length)&&!p.length&&s?.info("No files updated."),o=Array.from(new Set(o)),a$1=Array.from(new Set(a$1)),p=Array.from(new Set(p)),o.length){if(s?.succeed(`Created ${o.length} ${o.length===1?"file":"files"}:`),!r.silent)for(let u of o)R.log(` - ${u}`);}else s?.stop();if(a$1.length&&(Z(`Updated ${a$1.length} ${a$1.length===1?"file":"files"}:`,{silent:r.silent})?.info(),!r.silent))for(let u of a$1)R.log(` - ${u}`);if(p.length&&(Z(`Skipped ${p.length} ${a$1.length===1?"file":"files"}: (files might be identical, use --overwrite to overwrite)`,{silent:r.silent})?.info(),!r.silent))for(let u of p)R.log(` - ${u}`);if(c.length&&l&&(Z(`Added the following variables to ${P.info(l)}:`)?.info(),!r.silent))for(let u of c)R.log(` ${P.success("+")} ${u}`);return r.silent||R.break(),{filesCreated:o,filesUpdated:a$1,filesSkipped:p}}function tt(e,t,r){if(r.path){let i=y__default.isAbsolute(r.path)?r.path:y__default.join(t.resolvedPaths.cwd,r.path);if(/\.[^/\\]+$/.test(i)){if(r.fileIndex===0)return i}else {let a=y__default.basename(e.path);return y__default.join(i,a)}}if(e.target){if(e.target.startsWith("~/"))return y__default.join(t.resolvedPaths.cwd,e.target.replace("~/",""));let i=e.target;return e.type==="registry:page"&&(i=os(i,r.framework),!i)?"":r.isSrcDir?y__default.join(t.resolvedPaths.cwd,"src",i.replace("src/","")):y__default.join(t.resolvedPaths.cwd,i.replace("src/",""))}let s=ns(e,t),n=is(e.path,s);return y__default.join(s,n)}function ns(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 rt(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(c=>c!==s&&c.startsWith(a+"/")))return "/"+a}return "/"+n}function is(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 os(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 as(e,t){let r=new Project({compilerOptions:{}}),s=await W(t.resolvedPaths.cwd),n=loadConfig(t.resolvedPaths.cwd),i=[];if(!s||n.resultType==="failed")return [];for(let o of e){let a=y__default.resolve(t.resolvedPaths.cwd,o);if(!existsSync(a))continue;let p=await promises.readFile(a,"utf-8"),c=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-")),l=r.createSourceFile(y__default.join(c,basename(a)),p,{scriptKind:ScriptKind.TSX});if(![".tsx",".ts",".jsx",".js"].includes(l.getExtension()))continue;let d=l.getImportDeclarations();for(let f of d){let x=f.getModuleSpecifierValue();if(s?.aliasPrefix&&!x.startsWith(`${s.aliasPrefix}/`))continue;let u=await O(x,n);if(!u)continue;let w=ls(u,e,t);if(!w)continue;let m=cs(w,t,s);!m||m===x||(f.setModuleSpecifier(m),await promises.writeFile(a,l.getFullText(),"utf-8"),i.push(o));}}return i}function ls(e,t,r,s=[".tsx",".ts",".js",".jsx",".css"]){let n=y__default.normalize(r.resolvedPaths.cwd),i=t.map(m=>m.split(y__default.sep).join(y__default.posix.sep)),o=new Set(i),a=y__default.extname(e),p=a!=="",c=p?e.slice(0,-a.length):e,d=y__default.relative(n,c).split(y__default.sep).join(y__default.posix.sep),f=p?[a]:s,x=new Set;for(let m of f){let k=c+m,g=y__default.posix.normalize(y__default.relative(n,k));(o.has(g)||existsSync(k))&&x.add(g);let E=y__default.join(c,`index${m}`),S=y__default.posix.normalize(y__default.relative(n,E));(o.has(S)||existsSync(E))&&x.add(S);}let u=y__default.basename(c);for(let m of i)f.some(k=>m.endsWith(`/${u}${k}`))&&x.add(m);return x.size===0?null:Array.from(x).sort((m,k)=>{let g=y__default.posix.extname(m),E=y__default.posix.extname(k),S=f.indexOf(g)-f.indexOf(E);if(S!==0)return S;let v=d&&m.startsWith(d)?-1:1,b=d&&k.startsWith(d)?-1:1;return v-b})[0]}function cs(e,t,r){let s=y__default.normalize(y__default.join(t.resolvedPaths.cwd,e)),n=Object.entries(t.resolvedPaths).filter(([,u])=>u&&s.startsWith(y__default.normalize(u+y__default.sep))).sort((u,w)=>w[1].length-u[1].length);if(n.length===0)return null;let[i,o]=n[0],a=y__default.relative(o,s);a=a.split(y__default.sep).join("/");let p=y__default.posix.extname(a),l=[".ts",".tsx",".js",".jsx"].includes(p)?"":p,d=a.slice(0,a.length-p.length);d.endsWith("/index")&&(d=d.slice(0,-6));let f=i==="cwd"?r.aliasPrefix:t.aliases[i];if(!f)return null;let x=d===""?"":`/${d}`;return x=x.replace("/src",""),`${f}${x}${l}`}function Kt(e,t,r){let s=e===y__default.join(r.resolvedPaths.cwd,"middleware.ts")||e===y__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 Ut=[".tsx",".ts",".jsx",".js",".css"],Mt=["lib/utils.ts"],gs=[/^(react|react-dom|next)(\/.*)?$/,/^(node|jsr|npm):.*$/],us=new Project({compilerOptions:{}});function hs(e){if(gs.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 ys(e,t,r,s=new Set){let n=y.resolve(t.resolvedPaths.cwd,e),i=y.relative(t.resolvedPaths.cwd,n);if(Mt.includes(i))return {dependencies:[],files:[]};let o=y.extname(e);if(!Ut.includes(o))return {dependencies:[],files:[]};if(s.has(i))return {dependencies:[],files:[]};if(s.add(i),!(await G.stat(n)).isFile())return {dependencies:[],files:[]};let p=await G.readFile(n,"utf-8"),c=await xs(y.basename(n)),l=us.createSourceFile(c,p,{scriptKind:ScriptKind.TSX}),d=await loadConfig(t.resolvedPaths.cwd);if(d.resultType==="failed")return {dependencies:[],files:[]};let f=[],x=new Set,u=Bt(e),w={path:i,type:u,target:""};f.push(w);let m=l.getImportDeclarations();for(let g of m){let E=g.getModuleSpecifierValue(),S=E.startsWith(".");if(!E.startsWith(`${r.aliasPrefix}/`)&&!S){let _=hs(E);_&&x.add(_);continue}let b=await O(E,d);if(S&&(b=y.resolve(y.dirname(n),E)),!b)continue;if(!y.extname(b))for(let _ of Ut){let pt=`${b}${_}`;try{await G.access(pt),b=pt;break}catch{continue}}let D=y.relative(t.resolvedPaths.cwd,b);if(s.has(D)||Mt.includes(D))continue;let K=Bt(E),Te={path:D,type:K,target:""};(K==="registry:page"||K==="registry:file")&&(Te.target=E),f.push(Te);let ee=await ys(D,t,r,s);if(ee.files)for(let _ of ee.files)s.has(_.path)||(s.add(_.path),f.push(_));ee.dependencies&&ee.dependencies.forEach(_=>x.add(_));}let k=Array.from(new Map(f.map(g=>[g.path,g])).values());return {dependencies:Array.from(x),files:k}}async function xs(e){let t=await G.mkdtemp(y.join(tmpdir(),"shadcn-"));return y.join(t,e)}function Bt(e){return e.includes("/ui/")?"registry:ui":e.includes("/lib/")?"registry:lib":e.includes("/hooks/")?"registry:hook":(e.includes("/components/"),"registry:component")}function L(e){try{return new URL(e),!0}catch{return false}}function ae(e){return e.endsWith(".json")&&!L(e)}function vo(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 Jt(e,t){if(!ws(t))return z.array(g).parse(e.flat().filter(Boolean));let r=await W(t.resolvedPaths.cwd),s=new Map,n=z.array(g).parse(e.flat().filter(Boolean));return n.forEach(i=>{let o=tt(i,t,{isSrcDir:r?.isSrcDir,framework:r?.framework.name,commonRoot:rt(n.map(a=>a.path),i.path)});o&&s.set(o,i);}),Array.from(s.values())}function ws(e){return !!(e?.resolvedPaths?.cwd&&(e?.resolvedPaths?.ui||e?.resolvedPaths?.lib||e?.resolvedPaths?.components||e?.resolvedPaths?.hooks))}function vs(e){return e.style?e.style==="new-york"&&e.tailwind?.config===""?ke:e.style:ke}function le(e){let t=Pt({style:ke,registries:F});return e?d.parse(pe(t,{...e,style:vs(e),registries:{...F,...e.registries}})):t}var Be={headers:{}};function ve(e){Be.headers={...Be.headers,...e};}function Gt(e){return Be.headers[e]||{}}function Re(){Be.headers={};}function Rs(e){let t=new Set;return typeof e=="string"?ge(e).forEach(r=>t.add(r)):(ge(e.url).forEach(r=>t.add(r)),e.params&&Object.values(e.params).forEach(r=>{ge(r).forEach(s=>t.add(s));}),e.headers&&Object.values(e.headers).forEach(r=>{ge(r).forEach(s=>t.add(s));})),Array.from(t)}function Ht(e,t){let s=Rs(t).filter(n=>!process.env[n]);if(s.length>0)throw new xe(e,s)}function Lo(e,t){for(let r of e)ce(r,le(t));Re();}var qt="{name}",Je="{style}",Yt=/\${(\w+)}/g,Zt="?",Cs="&";function Ss(e){return e.startsWith("./")||e.startsWith("/")}function ce(e,t){let{registry:r,item:s}=se(e);if(!r){if(L(e)||ae(e)||Ss(e))return null;r="@shadcn";}let i={...F,...t?.registries}[r];if(!i)throw new U(r);return Ht(r,i),{url:bs(s,i,t),headers:Is(i)}}function bs(e,t,r){if(typeof t=="string"){let n=t.replace(qt,e);return r?.style&&n.includes(Je)&&(n=n.replace(Je,r.style)),de(n)}let s=t.url.replace(qt,e);return r?.style&&s.includes(Je)&&(s=s.replace(Je,r.style)),s=de(s),t.params?Ts(s,t.params):s}function Is(e){if(typeof e=="string"||!e.headers)return {};let t={};for(let[r,s]of Object.entries(e.headers)){let n=de(s);Ps(s,n)&&(t[r]=n);}return t}function Ts(e,t){let r=new URLSearchParams;for(let[i,o]of Object.entries(t)){let a=de(o);a&&r.append(i,a);}let s=r.toString();if(!s)return e;let n=e.includes(Zt)?Cs:Zt;return `${e}${n}${s}`}function Ps(e,t){let r=t.trim();if(!r)return false;if(e.includes("${")&&e.match(Yt)){let n=e.replace(Yt,"").trim();return r!==n}return true}function Ge(e){if(L(e)){let t=new URL(e);return t.pathname.match(/\/chat\/b\//)&&!t.pathname.endsWith("/json")&&(t.pathname=`${t.pathname}/json`),t.toString()}return `${te}/${e}`}var Os=process.env.https_proxy?new HttpsProxyAgent(process.env.https_proxy):void 0,st=new Map;async function j(e,t={}){t={useCache:true,...t};try{return await Promise.all(e.map(async s=>{let n=Ge(s);if(t.useCache&&st.has(n))return st.get(n);let i=(async()=>{let o=Gt(n),a=await As(n,{agent:Os,headers:{...o}});if(!a.ok){let p;if(a.headers.get("content-type")?.includes("application/json")){let c=await a.json(),l=z.object({detail:z.string().optional(),title:z.string().optional(),message:z.string().optional(),error:z.string().optional()}).safeParse(c);l.success&&(p=l.data.detail||l.data.message,l.data.error&&(p=`[${l.data.error}] ${p}`));}throw a.status===401?new ue(n,p):a.status===404?new q(n,p):a.status===403?new he(n,p):new ye(n,a.status,p)}return a.json()})();return t.useCache&&st.set(n,i),i}))}catch(r){throw r}}async function Xt(e){try{let t=e;e.startsWith("~/")&&(t=y__default.join(homedir(),e.slice(2)));let r=y__default.resolve(t),s=await promises.readFile(r,"utf8"),n$1=JSON.parse(s);try{return n.parse(n$1)}catch(i){throw new $(e,i)}}catch(t){throw t instanceof Error&&(t.message.includes("ENOENT")||t.message.includes("no such file"))?new re(e,t):t instanceof $?t:new re(e,t)}}async function ga(e,t,r){if(!e||(r={silent:false,tailwindVersion:"v3",...r},r.tailwindVersion==="v4"))return;let s=y__default.relative(t.resolvedPaths.cwd,t.resolvedPaths.tailwindConfig),n=Z(`Updating ${P.info(s)}`,{silent:r.silent}).start(),i=await promises.readFile(t.resolvedPaths.tailwindConfig,"utf8"),o=await _s(i,e,t);await promises.writeFile(t.resolvedPaths.tailwindConfig,o,"utf8"),n?.succeed();}async function _s(e,t,r){let s=await tr(e,r),n=s.getDescendantsOfKind(SyntaxKind.ObjectLiteralExpression).find(o=>o.getProperties().some(a=>a.isKind(SyntaxKind.PropertyAssignment)&&a.getName()==="content"));if(!n)return e;let i=Us(n);return Ks(n,{name:"darkMode",value:"class"},{quoteChar:i}),t.plugins?.forEach(o=>{Ws(n,o);}),t.theme&&await Vs(n,t.theme),s.getFullText()}function Ks(e,t,{quoteChar:r}){let s=e.getProperty("darkMode");if(!s){let n={name:t.name,initializer:`[${r}${t.value}${r}]`};return t.name==="darkMode"?(e.insertPropertyAssignment(0,n),e):(e.addPropertyAssignment(n),e)}if(s.isKind(SyntaxKind.PropertyAssignment)){let n=s.getInitializer(),i=`${r}${t.value}${r}`;if(n?.isKind(SyntaxKind.StringLiteral)){let o=n.getText();return n.replaceWithText(`[${o}, ${i}]`),e}if(n?.isKind(SyntaxKind.ArrayLiteralExpression)){if(n.getElements().map(o=>o.getText()).includes(i))return e;n.addElement(i);}return e}return e}async function Vs(e,t){e.getProperty("theme")||e.addPropertyAssignment({name:"theme",initializer:"{}"}),it(e);let s=(e.getPropertyOrThrow("theme")?.asKindOrThrow(SyntaxKind.PropertyAssignment)).getInitializer();if(s?.isKind(SyntaxKind.ObjectLiteralExpression)){let n=s.getText(),i=await Ms(n),o=pe(i,t,{arrayMerge:(p,c)=>c}),a=Ls(o).replace(/\'\.\.\.(.*)\'/g,"...$1").replace(/\'\"/g,"'").replace(/\"\'/g,"'").replace(/\'\[/g,"[").replace(/\]\'/g,"]").replace(/\'\\\'/g,"'").replace(/\\\'/g,"'").replace(/\\\'\'/g,"'").replace(/\'\'/g,"'");s.replaceWithText(a);}ot(e);}function Ws(e,t){let r=e.getProperty("plugins");if(!r)return e.addPropertyAssignment({name:"plugins",initializer:`[${t}]`}),e;if(r.isKind(SyntaxKind.PropertyAssignment)){let s=r.getInitializer();if(s?.isKind(SyntaxKind.ArrayLiteralExpression)){if(s.getElements().map(n=>n.getText().replace(/["']/g,"")).includes(t.replace(/["']/g,"")))return e;s.addElement(t);}return e}return e}async function tr(e,t){let r=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-")),s=t?.resolvedPaths?.tailwindConfig||"tailwind.config.ts",n=y__default.join(r,`shadcn-${y__default.basename(s)}`);return new Project({compilerOptions:{}}).createSourceFile(n,e,{scriptKind:y__default.extname(s)===".ts"?ScriptKind.TS:ScriptKind.JS})}function Us(e){return e.getFirstDescendantByKind(SyntaxKind.StringLiteral)?.getQuoteKind()===QuoteKind.Single?"'":'"'}function it(e){let t=e.getProperties();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.SpreadAssignment)){let n=s.asKindOrThrow(SyntaxKind.SpreadAssignment),i=n.getExpression().getText();e.insertPropertyAssignment(r,{name:`"___${i.replace(/^\.\.\./,"")}"`,initializer:`"...${i.replace(/^\.\.\./,"")}"`}),n.remove();}else if(s.isKind(SyntaxKind.PropertyAssignment)){let i=s.asKindOrThrow(SyntaxKind.PropertyAssignment).getInitializer();i&&i.isKind(SyntaxKind.ObjectLiteralExpression)?it(i.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)):i&&i.isKind(SyntaxKind.ArrayLiteralExpression)&&rr(i.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));}}}function rr(e){let t=e.getElements();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.ObjectLiteralExpression))it(s.asKindOrThrow(SyntaxKind.ObjectLiteralExpression));else if(s.isKind(SyntaxKind.ArrayLiteralExpression))rr(s.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));else if(s.isKind(SyntaxKind.SpreadElement)){let n=s.getText();e.removeElement(r),e.insertElement(r,`"${n}"`);}}}function ot(e){let t=e.getProperties();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.PropertyAssignment)){let n=s,i=n.getInitializer();if(i&&i.isKind(SyntaxKind.StringLiteral)){let o=i.asKindOrThrow(SyntaxKind.StringLiteral).getLiteralValue();o.startsWith("...")&&(e.insertSpreadAssignment(r,{expression:o.slice(3)}),n.remove());}else i?.isKind(SyntaxKind.ObjectLiteralExpression)?ot(i):i&&i.isKind(SyntaxKind.ArrayLiteralExpression)&&sr(i.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));}}}function sr(e){let t=e.getElements();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.ObjectLiteralExpression))ot(s.asKindOrThrow(SyntaxKind.ObjectLiteralExpression));else if(s.isKind(SyntaxKind.ArrayLiteralExpression))sr(s.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));else if(s.isKind(SyntaxKind.StringLiteral)){let n=s.getText(),i=/(?:^['"])(\.\.\..*)(?:['"]$)/g;i.test(n)&&(e.removeElement(r),e.insertElement(r,n.replace(i,"$1")));}}}async function Ms(e){let r=(await tr(`const theme = ${e}`,null)).getStatements()[0];if(r?.getKind()===SyntaxKind.VariableStatement){let n=(r.getDeclarationList()?.getDeclarations()[0]).getInitializer();if(n?.isKind(SyntaxKind.ObjectLiteralExpression))return await He(n)}throw new Error("Invalid input: not an object literal")}function He(e){let t={};for(let r of e.getProperties())if(r.isKind(SyntaxKind.PropertyAssignment)){let s=r.getName().replace(/\'/g,"");r.getInitializer()?.isKind(SyntaxKind.ObjectLiteralExpression)?t[s]=He(r.getInitializer()):r.getInitializer()?.isKind(SyntaxKind.ArrayLiteralExpression)?t[s]=nr(r.getInitializer()):t[s]=at(r.getInitializer());}return t}function nr(e){let t=[];for(let r of e.getElements())r.isKind(SyntaxKind.ObjectLiteralExpression)?t.push(He(r.asKindOrThrow(SyntaxKind.ObjectLiteralExpression))):r.isKind(SyntaxKind.ArrayLiteralExpression)?t.push(nr(r.asKindOrThrow(SyntaxKind.ArrayLiteralExpression))):t.push(at(r));return t}function at(e){switch(e.getKind()){case SyntaxKind.StringLiteral:return e.getText();case SyntaxKind.NumericLiteral:return Number(e.getText());case SyntaxKind.TrueKeyword:return true;case SyntaxKind.FalseKeyword:return false;case SyntaxKind.NullKeyword:return null;case SyntaxKind.ArrayLiteralExpression:return e.getElements().map(at);case SyntaxKind.ObjectLiteralExpression:return He(e);default:return e.getText()}}function ir(e){let t={};for(let r of Object.keys(e)){let s=r.split("-"),n=s[0],i=s.slice(1).join("-");i===""?typeof t[n]=="object"?t[n].DEFAULT=`hsl(var(--${r}))`:t[n]=`hsl(var(--${r}))`:(typeof t[n]!="object"&&(t[n]={DEFAULT:`hsl(var(--${n}))`}),t[n][i]=`hsl(var(--${r}))`);}for(let[r,s]of Object.entries(t))typeof s=="object"&&s.DEFAULT===`hsl(var(--${r}))`&&!(r in e)&&delete s.DEFAULT;return t}function be(e,t){let r={},s=[...e];if(!t?.registries)return ve({}),s;for(let n=0;n<s.length;n++){let i=ce(s[n],t);i&&(s[n]=i.url,Object.keys(i.headers).length>0&&(r[i.url]=i.headers));}return ve(r),s}async function Q(e,t,r={}){return await Promise.all(e.map(async n$1=>{if(ae(n$1))return Xt(n$1);if(L(n$1)){let[a]=await j([n$1],r);try{return n.parse(a)}catch(p){throw new $(n$1,p)}}if(n$1.startsWith("@")&&t?.registries){let a=be([n$1],t),[p]=await j(a,r);try{return n.parse(p)}catch(c){throw new $(n$1,c)}}let i=`styles/${t?.style??"new-york-v4"}/${n$1}.json`,[o]=await j([i],r);try{return n.parse(o)}catch(a){throw new $(n$1,a)}}))}m.extend({type:f,_source:z.string().optional(),font:l.optional(),config:z.any().optional()}).passthrough();async function ar(e,t$1,r={}){r={useCache:true,...r};let s=[],n$1=[],i=[],o=Array.from(new Set(e)),a=await Q(o,t$1,r),p=new Map;for(let g=0;g<a.length;g++)a[g]&&p.set(o[g],a[g]);for(let[g,E]of Array.from(p.entries())){let S={...E,_source:g};if(s.push(S),E.registryDependencies){let v=E.registryDependencies;if(t$1?.registries)v=be(E.registryDependencies,t$1);else {let D=E.registryDependencies.filter(K=>K.startsWith("@"));if(D.length>0){let{registry:K}=se(D[0]);throw new U(K)}}let{items:b,registryNames:me}=await Ie(v,t$1,r,new Set(o));n$1.push(...b),i.push(...me);}}if(s.push(...n$1),i.length>0){let g=Array.from(new Set(i)),E=g.filter(v=>!v.startsWith("@")),S=g.filter(v=>v.startsWith("@"));if(S.length>0){let v=await Q(S,t$1,r);for(let b=0;b<v.length;b++){let D={...v[b],_source:S[b]};s.push(D);}}if(E.length>0){let v=await lr();if(!v&&s.length===0)return null;if(v){E.includes("index")&&E.unshift("index");let b=[];for(let Te of E){let ee=await Js(Te,t$1,r);b.push(...ee);}let me=Array.from(new Set(b)),D=await j(me,r),K=z.array(n).parse(D);s.push(...K);}}}if(!s.length)return null;if((o.includes("index")||i.includes("index"))&&t$1.tailwind.baseColor){let g=await Gs(t$1.tailwind.baseColor,t$1);g&&s.unshift(g);}let c=new Map;s.forEach(g=>{let E=g._source||g.name;c.set(g,E);}),s=qs(s,c),s.sort((g,E)=>g.type==="registry:theme"&&E.type!=="registry:theme"?-1:g.type!=="registry:theme"&&E.type==="registry:theme"?1:0);let l={};s.forEach(g=>{l=pe(l,g.tailwind??{});});let d={};s.forEach(g=>{d=pe(d,g.cssVars??{});});let f={};s.forEach(g=>{f=pe(f,g.css??{});});let x="";s.forEach(g=>{g.docs&&(x+=`${g.docs}
|
|
28
28
|
`);});let u={};s.forEach(g=>{u=pe(u,g.envVars??{});});let w=await Jt(s.map(g=>g.files??[]),t$1),m=s.filter(g=>g.type==="registry:font"&&g.font).map(g=>({...g,type:"registry:font",font:g.font})),k=t.parse({dependencies:pe.all(s.map(g=>g.dependencies??[])),devDependencies:pe.all(s.map(g=>g.devDependencies??[])),files:w,tailwind:l,cssVars:d,css:f,docs:x,fonts:m.length>0?m:void 0});return Object.keys(u).length>0&&(k.envVars=u),k}async function Ie(e,t,r={},s=new Set){let n=[],i=[];for(let o of e)if(!s.has(o)){if(s.add(o),L(o)||ae(o)){let[a]=await Q([o],t,r);if(a&&(n.push(a),a.registryDependencies)){let p=t?.registries?be(a.registryDependencies,t):a.registryDependencies,c=await Ie(p,t,r,s);n.push(...c.items),i.push(...c.registryNames);}}else if(o.startsWith("@")&&t?.registries){let{registry:a}=se(o);if(a&&!(a in t.registries))throw new U(a);let[p]=await Q([o],t,r);if(p&&(n.push(p),p.registryDependencies)){let c=t?.registries?be(p.registryDependencies,t):p.registryDependencies,l=await Ie(c,t,r,s);n.push(...l.items),i.push(...l.registryNames);}}else if(i.push(o),t)try{let[a]=await Q([o],t,r);if(a&&a.registryDependencies){let p=t?.registries?be(a.registryDependencies,t):a.registryDependencies,c=await Ie(p,t,r,s);n.push(...c.items),i.push(...c.registryNames);}}catch{}}return {items:n,registryNames:i}}async function Js(e,t,r={}){if(L(e))return [e];let{registryNames:s}=await Ie([e],t,r,new Set),n=t.resolvedPaths?.cwd?await Tt(t.resolvedPaths.cwd,t.style):t.style,i=s.map(o=>Ge(L(o)?o:`styles/${n}/${o}.json`));return Array.from(new Set(i))}async function Gs(e,t){let[r,s]=await Promise.all([Me(e),ze(t)]);if(!r)return null;let n={name:e,type:"registry:theme",tailwind:{config:{theme:{extend:{borderRadius:{lg:"var(--radius)",md:"calc(var(--radius) - 2px)",sm:"calc(var(--radius) - 4px)"},colors:{}}}}},cssVars:{theme:{},light:{radius:"0.5rem"},dark:{}}};return t.tailwind.cssVariables&&(n.tailwind.config.theme.extend.colors={...n.tailwind.config.theme.extend.colors,...ir(r.cssVars.dark??{})},n.cssVars={theme:{...r.cssVars.theme,...n.cssVars.theme},light:{...r.cssVars.light,...n.cssVars.light},dark:{...r.cssVars.dark,...n.cssVars.dark}},s==="v4"&&r.cssVarsV4&&(n.cssVars={theme:{...r.cssVarsV4.theme,...n.cssVars.theme},light:{radius:"0.625rem",...r.cssVarsV4.light},dark:{...r.cssVarsV4.dark}})),n}function H(e,t){let r=t||e.name,s=createHash("sha256").update(r).digest("hex").substring(0,8);return `${e.name}::${s}`}function Hs(e){if(L(e)){let s=new URL(e).pathname,n=s.match(/\/([^/]+)\.json$/),i=n?n[1]:y__default.basename(s,".json");return {name:i,hash:H({name:i},e)}}if(ae(e)){let r=e.match(/\/([^/]+)\.json$/),s=r?r[1]:y__default.basename(e,".json");return {name:s,hash:H({name:s},e)}}let{item:t}=se(e);return {name:t,hash:H({name:t},e)}}function qs(e,t){let r=new Map,s=new Map,n=new Map,i=new Map;e.forEach(c=>{let l=t.get(c)||c.name,d=H(c,l);r.set(d,c),s.set(d,c),n.set(d,0),i.set(d,[]);});let o=new Map;e.forEach(c=>{let l=t.get(c)||c.name,d=H(c,l);o.has(c.name)||o.set(c.name,[]),o.get(c.name).push(d),l!==c.name&&(o.has(l)||o.set(l,[]),o.get(l).push(d));}),e.forEach(c=>{let l=t.get(c)||c.name,d=H(c,l);c.registryDependencies&&c.registryDependencies.forEach(f=>{let x,u=o.get(f)||[];if(u.length===1)x=u[0];else if(u.length>1)x=u[0];else {let{name:w}=Hs(f),m=o.get(w)||[];m.length>0&&(x=m[0]);}x&&r.has(x)&&(i.get(x).push(d),n.set(d,n.get(d)+1));});});let a=[],p=[];for(n.forEach((c,l)=>{c===0&&a.push(l);});a.length>0;){let c=a.shift(),l=r.get(c);p.push(l),i.get(c).forEach(d=>{let f=n.get(d)-1;n.set(d,f),f===0&&a.push(d);});}if(p.length!==e.length){console.warn("Circular dependency detected in registry items");let c=new Set(p.map(l=>{let d=t.get(l)||l.name;return H(l,d)}));e.forEach(l=>{let d=t.get(l)||l.name,f=H(l,d);c.has(f)||p.push(l);});}return p}function fe(e){if(R.break(),R.error("Something went wrong. Please check the error below for more details."),R.error("If the problem persists, please open an issue on GitHub."),R.error(""),typeof e=="string"&&(R.error(e),R.break(),process.exit(1)),e instanceof I&&(e.message&&(R.error(e.cause?"Error:":"Message:"),R.error(e.message)),e.cause&&(R.error(`
|
|
29
29
|
Message:`),R.error(e.cause)),e.suggestion&&(R.error(`
|
|
30
|
-
Suggestion:`),R.error(e.suggestion)),R.break(),process.exit(1)),e instanceof z.ZodError){R.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))R.error(`- ${P.info(t)}: ${r}`);R.break(),process.exit(1);}e instanceof Error&&(R.error(e.message),R.break(),process.exit(1)),R.break(),process.exit(1);}async function ct(e,t){let{config:r,useCache:s}=t||{};if(L(e)){let[a]=await j([e],{useCache:s});try{return o.parse(a)}catch(p){throw new $(e,p)}}if(!e.startsWith("@"))throw new we(e);let n=e;n.endsWith("/registry")||(n=`${n}/registry`);let i=ce(n,le(r));if(!i?.url)throw new q(n);i.headers&&Object.keys(i.headers).length>0&&ve({[i.url]:i.headers});let[o$1]=await j([i.url],{useCache:s});try{return o.parse(o$1)}catch(a){throw new $(n,a)}}async function Qs(e,t){let{config:r,useCache:s=false}=t||{};return Re(),Q(e,le(r),{useCache:s})}async function Xs(e,t){let{config:r,useCache:s=false}=t||{};return Re(),ar(e,le(r),{useCache:s})}async function
|
|
31
|
-
`),fe(e);}}async function
|
|
32
|
-
`),fe(e),[]}}async function
|
|
33
|
-
export{
|
|
34
|
-
//# sourceMappingURL=chunk-
|
|
30
|
+
Suggestion:`),R.error(e.suggestion)),R.break(),process.exit(1)),e instanceof z.ZodError){R.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))R.error(`- ${P.info(t)}: ${r}`);R.break(),process.exit(1);}e instanceof Error&&(R.error(e.message),R.break(),process.exit(1)),R.break(),process.exit(1);}async function ct(e,t){let{config:r,useCache:s}=t||{};if(L(e)){let[a]=await j([e],{useCache:s});try{return o.parse(a)}catch(p){throw new $(e,p)}}if(!e.startsWith("@"))throw new we(e);let n=e;n.endsWith("/registry")||(n=`${n}/registry`);let i=ce(n,le(r));if(!i?.url)throw new q(n);i.headers&&Object.keys(i.headers).length>0&&ve({[i.url]:i.headers});let[o$1]=await j([i.url],{useCache:s});try{return o.parse(o$1)}catch(a){throw new $(n,a)}}async function Qs(e,t){let{config:r,useCache:s=false}=t||{};return Re(),Q(e,le(r),{useCache:s})}async function Xs(e,t){let{config:r,useCache:s=false}=t||{};return Re(),ar(e,le(r),{useCache:s})}async function tl(e,t){let{useCache:r=true}=t||{};r||Ae.clearCaches();let s=await Ae.search(e);if(!s)return {registries:F};let n=z.object({registries:b$1.optional()}).safeParse(s.config);if(!n.success)throw new $e(e,n.error);return {registries:{...F,...n.data.registries||{}}}}async function lr(){try{let[e]=await j(["index.json"]);return p.parse(e)}catch(e){R.error(`
|
|
31
|
+
`),fe(e);}}async function rl(){try{let[e]=await j(["styles/index.json"]);return q$1.parse(e)}catch(e){return R.error(`
|
|
32
|
+
`),fe(e),[]}}async function sl(){try{let[e]=await j(["icons/index.json"]);return r.parse(e)}catch(e){return fe(e),{}}}async function nl(){return It}async function Me(e){try{let[t]=await j([`colors/${e}.json`]);return s.parse(t)}catch(t){fe(t);}}async function en(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 en(e,n.registryDependencies);r.push(...i);}}return r.filter((s,n,i)=>i.findIndex(o=>o.name===s.name)===n)}async function il(e,t){try{let r=t.map(n=>`styles/${e}/${n.name}.json`);return (await j(r)).map(n$1=>n.parse(n$1))}catch(r){return fe(r),[]}}async function ol(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?y__default.join(e.resolvedPaths[s],n):null}async function tn(e){e={useCache:true,...e};let t=`${te}/registries.json`,[r]=await j([t],{useCache:e.useCache});try{return w.parse(r)}catch(s){throw s instanceof z.ZodError?new Ee(s):s}}async function rn(e){e={useCache:true,...e};let t=`${te}/config.json`,[r]=await j([t],{useCache:e.useCache});return y$1.parse(r).presets}async function al(e,t){return (await rn(t)).find(s=>s.name.toLowerCase()===e.toLowerCase())??null}async function nn(e,t){let{query:r,limit:s,offset:n,config:i,useCache:o}=t||{},a=[];for(let f of e){let u=((await ct(f,{config:i,useCache:o})).items||[]).map(w=>({name:w.name,type:w.type,description:w.description,registry:f,addCommandArgument:cn(w.name,f)}));a=a.concat(u);}r&&(a=an(a,{query:r,limit:a.length,keys:["name","description"]}));let p=n||0,c=s||a.length,l=a.length,d={pagination:{total:l,offset:p,limit:c,hasMore:p+c<l},items:a.slice(p,p+c)};return v.parse(d)}var on=z.object({name:z.string(),type:z.string().optional(),description:z.string().optional(),registry:z.string().optional(),addCommandArgument:z.string().optional()}).passthrough();function an(e,t){t={limit:100,threshold:-1e4,...t};let s=sn.go(t.query,e,{keys:t.keys,threshold:t.threshold,limit:t.limit}).map(n=>n.obj);return z.array(on).parse(s)}function ln(e){try{return new URL(e),!0}catch{return false}}function cn(e,t){if(!ln(t))return `${t}/${e}`;let r=t.indexOf("://")+3,s=t.indexOf("/",r);if(s===-1){let f=t.indexOf("?",r);if(f!==-1){let x=t.substring(0,f),w=t.substring(f).replace(/\bregistry\b/g,e);return x+w}return t}let n=t.substring(0,s),i=t.substring(s),o=i.indexOf("?")!==-1?i.indexOf("?"):i.length,a=i.substring(0,o),p=i.substring(o),c=a.lastIndexOf("registry"),l=a;c!==-1&&(l=a.substring(0,c)+e+a.substring(c+8));let d=p.replace(/\bregistry\b/g,e);return n+l+d}
|
|
33
|
+
export{Xs as $,re as A,$ as B,xe as C,we as D,Ee as E,se as F,At as G,Ot as H,Ft as I,Dt as J,ao as K,ys as L,L as M,vo as N,le as O,Re as P,Lo as Q,ce as R,j as S,ga as T,tr as U,Us as V,Q as W,ar as X,fe as Y,ct as Z,Qs as _,It as a,tl as aa,F as b,lr as ba,pn as c,rl as ca,P as d,sl as da,kn as e,nl as ea,$n as f,Me as fa,An as g,en as ga,wr as h,il as ha,Oe as i,ol as ia,Qe as j,tn as ja,On as k,rn as ka,vr as l,al as la,Cr as m,nn as ma,Pt as n,Xe as o,W as p,qn as q,ze as r,R as s,Z as t,I as u,q as v,ue as w,he as x,ye as y,U as z};//# sourceMappingURL=chunk-X3VF5OTV.js.map
|
|
34
|
+
//# sourceMappingURL=chunk-X3VF5OTV.js.map
|