@jongh/cli 3.0.0 → 4.0.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.
- package/dist/index.js +19 -19
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {Command}from'commander';import {intro,confirm,outro,spinner,log,select}from'@clack/prompts';import
|
|
2
|
+
import {Command}from'commander';import {intro,confirm,outro,spinner,log,select}from'@clack/prompts';import le from'chalk';import T from'fs-extra';import v from'path';import {z as z$1}from'zod';import ze from'fast-glob';import {loadConfig,createMatchPath}from'tsconfig-paths';import {Project,SyntaxKind}from'ts-morph';import {detect,resolveCommand}from'package-manager-detector';import {packageDirectory}from'pkg-dir';import ge from'handlebars';import {StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio.js';import {Server}from'@modelcontextprotocol/sdk/server/index.js';import {ListToolsRequestSchema,CallToolRequestSchema,ListPromptsRequestSchema,GetPromptRequestSchema}from'@modelcontextprotocol/sdk/types.js';import {zodToJsonSchema}from'zod-to-json-schema';var K=t=>{let e={};for(let r of t)e[r]=r;return e},H=K(["config_not_found","resolve_path_fail","failed_to_fetch"]);K(["components.json","tsconfig.json","panda.config.*","package.json"]);var x=class extends Error{issue;constructor(e){super(),this.name="NewError",this.issue=e;}get format(){return this.issue.code+`
|
|
3
3
|
`+this.issue.message?.join(`
|
|
4
|
-
`)}},u=t=>{let e;switch(t.code){case H.config_not_found:e=`error occured while config ${t.configFile}`;break;case H.resolve_path_fail:e=`failed to resolve your path, current ${t.cwd}`;break;case H.failed_to_fetch:e=`failed to fetch ${t.target} [${t.statusCode}]`;break;default:e="error occured";}return new x({...t,message:[...t.message||"",e]})};var L=z$1.enum(["panda","tailwind"]),q=z$1.object({utils:z$1.string(),components:z$1.string(),hooks:z$1.string()}),b={fileName:"components.json",schema:z$1.discriminatedUnion("style",[q.extend({style:z$1.literal("panda"),styledsystem:z$1.string()}).strict(),q.extend({style:z$1.literal("tailwind")}).strict()])},Te=z$1.object({name:z$1.string(),content:z$1.string(),type:z$1.enum(["ui","hooks","utils"])}),Z=z$1.object({name:z$1.string(),styles:z$1.record(z$1.string(),z$1.object({dependencies:z$1.array(z$1.string()).optional(),files:z$1.array(Te)}))});z$1.object({name:z$1.string(),dependencies:z$1.array(z$1.string()).optional(),file:z$1.string()});function Q(t){try{return T.readJsonSync(v.resolve(t,b.fileName))}catch(e){return u({code:"config_not_found",configFile:b.fileName,message:[e instanceof Error?e.message:""]})}}function F(t){let e=loadConfig(t);if(e.resultType==="failed")throw u({code:"config_not_found",configFile:"tsconfig.json",message:["cannot found tsconfig.json"]});return e}async function X(t){return await T.pathExists(v.join(t,"components.json"))}function ee(t,e){let r=["./","./src/","./app/","./src/app"].map(o=>v.resolve(t,o));for(let[o,a]of Object.entries(e.paths)){let n=v.join(t,e.baseUrl||"",a[0].replace(/\/\*$/,""));if(r.some(i=>i===n||i.includes(n)))return o.replace(/\/\*$/,"")}return null}function te(t,e){let r=["./","./src/","./app/","./src/app"].map(o=>v.resolve(t,o));for(let o of Object.values(e.paths)){let a=v.join(t,e.baseUrl||"",o[0].replace(/\/\*$/,""));if(r.some(n=>n===a||n.includes(a)))return a}return null}function re(t,e,r){let o=v.join(t,e);for(let[a,n]of Object.entries(r.paths)){let i=n[0].replace(/\/\*$/,"");if(o===v.join(t,r.baseUrl||"",i))return a.replace(/\/\*$/,"")}return null}async function oe(t){try{let e=await ze.glob(["panda.config.*"],{cwd:t,deep:3});if(!e.length)throw u({code:"config_not_found",configFile:"panda.config.*",message:["failed to find panda.config file"]});return e[0]}catch(e){throw u({code:"config_not_found",configFile:"panda.config.*",message:[e instanceof Error?e.message:"unknown error occured finding panda.config"]})}}async function C(t,e){let r=createMatchPath(e.absoluteBaseUrl,e.paths)(t,void 0,()=>true);if(!r)throw u({code:"resolve_path_fail",target:t,cwd:process.cwd(),message:["resolve error"]});return r}async function ne(t){let e=t.match(/outdir:\s*["']([^"']+)["']/),r=t.match(/importMap:\s*({[^}]+}|["'][^"']+["'])/),o=e?e[1]:null,a=null;if(r){let n=r[1];if(n.startsWith("{")){let i=n.match(/css:\s*["']([^"']+)["']/);a=i?i[1].replace(/\/css$/,""):null;}else a=n.replace(/["']/g,"");}return {outdir:o,importMap:a}}function ae(t,e){let r=t,o=[{from:/@\/component\/([^/"']+)\/(?:panda|tailwind)/g,to:`${e.components}/$1`},{from:/@utils\//g,to:`${e.utils}/`},{from:/@hooks\//g,to:`${e.hooks}/`},{from:/@components\//g,to:`${e.components}/`}];return e.style==="panda"&&o.push({from:/@styled-system\//g,to:`${e.styledsystem}/`}),o.forEach(({from:a,to:n})=>{r=r.replace(a,n);}),r}function ie(t){let r=new Project().addSourceFileAtPath(t),o=[{namedImports:[{name:"preset"}],moduleSpecifier:"panda-animation"},{namedImports:[{name:"defaultPreset"}],moduleSpecifier:"./preset"}];r.addImportDeclarations(o);let n=r.getFirstDescendantByKind(SyntaxKind.CallExpression)?.getArguments()[0];n?(n.getProperty("presets")||n.addPropertyAssignment({name:"presets",initializer:'[preset(), "@pandacss/preset-panda", defaultPreset]'}),r.saveSync()):console.warn("Could not modify panda.config.ts. add presets : [preset(), @pandacss/preset-panda, defaultPreset] in your panda.config");}async function O(t,e){let r=await detect({cwd:t}),o=resolveCommand(r?.agent||"npm","add",e);if(o)return o}var We=z$1.object({components:z$1.array(z$1.string()).optional(),cwd:z$1.string()}),De=(process.env.JDS_REGISTRY_URL??"https://jds-docs.vercel.app").replace(/\/$/,""),k=
|
|
4
|
+
`)}},u=t=>{let e;switch(t.code){case H.config_not_found:e=`error occured while config ${t.configFile}`;break;case H.resolve_path_fail:e=`failed to resolve your path, current ${t.cwd}`;break;case H.failed_to_fetch:e=`failed to fetch ${t.target} [${t.statusCode}]`;break;default:e="error occured";}return new x({...t,message:[...t.message||"",e]})};var L=z$1.enum(["panda","tailwind"]),q=z$1.object({utils:z$1.string(),components:z$1.string(),hooks:z$1.string()}),b={fileName:"components.json",schema:z$1.discriminatedUnion("style",[q.extend({style:z$1.literal("panda"),styledsystem:z$1.string()}).strict(),q.extend({style:z$1.literal("tailwind")}).strict()])},Te=z$1.object({name:z$1.string(),content:z$1.string(),type:z$1.enum(["ui","hooks","utils"])}),Z=z$1.object({name:z$1.string(),styles:z$1.record(z$1.string(),z$1.object({dependencies:z$1.array(z$1.string()).optional(),files:z$1.array(Te)}))});z$1.object({name:z$1.string(),dependencies:z$1.array(z$1.string()).optional(),file:z$1.string()});function Q(t){try{return T.readJsonSync(v.resolve(t,b.fileName))}catch(e){return u({code:"config_not_found",configFile:b.fileName,message:[e instanceof Error?e.message:""]})}}function F(t){let e=loadConfig(t);if(e.resultType==="failed")throw u({code:"config_not_found",configFile:"tsconfig.json",message:["cannot found tsconfig.json"]});return e}async function X(t){return await T.pathExists(v.join(t,"components.json"))}function ee(t,e){let r=["./","./src/","./app/","./src/app"].map(o=>v.resolve(t,o));for(let[o,a]of Object.entries(e.paths)){let n=v.join(t,e.baseUrl||"",a[0].replace(/\/\*$/,""));if(r.some(i=>i===n||i.includes(n)))return o.replace(/\/\*$/,"")}return null}function te(t,e){let r=["./","./src/","./app/","./src/app"].map(o=>v.resolve(t,o));for(let o of Object.values(e.paths)){let a=v.join(t,e.baseUrl||"",o[0].replace(/\/\*$/,""));if(r.some(n=>n===a||n.includes(a)))return a}return null}function re(t,e,r){let o=v.join(t,e);for(let[a,n]of Object.entries(r.paths)){let i=n[0].replace(/\/\*$/,"");if(o===v.join(t,r.baseUrl||"",i))return a.replace(/\/\*$/,"")}return null}async function oe(t){try{let e=await ze.glob(["panda.config.*"],{cwd:t,deep:3});if(!e.length)throw u({code:"config_not_found",configFile:"panda.config.*",message:["failed to find panda.config file"]});return e[0]}catch(e){throw u({code:"config_not_found",configFile:"panda.config.*",message:[e instanceof Error?e.message:"unknown error occured finding panda.config"]})}}async function C(t,e){let r=createMatchPath(e.absoluteBaseUrl,e.paths)(t,void 0,()=>true);if(!r)throw u({code:"resolve_path_fail",target:t,cwd:process.cwd(),message:["resolve error"]});return r}async function ne(t){let e=t.match(/outdir:\s*["']([^"']+)["']/),r=t.match(/importMap:\s*({[^}]+}|["'][^"']+["'])/),o=e?e[1]:null,a=null;if(r){let n=r[1];if(n.startsWith("{")){let i=n.match(/css:\s*["']([^"']+)["']/);a=i?i[1].replace(/\/css$/,""):null;}else a=n.replace(/["']/g,"");}return {outdir:o,importMap:a}}function ae(t,e){let r=t,o=[{from:/@\/component\/([^/"']+)\/(?:panda|tailwind)/g,to:`${e.components}/$1`},{from:/@utils\//g,to:`${e.utils}/`},{from:/@hooks\//g,to:`${e.hooks}/`},{from:/@components\//g,to:`${e.components}/`}];return e.style==="panda"&&o.push({from:/@styled-system\//g,to:`${e.styledsystem}/`}),o.forEach(({from:a,to:n})=>{r=r.replace(a,n);}),r}function ie(t){let r=new Project().addSourceFileAtPath(t),o=[{namedImports:[{name:"preset"}],moduleSpecifier:"panda-animation"},{namedImports:[{name:"defaultPreset"}],moduleSpecifier:"./preset"}];r.addImportDeclarations(o);let n=r.getFirstDescendantByKind(SyntaxKind.CallExpression)?.getArguments()[0];n?(n.getProperty("presets")||n.addPropertyAssignment({name:"presets",initializer:'[preset(), "@pandacss/preset-panda", defaultPreset]'}),r.saveSync()):console.warn("Could not modify panda.config.ts. add presets : [preset(), @pandacss/preset-panda, defaultPreset] in your panda.config");}async function O(t,e){let r=await detect({cwd:t}),o=resolveCommand(r?.agent||"npm","add",e);if(o)return o}var We=z$1.object({components:z$1.array(z$1.string()).optional(),cwd:z$1.string()}),De=(process.env.JDS_REGISTRY_URL??"https://jds-docs.vercel.app").replace(/\/$/,""),k=le.bold.red,B=le.bold.blue,de=new Command().name("add").argument("[components...]").option("-c, --cwd <cwd>","current working directory, default to process.cwd()",process.cwd()).action(async(t,e)=>{try{let r=We.parse({components:t,...e});intro(B("install components..."));let o=b.schema.parse(Q(r.cwd),{errorMap:()=>({message:"components.json is invalid"})}),a=F(r.cwd),n={utils:await C(o.utils,a),components:await C(o.components,a),hooks:await C(o.hooks,a)},i=r.components?.map(l=>l.toLowerCase());if(!i?.length)return;let d=await Promise.allSettled(i.map(async l=>{let c=await fetch(`${De}/${l}.json`);if(!c.ok)throw u({code:"failed_to_fetch",target:l,statusCode:c.status,message:[c.statusText]});return await c.json()}));for(let[l,c]of d.entries()){if(c.status==="rejected"){c.reason instanceof x?console.log(k(c.reason.format)):console.log(k(c.reason));continue}try{let p=Z.parse(c.value,{errorMap:()=>({message:`registry for ${i[l]} is invaliad`})}),y=p.styles[o.style];if(!y){let[g]=Object.keys(p.styles);if(!g){console.log(k(`${i[l]} has no styles`));continue}if(!await confirm({message:`${i[l]} does not support ${o.style}. Install ${g} instead?`}))continue;y=p.styles[g];}let h=v.join(n.components,i[l]);if(T.pathExistsSync(h)&&!await confirm({message:`Component ${i[l]} already exists. Do you want to overwrite it?`}))return;y.files.forEach(g=>{let _=ae(g.content,o);g.type==="ui"?T.outputFileSync(v.join(h,g.name),_):T.outputFileSync(v.join(n[g.type],g.name),_,"utf-8");});let m=y.dependencies||[],f=m.length?await O(r.cwd,m):void 0,$=m.length?f?`Run this command in the terminal : ${f.command} ${f.args.join(" ")}`:`Cannot find your package manager, install this dependencies: ${m.join(" ")}`:"No additional dependencies required";outro(B(`${i[l]} completed successfully
|
|
5
5
|
${$}`));}catch(p){p instanceof Error&&console.log(k(p.message));}}}catch(r){outro(k(B("error occured"))),r instanceof z$1.ZodError&&console.log(r.message),r instanceof x&&console.log(k(r.format)),r instanceof Error&&console.log(k(r.message)),process.exit(1);}});var pe=`@import "tailwindcss";
|
|
6
6
|
|
|
7
7
|
@theme inline {
|
|
@@ -116,91 +116,91 @@ import {Command}from'commander';import {intro,confirm,outro,spinner,log,select}f
|
|
|
116
116
|
--text-caption2--font-weight: var(--font-weight-semibold);
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
@utility
|
|
119
|
+
@utility typo-display1 {
|
|
120
120
|
font-size: var(--text-display1);
|
|
121
121
|
font-weight: var(--text-display1--font-weight);
|
|
122
122
|
letter-spacing: var(--text-display1--letter-spacing);
|
|
123
123
|
line-height: var(--text-display1--line-height);
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
@utility
|
|
126
|
+
@utility typo-display2 {
|
|
127
127
|
font-size: var(--text-display2);
|
|
128
128
|
font-weight: var(--text-display2--font-weight);
|
|
129
129
|
letter-spacing: var(--text-display2--letter-spacing);
|
|
130
130
|
line-height: var(--text-display2--line-height);
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
@utility
|
|
133
|
+
@utility typo-title1 {
|
|
134
134
|
font-size: var(--text-title1);
|
|
135
135
|
font-weight: var(--text-title1--font-weight);
|
|
136
136
|
letter-spacing: var(--text-title1--letter-spacing);
|
|
137
137
|
line-height: var(--text-title1--line-height);
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
@utility
|
|
140
|
+
@utility typo-title2 {
|
|
141
141
|
font-size: var(--text-title2);
|
|
142
142
|
font-weight: var(--text-title2--font-weight);
|
|
143
143
|
letter-spacing: var(--text-title2--letter-spacing);
|
|
144
144
|
line-height: var(--text-title2--line-height);
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
@utility
|
|
147
|
+
@utility typo-title3 {
|
|
148
148
|
font-size: var(--text-title3);
|
|
149
149
|
font-weight: var(--text-title3--font-weight);
|
|
150
150
|
letter-spacing: var(--text-title3--letter-spacing);
|
|
151
151
|
line-height: var(--text-title3--line-height);
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
@utility
|
|
154
|
+
@utility typo-heading1 {
|
|
155
155
|
font-size: var(--text-heading1);
|
|
156
156
|
font-weight: var(--text-heading1--font-weight);
|
|
157
157
|
letter-spacing: var(--text-heading1--letter-spacing);
|
|
158
158
|
line-height: var(--text-heading1--line-height);
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
@utility
|
|
161
|
+
@utility typo-heading2 {
|
|
162
162
|
font-size: var(--text-heading2);
|
|
163
163
|
font-weight: var(--text-heading2--font-weight);
|
|
164
164
|
letter-spacing: var(--text-heading2--letter-spacing);
|
|
165
165
|
line-height: var(--text-heading2--line-height);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
@utility
|
|
168
|
+
@utility typo-body1 {
|
|
169
169
|
font-size: var(--text-body1);
|
|
170
170
|
font-weight: var(--text-body1--font-weight);
|
|
171
171
|
letter-spacing: var(--text-body1--letter-spacing);
|
|
172
172
|
line-height: var(--text-body1--line-height);
|
|
173
173
|
}
|
|
174
174
|
|
|
175
|
-
@utility
|
|
175
|
+
@utility typo-body2 {
|
|
176
176
|
font-size: var(--text-body2);
|
|
177
177
|
font-weight: var(--text-body2--font-weight);
|
|
178
178
|
letter-spacing: var(--text-body2--letter-spacing);
|
|
179
179
|
line-height: var(--text-body2--line-height);
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
-
@utility
|
|
182
|
+
@utility typo-label1 {
|
|
183
183
|
font-size: var(--text-label1);
|
|
184
184
|
font-weight: var(--text-label1--font-weight);
|
|
185
185
|
letter-spacing: var(--text-label1--letter-spacing);
|
|
186
186
|
line-height: var(--text-label1--line-height);
|
|
187
187
|
}
|
|
188
188
|
|
|
189
|
-
@utility
|
|
189
|
+
@utility typo-label2 {
|
|
190
190
|
font-size: var(--text-label2);
|
|
191
191
|
font-weight: var(--text-label2--font-weight);
|
|
192
192
|
letter-spacing: var(--text-label2--letter-spacing);
|
|
193
193
|
line-height: var(--text-label2--line-height);
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
@utility
|
|
196
|
+
@utility typo-caption1 {
|
|
197
197
|
font-size: var(--text-caption1);
|
|
198
198
|
font-weight: var(--text-caption1--font-weight);
|
|
199
199
|
letter-spacing: var(--text-caption1--letter-spacing);
|
|
200
200
|
line-height: var(--text-caption1--line-height);
|
|
201
201
|
}
|
|
202
202
|
|
|
203
|
-
@utility
|
|
203
|
+
@utility typo-caption2 {
|
|
204
204
|
font-size: var(--text-caption2);
|
|
205
205
|
font-weight: var(--text-caption2--font-weight);
|
|
206
206
|
letter-spacing: var(--text-caption2--letter-spacing);
|
|
@@ -646,7 +646,7 @@ export const defaultPreset = definePreset({
|
|
|
646
646
|
utilities,
|
|
647
647
|
})
|
|
648
648
|
|
|
649
|
-
`;var j=["rose","pink","fuchsia","purple","violet","indigo","blue","sky","cyan","teal","emerald","green","lime","yellow","amber","orange","red","neutral","stone","zinc","gray","slate"],I=["neutral","stone","zinc","gray","slate"],E=z$1.object({primary:z$1.enum(j),secondary:z$1.enum(j),gray:z$1.enum(I)}),ue=t=>ge.compile(me)(t),fe=t=>ge.compile(pe)(t);var W=z$1.object({cwd:z$1.string().default(()=>process.cwd()),yes:z$1.boolean().default(false),style:L.default("panda"),primary:E.shape.primary.default("neutral"),secondary:E.shape.secondary.default("slate"),gray:E.shape.gray.default("gray")}),D=async t=>t.yes?W.parse(t):W.parse({...t,style:t.style??await select({message:"Pick component style",initialValue:"panda",options:L.options.map(e=>({value:e,label:e}))}),primary:t.primary??await select({message:"Pick primary color",initialValue:"neutral",options:j.map(e=>({value:e,label:e}))}),secondary:t.secondary??await select({message:"Pick secondary color",initialValue:"slate",options:j.map(e=>({value:e,label:e}))}),gray:t.gray??await select({message:"Pick gray color",initialValue:"gray",options:I.map(e=>({value:e,label:e}))})});var V=
|
|
649
|
+
`;var j=["rose","pink","fuchsia","purple","violet","indigo","blue","sky","cyan","teal","emerald","green","lime","yellow","amber","orange","red","neutral","stone","zinc","gray","slate"],I=["neutral","stone","zinc","gray","slate"],E=z$1.object({primary:z$1.enum(j),secondary:z$1.enum(j),gray:z$1.enum(I)}),ue=t=>ge.compile(me)(t),fe=t=>ge.compile(pe)(t);var W=z$1.object({cwd:z$1.string().default(()=>process.cwd()),yes:z$1.boolean().default(false),style:L.default("panda"),primary:E.shape.primary.default("neutral"),secondary:E.shape.secondary.default("slate"),gray:E.shape.gray.default("gray")}),D=async t=>t.yes?W.parse(t):W.parse({...t,style:t.style??await select({message:"Pick component style",initialValue:"panda",options:L.options.map(e=>({value:e,label:e}))}),primary:t.primary??await select({message:"Pick primary color",initialValue:"neutral",options:j.map(e=>({value:e,label:e}))}),secondary:t.secondary??await select({message:"Pick secondary color",initialValue:"slate",options:j.map(e=>({value:e,label:e}))}),gray:t.gray??await select({message:"Pick gray color",initialValue:"gray",options:I.map(e=>({value:e,label:e}))})});var V=le.bold.red,ye=le.bold.blue,Je=["tailwindcss","clsx","tailwind-merge","tailwind-variants"],ve=new Command().name("init").description("Initialize the project").option("-c, --cwd <cwd>","current working directory, default to process.cwd()",process.cwd()).option("-y, --yes","skip prompts and use default options",false).option("--style <style>","component style").option("--primary <color>","primary color").option("--secondary <color>","secondary color").option("--gray <color>","gray color").action(async t=>{let e=spinner();e.start("Initializing");try{let r=await D({cwd:v.resolve(t.cwd),yes:t.yes,style:t.style,primary:t.primary,secondary:t.secondary,gray:t.gray}),o=await G(r);if(e.stop("successfully Initialized!"),o?.style==="tailwind"){let a=await O(r.cwd,Je);a&&outro(ye(`Run this command in the terminal : ${a.command} ${a.args.join(" ")}`));}}catch(r){e.stop(V(ye("error occured"))),r instanceof z$1.ZodError&&console.log(r.message),r instanceof x&&console.log(V(r.format)),r instanceof Error&&console.log(V(r.message)),process.exit(1);}});async function G(t){let e=t.cwd||await packageDirectory();if(!e)throw u({code:"config_not_found",configFile:"package.json",message:[`cannot find package.json in ${e}`]});let r=F(e),o=ee(e,r);if(o===null)throw u({code:"resolve_path_fail",target:"tsconfig.json",cwd:e,message:[`cannot find paths alias in your ${v.join(e,"tsconfig.json")}`]});if(await X(e)&&(await confirm({message:"you already initialize,are you want to overwrite it?"})||process.exit(0)),t.style==="panda"){let n=await oe(e),i=await T.readFile(v.join(e,n),"utf-8"),d="styled-system",{outdir:l,importMap:c}=await ne(i);c?d=c:d=re(e,l||"styled-system",r)||".",l&&(d=l);let p=b.schema.parse({style:t.style,utils:`${o}/utils`,components:`${o}/components`,hooks:`${o}/hooks`,styledsystem:d},{errorMap:()=>({message:"components.json is invalid"})});await T.writeFile(v.resolve(e,"components.json"),JSON.stringify(p),"utf-8");let y=ue({primary:t.primary,secondary:t.secondary,gray:t.gray});return await T.writeFile(v.join(e,"preset.ts"),y),ie(v.resolve(e,n)),p}if(t.style==="tailwind"){let n=te(e,r);if(n===null)throw u({code:"resolve_path_fail",target:"tsconfig.json",cwd:e,message:[`cannot find base path in your ${v.join(e,"tsconfig.json")}`]});let i=b.schema.parse({style:t.style,utils:`${o}/utils`,components:`${o}/components`,hooks:`${o}/hooks`},{errorMap:()=>({message:"components.json is invalid"})});await T.writeFile(v.resolve(e,"components.json"),JSON.stringify(i),"utf-8");let d=fe({primary:t.primary,secondary:t.secondary,gray:t.gray});return await T.outputFile(v.join(n,"styles.css"),d),await T.outputFile(v.join(await C(i.utils,r),"cn.ts"),`import { type ClassValue, clsx } from "clsx"
|
|
650
650
|
import { twMerge } from "tailwind-merge"
|
|
651
651
|
|
|
652
652
|
export function cn(...inputs: ClassValue[]) {
|
|
@@ -678,7 +678,7 @@ export function cn(...inputs: ClassValue[]) {
|
|
|
678
678
|
**Important notes:**
|
|
679
679
|
- Color values must only be used from the lists above.
|
|
680
680
|
- Colors not in the list (e.g., 'magenta', 'brown') cannot be used.
|
|
681
|
-
- When executing the 'DesignSystemCLI init' tool, color arguments must be passed with the exact names from the list.`}},{role:"user",content:{type:"text",text:"I need to set up the theme colors for my design system. Can you guide me through the process?"}},{role:"assistant",content:{type:"text",text:"I can help you set up the theme colors for your design system. First, you need to select a primary color. Please choose from the following colors: rose, pink, fuchsia, purple, violet, indigo, blue, sky, cyan, teal, emerald, green, lime, yellow, amber, orange, red, neutral, stone, zinc, gray, slate. Which color would you like to use as your primary color?"}}]});var be=new Command().name("mcp").description("Manage your design system").action(async()=>{try{let t=new StdioServerTransport;await z.connect(t);}catch(t){console.error(t);}});var we={"@radix-ui/react-accessible-icon":"AccessibleIcon","@radix-ui/react-accordion":"Accordion","@radix-ui/react-alert-dialog":"AlertDialog","@radix-ui/react-aspect-ratio":"AspectRatio","@radix-ui/react-avatar":"Avatar","@radix-ui/react-checkbox":"Checkbox","@radix-ui/react-collapsible":"Collapsible","@radix-ui/react-context-menu":"ContextMenu","@radix-ui/react-dialog":"Dialog","@radix-ui/react-direction":"Direction","@radix-ui/react-dropdown-menu":"DropdownMenu","@radix-ui/react-form":"Form","@radix-ui/react-hover-card":"HoverCard","@radix-ui/react-label":"Label","@radix-ui/react-menubar":"Menubar","@radix-ui/react-navigation-menu":"NavigationMenu","@radix-ui/react-popover":"Popover","@radix-ui/react-portal":"Portal","@radix-ui/react-progress":"Progress","@radix-ui/react-radio-group":"RadioGroup","@radix-ui/react-scroll-area":"ScrollArea","@radix-ui/react-select":"Select","@radix-ui/react-separator":"Separator","@radix-ui/react-slider":"Slider","@radix-ui/react-slot":"Slot","@radix-ui/react-switch":"Switch","@radix-ui/react-tabs":"Tabs","@radix-ui/react-toast":"Toast","@radix-ui/react-toggle":"Toggle","@radix-ui/react-toggle-group":"ToggleGroup","@radix-ui/react-toolbar":"Toolbar","@radix-ui/react-tooltip":"Tooltip","@radix-ui/react-visually-hidden":"VisuallyHidden"};function M(t,e,r){return r?t===r:t===e}function ke(t){return `import {${t}} from "radix-ui"`}function je(t){let e=[];return t.getImportDeclarations().forEach(r=>{let o=r.getModuleSpecifierValue();if(!(o in we))return;let a=we[o];e.push(o);let n=r.getNamespaceImport();if(n){let d=n.getText();a!==d&&(a+=` as ${d}`),r.replaceWithText(ke(a));return}let i=r.getNamedImports();if(i.length){let d=a;i.forEach(
|
|
681
|
+
- When executing the 'DesignSystemCLI init' tool, color arguments must be passed with the exact names from the list.`}},{role:"user",content:{type:"text",text:"I need to set up the theme colors for my design system. Can you guide me through the process?"}},{role:"assistant",content:{type:"text",text:"I can help you set up the theme colors for your design system. First, you need to select a primary color. Please choose from the following colors: rose, pink, fuchsia, purple, violet, indigo, blue, sky, cyan, teal, emerald, green, lime, yellow, amber, orange, red, neutral, stone, zinc, gray, slate. Which color would you like to use as your primary color?"}}]});var be=new Command().name("mcp").description("Manage your design system").action(async()=>{try{let t=new StdioServerTransport;await z.connect(t);}catch(t){console.error(t);}});var we={"@radix-ui/react-accessible-icon":"AccessibleIcon","@radix-ui/react-accordion":"Accordion","@radix-ui/react-alert-dialog":"AlertDialog","@radix-ui/react-aspect-ratio":"AspectRatio","@radix-ui/react-avatar":"Avatar","@radix-ui/react-checkbox":"Checkbox","@radix-ui/react-collapsible":"Collapsible","@radix-ui/react-context-menu":"ContextMenu","@radix-ui/react-dialog":"Dialog","@radix-ui/react-direction":"Direction","@radix-ui/react-dropdown-menu":"DropdownMenu","@radix-ui/react-form":"Form","@radix-ui/react-hover-card":"HoverCard","@radix-ui/react-label":"Label","@radix-ui/react-menubar":"Menubar","@radix-ui/react-navigation-menu":"NavigationMenu","@radix-ui/react-popover":"Popover","@radix-ui/react-portal":"Portal","@radix-ui/react-progress":"Progress","@radix-ui/react-radio-group":"RadioGroup","@radix-ui/react-scroll-area":"ScrollArea","@radix-ui/react-select":"Select","@radix-ui/react-separator":"Separator","@radix-ui/react-slider":"Slider","@radix-ui/react-slot":"Slot","@radix-ui/react-switch":"Switch","@radix-ui/react-tabs":"Tabs","@radix-ui/react-toast":"Toast","@radix-ui/react-toggle":"Toggle","@radix-ui/react-toggle-group":"ToggleGroup","@radix-ui/react-toolbar":"Toolbar","@radix-ui/react-tooltip":"Tooltip","@radix-ui/react-visually-hidden":"VisuallyHidden"};function M(t,e,r){return r?t===r:t===e}function ke(t){return `import {${t}} from "radix-ui"`}function je(t){let e=[];return t.getImportDeclarations().forEach(r=>{let o=r.getModuleSpecifierValue();if(!(o in we))return;let a=we[o];e.push(o);let n=r.getNamespaceImport();if(n){let d=n.getText();a!==d&&(a+=` as ${d}`),r.replaceWithText(ke(a));return}let i=r.getNamedImports();if(i.length){let d=a;i.forEach(l=>{let c=l.getName(),p=l.getAliasNode()?.getText(),y=`${d}.${c}`;for(let h of [SyntaxKind.JsxOpeningElement,SyntaxKind.JsxClosingElement,SyntaxKind.JsxSelfClosingElement])t.getDescendantsOfKind(h).forEach(m=>{let f=m.getTagNameNode().getText();M(f,c,p)&&m.getTagNameNode().replaceWithText(y);});t.getDescendantsOfKind(SyntaxKind.TypeQuery).forEach(h=>{h.getChildren().forEach(m=>{let f=m.getText();M(f,c,p)&&m.replaceWithText(y);});}),t.getDescendantsOfKind(SyntaxKind.ExpressionStatement).forEach(h=>{h.getChildrenOfKind(SyntaxKind.BinaryExpression).forEach(f=>{f.getRight().getChildren().forEach(g=>{let _=g.getText();M(_,c,p)&&g.replaceWithText(y);});});}),t.getDescendantsOfKind(SyntaxKind.VariableDeclaration).forEach(h=>{let m=h.getInitializer();m&&m.getChildren().forEach(f=>{let $=f.getText();M($,c,p)&&f.replaceWithText(y);});});}),r.replaceWithText(ke(d));}}),{source:t.getFullText(),packages:e}}var Ce=new Command().name("radix-ui-import").action(()=>{intro("find .tsx files...");let t=ze.sync("**/*.tsx",{ignore:["**/node_modules/**"],dot:false}),e=new Project,r="";t.forEach(o=>{let a=e.addSourceFileAtPathIfExists(v.join(process.cwd(),o));if(a)try{let{packages:n}=je(a);r+=n.join(" "),a.save();}catch(n){log.error(`failed to transform ${o} ${n}`);}}),r.length?`copy this to delete and install new package
|
|
682
682
|
<your package manager's delete command> ${r}
|
|
683
|
-
<your package manager's install command> ${
|
|
684
|
-
`).forEach(log.step):outro("no transform occured");});var Ee={version:"
|
|
683
|
+
<your package manager's install command> ${le.bgGreen("radix-ui")}`.split(`
|
|
684
|
+
`).forEach(log.step):outro("no transform occured");});var Ee={version:"4.0.0"};async function lt(){new Command().name("design-system").version(Ee.version).addCommand(ve).addCommand(de).addCommand(Ce).addCommand(be).parse();}lt();
|