"use client"; import { CalendarClock } from "lucide-react"; import type { ReactNode } from "react"; import { useTranslation } from "react-i18next"; import { Badge } from "@/components/ui/badge"; import { Dialog, DialogDescription, DialogHeader, DialogPanel, DialogPopup, DialogTitle, } from "@/components/ui/dialog"; import type { MessageAttachment } from "@/lib/messages"; // The appointment data carried inside a shared-appointment message. It's a // point-in-time snapshot, so it survives the appointment later being edited or // deleted. type AppointmentSnapshot = Extract< MessageAttachment, { kind: "appointment" } >["appointment"]; function Row({ label, value }: { label: string; value: ReactNode }) { if (!value) return null; return (