shadcn 3.6.2 → 3.7.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/mcp/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export{b as server}from'../chunk-SSXFFJQN.js';import'../chunk-I3JXSMK6.js';import'../chunk-WKG3W635.js';import'../chunk-PMFK2ZSQ.js';import'../chunk-BFNVF2P5.js';//# sourceMappingURL=index.js.map
1
+ export{b as server}from'../chunk-UCSFOLMK.js';import'../chunk-LEKGDBSB.js';import'../chunk-H6P2RJ54.js';import'../chunk-WBIIXVVG.js';import'../chunk-RKTXGSVI.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- export { getRegistriesIndex, getRegistry, getRegistryItems, resolveRegistryItems } from '../index.js';
1
+ export { getRegistries, getRegistriesIndex, getRegistry, getRegistryItems, resolveRegistryItems } from '../index.js';
2
2
  import { C as Config } from '../get-config-D6gTsP_D.js';
3
3
  import '../schema/index.js';
4
4
  import 'zod';
@@ -11,8 +11,8 @@ declare function searchRegistries(registries: string[], options?: {
11
11
  useCache?: boolean;
12
12
  }): Promise<{
13
13
  items: {
14
- name: string;
15
14
  registry: string;
15
+ name: string;
16
16
  addCommandArgument: string;
17
17
  type?: string | undefined;
18
18
  description?: string | undefined;
@@ -1,2 +1,2 @@
1
- export{E as RegistriesIndexParseError,u as RegistryError,y as RegistryFetchError,x as RegistryForbiddenError,D as RegistryInvalidNamespaceError,A as RegistryLocalFileError,C as RegistryMissingEnvironmentVariablesError,z as RegistryNotConfiguredError,v as RegistryNotFoundError,B as RegistryParseError,w as RegistryUnauthorizedError,ja as getRegistriesIndex,Z as getRegistry,_ as getRegistryItems,$ as resolveRegistryItems,ma as searchRegistries}from'../chunk-I3JXSMK6.js';import'../chunk-WKG3W635.js';import'../chunk-PMFK2ZSQ.js';import'../chunk-BFNVF2P5.js';//# sourceMappingURL=index.js.map
1
+ export{E as RegistriesIndexParseError,u as RegistryError,y as RegistryFetchError,x as RegistryForbiddenError,D as RegistryInvalidNamespaceError,A as RegistryLocalFileError,C as RegistryMissingEnvironmentVariablesError,z as RegistryNotConfiguredError,v as RegistryNotFoundError,B as RegistryParseError,w as RegistryUnauthorizedError,ja as getRegistries,ka as getRegistriesIndex,Z as getRegistry,_ as getRegistryItems,$ as resolveRegistryItems,na as searchRegistries}from'../chunk-LEKGDBSB.js';import'../chunk-H6P2RJ54.js';import'../chunk-WBIIXVVG.js';import'../chunk-RKTXGSVI.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -3711,14 +3711,14 @@ declare const searchResultItemSchema: z.ZodObject<{
3711
3711
  registry: z.ZodString;
3712
3712
  addCommandArgument: z.ZodString;
3713
3713
  }, "strip", z.ZodTypeAny, {
3714
- name: string;
3715
3714
  registry: string;
3715
+ name: string;
3716
3716
  addCommandArgument: string;
3717
3717
  type?: string | undefined;
3718
3718
  description?: string | undefined;
3719
3719
  }, {
3720
- name: string;
3721
3720
  registry: string;
3721
+ name: string;
3722
3722
  addCommandArgument: string;
3723
3723
  type?: string | undefined;
3724
3724
  description?: string | undefined;
@@ -3747,22 +3747,22 @@ declare const searchResultsSchema: z.ZodObject<{
3747
3747
  registry: z.ZodString;
3748
3748
  addCommandArgument: z.ZodString;
3749
3749
  }, "strip", z.ZodTypeAny, {
3750
- name: string;
3751
3750
  registry: string;
3751
+ name: string;
3752
3752
  addCommandArgument: string;
3753
3753
  type?: string | undefined;
3754
3754
  description?: string | undefined;
3755
3755
  }, {
3756
- name: string;
3757
3756
  registry: string;
3757
+ name: string;
3758
3758
  addCommandArgument: string;
3759
3759
  type?: string | undefined;
3760
3760
  description?: string | undefined;
3761
3761
  }>, "many">;
3762
3762
  }, "strip", z.ZodTypeAny, {
3763
3763
  items: {
3764
- name: string;
3765
3764
  registry: string;
3765
+ name: string;
3766
3766
  addCommandArgument: string;
3767
3767
  type?: string | undefined;
3768
3768
  description?: string | undefined;
@@ -3775,8 +3775,8 @@ declare const searchResultsSchema: z.ZodObject<{
3775
3775
  };
3776
3776
  }, {
3777
3777
  items: {
3778
- name: string;
3779
3778
  registry: string;
3779
+ name: string;
3780
3780
  addCommandArgument: string;
3781
3781
  type?: string | undefined;
3782
3782
  description?: string | undefined;
@@ -3789,6 +3789,22 @@ declare const searchResultsSchema: z.ZodObject<{
3789
3789
  };
3790
3790
  }>;
3791
3791
  declare const registriesIndexSchema: z.ZodRecord<z.ZodString, z.ZodString>;
3792
+ declare const registriesSchema: z.ZodArray<z.ZodObject<{
3793
+ name: z.ZodString;
3794
+ homepage: z.ZodOptional<z.ZodString>;
3795
+ url: z.ZodString;
3796
+ description: z.ZodOptional<z.ZodString>;
3797
+ }, "strip", z.ZodTypeAny, {
3798
+ url: string;
3799
+ name: string;
3800
+ description?: string | undefined;
3801
+ homepage?: string | undefined;
3802
+ }, {
3803
+ url: string;
3804
+ name: string;
3805
+ description?: string | undefined;
3806
+ homepage?: string | undefined;
3807
+ }>, "many">;
3792
3808
  declare const presetSchema: z.ZodObject<{
3793
3809
  name: z.ZodString;
3794
3810
  title: z.ZodString;
@@ -3904,4 +3920,4 @@ declare const configJsonSchema: z.ZodObject<{
3904
3920
  }>;
3905
3921
  type ConfigJson = z.infer<typeof configJsonSchema>;
3906
3922
 
3907
- export { type ConfigJson, type Preset, type Registry, type RegistryBaseItem, type RegistryFontItem, type RegistryItem, configJsonSchema, configSchema, iconsSchema, presetSchema, rawConfigSchema, registriesIndexSchema, registryBaseColorSchema, registryConfigItemSchema, registryConfigSchema, registryIndexSchema, registryItemCommonSchema, registryItemCssSchema, registryItemCssVarsSchema, registryItemEnvVarsSchema, registryItemFileSchema, registryItemFontSchema, registryItemSchema, registryItemTailwindSchema, registryItemTypeSchema, registryResolvedItemsTreeSchema, registrySchema, searchResultItemSchema, searchResultsSchema, stylesSchema, workspaceConfigSchema };
3923
+ export { type ConfigJson, type Preset, type Registry, type RegistryBaseItem, type RegistryFontItem, type RegistryItem, configJsonSchema, configSchema, iconsSchema, presetSchema, rawConfigSchema, registriesIndexSchema, registriesSchema, registryBaseColorSchema, registryConfigItemSchema, registryConfigSchema, registryIndexSchema, registryItemCommonSchema, registryItemCssSchema, registryItemCssVarsSchema, registryItemEnvVarsSchema, registryItemFileSchema, registryItemFontSchema, registryItemSchema, registryItemTailwindSchema, registryItemTypeSchema, registryResolvedItemsTreeSchema, registrySchema, searchResultItemSchema, searchResultsSchema, stylesSchema, workspaceConfigSchema };
@@ -1,2 +1,2 @@
1
- export{y as configJsonSchema,d as configSchema,r as iconsSchema,x as presetSchema,c as rawConfigSchema,w as registriesIndexSchema,s as registryBaseColorSchema,a as registryConfigItemSchema,b as registryConfigSchema,p as registryIndexSchema,m as registryItemCommonSchema,j as registryItemCssSchema,i as registryItemCssVarsSchema,k as registryItemEnvVarsSchema,g as registryItemFileSchema,l as registryItemFontSchema,n as registryItemSchema,h as registryItemTailwindSchema,f as registryItemTypeSchema,t as registryResolvedItemsTreeSchema,o as registrySchema,u as searchResultItemSchema,v as searchResultsSchema,q as stylesSchema,e as workspaceConfigSchema}from'../chunk-WKG3W635.js';//# sourceMappingURL=index.js.map
1
+ export{z as configJsonSchema,d as configSchema,r as iconsSchema,y as presetSchema,c as rawConfigSchema,w as registriesIndexSchema,x as registriesSchema,s as registryBaseColorSchema,a as registryConfigItemSchema,b as registryConfigSchema,p as registryIndexSchema,m as registryItemCommonSchema,j as registryItemCssSchema,i as registryItemCssVarsSchema,k as registryItemEnvVarsSchema,g as registryItemFileSchema,l as registryItemFontSchema,n as registryItemSchema,h as registryItemTailwindSchema,f as registryItemTypeSchema,t as registryResolvedItemsTreeSchema,o as registrySchema,u as searchResultItemSchema,v as searchResultsSchema,q as stylesSchema,e as workspaceConfigSchema}from'../chunk-H6P2RJ54.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- export{a as transformIcons,b as transformMenu}from'../chunk-PMFK2ZSQ.js';import'../chunk-BFNVF2P5.js';import z$1 from'postcss';import K from'postcss-selector-parser';import {z}from'zod';import {Project,ScriptKind,SyntaxKind,Node}from'ts-morph';var N="cn-",R=z.record(z.string().startsWith(N),z.string());function W(t){let e=z$1.parse(t),r={};return e.walkRules(s=>{let n=s.selectors??[];if(n.length===0)return;let i=D(s);if(i)for(let g of n){let c=B(g);K(o=>{o.each(l=>{let u=k(l);if(!u)return;let f=u.value;f.startsWith(N)&&(r[f]=r[f]?`${i} ${r[f]}`:i);});}).processSync(c);}}),R.parse(r)}function B(t){return t.replace(/\s*&\s*/g,"").trim()}function D(t){let e=[];for(let r of t.nodes||[])if(r.type==="atrule"&&r.name==="apply"){let s=r.params.trim();s&&e.push(s);}return e.length===0?null:e.join(" ")}function k(t){let e=[];return t.walkClasses(r=>{r.value.startsWith(N)&&e.push(r);}),e.length===0?null:e[e.length-1]}var X=new Set(["cn-menu-target"]);function p(t){return Node.isStringLiteral(t)||Node.isNoSubstitutionTemplateLiteral(t)}var $=async({sourceFile:t,styleMap:e})=>{let r=new Set;return _(t,e,r),q(t,e,r),Q(t,e,r),t};function O(t,e,r){let s=t.getLiteralText(),n=y(s);if(n.length===0)return;let i=n.filter(c=>!r.has(c));if(i.length===0){let c=m(s);t.setLiteralValue(c);return}let g=i.map(c=>e[c]).filter(c=>!!c);if(g.length>0){let c=g.join(" "),o=m(E(c,s));t.setLiteralValue(o),i.forEach(l=>r.add(l));}else {let c=m(s);t.setLiteralValue(c);}}function _(t,e,r){t.forEachDescendant(s=>{if(!Node.isCallExpression(s))return;let n=s.getExpression();if(!Node.isIdentifier(n)||n.getText()!=="cva")return;let i=s.getArguments()[0];Node.isStringLiteral(i)&&O(i,e,r);let g=s.getArguments()[1];if(!g||!Node.isObjectLiteralExpression(g))return;let c=g.getProperties().find(l=>Node.isPropertyAssignment(l)&&Node.isIdentifier(l.getNameNode())&&l.getNameNode().getText()==="variants");if(!c||!Node.isPropertyAssignment(c))return;let o=c.getInitializer();!o||!Node.isObjectLiteralExpression(o)||o.getProperties().forEach(l=>{if(!Node.isPropertyAssignment(l))return;let u=l.getInitializer();!u||!Node.isObjectLiteralExpression(u)||u.getProperties().forEach(f=>{if(!Node.isPropertyAssignment(f))return;let x=f.getInitializer();x&&Node.isStringLiteral(x)&&O(x,e,r);});});});}function q(t,e,r){t.forEachDescendant(s=>{if(!Node.isJsxAttribute(s)||s.getNameNode().getText()!=="className")return;let n=s.getInitializer();if(!n)return;let i=G(n);if(i.length===0)return;let g=s.getParent()?.getParent();if(!g||!Node.isJsxOpeningElement(g)&&!Node.isJsxSelfClosingElement(g))return;let c=i.filter(l=>!r.has(l));if(c.length===0){I(n);return}let o=c.map(l=>e[l]).filter(l=>!!l);if(o.length>0){let l=o.join(" ");H(g,l);}else I(n);});}function G(t){let e=[];if(p(t))return y(t.getLiteralText());if(!Node.isJsxExpression(t))return e;let r=t.getExpression();if(!r)return e;if(p(r))return y(r.getLiteralText());if(Node.isCallExpression(r)&&A(r))for(let s of r.getArguments())p(s)&&e.push(...y(s.getLiteralText()));return e}function I(t){if(p(t)){let r=m(t.getLiteralText());t.setLiteralValue(r);return}if(!Node.isJsxExpression(t))return;let e=t.getExpression();if(e){if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);return}if(Node.isCallExpression(e)&&A(e)){for(let r of e.getArguments())if(p(r)){let s=m(r.getLiteralText());r.setLiteralValue(s);}C(e);}}}function y(t){let e=t.matchAll(/\bcn-[\w-]+\b/g);return Array.from(e,r=>r[0])}function m(t){return t.replace(/\bcn-[\w-]+\b/g,e=>X.has(e)?e:"").replace(/\s+/g," ").trim()}function C(t){if(!A(t))return;let e=t.getArguments(),r=e.filter(s=>p(s)?s.getLiteralText().trim()!=="":true);if(r.length!==e.length){let s=r.map(i=>i.getText()),n=t.getParent();n&&Node.isJsxExpression(n)?n.replaceWithText(`{cn(${s.join(", ")})}`):t.replaceWithText(`cn(${s.join(", ")})`);}}function H(t,e){if(!Node.isJsxOpeningElement(t)&&!Node.isJsxSelfClosingElement(t))return;let r=t.getAttributes().find(i=>Node.isJsxAttribute(i)&&i.getNameNode().getText()==="className");if(!r||!Node.isJsxAttribute(r)){t.addAttribute({name:"className",initializer:`{cn(${JSON.stringify(e)})}`});return}let s=r.getInitializer();if(!s){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(s)){let i=s.getLiteralText(),g=m(E(e,i));s.setLiteralValue(g);return}if(!Node.isJsxExpression(s))return;let n=s.getExpression();if(!n){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(n)){let i=n.getLiteralText(),g=m(E(e,i));n.setLiteralValue(g);return}if(Node.isCallExpression(n)&&A(n)){let i=n.getArguments()[0];if(p(i)){let o=i.getLiteralText(),l=m(E(e,o));i.setLiteralValue(l);for(let u=1;u<n.getArguments().length;u++){let f=n.getArguments()[u];if(p(f)){let x=f.getLiteralText(),T=m(x);T!==x&&f.setLiteralValue(T);}}C(n);return}let g=n.getArguments().map(o=>{if(p(o)){let l=m(o.getLiteralText());return l?JSON.stringify(l):null}return o.getText()}).filter(o=>o!==null),c=[JSON.stringify(e),...g];r.setInitializer(`{cn(${c.join(", ")})}`);return}r.setInitializer(`{cn(${JSON.stringify(e)}, ${n.getText()})}`);}function E(t,e){let r=e.split(/\s+/).filter(Boolean);return [...t.split(/\s+/).filter(Boolean),...r].join(" ").trim()}function A(t){let e=t.getExpression();return Node.isIdentifier(e)&&e.getText()==="cn"}function Q(t,e,r){t.forEachDescendant(s=>{if(!Node.isCallExpression(s))return;let n=s.getExpression();if(!(!Node.isIdentifier(n)||n.getText()!=="mergeProps"))for(let i of s.getArguments()){if(!Node.isObjectLiteralExpression(i))continue;let g=i.getProperties().find(o=>Node.isPropertyAssignment(o)&&Node.isIdentifier(o.getNameNode())&&o.getNameNode().getText()==="className");if(!g||!Node.isPropertyAssignment(g))continue;let c=g.getInitializer();if(c&&Node.isCallExpression(c)&&A(c)){let o=U(c);if(o.length===0)continue;let l=o.filter(f=>!r.has(f));if(l.length===0){P(c);continue}let u=l.map(f=>e[f]).filter(f=>!!f);if(u.length>0){let f=u.join(" ");Y(c,f,r,l);}else P(c);}}});}function U(t){let e=[];for(let r of t.getArguments())p(r)&&e.push(...y(r.getLiteralText()));return e}function P(t){for(let e of t.getArguments())if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);}C(t);}function Y(t,e,r,s){let n=t.getArguments()[0];if(p(n)){let o=n.getLiteralText(),l=m(E(e,o));n.setLiteralValue(l),s.forEach(u=>r.add(u));for(let u=1;u<t.getArguments().length;u++){let f=t.getArguments()[u];if(p(f)){let x=f.getLiteralText(),T=m(x);T!==x&&f.setLiteralValue(T);}}C(t);return}let i=t.getArguments().map(o=>{if(p(o)){let l=m(o.getLiteralText());return l?JSON.stringify(l):null}return o.getText()}).filter(o=>o!==null),g=[JSON.stringify(e),...i];s.forEach(o=>r.add(o)),t.getParent()&&t.replaceWithText(`cn(${g.join(", ")})`);}async function et(t,{styleMap:e,transformers:r=[$]}){let n=new Project({useInMemoryFileSystem:true}).createSourceFile("component.tsx",t,{scriptKind:ScriptKind.TSX,overwrite:true});for(let i of r)await i({sourceFile:n,styleMap:e});return n.getText()}var rt=async({sourceFile:t,config:e})=>{if(!e.style?.startsWith("base-"))return t;let r=[],s=t.getDescendantsOfKind(SyntaxKind.JsxElement);for(let n of s){let i=n.getOpeningElement(),g=i.getAttribute("render");if(!g)continue;let o=n.getJsxChildren().map(S=>S.getText()).join("").trim();if(!o||g.getKind()!==SyntaxKind.JsxAttribute)continue;let u=g.asKindOrThrow(SyntaxKind.JsxAttribute).getInitializer();if(!u||u.getKind()!==SyntaxKind.JsxExpression)continue;let x=u.asKindOrThrow(SyntaxKind.JsxExpression).getExpression();if(!x||x.getKind()!==SyntaxKind.JsxSelfClosingElement)continue;let T=x.asKindOrThrow(SyntaxKind.JsxSelfClosingElement),h=T.getTagNameNode().getText(),b=T.getAttributes().map(S=>S.getText()).join(" "),j=b?`{<${h} ${b}>${o}</${h}>}`:`{<${h}>${o}</${h}>}`,w=i.getTagNameNode().getText(),J=i.getAttributes().filter(S=>S.getKind()===SyntaxKind.JsxAttribute?S.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()!=="render":true).map(S=>S.getText()).join(" "),M=J?`${J} render=${j}`:`render=${j}`,V=`<${w} ${M} />`;r.push({elementStart:n.getStart(),elementEnd:n.getEnd(),newText:V});}for(let n of r.reverse()){let i=t.getFullText(),g=i.substring(0,n.elementStart)+n.newText+i.substring(n.elementEnd);t.replaceWithText(g);}return t};export{W as createStyleMap,rt as transformRender,et as transformStyle};//# sourceMappingURL=index.js.map
1
+ export{a as transformIcons,b as transformMenu}from'../chunk-WBIIXVVG.js';import'../chunk-RKTXGSVI.js';import z$1 from'postcss';import K from'postcss-selector-parser';import {z}from'zod';import {Project,ScriptKind,SyntaxKind,Node}from'ts-morph';var N="cn-",R=z.record(z.string().startsWith(N),z.string());function W(t){let e=z$1.parse(t),r={};return e.walkRules(s=>{let n=s.selectors??[];if(n.length===0)return;let i=D(s);if(i)for(let g of n){let c=B(g);K(o=>{o.each(l=>{let u=k(l);if(!u)return;let f=u.value;f.startsWith(N)&&(r[f]=r[f]?`${i} ${r[f]}`:i);});}).processSync(c);}}),R.parse(r)}function B(t){return t.replace(/\s*&\s*/g,"").trim()}function D(t){let e=[];for(let r of t.nodes||[])if(r.type==="atrule"&&r.name==="apply"){let s=r.params.trim();s&&e.push(s);}return e.length===0?null:e.join(" ")}function k(t){let e=[];return t.walkClasses(r=>{r.value.startsWith(N)&&e.push(r);}),e.length===0?null:e[e.length-1]}var X=new Set(["cn-menu-target"]);function p(t){return Node.isStringLiteral(t)||Node.isNoSubstitutionTemplateLiteral(t)}var $=async({sourceFile:t,styleMap:e})=>{let r=new Set;return _(t,e,r),q(t,e,r),Q(t,e,r),t};function O(t,e,r){let s=t.getLiteralText(),n=y(s);if(n.length===0)return;let i=n.filter(c=>!r.has(c));if(i.length===0){let c=m(s);t.setLiteralValue(c);return}let g=i.map(c=>e[c]).filter(c=>!!c);if(g.length>0){let c=g.join(" "),o=m(E(c,s));t.setLiteralValue(o),i.forEach(l=>r.add(l));}else {let c=m(s);t.setLiteralValue(c);}}function _(t,e,r){t.forEachDescendant(s=>{if(!Node.isCallExpression(s))return;let n=s.getExpression();if(!Node.isIdentifier(n)||n.getText()!=="cva")return;let i=s.getArguments()[0];Node.isStringLiteral(i)&&O(i,e,r);let g=s.getArguments()[1];if(!g||!Node.isObjectLiteralExpression(g))return;let c=g.getProperties().find(l=>Node.isPropertyAssignment(l)&&Node.isIdentifier(l.getNameNode())&&l.getNameNode().getText()==="variants");if(!c||!Node.isPropertyAssignment(c))return;let o=c.getInitializer();!o||!Node.isObjectLiteralExpression(o)||o.getProperties().forEach(l=>{if(!Node.isPropertyAssignment(l))return;let u=l.getInitializer();!u||!Node.isObjectLiteralExpression(u)||u.getProperties().forEach(f=>{if(!Node.isPropertyAssignment(f))return;let x=f.getInitializer();x&&Node.isStringLiteral(x)&&O(x,e,r);});});});}function q(t,e,r){t.forEachDescendant(s=>{if(!Node.isJsxAttribute(s)||s.getNameNode().getText()!=="className")return;let n=s.getInitializer();if(!n)return;let i=G(n);if(i.length===0)return;let g=s.getParent()?.getParent();if(!g||!Node.isJsxOpeningElement(g)&&!Node.isJsxSelfClosingElement(g))return;let c=i.filter(l=>!r.has(l));if(c.length===0){I(n);return}let o=c.map(l=>e[l]).filter(l=>!!l);if(o.length>0){let l=o.join(" ");H(g,l);}else I(n);});}function G(t){let e=[];if(p(t))return y(t.getLiteralText());if(!Node.isJsxExpression(t))return e;let r=t.getExpression();if(!r)return e;if(p(r))return y(r.getLiteralText());if(Node.isCallExpression(r)&&A(r))for(let s of r.getArguments())p(s)&&e.push(...y(s.getLiteralText()));return e}function I(t){if(p(t)){let r=m(t.getLiteralText());t.setLiteralValue(r);return}if(!Node.isJsxExpression(t))return;let e=t.getExpression();if(e){if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);return}if(Node.isCallExpression(e)&&A(e)){for(let r of e.getArguments())if(p(r)){let s=m(r.getLiteralText());r.setLiteralValue(s);}C(e);}}}function y(t){let e=t.matchAll(/\bcn-[\w-]+\b/g);return Array.from(e,r=>r[0])}function m(t){return t.replace(/\bcn-[\w-]+\b/g,e=>X.has(e)?e:"").replace(/\s+/g," ").trim()}function C(t){if(!A(t))return;let e=t.getArguments(),r=e.filter(s=>p(s)?s.getLiteralText().trim()!=="":true);if(r.length!==e.length){let s=r.map(i=>i.getText()),n=t.getParent();n&&Node.isJsxExpression(n)?n.replaceWithText(`{cn(${s.join(", ")})}`):t.replaceWithText(`cn(${s.join(", ")})`);}}function H(t,e){if(!Node.isJsxOpeningElement(t)&&!Node.isJsxSelfClosingElement(t))return;let r=t.getAttributes().find(i=>Node.isJsxAttribute(i)&&i.getNameNode().getText()==="className");if(!r||!Node.isJsxAttribute(r)){t.addAttribute({name:"className",initializer:`{cn(${JSON.stringify(e)})}`});return}let s=r.getInitializer();if(!s){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(s)){let i=s.getLiteralText(),g=m(E(e,i));s.setLiteralValue(g);return}if(!Node.isJsxExpression(s))return;let n=s.getExpression();if(!n){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(n)){let i=n.getLiteralText(),g=m(E(e,i));n.setLiteralValue(g);return}if(Node.isCallExpression(n)&&A(n)){let i=n.getArguments()[0];if(p(i)){let o=i.getLiteralText(),l=m(E(e,o));i.setLiteralValue(l);for(let u=1;u<n.getArguments().length;u++){let f=n.getArguments()[u];if(p(f)){let x=f.getLiteralText(),T=m(x);T!==x&&f.setLiteralValue(T);}}C(n);return}let g=n.getArguments().map(o=>{if(p(o)){let l=m(o.getLiteralText());return l?JSON.stringify(l):null}return o.getText()}).filter(o=>o!==null),c=[JSON.stringify(e),...g];r.setInitializer(`{cn(${c.join(", ")})}`);return}r.setInitializer(`{cn(${JSON.stringify(e)}, ${n.getText()})}`);}function E(t,e){let r=e.split(/\s+/).filter(Boolean);return [...t.split(/\s+/).filter(Boolean),...r].join(" ").trim()}function A(t){let e=t.getExpression();return Node.isIdentifier(e)&&e.getText()==="cn"}function Q(t,e,r){t.forEachDescendant(s=>{if(!Node.isCallExpression(s))return;let n=s.getExpression();if(!(!Node.isIdentifier(n)||n.getText()!=="mergeProps"))for(let i of s.getArguments()){if(!Node.isObjectLiteralExpression(i))continue;let g=i.getProperties().find(o=>Node.isPropertyAssignment(o)&&Node.isIdentifier(o.getNameNode())&&o.getNameNode().getText()==="className");if(!g||!Node.isPropertyAssignment(g))continue;let c=g.getInitializer();if(c&&Node.isCallExpression(c)&&A(c)){let o=U(c);if(o.length===0)continue;let l=o.filter(f=>!r.has(f));if(l.length===0){P(c);continue}let u=l.map(f=>e[f]).filter(f=>!!f);if(u.length>0){let f=u.join(" ");Y(c,f,r,l);}else P(c);}}});}function U(t){let e=[];for(let r of t.getArguments())p(r)&&e.push(...y(r.getLiteralText()));return e}function P(t){for(let e of t.getArguments())if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);}C(t);}function Y(t,e,r,s){let n=t.getArguments()[0];if(p(n)){let o=n.getLiteralText(),l=m(E(e,o));n.setLiteralValue(l),s.forEach(u=>r.add(u));for(let u=1;u<t.getArguments().length;u++){let f=t.getArguments()[u];if(p(f)){let x=f.getLiteralText(),T=m(x);T!==x&&f.setLiteralValue(T);}}C(t);return}let i=t.getArguments().map(o=>{if(p(o)){let l=m(o.getLiteralText());return l?JSON.stringify(l):null}return o.getText()}).filter(o=>o!==null),g=[JSON.stringify(e),...i];s.forEach(o=>r.add(o)),t.getParent()&&t.replaceWithText(`cn(${g.join(", ")})`);}async function et(t,{styleMap:e,transformers:r=[$]}){let n=new Project({useInMemoryFileSystem:true}).createSourceFile("component.tsx",t,{scriptKind:ScriptKind.TSX,overwrite:true});for(let i of r)await i({sourceFile:n,styleMap:e});return n.getText()}var rt=async({sourceFile:t,config:e})=>{if(!e.style?.startsWith("base-"))return t;let r=[],s=t.getDescendantsOfKind(SyntaxKind.JsxElement);for(let n of s){let i=n.getOpeningElement(),g=i.getAttribute("render");if(!g)continue;let o=n.getJsxChildren().map(S=>S.getText()).join("").trim();if(!o||g.getKind()!==SyntaxKind.JsxAttribute)continue;let u=g.asKindOrThrow(SyntaxKind.JsxAttribute).getInitializer();if(!u||u.getKind()!==SyntaxKind.JsxExpression)continue;let x=u.asKindOrThrow(SyntaxKind.JsxExpression).getExpression();if(!x||x.getKind()!==SyntaxKind.JsxSelfClosingElement)continue;let T=x.asKindOrThrow(SyntaxKind.JsxSelfClosingElement),h=T.getTagNameNode().getText(),b=T.getAttributes().map(S=>S.getText()).join(" "),j=b?`{<${h} ${b}>${o}</${h}>}`:`{<${h}>${o}</${h}>}`,w=i.getTagNameNode().getText(),J=i.getAttributes().filter(S=>S.getKind()===SyntaxKind.JsxAttribute?S.asKindOrThrow(SyntaxKind.JsxAttribute).getNameNode().getText()!=="render":true).map(S=>S.getText()).join(" "),M=J?`${J} render=${j}`:`render=${j}`,V=`<${w} ${M} />`;r.push({elementStart:n.getStart(),elementEnd:n.getEnd(),newText:V});}for(let n of r.reverse()){let i=t.getFullText(),g=i.substring(0,n.elementStart)+n.newText+i.substring(n.elementEnd);t.replaceWithText(g);}return t};export{W as createStyleMap,rt as transformRender,et as transformStyle};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shadcn",
3
- "version": "3.6.2",
3
+ "version": "3.7.0",
4
4
  "description": "Add components to your apps.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -64,6 +64,7 @@
