shadcn 3.0.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,30 +1,30 @@
1
- import {g,q,p,r,m,h,o,i,j as j$1,k,l,t,b as b$1}from'./chunk-VVOKVGPU.js';import*as y from'path';import y__default,{basename}from'path';import {z}from'zod';import*as B from'fs/promises';import {tmpdir,homedir}from'os';import {green,cyan,yellow,red}from'kleur/colors';import {loadConfig,createMatchPath}from'tsconfig-paths';import {cosmiconfig}from'cosmiconfig';import Oe from'fast-glob';import je from'fs-extra';import {existsSync,promises}from'fs';import Rr from'ora';import {Project,SyntaxKind,ScriptKind,QuoteKind}from'ts-morph';import {transformFromAstSync}from'@babel/core';import {parse}from'@babel/parser';import Or from'@babel/plugin-transform-typescript';import*as ze from'recast';import Wr from'prompts';import ae from'deepmerge';import {HttpsProxyAgent}from'https-proxy-agent';import ws from'node-fetch';import {createHash}from'crypto';import Ss from'stringify-object';import Us from'fuzzysort';var Je=process.env.REGISTRY_URL??"https://ui.shadcn.com/r",Ie="new-york-v4",yt=[{name:"neutral",label:"Neutral"},{name:"gray",label:"Gray"},{name:"zinc",label:"Zinc"},{name:"stone",label:"Stone"},{name:"slate",label:"Slate"}],K={"@shadcn":`${Je}/styles/{style}/{name}.json`};var Js=[{name:"toast",deprecatedBy:"sonner",message:"The toast component is deprecated. Use the sonner component instead."},{name:"toaster",deprecatedBy:"sonner",message:"The toaster component is deprecated. Use the sonner component instead."}];function ce(e){return e.replace(/\${(\w+)}/g,(t,r)=>process.env[r]||"")}function pe(e){let t=[],r=/\${(\w+)}/g,s;for(;(s=r.exec(e))!==null;)t.push(s[1]);return t}var F={NOT_FOUND:"NOT_FOUND",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",FETCH_ERROR:"FETCH_ERROR",NOT_CONFIGURED:"NOT_CONFIGURED",INVALID_CONFIG:"INVALID_CONFIG",MISSING_ENV_VARS:"MISSING_ENV_VARS",LOCAL_FILE_ERROR:"LOCAL_FILE_ERROR",PARSE_ERROR:"PARSE_ERROR",VALIDATION_ERROR:"VALIDATION_ERROR",UNKNOWN_ERROR:"UNKNOWN_ERROR"},b=class extends Error{code;statusCode;context;suggestion;timestamp;cause;constructor(t,r={}){super(t),this.name="RegistryError",this.code=r.code||F.UNKNOWN_ERROR,this.statusCode=r.statusCode,this.cause=r.cause,this.context=r.context,this.suggestion=r.suggestion,this.timestamp=new Date,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);}toJSON(){return {name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,context:this.context,suggestion:this.suggestion,timestamp:this.timestamp,stack:this.stack}}},J=class extends b{constructor(r,s){let n=`The item at ${r} was not found. It may not exist at the registry.`;super(n,{code:F.NOT_FOUND,statusCode:404,cause:s,context:{url:r},suggestion:"Check if the item name is correct and the registry URL is accessible."});this.url=r;this.name="RegistryNotFoundError";}},fe=class extends b{constructor(r,s){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:F.UNAUTHORIZED,statusCode:401,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryUnauthorizedError";}},me=class extends b{constructor(r,s){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:F.FORBIDDEN,statusCode:403,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryForbiddenError";}},de=class extends b{constructor(r,s,n,i){let o=s?`Failed to fetch from registry (${s}): ${r}`:`Failed to fetch from registry: ${r}`,a=typeof i=="string"&&i?`${o} - ${i}`:o,c="Check your network connection and try again.";s===404?c="The requested resource was not found. Check the URL or item name.":s===500?c="The registry server encountered an error. Try again later.":s&&s>=400&&s<500&&(c="There was a client error. Check your request parameters.");super(a,{code:F.FETCH_ERROR,statusCode:s,cause:i,context:{url:r,responseBody:n},suggestion:c});this.url=r;this.responseBody=n;this.name="RegistryFetchError";}},W=class extends b{constructor(r){let s=r?`Unknown registry "${r}". Make sure it is defined in components.json as follows:
1
+ import {g,q,p,r,m,h,o,i,j,k as k$1,l,u,t,b as b$1}from'./chunk-OG5VNDVA.js';import*as y from'path';import y__default,{basename}from'path';import {z}from'zod';import*as B from'fs/promises';import {tmpdir,homedir}from'os';import {green,cyan,yellow,red}from'kleur/colors';import {loadConfig,createMatchPath}from'tsconfig-paths';import {cosmiconfig}from'cosmiconfig';import Ae from'fast-glob';import Oe from'fs-extra';import {existsSync,promises}from'fs';import Sr from'ora';import {Project,SyntaxKind,ScriptKind,QuoteKind}from'ts-morph';import {transformFromAstSync}from'@babel/core';import {parse}from'@babel/parser';import Ar from'@babel/plugin-transform-typescript';import*as _e from'recast';import Ur from'prompts';import ae from'deepmerge';import {HttpsProxyAgent}from'https-proxy-agent';import Es from'node-fetch';import {createHash}from'crypto';import Is from'stringify-object';import Ms from'fuzzysort';var ce=process.env.REGISTRY_URL??"https://ui.shadcn.com/r",be="new-york-v4",xt=[{name:"neutral",label:"Neutral"},{name:"gray",label:"Gray"},{name:"zinc",label:"Zinc"},{name:"stone",label:"Stone"},{name:"slate",label:"Slate"}],K={"@shadcn":`${ce}/styles/{style}/{name}.json`};var Ys=[{name:"toast",deprecatedBy:"sonner",message:"The toast component is deprecated. Use the sonner component instead."},{name:"toaster",deprecatedBy:"sonner",message:"The toaster component is deprecated. Use the sonner component instead."}];function pe(e){return e.replace(/\${(\w+)}/g,(t,r)=>process.env[r]||"")}function fe(e){let t=[],r=/\${(\w+)}/g,s;for(;(s=r.exec(e))!==null;)t.push(s[1]);return t}var F={NOT_FOUND:"NOT_FOUND",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",FETCH_ERROR:"FETCH_ERROR",NOT_CONFIGURED:"NOT_CONFIGURED",INVALID_CONFIG:"INVALID_CONFIG",MISSING_ENV_VARS:"MISSING_ENV_VARS",LOCAL_FILE_ERROR:"LOCAL_FILE_ERROR",PARSE_ERROR:"PARSE_ERROR",VALIDATION_ERROR:"VALIDATION_ERROR",UNKNOWN_ERROR:"UNKNOWN_ERROR"},b=class extends Error{code;statusCode;context;suggestion;timestamp;cause;constructor(t,r={}){super(t),this.name="RegistryError",this.code=r.code||F.UNKNOWN_ERROR,this.statusCode=r.statusCode,this.cause=r.cause,this.context=r.context,this.suggestion=r.suggestion,this.timestamp=new Date,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);}toJSON(){return {name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,context:this.context,suggestion:this.suggestion,timestamp:this.timestamp,stack:this.stack}}},J=class extends b{constructor(r,s){let n=`The item at ${r} was not found. It may not exist at the registry.`;super(n,{code:F.NOT_FOUND,statusCode:404,cause:s,context:{url:r},suggestion:"Check if the item name is correct and the registry URL is accessible."});this.url=r;this.name="RegistryNotFoundError";}},me=class extends b{constructor(r,s){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:F.UNAUTHORIZED,statusCode:401,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryUnauthorizedError";}},de=class extends b{constructor(r,s){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:F.FORBIDDEN,statusCode:403,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryForbiddenError";}},ge=class extends b{constructor(r,s,n,i){let o=s?`Failed to fetch from registry (${s}): ${r}`:`Failed to fetch from registry: ${r}`,a=typeof i=="string"&&i?`${o} - ${i}`:o,c="Check your network connection and try again.";s===404?c="The requested resource was not found. Check the URL or item name.":s===500?c="The registry server encountered an error. Try again later.":s&&s>=400&&s<500&&(c="There was a client error. Check your request parameters.");super(a,{code:F.FETCH_ERROR,statusCode:s,cause:i,context:{url:r,responseBody:n},suggestion:c});this.url=r;this.responseBody=n;this.name="RegistryFetchError";}},W=class extends b{constructor(r){let s=r?`Unknown registry "${r}". Make sure it is defined in components.json as follows:
2
2
  {
3
3
  "registries": {
4
4
  "${r}": "[URL_TO_REGISTRY]"
5
5
  }
6
- }`:'Unknown registry. Make sure it is defined in components.json under "registries".';super(s,{code:F.NOT_CONFIGURED,context:{registryName:r},suggestion:"Add the registry configuration to your components.json file. Consult the registry documentation for the correct format."});this.registryName=r;this.name="RegistryNotConfiguredError";}},ee=class extends b{constructor(r,s){super(`Failed to read local registry file: ${r}`,{code:F.LOCAL_FILE_ERROR,cause:s,context:{filePath:r},suggestion:"Check if the file exists and you have read permissions."});this.filePath=r;this.name="RegistryLocalFileError";}},j=class extends b{constructor(r,s){let n=`Failed to parse registry item: ${r}`;s instanceof z.ZodError&&(n=`Failed to parse registry item: ${r}
6
+ }`:'Unknown registry. Make sure it is defined in components.json under "registries".';super(s,{code:F.NOT_CONFIGURED,context:{registryName:r},suggestion:"Add the registry configuration to your components.json file. Consult the registry documentation for the correct format."});this.registryName=r;this.name="RegistryNotConfiguredError";}},ee=class extends b{constructor(r,s){super(`Failed to read local registry file: ${r}`,{code:F.LOCAL_FILE_ERROR,cause:s,context:{filePath:r},suggestion:"Check if the file exists and you have read permissions."});this.filePath=r;this.name="RegistryLocalFileError";}},O=class extends b{constructor(r,s){let n=`Failed to parse registry item: ${r}`;s instanceof z.ZodError&&(n=`Failed to parse registry item: ${r}
7
7
  ${s.errors.map(i=>` - ${i.path.join(".")}: ${i.message}`).join(`
8
- `)}`);super(n,{code:F.PARSE_ERROR,cause:s,context:{item:r},suggestion:"The registry item may be corrupted or have an invalid format. Please make sure it returns a valid JSON object. See https://ui.shadcn.com/schema/registry-item.json."});this.item=r;this.parseError=s,this.name="RegistryParseError";}parseError},ge=class extends b{constructor(r,s){let n=`Registry "${r}" requires the following environment variables:
8
+ `)}`);super(n,{code:F.PARSE_ERROR,cause:s,context:{item:r},suggestion:"The registry item may be corrupted or have an invalid format. Please make sure it returns a valid JSON object. See https://ui.shadcn.com/schema/registry-item.json."});this.item=r;this.parseError=s,this.name="RegistryParseError";}parseError},ue=class extends b{constructor(r,s){let n=`Registry "${r}" requires the following environment variables:
9
9
 
10
10
  `+s.map(i=>` \u2022 ${i}`).join(`
11
- `);super(n,{code:F.MISSING_ENV_VARS,context:{registryName:r,missingVars:s},suggestion:"Set the required environment variables to your .env or .env.local file."});this.registryName=r;this.missingVars=s;this.name="RegistryMissingEnvironmentVariablesError";}},ue=class extends b{constructor(r){let s=`Invalid registry namespace: "${r}". Registry names must start with @ (e.g., @shadcn, @v0).`;super(s,{code:F.VALIDATION_ERROR,context:{name:r},suggestion:"Use a valid registry name starting with @ or provide a direct URL to the registry."});this.name=r;this.name="RegistryInvalidNamespaceError";}};var be=class extends b{constructor(r,s){let n=`Invalid components.json configuration in ${r}.`;s instanceof z.ZodError&&(n=`Invalid components.json configuration in ${r}:
11
+ `);super(n,{code:F.MISSING_ENV_VARS,context:{registryName:r,missingVars:s},suggestion:"Set the required environment variables to your .env or .env.local file."});this.registryName=r;this.missingVars=s;this.name="RegistryMissingEnvironmentVariablesError";}},he=class extends b{constructor(r){let s=`Invalid registry namespace: "${r}". Registry names must start with @ (e.g., @shadcn, @v0).`;super(s,{code:F.VALIDATION_ERROR,context:{name:r},suggestion:"Use a valid registry name starting with @ or provide a direct URL to the registry."});this.name=r;this.name="RegistryInvalidNamespaceError";}};var Pe=class extends b{constructor(r,s){let n=`Invalid components.json configuration in ${r}.`;s instanceof z.ZodError&&(n=`Invalid components.json configuration in ${r}:
12
12
  ${s.errors.map(i=>` - ${i.path.join(".")}: ${i.message}`).join(`
13
- `)}`);super(n,{code:F.INVALID_CONFIG,cause:s,context:{cwd:r},suggestion:"Check your components.json file for syntax errors or invalid configuration. Run 'npx shadcn@latest init' to regenerate a valid configuration."});this.cwd=r;this.name="ConfigParseError";}};var tr=/^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\/(.+)$/;function te(e){if(!e.startsWith("@"))return {registry:null,item:e};let t=e.match(tr);return t?{registry:t[1],item:t[2]}:{registry:null,item:e}}var O={"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 A(e,t){return createMatchPath(t.absoluteBaseUrl,t.paths)(e,void 0,()=>true,[".ts",".tsx",".jsx",".js",".css"])}var hn="@/components",yn="@/lib/utils",xn="app/globals.css",wn="tailwind.config.js";var Pe=cosmiconfig("components",{searchPlaces:["components.json"]});async function Te(e){let t=await pr(e);return t?(t.iconLibrary||(t.iconLibrary=t.style==="new-york"?"radix":"lucide"),await Ye(e,t)):null}async function Ye(e,t){t.registries={...K,...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 q.parse({...t,resolvedPaths:{cwd:e,tailwindConfig:t.tailwind.config?y__default.resolve(e,t.tailwind.config):"",tailwindCss:y__default.resolve(e,t.tailwind.css),utils:await A(t.aliases.utils,r),components:await A(t.aliases.components,r),ui:t.aliases.ui?await A(t.aliases.ui,r):y__default.resolve(await A(t.aliases.components,r)??e,"ui"),lib:t.aliases.lib?await A(t.aliases.lib,r):y__default.resolve(await A(t.aliases.utils,r)??e,".."),hooks:t.aliases.hooks?await A(t.aliases.hooks,r):y__default.resolve(await A(t.aliases.components,r)??e,"..","hooks")}})}async function pr(e){try{let t=await Pe.search(e);if(!t)return null;let r=p.parse(t.config);if(r.registries){for(let s of Object.keys(r.registries))if(s in K)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 En(e){let t={};for(let s of Object.keys(e.aliases)){if(!mr(s,e))continue;let n=e.resolvedPaths[s],i=await fr(e.resolvedPaths.cwd,n);if(!i){t[s]=e;continue}t[s]=await Te(i);}let r$1=r.safeParse(t);return r$1.success?r$1.data:null}async function fr(e,t){let r=dr(e,t),s=y__default.relative(r,t),i=(await Oe.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 mr(e,t){return Object.keys(t.resolvedPaths).filter(r=>r!=="utils").includes(e)}function dr(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 wt(e,t){return (await V(e))?.tailwindVersion==="v4"?"new-york-v4":t}function Et(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:{...K}};return e?{...t,...e,resolvedPaths:{...t.resolvedPaths,...e.resolvedPaths||{}},tailwind:{...t.tailwind,...e.tailwind||{}},aliases:{...t.aliases,...e.aliases||{}}}:t}function Qe(e="",t=true){let r=y__default.join(e,"package.json");return je.readJSONSync(r,{throws:t})}var Ae=["**/node_modules/**",".next","public","dist","build"];z.object({compilerOptions:z.object({paths:z.record(z.string().or(z.array(z.string())))})});async function V(e){let[t,r,s,n,i,o,a,c]=await Promise.all([Oe.glob("**/{next,vite,astro,app}.config.*|gatsby-config.*|composer.json|react-router.config.*",{cwd:e,deep:3,ignore:Ae}),je.pathExists(y__default.resolve(e,"src")),Er(e),xr(e),yr(e),vt(e),wr(e),Qe(e,false)]),p=await je.pathExists(y__default.resolve(e,`${r?"src/":""}app`)),l={framework:O.manual,isSrcDir:r,isRSC:false,isTsx:s,tailwindConfigFile:n,tailwindCssFile:i,tailwindVersion:o,aliasPrefix:a};if(t.find(f=>f.startsWith("next.config."))?.length)return l.framework=p?O["next-app"]:O["next-pages"],l.isRSC=p,l;if(t.find(f=>f.startsWith("astro.config."))?.length)return l.framework=O.astro,l;if(t.find(f=>f.startsWith("gatsby-config."))?.length)return l.framework=O.gatsby,l;if(t.find(f=>f.startsWith("composer.json"))?.length)return l.framework=O.laravel,l;if(Object.keys(c?.dependencies??{}).find(f=>f.startsWith("@remix-run/")))return l.framework=O.remix,l;if([...Object.keys(c?.dependencies??{}),...Object.keys(c?.devDependencies??{})].find(f=>f.startsWith("@tanstack/react-start")))return l.framework=O["tanstack-start"],l;if(t.find(f=>f.startsWith("react-router.config."))?.length)return l.framework=O["react-router"],l;if(t.find(f=>f.startsWith("vite.config."))?.length)return l.framework=O.vite,l;let m=t.find(f=>f.startsWith("app.config"));return m?.length&&(await je.readFile(y__default.resolve(e,m),"utf8")).includes("defineConfig")?(l.framework=O.vite,l):(c?.dependencies?.expo&&(l.framework=O.expo),l)}async function vt(e){let[t,r]=await Promise.all([Qe(e,false),Te(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 yr(e){let[t,r]=await Promise.all([Oe.glob(["**/*.css","**/*.scss"],{cwd:e,deep:5,ignore:Ae}),vt(e)]);if(!t.length)return null;for(let n of t){let i=await je.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 xr(e){let t=await Oe.glob("tailwind.config.*",{cwd:e,deep:3,ignore:Ae});return t.length?t[0]:null}async function wr(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 Er(e){return (await Oe.glob("tsconfig.*",{cwd:e,deep:1,ignore:Ae})).length>0}async function Nn(e,t=null){let[r,s]=await Promise.all([Te(e),t?Promise.resolve(t):V(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 Ye(e,n)}async function $e(e){if(!e.resolvedPaths?.cwd)return "v3";let t=await V(e.resolvedPaths.cwd);return t?.tailwindVersion?t.tailwindVersion:null}function Rt(e,t,r={}){let{ignoreImports:s=false}=r,n=e.replace(/\r\n/g,`
13
+ `)}`);super(n,{code:F.INVALID_CONFIG,cause:s,context:{cwd:r},suggestion:"Check your components.json file for syntax errors or invalid configuration. Run 'npx shadcn@latest init' to regenerate a valid configuration."});this.cwd=r;this.name="ConfigParseError";}};var rr=/^(@[a-zA-Z0-9](?:[a-zA-Z0-9-_]*[a-zA-Z0-9])?)\/(.+)$/;function te(e){if(!e.startsWith("@"))return {registry:null,item:e};let t=e.match(rr);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 $(e,t){return createMatchPath(t.absoluteBaseUrl,t.paths)(e,void 0,()=>true,[".ts",".tsx",".jsx",".js",".css"])}var yn="@/components",xn="@/lib/utils",wn="app/globals.css",En="tailwind.config.js";var Te=cosmiconfig("components",{searchPlaces:["components.json"]});async function ke(e){let t=await fr(e);return t?(t.iconLibrary||(t.iconLibrary=t.style==="new-york"?"radix":"lucide"),await Ye(e,t)):null}async function Ye(e,t){t.registries={...K,...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 q.parse({...t,resolvedPaths:{cwd:e,tailwindConfig:t.tailwind.config?y__default.resolve(e,t.tailwind.config):"",tailwindCss:y__default.resolve(e,t.tailwind.css),utils:await $(t.aliases.utils,r),components:await $(t.aliases.components,r),ui:t.aliases.ui?await $(t.aliases.ui,r):y__default.resolve(await $(t.aliases.components,r)??e,"ui"),lib:t.aliases.lib?await $(t.aliases.lib,r):y__default.resolve(await $(t.aliases.utils,r)??e,".."),hooks:t.aliases.hooks?await $(t.aliases.hooks,r):y__default.resolve(await $(t.aliases.components,r)??e,"..","hooks")}})}async function fr(e){try{let t=await Te.search(e);if(!t)return null;let r=p.parse(t.config);if(r.registries){for(let s of Object.keys(r.registries))if(s in K)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 vn(e){let t={};for(let s of Object.keys(e.aliases)){if(!dr(s,e))continue;let n=e.resolvedPaths[s],i=await mr(e.resolvedPaths.cwd,n);if(!i){t[s]=e;continue}t[s]=await ke(i);}let r$1=r.safeParse(t);return r$1.success?r$1.data:null}async function mr(e,t){let r=gr(e,t),s=y__default.relative(r,t),i=(await Ae.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 dr(e,t){return Object.keys(t.resolvedPaths).filter(r=>r!=="utils").includes(e)}function gr(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 Et(e,t){return (await V(e))?.tailwindVersion==="v4"?"new-york-v4":t}function vt(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:{...K}};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 Qe(e="",t=true){let r=y__default.join(e,"package.json");return Oe.readJSONSync(r,{throws:t})}var $e=["**/node_modules/**",".next","public","dist","build"];z.object({compilerOptions:z.object({paths:z.record(z.string().or(z.array(z.string())))})});async function V(e){let[t,r,s,n,i,o,a,c]=await Promise.all([Ae.glob("**/{next,vite,astro,app}.config.*|gatsby-config.*|composer.json|react-router.config.*",{cwd:e,deep:3,ignore:$e}),Oe.pathExists(y__default.resolve(e,"src")),vr(e),wr(e),xr(e),Rt(e),Er(e),Qe(e,false)]),p=await Oe.pathExists(y__default.resolve(e,`${r?"src/":""}app`)),l={framework:A.manual,isSrcDir:r,isRSC:false,isTsx:s,tailwindConfigFile:n,tailwindCssFile:i,tailwindVersion:o,aliasPrefix:a};if(t.find(f=>f.startsWith("next.config."))?.length)return l.framework=p?A["next-app"]:A["next-pages"],l.isRSC=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(c?.dependencies??{}).find(f=>f.startsWith("@remix-run/")))return l.framework=A.remix,l;if([...Object.keys(c?.dependencies??{}),...Object.keys(c?.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 m=t.find(f=>f.startsWith("app.config"));return m?.length&&(await Oe.readFile(y__default.resolve(e,m),"utf8")).includes("defineConfig")?(l.framework=A.vite,l):(c?.dependencies?.expo&&(l.framework=A.expo),l)}async function Rt(e){let[t,r]=await Promise.all([Qe(e,false),ke(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 xr(e){let[t,r]=await Promise.all([Ae.glob(["**/*.css","**/*.scss"],{cwd:e,deep:5,ignore:$e}),Rt(e)]);if(!t.length)return null;for(let n of t){let i=await Oe.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 wr(e){let t=await Ae.glob("tailwind.config.*",{cwd:e,deep:3,ignore:$e});return t.length?t[0]:null}async function Er(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 vr(e){return (await Ae.glob("tsconfig.*",{cwd:e,deep:1,ignore:$e})).length>0}async function Dn(e,t=null){let[r,s]=await Promise.all([ke(e),t?Promise.resolve(t):V(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 Ye(e,n)}async function Fe(e){if(!e.resolvedPaths?.cwd)return "v3";let t=await V(e.resolvedPaths.cwd);return t?.tailwindVersion?t.tailwindVersion:null}function St(e,t,r={}){let{ignoreImports:s=false}=r,n=e.replace(/\r\n/g,`
14
14
  `).trim(),i=t.replace(/\r\n/g,`
15
- `).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,(m,f,x,h)=>{if(x.startsWith("."))return `${f}${x}${h}`;let u=x.split("/"),R=u[u.length-1];return `${f}@normalized/${R}${h}`}),c=a(n),p=a(i);return c===p}function Y(e){let t=y__default.basename(e);return /^\.env(\.|$)/.test(t)}function St(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 se(e){let t=e.split(`
16
- `),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 It(e,t){let r=se(e),s=se(t),n=[];for(let i of Object.keys(s))i in r||n.push(i);return n}function bt(e,t){let r=se(e),s=se(t),n=e.trimEnd();n&&!n.endsWith(`
15
+ `).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,(m,f,x,h)=>{if(x.startsWith("."))return `${f}${x}${h}`;let u=x.split("/"),R=u[u.length-1];return `${f}@normalized/${R}${h}`}),c=a(n),p=a(i);return c===p}function Y(e){let t=y__default.basename(e);return /^\.env(\.|$)/.test(t)}function It(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 se(e){let t=e.split(`
16
+ `),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 bt(e,t){let r=se(e),s=se(t),n=[];for(let i of Object.keys(s))i in r||n.push(i);return n}function Pt(e,t){let r=se(e),s=se(t),n=e.trimEnd();n&&!n.endsWith(`
17
17
  `)&&(n+=`
18
18
  `);let i=[];for(let[o,a]of Object.entries(s))o in r||i.push(`${o}=${a}`);return i.length>0?(n&&(n+=`
19
19
  `),n+=i.join(`
20
20
  `),n+`
21
21
  `):n&&!n.endsWith(`
22
22
  `)?n+`
23
- `:n}var v={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 Q(e,t){return Rr({text:e,isSilent:t?.silent})}var Fe=async({sourceFile:e,config:t,baseColor:r})=>(t.tailwind?.cssVariables||!r?.inlineColors||e.getDescendantsOfKind(SyntaxKind.StringLiteral).forEach(s=>{let n=s.getText();if(n){let i=Ir(n.replace(/"/g,""),r.inlineColors);s.replaceWithText(`"${i.trim()}"`);}}),e);function Ze(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 Sr=["bg-","text-","border-","ring-offset-","ring-"];function Ir(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,c]=Ze(i),p=Sr.find(m=>a?.startsWith(m));if(!p){s.has(i)||s.add(i);continue}let l=a?.replace(p,"");if(l&&l in t.light){s.add([o,`${p}${t.light[l]}`].filter(Boolean).join(":")+(c?`/${c}`:"")),n.add(["dark",o,`${p}${t.dark[l]}`].filter(Boolean).join(":")+(c?`/${c}`:""));continue}s.has(i)||s.add(i);}return [...Array.from(s),...Array.from(n)].join(" ").trim()}var Le={lucide:{name:"lucide-react",package:"lucide-react",import:"lucide-react"},radix:{name:"@radix-ui/react-icons",package:"@radix-ui/react-icons",import:"@radix-ui/react-icons"}};var Pt="lucide",Ne=async({sourceFile:e,config:t})=>{if(!t.iconLibrary||!(t.iconLibrary in Le))return e;let r=await Tt(),s=Pt,n=t.iconLibrary;if(s===n)return e;let i=[];for(let o of e.getImportDeclarations()??[])if(o.getModuleSpecifier()?.getText()===`"${Le[Pt].import}"`){for(let a of o.getNamedImports()??[]){let c=a.getName(),p=r[c]?.[n];!p||i.includes(p)||(i.push(p),a.remove(),e.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).filter(l=>l.getTagNameNode()?.getText()===c).forEach(l=>l.getTagNameNode()?.replaceWithText(p)));}o.getNamedImports()?.length===0&&o.remove();}if(i.length>0){let o=e.addImportDeclaration({moduleSpecifier:Le[n]?.import,namedImports:i.map(a=>({name:a}))});Pr(e)||o.replaceWithText(o.getText().replace(";",""));}return e};function Pr(e){return e.getImportDeclarations()?.[0]?.getText().endsWith(";")??false}var De=async({sourceFile:e,config:t,isRemote:r})=>{let n=`@${t.aliases?.utils?.split("/")[0]?.slice(1)}/lib/utils`,i=e.getImportDeclarations();if(![".tsx",".ts",".jsx",".js"].includes(e.getExtension()))return e;for(let o of i){let a=Tr(o.getModuleSpecifierValue(),t,r);o.setModuleSpecifier(a),(n===a||a==="@/lib/utils")&&o.getNamedImports().find(l=>l.getName()==="cn")&&o.setModuleSpecifier(n===a?a.replace(n,t.aliases.utils):t.aliases.utils);}return e};function Tr(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 Ar={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"]},kt=async({sourceFile:e,config:t})=>{let r=e.getFullText();if(t.tsx)return r;let s=ze.parse(r,{parser:{parse:i=>parse(i,Ar)}}),n=transformFromAstSync(s,r,{cloneInputAst:false,code:false,ast:true,plugins:[Or],configFile:false});if(!n||!n.ast)throw new Error("Failed to transform JSX");return ze.print(n.ast).code};var Fr=/^["']use client["']$/g,_e=async({sourceFile:e,config:t})=>{if(t.rsc)return e;let r=e.getFirstChildByKind(SyntaxKind.ExpressionStatement);return r&&Fr.test(r.getText())&&r.remove(),e};var Ke=async({sourceFile:e,config:t})=>{if(!t.tailwind?.prefix)return e;let r=await $e(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(`"${U(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(`"${U(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(`"${U(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(`"${U(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}),i.isKind(SyntaxKind.StringLiteral)&&i.replaceWithText(`"${U(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(`"${U(a.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}),o.isKind(SyntaxKind.StringLiteral)&&o.replaceWithText(`"${U(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(`"${U(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}});}),e};function U(e,t="",r){return r==="v3"?e.split(" ").map(s=>{let[n,i,o]=Ze(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 _r=new Project({compilerOptions:{}});async function Kr(e){let t=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-"));return y__default.join(t,e)}async function Ot(e,t=[De,_e,Fe,Ke,Ne]){let r=await Kr(e.filename),s=_r.createSourceFile(r,e.raw,{scriptKind:ScriptKind.TSX});for(let n of t)await n({sourceFile:s,...e});return e.transformJsx?await kt({sourceFile:s,...e}):s.getText()}async function Hi(e,t,r){if(!e?.length)return {filesCreated:[],filesUpdated:[],filesSkipped:[]};r={overwrite:false,force:false,silent:false,isRemote:false,isWorkspace:false,...r};let s=Q("Updating files.",{silent:r.silent})?.start(),[n,i]=await Promise.all([V(t.resolvedPaths.cwd),t.tailwind.baseColor?Ve(t.tailwind.baseColor):Promise.resolve(void 0)]),o=[],a=[],c=[],p=[],l=null;for(let h of e){if(!h.content)continue;let u=Xe(h,t,{isSrcDir:n?.isSrcDir,framework:n?.framework.name,commonRoot:et(e.map(w=>w.path),h.path)});if(!u)continue;let R=basename(h.path),d=y__default.dirname(u);if(t.tsx||(u=u.replace(/\.tsx?$/,w=>w===".tsx"?".jsx":".js")),Y(u)&&!existsSync(u)){let w=St(d);w&&(u=w);}let E=existsSync(u),C=Y(u)?h.content:await Ot({filename:h.path,raw:h.content,config:t,baseColor:i,transformJsx:!t.tsx,isRemote:r.isRemote},[De,_e,Fe,Ke,Ne]);if(E&&!Y(u)){let w=await promises.readFile(u,"utf-8");if(Rt(w,C,{ignoreImports:r.isWorkspace})){c.push(y__default.relative(t.resolvedPaths.cwd,u));continue}}if(E&&!r.overwrite&&!Y(u)){s.stop(),r.rootSpinner&&r.rootSpinner.stop();let{overwrite:w}=await Wr({type:"confirm",name:"overwrite",message:`The file ${P.info(R)} already exists. Would you like to overwrite?`,initial:false});if(!w){c.push(y__default.relative(t.resolvedPaths.cwd,u)),r.rootSpinner&&r.rootSpinner.start();continue}s?.start(),r.rootSpinner&&r.rootSpinner.start();}if(existsSync(d)||await promises.mkdir(d,{recursive:true}),Y(u)&&E){let w=await promises.readFile(u,"utf-8"),T=bt(w,C);if(p=It(w,C),l=y__default.relative(t.resolvedPaths.cwd,u),!p.length){c.push(y__default.relative(t.resolvedPaths.cwd,u));continue}await promises.writeFile(u,T,"utf-8"),a.push(y__default.relative(t.resolvedPaths.cwd,u));continue}await promises.writeFile(u,C,"utf-8"),E?a.push(y__default.relative(t.resolvedPaths.cwd,u)):(o.push(y__default.relative(t.resolvedPaths.cwd,u)),Y(u)&&(p=Object.keys(se(C)),l=y__default.relative(t.resolvedPaths.cwd,u)));}let m=[...o,...a,...c],f=await Jr(m,t);if(a.push(...f),a=a.filter(h=>!o.includes(h)),!(o.length||a.length)&&!c.length&&s?.info("No files updated."),o=Array.from(new Set(o)),a=Array.from(new Set(a)),c=Array.from(new Set(c)),o.length){if(s?.succeed(`Created ${o.length} ${o.length===1?"file":"files"}:`),!r.silent)for(let h of o)v.log(` - ${h}`);}else s?.stop();if(a.length&&(Q(`Updated ${a.length} ${a.length===1?"file":"files"}:`,{silent:r.silent})?.info(),!r.silent))for(let h of a)v.log(` - ${h}`);if(c.length&&(Q(`Skipped ${c.length} ${a.length===1?"file":"files"}: (files might be identical, use --overwrite to overwrite)`,{silent:r.silent})?.info(),!r.silent))for(let h of c)v.log(` - ${h}`);if(p.length&&l&&(Q(`Added the following variables to ${P.info(l)}:`)?.info(),!r.silent))for(let h of p)v.log(` ${P.success("+")} ${h}`);return r.silent||v.break(),{filesCreated:o,filesUpdated:a,filesSkipped:c}}function Xe(e,t,r){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=qr(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=Hr(e,t),n=Gr(e.path,s);return y__default.join(s,n)}function Hr(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 et(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(p=>p!==s&&p.startsWith(a+"/")))return "/"+a}return "/"+n}function Gr(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(c=>c===o);return a===-1?n[n.length-1]:n.slice(a+1).join("/")}function qr(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 Jr(e,t){let r=new Project({compilerOptions:{}}),s=await V(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 c=await promises.readFile(a,"utf-8"),p=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-")),l=r.createSourceFile(y__default.join(p,basename(a)),c,{scriptKind:ScriptKind.TSX});if(![".tsx",".ts",".jsx",".js"].includes(l.getExtension()))continue;let m=l.getImportDeclarations();for(let f of m){let x=f.getModuleSpecifierValue();if(s?.aliasPrefix&&!x.startsWith(`${s.aliasPrefix}/`))continue;let h=await A(x,n);if(!h)continue;let u=Yr(h,e,t);if(!u)continue;let R=Qr(u,t,s);!R||R===x||(f.setModuleSpecifier(R),await promises.writeFile(a,l.getFullText(),"utf-8"),i.push(o));}}return i}function Yr(e,t,r,s=[".tsx",".ts",".js",".jsx",".css"]){let n=y__default.normalize(r.resolvedPaths.cwd),i=t.map(R=>R.split(y__default.sep).join(y__default.posix.sep)),o=new Set(i),a=y__default.extname(e),c=a!=="",p=c?e.slice(0,-a.length):e,m=y__default.relative(n,p).split(y__default.sep).join(y__default.posix.sep),f=c?[a]:s,x=new Set;for(let R of f){let d=p+R,E=y__default.posix.normalize(y__default.relative(n,d));(o.has(E)||existsSync(d))&&x.add(E);let C=y__default.join(p,`index${R}`),w=y__default.posix.normalize(y__default.relative(n,C));(o.has(w)||existsSync(C))&&x.add(w);}let h=y__default.basename(p);for(let R of i)f.some(d=>R.endsWith(`/${h}${d}`))&&x.add(R);return x.size===0?null:Array.from(x).sort((R,d)=>{let E=y__default.posix.extname(R),C=y__default.posix.extname(d),w=f.indexOf(E)-f.indexOf(C);if(w!==0)return w;let T=m&&R.startsWith(m)?-1:1,k=m&&d.startsWith(m)?-1:1;return T-k})[0]}function Qr(e,t,r){let s=y__default.normalize(y__default.join(t.resolvedPaths.cwd,e)),n=Object.entries(t.resolvedPaths).filter(([,h])=>h&&s.startsWith(y__default.normalize(h+y__default.sep))).sort((h,u)=>u[1].length-h[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 c=y__default.posix.extname(a),l=[".ts",".tsx",".js",".jsx"].includes(c)?"":c,m=a.slice(0,a.length-c.length);m.endsWith("/index")&&(m=m.slice(0,-6));let f=i==="cwd"?r.aliasPrefix:t.aliases[i];if(!f)return null;let x=m===""?"":`/${m}`;return x=x.replace("/src",""),`${f}${x}${l}`}var Ft=[".tsx",".ts",".jsx",".js",".css"],Lt=["lib/utils.ts"],rs=[/^(react|react-dom|next)(\/.*)?$/,/^(node|jsr|npm):.*$/],ss=new Project({compilerOptions:{}});function ns(e){if(rs.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 is(e,t,r,s=new Set){let n=y.resolve(t.resolvedPaths.cwd,e),i=y.relative(t.resolvedPaths.cwd,n);if(Lt.includes(i))return {dependencies:[],files:[]};let o=y.extname(e);if(!Ft.includes(o))return {dependencies:[],files:[]};if(s.has(i))return {dependencies:[],files:[]};if(s.add(i),!(await B.stat(n)).isFile())return {dependencies:[],files:[]};let c=await B.readFile(n,"utf-8"),p=await os(y.basename(n)),l=ss.createSourceFile(p,c,{scriptKind:ScriptKind.TSX}),m=await loadConfig(t.resolvedPaths.cwd);if(m.resultType==="failed")return {dependencies:[],files:[]};let f=[],x=new Set,h=Nt(e),u={path:i,type:h,target:""};f.push(u);let R=l.getImportDeclarations();for(let E of R){let C=E.getModuleSpecifierValue(),w=C.startsWith(".");if(!C.startsWith(`${r.aliasPrefix}/`)&&!w){let z=ns(C);z&&x.add(z);continue}let k=await A(C,m);if(w&&(k=y.resolve(y.dirname(n),C)),!k)continue;if(!y.extname(k))for(let z of Ft){let at=`${k}${z}`;try{await B.access(at),k=at;break}catch{continue}}let D=y.relative(t.resolvedPaths.cwd,k);if(s.has(D)||Lt.includes(D))continue;let le=Nt(C),Re={path:D,type:le,target:""};(le==="registry:page"||le==="registry:file")&&(Re.target=C),f.push(Re);let Ce=await is(D,t,r,s);if(Ce.files)for(let z of Ce.files)s.has(z.path)||(s.add(z.path),f.push(z));Ce.dependencies&&Ce.dependencies.forEach(z=>x.add(z));}let d=Array.from(new Map(f.map(E=>[E.path,E])).values());return {dependencies:Array.from(x),files:d}}async function os(e){let t=await B.mkdtemp(y.join(tmpdir(),"shadcn-"));return y.join(t,e)}function Nt(e){return e.includes("/ui/")?"registry:ui":e.includes("/lib/")?"registry:lib":e.includes("/hooks/")?"registry:hook":(e.includes("/components/"),"registry:component")}function N(e){try{return new URL(e),!0}catch{return false}}function We(e){return e.endsWith(".json")&&!N(e)}function io(e){return !!e?.files?.length&&e.files.every(t=>!!t.target&&(t.type==="registry:file"||t.type==="registry:item"))}async function Dt(e,t){if(!as(t))return z.array(b$1).parse(e.flat().filter(Boolean));let r=await V(t.resolvedPaths.cwd),s=new Map,n=z.array(b$1).parse(e.flat().filter(Boolean));return n.forEach(i=>{let o=Xe(i,t,{isSrcDir:r?.isSrcDir,framework:r?.framework.name,commonRoot:et(n.map(a=>a.path),i.path)});o&&s.set(o,i);}),Array.from(s.values())}function as(e){return !!(e?.resolvedPaths?.cwd&&(e?.resolvedPaths?.ui||e?.resolvedPaths?.lib||e?.resolvedPaths?.components||e?.resolvedPaths?.hooks))}function cs(e){return e.style?e.style==="new-york"&&e.tailwind?.config===""?Ie:e.style:Ie}function ie(e){let t=Et({style:Ie,registries:K});return e?q.parse(ae(t,{...e,style:cs(e),registries:{...K,...e.registries}})):t}var Ue={headers:{}};function he(e){Ue.headers={...Ue.headers,...e};}function zt(e){return Ue.headers[e]||{}}function ye(){Ue.headers={};}function ps(e){let t=new Set;return typeof e=="string"?pe(e).forEach(r=>t.add(r)):(pe(e.url).forEach(r=>t.add(r)),e.params&&Object.values(e.params).forEach(r=>{pe(r).forEach(s=>t.add(s));}),e.headers&&Object.values(e.headers).forEach(r=>{pe(r).forEach(s=>t.add(s));})),Array.from(t)}function _t(e,t){let s=ps(t).filter(n=>!process.env[n]);if(s.length>0)throw new ge(e,s)}function Eo(e,t){for(let r of e)oe(r,ie(t));ye();}var Kt="{name}",Me="{style}",Vt=/\${(\w+)}/g,Wt="?",fs="&";function oe(e,t){let{registry:r,item:s}=te(e);if(!r)return null;let i=(t?.registries||{})[r];if(!i)throw new W(r);return _t(r,i),{url:ms(s,i,t),headers:ds(i)}}function ms(e,t,r){if(typeof t=="string"){let n=t.replace(Kt,e);return r?.style&&n.includes(Me)&&(n=n.replace(Me,r.style)),ce(n)}let s=t.url.replace(Kt,e);return r?.style&&s.includes(Me)&&(s=s.replace(Me,r.style)),s=ce(s),t.params?gs(s,t.params):s}function ds(e){if(typeof e=="string"||!e.headers)return {};let t={};for(let[r,s]of Object.entries(e.headers)){let n=ce(s);us(s,n)&&(t[r]=n);}return t}function gs(e,t){let r=new URLSearchParams;for(let[i,o]of Object.entries(t)){let a=ce(o);a&&r.append(i,a);}let s=r.toString();if(!s)return e;let n=e.includes(Wt)?fs:Wt;return `${e}${n}${s}`}function us(e,t){let r=t.trim();if(!r)return false;if(e.includes("${")&&e.match(Vt)){let n=e.replace(Vt,"").trim();return r!==n}return true}function Be(e){if(N(e)){let t=new URL(e);return t.pathname.match(/\/chat\/b\//)&&!t.pathname.endsWith("/json")&&(t.pathname=`${t.pathname}/json`),t.toString()}return `${Je}/${e}`}var Es=process.env.https_proxy?new HttpsProxyAgent(process.env.https_proxy):void 0,tt=new Map;async function $(e,t={}){t={useCache:true,...t};try{return await Promise.all(e.map(async s=>{let n=Be(s);if(t.useCache&&tt.has(n))return tt.get(n);let i=(async()=>{let o=zt(n),a=await ws(n,{agent:Es,headers:{...o}});if(!a.ok){let c;if(a.headers.get("content-type")?.includes("application/json")){let p=await a.json(),l=z.object({detail:z.string().optional(),title:z.string().optional(),message:z.string().optional(),error:z.string().optional()}).safeParse(p);l.success&&(c=l.data.detail||l.data.message,l.data.error&&(c=`[${l.data.error}] ${c}`));}throw a.status===401?new fe(n,c):a.status===404?new J(n,c):a.status===403?new me(n,c):new de(n,a.status,c)}return a.json()})();return t.useCache&&tt.set(n,i),i}))}catch(r){throw r}}async function Mt(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=JSON.parse(s);try{return g.parse(n)}catch(i){throw new j(e,i)}}catch(t){throw t instanceof Error&&(t.message.includes("ENOENT")||t.message.includes("no such file"))?new ee(e,t):t instanceof j?t:new ee(e,t)}}function H(e){if(v.break(),v.error("Something went wrong. Please check the error below for more details."),v.error("If the problem persists, please open an issue on GitHub."),v.error(""),typeof e=="string"&&(v.error(e),v.break(),process.exit(1)),e instanceof b&&(e.message&&(v.error(e.cause?"Error:":"Message:"),v.error(e.message)),e.cause&&(v.error(`
23
+ `:n}var v={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 Q(e,t){return Sr({text:e,isSilent:t?.silent})}var Le=async({sourceFile:e,config:t,baseColor:r})=>(t.tailwind?.cssVariables||!r?.inlineColors||e.getDescendantsOfKind(SyntaxKind.StringLiteral).forEach(s=>{let n=s.getText();if(n){let i=br(n.replace(/"/g,""),r.inlineColors);s.replaceWithText(`"${i.trim()}"`);}}),e);function Ze(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 Ir=["bg-","text-","border-","ring-offset-","ring-"];function br(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,c]=Ze(i),p=Ir.find(m=>a?.startsWith(m));if(!p){s.has(i)||s.add(i);continue}let l=a?.replace(p,"");if(l&&l in t.light){s.add([o,`${p}${t.light[l]}`].filter(Boolean).join(":")+(c?`/${c}`:"")),n.add(["dark",o,`${p}${t.dark[l]}`].filter(Boolean).join(":")+(c?`/${c}`:""));continue}s.has(i)||s.add(i);}return [...Array.from(s),...Array.from(n)].join(" ").trim()}var Ne={lucide:{name:"lucide-react",package:"lucide-react",import:"lucide-react"},radix:{name:"@radix-ui/react-icons",package:"@radix-ui/react-icons",import:"@radix-ui/react-icons"}};var Tt="lucide",De=async({sourceFile:e,config:t})=>{if(!t.iconLibrary||!(t.iconLibrary in Ne))return e;let r=await kt(),s=Tt,n=t.iconLibrary;if(s===n)return e;let i=[];for(let o of e.getImportDeclarations()??[])if(o.getModuleSpecifier()?.getText()===`"${Ne[Tt].import}"`){for(let a of o.getNamedImports()??[]){let c=a.getName(),p=r[c]?.[n];!p||i.includes(p)||(i.push(p),a.remove(),e.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).filter(l=>l.getTagNameNode()?.getText()===c).forEach(l=>l.getTagNameNode()?.replaceWithText(p)));}o.getNamedImports()?.length===0&&o.remove();}if(i.length>0){let o=e.addImportDeclaration({moduleSpecifier:Ne[n]?.import,namedImports:i.map(a=>({name:a}))});Tr(e)||o.replaceWithText(o.getText().replace(";",""));}return e};function Tr(e){return e.getImportDeclarations()?.[0]?.getText().endsWith(";")??false}var ze=async({sourceFile:e,config:t,isRemote:r})=>{let n=`@${t.aliases?.utils?.split("/")[0]?.slice(1)}/lib/utils`,i=e.getImportDeclarations();if(![".tsx",".ts",".jsx",".js"].includes(e.getExtension()))return e;for(let o of i){let a=kr(o.getModuleSpecifierValue(),t,r);o.setModuleSpecifier(a),(n===a||a==="@/lib/utils")&&o.getNamedImports().find(l=>l.getName()==="cn")&&o.setModuleSpecifier(n===a?a.replace(n,t.aliases.utils):t.aliases.utils);}return e};function kr(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 $r={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"]},jt=async({sourceFile:e,config:t})=>{let r=e.getFullText();if(t.tsx)return r;let s=_e.parse(r,{parser:{parse:i=>parse(i,$r)}}),n=transformFromAstSync(s,r,{cloneInputAst:false,code:false,ast:true,plugins:[Ar],configFile:false});if(!n||!n.ast)throw new Error("Failed to transform JSX");return _e.print(n.ast).code};var Lr=/^["']use client["']$/g,Ke=async({sourceFile:e,config:t})=>{if(t.rsc)return e;let r=e.getFirstChildByKind(SyntaxKind.ExpressionStatement);return r&&Lr.test(r.getText())&&r.remove(),e};var Ve=async({sourceFile:e,config:t})=>{if(!t.tailwind?.prefix)return e;let r=await Fe(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(`"${U(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(`"${U(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(`"${U(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(`"${U(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}),i.isKind(SyntaxKind.StringLiteral)&&i.replaceWithText(`"${U(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(`"${U(a.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}),o.isKind(SyntaxKind.StringLiteral)&&o.replaceWithText(`"${U(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(`"${U(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix,r)}"`);}});}),e};function U(e,t="",r){return r==="v3"?e.split(" ").map(s=>{let[n,i,o]=Ze(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 Kr=new Project({compilerOptions:{}});async function Vr(e){let t=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-"));return y__default.join(t,e)}async function At(e,t=[ze,Ke,Le,Ve,De]){let r=await Vr(e.filename),s=Kr.createSourceFile(r,e.raw,{scriptKind:ScriptKind.TSX});for(let n of t)await n({sourceFile:s,...e});return e.transformJsx?await jt({sourceFile:s,...e}):s.getText()}async function Gi(e,t,r){if(!e?.length)return {filesCreated:[],filesUpdated:[],filesSkipped:[]};r={overwrite:false,force:false,silent:false,isRemote:false,isWorkspace:false,...r};let s=Q("Updating files.",{silent:r.silent})?.start(),[n,i]=await Promise.all([V(t.resolvedPaths.cwd),t.tailwind.baseColor?We(t.tailwind.baseColor):Promise.resolve(void 0)]),o=[],a=[],c=[],p=[],l=null;for(let h of e){if(!h.content)continue;let u=Xe(h,t,{isSrcDir:n?.isSrcDir,framework:n?.framework.name,commonRoot:et(e.map(w=>w.path),h.path)});if(!u)continue;let R=basename(h.path),d=y__default.dirname(u);if(t.tsx||(u=u.replace(/\.tsx?$/,w=>w===".tsx"?".jsx":".js")),Y(u)&&!existsSync(u)){let w=It(d);w&&(u=w);}let E=existsSync(u),S=Y(u)?h.content:await At({filename:h.path,raw:h.content,config:t,baseColor:i,transformJsx:!t.tsx,isRemote:r.isRemote},[ze,Ke,Le,Ve,De]);if(E&&!Y(u)){let w=await promises.readFile(u,"utf-8");if(St(w,S,{ignoreImports:r.isWorkspace})){c.push(y__default.relative(t.resolvedPaths.cwd,u));continue}}if(E&&!r.overwrite&&!Y(u)){s.stop(),r.rootSpinner&&r.rootSpinner.stop();let{overwrite:w}=await Ur({type:"confirm",name:"overwrite",message:`The file ${P.info(R)} already exists. Would you like to overwrite?`,initial:false});if(!w){c.push(y__default.relative(t.resolvedPaths.cwd,u)),r.rootSpinner&&r.rootSpinner.start();continue}s?.start(),r.rootSpinner&&r.rootSpinner.start();}if(existsSync(d)||await promises.mkdir(d,{recursive:true}),Y(u)&&E){let w=await promises.readFile(u,"utf-8"),T=Pt(w,S);if(p=bt(w,S),l=y__default.relative(t.resolvedPaths.cwd,u),!p.length){c.push(y__default.relative(t.resolvedPaths.cwd,u));continue}await promises.writeFile(u,T,"utf-8"),a.push(y__default.relative(t.resolvedPaths.cwd,u));continue}await promises.writeFile(u,S,"utf-8"),E?a.push(y__default.relative(t.resolvedPaths.cwd,u)):(o.push(y__default.relative(t.resolvedPaths.cwd,u)),Y(u)&&(p=Object.keys(se(S)),l=y__default.relative(t.resolvedPaths.cwd,u)));}let m=[...o,...a,...c],f=await Yr(m,t);if(a.push(...f),a=a.filter(h=>!o.includes(h)),!(o.length||a.length)&&!c.length&&s?.info("No files updated."),o=Array.from(new Set(o)),a=Array.from(new Set(a)),c=Array.from(new Set(c)),o.length){if(s?.succeed(`Created ${o.length} ${o.length===1?"file":"files"}:`),!r.silent)for(let h of o)v.log(` - ${h}`);}else s?.stop();if(a.length&&(Q(`Updated ${a.length} ${a.length===1?"file":"files"}:`,{silent:r.silent})?.info(),!r.silent))for(let h of a)v.log(` - ${h}`);if(c.length&&(Q(`Skipped ${c.length} ${a.length===1?"file":"files"}: (files might be identical, use --overwrite to overwrite)`,{silent:r.silent})?.info(),!r.silent))for(let h of c)v.log(` - ${h}`);if(p.length&&l&&(Q(`Added the following variables to ${P.info(l)}:`)?.info(),!r.silent))for(let h of p)v.log(` ${P.success("+")} ${h}`);return r.silent||v.break(),{filesCreated:o,filesUpdated:a,filesSkipped:c}}function Xe(e,t,r){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=Jr(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=Gr(e,t),n=qr(e.path,s);return y__default.join(s,n)}function Gr(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 et(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(p=>p!==s&&p.startsWith(a+"/")))return "/"+a}return "/"+n}function qr(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(c=>c===o);return a===-1?n[n.length-1]:n.slice(a+1).join("/")}function Jr(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 Yr(e,t){let r=new Project({compilerOptions:{}}),s=await V(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 c=await promises.readFile(a,"utf-8"),p=await promises.mkdtemp(y__default.join(tmpdir(),"shadcn-")),l=r.createSourceFile(y__default.join(p,basename(a)),c,{scriptKind:ScriptKind.TSX});if(![".tsx",".ts",".jsx",".js"].includes(l.getExtension()))continue;let m=l.getImportDeclarations();for(let f of m){let x=f.getModuleSpecifierValue();if(s?.aliasPrefix&&!x.startsWith(`${s.aliasPrefix}/`))continue;let h=await $(x,n);if(!h)continue;let u=Qr(h,e,t);if(!u)continue;let R=Zr(u,t,s);!R||R===x||(f.setModuleSpecifier(R),await promises.writeFile(a,l.getFullText(),"utf-8"),i.push(o));}}return i}function Qr(e,t,r,s=[".tsx",".ts",".js",".jsx",".css"]){let n=y__default.normalize(r.resolvedPaths.cwd),i=t.map(R=>R.split(y__default.sep).join(y__default.posix.sep)),o=new Set(i),a=y__default.extname(e),c=a!=="",p=c?e.slice(0,-a.length):e,m=y__default.relative(n,p).split(y__default.sep).join(y__default.posix.sep),f=c?[a]:s,x=new Set;for(let R of f){let d=p+R,E=y__default.posix.normalize(y__default.relative(n,d));(o.has(E)||existsSync(d))&&x.add(E);let S=y__default.join(p,`index${R}`),w=y__default.posix.normalize(y__default.relative(n,S));(o.has(w)||existsSync(S))&&x.add(w);}let h=y__default.basename(p);for(let R of i)f.some(d=>R.endsWith(`/${h}${d}`))&&x.add(R);return x.size===0?null:Array.from(x).sort((R,d)=>{let E=y__default.posix.extname(R),S=y__default.posix.extname(d),w=f.indexOf(E)-f.indexOf(S);if(w!==0)return w;let T=m&&R.startsWith(m)?-1:1,j=m&&d.startsWith(m)?-1:1;return T-j})[0]}function Zr(e,t,r){let s=y__default.normalize(y__default.join(t.resolvedPaths.cwd,e)),n=Object.entries(t.resolvedPaths).filter(([,h])=>h&&s.startsWith(y__default.normalize(h+y__default.sep))).sort((h,u)=>u[1].length-h[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 c=y__default.posix.extname(a),l=[".ts",".tsx",".js",".jsx"].includes(c)?"":c,m=a.slice(0,a.length-c.length);m.endsWith("/index")&&(m=m.slice(0,-6));let f=i==="cwd"?r.aliasPrefix:t.aliases[i];if(!f)return null;let x=m===""?"":`/${m}`;return x=x.replace("/src",""),`${f}${x}${l}`}var Lt=[".tsx",".ts",".jsx",".js",".css"],Nt=["lib/utils.ts"],ss=[/^(react|react-dom|next)(\/.*)?$/,/^(node|jsr|npm):.*$/],ns=new Project({compilerOptions:{}});function is(e){if(ss.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 os(e,t,r,s=new Set){let n=y.resolve(t.resolvedPaths.cwd,e),i=y.relative(t.resolvedPaths.cwd,n);if(Nt.includes(i))return {dependencies:[],files:[]};let o=y.extname(e);if(!Lt.includes(o))return {dependencies:[],files:[]};if(s.has(i))return {dependencies:[],files:[]};if(s.add(i),!(await B.stat(n)).isFile())return {dependencies:[],files:[]};let c=await B.readFile(n,"utf-8"),p=await as(y.basename(n)),l=ns.createSourceFile(p,c,{scriptKind:ScriptKind.TSX}),m=await loadConfig(t.resolvedPaths.cwd);if(m.resultType==="failed")return {dependencies:[],files:[]};let f=[],x=new Set,h=Dt(e),u={path:i,type:h,target:""};f.push(u);let R=l.getImportDeclarations();for(let E of R){let S=E.getModuleSpecifierValue(),w=S.startsWith(".");if(!S.startsWith(`${r.aliasPrefix}/`)&&!w){let z=is(S);z&&x.add(z);continue}let j=await $(S,m);if(w&&(j=y.resolve(y.dirname(n),S)),!j)continue;if(!y.extname(j))for(let z of Lt){let at=`${j}${z}`;try{await B.access(at),j=at;break}catch{continue}}let D=y.relative(t.resolvedPaths.cwd,j);if(s.has(D)||Nt.includes(D))continue;let le=Dt(S),Se={path:D,type:le,target:""};(le==="registry:page"||le==="registry:file")&&(Se.target=S),f.push(Se);let Ce=await os(D,t,r,s);if(Ce.files)for(let z of Ce.files)s.has(z.path)||(s.add(z.path),f.push(z));Ce.dependencies&&Ce.dependencies.forEach(z=>x.add(z));}let d=Array.from(new Map(f.map(E=>[E.path,E])).values());return {dependencies:Array.from(x),files:d}}async function as(e){let t=await B.mkdtemp(y.join(tmpdir(),"shadcn-"));return y.join(t,e)}function Dt(e){return e.includes("/ui/")?"registry:ui":e.includes("/lib/")?"registry:lib":e.includes("/hooks/")?"registry:hook":(e.includes("/components/"),"registry:component")}function N(e){try{return new URL(e),!0}catch{return false}}function Ue(e){return e.endsWith(".json")&&!N(e)}function oo(e){return !!e?.files?.length&&e.files.every(t=>!!t.target&&(t.type==="registry:file"||t.type==="registry:item"))}async function zt(e,t){if(!ls(t))return z.array(b$1).parse(e.flat().filter(Boolean));let r=await V(t.resolvedPaths.cwd),s=new Map,n=z.array(b$1).parse(e.flat().filter(Boolean));return n.forEach(i=>{let o=Xe(i,t,{isSrcDir:r?.isSrcDir,framework:r?.framework.name,commonRoot:et(n.map(a=>a.path),i.path)});o&&s.set(o,i);}),Array.from(s.values())}function ls(e){return !!(e?.resolvedPaths?.cwd&&(e?.resolvedPaths?.ui||e?.resolvedPaths?.lib||e?.resolvedPaths?.components||e?.resolvedPaths?.hooks))}function ps(e){return e.style?e.style==="new-york"&&e.tailwind?.config===""?be:e.style:be}function ie(e){let t=vt({style:be,registries:K});return e?q.parse(ae(t,{...e,style:ps(e),registries:{...K,...e.registries}})):t}var Me={headers:{}};function ye(e){Me.headers={...Me.headers,...e};}function _t(e){return Me.headers[e]||{}}function xe(){Me.headers={};}function fs(e){let t=new Set;return typeof e=="string"?fe(e).forEach(r=>t.add(r)):(fe(e.url).forEach(r=>t.add(r)),e.params&&Object.values(e.params).forEach(r=>{fe(r).forEach(s=>t.add(s));}),e.headers&&Object.values(e.headers).forEach(r=>{fe(r).forEach(s=>t.add(s));})),Array.from(t)}function Kt(e,t){let s=fs(t).filter(n=>!process.env[n]);if(s.length>0)throw new ue(e,s)}function vo(e,t){for(let r of e)oe(r,ie(t));xe();}var Vt="{name}",Be="{style}",Wt=/\${(\w+)}/g,Ut="?",ms="&";function oe(e,t){let{registry:r,item:s}=te(e);if(!r)return null;let i=(t?.registries||{})[r];if(!i)throw new W(r);return Kt(r,i),{url:ds(s,i,t),headers:gs(i)}}function ds(e,t,r){if(typeof t=="string"){let n=t.replace(Vt,e);return r?.style&&n.includes(Be)&&(n=n.replace(Be,r.style)),pe(n)}let s=t.url.replace(Vt,e);return r?.style&&s.includes(Be)&&(s=s.replace(Be,r.style)),s=pe(s),t.params?us(s,t.params):s}function gs(e){if(typeof e=="string"||!e.headers)return {};let t={};for(let[r,s]of Object.entries(e.headers)){let n=pe(s);hs(s,n)&&(t[r]=n);}return t}function us(e,t){let r=new URLSearchParams;for(let[i,o]of Object.entries(t)){let a=pe(o);a&&r.append(i,a);}let s=r.toString();if(!s)return e;let n=e.includes(Ut)?ms:Ut;return `${e}${n}${s}`}function hs(e,t){let r=t.trim();if(!r)return false;if(e.includes("${")&&e.match(Wt)){let n=e.replace(Wt,"").trim();return r!==n}return true}function He(e){if(N(e)){let t=new URL(e);return t.pathname.match(/\/chat\/b\//)&&!t.pathname.endsWith("/json")&&(t.pathname=`${t.pathname}/json`),t.toString()}return `${ce}/${e}`}var vs=process.env.https_proxy?new HttpsProxyAgent(process.env.https_proxy):void 0,tt=new Map;async function k(e,t={}){t={useCache:true,...t};try{return await Promise.all(e.map(async s=>{let n=He(s);if(t.useCache&&tt.has(n))return tt.get(n);let i=(async()=>{let o=_t(n),a=await Es(n,{agent:vs,headers:{...o}});if(!a.ok){let c;if(a.headers.get("content-type")?.includes("application/json")){let p=await a.json(),l=z.object({detail:z.string().optional(),title:z.string().optional(),message:z.string().optional(),error:z.string().optional()}).safeParse(p);l.success&&(c=l.data.detail||l.data.message,l.data.error&&(c=`[${l.data.error}] ${c}`));}throw a.status===401?new me(n,c):a.status===404?new J(n,c):a.status===403?new de(n,c):new ge(n,a.status,c)}return a.json()})();return t.useCache&&tt.set(n,i),i}))}catch(r){throw r}}async function Bt(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=JSON.parse(s);try{return g.parse(n)}catch(i){throw new O(e,i)}}catch(t){throw t instanceof Error&&(t.message.includes("ENOENT")||t.message.includes("no such file"))?new ee(e,t):t instanceof O?t:new ee(e,t)}}function H(e){if(v.break(),v.error("Something went wrong. Please check the error below for more details."),v.error("If the problem persists, please open an issue on GitHub."),v.error(""),typeof e=="string"&&(v.error(e),v.break(),process.exit(1)),e instanceof b&&(e.message&&(v.error(e.cause?"Error:":"Message:"),v.error(e.message)),e.cause&&(v.error(`
24
24
  Message:`),v.error(e.cause)),e.suggestion&&(v.error(`
25
- Suggestion:`),v.error(e.suggestion)),v.break(),process.exit(1)),e instanceof z.ZodError){v.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))v.error(`- ${P.info(t)}: ${r}`);v.break(),process.exit(1);}e instanceof Error&&(v.error(e.message),v.break(),process.exit(1)),v.break(),process.exit(1);}async function sa(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=Q(`Updating ${P.info(s)}`,{silent:r.silent}).start(),i=await promises.readFile(t.resolvedPaths.tailwindConfig,"utf8"),o=await Ps(i,e,t);await promises.writeFile(t.resolvedPaths.tailwindConfig,o,"utf8"),n?.succeed();}async function Ps(e,t,r){let s=await Ht(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=Os(n);return Ts(n,{name:"darkMode",value:"class"},{quoteChar:i}),t.plugins?.forEach(o=>{js(n,o);}),t.theme&&await ks(n,t.theme),s.getFullText()}function Ts(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 ks(e,t){e.getProperty("theme")||e.addPropertyAssignment({name:"theme",initializer:"{}"}),st(e);let s=(e.getPropertyOrThrow("theme")?.asKindOrThrow(SyntaxKind.PropertyAssignment)).getInitializer();if(s?.isKind(SyntaxKind.ObjectLiteralExpression)){let n=s.getText(),i=await As(n),o=ae(i,t,{arrayMerge:(c,p)=>p}),a=Ss(o).replace(/\'\.\.\.(.*)\'/g,"...$1").replace(/\'\"/g,"'").replace(/\"\'/g,"'").replace(/\'\[/g,"[").replace(/\]\'/g,"]").replace(/\'\\\'/g,"'").replace(/\\\'/g,"'").replace(/\\\'\'/g,"'").replace(/\'\'/g,"'");s.replaceWithText(a);}nt(e);}function js(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 Ht(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 Os(e){return e.getFirstDescendantByKind(SyntaxKind.StringLiteral)?.getQuoteKind()===QuoteKind.Single?"'":'"'}function st(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)?st(i.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)):i&&i.isKind(SyntaxKind.ArrayLiteralExpression)&&Gt(i.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));}}}function Gt(e){let t=e.getElements();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.ObjectLiteralExpression))st(s.asKindOrThrow(SyntaxKind.ObjectLiteralExpression));else if(s.isKind(SyntaxKind.ArrayLiteralExpression))Gt(s.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));else if(s.isKind(SyntaxKind.SpreadElement)){let n=s.getText();e.removeElement(r),e.insertElement(r,`"${n}"`);}}}function nt(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)?nt(i):i&&i.isKind(SyntaxKind.ArrayLiteralExpression)&&qt(i.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));}}}function qt(e){let t=e.getElements();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.ObjectLiteralExpression))nt(s.asKindOrThrow(SyntaxKind.ObjectLiteralExpression));else if(s.isKind(SyntaxKind.ArrayLiteralExpression))qt(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 As(e){let r=(await Ht(`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]=Jt(r.getInitializer()):t[s]=it(r.getInitializer());}return t}function Jt(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(Jt(r.asKindOrThrow(SyntaxKind.ArrayLiteralExpression))):t.push(it(r));return t}function it(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(it);case SyntaxKind.ObjectLiteralExpression:return He(e);default:return e.getText()}}function Yt(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 Ee(e,t){let r={},s=[...e];if(!t?.registries)return he({}),s;for(let n=0;n<s.length;n++){let i=oe(s[n],t);i&&(s[n]=i.url,Object.keys(i.headers).length>0&&(r[i.url]=i.headers));}return he(r),s}async function Z(e,t,r={}){return await Promise.all(e.map(async n=>{if(We(n))return Mt(n);if(N(n)){let[a]=await $([n],r);try{return g.parse(a)}catch(c){throw new j(n,c)}}if(n.startsWith("@")&&t?.registries){let a=Ee([n],t),[c]=await $(a,r);try{return g.parse(c)}catch(p){throw new j(n,p)}}let i=`styles/${t?.style??"new-york-v4"}/${n}.json`,[o]=await $([i],r);try{return g.parse(o)}catch(a){throw new j(n,a)}}))}g.extend({_source:z.string().optional()});async function Xt(e,t,r={}){try{r={useCache:!0,...r};let s=[],n=[],i=[],o=Array.from(new Set(e)),a=await Z(o,t,r),c=new Map;for(let d=0;d<a.length;d++)a[d]&&c.set(o[d],a[d]);for(let[d,E]of Array.from(c.entries())){let C={...E,_source:d};if(s.push(C),E.registryDependencies){let w=E.registryDependencies;if(t?.registries)w=Ee(E.registryDependencies,t);else {let q=E.registryDependencies.filter(D=>D.startsWith("@"));if(q.length>0){let{registry:D}=te(q[0]);throw new W(D)}}let{items:T,registryNames:k}=await ve(w,t,r,new Set(o));n.push(...T),i.push(...k);}}if(s.push(...n),i.length>0){let d=Array.from(new Set(i)),E=d.filter(w=>!w.startsWith("@")),C=d.filter(w=>w.startsWith("@"));if(C.length>0){let w=await Z(C,t,r);for(let T=0;T<w.length;T++){let q={...w[T],_source:C[T]};s.push(q);}}if(E.length>0){let w=await er();if(!w&&s.length===0)return null;if(w){E.includes("index")&&E.unshift("index");let T=[];for(let le of E){let Re=await Fs(le,t,r);T.push(...Re);}let k=Array.from(new Set(T)),q=await $(k,r),D=z.array(g).parse(q);s.push(...D);}}}if(!s.length)return null;if((o.includes("index")||i.includes("index"))&&t.tailwind.baseColor){let d=await Ls(t.tailwind.baseColor,t);d&&s.unshift(d);}let p=new Map;s.forEach(d=>{let E=d._source||d.name;p.set(d,E);}),s=Ds(s,p),s.sort((d,E)=>d.type==="registry:theme"&&E.type!=="registry:theme"?-1:d.type!=="registry:theme"&&E.type==="registry:theme"?1:0);let l={};s.forEach(d=>{l=ae(l,d.tailwind??{});});let m$1={};s.forEach(d=>{m$1=ae(m$1,d.cssVars??{});});let f={};s.forEach(d=>{f=ae(f,d.css??{});});let x="";s.forEach(d=>{d.docs&&(x+=`${d.docs}
26
- `);});let h={};s.forEach(d=>{h=ae(h,d.envVars??{});});let u=await Dt(s.map(d=>d.files??[]),t),R=m.parse({dependencies:ae.all(s.map(d=>d.dependencies??[])),devDependencies:ae.all(s.map(d=>d.devDependencies??[])),files:u,tailwind:l,cssVars:m$1,css:f,docs:x});return Object.keys(h).length>0&&(R.envVars=h),R}catch(s){return H(s),null}}async function ve(e,t,r={},s=new Set){let n=[],i=[];for(let o of e)if(!s.has(o)){if(s.add(o),N(o)||We(o)){let[a]=await Z([o],t,r);if(a&&(n.push(a),a.registryDependencies)){let c=t?.registries?Ee(a.registryDependencies,t):a.registryDependencies,p=await ve(c,t,r,s);n.push(...p.items),i.push(...p.registryNames);}}else if(o.startsWith("@")&&t?.registries){let{registry:a}=te(o);if(a&&!(a in t.registries))throw new W(a);let[c]=await Z([o],t,r);if(c&&(n.push(c),c.registryDependencies)){let p=t?.registries?Ee(c.registryDependencies,t):c.registryDependencies,l=await ve(p,t,r,s);n.push(...l.items),i.push(...l.registryNames);}}else if(i.push(o),t)try{let[a]=await Z([o],t,r);if(a&&a.registryDependencies){let c=t?.registries?Ee(a.registryDependencies,t):a.registryDependencies,p=await ve(c,t,r,s);n.push(...p.items),i.push(...p.registryNames);}}catch{}}return {items:n,registryNames:i}}async function Fs(e,t,r={}){if(N(e))return [e];let{registryNames:s}=await ve([e],t,r,new Set),n=t.resolvedPaths?.cwd?await wt(t.resolvedPaths.cwd,t.style):t.style,i=s.map(o=>Be(N(o)?o:`styles/${n}/${o}.json`));return Array.from(new Set(i))}async function Ls(e,t){let[r,s]=await Promise.all([Ve(e),$e(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,...Yt(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 G(e,t){let r=t||e.name,s=createHash("sha256").update(r).digest("hex").substring(0,8);return `${e.name}::${s}`}function Ns(e){if(N(e)){let s=new URL(e).pathname,n=s.match(/\/([^/]+)\.json$/),i=n?n[1]:y__default.basename(s,".json");return {name:i,hash:G({name:i},e)}}if(We(e)){let r=e.match(/\/([^/]+)\.json$/),s=r?r[1]:y__default.basename(e,".json");return {name:s,hash:G({name:s},e)}}let{item:t}=te(e);return {name:t,hash:G({name:t},e)}}function Ds(e,t){let r=new Map,s=new Map,n=new Map,i=new Map;e.forEach(p=>{let l=t.get(p)||p.name,m=G(p,l);r.set(m,p),s.set(m,p),n.set(m,0),i.set(m,[]);});let o=new Map;e.forEach(p=>{let l=t.get(p)||p.name,m=G(p,l);o.has(p.name)||o.set(p.name,[]),o.get(p.name).push(m),l!==p.name&&(o.has(l)||o.set(l,[]),o.get(l).push(m));}),e.forEach(p=>{let l=t.get(p)||p.name,m=G(p,l);p.registryDependencies&&p.registryDependencies.forEach(f=>{let x,h=o.get(f)||[];if(h.length===1)x=h[0];else if(h.length>1)x=h[0];else {let{name:u}=Ns(f),R=o.get(u)||[];R.length>0&&(x=R[0]);}x&&r.has(x)&&(i.get(x).push(m),n.set(m,n.get(m)+1));});});let a=[],c=[];for(n.forEach((p,l)=>{p===0&&a.push(l);});a.length>0;){let p=a.shift(),l=r.get(p);c.push(l),i.get(p).forEach(m=>{let f=n.get(m)-1;n.set(m,f),f===0&&a.push(m);});}if(c.length!==e.length){console.warn("Circular dependency detected in registry items");let p=new Set(c.map(l=>{let m=t.get(l)||l.name;return G(l,m)}));e.forEach(l=>{let m=t.get(l)||l.name,f=G(l,m);p.has(f)||c.push(l);});}return c}async function ot(e,t){let{config:r,useCache:s}=t||{};if(N(e)){let[a]=await $([e],{useCache:s});try{return h.parse(a)}catch(c){throw new j(e,c)}}if(!e.startsWith("@"))throw new ue(e);let n=e;n.endsWith("/registry")||(n=`${n}/registry`);let i=oe(n,ie(r));if(!i?.url)throw new J(n);i.headers&&Object.keys(i.headers).length>0&&he({[i.url]:i.headers});let[o]=await $([i.url],{useCache:s});try{return h.parse(o)}catch(a){throw new j(n,a)}}async function Ks(e,t){let{config:r,useCache:s=false}=t||{};return ye(),Z(e,ie(r),{useCache:s})}async function Vs(e,t){let{config:r,useCache:s=false}=t||{};return ye(),Xt(e,ie(r),{useCache:s})}async function Ka(e,t){let{useCache:r=true}=t||{};r||Pe.clearCaches();let s=await Pe.search(e);if(!s)return {registries:K};let n=z.object({registries:o.optional()}).safeParse(s.config);if(!n.success)throw new be(e,n.error);return {registries:{...K,...n.data.registries||{}}}}async function er(){try{let[e]=await $(["index.json"]);return i.parse(e)}catch(e){v.error(`
27
- `),H(e);}}async function Va(){try{let[e]=await $(["styles/index.json"]);return j$1.parse(e)}catch(e){return v.error(`
28
- `),H(e),[]}}async function Tt(){try{let[e]=await $(["icons/index.json"]);return k.parse(e)}catch(e){return H(e),{}}}async function Wa(){return yt}async function Ve(e){try{let[t]=await $([`colors/${e}.json`]);return l.parse(t)}catch(t){H(t);}}async function Ws(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 Ws(e,n.registryDependencies);r.push(...i);}}return r.filter((s,n,i)=>i.findIndex(o=>o.name===s.name)===n)}async function Ua(e,t){try{let r=t.map(n=>`styles/${e}/${n.name}.json`);return (await $(r)).map(n=>g.parse(n))}catch(r){return H(r),[]}}async function Ma(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 Ms(e,t$1){let{query:r,limit:s,offset:n,config:i,useCache:o}=t$1||{},a=[];for(let f of e){let h=((await ot(f,{config:i,useCache:o})).items||[]).map(u=>({name:u.name,type:u.type,description:u.description,registry:f,addCommandArgument:qs(u.name,f)}));a=a.concat(h);}r&&(a=Hs(a,{query:r,limit:a.length,keys:["name","description"]}));let c=n||0,p=s||a.length,l=a.length,m={pagination:{total:l,offset:c,limit:p,hasMore:c+p<l},items:a.slice(c,c+p)};return t.parse(m)}var Bs=z.object({name:z.string(),type:z.string().optional(),description:z.string().optional(),registry:z.string().optional(),addCommandArgument:z.string().optional()}).passthrough();function Hs(e,t){t={limit:100,threshold:-1e4,...t};let s=Us.go(t.query,e,{keys:t.keys,threshold:t.threshold,limit:t.limit}).map(n=>n.obj);return z.array(Bs).parse(s)}function Gs(e){try{return new URL(e),!0}catch{return false}}function qs(e,t){if(!Gs(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),u=t.substring(f).replace(/\bregistry\b/g,e);return x+u}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),c=i.substring(o),p=a.lastIndexOf("registry"),l=a;p!==-1&&(l=a.substring(0,p)+e+a.substring(p+8));let m=c.replace(/\bregistry\b/g,e);return n+l+m}
29
- export{Tt as $,j as A,ge as B,ue as C,St as D,It as E,bt as F,Le as G,Ot as H,Hi as I,is as J,io as K,ie as L,ye as M,Eo as N,oe as O,$ as P,H as Q,sa as R,Ht as S,Os as T,Xt as U,ot as V,Ks as W,Vs as X,Ka as Y,er as Z,Va as _,yt as a,Wa as aa,Js as b,Ve as ba,P as c,Ws as ca,hn as d,Ua as da,yn as e,Ma as ea,xn as f,Ms as fa,wn as g,Te as h,Ye as i,En as j,fr as k,dr as l,Et as m,Qe as n,V as o,Nn as p,$e as q,v as r,Q as s,b as t,J as u,fe as v,me as w,de as x,W as y,ee as z};//# sourceMappingURL=chunk-GJTZRXUG.js.map
30
- //# sourceMappingURL=chunk-GJTZRXUG.js.map
25
+ Suggestion:`),v.error(e.suggestion)),v.break(),process.exit(1)),e instanceof z.ZodError){v.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))v.error(`- ${P.info(t)}: ${r}`);v.break(),process.exit(1);}e instanceof Error&&(v.error(e.message),v.break(),process.exit(1)),v.break(),process.exit(1);}async function na(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=Q(`Updating ${P.info(s)}`,{silent:r.silent}).start(),i=await promises.readFile(t.resolvedPaths.tailwindConfig,"utf8"),o=await Ts(i,e,t);await promises.writeFile(t.resolvedPaths.tailwindConfig,o,"utf8"),n?.succeed();}async function Ts(e,t,r){let s=await Gt(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=As(n);return ks(n,{name:"darkMode",value:"class"},{quoteChar:i}),t.plugins?.forEach(o=>{Os(n,o);}),t.theme&&await js(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 js(e,t){e.getProperty("theme")||e.addPropertyAssignment({name:"theme",initializer:"{}"}),st(e);let s=(e.getPropertyOrThrow("theme")?.asKindOrThrow(SyntaxKind.PropertyAssignment)).getInitializer();if(s?.isKind(SyntaxKind.ObjectLiteralExpression)){let n=s.getText(),i=await $s(n),o=ae(i,t,{arrayMerge:(c,p)=>p}),a=Is(o).replace(/\'\.\.\.(.*)\'/g,"...$1").replace(/\'\"/g,"'").replace(/\"\'/g,"'").replace(/\'\[/g,"[").replace(/\]\'/g,"]").replace(/\'\\\'/g,"'").replace(/\\\'/g,"'").replace(/\\\'\'/g,"'").replace(/\'\'/g,"'");s.replaceWithText(a);}nt(e);}function Os(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 Gt(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 As(e){return e.getFirstDescendantByKind(SyntaxKind.StringLiteral)?.getQuoteKind()===QuoteKind.Single?"'":'"'}function st(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)?st(i.asKindOrThrow(SyntaxKind.ObjectLiteralExpression)):i&&i.isKind(SyntaxKind.ArrayLiteralExpression)&&qt(i.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));}}}function qt(e){let t=e.getElements();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.ObjectLiteralExpression))st(s.asKindOrThrow(SyntaxKind.ObjectLiteralExpression));else if(s.isKind(SyntaxKind.ArrayLiteralExpression))qt(s.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));else if(s.isKind(SyntaxKind.SpreadElement)){let n=s.getText();e.removeElement(r),e.insertElement(r,`"${n}"`);}}}function nt(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)?nt(i):i&&i.isKind(SyntaxKind.ArrayLiteralExpression)&&Jt(i.asKindOrThrow(SyntaxKind.ArrayLiteralExpression));}}}function Jt(e){let t=e.getElements();for(let r=0;r<t.length;r++){let s=t[r];if(s.isKind(SyntaxKind.ObjectLiteralExpression))nt(s.asKindOrThrow(SyntaxKind.ObjectLiteralExpression));else if(s.isKind(SyntaxKind.ArrayLiteralExpression))Jt(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 $s(e){let r=(await Gt(`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 Ge(n)}throw new Error("Invalid input: not an object literal")}function Ge(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]=Ge(r.getInitializer()):r.getInitializer()?.isKind(SyntaxKind.ArrayLiteralExpression)?t[s]=Yt(r.getInitializer()):t[s]=it(r.getInitializer());}return t}function Yt(e){let t=[];for(let r of e.getElements())r.isKind(SyntaxKind.ObjectLiteralExpression)?t.push(Ge(r.asKindOrThrow(SyntaxKind.ObjectLiteralExpression))):r.isKind(SyntaxKind.ArrayLiteralExpression)?t.push(Yt(r.asKindOrThrow(SyntaxKind.ArrayLiteralExpression))):t.push(it(r));return t}function it(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(it);case SyntaxKind.ObjectLiteralExpression:return Ge(e);default:return e.getText()}}function Qt(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 ve(e,t){let r={},s=[...e];if(!t?.registries)return ye({}),s;for(let n=0;n<s.length;n++){let i=oe(s[n],t);i&&(s[n]=i.url,Object.keys(i.headers).length>0&&(r[i.url]=i.headers));}return ye(r),s}async function Z(e,t,r={}){return await Promise.all(e.map(async n=>{if(Ue(n))return Bt(n);if(N(n)){let[a]=await k([n],r);try{return g.parse(a)}catch(c){throw new O(n,c)}}if(n.startsWith("@")&&t?.registries){let a=ve([n],t),[c]=await k(a,r);try{return g.parse(c)}catch(p){throw new O(n,p)}}let i=`styles/${t?.style??"new-york-v4"}/${n}.json`,[o]=await k([i],r);try{return g.parse(o)}catch(a){throw new O(n,a)}}))}g.extend({_source:z.string().optional()});async function er(e,t,r={}){try{r={useCache:!0,...r};let s=[],n=[],i=[],o=Array.from(new Set(e)),a=await Z(o,t,r),c=new Map;for(let d=0;d<a.length;d++)a[d]&&c.set(o[d],a[d]);for(let[d,E]of Array.from(c.entries())){let S={...E,_source:d};if(s.push(S),E.registryDependencies){let w=E.registryDependencies;if(t?.registries)w=ve(E.registryDependencies,t);else {let q=E.registryDependencies.filter(D=>D.startsWith("@"));if(q.length>0){let{registry:D}=te(q[0]);throw new W(D)}}let{items:T,registryNames:j}=await Re(w,t,r,new Set(o));n.push(...T),i.push(...j);}}if(s.push(...n),i.length>0){let d=Array.from(new Set(i)),E=d.filter(w=>!w.startsWith("@")),S=d.filter(w=>w.startsWith("@"));if(S.length>0){let w=await Z(S,t,r);for(let T=0;T<w.length;T++){let q={...w[T],_source:S[T]};s.push(q);}}if(E.length>0){let w=await tr();if(!w&&s.length===0)return null;if(w){E.includes("index")&&E.unshift("index");let T=[];for(let le of E){let Se=await Ls(le,t,r);T.push(...Se);}let j=Array.from(new Set(T)),q=await k(j,r),D=z.array(g).parse(q);s.push(...D);}}}if(!s.length)return null;if((o.includes("index")||i.includes("index"))&&t.tailwind.baseColor){let d=await Ns(t.tailwind.baseColor,t);d&&s.unshift(d);}let p=new Map;s.forEach(d=>{let E=d._source||d.name;p.set(d,E);}),s=zs(s,p),s.sort((d,E)=>d.type==="registry:theme"&&E.type!=="registry:theme"?-1:d.type!=="registry:theme"&&E.type==="registry:theme"?1:0);let l={};s.forEach(d=>{l=ae(l,d.tailwind??{});});let m$1={};s.forEach(d=>{m$1=ae(m$1,d.cssVars??{});});let f={};s.forEach(d=>{f=ae(f,d.css??{});});let x="";s.forEach(d=>{d.docs&&(x+=`${d.docs}
26
+ `);});let h={};s.forEach(d=>{h=ae(h,d.envVars??{});});let u=await zt(s.map(d=>d.files??[]),t),R=m.parse({dependencies:ae.all(s.map(d=>d.dependencies??[])),devDependencies:ae.all(s.map(d=>d.devDependencies??[])),files:u,tailwind:l,cssVars:m$1,css:f,docs:x});return Object.keys(h).length>0&&(R.envVars=h),R}catch(s){return H(s),null}}async function Re(e,t,r={},s=new Set){let n=[],i=[];for(let o of e)if(!s.has(o)){if(s.add(o),N(o)||Ue(o)){let[a]=await Z([o],t,r);if(a&&(n.push(a),a.registryDependencies)){let c=t?.registries?ve(a.registryDependencies,t):a.registryDependencies,p=await Re(c,t,r,s);n.push(...p.items),i.push(...p.registryNames);}}else if(o.startsWith("@")&&t?.registries){let{registry:a}=te(o);if(a&&!(a in t.registries))throw new W(a);let[c]=await Z([o],t,r);if(c&&(n.push(c),c.registryDependencies)){let p=t?.registries?ve(c.registryDependencies,t):c.registryDependencies,l=await Re(p,t,r,s);n.push(...l.items),i.push(...l.registryNames);}}else if(i.push(o),t)try{let[a]=await Z([o],t,r);if(a&&a.registryDependencies){let c=t?.registries?ve(a.registryDependencies,t):a.registryDependencies,p=await Re(c,t,r,s);n.push(...p.items),i.push(...p.registryNames);}}catch{}}return {items:n,registryNames:i}}async function Ls(e,t,r={}){if(N(e))return [e];let{registryNames:s}=await Re([e],t,r,new Set),n=t.resolvedPaths?.cwd?await Et(t.resolvedPaths.cwd,t.style):t.style,i=s.map(o=>He(N(o)?o:`styles/${n}/${o}.json`));return Array.from(new Set(i))}async function Ns(e,t){let[r,s]=await Promise.all([We(e),Fe(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,...Qt(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 G(e,t){let r=t||e.name,s=createHash("sha256").update(r).digest("hex").substring(0,8);return `${e.name}::${s}`}function Ds(e){if(N(e)){let s=new URL(e).pathname,n=s.match(/\/([^/]+)\.json$/),i=n?n[1]:y__default.basename(s,".json");return {name:i,hash:G({name:i},e)}}if(Ue(e)){let r=e.match(/\/([^/]+)\.json$/),s=r?r[1]:y__default.basename(e,".json");return {name:s,hash:G({name:s},e)}}let{item:t}=te(e);return {name:t,hash:G({name:t},e)}}function zs(e,t){let r=new Map,s=new Map,n=new Map,i=new Map;e.forEach(p=>{let l=t.get(p)||p.name,m=G(p,l);r.set(m,p),s.set(m,p),n.set(m,0),i.set(m,[]);});let o=new Map;e.forEach(p=>{let l=t.get(p)||p.name,m=G(p,l);o.has(p.name)||o.set(p.name,[]),o.get(p.name).push(m),l!==p.name&&(o.has(l)||o.set(l,[]),o.get(l).push(m));}),e.forEach(p=>{let l=t.get(p)||p.name,m=G(p,l);p.registryDependencies&&p.registryDependencies.forEach(f=>{let x,h=o.get(f)||[];if(h.length===1)x=h[0];else if(h.length>1)x=h[0];else {let{name:u}=Ds(f),R=o.get(u)||[];R.length>0&&(x=R[0]);}x&&r.has(x)&&(i.get(x).push(m),n.set(m,n.get(m)+1));});});let a=[],c=[];for(n.forEach((p,l)=>{p===0&&a.push(l);});a.length>0;){let p=a.shift(),l=r.get(p);c.push(l),i.get(p).forEach(m=>{let f=n.get(m)-1;n.set(m,f),f===0&&a.push(m);});}if(c.length!==e.length){console.warn("Circular dependency detected in registry items");let p=new Set(c.map(l=>{let m=t.get(l)||l.name;return G(l,m)}));e.forEach(l=>{let m=t.get(l)||l.name,f=G(l,m);p.has(f)||c.push(l);});}return c}async function ot(e,t){let{config:r,useCache:s}=t||{};if(N(e)){let[a]=await k([e],{useCache:s});try{return h.parse(a)}catch(c){throw new O(e,c)}}if(!e.startsWith("@"))throw new he(e);let n=e;n.endsWith("/registry")||(n=`${n}/registry`);let i=oe(n,ie(r));if(!i?.url)throw new J(n);i.headers&&Object.keys(i.headers).length>0&&ye({[i.url]:i.headers});let[o]=await k([i.url],{useCache:s});try{return h.parse(o)}catch(a){throw new O(n,a)}}async function Vs(e,t){let{config:r,useCache:s=false}=t||{};return xe(),Z(e,ie(r),{useCache:s})}async function Ws(e,t){let{config:r,useCache:s=false}=t||{};return xe(),er(e,ie(r),{useCache:s})}async function Ka(e,t){let{useCache:r=true}=t||{};r||Te.clearCaches();let s=await Te.search(e);if(!s)return {registries:K};let n=z.object({registries:o.optional()}).safeParse(s.config);if(!n.success)throw new Pe(e,n.error);return {registries:{...K,...n.data.registries||{}}}}async function tr(){try{let[e]=await k(["index.json"]);return i.parse(e)}catch(e){v.error(`
27
+ `),H(e);}}async function Va(){try{let[e]=await k(["styles/index.json"]);return j.parse(e)}catch(e){return v.error(`
28
+ `),H(e),[]}}async function kt(){try{let[e]=await k(["icons/index.json"]);return k$1.parse(e)}catch(e){return H(e),{}}}async function Wa(){return xt}async function We(e){try{let[t]=await k([`colors/${e}.json`]);return l.parse(t)}catch(t){H(t);}}async function Us(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 Us(e,n.registryDependencies);r.push(...i);}}return r.filter((s,n,i)=>i.findIndex(o=>o.name===s.name)===n)}async function Ua(e,t){try{let r=t.map(n=>`styles/${e}/${n.name}.json`);return (await k(r)).map(n=>g.parse(n))}catch(r){return H(r),[]}}async function Ma(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 Ba(){try{let e=`${ce}/registries.json`,[t]=await k([e],{useCache:process.env.NODE_ENV!=="development"});return u.parse(t)}catch{return null}}async function Bs(e,t$1){let{query:r,limit:s,offset:n,config:i,useCache:o}=t$1||{},a=[];for(let f of e){let h=((await ot(f,{config:i,useCache:o})).items||[]).map(u=>({name:u.name,type:u.type,description:u.description,registry:f,addCommandArgument:Js(u.name,f)}));a=a.concat(h);}r&&(a=Gs(a,{query:r,limit:a.length,keys:["name","description"]}));let c=n||0,p=s||a.length,l=a.length,m={pagination:{total:l,offset:c,limit:p,hasMore:c+p<l},items:a.slice(c,c+p)};return t.parse(m)}var Hs=z.object({name:z.string(),type:z.string().optional(),description:z.string().optional(),registry:z.string().optional(),addCommandArgument:z.string().optional()}).passthrough();function Gs(e,t){t={limit:100,threshold:-1e4,...t};let s=Ms.go(t.query,e,{keys:t.keys,threshold:t.threshold,limit:t.limit}).map(n=>n.obj);return z.array(Hs).parse(s)}function qs(e){try{return new URL(e),!0}catch{return false}}function Js(e,t){if(!qs(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),u=t.substring(f).replace(/\bregistry\b/g,e);return x+u}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),c=i.substring(o),p=a.lastIndexOf("registry"),l=a;p!==-1&&(l=a.substring(0,p)+e+a.substring(p+8));let m=c.replace(/\bregistry\b/g,e);return n+l+m}
29
+ export{tr as $,ee as A,O as B,ue as C,he as D,te as E,It as F,bt as G,Pt as H,Ne as I,At as J,Gi as K,os as L,oo as M,ie as N,xe as O,vo as P,oe as Q,k as R,H as S,na as T,Gt as U,As as V,er as W,ot as X,Vs as Y,Ws as Z,Ka as _,xt as a,Va as aa,K as b,kt as ba,Ys as c,Wa as ca,P as d,We as da,yn as e,Us as ea,xn as f,Ua as fa,wn as g,Ma as ga,En as h,Ba as ha,ke as i,Bs as ia,Ye as j,vn as k,mr as l,gr as m,vt as n,Qe as o,V as p,Dn as q,Fe as r,v as s,Q as t,b as u,J as v,me as w,de as x,ge as y,W as z};//# sourceMappingURL=chunk-BC5KPHSQ.js.map
30
+ //# sourceMappingURL=chunk-BC5KPHSQ.js.map