+
+ תכנית
+
+ {plan.display_name || plan.plan_number}
+
+ {plan.plan_type && (
+
+ {plan.plan_type}
+
+ )}
+ {plan.source_case_number && (
+
+ מקור: {plan.source_case_number}
+
+ )}
+
+
+ {duplicates.length > 0 && (
+
+
+
+
+ כפילות אפשרית — ייתכן שאותה תכנית כבר במרשם בצורה אחרת. מזג כדי לא
+ לפצל תכנית אחת לשתי רשומות.
+
+
+ {duplicates.map((d) => (
+
+
+ {d.display_name || d.plan_number}
+
+ {d.match_reason && (
+ ({d.match_reason})
+ )}
+ foldIn(d.id, d.display_name || d.plan_number)}
+ >
+ מזג לכאן
+
+
+ ))}
+
+ )}
+
+
+
+ משפט-הציטוט הקנוני (כפי שייכתב בבלוק ט)
+
+
+ {clean(plan.citation_formatted)}
+
+
+
+
+
תאריך רשומות: {fmtDate(plan.gazette_date)}
+
ילקוט פרסומים: {plan.yalkut_number || "—"}
+ {plan.plan_type &&
סוג: {plan.plan_type}
}
+
+
+ {noDate && (
+
+ ⚠ חסר תאריך-תוקף — תצוטט ללא תוקף עד השלמה.
+
+ )}
+
+
+ setEditing(true)}
+ >
+ {noDate ? "השלם תוקף" : "ערוך / תקן"}
+
+ decide("rejected")}
+ >
+ דחה
+
+ decide("approved")}
+ >
+ {noDate ? "אשר (ללא תוקף)" : "אשר"}
+
+
+
+ );
+}
+
+// ─── add / edit form (inline) ───────────────────────────────────────────────
+
+function PlanForm({
+ title, subtitle, initial, mode, planId, onClose,
+}: {
+ title: string;
+ subtitle: string;
+ initial: EditForm;
+ mode: "add" | "edit";
+ planId?: string;
+ onClose: () => void;
+}) {
+ const [f, setF] = useState