@create-ui/cli 0.5.5 → 0.5.7

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-EF7MDUJN.js';import'../chunk-Z73MEB7I.js';import'../chunk-5YX4Z2U3.js';import'../chunk-Y7WZRQWW.js';//# sourceMappingURL=index.js.map
1
+ export{b as server}from'../chunk-M5DYT2NE.js';import'../chunk-RMTTHCB3.js';import'../chunk-NQFMXHMH.js';import'../chunk-Y7WZRQWW.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- export{a as searchRegistries}from'../chunk-Z73MEB7I.js';export{H as RegistryError,L as RegistryFetchError,K as RegistryForbiddenError,M as RegistryLocalFileError,I as RegistryNotFoundError,N as RegistryParseError,J as RegistryUnauthorizedError,R as getRegistry,S as getRegistryItems,T as resolveRegistryItems}from'../chunk-5YX4Z2U3.js';import'../chunk-Y7WZRQWW.js';//# sourceMappingURL=index.js.map
1
+ export{a as searchRegistries}from'../chunk-RMTTHCB3.js';export{G as RegistryError,K as RegistryFetchError,J as RegistryForbiddenError,L as RegistryLocalFileError,H as RegistryNotFoundError,M as RegistryParseError,I as RegistryUnauthorizedError,U as getRegistry,V as getRegistryItems,W as resolveRegistryItems}from'../chunk-NQFMXHMH.js';import'../chunk-Y7WZRQWW.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -27,8 +27,6 @@ type Transformer<Output = SourceFile> = (opts: TransformOpts & {
27
27
  sourceFile: SourceFile;
28
28
  }) => Promise<Output>;
29
29
 
30
- declare const transformMenu: Transformer;
31
-
32
30
  declare const transformLegacyIcons: Transformer;
33
31
 
