diff --git a/frontend/src/components/session/TicketContextPanel.tsx b/frontend/src/components/session/TicketContextPanel.tsx new file mode 100644 index 00000000..7148568c --- /dev/null +++ b/frontend/src/components/session/TicketContextPanel.tsx @@ -0,0 +1,242 @@ +import { useState } from 'react' +import { + Ticket, + Building2, + UserCircle, + Monitor, + MessageSquare, + Link2, + ChevronDown, + ChevronRight, + RefreshCw, + Loader2, + AlertTriangle, +} from 'lucide-react' +import { cn } from '@/lib/utils' +import type { TicketContext } from '@/api/psaContext' + +interface TicketContextPanelProps { + context: TicketContext | null + loading: boolean + error: string | null + onRefresh: () => void +} + +interface AccordionSectionProps { + label: string + icon: React.ReactNode + count?: number + children: React.ReactNode +} + +function AccordionSection({ label, icon, count, children }: AccordionSectionProps) { + const [open, setOpen] = useState(false) + + return ( +
{error}
+{context.company.name}
+{context.company.name}
+ {context.company.type && ( +Type: {context.company.type}
+ )} + {context.company.territory && ( +Territory: {context.company.territory}
+ )} + {context.company.site && ( +Site: {context.company.site}
+ )} + {context.company.address && ( +{context.company.address}
+ )} + {context.company.phone && ( +{context.company.phone}
+ )} +{context.contact.name}
+ {context.contact.title && ( +{context.contact.title}
+ )} + {context.contact.email && ( +{context.contact.email}
+ )} + {context.contact.phone && ( +{context.contact.phone}
+ )} +{cfg.device_identifier}
+Type: {cfg.type}
} + {cfg.os_type &&OS: {cfg.os_type}
} + {cfg.ip_address &&IP: {cfg.ip_address}
} + {cfg.serial_number &&S/N: {cfg.serial_number}
} + {cfg.model_number &&Model: {cfg.model_number}
} ++ {note.text} +
+