import Link from "@/components/link"; import { formatDate } from "@/lib/format-date"; import type { SanctionEvent } from "../_lib/load-user-sanctions"; const KIND_CLASS: Record = { ban: "bg-[var(--admin-error-subtle)] text-[var(--admin-error)]", lift: "bg-[var(--admin-success-subtle)] text-[var(--admin-success)]", mute: "bg-[var(--admin-accent)]/20 text-[var(--admin-accent)]", unmute: "bg-[var(--admin-success-subtle)] text-[var(--admin-success)]", cfh: "bg-[var(--admin-accent)]/15 text-[var(--admin-text)]", staff: "bg-[var(--admin-border)] text-[var(--admin-text-muted)]", status: "bg-[var(--admin-accent)]/25 text-[var(--admin-accent)]", }; export function UserSanctionTimeline({ events, muteUntil, }: { events: SanctionEvent[]; muteUntil: number; }) { const now = Math.floor(Date.now() / 1000); const muted = muteUntil > now; return (

Sanctions timeline

{muted ? ( Muted until {formatDate(new Date(muteUntil * 1000))} ) : null}
{events.length === 0 ? (

No bans, mutes, CFH, or staff actions recorded for this user.

) : (
    {events.map((ev) => (
  1. {ev.kind}
    {ev.href ? ( {ev.label} ) : ( {ev.label} )} {formatDate(new Date(ev.at * 1000))} {ev.actor ? ( by {ev.actor} ) : null}

    {ev.detail}

  2. ))}
)}
); }