64
64
  "@babel/preset-typescript": "^7.27.1",
65
65
  "@dotenvx/dotenvx": "^1.48.4",
66
66
  "@modelcontextprotocol/sdk": "^1.17.2",
67
+ "@types/validate-npm-package-name": "^4.0.2",
67
68
  "browserslist": "^4.26.2",
68
69
  "commander": "^14.0.0",
69
70
  "cosmiconfig": "^9.0.0",
@@ -87,6 +88,7 @@
87
88
  "stringify-object": "^5.0.0",
88
89
  "ts-morph": "^26.0.0",
89
90
  "tsconfig-paths": "^4.2.0",
91
+ "validate-npm-package-name": "^7.0.1",
90
92
  "zod": "^3.24.1",
91
93
  "zod-to-json-schema": "^3.24.6"
92
94
  },
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/icons/libraries.ts"],"names":["iconLibraries"],"mappings":"AAAO,IAAMA,CAAAA,CAAgB,CAC3B,MAAA,CAAQ,CACN,KAAM,QAAA,CACN,KAAA,CAAO,SACP,QAAA,CAAU,CAAC,cAAc,CAAA,CACzB,MAAA,CAAQ,sCACR,KAAA,CAAO,UAAA,CACP,OAAQ,cACV,CAAA,CACA,MAAA,CAAQ,CACN,IAAA,CAAM,QAAA,CACN,MAAO,cAAA,CACP,QAAA,CAAU,CAAC,qBAAqB,CAAA,CAChC,OAAQ,4CAAA,CACR,KAAA,CAAO,UAAA,CACP,MAAA,CAAQ,qBACV,CAAA,CACA,UAAW,CACT,IAAA,CAAM,YACN,KAAA,CAAO,WAAA,CACP,SAAU,CAAC,kBAAA,CAAoB,4BAA4B,CAAA,CAC3D,MAAA,CACE,CAAA;AAAA,kDAAA,CAAA,CACF,KAAA,CAAO,gDACP,MAAA,CAAQ,4BACV,EACA,QAAA,CAAU,CACR,KAAM,UAAA,CACN,KAAA,CAAO,iBACP,QAAA,CAAU,CAAC,uBAAuB,CAAA,CAClC,MAAA,CAAQ,+CACR,KAAA,CAAO,0BAAA,CACP,MAAA,CAAQ,uBACV,CACF","file":"chunk-BFNVF2P5.js","sourcesContent":["export const iconLibraries = {\n lucide: {\n name: \"lucide\",\n title: \"Lucide\",\n packages: [\"lucide-react\"],\n import: \"import { ICON } from 'lucide-react'\",\n usage: \"<ICON />\",\n export: \"lucide-react\",\n },\n tabler: {\n name: \"tabler\",\n title: \"Tabler Icons\",\n packages: [\"@tabler/icons-react\"],\n import: \"import { ICON } from '@tabler/icons-react'\",\n usage: \"<ICON />\",\n export: \"@tabler/icons-react\",\n },\n hugeicons: {\n name: \"hugeicons\",\n title: \"HugeIcons\",\n packages: [\"@hugeicons/react\", \"@hugeicons/core-free-icons\"],\n import:\n \"import { HugeiconsIcon } from '@hugeicons/react'\\nimport { ICON } from '@hugeicons/core-free-icons';\",\n usage: \"<HugeiconsIcon icon={ICON} strokeWidth={2} />\",\n export: \"@hugeicons/core-free-icons\",\n },\n phosphor: {\n name: \"phosphor\",\n title: \"Phosphor Icons\",\n packages: [\"@phosphor-icons/react\"],\n import: \"import { ICON } from '@phosphor-icons/react'\",\n usage: \"<ICON strokeWidth={2} />\",\n export: \"@phosphor-icons/react\",\n },\n} as const\n\nexport type IconLibraries = typeof iconLibraries\n\nexport type IconLibrary = IconLibraries[keyof IconLibraries]\n\nexport type IconLibraryName = keyof IconLibraries\n"]}