// detail.jsx — jurisdiction detail panel + override modal const { Badge: D_Badge } = window.MC_HELPERS; const { useState: dUseState } = React; function DetailPanel({ rec, matter, onOpenOverride, onApprove }) { if (!rec) { return (
Select a jurisdiction to inspect its assessment.
); } const eff = rec.lawyerOutcome || rec.outcome; const showOverride = rec.overridden && rec.lawyerOutcome && rec.lawyerOutcome !== rec.toolOutcome; return (
{rec.name}
{rec.iso} · {matter.transactionType} · FY{matter.reportingYear}
{rec.approved && (
✓ Partner-approved by {matter.partner}
)} {showOverride && (
Lawyer override: AI said {window.MC_HELPERS.OUTCOME_LABELS[rec.toolOutcome]} → now {window.MC_HELPERS.OUTCOME_LABELS[rec.lawyerOutcome]}
)}
Confidence: {window.MC_HELPERS.CONF_LABELS[rec.confidence] || "—"} {rec.borderline && · Borderline}
{rec.rule && (
Rule applied
{rec.rule}
)} {rec.rationale && (
Rationale
{rec.rationale}
)} {rec.missingInfo && rec.missingInfo.length > 0 && (
Missing information
The tool needs the following to complete this assessment:
    {rec.missingInfo.map((m, i) =>
  • {m}
  • )}
)} {rec.supranationalNote && (
Supranational note
{rec.supranationalNote}
)} {(rec.filingDeadline || rec.reviewPhase1 || rec.gunJumping || rec.fee) && (
Filing logistics
{rec.filingDeadline && (<>
Deadline
{rec.filingDeadline}
)} {rec.reviewPhase1 && (<>
Phase 1 review
{rec.reviewPhase1}
)} {rec.gunJumping && (<>
Gun-jumping
{rec.gunJumping}
)} {rec.individualPenalty && (<>
Individual penalty
{rec.individualPenalty}
)} {rec.fee && (<>
Filing fee
{rec.fee}
)} {rec.localCounselRequired != null && (<>
Local counsel
{rec.localCounselRequired ? "Required" : "Optional"}
)}
Table last updated
{rec.lastTableUpdate}
)} {rec.lawyerNote && (
Lawyer note
“{rec.lawyerNote}”
)}
{!rec.approved ? ( ) : ( )}
); } function OverrideModal({ rec, onClose, onSave }) { const [outcome, setOutcome] = dUseState(rec.lawyerOutcome || rec.toolOutcome); const [note, setNote] = dUseState(rec.lawyerNote || ""); const [error, setError] = dUseState(null); const choices = ["required", "borderline", "info_needed", "not_required"]; const handleSave = () => { const isChange = outcome !== rec.toolOutcome; if (isChange && !note.trim()) { setError("A reason is required when overriding the tool's outcome."); return; } onSave({ lawyerOutcome: isChange ? outcome : null, lawyerNote: note, overridden: isChange, }); }; return (
e.stopPropagation()}>

Override outcome — {rec.name}

AI said {window.MC_HELPERS.OUTCOME_LABELS[rec.toolOutcome]}. Lawyer overrides are layered on top — the AI assessment is never erased.
{choices.map((c) => ( ))}