Spaces:
Running
Running
| import{r as s,j as e}from"./react-DKy9e2uO.js";import{z as L,E as A,L as w,M}from"./index-Ykf-MVva.js";import"./bottleneck-Cpj98o6Y.js";import"./react-dom-CpxHE_eW.js";import"./scheduler-DYLXRpC5.js";import"./idb-Dob3nYDb.js";import"./@google-D80DdW2m.js";import"./marked-CesSW9Du.js";import"./jszip-s56H2EZ-.js";const k=["SASS","CSS","JavaScript","TypeScript","Python","Go","React","Vue","Angular","Tailwind CSS"],E=`// SASS | |
| $primary-color: #333; | |
| body { | |
| color: $primary-color; | |
| font-family: sans-serif; | |
| }`,V=({inputCode:a,fromLang:o,toLang:l})=>{const[p,g]=s.useState(a||E),[m,h]=s.useState(""),[j,S]=s.useState(o||"SASS"),[b,y]=s.useState(l||"CSS"),[n,N]=s.useState(!1),[x,u]=s.useState(""),i=s.useCallback(async(t,f,r)=>{if(!t.trim()){u("Please enter some code to migrate.");return}N(!0),u(""),h("");try{const c=L(t,f,r);let d="";for await(const C of c)d+=C,h(d)}catch(c){const d=c instanceof Error?c.message:"An unknown error occurred.";u(`Failed to migrate code: ${d}`)}finally{N(!1)}},[]);s.useEffect(()=>{a&&o&&l&&(g(a),S(o),y(l),i(a,o,l))},[a,o,l,i]);const v=({value:t,onChange:f})=>e.jsx("select",{value:t,onChange:r=>f(r.target.value),className:"w-full px-3 py-2 rounded-md bg-surface border border-border",children:k.map(r=>e.jsx("option",{value:r,children:r},r))});return e.jsxs("div",{className:"h-full flex flex-col p-4 sm:p-6 lg:p-8 text-text-primary",children:[e.jsxs("header",{className:"mb-6",children:[e.jsxs("h1",{className:"text-3xl font-bold flex items-center",children:[e.jsx(A,{}),e.jsx("span",{className:"ml-3",children:"AI Code Migrator"})]}),e.jsx("p",{className:"text-text-secondary mt-1",children:"Translate code between languages, frameworks, and syntax styles."})]}),e.jsxs("div",{className:"flex-grow flex flex-col min-h-0",children:[e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6 flex-grow min-h-0",children:[e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"mb-2",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary",children:"From:"}),e.jsx(v,{value:j,onChange:S})]}),e.jsx("textarea",{value:p,onChange:t=>g(t.target.value),placeholder:"Paste your source code here...",className:"flex-grow p-4 bg-surface border border-border rounded-md resize-none font-mono text-sm"})]}),e.jsxs("div",{className:"flex flex-col h-full",children:[e.jsxs("div",{className:"mb-2",children:[e.jsx("label",{className:"text-sm font-medium text-text-secondary",children:"To:"}),e.jsx(v,{value:b,onChange:y})]}),e.jsxs("div",{className:"flex-grow p-1 bg-background border border-border rounded-md overflow-y-auto",children:[n&&e.jsx("div",{className:"flex items-center justify-center h-full",children:e.jsx(w,{})}),x&&e.jsx("p",{className:"p-4 text-red-500",children:x}),m&&!n&&e.jsx(M,{content:m}),!n&&!m&&!x&&e.jsx("div",{className:"text-text-secondary h-full flex items-center justify-center",children:"Migrated code will appear here."})]})]})]}),e.jsx("button",{onClick:()=>i(p,j,b),disabled:n,className:"btn-primary mt-4 w-full max-w-sm mx-auto flex items-center justify-center px-6 py-3",children:n?e.jsx(w,{}):"Migrate Code"})]})]})};export{V as AiCodeMigrator}; | |
| //# sourceMappingURL=AiCodeMigrator-CzHe92BD.js.map | |