@mcp-graph-workflow/mcp-graph 5.31.0 → 5.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/README.md +1 -1
  2. package/dist/api/routes/benchmark.d.ts.map +1 -1
  3. package/dist/api/routes/benchmark.js +15 -2
  4. package/dist/api/routes/benchmark.js.map +1 -1
  5. package/dist/api/routes/translation-project.js +2 -2
  6. package/dist/api/routes/translation-project.js.map +1 -1
  7. package/dist/api/routes/translation.js +2 -2
  8. package/dist/api/routes/translation.js.map +1 -1
  9. package/dist/core/translation/generators/ast-placeholder-extractor.d.ts +20 -0
  10. package/dist/core/translation/generators/ast-placeholder-extractor.d.ts.map +1 -0
  11. package/dist/core/translation/generators/ast-placeholder-extractor.js +215 -0
  12. package/dist/core/translation/generators/ast-placeholder-extractor.js.map +1 -0
  13. package/dist/core/translation/generators/placeholder-resolver.d.ts +18 -0
  14. package/dist/core/translation/generators/placeholder-resolver.d.ts.map +1 -0
  15. package/dist/core/translation/generators/placeholder-resolver.js +487 -0
  16. package/dist/core/translation/generators/placeholder-resolver.js.map +1 -0
  17. package/dist/core/translation/generators/source-text-extractor.d.ts +20 -0
  18. package/dist/core/translation/generators/source-text-extractor.d.ts.map +1 -0
  19. package/dist/core/translation/generators/source-text-extractor.js +190 -0
  20. package/dist/core/translation/generators/source-text-extractor.js.map +1 -0
  21. package/dist/core/translation/generators/universal-generator.d.ts +23 -0
  22. package/dist/core/translation/generators/universal-generator.d.ts.map +1 -0
  23. package/dist/core/translation/generators/universal-generator.js +137 -0
  24. package/dist/core/translation/generators/universal-generator.js.map +1 -0
  25. package/dist/core/translation/parsers/parser-adapter.d.ts +4 -0
  26. package/dist/core/translation/parsers/parser-adapter.d.ts.map +1 -1
  27. package/dist/core/translation/project-translation-orchestrator.d.ts +3 -3
  28. package/dist/core/translation/project-translation-orchestrator.d.ts.map +1 -1
  29. package/dist/core/translation/project-translation-orchestrator.js +4 -4
  30. package/dist/core/translation/project-translation-orchestrator.js.map +1 -1
  31. package/dist/core/translation/prompt-builder.d.ts +4 -0
  32. package/dist/core/translation/prompt-builder.d.ts.map +1 -1
  33. package/dist/core/translation/prompt-builder.js +13 -3
  34. package/dist/core/translation/prompt-builder.js.map +1 -1
  35. package/dist/core/translation/translation-orchestrator.d.ts +2 -1
  36. package/dist/core/translation/translation-orchestrator.d.ts.map +1 -1
  37. package/dist/core/translation/translation-orchestrator.js +21 -2
  38. package/dist/core/translation/translation-orchestrator.js.map +1 -1
  39. package/dist/docs-manifest.json +8 -2
  40. package/dist/mcp/tools/translate-code.js +1 -1
  41. package/dist/mcp/tools/translate-code.js.map +1 -1
  42. package/dist/web/dashboard/dist/assets/benchmark-tab-en-UkR66.js +1 -0
  43. package/dist/web/dashboard/dist/assets/{circle-alert-RxlCxXj1.js → circle-alert-5GIBBP3L.js} +1 -1
  44. package/dist/web/dashboard/dist/assets/{context-tab-DTPFGxle.js → context-tab-DjfwQik8.js} +1 -1
  45. package/dist/web/dashboard/dist/assets/{docs-tab-2uo7-Ybt.js → docs-tab-gEBzBEEV.js} +1 -1
  46. package/dist/web/dashboard/dist/assets/{gitnexus-tab-CiiNOf3e.js → gitnexus-tab-BE2pi0xe.js} +1 -1
  47. package/dist/web/dashboard/dist/assets/{graph-section-DKMay1zv.js → graph-section-Cwx-Bmeh.js} +1 -1
  48. package/dist/web/dashboard/dist/assets/{graph-tab-BYRVanTv.js → graph-tab-BcS75lY0.js} +1 -1
  49. package/dist/web/dashboard/dist/assets/{graph-utils-1O2cEKuy.js → graph-utils-OY_fOvB3.js} +1 -1
  50. package/dist/web/dashboard/dist/assets/{index-CSeiGgX8.js → index-1aGs8JPI.js} +1 -1
  51. package/dist/web/dashboard/dist/assets/{index-B5DzSMGg.js → index-4X4gmCkA.js} +1 -1
  52. package/dist/web/dashboard/dist/assets/index-BVhCKhGJ.css +1 -0
  53. package/dist/web/dashboard/dist/assets/{index-CIhDR5rf.js → index-C3Kad9YO.js} +2 -2
  54. package/dist/web/dashboard/dist/assets/{insights-tab-DdI7TLP7.js → insights-tab-CP2uIpid.js} +1 -1
  55. package/dist/web/dashboard/dist/assets/{journey-tab-CDuvIW6V.js → journey-tab-ChwNK_8S.js} +1 -1
  56. package/dist/web/dashboard/dist/assets/languages-tab-DnBvSh4N.js +123 -0
  57. package/dist/web/dashboard/dist/assets/{loader-circle-Bl0DpM5P.js → loader-circle-Bxe_TLXv.js} +1 -1
  58. package/dist/web/dashboard/dist/assets/{logs-tab-QYKxeHna.js → logs-tab-BH86QvKe.js} +1 -1
  59. package/dist/web/dashboard/dist/assets/{lsp-tab-CLO4RFMh.js → lsp-tab-DUpaQXtx.js} +1 -1
  60. package/dist/web/dashboard/dist/assets/{memories-tab-BT7A7YOy.js → memories-tab-CkwtNv3t.js} +1 -1
  61. package/dist/web/dashboard/dist/assets/{prd-backlog-tab-M1j0tAm2.js → prd-backlog-tab-CPJanaVF.js} +1 -1
  62. package/dist/web/dashboard/dist/assets/{refresh-cw-0ApsgAym.js → refresh-cw-DL1dUrhF.js} +1 -1
  63. package/dist/web/dashboard/dist/assets/{siebel-tab-CsZz2y2b.js → siebel-tab-D7x34UXy.js} +3 -3
  64. package/dist/web/dashboard/dist/assets/{skills-tab-BrkrK7AC.js → skills-tab-BuqCMS29.js} +1 -1
  65. package/dist/web/dashboard/dist/assets/{style-UgkJJqFQ.js → style-iy_ryTT6.js} +1 -1
  66. package/dist/web/dashboard/dist/assets/{triangle-alert-BcgxNLLr.js → triangle-alert-CPzksLkC.js} +1 -1
  67. package/dist/web/dashboard/dist/index.html +2 -2
  68. package/package.json +2 -2
  69. package/dist/web/dashboard/dist/assets/benchmark-tab-BD02uofm.js +0 -1
  70. package/dist/web/dashboard/dist/assets/index-BxDGbcbB.css +0 -1
  71. package/dist/web/dashboard/dist/assets/languages-tab-CrbP4u3b.js +0 -123
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-graph-workflow/mcp-graph",
3
- "version": "5.31.0",
3
+ "version": "5.32.0",
4
4
  "description": "MCP local-first PRD to task graph — transforms text into executable structure",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -85,7 +85,7 @@
85
85
  "vitest": "^4.0.18"
86
86
  },
