@ohos-ports/shadcn 4.21.0-beta.1 → 4.21.0-beta.2

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.
@@ -128,7 +128,7 @@ Suggestion:`),E.error(e.suggestion)),Tt()),e instanceof z$1.ZodError){E.error("V
128
128
  `,s?.append(a);}});}catch(n){throw console.error("Error parsing rule content:",t,r,n),n}}async function cn(e,t,r,s){let n=B(r.resolvedPaths.cwd,false),i=await Ud(r),o=i!=="expo";if(e=Rr(e,n,{skipInstalled:o}),t=Rr(t,n,{skipInstalled:o}),!e?.length&&!t?.length)return;s={silent:false,interactive:true,...s};let a=j("Installing dependencies.",{silent:s.silent})?.start(),c="";if(zd(r)&&i==="npm")if(s.silent||!s.interactive)c="force";else {a.stopAndPersist(),E.warn(`
129
129
  It looks like you are using React 19.
130
130
  Some packages may fail to install due to peer dependency issues in npm (see ${V}/react-19).
131
- `);let f=await gl([{type:"select",name:"flag",message:"How would you like to proceed?",choices:[{title:"Use --force",value:"force"},{title:"Use --legacy-peer-deps",value:"legacy-peer-deps"}]}]);f&&(c=f.flag);}a?.start(),await Na(i,e,t,r.resolvedPaths.cwd,c),a?.succeed();}async function MR(e,t,r=[]){let s=B(e,false);t=Rr(t,s),r=Rr(r,s),!(!t.length&&!r.length)&&await Na(await kt(e),t,r,e);}async function DR(e,t){Ve(t);let r=B(e,false);if(t=t.filter(n=>Wd(r,n)),!t.length)return;let s=await kt(e);if(s==="npm"){await execa("npm",["uninstall","--",...t],{cwd:e});return}if(s==="deno"){let n=S__default.resolve(e,"package.json"),i=await te.readJson(n);for(let o of ["dependencies","devDependencies","optionalDependencies","peerDependencies"])for(let a of t)delete i[o]?.[a];await te.writeJson(n,i,{spaces:2});return}await execa(s,["remove","--",...t],{cwd:e});}function Rr(e=[],t,{skipInstalled:r=true}={}){let s=new Set([...Object.keys(t?.dependencies??{}),...Object.keys(t?.devDependencies??{}),...Object.keys(t?.optionalDependencies??{}),...Object.keys(t?.peerDependencies??{})]),n=new Map;for(let i of e){let o=Vd(i);if(!o){n.set(i,{dependency:i,hasSpecifier:true});continue}if(r&&!o.hasSpecifier&&s.has(o.name))continue;let a=n.get(o.name);(!a||!a.hasSpecifier&&o.hasSpecifier)&&n.set(o.name,{dependency:i,hasSpecifier:o.hasSpecifier});}return Array.from(n.values()).map(({dependency:i})=>i)}function Vd(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return null;let t=e.startsWith("@")?e.match(/^(@[^/]+\/[^@/]+)(@.+)?$/):e.match(/^([^@/]+)(@.+)?$/);return t?{name:t[1],hasSpecifier:!!t[2]}:null}function Wd(e,t){return !!(e?.dependencies?.[t]??e?.devDependencies?.[t]??e?.optionalDependencies?.[t]??e?.peerDependencies?.[t])}function zd(e){let t=B(e.resolvedPaths.cwd,false);if(!t?.dependencies?.react)return false;let r=/^(?:\^|~)?19(?:\.\d+)*(?:-.*)?$/.test(t.dependencies.react),s=t.dependencies["react-day-picker"]?.startsWith("8");return r&&s}async function Ud(e){return B(e.resolvedPaths.cwd,false)?.dependencies?.expo?"expo":kt(e.resolvedPaths.cwd)}function Ve(e){for(let t of e)if(t.trim().startsWith("-"))throw new Error(`Invalid dependency "${t}": dependency names cannot start with "-".`)}async function Na(e,t,r,s,n){if(e==="npm")return Kd(t,r,s,n);if(e==="deno")return Bd(t,r,s);if(e==="expo")return qd(t,r,s);Ve(t),Ve(r),t?.length&&await execa(e,["add","--",...t],{cwd:s}),r?.length&&await execa(e,["add","-D","--",...r],{cwd:s});}async function Kd(e,t,r,s){Ve(e),Ve(t),e.length&&await execa("npm",["install",...s?[`--${s}`]:[],"--",...e],{cwd:r}),t.length&&await execa("npm",["install",...s?[`--${s}`]:[],"-D","--",...t],{cwd:r});}async function Bd(e,t,r){e?.length&&await execa("deno",["add",...e.map(s=>`npm:${s}`)],{cwd:r}),t?.length&&await execa("deno",["add","-D",...t.map(s=>`npm:${s}`)],{cwd:r});}async function qd(e,t,r){Ve(e),Ve(t),e.length&&await execa("npx",["expo","install","--",...e],{cwd:r}),t.length&&await execa("npx",["expo","install","-- -D","--",...t],{cwd:r});}async function un(e,t,r){if(!e||Object.keys(e).length===0)return {envVarsAdded:[],envFileUpdated:null,envFileCreated:null};r={silent:false,...r};let s=j("Adding environment variables.",{silent:r.silent})?.start(),n=t.resolvedPaths.cwd,i=S__default.join(n,".env.local"),o=Zt(n);o&&(i=o);let a=existsSync(i),c=S__default.basename(i),f=Object.entries(e).map(([p,h])=>`${p}=${h}`).join(`
131
+ `);let f=await gl([{type:"select",name:"flag",message:"How would you like to proceed?",choices:[{title:"Use --force",value:"force"},{title:"Use --legacy-peer-deps",value:"legacy-peer-deps"}]}]);f&&(c=f.flag);}a?.start(),await Na(i,e,t,r.resolvedPaths.cwd,c),a?.succeed();}async function MR(e,t,r=[]){let s=B(e,false);t=Rr(t,s),r=Rr(r,s),!(!t.length&&!r.length)&&await Na(await kt(e),t,r,e);}async function DR(e,t){Ve(t);let r=B(e,false);if(t=t.filter(n=>Wd(r,n)),!t.length)return;let s=await kt(e);if(s==="npm"){await execa("npm",["uninstall","--",...t],{cwd:e});return}if(s==="deno"){let n=S__default.resolve(e,"package.json"),i=await te.readJson(n);for(let o of ["dependencies","devDependencies","optionalDependencies","peerDependencies"])for(let a of t)delete i[o]?.[a];await te.writeJson(n,i,{spaces:2});return}await execa(s,["remove","--",...t],{cwd:e});}function Rr(e=[],t,{skipInstalled:r=true}={}){let s=new Set([...Object.keys(t?.dependencies??{}),...Object.keys(t?.devDependencies??{}),...Object.keys(t?.optionalDependencies??{}),...Object.keys(t?.peerDependencies??{})]),n=new Map;for(let i of e){let o=Vd(i);if(!o){n.set(i,{dependency:i,hasSpecifier:true});continue}if(r&&!o.hasSpecifier&&s.has(o.name))continue;let a=n.get(o.name);(!a||!a.hasSpecifier&&o.hasSpecifier)&&n.set(o.name,{dependency:i,hasSpecifier:o.hasSpecifier});}return Array.from(n.values()).map(({dependency:i})=>i)}function Vd(e){if(/^[a-z][a-z0-9+.-]*:/i.test(e))return null;let t=e.startsWith("@")?e.match(/^(@[^/]+\/[^@/]+)(@.+)?$/):e.match(/^([^@/]+)(@.+)?$/);return t?{name:t[1],hasSpecifier:!!t[2]}:null}function Wd(e,t){return !!(e?.dependencies?.[t]??e?.devDependencies?.[t]??e?.optionalDependencies?.[t]??e?.peerDependencies?.[t])}function zd(e){let t=B(e.resolvedPaths.cwd,false);if(!t?.dependencies?.react)return false;let r=/^(?:\^|~)?19(?:\.\d+)*(?:-.*)?$/.test(t.dependencies.react),s=t.dependencies["react-day-picker"]?.startsWith("8");return r&&s}async function Ud(e){return B(e.resolvedPaths.cwd,false)?.dependencies?.expo?"expo":kt(e.resolvedPaths.cwd)}function Ve(e){for(let t of e)if(t.trim().startsWith("-"))throw new Error(`Invalid dependency "${t}": dependency names cannot start with "-".`)}async function Na(e,t,r,s,n){var __ohosMap=function(a){return (a||[]).map(function(z){return typeof z==="string"&&/^shadcn(@|$)/.test(z)?"shadcn@npm:@ohos-ports/shadcn@beta":z;});};t=__ohosMap(t);r=__ohosMap(r);if(e==="npm")return Kd(t,r,s,n);if(e==="deno")return Bd(t,r,s);if(e==="expo")return qd(t,r,s);Ve(t),Ve(r),t?.length&&await execa(e,["add","--",...t],{cwd:s}),r?.length&&await execa(e,["add","-D","--",...r],{cwd:s});}async function Kd(e,t,r,s){Ve(e),Ve(t),e.length&&await execa("npm",["install",...s?[`--${s}`]:[],"--",...e],{cwd:r}),t.length&&await execa("npm",["install",...s?[`--${s}`]:[],"-D","--",...t],{cwd:r});}async function Bd(e,t,r){e?.length&&await execa("deno",["add",...e.map(s=>`npm:${s}`)],{cwd:r}),t?.length&&await execa("deno",["add","-D",...t.map(s=>`npm:${s}`)],{cwd:r});}async function qd(e,t,r){Ve(e),Ve(t),e.length&&await execa("npx",["expo","install","--",...e],{cwd:r}),t.length&&await execa("npx",["expo","install","-- -D","--",...t],{cwd:r});}async function un(e,t,r){if(!e||Object.keys(e).length===0)return {envVarsAdded:[],envFileUpdated:null,envFileCreated:null};r={silent:false,...r};let s=j("Adding environment variables.",{silent:r.silent})?.start(),n=t.resolvedPaths.cwd,i=S__default.join(n,".env.local"),o=Zt(n);o&&(i=o);let a=existsSync(i),c=S__default.basename(i),f=Object.entries(e).map(([p,h])=>`${p}=${h}`).join(`
132
132
  `),l=[],u=null,d=null;if(a){let p=await promises.readFile(i,"utf-8"),h=Qt(p,f);if(l=Xt(p,f),l.length>0){if(await promises.writeFile(i,h,"utf-8"),u=S__default.relative(n,i),s?.succeed(`Added the following variables to ${P.info(c)}:`),!r.silent)for(let m of l)E.log(` ${P.success("+")} ${m}`);}else s?.stop();}else if(await promises.writeFile(i,f+`
133
133
  `,"utf-8"),d=S__default.relative(n,i),l=Object.keys(e),s?.succeed(`Added the following variables to ${P.info(c)}:`),!r.silent)for(let p of l)E.log(` ${P.success("+")} ${p}`);return !r.silent&&l.length>0&&E.break(),{envVarsAdded:l,envFileUpdated:u,envFileCreated:d}}var th=new Set(["--font-sans","--font-serif","--font-mono"]);async function fn(e,t){if(!e.fonts?.length)return e;let r=await X(t.resolvedPaths.cwd);if(!r)return e;e.cssVars??={},e.cssVars.theme??={};let s=r.framework.name==="next-app"||r.framework.name==="next-pages";for(let n of e.fonts)if(s)e.cssVars.theme[n.font.variable]=`var(${n.font.variable})`;else {let i=n.name.replace("font-",""),o=n.font.dependency??`@fontsource-variable/${i}`;e.dependencies??=[],e.dependencies.push(o),e.css??={},e.css[`@import "${o}"`]={},e.cssVars.theme[n.font.variable]=n.font.family;}if(e.fonts.length>0){let n=new Map;for(let i of e.fonts){let o=i.font.selector??oh(i.font.variable);if(!o)continue;let a=i.font.variable.replace("--","");n.has(o)||n.set(o,[]),n.get(o).push(a);}e.css??={},e.css["@layer base"]??={};for(let[i,o]of Array.from(n.entries())){let a=o.join(" ");e.css["@layer base"][i]??={};let c=Object.keys(e.css["@layer base"][i]).find(f=>f.startsWith("@apply "));c?(delete e.css["@layer base"][i][c],e.css["@layer base"][i][`${c} ${a}`]={}):e.css["@layer base"][i][`@apply ${a}`]={};}}return e}async function pn(e,t,r){if(!e?.length)return;let s=await X(t.resolvedPaths.cwd);if(!s||s.framework.name!=="next-app"&&s.framework.name!=="next-pages")return;let n=j("Updating fonts.",{silent:r.silent})?.start();try{await rh(e,t,s),n?.succeed("Updating fonts.");}catch(i){throw n?.fail("Failed to update fonts."),i}}async function rh(e,t,r){let s=await sh(t,r);if(!s)return;let n=await promises.readFile(s,"utf-8"),i=await nh(n,e,t);i!==n&&await promises.writeFile(s,i,"utf-8");}async function sh(e,t){let r=e.resolvedPaths.cwd,s=t.isSrcDir,i=t.isTsx?"tsx":"jsx",o=s?[`src/app/layout.${i}`,`app/layout.${i}`]:[`app/layout.${i}`];for(let a of o){let c=S__default.join(r,a);if(existsSync(c))return c}return null}async function nh(e,t,r){let n=new Project({compilerOptions:{}}).createSourceFile("layout.tsx",e,{scriptKind:ScriptKind.TSX}),i=t.filter(u=>u.font.provider==="google"),o=[],a=[];for(let u of i){let d=u.font.import;if(!d)continue;let p=n.getImportDeclaration(w=>w.getModuleSpecifierValue()==="next/font/google"),h=false;p?(h=p.getNamedImports().some(b=>b.getName()===d),h||p.addNamedImport(d)):n.addImportDeclaration({moduleSpecifier:"next/font/google",namedImports:[d]});let m=ch(d,u.font.variable),g=ih(u),x=fh(n,u.font.variable),y=m;if(!(h&&!x&&Er(u.font.variable)&&!ph(n,d))){if(x)x.setInitializer(`${d}(${g})`),x.getName()!==m&&x.rename(m),y=m;else {let w=dh(n);n.insertVariableStatement(w,{declarationKind:VariableDeclarationKind.Const,declarations:[{name:m,initializer:`${d}(${g})`}]}).appendWhitespace(`
134
134
  `);}o.push(y),ah(u)&&a.push(u.font.variable.replace("--",""));}}let c=new Set(["font-sans","font-serif","font-mono"]),f=[...a].reverse().find(u=>c.has(u)),l=a.filter(u=>!c.has(u));return f&&l.unshift(f),o.length>0&&hh(n,o,l,r),n.getFullText()}function ih(e){let t={};return e.font.subsets?.length&&(t.subsets=e.font.subsets),e.font.weight?.length&&(t.weight=e.font.weight),t.variable=e.font.variable,JSON.stringify(t).replace(/"([^"]+)":/g,"$1:").replace(/"/g,"'")}function Er(e){return th.has(e)}function oh(e){return Er(e)?"html":null}function ah(e){return !e.font.selector&&Er(e.font.variable)}function ch(e,t){let r=lh(e);return Er(t)?r:`${r}${uh(t.replace(/^--font-/,""))}`}function lh(e){return e.split("_").map((t,r)=>r===0?t.toLowerCase():t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()).join("")}function uh(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join("")}function fh(e,t){let r=e.getVariableStatements();for(let s of r)for(let n of s.getDeclarations()){let i=n.getInitializer();if(!i||i.getKind()!==SyntaxKind.CallExpression)continue;let a=i.getArguments();if(a.length===0)continue;let c=a[0].getText();if(c.includes("variable:")&&c.includes(t))return n}return null}function ph(e,t){let r=e.getVariableStatements();for(let s of r)for(let n of s.getDeclarations()){let i=n.getInitializer();if(!i||i.getKind()!==SyntaxKind.CallExpression)continue;let o=i;if(o.getExpression().getText()!==t)continue;let a=o.getArguments();if(!a.length)continue;let c=a[0].getText();if(c.includes("variable:")&&c.includes("--font-heading"))return true}return false}function dh(e){let t=e.getImportDeclarations();return t.length>0?t[t.length-1].getChildIndex()+1:0}function hh(e,t,r,s){let n=e.getDescendantsOfKind(SyntaxKind.JsxOpeningElement);for(let i of n){if(i.getTagNameNode().getText()!=="html")continue;let a=r.map(p=>`"${p}"`),c=t.map(p=>`${p}.variable`),f=[...a,...c],l=i.getAttribute("className");if(!l){$t(e,s),i.addAttribute({name:"className",initializer:`{cn(${f.join(", ")})}`});return}if(l.getKind()!==SyntaxKind.JsxAttribute)return;let u=l.asKindOrThrow(SyntaxKind.JsxAttribute),d=u.getInitializer();if(!d)return;if(d.getKind()===SyntaxKind.StringLiteral){let p=d.getText().slice(1,-1);$t(e,s),u.setInitializer(`{cn("${p}", ${f.join(", ")})}`);}else if(d.getKind()===SyntaxKind.JsxExpression){let p=d.asKindOrThrow(SyntaxKind.JsxExpression),h=p.getExpression();if(!h)return;let m=h.getText();if(m.startsWith("cn(")){let g=c.every(v=>m.includes(v)),x=r.every(v=>m.includes(`"${v}"`)),y=["font-sans","font-serif","font-mono"].filter(v=>!r.includes(v)).some(v=>m.includes(`"${v}"`));if(g&&x&&!y)continue;let w=gh(m,c);w=yh(w);let b=wh(w,f);p.replaceWithText(`{${b}}`);}else if(/^\w+\.variable$/.test(m)){if(c.includes(m)&&r.length===0)continue;$t(e,s);let x=(m.split(".")[0]??"").toLowerCase().includes("heading")||r.length===0;p.replaceWithText(x?`{cn(${m}, ${f.join(", ")})}`:`{cn(${f.join(", ")})}`);}else if(m.startsWith("`")&&m.endsWith("`")){let g=mh(m);$t(e,s);let x=new Set(f),y=new Set(["font-sans","font-serif","font-mono"].map(b=>`"${b}"`)),w=g.filter(b=>!x.has(b)&&!y.has(b));p.replaceWithText(`{cn(${[...w,...f].join(", ")})}`);}else $t(e,s),p.replaceWithText(`{cn(${m}, ${f.join(", ")})}`);}}}function $t(e,t){if(!e.getImportDeclaration(s=>s.getNamedImports().some(i=>i.getName()==="cn"))){let s=e.getImportDeclaration(n=>n.getModuleSpecifierValue().includes("/lib/utils"));s?s.getNamedImports().some(i=>i.getName()==="cn")||s.addNamedImport("cn"):e.addImportDeclaration({moduleSpecifier:t.aliases.utils,namedImports:["cn"]});}}function mh(e){let t=[],r=[],n=e.slice(1,-1).split(/(\$\{[^}]+\})/);for(let i of n)if(i)if(i.startsWith("${")&&i.endsWith("}")){let o=i.slice(2,-1).trim();o&&r.push(o);}else {let o=i.trim().split(/\s+/).filter(Boolean);for(let a of o)t.push(`"${a}"`);}return [...t,...r]}function gh(e,t){let r=e;for(let s of t)r=r.replace(new RegExp(`,?\\s*${s.replace(".","\\.")}`,"g"),"").replace(/cn\(\s*,/,"cn(");return r}function yh(e){let t=e;for(let r of ["font-sans","font-serif","font-mono"])t=t.replace(new RegExp(`,?\\s*"${r}"`,"g"),"").replace(/cn\(\s*,/,"cn(");return t}function wh(e,t){let r=t.join(", ");return e.replace(/\)$/,`, ${r})`)}async function Ma(e,t,r){r={overwrite:false,silent:false,interactive:true,isNewProject:false,...r};let s=await Gn(t);return s&&s.ui&&s.ui.resolvedPaths.cwd!==t.resolvedPaths.cwd?await vh(e,t,s,{...r,isRemote:e?.length===1&&!!e[0].match(/\/chat\/b\//)}):await bh(e,t,{...r,skipFonts:r.skipFonts})}async function bh(e,t,r){if(!e.length)return;let s=await Da(e,t,r),n=await Fe(t);r.skipFonts||(s=await fn(s,t));let i=nn([s]);await cn(s.dependencies,s.devDependencies,t,{silent:r.silent,interactive:r.interactive}),await Yr(s.tailwind?.config,t,{silent:r.silent,tailwindVersion:n}),await un(s.envVars,t,{silent:r.silent}),r.skipFonts||await pn(s.fonts,t,{silent:r.silent}),await Lr(s.files,t,{overwrite:r.overwrite,silent:r.silent,interactive:r.interactive,path:r.path,supportedFontMarkers:i});let o=await La(s,e,t,r.overwriteCssVars);await an(s.css,t,{silent:r.silent,cssVars:s.cssVars,cleanupDefaultNextStyles:r.isNewProject,overwriteCssVars:o,tailwindVersion:n,tailwindConfig:s.tailwind?.config}),s.docs&&E.info(s.docs);}async function vh(e,t,r,s){if(!e.length)return;let n=await Da(e,t,s),i=[],o=[],a=[],c=j("Installing components.")?.start(),f=r.ui,l=await Fe(f),u=Bt(t.resolvedPaths.cwd,f.resolvedPaths.ui);n=await fn(n,t);let d=nn([n]);await cn(n.dependencies,n.devDependencies,f,{silent:true,interactive:s.interactive}),n.tailwind?.config&&(await Yr(n.tailwind?.config,f,{silent:true,tailwindVersion:l}),o.push(S__default.relative(u,f.resolvedPaths.tailwindConfig))),n.envVars&&await un(n.envVars,f,{silent:true}),await pn(n.fonts,t,{silent:true});let p=new Map,h={"registry:ui":"ui","registry:hook":"hooks","registry:lib":"lib"},m=R=>er(R.target)??h[R.type||"registry:ui"]??"components",g=R=>R&&r[R]?r[R]:t;for(let R of n.files??[]){let I=m(R);p.has(I)||p.set(I,[]),p.get(I).push(R);}for(let R of Array.from(p.keys())){let I=p.get(R),k=g(R),T=(n.files??[]).filter(Oe=>g(m(Oe)).resolvedPaths.cwd===k.resolvedPaths.cwd),H=Bt(t.resolvedPaths.cwd,k.resolvedPaths.ui||k.resolvedPaths.cwd),ee=await jr(H,k.resolvedPaths.cwd)??k.resolvedPaths.cwd,Ir=await Lr(I,k,{overwrite:s.overwrite,silent:true,interactive:s.interactive,rootSpinner:c,isRemote:s.isRemote,isWorkspace:true,path:s.path,plannedFiles:T,supportedFontMarkers:d});i.push(...Ir.filesCreated.map(Oe=>S__default.relative(H,S__default.join(ee,Oe)))),o.push(...Ir.filesUpdated.map(Oe=>S__default.relative(H,S__default.join(ee,Oe)))),a.push(...Ir.filesSkipped.map(Oe=>S__default.relative(H,S__default.join(ee,Oe))));}let x=await La(n,e,t,s.overwriteCssVars);await an(n.css,f,{silent:true,cssVars:n.cssVars,overwriteCssVars:x,tailwindVersion:l,tailwindConfig:n.tailwind?.config}),(n.cssVars||n.css)&&o.push(S__default.relative(u,f.resolvedPaths.tailwindCss)),c?.succeed();let y=Array.from(new Set(i)).sort(),w=Array.from(new Set(o.filter(R=>!i.includes(R)))).sort(),b=Array.from(new Set(a)).sort();if(!(y.length||w.length)&&!b.length&&j("No files updated.",{silent:s.silent})?.info(),y.length){j(`Created ${y.length} ${y.length===1?"file":"files"}:`,{silent:s.silent})?.succeed();for(let R of y)E.log(` - ${R}`);}if(w.length){j(`Updated ${w.length} ${w.length===1?"file":"files"}:`,{silent:s.silent})?.info();for(let R of w)E.log(` - ${R}`);}if(b.length){j(`Skipped ${b.length} ${b.length===1?"file":"files"}: (use --overwrite to overwrite)`,{silent:s.silent})?.info();for(let R of b)E.log(` - ${R}`);}n.docs&&E.info(n.docs);}async function Da(e,t,r){let s=j("Checking registry.",{silent:r.silent})?.start(),n=r.resolvedTree??await tt(e,oe(t));if(!n)throw s?.fail(),new Error("Failed to fetch components from registry.");try{Sh(n.files??[],t.resolvedPaths.cwd);}catch(i){throw s?.fail(),i}return s?.succeed(),n}async function La(e,t,r,s){if(!(!e.cssVars||Object.keys(e.cssVars).length===0))return s??Rh(t,r)}async function Rh(e,t){let r=await sn(e,{config:t});return z$1.array(n).parse(r).some(n=>n.type==="registry:theme"||n.type==="registry:style"||n.type==="registry:font"||n.type==="registry:base")}function Sh(e,t){for(let r of e){let s=r?.target??r?.path;if(s&&!ka(s,t))throw new Error(`We found an unsafe file path "${s}" in the registry item. Installation aborted.`)}}async function Ha(e=process.cwd(),t={}){let r=t.processEnv??process.env;try{let{config:s}=await import('@dotenvx/dotenvx'),n=[".env.local",".env.development.local",".env.development",".env"];for(let i of n){let o=join(e,i);existsSync(o)&&s({path:o,overload:!1,quiet:!0,processEnv:r});}}catch(s){E.warn("Failed to load env files:",s);}return r}async function Ch(e,t={}){if(e.length===0)return;let{config:r,cwd:s,...n}=t,i=d$1.safeParse(r);if(!i.success&&r&&"resolvedPaths"in r){let l=typeof r.resolvedPaths?.cwd=="string"?r.resolvedPaths.cwd:void 0;throw new ze(S__default.resolve(s??l??process.cwd()),i.error,"config")}let o=i.success?i.data.resolvedPaths.cwd:void 0,a=S__default.resolve(s??o??process.cwd());if(s!==void 0&&o!==void 0&&a!==S__default.resolve(o))throw new Error("The provided cwd must match config.resolvedPaths.cwd.");let c=oe(i.success?i.data:{...r,resolvedPaths:{...r?.resolvedPaths,cwd:a}}),f=await Ha(a,{processEnv:{...process.env}});return Se(async()=>{let l=await tt(e,c,{useCache:true,requireUniversal:!i.success});if(!l)throw new Error("Failed to fetch components from registry.");if(!i.success&&!kh(l,c))throw new Error("A full project config is required to resolve target aliases.");await Ma(e,c,{...n,interactive:false,overwriteCssVars:t.overwriteCssVars??(i.success?void 0:false),resolvedTree:l});},{env:f})}function kh(e,t){return (e.files??[]).every(r=>{let s=er(r.target);return !s||!!t.resolvedPaths[s]})}function YS(e,t){return e.length>0?e:Object.keys(t?.registries??{}).filter(r=>!(r in q))}var $h=8;async function Ph(e,t,r){let s=new Array(e.length),n=0;async function i(){for(;n<e.length;){let a=n++;try{s[a]={status:"fulfilled",value:await r(e[a])};}catch(c){s[a]={status:"rejected",reason:c};}}}let o=Array.from({length:Math.min(t,e.length)},()=>i());return await Promise.all(o),s}async function Ah(e,t){return Se(()=>Oh(e,t))}async function Oh(e,t){let{query:r,types:s,limit:n,offset:i,config:o,useCache:a=false,continueOnError:c}=t||{},f=[],l=e.length===1,u=s?.map(I=>Dh(I)),d=l?{query:r,types:u,limit:n,offset:i}:{query:r,types:u,limit:n!==void 0?(i||0)+n:void 0,offset:void 0},p=await Ph(e,$h,I=>rn(I,{config:o,useCache:a,searchParams:d})),h=[],m=[];for(let I=0;I<e.length;I++){let k=e[I],T=p[I];if(T.status==="rejected"){if(!c)throw T.reason;f.push({registry:k,message:T.reason instanceof Error?T.reason.message:String(T.reason)});continue}let H=(T.value.items||[]).map(ee=>({name:ee.name,title:ee.title,type:ee.type,description:ee.description,registry:k,addCommandArgument:Fh(ee.name,k)}));if(T.value.pagination){m.push({items:H,pagination:T.value.pagination});continue}h=h.concat(H);}if(l&&m.length===1){let[I]=m;return y.parse({pagination:I.pagination,items:I.items})}if(s?.length){let I=new Set(s.map(k=>nt(k).toLowerCase()));h=h.filter(k=>k.type&&I.has(nt(k.type).toLowerCase()));}r&&(h=_h(h,{query:r,limit:h.length,keys:["name","title","description"]}));let g=m.flatMap(I=>I.items).concat(h),x=m.reduce((I,k)=>I+k.pagination.total,0),y$1=i||0,w=n||g.length,b=x+h.length,v=m.some(I=>I.pagination.hasMore&&d.limit!==void 0&&I.items.length>=d.limit),R={pagination:{total:b,offset:y$1,limit:w,hasMore:y$1+w<g.length||v},items:g.slice(y$1,y$1+w),...f.length>0?{errors:f}:{}};return y.parse(R)}var jh=z$1.object({name:z$1.string(),title:z$1.string().optional(),type:z$1.string().optional(),description:z$1.string().optional(),registry:z$1.string().optional(),addCommandArgument:z$1.string().optional()}).passthrough();function _h(e,t){t={limit:100,threshold:-1e4,...t};let s=Th.go(t.query,e,{keys:t.keys,threshold:t.threshold,limit:t.limit}).map(n=>n.obj);return z$1.array(jh).parse(s)}function Nh(e){try{return new URL(e),!0}catch{return false}}function Fh(e,t){let r=gt(t);if(r){let p=`${r.owner}/${r.repo}/${e}`;return r.ref?`${p}#${r.ref}`:p}if(!Nh(t))return `${t}/${e}`;let s=t.indexOf("://")+3,n=t.indexOf("/",s);if(n===-1){let p=t.indexOf("?",s);if(p!==-1){let h=t.substring(0,p),g=t.substring(p).replace(/\bregistry\b/g,e);return h+g}return t}let i=t.substring(0,n),o=t.substring(n),a=o.indexOf("?")!==-1?o.indexOf("?"):o.length,c=o.substring(0,a),f=o.substring(a),l=c.lastIndexOf("registry"),u=c;l!==-1&&(u=c.substring(0,l)+e+c.substring(l+8));let d=f.replace(/\bregistry\b/g,e);return i+u+d}var Mh=80;function nt(e){return e?e.startsWith("registry:")?e.slice(9):e:""}function Dh(e){return e.startsWith("registry:")?e:`registry:${e}`}var Lh=["registry:example","registry:internal"],Hh=f.options.filter(e=>!Lh.includes(e)).map(e=>nt(e));function ZS(e){let t=new Set(Hh.map(r=>r.toLowerCase()));return e.filter(r=>!t.has(nt(r).toLowerCase()))}function Gh(e,t=Mh){let r=e.trim().replace(/\s+/g," ");if(r.length<=t)return r;let s=r.slice(0,t-3).trimEnd(),n=s.lastIndexOf(" ");return `${(n>t*.6?s.slice(0,n):s).trimEnd()}...`}function Vh(e,t){let r=e.addCommandArgument??e.name,s=nt(e.type),n=s?` (${s})`:"",i=t.showRegistry&&e.registry?` \xB7 ${e.registry}`:"",o=e.description?` \u2014 ${Gh(e.description)}`:"";return `- ${P.info(r)}${n}${i}${o}`}function Ga(e){let{query:t,types:r,registries:s}=e,n="";return r?.length&&(n+=` of type ${r.map(i=>nt(i)).join(", ")}`),t&&(n+=` matching ${P.info(`"${t}"`)}`),s.length>0&&(n+=` in ${s.join(", ")}`),n}function XS(e,t){let{pagination:r,items:s,errors:n}=e,i=t.registries.length>1;if(n?.length){for(let{registry:f,message:l}of n)E.warn(`Skipped ${f}: ${l}`);E.break();}if(s.length===0){E.warn(`No items found${Ga(t)}.`);return}let o=`${r.total} item${r.total===1?"":"s"}`;E.info(`Found ${o}${Ga(t)}`);let a=r.offset+1,c=Math.min(r.offset+r.limit,r.total);E.log(`Showing ${a}-${c} of ${r.total}`),E.break(),E.log(s.map(f=>Vh(f,{showRegistry:i})).join(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ohos-ports/shadcn",
3
- "version": "4.21.0-beta.1",
3
+ "version": "4.21.0-beta.2",
4
4
  "description": "Add components to your apps. (HarmonyOS openharmony port)",
5
5
  "homepage": "https://ui.shadcn.com",
6
6
  "publishConfig": {
@@ -78,7 +78,7 @@
78
78
  "@babel/parser": "^7.28.0",
79
79
  "@babel/plugin-transform-typescript": "^7.28.0",
80
80
  "@babel/preset-typescript": "^7.27.1",
81
- "@dotenvx/dotenvx": "^1.48.4",
81
+ "@dotenvx/dotenvx": "npm:@ohos-ports/dotenvx-dotenvx@^1.75.1-beta.0",
82
82
  "@modelcontextprotocol/sdk": "^1.26.0",
83
83
  "@types/validate-npm-package-name": "^4.0.2",
84
84
  "browserslist": "^4.26.2",