34
- export { createStyleMap, transformLegacyIcons as transformIcons, transformMenu, transformStyle };
32
+ export { createStyleMap, transformLegacyIcons as transformIcons, transformStyle };
@@ -1,2 +1,2 @@
1
- import {a}from'../chunk-VQCXAURP.js';import {W as W$1}from'../chunk-5YX4Z2U3.js';export{B as transformMenu}from'../chunk-5YX4Z2U3.js';import'../chunk-Y7WZRQWW.js';import J from'postcss';import M from'postcss-selector-parser';import {z as z$1}from'zod';import {Project,ScriptKind,SyntaxKind,Node}from'ts-morph';var A="cn-",V=z$1.record(z$1.string().startsWith(A),z$1.string());function v(t){let e=J.parse(t),r={};return e.walkRules(n=>{let s=n.selectors??[];if(s.length===0)return;let i=F(n);if(i)for(let g of s){let l=R(g);M(o=>{o.each(a=>{let f=$(a);if(!f)return;let u=f.value;u.startsWith(A)&&(r[u]=r[u]?`${i} ${r[u]}`:i);});}).processSync(l);}}),V.parse(r)}function R(t){return t.replace(/\s*&\s*/g,"").trim()}function F(t){let e=[];for(let r of t.nodes||[])if(r.type==="atrule"&&r.name==="apply"){let n=r.params.trim();n&&e.push(n);}return e.length===0?null:e.join(" ")}function $(t){let e=[];return t.walkClasses(r=>{r.value.startsWith(A)&&e.push(r);}),e.length===0?null:e[e.length-1]}var z=new Set(["cn-menu-target"]);function p(t){return Node.isStringLiteral(t)||Node.isNoSubstitutionTemplateLiteral(t)}var O=async({sourceFile:t,styleMap:e})=>{let r=new Set;return W(t,e,r),w(t,e,r),_(t,e,r),t};function E(t,e,r){let n=t.getLiteralText(),s=y(n);if(s.length===0)return;let i=s.filter(l=>!r.has(l));if(i.length===0){let l=m(n);t.setLiteralValue(l);return}let g=i.map(l=>e[l]).filter(l=>!!l);if(g.length>0){let l=g.join(" "),o=m(d(l,n));t.setLiteralValue(o),i.forEach(a=>r.add(a));}else {let l=m(n);t.setLiteralValue(l);}}function W(t,e,r){t.forEachDescendant(n=>{if(!Node.isCallExpression(n))return;let s=n.getExpression();if(!Node.isIdentifier(s)||s.getText()!=="cva")return;let i=n.getArguments()[0];Node.isStringLiteral(i)&&E(i,e,r);let g=n.getArguments()[1];if(!g||!Node.isObjectLiteralExpression(g))return;let l=g.getProperties().find(a=>Node.isPropertyAssignment(a)&&Node.isIdentifier(a.getNameNode())&&a.getNameNode().getText()==="variants");if(!l||!Node.isPropertyAssignment(l))return;let o=l.getInitializer();!o||!Node.isObjectLiteralExpression(o)||o.getProperties().forEach(a=>{if(!Node.isPropertyAssignment(a))return;let f=a.getInitializer();!f||!Node.isObjectLiteralExpression(f)||f.getProperties().forEach(u=>{if(!Node.isPropertyAssignment(u))return;let x=u.getInitializer();x&&Node.isStringLiteral(x)&&E(x,e,r);});});});}function w(t,e,r){t.forEachDescendant(n=>{if(!Node.isJsxAttribute(n)||n.getNameNode().getText()!=="className")return;let s=n.getInitializer();if(!s)return;let i=D(s);if(i.length===0)return;let g=n.getParent()?.getParent();if(!g||!Node.isJsxOpeningElement(g)&&!Node.isJsxSelfClosingElement(g))return;let l=i.filter(a=>!r.has(a));if(l.length===0){I(s);return}let o=l.map(a=>e[a]).filter(a=>!!a);if(o.length>0){let a=o.join(" ");B(g,a);}else I(s);});}function D(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)&&T(r))for(let n of r.getArguments())p(n)&&e.push(...y(n.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)&&T(e)){for(let r of e.getArguments())if(p(r)){let n=m(r.getLiteralText());r.setLiteralValue(n);}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=>z.has(e)?e:"").replace(/\s+/g," ").trim()}function C(t){if(!T(t))return;let e=t.getArguments(),r=e.filter(n=>p(n)?n.getLiteralText().trim()!=="":true);if(r.length!==e.length){let n=r.map(i=>i.getText()),s=t.getParent();s&&Node.isJsxExpression(s)?s.replaceWithText(`{cn(${n.join(", ")})}`):t.replaceWithText(`cn(${n.join(", ")})`);}}function B(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 n=r.getInitializer();if(!n){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(n)){let i=n.getLiteralText(),g=m(d(e,i));n.setLiteralValue(g);return}if(!Node.isJsxExpression(n))return;let s=n.getExpression();if(!s){r.setInitializer(`{cn(${JSON.stringify(e)})}`);return}if(p(s)){let i=s.getLiteralText(),g=m(d(e,i));s.setLiteralValue(g);return}if(Node.isCallExpression(s)&&T(s)){let i=s.getArguments()[0];if(p(i)){let o=i.getLiteralText(),a=m(d(e,o));i.setLiteralValue(a);for(let f=1;f<s.getArguments().length;f++){let u=s.getArguments()[f];if(p(u)){let x=u.getLiteralText(),S=m(x);S!==x&&u.setLiteralValue(S);}}C(s);return}let g=s.getArguments().map(o=>{if(p(o)){let a=m(o.getLiteralText());return a?JSON.stringify(a):null}return o.getText()}).filter(o=>o!==null),l=[JSON.stringify(e),...g];r.setInitializer(`{cn(${l.join(", ")})}`);return}r.setInitializer(`{cn(${JSON.stringify(e)}, ${s.getText()})}`);}function d(t,e){let r=e.split(/\s+/).filter(Boolean);return [...t.split(/\s+/).filter(Boolean),...r].join(" ").trim()}function T(t){let e=t.getExpression();return Node.isIdentifier(e)&&e.getText()==="cn"}function _(t,e,r){t.forEachDescendant(n=>{if(!Node.isCallExpression(n))return;let s=n.getExpression();if(!(!Node.isIdentifier(s)||s.getText()!=="mergeProps"))for(let i of n.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 l=g.getInitializer();if(l&&Node.isCallExpression(l)&&T(l)){let o=k(l);if(o.length===0)continue;let a=o.filter(u=>!r.has(u));if(a.length===0){b(l);continue}let f=a.map(u=>e[u]).filter(u=>!!u);if(f.length>0){let u=f.join(" ");K(l,u,r,a);}else b(l);}}});}function k(t){let e=[];for(let r of t.getArguments())p(r)&&e.push(...y(r.getLiteralText()));return e}function b(t){for(let e of t.getArguments())if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);}C(t);}function K(t,e,r,n){let s=t.getArguments()[0];if(p(s)){let o=s.getLiteralText(),a=m(d(e,o));s.setLiteralValue(a),n.forEach(f=>r.add(f));for(let f=1;f<t.getArguments().length;f++){let u=t.getArguments()[f];if(p(u)){let x=u.getLiteralText(),S=m(x);S!==x&&u.setLiteralValue(S);}}C(t);return}let i=t.getArguments().map(o=>{if(p(o)){let a=m(o.getLiteralText());return a?JSON.stringify(a):null}return o.getText()}).filter(o=>o!==null),g=[JSON.stringify(e),...i];n.forEach(o=>r.add(o)),t.getParent()&&t.replaceWithText(`cn(${g.join(", ")})`);}async function X(t,{styleMap:e,transformers:r=[O]}){let s=new Project({useInMemoryFileSystem:true}).createSourceFile("component.tsx",t,{scriptKind:ScriptKind.TSX,overwrite:true});for(let i of r)await i({sourceFile:s,styleMap:e});return s.getText()}var P="lucide",q=async({sourceFile:t,config:e})=>{if(!e.iconLibrary||!(e.iconLibrary in a))return t;let r=P,n=e.iconLibrary;if(r===n)return t;let s=await W$1(),i=[];for(let g of t.getImportDeclarations()??[])if(g.getModuleSpecifier()?.getText()===`"${a[P].import}"`){for(let l of g.getNamedImports()??[]){let o=l.getName(),a=s[o]?.[n];!a||i.includes(a)||(i.push(a),l.remove(),t.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).filter(f=>f.getTagNameNode()?.getText()===o).forEach(f=>f.getTagNameNode()?.replaceWithText(a)));}g.getNamedImports()?.length===0&&g.remove();}if(i.length>0){let g=t.addImportDeclaration({moduleSpecifier:a[n]?.import,namedImports:i.map(l=>({name:l}))});H(t)||g.replaceWithText(g.getText().replace(";",""));}return t};function H(t){return t.getImportDeclarations()?.[0]?.getText().endsWith(";")??false}export{v as createStyleMap,q as transformIcons,X as transformStyle};//# sourceMappingURL=index.js.map
1
+ import {a}from'../chunk-VQCXAURP.js';import {Z}from'../chunk-NQFMXHMH.js';import'../chunk-Y7WZRQWW.js';import j from'postcss';import J from'postcss-selector-parser';import {z as z$1}from'zod';import {Project,ScriptKind,SyntaxKind,Node}from'ts-morph';var A="cn-",M=z$1.record(z$1.string().startsWith(A),z$1.string());function V(t){let e=j.parse(t),r={};return e.walkRules(s=>{let n=s.selectors??[];if(n.length===0)return;let i=R(s);if(i)for(let g of n){let l=v(g);J(o=>{o.each(a=>{let f=F(a);if(!f)return;let u=f.value;u.startsWith(A)&&(r[u]=r[u]?`${i} ${r[u]}`:i);});}).processSync(l);}}),M.parse(r)}function v(t){return t.replace(/\s*&\s*/g,"").trim()}function R(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 F(t){let e=[];return t.walkClasses(r=>{r.value.startsWith(A)&&e.push(r);}),e.length===0?null:e[e.length-1]}function p(t){return Node.isStringLiteral(t)||Node.isNoSubstitutionTemplateLiteral(t)}var P=async({sourceFile:t,styleMap:e})=>{let r=new Set;return $(t,e,r),z(t,e,r),w(t,e,r),t};function E(t,e,r){let s=t.getLiteralText(),n=S(s);if(n.length===0)return;let i=n.filter(l=>!r.has(l));if(i.length===0){let l=m(s);t.setLiteralValue(l);return}let g=i.map(l=>e[l]).filter(l=>!!l);if(g.length>0){let l=g.join(" "),o=m(d(l,s));t.setLiteralValue(o),i.forEach(a=>r.add(a));}else {let l=m(s);t.setLiteralValue(l);}}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)&&E(i,e,r);let g=s.getArguments()[1];if(!g||!Node.isObjectLiteralExpression(g))return;let l=g.getProperties().find(a=>Node.isPropertyAssignment(a)&&Node.isIdentifier(a.getNameNode())&&a.getNameNode().getText()==="variants");if(!l||!Node.isPropertyAssignment(l))return;let o=l.getInitializer();!o||!Node.isObjectLiteralExpression(o)||o.getProperties().forEach(a=>{if(!Node.isPropertyAssignment(a))return;let f=a.getInitializer();!f||!Node.isObjectLiteralExpression(f)||f.getProperties().forEach(u=>{if(!Node.isPropertyAssignment(u))return;let x=u.getInitializer();x&&Node.isStringLiteral(x)&&E(x,e,r);});});});}function z(t,e,r){t.forEachDescendant(s=>{if(!Node.isJsxAttribute(s)||s.getNameNode().getText()!=="className")return;let n=s.getInitializer();if(!n)return;let i=D(n);if(i.length===0)return;let g=s.getParent()?.getParent();if(!g||!Node.isJsxOpeningElement(g)&&!Node.isJsxSelfClosingElement(g))return;let l=i.filter(a=>!r.has(a));if(l.length===0){I(n);return}let o=l.map(a=>e[a]).filter(a=>!!a);if(o.length>0){let a=o.join(" ");W(g,a);}else I(n);});}function D(t){let e=[];if(p(t))return S(t.getLiteralText());if(!Node.isJsxExpression(t))return e;let r=t.getExpression();if(!r)return e;if(p(r))return S(r.getLiteralText());if(Node.isCallExpression(r)&&T(r))for(let s of r.getArguments())p(s)&&e.push(...S(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)&&T(e)){for(let r of e.getArguments())if(p(r)){let s=m(r.getLiteralText());r.setLiteralValue(s);}C(e);}}}function S(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,"").replace(/\s+/g," ").trim()}function C(t){if(!T(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 W(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(d(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(d(e,i));n.setLiteralValue(g);return}if(Node.isCallExpression(n)&&T(n)){let i=n.getArguments()[0];if(p(i)){let o=i.getLiteralText(),a=m(d(e,o));i.setLiteralValue(a);for(let f=1;f<n.getArguments().length;f++){let u=n.getArguments()[f];if(p(u)){let x=u.getLiteralText(),y=m(x);y!==x&&u.setLiteralValue(y);}}C(n);return}let g=n.getArguments().map(o=>{if(p(o)){let a=m(o.getLiteralText());return a?JSON.stringify(a):null}return o.getText()}).filter(o=>o!==null),l=[JSON.stringify(e),...g];r.setInitializer(`{cn(${l.join(", ")})}`);return}r.setInitializer(`{cn(${JSON.stringify(e)}, ${n.getText()})}`);}function d(t,e){let r=e.split(/\s+/).filter(Boolean);return [...t.split(/\s+/).filter(Boolean),...r].join(" ").trim()}function T(t){let e=t.getExpression();return Node.isIdentifier(e)&&e.getText()==="cn"}function w(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 l=g.getInitializer();if(l&&Node.isCallExpression(l)&&T(l)){let o=B(l);if(o.length===0)continue;let a=o.filter(u=>!r.has(u));if(a.length===0){b(l);continue}let f=a.map(u=>e[u]).filter(u=>!!u);if(f.length>0){let u=f.join(" ");_(l,u,r,a);}else b(l);}}});}function B(t){let e=[];for(let r of t.getArguments())p(r)&&e.push(...S(r.getLiteralText()));return e}function b(t){for(let e of t.getArguments())if(p(e)){let r=m(e.getLiteralText());e.setLiteralValue(r);}C(t);}function _(t,e,r,s){let n=t.getArguments()[0];if(p(n)){let o=n.getLiteralText(),a=m(d(e,o));n.setLiteralValue(a),s.forEach(f=>r.add(f));for(let f=1;f<t.getArguments().length;f++){let u=t.getArguments()[f];if(p(u)){let x=u.getLiteralText(),y=m(x);y!==x&&u.setLiteralValue(y);}}C(t);return}let i=t.getArguments().map(o=>{if(p(o)){let a=m(o.getLiteralText());return a?JSON.stringify(a):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 Y(t,{styleMap:e,transformers:r=[P]}){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 O="lucide",X=async({sourceFile:t,config:e})=>{if(!e.iconLibrary||!(e.iconLibrary in a))return t;let r=O,s=e.iconLibrary;if(r===s)return t;let n=await Z(),i=[];for(let g of t.getImportDeclarations()??[])if(g.getModuleSpecifier()?.getText()===`"${a[O].import}"`){for(let l of g.getNamedImports()??[]){let o=l.getName(),a=n[o]?.[s];!a||i.includes(a)||(i.push(a),l.remove(),t.getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement).filter(f=>f.getTagNameNode()?.getText()===o).forEach(f=>f.getTagNameNode()?.replaceWithText(a)));}g.getNamedImports()?.length===0&&g.remove();}if(i.length>0){let g=t.addImportDeclaration({moduleSpecifier:a[s]?.import,namedImports:i.map(l=>({name:l}))});U(t)||g.replaceWithText(g.getText().replace(";",""));}return t};function U(t){return t.getImportDeclarations()?.[0]?.getText().endsWith(";")??false}export{V as createStyleMap,X as transformIcons,Y as transformStyle};//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/styles/create-style-map.ts","../../src/styles/transform-style-map.ts","../../src/styles/transform.ts","../../src/utils/transformers/transform-legacy-icons.ts"],"names":["CN_PREFIX","styleMapSchema","z","createStyleMap","input","root","postcss","result","rule","selectors","tailwindClasses","extractTailwindClasses","selector","normalizedSelector","normalizeSelector","selectorParser","selectorsRoot","sel","targetClass","findSubjectClass","className","classes","node","value","classNodes","classNode","ALLOWLIST","isStringLiteralLike","Node","transformStyleMap","sourceFile","styleMap","matchedClasses","applyToCvaCalls","applyToClassNameAttributes","applyToMergePropsCalls","applyStyleToCvaString","stringNode","stringValue","cnClasses","extractCnClasses","unmatchedClasses","cnClass","updated","removeCnClasses","tailwindClassesToApply","mergedClasses","mergeClasses","expression","baseArg","configArg","variantsProp","prop","variantsObj","typeProp","typeObj","variantProp","variantValue","initializer","extractCnClassesFromAttribute","jsxElement","cleanCnClassesFromAttribute","applyClassesToElement","isCnCall","argument","cleaned","removeEmptyArgumentsFromCnCall","str","matches","match","callExpression","args","nonEmptyArgs","arg","argTexts","parent","element","attribute","attr","existing","firstArg","i","argText","argumentTexts","updatedArguments","newClasses","existingParts","call","classNameProp","classNameInitializer","extractCnClassesFromCnCall","cleanCnClassesFromCnCall","applyClassesToCnCall","cnCall","transformStyle","source","transformers","Project","ScriptKind","transformer","SOURCE_LIBRARY","transformLegacyIcons","config","LEGACY_ICON_LIBRARIES","sourceLibrary","targetLibrary","registryIcons","getRegistryIcons","targetedIcons","importDeclaration","specifier","iconName","targetedIcon","SyntaxKind","iconImportDeclaration","icon","_useSemicolon"],"mappings":"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","file":"index.js","sourcesContent":["import postcss from \"postcss\"\nimport selectorParser, {\n type ClassName,\n type Selector as SelectorNodeRoot,\n} from \"postcss-selector-parser\"\nimport { z } from \"zod\"\n\nconst CN_PREFIX = \"cn-\"\n\nexport const styleMapSchema = z.record(\n z.string().startsWith(CN_PREFIX),\n z.string()\n)\n\nexport type StyleMap = z.infer<typeof styleMapSchema>\n\nexport function createStyleMap(input: string) {\n const root = postcss.parse(input)\n\n const result: Record<string, string> = {}\n\n root.walkRules((rule) => {\n const selectors = rule.selectors ?? []\n\n if (selectors.length === 0) {\n return\n }\n\n const tailwindClasses = extractTailwindClasses(rule)\n\n if (!tailwindClasses) {\n return\n }\n\n for (const selector of selectors) {\n const normalizedSelector = normalizeSelector(selector)\n\n selectorParser((selectorsRoot) => {\n selectorsRoot.each((sel) => {\n const targetClass = findSubjectClass(sel)\n\n if (!targetClass) {\n return\n }\n\n const className = targetClass.value\n\n if (!className.startsWith(CN_PREFIX)) {\n return\n }\n\n result[className] = result[className]\n ? `${tailwindClasses} ${result[className]}`\n : tailwindClasses\n })\n }).processSync(normalizedSelector)\n }\n })\n\n return styleMapSchema.parse(result)\n}\n\nfunction normalizeSelector(selector: string) {\n return selector.replace(/\\s*&\\s*/g, \"\").trim()\n}\n\nfunction extractTailwindClasses(rule: postcss.Rule) {\n const classes: string[] = []\n\n for (const node of rule.nodes || []) {\n if (node.type === \"atrule\" && node.name === \"apply\") {\n const value = node.params.trim()\n if (value) {\n classes.push(value)\n }\n }\n }\n\n if (classes.length === 0) {\n return null\n }\n\n return classes.join(\" \")\n}\n\nfunction findSubjectClass(selector: SelectorNodeRoot) {\n const classNodes: ClassName[] = []\n\n selector.walkClasses((classNode) => {\n if (classNode.value.startsWith(CN_PREFIX)) {\n classNodes.push(classNode)\n }\n })\n\n if (classNodes.length === 0) {\n return null\n }\n\n return classNodes[classNodes.length - 1]\n}\n","import { TransformerStyle } from \"@/src/styles/transform\"\nimport {\n Node,\n type CallExpression,\n type NoSubstitutionTemplateLiteral,\n type SourceFile,\n type StringLiteral,\n} from \"ts-morph\"\n\nimport { type StyleMap } from \"./create-style-map\"\n\n/**\n * Classes that should never be removed during transformation.\n * These are typically used as CSS selectors or for other purposes\n * that require the class name to remain in the code.\n */\nconst ALLOWLIST = new Set([\"cn-menu-target\"])\n\nfunction isStringLiteralLike(\n node: Node\n): node is StringLiteral | NoSubstitutionTemplateLiteral {\n return (\n Node.isStringLiteral(node) || Node.isNoSubstitutionTemplateLiteral(node)\n )\n}\n\nexport const transformStyleMap: TransformerStyle<SourceFile> = async ({\n sourceFile,\n styleMap,\n}) => {\n const matchedClasses = new Set<string>()\n\n applyToCvaCalls(sourceFile, styleMap, matchedClasses)\n applyToClassNameAttributes(sourceFile, styleMap, matchedClasses)\n applyToMergePropsCalls(sourceFile, styleMap, matchedClasses)\n\n return sourceFile\n}\n\nfunction applyStyleToCvaString(\n stringNode: StringLiteral,\n styleMap: StyleMap,\n matchedClasses: Set<string>\n) {\n const stringValue = stringNode.getLiteralText()\n const cnClasses = extractCnClasses(stringValue)\n\n if (cnClasses.length === 0) {\n return\n }\n\n // Process all cn-* classes, not just the first one\n const unmatchedClasses = cnClasses.filter(\n (cnClass) => !matchedClasses.has(cnClass)\n )\n\n if (unmatchedClasses.length === 0) {\n // All classes already matched, just clean up non-allowlisted ones\n const updated = removeCnClasses(stringValue)\n stringNode.setLiteralValue(updated)\n return\n }\n\n const tailwindClassesToApply = unmatchedClasses\n .map((cnClass) => styleMap[cnClass])\n .filter((classes): classes is string => Boolean(classes))\n\n if (tailwindClassesToApply.length > 0) {\n const mergedClasses = tailwindClassesToApply.join(\" \")\n const updated = removeCnClasses(mergeClasses(mergedClasses, stringValue))\n stringNode.setLiteralValue(updated)\n unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n } else {\n // No styles to apply, but still need to clean up non-allowlisted classes\n const updated = removeCnClasses(stringValue)\n stringNode.setLiteralValue(updated)\n }\n}\n\nfunction applyToCvaCalls(\n sourceFile: SourceFile,\n styleMap: StyleMap,\n matchedClasses: Set<string>\n) {\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) {\n return\n }\n\n const expression = node.getExpression()\n if (!Node.isIdentifier(expression) || expression.getText() !== \"cva\") {\n return\n }\n\n const baseArg = node.getArguments()[0]\n if (Node.isStringLiteral(baseArg)) {\n applyStyleToCvaString(baseArg, styleMap, matchedClasses)\n }\n\n const configArg = node.getArguments()[1]\n if (!configArg || !Node.isObjectLiteralExpression(configArg)) {\n return\n }\n\n const variantsProp = configArg\n .getProperties()\n .find(\n (prop) =>\n Node.isPropertyAssignment(prop) &&\n Node.isIdentifier(prop.getNameNode()) &&\n prop.getNameNode().getText() === \"variants\"\n )\n\n if (!variantsProp || !Node.isPropertyAssignment(variantsProp)) {\n return\n }\n\n const variantsObj = variantsProp.getInitializer()\n if (!variantsObj || !Node.isObjectLiteralExpression(variantsObj)) {\n return\n }\n\n variantsObj.getProperties().forEach((typeProp) => {\n if (!Node.isPropertyAssignment(typeProp)) {\n return\n }\n\n const typeObj = typeProp.getInitializer()\n if (!typeObj || !Node.isObjectLiteralExpression(typeObj)) {\n return\n }\n\n typeObj.getProperties().forEach((variantProp) => {\n if (!Node.isPropertyAssignment(variantProp)) {\n return\n }\n\n const variantValue = variantProp.getInitializer()\n if (variantValue && Node.isStringLiteral(variantValue)) {\n applyStyleToCvaString(variantValue, styleMap, matchedClasses)\n }\n })\n })\n })\n}\n\nfunction applyToClassNameAttributes(\n sourceFile: SourceFile,\n styleMap: StyleMap,\n matchedClasses: Set<string>\n) {\n sourceFile.forEachDescendant((node) => {\n if (\n !Node.isJsxAttribute(node) ||\n node.getNameNode().getText() !== \"className\"\n ) {\n return\n }\n\n const initializer = node.getInitializer()\n if (!initializer) {\n return\n }\n\n const cnClasses = extractCnClassesFromAttribute(initializer)\n\n if (cnClasses.length === 0) {\n return\n }\n\n const jsxElement = node.getParent()?.getParent()\n if (\n !jsxElement ||\n (!Node.isJsxOpeningElement(jsxElement) &&\n !Node.isJsxSelfClosingElement(jsxElement))\n ) {\n return\n }\n\n const unmatchedClasses = cnClasses.filter(\n (cnClass) => !matchedClasses.has(cnClass)\n )\n\n if (unmatchedClasses.length === 0) {\n // Even if all classes are already matched, we still need to clean them up\n cleanCnClassesFromAttribute(initializer)\n return\n }\n\n const tailwindClassesToApply = unmatchedClasses\n .map((cnClass) => styleMap[cnClass])\n .filter((classes): classes is string => Boolean(classes))\n\n if (tailwindClassesToApply.length > 0) {\n const mergedClasses = tailwindClassesToApply.join(\" \")\n applyClassesToElement(jsxElement, mergedClasses)\n } else {\n cleanCnClassesFromAttribute(initializer)\n }\n })\n}\n\nfunction extractCnClassesFromAttribute(initializer: Node) {\n const classes: string[] = []\n\n if (isStringLiteralLike(initializer)) {\n return extractCnClasses(initializer.getLiteralText())\n }\n\n if (!Node.isJsxExpression(initializer)) {\n return classes\n }\n\n const expression = initializer.getExpression()\n if (!expression) {\n return classes\n }\n\n if (isStringLiteralLike(expression)) {\n return extractCnClasses(expression.getLiteralText())\n }\n\n if (Node.isCallExpression(expression) && isCnCall(expression)) {\n for (const argument of expression.getArguments()) {\n if (isStringLiteralLike(argument)) {\n classes.push(...extractCnClasses(argument.getLiteralText()))\n }\n }\n }\n\n return classes\n}\n\nfunction cleanCnClassesFromAttribute(initializer: Node) {\n if (isStringLiteralLike(initializer)) {\n const cleaned = removeCnClasses(initializer.getLiteralText())\n initializer.setLiteralValue(cleaned)\n return\n }\n\n if (!Node.isJsxExpression(initializer)) {\n return\n }\n\n const expression = initializer.getExpression()\n if (!expression) {\n return\n }\n\n if (isStringLiteralLike(expression)) {\n const cleaned = removeCnClasses(expression.getLiteralText())\n expression.setLiteralValue(cleaned)\n return\n }\n\n if (Node.isCallExpression(expression) && isCnCall(expression)) {\n for (const argument of expression.getArguments()) {\n if (isStringLiteralLike(argument)) {\n const cleaned = removeCnClasses(argument.getLiteralText())\n argument.setLiteralValue(cleaned)\n }\n }\n\n removeEmptyArgumentsFromCnCall(expression)\n }\n}\n\nfunction extractCnClasses(str: string) {\n const matches = str.matchAll(/\\bcn-[\\w-]+\\b/g)\n return Array.from(matches, (match) => match[0])\n}\n\nfunction extractCnClass(str: string) {\n const classes = extractCnClasses(str)\n return classes[0] ?? null\n}\n\nfunction removeCnClasses(str: string) {\n return str\n .replace(/\\bcn-[\\w-]+\\b/g, (match) => {\n // Preserve allowlisted classes\n if (ALLOWLIST.has(match)) {\n return match\n }\n return \"\"\n })\n .replace(/\\s+/g, \" \")\n .trim()\n}\n\nfunction removeEmptyArgumentsFromCnCall(callExpression: CallExpression) {\n if (!isCnCall(callExpression)) {\n return\n }\n\n const args = callExpression.getArguments()\n const nonEmptyArgs = args.filter((arg) => {\n if (isStringLiteralLike(arg)) {\n const text = arg.getLiteralText().trim()\n return text !== \"\"\n }\n return true\n })\n\n if (nonEmptyArgs.length !== args.length) {\n const argTexts = nonEmptyArgs.map((arg) => arg.getText())\n const parent = callExpression.getParent()\n if (parent && Node.isJsxExpression(parent)) {\n parent.replaceWithText(`{cn(${argTexts.join(\", \")})}`)\n } else {\n callExpression.replaceWithText(`cn(${argTexts.join(\", \")})`)\n }\n }\n}\n\nfunction applyClassesToElement(element: Node, tailwindClasses: string) {\n if (\n !Node.isJsxOpeningElement(element) &&\n !Node.isJsxSelfClosingElement(element)\n ) {\n return\n }\n\n const attribute = element\n .getAttributes()\n .find(\n (attr) =>\n Node.isJsxAttribute(attr) &&\n attr.getNameNode().getText() === \"className\"\n )\n\n if (!attribute || !Node.isJsxAttribute(attribute)) {\n element.addAttribute({\n name: \"className\",\n initializer: `{cn(${JSON.stringify(tailwindClasses)})}`,\n })\n return\n }\n\n const initializer = attribute.getInitializer()\n\n if (!initializer) {\n attribute.setInitializer(`{cn(${JSON.stringify(tailwindClasses)})}`)\n return\n }\n\n if (isStringLiteralLike(initializer)) {\n const existing = initializer.getLiteralText()\n const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n initializer.setLiteralValue(updated)\n return\n }\n\n if (!Node.isJsxExpression(initializer)) {\n return\n }\n\n const expression = initializer.getExpression()\n\n if (!expression) {\n attribute.setInitializer(`{cn(${JSON.stringify(tailwindClasses)})}`)\n return\n }\n\n if (isStringLiteralLike(expression)) {\n const existing = expression.getLiteralText()\n const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n expression.setLiteralValue(updated)\n return\n }\n\n if (Node.isCallExpression(expression) && isCnCall(expression)) {\n const firstArg = expression.getArguments()[0]\n if (isStringLiteralLike(firstArg)) {\n const existing = firstArg.getLiteralText()\n const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n firstArg.setLiteralValue(updated)\n\n for (let i = 1; i < expression.getArguments().length; i++) {\n const arg = expression.getArguments()[i]\n if (isStringLiteralLike(arg)) {\n const argText = arg.getLiteralText()\n const cleaned = removeCnClasses(argText)\n if (cleaned !== argText) {\n arg.setLiteralValue(cleaned)\n }\n }\n }\n\n removeEmptyArgumentsFromCnCall(expression)\n return\n }\n\n const argumentTexts = expression\n .getArguments()\n .map((argument) => {\n if (isStringLiteralLike(argument)) {\n const cleaned = removeCnClasses(argument.getLiteralText())\n return cleaned ? JSON.stringify(cleaned) : null\n }\n return argument.getText()\n })\n .filter((arg): arg is string => arg !== null)\n\n const updatedArguments = [JSON.stringify(tailwindClasses), ...argumentTexts]\n\n attribute.setInitializer(`{cn(${updatedArguments.join(\", \")})}`)\n return\n }\n\n attribute.setInitializer(\n `{cn(${JSON.stringify(tailwindClasses)}, ${expression.getText()})}`\n )\n}\n\nfunction mergeClasses(newClasses: string, existing: string) {\n const existingParts = existing.split(/\\s+/).filter(Boolean)\n const newParts = newClasses.split(/\\s+/).filter(Boolean)\n const combined = [...newParts, ...existingParts]\n return combined.join(\" \").trim()\n}\n\nfunction isCnCall(call: CallExpression) {\n const expression = call.getExpression()\n return Node.isIdentifier(expression) && expression.getText() === \"cn\"\n}\n\nfunction applyToMergePropsCalls(\n sourceFile: SourceFile,\n styleMap: StyleMap,\n matchedClasses: Set<string>\n) {\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) {\n return\n }\n\n const expression = node.getExpression()\n if (\n !Node.isIdentifier(expression) ||\n expression.getText() !== \"mergeProps\"\n ) {\n return\n }\n\n // Look for object literals in mergeProps arguments\n for (const arg of node.getArguments()) {\n if (!Node.isObjectLiteralExpression(arg)) {\n continue\n }\n\n // Find className property in the object literal\n const classNameProp = arg\n .getProperties()\n .find(\n (prop) =>\n Node.isPropertyAssignment(prop) &&\n Node.isIdentifier(prop.getNameNode()) &&\n prop.getNameNode().getText() === \"className\"\n )\n\n if (!classNameProp || !Node.isPropertyAssignment(classNameProp)) {\n continue\n }\n\n const classNameInitializer = classNameProp.getInitializer()\n if (!classNameInitializer) {\n continue\n }\n\n // Handle cn() calls in className\n if (\n Node.isCallExpression(classNameInitializer) &&\n isCnCall(classNameInitializer)\n ) {\n const cnClasses = extractCnClassesFromCnCall(classNameInitializer)\n\n if (cnClasses.length === 0) {\n continue\n }\n\n const unmatchedClasses = cnClasses.filter(\n (cnClass) => !matchedClasses.has(cnClass)\n )\n\n if (unmatchedClasses.length === 0) {\n // Clean up cn-* classes even if already matched\n cleanCnClassesFromCnCall(classNameInitializer)\n continue\n }\n\n const tailwindClassesToApply = unmatchedClasses\n .map((cnClass) => styleMap[cnClass])\n .filter((classes): classes is string => Boolean(classes))\n\n if (tailwindClassesToApply.length > 0) {\n const mergedClasses = tailwindClassesToApply.join(\" \")\n applyClassesToCnCall(\n classNameInitializer,\n mergedClasses,\n matchedClasses,\n unmatchedClasses\n )\n } else {\n cleanCnClassesFromCnCall(classNameInitializer)\n }\n }\n }\n })\n}\n\nfunction extractCnClassesFromCnCall(cnCall: CallExpression): string[] {\n const classes: string[] = []\n\n for (const argument of cnCall.getArguments()) {\n if (isStringLiteralLike(argument)) {\n classes.push(...extractCnClasses(argument.getLiteralText()))\n }\n }\n\n return classes\n}\n\nfunction cleanCnClassesFromCnCall(cnCall: CallExpression) {\n for (const argument of cnCall.getArguments()) {\n if (isStringLiteralLike(argument)) {\n const cleaned = removeCnClasses(argument.getLiteralText())\n argument.setLiteralValue(cleaned)\n }\n }\n\n removeEmptyArgumentsFromCnCall(cnCall)\n}\n\nfunction applyClassesToCnCall(\n cnCall: CallExpression,\n tailwindClasses: string,\n matchedClasses: Set<string>,\n unmatchedClasses: string[]\n) {\n const firstArg = cnCall.getArguments()[0]\n\n if (isStringLiteralLike(firstArg)) {\n const existing = firstArg.getLiteralText()\n const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n firstArg.setLiteralValue(updated)\n\n // Mark classes as matched\n unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n\n // Clean up cn-* classes from remaining arguments\n for (let i = 1; i < cnCall.getArguments().length; i++) {\n const arg = cnCall.getArguments()[i]\n if (isStringLiteralLike(arg)) {\n const argText = arg.getLiteralText()\n const cleaned = removeCnClasses(argText)\n if (cleaned !== argText) {\n arg.setLiteralValue(cleaned)\n }\n }\n }\n\n removeEmptyArgumentsFromCnCall(cnCall)\n return\n }\n\n // If first arg is not a string literal, prepend tailwind classes\n const argumentTexts = cnCall\n .getArguments()\n .map((argument) => {\n if (isStringLiteralLike(argument)) {\n const cleaned = removeCnClasses(argument.getLiteralText())\n return cleaned ? JSON.stringify(cleaned) : null\n }\n return argument.getText()\n })\n .filter((arg): arg is string => arg !== null)\n\n const updatedArguments = [JSON.stringify(tailwindClasses), ...argumentTexts]\n\n // Mark classes as matched\n unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n\n const parent = cnCall.getParent()\n if (parent) {\n cnCall.replaceWithText(`cn(${updatedArguments.join(\", \")})`)\n }\n}\n","import { Project, ScriptKind, type SourceFile } from \"ts-morph\"\n\nimport { type StyleMap } from \"./create-style-map\"\nimport { transformStyleMap } from \"./transform-style-map\"\n\nexport type TransformerStyle<Output = SourceFile> = (opts: {\n sourceFile: SourceFile\n styleMap: StyleMap\n}) => Promise<Output>\n\nexport async function transformStyle(\n source: string,\n {\n styleMap,\n transformers = [transformStyleMap],\n }: {\n styleMap: StyleMap\n transformers?: TransformerStyle<SourceFile>[]\n }\n) {\n const project = new Project({\n useInMemoryFileSystem: true,\n })\n\n const sourceFile = project.createSourceFile(\"component.tsx\", source, {\n scriptKind: ScriptKind.TSX,\n overwrite: true,\n })\n\n for (const transformer of transformers) {\n await transformer({ sourceFile, styleMap })\n }\n\n return sourceFile.getText()\n}\n","import { getRegistryIcons } from \"@/src/registry/api\"\nimport { LEGACY_ICON_LIBRARIES } from \"@/src/utils/legacy-icon-libraries\"\nimport { Transformer } from \"@/src/utils/transformers\"\nimport { SourceFile, SyntaxKind } from \"ts-morph\"\n\n// Lucide is the default icon library in the registry.\nconst SOURCE_LIBRARY = \"lucide\"\n\nexport const transformLegacyIcons: Transformer = async ({\n sourceFile,\n config,\n}) => {\n // No transform if we cannot read the icon library.\n if (!config.iconLibrary || !(config.iconLibrary in LEGACY_ICON_LIBRARIES)) {\n return sourceFile\n }\n\n const sourceLibrary = SOURCE_LIBRARY\n const targetLibrary = config.iconLibrary\n\n if (sourceLibrary === targetLibrary) {\n return sourceFile\n }\n\n const registryIcons = await getRegistryIcons()\n\n let targetedIcons: string[] = []\n for (const importDeclaration of sourceFile.getImportDeclarations() ?? []) {\n if (\n importDeclaration.getModuleSpecifier()?.getText() !==\n `\"${LEGACY_ICON_LIBRARIES[SOURCE_LIBRARY].import}\"`\n ) {\n continue\n }\n\n for (const specifier of importDeclaration.getNamedImports() ?? []) {\n const iconName = specifier.getName()\n\n const targetedIcon = registryIcons[iconName]?.[targetLibrary]\n\n if (!targetedIcon || targetedIcons.includes(targetedIcon)) {\n continue\n }\n\n targetedIcons.push(targetedIcon)\n\n // Remove the named import.\n specifier.remove()\n\n // Replace with the targeted icon.\n sourceFile\n .getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement)\n .filter((node) => node.getTagNameNode()?.getText() === iconName)\n .forEach((node) => node.getTagNameNode()?.replaceWithText(targetedIcon))\n }\n\n // If the named import is empty, remove the import declaration.\n if (importDeclaration.getNamedImports()?.length === 0) {\n importDeclaration.remove()\n }\n }\n\n if (targetedIcons.length > 0) {\n const iconImportDeclaration = sourceFile.addImportDeclaration({\n moduleSpecifier:\n LEGACY_ICON_LIBRARIES[\n targetLibrary as keyof typeof LEGACY_ICON_LIBRARIES\n ]?.import,\n namedImports: targetedIcons.map((icon) => ({\n name: icon,\n })),\n })\n\n if (!_useSemicolon(sourceFile)) {\n iconImportDeclaration.replaceWithText(\n iconImportDeclaration.getText().replace(\";\", \"\")\n )\n }\n }\n\n return sourceFile\n}\n\nfunction _useSemicolon(sourceFile: SourceFile) {\n return (\n sourceFile.getImportDeclarations()?.[0]?.getText().endsWith(\";\") ?? false\n )\n}\n"]}
1
+ {"version":3,"sources":["../../src/styles/create-style-map.ts","../../src/styles/transform-style-map.ts","../../src/styles/transform.ts","../../src/utils/transformers/transform-legacy-icons.ts"],"names":["CN_PREFIX","styleMapSchema","z","createStyleMap","input","root","postcss","result","rule","selectors","tailwindClasses","extractTailwindClasses","selector","normalizedSelector","normalizeSelector","selectorParser","selectorsRoot","sel","targetClass","findSubjectClass","className","classes","node","value","classNodes","classNode","isStringLiteralLike","Node","transformStyleMap","sourceFile","styleMap","matchedClasses","applyToCvaCalls","applyToClassNameAttributes","applyToMergePropsCalls","applyStyleToCvaString","stringNode","stringValue","cnClasses","extractCnClasses","unmatchedClasses","cnClass","updated","removeCnClasses","tailwindClassesToApply","mergedClasses","mergeClasses","expression","baseArg","configArg","variantsProp","prop","variantsObj","typeProp","typeObj","variantProp","variantValue","initializer","extractCnClassesFromAttribute","jsxElement","cleanCnClassesFromAttribute","applyClassesToElement","isCnCall","argument","cleaned","removeEmptyArgumentsFromCnCall","str","matches","match","callExpression","args","nonEmptyArgs","arg","argTexts","parent","element","attribute","attr","existing","firstArg","i","argText","argumentTexts","updatedArguments","newClasses","existingParts","call","classNameProp","classNameInitializer","extractCnClassesFromCnCall","cleanCnClassesFromCnCall","applyClassesToCnCall","cnCall","transformStyle","source","transformers","Project","ScriptKind","transformer","SOURCE_LIBRARY","transformLegacyIcons","config","LEGACY_ICON_LIBRARIES","sourceLibrary","targetLibrary","registryIcons","getRegistryIcons","targetedIcons","importDeclaration","specifier","iconName","targetedIcon","SyntaxKind","iconImportDeclaration","icon","_useSemicolon"],"mappings":"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","file":"index.js","sourcesContent":["import postcss from \"postcss\"\nimport selectorParser, {\n type ClassName,\n type Selector as SelectorNodeRoot,\n} from \"postcss-selector-parser\"\nimport { z } from \"zod\"\n\nconst CN_PREFIX = \"cn-\"\n\nexport const styleMapSchema = z.record(\n z.string().startsWith(CN_PREFIX),\n z.string()\n)\n\nexport type StyleMap = z.infer<typeof styleMapSchema>\n\nexport function createStyleMap(input: string) {\n const root = postcss.parse(input)\n\n const result: Record<string, string> = {}\n\n root.walkRules((rule) => {\n const selectors = rule.selectors ?? []\n\n if (selectors.length === 0) {\n return\n }\n\n const tailwindClasses = extractTailwindClasses(rule)\n\n if (!tailwindClasses) {\n return\n }\n\n for (const selector of selectors) {\n const normalizedSelector = normalizeSelector(selector)\n\n selectorParser((selectorsRoot) => {\n selectorsRoot.each((sel) => {\n const targetClass = findSubjectClass(sel)\n\n if (!targetClass) {\n return\n }\n\n const className = targetClass.value\n\n if (!className.startsWith(CN_PREFIX)) {\n return\n }\n\n result[className] = result[className]\n ? `${tailwindClasses} ${result[className]}`\n : tailwindClasses\n })\n }).processSync(normalizedSelector)\n }\n })\n\n return styleMapSchema.parse(result)\n}\n\nfunction normalizeSelector(selector: string) {\n return selector.replace(/\\s*&\\s*/g, \"\").trim()\n}\n\nfunction extractTailwindClasses(rule: postcss.Rule) {\n const classes: string[] = []\n\n for (const node of rule.nodes || []) {\n if (node.type === \"atrule\" && node.name === \"apply\") {\n const value = node.params.trim()\n if (value) {\n classes.push(value)\n }\n }\n }\n\n if (classes.length === 0) {\n return null\n }\n\n return classes.join(\" \")\n}\n\nfunction findSubjectClass(selector: SelectorNodeRoot) {\n const classNodes: ClassName[] = []\n\n selector.walkClasses((classNode) => {\n if (classNode.value.startsWith(CN_PREFIX)) {\n classNodes.push(classNode)\n }\n })\n\n if (classNodes.length === 0) {\n return null\n }\n\n return classNodes[classNodes.length - 1]\n}\n","import { TransformerStyle } from \"@/src/styles/transform\"\nimport {\n Node,\n type CallExpression,\n type NoSubstitutionTemplateLiteral,\n type SourceFile,\n type StringLiteral,\n} from \"ts-morph\"\n\nimport { type StyleMap } from \"./create-style-map\"\n\nfunction isStringLiteralLike(\n node: Node\n): node is StringLiteral | NoSubstitutionTemplateLiteral {\n return (\n Node.isStringLiteral(node) || Node.isNoSubstitutionTemplateLiteral(node)\n )\n}\n\nexport const transformStyleMap: TransformerStyle<SourceFile> = async ({\n sourceFile,\n styleMap,\n}) => {\n const matchedClasses = new Set<string>()\n\n applyToCvaCalls(sourceFile, styleMap, matchedClasses)\n applyToClassNameAttributes(sourceFile, styleMap, matchedClasses)\n applyToMergePropsCalls(sourceFile, styleMap, matchedClasses)\n\n return sourceFile\n}\n\nfunction applyStyleToCvaString(\n stringNode: StringLiteral,\n styleMap: StyleMap,\n matchedClasses: Set<string>\n) {\n const stringValue = stringNode.getLiteralText()\n const cnClasses = extractCnClasses(stringValue)\n\n if (cnClasses.length === 0) {\n return\n }\n\n // Process all cn-* classes, not just the first one\n const unmatchedClasses = cnClasses.filter(\n (cnClass) => !matchedClasses.has(cnClass)\n )\n\n if (unmatchedClasses.length === 0) {\n // All classes already matched, just clean up non-allowlisted ones\n const updated = removeCnClasses(stringValue)\n stringNode.setLiteralValue(updated)\n return\n }\n\n const tailwindClassesToApply = unmatchedClasses\n .map((cnClass) => styleMap[cnClass])\n .filter((classes): classes is string => Boolean(classes))\n\n if (tailwindClassesToApply.length > 0) {\n const mergedClasses = tailwindClassesToApply.join(\" \")\n const updated = removeCnClasses(mergeClasses(mergedClasses, stringValue))\n stringNode.setLiteralValue(updated)\n unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n } else {\n // No styles to apply, but still need to clean up non-allowlisted classes\n const updated = removeCnClasses(stringValue)\n stringNode.setLiteralValue(updated)\n }\n}\n\nfunction applyToCvaCalls(\n sourceFile: SourceFile,\n styleMap: StyleMap,\n matchedClasses: Set<string>\n) {\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) {\n return\n }\n\n const expression = node.getExpression()\n if (!Node.isIdentifier(expression) || expression.getText() !== \"cva\") {\n return\n }\n\n const baseArg = node.getArguments()[0]\n if (Node.isStringLiteral(baseArg)) {\n applyStyleToCvaString(baseArg, styleMap, matchedClasses)\n }\n\n const configArg = node.getArguments()[1]\n if (!configArg || !Node.isObjectLiteralExpression(configArg)) {\n return\n }\n\n const variantsProp = configArg\n .getProperties()\n .find(\n (prop) =>\n Node.isPropertyAssignment(prop) &&\n Node.isIdentifier(prop.getNameNode()) &&\n prop.getNameNode().getText() === \"variants\"\n )\n\n if (!variantsProp || !Node.isPropertyAssignment(variantsProp)) {\n return\n }\n\n const variantsObj = variantsProp.getInitializer()\n if (!variantsObj || !Node.isObjectLiteralExpression(variantsObj)) {\n return\n }\n\n variantsObj.getProperties().forEach((typeProp) => {\n if (!Node.isPropertyAssignment(typeProp)) {\n return\n }\n\n const typeObj = typeProp.getInitializer()\n if (!typeObj || !Node.isObjectLiteralExpression(typeObj)) {\n return\n }\n\n typeObj.getProperties().forEach((variantProp) => {\n if (!Node.isPropertyAssignment(variantProp)) {\n return\n }\n\n const variantValue = variantProp.getInitializer()\n if (variantValue && Node.isStringLiteral(variantValue)) {\n applyStyleToCvaString(variantValue, styleMap, matchedClasses)\n }\n })\n })\n })\n}\n\nfunction applyToClassNameAttributes(\n sourceFile: SourceFile,\n styleMap: StyleMap,\n matchedClasses: Set<string>\n) {\n sourceFile.forEachDescendant((node) => {\n if (\n !Node.isJsxAttribute(node) ||\n node.getNameNode().getText() !== \"className\"\n ) {\n return\n }\n\n const initializer = node.getInitializer()\n if (!initializer) {\n return\n }\n\n const cnClasses = extractCnClassesFromAttribute(initializer)\n\n if (cnClasses.length === 0) {\n return\n }\n\n const jsxElement = node.getParent()?.getParent()\n if (\n !jsxElement ||\n (!Node.isJsxOpeningElement(jsxElement) &&\n !Node.isJsxSelfClosingElement(jsxElement))\n ) {\n return\n }\n\n const unmatchedClasses = cnClasses.filter(\n (cnClass) => !matchedClasses.has(cnClass)\n )\n\n if (unmatchedClasses.length === 0) {\n // Even if all classes are already matched, we still need to clean them up\n cleanCnClassesFromAttribute(initializer)\n return\n }\n\n const tailwindClassesToApply = unmatchedClasses\n .map((cnClass) => styleMap[cnClass])\n .filter((classes): classes is string => Boolean(classes))\n\n if (tailwindClassesToApply.length > 0) {\n const mergedClasses = tailwindClassesToApply.join(\" \")\n applyClassesToElement(jsxElement, mergedClasses)\n } else {\n cleanCnClassesFromAttribute(initializer)\n }\n })\n}\n\nfunction extractCnClassesFromAttribute(initializer: Node) {\n const classes: string[] = []\n\n if (isStringLiteralLike(initializer)) {\n return extractCnClasses(initializer.getLiteralText())\n }\n\n if (!Node.isJsxExpression(initializer)) {\n return classes\n }\n\n const expression = initializer.getExpression()\n if (!expression) {\n return classes\n }\n\n if (isStringLiteralLike(expression)) {\n return extractCnClasses(expression.getLiteralText())\n }\n\n if (Node.isCallExpression(expression) && isCnCall(expression)) {\n for (const argument of expression.getArguments()) {\n if (isStringLiteralLike(argument)) {\n classes.push(...extractCnClasses(argument.getLiteralText()))\n }\n }\n }\n\n return classes\n}\n\nfunction cleanCnClassesFromAttribute(initializer: Node) {\n if (isStringLiteralLike(initializer)) {\n const cleaned = removeCnClasses(initializer.getLiteralText())\n initializer.setLiteralValue(cleaned)\n return\n }\n\n if (!Node.isJsxExpression(initializer)) {\n return\n }\n\n const expression = initializer.getExpression()\n if (!expression) {\n return\n }\n\n if (isStringLiteralLike(expression)) {\n const cleaned = removeCnClasses(expression.getLiteralText())\n expression.setLiteralValue(cleaned)\n return\n }\n\n if (Node.isCallExpression(expression) && isCnCall(expression)) {\n for (const argument of expression.getArguments()) {\n if (isStringLiteralLike(argument)) {\n const cleaned = removeCnClasses(argument.getLiteralText())\n argument.setLiteralValue(cleaned)\n }\n }\n\n removeEmptyArgumentsFromCnCall(expression)\n }\n}\n\nfunction extractCnClasses(str: string) {\n const matches = str.matchAll(/\\bcn-[\\w-]+\\b/g)\n return Array.from(matches, (match) => match[0])\n}\n\nfunction extractCnClass(str: string) {\n const classes = extractCnClasses(str)\n return classes[0] ?? null\n}\n\nfunction removeCnClasses(str: string) {\n return str\n .replace(/\\bcn-[\\w-]+\\b/g, \"\")\n .replace(/\\s+/g, \" \")\n .trim()\n}\n\nfunction removeEmptyArgumentsFromCnCall(callExpression: CallExpression) {\n if (!isCnCall(callExpression)) {\n return\n }\n\n const args = callExpression.getArguments()\n const nonEmptyArgs = args.filter((arg) => {\n if (isStringLiteralLike(arg)) {\n const text = arg.getLiteralText().trim()\n return text !== \"\"\n }\n return true\n })\n\n if (nonEmptyArgs.length !== args.length) {\n const argTexts = nonEmptyArgs.map((arg) => arg.getText())\n const parent = callExpression.getParent()\n if (parent && Node.isJsxExpression(parent)) {\n parent.replaceWithText(`{cn(${argTexts.join(\", \")})}`)\n } else {\n callExpression.replaceWithText(`cn(${argTexts.join(\", \")})`)\n }\n }\n}\n\nfunction applyClassesToElement(element: Node, tailwindClasses: string) {\n if (\n !Node.isJsxOpeningElement(element) &&\n !Node.isJsxSelfClosingElement(element)\n ) {\n return\n }\n\n const attribute = element\n .getAttributes()\n .find(\n (attr) =>\n Node.isJsxAttribute(attr) &&\n attr.getNameNode().getText() === \"className\"\n )\n\n if (!attribute || !Node.isJsxAttribute(attribute)) {\n element.addAttribute({\n name: \"className\",\n initializer: `{cn(${JSON.stringify(tailwindClasses)})}`,\n })\n return\n }\n\n const initializer = attribute.getInitializer()\n\n if (!initializer) {\n attribute.setInitializer(`{cn(${JSON.stringify(tailwindClasses)})}`)\n return\n }\n\n if (isStringLiteralLike(initializer)) {\n const existing = initializer.getLiteralText()\n const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n initializer.setLiteralValue(updated)\n return\n }\n\n if (!Node.isJsxExpression(initializer)) {\n return\n }\n\n const expression = initializer.getExpression()\n\n if (!expression) {\n attribute.setInitializer(`{cn(${JSON.stringify(tailwindClasses)})}`)\n return\n }\n\n if (isStringLiteralLike(expression)) {\n const existing = expression.getLiteralText()\n const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n expression.setLiteralValue(updated)\n return\n }\n\n if (Node.isCallExpression(expression) && isCnCall(expression)) {\n const firstArg = expression.getArguments()[0]\n if (isStringLiteralLike(firstArg)) {\n const existing = firstArg.getLiteralText()\n const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n firstArg.setLiteralValue(updated)\n\n for (let i = 1; i < expression.getArguments().length; i++) {\n const arg = expression.getArguments()[i]\n if (isStringLiteralLike(arg)) {\n const argText = arg.getLiteralText()\n const cleaned = removeCnClasses(argText)\n if (cleaned !== argText) {\n arg.setLiteralValue(cleaned)\n }\n }\n }\n\n removeEmptyArgumentsFromCnCall(expression)\n return\n }\n\n const argumentTexts = expression\n .getArguments()\n .map((argument) => {\n if (isStringLiteralLike(argument)) {\n const cleaned = removeCnClasses(argument.getLiteralText())\n return cleaned ? JSON.stringify(cleaned) : null\n }\n return argument.getText()\n })\n .filter((arg): arg is string => arg !== null)\n\n const updatedArguments = [JSON.stringify(tailwindClasses), ...argumentTexts]\n\n attribute.setInitializer(`{cn(${updatedArguments.join(\", \")})}`)\n return\n }\n\n attribute.setInitializer(\n `{cn(${JSON.stringify(tailwindClasses)}, ${expression.getText()})}`\n )\n}\n\nfunction mergeClasses(newClasses: string, existing: string) {\n const existingParts = existing.split(/\\s+/).filter(Boolean)\n const newParts = newClasses.split(/\\s+/).filter(Boolean)\n const combined = [...newParts, ...existingParts]\n return combined.join(\" \").trim()\n}\n\nfunction isCnCall(call: CallExpression) {\n const expression = call.getExpression()\n return Node.isIdentifier(expression) && expression.getText() === \"cn\"\n}\n\nfunction applyToMergePropsCalls(\n sourceFile: SourceFile,\n styleMap: StyleMap,\n matchedClasses: Set<string>\n) {\n sourceFile.forEachDescendant((node) => {\n if (!Node.isCallExpression(node)) {\n return\n }\n\n const expression = node.getExpression()\n if (\n !Node.isIdentifier(expression) ||\n expression.getText() !== \"mergeProps\"\n ) {\n return\n }\n\n // Look for object literals in mergeProps arguments\n for (const arg of node.getArguments()) {\n if (!Node.isObjectLiteralExpression(arg)) {\n continue\n }\n\n // Find className property in the object literal\n const classNameProp = arg\n .getProperties()\n .find(\n (prop) =>\n Node.isPropertyAssignment(prop) &&\n Node.isIdentifier(prop.getNameNode()) &&\n prop.getNameNode().getText() === \"className\"\n )\n\n if (!classNameProp || !Node.isPropertyAssignment(classNameProp)) {\n continue\n }\n\n const classNameInitializer = classNameProp.getInitializer()\n if (!classNameInitializer) {\n continue\n }\n\n // Handle cn() calls in className\n if (\n Node.isCallExpression(classNameInitializer) &&\n isCnCall(classNameInitializer)\n ) {\n const cnClasses = extractCnClassesFromCnCall(classNameInitializer)\n\n if (cnClasses.length === 0) {\n continue\n }\n\n const unmatchedClasses = cnClasses.filter(\n (cnClass) => !matchedClasses.has(cnClass)\n )\n\n if (unmatchedClasses.length === 0) {\n // Clean up cn-* classes even if already matched\n cleanCnClassesFromCnCall(classNameInitializer)\n continue\n }\n\n const tailwindClassesToApply = unmatchedClasses\n .map((cnClass) => styleMap[cnClass])\n .filter((classes): classes is string => Boolean(classes))\n\n if (tailwindClassesToApply.length > 0) {\n const mergedClasses = tailwindClassesToApply.join(\" \")\n applyClassesToCnCall(\n classNameInitializer,\n mergedClasses,\n matchedClasses,\n unmatchedClasses\n )\n } else {\n cleanCnClassesFromCnCall(classNameInitializer)\n }\n }\n }\n })\n}\n\nfunction extractCnClassesFromCnCall(cnCall: CallExpression): string[] {\n const classes: string[] = []\n\n for (const argument of cnCall.getArguments()) {\n if (isStringLiteralLike(argument)) {\n classes.push(...extractCnClasses(argument.getLiteralText()))\n }\n }\n\n return classes\n}\n\nfunction cleanCnClassesFromCnCall(cnCall: CallExpression) {\n for (const argument of cnCall.getArguments()) {\n if (isStringLiteralLike(argument)) {\n const cleaned = removeCnClasses(argument.getLiteralText())\n argument.setLiteralValue(cleaned)\n }\n }\n\n removeEmptyArgumentsFromCnCall(cnCall)\n}\n\nfunction applyClassesToCnCall(\n cnCall: CallExpression,\n tailwindClasses: string,\n matchedClasses: Set<string>,\n unmatchedClasses: string[]\n) {\n const firstArg = cnCall.getArguments()[0]\n\n if (isStringLiteralLike(firstArg)) {\n const existing = firstArg.getLiteralText()\n const updated = removeCnClasses(mergeClasses(tailwindClasses, existing))\n firstArg.setLiteralValue(updated)\n\n // Mark classes as matched\n unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n\n // Clean up cn-* classes from remaining arguments\n for (let i = 1; i < cnCall.getArguments().length; i++) {\n const arg = cnCall.getArguments()[i]\n if (isStringLiteralLike(arg)) {\n const argText = arg.getLiteralText()\n const cleaned = removeCnClasses(argText)\n if (cleaned !== argText) {\n arg.setLiteralValue(cleaned)\n }\n }\n }\n\n removeEmptyArgumentsFromCnCall(cnCall)\n return\n }\n\n // If first arg is not a string literal, prepend tailwind classes\n const argumentTexts = cnCall\n .getArguments()\n .map((argument) => {\n if (isStringLiteralLike(argument)) {\n const cleaned = removeCnClasses(argument.getLiteralText())\n return cleaned ? JSON.stringify(cleaned) : null\n }\n return argument.getText()\n })\n .filter((arg): arg is string => arg !== null)\n\n const updatedArguments = [JSON.stringify(tailwindClasses), ...argumentTexts]\n\n // Mark classes as matched\n unmatchedClasses.forEach((cnClass) => matchedClasses.add(cnClass))\n\n const parent = cnCall.getParent()\n if (parent) {\n cnCall.replaceWithText(`cn(${updatedArguments.join(\", \")})`)\n }\n}\n","import { Project, ScriptKind, type SourceFile } from \"ts-morph\"\n\nimport { type StyleMap } from \"./create-style-map\"\nimport { transformStyleMap } from \"./transform-style-map\"\n\nexport type TransformerStyle<Output = SourceFile> = (opts: {\n sourceFile: SourceFile\n styleMap: StyleMap\n}) => Promise<Output>\n\nexport async function transformStyle(\n source: string,\n {\n styleMap,\n transformers = [transformStyleMap],\n }: {\n styleMap: StyleMap\n transformers?: TransformerStyle<SourceFile>[]\n }\n) {\n const project = new Project({\n useInMemoryFileSystem: true,\n })\n\n const sourceFile = project.createSourceFile(\"component.tsx\", source, {\n scriptKind: ScriptKind.TSX,\n overwrite: true,\n })\n\n for (const transformer of transformers) {\n await transformer({ sourceFile, styleMap })\n }\n\n return sourceFile.getText()\n}\n","import { getRegistryIcons } from \"@/src/registry/api\"\nimport { LEGACY_ICON_LIBRARIES } from \"@/src/utils/legacy-icon-libraries\"\nimport { Transformer } from \"@/src/utils/transformers\"\nimport { SourceFile, SyntaxKind } from \"ts-morph\"\n\n// Lucide is the default icon library in the registry.\nconst SOURCE_LIBRARY = \"lucide\"\n\nexport const transformLegacyIcons: Transformer = async ({\n sourceFile,\n config,\n}) => {\n // No transform if we cannot read the icon library.\n if (!config.iconLibrary || !(config.iconLibrary in LEGACY_ICON_LIBRARIES)) {\n return sourceFile\n }\n\n const sourceLibrary = SOURCE_LIBRARY\n const targetLibrary = config.iconLibrary\n\n if (sourceLibrary === targetLibrary) {\n return sourceFile\n }\n\n const registryIcons = await getRegistryIcons()\n\n let targetedIcons: string[] = []\n for (const importDeclaration of sourceFile.getImportDeclarations() ?? []) {\n if (\n importDeclaration.getModuleSpecifier()?.getText() !==\n `\"${LEGACY_ICON_LIBRARIES[SOURCE_LIBRARY].import}\"`\n ) {\n continue\n }\n\n for (const specifier of importDeclaration.getNamedImports() ?? []) {\n const iconName = specifier.getName()\n\n const targetedIcon = registryIcons[iconName]?.[targetLibrary]\n\n if (!targetedIcon || targetedIcons.includes(targetedIcon)) {\n continue\n }\n\n targetedIcons.push(targetedIcon)\n\n // Remove the named import.\n specifier.remove()\n\n // Replace with the targeted icon.\n sourceFile\n .getDescendantsOfKind(SyntaxKind.JsxSelfClosingElement)\n .filter((node) => node.getTagNameNode()?.getText() === iconName)\n .forEach((node) => node.getTagNameNode()?.replaceWithText(targetedIcon))\n }\n\n // If the named import is empty, remove the import declaration.\n if (importDeclaration.getNamedImports()?.length === 0) {\n importDeclaration.remove()\n }\n }\n\n if (targetedIcons.length > 0) {\n const iconImportDeclaration = sourceFile.addImportDeclaration({\n moduleSpecifier:\n LEGACY_ICON_LIBRARIES[\n targetLibrary as keyof typeof LEGACY_ICON_LIBRARIES\n ]?.import,\n namedImports: targetedIcons.map((icon) => ({\n name: icon,\n })),\n })\n\n if (!_useSemicolon(sourceFile)) {\n iconImportDeclaration.replaceWithText(\n iconImportDeclaration.getText().replace(\";\", \"\")\n )\n }\n }\n\n return sourceFile\n}\n\nfunction _useSemicolon(sourceFile: SourceFile) {\n return (\n sourceFile.getImportDeclarations()?.[0]?.getText().endsWith(\";\") ?? false\n )\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@create-ui/cli",
3
- "version": "0.5.5",
3
+ "version": "0.5.7",
4
4
  "description": "Add components to your apps.",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,18 +0,0 @@
1
- import {m,l,d,b,a,c,n,s,o,q as q$1,r,w as w$1,e}from'./chunk-Y7WZRQWW.js';import {Project,SyntaxKind,ScriptKind}from'ts-morph';import {z as z$1}from'zod';import*as h from'path';import h__default,{basename}from'path';import*as z from'fs/promises';import {tmpdir,homedir}from'os';import {green,cyan,yellow,red}from'kleur/colors';import {loadConfig,createMatchPath}from'tsconfig-paths';import {cosmiconfig}from'cosmiconfig';import me from'fast-glob';import pe from'fs-extra';import {existsSync,statSync,promises}from'fs';import Wt from'ora';import {transformFromAstSync}from'@babel/core';import {parse}from'@babel/parser';import Bt from'@babel/plugin-transform-typescript';import*as he from'recast';import sr from'prompts';import q from'deepmerge';import {HttpsProxyAgent}from'https-proxy-agent';import Pr from'node-fetch';import {createHash}from'crypto';var Ke=async({sourceFile:e,config:t})=>{let s=t.menuColor==="inverted"?"dark":"";for(let n of e.getDescendantsOfKind(SyntaxKind.JsxAttribute)){if(n.getNameNode().getText()!=="className")continue;let o=n.getInitializer();if(!o)continue;let a=o.getText();if(!a.includes("cn-menu-target"))continue;let l=a.replace(/cn-menu-target/g,s);s||(l=l.replace(/\s{2,}/g," "),l=l.replace(/"\s+/g,'"'),l=l.replace(/\s+"/g,'"'),l=l.replace(/,\s*""\s*,/g,","),l=l.replace(/\(\s*""\s*,/g,"("),l=l.replace(/,\s*""\s*\)/g,")")),n.setInitializer(l);}return e};var U={NOT_FOUND:"NOT_FOUND",UNAUTHORIZED:"UNAUTHORIZED",FORBIDDEN:"FORBIDDEN",FETCH_ERROR:"FETCH_ERROR",LOCAL_FILE_ERROR:"LOCAL_FILE_ERROR",PARSE_ERROR:"PARSE_ERROR",UNKNOWN_ERROR:"UNKNOWN_ERROR"},O=class extends Error{code;statusCode;context;suggestion;timestamp;cause;constructor(t,r={}){super(t),this.name="RegistryError",this.code=r.code||U.UNKNOWN_ERROR,this.statusCode=r.statusCode,this.cause=r.cause,this.context=r.context,this.suggestion=r.suggestion,this.timestamp=new Date,Error.captureStackTrace&&Error.captureStackTrace(this,this.constructor);}toJSON(){return {name:this.name,message:this.message,code:this.code,statusCode:this.statusCode,context:this.context,suggestion:this.suggestion,timestamp:this.timestamp,stack:this.stack}}},se=class extends O{constructor(r,s){let n=`The item at ${r} was not found. It may not exist at the registry.`;super(n,{code:U.NOT_FOUND,statusCode:404,cause:s,context:{url:r},suggestion:"Check if the item name is correct and the registry URL is accessible."});this.url=r;this.name="RegistryNotFoundError";}},ne=class extends O{constructor(r,s){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:U.UNAUTHORIZED,statusCode:401,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryUnauthorizedError";}},ie=class extends O{constructor(r,s){let n=`You are not authorized to access the item at ${r}. If this is a remote registry, you may need to authenticate.`;super(n,{code:U.FORBIDDEN,statusCode:403,cause:s,context:{url:r},suggestion:"Check your authentication credentials and environment variables."});this.url=r;this.name="RegistryForbiddenError";}},oe=class extends O{constructor(r,s,n,i){let o=s?`Failed to fetch from registry (${s}): ${r}`:`Failed to fetch from registry: ${r}`,a=typeof i=="string"&&i?`${o} - ${i}`:o,l="Check your network connection and try again.";s===404?l="The requested resource was not found. Check the URL or item name.":s===500?l="The registry server encountered an error. Try again later.":s&&s>=400&&s<500&&(l="There was a client error. Check your request parameters.");super(a,{code:U.FETCH_ERROR,statusCode:s,cause:i,context:{url:r,responseBody:n},suggestion:l});this.url=r;this.responseBody=n;this.name="RegistryFetchError";}},Z=class extends O{constructor(r,s){super(`Failed to read local registry file: ${r}`,{code:U.LOCAL_FILE_ERROR,cause:s,context:{filePath:r},suggestion:"Check if the file exists and you have read permissions."});this.filePath=r;this.name="RegistryLocalFileError";}},$=class extends O{constructor(r,s){let n=`Failed to parse registry item: ${r}`;s instanceof z$1.ZodError&&(n=`Failed to parse registry item: ${r}
2
- ${s.errors.map(i=>` - ${i.path.join(".")}: ${i.message}`).join(`
3
- `)}`);super(n,{code:U.PARSE_ERROR,cause:s,context:{item:r},suggestion:"The registry item may be corrupted or have an invalid format. Please make sure it returns a valid JSON object. See https://createui.co/schema/registry-item.json."});this.item=r;this.parseError=s,this.name="RegistryParseError";}parseError};var ae=process.env.REGISTRY_URL??"https://createui.co/r",gt=[{name:"indigo",label:"Indigo"},{name:"lime",label:"Lime"},{name:"green",label:"Green"},{name:"red",label:"Red"},{name:"orange",label:"Orange"},{name:"yellow",label:"Yellow"},{name:"cyan",label:"Cyan"},{name:"blue",label:"Blue"}],dt=gt,ht=[{name:"gray",label:"Gray"},{name:"slate",label:"Slate"},{name:"zinc",label:"Zinc"},{name:"base",label:"Base"},{name:"stone",label:"Stone"}];dt.map(e=>e.name);var Mr=ht.map(e=>e.name),Br="gray",ce=[{name:"v1",label:"Default (Geist + JetBrains Mono)"}],Gr=ce.map(e=>e.name),Hr="v1";var Jr=[{name:"toast",deprecatedBy:"sonner",message:"The toast component is deprecated. Use the sonner component instead."},{name:"toaster",deprecatedBy:"sonner",message:"The toaster component is deprecated. Use the sonner component instead."}];var P={"next-app":{name:"next-app",label:"Next.js",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/nextjs"}},"next-pages":{name:"next-pages",label:"Next.js",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/nextjs"}},remix:{name:"remix",label:"Remix",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/remix"}},"react-router":{name:"react-router",label:"React Router",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/installation/framework-guides/react-router"}},vite:{name:"vite",label:"Vite",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/vite"}},astro:{name:"astro",label:"Astro",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/astro"}},laravel:{name:"laravel",label:"Laravel",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/laravel"}},"tanstack-start":{name:"tanstack-start",label:"TanStack Start",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/installation/using-postcss"}},gatsby:{name:"gatsby",label:"Gatsby",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/guides/gatsby"}},expo:{name:"expo",label:"Expo",links:{installation:"https://createui.co/docs/installation",tailwind:"https://www.nativewind.dev/docs/getting-started/installation"}},manual:{name:"manual",label:"Manual",links:{installation:"https://createui.co/docs/installation",tailwind:"https://tailwindcss.com/docs/installation"}}};var T={error:red,warn:yellow,info:cyan,success:green};async function k(e,t){return createMatchPath(t.absoluteBaseUrl,t.paths)(e,void 0,()=>true,[".ts",".tsx",".jsx",".js",".css"])}var cs="@/components",ls="@/lib/utils",fs="app/globals.css",ps="tailwind.config.js";var It=cosmiconfig("components",{searchPlaces:["components.json"]});async function le(e){let t=await St(e);return t?(t.iconLibrary||(t.iconLibrary="createui"),await Ee(e,t)):null}async function Ee(e,t){let r=await loadConfig(e);if(r.resultType==="failed")throw new Error(`Failed to load ${t.tsx?"tsconfig":"jsconfig"}.json. ${r.message??""}`.trim());return b.parse({...t,resolvedPaths:{cwd:e,tailwindConfig:t.tailwind.config?h__default.resolve(e,t.tailwind.config):"",tailwindCss:h__default.resolve(e,t.tailwind.css),utils:await k(t.aliases.utils,r),components:await k(t.aliases.components,r),ui:t.aliases.ui?await k(t.aliases.ui,r):h__default.resolve(await k(t.aliases.components,r)??e,"ui"),lib:t.aliases.lib?await k(t.aliases.lib,r):h__default.resolve(await k(t.aliases.utils,r)??e,".."),hooks:t.aliases.hooks?await k(t.aliases.hooks,r):h__default.resolve(await k(t.aliases.components,r)??e,"..","hooks")}})}async function St(e){try{let t=await It.search(e);return t?a.parse(t.config):null}catch{let r=`${e}/components.json`;throw new Error(`Invalid configuration found in ${T.info(r)}.`)}}async function ms(e){let t={};for(let s of Object.keys(e.aliases)){if(!Tt(s,e))continue;let n=e.resolvedPaths[s],i=await Pt(e.resolvedPaths.cwd,n);if(!i){t[s]=e;continue}t[s]=await le(i);}let r=c.safeParse(t);return r.success?r.data:null}async function Pt(e,t){let r=kt(e,t),s=h__default.relative(r,t),i=(await me.glob("**/package.json",{cwd:r,deep:3,ignore:["**/node_modules/**","**/dist/**","**/build/**","**/public/**"]})).map(o=>h__default.dirname(o)).find(o=>s.startsWith(o));return i?h__default.join(r,i):null}function Tt(e,t){return Object.keys(t.resolvedPaths).filter(r=>r!=="utils").includes(e)}function kt(e,t){let r=e.split(h__default.sep),s=t.split(h__default.sep),n=[];for(let i=0;i<Math.min(r.length,s.length)&&r[i]===s[i];i++)n.push(r[i]);return n.join(h__default.sep)}function Me(e){let t={resolvedPaths:{cwd:process.cwd(),tailwindConfig:"",tailwindCss:"",utils:"",components:"",ui:"",lib:"",hooks:""},tailwind:{config:"",css:"",baseColor:"",cssVariables:false},rsc:false,tsx:true,aliases:{components:"",utils:""}};return e?{...t,...e,resolvedPaths:{...t.resolvedPaths,...e.resolvedPaths||{}},tailwind:{...t.tailwind,...e.tailwind||{}},aliases:{...t.aliases,...e.aliases||{}}}:t}function Ce(e="",t=true){let r=h__default.join(e,"package.json");return pe.readJSONSync(r,{throws:t})}var ue=["**/node_modules/**",".next","public","dist","build"];z$1.object({compilerOptions:z$1.object({paths:z$1.record(z$1.string().or(z$1.array(z$1.string())))})});async function B(e){let[t,r,s,n,i,o,a,l]=await Promise.all([me.glob("**/{next,vite,astro,app}.config.*|gatsby-config.*|composer.json|react-router.config.*",{cwd:e,deep:3,ignore:ue}),pe.pathExists(h__default.resolve(e,"src")),Lt(e),At(e),Dt(e),$t(e),_t(e),Ce(e,false)]),f=await pe.pathExists(h__default.resolve(e,`${r?"src/":""}app`)),c={framework:P.manual,isSrcDir:r,isRSC:false,isTsx:s,tailwindConfigFile:n,tailwindCssFile:i,tailwindVersion:o,frameworkVersion:null,aliasPrefix:a};if(t.find(m=>m.startsWith("next.config."))?.length)return c.framework=f?P["next-app"]:P["next-pages"],c.isRSC=f,c.frameworkVersion=await Ot(c.framework,l),c;if(t.find(m=>m.startsWith("astro.config."))?.length)return c.framework=P.astro,c;if(t.find(m=>m.startsWith("gatsby-config."))?.length)return c.framework=P.gatsby,c;if(t.find(m=>m.startsWith("composer.json"))?.length)return c.framework=P.laravel,c;if(Object.keys(l?.dependencies??{}).find(m=>m.startsWith("@remix-run/")))return c.framework=P.remix,c;if([...Object.keys(l?.dependencies??{}),...Object.keys(l?.devDependencies??{})].find(m=>m.startsWith("@tanstack/react-start")))return c.framework=P["tanstack-start"],c;if(t.find(m=>m.startsWith("react-router.config."))?.length)return c.framework=P["react-router"],c;if(t.find(m=>m.startsWith("vite.config."))?.length)return c.framework=P.vite,c;let d=t.find(m=>m.startsWith("app.config"));return d?.length&&(await pe.readFile(h__default.resolve(e,d),"utf8")).includes("defineConfig")?(c.framework=P.vite,c):(l?.dependencies?.expo&&(c.framework=P.expo),c)}async function Ot(e,t){if(!t||!["next-app","next-pages"].includes(e.name))return null;let r=t.dependencies?.next||t.devDependencies?.next;if(!r)return null;let s=r.match(/^[\^~]?(\d+\.\d+\.\d+)/);if(s)return s[1];let n=r.match(/(\d+\.\d+\.\d+)/);return n?n[1]:r}async function $t(e){let[t,r]=await Promise.all([Ce(e,false),le(e)]);return r?.tailwind?.config===""?"v4":!t?.dependencies?.tailwindcss&&!t?.devDependencies?.tailwindcss?null:"v4"}async function Dt(e){let t=await me.glob(["**/*.css","**/*.scss"],{cwd:e,deep:5,ignore:ue});if(!t.length)return null;for(let r of t){let s=await pe.readFile(h__default.resolve(e,r),"utf8");if(s.includes('@import "tailwindcss"')||s.includes("@import 'tailwindcss'"))return r}return null}async function At(e){let t=await me.glob("tailwind.config.*",{cwd:e,deep:3,ignore:ue});return t.length?t[0]:null}async function _t(e){let t=await loadConfig(e);if(t?.resultType==="failed"||!Object.entries(t?.paths).length)return null;for(let[r,s]of Object.entries(t.paths))if(s.includes("./*")||s.includes("./src/*")||s.includes("./app/*")||s.includes("./resources/js/*"))return r.replace(/\/\*$/,"")??null;return Object.keys(t?.paths)?.[0].replace(/\/\*$/,"")??null}async function Lt(e){return (await me.glob("tsconfig.*",{cwd:e,deep:1,ignore:ue})).length>0}async function Ts(e,t=null){let[r,s]=await Promise.all([le(e),t?Promise.resolve(t):B(e)]);if(r)return r;if(!s||!s.tailwindCssFile)return null;let n={$schema:"https://createui.co/schema.json",rsc:s.isRSC,tsx:s.isTsx,tailwind:{config:s.tailwindConfigFile??"",baseColor:"zinc",css:s.tailwindCssFile,cssVariables:true,prefix:""},iconLibrary:"createui",aliases:{components:`${s.aliasPrefix}/components`,ui:`${s.aliasPrefix}/components/ui`,hooks:`${s.aliasPrefix}/hooks`,lib:`${s.aliasPrefix}/lib`,utils:`${s.aliasPrefix}/lib/utils`}};return await Ee(e,n)}function Be(e,t,r={}){let{ignoreImports:s=false}=r,n=e.replace(/\r\n/g,`
4
- `).trim(),i=t.replace(/\r\n/g,`
5
- `).trim();if(n===i)return true;if(!s)return false;let o=/^(import\s+(?:type\s+)?(?:\*\s+as\s+\w+|\{[^}]*\}|\w+)?(?:\s*,\s*(?:\{[^}]*\}|\w+))?\s+from\s+["'])([^"']+)(["'])/gm,a=c=>c.replace(o,(d,m,u,y)=>{if(u.startsWith("."))return `${m}${u}${y}`;let g=u.split("/"),v=g[g.length-1];return `${m}@normalized/${v}${y}`}),l=a(n),f=a(i);return l===f}function V(e){let t=h__default.basename(e);return /^\.env(\.|$)/.test(t)}function He(e){let t=[".env.local",".env",".env.development.local",".env.development"];for(let r of t){let s=h__default.join(e,r);if(existsSync(s))return s}return null}function G(e){let t=e.split(`
6
- `),r={};for(let s of t){let n=s.trim();if(!n||n.startsWith("#"))continue;let i=n.indexOf("=");if(i===-1)continue;let o=n.substring(0,i).trim(),a=n.substring(i+1).trim();o&&(r[o]=a.replace(/^["']|["']$/g,""));}return r}function Je(e,t){let r=G(e),s=G(t),n=[];for(let i of Object.keys(s))i in r||n.push(i);return n}function qe(e,t){let r=G(e),s=G(t),n=e.trimEnd();n&&!n.endsWith(`
7
- `)&&(n+=`
8
- `);let i=[];for(let[o,a]of Object.entries(s))o in r||i.push(`${o}=${a}`);return i.length>0?(n&&(n+=`
9
- `),n+=i.join(`
10
- `),n+`
11
- `):n&&!n.endsWith(`
12
- `)?n+`
13
- `:n}var w={error(...e){console.log(T.error(e.join(" ")));},warn(...e){console.log(T.warn(e.join(" ")));},info(...e){console.log(T.info(e.join(" ")));},success(...e){console.log(T.success(e.join(" ")));},log(...e){console.log(e.join(" "));},break(){console.log("");}};function X(e,t){return Wt({text:e,isSilent:t?.silent})}var ge=async({sourceFile:e})=>e;var de=async({sourceFile:e,config:t,isRemote:r})=>{let s=t.aliases?.utils,i=`${typeof s=="string"&&s.includes("/")?s.split("/")[0]:"@"}/lib/utils`;if(![".tsx",".ts",".jsx",".js"].includes(e.getExtension()))return e;for(let o of e.getImportStringLiterals()){let a=Vt(o.getLiteralValue(),t,r);if(o.setLiteralValue(a),i===a||a==="@/lib/utils"){if(!o.getFirstAncestorByKind(SyntaxKind.ImportDeclaration)?.getNamedImports().some(c=>c.getName()==="cn")||!t.aliases.utils)continue;o.setLiteralValue(i===a?a.replace(i,t.aliases.utils):t.aliases.utils);}}return e};function Vt(e,t,r=false){if(!e.startsWith("@/")&&!r)return e;if(r&&e.startsWith("@/")&&(e=e.replace(/^@\//,"@/registry/_/")),!e.startsWith("@/registry/")){let s=t.aliases.components.split("/")[0];return e.replace(/^@\//,`${s}/`)}return e.match(/^@\/registry\/((.+)\/)?ui/)?e.replace(/^@\/registry\/((.+)\/)?ui/,t.aliases.ui??`${t.aliases.components}/ui`):t.aliases.components&&e.match(/^@\/registry\/((.+)\/)?components/)?e.replace(/^@\/registry\/((.+)\/)?components/,t.aliases.components):t.aliases.lib&&e.match(/^@\/registry\/((.+)\/)?lib/)?e.replace(/^@\/registry\/((.+)\/)?lib/,t.aliases.lib):t.aliases.hooks&&e.match(/^@\/registry\/((.+)\/)?hooks/)?e.replace(/^@\/registry\/((.+)\/)?hooks/,t.aliases.hooks):e.replace(/^@\/registry\/[^/]+/,t.aliases.components)}var Gt={sourceType:"module",allowImportExportEverywhere:true,allowReturnOutsideFunction:true,startLine:1,tokens:true,plugins:["asyncGenerators","bigInt","classPrivateMethods","classPrivateProperties","classProperties","classStaticBlock","decimal","decorators-legacy","doExpressions","dynamicImport","exportDefaultFrom","exportNamespaceFrom","functionBind","functionSent","importAssertions","importMeta","nullishCoalescingOperator","numericSeparator","objectRestSpread","optionalCatchBinding","optionalChaining",["pipelineOperator",{proposal:"minimal"}],["recordAndTuple",{syntaxType:"hash"}],"throwExpressions","topLevelAwait","v8intrinsic","typescript","jsx"]},Ye=async({sourceFile:e,config:t})=>{let r=e.getFullText();if(t.tsx)return r;let s=he.parse(r,{parser:{parse:i=>parse(i,Gt)}}),n=transformFromAstSync(s,r,{cloneInputAst:false,code:false,ast:true,plugins:[Bt],configFile:false});if(!n||!n.ast)throw new Error("Failed to transform JSX");return he.print(n.ast).code};var Jt=/^["']use client["']$/g,ye=async({sourceFile:e,config:t})=>{if(t.rsc)return e;let r=e.getFirstChildByKind(SyntaxKind.ExpressionStatement);return r&&Jt.test(r.getText())&&r.remove(),e};var xe=async({sourceFile:e,config:t})=>(t.tailwind?.prefix&&(e.getDescendantsOfKind(SyntaxKind.CallExpression).filter(r=>r.getExpression().getText()==="cva").forEach(r=>{if(r.getArguments()[0]?.isKind(SyntaxKind.StringLiteral)){let s=r.getArguments()[0];s&&s.replaceWithText(`"${_(s.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}r.getArguments()[1]?.isKind(SyntaxKind.ObjectLiteralExpression)&&r.getArguments()[1]?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).find(s=>s.getName()==="variants")?.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(s=>{s.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(n=>{let i=n.getInitializerIfKind(SyntaxKind.StringLiteral);i&&i?.replaceWithText(`"${_(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);});});}),e.getDescendantsOfKind(SyntaxKind.JsxAttribute).forEach(r=>{if(r.getNameNode().getText()==="className"){if(r.getInitializer()?.isKind(SyntaxKind.StringLiteral)){let s=r.getInitializer();s&&s.replaceWithText(`"${_(s.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}if(r.getInitializer()?.isKind(SyntaxKind.JsxExpression)){let s=r.getInitializer()?.getDescendantsOfKind(SyntaxKind.CallExpression).find(n=>n.getExpression().getText()==="cn");s&&s.getArguments().forEach(n=>{(n.isKind(SyntaxKind.ConditionalExpression)||n.isKind(SyntaxKind.BinaryExpression))&&n.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(i=>{i.replaceWithText(`"${_(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}),n.isKind(SyntaxKind.StringLiteral)&&n.replaceWithText(`"${_(n.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);});}}r.getNameNode().getText()==="classNames"&&r.getInitializer()?.isKind(SyntaxKind.JsxExpression)&&r.getDescendantsOfKind(SyntaxKind.PropertyAssignment).forEach(s=>{if(s.getInitializer()?.isKind(SyntaxKind.CallExpression)){let n=s.getInitializerIfKind(SyntaxKind.CallExpression);n&&n.getArguments().forEach(i=>{i.isKind(SyntaxKind.ConditionalExpression)&&i.getChildrenOfKind(SyntaxKind.StringLiteral).forEach(o=>{o.replaceWithText(`"${_(o.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}),i.isKind(SyntaxKind.StringLiteral)&&i.replaceWithText(`"${_(i.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);});}if(s.getInitializer()?.isKind(SyntaxKind.StringLiteral)&&s.getNameNode().getText()!=="variant"){let n=s.getInitializer();n&&n.replaceWithText(`"${_(n.getText()?.replace(/"|'/g,""),t.tailwind.prefix)}"`);}});})),e);function _(e,t=""){return e.split(" ").map(r=>r.indexOf(`${t}:`)===0?r:`${t}:${r.trim()}`).join(" ")}var Qt=new Project({compilerOptions:{}});async function er(e){let t=await promises.mkdtemp(h__default.join(tmpdir(),"createui-"));return h__default.join(t,e)}async function Xe(e,t=[de,ye,ge,xe]){let r=await er(e.filename),s=Qt.createSourceFile(r,e.raw,{scriptKind:ScriptKind.TSX});for(let n of t)await n({sourceFile:s,...e});return e.transformJsx?await Ye({sourceFile:s,...e}):s.getText()}var Qe=async({sourceFile:e})=>(e.getFunctions().forEach(t=>{t.getName()==="middleware"&&t.rename("proxy");}),e.getVariableDeclarations().forEach(t=>{t.getName()==="middleware"&&t.rename("proxy");}),e.getExportDeclarations().forEach(t=>{t.getNamedExports().forEach(s=>{s.getName()==="middleware"&&s.setName("proxy"),s.getAliasNode()?.getText()==="middleware"&&s.setAlias("proxy");});}),e);async function kn(e,t,r){if(!e?.length)return {filesCreated:[],filesUpdated:[],filesSkipped:[]};r={overwrite:false,force:false,silent:false,isRemote:false,isWorkspace:false,...r};let s=X("Updating files.",{silent:r.silent})?.start(),n=await B(t.resolvedPaths.cwd),i=[],o=[],a=[],l=[],f=null;for(let u=0;u<e.length;u++){let y=e[u];if(!y.content)continue;let g=Ie(y,t,{isSrcDir:n?.isSrcDir,framework:n?.framework.name,commonRoot:Se(e.map(E=>E.path),y.path),path:r.path,fileIndex:u});if(!g)continue;let v=basename(y.path),C=h__default.dirname(g);if(t.tsx||(g=g.replace(/\.tsx?$/,E=>E===".tsx"?".jsx":".js")),V(g)&&!existsSync(g)){let E=He(C);E&&(g=E);}let p=existsSync(g);if(p&&statSync(g).isDirectory())throw new Error(`Cannot write to ${g}: path exists and is a directory. Please provide a file path instead.`);let x=y.type==="registry:file"||y.type==="registry:item",b=V(g)||x?y.content:await Xe({filename:y.path,raw:y.content,config:t,transformJsx:!t.tsx,isRemote:r.isRemote},[de,ye,ge,xe,Ke,...et(g,n,t)?[Qe]:[]]);if(p&&!V(g)){let E=await promises.readFile(g,"utf-8");if(Be(E,b,{ignoreImports:r.isWorkspace})){a.push(h__default.relative(t.resolvedPaths.cwd,g));continue}}if(p&&!r.overwrite&&!V(g)){s.stop(),r.rootSpinner&&r.rootSpinner.stop();let{overwrite:E}=await sr({type:"confirm",name:"overwrite",message:`The file ${T.info(v)} already exists. Would you like to overwrite?`,initial:false});if(!E){a.push(h__default.relative(t.resolvedPaths.cwd,g)),r.rootSpinner&&r.rootSpinner.start();continue}s?.start(),r.rootSpinner&&r.rootSpinner.start();}if(et(g,n,t)&&(g=g.replace(/middleware\.(ts|js)$/,"proxy.$1")),existsSync(C)||await promises.mkdir(C,{recursive:true}),V(g)&&p){let E=await promises.readFile(g,"utf-8"),S=qe(E,b);if(l=Je(E,b),f=h__default.relative(t.resolvedPaths.cwd,g),!l.length){a.push(h__default.relative(t.resolvedPaths.cwd,g));continue}await promises.writeFile(g,S,"utf-8"),o.push(h__default.relative(t.resolvedPaths.cwd,g));continue}await promises.writeFile(g,b,"utf-8"),p?o.push(h__default.relative(t.resolvedPaths.cwd,g)):(i.push(h__default.relative(t.resolvedPaths.cwd,g)),V(g)&&(l=Object.keys(G(b)),f=h__default.relative(t.resolvedPaths.cwd,g)));}let c=[...i,...o,...a],d=await fr(c,t);if(o.push(...d),o=o.filter(u=>!i.includes(u)),!(i.length||o.length)&&!a.length&&s?.info("No files updated."),i=Array.from(new Set(i)),o=Array.from(new Set(o)),a=Array.from(new Set(a)),i.length){if(s?.succeed(`Created ${i.length} ${i.length===1?"file":"files"}:`),!r.silent)for(let u of i)w.log(` - ${u}`);}else s?.stop();if(o.length&&(X(`Updated ${o.length} ${o.length===1?"file":"files"}:`,{silent:r.silent})?.info(),!r.silent))for(let u of o)w.log(` - ${u}`);if(a.length&&(X(`Skipped ${a.length} ${o.length===1?"file":"files"}: (files might be identical, use --overwrite to overwrite)`,{silent:r.silent})?.info(),!r.silent))for(let u of a)w.log(` - ${u}`);if(l.length&&f&&(X(`Added the following variables to ${T.info(f)}:`)?.info(),!r.silent))for(let u of l)w.log(` ${T.success("+")} ${u}`);return r.silent||w.break(),{filesCreated:i,filesUpdated:o,filesSkipped:a}}function Ie(e,t,r){if(r.path){let i=h__default.isAbsolute(r.path)?r.path:h__default.join(t.resolvedPaths.cwd,r.path);if(/\.[^/\\]+$/.test(i)){if(r.fileIndex===0)return i}else {let a=h__default.basename(e.path);return h__default.join(i,a)}}if(e.target){if(e.target.startsWith("~/"))return h__default.join(t.resolvedPaths.cwd,e.target.replace("~/",""));let i=e.target;return e.type==="registry:page"&&(i=lr(i,r.framework),!i)?"":r.isSrcDir?h__default.join(t.resolvedPaths.cwd,"src",i.replace("src/","")):h__default.join(t.resolvedPaths.cwd,i.replace("src/",""))}let s=ar(e,t),n=cr(e.path,s);return h__default.join(s,n)}function ar(e,t){return e.type==="registry:ui"?t.resolvedPaths.ui:e.type==="registry:lib"?t.resolvedPaths.lib:e.type==="registry:block"||e.type==="registry:component"?t.resolvedPaths.components:e.type==="registry:hook"?t.resolvedPaths.hooks:t.resolvedPaths.components}function Se(e,t){let r=e.map(o=>o.replace(/^\//,"")),s=t.replace(/^\//,""),n=s.split("/").slice(0,-1).join("/");if(!n)return "";let i=n.split("/");for(let o=i.length;o>0;o--){let a=i.slice(0,o).join("/");if(r.some(f=>f!==s&&f.startsWith(a+"/")))return "/"+a}return "/"+n}function cr(e,t){let r=e.replace(/^\/|\/$/g,""),s=t.replace(/^\/|\/$/g,""),n=r.split("/"),i=s.split("/"),o=i[i.length-1],a=n.findIndex(l=>l===o);return a===-1?n[n.length-1]:n.slice(a+1).join("/")}function lr(e,t){if(!t)return "";if(t==="next-app")return e;if(t==="next-pages"){let r=e.replace(/^app\//,"pages/");return r=r.replace(/\/page(\.[jt]sx?)$/,"$1"),r}if(t==="react-router"){let r=e.replace(/^app\//,"app/routes/");return r=r.replace(/\/page(\.[jt]sx?)$/,"$1"),r}if(t==="laravel"){let r=e.replace(/^app\//,"resources/js/pages/");return r=r.replace(/\/page(\.[jt]sx?)$/,"$1"),r}return ""}async function fr(e,t){let r=new Project({compilerOptions:{}}),s=await B(t.resolvedPaths.cwd),n=loadConfig(t.resolvedPaths.cwd),i=[];if(!s||n.resultType==="failed")return [];for(let o of e){let a=h__default.resolve(t.resolvedPaths.cwd,o);if(!existsSync(a))continue;let l=await promises.readFile(a,"utf-8"),f=await promises.mkdtemp(h__default.join(tmpdir(),"createui-")),c=r.createSourceFile(h__default.join(f,basename(a)),l,{scriptKind:ScriptKind.TSX});if(![".tsx",".ts",".jsx",".js"].includes(c.getExtension()))continue;let d=c.getImportDeclarations();for(let m of d){let u=m.getModuleSpecifierValue();if(s?.aliasPrefix&&!u.startsWith(`${s.aliasPrefix}/`))continue;let y=await k(u,n);if(!y)continue;let g=pr(y,e,t);if(!g)continue;let v=mr(g,t,s);!v||v===u||(m.setModuleSpecifier(v),await promises.writeFile(a,c.getFullText(),"utf-8"),i.push(o));}}return i}function pr(e,t,r,s=[".tsx",".ts",".js",".jsx",".css"]){let n=h__default.normalize(r.resolvedPaths.cwd),i=t.map(v=>v.split(h__default.sep).join(h__default.posix.sep)),o=new Set(i),a=h__default.extname(e),l=a!=="",f=l?e.slice(0,-a.length):e,d=h__default.relative(n,f).split(h__default.sep).join(h__default.posix.sep),m=l?[a]:s,u=new Set;for(let v of m){let C=f+v,p=h__default.posix.normalize(h__default.relative(n,C));(o.has(p)||existsSync(C))&&u.add(p);let x=h__default.join(f,`index${v}`),b=h__default.posix.normalize(h__default.relative(n,x));(o.has(b)||existsSync(x))&&u.add(b);}let y=h__default.basename(f);for(let v of i)m.some(C=>v.endsWith(`/${y}${C}`))&&u.add(v);return u.size===0?null:Array.from(u).sort((v,C)=>{let p=h__default.posix.extname(v),x=h__default.posix.extname(C),b=m.indexOf(p)-m.indexOf(x);if(b!==0)return b;let E=d&&v.startsWith(d)?-1:1,S=d&&C.startsWith(d)?-1:1;return E-S})[0]}function mr(e,t,r){let s=h__default.normalize(h__default.join(t.resolvedPaths.cwd,e)),n=Object.entries(t.resolvedPaths).filter(([,y])=>y&&s.startsWith(h__default.normalize(y+h__default.sep))).sort((y,g)=>g[1].length-y[1].length);if(n.length===0)return null;let[i,o]=n[0],a=h__default.relative(o,s);a=a.split(h__default.sep).join("/");let l=h__default.posix.extname(a),c=[".ts",".tsx",".js",".jsx"].includes(l)?"":l,d=a.slice(0,a.length-l.length);d.endsWith("/index")&&(d=d.slice(0,-6));let m=i==="cwd"?r.aliasPrefix:t.aliases[i];if(!m)return null;let u=d===""?"":`/${d}`;return u=u.replace("/src",""),`${m}${u}${c}`}function et(e,t,r){let s=e===h__default.join(r.resolvedPaths.cwd,"middleware.ts")||e===h__default.join(r.resolvedPaths.cwd,"middleware.js"),n=t?.framework.name==="next-app"||t?.framework.name==="next-pages";if(!s||!n||!t?.frameworkVersion)return false;let i=parseInt(t.frameworkVersion.split(".")[0]);return !isNaN(i)&&i>=16}var st=[".tsx",".ts",".jsx",".js",".css"],nt=["lib/utils.ts"],yr=[/^(react|react-dom|next)(\/.*)?$/,/^(node|jsr|npm):.*$/],xr=new Project({compilerOptions:{}});function wr(e){if(yr.some(t=>t.test(e)))return null;if(!e.startsWith("@")&&e.includes("/")&&(e=e.split("/")[0]),e.startsWith("@")){let t=e.split("/");t.length>2&&(e=t.slice(0,2).join("/"));}return e}async function vr(e,t,r,s=new Set){let n=h.resolve(t.resolvedPaths.cwd,e),i=h.relative(t.resolvedPaths.cwd,n);if(nt.includes(i))return {dependencies:[],files:[]};let o=h.extname(e);if(!st.includes(o))return {dependencies:[],files:[]};if(s.has(i))return {dependencies:[],files:[]};if(s.add(i),!(await z.stat(n)).isFile())return {dependencies:[],files:[]};let l=await z.readFile(n,"utf-8"),f=await Rr(h.basename(n)),c=xr.createSourceFile(f,l,{scriptKind:ScriptKind.TSX}),d=await loadConfig(t.resolvedPaths.cwd);if(d.resultType==="failed")return {dependencies:[],files:[]};let m=[],u=new Set,y=it(e),g={path:i,type:y,target:""};m.push(g);let v=c.getImportDeclarations();for(let p of v){let x=p.getModuleSpecifierValue(),b=x.startsWith(".");if(!x.startsWith(`${r.aliasPrefix}/`)&&!b){let N=wr(x);N&&u.add(N);continue}let S=await k(x,d);if(b&&(S=h.resolve(h.dirname(n),x)),!S)continue;if(!h.extname(S))for(let N of st){let Ne=`${S}${N}`;try{await z.access(Ne),S=Ne;break}catch{continue}}let K=h.relative(t.resolvedPaths.cwd,S);if(s.has(K)||nt.includes(K))continue;let Y=it(x),Fe={path:K,type:Y,target:""};(Y==="registry:page"||Y==="registry:file")&&(Fe.target=x),m.push(Fe);let te=await vr(K,t,r,s);if(te.files)for(let N of te.files)s.has(N.path)||(s.add(N.path),m.push(N));te.dependencies&&te.dependencies.forEach(N=>u.add(N));}let C=Array.from(new Map(m.map(p=>[p.path,p])).values());return {dependencies:Array.from(u),files:C}}async function Rr(e){let t=await z.mkdtemp(h.join(tmpdir(),"createui-"));return h.join(t,e)}function it(e){return e.includes("/ui/")?"registry:ui":e.includes("/lib/")?"registry:lib":e.includes("/hooks/")?"registry:hook":(e.includes("/components/"),"registry:component")}function F(e){try{return new URL(e),!0}catch{return false}}function we(e){return e.endsWith(".json")&&!F(e)}function Vn(e){return !e||e.type!=="registry:item"&&e.type!=="registry:file"?false:(e.files??[]).every(r=>!!r.target&&(r.type==="registry:file"||r.type==="registry:item"))}async function ot(e$1,t){if(!br(t))return z$1.array(e).parse(e$1.flat().filter(Boolean));let r=await B(t.resolvedPaths.cwd),s=new Map,n=z$1.array(e).parse(e$1.flat().filter(Boolean));return n.forEach(i=>{let o=Ie(i,t,{isSrcDir:r?.isSrcDir,framework:r?.framework.name,commonRoot:Se(n.map(a=>a.path),i.path)});o&&s.set(o,i);}),Array.from(s.values())}function br(e){return !!(e?.resolvedPaths?.cwd&&(e?.resolvedPaths?.ui||e?.resolvedPaths?.lib||e?.resolvedPaths?.components||e?.resolvedPaths?.hooks))}function J(e){return F(e)?e:`${ae}/${e}`}function at(e){let t=Me();return e?b.parse(q(t,e)):t}var Tr=process.env.https_proxy?new HttpsProxyAgent(process.env.https_proxy):void 0,Pe=new Map;async function D(e,t={}){t={useCache:true,...t};try{return await Promise.all(e.map(async s=>{let n=J(s);if(t.useCache&&Pe.has(n))return Pe.get(n);let i=(async()=>{let o=await Pr(n,{agent:Tr});if(!o.ok){let a;if(o.headers.get("content-type")?.includes("application/json")){let l=await o.json(),f=z$1.object({detail:z$1.string().optional(),title:z$1.string().optional(),message:z$1.string().optional(),error:z$1.string().optional()}).safeParse(l);f.success&&(a=f.data.detail||f.data.message,f.data.error&&(a=`[${f.data.error}] ${a}`));}throw o.status===401?new ne(n,a):o.status===404?new se(n,a):o.status===403?new ie(n,a):new oe(n,o.status,a)}return o.json()})();return t.useCache&&Pe.set(n,i),i}))}catch(r){throw r}}async function lt(e){try{let t=e;e.startsWith("~/")&&(t=h__default.join(homedir(),e.slice(2)));let r=h__default.resolve(t),s=await promises.readFile(r,"utf8"),n$1=JSON.parse(s);try{return n.parse(n$1)}catch(i){throw new $(e,i)}}catch(t){throw t instanceof Error&&(t.message.includes("ENOENT")||t.message.includes("no such file"))?new Z(e,t):t instanceof $?t:new Z(e,t)}}async function ee(e,t={}){return await Promise.all(e.map(async s=>{if(we(s))return lt(s);if(F(s)){let[o]=await D([s],t);try{return n.parse(o)}catch(a){throw new $(s,a)}}let n$1=`${s}.json`,[i]=await D([n$1],t);try{return n.parse(i)}catch(o){throw new $(s,o)}}))}m.extend({type:d,_source:z$1.string().optional(),fontVariant:l.optional(),config:z$1.any().optional()}).passthrough();async function pt(e,t,r={}){r={useCache:true,...r};let s$1=[],n$1=[],i=[],o=Array.from(new Set(e)),a=await ee(o,r),l=new Map;for(let p=0;p<a.length;p++)a[p]&&l.set(o[p],a[p]);for(let[p,x]of Array.from(l.entries())){let b={...x,_source:p};if(s$1.push(b),x.registryDependencies){let{items:E,registryNames:S}=await ve(x.registryDependencies,t,r,new Set(o));n$1.push(...E),i.push(...S);}}if(s$1.push(...n$1),i.length>0){let p=Array.from(new Set(i)),x=await ke();if(!x&&s$1.length===0)return null;if(x){p.includes("index")&&p.unshift("index");let b=[];for(let K of p){let Y=await jr(K,t,r);b.push(...Y);}let E=Array.from(new Set(b)),S=await D(E,r),je=z$1.array(n).parse(S);s$1.push(...je);}}if(!s$1.length)return null;let f=new Map;s$1.forEach(p=>{let x=p._source||p.name;f.set(p,x);}),s$1=Nr(s$1,f),s$1.sort((p,x)=>p.type==="registry:theme"&&x.type!=="registry:theme"?-1:p.type!=="registry:theme"&&x.type==="registry:theme"?1:0);let c={};s$1.forEach(p=>{c=q(c,p.tailwind??{});});let d={};s$1.forEach(p=>{d=q(d,p.cssVars??{});});let m={};s$1.forEach(p=>{m=q(m,p.css??{});});let u="";s$1.forEach(p=>{p.docs&&(u+=`${p.docs}
14
- `);});let y={};s$1.forEach(p=>{y=q(y,p.envVars??{});});let g=await ot(s$1.map(p=>p.files??[]),t),v=[];for(let p of s$1)if(p.type==="registry:font-variant"&&p.fontVariant)for(let x of ["display","body","numeric"]){let b=p.fontVariant[x];b&&v.push({name:`${p.name}-${x}`,type:"registry:font",role:x,font:b});}let C=s.parse({dependencies:q.all(s$1.map(p=>p.dependencies??[])),devDependencies:q.all(s$1.map(p=>p.devDependencies??[])),files:g,tailwind:c,cssVars:d,css:m,docs:u,fonts:v.length>0?v:void 0});return Object.keys(y).length>0&&(C.envVars=y),C}async function ve(e,t,r={},s=new Set){let n=[],i=[];for(let o of e)if(!s.has(o))if(s.add(o),F(o)||we(o)){let[a]=await ee([o],r);if(a&&(n.push(a),a.registryDependencies)){let l=await ve(a.registryDependencies,t,r,s);n.push(...l.items),i.push(...l.registryNames);}}else {i.push(o);try{let[a]=await ee([o],r);if(a&&a.registryDependencies){let l=await ve(a.registryDependencies,t,r,s);n.push(...l.items),i.push(...l.registryNames);}}catch{}}return {items:n,registryNames:i}}async function jr(e,t,r={}){if(F(e))return [e];let{registryNames:s}=await ve([e],t,r,new Set),n=s.map(i=>J(F(i)?i:`${i}.json`));return Array.from(new Set(n))}function W(e,t){let r=t||e.name,s=createHash("sha256").update(r).digest("hex").substring(0,8);return `${e.name}::${s}`}function Fr(e){if(F(e)){let r=new URL(e).pathname,s=r.match(/\/([^/]+)\.json$/),n=s?s[1]:h__default.basename(r,".json");return {name:n,hash:W({name:n},e)}}if(we(e)){let t=e.match(/\/([^/]+)\.json$/),r=t?t[1]:h__default.basename(e,".json");return {name:r,hash:W({name:r},e)}}return {name:e,hash:W({name:e},e)}}function Nr(e,t){let r=new Map,s=new Map,n=new Map,i=new Map;e.forEach(f=>{let c=t.get(f)||f.name,d=W(f,c);r.set(d,f),s.set(d,f),n.set(d,0),i.set(d,[]);});let o=new Map;e.forEach(f=>{let c=t.get(f)||f.name,d=W(f,c);o.has(f.name)||o.set(f.name,[]),o.get(f.name).push(d),c!==f.name&&(o.has(c)||o.set(c,[]),o.get(c).push(d));}),e.forEach(f=>{let c=t.get(f)||f.name,d=W(f,c);f.registryDependencies&&f.registryDependencies.forEach(m=>{let u,y=o.get(m)||[];if(y.length===1)u=y[0];else if(y.length>1)u=y[0];else {let{name:g}=Fr(m),v=o.get(g)||[];v.length>0&&(u=v[0]);}u&&r.has(u)&&(i.get(u).push(d),n.set(d,n.get(d)+1));});});let a=[],l=[];for(n.forEach((f,c)=>{f===0&&a.push(c);});a.length>0;){let f=a.shift(),c=r.get(f);l.push(c),i.get(f).forEach(d=>{let m=n.get(d)-1;n.set(d,m),m===0&&a.push(d);});}if(l.length!==e.length){console.warn("Circular dependency detected in registry items");let f=new Set(l.map(c=>{let d=t.get(c)||c.name;return W(c,d)}));e.forEach(c=>{let d=t.get(c)||c.name,m=W(c,d);f.has(m)||l.push(c);});}return l}function Re(e){if(w.break(),w.error("Something went wrong. Please check the error below for more details."),w.error("If the problem persists, please open an issue on GitHub."),w.error(""),typeof e=="string"&&(w.error(e),w.break(),process.exit(1)),e instanceof O&&(e.message&&(w.error(e.cause?"Error:":"Message:"),w.error(e.message)),e.cause&&(w.error(`
15
- Message:`),w.error(e.cause)),e.suggestion&&(w.error(`
16
- Suggestion:`),w.error(e.suggestion)),w.break(),process.exit(1)),e instanceof z$1.ZodError){w.error("Validation failed:");for(let[t,r]of Object.entries(e.flatten().fieldErrors))w.error(`- ${T.info(t)}: ${r}`);w.break(),process.exit(1);}e instanceof Error&&(w.error(e.message),w.break(),process.exit(1)),w.break(),process.exit(1);}async function Dr(e,t){let{useCache:r}=t||{},s=F(e)?e:J("registry.json"),[n]=await D([s],{useCache:r});try{return o.parse(n)}catch(i){throw new $(e,i)}}async function zi(e,t){let{useCache:r=false}=t||{};return ee(e,{useCache:r})}async function Wi(e,t){let{config:r,useCache:s=false}=t||{};return pt(e,at(r),{useCache:s})}async function ke(){try{return (await Dr("registry.json")).items}catch(e){w.error(`
17
- `),Re(e);}}async function Ui(){try{let[e]=await D(["styles/index.json"]);return q$1.parse(e)}catch{return []}}async function Vi(){try{let[e]=await D(["icons/index.json"]);return r.parse(e)}catch(e){return Re(e),{}}}async function Ar(e,t){let r=[];for(let s of t){let n=e.find(i=>i.name===s);if(n&&(r.push(n),n.registryDependencies)){let i=await Ar(e,n.registryDependencies);r.push(...i);}}return r.filter((s,n,i)=>i.findIndex(o=>o.name===s.name)===n)}async function Ki(e,t){try{let r=t.map(n=>`${n.name}.json`);return (await D(r)).map(n$1=>n.parse(n$1))}catch(r){return Re(r),[]}}async function Mi(e,t,r){if(r)return r;if(t.type==="registry:ui")return e.resolvedPaths.ui??e.resolvedPaths.components;let[s,n]=t.type?.split(":")??[];return s in e.resolvedPaths?h__default.join(e.resolvedPaths[s],n):null}async function _r(e){e={useCache:true,...e};let t=`${ae}/config.json`,[r]=await D([t],{useCache:e.useCache});return w$1.parse(r).presets}async function Bi(e,t){return (await _r(t)).find(s=>s.name.toLowerCase()===e.toLowerCase())??null}function Lr(e){return (e.split(",")[0]?.trim().replace(/^['"]|['"]$/g,"")??e).replace(/\s*variable$/i,"").trim()}async function Gi(){try{let e=await ke()??[],t=[];for(let r of e){if(r.type!=="registry:font-variant"||!r.fontVariant)continue;let s=Array.from(new Set([r.fontVariant.display?.family,r.fontVariant.numeric?.family].filter(i=>!!i).map(Lr))),n=r.title??r.name;t.push({name:r.name.replace(/^font-variant-/,""),label:s.length?`${n} (${s.join(" + ")})`:n});}return t.length?t:[...ce]}catch{return [...ce]}}export{Bi as $,Xe as A,Ke as B,kn as C,vr as D,F as E,Vn as F,at as G,O as H,se as I,ne as J,ie as K,oe as L,Z as M,$ as N,D as O,pt as P,Re as Q,Dr as R,zi as S,Wi as T,ke as U,Ui as V,Vi as W,Ar as X,Ki as Y,Mi as Z,_r as _,T as a,Gi as aa,cs as b,ls as c,fs as d,ps as e,le as f,Ee as g,ms as h,Pt as i,kt as j,Me as k,Ce as l,B as m,Ts as n,w as o,X as p,gt as q,ht as r,Mr as s,Br as t,Gr as u,Hr as v,Jr as w,He as x,Je as y,qe as z};//# sourceMappingURL=chunk-5YX4Z2U3.js.map
18
- //# sourceMappingURL=chunk-5YX4Z2U3.js.map