// Shared SVG icons and little bits const Icons = { Check: ({ size = 14, color = "currentColor" }) => ( ), X: ({ size = 14, color = "currentColor" }) => ( ), Arrow: ({ size = 14, color = "currentColor" }) => ( ), Eye: ({ size = 14, color = "currentColor" }) => ( ), EyeOff: ({ size = 14, color = "currentColor" }) => ( ), Lock: ({ size = 14, color = "currentColor" }) => ( ), Pause: ({ size = 14, color = "currentColor" }) => ( ), Quill: ({ size = 14, color = "currentColor" }) => ( ), Plus: ({ size = 14, color = "currentColor" }) => ( ), Stamp: ({ size = 14, color = "currentColor" }) => ( ), }; // Scribbled checkmark, for established truths function ScribbleCheck({ color = "oklch(40% 0.15 145)" }) { return ( ); } function InkLine({ width = 100, height = 6, opacity = 0.45 }) { return ( ); } // Thermometer — conversation temperature function Thermometer({ value = 0.3, label = "temp" }) { // value 0..1 const pct = Math.max(0, Math.min(1, value)); return (
{/* tick marks */} {[0.25, 0.5, 0.75].map((t, i) => (
))}
{label}
); } // Small pin on a card function Pin({ color = "red" }) { return
; } // Agent badge function AgentBadge({ agent }) { const map = { coachA: { cls: 'agent-coach-a', label: 'COACH · A' }, coachB: { cls: 'agent-coach-b', label: 'COACH · B' }, mediator: { cls: 'agent-mediator', label: 'MEDIATOR' }, }; const m = map[agent] || map.mediator; return {m.label}; } Object.assign(window, { Icons, ScribbleCheck, InkLine, Thermometer, Pin, AgentBadge });