import * as React from "react"; import { Users, CalendarClock, CircleCheck, Circle, ArrowUpRight, } from "lucide-react"; import { cn } from "@/lib/utils"; import { Card, CardTitle, CardDescription, CardContent, CardFooter, } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; import { Separator } from "@/components/ui/separator"; /** * CopilotMeetingNoteCard — WealthX DS (Molecule) * * Renders the notes the Copilot captured for a meeting between a broker and the * end-user who booked an appointment through WealthX: a summary plus action * items, with a link back to the source appointment. Composes Card + Badge + * Button + Separator. * * Pure display — host wires onOpenAppointment. */ export interface CopilotMeetingActionItem { label: string; done?: boolean; } export interface CopilotMeetingNoteCardProps { /** Meeting title, e.g. "Meeting with Jordan Avery". */ title: string; /** When it happened, e.g. "18 Jun 2026 · 2:00 PM". */ dateLabel?: string; /** Participant names. */ attendees?: string[]; /** Short recap of the meeting. */ summary?: string; /** Follow-up items, optionally marked done. */ actionItems?: CopilotMeetingActionItem[]; /** Label shown in the status badge. Defaults to "Meeting notes". */ badgeLabel?: string; /** Deep-link back to the source appointment. */ onOpenAppointment?: () => void; openLabel?: string; className?: string; } export function CopilotMeetingNoteCard({ title, dateLabel, attendees, summary, actionItems, badgeLabel = "Meeting notes", onOpenAppointment, openLabel = "Open appointment", className, }: CopilotMeetingNoteCardProps) { const hasActionItems = actionItems && actionItems.length > 0; return (
{title} {dateLabel && ( )}
{badgeLabel}
{attendees && attendees.length > 0 && (
)} {summary && (

{summary}

)} {hasActionItems && ( <>
Action items
    {actionItems.map((item, i) => (
  • {item.done ? ( ) : ( )} {item.label}
  • ))}
)}
{onOpenAppointment && ( )}
); }