#!/usr/bin/env node import {b as b$1,a as a$1}from'./chunk-UOTHKX3D.js';import {b,P,o,S as S$1,$,t,e,Z,Q,q,j,r,k,u,c as c$1,da,fa,h,i,f,g,s,O,d,ca,a,L,ma,N,na,ia,ga,ja,K,ka,M,R,oa,la,T,l,ea,p,G,X,A,Y,n as n$1,U as U$1,m,V as V$1,H as H$1,J as J$1,I,W}from'./chunk-F67Q5GTR.js';export{ia as fetchTree,ja as getItemTargetPath,na as getPreset,ma as getPresets,ka as getRegistries,ba as getRegistriesConfig,la as getRegistriesIndex,_ as getRegistry,ga as getRegistryBaseColor,fa as getRegistryBaseColors,ea as getRegistryIcons,$ as getRegistryItems,da as getRegistryStyles,ca as getShadcnRegistryIndex,aa as resolveRegistryItems,ha as resolveTree}from'./chunk-F67Q5GTR.js';import {c,o as o$1,n}from'./chunk-BZ3ASCNT.js';import {e as e$1}from'./chunk-VSDIRB3U.js';import'./chunk-RKTXGSVI.js';import*as E from'path';import E__default,{join}from'path';import {promises,existsSync}from'fs';import S from'fs-extra';import x from'postcss';import yi from'postcss/lib/at-rule';import ht,{z as z$1}from'zod';import {execa}from'execa';import _e from'prompts';import {SyntaxKind,Project,ScriptKind,VariableDeclarationKind}from'ts-morph';import ot,{tmpdir}from'os';import {Command}from'commander';import Sr from'deepmerge';import*as J from'fs/promises';import J__default from'fs/promises';import dt from'dedent';import Tr from'open';import En from'validate-npm-package-name';import {diffLines}from'diff';import {StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import {randomBytes}from'crypto';import bt from'fast-glob';async function or(e$1){let t$1={};if(!S.existsSync(e$1.cwd)||!S.existsSync(E__default.resolve(e$1.cwd,"package.json")))return t$1["1"]=true,{errors:t$1,projectInfo:null};let r=u("Preflight checks.",{silent:e$1.silent}).start();S.existsSync(E__default.resolve(e$1.cwd,"components.json"))&&!e$1.force&&(r?.fail(),t.break(),t.error(`A ${e.info("components.json")} file already exists at ${e.info(e$1.cwd)}. To start over, remove the ${e.info("components.json")} file and run ${e.info("init")} again.`),t.break(),process.exit(1)),r?.succeed();let i=u("Verifying framework.",{silent:e$1.silent}).start(),n=await q(e$1.cwd);(!n||n?.framework.name==="manual")&&(t$1["7"]=true,i?.fail(),t.break(),n?.framework.links.installation&&t.error(`We could not detect a supported framework at ${e.info(e$1.cwd)}. Visit ${e.info(n?.framework.links.installation)} to manually configure your project. Once configured, you can use the cli to add components.`),t.break(),process.exit(1)),i?.succeed(`Verifying framework. Found ${e.info(n.framework.label)}.`);let o="Validating Tailwind CSS.";n.tailwindVersion==="v4"&&(o=`Validating Tailwind CSS config. Found ${e.info("v4")}.`);let s=u(o,{silent:e$1.silent}).start();n.tailwindVersion==="v3"&&(!n?.tailwindConfigFile||!n?.tailwindCssFile)?(t$1["5"]=true,s?.fail()):n.tailwindVersion==="v4"&&!n?.tailwindCssFile?(t$1["5"]=true,s?.fail()):n.tailwindVersion?s?.succeed():(t$1["5"]=true,s?.fail());let a=u("Validating import alias.",{silent:e$1.silent}).start();return n?.aliasPrefix?a?.succeed():(t$1["6"]=true,a?.fail()),Object.keys(t$1).length>0&&(t$1["5"]&&(t.break(),t.error(`No Tailwind CSS configuration found at ${e.info(e$1.cwd)}.`),t.error("It is likely you do not have Tailwind CSS installed or have an invalid configuration."),t.error("Install Tailwind CSS then try again."),n?.framework.links.tailwind&&t.error(`Visit ${e.info(n?.framework.links.tailwind)} to get started.`)),t$1["6"]&&(t.break(),t.error("No import alias found in your tsconfig.json file."),n?.framework.links.installation&&t.error(`Visit ${e.info(n?.framework.links.installation)} to learn how to set an import alias.`)),t.break(),process.exit(1)),{errors:t$1,projectInfo:n}}function sr(e,t){if(e.includes("\0"))return false;let r;try{r=e;let g="";for(;r!==g&&r.includes("%");)g=r,r=decodeURIComponent(r);}catch{return false}let i=E__default.normalize(r.replace(/\\/g,"/")),n=E__default.normalize(t),o=g=>g.replace(/\[\.\.\..*?\]/g,"").includes("..");if(o(i)||o(r)||o(e))return false;let s=g=>g.replace(/\[\.\.\..*?\]/g,""),a=s(e),c=s(r);if([/\.\.[\/\\]/,/[\/\\]\.\./,/\.\./,/\.\.%/,/\x00/,/[\x01-\x1f]/].some(g=>g.test(a)||g.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(E__default.isAbsolute(i))return i.startsWith(n+E__default.sep);let d=E__default.resolve(n,i);return d.startsWith(n+E__default.sep)||d===n}async function Ze(e$1,t,r){if(!t.resolvedPaths.tailwindCss||!e$1||Object.keys(e$1).length===0)return;r={silent:false,...r};let i=t.resolvedPaths.tailwindCss,n=E__default.relative(t.resolvedPaths.cwd,i),o=u(`Updating ${e.info(n)}`,{silent:r.silent}).start(),s=await promises.readFile(i,"utf8"),a=await gi(s,e$1);await promises.writeFile(i,a,"utf8"),o.succeed();}async function gi(e,t){let r=[hi(t)],i=await x(r).process(e,{from:void 0}),n=i.css,o=i.root;if(o.nodes&&o.nodes.length>0){let s=o.nodes[o.nodes.length-1];s.type==="atrule"&&!s.nodes&&!n.trimEnd().endsWith(";")&&(n=n.trimEnd()+";");}return n=n.replace(/\/\* ---break--- \*\//g,""),n=n.replace(/(\n\s*\n)+/g,` `),n=n.trimEnd(),n}function hi(e){return {postcssPlugin:"update-css",Once(t){for(let[r,i]of Object.entries(e))if(r.startsWith("@")){let n=r.match(/@([a-zA-Z-]+)\s*(.*)/);if(!n)continue;let[,o,s]=n;if(o==="import"){if(!t.nodes?.find(c=>c.type==="atrule"&&c.name==="import"&&c.params===s)){let c=x.atRule({name:"import",params:s,raws:{semicolon:true}}),l=t.nodes?.filter(m=>m.type==="atrule"&&m.name==="import");if(l&&l.length>0){let m=l[l.length-1];c.raws.before=` `,t.insertAfter(m,c);}else !t.nodes||t.nodes.length,c.raws.before="",t.prepend(c);}}else if(o==="plugin"){let a=s;s&&!s.startsWith('"')&&!s.startsWith("'")&&(a=`"${s}"`);let c=m=>m.startsWith('"')&&m.endsWith('"')||m.startsWith("'")&&m.endsWith("'")?m.slice(1,-1):m;if(!t.nodes?.find(m=>m.type!=="atrule"||m.name!=="plugin"?false:c(m.params)===c(s))){let m=x.atRule({name:"plugin",params:a,raws:{semicolon:true,before:` `}}),d=t.nodes?.filter(h=>h.type==="atrule"&&h.name==="import"),g=t.nodes?.filter(h=>h.type==="atrule"&&h.name==="plugin");if(g&&g.length>0){let h=g[g.length-1];t.insertAfter(h,m);}else if(d&&d.length>0){let h=d[d.length-1];t.insertAfter(h,m),t.insertBefore(m,x.comment({text:"---break---"})),t.insertAfter(m,x.comment({text:"---break---"}));}else t.prepend(m),t.insertBefore(m,x.comment({text:"---break---"})),t.insertAfter(m,x.comment({text:"---break---"}));}}else if(typeof i=="object"&&Object.keys(i).length===0){if(!t.nodes?.find(c=>c.type==="atrule"&&c.name===o&&c.params===s)){let c=x.atRule({name:o,params:s,raws:{semicolon:true}});t.append(c),t.insertBefore(c,x.comment({text:"---break---"}));}}else if(o==="keyframes"){let a=t.nodes?.find(m=>m.type==="atrule"&&m.name==="theme"&&m.params==="inline");a||(a=x.atRule({name:"theme",params:"inline",raws:{semicolon:true,between:" ",before:` `}}),t.append(a),t.insertBefore(a,x.comment({text:"---break---"})));let c=a.nodes?.find(m=>m.type==="atrule"&&m.name==="keyframes"&&m.params===s),l;if(c?(l=x.atRule({name:"keyframes",params:s,raws:{semicolon:true,between:" ",before:` `}}),c.replaceWith(l)):(l=x.atRule({name:"keyframes",params:s,raws:{semicolon:true,between:" ",before:` `}}),a.append(l)),typeof i=="object")for(let[m,d]of Object.entries(i))te(l,m,d);}else if(o==="utility"){let a=t.nodes?.find(c=>c.type==="atrule"&&c.name===o&&c.params===s);if(a){if(typeof i=="object")for(let[c,l]of Object.entries(i))if(typeof l=="string"){let m=a.nodes?.find(g=>g.type==="decl"&&g.prop===c),d=x.decl({prop:c,value:l,raws:{semicolon:true,before:` `}});m?m.replaceWith(d):a.append(d);}else typeof l=="object"&&te(a,c,l);}else {let c=x.atRule({name:o,params:s,raws:{semicolon:true,between:" ",before:` `}});if(t.append(c),t.insertBefore(c,x.comment({text:"---break---"})),typeof i=="object")for(let[l,m]of Object.entries(i))if(typeof m=="string"){let d=x.decl({prop:l,value:m,raws:{semicolon:true,before:` `}});c.append(d);}else typeof m=="object"&&te(c,l,m);}}else o==="property"?te(t,r,i):cr(t,o,s,i);}else te(t,r,i);}}}function cr(e,t,r,i){let n=e.nodes?.find(o=>o.type==="atrule"&&o.name===t&&o.params===r);if(n||(n=x.atRule({name:t,params:r,raws:{semicolon:true,between:" ",before:` `}}),e.append(n),e.insertBefore(n,x.comment({text:"---break---"}))),typeof i=="object")for(let[o,s]of Object.entries(i))if(o.startsWith("@")){let a=o.match(/@([a-zA-Z-]+)\s*(.*)/);if(a){let[,c,l]=a;cr(n,c,l,s);}}else te(n,o,s);else if(typeof i=="string")try{let s=x.parse(`.temp{${i}}`).first;if(s&&s.nodes){let a=x.rule({selector:"temp",raws:{semicolon:!0,between:" ",before:` `}});s.nodes.forEach(c=>{if(c.type==="decl"){let l=c.clone();l.raws.before=` `,a.append(l);}}),a.nodes?.length&&n.append(a);}}catch(o){throw console.error("Error parsing at-rule content:",i,o),o}}function te(e,t,r){let i=e.nodes?.find(n=>n.type==="rule"&&n.selector===t);if(i||(i=x.rule({selector:t,raws:{semicolon:true,between:" ",before:` `}}),e.append(i)),typeof r=="object"){for(let[n,o]of Object.entries(r))if(n.startsWith("@")&&typeof o=="object"&&o!==null&&Object.keys(o).length===0){let s=n.match(/@([a-zA-Z-]+)\s*(.*)/);if(s){let[,a,c]=s,l=x.atRule({name:a,params:c,raws:{semicolon:true,before:` `}});i.append(l);}}else if(typeof o=="string"){let s=x.decl({prop:n,value:o,raws:{semicolon:true,before:` `}}),a=i.nodes?.find(c=>c.type==="decl"&&c.prop===n);a?a.replaceWith(s):i.append(s);}else if(typeof o=="object"){let s=n.startsWith("&")?t.replace(/^([^:]+)/,`$1${n.substring(1)}`):n;te(e,s,o);}}else if(typeof r=="string")try{let o=x.parse(`.temp{${r}}`).first;o&&o.nodes&&o.nodes.forEach(s=>{if(s.type==="decl"){let a=s.clone();a.raws.before=` `,i?.append(a);}});}catch(n){throw console.error("Error parsing rule content:",t,r,n),n}}async function et(e$1,t,r){if(!t.resolvedPaths.tailwindCss||!Object.keys(e$1??{}).length)return;r={cleanupDefaultNextStyles:false,silent:false,tailwindVersion:"v3",overwriteCssVars:false,initIndex:true,...r};let i=t.resolvedPaths.tailwindCss,n=E__default.relative(t.resolvedPaths.cwd,i),o=u(`Updating CSS variables in ${e.info(n)}`,{silent:r.silent}).start(),s=await promises.readFile(i,"utf8"),a=await bi(s,e$1??{},t,{cleanupDefaultNextStyles:r.cleanupDefaultNextStyles,tailwindVersion:r.tailwindVersion,tailwindConfig:r.tailwindConfig,overwriteCssVars:r.overwriteCssVars,initIndex:r.initIndex});await promises.writeFile(i,a,"utf8"),o.succeed();}async function bi(e,t,r,i={cleanupDefaultNextStyles:false,tailwindVersion:"v3",tailwindConfig:void 0,overwriteCssVars:false,initIndex:false}){i={cleanupDefaultNextStyles:false,tailwindVersion:"v3",tailwindConfig:void 0,overwriteCssVars:false,initIndex:false,...i};let n=[vi(t)];if(i.cleanupDefaultNextStyles&&n.push(fr()),i.tailwindVersion==="v4"){if(n=[],r.resolvedPaths?.cwd){let a=p(r.resolvedPaths.cwd);!a?.dependencies?.["tailwindcss-animate"]&&!a?.devDependencies?.["tailwindcss-animate"]&&i.initIndex&&n.push(ki({params:"tw-animate-css"}));}n.push(Ii({params:"dark (&:is(.dark *))"})),i.cleanupDefaultNextStyles&&n.push(fr()),n.push(Ri(t,{overwriteCssVars:i.overwriteCssVars})),n.push(Ci(t)),i.tailwindConfig&&(n.push(Pi(i.tailwindConfig)),n.push(Ei(i.tailwindConfig)),n.push(ji(i.tailwindConfig)));}r.tailwind.cssVariables&&i.initIndex&&n.push(xi({tailwindVersion:i.tailwindVersion}));let s=(await x(n).process(e,{from:void 0})).css;return s=s.replace(/\/\* ---break--- \*\//g,""),i.tailwindVersion==="v4"&&(s=s.replace(/(\n\s*\n)+/g,` `)),s}function xi({tailwindVersion:e}){return {postcssPlugin:"update-base-layer",Once(t){let r=[{selector:"*",apply:e==="v4"?"border-border outline-ring/50":"border-border"},{selector:"body",apply:"bg-background text-foreground"}],i=t.nodes.find(n=>n.type==="atrule"&&n.name==="layer"&&n.params==="base"&&r.every(({selector:o,apply:s})=>n.nodes?.some(a=>a.type==="rule"&&a.selector===o&&a.nodes.some(c=>c.type==="atrule"&&c.name==="apply"&&c.params===s))));i||(i=x.atRule({name:"layer",params:"base",raws:{semicolon:true,between:" ",before:` `}}),t.append(i),t.insertBefore(i,x.comment({text:"---break---"}))),r.forEach(({selector:n,apply:o})=>{i?.nodes?.find(a=>a.type==="rule"&&a.selector===n)||i?.append(x.rule({selector:n,nodes:[x.atRule({name:"apply",params:o,raws:{semicolon:true,before:` `}})],raws:{semicolon:true,between:" ",before:` `}}));});}}}function vi(e){return {postcssPlugin:"update-css-vars",Once(t){let r=t.nodes.find(i=>i.type==="atrule"&&i.name==="layer"&&i.params==="base");r instanceof yi||(r=x.atRule({name:"layer",params:"base",nodes:[],raws:{semicolon:true,before:` `,between:" "}}),t.append(r),t.insertBefore(r,x.comment({text:"---break---"}))),r!==void 0&&Object.entries(e).forEach(([i,n])=>{let o=i==="light"?":root":`.${i}`;Si(r,o,n);});}}}function mr(e){let t=e.nodes.find(r=>r.type==="rule"&&r.selector===":root");if(t){let r=["--background","--foreground"];t.nodes.filter(i=>i.type==="decl"&&r.includes(i.prop)).forEach(i=>i.remove()),t.nodes.length===0&&t.remove();}}function fr(){return {postcssPlugin:"cleanup-default-next-styles",Once(e){let t=e.nodes.find(i=>i.type==="rule"&&i.selector==="body");t&&(t.nodes.find(i=>i.type==="decl"&&i.prop==="color"&&["rgb(var(--foreground-rgb))","var(--foreground)"].includes(i.value))?.remove(),t.nodes.find(i=>i.type==="decl"&&i.prop==="background"&&(i.value.startsWith("linear-gradient")||i.value==="var(--background)"))?.remove(),t.nodes.find(i=>i.type==="decl"&&i.prop==="font-family"&&i.value==="Arial, Helvetica, sans-serif")?.remove(),t.nodes.length===0&&t.remove()),mr(e);let r=e.nodes.find(i=>i.type==="atrule"&&i.params==="(prefers-color-scheme: dark)");r&&(mr(r),r.nodes.length===0&&r.remove());}}}function Si(e,t,r){let i=e.nodes?.find(n=>n.type==="rule"&&n.selector===t);i||Object.keys(r).length>0&&(i=x.rule({selector:t,raws:{between:" ",before:` `}}),e.append(i)),Object.entries(r).forEach(([n,o])=>{let s=`--${n.replace(/^--/,"")}`,a=x.decl({prop:s,value:o,raws:{semicolon:true}}),c=i?.nodes.find(l=>l.type==="decl"&&l.prop===s);c?c.replaceWith(a):i?.append(a);});}function Ri(e,t){return {postcssPlugin:"update-css-vars-v4",Once(r){Object.entries(e).forEach(([i,n])=>{let o=i==="light"?":root":`.${i}`;if(i==="theme"){o="@theme";let a=$e(r);Object.entries(n).forEach(([c,l])=>{let m=`--${c.replace(/^--/,"")}`,d=x.decl({prop:m,value:l,raws:{semicolon:true}}),g=a?.nodes?.find(h=>h.type==="decl"&&h.prop===m);t.overwriteCssVars?g?g.replaceWith(d):a?.append(d):g||a?.append(d);});return}let s=r.nodes?.find(a=>a.type==="rule"&&a.selector===o);!s&&Object.keys(n).length>0&&(s=x.rule({selector:o,nodes:[],raws:{semicolon:true,between:" ",before:` `}}),r.append(s),r.insertBefore(s,x.comment({text:"---break---"}))),Object.entries(n).forEach(([a,c])=>{let l=`--${a.replace(/^--/,"")}`;l==="--sidebar-background"&&(l="--sidebar"),pr(c)&&(c=`hsl(${c})`);let m=x.decl({prop:l,value:c,raws:{semicolon:true}}),d=s?.nodes.find(g=>g.type==="decl"&&g.prop===l);t.overwriteCssVars?d?d.replaceWith(m):s?.append(m):d||s?.append(m);});});}}}function Ci(e){return {postcssPlugin:"update-theme",Once(t){let r=Array.from(new Set(Object.keys(e).flatMap(o=>Object.keys(e[o]||{}))));if(!r.length)return;let i=$e(t),n=i.nodes?.filter(o=>o.type==="decl"&&o.prop.startsWith("--"));for(let o of r){let s=Object.values(e).find(d=>d[o])?.[o];if(!s)continue;if(o==="radius"){let d={sm:"calc(var(--radius) - 4px)",md:"calc(var(--radius) - 2px)",lg:"var(--radius)",xl:"calc(var(--radius) + 4px)","2xl":"calc(var(--radius) + 8px)","3xl":"calc(var(--radius) + 12px)","4xl":"calc(var(--radius) + 16px)"};for(let[g,h]of Object.entries(d)){let u=x.decl({prop:`--radius-${g}`,value:h,raws:{semicolon:true}});i?.nodes?.find(w=>w.type==="decl"&&w.prop===u.prop)||i?.append(u);}continue}let a=pr(s)||Ni(s)?`--color-${o.replace(/^--/,"")}`:`--${o.replace(/^--/,"")}`;a==="--color-sidebar-background"&&(a="--color-sidebar");let c=`var(--${o})`;a==="--color-sidebar"&&(c="var(--sidebar)");let l=x.decl({prop:a,value:c,raws:{semicolon:true}});i?.nodes?.find(d=>d.type==="decl"&&d.prop===l.prop)||(n?.length?i?.insertAfter(n[n.length-1],l):i?.append(l));}}}}function $e(e){let t=e.nodes.find(r=>r.type==="atrule"&&r.name==="theme"&&r.params==="inline");return t||(t=x.atRule({name:"theme",params:"inline",nodes:[],raws:{semicolon:true,between:" ",before:` `}}),e.append(t),e.insertBefore(t,x.comment({text:"---break---"}))),t}function Ii({params:e}){return {postcssPlugin:"add-custom-variant",Once(t){if(!t.nodes.find(i=>i.type==="atrule"&&i.name==="custom-variant")){let i=t.nodes.filter(o=>o.type==="atrule"&&o.name==="import"),n=x.atRule({name:"custom-variant",params:e,raws:{semicolon:true,before:` `}});if(i.length>0){let o=i[i.length-1];t.insertAfter(o,n);}else t.insertAfter(t.nodes[0],n);t.insertBefore(n,x.comment({text:"---break---"}));}}}}function ki({params:e}){return {postcssPlugin:"add-custom-import",Once(t){let r=t.nodes.filter(o=>o.type==="atrule"&&o.name==="import"),i=t.nodes.find(o=>o.type==="atrule"&&o.name==="custom-variant");if(!r.some(o=>o.params.replace(/["']/g,"")===e)){let o=x.atRule({name:"import",params:`"${e}"`,raws:{semicolon:true,before:` `}});if(r.length>0){let s=r[r.length-1];t.insertAfter(s,o);}else i?(t.insertBefore(i,o),t.insertBefore(i,x.comment({text:"---break---"}))):(t.prepend(o),t.insertAfter(o,x.comment({text:"---break---"})));}}}}function Pi(e){return {postcssPlugin:"update-tailwind-config",Once(t){if(!e?.plugins)return;let i=$i(t)==="single"?"'":'"',n=t.nodes.filter(s=>s.type==="atrule"&&s.name==="plugin"),o=n[n.length-1]||t.nodes[0];for(let s of e.plugins){let a=s.replace(/^require\(["']|["']\)$/g,"");if(n.some(l=>l.params.replace(/["']/g,"")===a))continue;let c=x.atRule({name:"plugin",params:`${i}${a}${i}`,raws:{semicolon:true,before:` `}});t.insertAfter(o,c),t.insertBefore(c,x.comment({text:"---break---"}));}}}}function ji(e){return {postcssPlugin:"update-tailwind-config-keyframes",Once(t){if(!e?.theme?.extend?.keyframes)return;let r=$e(t),i=r.nodes?.filter(o=>o.type==="atrule"&&o.name==="keyframes"),n=z$1.record(z$1.string(),z$1.record(z$1.string(),z$1.string()));for(let[o,s]of Object.entries(e.theme.extend.keyframes)){if(typeof o!="string")continue;let a=n.safeParse(s);if(!a.success||i?.find(l=>l.type==="atrule"&&l.name==="keyframes"&&l.params===o))continue;let c=x.atRule({name:"keyframes",params:o,nodes:[],raws:{semicolon:true,between:" ",before:` `}});for(let[l,m]of Object.entries(a.data)){let d=x.rule({selector:l,nodes:Object.entries(m).map(([g,h])=>x.decl({prop:g,value:h,raws:{semicolon:true,before:` `,between:": "}})),raws:{semicolon:true,between:" ",before:` `}});c.append(d);}r.append(c),r.insertBefore(c,x.comment({text:"---break---"}));}}}}function Ei(e){return {postcssPlugin:"update-tailwind-config-animation",Once(t){if(!e?.theme?.extend?.animation)return;let r=$e(t),i=r.nodes?.filter(o=>o.type==="decl"&&o.prop.startsWith("--animate-")),n=z$1.record(z$1.string(),z$1.string()).safeParse(e.theme.extend.animation);if(n.success)for(let[o,s]of Object.entries(n.data)){let a=`--animate-${o}`;if(i?.find(l=>l.prop===a))continue;let c=x.decl({prop:a,value:s,raws:{semicolon:true,between:": ",before:` `}});r.append(c);}}}}function $i(e){return e.nodes[0].toString().includes("'")?"single":"double"}function pr(e){if(e.startsWith("hsl")||e.startsWith("rgb")||e.startsWith("#")||e.startsWith("oklch"))return false;let t=e.split(" ");return t.length===3&&t.slice(1,3).every(r=>r.includes("%"))}function Ni(e){return e.startsWith("hsl")||e.startsWith("rgb")||e.startsWith("#")||e.startsWith("oklch")||e.includes("--color-")}async function z(e,t$1,r,i){if(e=Array.from(new Set(e)),t$1=Array.from(new Set(t$1)),!e?.length&&!t$1?.length)return;i={silent:false,...i};let n=u("Installing dependencies.",{silent:i.silent})?.start(),o=await Ti(r),s="";if(Fi(r)&&o==="npm")if(i.silent)s="force";else {n.stopAndPersist(),t.warn(` It looks like you are using React 19. Some packages may fail to install due to peer dependency issues in npm (see https://ui.shadcn.com/react-19). `);let a=await _e([{type:"select",name:"flag",message:"How would you like to proceed?",choices:[{title:"Use --force",value:"force"},{title:"Use --legacy-peer-deps",value:"legacy-peer-deps"}]}]);a&&(s=a.flag);}n?.start(),await Ai(o,e,t$1,r.resolvedPaths.cwd,s),n?.succeed();}function Fi(e){let t=p(e.resolvedPaths.cwd,false);if(!t?.dependencies?.react)return false;let r=/^(?:\^|~)?19(?:\.\d+)*(?:-.*)?$/.test(t.dependencies.react),i=t.dependencies["react-day-picker"]?.startsWith("8");return r&&i}async function Ti(e){return p(e.resolvedPaths.cwd,false)?.dependencies?.expo?"expo":a$1(e.resolvedPaths.cwd)}async function Ai(e,t,r,i,n){if(e==="npm")return _i(t,r,i,n);if(e==="deno")return Di(t,r,i);if(e==="expo")return Li(t,r,i);t?.length&&await execa(e,["add",...t],{cwd:i}),r?.length&&await execa(e,["add","-D",...r],{cwd:i});}async function _i(e,t,r,i){e.length&&await execa("npm",["install",...i?[`--${i}`]:[],...e],{cwd:r}),t.length&&await execa("npm",["install",...i?[`--${i}`]:[],"-D",...t],{cwd:r});}async function Di(e,t,r){e?.length&&await execa("deno",["add",...e.map(i=>`npm:${i}`)],{cwd:r}),t?.length&&await execa("deno",["add","-D",...t.map(i=>`npm:${i}`)],{cwd:r});}async function Li(e,t,r){e.length&&await execa("npx",["expo","install",...e],{cwd:r}),t.length&&await execa("npx",["expo","install","-- -D",...t],{cwd:r});}async function rt(e$1,t$1,r){if(!e$1||Object.keys(e$1).length===0)return {envVarsAdded:[],envFileUpdated:null,envFileCreated:null};r={silent:false,...r};let i=u("Adding environment variables.",{silent:r.silent})?.start(),n=t$1.resolvedPaths.cwd,o=E__default.join(n,".env.local"),s=H$1(n);s&&(o=s);let a=existsSync(o),c=E__default.basename(o),l=Object.entries(e$1).map(([h,u])=>`${h}=${u}`).join(` `),m=[],d=null,g=null;if(a){let h=await promises.readFile(o,"utf-8"),u=J$1(h,l);if(m=I(h,l),m.length>0){if(await promises.writeFile(o,u,"utf-8"),d=E__default.relative(n,o),i?.succeed(`Added the following variables to ${e.info(c)}:`),!r.silent)for(let w of m)t.log(` ${e.success("+")} ${w}`);}else i?.stop();}else if(await promises.writeFile(o,l+` `,"utf-8"),g=E__default.relative(n,o),m=Object.keys(e$1),i?.succeed(`Added the following variables to ${e.info(c)}:`),!r.silent)for(let h of m)t.log(` ${e.success("+")} ${h}`);return !r.silent&&m.length>0&&t.break(),{envVarsAdded:m,envFileUpdated:d,envFileCreated:g}}async function ur(e,t){if(!e.fonts?.length)return e;let r=await q(t.resolvedPaths.cwd);if(!r)return e;let[i]=e.fonts;if(e.cssVars??={},e.cssVars.theme??={},r.framework.name==="next-app"||r.framework.name==="next-pages")return e.cssVars.theme[i.font.variable]=`var(${i.font.variable})`,e;let o=`@fontsource-variable/${i.name.replace("font-","")}`;return e.dependencies??=[],e.dependencies.push(o),e.css??={},e.css[`@import "${o}"`]={},e.css["@layer base"]??={},e.css["@layer base"].html={"@apply font-sans":{}},e.css["@layer base"].body={"@apply font-sans bg-background text-foreground":{}},e.cssVars.theme[i.font.variable]=i.font.family,e}async function it(e,t,r){if(!e?.length)return;let i=await q(t.resolvedPaths.cwd);if(!i||i.framework.name!=="next-app"&&i.framework.name!=="next-pages")return;let n=u("Updating fonts.",{silent:r.silent})?.start();try{await Gi(e,t,i),n?.succeed("Updating fonts.");}catch(o){throw n?.fail("Failed to update fonts."),o}}async function Gi(e,t,r){let i=await Ji(t,r);if(!i)return;let n=await promises.readFile(i,"utf-8"),o=await Yi(n,e);o!==n&&await promises.writeFile(i,o,"utf-8");}async function Ji(e,t){let r=e.resolvedPaths.cwd,i=t.isSrcDir,o=t.isTsx?"tsx":"jsx",s=i?[`src/app/layout.${o}`,`app/layout.${o}`]:[`app/layout.${o}`];for(let a of s){let c=E__default.join(r,a);if(existsSync(c))return c}return null}async function Yi(e,t,r){let n=new Project({compilerOptions:{}}).createSourceFile("layout.tsx",e,{scriptKind:ScriptKind.TSX}),o=t.filter(a=>a.font.provider==="google"),s=[];for(let a of o){let c=a.font.import;if(!c)continue;let l=n.getImportDeclaration(h=>h.getModuleSpecifierValue()==="next/font/google");if(l){if(l.getNamedImports().some(w=>w.getName()===c))continue;l.addNamedImport(c);}else n.addImportDeclaration({moduleSpecifier:"next/font/google",namedImports:[c]});let m=qi(c),d=Ki(a),g=Hi(n,a.font.variable);if(g)g.setInitializer(`${c}(${d})`),g.getName()!==m&&g.rename(m);else {let h=Xi(n);n.insertVariableStatement(h,{declarationKind:VariableDeclarationKind.Const,declarations:[{name:m,initializer:`${c}(${d})`}]}).appendWhitespace(` `);}s.push(m);}return s.length>0&&Qi(n,s),n.getFullText()}function Ki(e){let t={};return e.font.subsets?.length&&(t.subsets=e.font.subsets),e.font.weight?.length&&(t.weight=e.font.weight),t.variable=e.font.variable,JSON.stringify(t).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'")}function qi(e){return e.split("_").map((t,r)=>r===0?t.toLowerCase():t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function Hi(e,t){let r=e.getVariableStatements();for(let i of r)for(let n of i.getDeclarations()){let o=n.getInitializer();if(!o||o.getKind()!==SyntaxKind.CallExpression)continue;let a=o.getArguments();if(a.length===0)continue;let c=a[0].getText();if(c.includes("variable:")&&c.includes(t))return n}return null}function Xi(e){let t=e.getImportDeclarations();return t.length>0?t[t.length-1].getChildIndex()+1:0}function Qi(e,t){let r=e.getDescendantsOfKind(SyntaxKind.JsxOpeningElement);for(let i of r){if(i.getTagNameNode().getText()!=="html")continue;let o=i.getAttribute("className");if(!o){let l=t.map(m=>`${m}.variable`).join(", ");t.length===1?i.addAttribute({name:"className",initializer:`{${l}}`}):(he(e),i.addAttribute({name:"className",initializer:`{cn(${l})}`}));return}if(o.getKind()!==SyntaxKind.JsxAttribute)return;let s=o.asKindOrThrow(SyntaxKind.JsxAttribute),a=s.getInitializer();if(!a)return;let c=t.map(l=>`${l}.variable`);if(a.getKind()===SyntaxKind.StringLiteral){let l=a.getText().slice(1,-1);he(e),s.setInitializer(`{cn("${l}", ${c.join(", ")})}`);}else if(a.getKind()===SyntaxKind.JsxExpression){let l=a.asKindOrThrow(SyntaxKind.JsxExpression),m=l.getExpression();if(!m)return;let d=m.getText();if(d.startsWith("cn(")){if(c.every(w=>d.includes(w)))continue;let h=en(d),u=tn(h,c);l.replaceWithText(`{${u}}`);}else if(/^\w+\.variable$/.test(d)){if(c.includes(d))continue;c.length===1?l.replaceWithText(`{${c[0]}}`):(he(e),l.replaceWithText(`{cn(${c.join(", ")})}`));}else if(d.startsWith("`")&&d.endsWith("`")){let g=Zi(d);he(e),l.replaceWithText(`{cn(${[...g,...c].join(", ")})}`);}else he(e),l.replaceWithText(`{cn(${d}, ${c.join(", ")})}`);}}}function he(e){if(!e.getImportDeclaration(r=>r.getNamedImports().some(n=>n.getName()==="cn"))){let r=e.getImportDeclaration(i=>i.getModuleSpecifierValue().includes("/lib/utils"));r?r.getNamedImports().some(n=>n.getName()==="cn")||r.addNamedImport("cn"):e.addImportDeclaration({moduleSpecifier:"@/lib/utils",namedImports:["cn"]});}}function Zi(e){let t=[],r=[],n=e.slice(1,-1).split(/(\$\{[^}]+\})/);for(let o of n)if(o)if(o.startsWith("${")&&o.endsWith("}")){let s=o.slice(2,-1).trim();s&&r.push(s);}else {let s=o.trim().split(/\s+/).filter(Boolean);for(let a of s)t.push(`"${a}"`);}return [...t,...r]}function en(e){return e.replace(/,?\s*\w+\.variable/g,"").replace(/cn\(\s*,/,"cn(")}function tn(e,t){let r=t.join(", ");return e.replace(/\)$/,`, ${r})`)}async function ie(e,t,r){r={overwrite:false,silent:false,isNewProject:false,baseStyle:true,...r};let i=await l(t);return i&&i.ui&&i.ui.resolvedPaths.cwd!==t.resolvedPaths.cwd?await on(e,t,i,{...r,isRemote:e?.length===1&&!!e[0].match(/\/chat\/b\//)}):await nn(e,t,r)}async function nn(e,t$1,r){if(!r.baseStyle&&!e.length)return;let i=u("Checking registry.",{silent:r.silent})?.start(),n=await Y(e,P(t$1));if(!n)return i?.fail(),Z(new Error("Failed to fetch components from registry."));try{hr(n.files??[],t$1.resolvedPaths.cwd);}catch(a){return i?.fail(),Z(a)}i?.succeed();let o=await s(t$1);n=await ur(n,t$1),await U$1(n.tailwind?.config,t$1,{silent:r.silent,tailwindVersion:o});let s$1=await gr(e,t$1);await et(n.cssVars,t$1,{cleanupDefaultNextStyles:r.isNewProject,silent:r.silent,tailwindVersion:o,tailwindConfig:n.tailwind?.config,overwriteCssVars:s$1,initIndex:r.baseStyle}),await Ze(n.css,t$1,{silent:r.silent}),await rt(n.envVars,t$1,{silent:r.silent}),await z(n.dependencies,n.devDependencies,t$1,{silent:r.silent}),await it(n.fonts,t$1,{silent:r.silent}),await L(n.files,t$1,{overwrite:r.overwrite,silent:r.silent,path:r.path}),n.docs&&t.info(n.docs);}async function on(e,t$1,r,i){if(!i.baseStyle&&!e.length)return;let n=u("Checking registry.",{silent:i.silent})?.start(),o=await Y(e,P(t$1));if(!o)return n?.fail(),Z(new Error("Failed to fetch components from registry."));try{hr(o.files??[],t$1.resolvedPaths.cwd);}catch(w){return n?.fail(),Z(w)}n?.succeed();let s$1=[],a=[],c=[],l=u("Installing components.")?.start(),m$1=r.ui,d=await s(m$1),g=n$1(t$1.resolvedPaths.cwd,m$1.resolvedPaths.ui);if(o.tailwind?.config&&(await U$1(o.tailwind?.config,m$1,{silent:true,tailwindVersion:d}),a.push(E__default.relative(g,m$1.resolvedPaths.tailwindConfig))),o.cssVars){let w=await gr(e,t$1);await et(o.cssVars,m$1,{silent:true,tailwindVersion:d,tailwindConfig:o.tailwind?.config,overwriteCssVars:w}),a.push(E__default.relative(g,m$1.resolvedPaths.tailwindCss));}o.css&&(await Ze(o.css,m$1,{silent:true}),a.push(E__default.relative(g,m$1.resolvedPaths.tailwindCss))),o.envVars&&await rt(o.envVars,m$1,{silent:true}),await z(o.dependencies,o.devDependencies,m$1,{silent:true}),await it(o.fonts,m$1,{silent:true});let h=new Map;for(let w of o.files??[]){let R=w.type||"registry:ui";h.has(R)||h.set(R,[]),h.get(R).push(w);}for(let w of Array.from(h.keys())){let R=h.get(w),v=w==="registry:ui"?r.ui:t$1,Y=n$1(t$1.resolvedPaths.cwd,v.resolvedPaths.ui||v.resolvedPaths.cwd),T=await m(Y,v.resolvedPaths.cwd)??v.resolvedPaths.cwd,X=await L(R,v,{overwrite:i.overwrite,silent:true,rootSpinner:l,isRemote:i.isRemote,isWorkspace:true,path:i.path});s$1.push(...X.filesCreated.map(A=>E__default.relative(Y,E__default.join(T,A)))),a.push(...X.filesUpdated.map(A=>E__default.relative(Y,E__default.join(T,A)))),c.push(...X.filesSkipped.map(A=>E__default.relative(Y,E__default.join(T,A))));}if(l?.succeed(),s$1.sort(),a.sort(),c.sort(),!(s$1.length||a.length)&&!c.length&&u("No files updated.",{silent:i.silent})?.info(),s$1.length){u(`Created ${s$1.length} ${s$1.length===1?"file":"files"}:`,{silent:i.silent})?.succeed();for(let w of s$1)t.log(` - ${w}`);}if(a.length){u(`Updated ${a.length} ${a.length===1?"file":"files"}:`,{silent:i.silent})?.info();for(let w of a)t.log(` - ${w}`);}if(c.length){u(`Skipped ${c.length} ${a.length===1?"file":"files"}: (use --overwrite to overwrite)`,{silent:i.silent})?.info();for(let w of c)t.log(` - ${w}`);}o.docs&&t.info(o.docs);}async function gr(e,t){let r=await $(e,{config:t});return z$1.array(n).parse(r).some(n=>n.type==="registry:theme"||n.type==="registry:style"||n.type==="registry:font"||n.type==="registry:base")}function hr(e,t){for(let r of e)if(r?.target&&!sr(r.target,t))throw new Error(`We found an unsafe file path "${r.target} in the registry item. Installation aborted.`)}var st="https://codeload.github.com/shadcn-ui/ui/tar.gz/main",V={next:"next","next-monorepo":"next-monorepo",vite:"vite",start:"start"};async function Oe(e$1){e$1={srcDir:false,...e$1};let t$1=e$1.template&&V[e$1.template]?e$1.template:"next",r=e$1.name??(t$1===V.next||t$1===V.vite||t$1===V.start?"my-app":"my-monorepo"),i="latest",n=e$1.components?.length===1&&!!e$1.components[0].match(/\/chat\/b\//);if(e$1.components&&n)try{let[a]=await T(e$1.components),{meta:c}=z$1.object({meta:z$1.object({nextVersion:z$1.string()})}).parse(a);i=c.nextVersion,t$1=V.next;}catch(a){t.break(),Z(a);}if(!e$1.force){let{type:a,name:c}=await _e([{type:e$1.template||n?null:"select",name:"type",message:`The path ${e.info(e$1.cwd)} does not contain a package.json file. Would you like to start a new project?`,choices:[{title:"Next.js",value:"next"},{title:"Next.js (Monorepo)",value:"next-monorepo"},{title:"Vite",value:"vite"},{title:"TanStack Start",value:"start"}],initial:0},{type:e$1.name?null:"text",name:"name",message:"What is your project named?",initial:r,format:l=>l.trim(),validate:l=>l.length>128?"Name should be less than 128 characters.":true}]);t$1=a??t$1,r=c??r;}let o=await a$1(e$1.cwd,{withFallback:true}),s=`${e$1.cwd}/${r}`;try{await S.access(e$1.cwd,S.constants.W_OK);}catch{t.break(),t.error(`The path ${e.info(e$1.cwd)} is not writable.`),t.error(`It is likely you do not have write permissions for this folder or the path ${e.info(e$1.cwd)} does not exist.`),t.break(),process.exit(1);}return S.existsSync(E__default.resolve(e$1.cwd,r,"package.json"))&&(t.break(),t.error(`A project with the name ${e.info(r)} already exists.`),t.error("Please choose a different name and try again."),t.break(),process.exit(1)),t$1===V.next&&await an(s,{version:i,cwd:e$1.cwd,packageManager:o,srcDir:!!e$1.srcDir}),t$1===V["next-monorepo"]&&await cn(s,{packageManager:o}),t$1===V.vite&&await ln(s,{packageManager:o}),t$1===V.start&&await mn(s,{packageManager:o}),{projectPath:s,projectName:r,template:t$1}}async function an(e,t$1){let r=u("Creating a new Next.js project. This may take a few minutes.").start(),i=["--tailwind","--eslint","--typescript","--app",t$1.srcDir?"--src-dir":"--no-src-dir","--no-import-alias",`--use-${t$1.packageManager}`];(t$1.version.startsWith("15")||t$1.version.startsWith("latest")||t$1.version.startsWith("canary"))&&i.push("--turbopack"),(t$1.version.startsWith("latest")||t$1.version.startsWith("canary"))&&i.push("--no-react-compiler");try{await execa("npx",[`create-next-app@${t$1.version}`,e,"--silent",...i],{cwd:t$1.cwd});}catch{t.break(),t.error("Something went wrong creating a new Next.js project. Please try again."),process.exit(1);}r?.succeed("Creating a new Next.js project.");}async function cn(e,t){let r=u("Creating a new Next.js monorepo. This may take a few minutes.").start();try{let i=E__default.join(ot.tmpdir(),`shadcn-template-${Date.now()}`);await S.ensureDir(i);let n=await fetch(st);if(!n.ok)throw new Error(`Failed to download template: ${n.statusText}`);let o=E__default.resolve(i,"template.tar.gz");await S.writeFile(o,Buffer.from(await n.arrayBuffer())),await execa("tar",["-xzf",o,"-C",i,"--strip-components=2","ui-main/templates/monorepo-next"]);let s=E__default.resolve(i,"monorepo-next");await S.move(s,e),await S.remove(i),await execa(t.packageManager,["install"],{cwd:e});let a=E__default.join(e,"package.json");if(S.existsSync(a)){let l=await S.readFile(a,"utf8"),m=JSON.parse(l);m.name=e.split("/").pop(),await S.writeFile(a,JSON.stringify(m,null,2));}let c=process.cwd();await execa("git",["--version"],{cwd:e}),await execa("git",["init"],{cwd:e}),await execa("git",["add","-A"],{cwd:e}),await execa("git",["commit","-m","Initial commit"],{cwd:e}),r?.succeed("Creating a new Next.js monorepo.");}catch(i){r?.fail("Something went wrong creating a new Next.js monorepo."),Z(i);}}async function ln(e,t){let r=u("Creating a new Vite project. This may take a few minutes.").start();try{let i=E__default.join(ot.tmpdir(),`shadcn-template-${Date.now()}`);await S.ensureDir(i);let n=await fetch(st);if(!n.ok)throw new Error(`Failed to download template: ${n.statusText}`);let o=E__default.resolve(i,"template.tar.gz");await S.writeFile(o,Buffer.from(await n.arrayBuffer())),await execa("tar",["-xzf",o,"-C",i,"--strip-components=2","ui-main/templates/vite-app"]);let s=E__default.resolve(i,"vite-app");if(await S.move(s,e),await S.remove(i),t.packageManager!=="pnpm"){let c=E__default.join(e,"pnpm-lock.yaml");S.existsSync(c)&&await S.remove(c);}await execa(t.packageManager,["install"],{cwd:e});let a=E__default.join(e,"package.json");if(S.existsSync(a)){let c=await S.readFile(a,"utf8"),l=JSON.parse(c);l.name=e.split("/").pop(),await S.writeFile(a,JSON.stringify(l,null,2));}await execa("git",["--version"],{cwd:e}),await execa("git",["init"],{cwd:e}),await execa("git",["add","-A"],{cwd:e}),await execa("git",["commit","-m","Initial commit"],{cwd:e}),r?.succeed("Creating a new Vite project.");}catch(i){r?.fail("Something went wrong creating a new Vite project."),Z(i);}}async function mn(e,t){let r=u("Creating a new TanStack Start project. This may take a few minutes.").start();try{let i=E__default.join(ot.tmpdir(),`shadcn-template-${Date.now()}`);await S.ensureDir(i);let n=await fetch(st);if(!n.ok)throw new Error(`Failed to download template: ${n.statusText}`);let o=E__default.resolve(i,"template.tar.gz");await S.writeFile(o,Buffer.from(await n.arrayBuffer())),await execa("tar",["-xzf",o,"-C",i,"--strip-components=2","ui-main/templates/start-app"]);let s=E__default.resolve(i,"start-app");if(await S.move(s,e),await S.remove(i),t.packageManager!=="pnpm"){let c=E__default.join(e,"pnpm-lock.yaml");S.existsSync(c)&&await S.remove(c);}await execa(t.packageManager,["install"],{cwd:e});let a=E__default.join(e,"package.json");if(S.existsSync(a)){let c=await S.readFile(a,"utf8"),l=JSON.parse(c);l.name=e.split("/").pop(),await S.writeFile(a,JSON.stringify(l,null,2));}await execa("git",["--version"],{cwd:e}),await execa("git",["init"],{cwd:e}),await execa("git",["add","-A"],{cwd:e}),await execa("git",["commit","-m","Initial commit"],{cwd:e}),r?.succeed("Creating a new TanStack Start project.");}catch(i){r?.fail("Something went wrong creating a new TanStack Start project."),Z(i);}}async function U(e=process.cwd()){try{let{config:t}=await import('@dotenvx/dotenvx'),r=[".env.local",".env.development.local",".env.development",".env"];for(let i of r){let n=join(e,i);existsSync(n)&&t({path:n,overload:!1,quiet:!0});}}catch(t$1){t.warn("Failed to load env files:",t$1);}}var we=".bak";function wr(e){if(!S.existsSync(e))return null;let t=`${e}${we}`;try{return S.renameSync(e,t),t}catch(r){return console.error(`Failed to create backup of ${e}: ${r}`),null}}function yr(e){let t=`${e}${we}`;if(!S.existsSync(t))return false;try{return S.renameSync(t,e),!0}catch(r){return console.error(`Warning: Could not restore backup file ${t}: ${r}`),false}}function at(e){let t=`${e}${we}`;if(!S.existsSync(t))return false;try{return S.unlinkSync(t),!0}catch{return false}}async function br(e,t){let r=new Set,i=new Set,n=[...e];for(;n.length>0;){let o=n.shift();if(i.has(o))continue;i.add(o);let{registry:s}=G(o);s&&!c$1[s]&&r.add(s);try{let[a]=await X([o],t,{useCache:!0});if(a?.registryDependencies)for(let c of a.registryDependencies){let{registry:l}=G(c);l&&!c$1[l]&&r.add(l),i.has(c)||n.push(c);}}catch(a){if(a instanceof A){let{registry:c}=G(o);c&&!c$1[c]&&r.add(c);continue}continue}}return Array.from(r)}async function F(e,t,r={}){r={silent:false,writeFile:true,...r};let n=(await br(e,t)).filter(l=>!t.registries?.[l]&&!Object.keys(c$1).includes(l));if(n.length===0)return {config:t,newRegistries:[]};let o=await la({useCache:process.env.NODE_ENV!=="development"});if(!o)return {config:t,newRegistries:[]};let s={};for(let l of n)o[l]&&(s[l]=o[l]);if(Object.keys(s).length===0)return {config:t,newRegistries:[]};let a=Object.fromEntries(Object.entries(t.registries||{}).filter(([l])=>!Object.keys(c$1).includes(l))),c$2={...t,registries:{...a,...s}};if(r.writeFile){let{resolvedPaths:l,...m}=c$2,d=u("Updating components.json.",{silent:r.silent}).start(),g=c.parse(m);await S.writeFile(E__default.resolve(t.resolvedPaths.cwd,"components.json"),JSON.stringify(g,null,2)+` `,"utf-8"),d.succeed();}return {config:c$2,newRegistries:Object.keys(s)}}async function vr(e$1,t,r){if(!e$1)return;r={silent:false,...r};let i=E__default.relative(t.resolvedPaths.cwd,t.resolvedPaths.tailwindConfig),n=u(`Updating ${e.info(i)}`,{silent:r.silent}).start(),o=await promises.readFile(t.resolvedPaths.tailwindConfig,"utf8"),s=await hn(o,e$1,t);await promises.writeFile(t.resolvedPaths.tailwindConfig,s,"utf8"),n?.succeed();}async function hn(e,t,r){let i=await V$1(e,r),n=i.getDescendantsOfKind(SyntaxKind.ObjectLiteralExpression).find(o=>o.getProperties().some(s=>s.isKind(SyntaxKind.PropertyAssignment)&&s.getName()==="content"));return n?(wn(n,t),i.getFullText()):e}async function wn(e,t){let r=W(e),i=e.getProperty("content");if(!i){let n={name:"content",initializer:`[${r}${t.join(`${r}, ${r}`)}${r}]`};return e.addPropertyAssignment(n),e}if(i.isKind(SyntaxKind.PropertyAssignment)){let n=i.getInitializer();if(n?.isKind(SyntaxKind.ArrayLiteralExpression))for(let o of t){let s=`${r}${o}${r}`;n.getElements().map(a=>a.getText()).includes(s)||n.addElement(s);}return e}return e}process.on("exit",e=>{let t=E__default.resolve(process.cwd(),"components.json");return e===0?at(t):yr(t)});var lt=z$1.object({cwd:z$1.string(),name:z$1.string().optional(),components:z$1.array(z$1.string()).optional(),yes:z$1.boolean(),defaults:z$1.boolean(),force:z$1.boolean(),silent:z$1.boolean(),isNewProject:z$1.boolean(),srcDir:z$1.boolean().optional(),cssVariables:z$1.boolean(),rtl:z$1.boolean().optional(),template:z$1.string().optional().refine(e=>e?V[e]:true,{message:"Invalid template. Please use 'next', 'vite', 'start' or 'next-monorepo'."}),baseColor:z$1.string().optional().refine(e=>e?b.find(t=>t.name===e):true,{message:`Invalid base color. Please use '${b.map(e=>e.name).join("', '")}'`}),baseStyle:z$1.boolean(),registryBaseConfig:c.deepPartial().optional()}),Rr=new Command().name("init").description("initialize your project and install dependencies").argument("[components...]","names, url or local path to component").option("-t, --template