/** * Shared types for the legal-ai plugin UI bundle. * * Mirrors a minimal subset of the legal-ai backend response shapes so the UI * components can type their props/data without pulling the full LegalApi * client (which is a worker-side dependency). */ export interface LegalCaseSummary { case_number: string; title: string; status: string; practice_area?: string | null; appeal_subtype?: string | null; proceeding_type?: string | null; updated_at?: string | null; archived_at?: string | null; } export interface LegalCaseDetails { id: string; case_number: string; title: string; status: string; practice_area?: string | null; appeal_subtype?: string | null; appellants?: string[]; respondents?: string[]; subject?: string; property_address?: string; expected_outcome?: string; [key: string]: unknown; } export interface LegalArgument { id?: string; party: string; argument_title?: string; argument_body?: string; claim_index?: number; [key: string]: unknown; } export interface LegalArgumentsResponse { case_number: string; total: number; by_party: Record; arguments: LegalArgument[]; } export interface PrecedentRow { id: string; citation: string; section_id?: string | null; practice_area?: string | null; [key: string]: unknown; } export interface MissingPrecedentRow { id: string; citation: string; status: string; legal_topic?: string | null; cited_by_party?: string | null; [key: string]: unknown; } export interface DashboardStats { byStatus: Record; weekActivity: number; totalCases: number; }