shadcn 4.20.1 → 4.21.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,4 +1,4 @@
1
- import {c as c$2}from'./chunk-2XFBGS5K.js';import {m,f,l,b,d as d$1,c as c$1,e,n,v,q as q$1,r,s,t,u,A as A$1,C,y,p,g}from'./chunk-4WBGNKSZ.js';import {a,d,c,b as b$1,g as g$1,f as f$1}from'./chunk-7SBJAAAY.js';import pa,{promises,existsSync,statSync}from'fs';import*as S from'path';import S__default,{join,basename,normalize,delimiter,resolve,dirname}from'path';import {z as z$1}from'zod';import {green,cyan,yellow,red,gray}from'kleur/colors';import te from'fs-extra';import Jt from'fast-glob';import {loadConfig,createMatchPath}from'tsconfig-paths';import {cosmiconfig}from'cosmiconfig';import gp,{tmpdir,homedir}from'os';import Kc from'ora';import {Project,SyntaxKind,ScriptKind,VariableDeclarationKind,QuoteKind}from'ts-morph';import {transformFromAstSync}from'@babel/core';import {parse}from'@babel/parser';import tl from'@babel/plugin-transform-typescript';import*as rr from'recast';import gl from'prompts';import {AsyncLocalStorage}from'async_hooks';import Xe from'deepmerge';import {createHash}from'crypto';import {SocksClient}from'socks';import {EnvHttpProxyAgent,Agent}from'undici';import {execa}from'execa';import af from'stringify-object';import ae,{cwd}from'process';import ip from'readline';import mp from'events';import*as mo from'fs/promises';import mo__default from'fs/promises';import {createRequire}from'module';import {spawn}from'child_process';import {PassThrough}from'stream';import yp from'tty';import O from'postcss';import Id from'postcss/lib/at-rule';import {twMerge}from'tailwind-merge';import Th from'fuzzysort';var je=process.env.REGISTRY_URL??"https://ui.shadcn.com/r",V=je.replace(/\/r\/?$/,""),Ft="new-york-v4",jn=[{name:"neutral",label:"Neutral"},{name:"zinc",label:"Zinc"},{name:"stone",label:"Stone"},{name:"mauve",label:"Mauve"},{name:"olive",label:"Olive"},{name:"mist",label:"Mist"},{name:"taupe",label:"Taupe"}],q={"@shadcn":`${je}/styles/{style}/{name}.json`};var rm=[{name:"toast",deprecatedBy:"sonner",message:"The toast component is only available for Base UI projects. Use the sonner component instead.",availableIn:["base"]},{name:"toaster",deprecatedBy:"sonner",message:"The toaster component is deprecated. Use the sonner component instead."}],sm=[{name:"sonner",hiddenIn:["base"]}];var G={NETWORK_ERROR:"NETWORK_ERROR",NOT_FOUND:"NOT_FOUND",GONE:"GONE",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"},F=class extends Error{code;statusCode;context;suggestion;timestamp;cause;constructor(t,r={}){super(t),this.name="RegistryError",this.code=r.code||G.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}}},_e=class extends F{constructor(r,s){let n=`The item at ${r} was not found. It may not exist at the registry.`;super(n,{code:G.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";}},Mt=class extends F{constructor(r,s){let n=`The item at ${r} is no longer available. It may have been removed or expired.`;super(n,{code:G.GONE,statusCode:410,cause:s,context:{url:r},suggestion:"This resource was previously available but has been permanently removed. Check if a newer version exists or contact the registry maintainer."});this.url=r;this.name="RegistryGoneError";}},it=class extends F{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:G.UNAUTHORIZED,statusCode:401,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryUnauthorizedError";}},ot=class extends F{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:G.FORBIDDEN,statusCode:403,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryForbiddenError";}},at=class extends F{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:G.FETCH_ERROR,statusCode:s,cause:i,context:{url:r,responseBody:n},suggestion:c});this.url=r;this.responseBody=n;this.name="RegistryFetchError";}},ge=class extends F{constructor(r){let s=r?`Unknown registry "${r}". Make sure it is defined under "registries" in your components.json or package.json file:
1
+ import {c as c$2}from'./chunk-2XFBGS5K.js';import {m,f,l,b,d as d$1,c as c$1,e,n,v,q as q$1,r,s,t,u,A as A$1,C,y,p,g}from'./chunk-4WBGNKSZ.js';import {a,d,c,b as b$1,g as g$1,f as f$1}from'./chunk-G5AI2VJ6.js';import pa,{promises,existsSync,statSync}from'fs';import*as S from'path';import S__default,{join,basename,normalize,delimiter,resolve,dirname}from'path';import {z as z$1}from'zod';import {green,cyan,yellow,red,gray}from'kleur/colors';import te from'fs-extra';import Jt from'fast-glob';import {loadConfig,createMatchPath}from'tsconfig-paths';import {cosmiconfig}from'cosmiconfig';import gp,{tmpdir,homedir}from'os';import Kc from'ora';import {Project,SyntaxKind,ScriptKind,VariableDeclarationKind,QuoteKind}from'ts-morph';import {transformFromAstSync}from'@babel/core';import {parse}from'@babel/parser';import tl from'@babel/plugin-transform-typescript';import*as rr from'recast';import gl from'prompts';import {AsyncLocalStorage}from'async_hooks';import Xe from'deepmerge';import {createHash}from'crypto';import {SocksClient}from'socks';import {EnvHttpProxyAgent,Agent}from'undici';import {execa}from'execa';import af from'stringify-object';import ae,{cwd}from'process';import ip from'readline';import mp from'events';import*as mo from'fs/promises';import mo__default from'fs/promises';import {createRequire}from'module';import {spawn}from'child_process';import {PassThrough}from'stream';import yp from'tty';import O from'postcss';import Id from'postcss/lib/at-rule';import {twMerge}from'cn';import Th from'fuzzysort';var je=process.env.REGISTRY_URL??"https://ui.shadcn.com/r",V=je.replace(/\/r\/?$/,""),Ft="new-york-v4",jn=[{name:"neutral",label:"Neutral"},{name:"zinc",label:"Zinc"},{name:"stone",label:"Stone"},{name:"mauve",label:"Mauve"},{name:"olive",label:"Olive"},{name:"mist",label:"Mist"},{name:"taupe",label:"Taupe"}],q={"@shadcn":`${je}/styles/{style}/{name}.json`};var rm=[{name:"toast",deprecatedBy:"sonner",message:"The toast component is only available for Base UI projects. Use the sonner component instead.",availableIn:["base"]},{name:"toaster",deprecatedBy:"sonner",message:"The toaster component is deprecated. Use the sonner component instead."}],sm=[{name:"sonner",hiddenIn:["base"]}];var G={NETWORK_ERROR:"NETWORK_ERROR",NOT_FOUND:"NOT_FOUND",GONE:"GONE",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"},F=class extends Error{code;statusCode;context;suggestion;timestamp;cause;constructor(t,r={}){super(t),this.name="RegistryError",this.code=r.code||G.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}}},_e=class extends F{constructor(r,s){let n=`The item at ${r} was not found. It may not exist at the registry.`;super(n,{code:G.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";}},Mt=class extends F{constructor(r,s){let n=`The item at ${r} is no longer available. It may have been removed or expired.`;super(n,{code:G.GONE,statusCode:410,cause:s,context:{url:r},suggestion:"This resource was previously available but has been permanently removed. Check if a newer version exists or contact the registry maintainer."});this.url=r;this.name="RegistryGoneError";}},it=class extends F{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:G.UNAUTHORIZED,statusCode:401,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryUnauthorizedError";}},ot=class extends F{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:G.FORBIDDEN,statusCode:403,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryForbiddenError";}},at=class extends F{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:G.FETCH_ERROR,statusCode:s,cause:i,context:{url:r,responseBody:n},suggestion:c});this.url=r;this.responseBody=n;this.name="RegistryFetchError";}},ge=class extends F{constructor(r){let s=r?`Unknown registry "${r}". Make sure it is defined under "registries" in your components.json or package.json file:
2
2
  {
3
3
  "registries": {
4
4
  "${r}": "[URL_TO_REGISTRY]"
@@ -91,7 +91,7 @@ Filtered results for: ${this.inputValue?this.inputValue:e.gray("Enter something
91
91
  `}renderOption(c,f,l,u){let d=(f.selected?e.green(i.radioOn):i.radioOff)+" "+u+" ",p;return f.disabled?p=c===l?e.gray().underline(f.title):e.strikethrough().gray(f.title):p=c===l?e.cyan().underline(f.title):f.title,d+p}renderDoneOrInstructions(){if(this.done)return this.value.filter(f=>f.selected).map(f=>f.title).join(", ");let c=[e.gray(this.hint),this.renderInstructions(),this.renderCurrentInput()];return this.filteredOptions.length&&this.filteredOptions[this.cursor].disabled&&c.push(e.yellow(this.warn)),c.join(" ")}render(){if(this.closed)return;this.firstRender&&this.out.write(t.hide),super.render();let c=[n.symbol(this.done,this.aborted),e.bold(this.msg),n.delimiter(false),this.renderDoneOrInstructions()].join(" ");this.showMinError&&(c+=e.red(`You must select a minimum of ${this.minSelected} choices.`),this.showMinError=false),c+=this.renderOptions(this.filteredOptions),this.out.write(this.clear+c),this.clear=s(c,this.out.columns);}}return Ds=o,Ds}var Ls,Zo;function Wp(){if(Zo)return Ls;Zo=1;let e=se(),t=ke(),{style:r,clear:s}=ce(),{erase:n,cursor:i}=ne();class o extends t{constructor(c={}){super(c),this.msg=c.message,this.value=c.initial,this.initialValue=!!c.initial,this.yesMsg=c.yes||"yes",this.yesOption=c.yesOption||"(Y/n)",this.noMsg=c.no||"no",this.noOption=c.noOption||"(y/N)",this.render();}reset(){this.value=this.initialValue,this.fire(),this.render();}exit(){this.abort();}abort(){this.done=this.aborted=true,this.fire(),this.render(),this.out.write(`
92
92
  `),this.close();}submit(){this.value=this.value||false,this.done=true,this.aborted=false,this.fire(),this.render(),this.out.write(`
93
93
  `),this.close();}_(c,f){return c.toLowerCase()==="y"?(this.value=true,this.submit()):c.toLowerCase()==="n"?(this.value=false,this.submit()):this.bell()}render(){this.closed||(this.firstRender?this.out.write(i.hide):this.out.write(s(this.outputText,this.out.columns)),super.render(),this.outputText=[r.symbol(this.done,this.aborted),e.bold(this.msg),r.delimiter(this.done),this.done?this.value?this.yesMsg:this.noMsg:e.gray(this.initialValue?this.yesOption:this.noOption)].join(" "),this.out.write(n.line+i.to(0)+this.outputText));}}return Ls=o,Ls}var Hs,Xo;function zp(){return Xo||(Xo=1,Hs={TextPrompt:kp(),SelectPrompt:Tp(),TogglePrompt:$p(),DatePrompt:Lp(),NumberPrompt:Hp(),MultiselectPrompt:ma(),AutocompletePrompt:Gp(),AutocompleteMultiselectPrompt:Vp(),ConfirmPrompt:Wp()}),Hs}var Qo;function Up(){return Qo||(Qo=1,(function(e){let t=e,r=zp(),s=o=>o;function n(o,a,c={}){return new Promise((f,l)=>{let u=new r[o](a),d=c.onAbort||s,p=c.onSubmit||s,h=c.onExit||s;u.on("state",a.onState||s),u.on("submit",m=>f(p(m))),u.on("exit",m=>f(h(m))),u.on("abort",m=>l(d(m)));})}t.text=o=>n("TextPrompt",o),t.password=o=>(o.style="password",t.text(o)),t.invisible=o=>(o.style="invisible",t.text(o)),t.number=o=>n("NumberPrompt",o),t.date=o=>n("DatePrompt",o),t.confirm=o=>n("ConfirmPrompt",o),t.list=o=>{let a=o.separator||",";return n("TextPrompt",o,{onSubmit:c=>c.split(a).map(f=>f.trim())})},t.toggle=o=>n("TogglePrompt",o),t.select=o=>n("SelectPrompt",o),t.multiselect=o=>{o.choices=[].concat(o.choices||[]);let a=c=>c.filter(f=>f.selected).map(f=>f.value);return n("MultiselectPrompt",o,{onAbort:a,onSubmit:a})},t.autocompleteMultiselect=o=>{o.choices=[].concat(o.choices||[]);let a=c=>c.filter(f=>f.selected).map(f=>f.value);return n("AutocompleteMultiselectPrompt",o,{onAbort:a,onSubmit:a})};let i=(o,a)=>Promise.resolve(a.filter(c=>c.title.slice(0,o.length).toLowerCase()===o.toLowerCase()));t.autocomplete=o=>(o.suggest=o.suggest||i,o.choices=[].concat(o.choices||[]),n("AutocompletePrompt",o));})(cs)),cs}var Gs,ea;function Kp(){if(ea)return Gs;ea=1;let e=Up(),t=["suggest","format","onState","validate","onRender","type"],r=()=>{};async function s(a=[],{onSubmit:c=r,onCancel:f=r}={}){let l={},u=s._override||{};a=[].concat(a);let d,p,h,m,g,x,y=async(w,b,v=false)=>{if(!(!v&&w.validate&&w.validate(b)!==true))return w.format?await w.format(b,l):b};for(p of a)if({name:m,type:g}=p,typeof g=="function"&&(g=await g(d,{...l},p),p.type=g),!!g){for(let w in p){if(t.includes(w))continue;let b=p[w];p[w]=typeof b=="function"?await b(d,{...l},x):b;}if(x=p,typeof p.message!="string")throw new Error("prompt message is required");if({name:m,type:g}=p,e[g]===void 0)throw new Error(`prompt type (${g}) is not defined`);if(u[p.name]!==void 0&&(d=await y(p,u[p.name]),d!==void 0)){l[m]=d;continue}try{d=s._injected?n(s._injected,p.initial):await e[g](p),l[m]=d=await y(p,d,!0),h=await c(p,d,l);}catch{h=!await f(p,l);}if(h)return l}return l}function n(a,c){let f=a.shift();if(f instanceof Error)throw f;return f===void 0?c:f}function i(a){s._injected=(s._injected||[]).concat(a);}function o(a){s._override=Object.assign({},a);}return Gs=Object.assign(s,{prompt:s,prompts:e,inject:i,override:o}),Gs}var Vs,ta;function Bp(){return ta||(ta=1,Vs=Kp()),Vs}var qp=Bp(),Jp=qs(qp),Ys=globalThis.window?.document!==void 0;globalThis.process?.versions?.node;globalThis.process?.versions?.bun;globalThis.Deno?.version?.deno;globalThis.process?.versions?.electron;globalThis.navigator?.userAgent?.includes("jsdom");typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;typeof DedicatedWorkerGlobalScope<"u"&&globalThis instanceof DedicatedWorkerGlobalScope;typeof SharedWorkerGlobalScope<"u"&&globalThis instanceof SharedWorkerGlobalScope;typeof ServiceWorkerGlobalScope<"u"&&globalThis instanceof ServiceWorkerGlobalScope;var xr=globalThis.navigator?.userAgentData?.platform;xr==="macOS"||globalThis.navigator?.platform==="MacIntel"||globalThis.navigator?.userAgent?.includes(" Mac ")===true||globalThis.process?.platform;xr==="Windows"||globalThis.navigator?.platform==="Win32"||globalThis.process?.platform;xr==="Linux"||globalThis.navigator?.platform?.startsWith("Linux")===true||globalThis.navigator?.userAgent?.includes(" Linux ")===true||globalThis.process?.platform;xr==="Android"||globalThis.navigator?.platform==="Android"||globalThis.navigator?.userAgent?.includes(" Android ")===true||globalThis.process?.platform;var ra="\x1B]",sa="\x07",wr=";";!Ys&&ae.env.TERM_PROGRAM;!Ys&&ae.platform;Ys||ae.cwd;var Yp=(e,t)=>[ra,"8",wr,wr,t,sa,e,ra,"8",wr,wr,sa].join(""),Ws,na;function ga(){return na||(na=1,Ws=(e,t=process.argv)=>{let r=e.startsWith("-")?"":e.length===1?"-":"--",s=t.indexOf(r+e),n=t.indexOf("--");return s!==-1&&(n===-1||s<n)}),Ws}var zs,ia;function Zp(){if(ia)return zs;ia=1;let e=gp,t=yp,r=ga(),{env:s}=process,n;r("no-color")||r("no-colors")||r("color=false")||r("color=never")?n=0:(r("color")||r("colors")||r("color=true")||r("color=always"))&&(n=1),"FORCE_COLOR"in s&&(s.FORCE_COLOR==="true"?n=1:s.FORCE_COLOR==="false"?n=0:n=s.FORCE_COLOR.length===0?1:Math.min(parseInt(s.FORCE_COLOR,10),3));function i(c){return c===0?false:{level:c,hasBasic:true,has256:c>=2,has16m:c>=3}}function o(c,f){if(n===0)return 0;if(r("color=16m")||r("color=full")||r("color=truecolor"))return 3;if(r("color=256"))return 2;if(c&&!f&&n===void 0)return 0;let l=n||0;if(s.TERM==="dumb")return l;if(process.platform==="win32"){let u=e.release().split(".");return Number(u[0])>=10&&Number(u[2])>=10586?Number(u[2])>=14931?3:2:1}if("CI"in s)return ["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(u=>u in s)||s.CI_NAME==="codeship"?1:l;if("TEAMCITY_VERSION"in s)return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(s.TEAMCITY_VERSION)?1:0;if(s.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in s){let u=parseInt((s.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(s.TERM_PROGRAM){case "iTerm.app":return u>=3?3:2;case "Apple_Terminal":return 2}}return /-256(color)?$/i.test(s.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(s.TERM)||"COLORTERM"in s?1:l}function a(c){let f=o(c,c&&c.isTTY);return i(f)}return zs={supportsColor:a,stdout:i(o(true,t.isatty(1))),stderr:i(o(true,t.isatty(2)))},zs}var Us,oa;function Xp(){if(oa)return Us;oa=1;let e=Zp(),t=ga();function r(n){if(/^\d{3,4}$/.test(n)){let o=/(\d{1,2})(\d{2})/.exec(n)||[];return {major:0,minor:parseInt(o[1],10),patch:parseInt(o[2],10)}}let i=(n||"").split(".").map(o=>parseInt(o,10));return {major:i[0],minor:i[1],patch:i[2]}}function s(n){let{CI:i,FORCE_HYPERLINK:o,NETLIFY:a,TEAMCITY_VERSION:c,TERM_PROGRAM:f,TERM_PROGRAM_VERSION:l,VTE_VERSION:u,TERM:d}=process.env;if(o)return !(o.length>0&&parseInt(o,10)===0);if(t("no-hyperlink")||t("no-hyperlinks")||t("hyperlink=false")||t("hyperlink=never"))return false;if(t("hyperlink=true")||t("hyperlink=always")||a)return true;if(!e.supportsColor(n)||n&&!n.isTTY)return false;if("WT_SESSION"in process.env)return true;if(process.platform==="win32"||i||c)return false;if(f){let p=r(l||"");switch(f){case "iTerm.app":return p.major===3?p.minor>=1:p.major>3;case "WezTerm":return p.major>=20200620;case "vscode":return p.major>1||p.major===1&&p.minor>=72;case "ghostty":return true}}if(u){if(u==="0.50.0")return false;let p=r(u);return p.major>0||p.minor>=50}switch(d){case "alacritty":return true}return false}return Us={supportsHyperlink:s,stdout:s(process.stdout),stderr:s(process.stderr)},Us}var Qp=Xp(),Zs=qs(Qp);function Ct(e,t,{target:r="stdout",...s}={}){return Zs[r]?Yp(e,t):s.fallback===false?e:typeof s.fallback=="function"?s.fallback(e,t):`${e} (\u200B${t}\u200B)`}Ct.isSupported=Zs.stdout;Ct.stderr=(e,t,r={})=>Ct(e,t,{target:"stderr",...r});Ct.stderr.isSupported=Zs.stderr;var re={},Le={},aa;function ed(){if(aa)return Le;aa=1,Object.defineProperty(Le,"__esModule",{value:true}),Le.sync=Le.isexe=void 0;let e=pa,t=mo__default,r=async(o,a={})=>{let{ignoreErrors:c=false}=a;try{return n(await(0,t.stat)(o),a)}catch(f){let l=f;if(c||l.code==="EACCES")return false;throw l}};Le.isexe=r;let s=(o,a={})=>{let{ignoreErrors:c=false}=a;try{return n((0,e.statSync)(o),a)}catch(f){let l=f;if(c||l.code==="EACCES")return false;throw l}};Le.sync=s;let n=(o,a)=>o.isFile()&&i(o,a),i=(o,a)=>{let c=a.uid??process.getuid?.(),f=a.groups??process.getgroups?.()??[],l=a.gid??process.getgid?.()??f[0];if(c===void 0||l===void 0)throw new Error("cannot get uid or gid");let u=new Set([l,...f]),d=o.mode,p=o.uid,h=o.gid,m=parseInt("100",8),g=parseInt("010",8),x=parseInt("001",8),y=m|g;return !!(d&x||d&g&&u.has(h)||d&m&&p===c||d&y&&c===0)};return Le}var He={},ca;function td(){if(ca)return He;ca=1,Object.defineProperty(He,"__esModule",{value:true}),He.sync=He.isexe=void 0;let e=pa,t=mo__default,r=async(o,a={})=>{let{ignoreErrors:c=false}=a;try{return i(await(0,t.stat)(o),o,a)}catch(f){let l=f;if(c||l.code==="EACCES")return false;throw l}};He.isexe=r;let s=(o,a={})=>{let{ignoreErrors:c=false}=a;try{return i((0,e.statSync)(o),o,a)}catch(f){let l=f;if(c||l.code==="EACCES")return false;throw l}};He.sync=s;let n=(o,a)=>{let{pathExt:c=process.env.PATHEXT||""}=a,f=c.split(";");if(f.indexOf("")!==-1)return true;for(let l=0;l<f.length;l++){let u=f[l].toLowerCase(),d=o.substring(o.length-u.length).toLowerCase();if(u&&d===u)return true}return false},i=(o,a,c)=>o.isFile()&&n(a,c);return He}var Ks={},la;function rd(){return la||(la=1,Object.defineProperty(Ks,"__esModule",{value:true})),Ks}var ua;function sd(){return ua||(ua=1,(function(e){var t=re&&re.__createBinding||(Object.create?(function(f,l,u,d){d===void 0&&(d=u);var p=Object.getOwnPropertyDescriptor(l,u);(!p||("get"in p?!l.__esModule:p.writable||p.configurable))&&(p={enumerable:true,get:function(){return l[u]}}),Object.defineProperty(f,d,p);}):(function(f,l,u,d){d===void 0&&(d=u),f[d]=l[u];})),r=re&&re.__setModuleDefault||(Object.create?(function(f,l){Object.defineProperty(f,"default",{enumerable:true,value:l});}):function(f,l){f.default=l;}),s=re&&re.__importStar||function(f){if(f&&f.__esModule)return f;var l={};if(f!=null)for(var u in f)u!=="default"&&Object.prototype.hasOwnProperty.call(f,u)&&t(l,f,u);return r(l,f),l},n=re&&re.__exportStar||function(f,l){for(var u in f)u!=="default"&&!Object.prototype.hasOwnProperty.call(l,u)&&t(l,f,u);};Object.defineProperty(e,"__esModule",{value:true}),e.sync=e.isexe=e.posix=e.win32=void 0;let i=s(ed());e.posix=i;let o=s(td());e.win32=o,n(rd(),e);let c=(process.env._ISEXE_TEST_PLATFORM_||process.platform)==="win32"?o:i;e.isexe=c.isexe,e.sync=c.sync;})(re)),re}var Bs,fa;function nd(){if(fa)return Bs;fa=1;let{isexe:e,sync:t}=sd(),{join:r,delimiter:s,sep:n,posix:i}=S__default,o=process.platform==="win32",a=new RegExp(`[${i.sep}${n===i.sep?"":n}]`.replace(/(\\)/g,"\\$1")),c=new RegExp(`^\\.${a.source}`),f=h=>Object.assign(new Error(`not found: ${h}`),{code:"ENOENT"}),l=(h,{path:m=process.env.PATH,pathExt:g=process.env.PATHEXT,delimiter:x=s})=>{let y=h.match(a)?[""]:[...o?[process.cwd()]:[],...(m||"").split(x)];if(o){let w=g||[".EXE",".CMD",".BAT",".COM"].join(x),b=w.split(x).flatMap(v=>[v,v.toLowerCase()]);return h.includes(".")&&b[0]!==""&&b.unshift(""),{pathEnv:y,pathExt:b,pathExtExe:w}}return {pathEnv:y,pathExt:[""]}},u=(h,m)=>{let g=/^".*"$/.test(h)?h.slice(1,-1):h;return (!g&&c.test(m)?m.slice(0,2):"")+r(g,m)},d=async(h,m={})=>{let{pathEnv:g,pathExt:x,pathExtExe:y}=l(h,m),w=[];for(let b of g){let v=u(b,h);for(let R of x){let I=v+R;if(await e(I,{pathExt:y,ignoreErrors:true})){if(!m.all)return I;w.push(I);}}}if(m.all&&w.length)return w;if(m.nothrow)return null;throw f(h)},p=(h,m={})=>{let{pathEnv:g,pathExt:x,pathExtExe:y}=l(h,m),w=[];for(let b of g){let v=u(b,h);for(let R of x){let I=v+R;if(t(I,{pathExt:y,ignoreErrors:true})){if(!m.all)return I;w.push(I);}}}if(m.all&&w.length)return w;if(m.nothrow)return null;throw f(h)};return Bs=d,d.sync=p,Bs}var id=nd(),od=qs(id);join(gp.tmpdir(),"antfu-ni");function ya(e){return od.sync(e,{nothrow:true})!==null}async function Xs({autoInstall:e,programmatic:t,cwd:r}={}){let{name:s,agent:n,version:i}=await is({cwd:r,onUnknown:o=>{t||console.warn("[ni] Unknown packageManager:",o);}})||{};if(s&&!ya(s)&&!t){if(!e){console.warn(`[ni] Detected ${s} but it doesn't seem to be installed.
94
- `),ae.env.CI&&ae.exit(1);let o=Ct(s,po[s]),{tryInstall:a}=await Jp({name:"tryInstall",type:"confirm",message:`Would you like to globally install ${o}?`});a||ae.exit(1);}await os("npm",["i","-g",`${s}${i?`@${i}`:""}`],{nodeOptions:{stdio:"inherit",cwd:r},throwOnError:true});}return n}ae.env.NI_CONFIG_FILE;var cd=ae.platform==="win32"?ae.env.USERPROFILE:ae.env.HOME;S__default.join(cd||"~/",".nirc");async function kt(e,{withFallback:t}={withFallback:false}){let r=await Xs({programmatic:true,cwd:e});return r==="yarn@berry"?"yarn":r==="pnpm@6"?"pnpm":r==="bun"?"bun":r==="deno"?"deno":t?Qs()??"npm":r??"npm"}function Qs(e=process.env.npm_config_user_agent||""){return e.startsWith("yarn")?"yarn":e.startsWith("pnpm")?"pnpm":e.startsWith("bun")?"bun":e.startsWith("deno")?"deno":e.startsWith("npm")?"npm":null}function en(e){return e==="pnpm"?"pnpm dlx":e==="bun"?"bunx":"npx"}async function Iv(e){let t=await kt(e);return en(t)}var wa={name:"shadcn",version:"4.20.1",description:"Add components to your apps.",homepage:"https://ui.shadcn.com",publishConfig:{access:"public"},license:"MIT",author:{name:"shadcn",url:"https://twitter.com/shadcn"},repository:{type:"git",url:"https://github.com/shadcn-ui/ui.git",directory:"packages/shadcn"},files:["dist"],keywords:["components","ui","tailwind","radix-ui","base-ui","shadcn"],type:"module",exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.js"},"./registry":{types:"./dist/registry/index.d.ts",default:"./dist/registry/index.js"},"./schema":{types:"./dist/schema/index.d.ts",default:"./dist/schema/index.js"},"./mcp":{types:"./dist/mcp/index.d.ts",default:"./dist/mcp/index.js"},"./utils":{types:"./dist/utils/index.d.ts",default:"./dist/utils/index.js"},"./icons":{types:"./dist/icons/index.d.ts",default:"./dist/icons/index.js"},"./preset":{types:"./dist/preset/index.d.ts",default:"./dist/preset/index.js"},"./tailwind.css":"./dist/tailwind.css"},sideEffects:["./dist/tailwind.css"],bin:"./dist/index.js",engines:{node:">=20.18.1"},scripts:{dev:"tsup --watch",build:"tsup",typecheck:"tsc --noEmit",clean:"rimraf dist && rimraf components","start:dev":"cross-env REGISTRY_URL=http://localhost:4000/r SHADCN_TEMPLATE_DIR=../../templates node dist/index.js","start:prod":"cross-env REGISTRY_URL=https://ui.shadcn.com/r node dist/index.js",start:"node dist/index.js","format:write":'prettier --write "**/*.{ts,tsx,mdx}" --cache',"format:check":'prettier --check "**/*.{ts,tsx,mdx}" --cache',release:"changeset version","pub:beta":"pnpm build && pnpm publish --no-git-checks --access public --tag beta","pub:rc":"pnpm build && pnpm publish --no-git-checks --access public --tag rc","pub:next":"pnpm build && pnpm publish --no-git-checks --access public --tag next","pub:release":"pnpm build && pnpm publish --access public",test:"vitest run","test:dev":"REGISTRY_URL=http://localhost:4000/r SHADCN_TEMPLATE_DIR=../../templates vitest run","mcp:inspect":"pnpm dlx @modelcontextprotocol/inspector node dist/index.js mcp"},dependencies:{"@babel/core":"^7.28.0","@babel/parser":"^7.28.0","@babel/plugin-transform-typescript":"^7.28.0","@babel/preset-typescript":"^7.27.1","@dotenvx/dotenvx":"^1.48.4","@modelcontextprotocol/sdk":"^1.26.0","@types/validate-npm-package-name":"^4.0.2",browserslist:"^4.26.2",commander:"^14.0.0",cosmiconfig:"^9.0.0",dedent:"^1.6.0",deepmerge:"^4.3.1",diff:"^8.0.2",execa:"^9.6.0","fast-glob":"^3.3.3","fs-extra":"^11.3.1",fuzzysort:"^3.1.0",kleur:"^4.1.5",open:"^11.0.0",ora:"^8.2.0",postcss:"^8.5.6","postcss-selector-parser":"^7.1.0",prompts:"^2.4.2",recast:"^0.23.11",socks:"^2.8.8","stringify-object":"^5.0.0","tailwind-merge":"^3.0.1","ts-morph":"^26.0.0","tsconfig-paths":"^4.2.0",undici:"^7.27.2","validate-npm-package-name":"^7.0.1",zod:"^3.24.1","zod-to-json-schema":"^3.24.6"},devDependencies:{"@antfu/ni":"^25.0.0","@types/babel__core":"^7.20.5","@types/fs-extra":"^11.0.4","@types/prompts":"^2.4.9","@types/stringify-object":"^4.0.5",msw:"^2.10.4",rimraf:"^6.0.1",tsup:"^8.5.0","type-fest":"^4.41.0",typescript:"^5.9.2"}};function br(e){if(E.break(),E.error("Something went wrong. Please check the error below for more details."),E.error("If the problem persists, please open an issue on GitHub."),E.error(""),typeof e=="string"&&(E.error(e),Tt()),e instanceof F&&(e.message&&(E.error(e.cause?"Error:":"Message:"),E.error(e.message)),e.cause&&(E.error(`
94
+ `),ae.env.CI&&ae.exit(1);let o=Ct(s,po[s]),{tryInstall:a}=await Jp({name:"tryInstall",type:"confirm",message:`Would you like to globally install ${o}?`});a||ae.exit(1);}await os("npm",["i","-g",`${s}${i?`@${i}`:""}`],{nodeOptions:{stdio:"inherit",cwd:r},throwOnError:true});}return n}ae.env.NI_CONFIG_FILE;var cd=ae.platform==="win32"?ae.env.USERPROFILE:ae.env.HOME;S__default.join(cd||"~/",".nirc");async function kt(e,{withFallback:t}={withFallback:false}){let r=await Xs({programmatic:true,cwd:e});return r==="yarn@berry"?"yarn":r==="pnpm@6"?"pnpm":r==="bun"?"bun":r==="deno"?"deno":t?Qs()??"npm":r??"npm"}function Qs(e=process.env.npm_config_user_agent||""){return e.startsWith("yarn")?"yarn":e.startsWith("pnpm")?"pnpm":e.startsWith("bun")?"bun":e.startsWith("deno")?"deno":e.startsWith("npm")?"npm":null}function en(e){return e==="pnpm"?"pnpm dlx":e==="bun"?"bunx":"npx"}async function Iv(e){let t=await kt(e);return en(t)}var wa={name:"shadcn",version:"4.21.0",description:"Add components to your apps.",homepage:"https://ui.shadcn.com",publishConfig:{access:"public"},license:"MIT",author:{name:"shadcn",url:"https://twitter.com/shadcn"},repository:{type:"git",url:"https://github.com/shadcn-ui/ui.git",directory:"packages/shadcn"},files:["dist"],keywords:["components","ui","tailwind","radix-ui","base-ui","shadcn"],type:"module",exports:{".":{types:"./dist/index.d.ts",default:"./dist/index.js"},"./registry":{types:"./dist/registry/index.d.ts",default:"./dist/registry/index.js"},"./schema":{types:"./dist/schema/index.d.ts",default:"./dist/schema/index.js"},"./mcp":{types:"./dist/mcp/index.d.ts",default:"./dist/mcp/index.js"},"./utils":{types:"./dist/utils/index.d.ts",default:"./dist/utils/index.js"},"./icons":{types:"./dist/icons/index.d.ts",default:"./dist/icons/index.js"},"./preset":{types:"./dist/preset/index.d.ts",default:"./dist/preset/index.js"},"./tailwind.css":"./dist/tailwind.css"},sideEffects:["./dist/tailwind.css"],bin:"./dist/index.js",engines:{node:">=20.18.1"},scripts:{dev:"tsup --watch",build:"tsup",typecheck:"tsc --noEmit",clean:"rimraf dist && rimraf components","start:dev":"cross-env REGISTRY_URL=http://localhost:4000/r SHADCN_TEMPLATE_DIR=../../templates node dist/index.js","start:prod":"cross-env REGISTRY_URL=https://ui.shadcn.com/r node dist/index.js",start:"node dist/index.js","format:write":'prettier --write "**/*.{ts,tsx,mdx}" --cache',"format:check":'prettier --check "**/*.{ts,tsx,mdx}" --cache',release:"changeset version","pub:beta":"pnpm build && pnpm publish --no-git-checks --access public --tag beta","pub:rc":"pnpm build && pnpm publish --no-git-checks --access public --tag rc","pub:next":"pnpm build && pnpm publish --no-git-checks --access public --tag next","pub:release":"pnpm build && pnpm publish --access public",test:"vitest run","test:dev":"REGISTRY_URL=http://localhost:4000/r SHADCN_TEMPLATE_DIR=../../templates vitest run","mcp:inspect":"pnpm dlx @modelcontextprotocol/inspector node dist/index.js mcp"},dependencies:{"@babel/core":"^7.28.0","@babel/parser":"^7.28.0","@babel/plugin-transform-typescript":"^7.28.0","@babel/preset-typescript":"^7.27.1","@dotenvx/dotenvx":"^1.48.4","@modelcontextprotocol/sdk":"^1.26.0","@types/validate-npm-package-name":"^4.0.2",browserslist:"^4.26.2",cn:"^0.2.4",commander:"^14.0.0",cosmiconfig:"^9.0.0",dedent:"^1.6.0",deepmerge:"^4.3.1",diff:"^8.0.2",execa:"^9.6.0","fast-glob":"^3.3.3","fs-extra":"^11.3.1",fuzzysort:"^3.1.0",kleur:"^4.1.5",open:"^11.0.0",ora:"^8.2.0",postcss:"^8.5.6","postcss-selector-parser":"^7.1.0",prompts:"^2.4.2",recast:"^0.23.11",socks:"^2.8.8","stringify-object":"^5.0.0","ts-morph":"^26.0.0","tsconfig-paths":"^4.2.0",undici:"^7.27.2","validate-npm-package-name":"^7.0.1",zod:"^3.24.1","zod-to-json-schema":"^3.24.6"},devDependencies:{"@antfu/ni":"^25.0.0","@types/babel__core":"^7.20.5","@types/fs-extra":"^11.0.4","@types/prompts":"^2.4.9","@types/stringify-object":"^4.0.5",msw:"^2.10.4",rimraf:"^6.0.1",tsup:"^8.5.0","type-fest":"^4.41.0",typescript:"^5.9.2"}};function br(e){if(E.break(),E.error("Something went wrong. Please check the error below for more details."),E.error("If the problem persists, please open an issue on GitHub."),E.error(""),typeof e=="string"&&(E.error(e),Tt()),e instanceof F&&(e.message&&(E.error(e.cause?"Error:":"Message:"),E.error(e.message)),e.cause&&(E.error(`
95
95
  Message:`),E.error(e.cause)),e.suggestion&&(E.error(`
96
96
  Suggestion:`),E.error(e.suggestion)),Tt()),e instanceof z$1.ZodError){E.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))E.error(`- ${P.info(t)}: ${r}`);Tt();}e instanceof Error&&(E.error(e.message),Tt()),Tt();}function fd(e){let t=e.match(/^(\d+)\.(\d+)\.\d+/);if(!t)return null;let r=Number.parseInt(t[1],10),s=Number.parseInt(t[2],10);return s===0?null:`${r}.${s-1}.0`}function pd(e=wa.version,t=process.argv.slice(2)){let r=fd(e);return r?[...en(Qs()).split(" "),`shadcn@${r}`,...t].map(dd).join(" "):null}function Tt(){let e=pd();e&&(E.error(""),E.error("You can also try a previous version to see if that works:"),E.error(e)),E.break(),process.exit(1);}function dd(e){return /^[a-zA-Z0-9_./:@%+=,-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}var Sa=cosmiconfig("registries",{packageProp:"registries",searchPlaces:["package.json"]}),md=z$1.object({registries:b.optional()});function xa(e,t){if(!t)return e;let r=new URL(e);return t.query&&r.searchParams.set("q",t.query),t.types?.length&&r.searchParams.set("type",t.types.join(",")),t.limit!==void 0&&r.searchParams.set("limit",String(t.limit)),t.offset!==void 0&&r.searchParams.set("offset",String(t.offset)),r.toString()}async function rn(e,t){return Se(()=>gd(e,t))}async function gd(e,t){let{config:r,useCache:s,searchParams:n}=t||{};if(L(e)){let l=xa(e,n),[u]=await K([l],{useCache:s});return ba(e,u)}let i=gt(e);if(i)return no(i,{useCache:s});if(!e.startsWith("@"))throw new lt(e);let o=e;o.endsWith("/registry")||(o=`${o}/registry`);let a=Je(o,oe(r));if(!a?.url)throw new _e(o);let c=xa(a.url,n);a.headers&&Object.keys(a.headers).length>0&&yt({[c]:a.headers});let[f]=await K([c],{useCache:s});return ba(o,f)}function ba(e,t){try{let r=q$1.parse(t);if(r.include?.length)throw new $(`Registry catalog "${e}" uses "include", but consumer registry endpoints must serve a resolved registry catalog. Run "npx shadcn build" and serve the built registry.json, or use loadRegistry() in a dynamic route.`,{context:{registry:e,include:r.include},suggestion:"Serve a flattened registry.json for CLI consumers. Source registry.json files with include are supported by shadcn build and loadRegistry()."});return r}catch(r){throw r instanceof $?r:new W(e,r,{subject:"registry catalog",suggestion:"The registry catalog may be corrupted or have an invalid format. Please make sure it returns a valid registry.json object. See https://ui.shadcn.com/schema/registry.json."})}}async function sn(e,t){let{config:r,useCache:s=false}=t||{};return Se(()=>Ee(e,oe(r),{useCache:s}))}async function yd(e,t){let{config:r,useCache:s=false}=t||{};return Se(()=>tt(e,oe(r),{useCache:s}))}async function wd(e,t){let{useCache:r=true}=t||{};r||(Ut.clearCaches(),Sa.clearCaches());let s=await xd(e),n=S__default.resolve(e,"components.json");if(existsSync(n)){let i=await Ut.load(n),o=Ea(e,i?.config,"components.json");return {registries:{...q,...s,...o.registries}}}return {registries:s}}async function xd(e){let t=S__default.resolve(e,"package.json");if(!existsSync(t))return {};let r=await Sa.load(t);return Ea(e,{registries:r?.config},"package.json").registries}function Ea(e,t,r){let s=md.safeParse(t);if(!s.success)throw new ze(e,s.error,r);return {registries:s.data.registries||{}}}async function qt(){let[e]=await K(["index.json"]);return r.parse(e)}async function tR(){try{let[e]=await K(["styles/index.json"]);return s.parse(e)}catch(e){return E.error(`
97
97
  `),br(e),[]}}async function rR(){try{let[e]=await K(["icons/index.json"]);return t.parse(e)}catch(e){return br(e),{}}}async function sR(){return jn}async function lr(e){let[t]=await K([`colors/${e}.json`]);return u.parse(t)}async function bd(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 bd(e,n.registryDependencies);r.push(...i);}}return r.filter((s,n,i)=>i.findIndex(o=>o.name===s.name)===n)}async function nR(e,t){try{let r=t.map(n=>`styles/${e}/${n.name}.json`);return (await K(r)).map(n$1=>n.parse(n$1))}catch(r){return br(r),[]}}async function iR(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?S__default.join(e.resolvedPaths[s],n):null}async function Ia(e){e={useCache:true,...e};let t=`${je}/registries.json`,[r]=await K([t],{useCache:e.useCache});try{return A$1.parse(r)}catch(s){throw s instanceof z$1.ZodError?new ut(s):s}}async function vd(e){let t=await Ia(e);return t?Object.fromEntries(t.map(r=>[r.name,r.url])):null}async function Rd(e){e={useCache:true,...e};let t=`${je}/config.json`,[r]=await K([t],{useCache:e.useCache});return C.parse(r).presets}async function oR(e,t){return (await Rd(t)).find(s=>s.name.toLowerCase()===e.toLowerCase())??null}var Ca={"--font-heading":"cn-font-heading"};function Sd(e){return e.startsWith("--")?e:`--${e}`}function nn(e){let t=new Set;for(let r of e){for(let s of r.fonts??[]){let n=s.font?.variable;if(!n)continue;let i=Ca[n];i&&t.add(i);}for(let s of Object.values(r.cssVars??{}))for(let n of Object.keys(s??{})){let i=Ca[Sd(n)];i&&t.add(i);}}return Array.from(t)}function ka(e,t){if(e.includes("\0"))return false;let r;try{r=e;let d="";for(;r!==d&&r.includes("%");)d=r,r=decodeURIComponent(r);}catch{return false}let s=S__default.normalize(r.replace(/\\/g,"/")),n=S__default.normalize(t),i=d=>d.replace(/\[\.\.\..*?\]/g,"").includes("..");if(i(s)||i(r)||i(e))return false;let o=d=>d.replace(/\[\.\.\..*?\]/g,""),a=o(e),c=o(r);if([/\.\.[\/\\]/,/[\/\\]\.\./,/\.\./,/\.\.%/,/\x00/,/[\x01-\x1f]/].some(d=>d.test(a)||d.test(c))||(e.includes("~")||r.includes("~"))&&(e.includes("../")||r.includes("../")))return false;if(/^[a-zA-Z]:[\/\\]/.test(r))return process.platform==="win32"?r.toLowerCase().startsWith(t.toLowerCase()):false;if(S__default.isAbsolute(s))return s.startsWith(n+S__default.sep);let u=S__default.resolve(n,s);return u.startsWith(n+S__default.sep)||u===n}async function wR(e,t,r){if(!t.resolvedPaths.tailwindCss||!Object.keys(e??{}).length)return;r={cleanupDefaultNextStyles:false,silent:false,tailwindVersion:"v3",overwriteCssVars:false,...r};let s=t.resolvedPaths.tailwindCss,n=S__default.relative(t.resolvedPaths.cwd,s),i=j(`Updating CSS variables in ${P.info(n)}`,{silent:r.silent}).start(),o=await promises.readFile(s,"utf8"),a=await on(o,e??{},t,{cleanupDefaultNextStyles:r.cleanupDefaultNextStyles,tailwindVersion:r.tailwindVersion,tailwindConfig:r.tailwindConfig,overwriteCssVars:r.overwriteCssVars});await promises.writeFile(s,a,"utf8"),i.succeed();}async function on(e,t,r,s={cleanupDefaultNextStyles:false,tailwindVersion:"v3",tailwindConfig:void 0,overwriteCssVars:false}){s={cleanupDefaultNextStyles:false,tailwindVersion:"v3",tailwindConfig:void 0,overwriteCssVars:false,...s};let n=[Cd(t)];s.cleanupDefaultNextStyles&&n.push(Pa()),s.tailwindVersion==="v4"&&(n=[],n.push(Pd({params:"dark (&:is(.dark *))"})),s.cleanupDefaultNextStyles&&n.push(Pa()),n.push(Td(t,{overwriteCssVars:s.overwriteCssVars})),n.push($d(t)),s.tailwindConfig&&(n.push(Ad(s.tailwindConfig)),n.push(jd(s.tailwindConfig)),n.push(Od(s.tailwindConfig))));let o=(await O(n).process(e,{from:void 0})).css;return o=o.replace(/\/\* ---break--- \*\//g,""),s.tailwindVersion==="v4"&&(o=o.replace(/(\n\s*\n)+/g,`
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-CHWMSXYA.js';import {SyntaxKind,Project,ScriptKind}from'ts-morph';import {promises}from'fs';import {twMerge}from'tailwind-merge';var ot=async({sourceFile:r,config:n})=>{let e=n.iconLibrary;if(!e||!(e in a))return r;let t=e,i=a[t],o=[];for(let a$1 of r.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement)){if(a$1.getTagNameNode()?.getText()!=="IconPlaceholder")continue;let f=a$1.getAttributes().find(g=>g.getKind()!==SyntaxKind.JsxAttribute?false:g.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()===t);if(!f)continue;let s=f.asKindOrThrow(SyntaxKind.JsxAttribute),l=s.getInitializer()?.getText().replace(/^["']|["']$/g,"");if(!l)continue;o.includes(l)||o.push(l);let u=i.usage.match(/<(\w+)([^>]*)\s*\/>/);s.remove();for(let g of a$1.getAttributes()){if(g.getKind()!==SyntaxKind.JsxAttribute)continue;let x=g.asKindOrThrow(SyntaxKind.JsxAttribute);x.getNameNode().getText()in a&&x.remove();}if(!u){a$1.getTagNameNode()?.replaceWithText(l);continue}let[,b,K]=u;if(b==="ICON"){let g=a$1.getAttributes().filter(x=>x.getKind()!==SyntaxKind.JsxAttribute?true:!(x.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()in a)).map(x=>x.getText()).join(" ");g.trim()?a$1.replaceWithText(`<${l} ${g} />`):a$1.getTagNameNode()?.replaceWithText(l);}else {let g=new Set(a$1.getAttributes().filter(m=>m.getKind()===SyntaxKind.JsxAttribute).map(m=>m.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText())),A=K.replace(/\{ICON\}/g,`{${l}}`).trim().split(/\s+(?=\w+=)/).filter(m=>m).map(m=>{let E=m.split("=")[0];return E&&!g.has(E)?m:null}).filter(Boolean),y=a$1.getAttributes().filter(m=>m.getKind()!==SyntaxKind.JsxAttribute?true:!(m.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()in a)).map(m=>m.getText()).join(" "),M=[...A,y].filter(Boolean).join(" ");a$1.replaceWithText(`<${b} ${M} />`);}}for(let a of r.getImportDeclarations()??[])if(a.getModuleSpecifier()?.getText()?.includes("icon-placeholder")){let l=(a.getNamedImports()??[]).find(d=>d.getName()==="IconPlaceholder");l&&l.remove(),a.getNamedImports()?.length===0&&a.remove();}if(o.length>0){let a=i.import.split(`
1
+ import {a}from'./chunk-CHWMSXYA.js';import {SyntaxKind,Project,ScriptKind}from'ts-morph';import {promises}from'fs';import {twMerge}from'cn';var ot=async({sourceFile:r,config:n})=>{let e=n.iconLibrary;if(!e||!(e in a))return r;let t=e,i=a[t],o=[];for(let a$1 of r.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement)){if(a$1.getTagNameNode()?.getText()!=="IconPlaceholder")continue;let f=a$1.getAttributes().find(g=>g.getKind()!==SyntaxKind.JsxAttribute?false:g.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()===t);if(!f)continue;let s=f.asKindOrThrow(SyntaxKind.JsxAttribute),l=s.getInitializer()?.getText().replace(/^["']|["']$/g,"");if(!l)continue;o.includes(l)||o.push(l);let u=i.usage.match(/<(\w+)([^>]*)\s*\/>/);s.remove();for(let g of a$1.getAttributes()){if(g.getKind()!==SyntaxKind.JsxAttribute)continue;let x=g.asKindOrThrow(SyntaxKind.JsxAttribute);x.getNameNode().getText()in a&&x.remove();}if(!u){a$1.getTagNameNode()?.replaceWithText(l);continue}let[,b,K]=u;if(b==="ICON"){let g=a$1.getAttributes().filter(x=>x.getKind()!==SyntaxKind.JsxAttribute?true:!(x.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()in a)).map(x=>x.getText()).join(" ");g.trim()?a$1.replaceWithText(`<${l} ${g} />`):a$1.getTagNameNode()?.replaceWithText(l);}else {let g=new Set(a$1.getAttributes().filter(m=>m.getKind()===SyntaxKind.JsxAttribute).map(m=>m.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText())),A=K.replace(/\{ICON\}/g,`{${l}}`).trim().split(/\s+(?=\w+=)/).filter(m=>m).map(m=>{let E=m.split("=")[0];return E&&!g.has(E)?m:null}).filter(Boolean),y=a$1.getAttributes().filter(m=>m.getKind()!==SyntaxKind.JsxAttribute?true:!(m.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()in a)).map(m=>m.getText()).join(" "),M=[...A,y].filter(Boolean).join(" ");a$1.replaceWithText(`<${b} ${M} />`);}}for(let a of r.getImportDeclarations()??[])if(a.getModuleSpecifier()?.getText()?.includes("icon-placeholder")){let l=(a.getNamedImports()??[]).find(d=>d.getName()==="IconPlaceholder");l&&l.remove(),a.getNamedImports()?.length===0&&a.remove();}if(o.length>0){let a=i.import.split(`
2
2
  `),f=[];for(let s of a){let l=s.match(/import\s+{([^}]+)}\s+from\s+['"]([^'"]+)['"]/);if(!l)continue;let[,d,u]=l,b=d.split(",").map(g=>g.trim()).map(g=>g==="ICON"?o.map(x=>({name:x})):{name:g}).flat(),K=r.addImportDeclaration({moduleSpecifier:u,namedImports:b});f.push(K);}if(!z(r))for(let s of f)s.replaceWithText(s.getText().replace(";",""));}return r};function z(r){return r.getImportDeclarations()?.[0]?.getText().endsWith(";")??false}var ft=async({sourceFile:r,config:n,baseColor:e})=>(n.tailwind?.cssVariables||!e?.inlineColors||r.getDescendantsOfKind(SyntaxKind.StringLiteral).forEach(t=>{let i=t.getLiteralText(),o=J(i,e.inlineColors).trim();o!==i&&t.setLiteralValue(o);}),r);function L(r){if(!r.includes("/")&&!r.includes(":"))return [null,r,null];let n=-1,e=0;for(let s=r.length-1;s>=0;s--){let l=r[s];if(l==="]")e++;else if(l==="[")e--;else if(l===":"&&e===0){n=s;break}}let t=null,i;n===-1?i=r:(t=r.slice(0,n),i=r.slice(n+1));let o=i.lastIndexOf("/");if(o===-1)return [t,i,null];let a=i.slice(0,o),f=i.slice(o+1);return [t,a,f]}var k=["bg-","text-","border-","ring-offset-","ring-"];function J(r,n){r.includes(" border ")&&(r=r.replace(" border "," border border-border "));let e=r.split(" "),t=new Set,i=new Set;for(let o of e){let[a,f,s]=L(o),l=k.find(u=>f?.startsWith(u));if(!l){t.has(o)||t.add(o);continue}let d=f?.replace(l,"");if(d&&d in n.light){t.add([a,`${l}${n.light[d]}`].filter(Boolean).join(":")+(s?`/${s}`:"")),i.add(["dark",a,`${l}${n.dark[d]}`].filter(Boolean).join(":")+(s?`/${s}`:""));continue}t.has(o)||t.add(o);}return [...Array.from(t),...Array.from(i)].join(" ").trim()}var W=[["-ml-","-ms-"],["-mr-","-me-"],["ml-","ms-"],["mr-","me-"],["pl-","ps-"],["pr-","pe-"],["-left-","-start-"],["-right-","-end-"],["left-","start-"],["right-","end-"],["inset-l-","inset-inline-start-"],["inset-r-","inset-inline-end-"],["rounded-tl-","rounded-ss-"],["rounded-tr-","rounded-se-"],["rounded-bl-","rounded-es-"],["rounded-br-","rounded-ee-"],["rounded-l-","rounded-s-"],["rounded-r-","rounded-e-"],["border-l-","border-s-"],["border-r-","border-e-"],["border-l","border-s"],["border-r","border-e"],["text-left","text-start"],["text-right","text-end"],["scroll-ml-","scroll-ms-"],["scroll-mr-","scroll-me-"],["scroll-pl-","scroll-ps-"],["scroll-pr-","scroll-pe-"],["float-left","float-start"],["float-right","float-end"],["clear-left","clear-start"],["clear-right","clear-end"],["origin-top-left","origin-top-start"],["origin-top-right","origin-top-end"],["origin-bottom-left","origin-bottom-start"],["origin-bottom-right","origin-bottom-end"],["origin-left","origin-start"],["origin-right","origin-end"]],B=[["-translate-x-","translate-x-"],["translate-x-","-translate-x-"]],G=[["space-x-","space-x-reverse"],["divide-x-","divide-x-reverse"]],X=[["cursor-w-resize","cursor-e-resize"],["cursor-e-resize","cursor-w-resize"]],F=[["data-[side=inline-start]","slide-in-from-right","slide-in-from-end"],["data-[side=inline-start]","slide-out-to-right","slide-out-to-end"],["data-[side=inline-end]","slide-in-from-left","slide-in-from-start"],["data-[side=inline-end]","slide-out-to-left","slide-out-to-start"]],Q="cn-rtl-flip",$=["ContextMenuContent","ContextMenuSubContent","DropdownMenuSubContent"],P={right:"inline-end",left:"inline-start"},U=["-left-","-right-","left-","right-"],pt=async({sourceFile:r,config:n})=>(n.rtl&&O(r),r);async function xt(r,n){if(!n)return r;let t=new Project({useInMemoryFileSystem:true}).createSourceFile("component.tsx",r,{scriptKind:ScriptKind.TSX,overwrite:true});return O(t),t.getText()}function C(r){return r.replace(/^["']|["']$/g,"")}function h(r){let n=r.getLiteralText();r.setLiteralValue(q(n));}function q(r){return r.split(" ").flatMap(n=>{if(n.startsWith("rtl:")||n.startsWith("ltr:"))return [n];if(n===Q)return ["rtl:rotate-180"];let[e,t,i]=L(n);if(!t)return [n];for(let[s,l]of B)if(t.startsWith(s)){let d=t.replace(s,l),u=e?`rtl:${e}:${d}${i?`/${i}`:""}`:`rtl:${d}${i?`/${i}`:""}`;return [n,u]}for(let[s,l]of G)if(t.startsWith(s)){let d=e?`rtl:${e}:${l}`:`rtl:${l}`;return [n,d]}for(let[s,l]of X)if(t===s){let d=e?`rtl:${e}:${l}`:`rtl:${l}`;return [n,d]}for(let[s,l,d]of F)if(e?.includes(s)&&t.startsWith(l)){let u=t.replace(l,d);return [i?`${e}:${u}/${i}`:`${e}:${u}`]}let o=e?.includes("data-[side=left]")||e?.includes("data-[side=right]"),a=t;for(let[s,l]of W)if(!(o&&U.some(d=>s.startsWith(d)))&&t.startsWith(s)){if(!s.endsWith("-")&&t!==s)continue;a=t.replace(s,l);break}let f;return e?f=i?`${e}:${a}/${i}`:`${e}:${a}`:f=i?`${a}/${i}`:a,[f]}).join(" ")}function O(r){r.getDescendantsOfKind(SyntaxKind.CallExpression).filter(n=>n.getExpression().getText()==="cva").forEach(n=>{let e=n.getArguments()[0];e?.isKind(SyntaxKind.StringLiteral)&&h(e),n.getArguments()[1]?.isKind(SyntaxKind.ObjectLiteralExpression)&&n.getArguments()[1]?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).find(t=>t.getName()==="variants")?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(t=>{t.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(i=>{let o=i.getInitializerIfKind(SyntaxKind.StringLiteral);o&&h(o);});});}),r.getDescendantsOfKind(SyntaxKind.JsxAttribute).forEach(n=>{if(n.getNameNode().getText()==="className"){let e=n.getInitializer();if(e?.isKind(SyntaxKind.StringLiteral)&&h(e),n.getInitializer()?.isKind(SyntaxKind.JsxExpression)){let t=n.getInitializer()?.getDescendantsOfKind(SyntaxKind.CallExpression).find(i=>i.getExpression().getText()==="cn");t&&t.getArguments().forEach(i=>{(i.isKind(SyntaxKind.ConditionalExpression)||i.isKind(SyntaxKind.BinaryExpression))&&i.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(h),i.isKind(SyntaxKind.StringLiteral)&&h(i);});}}n.getNameNode().getText()==="classNames"&&n.getInitializer()?.isKind(SyntaxKind.JsxExpression)&&n.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(e=>{if(e.getInitializer()?.isKind(SyntaxKind.CallExpression)){let i=e.getInitializerIfKind(SyntaxKind.CallExpression);i&&i.getArguments().forEach(o=>{o.isKind(SyntaxKind.ConditionalExpression)&&o.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(h),o.isKind(SyntaxKind.StringLiteral)&&h(o);});}let t=e.getInitializer();t?.isKind(SyntaxKind.StringLiteral)&&e.getNameNode().getText()!=="variant"&&h(t);});}),r.getDescendantsOfKind(SyntaxKind.CallExpression).filter(n=>n.getExpression().getText()==="mergeProps").forEach(n=>{let e=n.getArguments()[0];if(e?.isKind(SyntaxKind.ObjectLiteralExpression)){let t=e.getProperties().find(i=>i.isKind(SyntaxKind.PropertyAssignment)&&i.getName()==="className");if(t?.isKind(SyntaxKind.PropertyAssignment)){let i=t.getInitializer();i?.isKind(SyntaxKind.CallExpression)&&i.getExpression().getText()==="cn"&&i.getArguments().forEach(o=>{o.isKind(SyntaxKind.StringLiteral)&&h(o),(o.isKind(SyntaxKind.ConditionalExpression)||o.isKind(SyntaxKind.BinaryExpression))&&o.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(h);}),i?.isKind(SyntaxKind.StringLiteral)&&h(i);}}}),[...r.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement),...r.getDescendantsOfKind(SyntaxKind.JsxOpeningElement)].forEach(n=>{let e=n.getTagNameNode().getText();if(!$.includes(e))return;let t=n.getAttributes().find(f=>f.isKind(SyntaxKind.JsxAttribute)&&f.getNameNode().getText()==="side");if(!t?.isKind(SyntaxKind.JsxAttribute))return;let i=t.getInitializer();if(!i?.isKind(SyntaxKind.StringLiteral))return;let o=C(i.getText()??""),a=P[o];a&&i.replaceWithText(`"${a}"`);}),r.getDescendantsOfKind(SyntaxKind.BindingElement).forEach(n=>{if(n.getNameNode().getText()!=="side")return;let i=n.getFirstAncestorByKind(SyntaxKind.FunctionDeclaration)?.getName();if(!i||!$.includes(i))return;let o=n.getInitializer();if(!o?.isKind(SyntaxKind.StringLiteral))return;let a=C(o.getText()??""),f=P[a];f&&o.replaceWithText(`"${f}"`);});}var D=[{marker:"cn-font-heading",utility:"font-heading",supportToken:"--font-heading:"}],w=/\bcn-font-heading\b/,v=new Map;async function Y(r,n=[]){let e=new Set(n);if(!r)return e;let t=v.get(r);return t||(t=promises.readFile(r,"utf8").then(i=>{let o=new Set;for(let a of D)i.includes(a.supportToken)&&o.add(a.marker);return o}).catch(()=>new Set),v.set(r,t)),(await t).forEach(i=>{e.add(i);}),e}function R(r,n){let e=r;for(let t of D)e.includes(t.marker)&&(e=e.replace(new RegExp(`\\b${t.marker}\\b`,"g"),n.has(t.marker)?t.utility:""));return e.replace(/\s+/g," ").trim()}function N(r,n){let e=r.getLiteralValue();if(!w.test(e))return;let t=R(e,n);t!==e&&r.setLiteralValue(t);}function I(r,n){for(let e of r.getDescendantsOfKind(SyntaxKind.StringLiteral))N(e,n);for(let e of r.getDescendantsOfKind(SyntaxKind.NoSubstitutionTemplateLiteral))N(e,n);}var At=async({sourceFile:r,config:n,supportedFontMarkers:e})=>{let t=await Y(n.resolvedPaths.tailwindCss,e),i=[];for(let o of r.getDescendantsOfKind(SyntaxKind.JsxAttribute)){let a=o.getNameNode().getText();if(a!=="className"&&a!=="classNames")continue;let f=o.getInitializer();if(f?.isKind(SyntaxKind.StringLiteral)){let s=f.getLiteralValue();if(w.test(s)){let l=R(s,t);l===""?i.push(o):l!==s&&f.setLiteralValue(l);}}f?.isKind(SyntaxKind.JsxExpression)&&I(f,t);}for(let o of i)o.remove();for(let o of r.getDescendantsOfKind(SyntaxKind.CallExpression)){if(o.getExpression().getText()==="cva"){for(let a of o.getArguments()){if(a.isKind(SyntaxKind.StringLiteral)){N(a,t);continue}if(a.isKind(SyntaxKind.NoSubstitutionTemplateLiteral)){N(a,t);continue}I(a,t);}continue}o.getExpression().getText()==="mergeProps"&&I(o,t);}return r};var et="animate-none! relative bg-popover/70 before:pointer-events-none before:absolute before:inset-0 before:-z-1 before:rounded-[inherit] before:backdrop-blur-2xl before:backdrop-saturate-150 **:data-[slot$=-item]:focus:bg-foreground/10 **:data-[slot$=-item]:data-highlighted:bg-foreground/10 **:data-[slot$=-separator]:bg-foreground/5 **:data-[slot$=-trigger]:focus:bg-foreground/10 **:data-[slot$=-trigger]:aria-expanded:bg-foreground/10! **:data-[variant=destructive]:focus:bg-foreground/10! **:data-[variant=destructive]:text-accent-foreground! **:data-[variant=destructive]:**:text-accent-foreground!",yt=async({sourceFile:r,config:n})=>{let e=n.menuColor,t=e==="default-translucent"||e==="inverted-translucent";for(let i of r.getDescendantsOfKind(SyntaxKind.JsxAttribute)){if(i.getNameNode().getText()!=="className")continue;let a=i.getInitializer();if(!a)continue;let f=a.getText();if(!f.includes("cn-menu-target")&&!f.includes("cn-menu-translucent"))continue;let s=f,l=false;e==="inverted"||e==="inverted-translucent"?s=s.replace(/cn-menu-target/g,"dark"):(s=s.replace(/cn-menu-target/g,""),l=true),t?s=s.replace(/"([^"]*cn-menu-translucent[^"]*)"/g,(d,u)=>`"${twMerge(u,et).replace(/\s*\bcn-menu-translucent\b\s*/g," ").trim()}"`):s.includes("cn-menu-translucent")&&(s=s.replace(/cn-menu-translucent/g,""),l=true),l&&(s=s.replace(/\s{2,}/g," "),s=s.replace(/"\s+/g,'"'),s=s.replace(/\s+"/g,'"'),s=s.replace(/,\s*""\s*,/g,","),s=s.replace(/\(\s*""\s*,/g,"("),s=s.replace(/,\s*""\s*\)/g,")")),i.setInitializer(s);}return r};export{ft as a,L as b,ot as c,pt as d,xt as e,At as f,yt as g};
@@ -1,4 +1,4 @@
1
- import {$a,R as R$1,Za,_a,ma,m as m$1,ia,oa,ab}from'./chunk-UU2LI3G7.js';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {ListToolsRequestSchema,CallToolRequestSchema}from'@modelcontextprotocol/sdk/types.js';import m from'dedent';import {z}from'zod';import {zodToJsonSchema}from'zod-to-json-schema';var A="shadcn@latest";async function u(n){return `${await ia(process.cwd())} ${A} ${n}`}async function l(n=process.cwd()){return {registries:(await oa(n,{useCache:false})).registries}}function _(n,t){let{query:r,registries:i}=t||{},o=n.items.map(c=>{let g=[`- ${c.name}`];return c.type&&g.push(`(${c.type})`),c.description&&g.push(`- ${c.description}`),c.registry&&g.push(`[${c.registry}]`),g.push(`
1
+ import {$a,R as R$1,Za,_a,ma,m as m$1,ia,oa,ab}from'./chunk-B2MD6U5O.js';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {ListToolsRequestSchema,CallToolRequestSchema}from'@modelcontextprotocol/sdk/types.js';import m from'dedent';import {z}from'zod';import {zodToJsonSchema}from'zod-to-json-schema';var A="shadcn@latest";async function u(n){return `${await ia(process.cwd())} ${A} ${n}`}async function l(n=process.cwd()){return {registries:(await oa(n,{useCache:false})).registries}}function _(n,t){let{query:r,registries:i}=t||{},o=n.items.map(c=>{let g=[`- ${c.name}`];return c.type&&g.push(`(${c.type})`),c.description&&g.push(`- ${c.description}`),c.registry&&g.push(`[${c.registry}]`),g.push(`
2
2
  Add command: \`${u(`add ${c.addCommandArgument}`)}\``),g.join(" ")}),a=`Found ${n.pagination.total} items`;r&&(a+=` matching "${r}"`),i&&i.length>0&&(a+=` in registries ${i.join(", ")}`),a+=":";let s=`Showing items ${n.pagination.offset+1}-${Math.min(n.pagination.offset+n.pagination.limit,n.pagination.total)} of ${n.pagination.total}:`,p=`${a}
3
3
 
4
4
  ${s}
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import {b as b$2,c as c$4,a as a$5}from'./chunk-3W6BGJGE.js';import {a as a$3}from'./chunk-QKXB47GP.js';import {g,f,O,h,Ca as Ca$1,i,j as j$1,Fa as Fa$1,a as a$1,$,Sa,ka as ka$1,S,Da as Da$1,Y,Z as Z$1,D as D$1,c as c$1,_,X as X$1,Ra as Ra$1,ra,ta as ta$1,V,W,T,Ea,aa,d,ma as ma$1,P,qa,e,Va as Va$1,Wa as Wa$1,Xa,wa as wa$1,ua,Ga as Ga$1,xa as xa$1,I,E,F,H,G,A,ha,Ma as Ma$1,ya as ya$1,ea,Q,ab,$a,ba,Za as Za$1,ca as ca$1,_a as _a$1,bb,ga,Ha as Ha$1,Qa as Qa$1,da,pa as pa$1,za as za$1,Pa as Pa$1,Na as Na$1,Oa as Oa$1,sa as sa$1,b as b$1,ja as ja$1,Ka as Ka$1,z as z$1,fa as fa$1,r as r$1,U as U$1,M,K,L,C,J,N as N$1,B,Ia as Ia$1,La as La$1,k as k$1,Ja as Ja$1}from'./chunk-UU2LI3G7.js';export{wa as fetchTree,xa as getItemTargetPath,pa as getPackageJsonRegistries,Ba as getPreset,Aa as getPresets,ya as getRegistries,oa as getRegistriesConfig,za as getRegistriesIndex,la as getRegistry,ua as getRegistryBaseColor,ta as getRegistryBaseColors,sa as getRegistryIcons,ma as getRegistryItems,ra as getRegistryStyles,qa as getShadcnRegistryIndex,na as resolveRegistryItems,va as resolveTree}from'./chunk-UU2LI3G7.js';import {a,t,b,s,c as c$2,e as e$1,i as i$1,m,n,j as j$2,k,f as f$2,r,h as h$1}from'./chunk-2XFBGS5K.js';import {c,f as f$3,n as n$1}from'./chunk-4WBGNKSZ.js';import {a as a$2,c as c$3,g as g$1,d as d$1,f as f$1,e as e$2}from'./chunk-7SBJAAAY.js';import {a as a$4}from'./chunk-CHWMSXYA.js';import*as N from'path';import N__default from'path';import {promises,existsSync}from'fs';import D from'fs-extra';import ia from'open';import ge from'prompts';import Rn from'dedent';import aa$1,{tmpdir}from'os';import {execa}from'execa';import vn from'deepmerge';import {Command}from'commander';import Br,{z}from'zod';import {Project,ScriptKind,SyntaxKind,Node}from'ts-morph';import {loadConfig}from'tsconfig-paths';import {diffLines,structuredPatch,diffWords}from'diff';import {dim,yellow,bold,green,cyan,red}from'kleur/colors';import*as $e from'fs/promises';import $e__default from'fs/promises';import Vc from'postcss';import {StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import Qr from'fast-glob';import {randomBytes}from'crypto';async function Cn(e){let t={};if(!D.existsSync(e.cwd)||!D.existsSync(N__default.resolve(e.cwd,"package.json")))return t["1"]=true,{errors:t,projectInfo:null};let r=D$1("Preflight checks.",{silent:e.silent}).start();D.existsSync(N__default.resolve(e.cwd,"components.json"))&&!e.force&&(r?.fail(),g.break(),g.error(`A ${f.info("components.json")} file already exists at ${f.info(e.cwd)}.
2
+ import {b as b$2,c as c$4,a as a$5}from'./chunk-3W6BGJGE.js';import {a as a$3}from'./chunk-TWAHNSYO.js';import {g,f,O,h,Ca as Ca$1,i,j as j$1,Fa as Fa$1,a as a$1,$,Sa,ka as ka$1,S,Da as Da$1,Y,Z as Z$1,D as D$1,c as c$1,_,X as X$1,Ra as Ra$1,ra,ta as ta$1,V,W,T,Ea,aa,d,ma as ma$1,P,qa,e,Va as Va$1,Wa as Wa$1,Xa,wa as wa$1,ua,Ga as Ga$1,xa as xa$1,I,E,F,H,G,A,ha,Ma as Ma$1,ya as ya$1,ea,Q,ab,$a,ba,Za as Za$1,ca as ca$1,_a as _a$1,bb,ga,Ha as Ha$1,Qa as Qa$1,da,pa as pa$1,za as za$1,Pa as Pa$1,Na as Na$1,Oa as Oa$1,sa as sa$1,b as b$1,ja as ja$1,Ka as Ka$1,z as z$1,fa as fa$1,r as r$1,U as U$1,M,K,L,C,J,N as N$1,B,Ia as Ia$1,La as La$1,k as k$1,Ja as Ja$1}from'./chunk-B2MD6U5O.js';export{wa as fetchTree,xa as getItemTargetPath,pa as getPackageJsonRegistries,Ba as getPreset,Aa as getPresets,ya as getRegistries,oa as getRegistriesConfig,za as getRegistriesIndex,la as getRegistry,ua as getRegistryBaseColor,ta as getRegistryBaseColors,sa as getRegistryIcons,ma as getRegistryItems,ra as getRegistryStyles,qa as getShadcnRegistryIndex,na as resolveRegistryItems,va as resolveTree}from'./chunk-B2MD6U5O.js';import {a,t,b,s,c as c$2,e as e$1,i as i$1,m,n,j as j$2,k,f as f$2,r,h as h$1}from'./chunk-2XFBGS5K.js';import {c,f as f$3,n as n$1}from'./chunk-4WBGNKSZ.js';import {a as a$2,c as c$3,g as g$1,d as d$1,f as f$1,e as e$2}from'./chunk-G5AI2VJ6.js';import {a as a$4}from'./chunk-CHWMSXYA.js';import*as N from'path';import N__default from'path';import {promises,existsSync}from'fs';import D from'fs-extra';import ia from'open';import ge from'prompts';import Rn from'dedent';import aa$1,{tmpdir}from'os';import {execa}from'execa';import vn from'deepmerge';import {Command}from'commander';import Br,{z}from'zod';import {Project,ScriptKind,SyntaxKind,Node}from'ts-morph';import {loadConfig}from'tsconfig-paths';import {diffLines,structuredPatch,diffWords}from'diff';import {dim,yellow,bold,green,cyan,red}from'kleur/colors';import*as $e from'fs/promises';import $e__default from'fs/promises';import Vc from'postcss';import {StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import Qr from'fast-glob';import {randomBytes}from'crypto';async function Cn(e){let t={};if(!D.existsSync(e.cwd)||!D.existsSync(N__default.resolve(e.cwd,"package.json")))return t["1"]=true,{errors:t,projectInfo:null};let r=D$1("Preflight checks.",{silent:e.silent}).start();D.existsSync(N__default.resolve(e.cwd,"components.json"))&&!e.force&&(r?.fail(),g.break(),g.error(`A ${f.info("components.json")} file already exists at ${f.info(e.cwd)}.
3
3
  To start over, remove the ${f.info("components.json")} file and run ${f.info("init")} again.`),g.break(),process.exit(1)),r?.succeed();let o=D$1("Verifying framework.",{silent:e.silent}).start(),n=e.existingConfig?.tailwind,i$1=await Ca$1(e.cwd,{configCssFile:typeof n?.css=="string"?n.css:void 0});if(!i$1||i$1?.framework.name==="manual"){if(t["7"]=true,o?.fail(),!e.monorepo&&await h(e.cwd)){let m=await i(e.cwd);m.length>0&&(j$1("init",m),process.exit(1));}g.break(),i$1?.framework.links.installation&&g.error(`We could not detect a supported framework at ${f.info(e.cwd)}.
4
4
  Visit ${f.info(i$1?.framework.links.installation)} to manually configure your project.
5
5
  Once configured, you can use the cli to add components.`),g.break(),process.exit(1);}o?.succeed(`Verifying framework. Found ${f.info(i$1.framework.label)}.`);let s="Validating Tailwind CSS.";i$1.tailwindVersion==="v4"&&(s=`Validating Tailwind CSS. Found ${f.info("v4")}.`);let c=D$1(s,{silent:e.silent}).start();i$1.tailwindVersion==="v3"&&(!i$1?.tailwindConfigFile||!i$1?.tailwindCssFile)?(t["5"]=true,c?.fail()):i$1.tailwindVersion==="v4"&&!i$1?.tailwindCssFile?(t["5"]=true,c?.fail()):i$1.tailwindVersion?c?.succeed():(t["5"]=true,c?.fail());let l=D$1("Validating import alias.",{silent:e.silent}).start();return i$1?.aliasPrefix?l?.succeed():(t["6"]=true,l?.fail()),Object.keys(t).length>0&&(t["5"]&&(g.break(),g.error(`No Tailwind CSS configuration found at ${f.info(e.cwd)}.`),g.error("It is likely you do not have Tailwind CSS installed or have an invalid configuration."),g.error("Install Tailwind CSS then try again."),i$1?.framework.links.tailwind&&g.error(`Visit ${f.info(i$1?.framework.links.tailwind)} to get started.`)),t["6"]&&(g.break(),g.error(`Could not find valid path aliases or package imports for ${f.info("init")}.`),g.error(`Configure path aliases in ${f.info("tsconfig.json")} or imports in ${f.info("package.json")}, then run ${f.info("init")} again.`),g.error(`Learn more at ${f.info(`${a$1}/docs/installation/manual#configure-import-aliases`)}.`)),g.break(),process.exit(1)),{errors:t,projectInfo:i$1}}async function xn(e,t){let r=new Set,o=new Set,n=[...e];for(;n.length>0;){let i=n.shift();if(o.has(i))continue;o.add(i);let{registry:s}=z$1(i);s&&!c$1[s]&&r.add(s);try{let[c]=await fa$1([i],t,{useCache:!0});if(c?.registryDependencies)for(let l of c.registryDependencies){let{registry:m}=z$1(l);m&&!c$1[m]&&r.add(m),o.has(l)||n.push(l);}}catch(c){if(c instanceof r$1){let{registry:l}=z$1(i);l&&!c$1[l]&&r.add(l);continue}continue}}return Array.from(r)}async function U(e,t,r={}){r={silent:false,writeFile:true,...r};let n=(await xn(e,t)).filter(g=>!t.registries?.[g]&&!Object.keys(c$1).includes(g));if(n.length===0)return {config:t,newRegistries:[],discoveredRegistries:{},packageJsonRegistries:{}};let i=await pa$1(t.resolvedPaths.cwd),s={},c=[];for(let g of n)i[g]?s[g]=i[g]:c.push(g);let l={};if(c.length>0){let g=await za$1({useCache:process.env.NODE_ENV!=="development"});if(g)for(let u of c)g[u]&&(l[u]=g[u]);}let m={...s,...l};if(Object.keys(m).length===0)return {config:t,newRegistries:[],discoveredRegistries:{},packageJsonRegistries:{}};let d=Object.fromEntries(Object.entries(t.registries||{}).filter(([g])=>!Object.keys(c$1).includes(g))),f={...t,registries:{...d,...m}};if(r.writeFile&&Object.keys(l).length>0){let g=N__default.resolve(t.resolvedPaths.cwd,"components.json");if(D.existsSync(g)){let u=D$1("Updating components.json.",{silent:r.silent}).start(),h=await D.readJson(g),y={...h,registries:{...h.registries,...l}};await D.writeFile(g,JSON.stringify(y,null,2)+`
package/dist/mcp/index.js CHANGED
@@ -1 +1 @@
1
- export{a as server}from'../chunk-QKXB47GP.js';import'../chunk-UU2LI3G7.js';import'../chunk-2XFBGS5K.js';import'../chunk-4WBGNKSZ.js';import'../chunk-7SBJAAAY.js';import'../chunk-CHWMSXYA.js';
1
+ export{a as server}from'../chunk-TWAHNSYO.js';import'../chunk-B2MD6U5O.js';import'../chunk-2XFBGS5K.js';import'../chunk-4WBGNKSZ.js';import'../chunk-G5AI2VJ6.js';import'../chunk-CHWMSXYA.js';
@@ -1 +1 @@
1
- export{y as RegistriesIndexParseError,m as RegistryError,l as RegistryErrorCode,q as RegistryFetchError,p as RegistryForbiddenError,x as RegistryInvalidNamespaceError,v as RegistryItemNotFoundError,s as RegistryLocalFileError,w as RegistryMissingEnvironmentVariablesError,r as RegistryNotConfiguredError,n as RegistryNotFoundError,t as RegistryParseError,o as RegistryUnauthorizedError,u as RegistryValidationError,Ya as addRegistryItems,ya as getRegistries,oa as getRegistriesConfig,za as getRegistriesIndex,la as getRegistry,ma as getRegistryItems,Ta as loadRegistry,Ua as loadRegistryItem,na as resolveRegistryItems,_a as searchRegistries}from'../chunk-UU2LI3G7.js';import'../chunk-2XFBGS5K.js';import'../chunk-4WBGNKSZ.js';import'../chunk-7SBJAAAY.js';import'../chunk-CHWMSXYA.js';
1
+ export{y as RegistriesIndexParseError,m as RegistryError,l as RegistryErrorCode,q as RegistryFetchError,p as RegistryForbiddenError,x as RegistryInvalidNamespaceError,v as RegistryItemNotFoundError,s as RegistryLocalFileError,w as RegistryMissingEnvironmentVariablesError,r as RegistryNotConfiguredError,n as RegistryNotFoundError,t as RegistryParseError,o as RegistryUnauthorizedError,u as RegistryValidationError,Ya as addRegistryItems,ya as getRegistries,oa as getRegistriesConfig,za as getRegistriesIndex,la as getRegistry,ma as getRegistryItems,Ta as loadRegistry,Ua as loadRegistryItem,na as resolveRegistryItems,_a as searchRegistries}from'../chunk-B2MD6U5O.js';import'../chunk-2XFBGS5K.js';import'../chunk-4WBGNKSZ.js';import'../chunk-G5AI2VJ6.js';import'../chunk-CHWMSXYA.js';
@@ -1 +1 @@
1
- export{e as transformDirection,f as transformFont,c as transformIcons,g as transformMenu}from'../chunk-7SBJAAAY.js';import'../chunk-CHWMSXYA.js';import D from'postcss';import k from'postcss-selector-parser';import {z}from'zod';import {Project,ScriptKind,SyntaxKind,Node}from'ts-morph';import {twMerge}from'tailwind-merge';var b="cn-",B=z.record(z.string().startsWith(b),z.string());function X(t){let e=D.parse(t),r={};return e.walkRules(n=>{let s=n.selectors??[];if(s.length===0)return;let o=q(n);if(o)for(let l of s){let c=_(l);k(i=>{i.each(u=>{let f=G(u);if(!f)return;let g=f.value;g.startsWith(b)&&(r[g]=r[g]?`${o} ${r[g]}`:o);});}).processSync(c);}}),B.parse(r)}function _(t){return t.replace(/\s*&\s*/g,"").trim()}function q(t){let e=[];for(let r of t.nodes||[])if(r.type==="atrule"&&r.name==="apply"){let n=r.params.trim();n&&e.push(n);}return e.length===0?null:e.join(" ")}function G(t){let e=[];return t.walkClasses(r=>{r.value.startsWith(b)&&e.push(r);}),e.length===0?null:e[e.length-1]}var A=new Set(["cn-menu-target","cn-menu-translucent","cn-logical-sides","cn-rtl-flip","cn-font-heading"]);function p(t){return Node.isStringLiteral(t)||Node.isNoSubstitutionTemplateLiteral(t)}var M=async({sourceFile:t,styleMap:e})=>{let r=new Set;return U(t,e,r),Y(t,e,r),Q(t,e,r),rt(t,e,r),t};function Q(t,e,r){t.forEachDescendant(n=>{if(!Node.isPropertyAssignment(n)||n.getNameNode().getText()!=="className")return;let s=n.getInitializer();!s||!Node.isCallExpression(s)||S(s)&&I(s,e,r);});}function $(t,e,r){let n=t.getLiteralText(),s=E(n);if(s.length===0)return;let o=s.filter(i=>!r.has(i));if(o.length===0){let i=m(n);t.setLiteralValue(i);return}let c=o.filter(i=>!A.has(i)).map(i=>e[i]).filter(i=>!!i);if(c.length>0){let i=c.join(" "),u=m(h(i,n));t.setLiteralValue(u),o.forEach(f=>r.add(f));}else {let i=m(n);t.setLiteralValue(i);}}function U(t,e,r){t.forEachDescendant(n=>{if(!Node.isCallExpression(n))return;let s=n.getExpression();if(!Node.isIdentifier(s)||s.getText()!=="cva")return;let o=n.getArguments()[0];Node.isStringLiteral(o)&&$(o,e,r);let l=n.getArguments()[1];if(!l||!Node.isObjectLiteralExpression(l))return;let c=l.getProperties().find(u=>Node.isPropertyAssignment(u)&&Node.isIdentifier(u.getNameNode())&&u.getNameNode().getText()==="variants");if(!c||!Node.isPropertyAssignment(c))return;let i=c.getInitializer();!i||!Node.isObjectLiteralExpression(i)||i.getProperties().forEach(u=>{if(!Node.isPropertyAssignment(u))return;let f=u.getInitializer();!f||!Node.isObjectLiteralExpression(f)||f.getProperties().forEach(g=>{if(!Node.isPropertyAssignment(g))return;let x=g.getInitializer();x&&Node.isStringLiteral(x)&&$(x,e,r);});});});}function Y(t,e,r){t.forEachDescendant(n=>{if(!Node.isJsxAttribute(n)||n.getNameNode().getText()!=="className")return;let s=n.getInitializer();if(!s)return;let o=Z(s);if(o.length>0){o.forEach(g=>I(g,e,r));return}let l=tt(s);if(l.length===0)return;let c=n.getParent()?.getParent();if(!c||!Node.isJsxOpeningElement(c)&&!Node.isJsxSelfClosingElement(c))return;let i=l.filter(g=>!r.has(g));if(i.length===0){P(s);return}let f=i.filter(g=>!A.has(g)).map(g=>e[g]).filter(g=>!!g);if(f.length>0){let g=f.join(" ");et(c,g);}else P(s);});}function Z(t){if(!Node.isJsxExpression(t))return [];let e=t.getExpression();if(!e||Node.isCallExpression(e)&&S(e))return [];let r=[];return e.forEachDescendant(n=>{Node.isCallExpression(n)&&S(n)&&r.push(n);}),r}function tt(t){let e=[];if(p(t))return E(t.getLiteralText());if(!Node.isJsxExpression(t))return e;let r=t.getExpression();if(!r)return e;if(p(r))return E(r.getLiteralText());if(Node.isCallExpression(r)&&S(r))for(let n of r.getArguments())p(n)&&e.push(...E(n.getLiteralText()));return e}function P(t){if(p(t)){let r=m(t.getLiteralText());t.setLiteralValue(r);return}if(!Node.isJsxExpression(t))return;let e=t.getExpression();if(e){if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);return}if(Node.isCallExpression(e)&&S(e)){for(let r of e.getArguments())if(p(r)){let n=m(r.getLiteralText());r.setLiteralValue(n);}N(e);}}}function E(t){let e=t.matchAll(/\bcn-[\w-]+\b/g);return Array.from(e,r=>r[0])}function m(t){return t.replace(/\bcn-[\w-]+\b/g,e=>A.has(e)?e:"").replace(/\s+/g," ").trim()}function N(t){if(!S(t))return;let e=t.getArguments(),r=e.filter(n=>p(n)?n.getLiteralText().trim()!=="":true);if(r.length!==e.length){let n=r.map(o=>o.getText()),s=t.getParent();s&&Node.isJsxExpression(s)?s.replaceWithText(`{cn(${n.join(", ")})}`):t.replaceWithText(`cn(${n.join(", ")})`);}}function et(t,e){if(!Node.isJsxOpeningElement(t)&&!Node.isJsxSelfClosingElement(t))return;let r=t.getAttributes().find(o=>Node.isJsxAttribute(o)&&o.getNameNode().getText()==="className");if(!r||!Node.isJsxAttribute(r)){t.addAttribute({name:"className",initializer:`{cn(${JSON.stringify(e)})}`});return}let n=r.getInitializer();if(!n){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(n)){let o=n.getLiteralText(),l=m(h(e,o));n.setLiteralValue(l);return}if(!Node.isJsxExpression(n))return;let s=n.getExpression();if(!s){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(s)){let o=s.getLiteralText(),l=m(h(e,o));s.setLiteralValue(l);return}if(Node.isCallExpression(s)&&S(s)){let o=s.getArguments()[0];if(p(o)){let i=o.getLiteralText(),u=m(h(e,i));o.setLiteralValue(u);for(let f=1;f<s.getArguments().length;f++){let g=s.getArguments()[f];if(p(g)){let x=g.getLiteralText(),y=m(x);y!==x&&g.setLiteralValue(y);}}N(s);return}let l=s.getArguments().map(i=>{if(p(i)){let u=m(i.getLiteralText());return u?JSON.stringify(u):null}return i.getText()}).filter(i=>i!==null),c=[JSON.stringify(e),...l];r.setInitializer(`{cn(${c.join(", ")})}`);return}r.setInitializer(`{cn(${JSON.stringify(e)}, ${s.getText()})}`);}function h(t,e){return twMerge(t,e)}function S(t){let e=t.getExpression();return Node.isIdentifier(e)&&e.getText()==="cn"}function rt(t,e,r){t.forEachDescendant(n=>{if(!Node.isCallExpression(n))return;let s=n.getExpression();if(!(!Node.isIdentifier(s)||s.getText()!=="mergeProps"))for(let o of n.getArguments()){if(!Node.isObjectLiteralExpression(o))continue;let l=o.getProperties().find(i=>Node.isPropertyAssignment(i)&&Node.isIdentifier(i.getNameNode())&&i.getNameNode().getText()==="className");if(!l||!Node.isPropertyAssignment(l))continue;let c=l.getInitializer();c&&Node.isCallExpression(c)&&S(c)&&I(c,e,r,true);}});}function I(t,e,r,n=false){let s=nt(t);if(s.length===0)return;let o=s.filter(i=>!r.has(i));if(o.length===0){w(t);return}let c=o.filter(i=>!A.has(i)).map(i=>e[i]).filter(i=>!!i);if(c.length===0){w(t);return}st(t,c.join(" ")),n&&o.forEach(i=>r.add(i));}function nt(t){let e=[];for(let r of t.getArguments())p(r)&&e.push(...E(r.getLiteralText()));return e}function w(t){for(let e of t.getArguments())if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);}N(t);}function st(t,e){let r=t.getArguments()[0];if(p(r)){let l=r.getLiteralText(),c=m(h(e,l));r.setLiteralValue(c);for(let i=1;i<t.getArguments().length;i++){let u=t.getArguments()[i];if(p(u)){let f=u.getLiteralText(),g=m(f);g!==f&&u.setLiteralValue(g);}}N(t);return}let n=t.getArguments().map(l=>{if(p(l)){let c=m(l.getLiteralText());return c?JSON.stringify(c):null}return l.getText()}).filter(l=>l!==null),s=[JSON.stringify(e),...n];t.getParent()&&t.replaceWithText(`cn(${s.join(", ")})`);}async function at(t,{styleMap:e,transformers:r=[M]}){let s=new Project({useInMemoryFileSystem:true}).createSourceFile("component.tsx",t,{scriptKind:ScriptKind.TSX,overwrite:true});for(let o of r)await o({sourceFile:s,styleMap:e});return s.getText()}var lt=async({sourceFile:t,config:e})=>{if(!e.style?.startsWith("base-"))return t;let r=[],n=t.getDescendantsOfKind(SyntaxKind.JsxElement);for(let s of n){let o=s.getOpeningElement(),l=o.getAttribute("render");if(!l)continue;let i=s.getJsxChildren().map(d=>d.getText()).join("").trim();if(!i||l.getKind()!==SyntaxKind.JsxAttribute)continue;let f=l.asKindOrThrow(SyntaxKind.JsxAttribute).getInitializer();if(!f||f.getKind()!==SyntaxKind.JsxExpression)continue;let x=f.asKindOrThrow(SyntaxKind.JsxExpression).getExpression();if(!x||x.getKind()!==SyntaxKind.JsxSelfClosingElement)continue;let y=x.asKindOrThrow(SyntaxKind.JsxSelfClosingElement),C=y.getTagNameNode().getText(),J=y.getAttributes().map(d=>d.getText()).join(" "),j=J?`{<${C} ${J}>${i}</${C}>}`:`{<${C}>${i}</${C}>}`,F=o.getTagNameNode().getText(),O=o.getAttributes().filter(d=>d.getKind()===SyntaxKind.JsxAttribute?d.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()!=="render":true).map(d=>d.getText()).join(" "),V=O?`${O} render=${j}`:`render=${j}`,z=`<${F} ${V} />`;r.push({elementStart:s.getStart(),elementEnd:s.getEnd(),newText:z});}for(let s of r.reverse()){let o=t.getFullText(),l=o.substring(0,s.elementStart)+s.newText+o.substring(s.elementEnd);t.replaceWithText(l);}return t};export{X as createStyleMap,lt as transformRender,at as transformStyle};
1
+ export{e as transformDirection,f as transformFont,c as transformIcons,g as transformMenu}from'../chunk-G5AI2VJ6.js';import'../chunk-CHWMSXYA.js';import D from'postcss';import k from'postcss-selector-parser';import {z}from'zod';import {Project,ScriptKind,SyntaxKind,Node}from'ts-morph';import {twMerge}from'cn';var b="cn-",B=z.record(z.string().startsWith(b),z.string());function X(t){let e=D.parse(t),r={};return e.walkRules(n=>{let s=n.selectors??[];if(s.length===0)return;let o=q(n);if(o)for(let l of s){let c=_(l);k(i=>{i.each(u=>{let f=G(u);if(!f)return;let g=f.value;g.startsWith(b)&&(r[g]=r[g]?`${o} ${r[g]}`:o);});}).processSync(c);}}),B.parse(r)}function _(t){return t.replace(/\s*&\s*/g,"").trim()}function q(t){let e=[];for(let r of t.nodes||[])if(r.type==="atrule"&&r.name==="apply"){let n=r.params.trim();n&&e.push(n);}return e.length===0?null:e.join(" ")}function G(t){let e=[];return t.walkClasses(r=>{r.value.startsWith(b)&&e.push(r);}),e.length===0?null:e[e.length-1]}var A=new Set(["cn-menu-target","cn-menu-translucent","cn-logical-sides","cn-rtl-flip","cn-font-heading"]);function p(t){return Node.isStringLiteral(t)||Node.isNoSubstitutionTemplateLiteral(t)}var M=async({sourceFile:t,styleMap:e})=>{let r=new Set;return U(t,e,r),Y(t,e,r),Q(t,e,r),rt(t,e,r),t};function Q(t,e,r){t.forEachDescendant(n=>{if(!Node.isPropertyAssignment(n)||n.getNameNode().getText()!=="className")return;let s=n.getInitializer();!s||!Node.isCallExpression(s)||S(s)&&I(s,e,r);});}function $(t,e,r){let n=t.getLiteralText(),s=E(n);if(s.length===0)return;let o=s.filter(i=>!r.has(i));if(o.length===0){let i=m(n);t.setLiteralValue(i);return}let c=o.filter(i=>!A.has(i)).map(i=>e[i]).filter(i=>!!i);if(c.length>0){let i=c.join(" "),u=m(h(i,n));t.setLiteralValue(u),o.forEach(f=>r.add(f));}else {let i=m(n);t.setLiteralValue(i);}}function U(t,e,r){t.forEachDescendant(n=>{if(!Node.isCallExpression(n))return;let s=n.getExpression();if(!Node.isIdentifier(s)||s.getText()!=="cva")return;let o=n.getArguments()[0];Node.isStringLiteral(o)&&$(o,e,r);let l=n.getArguments()[1];if(!l||!Node.isObjectLiteralExpression(l))return;let c=l.getProperties().find(u=>Node.isPropertyAssignment(u)&&Node.isIdentifier(u.getNameNode())&&u.getNameNode().getText()==="variants");if(!c||!Node.isPropertyAssignment(c))return;let i=c.getInitializer();!i||!Node.isObjectLiteralExpression(i)||i.getProperties().forEach(u=>{if(!Node.isPropertyAssignment(u))return;let f=u.getInitializer();!f||!Node.isObjectLiteralExpression(f)||f.getProperties().forEach(g=>{if(!Node.isPropertyAssignment(g))return;let x=g.getInitializer();x&&Node.isStringLiteral(x)&&$(x,e,r);});});});}function Y(t,e,r){t.forEachDescendant(n=>{if(!Node.isJsxAttribute(n)||n.getNameNode().getText()!=="className")return;let s=n.getInitializer();if(!s)return;let o=Z(s);if(o.length>0){o.forEach(g=>I(g,e,r));return}let l=tt(s);if(l.length===0)return;let c=n.getParent()?.getParent();if(!c||!Node.isJsxOpeningElement(c)&&!Node.isJsxSelfClosingElement(c))return;let i=l.filter(g=>!r.has(g));if(i.length===0){P(s);return}let f=i.filter(g=>!A.has(g)).map(g=>e[g]).filter(g=>!!g);if(f.length>0){let g=f.join(" ");et(c,g);}else P(s);});}function Z(t){if(!Node.isJsxExpression(t))return [];let e=t.getExpression();if(!e||Node.isCallExpression(e)&&S(e))return [];let r=[];return e.forEachDescendant(n=>{Node.isCallExpression(n)&&S(n)&&r.push(n);}),r}function tt(t){let e=[];if(p(t))return E(t.getLiteralText());if(!Node.isJsxExpression(t))return e;let r=t.getExpression();if(!r)return e;if(p(r))return E(r.getLiteralText());if(Node.isCallExpression(r)&&S(r))for(let n of r.getArguments())p(n)&&e.push(...E(n.getLiteralText()));return e}function P(t){if(p(t)){let r=m(t.getLiteralText());t.setLiteralValue(r);return}if(!Node.isJsxExpression(t))return;let e=t.getExpression();if(e){if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);return}if(Node.isCallExpression(e)&&S(e)){for(let r of e.getArguments())if(p(r)){let n=m(r.getLiteralText());r.setLiteralValue(n);}N(e);}}}function E(t){let e=t.matchAll(/\bcn-[\w-]+\b/g);return Array.from(e,r=>r[0])}function m(t){return t.replace(/\bcn-[\w-]+\b/g,e=>A.has(e)?e:"").replace(/\s+/g," ").trim()}function N(t){if(!S(t))return;let e=t.getArguments(),r=e.filter(n=>p(n)?n.getLiteralText().trim()!=="":true);if(r.length!==e.length){let n=r.map(o=>o.getText()),s=t.getParent();s&&Node.isJsxExpression(s)?s.replaceWithText(`{cn(${n.join(", ")})}`):t.replaceWithText(`cn(${n.join(", ")})`);}}function et(t,e){if(!Node.isJsxOpeningElement(t)&&!Node.isJsxSelfClosingElement(t))return;let r=t.getAttributes().find(o=>Node.isJsxAttribute(o)&&o.getNameNode().getText()==="className");if(!r||!Node.isJsxAttribute(r)){t.addAttribute({name:"className",initializer:`{cn(${JSON.stringify(e)})}`});return}let n=r.getInitializer();if(!n){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(n)){let o=n.getLiteralText(),l=m(h(e,o));n.setLiteralValue(l);return}if(!Node.isJsxExpression(n))return;let s=n.getExpression();if(!s){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(s)){let o=s.getLiteralText(),l=m(h(e,o));s.setLiteralValue(l);return}if(Node.isCallExpression(s)&&S(s)){let o=s.getArguments()[0];if(p(o)){let i=o.getLiteralText(),u=m(h(e,i));o.setLiteralValue(u);for(let f=1;f<s.getArguments().length;f++){let g=s.getArguments()[f];if(p(g)){let x=g.getLiteralText(),y=m(x);y!==x&&g.setLiteralValue(y);}}N(s);return}let l=s.getArguments().map(i=>{if(p(i)){let u=m(i.getLiteralText());return u?JSON.stringify(u):null}return i.getText()}).filter(i=>i!==null),c=[JSON.stringify(e),...l];r.setInitializer(`{cn(${c.join(", ")})}`);return}r.setInitializer(`{cn(${JSON.stringify(e)}, ${s.getText()})}`);}function h(t,e){return twMerge(t,e)}function S(t){let e=t.getExpression();return Node.isIdentifier(e)&&e.getText()==="cn"}function rt(t,e,r){t.forEachDescendant(n=>{if(!Node.isCallExpression(n))return;let s=n.getExpression();if(!(!Node.isIdentifier(s)||s.getText()!=="mergeProps"))for(let o of n.getArguments()){if(!Node.isObjectLiteralExpression(o))continue;let l=o.getProperties().find(i=>Node.isPropertyAssignment(i)&&Node.isIdentifier(i.getNameNode())&&i.getNameNode().getText()==="className");if(!l||!Node.isPropertyAssignment(l))continue;let c=l.getInitializer();c&&Node.isCallExpression(c)&&S(c)&&I(c,e,r,true);}});}function I(t,e,r,n=false){let s=nt(t);if(s.length===0)return;let o=s.filter(i=>!r.has(i));if(o.length===0){w(t);return}let c=o.filter(i=>!A.has(i)).map(i=>e[i]).filter(i=>!!i);if(c.length===0){w(t);return}st(t,c.join(" ")),n&&o.forEach(i=>r.add(i));}function nt(t){let e=[];for(let r of t.getArguments())p(r)&&e.push(...E(r.getLiteralText()));return e}function w(t){for(let e of t.getArguments())if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);}N(t);}function st(t,e){let r=t.getArguments()[0];if(p(r)){let l=r.getLiteralText(),c=m(h(e,l));r.setLiteralValue(c);for(let i=1;i<t.getArguments().length;i++){let u=t.getArguments()[i];if(p(u)){let f=u.getLiteralText(),g=m(f);g!==f&&u.setLiteralValue(g);}}N(t);return}let n=t.getArguments().map(l=>{if(p(l)){let c=m(l.getLiteralText());return c?JSON.stringify(c):null}return l.getText()}).filter(l=>l!==null),s=[JSON.stringify(e),...n];t.getParent()&&t.replaceWithText(`cn(${s.join(", ")})`);}async function at(t,{styleMap:e,transformers:r=[M]}){let s=new Project({useInMemoryFileSystem:true}).createSourceFile("component.tsx",t,{scriptKind:ScriptKind.TSX,overwrite:true});for(let o of r)await o({sourceFile:s,styleMap:e});return s.getText()}var lt=async({sourceFile:t,config:e})=>{if(!e.style?.startsWith("base-"))return t;let r=[],n=t.getDescendantsOfKind(SyntaxKind.JsxElement);for(let s of n){let o=s.getOpeningElement(),l=o.getAttribute("render");if(!l)continue;let i=s.getJsxChildren().map(d=>d.getText()).join("").trim();if(!i||l.getKind()!==SyntaxKind.JsxAttribute)continue;let f=l.asKindOrThrow(SyntaxKind.JsxAttribute).getInitializer();if(!f||f.getKind()!==SyntaxKind.JsxExpression)continue;let x=f.asKindOrThrow(SyntaxKind.JsxExpression).getExpression();if(!x||x.getKind()!==SyntaxKind.JsxSelfClosingElement)continue;let y=x.asKindOrThrow(SyntaxKind.JsxSelfClosingElement),C=y.getTagNameNode().getText(),J=y.getAttributes().map(d=>d.getText()).join(" "),j=J?`{<${C} ${J}>${i}</${C}>}`:`{<${C}>${i}</${C}>}`,F=o.getTagNameNode().getText(),O=o.getAttributes().filter(d=>d.getKind()===SyntaxKind.JsxAttribute?d.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()!=="render":true).map(d=>d.getText()).join(" "),V=O?`${O} render=${j}`:`render=${j}`,z=`<${F} ${V} />`;r.push({elementStart:s.getStart(),elementEnd:s.getEnd(),newText:z});}for(let s of r.reverse()){let o=t.getFullText(),l=o.substring(0,s.elementStart)+s.newText+o.substring(s.elementEnd);t.replaceWithText(l);}return t};export{X as createStyleMap,lt as transformRender,at as transformStyle};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shadcn",
3
- "version": "4.20.1",
3
+ "version": "4.21.0",
4
4
  "description": "Add components to your apps.",
5
5
  "homepage": "https://ui.shadcn.com",
6
6
  "publishConfig": {
@@ -75,6 +75,7 @@
75
75
  "@modelcontextprotocol/sdk": "^1.26.0",
76
76
  "@types/validate-npm-package-name": "^4.0.2",
77
77
  "browserslist": "^4.26.2",
78
+ "cn": "^0.2.4",
78
79
  "commander": "^14.0.0",
79
80
  "cosmiconfig": "^9.0.0",
80
81
  "dedent": "^1.6.0",
@@ -93,7 +94,6 @@
93
94
  "recast": "^0.23.11",
94
95
  "socks": "^2.8.8",
95
96
  "stringify-object": "^5.0.0",
96
- "tailwind-merge": "^3.0.1",
97
97
  "ts-morph": "^26.0.0",
98
98
  "tsconfig-paths": "^4.2.0",
99
99
  "undici": "^7.27.2",