import { useState } from "react"; import { XIcon, WarningIcon, CheckCircleIcon, CaretRightIcon } from "@phosphor-icons/react"; import { copyTextToClipboard } from "../utils/clipboard"; export interface LintFinding { severity: "error" | "warning"; message: string; file?: string; fixHint?: string; } export function LintModal({ findings, projectId, onClose, }: { findings: LintFinding[]; projectId: string; onClose: () => void; }) { const errors = findings.filter((f) => f.severity === "error"); const warnings = findings.filter((f) => f.severity === "warning"); const hasIssues = findings.length > 0; const [copied, setCopied] = useState(false); const handleCopyToAgent = async () => { const lines = findings.map((f) => { let line = `[${f.severity}] ${f.message}`; if (f.file) line += `\n File: ${f.file}`; if (f.fixHint) line += `\n Fix: ${f.fixHint}`; return line; }); const text = `Fix these HyperFrames lint issues for project "${projectId}":\n\nProject path: ${window.location.href}\n\n${lines.join("\n\n")}`; const copiedText = await copyTextToClipboard(text); if (copiedText) { setCopied(true); setTimeout(() => setCopied(false), 2000); } }; return (
HyperFrame Lint Results
{f.message}
{f.file &&{f.file}
} {f.fixHint && ({f.fixHint}
{f.message}
{f.file &&{f.file}
} {f.fixHint && ({f.fixHint}