87
87
  "dependencies": {
88
- "@mcp-graph-workflow/mcp-graph": "^5.30.0",
88
+ "@mcp-graph-workflow/mcp-graph": "^5.31.1",
89
89
  "@modelcontextprotocol/sdk": "^1.27.1",
90
90
  "adm-zip": "^0.5.16",
91
91
  "better-sqlite3": "^12.6.2",
@@ -1 +0,0 @@
1
- import{r as u,a as h,j as e}from"./index-CIhDR5rf.js";function v(){const[r,c]=u.useState(null),[m,a]=u.useState(!0),[t,x]=u.useState(null);return u.useEffect(()=>{async function n(){try{const d=await h.request("/benchmark");c(d)}catch(d){x(d instanceof Error?d.message:"Failed to load benchmark data")}finally{a(!1)}}n()},[]),{data:r,loading:m,error:t}}function p(){const{data:r,loading:c,error:m}=v();if(c)return e.jsxs("div",{className:"p-6 max-w-5xl mx-auto space-y-6",children:[e.jsx("div",{className:"h-5 w-40 rounded bg-surface animate-pulse"}),e.jsx("div",{className:"grid grid-cols-4 gap-3",children:Array.from({length:4}).map((o,l)=>e.jsx("div",{className:"h-20 rounded-xl border border-edge bg-surface-alt animate-pulse"},l))}),e.jsx("div",{className:"space-y-2",children:Array.from({length:5}).map((o,l)=>e.jsx("div",{className:"h-6 rounded bg-surface animate-pulse",style:{width:`${60+Math.random()*30}%`}},l))})]});if(m)return e.jsx("div",{className:"flex flex-col items-center justify-center h-full gap-4",children:e.jsxs("div",{className:"text-center",children:[e.jsx("p",{className:"text-sm font-medium text-foreground",children:"Failed to load benchmark"}),e.jsx("p",{className:"text-xs text-muted mt-1",children:m})]})});if(!r)return e.jsx("div",{});const{tokenEconomy:a,layeredCompression:t,dependencyIntelligence:x,toolTokenUsage:n,formulas:d}=r;return e.jsxs("div",{className:"p-6 max-w-5xl mx-auto space-y-6 overflow-y-auto h-full",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Token Economy"}),e.jsxs("div",{className:"grid grid-cols-5 gap-3 mb-4",children:[e.jsx(s,{value:`${a.avgCompressionPercent}%`,label:"Avg Compress"}),e.jsx(s,{value:a.totalTokensSaved.toLocaleString(),label:"Total Tokens Saved"}),e.jsx(s,{value:a.avgTokensSavedPerTask.toLocaleString(),label:"Saved / Task"}),e.jsx(s,{value:a.totalNodes,label:"Nodes"}),e.jsx(s,{value:a.totalEdges,label:"Edges"})]}),a.perTaskMetrics.length>0&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-medium text-muted mb-2",children:"Context Compression per Task (vs Full Graph)"}),e.jsx("div",{className:"space-y-1.5","data-testid":"compression-bars",children:a.perTaskMetrics.slice(0,15).map(o=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-32 truncate",title:o.title,children:o.title}),e.jsx("div",{className:"flex-1 h-3 bg-surface-elevated rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-accent",style:{width:`${Math.min(o.compressionPercent,100)}%`}})}),e.jsxs("span",{className:"text-muted w-24 text-right",children:[o.compressionPercent,"% (",o.estimatedTokens," tok)"]})]},o.id))})]})]}),t&&t.avgLayer1SavingsPercent!=null?e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Real Token Savings (Per-Layer)"}),e.jsxs("div",{className:"grid grid-cols-5 gap-3 mb-4",children:[e.jsx(s,{value:`${t.avgLayer1SavingsPercent}%`,label:"L1: Field Strip"}),e.jsx(s,{value:`${t.avgLayer2SavingsPercent}%`,label:"L2: Desc Truncate"}),e.jsx(s,{value:`${t.avgLayer3SavingsPercent}%`,label:"L3: Default Omit"}),e.jsx(s,{value:`${t.avgLayer4SavingsPercent}%`,label:"L4: Short Keys"}),e.jsx(s,{value:`${t.avgTotalRealSavingsPercent}%`,label:"Total Real Savings"})]}),(()=>{const o=Math.max(t.avgNaiveNeighborhoodTokens,1),l=[{label:"Naive Neighborhood",tokens:t.avgNaiveNeighborhoodTokens,color:"#ef4444"},{label:"L1: Field Stripping",tokens:t.avgCompactContextTokens,color:"#f97316"},{label:"L2: Desc Truncation",tokens:t.avgNeighborTruncatedTokens,color:"#eab308"},{label:"L3: Default Omission",tokens:t.avgDefaultOmittedTokens,color:"#22c55e"},{label:"L4: Short Keys",tokens:t.avgShortKeysTokens,color:"#3b82f6"},{label:"Summary Tier",tokens:t.avgSummaryTierTokens,color:"#8b5cf6"}];return e.jsx("div",{className:"space-y-1.5","data-testid":"waterfall-bars",children:l.map(i=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-40 truncate",title:i.label,children:i.label}),e.jsx("div",{className:"flex-1 h-3 bg-surface-elevated rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full",style:{width:`${Math.min(i.tokens/o*100,100)}%`,backgroundColor:i.color}})}),e.jsxs("span",{className:"text-muted w-20 text-right",children:[i.tokens.toLocaleString()," tok"]})]},i.label))})})()]}):e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Real Token Savings (Per-Layer)"}),e.jsx("div",{className:"px-3 py-4 rounded-xl border border-edge bg-surface-alt text-center text-xs text-muted",children:"No compression data available"})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Dependency Intelligence"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsx(s,{value:x.inferredDeps,label:"Auto Inferred"}),e.jsx(s,{value:`${x.blockedTasks}/${a.totalNodes}`,label:"Blocked Detected"}),e.jsx(s,{value:x.cycles,label:"Cycles Detected"})]})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Formulas & Justification"}),e.jsx("div",{className:"px-3 py-2 rounded-xl border border-edge shadow-sm hover:shadow-md transition-shadow bg-surface-alt text-xs space-y-1","data-testid":"formulas-section",children:Object.entries(d).map(([o,l])=>e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("span",{className:"text-muted font-mono w-40 shrink-0",children:[o,":"]}),e.jsx("span",{children:l})]},o))})]}),n&&n.totalCalls>0&&e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Tool Token Usage"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3 mb-4",children:[e.jsx(s,{value:n.totalCalls.toLocaleString(),label:"Total Calls"}),e.jsx(s,{value:n.totalInputTokens.toLocaleString(),label:"Total Input Tokens"}),e.jsx(s,{value:n.totalOutputTokens.toLocaleString(),label:"Total Output Tokens"})]}),n.perTool.length>0&&(()=>{const o=Math.max(...n.perTool.map(l=>l.totalTokens),1);return e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-medium text-muted mb-2",children:"Token Usage per Tool"}),e.jsx("div",{className:"space-y-1.5","data-testid":"tool-token-bars",children:n.perTool.slice(0,15).map(l=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-32 truncate font-mono",title:l.toolName,children:l.toolName}),e.jsx("div",{className:"flex-1 h-3 bg-surface-elevated rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-accent",style:{width:`${Math.min(l.totalTokens/o*100,100)}%`}})}),e.jsxs("span",{className:"text-muted w-32 text-right",children:[l.callCount," calls, ",l.totalTokens.toLocaleString()," tok"]})]},l.toolName))})]})})()]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Cost Analysis"}),e.jsx("h4",{className:"text-xs font-medium text-muted mb-2",children:"Savings from Compression"}),e.jsxs("div",{className:"grid grid-cols-4 gap-3 mb-3",children:[e.jsx(s,{value:`$${a.costSavings.opusSavedPerTask.toFixed(3)}`,label:"Opus Saved/Task"}),e.jsx(s,{value:`$${a.costSavings.sonnetSavedPerTask.toFixed(3)}`,label:"Sonnet Saved/Task"}),e.jsx(s,{value:`$${a.costSavings.opusTotalSaved.toFixed(2)}`,label:"Opus Total Saved"}),e.jsx(s,{value:`$${a.costSavings.sonnetTotalSaved.toFixed(2)}`,label:"Sonnet Total Saved"})]}),e.jsx("h4",{className:"text-xs font-medium text-muted mb-2",children:"Cost per Task (after compression)"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsx(s,{value:`$${a.costSavings.opusCostPerTask.toFixed(3)}`,label:"Opus Input/Task"}),e.jsx(s,{value:`$${a.costSavings.sonnetCostPerTask.toFixed(3)}`,label:"Sonnet Input/Task"})]})]})]})}function s({value:r,label:c}){return e.jsxs("div",{className:"p-3 rounded-xl border border-edge shadow-sm hover:shadow-md transition-shadow bg-surface-alt text-center","data-testid":"metric-card",children:[e.jsx("div",{className:"text-xl font-bold",children:r}),e.jsx("div",{className:"text-[10px] text-muted uppercase",children:c})]})}export{p as BenchmarkTab};
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-300:oklch(80.8% .114 19.571);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-900:oklch(39.6% .141 25.723);--color-orange-300:oklch(83.7% .128 66.29);--color-orange-400:oklch(75% .183 55.934);--color-orange-500:oklch(70.5% .213 47.604);--color-orange-600:oklch(64.6% .222 41.116);--color-yellow-300:oklch(90.5% .182 98.111);--color-yellow-400:oklch(85.2% .199 91.936);--color-yellow-500:oklch(79.5% .184 86.047);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-900:oklch(42.1% .095 57.708);--color-green-300:oklch(87.1% .15 154.449);--color-green-400:oklch(79.2% .209 151.711);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-900:oklch(39.3% .095 152.535);--color-cyan-400:oklch(78.9% .154 211.53);--color-cyan-500:oklch(71.5% .143 215.221);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-indigo-500:oklch(58.5% .233 277.117);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-500:oklch(62.7% .265 303.9);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-zinc-100:oklch(96.7% .001 286.375);--color-zinc-200:oklch(92% .004 286.32);--color-zinc-300:oklch(87.1% .006 286.286);--color-zinc-400:oklch(70.5% .015 286.067);--color-zinc-500:oklch(55.2% .016 285.938);--color-zinc-600:oklch(44.2% .017 285.786);--color-zinc-700:oklch(37% .013 285.805);--color-zinc-800:oklch(27.4% .006 286.033);--color-zinc-900:oklch(21% .006 285.885);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-5xl:64rem;--container-6xl:72rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2 / 1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wider:.05em;--leading-tight:1.25;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0, 0, .2, 1) infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-accent:#4263eb;--color-accent-light:#5c7cfa;--color-success:#4caf50;--color-warning:#ff9800;--color-danger:#f44336;--color-surface:#fff;--color-surface-alt:#f8f9fa;--color-surface-elevated:#e9ecef;--color-foreground:#212529;--color-muted:#475569;--color-edge:#dee2e6}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\.5{top:calc(var(--spacing) * 1.5)}.top-1\/2{top:50%}.top-2{top:calc(var(--spacing) * 2)}.top-3{top:calc(var(--spacing) * 3)}.top-full{top:100%}.right-2{right:calc(var(--spacing) * 2)}.right-3{right:calc(var(--spacing) * 3)}.bottom-2{bottom:calc(var(--spacing) * 2)}.left-0{left:calc(var(--spacing) * 0)}.left-1\.5{left:calc(var(--spacing) * 1.5)}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.left-full{left:100%}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.m-2{margin:calc(var(--spacing) * 2)}.m-4{margin:calc(var(--spacing) * 4)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.-mt-20{margin-top:calc(var(--spacing) * -20)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-1\.5{margin-bottom:calc(var(--spacing) * 1.5)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-5{margin-left:calc(var(--spacing) * 5)}.ml-16{margin-left:calc(var(--spacing) * 16)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.\!h-2{height:calc(var(--spacing) * 2)!important}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:calc(var(--spacing) * 1)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-3{height:calc(var(--spacing) * 3)}.h-3\.5{height:calc(var(--spacing) * 3.5)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-12{height:calc(var(--spacing) * 12)}.h-14{height:calc(var(--spacing) * 14)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-40{height:calc(var(--spacing) * 40)}.h-44{height:calc(var(--spacing) * 44)}.h-48{height:calc(var(--spacing) * 48)}.h-64{height:calc(var(--spacing) * 64)}.h-\[18px\]{height:18px}.h-full{height:100%}.h-screen{height:100vh}.max-h-40{max-height:calc(var(--spacing) * 40)}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-60{max-height:calc(var(--spacing) * 60)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-80{max-height:calc(var(--spacing) * 80)}.max-h-96{max-height:calc(var(--spacing) * 96)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[70vh\]{max-height:70vh}.max-h-\[80vh\]{max-height:80vh}.max-h-\[85vh\]{max-height:85vh}.max-h-\[300px\]{max-height:300px}.max-h-\[400px\]{max-height:400px}.max-h-\[500px\]{max-height:500px}.min-h-0{min-height:calc(var(--spacing) * 0)}.\!w-2{width:calc(var(--spacing) * 2)!important}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-1\/3{width:33.3333%}.w-1\/4{width:25%}.w-2{width:calc(var(--spacing) * 2)}.w-2\.5{width:calc(var(--spacing) * 2.5)}.w-2\/3{width:66.6667%}.w-3{width:calc(var(--spacing) * 3)}.w-3\.5{width:calc(var(--spacing) * 3.5)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-20{width:calc(var(--spacing) * 20)}.w-24{width:calc(var(--spacing) * 24)}.w-28{width:calc(var(--spacing) * 28)}.w-32{width:calc(var(--spacing) * 32)}.w-36{width:calc(var(--spacing) * 36)}.w-40{width:calc(var(--spacing) * 40)}.w-48{width:calc(var(--spacing) * 48)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-64{width:calc(var(--spacing) * 64)}.w-80{width:calc(var(--spacing) * 80)}.w-96{width:calc(var(--spacing) * 96)}.w-\[18px\]{width:18px}.w-\[240px\]{width:240px}.w-full{width:100%}.w-px{width:1px}.max-w-5xl{max-width:var(--container-5xl)}.max-w-6xl{max-width:var(--container-6xl)}.max-w-\[120px\]{max-width:120px}.max-w-\[150px\]{max-width:150px}.max-w-\[200px\]{max-width:200px}.max-w-\[300px\]{max-width:300px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[80px\]{min-width:80px}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing) * 0);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.resize-y{resize:vertical}.list-inside{list-style-position:inside}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-2\.5{gap:calc(var(--spacing) * 2.5)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * .5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * .5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-edge>:not(:last-child)){border-color:var(--color-edge)}:where(.divide-zinc-800>:not(:last-child)){border-color:var(--color-zinc-800)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.rounded-b-lg{border-bottom-right-radius:var(--radius-lg);border-bottom-left-radius:var(--radius-lg)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-r-2{border-right-style:var(--tw-border-style);border-right-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent{border-color:var(--color-accent)}.border-accent\/30{border-color:#4263eb4d}@supports (color:color-mix(in lab,red,red)){.border-accent\/30{border-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.border-accent\/40{border-color:#4263eb66}@supports (color:color-mix(in lab,red,red)){.border-accent\/40{border-color:color-mix(in oklab,var(--color-accent) 40%,transparent)}}.border-blue-500\/30{border-color:#3080ff4d}@supports (color:color-mix(in lab,red,red)){.border-blue-500\/30{border-color:color-mix(in oklab,var(--color-blue-500) 30%,transparent)}}.border-current\/20{border-color:currentColor}@supports (color:color-mix(in lab,red,red)){.border-current\/20{border-color:color-mix(in oklab,currentcolor 20%,transparent)}}.border-danger\/20{border-color:#f4433633}@supports (color:color-mix(in lab,red,red)){.border-danger\/20{border-color:color-mix(in oklab,var(--color-danger) 20%,transparent)}}.border-edge{border-color:var(--color-edge)}.border-edge\/50{border-color:#dee2e680}@supports (color:color-mix(in lab,red,red)){.border-edge\/50{border-color:color-mix(in oklab,var(--color-edge) 50%,transparent)}}.border-green-500\/20{border-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.border-green-500\/20{border-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.border-green-500\/30{border-color:#00c7584d}@supports (color:color-mix(in lab,red,red)){.border-green-500\/30{border-color:color-mix(in oklab,var(--color-green-500) 30%,transparent)}}.border-green-500\/40{border-color:#00c75866}@supports (color:color-mix(in lab,red,red)){.border-green-500\/40{border-color:color-mix(in oklab,var(--color-green-500) 40%,transparent)}}.border-green-700\/50{border-color:#00813880}@supports (color:color-mix(in lab,red,red)){.border-green-700\/50{border-color:color-mix(in oklab,var(--color-green-700) 50%,transparent)}}.border-red-500\/30{border-color:#fb2c364d}@supports (color:color-mix(in lab,red,red)){.border-red-500\/30{border-color:color-mix(in oklab,var(--color-red-500) 30%,transparent)}}.border-transparent{border-color:#0000}.border-warning{border-color:var(--color-warning)}.border-yellow-500\/30{border-color:#edb2004d}@supports (color:color-mix(in lab,red,red)){.border-yellow-500\/30{border-color:color-mix(in oklab,var(--color-yellow-500) 30%,transparent)}}.border-zinc-600{border-color:var(--color-zinc-600)}.border-zinc-700{border-color:var(--color-zinc-700)}.\!bg-blue-500{background-color:var(--color-blue-500)!important}.\!bg-green-500{background-color:var(--color-green-500)!important}.bg-\[\#06b6d420\]{background-color:#06b6d420}.bg-\[\#8b5cf6\]{background-color:#8b5cf6}.bg-\[\#ef4444\]{background-color:#ef4444}.bg-\[\#f59e0b\]{background-color:#f59e0b}.bg-accent{background-color:var(--color-accent)}.bg-accent\/5{background-color:#4263eb0d}@supports (color:color-mix(in lab,red,red)){.bg-accent\/5{background-color:color-mix(in oklab,var(--color-accent) 5%,transparent)}}.bg-accent\/10{background-color:#4263eb1a}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.bg-accent\/15{background-color:#4263eb26}@supports (color:color-mix(in lab,red,red)){.bg-accent\/15{background-color:color-mix(in oklab,var(--color-accent) 15%,transparent)}}.bg-accent\/20{background-color:#4263eb33}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.bg-accent\/60{background-color:#4263eb99}@supports (color:color-mix(in lab,red,red)){.bg-accent\/60{background-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black) 50%,transparent)}}.bg-blue-500{background-color:var(--color-blue-500)}.bg-blue-500\/10{background-color:#3080ff1a}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/10{background-color:color-mix(in oklab,var(--color-blue-500) 10%,transparent)}}.bg-blue-500\/20{background-color:#3080ff33}@supports (color:color-mix(in lab,red,red)){.bg-blue-500\/20{background-color:color-mix(in oklab,var(--color-blue-500) 20%,transparent)}}.bg-blue-600{background-color:var(--color-blue-600)}.bg-blue-600\/20{background-color:#155dfc33}@supports (color:color-mix(in lab,red,red)){.bg-blue-600\/20{background-color:color-mix(in oklab,var(--color-blue-600) 20%,transparent)}}.bg-blue-600\/30{background-color:#155dfc4d}@supports (color:color-mix(in lab,red,red)){.bg-blue-600\/30{background-color:color-mix(in oklab,var(--color-blue-600) 30%,transparent)}}.bg-cyan-500\/20{background-color:#00b7d733}@supports (color:color-mix(in lab,red,red)){.bg-cyan-500\/20{background-color:color-mix(in oklab,var(--color-cyan-500) 20%,transparent)}}.bg-danger\/5{background-color:#f443360d}@supports (color:color-mix(in lab,red,red)){.bg-danger\/5{background-color:color-mix(in oklab,var(--color-danger) 5%,transparent)}}.bg-danger\/15{background-color:#f4433626}@supports (color:color-mix(in lab,red,red)){.bg-danger\/15{background-color:color-mix(in oklab,var(--color-danger) 15%,transparent)}}.bg-edge{background-color:var(--color-edge)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-500\/10{background-color:#6a72821a}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/10{background-color:color-mix(in oklab,var(--color-gray-500) 10%,transparent)}}.bg-gray-500\/20{background-color:#6a728233}@supports (color:color-mix(in lab,red,red)){.bg-gray-500\/20{background-color:color-mix(in oklab,var(--color-gray-500) 20%,transparent)}}.bg-green-500{background-color:var(--color-green-500)}.bg-green-500\/5{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/5{background-color:color-mix(in oklab,var(--color-green-500) 5%,transparent)}}.bg-green-500\/10{background-color:#00c7581a}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/10{background-color:color-mix(in oklab,var(--color-green-500) 10%,transparent)}}.bg-green-500\/20{background-color:#00c75833}@supports (color:color-mix(in lab,red,red)){.bg-green-500\/20{background-color:color-mix(in oklab,var(--color-green-500) 20%,transparent)}}.bg-green-600{background-color:var(--color-green-600)}.bg-green-600\/30{background-color:#00a5444d}@supports (color:color-mix(in lab,red,red)){.bg-green-600\/30{background-color:color-mix(in oklab,var(--color-green-600) 30%,transparent)}}.bg-green-900\/20{background-color:#0d542b33}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/20{background-color:color-mix(in oklab,var(--color-green-900) 20%,transparent)}}.bg-green-900\/30{background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.bg-green-900\/30{background-color:color-mix(in oklab,var(--color-green-900) 30%,transparent)}}.bg-indigo-500{background-color:var(--color-indigo-500)}.bg-indigo-500\/10{background-color:#625fff1a}@supports (color:color-mix(in lab,red,red)){.bg-indigo-500\/10{background-color:color-mix(in oklab,var(--color-indigo-500) 10%,transparent)}}.bg-muted\/10{background-color:#4755691a}@supports (color:color-mix(in lab,red,red)){.bg-muted\/10{background-color:color-mix(in oklab,var(--color-muted) 10%,transparent)}}.bg-muted\/15{background-color:#47556926}@supports (color:color-mix(in lab,red,red)){.bg-muted\/15{background-color:color-mix(in oklab,var(--color-muted) 15%,transparent)}}.bg-orange-500\/20{background-color:#fe6e0033}@supports (color:color-mix(in lab,red,red)){.bg-orange-500\/20{background-color:color-mix(in oklab,var(--color-orange-500) 20%,transparent)}}.bg-orange-600\/30{background-color:#f051004d}@supports (color:color-mix(in lab,red,red)){.bg-orange-600\/30{background-color:color-mix(in oklab,var(--color-orange-600) 30%,transparent)}}.bg-purple-500{background-color:var(--color-purple-500)}.bg-purple-500\/10{background-color:#ac4bff1a}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/10{background-color:color-mix(in oklab,var(--color-purple-500) 10%,transparent)}}.bg-purple-500\/20{background-color:#ac4bff33}@supports (color:color-mix(in lab,red,red)){.bg-purple-500\/20{background-color:color-mix(in oklab,var(--color-purple-500) 20%,transparent)}}.bg-red-500{background-color:var(--color-red-500)}.bg-red-500\/5{background-color:#fb2c360d}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/5{background-color:color-mix(in oklab,var(--color-red-500) 5%,transparent)}}.bg-red-500\/10{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/10{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.bg-red-500\/15{background-color:#fb2c3626}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/15{background-color:color-mix(in oklab,var(--color-red-500) 15%,transparent)}}.bg-red-500\/20{background-color:#fb2c3633}@supports (color:color-mix(in lab,red,red)){.bg-red-500\/20{background-color:color-mix(in oklab,var(--color-red-500) 20%,transparent)}}.bg-red-600\/20{background-color:#e4001433}@supports (color:color-mix(in lab,red,red)){.bg-red-600\/20{background-color:color-mix(in oklab,var(--color-red-600) 20%,transparent)}}.bg-red-600\/30{background-color:#e400144d}@supports (color:color-mix(in lab,red,red)){.bg-red-600\/30{background-color:color-mix(in oklab,var(--color-red-600) 30%,transparent)}}.bg-red-600\/80{background-color:#e40014cc}@supports (color:color-mix(in lab,red,red)){.bg-red-600\/80{background-color:color-mix(in oklab,var(--color-red-600) 80%,transparent)}}.bg-red-900\/20{background-color:#82181a33}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/20{background-color:color-mix(in oklab,var(--color-red-900) 20%,transparent)}}.bg-red-900\/30{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.bg-red-900\/30{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}.bg-success\/15{background-color:#4caf5026}@supports (color:color-mix(in lab,red,red)){.bg-success\/15{background-color:color-mix(in oklab,var(--color-success) 15%,transparent)}}.bg-surface{background-color:var(--color-surface)}.bg-surface-alt{background-color:var(--color-surface-alt)}.bg-surface-elevated{background-color:var(--color-surface-elevated)}.bg-surface\/20{background-color:#fff3}@supports (color:color-mix(in lab,red,red)){.bg-surface\/20{background-color:color-mix(in oklab,var(--color-surface) 20%,transparent)}}.bg-surface\/30{background-color:#ffffff4d}@supports (color:color-mix(in lab,red,red)){.bg-surface\/30{background-color:color-mix(in oklab,var(--color-surface) 30%,transparent)}}.bg-surface\/50{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.bg-surface\/50{background-color:color-mix(in oklab,var(--color-surface) 50%,transparent)}}.bg-transparent{background-color:#0000}.bg-warning\/10{background-color:#ff98001a}@supports (color:color-mix(in lab,red,red)){.bg-warning\/10{background-color:color-mix(in oklab,var(--color-warning) 10%,transparent)}}.bg-warning\/15{background-color:#ff980026}@supports (color:color-mix(in lab,red,red)){.bg-warning\/15{background-color:color-mix(in oklab,var(--color-warning) 15%,transparent)}}.bg-yellow-500{background-color:var(--color-yellow-500)}.bg-yellow-500\/5{background-color:#edb2000d}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/5{background-color:color-mix(in oklab,var(--color-yellow-500) 5%,transparent)}}.bg-yellow-500\/10{background-color:#edb2001a}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/10{background-color:color-mix(in oklab,var(--color-yellow-500) 10%,transparent)}}.bg-yellow-500\/20{background-color:#edb20033}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/20{background-color:color-mix(in oklab,var(--color-yellow-500) 20%,transparent)}}.bg-yellow-500\/60{background-color:#edb20099}@supports (color:color-mix(in lab,red,red)){.bg-yellow-500\/60{background-color:color-mix(in oklab,var(--color-yellow-500) 60%,transparent)}}.bg-yellow-600\/30{background-color:#cd89004d}@supports (color:color-mix(in lab,red,red)){.bg-yellow-600\/30{background-color:color-mix(in oklab,var(--color-yellow-600) 30%,transparent)}}.bg-yellow-900\/20{background-color:#733e0a33}@supports (color:color-mix(in lab,red,red)){.bg-yellow-900\/20{background-color:color-mix(in oklab,var(--color-yellow-900) 20%,transparent)}}.bg-yellow-900\/30{background-color:#733e0a4d}@supports (color:color-mix(in lab,red,red)){.bg-yellow-900\/30{background-color:color-mix(in oklab,var(--color-yellow-900) 30%,transparent)}}.bg-zinc-700{background-color:var(--color-zinc-700)}.bg-zinc-800{background-color:var(--color-zinc-800)}.bg-zinc-900{background-color:var(--color-zinc-900)}.fill-current{fill:currentColor}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing) * 1)}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0{padding-block:calc(var(--spacing) * 0)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-5{padding-block:calc(var(--spacing) * 5)}.py-8{padding-block:calc(var(--spacing) * 8)}.py-12{padding-block:calc(var(--spacing) * 12)}.py-16{padding-block:calc(var(--spacing) * 16)}.pt-1{padding-top:calc(var(--spacing) * 1)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pb-1{padding-bottom:calc(var(--spacing) * 1)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pl-1{padding-left:calc(var(--spacing) * 1)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[8px\]{font-size:8px}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-\[\#3a3a5a\]{color:#3a3a5a}.text-\[\#06b6d4\]{color:#06b6d4}.text-accent{color:var(--color-accent)}.text-blue-300{color:var(--color-blue-300)}.text-blue-400{color:var(--color-blue-400)}.text-blue-500{color:var(--color-blue-500)}.text-cyan-400{color:var(--color-cyan-400)}.text-danger{color:var(--color-danger)}.text-foreground{color:var(--color-foreground)}.text-foreground\/80{color:#212529cc}@supports (color:color-mix(in lab,red,red)){.text-foreground\/80{color:color-mix(in oklab,var(--color-foreground) 80%,transparent)}}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-green-300{color:var(--color-green-300)}.text-green-300\/80{color:#7bf1a8cc}@supports (color:color-mix(in lab,red,red)){.text-green-300\/80{color:color-mix(in oklab,var(--color-green-300) 80%,transparent)}}.text-green-400{color:var(--color-green-400)}.text-green-400\/70{color:#05df72b3}@supports (color:color-mix(in lab,red,red)){.text-green-400\/70{color:color-mix(in oklab,var(--color-green-400) 70%,transparent)}}.text-green-500{color:var(--color-green-500)}.text-indigo-500{color:var(--color-indigo-500)}.text-muted{color:var(--color-muted)}.text-muted\/30{color:#4755694d}@supports (color:color-mix(in lab,red,red)){.text-muted\/30{color:color-mix(in oklab,var(--color-muted) 30%,transparent)}}.text-muted\/40{color:#47556966}@supports (color:color-mix(in lab,red,red)){.text-muted\/40{color:color-mix(in oklab,var(--color-muted) 40%,transparent)}}.text-muted\/50{color:#47556980}@supports (color:color-mix(in lab,red,red)){.text-muted\/50{color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}.text-muted\/60{color:#47556999}@supports (color:color-mix(in lab,red,red)){.text-muted\/60{color:color-mix(in oklab,var(--color-muted) 60%,transparent)}}.text-muted\/70{color:#475569b3}@supports (color:color-mix(in lab,red,red)){.text-muted\/70{color:color-mix(in oklab,var(--color-muted) 70%,transparent)}}.text-orange-300{color:var(--color-orange-300)}.text-orange-400{color:var(--color-orange-400)}.text-purple-400{color:var(--color-purple-400)}.text-purple-500{color:var(--color-purple-500)}.text-red-300{color:var(--color-red-300)}.text-red-300\/80{color:#ffa3a3cc}@supports (color:color-mix(in lab,red,red)){.text-red-300\/80{color:color-mix(in oklab,var(--color-red-300) 80%,transparent)}}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-white{color:var(--color-white)}.text-yellow-300{color:var(--color-yellow-300)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-500\/80{color:#edb200cc}@supports (color:color-mix(in lab,red,red)){.text-yellow-500\/80{color:color-mix(in oklab,var(--color-yellow-500) 80%,transparent)}}.text-yellow-600{color:var(--color-yellow-600)}.text-zinc-100{color:var(--color-zinc-100)}.text-zinc-200{color:var(--color-zinc-200)}.text-zinc-300{color:var(--color-zinc-300)}.text-zinc-400{color:var(--color-zinc-400)}.text-zinc-500{color:var(--color-zinc-500)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.placeholder-zinc-500::placeholder{color:var(--color-zinc-500)}.accent-accent{accent-color:var(--color-accent)}.opacity-0{opacity:0}.opacity-20{opacity:.2}.opacity-30{opacity:.3}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a), 0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-accent{--tw-ring-color:var(--color-accent)}.ring-orange-400\/50{--tw-ring-color:#ff8b1a80}@supports (color:color-mix(in lab,red,red)){.ring-orange-400\/50{--tw-ring-color:color-mix(in oklab, var(--color-orange-400) 50%, transparent)}}.ring-red-500\/60{--tw-ring-color:#fb2c3699}@supports (color:color-mix(in lab,red,red)){.ring-red-500\/60{--tw-ring-color:color-mix(in oklab, var(--color-red-500) 60%, transparent)}}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-\[1px\]{--tw-backdrop-blur:blur(1px);-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.duration-500{--tw-duration:.5s;transition-duration:.5s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media(hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.file\:mr-2::file-selector-button{margin-right:calc(var(--spacing) * 2)}.file\:mr-4::file-selector-button{margin-right:calc(var(--spacing) * 4)}.file\:rounded-md::file-selector-button{border-radius:var(--radius-md)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-accent::file-selector-button{background-color:var(--color-accent)}.file\:bg-zinc-700::file-selector-button{background-color:var(--color-zinc-700)}.file\:px-3::file-selector-button{padding-inline:calc(var(--spacing) * 3)}.file\:px-4::file-selector-button{padding-inline:calc(var(--spacing) * 4)}.file\:py-1\.5::file-selector-button{padding-block:calc(var(--spacing) * 1.5)}.file\:py-2::file-selector-button{padding-block:calc(var(--spacing) * 2)}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:text-xs::file-selector-button{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-white::file-selector-button{color:var(--color-white)}.file\:text-zinc-200::file-selector-button{color:var(--color-zinc-200)}.placeholder\:text-muted::placeholder{color:var(--color-muted)}.placeholder\:text-muted\/50::placeholder{color:#47556980}@supports (color:color-mix(in lab,red,red)){.placeholder\:text-muted\/50::placeholder{color:color-mix(in oklab,var(--color-muted) 50%,transparent)}}@media(hover:hover){.hover\:border-accent:hover{border-color:var(--color-accent)}.hover\:border-accent\/30:hover{border-color:#4263eb4d}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/30:hover{border-color:color-mix(in oklab,var(--color-accent) 30%,transparent)}}.hover\:border-accent\/50:hover{border-color:#4263eb80}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/50:hover{border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.hover\:border-accent\/60:hover{border-color:#4263eb99}@supports (color:color-mix(in lab,red,red)){.hover\:border-accent\/60:hover{border-color:color-mix(in oklab,var(--color-accent) 60%,transparent)}}.hover\:border-blue-500:hover{border-color:var(--color-blue-500)}.hover\:border-foreground:hover{border-color:var(--color-foreground)}.hover\:border-red-500\/50:hover{border-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.hover\:border-red-500\/50:hover{border-color:color-mix(in oklab,var(--color-red-500) 50%,transparent)}}.hover\:bg-accent-light:hover{background-color:var(--color-accent-light)}.hover\:bg-accent\/10:hover{background-color:#4263eb1a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/10:hover{background-color:color-mix(in oklab,var(--color-accent) 10%,transparent)}}.hover\:bg-accent\/20:hover{background-color:#4263eb33}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/20:hover{background-color:color-mix(in oklab,var(--color-accent) 20%,transparent)}}.hover\:bg-accent\/90:hover{background-color:#4263ebe6}@supports (color:color-mix(in lab,red,red)){.hover\:bg-accent\/90:hover{background-color:color-mix(in oklab,var(--color-accent) 90%,transparent)}}.hover\:bg-blue-500:hover{background-color:var(--color-blue-500)}.hover\:bg-blue-700:hover{background-color:var(--color-blue-700)}.hover\:bg-edge:hover{background-color:var(--color-edge)}.hover\:bg-green-500:hover{background-color:var(--color-green-500)}.hover\:bg-green-500\/5:hover{background-color:#00c7580d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-500\/5:hover{background-color:color-mix(in oklab,var(--color-green-500) 5%,transparent)}}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-green-900\/40:hover{background-color:#0d542b66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-green-900\/40:hover{background-color:color-mix(in oklab,var(--color-green-900) 40%,transparent)}}.hover\:bg-red-500\/10:hover{background-color:#fb2c361a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-500\/10:hover{background-color:color-mix(in oklab,var(--color-red-500) 10%,transparent)}}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:bg-red-600\/40:hover{background-color:#e4001466}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-600\/40:hover{background-color:color-mix(in oklab,var(--color-red-600) 40%,transparent)}}.hover\:bg-red-900\/30:hover{background-color:#82181a4d}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-900\/30:hover{background-color:color-mix(in oklab,var(--color-red-900) 30%,transparent)}}.hover\:bg-red-900\/40:hover{background-color:#82181a66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-red-900\/40:hover{background-color:color-mix(in oklab,var(--color-red-900) 40%,transparent)}}.hover\:bg-surface:hover{background-color:var(--color-surface)}.hover\:bg-surface-alt:hover{background-color:var(--color-surface-alt)}.hover\:bg-surface-alt\/50:hover{background-color:#f8f9fa80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-surface-alt\/50:hover{background-color:color-mix(in oklab,var(--color-surface-alt) 50%,transparent)}}.hover\:bg-surface-elevated:hover{background-color:var(--color-surface-elevated)}.hover\:bg-warning\/10:hover{background-color:#ff98001a}@supports (color:color-mix(in lab,red,red)){.hover\:bg-warning\/10:hover{background-color:color-mix(in oklab,var(--color-warning) 10%,transparent)}}.hover\:bg-yellow-900\/40:hover{background-color:#733e0a66}@supports (color:color-mix(in lab,red,red)){.hover\:bg-yellow-900\/40:hover{background-color:color-mix(in oklab,var(--color-yellow-900) 40%,transparent)}}.hover\:bg-zinc-600:hover{background-color:var(--color-zinc-600)}.hover\:bg-zinc-700:hover{background-color:var(--color-zinc-700)}.hover\:bg-zinc-800:hover{background-color:var(--color-zinc-800)}.hover\:bg-zinc-800\/50:hover{background-color:#27272a80}@supports (color:color-mix(in lab,red,red)){.hover\:bg-zinc-800\/50:hover{background-color:color-mix(in oklab,var(--color-zinc-800) 50%,transparent)}}.hover\:text-accent:hover{color:var(--color-accent)}.hover\:text-accent\/80:hover{color:#4263ebcc}@supports (color:color-mix(in lab,red,red)){.hover\:text-accent\/80:hover{color:color-mix(in oklab,var(--color-accent) 80%,transparent)}}.hover\:text-blue-300:hover{color:var(--color-blue-300)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-red-400:hover{color:var(--color-red-400)}.hover\:text-red-500:hover{color:var(--color-red-500)}.hover\:text-white:hover{color:var(--color-white)}.hover\:text-zinc-200:hover{color:var(--color-zinc-200)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a), 0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a), 0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:file\:bg-zinc-600:hover::file-selector-button{background-color:var(--color-zinc-600)}.hover\:file\:opacity-90:hover::file-selector-button{opacity:.9}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-2:focus{top:calc(var(--spacing) * 2)}.focus\:left-2:focus{left:calc(var(--spacing) * 2)}.focus\:z-\[100\]:focus{z-index:100}.focus\:rounded-lg:focus{border-radius:var(--radius-lg)}.focus\:border-accent:focus{border-color:var(--color-accent)}.focus\:border-accent\/50:focus{border-color:#4263eb80}@supports (color:color-mix(in lab,red,red)){.focus\:border-accent\/50:focus{border-color:color-mix(in oklab,var(--color-accent) 50%,transparent)}}.focus\:bg-accent:focus{background-color:var(--color-accent)}.focus\:px-4:focus{padding-inline:calc(var(--spacing) * 4)}.focus\:py-2:focus{padding-block:calc(var(--spacing) * 2)}.focus\:text-sm:focus{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.focus\:font-medium:focus{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.focus\:text-white:focus{color:var(--color-white)}.focus\:ring-1:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-accent:focus{--tw-ring-color:var(--color-accent)}.focus\:ring-accent\/50:focus{--tw-ring-color:#4263eb80}@supports (color:color-mix(in lab,red,red)){.focus\:ring-accent\/50:focus{--tw-ring-color:color-mix(in oklab, var(--color-accent) 50%, transparent)}}.focus\:ring-blue-500:focus{--tw-ring-color:var(--color-blue-500)}.focus\:ring-warning:focus{--tw-ring-color:var(--color-warning)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-surface\/50:disabled{background-color:#ffffff80}@supports (color:color-mix(in lab,red,red)){.disabled\:bg-surface\/50:disabled{background-color:color-mix(in oklab,var(--color-surface) 50%,transparent)}}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media(prefers-reduced-motion:reduce){.motion-reduce\:animate-none{animation:none}}@media(min-width:40rem){.sm\:inline{display:inline}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(min-width:48rem){.md\:flex{display:flex}.md\:hidden{display:none}.md\:w-60{width:calc(var(--spacing) * 60)}.md\:w-\[30\%\]{width:30%}.md\:min-w-\[280px\]{min-width:280px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.md\:border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:pl-0{padding-left:calc(var(--spacing) * 0)}}@media(min-width:64rem){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media(prefers-color-scheme:dark){.dark\:text-yellow-400{color:var(--color-yellow-400)}}}.dark{--color-surface:#1a1b1e;--color-surface-alt:#25262b;--color-surface-elevated:#2c2e33;--color-foreground:#c1c2c5;--color-muted:#909296;--color-edge:#373a40}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--color-surface);color:var(--color-foreground);margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.5;transition:background .2s,color .2s}.react-flow__node{font-size:12px}.react-flow__attribution{display:none!important}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--color-surface-alt)}::-webkit-scrollbar-thumb{background:var(--color-edge);border-radius:3px}button,[role=tab],[role=button],a{cursor:pointer}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}
@@ -1,123 +0,0 @@
1
- import{c as N,r as m,a as w,j as e,e as H,B as G,u as de,L as ie,G as B}from"./index-CIhDR5rf.js";import{i as xe,B as ue,C as me}from"./style-UgkJJqFQ.js";import{d as X}from"./index-CSeiGgX8.js";import{L as $}from"./loader-circle-Bl0DpM5P.js";import{T as J,C as q,a as K,S as ae,F as re}from"./triangle-alert-BcgxNLLr.js";import{R as V}from"./refresh-cw-0ApsgAym.js";import"./index-B5DzSMGg.js";/**
2
- * @license lucide-react v1.7.0 - ISC
3
- *
4
- * This source code is licensed under the ISC license.
5
- * See the LICENSE file in the root directory of this source tree.
6
- */const pe=[["path",{d:"M8 3 4 7l4 4",key:"9rb6wj"}],["path",{d:"M4 7h16",key:"6tx8e3"}],["path",{d:"m16 21 4-4-4-4",key:"siv7j2"}],["path",{d:"M20 17H4",key:"h6l3hr"}]],he=N("arrow-left-right",pe);/**
7
- * @license lucide-react v1.7.0 - ISC
8
- *
9
- * This source code is licensed under the ISC license.
10
- * See the LICENSE file in the root directory of this source tree.
11
- */const ge=[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]],fe=N("arrow-left",ge);/**
12
- * @license lucide-react v1.7.0 - ISC
13
- *
14
- * This source code is licensed under the ISC license.
15
- * See the LICENSE file in the root directory of this source tree.
16
- */const be=[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]],P=N("check",be);/**
17
- * @license lucide-react v1.7.0 - ISC
18
- *
19
- * This source code is licensed under the ISC license.
20
- * See the LICENSE file in the root directory of this source tree.
21
- */const je=[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]],Ne=N("circle-check-big",je);/**
22
- * @license lucide-react v1.7.0 - ISC
23
- *
24
- * This source code is licensed under the ISC license.
25
- * See the LICENSE file in the root directory of this source tree.
26
- */const ye=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]],ne=N("circle-check",ye);/**
27
- * @license lucide-react v1.7.0 - ISC
28
- *
29
- * This source code is licensed under the ISC license.
30
- * See the LICENSE file in the root directory of this source tree.
31
- */const ve=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]],we=N("circle-x",ve);/**
32
- * @license lucide-react v1.7.0 - ISC
33
- *
34
- * This source code is licensed under the ISC license.
35
- * See the LICENSE file in the root directory of this source tree.
36
- */const Ce=[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]],ke=N("clock",Ce);/**
37
- * @license lucide-react v1.7.0 - ISC
38
- *
39
- * This source code is licensed under the ISC license.
40
- * See the LICENSE file in the root directory of this source tree.
41
- */const Se=[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]],W=N("copy",Se);/**
42
- * @license lucide-react v1.7.0 - ISC
43
- *
44
- * This source code is licensed under the ISC license.
45
- * See the LICENSE file in the root directory of this source tree.
46
- */const Me=[["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M17 20v2",key:"1rnc9c"}],["path",{d:"M17 2v2",key:"11trls"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M2 17h2",key:"7oei6x"}],["path",{d:"M2 7h2",key:"asdhe0"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"M20 17h2",key:"1fpfkl"}],["path",{d:"M20 7h2",key:"1o8tra"}],["path",{d:"M7 20v2",key:"4gnj0m"}],["path",{d:"M7 2v2",key:"1i4yhu"}],["rect",{x:"4",y:"4",width:"16",height:"16",rx:"2",key:"1vbyd7"}],["rect",{x:"8",y:"8",width:"8",height:"8",rx:"1",key:"z9xiuo"}]],Le=N("cpu",Me);/**
47
- * @license lucide-react v1.7.0 - ISC
48
- *
49
- * This source code is licensed under the ISC license.
50
- * See the LICENSE file in the root directory of this source tree.
51
- */const $e=[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]],D=N("download",$e);/**
52
- * @license lucide-react v1.7.0 - ISC
53
- *
54
- * This source code is licensed under the ISC license.
55
- * See the LICENSE file in the root directory of this source tree.
56
- */const ze=[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]],Fe=N("eye",ze);/**
57
- * @license lucide-react v1.7.0 - ISC
58
- *
59
- * This source code is licensed under the ISC license.
60
- * See the LICENSE file in the root directory of this source tree.
61
- */const Re=[["path",{d:"M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5",key:"4pqfef"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M8 12v-1",key:"1ej8lb"}],["path",{d:"M8 18v-2",key:"qcmpov"}],["path",{d:"M8 7V6",key:"1nbb54"}],["circle",{cx:"8",cy:"20",r:"2",key:"ckkr5m"}]],Te=N("file-archive",Re);/**
62
- * @license lucide-react v1.7.0 - ISC
63
- *
64
- * This source code is licensed under the ISC license.
65
- * See the LICENSE file in the root directory of this source tree.
66
- */const Ae=[["path",{d:"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35",key:"1wthlu"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"m5 16-3 3 3 3",key:"331omg"}],["path",{d:"m9 22 3-3-3-3",key:"lsp7cz"}]],Pe=N("file-code-corner",Ae);/**
67
- * @license lucide-react v1.7.0 - ISC
68
- *
69
- * This source code is licensed under the ISC license.
70
- * See the LICENSE file in the root directory of this source tree.
71
- */const De=[["path",{d:"M15 2h-4a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V8",key:"14sh0y"}],["path",{d:"M16.706 2.706A2.4 2.4 0 0 0 15 2v5a1 1 0 0 0 1 1h5a2.4 2.4 0 0 0-.706-1.706z",key:"1970lx"}],["path",{d:"M5 7a2 2 0 0 0-2 2v11a2 2 0 0 0 2 2h8a2 2 0 0 0 1.732-1",key:"l4dndm"}]],_e=N("files",De);/**
72
- * @license lucide-react v1.7.0 - ISC
73
- *
74
- * This source code is licensed under the ISC license.
75
- * See the LICENSE file in the root directory of this source tree.
76
- */const Ee=[["path",{d:"M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z",key:"1kt360"}]],Ie=N("folder",Ee);/**
77
- * @license lucide-react v1.7.0 - ISC
78
- *
79
- * This source code is licensed under the ISC license.
80
- * See the LICENSE file in the root directory of this source tree.
81
- */const Oe=[["polyline",{points:"22 12 16 12 14 15 10 15 8 12 2 12",key:"o97t9d"}],["path",{d:"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z",key:"oot6mr"}]],Ue=N("inbox",Oe);/**
82
- * @license lucide-react v1.7.0 - ISC
83
- *
84
- * This source code is licensed under the ISC license.
85
- * See the LICENSE file in the root directory of this source tree.
86
- */const Ge=[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]],le=N("play",Ge);/**
87
- * @license lucide-react v1.7.0 - ISC
88
- *
89
- * This source code is licensed under the ISC license.
90
- * See the LICENSE file in the root directory of this source tree.
91
- */const Be=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],Ve=N("rotate-ccw",Be);/**
92
- * @license lucide-react v1.7.0 - ISC
93
- *
94
- * This source code is licensed under the ISC license.
95
- * See the LICENSE file in the root directory of this source tree.
96
- */const He=[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]],Je=N("shield",He);/**
97
- * @license lucide-react v1.7.0 - ISC
98
- *
99
- * This source code is licensed under the ISC license.
100
- * See the LICENSE file in the root directory of this source tree.
101
- */const qe=[["path",{d:"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z",key:"1s2grr"}],["path",{d:"M20 2v4",key:"1rf3ol"}],["path",{d:"M22 4h-4",key:"gwowj6"}],["circle",{cx:"4",cy:"20",r:"2",key:"6kqj1y"}]],Ke=N("sparkles",qe);/**
102
- * @license lucide-react v1.7.0 - ISC
103
- *
104
- * This source code is licensed under the ISC license.
105
- * See the LICENSE file in the root directory of this source tree.
106
- */const We=[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]],Ze=N("trash-2",We);/**
107
- * @license lucide-react v1.7.0 - ISC
108
- *
109
- * This source code is licensed under the ISC license.
110
- * See the LICENSE file in the root directory of this source tree.
111
- */const Qe=[["path",{d:"M12 3v12",key:"1x0j5s"}],["path",{d:"m17 8-5-5-5 5",key:"7q97r8"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}]],Xe=N("upload",Qe),Y={phase:"idle",analysis:null,prepareResult:null,finalizeResult:null,error:null,loading:!1};function Ye(){var o;const[s,t]=m.useState(Y),r=m.useCallback(async(i,h,x="snippet")=>{t(l=>({...l,phase:"analyzing",loading:!0,error:null}));try{const u=new Promise((b,n)=>setTimeout(()=>n(new Error("Analysis timed out after 30s. Please try again.")),3e4)),p=await Promise.race([w.translationCreateJob(i,h,x),u]);t({phase:"prepared",analysis:p.analysis,prepareResult:p,finalizeResult:null,error:null,loading:!1})}catch(l){t(u=>({...u,phase:"error",error:l instanceof Error?l.message:"Analysis failed",loading:!1}))}},[]),c=m.useCallback(async i=>{var x;const h=(x=s.prepareResult)==null?void 0:x.jobId;if(!h){t(l=>({...l,phase:"error",error:"No active job to finalize"}));return}t(l=>({...l,phase:"finalizing",loading:!0,error:null}));try{const l=await w.translationFinalize(h,i);t(u=>({...u,phase:"done",finalizeResult:l,loading:!1}))}catch(l){t(u=>({...u,phase:"error",error:l instanceof Error?l.message:"Finalize failed",loading:!1}))}},[(o=s.prepareResult)==null?void 0:o.jobId]),a=m.useCallback(()=>{t(Y)},[]);return[s,{analyze:r,finalize:c,reset:a}]}function et(){const[s,t]=m.useState([]),[r,c]=m.useState(null),[a,o]=m.useState(!0),[i,h]=m.useState(null),x=m.useCallback(async()=>{o(!0),h(null);try{const[u,p]=await Promise.all([w.translationListJobs(),w.translationStats()]);t(u.jobs),c(p)}catch(u){h(u instanceof Error?u.message:"Failed to load history")}finally{o(!1)}},[]),l=m.useCallback(async u=>{try{await w.translationDeleteJob(u),t(b=>b.filter(n=>n.id!==u));const p=await w.translationStats();c(p)}catch(p){h(p instanceof Error?p.message:"Delete failed")}},[]);return m.useEffect(()=>{x()},[x]),[{jobs:s,stats:r,loading:a,error:i},{refresh:x,deleteJob:l}]}const ee={mode:"idle",project:null,files:[],summary:null,selectedFileId:null,error:null,loading:!1};function tt(){var b;const[s,t]=m.useState(ee),r=m.useRef(null),c=m.useCallback(async(n,d,g)=>{t(f=>({...f,mode:"uploading",loading:!0,error:null}));try{const f=await w.translationUploadProject(n,d,g);r.current=f.project.id,t({mode:"ready",project:f.project,files:f.files,summary:null,selectedFileId:null,error:null,loading:!1})}catch(f){t(v=>({...v,mode:"error",error:f instanceof Error?f.message:"Upload failed",loading:!1}))}},[]),a=m.useCallback(async n=>{t(d=>({...d,loading:!0,error:null}));try{const d=await w.translationGetProject(n);r.current=d.project.id,t({mode:"ready",project:d.project,files:d.files,summary:null,selectedFileId:null,error:null,loading:!1})}catch(d){t(g=>({...g,mode:"error",error:d instanceof Error?d.message:"Failed to load project",loading:!1}))}},[]),o=m.useCallback(n=>{t(d=>({...d,selectedFileId:n}))},[]),i=m.useCallback(async n=>{const d=r.current;if(!d){t(g=>({...g,mode:"error",error:"No active project"}));return}t(g=>({...g,loading:!0,error:null}));try{await w.translationPrepareFiles(d,n);const g=await w.translationGetProject(d);t(f=>({...f,project:g.project,files:g.files,loading:!1}))}catch(g){t(f=>({...f,error:g instanceof Error?g.message:"Prepare failed",loading:!1}))}},[]),h=m.useCallback(async(n,d)=>{const g=r.current;if(!g){t(f=>({...f,mode:"error",error:"No active project"}));return}t(f=>({...f,loading:!0,error:null}));try{await w.translationFinalizeFile(g,n,d);const f=await w.translationGetProject(g);t(v=>({...v,project:f.project,files:f.files,loading:!1}))}catch(f){t(v=>({...v,error:f instanceof Error?f.message:"Finalize failed",loading:!1}))}},[]),x=m.useCallback(async()=>{var d;const n=r.current;if(!n){t(g=>({...g,mode:"error",error:"No active project"}));return}t(g=>({...g,loading:!0,error:null}));try{const g=await w.translationDownloadProject(n),f=(d=s.project)!=null&&d.name?`${s.project.name}-translated.zip`:"translated-project.zip",v=URL.createObjectURL(g),C=document.createElement("a");C.href=v,C.download=f,C.click(),URL.revokeObjectURL(v),t(k=>({...k,loading:!1}))}catch(g){t(f=>({...f,error:g instanceof Error?g.message:"Download failed",loading:!1}))}},[(b=s.project)==null?void 0:b.name]),l=m.useCallback(async n=>{const d=r.current;if(!d){t(g=>({...g,mode:"error",error:"No active project"}));return}t(g=>({...g,loading:!0,error:null}));try{const g=await w.translationDownloadFile(d,n),f=s.files.find(S=>S.id===n),v=f!=null&&f.filePath?f.filePath.split("/").pop()??"translated-file":"translated-file",C=URL.createObjectURL(g),k=document.createElement("a");k.href=C,k.download=v,k.click(),URL.revokeObjectURL(C),t(S=>({...S,loading:!1}))}catch(g){t(f=>({...f,error:g instanceof Error?g.message:"File download failed",loading:!1}))}},[s.files]),u=m.useCallback(async()=>{const n=r.current;if(!n){t(d=>({...d,mode:"error",error:"No active project"}));return}t(d=>({...d,loading:!0,error:null}));try{const d=await w.translationProjectSummary(n);t(g=>({...g,summary:d,loading:!1}))}catch(d){t(g=>({...g,error:d instanceof Error?d.message:"Failed to refresh summary",loading:!1}))}},[]),p=m.useCallback(()=>{r.current=null,t(ee)},[]);return[s,{upload:c,loadProject:a,selectFile:o,prepareFiles:i,finalizeFile:h,downloadProject:x,downloadFile:l,refreshSummary:u,reset:p}]}const st=["python","javascript","typescript","java","csharp","go","rust","ruby","php","swift","kotlin","scala","cpp"],at=["snippet","function","module"];function rt({sourceCode:s,setSourceCode:t,targetLanguage:r,setTargetLanguage:c,scope:a,setScope:o,generatedCode:i,setGeneratedCode:h,translation:x,onAnalyze:l,onFinalize:u,onReset:p}){var L,R,T;const{phase:b,prepareResult:n,error:d,loading:g}=x,f=b==="idle"||b==="error",v=b==="prepared",C=b==="done",[k,S]=m.useState(!1),E=()=>{n!=null&&n.prompt&&(navigator.clipboard.writeText(n.prompt),S(!0),setTimeout(()=>S(!1),2e3))};return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-edge",children:[e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:"Source Code"}),e.jsx("p",{className:"text-[10px] text-muted mt-0.5",children:"Paste the code you want to translate"})]}),e.jsxs("div",{className:"p-4 relative",children:[!f&&!v&&!C&&e.jsx("div",{className:"absolute inset-0 bg-surface/20 backdrop-blur-[1px] rounded-lg z-10 pointer-events-none"}),e.jsx("textarea",{value:s,onChange:y=>t(y.target.value),placeholder:"// Paste your code here...",rows:10,disabled:!f,className:"w-full px-3 py-2 text-xs rounded-md border border-edge bg-surface text-foreground placeholder:text-muted focus:outline-none focus:ring-1 focus:ring-accent font-mono disabled:opacity-60 disabled:cursor-not-allowed disabled:bg-surface/50"}),e.jsxs("div",{className:"flex items-center gap-3 mt-3",children:[e.jsxs("div",{className:"flex-1 grid grid-cols-3 gap-3",children:[(L=x.analysis)!=null&&L.detectedLanguage?e.jsxs("div",{className:"px-3 py-1.5 text-xs rounded-md border border-edge bg-surface/50 text-muted flex items-center gap-1.5",children:[e.jsx("span",{className:"text-[10px] text-muted/70",children:"from:"}),e.jsx("span",{className:"text-foreground font-medium",children:x.analysis.detectedLanguage})]}):e.jsx("div",{className:"px-3 py-1.5 text-xs rounded-md border border-edge/50 bg-surface/30 text-muted/50 flex items-center gap-1.5",children:e.jsx("span",{className:"text-[10px]",children:"from: auto-detect"})}),e.jsx("select",{value:r,onChange:y=>c(y.target.value),disabled:!f,className:"px-3 py-1.5 text-xs rounded-md border border-edge bg-surface text-foreground focus:outline-none focus:ring-1 focus:ring-accent disabled:opacity-50",children:st.map(y=>e.jsx("option",{value:y,children:y},y))}),e.jsx("div",{className:"flex gap-1",children:at.map(y=>e.jsx("button",{onClick:()=>o(y),disabled:!f,className:`flex-1 px-2 py-1.5 text-[10px] font-medium rounded-md border transition-colors disabled:opacity-50 ${a===y?"border-accent bg-accent/10 text-accent":"border-edge bg-surface text-muted hover:text-foreground"}`,children:y},y))})]}),f&&e.jsxs("button",{onClick:l,disabled:!s.trim()||g,className:"flex items-center gap-1.5 px-4 py-1.5 text-xs font-medium rounded-md bg-accent text-white hover:opacity-90 disabled:opacity-50 transition-opacity",children:[g?e.jsx($,{className:"w-3.5 h-3.5 animate-spin"}):e.jsx(le,{className:"w-3.5 h-3.5"}),g?"Analyzing...":"Analyze"]}),(v||C)&&e.jsxs("button",{onClick:p,className:"flex items-center gap-1.5 px-4 py-1.5 text-xs font-medium rounded-md border border-edge text-muted hover:text-foreground transition-colors",children:[e.jsx(Ve,{className:"w-3.5 h-3.5"}),"New"]}),C&&((T=(R=x.finalizeResult)==null?void 0:R.job)==null?void 0:T.targetCode)&&e.jsxs("button",{onClick:()=>{var Z,Q;const y=(Q=(Z=x.finalizeResult)==null?void 0:Z.job)==null?void 0:Q.targetCode;if(!y)return;const j=new Blob([y],{type:"text/plain"}),A=URL.createObjectURL(j),I=document.createElement("a");I.href=A,I.download="translated.txt",I.click(),URL.revokeObjectURL(A)},className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md border border-green-500/30 text-green-500 text-xs font-medium hover:bg-green-500/5 transition-colors",children:[e.jsx(D,{className:"w-3 h-3"}),"Download"]})]})]})]}),d&&e.jsx("div",{className:"px-4 py-3 rounded-lg border border-red-500/30 bg-red-500/5 text-xs text-red-400",children:d}),v&&n&&e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-edge flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:"AI Prompt"}),e.jsx("p",{className:"text-[10px] text-muted mt-0.5",children:"Copy this prompt, generate the code with AI, then paste the result below"})]}),e.jsxs("button",{onClick:E,className:`flex items-center gap-1 px-2 py-1 text-[10px] rounded border transition-all duration-200 ${k?"border-green-500/30 text-green-500 bg-green-500/5":"border-edge text-muted hover:text-foreground"}`,children:[k?e.jsx(P,{className:"w-3 h-3"}):e.jsx(W,{className:"w-3 h-3"}),k?"Copied!":"Copy"]})]}),e.jsxs("div",{className:"p-4 space-y-3",children:[e.jsx("pre",{className:"text-[10px] p-3 rounded-md bg-surface border border-edge max-h-48 overflow-auto whitespace-pre-wrap text-muted font-mono",children:n.prompt.length>3e3?n.prompt.slice(0,3e3)+`
112
-
113
- ... (truncated, use Copy for full prompt)`:n.prompt}),e.jsx("textarea",{value:i,onChange:y=>h(y.target.value),placeholder:"// Paste the AI-generated code here...",rows:8,className:"w-full px-3 py-2 text-xs rounded-md border border-edge bg-surface text-foreground placeholder:text-muted focus:outline-none focus:ring-1 focus:ring-accent font-mono"}),e.jsxs("button",{onClick:u,disabled:!i.trim()||g,className:"flex items-center gap-1.5 px-4 py-1.5 text-xs font-medium rounded-md bg-green-600 text-white hover:opacity-90 disabled:opacity-50 transition-opacity",children:[g?e.jsx($,{className:"w-3.5 h-3.5 animate-spin"}):e.jsx(Ne,{className:"w-3.5 h-3.5"}),g?"Finalizing...":"Finalize Translation"]})]})]})]})}function nt(s){const t=s.totalConstructs;if(t===0)return{percentage:100,ruleCount:0,aiCount:0,total:0,aiConstructs:[]};const r=s.ambiguousConstructs??[],c=r.length,o=s.constructs.map(h=>h.canonicalName).filter(h=>!r.includes(h)).length,i=t>0?Math.round((t-c)/t*100):100;return{percentage:Math.min(100,Math.max(0,i)),ruleCount:o,aiCount:c,total:t,aiConstructs:r}}function lt(s){return s>=90?{border:"border-green-500/30",bg:"bg-green-500/5",text:"text-green-500",bar:"bg-green-500"}:s>=50?{border:"border-yellow-500/30",bg:"bg-yellow-500/5",text:"text-yellow-500",bar:"bg-yellow-500"}:{border:"border-red-500/30",bg:"bg-red-500/5",text:"text-red-500",bar:"bg-red-500"}}function _({analysis:s,deterministicPct:t,totalConstructs:r,isProjectLevel:c,onDownload:a,aiPrompt:o}){const[i,h]=m.useState(!1),x=s?nt(s):{percentage:t??0,ruleCount:Math.round((t??0)/100*(r??0)),aiCount:Math.round((100-(t??0))/100*(r??0)),total:r??0,aiConstructs:[]},l=lt(x.percentage),u=x.percentage===100,p=100-x.percentage,b=m.useCallback(()=>{o&&navigator.clipboard.writeText(o).then(()=>{h(!0),setTimeout(()=>h(!1),2e3)})},[o]);return x.total===0&&!t?null:e.jsxs("div",{className:`rounded-lg border ${l.border} ${l.bg} p-4 space-y-3`,children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("span",{className:`text-3xl font-bold ${l.text}`,children:[x.percentage,"%"]}),e.jsxs("div",{children:[e.jsxs("p",{className:"text-xs font-semibold text-foreground",children:[c?"Project ":"","Deterministic Translation"]}),e.jsxs("p",{className:"text-[10px] text-muted",children:[x.ruleCount,"/",x.total," constructs by rules",x.aiCount>0&&` · ${x.aiCount} need AI`]})]})]}),u&&e.jsxs("span",{className:"flex items-center gap-1 px-2 py-1 rounded-md bg-green-500/10 text-green-500 text-[10px] font-medium",children:[e.jsx(ne,{className:"w-3 h-3"}),"No AI Required"]})]}),e.jsxs("div",{className:"h-2.5 rounded-full bg-surface overflow-hidden flex",role:"progressbar","aria-valuenow":x.percentage,"aria-valuemin":0,"aria-valuemax":100,"aria-label":`Deterministic translation: ${x.percentage}%`,children:[x.percentage>0&&e.jsx("div",{className:`h-full ${l.bar} transition-all duration-500`,style:{width:`${x.percentage}%`}}),p>0&&e.jsx("div",{className:"h-full bg-yellow-500/60 transition-all duration-500",style:{width:`${p}%`}})]}),e.jsxs("div",{className:"flex items-center gap-4 text-[10px]",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:`w-2 h-2 rounded-full ${l.bar}`}),e.jsxs("span",{className:"text-muted",children:["Rule-based (",x.ruleCount,")"]})]}),x.aiCount>0&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("div",{className:"w-2 h-2 rounded-full bg-yellow-500/60"}),e.jsxs("span",{className:"text-muted",children:["AI-assisted (",x.aiCount,")"]})]})]}),x.aiConstructs.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1.5",children:x.aiConstructs.map(n=>e.jsxs("span",{className:"flex items-center gap-1 px-1.5 py-0.5 text-[10px] rounded border border-yellow-500/30 bg-yellow-500/5 text-yellow-500",children:[e.jsx(Ke,{className:"w-2.5 h-2.5"}),n]},n))}),e.jsx("div",{className:"flex items-center gap-2 pt-1",children:u&&a?e.jsxs("button",{onClick:a,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-green-600 text-white text-xs font-medium hover:bg-green-700 transition-colors w-full justify-center",children:[e.jsx(D,{className:"w-3.5 h-3.5"}),"Ready to Download"]}):e.jsxs(e.Fragment,{children:[o&&e.jsxs("button",{onClick:b,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md bg-accent/10 text-accent text-xs font-medium hover:bg-accent/20 transition-colors",children:[i?e.jsx(P,{className:"w-3.5 h-3.5"}):e.jsx(W,{className:"w-3.5 h-3.5"}),i?"Copied!":`Copy AI Prompt for ${x.aiCount} construct${x.aiCount!==1?"s":""}`]}),a&&e.jsxs("button",{onClick:a,className:"flex items-center gap-1.5 px-3 py-1.5 rounded-md border border-edge text-foreground text-xs font-medium hover:bg-surface transition-colors",children:[e.jsx(D,{className:"w-3.5 h-3.5"}),"Download Partial"]})]})})]})}function te({value:s,max:t=100,label:r}){const c=Math.min(100,Math.round(s/t*100)),a=c>=80?"bg-green-500":c>=50?"bg-yellow-500":"bg-red-500";return e.jsxs("div",{className:"space-y-1",children:[e.jsxs("div",{className:"flex justify-between text-[10px]",children:[e.jsx("span",{className:"text-muted",children:r}),e.jsxs("span",{className:"text-foreground font-medium",children:[c,"%"]})]}),e.jsx("div",{className:"h-1.5 rounded-full bg-surface overflow-hidden",role:"progressbar","aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":100,"aria-label":`${r}: ${c}%`,children:e.jsx("div",{className:`h-full rounded-full ${a} transition-all duration-500`,style:{width:`${c}%`}})})]})}function oe({analysis:s}){return s?e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-edge flex items-center gap-2",children:[e.jsx(Le,{className:"w-3.5 h-3.5 text-accent"}),e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:"Analysis Results"})]}),e.jsxs("div",{className:"p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("span",{className:"px-2 py-0.5 text-[10px] font-medium rounded bg-accent/10 text-accent",children:s.detectedLanguage}),s.detectedConfidence!=null&&e.jsxs("span",{className:"text-[10px] text-muted",children:[Math.round(s.detectedConfidence*100),"% confidence"]}),e.jsxs("span",{className:"text-[10px] text-muted",children:[s.totalConstructs," constructs detected"]})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4",children:[e.jsx(te,{value:s.complexityScore,label:"Complexity"}),e.jsx(te,{value:s.estimatedTranslatability,label:"Translatability"})]}),s.constructs.length>0&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] text-muted mb-2",children:"Detected Constructs"}),e.jsx("div",{className:"flex flex-wrap gap-1.5",children:s.constructs.map(t=>e.jsxs("span",{className:"px-1.5 py-0.5 text-[10px] rounded border border-edge bg-surface text-foreground",title:`count: ${t.count}, confidence: ${Math.round(t.confidence*100)}%`,children:[t.canonicalName," ",e.jsxs("span",{className:"text-muted",children:["x",t.count]})]},t.canonicalName))})]}),e.jsx(_,{analysis:s}),s.ambiguousConstructs&&s.ambiguousConstructs.length>0&&e.jsxs("div",{className:"flex items-start gap-2 px-3 py-2 rounded-md border border-yellow-500/30 bg-yellow-500/5",children:[e.jsx(J,{className:"w-3.5 h-3.5 text-yellow-500 mt-0.5 shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-medium text-yellow-500",children:"Ambiguous Constructs"}),e.jsx("p",{className:"text-[10px] text-muted mt-0.5",children:s.ambiguousConstructs.join(", ")})]})]})]})]}):null}function ot({score:s}){const t=Math.round(s*100),r=t>=80?"bg-green-500/10 text-green-500":t>=50?"bg-yellow-500/10 text-yellow-500":"bg-red-500/10 text-red-500";return e.jsxs("span",{className:`px-2 py-0.5 text-xs font-semibold rounded ${r}`,children:[t,"%"]})}const ct={high:"bg-red-500/10 text-red-500",medium:"bg-yellow-500/10 text-yellow-500",low:"bg-blue-500/10 text-blue-500"};function dt({result:s}){if(!s)return null;const{evidence:t}=s;return e.jsxs("div",{className:"rounded-lg border border-green-500/30 bg-surface-alt",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-edge flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Je,{className:"w-3.5 h-3.5 text-green-500"}),e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:"Translation Evidence"})]}),e.jsx(ot,{score:t.confidenceScore})]}),e.jsxs("div",{className:"p-4 space-y-4",children:[e.jsx(_,{deterministicPct:Math.round(t.confidenceScore*100),totalConstructs:t.translatedConstructs.length+t.risks.length}),t.translatedConstructs.length>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-2",children:[e.jsx(Pe,{className:"w-3 h-3 text-muted"}),e.jsx("p",{className:"text-[10px] text-muted font-medium",children:"Translated Constructs"})]}),e.jsxs("table",{className:"w-full text-[10px]",children:[e.jsx("thead",{children:e.jsxs("tr",{className:"border-b border-edge",children:[e.jsx("th",{className:"text-left px-2 py-1 font-medium text-muted",children:"Source"}),e.jsx("th",{className:"text-left px-2 py-1 font-medium text-muted",children:"Target"}),e.jsx("th",{className:"text-left px-2 py-1 font-medium text-muted",children:"Method"})]})}),e.jsx("tbody",{children:t.translatedConstructs.map((r,c)=>e.jsxs("tr",{className:"border-b border-edge/50",children:[e.jsx("td",{className:"px-2 py-1 font-mono text-foreground",children:r.source}),e.jsx("td",{className:"px-2 py-1 font-mono text-accent",children:r.target}),e.jsx("td",{className:"px-2 py-1 text-muted",children:r.method})]},c))})]})]}),t.risks.length>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-2",children:[e.jsx(J,{className:"w-3 h-3 text-yellow-500"}),e.jsxs("p",{className:"text-[10px] text-muted font-medium",children:["Risks (",t.risks.length,")"]})]}),e.jsx("div",{className:"space-y-1.5",children:t.risks.map((r,c)=>e.jsxs("div",{className:"flex items-start gap-2 px-2 py-1.5 rounded border border-edge/50 bg-surface",children:[e.jsx("span",{className:`shrink-0 px-1.5 py-0.5 rounded text-[10px] font-medium ${ct[r.severity]??"bg-surface text-muted"}`,children:r.severity}),e.jsxs("div",{children:[e.jsx("span",{className:"text-[10px] font-medium text-foreground",children:r.construct}),e.jsx("span",{className:"text-[10px] text-muted ml-1",children:r.message})]})]},c))})]}),t.humanReviewPoints.length>0&&e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-1.5 mb-2",children:[e.jsx(Fe,{className:"w-3 h-3 text-muted"}),e.jsx("p",{className:"text-[10px] text-muted font-medium",children:"Human Review Points"})]}),e.jsx("ul",{className:"space-y-1 text-[10px] text-muted list-disc list-inside",children:t.humanReviewPoints.map((r,c)=>e.jsx("li",{children:r},c))})]}),t.diff&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] text-muted font-medium mb-2",children:"Diff"}),e.jsx("pre",{className:"text-[10px] p-3 rounded-md bg-surface border border-edge max-h-64 overflow-auto whitespace-pre-wrap text-muted font-mono",children:t.diff})]})]})]})}const it={pending:"bg-yellow-500/10 text-yellow-500",analyzing:"bg-blue-500/10 text-blue-500",translating:"bg-indigo-500/10 text-indigo-500",validating:"bg-purple-500/10 text-purple-500",done:"bg-green-500/10 text-green-500",failed:"bg-red-500/10 text-red-500"};function xt(s){const t=Date.now(),r=new Date(s).getTime(),c=t-r,a=Math.floor(c/6e4);if(a<1)return"just now";if(a<60)return`${a}m ago`;const o=Math.floor(a/60);if(o<24)return`${o}h ago`;const i=Math.floor(o/24);return i<7?`${i}d ago`:new Date(s).toLocaleDateString()}function z({label:s,value:t,accent:r}){return e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt px-4 py-3",children:[e.jsx("p",{className:"text-[10px] text-muted",children:s}),e.jsx("p",{className:`text-lg font-semibold ${r??"text-foreground"}`,children:t})]})}function O(){return e.jsx("tr",{className:"border-b border-edge/50",children:Array.from({length:7}).map((s,t)=>e.jsx("td",{className:"px-4 py-2",children:e.jsx("div",{className:"h-3 rounded bg-surface animate-pulse",style:{width:`${40+Math.random()*40}%`}})},t))})}function ut({job:s}){return e.jsx("tr",{children:e.jsx("td",{colSpan:7,className:"px-4 py-3 bg-surface/50",children:e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[s.sourceCode&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-medium text-muted mb-1",children:"Source Code"}),e.jsxs("pre",{className:"text-[10px] p-2 rounded-md bg-surface border border-edge max-h-40 overflow-auto whitespace-pre-wrap font-mono text-foreground",children:[s.sourceCode.slice(0,500),s.sourceCode.length>500?`
114
- ...`:""]})]}),s.targetCode&&e.jsxs("div",{children:[e.jsx("p",{className:"text-[10px] font-medium text-muted mb-1",children:"Translated Code"}),e.jsxs("pre",{className:"text-[10px] p-2 rounded-md bg-surface border border-green-500/20 max-h-40 overflow-auto whitespace-pre-wrap font-mono text-foreground",children:[s.targetCode.slice(0,500),s.targetCode.length>500?`
115
- ...`:""]})]}),!s.sourceCode&&!s.targetCode&&e.jsx("p",{className:"text-[10px] text-muted col-span-2",children:"No code details available for this job."})]})})})}function mt({state:s,actions:t,showInsights:r}){const{jobs:c,stats:a,loading:o,error:i}=s,[h,x]=m.useState(null),[l,u]=m.useState(null),p=n=>{l===n?(u(null),t.deleteJob(n)):(u(n),setTimeout(()=>u(d=>d===n?null:d),3e3))},b=n=>{x(d=>d===n?null:n)};return o&&c.length===0?e.jsxs("div",{className:"space-y-4",children:[e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3",children:Array.from({length:5}).map((n,d)=>e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt px-4 py-3 animate-pulse",children:[e.jsx("div",{className:"h-2 w-16 rounded bg-surface mb-2"}),e.jsx("div",{className:"h-5 w-10 rounded bg-surface"})]},d))}),e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt",children:[e.jsx("div",{className:"px-4 py-3 border-b border-edge",children:e.jsx("div",{className:"h-3 w-32 rounded bg-surface animate-pulse"})}),e.jsx("table",{className:"w-full",children:e.jsxs("tbody",{children:[e.jsx(O,{}),e.jsx(O,{}),e.jsx(O,{})]})})]})]}):i?e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 gap-3",children:[e.jsx("p",{className:"text-xs text-red-400",children:i}),e.jsxs("button",{onClick:()=>void t.refresh(),className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md border border-edge text-muted hover:text-foreground transition-colors cursor-pointer",children:[e.jsx(V,{className:"w-3 h-3"})," Retry"]})]}):e.jsxs("div",{className:"space-y-4",children:[a&&e.jsxs("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3",children:[e.jsx(z,{label:"Total Jobs",value:a.totalJobs}),e.jsx(z,{label:"Completed",value:a.done,accent:"text-green-500"}),e.jsx(z,{label:"Failed",value:a.failed,accent:a.failed>0?"text-red-500":"text-foreground"}),e.jsx(z,{label:"Pending",value:a.pending,accent:a.pending>0?"text-yellow-500":"text-foreground"}),e.jsx(z,{label:"Avg Confidence",value:`${Math.round(a.avgConfidence*100)}%`})]}),r&&c.length>0&&e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-edge flex items-center gap-2",children:[e.jsx(H,{className:"w-3.5 h-3.5 text-accent"}),e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:"Translation Pairs"})]}),e.jsx("div",{className:"p-4",children:e.jsx("div",{className:"flex flex-wrap gap-2",children:Object.entries(c.reduce((n,d)=>{const g=`${d.sourceLanguage} → ${d.targetLanguage}`;return n[g]=(n[g]??0)+1,n},{})).sort(([,n],[,d])=>d-n).map(([n,d])=>e.jsxs("span",{className:"px-2 py-1 text-[10px] rounded-md border border-edge bg-surface cursor-pointer hover:border-accent/50 transition-colors",children:[e.jsx("span",{className:"font-medium text-foreground",children:n}),e.jsxs("span",{className:"text-muted ml-1.5",children:["x",d]})]},n))})})]}),e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-edge flex items-center justify-between",children:[e.jsxs("h3",{className:"text-xs font-semibold text-foreground",children:["Translation Jobs (",c.length,")"]}),e.jsx("button",{onClick:()=>void t.refresh(),className:"p-1 rounded text-muted hover:text-foreground transition-colors cursor-pointer",title:"Refresh",children:e.jsx(V,{className:`w-3.5 h-3.5 ${o?"animate-spin":""}`})})]}),c.length===0?e.jsxs("div",{className:"px-4 py-12 flex flex-col items-center justify-center gap-3 text-center",children:[e.jsx(Ue,{className:"w-8 h-8 text-muted/40"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted",children:"No translation jobs yet"}),e.jsx("p",{className:"text-[10px] text-muted/60 mt-1",children:"Start by translating some code in the Convert tab"})]})]}):e.jsx("div",{className:"overflow-auto max-h-96",children:e.jsxs("table",{className:"w-full text-xs",children:[e.jsx("thead",{className:"sticky top-0 bg-surface-alt shadow-sm",children:e.jsxs("tr",{className:"border-b border-edge",children:[e.jsx("th",{className:"text-left px-4 py-2 font-medium text-muted w-6"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium text-muted",children:"ID"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium text-muted",children:"Languages"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium text-muted",children:"Scope"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium text-muted",children:"Status"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium text-muted",children:"Confidence"}),e.jsx("th",{className:"text-left px-4 py-2 font-medium text-muted",children:"Created"}),e.jsx("th",{className:"text-right px-4 py-2 font-medium text-muted"})]})}),e.jsx("tbody",{children:c.map(n=>e.jsxs(e.Fragment,{children:[e.jsxs("tr",{onClick:()=>b(n.id),className:"border-b border-edge/50 hover:bg-surface transition-colors cursor-pointer",children:[e.jsx("td",{className:"px-4 py-1.5 text-muted",children:h===n.id?e.jsx(q,{className:"w-3 h-3"}):e.jsx(K,{className:"w-3 h-3"})}),e.jsx("td",{className:"px-4 py-1.5 font-mono text-muted",title:n.id,children:n.id.slice(0,8)}),e.jsxs("td",{className:"px-4 py-1.5",children:[e.jsx("span",{className:"text-foreground",children:n.sourceLanguage}),e.jsx("span",{className:"text-muted mx-1",children:"→"}),e.jsx("span",{className:"text-accent",children:n.targetLanguage})]}),e.jsx("td",{className:"px-4 py-1.5 text-muted",children:n.scope}),e.jsx("td",{className:"px-4 py-1.5",children:e.jsx("span",{className:`px-1.5 py-0.5 rounded text-[10px] font-medium ${it[n.status]}`,children:n.status})}),e.jsx("td",{className:"px-4 py-1.5 text-muted",children:n.confidenceScore!=null?`${Math.round(n.confidenceScore*100)}%`:"—"}),e.jsx("td",{className:"px-4 py-1.5 text-muted",title:new Date(n.createdAt).toLocaleString(),children:xt(n.createdAt)}),e.jsx("td",{className:"px-4 py-1.5 text-right",onClick:d=>d.stopPropagation(),children:e.jsx("button",{onClick:()=>p(n.id),className:`px-2 py-0.5 rounded text-[10px] transition-all cursor-pointer ${l===n.id?"bg-red-500/10 text-red-400 font-medium border border-red-500/30":"text-muted hover:text-red-400"}`,title:l===n.id?"Click again to confirm":"Delete job",children:l===n.id?"Confirm?":e.jsx(Ze,{className:"w-3 h-3"})})})]},n.id),h===n.id&&e.jsx(ut,{job:n},`${n.id}-details`)]}))})]})})]})]})}function pt({onUpload:s,loading:t,disabled:r}){const[c,a]=m.useState(!1),o=m.useRef(null),i=m.useCallback(p=>{p.preventDefault(),p.stopPropagation(),!r&&!t&&a(!0)},[r,t]),h=m.useCallback(p=>{p.preventDefault(),p.stopPropagation(),a(!1)},[]),x=m.useCallback(p=>{if(p.preventDefault(),p.stopPropagation(),a(!1),r||t)return;const b=p.dataTransfer.files[0];b&&b.name.endsWith(".zip")&&s(b)},[r,t,s]),l=m.useCallback(()=>{var p;!r&&!t&&((p=o.current)==null||p.click())},[r,t]),u=m.useCallback(p=>{var n;const b=(n=p.target.files)==null?void 0:n[0];b&&b.name.endsWith(".zip")&&s(b),p.target.value=""},[s]);return e.jsxs("div",{role:"button",tabIndex:r?-1:0,className:`
116
- flex flex-col items-center justify-center gap-2 rounded-lg border-2 border-dashed
117
- px-4 py-5 text-center transition-colors cursor-pointer
118
- ${c?"border-accent bg-accent/5":"border-edge bg-surface"}
119
- ${r||t?"opacity-50 cursor-not-allowed":"hover:border-accent/60"}
120
- `,onDragOver:i,onDragLeave:h,onDrop:x,onClick:l,onKeyDown:p=>{(p.key==="Enter"||p.key===" ")&&l()},children:[e.jsx("input",{ref:o,type:"file",accept:".zip",className:"hidden",onChange:u,disabled:r||t}),t?e.jsxs(e.Fragment,{children:[e.jsx($,{className:"h-6 w-6 animate-spin text-accent"}),e.jsx("span",{className:"text-sm text-muted",children:"Uploading..."})]}):e.jsxs(e.Fragment,{children:[c?e.jsx(Te,{className:"h-6 w-6 text-accent"}):e.jsx(Xe,{className:"h-6 w-6 text-muted"}),e.jsxs("span",{className:"text-sm text-muted",children:["Drop a ",e.jsx("code",{className:"text-xs",children:".zip"})," file or click to browse"]})]})]})}const se={done:"bg-green-500",analyzed:"bg-yellow-500",translating:"bg-blue-500",analyzing:"bg-blue-500",failed:"bg-red-500",pending:"bg-gray-500"};function ht(s){const t={children:[]};for(const c of s){const a=c.filePath.split("/");let o=t;for(let i=0;i<a.length;i++){const h=a[i],x=i===a.length-1,l=a.slice(0,i+1).join("/");if(x)o.children.push({name:h,path:l,isDir:!1,children:[],file:c});else{let u=o.children.find(p=>p.isDir&&p.name===h);u||(u={name:h,path:l,isDir:!0,children:[]},o.children.push(u)),o=u}}}const r=c=>{const a=[...c].sort((o,i)=>o.isDir!==i.isDir?o.isDir?-1:1:o.name.localeCompare(i.name));for(const o of a)o.isDir&&(o.children=r(o.children));return a};return r(t.children)}function gt(s){const t={};for(const r of s)t[r.status]=(t[r.status]??0)+1;return t}function ce(s,t){const r=t.toLowerCase(),c=[];for(const a of s)if(a.isDir){const o=ce(a.children,t);o.length>0&&c.push({...a,children:o})}else a.path.toLowerCase().includes(r)&&c.push(a);return c}const ft=m.memo(function s({node:t,depth:r,selectedFileId:c,onSelectFile:a,expandedPaths:o,onToggle:i}){var n,d,g;const h=o.has(t.path),x=!t.isDir&&((n=t.file)==null?void 0:n.id)===c,l=r*16+8;if(t.isDir)return e.jsxs("div",{style:{contentVisibility:"auto"},children:[e.jsxs("button",{type:"button",className:"flex w-full items-center gap-1.5 rounded px-1 py-0.5 text-sm text-muted hover:bg-surface-hover",style:{paddingLeft:l},onClick:()=>i(t.path),children:[h?e.jsx(q,{className:"h-3.5 w-3.5 shrink-0"}):e.jsx(K,{className:"h-3.5 w-3.5 shrink-0"}),e.jsx(Ie,{className:"h-3.5 w-3.5 shrink-0 text-yellow-500/80"}),e.jsx("span",{className:"truncate",children:t.name})]}),h&&t.children.map(f=>e.jsx(s,{node:f,depth:r+1,selectedFileId:c,onSelectFile:a,expandedPaths:o,onToggle:i},f.path))]});const u=((d=t.file)==null?void 0:d.status)??"pending",p=(g=t.file)==null?void 0:g.confidenceScore,b=se[u]??se.pending;return e.jsxs("button",{type:"button",className:`
121
- flex w-full items-center gap-1.5 rounded px-1 py-0.5 text-sm transition-colors
122
- ${x?"bg-accent/10 border border-accent text-foreground":"text-muted hover:bg-surface-hover border border-transparent"}
123
- `,style:{paddingLeft:l,contentVisibility:"auto"},onClick:()=>t.file&&a(t.file.id),children:[e.jsx("span",{className:`h-2 w-2 shrink-0 rounded-full ${b}`}),e.jsx(re,{className:"h-3.5 w-3.5 shrink-0"}),e.jsx("span",{className:"truncate",children:t.name}),p!=null&&e.jsxs("span",{className:"ml-auto shrink-0 text-xs text-muted",children:[Math.round(p*100),"%"]})]})});function bt({files:s,selectedFileId:t,onSelectFile:r}){const[c,a]=m.useState(""),[o,i]=m.useState(new Set),h=m.useMemo(()=>ht(s),[s]),x=m.useMemo(()=>c.trim()?ce(h,c.trim()):h,[h,c]),l=m.useMemo(()=>gt(s),[s]),u=m.useCallback(d=>{i(g=>{const f=new Set(g);return f.has(d)?f.delete(d):f.add(d),f})},[]),p=(l.done??0)+(l.analyzed??0),b=l.translating??0,n=l.failed??0;return e.jsxs("div",{className:"flex flex-col gap-2",children:[e.jsxs("div",{className:"text-xs text-muted px-1",children:[s.length," files: ",p," ready, ",b," need AI, ",n," error"]}),e.jsxs("div",{className:"relative",children:[e.jsx(ae,{className:"absolute left-2 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted"}),e.jsx("input",{type:"text",placeholder:"Filter files...",value:c,onChange:d=>a(d.target.value),className:"w-full rounded border border-edge bg-surface py-1 pl-7 pr-2 text-sm text-foreground placeholder:text-muted focus:border-accent focus:outline-none"})]}),e.jsxs("div",{className:"overflow-y-auto max-h-[60vh]",children:[x.map(d=>e.jsx(ft,{node:d,depth:0,selectedFileId:t,onSelectFile:r,expandedPaths:o,onToggle:u},d.path)),x.length===0&&e.jsx("div",{className:"py-4 text-center text-xs text-muted",children:"No files match your filter"})]})]})}function jt(s,t){if(t){const l=t.translatedFiles,u=t.pendingFiles+t.analyzedFiles;return{totalFiles:t.totalFiles,deterministicCount:l,needsAiCount:u,errorCount:t.failedFiles,avgConfidence:t.overallConfidence,deterministicPct:t.deterministicPct}}const r=s.length;if(r===0)return{totalFiles:0,deterministicCount:0,needsAiCount:0,errorCount:0,avgConfidence:0,deterministicPct:0};const c=s.filter(l=>l.deterministic===!0).length,a=s.filter(l=>l.status==="failed").length,o=s.filter(l=>l.deterministic===!1&&l.status!=="failed").length,i=s.filter(l=>l.confidenceScore!=null),h=i.length>0?i.reduce((l,u)=>l+(u.confidenceScore??0),0)/i.length:0,x=r>0?Math.round(c/r*100):0;return{totalFiles:r,deterministicCount:c,needsAiCount:o,errorCount:a,avgConfidence:h,deterministicPct:x}}function F({icon:s,value:t,label:r,colorClass:c="text-foreground"}){return e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt px-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-1",children:[s,e.jsx("span",{className:`text-xl font-bold ${c}`,children:t})]}),e.jsx("p",{className:"text-[10px] text-muted",children:r})]})}function Nt({project:s,files:t,summary:r,onPrepareAll:c,onDownloadAll:a,loading:o}){const i=jt(t,r),h=i.deterministicPct===100&&i.totalFiles>0;return e.jsxs("div",{className:"space-y-6",children:[e.jsxs("div",{className:"grid grid-cols-5 gap-3",children:[e.jsx(F,{icon:e.jsx(_e,{className:"w-3.5 h-3.5 text-accent"}),value:i.totalFiles,label:"Total Files"}),e.jsx(F,{icon:e.jsx(ne,{className:"w-3.5 h-3.5 text-green-500"}),value:i.deterministicCount,label:"Deterministic",colorClass:"text-green-500"}),e.jsx(F,{icon:e.jsx(J,{className:"w-3.5 h-3.5 text-yellow-500"}),value:i.needsAiCount,label:"Needs AI",colorClass:"text-yellow-500"}),e.jsx(F,{icon:e.jsx(we,{className:"w-3.5 h-3.5 text-red-500"}),value:i.errorCount,label:"Errors",colorClass:"text-red-500"}),e.jsx(F,{icon:e.jsx(H,{className:"w-3.5 h-3.5 text-accent"}),value:`${Math.round(i.avgConfidence*100)}%`,label:"Avg Confidence"})]}),e.jsx(_,{isProjectLevel:!0,deterministicPct:i.deterministicPct,totalConstructs:i.totalFiles}),e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("button",{onClick:c,disabled:o||i.totalFiles===0,className:"flex items-center gap-1.5 px-4 py-2 rounded-md bg-accent text-white text-xs font-medium hover:bg-accent/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[e.jsx(le,{className:"w-3.5 h-3.5"}),"Convert All"]}),e.jsxs("button",{onClick:a,disabled:o||i.totalFiles===0,className:`flex items-center gap-1.5 px-4 py-2 rounded-md text-xs font-medium transition-colors disabled:opacity-50 disabled:cursor-not-allowed ${h?"bg-green-600 text-white hover:bg-green-700":"border border-edge text-foreground hover:bg-surface"}`,children:[e.jsx(D,{className:"w-3.5 h-3.5"}),"Download All .zip"]})]})]})}function yt({file:s,prompt:t,onBack:r,onFinalize:c,loading:a}){const[o,i]=m.useState(""),[h,x]=m.useState(!1),l=s.status==="done",u=m.useCallback(()=>{t&&navigator.clipboard.writeText(t).then(()=>{x(!0),setTimeout(()=>x(!1),2e3)})},[t]),p=m.useCallback(()=>{o.trim()&&c(o.trim())},[o,c]);return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("button",{onClick:r,className:"flex items-center gap-1.5 text-xs text-muted hover:text-foreground transition-colors",children:[e.jsx(fe,{className:"w-3.5 h-3.5"}),"Back to project"]}),e.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 rounded-md border border-edge bg-surface-alt",children:[e.jsx(re,{className:"w-4 h-4 text-accent shrink-0"}),e.jsx("span",{className:"text-xs font-mono text-foreground truncate",children:s.filePath})]}),s.analysis&&e.jsx(oe,{analysis:s.analysis}),e.jsx(_,{analysis:s.analysis,aiPrompt:t}),t&&e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-edge flex items-center justify-between",children:[e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:"AI Prompt"}),e.jsxs("button",{onClick:u,className:"flex items-center gap-1 px-2 py-1 rounded text-[10px] text-muted hover:text-foreground hover:bg-surface transition-colors",children:[h?e.jsx(P,{className:"w-3 h-3"}):e.jsx(W,{className:"w-3 h-3"}),h?"Copied!":"Copy"]})]}),e.jsx("pre",{className:"p-4 text-[11px] text-foreground/80 overflow-x-auto whitespace-pre-wrap font-mono leading-relaxed max-h-60 overflow-y-auto",children:t})]}),l&&e.jsxs("div",{className:"flex items-center gap-2 px-4 py-3 rounded-lg border border-green-500/30 bg-green-500/5",children:[e.jsx(P,{className:"w-4 h-4 text-green-500 shrink-0"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold text-green-500",children:"Translation Complete"}),s.confidenceScore!=null&&e.jsxs("p",{className:"text-[10px] text-muted mt-0.5",children:["Confidence: ",Math.round(s.confidenceScore*100),"%"]})]})]}),!l&&e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt",children:[e.jsxs("div",{className:"px-4 py-3 border-b border-edge",children:[e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:"Generated Code"}),e.jsx("p",{className:"text-[10px] text-muted mt-0.5",children:"Paste the AI-generated translation below to finalize this file."})]}),e.jsxs("div",{className:"p-4 space-y-3",children:[e.jsx("textarea",{value:o,onChange:b=>i(b.target.value),placeholder:"Paste generated code here...",className:"w-full h-48 px-3 py-2 rounded-md border border-edge bg-surface text-xs font-mono text-foreground placeholder:text-muted/50 resize-y focus:outline-none focus:ring-1 focus:ring-accent/50"}),e.jsx("button",{onClick:p,disabled:a||!o.trim(),className:"flex items-center gap-1.5 px-4 py-2 rounded-md bg-accent text-white text-xs font-medium hover:bg-accent/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:"Finalize Translation"})]})]})]})}function vt({project:s,files:t,summary:r,selectedFileId:c,onSelectFile:a,onPrepareAll:o,onDownloadAll:i,onFinalizeFile:h,prompts:x,loading:l}){const u=c?t.find(n=>n.id===c)??null:null,p=()=>{a(null)},b=n=>{c&&h(c,n)};return e.jsxs("div",{className:"flex h-full flex-col md:flex-row",children:[e.jsx("div",{className:"w-full md:w-60 border-b md:border-b-0 md:border-r border-edge overflow-hidden flex flex-col shrink-0",children:e.jsx(bt,{files:t,selectedFileId:c,onSelectFile:a})}),e.jsx("div",{className:"flex-1 overflow-y-auto p-4",children:u?e.jsx(yt,{file:u,prompt:x==null?void 0:x[u.id],onBack:p,onFinalize:b,loading:l}):e.jsx(Nt,{project:s,files:t,summary:r,onPrepareAll:o,onDownloadAll:i,loading:l})})]})}const wt={knowledge:null,searchResults:[],loading:!1,error:null};function Ct(){const[s,t]=m.useState(wt),r=m.useCallback(async()=>{t(a=>({...a,loading:!0,error:null}));try{const a=await w.translationGetKnowledge();t(o=>({...o,knowledge:a,loading:!1}))}catch(a){t(o=>({...o,error:a instanceof Error?a.message:"Failed to load knowledge stats",loading:!1}))}},[]),c=m.useCallback(async a=>{t(o=>({...o,loading:!0,error:null}));try{const o=await w.translationSearchKnowledge(a);t(i=>({...i,searchResults:o.results,loading:!1}))}catch(o){t(i=>({...i,error:o instanceof Error?o.message:"Search failed",loading:!1}))}},[]);return m.useEffect(()=>{r()},[r]),[s,{search:c,refresh:r}]}function U({label:s,value:t}){return e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt px-4 py-3",children:[e.jsx("p",{className:"text-[10px] text-muted",children:s}),e.jsx("p",{className:"text-lg font-semibold text-foreground",children:t})]})}function kt({entry:s,expanded:t,onToggle:r,onSearch:c}){const a=s.metadata,o=s.confidence!=null?Math.round(s.confidence*100):null,i=o!=null?o>=80?"text-green-500":o>=50?"text-yellow-500":"text-red-500":"text-muted",h=(a==null?void 0:a.riskCount)??0;return e.jsxs("div",{className:"rounded-lg border border-edge bg-surface-alt px-4 py-3 cursor-pointer transition-colors hover:border-accent/30",onClick:r,children:[e.jsxs("div",{className:"flex items-center gap-2",children:[t?e.jsx(q,{className:"w-3.5 h-3.5 text-muted flex-shrink-0"}):e.jsx(K,{className:"w-3.5 h-3.5 text-muted flex-shrink-0"}),e.jsx("p",{className:"text-xs font-medium text-foreground truncate flex-1",children:s.title}),e.jsx("span",{className:"text-[10px] text-muted flex-shrink-0",children:new Date(s.createdAt).toLocaleDateString()})]}),e.jsxs("div",{className:"flex items-center gap-2 mt-1.5 ml-5",children:[s.sourceLanguage&&s.targetLanguage&&e.jsxs("span",{className:"text-[10px] text-muted",children:[s.sourceLanguage," → ",s.targetLanguage]}),o!=null&&e.jsxs("span",{className:`text-[10px] ${i}`,children:[o,"%"]})]}),t&&e.jsxs("div",{className:"mt-2 pt-2 border-t border-edge space-y-2 ml-5",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[a!=null&&a.sourceLanguage?e.jsx("span",{className:"px-2 py-0.5 text-[10px] rounded bg-blue-500/10 text-blue-400",children:String(a.sourceLanguage)}):null,e.jsx("span",{className:"text-[10px] text-muted",children:"→"}),a!=null&&a.targetLanguage?e.jsx("span",{className:"px-2 py-0.5 text-[10px] rounded bg-green-500/10 text-green-400",children:String(a.targetLanguage)}):null,a!=null&&a.scope?e.jsx("span",{className:"px-2 py-0.5 text-[10px] rounded bg-accent/10 text-accent",children:String(a.scope)}):null]}),e.jsxs("div",{className:"grid grid-cols-3 gap-2 text-[10px]",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted",children:"Confidence: "}),e.jsxs("span",{className:i,children:[o??"—","%"]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted",children:"Constructs: "}),e.jsx("span",{className:"text-foreground",children:(a==null?void 0:a.constructCount)??"—"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted",children:"Risks: "}),e.jsx("span",{className:h>0?"text-yellow-500":"text-green-500",children:h})]})]}),e.jsx("button",{type:"button",onClick:x=>{x.stopPropagation(),c(s.title)},className:"text-[10px] text-accent hover:text-accent/80 transition-colors",children:"View in Search"})]})]})}function St(){var p,b,n;const[s,{search:t,refresh:r}]=Ct(),[c,a]=m.useState(""),[o,i]=m.useState(null),h=d=>{d.preventDefault(),t(c)},x=()=>{r()},l=s.searchResults&&s.searchResults.length>0?s.searchResults:((p=s.knowledge)==null?void 0:p.recentEntries)??[],u=s.searchResults&&s.searchResults.length>0;return e.jsxs("div",{className:"space-y-4",children:[e.jsxs("form",{onSubmit:h,className:"flex items-center gap-2",children:[e.jsxs("div",{className:"relative flex-1",children:[e.jsx(ae,{className:"absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 text-muted"}),e.jsx("input",{type:"text",value:c,onChange:d=>a(d.target.value),placeholder:"Search knowledge base...",className:"w-full pl-8 pr-3 py-1.5 text-xs rounded-md border border-edge bg-surface text-foreground placeholder:text-muted focus:outline-none focus:border-accent/50"})]}),e.jsxs("button",{type:"button",onClick:x,disabled:s.loading,className:"flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md border border-edge text-muted hover:text-foreground transition-colors cursor-pointer disabled:opacity-50",title:"Reindex knowledge",children:[e.jsx(V,{className:`w-3.5 h-3.5 ${s.loading?"animate-spin":""}`}),"Reindex"]})]}),s.loading&&!s.knowledge&&e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx($,{className:"w-6 h-6 text-muted animate-spin"})}),!s.loading&&!s.knowledge&&l.length===0&&e.jsxs("div",{className:"flex flex-col items-center justify-center py-12 gap-3 text-center",children:[e.jsx(G,{className:"w-12 h-12 text-muted/40"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs text-muted",children:"No learnings yet."}),e.jsx("p",{className:"text-[10px] text-muted/60 mt-1",children:"Complete some translations to build the knowledge base."})]})]}),s.knowledge&&e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsx(U,{label:"Total Entries",value:s.knowledge.totalDocuments??0}),e.jsx(U,{label:"Language Pairs",value:((b=s.knowledge.byLanguagePair)==null?void 0:b.length)??0}),e.jsx(U,{label:"Avg Confidence",value:s.knowledge.avgConfidence!=null?`${Math.round(s.knowledge.avgConfidence*100)}%`:"—"})]}),((n=s.knowledge)==null?void 0:n.byLanguagePair)&&s.knowledge.byLanguagePair.length>0&&e.jsx("div",{className:"flex flex-wrap gap-1.5",children:s.knowledge.byLanguagePair.map(d=>e.jsxs("span",{className:"px-2 py-0.5 text-[10px] font-medium rounded bg-accent/10 text-accent",children:[d.pair," (",d.count,")"]},d.pair))}),l.length>0&&e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(G,{className:"w-3.5 h-3.5 text-accent"}),e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:u?"Search Results":"Recent Entries"}),e.jsxs("span",{className:"text-[10px] text-muted",children:["(",l.length,")"]})]}),l.length>0&&e.jsx("div",{className:"space-y-2 max-h-80 overflow-auto",children:l.map(d=>e.jsx(kt,{entry:d,expanded:o===d.id,onToggle:()=>i(o===d.id?null:d.id),onSearch:g=>{a(g),t(g)}},d.id))})]})}const Mt=[{id:"convert",label:"Convert",icon:e.jsx(he,{className:"w-3.5 h-3.5"})},{id:"history",label:"History",icon:e.jsx(ke,{className:"w-3.5 h-3.5"})},{id:"insights",label:"Insights",icon:e.jsx(H,{className:"w-3.5 h-3.5"})},{id:"knowledge",label:"Knowledge",icon:e.jsx(G,{className:"w-3.5 h-3.5"})},{id:"graph",label:"Graph",icon:e.jsx(B,{className:"w-3.5 h-3.5"})}],M={sourceCode:"",targetLanguage:"python",scope:"snippet",generatedCode:""};function Lt({jobs:s}){const t=m.useMemo(()=>s.filter(a=>a.status==="done"&&a.confidenceScore!=null),[s]),{flowNodes:r,flowEdges:c}=m.useMemo(()=>{if(t.length===0)return{flowNodes:[],flowEdges:[]};const a=new Set,o=new Map;for(const l of t){a.add(l.sourceLanguage),a.add(l.targetLanguage);const u=`${l.sourceLanguage}->${l.targetLanguage}`,p=o.get(u)??{count:0,totalConf:0};p.count++,p.totalConf+=l.confidenceScore??0,o.set(u,p)}const i=[...a].map(l=>({id:l,data:{label:l},position:{x:0,y:0},style:{background:"rgba(99, 102, 241, 0.1)",border:"1px solid rgba(99, 102, 241, 0.3)",borderRadius:"8px",padding:"8px 16px",color:"#a5b4fc",fontSize:"12px",fontWeight:600}})),h=[...o.entries()].map(([l,u])=>{const[p,b]=l.split("->"),n=Math.round(u.totalConf/u.count*100),d=n>=80?"#22c55e":n>=50?"#eab308":"#ef4444";return{id:l,source:p,target:b,label:`x${u.count} · ${n}%`,style:{stroke:d,strokeWidth:2},labelStyle:{fill:"#9ca3af",fontSize:10},labelBgStyle:{fill:"#1e1e2e",fillOpacity:.9},animated:!0}}),x=new X.graphlib.Graph().setDefaultEdgeLabel(()=>({}));return x.setGraph({rankdir:"LR",nodesep:80,ranksep:150}),i.forEach(l=>x.setNode(l.id,{width:120,height:40})),h.forEach(l=>x.setEdge(l.source,l.target)),X.layout(x),i.forEach(l=>{const u=x.node(l.id);l.position={x:u.x-60,y:u.y-20}}),{flowNodes:i,flowEdges:h}},[t]);return t.length===0?e.jsxs("div",{className:"text-center py-12",children:[e.jsx(B,{className:"w-12 h-12 text-muted mx-auto mb-3"}),e.jsx("p",{className:"text-sm text-muted",children:"Translation graph visualization"}),e.jsx("p",{className:"text-[10px] text-muted mt-1",children:"Complete some translations to see the relationship graph"})]}):e.jsxs("div",{className:"space-y-4",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx(B,{className:"w-4 h-4 text-accent"}),e.jsx("h3",{className:"text-xs font-semibold text-foreground",children:"Translation Flow Graph"}),e.jsxs("span",{className:"text-[10px] text-muted",children:["(",t.length," completed translations)"]})]}),e.jsx("div",{style:{height:400},className:"rounded-lg border border-edge bg-surface-alt",children:e.jsxs(xe,{nodes:r,edges:c,fitView:!0,proOptions:{hideAttribution:!0},style:{background:"transparent"},children:[e.jsx(ue,{color:"#333",gap:20}),e.jsx(me,{showInteractive:!1})]})})]})}function Dt(){const[s,t]=m.useState("convert"),[r,c]=Ye(),[a,o]=et(),[i,h]=tt(),[x,l]=m.useState(M.sourceCode),[u,p]=m.useState(M.targetLanguage),[b,n]=m.useState(M.scope),[d,g]=m.useState(M.generatedCode),f=m.useCallback(j=>{M.sourceCode=j,l(j)},[]),v=m.useCallback(j=>{M.targetLanguage=j,p(j)},[]),C=m.useCallback(j=>{M.scope=j,n(j)},[]),k=m.useCallback(j=>{M.generatedCode=j,g(j)},[]),S=i.mode!=="idle",E=m.useCallback(j=>{h.upload(j,u)},[h,u]),L=r.phase;de(m.useCallback(j=>{j.startsWith("translation:")&&L!=="analyzing"&&L!=="finalizing"&&o.refresh()},[o,L]));const R=()=>{c.analyze(x,u,b)},T=()=>{c.finalize(d).then(()=>o.refresh())},y=()=>{c.reset(),f(""),k(""),v("python"),C("snippet")};return e.jsx("div",{className:"h-full overflow-auto",children:e.jsxs("div",{className:"p-4 space-y-4 max-w-5xl mx-auto",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ie,{className:"w-5 h-5 text-accent"}),e.jsx("h2",{className:"text-sm font-semibold text-foreground",children:"Language Convert"}),e.jsx("span",{className:"text-[10px] px-1.5 py-0.5 bg-warning/10 text-warning rounded-full",children:"Beta"})]}),e.jsx("div",{className:"flex gap-1 border-b border-edge pb-1",children:Mt.map(j=>e.jsxs("button",{onClick:()=>t(j.id),className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-t transition-colors ${s===j.id?"bg-accent text-white":"text-muted hover:text-foreground hover:bg-surface"}`,children:[j.icon,j.label]},j.id))}),s==="convert"&&e.jsxs("div",{className:"space-y-4",children:[e.jsx(pt,{onUpload:E,loading:i.loading}),S?e.jsx(vt,{project:i.project,files:i.files,summary:i.summary,selectedFileId:i.selectedFileId,onSelectFile:h.selectFile,onPrepareAll:()=>void h.prepareFiles(),onDownloadAll:()=>void h.downloadProject(),onFinalizeFile:(j,A)=>void h.finalizeFile(j,A),loading:i.loading}):e.jsxs(e.Fragment,{children:[e.jsx(rt,{sourceCode:x,setSourceCode:f,targetLanguage:u,setTargetLanguage:v,scope:b,setScope:C,generatedCode:d,setGeneratedCode:k,translation:r,onAnalyze:R,onFinalize:T,onReset:y}),r.phase==="analyzing"&&e.jsxs("div",{className:"rounded-lg border-2 border-accent/40 bg-accent/5 p-5 transition-all duration-300",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs("div",{className:"relative",children:[e.jsx("div",{className:"absolute inset-0 rounded-full bg-accent/20 animate-ping"}),e.jsx($,{className:"w-5 h-5 text-accent animate-spin relative"})]}),e.jsxs("div",{className:"flex-1",children:[e.jsx("p",{className:"text-xs font-semibold text-foreground",children:"Analyzing your code..."}),e.jsxs("div",{className:"flex items-center gap-2 mt-1.5",children:[e.jsx("span",{className:"text-[10px] text-accent font-medium",children:"Detecting language"}),e.jsx("span",{className:"text-[10px] text-muted",children:"→"}),e.jsx("span",{className:"text-[10px] text-muted",children:"Analyzing constructs"}),e.jsx("span",{className:"text-[10px] text-muted",children:"→"}),e.jsx("span",{className:"text-[10px] text-muted",children:"Generating prompt"})]})]})]}),e.jsx("div",{className:"mt-3 h-1 rounded-full bg-surface overflow-hidden",children:e.jsx("div",{className:"h-full bg-accent/60 rounded-full animate-pulse",style:{width:"60%"}})})]}),r.phase==="finalizing"&&e.jsx("div",{className:"rounded-lg border-2 border-green-500/40 bg-green-500/5 p-5 transition-all duration-300",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx($,{className:"w-5 h-5 text-green-500 animate-spin"}),e.jsxs("div",{children:[e.jsx("p",{className:"text-xs font-semibold text-foreground",children:"Finalizing translation..."}),e.jsx("p",{className:"text-[10px] text-muted mt-1",children:"Validating output and generating evidence pack"})]})]})}),r.analysis&&e.jsx("div",{className:"animate-in fade-in-0 duration-300",style:{animationFillMode:"both"},children:e.jsx(oe,{analysis:r.analysis})}),r.finalizeResult&&e.jsx("div",{className:"animate-in fade-in-0 duration-300",style:{animationFillMode:"both"},children:e.jsx(dt,{result:r.finalizeResult})})]})]}),(s==="history"||s==="insights")&&e.jsx(mt,{state:a,actions:o,showInsights:s==="insights"}),s==="knowledge"&&e.jsx(St,{}),s==="graph"&&e.jsx(Lt,{jobs:a.jobs})]})})}export{Dt as LanguagesTab};