shadcn 4.21.1 → 4.21.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/tailwind.d.ts +1 -1
- package/package.json +2 -3
package/dist/index.d.ts
CHANGED
|
@@ -61,7 +61,7 @@ declare function fetchTree(style: string, tree: z.infer<typeof registryIndexSche
|
|
|
61
61
|
registryDependencies?: string[] | undefined;
|
|
62
62
|
files?: ({
|
|
63
63
|
path: string;
|
|
64
|
-
type: "registry:
|
|
64
|
+
type: "registry:page" | "registry:file";
|
|
65
65
|
target: string;
|
|
66
66
|
content?: string | undefined;
|
|
67
67
|
} | {
|
|
@@ -110,7 +110,7 @@ declare function fetchTree(style: string, tree: z.infer<typeof registryIndexSche
|
|
|
110
110
|
registryDependencies?: string[] | undefined;
|
|
111
111
|
files?: ({
|
|
112
112
|
path: string;
|
|
113
|
-
type: "registry:
|
|
113
|
+
type: "registry:page" | "registry:file";
|
|
114
114
|
target: string;
|
|
115
115
|
content?: string | undefined;
|
|
116
116
|
} | {
|
|
@@ -129,7 +129,7 @@ declare function fetchTree(style: string, tree: z.infer<typeof registryIndexSche
|
|
|
129
129
|
docs?: string | undefined;
|
|
130
130
|
categories?: string[] | undefined;
|
|
131
131
|
} | {
|
|
132
|
-
type: "registry:
|
|
132
|
+
type: "registry:lib" | "registry:block" | "registry:component" | "registry:ui" | "registry:hook" | "registry:page" | "registry:file" | "registry:theme" | "registry:style" | "registry:item" | "registry:example" | "registry:internal";
|
|
133
133
|
name: string;
|
|
134
134
|
$schema?: string | undefined;
|
|
135
135
|
tailwind?: {
|
|
@@ -149,7 +149,7 @@ declare function fetchTree(style: string, tree: z.infer<typeof registryIndexSche
|
|
|
149
149
|
registryDependencies?: string[] | undefined;
|
|
150
150
|
files?: ({
|
|
151
151
|
path: string;
|
|
152
|
-
type: "registry:
|
|
152
|
+
type: "registry:page" | "registry:file";
|
|
153
153
|
target: string;
|
|
154
154
|
content?: string | undefined;
|
|
155
155
|
} | {
|
package/dist/index.js
CHANGED
|
@@ -3,9 +3,9 @@ import {b,c,a as a$1}from'./chunk-3W6BGJGE.js';import {a}from'./chunk-SILUCKGE.j
|
|
|
3
3
|
To start over, remove the ${highlighter.info("components.json")} file and run ${highlighter.info("init")} again.`),logger.break(),process.exit(1)),r?.succeed();let o=spinner("Verifying framework.",{silent:e.silent}).start(),n=e.existingConfig?.tailwind,i=await getProjectInfo(e.cwd,{configCssFile:typeof n?.css=="string"?n.css:void 0});if(!i||i?.framework.name==="manual"){if(t["7"]=true,o?.fail(),!e.monorepo&&await isMonorepoRoot(e.cwd)){let l=await getMonorepoTargets(e.cwd);l.length>0&&(formatMonorepoMessage("init",l),process.exit(1));}logger.break(),i?.framework.links.installation&&logger.error(`We could not detect a supported framework at ${highlighter.info(e.cwd)}.
|
|
4
4
|
Visit ${highlighter.info(i?.framework.links.installation)} to manually configure your project.
|
|
5
5
|
Once configured, you can use the cli to add components.`),logger.break(),process.exit(1);}o?.succeed(`Verifying framework. Found ${highlighter.info(i.framework.label)}.`);let s="Validating Tailwind CSS.";i.tailwindVersion==="v4"&&(s=`Validating Tailwind CSS. Found ${highlighter.info("v4")}.`);let a=spinner(s,{silent:e.silent}).start();i.tailwindVersion==="v3"&&(!i?.tailwindConfigFile||!i?.tailwindCssFile)?(t["5"]=true,a?.fail()):i.tailwindVersion==="v4"&&!i?.tailwindCssFile?(t["5"]=true,a?.fail()):i.tailwindVersion?a?.succeed():(t["5"]=true,a?.fail());let c=spinner("Validating import alias.",{silent:e.silent}).start();return i?.aliasPrefix?c?.succeed():(t["6"]=true,c?.fail()),Object.keys(t).length>0&&(t["5"]&&(logger.break(),logger.error(`No Tailwind CSS configuration found at ${highlighter.info(e.cwd)}.`),logger.error("It is likely you do not have Tailwind CSS installed or have an invalid configuration."),logger.error("Install Tailwind CSS then try again."),i?.framework.links.tailwind&&logger.error(`Visit ${highlighter.info(i?.framework.links.tailwind)} to get started.`)),t["6"]&&(logger.break(),logger.error(`Could not find valid path aliases or package imports for ${highlighter.info("init")}.`),logger.error(`Configure path aliases in ${highlighter.info("tsconfig.json")} or imports in ${highlighter.info("package.json")}, then run ${highlighter.info("init")} again.`),logger.error(`Learn more at ${highlighter.info(`${SHADCN_URL}/docs/installation/manual#configure-import-aliases`)}.`)),logger.break(),process.exit(1)),{errors:t,projectInfo:i}}async function _(e,t,r={}){r={silent:false,writeFile:true,...r};let n=(await resolveRegistryNamespaces(e,t)).filter(m=>!t.registries?.[m]&&!Object.keys(BUILTIN_REGISTRIES).includes(m));if(n.length===0)return {config:t,newRegistries:[],discoveredRegistries:{},packageJsonRegistries:{}};let i=await getPackageJsonRegistries(t.resolvedPaths.cwd),s={},a=[];for(let m of n)i[m]?s[m]=i[m]:a.push(m);let c={};if(a.length>0){let m=await getRegistriesIndex({useCache:process.env.NODE_ENV!=="development"});if(m)for(let d of a)m[d]&&(c[d]=m[d]);}let l={...s,...c};if(Object.keys(l).length===0)return {config:t,newRegistries:[],discoveredRegistries:{},packageJsonRegistries:{}};let p=Object.fromEntries(Object.entries(t.registries||{}).filter(([m])=>!Object.keys(BUILTIN_REGISTRIES).includes(m))),f={...t,registries:{...p,...l}};if(r.writeFile&&Object.keys(c).length>0){let m=X__default.resolve(t.resolvedPaths.cwd,"components.json");if(F.existsSync(m)){let d=spinner("Updating components.json.",{silent:r.silent}).start(),u=await F.readJson(m),g={...u,registries:{...u.registries,...c}};await F.writeFile(m,JSON.stringify(g,null,2)+`
|
|
6
|
-
`,"utf-8"),d.succeed();}}return {config:f,newRegistries:Object.keys(l),discoveredRegistries:c,packageJsonRegistries:s}}var J={nova:{title:"Nova",description:"Lucide / Geist",style:"nova",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"lucide",font:"geist",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},vega:{title:"Vega",description:"Lucide / Inter",style:"vega",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"lucide",font:"inter",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},maia:{title:"Maia",description:"Hugeicons / Figtree",style:"maia",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"hugeicons",font:"figtree",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},lyra:{title:"Lyra",description:"Phosphor / JetBrains Mono",style:"lyra",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"phosphor",font:"jetbrains-mono",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},mira:{title:"Mira",description:"Hugeicons / Inter",style:"mira",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"hugeicons",font:"inter",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},luma:{title:"Luma",description:"Lucide / Inter",style:"luma",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"lucide",font:"inter",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},sera:{title:"Sera",description:"Lucide / Noto Sans + Playfair Display",style:"sera",baseColor:"taupe",theme:"taupe",chartColor:"taupe",iconLibrary:"lucide",font:"noto-sans",fontHeading:"playfair-display",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},rhea:{title:"Rhea",description:"Lucide / Inter",style:"rhea",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"lucide",font:"inter",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false}};function pr(e){let t=new URL(`${SHADCN_URL}/create`),{rtl:r,pointer:o,...n}=e??{};for(let[i,s]of Object.entries(n))s!==void 0&&t.searchParams.set(i,String(s));return r&&t.searchParams.set("rtl","true"),o&&t.searchParams.set("pointer","true"),t.toString()}async function mr(e){if(logger.break(),logger.log(` Build your custom preset on ${highlighter.info(e.createUrl)}`),logger.log(` ${e.followUp}`),logger.break(),e.prompt===false)return;let{proceed:t}=await ae({type:"confirm",name:"proceed",message:"Open in browser?",initial:true});t&&await Bs(e.createUrl);}function ne(e,t){let r=new URLSearchParams({base:e.base,style:e.style,baseColor:e.baseColor,theme:e.theme,iconLibrary:e.iconLibrary,font:e.font,rtl:String(e.rtl??false),menuAccent:e.menuAccent,menuColor:e.menuColor,radius:e.radius});return e.chartColor&&e.chartColor!=="neutral"&&r.set("chartColor",e.chartColor),e.fontHeading&&e.fontHeading!=="inherit"&&r.set("fontHeading",e.fontHeading),t?.preset&&r.set("preset",t.preset),t?.template&&r.set("template",t.template),t?.only&&r.set("only",t.only),t?.pointer&&r.set("pointer","true"),r.set("track","1"),`${SHADCN_URL}/init?${r.toString()}`}async function Ne(){let{base:e}=await ae({type:"select",name:"base",message:`Select a ${highlighter.info("component library")}`,choices:[{title:"Base UI (Recommended)",value:"base"},{title:"React Aria",value:"aria"},{title:"Radix UI",value:"radix"}]});return e||process.exit(1),e}async function qe(e){let t=Object.entries(J),{selectedPreset:r}=await ae({type:"select",name:"selectedPreset",message:`Which ${highlighter.info("preset")} would you like to use?`,choices:[...t.map(([n,i])=>({title:i.title,description:i.description,value:n})),{title:"Custom",description:`Build your own at ${highlighter.info(`${SHADCN_URL}/create`)}`,value:"custom"}]});if(r||process.exit(1),r==="custom"){let n=pr({command:"init",rtl:e.rtl,pointer:e.pointer,base:e.base,...e.template&&{template:e.template}});await mr({createUrl:n,followUp:`Then ${highlighter.info("copy and run the command")} from ui.shadcn.com.`}),process.exit(0);}let o=J[r];return o||process.exit(1),{url:ne({...o,base:e.base,rtl:e.rtl},{template:e.template,pointer:e.pointer}),base:e.base}}async function he(e,t,r){let o=configWithDefaults(createConfig({resolvedPaths:{cwd:t},...r?.registries&&{registries:r.registries}})),{config:n}=await _([e],o,{silent:true,writeFile:false});o=n,buildUrlAndHeadersForRegistryItem(e,o);let[i]=await getRegistryItems([e],{config:o,useCache:true}),s=i?.type==="registry:base"&&i.config?i.config:void 0,a=e;if(Us(e)){let c=new URL(e);c.searchParams.delete("track"),a=c.toString();}return {registryBaseConfig:s,installStyleIndex:i?.extends!=="none",url:a}}function Us(e){try{return new URL(e).pathname==="/init"&&e.startsWith(SHADCN_URL)}catch{return false}}var Ct={version:"4.21.
|
|
6
|
+
`,"utf-8"),d.succeed();}}return {config:f,newRegistries:Object.keys(l),discoveredRegistries:c,packageJsonRegistries:s}}var J={nova:{title:"Nova",description:"Lucide / Geist",style:"nova",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"lucide",font:"geist",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},vega:{title:"Vega",description:"Lucide / Inter",style:"vega",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"lucide",font:"inter",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},maia:{title:"Maia",description:"Hugeicons / Figtree",style:"maia",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"hugeicons",font:"figtree",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},lyra:{title:"Lyra",description:"Phosphor / JetBrains Mono",style:"lyra",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"phosphor",font:"jetbrains-mono",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},mira:{title:"Mira",description:"Hugeicons / Inter",style:"mira",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"hugeicons",font:"inter",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},luma:{title:"Luma",description:"Lucide / Inter",style:"luma",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"lucide",font:"inter",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},sera:{title:"Sera",description:"Lucide / Noto Sans + Playfair Display",style:"sera",baseColor:"taupe",theme:"taupe",chartColor:"taupe",iconLibrary:"lucide",font:"noto-sans",fontHeading:"playfair-display",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false},rhea:{title:"Rhea",description:"Lucide / Inter",style:"rhea",baseColor:"neutral",theme:"neutral",chartColor:"neutral",iconLibrary:"lucide",font:"inter",fontHeading:"inherit",menuAccent:"subtle",menuColor:"default",radius:"default",rtl:false}};function pr(e){let t=new URL(`${SHADCN_URL}/create`),{rtl:r,pointer:o,...n}=e??{};for(let[i,s]of Object.entries(n))s!==void 0&&t.searchParams.set(i,String(s));return r&&t.searchParams.set("rtl","true"),o&&t.searchParams.set("pointer","true"),t.toString()}async function mr(e){if(logger.break(),logger.log(` Build your custom preset on ${highlighter.info(e.createUrl)}`),logger.log(` ${e.followUp}`),logger.break(),e.prompt===false)return;let{proceed:t}=await ae({type:"confirm",name:"proceed",message:"Open in browser?",initial:true});t&&await Bs(e.createUrl);}function ne(e,t){let r=new URLSearchParams({base:e.base,style:e.style,baseColor:e.baseColor,theme:e.theme,iconLibrary:e.iconLibrary,font:e.font,rtl:String(e.rtl??false),menuAccent:e.menuAccent,menuColor:e.menuColor,radius:e.radius});return e.chartColor&&e.chartColor!=="neutral"&&r.set("chartColor",e.chartColor),e.fontHeading&&e.fontHeading!=="inherit"&&r.set("fontHeading",e.fontHeading),t?.preset&&r.set("preset",t.preset),t?.template&&r.set("template",t.template),t?.only&&r.set("only",t.only),t?.pointer&&r.set("pointer","true"),r.set("track","1"),`${SHADCN_URL}/init?${r.toString()}`}async function Ne(){let{base:e}=await ae({type:"select",name:"base",message:`Select a ${highlighter.info("component library")}`,choices:[{title:"Base UI (Recommended)",value:"base"},{title:"React Aria",value:"aria"},{title:"Radix UI",value:"radix"}]});return e||process.exit(1),e}async function qe(e){let t=Object.entries(J),{selectedPreset:r}=await ae({type:"select",name:"selectedPreset",message:`Which ${highlighter.info("preset")} would you like to use?`,choices:[...t.map(([n,i])=>({title:i.title,description:i.description,value:n})),{title:"Custom",description:`Build your own at ${highlighter.info(`${SHADCN_URL}/create`)}`,value:"custom"}]});if(r||process.exit(1),r==="custom"){let n=pr({command:"init",rtl:e.rtl,pointer:e.pointer,base:e.base,...e.template&&{template:e.template}});await mr({createUrl:n,followUp:`Then ${highlighter.info("copy and run the command")} from ui.shadcn.com.`}),process.exit(0);}let o=J[r];return o||process.exit(1),{url:ne({...o,base:e.base,rtl:e.rtl},{template:e.template,pointer:e.pointer}),base:e.base}}async function he(e,t,r){let o=configWithDefaults(createConfig({resolvedPaths:{cwd:t},...r?.registries&&{registries:r.registries}})),{config:n}=await _([e],o,{silent:true,writeFile:false});o=n,buildUrlAndHeadersForRegistryItem(e,o);let[i]=await getRegistryItems([e],{config:o,useCache:true}),s=i?.type==="registry:base"&&i.config?i.config:void 0,a=e;if(Us(e)){let c=new URL(e);c.searchParams.delete("track"),a=c.toString();}return {registryBaseConfig:s,installStyleIndex:i?.extends!=="none",url:a}}function Us(e){try{return new URL(e).pathname==="/init"&&e.startsWith(SHADCN_URL)}catch{return false}}var Ct={version:"4.21.3"};function C(e){if(logger.break(),logger.error("Something went wrong. Please check the error below for more details."),logger.error("If the problem persists, please open an issue on GitHub."),logger.error(""),typeof e=="string"&&(logger.error(e),Xe()),e instanceof RegistryError&&(e.message&&(logger.error(e.cause?"Error:":"Message:"),logger.error(e.message)),e.cause&&(logger.error(`
|
|
7
7
|
Message:`),logger.error(e.cause)),e.suggestion&&(logger.error(`
|
|
8
|
-
Suggestion:`),logger.error(e.suggestion)),Xe()),e instanceof z$1.ZodError){logger.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))logger.error(`- ${highlighter.info(t)}: ${r}`);Xe();}e instanceof Error&&(logger.error(e.message),Xe()),Xe();}function Ys(e){let t=e.match(/^(\d+)\.(\d+)\.\d+/);if(!t)return null;let r=Number.parseInt(t[1],10),o=Number.parseInt(t[2],10);return o===0?null:`${r}.${o-1}.0`}function qs(e=Ct.version,t=process.argv.slice(2)){let r=Ys(e);return r?[...getPackageRunnerCommand(getPackageManagerFromUserAgent()).split(" "),`shadcn@${r}`,...t].map(Xs).join(" "):null}function Xe(){let e=qs();e&&(logger.error(""),logger.error("You can also try a previous version to see if that works:"),logger.error(e)),logger.break(),process.exit(1);}function Xs(e){return /^[a-zA-Z0-9_./:@%+=,-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}var ta=process.env.SHADCN_GITHUB_URL??"https://github.com/shadcn-ui/ui.git";function z(e){return {...e,frameworks:e.frameworks??[],scaffold:e.scaffold??vo({title:e.title,templateDir:e.templateDir}),postInit:e.postInit??ia}}function we(e,{monorepo:t}){if(!t||!e.monorepo)return e;let r=e.monorepo,o={...e,templateDir:r.templateDir,defaultProjectName:r.defaultProjectName??r.templateDir,init:r.init??e.init,files:r.files??e.files};return o.scaffold=vo({title:e.title,templateDir:r.templateDir}),o}function ra(e){switch(e){case "pnpm":return ["--no-frozen-lockfile"];case "yarn":return ["--no-immutable"];default:return []}}async function oa(e,t){if(t==="pnpm")return;let r=X__default.join(e,"pnpm-workspace.yaml"),o=X__default.join(e,"package.json"),n=X__default.join(e,"pnpm-lock.yaml");F.existsSync(n)&&await F.remove(n);let i=F.existsSync(r),s=i?parsePnpmWorkspacePackages(await F.readFile(r,"utf8")):[],a=s.length>0;if(F.existsSync(o)){let c=await F.readFile(o,"utf8"),l=JSON.parse(c);a?l.packageManager=await na(t):delete l.packageManager,a&&(l.workspaces=s),await F.writeFile(o,JSON.stringify(l,null,2)+`
|
|
8
|
+
Suggestion:`),logger.error(e.suggestion)),Xe()),e instanceof z$1.ZodError){logger.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))logger.error(`- ${highlighter.info(t)}: ${r}`);Xe();}e instanceof Error&&(logger.error(e.message),Xe()),Xe();}function Ys(e){let t=e.match(/^(\d+)\.(\d+)\.\d+/);if(!t)return null;let r=Number.parseInt(t[1],10),o=Number.parseInt(t[2],10);return o===0?null:`${r}.${o-1}.0`}function qs(e=Ct.version,t=process.argv.slice(2)){let r=Ys(e);return r?[...getPackageRunnerCommand(getPackageManagerFromUserAgent()).split(" "),`shadcn@${r}`,...t].map(Xs).join(" "):null}function Xe(){let e=qs();e&&(logger.error(""),logger.error("You can also try a previous version to see if that works:"),logger.error(e)),logger.break(),process.exit(1);}function Xs(e){return /^[a-zA-Z0-9_./:@%+=,-]+$/.test(e)?e:`'${e.replace(/'/g,"'\\''")}'`}var ta=process.env.SHADCN_GITHUB_URL??"https://github.com/shadcn-ui/ui.git";function z(e){return {...e,frameworks:e.frameworks??[],scaffold:e.scaffold??vo({title:e.title,templateDir:e.templateDir}),postInit:e.postInit??ia}}function we(e,{monorepo:t}){if(!t||!e.monorepo)return e;let r=e.monorepo,o={...e,templateDir:r.templateDir,defaultProjectName:r.defaultProjectName??r.templateDir,init:r.init??e.init,files:r.files??e.files};return o.scaffold=vo({title:e.title,templateDir:r.templateDir}),o}function ra(e){switch(e){case "pnpm":return ["--no-frozen-lockfile"];case "yarn":return ["--no-immutable"];case "npm":return ["--no-audit","--no-fund"];default:return []}}async function oa(e,t){if(t==="pnpm")return;let r=X__default.join(e,"pnpm-workspace.yaml"),o=X__default.join(e,"package.json"),n=X__default.join(e,"pnpm-lock.yaml");F.existsSync(n)&&await F.remove(n);let i=F.existsSync(r),s=i?parsePnpmWorkspacePackages(await F.readFile(r,"utf8")):[],a=s.length>0;if(F.existsSync(o)){let c=await F.readFile(o,"utf8"),l=JSON.parse(c);a?l.packageManager=await na(t):delete l.packageManager,a&&(l.workspaces=s),await F.writeFile(o,JSON.stringify(l,null,2)+`
|
|
9
9
|
`);}i&&await F.remove(r),a&&t==="npm"&&await So(e);}async function na(e){try{let{stdout:t}=await execa(e,["--version"]);return `${e}@${t.trim()}`}catch{return `${e}@*`}}async function So(e){let t=await F.readdir(e,{withFileTypes:true});for(let r of t){if(r.name==="node_modules")continue;let o=X__default.join(e,r.name);if(r.isDirectory())await So(o);else if(r.name==="package.json"){let n=await F.readFile(o,"utf8");if(!n.includes("workspace:"))continue;let i=JSON.parse(n),s=false;for(let a of ["dependencies","devDependencies","peerDependencies","optionalDependencies"]){let c=i[a];if(c)for(let[l,p]of Object.entries(c))typeof p=="string"&&p.startsWith("workspace:")&&(c[l]="*",s=true);}s&&await F.writeFile(o,JSON.stringify(i,null,2)+`
|
|
10
10
|
`);}}}function vo({title:e,templateDir:t}){return async({projectPath:r,packageManager:o})=>{let n=spinner(`Creating a new ${e} project. This may take a few minutes.`).start();try{let i=process.env.SHADCN_TEMPLATE_DIR;if(i){let l=X__default.resolve(i,t);await F.copy(l,r,{filter:p=>!p.includes("node_modules")});}else {let l=X__default.join(Zs.tmpdir(),`shadcn-template-${Date.now()}`);await execa("git",["clone","--depth","1","--filter=blob:none","--sparse",ta,l]),await execa("git",["-C",l,"sparse-checkout","set",`templates/${t}`]);let p=X__default.resolve(l,"templates",t);await F.move(p,r),await F.remove(l);}await oa(r,o);let a=["install",...ra(o)];await execa(o,a,{cwd:r});let c=X__default.join(r,"package.json");if(F.existsSync(c)){let l=await F.readFile(c,"utf8"),p=JSON.parse(l);p.name=X__default.basename(r),await F.writeFile(c,JSON.stringify(p,null,2)+`
|
|
11
11
|
`);}n?.succeed(`Creating a new ${e} project.`);}catch(i){n?.fail(`Something went wrong creating a new ${e} project.`),C(i);}}}async function ia({projectPath:e}){try{await execa("git",["init"],{cwd:e}),await execa("git",["add","-A"],{cwd:e}),await execa("git",["commit","-m","feat: initial commit"],{cwd:e});}catch{}}async function ie(e){let t=X__default.resolve(e.projectPath,"packages/ui"),r=X__default.resolve(e.projectPath,"apps/web"),o=X__default.resolve(t,"components.json"),n=await F.readJson(o);e.registryBaseConfig&&(n=$o(n,e.registryBaseConfig)),n.tailwind.baseColor="neutral",e.rtl&&(n.rtl=true),e.menuColor&&(n.menuColor=e.menuColor),e.menuAccent&&(n.menuAccent=e.menuAccent),e.iconLibrary&&(n.iconLibrary=e.iconLibrary),await F.writeJson(o,n,{spaces:2});let i=X__default.resolve(r,"components.json"),s=await F.readJson(i);e.registryBaseConfig&&(s=$o(s,e.registryBaseConfig)),s.tailwind.baseColor="neutral",e.rtl&&(s.rtl=true),e.menuColor&&(s.menuColor=e.menuColor),e.menuAccent&&(s.menuAccent=e.menuAccent),e.iconLibrary&&(s.iconLibrary=e.iconLibrary),await F.writeJson(i,s,{spaces:2});let a=await resolveConfigPaths(t,rawConfigSchema.parse(n)),{config:c}=await _(e.components,a,{silent:true});await addComponents(e.components,c,{overwrite:true,silent:e.silent,isNewProject:true,skipFonts:true});let l=await resolveConfigPaths(r,rawConfigSchema.parse(s)),p=await resolveRegistryTree(e.components,configWithDefaults(c));if(p?.fonts?.length){let m={},d=new Set;for(let u of p.fonts){let g=u.name.replace(/^font-heading-/,"").replace("font-",""),y=u.font.dependency??`@fontsource-variable/${g}`;m[u.font.variable]=u.font.family,d.add(y);}await updateDependencies(Array.from(d),[],a,{silent:true}),await updateCssVars({theme:m},a,{silent:e.silent,overwriteCssVars:false,tailwindVersion:"v4"}),await updateCss(Object.fromEntries(Array.from(d).map(u=>[`@import "${u}"`,{}])),a,{silent:e.silent});}let f=a.iconLibrary;if(f&&f in iconLibraries){let m=[...iconLibraries[f].packages];await updateDependencies(m,[],a,{silent:true}),await updateDependencies(m,[],l,{silent:true});}return l}var No=z({name:"astro",title:"Astro",defaultProjectName:"astro-app",templateDir:"astro-app",frameworks:["astro"],create:async()=>{},files:[{type:"registry:page",path:"src/pages/index.astro",target:"src/pages/index.astro",content:Eo`---
|
package/dist/tailwind.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "shadcn",
|
|
3
|
-
"version": "4.21.
|
|
3
|
+
"version": "4.21.3",
|
|
4
4
|
"description": "Add components to your apps.",
|
|
5
5
|
"homepage": "https://ui.shadcn.com",
|
|
6
6
|
"publishConfig": {
|
|
@@ -77,7 +77,6 @@
|
|
|
77
77
|
"browserslist": "^4.26.2",
|
|
78
78
|
"cn": "^0.2.4",
|
|
79
79
|
"commander": "^14.0.0",
|
|
80
|
-
"cosmiconfig": "^9.0.0",
|
|
81
80
|
"dedent": "^1.6.0",
|
|
82
81
|
"deepmerge": "^4.3.1",
|
|
83
82
|
"diff": "^8.0.2",
|
|
@@ -100,7 +99,7 @@
|
|
|
100
99
|
"validate-npm-package-name": "^7.0.1",
|
|
101
100
|
"zod": "^3.24.1",
|
|
102
101
|
"zod-to-json-schema": "^3.24.6",
|
|
103
|
-
"@shadcn/registry": "0.1.
|
|
102
|
+
"@shadcn/registry": "0.1.2"
|
|
104
103
|
},
|
|
105
104
|
"devDependencies": {
|
|
106
105
|
"@antfu/ni": "^25.0.0",
|