"use client"; import { Clock, FileText, Hash, type LucideIcon, NotebookPen, Pill, ShieldCheck, Stethoscope, TriangleAlert, } from "lucide-react"; import { Avatar, AvatarFallback } from "@/components/ui/avatar"; import { Badge } from "@/components/ui/badge"; import { Card } from "@/components/ui/card"; import { cn } from "@/lib/utils"; // All entries here are mock/placeholder data — there is no signing/ledger // backend yet. They illustrate temetro's patient-owned, signed-change vision: // every record change is signed (blockchain-style) and awaits patient approval. type ActivityStatus = "signed" | "pending"; type ActivityEntry = { id: string; actor: string; initials: string; action: string; patient: string; fileNumber: string; time: string; hash: string; status: ActivityStatus; icon: LucideIcon; }; const entries: ActivityEntry[] = [ { id: "1", actor: "Dr. Okafor", initials: "DO", action: "Updated vitals", patient: "Amina Yusuf", fileNumber: "10293", time: "Today, 10:24", hash: "0x9f3a…c21", status: "pending", icon: Stethoscope, }, { id: "2", actor: "Dr. Okafor", initials: "DO", action: "Added prescription — Lisinopril 10mg", patient: "Amina Yusuf", fileNumber: "10293", time: "Today, 10:21", hash: "0x4b8e…7df", status: "pending", icon: Pill, }, { id: "3", actor: "Dr. Stein", initials: "DS", action: "Created note — Lab review", patient: "Leila Haddad", fileNumber: "10342", time: "Today, 09:48", hash: "0x1c07…a90", status: "signed", icon: NotebookPen, }, { id: "4", actor: "Dr. Stein", initials: "DS", action: "Edited allergies — added Penicillin", patient: "Daniel Mensah", fileNumber: "10311", time: "Yesterday, 16:05", hash: "0xab12…44e", status: "signed", icon: TriangleAlert, }, { id: "5", actor: "Dr. Okafor", initials: "DO", action: "Imported prior records", patient: "Carlos Rivera", fileNumber: "10358", time: "Yesterday, 14:30", hash: "0x77f0…b3c", status: "signed", icon: FileText, }, ]; const kpis = [ { label: "Pending approvals", value: "2", icon: Clock }, { label: "Signed today", value: "1", icon: ShieldCheck }, { label: "Changes this week", value: "37", icon: Hash }, ]; function Kpi({ label, value, icon: Icon, }: { label: string; value: string; icon: LucideIcon; }) { return (
{label} {value}
); } export function ActivityView() { return (

Activity

A signed, tamper-evident log of record changes awaiting patient approval. Sample data.

{kpis.map((k) => ( ))}
    {entries.map((entry, i) => { const Icon = entry.icon; const isLast = i === entries.length - 1; return (
  1. {!isLast &&
    }
    {entry.action} {entry.status === "signed" ? ( Signed ) : ( Pending approval )}
    {entry.initials} {entry.actor} · {entry.patient} (#{entry.fileNumber})
    {entry.time} {entry.hash}
  2. ); })}
); }