/** * ClauseGuard — Side Panel (redesigned) */ const DESCS = { "Limitation of liability": "Company limits or excludes liability for losses or damages.", "Unilateral termination": "They can close your account without reason.", "Unilateral change": "Terms can change without your consent.", "Content removal": "Your content can be deleted without notice.", "Contract by using": "You agree just by visiting or using the site.", "Choice of law": "Foreign law applies instead of your local protections.", "Jurisdiction": "Disputes handled in their preferred court.", "Arbitration": "You waive your right to sue in court.", }; // SVG icons for severity const SEV_ICONS = { HIGH: '', MEDIUM: '', LOW: '', }; let allClauses = []; let currentFilter = "all"; async function loadResults() { const [tab] = await chrome.tabs.query({ active: true, currentWindow: true }); if (!tab?.id) return; const results = await chrome.runtime.sendMessage({ type: "GET_RESULTS", tabId: tab.id }); if (!results || !results.results) { document.getElementById("empty-state").style.display = "block"; return; } document.getElementById("empty-state").style.display = "none"; document.getElementById("score-bar").style.display = "flex"; document.getElementById("filters").style.display = "flex"; // Meta document.getElementById("meta").textContent = `${results.total_clauses} clauses · ${results.flagged_count} flagged`; // Grade const gb = document.getElementById("grade-box"); gb.textContent = results.grade; gb.className = `grade-box grade-${results.grade.toLowerCase()}`; // Score document.getElementById("score-num").textContent = `${results.risk_score} / 100`; const pf = document.getElementById("progress-fill"); pf.style.width = `${results.risk_score}%`; pf.style.background = results.risk_score >= 60 ? "#ef4444" : results.risk_score >= 30 ? "#f59e0b" : "#22c55e"; // Counts const counts = { HIGH: 0, MEDIUM: 0, LOW: 0 }; const flagged = results.results.filter(r => r.categories?.length > 0); flagged.forEach(r => r.categories.forEach(c => { if (counts[c.severity] !== undefined) counts[c.severity]++; })); document.getElementById("fc-high").textContent = counts.HIGH; document.getElementById("fc-med").textContent = counts.MEDIUM; document.getElementById("fc-low").textContent = counts.LOW; allClauses = flagged; renderClauses(); } function renderClauses() { const list = document.getElementById("clause-list"); const filtered = currentFilter === "all" ? allClauses : allClauses.filter(c => c.categories.some(cat => cat.severity === currentFilter)); if (filtered.length === 0) { list.innerHTML = '