"use client"; import { useState } from "react"; import Link from "next/link"; import { AppShell } from "@/components/app-shell"; import { Card, CardContent } from "@/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Badge } from "@/components/ui/badge"; import { Input } from "@/components/ui/input"; import { useMissingPrecedents, type MissingPrecedentStatus, } from "@/lib/api/missing-precedents"; import { MissingPrecedentsTable } from "@/components/missing-precedents/missing-precedents-table"; /** * Missing-precedents page (TaskMaster #35). * * Surfaces citations that party briefs invoke but which aren't yet in the * precedent_library. Four tabs by status; each tab uses the same table * component with a different filter. Drawer (sheet) opens on row click * with metadata + upload form that routes to internal_decision_upload * (ערר/בל"מ citations) or precedent_library_upload (court rulings). */ function StatusBadge({ status, count }: { status: MissingPrecedentStatus; count: number }) { if (!count) return null; const variants: Record = { open: "bg-gold-wash text-gold-deep border-gold/40", uploaded: "bg-rule-soft text-ink-muted border-rule", closed: "bg-emerald-50 text-emerald-800 border-emerald-300/60", irrelevant: "bg-rule-soft text-ink-muted border-rule", }; return ( {count} ); } export default function MissingPrecedentsPage() { const [caseNumber, setCaseNumber] = useState(""); const [legalTopic, setLegalTopic] = useState(""); const counts = useMissingPrecedents({ limit: 1 }); const byStatus = counts.data?.by_status ?? {}; return (

פסיקה חסרה בקורפוס

פסיקות שצוטטו בכתבי הטענות אך אינן עדיין בקורפוס. סוכן המחקר רושם פערים אוטומטית; היו"ר סוגר אותם על־ידי העלאת המסמך — ניתוב אוטומטי בין הקורפוס הסמכותי (פסקי דין) להחלטות ועדות ערר.

{/* Shared filters */}
setCaseNumber(e.target.value)} placeholder="1017-03-26" dir="rtl" />
setLegalTopic(e.target.value)} placeholder="זכות עמידה" dir="rtl" />
פתוחות הועלו נסגרו לא רלוונטי הכל
); }