import type { ReactNode } from "react" import { ArrowRight, CircleCheck, Lock, Pencil, Trash2 } from "lucide-react" import { Badge } from "@/components/ui/badge" import { cn } from "@/lib/utils" import type { ChangesetResponse, RecordView } from "@/api/types" type Tone = "update" | "delete" | "readonly" const TONE_META: Record< Tone, { label: string; empty: string; icon: typeof Pencil; dot: string; ring: string } > = { update: { label: "Updates", empty: "Нет изменений — все значения совпадают.", icon: Pencil, dot: "var(--diff-update)", ring: "ring-[color-mix(in_oklch,var(--diff-update),transparent_78%)]", }, delete: { label: "Prunes", empty: "Нечего удалять.", icon: Trash2, dot: "var(--diff-delete)", ring: "ring-[color-mix(in_oklch,var(--diff-delete),transparent_78%)]", }, readonly: { label: "Read-only", empty: "Нет read-only записей.", icon: Lock, dot: "var(--diff-readonly)", ring: "ring-[color-mix(in_oklch,var(--diff-readonly),transparent_82%)]", }, } function Values({ values }: { values?: string[] }) { if (!values || values.length === 0) { return — } return <>{values.join(", ")}> } function RecordRow({ record, tone }: { record: RecordView; tone: Tone }) { const meta = TONE_META[tone] const showArrow = tone !== "delete" return (
{meta.empty}
) : (