chordia-ui 3.3.8 → 3.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AgentLiftCard.cjs.js.map +1 -1
- package/dist/AgentLiftCard.es.js +5 -3
- package/dist/AgentLiftCard.es.js.map +1 -1
- package/dist/CustomFilterChips.cjs.js.map +1 -1
- package/dist/CustomFilterChips.es.js +2 -1
- package/dist/CustomFilterChips.es.js.map +1 -1
- package/dist/FileUploadingState.cjs.js.map +1 -1
- package/dist/FileUploadingState.es.js +16 -10
- package/dist/FileUploadingState.es.js.map +1 -1
- package/dist/IntegrationCard.cjs.js.map +1 -1
- package/dist/IntegrationCard.es.js +3 -3
- package/dist/IntegrationCard.es.js.map +1 -1
- package/dist/SectionLabel.cjs.js.map +1 -1
- package/dist/SectionLabel.es.js.map +1 -1
- package/dist/SmallButton.cjs.js.map +1 -1
- package/dist/SmallButton.es.js +16 -16
- package/dist/SmallButton.es.js.map +1 -1
- package/dist/SummarySection.cjs.js.map +1 -1
- package/dist/SummarySection.es.js +11 -9
- package/dist/SummarySection.es.js.map +1 -1
- package/dist/TextInput.cjs.js.map +1 -1
- package/dist/TextInput.es.js.map +1 -1
- package/dist/Timeline.cjs.js.map +1 -1
- package/dist/Timeline.es.js +14 -8
- package/dist/Timeline.es.js.map +1 -1
- package/dist/Tooltip.cjs.js +1 -1
- package/dist/Tooltip.cjs.js.map +1 -1
- package/dist/Tooltip.es.js +31 -20
- package/dist/Tooltip.es.js.map +1 -1
- package/dist/TourGuideTooltip.cjs.js.map +1 -1
- package/dist/TourGuideTooltip.es.js +2 -1
- package/dist/TourGuideTooltip.es.js.map +1 -1
- package/dist/UpdatedInteractionRecording.cjs.js +1 -1
- package/dist/UpdatedInteractionRecording.cjs.js.map +1 -1
- package/dist/UpdatedInteractionRecording.es.js +79 -97
- package/dist/UpdatedInteractionRecording.es.js.map +1 -1
- package/dist/UploadInteraction.cjs.js.map +1 -1
- package/dist/UploadInteraction.es.js.map +1 -1
- package/dist/colors.cjs.js +2 -0
- package/dist/colors.cjs.js.map +1 -0
- package/dist/colors.es.js +2 -0
- package/dist/colors.es.js.map +1 -0
- package/dist/components/UpdatedInteractionDetails.cjs.js +10 -1
- package/dist/components/UpdatedInteractionDetails.cjs.js.map +1 -1
- package/dist/components/UpdatedInteractionDetails.es.js +1531 -9
- package/dist/components/UpdatedInteractionDetails.es.js.map +1 -1
- package/dist/components/chat.cjs.js +30 -1
- package/dist/components/chat.cjs.js.map +1 -1
- package/dist/components/chat.es.js +2222 -7
- package/dist/components/chat.es.js.map +1 -1
- package/dist/components/common.cjs.js +1 -1
- package/dist/components/common.es.js +32 -25
- package/dist/components/common.es.js.map +1 -1
- package/dist/components/data.cjs.js +1 -1
- package/dist/components/data.cjs.js.map +1 -1
- package/dist/components/data.es.js +1033 -4
- package/dist/components/data.es.js.map +1 -1
- package/dist/components/layout.cjs.js +3 -1
- package/dist/components/layout.cjs.js.map +1 -1
- package/dist/components/layout.es.js +1533 -8
- package/dist/components/layout.es.js.map +1 -1
- package/dist/components/login.cjs.js +1 -1
- package/dist/components/login.es.js +6 -2
- package/dist/components/login.es.js.map +1 -1
- package/dist/components/media.cjs.js +1 -1
- package/dist/components/media.cjs.js.map +1 -1
- package/dist/components/media.es.js +220 -6
- package/dist/components/media.es.js.map +1 -1
- package/dist/components/models.cjs.js +1 -1
- package/dist/components/models.cjs.js.map +1 -1
- package/dist/components/models.es.js +91 -2
- package/dist/components/models.es.js.map +1 -1
- package/dist/components/navigation.cjs.js +1 -1
- package/dist/components/navigation.cjs.js.map +1 -1
- package/dist/components/navigation.es.js +766 -7
- package/dist/components/navigation.es.js.map +1 -1
- package/dist/components/notifications.cjs.js +1 -1
- package/dist/components/notifications.cjs.js.map +1 -1
- package/dist/components/notifications.es.js +368 -3
- package/dist/components/notifications.es.js.map +1 -1
- package/dist/components/onboarding.cjs.js +1 -1
- package/dist/components/onboarding.cjs.js.map +1 -1
- package/dist/components/onboarding.es.js +985 -7
- package/dist/components/onboarding.es.js.map +1 -1
- package/dist/components/primitives.cjs.js +1 -1
- package/dist/components/primitives.cjs.js.map +1 -1
- package/dist/components/primitives.es.js +635 -25
- package/dist/components/primitives.es.js.map +1 -1
- package/dist/debugger-wc.cjs.js +4 -4
- package/dist/debugger-wc.cjs.js.map +1 -1
- package/dist/debugger-wc.es.js +15 -11
- package/dist/debugger-wc.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs2.js +2 -49
- package/dist/index.cjs2.js.map +1 -1
- package/dist/index.cjs3.js +50 -0
- package/dist/index.cjs3.js.map +1 -0
- package/dist/index.es.js +104 -99
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +2632 -1776
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es3.js +1944 -0
- package/dist/index.es3.js.map +1 -0
- package/dist/pages/interactionDetails.cjs.js +1 -1
- package/dist/pages/interactionDetails.cjs.js.map +1 -1
- package/dist/pages/interactionDetails.es.js +70 -47
- package/dist/pages/interactionDetails.es.js.map +1 -1
- package/dist/sortable.esm.cjs.js +1 -1
- package/dist/sortable.esm.cjs.js.map +1 -1
- package/dist/sortable.esm.es.js +55 -53
- package/dist/sortable.esm.es.js.map +1 -1
- package/dist/{chordia-ui.css → style.css} +1 -1
- package/package.json +1 -1
- package/src/components/UpdatedInteractionDetails/UpdatedInteractionDetails.jsx +318 -77
- package/src/components/UpdatedInteractionDetails/UpdatedInteractionRecording.jsx +7 -17
- package/dist/ChartRenderer.cjs.js +0 -31
- package/dist/ChartRenderer.cjs.js.map +0 -1
- package/dist/ChartRenderer.es.js +0 -2210
- package/dist/ChartRenderer.es.js.map +0 -1
- package/dist/GettingStarted.cjs.js +0 -2
- package/dist/GettingStarted.cjs.js.map +0 -1
- package/dist/GettingStarted.es.js +0 -983
- package/dist/GettingStarted.es.js.map +0 -1
- package/dist/InlineConfirm.cjs.js +0 -2
- package/dist/InlineConfirm.cjs.js.map +0 -1
- package/dist/InlineConfirm.es.js +0 -618
- package/dist/InlineConfirm.es.js.map +0 -1
- package/dist/InteractionSummaryCard.cjs.js +0 -2
- package/dist/InteractionSummaryCard.cjs.js.map +0 -1
- package/dist/InteractionSummaryCard.es.js +0 -216
- package/dist/InteractionSummaryCard.es.js.map +0 -1
- package/dist/LoginPage.cjs.js +0 -3
- package/dist/LoginPage.cjs.js.map +0 -1
- package/dist/LoginPage.es.js +0 -2618
- package/dist/LoginPage.es.js.map +0 -1
- package/dist/NavigationBar.cjs.js +0 -2
- package/dist/NavigationBar.cjs.js.map +0 -1
- package/dist/NavigationBar.es.js +0 -762
- package/dist/NavigationBar.es.js.map +0 -1
- package/dist/NotificationPanel.cjs.js +0 -2
- package/dist/NotificationPanel.cjs.js.map +0 -1
- package/dist/NotificationPanel.es.js +0 -371
- package/dist/NotificationPanel.es.js.map +0 -1
- package/dist/OverlayPanel.cjs.js +0 -2
- package/dist/OverlayPanel.cjs.js.map +0 -1
- package/dist/OverlayPanel.es.js +0 -93
- package/dist/OverlayPanel.es.js.map +0 -1
- package/dist/SplitPane.cjs.js +0 -4
- package/dist/SplitPane.cjs.js.map +0 -1
- package/dist/SplitPane.es.js +0 -1531
- package/dist/SplitPane.es.js.map +0 -1
- package/dist/SummaryStatsPanel.cjs.js +0 -2
- package/dist/SummaryStatsPanel.cjs.js.map +0 -1
- package/dist/SummaryStatsPanel.es.js +0 -1027
- package/dist/SummaryStatsPanel.es.js.map +0 -1
- package/dist/UpdatedInteractionDetails.cjs.js +0 -11
- package/dist/UpdatedInteractionDetails.cjs.js.map +0 -1
- package/dist/UpdatedInteractionDetails.es.js +0 -1310
- package/dist/UpdatedInteractionDetails.es.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SummarySection.cjs.js","sources":["../src/components/common/ObservationCard.jsx","../src/components/common/SmallObservationCard.jsx","../src/components/common/ScoreDriverCard.jsx","../src/components/common/ScoreDriverCardVariant.jsx","../src/components/common/SignalCard.jsx","../src/components/common/ConditionCard.jsx","../src/components/common/ModelScoreCard.jsx","../src/components/common/SummarySection.jsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * ObservationCard Component\n * Displays an observation card with expandable details, required conditions, tags, and implementation.\n * \n * @param {Object} data - The observation data object\n * @param {string} data.category - Category label\n * @param {string} data.title - Main title\n * @param {string} data.key - Technical key\n * @param {Object} data.metadata - Metadata object with valueType, allowed, version\n * @param {string} data.description - Description text\n * @param {Array} data.requiredConditions - Array of required condition objects\n * @param {Array} data.tags - Array of tag strings\n * @param {string} data.implementation - Implementation details\n * @param {string} data.railColor - Color for the left rail\n * @param {number} data.deviation - Deviation level (1-5)\n * @param {string} data.deviationDirection - Deviation direction ('up' or 'down')\n */\nexport default function ObservationCard({ data }) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n return (\n <div\n className=\"flex rounded-2xl overflow-hidden bg-white/85 shadow-lg border border-slate-200/50\"\n style={{ maxWidth: \"900px\" }}\n >\n {/* Left color rail */}\n <div\n className=\"w-1.5 flex-shrink-0\"\n style={{ backgroundColor: data.railColor }}\n />\n\n {/* Main content */}\n <div className=\"flex-1\">\n {/* Summary (always visible) */}\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"w-full text-left px-6 py-4 hover:bg-white/40 transition-colors\"\n >\n {/* Category label */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n {data.category}\n </div>\n\n {/* Title and Deviation */}\n <div className=\"flex items-start justify-between gap-4 mb-3\">\n <h2\n className=\"flex-1\"\n style={{\n fontSize: \"18px\",\n fontWeight: 720,\n letterSpacing: \"-0.01em\",\n lineHeight: 1.25,\n color: \"rgba(30, 33, 37, 0.92)\",\n }}\n >\n {data.title}\n </h2>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n gap: \"8px\",\n }}\n >\n {data.deviation && (\n <DeviationIndicator\n level={data.deviation}\n color={data.railColor}\n direction={data.deviationDirection}\n />\n )}\n <ChevronDown\n size={18}\n style={{\n color: \"rgba(30, 33, 37, 0.42)\",\n flexShrink: 0,\n transform: isExpanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s ease\",\n }}\n />\n </div>\n </div>\n\n {/* Key */}\n <div\n className=\"text-[11.5px] font-mono\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n {data.key}\n </div>\n\n {/* Metadata */}\n <div\n className=\"mt-1 text-[11.5px]\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n value_type <strong>{data.metadata.valueType}</strong>\n {\" · \"} allowed{\" \"}\n {data.metadata.allowed.map((val, i) => (\n <span key={val}>\n <strong>{val}</strong>\n {i < data.metadata.allowed.length - 1 && \", \"}\n </span>\n ))}\n {\" · \"} version <strong>{data.metadata.version}</strong>\n </div>\n\n {/* Description */}\n <p\n className=\"mt-3 text-[13px] leading-relaxed\"\n style={{ color: \"rgba(30, 33, 37, 0.68)\" }}\n >\n {data.description}\n </p>\n\n {/* Expand hint */}\n <p\n className=\"mt-3 text-xs\"\n style={{ color: \"rgba(30, 33, 37, 0.56)\" }}\n >\n {isExpanded\n ? \"Collapse to hide details\"\n : \"Expand to view required conditions and implementation details.\"}\n </p>\n </button>\n\n {/* Expanded content */}\n {isExpanded && (\n <div className=\"border-t border-slate-200/40 bg-white/60 px-6 py-4\">\n {/* Required conditions */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-3\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Required conditions\n </div>\n <div className=\"flex flex-col gap-3 mb-5\">\n {data.requiredConditions.map((condition) => (\n <div\n key={condition.technicalName}\n className=\"flex rounded-xl overflow-hidden bg-white/82 border border-slate-200/50\"\n >\n <div\n className=\"w-1.5 flex-shrink-0\"\n style={{ backgroundColor: condition.railColor }}\n />\n <div className=\"flex-1 px-4 py-3\">\n <div\n className=\"text-[13px]\"\n style={{\n fontWeight: 680,\n lineHeight: 1.2,\n color: \"rgba(30, 33, 37, 0.92)\",\n }}\n >\n {condition.title}\n </div>\n <div\n className=\"mt-1 text-[11.5px] font-mono\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n {condition.technicalName}\n </div>\n <div\n className=\"mt-1 text-[11.5px]\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n role <strong>{condition.role}</strong>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Tags */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Tags\n </div>\n <div className=\"flex flex-wrap gap-2 mb-5\">\n {data.tags.map((tag) => (\n <span\n key={tag}\n className=\"text-[11px] px-2 py-0.5 rounded-full border font-mono\"\n style={{\n borderColor: \"rgba(30, 33, 37, 0.50)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n }}\n >\n {tag}\n </span>\n ))}\n </div>\n\n {/* Implementation */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Implementation\n </div>\n <div\n className=\"text-[12.5px] leading-relaxed font-mono\"\n style={{ color: \"rgba(30, 33, 37, 0.62)\" }}\n >\n {data.implementation}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { Tooltip, TooltipTrigger, TooltipContent } from \"../primitives/Tooltip\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * SmallObservationCard Component\n * Displays a compact observation card with expandable nested observations.\n * Shows category, statement, technical key, metrics (value, confidence, relevance),\n * timestamps, and deviation indicator.\n */\nexport default function SmallObservationCard({\n category,\n statement,\n technicalKey,\n value,\n confidence,\n relevance,\n timestamps = [],\n railColor,\n expanded = false,\n nestedObservations = [],\n onPlayTimestamp,\n onToggle,\n selected = false,\n onClick,\n deviation,\n deviationDirection,\n}) {\n const [isHovered, setIsHovered] = useState(false);\n\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n border: `1px solid ${\n selected\n ? \"rgba(94, 136, 176, 0.35)\"\n : isHovered\n ? \"rgba(52, 58, 64, 0.18)\"\n : \"rgba(52, 58, 64, 0.12)\"\n }`,\n borderRadius: \"16px\",\n overflow: \"hidden\",\n background: selected\n ? \"rgba(231, 212, 162, 0.18)\"\n : isHovered\n ? \"rgba(231, 212, 162, 0.12)\"\n : \"rgba(255, 255, 255, 0.85)\",\n boxShadow: selected\n ? \"0 12px 32px rgba(30, 33, 37, 0.20), 0 4px 12px rgba(94, 136, 176, 0.15)\"\n : isHovered\n ? \"0 8px 18px rgba(30, 33, 37, 0.12)\"\n : \"0 6px 14px rgba(30, 33, 37, 0.08)\",\n transform: selected ? \"translateY(-3px)\" : \"none\",\n transition: \"all 0.2s ease-out\",\n cursor: onClick || onToggle ? \"pointer\" : \"default\",\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={onClick || onToggle}\n >\n {/* Left color rail */}\n <div style={{ width: \"5px\", background: railColor }}></div>\n\n {/* Content area */}\n <div style={{ flex: 1 }}>\n {/* Header (always visible) */}\n <div style={{ padding: \"14px 16px 12px\" }}>\n <div style={{ display: \"flex\", gap: \"12px\" }}>\n {/* Left side: Main content */}\n <div style={{ flex: 1, minWidth: 0 }}>\n {/* Category label */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n {category}\n </div>\n\n {/* Statement */}\n <div\n style={{\n fontSize: \"16px\",\n fontWeight: 720,\n letterSpacing: \"-0.01em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.3,\n }}\n >\n {statement}\n </div>\n\n {/* Technical key */}\n <div\n style={{\n marginTop: \"6px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontFamily: \"ui-monospace, monospace\",\n }}\n >\n {technicalKey}\n </div>\n\n {/* Metrics */}\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <span style={{ color: \"rgba(94, 136, 176, 0.65)\" }}>value</span>{\" \"}\n <strong style={{ color: \"rgba(94, 136, 176, 0.85)\" }}>{value}</strong>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(184, 156, 106, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(184, 156, 106, 0.35)\",\n }}\n >\n conf\n </span>\n </TooltipTrigger>\n <TooltipContent>\n <div>\n <div style={{ fontWeight: 600, marginBottom: \"4px\" }}>\n Confidence measures evidence.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\" }}>\n How strongly the evidence supports this observation in this\n session.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>{\" \"}\n <strong style={{ color: `rgba(184, 156, 106, ${confidence})` }}>\n {confidence.toFixed(2)}\n </strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${confidence * 100}%`,\n background: `rgba(184, 156, 106, ${confidence})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n {relevance && (\n <>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <span style={{ color: \"rgba(139, 123, 168, 0.65)\" }}>rel</span>{\" \"}\n <strong style={{ color: \"rgba(139, 123, 168, 0.85)\" }}>\n {relevance}\n </strong>\n </span>\n </>\n )}\n </div>\n\n {/* Timestamp pills */}\n {timestamps.length > 0 && (\n <div\n style={{\n marginTop: \"4px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"6px\",\n alignItems: \"center\",\n }}\n >\n <span style={{ fontSize: \"11px\", color: \"rgba(30, 33, 37, 0.52)\" }}>\n @\n </span>\n {timestamps.map((ts, i) => (\n <button\n key={i}\n onClick={(e) => {\n e.stopPropagation();\n if (onPlayTimestamp) {\n onPlayTimestamp(ts.start, ts.end);\n }\n }}\n style={{\n fontSize: \"11px\",\n padding: \"2px 6px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(52, 58, 64, 0.16)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n fontFamily: \"ui-monospace, monospace\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"4px\",\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.95)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.24)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.70)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.16)\";\n }}\n >\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M3 2.5L9 6L3 9.5V2.5Z\" fill=\"currentColor\" />\n </svg>\n {ts.start}–{ts.end}\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Right side: Deviation indicator only */}\n {deviation && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n flexShrink: 0,\n }}\n >\n <DeviationIndicator\n level={deviation}\n color={railColor}\n direction={deviationDirection}\n />\n </div>\n )}\n </div>\n\n {/* Chevron at bottom right */}\n {nestedObservations.length > 0 && (onToggle || onClick) && (\n <div\n style={{\n marginTop: \"8px\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n paddingTop: \"8px\",\n borderTop: \"1px solid rgba(52, 58, 64, 0.08)\",\n }}\n >\n <div\n style={{\n color: \"rgba(30, 33, 37, 0.42)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n }}\n >\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: \"rgba(30, 33, 37, 0.52)\",\n }}\n >\n {expanded ? \"Hide\" : \"Show\"} nested observations\n </span>\n <ChevronDown\n size={18}\n style={{\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s ease\",\n }}\n />\n </div>\n </div>\n )}\n </div>\n\n {/* Supporting conditions (expanded state) */}\n {expanded && nestedObservations.length > 0 && (\n <div\n style={{\n borderTop: \"1px solid rgba(52, 58, 64, 0.10)\",\n background: \"rgba(255, 255, 255, 0.60)\",\n padding: \"14px 16px 16px\",\n }}\n >\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-3\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Supporting conditions\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {nestedObservations.map((condition, i) => {\n // Ensure all required props are present\n if (!condition || !condition.category || !condition.statement || !condition.technicalKey) {\n return null;\n }\n return (\n <SmallObservationCard\n key={i}\n category={condition.category || \"Condition\"}\n statement={condition.statement || \"\"}\n technicalKey={condition.technicalKey || \"\"}\n value={condition.value || \"present\"}\n confidence={condition.confidence || 0.8}\n relevance={condition.relevance}\n timestamps={condition.timestamps || []}\n railColor={condition.railColor || \"#6B7C93\"}\n deviation={condition.deviation}\n deviationDirection={condition.deviationDirection}\n onPlayTimestamp={onPlayTimestamp}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\nimport { Tooltip, TooltipTrigger, TooltipContent } from \"../primitives/Tooltip\";\n\n/**\n * ScoreDriverCard Component\n * Displays a score driver condition with state, confidence, probability, weight, and timestamps.\n * \n * @param {Object} props - Component props\n * @param {Object} props.driver - Score driver object\n * @param {string} props.driver.title - Condition title\n * @param {string} props.driver.technicalName - Technical/internal key\n * @param {string} props.driver.state - State: 'present', 'absent', or 'unknown'\n * @param {number} props.driver.confidence - Confidence level (0-1)\n * @param {number} props.driver.probability - Probability level (0-1)\n * @param {number} props.driver.weight - Weight contribution (+ or -)\n * @param {string} props.driver.railColor - Color for the left rail\n * @param {Array} props.driver.timestamps - Array of timestamp objects with start and end\n * @param {number} props.driver.deviation - Deviation level (1-5)\n * @param {string} props.driver.deviationDirection - Deviation direction ('up' or 'down')\n * @param {Function} props.onPlayTimestamp - Callback when play button is clicked\n * @param {boolean} props.selected - Whether the card is selected\n * @param {Function} props.onClick - Click handler for the card\n * @param {boolean} props.showWeight - Whether to show the weight\n * @param {boolean} props.hideMetrics - Whether to hide the metrics section\n */\nexport default function ScoreDriverCard({\n driver,\n onPlayTimestamp,\n selected = false,\n onClick,\n showWeight = false,\n hideMetrics = false,\n}) {\n const [isHovered, setIsHovered] = useState(false);\n const isAbsent = driver.state === \"absent\";\n const hasTimestamps = driver.timestamps && driver.timestamps.length > 0;\n\n const getCardBackground = () => {\n if (isAbsent) {\n return isHovered\n ? \"linear-gradient(135deg, rgba(30, 33, 37, 0.06) 0%, rgba(30, 33, 37, 0.06) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\"\n : \"linear-gradient(135deg, rgba(30, 33, 37, 0.04) 0%, rgba(30, 33, 37, 0.04) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\";\n }\n if (selected) {\n return \"rgba(231, 212, 162, 0.18)\";\n }\n if (isHovered) {\n return \"rgba(231, 212, 162, 0.12)\";\n }\n return \"rgba(255, 255, 255, 0.82)\";\n };\n\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n border: `1px solid ${\n selected\n ? \"rgba(94, 136, 176, 0.35)\"\n : isHovered\n ? \"rgba(52, 58, 64, 0.18)\"\n : \"rgba(52, 58, 64, 0.12)\"\n }`,\n borderRadius: \"12px\",\n overflow: \"hidden\",\n background: getCardBackground(),\n boxShadow: selected\n ? \"0 8px 24px rgba(30, 33, 37, 0.18), 0 2px 8px rgba(94, 136, 176, 0.12)\"\n : \"0 2px 4px rgba(30, 33, 37, 0.06)\",\n transform: selected ? \"translateY(-2px)\" : \"none\",\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.2s ease-out\",\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={onClick}\n >\n {/* Left rail = cluster color */}\n <div style={{ width: \"5px\", background: driver.railColor }}></div>\n\n <div style={{ flex: 1, padding: \"10px 12px\" }}>\n {/* Title and Deviation */}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: \"8px\",\n marginBottom: driver.deviation ? \"4px\" : \"0\",\n }}\n >\n <div\n style={{\n flex: 1,\n fontSize: \"13px\",\n fontWeight: 680,\n color: isAbsent\n ? \"rgba(30, 33, 37, 0.70)\"\n : \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.2,\n textDecoration: isAbsent ? \"line-through\" : \"none\",\n textDecorationThickness: isAbsent ? \"2px\" : undefined,\n }}\n >\n {driver.title}\n </div>\n {driver.deviation && (\n <DeviationIndicator\n level={driver.deviation}\n color={driver.railColor}\n direction={driver.deviationDirection}\n />\n )}\n </div>\n\n {/* Technical name */}\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontFamily: \"ui-monospace, monospace\",\n }}\n >\n {driver.technicalName}\n </div>\n\n {/* Metrics */}\n {!hideMetrics && (\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(94, 136, 176, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(94, 136, 176, 0.35)\",\n }}\n >\n state\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"max-w-[320px]\">\n <div style={{ fontSize: \"11px\", lineHeight: 1.5 }}>\n <div\n style={{\n fontWeight: 600,\n marginBottom: \"6px\",\n }}\n >\n Condition states describe what the evidence supports.\n </div>\n <div\n style={{\n marginBottom: \"8px\",\n color: \"rgba(255, 255, 255, 0.85)\",\n }}\n >\n <strong>Present</strong> — Clear evidence shows this condition\n occurred in the session.\n </div>\n <div\n style={{\n marginBottom: \"8px\",\n color: \"rgba(255, 255, 255, 0.85)\",\n }}\n >\n <strong>Absent</strong> — Evidence indicates this condition did\n not occur.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\" }}>\n <strong>Unknown</strong> — There {'isn\\'t'} enough evidence to decide\n either way.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n {\" \"}\n <strong\n style={{\n color: `rgba(94, 136, 176, ${\n driver.state === \"present\"\n ? 0.85\n : driver.state === \"absent\"\n ? 0.45\n : 0.65\n })`,\n }}\n >\n {driver.state}\n </strong>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(184, 156, 106, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(184, 156, 106, 0.35)\",\n }}\n >\n conf\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <div style={{ fontSize: \"11px\", lineHeight: 1.5 }}>\n <div\n style={{\n fontWeight: 600,\n marginBottom: \"4px\",\n }}\n >\n Confidence measures evidence.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\" }}>\n How strongly the evidence supports this observation in this\n session.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n {\" \"}\n <strong\n style={{\n color: `rgba(184, 156, 106, ${driver.confidence})`,\n }}\n >\n {driver.confidence.toFixed(2)}\n </strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${driver.confidence * 100}%`,\n background: `rgba(184, 156, 106, ${driver.confidence})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(75, 135, 125, 0.75)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(75, 135, 125, 0.45)\",\n }}\n >\n prob\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <div style={{ fontSize: \"11px\", lineHeight: 1.5 }}>\n <div\n style={{\n fontWeight: 600,\n marginBottom: \"4px\",\n }}\n >\n Probability measures expectation.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\" }}>\n How likely this observation is given past sessions and current\n evidence.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n {\" \"}\n <strong\n style={{\n color: `rgba(75, 135, 125, ${Math.max(driver.probability, 0.75)})`,\n }}\n >\n {driver.probability.toFixed(2)}\n </strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${driver.probability * 100}%`,\n background: `rgba(75, 135, 125, ${Math.max(\n driver.probability,\n 0.75\n )})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n {showWeight && <span>·</span>}\n {showWeight && (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <span style={{ color: \"rgba(107, 123, 147, 0.65)\" }}>weight</span>{\" \"}\n <strong style={{ color: \"rgba(107, 123, 147, 0.85)\" }}>\n {driver.weight > 0 ? \"+\" : \"\"}\n {driver.weight}\n </strong>\n </span>\n )}\n </div>\n )}\n\n {/* Timestamps or fallback */}\n {hasTimestamps ? (\n <div\n style={{\n marginTop: \"4px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"6px\",\n alignItems: \"center\",\n }}\n >\n <span\n style={{ fontSize: \"11px\", color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n @\n </span>\n {driver.timestamps.map((ts, i) => (\n <button\n key={i}\n type=\"button\"\n aria-label={`Play ${ts.start}–${ts.end}`}\n onClick={(e) => {\n e.stopPropagation();\n if (onPlayTimestamp) {\n onPlayTimestamp(ts.start, ts.end);\n }\n }}\n style={{\n fontSize: \"11px\",\n padding: \"2px 6px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(52, 58, 64, 0.16)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n fontFamily: \"ui-monospace, monospace\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"4px\",\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.95)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.24)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.70)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.16)\";\n }}\n >\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3 2.5L9 6L3 9.5V2.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n {ts.start}–{ts.end}\n </button>\n ))}\n </div>\n ) : (\n <div\n style={{\n marginTop: \"4px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n }}\n >\n @ <strong>timestamps checked</strong>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Play } from \"lucide-react\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * ScoreDriverCardVariant Component\n * Demonstrates different visual variants for displaying absent states in score driver cards.\n */\nexport default function ScoreDriverCardVariant({\n driver,\n variant,\n onPlayTimestamp,\n}) {\n const [isHovered, setIsHovered] = useState(false);\n const isAbsent = driver.state === \"absent\";\n const hasTimestamps = driver.timestamps && driver.timestamps.length > 0;\n\n // Helper to desaturate a color\n const desaturateColor = (hex) => {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n const gray = Math.round(r * 0.299 + g * 0.587 + b * 0.114);\n const newR = Math.round(gray * 0.7 + r * 0.3);\n const newG = Math.round(gray * 0.7 + g * 0.3);\n const newB = Math.round(gray * 0.7 + b * 0.3);\n return `#${newR.toString(16).padStart(2, \"0\")}${newG\n .toString(16)\n .padStart(2, \"0\")}${newB.toString(16).padStart(2, \"0\")}`;\n };\n\n const getTitleStyle = () => {\n if (!isAbsent) return {};\n\n switch (variant) {\n case \"strikethrough\":\n return {\n textDecoration: \"line-through\",\n textDecorationThickness: \"2px\",\n color: \"rgba(30, 33, 37, 0.70)\",\n };\n case \"opacity\":\n return {\n opacity: 0.45,\n };\n case \"badge\":\n case \"background\":\n case \"desaturated-rail\":\n return {};\n default:\n return {};\n }\n };\n\n const getCardStyle = () => {\n if (isAbsent && variant === \"background\") {\n return {\n background: isHovered\n ? \"rgba(30, 33, 37, 0.06)\"\n : \"rgba(30, 33, 37, 0.03)\",\n };\n }\n if (isAbsent && variant === \"angled-background-tl\") {\n return {\n background: isHovered\n ? \"linear-gradient(135deg, rgba(30, 33, 37, 0.06) 0%, rgba(30, 33, 37, 0.06) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\"\n : \"linear-gradient(135deg, rgba(30, 33, 37, 0.04) 0%, rgba(30, 33, 37, 0.04) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\",\n };\n }\n if (isAbsent && variant === \"angled-background-tr\") {\n return {\n background: isHovered\n ? \"linear-gradient(225deg, rgba(30, 33, 37, 0.06) 0%, rgba(30, 33, 37, 0.06) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\"\n : \"linear-gradient(225deg, rgba(30, 33, 37, 0.04) 0%, rgba(30, 33, 37, 0.04) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\",\n };\n }\n return {\n background: isHovered\n ? \"rgba(231, 212, 162, 0.12)\"\n : \"rgba(255, 255, 255, 0.82)\",\n };\n };\n\n const getRailColor = () => {\n if (isAbsent && variant === \"desaturated-rail\") {\n return desaturateColor(driver.railColor);\n }\n return driver.railColor;\n };\n\n const getRailOpacity = () => {\n if (isAbsent && variant === \"desaturated-rail\") {\n return 0.4;\n }\n return 1;\n };\n\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n border: `1px solid ${\n isHovered ? \"rgba(52, 58, 64, 0.18)\" : \"rgba(52, 58, 64, 0.12)\"\n }`,\n borderRadius: \"12px\",\n overflow: \"hidden\",\n ...getCardStyle(),\n boxShadow: \"0 2px 4px rgba(30, 33, 37, 0.06)\",\n transition: \"all 0.2s ease-out\",\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {/* Left rail = cluster color */}\n <div\n style={{\n width: \"5px\",\n background: getRailColor(),\n opacity: getRailOpacity(),\n }}\n ></div>\n <div style={{ flex: 1, padding: \"10px 12px\" }}>\n {/* Title */}\n <div\n style={{\n fontSize: \"13px\",\n fontWeight: 680,\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.2,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n ...getTitleStyle(),\n }}\n >\n {driver.title}\n {isAbsent && variant === \"badge\" && (\n <span\n style={{\n fontSize: \"9px\",\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n background: \"rgba(30, 33, 37, 0.08)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n fontWeight: 600,\n textDecoration: \"none\",\n }}\n >\n not detected\n </span>\n )}\n </div>\n\n {/* Technical name */}\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontFamily: \"ui-monospace, monospace\",\n ...(isAbsent && variant === \"opacity\" && { opacity: 1 }),\n }}\n >\n {driver.technicalName}\n </div>\n\n {/* Metrics */}\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n ...(isAbsent && variant === \"opacity\" && { opacity: 1 }),\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n state <strong>{driver.state}</strong>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n conf <strong>{driver.confidence.toFixed(2)}</strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${driver.confidence * 100}%`,\n background: \"rgba(30, 33, 37, 0.45)\",\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n prob <strong>{driver.probability.toFixed(2)}</strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${driver.probability * 100}%`,\n background: \"rgba(30, 33, 37, 0.45)\",\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n </div>\n\n {/* Timestamps or fallback */}\n {hasTimestamps ? (\n <div\n style={{\n marginTop: \"4px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"6px\",\n alignItems: \"center\",\n }}\n >\n <span\n style={{ fontSize: \"11px\", color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n @\n </span>\n {driver.timestamps.map((ts, i) => (\n <span\n key={i}\n style={{ display: \"flex\", gap: \"6px\", alignItems: \"center\" }}\n >\n <span\n style={{\n fontSize: \"11px\",\n padding: \"2px 6px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(52, 58, 64, 0.16)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n fontFamily: \"ui-monospace, monospace\",\n }}\n >\n {ts.start}–{ts.end}\n </span>\n <button\n type=\"button\"\n aria-label={`Play ${ts.start}–${ts.end}`}\n onClick={() => onPlayTimestamp?.(ts.start, ts.end)}\n style={{\n width: \"18px\",\n height: \"18px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(52, 58, 64, 0.22)\",\n background: \"rgba(255, 255, 255, 0.80)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: 0,\n cursor: \"pointer\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 1)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background =\n \"rgba(255, 255, 255, 0.80)\";\n }}\n >\n <Play\n size={8}\n style={{\n marginLeft: \"1px\",\n color: \"rgba(30, 33, 37, 0.70)\",\n }}\n fill=\"rgba(30, 33, 37, 0.70)\"\n />\n </button>\n </span>\n ))}\n </div>\n ) : (\n <div\n style={{\n marginTop: \"4px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n ...(isAbsent && variant === \"opacity\" && { opacity: 1 }),\n }}\n >\n @ <strong>timestamps checked</strong>\n </div>\n )}\n\n {/* Deviation Indicator */}\n {driver.deviation && (\n <div\n style={{\n marginTop: \"6px\",\n display: \"flex\",\n ...(isAbsent && variant === \"opacity\" && { opacity: 1 }),\n }}\n >\n <DeviationIndicator\n level={driver.deviation}\n color={driver.railColor}\n direction={driver.deviationDirection}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown, Play, Pause } from \"lucide-react\";\nimport { Tooltip, TooltipTrigger, TooltipContent } from \"../primitives/Tooltip\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * SignalCard Component\n * Displays a signal card with probability, confidence, and contributing observations.\n */\nexport default function SignalCard({\n signal,\n onExpandObservation,\n activeObservationId = null,\n isObservationPlaying = false,\n showObservationPlaybackControls = true,\n useFallbackObservationDuration = true,\n}) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const formatObservationTime = (startMs, endMs) => {\n const start = Number(startMs);\n const end = Number(endMs);\n if (!Number.isFinite(start) || !Number.isFinite(end) || end <= start) return null;\n const format = (ms) => {\n const totalSeconds = Math.floor(ms / 1000);\n const minutes = Math.floor(totalSeconds / 60)\n .toString()\n .padStart(2, \"0\");\n const seconds = (totalSeconds % 60).toString().padStart(2, \"0\");\n return `${minutes}:${seconds}`;\n };\n return `${format(start)}–${format(end)}`;\n };\n\n return (\n <div\n style={{\n position: \"relative\",\n background: \"rgba(255, 255, 255, 0.82)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"12px\",\n overflow: \"hidden\",\n boxShadow: \"0 2px 4px rgba(30, 33, 37, 0.06)\",\n }}\n >\n {/* Left rail - subtle color for signal type */}\n {signal.railColor && (\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"5px\",\n background: signal.railColor,\n opacity: 0.6,\n }}\n />\n )}\n\n {/* Header - Clickable to expand/collapse */}\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n style={{\n width: \"100%\",\n padding: \"14px 16px 14px 21px\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n textAlign: \"left\",\n transition: \"background 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(231, 212, 162, 0.08)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n }}\n >\n {/* Content */}\n <div style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"12px\" }}>\n <div style={{ flex: 1, minWidth: 0 }}>\n {/* Signal name and badge */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n marginBottom: \"6px\",\n flexWrap: \"wrap\",\n }}\n >\n <span\n style={{\n fontSize: \"16px\",\n fontWeight: 700,\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.15,\n }}\n >\n {signal.name}\n </span>\n {signal.state && (\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: \"#1F8F5A\",\n background: \"rgba(31, 143, 90, 0.10)\",\n padding: \"6px 8px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(31,143,90,0.12)\",\n }}\n >\n {String(signal.state).toLowerCase() === \"present\" ? \"present\" : signal.state}\n </span>\n )}\n {signal.isPreview && (\n <span\n style={{\n fontSize: \"9px\",\n fontWeight: 650,\n letterSpacing: \"0.06em\",\n textTransform: \"uppercase\",\n color: \"rgba(184, 156, 106, 0.75)\",\n background: \"rgba(184, 156, 106, 0.12)\",\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n border: \"1px solid rgba(184, 156, 106, 0.2)\",\n }}\n >\n Preview\n </span>\n )}\n </div>\n\n {/* Description */}\n <div\n style={{\n fontSize: \"13px\",\n color: \"rgba(30, 33, 37, 0.66)\",\n lineHeight: 1.4,\n marginBottom: \"8px\",\n }}\n >\n {signal.description}\n </div>\n\n {/* Technical key */}\n <div\n style={{\n fontSize: \"11px\",\n color: \"rgba(30, 33, 37, 0.48)\",\n fontFamily: \"ui-monospace, monospace\",\n marginBottom: \"10px\",\n }}\n >\n {signal.technicalKey}\n </div>\n\n {/* Metrics row */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: \"12px\",\n fontSize: \"11.5px\",\n }}\n >\n {/* Probability */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(139, 157, 127, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(139, 157, 127, 0.35)\",\n }}\n >\n prob\n </span>\n </TooltipTrigger>\n <TooltipContent className=\"w-fit max-w-[34ch] h-auto min-h-0 px-4 py-3 whitespace-normal break-words text-left text-[13px] leading-[1.45]\">\n <div>\n <div style={{ fontWeight: 600, marginBottom: \"4px\", maxWidth: \"34ch\" }}>\n Probability measures expectation.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\", maxWidth: \"34ch\" }}>\n How likely this pattern is, given past sessions and current observations.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n <strong\n style={{\n color: `rgba(139, 157, 127, ${signal.probability})`,\n }}\n >\n {signal.probability.toFixed(2)}\n </strong>\n {signal.probabilityRange && (\n <span\n style={{\n color: \"rgba(30, 33, 37, 0.42)\",\n fontSize: \"10.5px\",\n }}\n >\n ({signal.probabilityRange.min.toFixed(2)}–\n {signal.probabilityRange.max.toFixed(2)})\n </span>\n )}\n <span\n style={{\n display: \"inline-block\",\n width: \"50px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${signal.probability * 100}%`,\n background: `rgba(139, 157, 127, ${signal.probability})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </div>\n\n <span style={{ color: \"rgba(30, 33, 37, 0.24)\" }}>·</span>\n\n {/* Confidence */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(184, 156, 106, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(184, 156, 106, 0.35)\",\n }}\n >\n conf\n </span>\n </TooltipTrigger>\n <TooltipContent className=\"w-fit max-w-[34ch] h-auto min-h-0 px-4 py-3 whitespace-normal break-words text-left text-[12px] leading-[1.45]\">\n <div>\n <div style={{ fontWeight: 600, marginBottom: \"4px\", maxWidth: \"34ch\" }}>\n Confidence measures evidence.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\", maxWidth: \"34ch\" }}>\n How strongly the observations in this session support this signal.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n <strong\n style={{\n color: `rgba(184, 156, 106, ${signal.confidence})`,\n }}\n >\n {signal.confidence.toFixed(2)}\n </strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"50px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${signal.confidence * 100}%`,\n background: `rgba(184, 156, 106, ${signal.confidence})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </div>\n\n <span style={{ color: \"rgba(30, 33, 37, 0.24)\" }}>·</span>\n\n {/* Observation count */}\n <div\n style={{\n color: \"rgba(30, 33, 37, 0.52)\",\n fontSize: \"11px\",\n }}\n >\n {(signal.contributingObservations || []).length} observation\n {(signal.contributingObservations || []).length !== 1 ? \"s\" : \"\"}\n </div>\n </div>\n </div>\n\n {/* Rotating chevron on right */}\n <div\n style={{\n paddingTop: \"2px\",\n color: \"rgba(30, 33, 37, 0.42)\",\n flexShrink: 0,\n transition: \"transform 0.2s ease\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n gap: \"8px\",\n }}\n >\n {signal.deviation && (\n <DeviationIndicator\n level={signal.deviation}\n color={signal.railColor || \"rgba(30, 33, 37, 0.65)\"}\n direction={signal.deviationDirection}\n />\n )}\n <ChevronDown\n size={18}\n style={{\n transform: isExpanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s ease\",\n }}\n />\n </div>\n </div>\n </button>\n\n {/* Expanded view - Contributing observations */}\n {isExpanded && (\n <div\n style={{\n borderTop: \"1px solid rgba(52, 58, 64, 0.08)\",\n background: \"rgba(244, 241, 230, 0.25)\",\n padding: \"16px 16px 16px 21px\",\n }}\n >\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 650,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n color: \"rgba(30, 33, 37, 0.52)\",\n marginBottom: \"12px\",\n }}\n >\n Contributing Observations\n </div>\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n }}\n >\n {(signal.contributingObservations || []).map((obs, idx) => {\n const durationLabel = formatObservationTime(obs?.startMs, obs?.endMs);\n const playbackDurationLabel =\n durationLabel || (useFallbackObservationDuration ? \"00:00–00:04\" : null);\n const canPlayObservation = Boolean(playbackDurationLabel);\n const handleObservationAction = () => onExpandObservation?.(obs.key);\n const isCurrentObservationPlaying =\n Boolean(isObservationPlaying) &&\n Boolean(activeObservationId) &&\n String(activeObservationId) === String(obs?.playbackId || \"\");\n\n return (\n <div\n key={idx}\n role=\"button\"\n tabIndex={0}\n onClick={handleObservationAction}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleObservationAction();\n }\n }}\n style={{\n background: isCurrentObservationPlaying\n ? \"rgba(94, 136, 176, 0.08)\"\n : \"rgba(255, 255, 255, 0.85)\",\n border: isCurrentObservationPlaying\n ? \"1px solid rgba(94, 136, 176, 0.35)\"\n : \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"8px\",\n padding: \"10px 12px\",\n textAlign: \"left\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 1)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.20)\";\n e.currentTarget.style.transform = \"translateX(2px)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.85)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.12)\";\n e.currentTarget.style.transform = \"translateX(0)\";\n }}\n >\n {/* Influence indicator - subtle left accent */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"3px\",\n background:\n obs.influence === \"increases\"\n ? \"rgba(107, 123, 147, 0.35)\"\n : obs.influence === \"decreases\"\n ? \"rgba(30, 33, 37, 0.15)\"\n : \"rgba(30, 33, 37, 0.08)\",\n borderRadius: \"8px 0 0 8px\",\n }}\n />\n\n <div style={{ paddingLeft: \"6px\", marginBottom: \"6px\" }}>\n <div\n style={{\n fontSize: \"12px\",\n color: \"rgba(30, 33, 37, 0.82)\",\n lineHeight: 1.4,\n }}\n >\n {obs.statement}\n </div>\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n fontSize: \"10.5px\",\n paddingLeft: \"6px\",\n }}\n >\n <span\n style={{\n fontFamily: \"ui-monospace, monospace\",\n color: \"rgba(30, 33, 37, 0.42)\",\n }}\n >\n {obs.key}\n </span>\n <span style={{ color: \"rgba(30, 33, 37, 0.24)\" }}>·</span>\n <span style={{ color: \"rgba(184, 156, 106, 0.65)\" }}>\n conf\n </span>\n <strong\n style={{\n color: `rgba(184, 156, 106, ${obs.confidence})`,\n }}\n >\n {obs.confidence.toFixed(2)}\n </strong>\n <span style={{ color: \"rgba(30, 33, 37, 0.24)\" }}>·</span>\n <span\n style={{\n fontSize: \"10px\",\n color:\n obs.influence === \"increases\"\n ? \"rgba(107, 123, 147, 0.75)\"\n : obs.influence === \"decreases\"\n ? \"rgba(30, 33, 37, 0.52)\"\n : \"rgba(30, 33, 37, 0.42)\",\n }}\n >\n {obs.influence === \"increases\"\n ? \"↑ increases signal\"\n : obs.influence === \"decreases\"\n ? \"↓ decreases signal\"\n : \"− neutral\"}\n </span>\n </div>\n\n {showObservationPlaybackControls && canPlayObservation ? (\n <div\n style={{\n marginTop: \"8px\",\n paddingLeft: \"6px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"8px\",\n }}\n >\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n border: isCurrentObservationPlaying\n ? \"1px solid rgba(94, 136, 176, 0.35)\"\n : \"1px solid rgba(148, 163, 184, 0.35)\",\n borderRadius: \"999px\",\n padding: \"2px 9px\",\n fontFamily: \"ui-monospace, monospace\",\n fontSize: \"10px\",\n color: \"rgba(71, 85, 105, 0.9)\",\n background: \"rgba(255,255,255,0.9)\",\n }}\n >\n {playbackDurationLabel}\n </span>\n <button\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n handleObservationAction();\n }}\n aria-label={\n isCurrentObservationPlaying\n ? \"Pause observation segment\"\n : \"Play observation segment\"\n }\n title={\n isCurrentObservationPlaying\n ? \"Pause observation segment\"\n : \"Play observation segment\"\n }\n disabled={!canPlayObservation}\n style={{\n width: \"26px\",\n height: \"26px\",\n borderRadius: \"999px\",\n border: isCurrentObservationPlaying\n ? \"1px solid rgba(94, 136, 176, 0.45)\"\n : \"1px solid rgba(148, 163, 184, 0.35)\",\n background: isCurrentObservationPlaying\n ? \"rgba(94,136,176,0.12)\"\n : \"rgba(255,255,255,0.95)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n color: isCurrentObservationPlaying\n ? \"rgba(94,136,176,0.95)\"\n : \"rgba(30, 33, 37, 0.72)\",\n opacity: canPlayObservation ? 1 : 0.45,\n }}\n >\n {isCurrentObservationPlaying ? <Pause size={12} /> : <Play size={12} />}\n </button>\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n\n {/* Reasoning note */}\n <div\n style={{\n marginTop: \"12px\",\n padding: \"10px 12px\",\n background: \"rgba(255, 255, 255, 0.6)\",\n borderRadius: \"6px\",\n fontSize: \"11px\",\n color: \"rgba(30, 33, 37, 0.65)\",\n lineHeight: 1.5,\n fontStyle: \"italic\",\n }}\n >\n <strong\n style={{ fontStyle: \"normal\", color: \"rgba(30, 33, 37, 0.75)\" }}\n >\n Note:\n </strong>{\" \"}\n This signal summarizes patterns observed in this session. It does not\n replace human judgment or constitute a conclusion.\n </div>\n </div>\n )}\n </div>\n );\n}\n\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Pencil } from \"lucide-react\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * ConditionCard Component\n * Displays a condition card with category, title, metadata, definition, and editable policy section.\n * \n * @param {Object} data - The condition data object\n * @param {string} data.category - Category label\n * @param {string} data.title - Main title\n * @param {string} data.shortName - Short name\n * @param {string} data.technicalName - Technical name\n * @param {Object} data.metadata - Metadata object with type, tier, priority, vertical\n * @param {string} data.definition - Definition text\n * @param {Object} data.policy - Policy object with requiresPolicy and text\n * @param {string} data.railColor - Color for the left rail\n * @param {number} data.deviation - Deviation level (1-5)\n * @param {string} data.deviationDirection - Deviation direction ('up' or 'down')\n */\nexport default function ConditionCard({ data }) {\n const [isEditingPolicy, setIsEditingPolicy] = useState(false);\n const [policyText, setPolicyText] = useState(data.policy.text);\n\n const handleEditPolicy = () => {\n setIsEditingPolicy(true);\n };\n\n const handleSavePolicy = () => {\n setIsEditingPolicy(false);\n // In a real app, this would save to a backend\n console.log(\"Saving policy:\", policyText);\n };\n\n const handleCancelEdit = () => {\n setIsEditingPolicy(false);\n setPolicyText(data.policy.text);\n };\n\n return (\n <div\n className=\"flex rounded-2xl bg-white/85 shadow-lg border border-slate-200/50\"\n style={{ maxWidth: \"900px\", overflow: \"visible\" }}\n >\n {/* Left color rail */}\n <div\n className=\"w-1.5 flex-shrink-0 rounded-l-2xl\"\n style={{ backgroundColor: data.railColor }}\n />\n\n {/* Main content */}\n <div className=\"flex-1 p-6 overflow-visible\">\n {/* Category label */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n {data.category}\n </div>\n\n {/* Title and Deviation */}\n <div className=\"flex items-start justify-between gap-4 mb-1.5 relative\">\n <h2\n className=\"flex-1\"\n style={{\n fontSize: \"18px\",\n fontWeight: 720,\n letterSpacing: \"-0.01em\",\n lineHeight: 1.25,\n color: \"rgba(30, 33, 37, 0.92)\",\n }}\n >\n {data.title}\n </h2>\n {data.deviation && (\n <div className=\"flex-shrink-0\">\n <DeviationIndicator\n level={data.deviation}\n color={data.railColor}\n direction={data.deviationDirection}\n />\n </div>\n )}\n </div>\n\n {/* Short name */}\n <div\n className=\"text-[13px] leading-snug mt-1.5\"\n style={{ color: \"rgba(30, 33, 37, 0.68)\" }}\n >\n Short name: <strong>{data.shortName}</strong>\n </div>\n\n {/* Technical name */}\n <div\n className=\"mt-2 text-[11.5px] font-mono\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n {data.technicalName}\n </div>\n\n {/* Metadata */}\n <div\n className=\"mt-0.5 text-[11.5px]\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n type <strong>{data.metadata.type}</strong> · tier{\" \"}\n <strong>{data.metadata.tier}</strong> · priority{\" \"}\n <strong>{data.metadata.priority}</strong> · vertical{\" \"}\n <strong>{data.metadata.vertical}</strong>\n </div>\n\n {/* Definition section */}\n <div className=\"mt-5\">\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Definition\n </div>\n <p\n className=\"text-[13px] leading-relaxed\"\n style={{ color: \"rgba(30, 33, 37, 0.72)\" }}\n >\n {data.definition}\n </p>\n </div>\n\n {/* Policy section */}\n <div className=\"mt-6 border border-slate-200/50 rounded-xl bg-white/70 p-4\">\n {/* Policy header */}\n <div className=\"flex items-center justify-between gap-3 mb-3\">\n <div className=\"flex items-center gap-2.5\">\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Policy\n </div>\n\n {data.policy.requiresPolicy && (\n <div\n className=\"text-[10px] tracking-[0.12em] uppercase border px-2 py-1 rounded-full\"\n style={{\n color: \"rgba(30, 33, 37, 0.55)\",\n borderColor: \"rgba(30, 33, 37, 0.40)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n }}\n >\n requires_policy\n </div>\n )}\n </div>\n\n {/* Edit button */}\n {!isEditingPolicy && (\n <button\n onClick={handleEditPolicy}\n className=\"inline-flex items-center gap-2 text-xs px-3 py-1.5 rounded-lg border shadow-sm transition-all hover:shadow-md\"\n style={{\n borderColor: \"rgba(30, 33, 37, 0.40)\",\n background: \"rgba(255, 255, 255, 0.92)\",\n color: \"rgba(30, 33, 37, 0.78)\",\n }}\n aria-label=\"Edit policy\"\n >\n <Pencil\n className=\"w-3.5 h-3.5\"\n style={{ color: \"rgba(30, 33, 37, 0.70)\" }}\n />\n Edit policy\n </button>\n )}\n </div>\n\n {/* Policy text or editor */}\n {isEditingPolicy ? (\n <div className=\"space-y-3\">\n <textarea\n value={policyText}\n onChange={(e) => setPolicyText(e.target.value)}\n className=\"w-full text-[12.5px] leading-relaxed border rounded-lg p-3 focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 resize-none\"\n style={{\n color: \"rgba(30, 33, 37, 0.62)\",\n borderColor: \"rgba(30, 33, 37, 0.30)\",\n }}\n rows={6}\n />\n <div className=\"flex gap-2 justify-end\">\n <button\n onClick={handleCancelEdit}\n className=\"px-3 py-1.5 text-xs rounded-lg border transition-colors\"\n style={{\n borderColor: \"rgba(30, 33, 37, 0.30)\",\n background: \"white\",\n color: \"rgba(30, 33, 37, 0.70)\",\n }}\n >\n Cancel\n </button>\n <button\n onClick={handleSavePolicy}\n className=\"px-3 py-1.5 text-xs rounded-lg text-white transition-colors shadow-sm\"\n style={{\n background: \"#2563eb\",\n }}\n >\n Save policy\n </button>\n </div>\n </div>\n ) : (\n <p\n className=\"text-[12.5px] leading-relaxed\"\n style={{ color: \"rgba(30, 33, 37, 0.62)\" }}\n >\n {policyText}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport ScoreDriverCard from \"./ScoreDriverCard\";\n\n/**\n * ModelScoreCard Component\n * Displays a model score with expandable drivers/conditions.\n * \n * @param {Object} props - Component props\n * @param {number} props.score - The score value (0-100)\n * @param {number} props.confidence - Confidence level (0-1)\n * @param {Object} props.range - Range object with min and max\n * @param {string} props.modelKey - Model key identifier\n * @param {string} props.modelVersion - Model version\n * @param {string} props.title - Title for the score\n * @param {boolean} props.expanded - Whether drivers section is expanded\n * @param {Array} props.drivers - Array of score driver objects\n * @param {Function} props.onViewDrivers - Callback when expand/collapse is clicked\n * @param {Function} props.onPlayTimestamp - Callback when play timestamp is clicked\n */\nexport default function ModelScoreCard({\n score,\n confidence,\n range,\n modelKey = \"legacy_overall\",\n modelVersion = \"v2026_01_11_01\",\n title = \"Agent Score\",\n expanded: initialExpanded = false,\n drivers = [],\n onViewDrivers,\n onPlayTimestamp,\n}) {\n const [expanded, setExpanded] = useState(initialExpanded);\n\n const handleToggle = () => {\n const newExpanded = !expanded;\n setExpanded(newExpanded);\n if (onViewDrivers) {\n onViewDrivers();\n }\n };\n\n return (\n <div>\n {/* Section header */}\n <div style={{ marginBottom: \"12px\" }}>\n <div\n className=\"text-[11px] tracking-[0.14em] uppercase mb-2\"\n style={{ color: \"rgba(30, 33, 37, 0.42)\", fontWeight: 650 }}\n >\n MODEL OUTPUT\n </div>\n <div\n style={{\n fontSize: \"16px\",\n fontWeight: 720,\n letterSpacing: \"-0.01em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.2,\n }}\n >\n {title}\n <span\n style={{\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontFamily: \"ui-monospace, monospace\",\n marginLeft: \"10px\",\n }}\n >\n model_key: {modelKey} · {modelVersion}\n </span>\n </div>\n </div>\n\n {/* Model output block */}\n <div\n style={{\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"14px\",\n background: \"rgba(255, 255, 255, 0.82)\",\n overflow: \"hidden\",\n }}\n >\n {/* Clickable header area */}\n <button\n type=\"button\"\n onClick={handleToggle}\n disabled={drivers.length === 0}\n style={{\n width: \"100%\",\n padding: \"16px 18px\",\n background: \"transparent\",\n border: \"none\",\n cursor: drivers.length > 0 ? \"pointer\" : \"default\",\n textAlign: \"left\",\n transition: \"background 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n if (drivers.length > 0) {\n e.currentTarget.style.background = \"rgba(231, 212, 162, 0.08)\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"16px\" }}>\n <div style={{ flex: 1, minWidth: 0 }}>\n {/* Score row */}\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"16px\",\n alignItems: \"baseline\",\n marginBottom: \"12px\",\n }}\n >\n <div\n style={{\n fontSize: \"32px\",\n fontWeight: 760,\n letterSpacing: \"-0.02em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1,\n }}\n >\n {score}\n </div>\n <div\n style={{\n fontSize: \"12px\",\n color: \"rgba(30, 33, 37, 0.62)\",\n lineHeight: 1.4,\n }}\n >\n score (0–100) · confidence <strong>{confidence.toFixed(2)}</strong> ·{\" \"}\n <span\n style={{\n borderBottom: \"1px dashed rgba(231, 212, 162, 0.65)\",\n }}\n >\n model-based estimate\n </span>\n </div>\n </div>\n\n {/* Range + normalization note */}\n <div\n style={{\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n lineHeight: 1.5,\n }}\n >\n range <strong>{range.min}–{range.max}</strong> (illustrative) · normalized for comparability across calls ·{\" \"}\n {expanded\n ? \"based on evidence-weighted condition signals\"\n : \"evidence-weighted condition signals\"}\n </div>\n </div>\n\n {/* Rotating chevron on right */}\n {drivers.length > 0 && (\n <div\n style={{\n paddingTop: \"6px\",\n color: \"rgba(30, 33, 37, 0.42)\",\n flexShrink: 0,\n transition: \"transform 0.2s ease\",\n }}\n >\n <ChevronDown\n size={18}\n style={{\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s ease\",\n }}\n />\n </div>\n )}\n </div>\n </button>\n\n {/* Expanded state: drivers */}\n {expanded && drivers.length > 0 && (\n <div\n style={{\n borderTop: \"1px solid rgba(52, 58, 64, 0.10)\",\n padding: \"16px 18px 18px 18px\",\n }}\n >\n {/* Drivers header */}\n <div\n className=\"text-[10px] tracking-[0.12em] uppercase mb-4\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n SCORE CONDITIONS FOR THIS INTERACTION\n </div>\n\n {/* Drivers list */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"14px\" }}>\n {drivers.map((driver, i) => (\n <ScoreDriverCard\n key={i}\n driver={driver}\n onPlayTimestamp={onPlayTimestamp}\n showWeight={true}\n />\n ))}\n </div>\n\n {/* Note */}\n <div\n style={{\n marginTop: \"16px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n lineHeight: 1.5,\n }}\n >\n Conditions shown are the largest contributors for this model on this interaction. Inspect timestamps to verify supporting evidence.\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * SummarySection component\n * Provides narrative context at the session level.\n * Uses neutral, evidence-aware language with explicit boundaries about what can be known from the transcript.\n */\n\nexport default function SummarySection({ \n title = \"Interaction overview\", \n summary,\n boundaryNote = \"This summary reflects observed conversation content and is bounded by transcript quality and available evidence.\"\n}) {\n return (\n <div className=\"pb-2\">\n {/* Section header */}\n <div className=\"mb-3\">\n <div \n className=\"text-[11px] tracking-[0.14em] uppercase mb-1.5\"\n style={{ color: 'rgba(30, 33, 37, 0.42)', fontWeight: 650 }}\n >\n Summary\n </div>\n <h2 \n className=\"text-[15px] leading-tight\"\n style={{ \n fontWeight: 700, \n letterSpacing: '-0.01em',\n color: 'rgba(30, 33, 37, 0.90)',\n lineHeight: 1.2\n }}\n >\n {title}\n </h2>\n </div>\n\n {/* Summary body */}\n <div \n className=\"text-[13.5px] max-w-[860px]\"\n style={{ \n lineHeight: 1.6,\n color: 'rgba(30, 33, 37, 0.70)'\n }}\n >\n {summary}\n </div>\n\n {/* Boundary / confidence note */}\n {boundaryNote && (\n <div \n className=\"mt-2 text-[11.5px]\"\n style={{ \n color: 'rgba(30, 33, 37, 0.52)',\n lineHeight: 1.5\n }}\n >\n {boundaryNote}\n </div>\n )}\n </div>\n );\n}\n\n"],"names":["ObservationCard","data","isExpanded","setIsExpanded","useState","jsxs","jsx","DeviationIndicator","ChevronDown","val","i","condition","tag","SmallObservationCard","category","statement","technicalKey","value","confidence","relevance","timestamps","railColor","expanded","nestedObservations","onPlayTimestamp","onToggle","selected","onClick","deviation","deviationDirection","isHovered","setIsHovered","Tooltip","TooltipTrigger","TooltipContent","Fragment","ts","e","ScoreDriverCard","driver","showWeight","hideMetrics","isAbsent","hasTimestamps","getCardBackground","ScoreDriverCardVariant","variant","desaturateColor","hex","r","g","b","gray","newR","newG","newB","getTitleStyle","getCardStyle","getRailColor","getRailOpacity","Play","SignalCard","signal","onExpandObservation","activeObservationId","isObservationPlaying","showObservationPlaybackControls","useFallbackObservationDuration","formatObservationTime","startMs","endMs","start","end","format","ms","totalSeconds","minutes","seconds","obs","idx","playbackDurationLabel","canPlayObservation","handleObservationAction","isCurrentObservationPlaying","event","Pause","ConditionCard","isEditingPolicy","setIsEditingPolicy","policyText","setPolicyText","handleEditPolicy","handleSavePolicy","handleCancelEdit","Pencil","ModelScoreCard","score","range","modelKey","modelVersion","title","initialExpanded","drivers","onViewDrivers","setExpanded","handleToggle","SummarySection","summary","boundaryNote"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SummarySection.cjs.js","sources":["../src/components/common/ObservationCard.jsx","../src/components/common/SmallObservationCard.jsx","../src/components/common/ScoreDriverCard.jsx","../src/components/common/ScoreDriverCardVariant.jsx","../src/components/common/SignalCard.jsx","../src/components/common/ConditionCard.jsx","../src/components/common/ModelScoreCard.jsx","../src/components/common/SummarySection.jsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * ObservationCard Component\n * Displays an observation card with expandable details, required conditions, tags, and implementation.\n * \n * @param {Object} data - The observation data object\n * @param {string} data.category - Category label\n * @param {string} data.title - Main title\n * @param {string} data.key - Technical key\n * @param {Object} data.metadata - Metadata object with valueType, allowed, version\n * @param {string} data.description - Description text\n * @param {Array} data.requiredConditions - Array of required condition objects\n * @param {Array} data.tags - Array of tag strings\n * @param {string} data.implementation - Implementation details\n * @param {string} data.railColor - Color for the left rail\n * @param {number} data.deviation - Deviation level (1-5)\n * @param {string} data.deviationDirection - Deviation direction ('up' or 'down')\n */\nexport default function ObservationCard({ data }) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n return (\n <div\n className=\"flex rounded-2xl overflow-hidden bg-white/85 shadow-lg border border-slate-200/50\"\n style={{ maxWidth: \"900px\" }}\n >\n {/* Left color rail */}\n <div\n className=\"w-1.5 flex-shrink-0\"\n style={{ backgroundColor: data.railColor }}\n />\n\n {/* Main content */}\n <div className=\"flex-1\">\n {/* Summary (always visible) */}\n <button\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"w-full text-left px-6 py-4 hover:bg-white/40 transition-colors\"\n >\n {/* Category label */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n {data.category}\n </div>\n\n {/* Title and Deviation */}\n <div className=\"flex items-start justify-between gap-4 mb-3\">\n <h2\n className=\"flex-1\"\n style={{\n fontSize: \"18px\",\n fontWeight: 720,\n letterSpacing: \"-0.01em\",\n lineHeight: 1.25,\n color: \"rgba(30, 33, 37, 0.92)\",\n }}\n >\n {data.title}\n </h2>\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n gap: \"8px\",\n }}\n >\n {data.deviation && (\n <DeviationIndicator\n level={data.deviation}\n color={data.railColor}\n direction={data.deviationDirection}\n />\n )}\n <ChevronDown\n size={18}\n style={{\n color: \"rgba(30, 33, 37, 0.42)\",\n flexShrink: 0,\n transform: isExpanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s ease\",\n }}\n />\n </div>\n </div>\n\n {/* Key */}\n <div\n className=\"text-[11.5px] font-mono\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n {data.key}\n </div>\n\n {/* Metadata */}\n <div\n className=\"mt-1 text-[11.5px]\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n value_type <strong>{data.metadata.valueType}</strong>\n {\" · \"} allowed{\" \"}\n {data.metadata.allowed.map((val, i) => (\n <span key={val}>\n <strong>{val}</strong>\n {i < data.metadata.allowed.length - 1 && \", \"}\n </span>\n ))}\n {\" · \"} version <strong>{data.metadata.version}</strong>\n </div>\n\n {/* Description */}\n <p\n className=\"mt-3 text-[13px] leading-relaxed\"\n style={{ color: \"rgba(30, 33, 37, 0.68)\" }}\n >\n {data.description}\n </p>\n\n {/* Expand hint */}\n <p\n className=\"mt-3 text-xs\"\n style={{ color: \"rgba(30, 33, 37, 0.56)\" }}\n >\n {isExpanded\n ? \"Collapse to hide details\"\n : \"Expand to view required conditions and implementation details.\"}\n </p>\n </button>\n\n {/* Expanded content */}\n {isExpanded && (\n <div className=\"border-t border-slate-200/40 bg-white/60 px-6 py-4\">\n {/* Required conditions */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-3\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Required conditions\n </div>\n <div className=\"flex flex-col gap-3 mb-5\">\n {data.requiredConditions.map((condition) => (\n <div\n key={condition.technicalName}\n className=\"flex rounded-xl overflow-hidden bg-white/82 border border-slate-200/50\"\n >\n <div\n className=\"w-1.5 flex-shrink-0\"\n style={{ backgroundColor: condition.railColor }}\n />\n <div className=\"flex-1 px-4 py-3\">\n <div\n className=\"text-[13px]\"\n style={{\n fontWeight: 680,\n lineHeight: 1.2,\n color: \"rgba(30, 33, 37, 0.92)\",\n }}\n >\n {condition.title}\n </div>\n <div\n className=\"mt-1 text-[11.5px] font-mono\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n {condition.technicalName}\n </div>\n <div\n className=\"mt-1 text-[11.5px]\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n role <strong>{condition.role}</strong>\n </div>\n </div>\n </div>\n ))}\n </div>\n\n {/* Tags */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Tags\n </div>\n <div className=\"flex flex-wrap gap-2 mb-5\">\n {data.tags.map((tag) => (\n <span\n key={tag}\n className=\"text-[11px] px-2 py-0.5 rounded-full border font-mono\"\n style={{\n borderColor: \"rgba(30, 33, 37, 0.50)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n }}\n >\n {tag}\n </span>\n ))}\n </div>\n\n {/* Implementation */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Implementation\n </div>\n <div\n className=\"text-[12.5px] leading-relaxed font-mono\"\n style={{ color: \"rgba(30, 33, 37, 0.62)\" }}\n >\n {data.implementation}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport { Tooltip, TooltipTrigger, TooltipContent } from \"../primitives/Tooltip\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * SmallObservationCard Component\n * Displays a compact observation card with expandable nested observations.\n * Shows category, statement, technical key, metrics (value, confidence, relevance),\n * timestamps, and deviation indicator.\n */\nexport default function SmallObservationCard({\n category,\n statement,\n technicalKey,\n value,\n confidence,\n relevance,\n timestamps = [],\n railColor,\n expanded = false,\n nestedObservations = [],\n onPlayTimestamp,\n onToggle,\n selected = false,\n onClick,\n deviation,\n deviationDirection,\n}) {\n const [isHovered, setIsHovered] = useState(false);\n\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n border: `1px solid ${\n selected\n ? \"rgba(94, 136, 176, 0.35)\"\n : isHovered\n ? \"rgba(52, 58, 64, 0.18)\"\n : \"rgba(52, 58, 64, 0.12)\"\n }`,\n borderRadius: \"16px\",\n overflow: \"hidden\",\n background: selected\n ? \"rgba(231, 212, 162, 0.18)\"\n : isHovered\n ? \"rgba(231, 212, 162, 0.12)\"\n : \"rgba(255, 255, 255, 0.85)\",\n boxShadow: selected\n ? \"0 12px 32px rgba(30, 33, 37, 0.20), 0 4px 12px rgba(94, 136, 176, 0.15)\"\n : isHovered\n ? \"0 8px 18px rgba(30, 33, 37, 0.12)\"\n : \"0 6px 14px rgba(30, 33, 37, 0.08)\",\n transform: selected ? \"translateY(-3px)\" : \"none\",\n transition: \"all 0.2s ease-out\",\n cursor: onClick || onToggle ? \"pointer\" : \"default\",\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={onClick || onToggle}\n >\n {/* Left color rail */}\n <div style={{ width: \"5px\", background: railColor }}></div>\n\n {/* Content area */}\n <div style={{ flex: 1 }}>\n {/* Header (always visible) */}\n <div style={{ padding: \"14px 16px 12px\" }}>\n <div style={{ display: \"flex\", gap: \"12px\" }}>\n {/* Left side: Main content */}\n <div style={{ flex: 1, minWidth: 0 }}>\n {/* Category label */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n {category}\n </div>\n\n {/* Statement */}\n <div\n style={{\n fontSize: \"16px\",\n fontWeight: 720,\n letterSpacing: \"-0.01em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.3,\n }}\n >\n {statement}\n </div>\n\n {/* Technical key */}\n <div\n style={{\n marginTop: \"6px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontFamily: \"ui-monospace, monospace\",\n }}\n >\n {technicalKey}\n </div>\n\n {/* Metrics */}\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <span style={{ color: \"rgba(94, 136, 176, 0.65)\" }}>value</span>{\" \"}\n <strong style={{ color: \"rgba(94, 136, 176, 0.85)\" }}>{value}</strong>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(184, 156, 106, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(184, 156, 106, 0.35)\",\n }}\n >\n conf\n </span>\n </TooltipTrigger>\n <TooltipContent>\n <div>\n <div style={{ fontWeight: 600, marginBottom: \"4px\" }}>\n Confidence measures evidence.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\" }}>\n How strongly the evidence supports this observation in this\n session.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>{\" \"}\n <strong style={{ color: `rgba(184, 156, 106, ${confidence})` }}>\n {confidence.toFixed(2)}\n </strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${confidence * 100}%`,\n background: `rgba(184, 156, 106, ${confidence})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n {relevance && (\n <>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <span style={{ color: \"rgba(139, 123, 168, 0.65)\" }}>rel</span>{\" \"}\n <strong style={{ color: \"rgba(139, 123, 168, 0.85)\" }}>\n {relevance}\n </strong>\n </span>\n </>\n )}\n </div>\n\n {/* Timestamp pills */}\n {timestamps.length > 0 && (\n <div\n style={{\n marginTop: \"4px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"6px\",\n alignItems: \"center\",\n }}\n >\n <span style={{ fontSize: \"11px\", color: \"rgba(30, 33, 37, 0.52)\" }}>\n @\n </span>\n {timestamps.map((ts, i) => (\n <button\n key={i}\n onClick={(e) => {\n e.stopPropagation();\n if (onPlayTimestamp) {\n onPlayTimestamp(ts.start, ts.end);\n }\n }}\n style={{\n fontSize: \"11px\",\n padding: \"2px 6px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(52, 58, 64, 0.16)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n fontFamily: \"ui-monospace, monospace\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"4px\",\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.95)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.24)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.70)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.16)\";\n }}\n >\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M3 2.5L9 6L3 9.5V2.5Z\" fill=\"currentColor\" />\n </svg>\n {ts.start}–{ts.end}\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Right side: Deviation indicator only */}\n {deviation && (\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n flexShrink: 0,\n }}\n >\n <DeviationIndicator\n level={deviation}\n color={railColor}\n direction={deviationDirection}\n />\n </div>\n )}\n </div>\n\n {/* Chevron at bottom right */}\n {nestedObservations.length > 0 && (onToggle || onClick) && (\n <div\n style={{\n marginTop: \"8px\",\n display: \"flex\",\n justifyContent: \"flex-end\",\n paddingTop: \"8px\",\n borderTop: \"1px solid rgba(52, 58, 64, 0.08)\",\n }}\n >\n <div\n style={{\n color: \"rgba(30, 33, 37, 0.42)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n }}\n >\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: \"rgba(30, 33, 37, 0.52)\",\n }}\n >\n {expanded ? \"Hide\" : \"Show\"} nested observations\n </span>\n <ChevronDown\n size={18}\n style={{\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s ease\",\n }}\n />\n </div>\n </div>\n )}\n </div>\n\n {/* Supporting conditions (expanded state) */}\n {expanded && nestedObservations.length > 0 && (\n <div\n style={{\n borderTop: \"1px solid rgba(52, 58, 64, 0.10)\",\n background: \"rgba(255, 255, 255, 0.60)\",\n padding: \"14px 16px 16px\",\n }}\n >\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-3\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Supporting conditions\n </div>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"12px\" }}>\n {nestedObservations.map((condition, i) => {\n // Ensure all required props are present\n if (!condition || !condition.category || !condition.statement || !condition.technicalKey) {\n return null;\n }\n return (\n <SmallObservationCard\n key={i}\n category={condition.category || \"Condition\"}\n statement={condition.statement || \"\"}\n technicalKey={condition.technicalKey || \"\"}\n value={condition.value || \"present\"}\n confidence={condition.confidence || 0.8}\n relevance={condition.relevance}\n timestamps={condition.timestamps || []}\n railColor={condition.railColor || \"#6B7C93\"}\n deviation={condition.deviation}\n deviationDirection={condition.deviationDirection}\n onPlayTimestamp={onPlayTimestamp}\n />\n );\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\nimport { Tooltip, TooltipTrigger, TooltipContent } from \"../primitives/Tooltip\";\n\n/**\n * ScoreDriverCard Component\n * Displays a score driver condition with state, confidence, probability, weight, and timestamps.\n * \n * @param {Object} props - Component props\n * @param {Object} props.driver - Score driver object\n * @param {string} props.driver.title - Condition title\n * @param {string} props.driver.technicalName - Technical/internal key\n * @param {string} props.driver.state - State: 'present', 'absent', or 'unknown'\n * @param {number} props.driver.confidence - Confidence level (0-1)\n * @param {number} props.driver.probability - Probability level (0-1)\n * @param {number} props.driver.weight - Weight contribution (+ or -)\n * @param {string} props.driver.railColor - Color for the left rail\n * @param {Array} props.driver.timestamps - Array of timestamp objects with start and end\n * @param {number} props.driver.deviation - Deviation level (1-5)\n * @param {string} props.driver.deviationDirection - Deviation direction ('up' or 'down')\n * @param {Function} props.onPlayTimestamp - Callback when play button is clicked\n * @param {boolean} props.selected - Whether the card is selected\n * @param {Function} props.onClick - Click handler for the card\n * @param {boolean} props.showWeight - Whether to show the weight\n * @param {boolean} props.hideMetrics - Whether to hide the metrics section\n */\nexport default function ScoreDriverCard({\n driver,\n onPlayTimestamp,\n selected = false,\n onClick,\n showWeight = false,\n hideMetrics = false,\n}) {\n const [isHovered, setIsHovered] = useState(false);\n const isAbsent = driver.state === \"absent\";\n const hasTimestamps = driver.timestamps && driver.timestamps.length > 0;\n\n const getCardBackground = () => {\n if (isAbsent) {\n return isHovered\n ? \"linear-gradient(135deg, rgba(30, 33, 37, 0.06) 0%, rgba(30, 33, 37, 0.06) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\"\n : \"linear-gradient(135deg, rgba(30, 33, 37, 0.04) 0%, rgba(30, 33, 37, 0.04) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\";\n }\n if (selected) {\n return \"rgba(231, 212, 162, 0.18)\";\n }\n if (isHovered) {\n return \"rgba(231, 212, 162, 0.12)\";\n }\n return \"rgba(255, 255, 255, 0.82)\";\n };\n\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n border: `1px solid ${\n selected\n ? \"rgba(94, 136, 176, 0.35)\"\n : isHovered\n ? \"rgba(52, 58, 64, 0.18)\"\n : \"rgba(52, 58, 64, 0.12)\"\n }`,\n borderRadius: \"12px\",\n overflow: \"hidden\",\n background: getCardBackground(),\n boxShadow: selected\n ? \"0 8px 24px rgba(30, 33, 37, 0.18), 0 2px 8px rgba(94, 136, 176, 0.12)\"\n : \"0 2px 4px rgba(30, 33, 37, 0.06)\",\n transform: selected ? \"translateY(-2px)\" : \"none\",\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"all 0.2s ease-out\",\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={onClick}\n >\n {/* Left rail = cluster color */}\n <div style={{ width: \"5px\", background: driver.railColor }}></div>\n\n <div style={{ flex: 1, padding: \"10px 12px\" }}>\n {/* Title and Deviation */}\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"flex-start\",\n gap: \"8px\",\n marginBottom: driver.deviation ? \"4px\" : \"0\",\n }}\n >\n <div\n style={{\n flex: 1,\n fontSize: \"13px\",\n fontWeight: 680,\n color: isAbsent\n ? \"rgba(30, 33, 37, 0.70)\"\n : \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.2,\n textDecoration: isAbsent ? \"line-through\" : \"none\",\n textDecorationThickness: isAbsent ? \"2px\" : undefined,\n }}\n >\n {driver.title}\n </div>\n {driver.deviation && (\n <DeviationIndicator\n level={driver.deviation}\n color={driver.railColor}\n direction={driver.deviationDirection}\n />\n )}\n </div>\n\n {/* Technical name */}\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontFamily: \"ui-monospace, monospace\",\n }}\n >\n {driver.technicalName}\n </div>\n\n {/* Metrics */}\n {!hideMetrics && (\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(94, 136, 176, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(94, 136, 176, 0.35)\",\n }}\n >\n state\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\" className=\"max-w-[320px]\">\n <div style={{ fontSize: \"11px\", lineHeight: 1.5 }}>\n <div\n style={{\n fontWeight: 600,\n marginBottom: \"6px\",\n }}\n >\n Condition states describe what the evidence supports.\n </div>\n <div\n style={{\n marginBottom: \"8px\",\n color: \"rgba(255, 255, 255, 0.85)\",\n }}\n >\n <strong>Present</strong> — Clear evidence shows this condition\n occurred in the session.\n </div>\n <div\n style={{\n marginBottom: \"8px\",\n color: \"rgba(255, 255, 255, 0.85)\",\n }}\n >\n <strong>Absent</strong> — Evidence indicates this condition did\n not occur.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\" }}>\n <strong>Unknown</strong> — There {'isn\\'t'} enough evidence to decide\n either way.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n {\" \"}\n <strong\n style={{\n color: `rgba(94, 136, 176, ${\n driver.state === \"present\"\n ? 0.85\n : driver.state === \"absent\"\n ? 0.45\n : 0.65\n })`,\n }}\n >\n {driver.state}\n </strong>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(184, 156, 106, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(184, 156, 106, 0.35)\",\n }}\n >\n conf\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <div style={{ fontSize: \"11px\", lineHeight: 1.5 }}>\n <div\n style={{\n fontWeight: 600,\n marginBottom: \"4px\",\n }}\n >\n Confidence measures evidence.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\" }}>\n How strongly the evidence supports this observation in this\n session.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n {\" \"}\n <strong\n style={{\n color: `rgba(184, 156, 106, ${driver.confidence})`,\n }}\n >\n {driver.confidence.toFixed(2)}\n </strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${driver.confidence * 100}%`,\n background: `rgba(184, 156, 106, ${driver.confidence})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(75, 135, 125, 0.75)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(75, 135, 125, 0.45)\",\n }}\n >\n prob\n </span>\n </TooltipTrigger>\n <TooltipContent side=\"top\">\n <div style={{ fontSize: \"11px\", lineHeight: 1.5 }}>\n <div\n style={{\n fontWeight: 600,\n marginBottom: \"4px\",\n }}\n >\n Probability measures expectation.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\" }}>\n How likely this observation is given past sessions and current\n evidence.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n {\" \"}\n <strong\n style={{\n color: `rgba(75, 135, 125, ${Math.max(driver.probability, 0.75)})`,\n }}\n >\n {driver.probability.toFixed(2)}\n </strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${driver.probability * 100}%`,\n background: `rgba(75, 135, 125, ${Math.max(\n driver.probability,\n 0.75\n )})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n {showWeight && <span>·</span>}\n {showWeight && (\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n <span style={{ color: \"rgba(107, 123, 147, 0.65)\" }}>weight</span>{\" \"}\n <strong style={{ color: \"rgba(107, 123, 147, 0.85)\" }}>\n {driver.weight > 0 ? \"+\" : \"\"}\n {driver.weight}\n </strong>\n </span>\n )}\n </div>\n )}\n\n {/* Timestamps or fallback */}\n {hasTimestamps ? (\n <div\n style={{\n marginTop: \"4px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"6px\",\n alignItems: \"center\",\n }}\n >\n <span\n style={{ fontSize: \"11px\", color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n @\n </span>\n {driver.timestamps.map((ts, i) => (\n <button\n key={i}\n type=\"button\"\n aria-label={`Play ${ts.start}–${ts.end}`}\n onClick={(e) => {\n e.stopPropagation();\n if (onPlayTimestamp) {\n onPlayTimestamp(ts.start, ts.end);\n }\n }}\n style={{\n fontSize: \"11px\",\n padding: \"2px 6px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(52, 58, 64, 0.16)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n fontFamily: \"ui-monospace, monospace\",\n cursor: \"pointer\",\n display: \"inline-flex\",\n alignItems: \"center\",\n gap: \"4px\",\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.95)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.24)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.70)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.16)\";\n }}\n >\n <svg\n width=\"9\"\n height=\"9\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3 2.5L9 6L3 9.5V2.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n {ts.start}–{ts.end}\n </button>\n ))}\n </div>\n ) : (\n <div\n style={{\n marginTop: \"4px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n }}\n >\n @ <strong>timestamps checked</strong>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Play } from \"lucide-react\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * ScoreDriverCardVariant Component\n * Demonstrates different visual variants for displaying absent states in score driver cards.\n */\nexport default function ScoreDriverCardVariant({\n driver,\n variant,\n onPlayTimestamp,\n}) {\n const [isHovered, setIsHovered] = useState(false);\n const isAbsent = driver.state === \"absent\";\n const hasTimestamps = driver.timestamps && driver.timestamps.length > 0;\n\n // Helper to desaturate a color\n const desaturateColor = (hex) => {\n const r = parseInt(hex.slice(1, 3), 16);\n const g = parseInt(hex.slice(3, 5), 16);\n const b = parseInt(hex.slice(5, 7), 16);\n const gray = Math.round(r * 0.299 + g * 0.587 + b * 0.114);\n const newR = Math.round(gray * 0.7 + r * 0.3);\n const newG = Math.round(gray * 0.7 + g * 0.3);\n const newB = Math.round(gray * 0.7 + b * 0.3);\n return `#${newR.toString(16).padStart(2, \"0\")}${newG\n .toString(16)\n .padStart(2, \"0\")}${newB.toString(16).padStart(2, \"0\")}`;\n };\n\n const getTitleStyle = () => {\n if (!isAbsent) return {};\n\n switch (variant) {\n case \"strikethrough\":\n return {\n textDecoration: \"line-through\",\n textDecorationThickness: \"2px\",\n color: \"rgba(30, 33, 37, 0.70)\",\n };\n case \"opacity\":\n return {\n opacity: 0.45,\n };\n case \"badge\":\n case \"background\":\n case \"desaturated-rail\":\n return {};\n default:\n return {};\n }\n };\n\n const getCardStyle = () => {\n if (isAbsent && variant === \"background\") {\n return {\n background: isHovered\n ? \"rgba(30, 33, 37, 0.06)\"\n : \"rgba(30, 33, 37, 0.03)\",\n };\n }\n if (isAbsent && variant === \"angled-background-tl\") {\n return {\n background: isHovered\n ? \"linear-gradient(135deg, rgba(30, 33, 37, 0.06) 0%, rgba(30, 33, 37, 0.06) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\"\n : \"linear-gradient(135deg, rgba(30, 33, 37, 0.04) 0%, rgba(30, 33, 37, 0.04) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\",\n };\n }\n if (isAbsent && variant === \"angled-background-tr\") {\n return {\n background: isHovered\n ? \"linear-gradient(225deg, rgba(30, 33, 37, 0.06) 0%, rgba(30, 33, 37, 0.06) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\"\n : \"linear-gradient(225deg, rgba(30, 33, 37, 0.04) 0%, rgba(30, 33, 37, 0.04) 35%, rgba(255, 255, 255, 0.82) 35%, rgba(255, 255, 255, 0.82) 100%)\",\n };\n }\n return {\n background: isHovered\n ? \"rgba(231, 212, 162, 0.12)\"\n : \"rgba(255, 255, 255, 0.82)\",\n };\n };\n\n const getRailColor = () => {\n if (isAbsent && variant === \"desaturated-rail\") {\n return desaturateColor(driver.railColor);\n }\n return driver.railColor;\n };\n\n const getRailOpacity = () => {\n if (isAbsent && variant === \"desaturated-rail\") {\n return 0.4;\n }\n return 1;\n };\n\n return (\n <div\n style={{\n position: \"relative\",\n display: \"flex\",\n border: `1px solid ${\n isHovered ? \"rgba(52, 58, 64, 0.18)\" : \"rgba(52, 58, 64, 0.12)\"\n }`,\n borderRadius: \"12px\",\n overflow: \"hidden\",\n ...getCardStyle(),\n boxShadow: \"0 2px 4px rgba(30, 33, 37, 0.06)\",\n transition: \"all 0.2s ease-out\",\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {/* Left rail = cluster color */}\n <div\n style={{\n width: \"5px\",\n background: getRailColor(),\n opacity: getRailOpacity(),\n }}\n ></div>\n <div style={{ flex: 1, padding: \"10px 12px\" }}>\n {/* Title */}\n <div\n style={{\n fontSize: \"13px\",\n fontWeight: 680,\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.2,\n display: \"flex\",\n alignItems: \"center\",\n gap: \"6px\",\n ...getTitleStyle(),\n }}\n >\n {driver.title}\n {isAbsent && variant === \"badge\" && (\n <span\n style={{\n fontSize: \"9px\",\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n background: \"rgba(30, 33, 37, 0.08)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n fontWeight: 600,\n textDecoration: \"none\",\n }}\n >\n not detected\n </span>\n )}\n </div>\n\n {/* Technical name */}\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontFamily: \"ui-monospace, monospace\",\n ...(isAbsent && variant === \"opacity\" && { opacity: 1 }),\n }}\n >\n {driver.technicalName}\n </div>\n\n {/* Metrics */}\n <div\n style={{\n marginTop: \"3px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: \"8px\",\n ...(isAbsent && variant === \"opacity\" && { opacity: 1 }),\n }}\n >\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n state <strong>{driver.state}</strong>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n conf <strong>{driver.confidence.toFixed(2)}</strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${driver.confidence * 100}%`,\n background: \"rgba(30, 33, 37, 0.45)\",\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n <span>·</span>\n <span style={{ display: \"flex\", alignItems: \"center\", gap: \"4px\" }}>\n prob <strong>{driver.probability.toFixed(2)}</strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"45px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${driver.probability * 100}%`,\n background: \"rgba(30, 33, 37, 0.45)\",\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </span>\n </div>\n\n {/* Timestamps or fallback */}\n {hasTimestamps ? (\n <div\n style={{\n marginTop: \"4px\",\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"6px\",\n alignItems: \"center\",\n }}\n >\n <span\n style={{ fontSize: \"11px\", color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n @\n </span>\n {driver.timestamps.map((ts, i) => (\n <span\n key={i}\n style={{ display: \"flex\", gap: \"6px\", alignItems: \"center\" }}\n >\n <span\n style={{\n fontSize: \"11px\",\n padding: \"2px 6px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(52, 58, 64, 0.16)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n color: \"rgba(30, 33, 37, 0.60)\",\n fontFamily: \"ui-monospace, monospace\",\n }}\n >\n {ts.start}–{ts.end}\n </span>\n <button\n type=\"button\"\n aria-label={`Play ${ts.start}–${ts.end}`}\n onClick={() => onPlayTimestamp?.(ts.start, ts.end)}\n style={{\n width: \"18px\",\n height: \"18px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(52, 58, 64, 0.22)\",\n background: \"rgba(255, 255, 255, 0.80)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: 0,\n cursor: \"pointer\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 1)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background =\n \"rgba(255, 255, 255, 0.80)\";\n }}\n >\n <Play\n size={8}\n style={{\n marginLeft: \"1px\",\n color: \"rgba(30, 33, 37, 0.70)\",\n }}\n fill=\"rgba(30, 33, 37, 0.70)\"\n />\n </button>\n </span>\n ))}\n </div>\n ) : (\n <div\n style={{\n marginTop: \"4px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n ...(isAbsent && variant === \"opacity\" && { opacity: 1 }),\n }}\n >\n @ <strong>timestamps checked</strong>\n </div>\n )}\n\n {/* Deviation Indicator */}\n {driver.deviation && (\n <div\n style={{\n marginTop: \"6px\",\n display: \"flex\",\n ...(isAbsent && variant === \"opacity\" && { opacity: 1 }),\n }}\n >\n <DeviationIndicator\n level={driver.deviation}\n color={driver.railColor}\n direction={driver.deviationDirection}\n />\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown, Play, Pause } from \"lucide-react\";\nimport { Tooltip, TooltipTrigger, TooltipContent } from \"../primitives/Tooltip\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * SignalCard Component\n * Displays a signal card with probability, confidence, and contributing observations.\n */\nexport default function SignalCard({\n signal,\n onExpandObservation,\n activeObservationId = null,\n isObservationPlaying = false,\n showObservationPlaybackControls = true,\n useFallbackObservationDuration = true,\n}) {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const formatObservationTime = (startMs, endMs) => {\n const start = Number(startMs);\n const end = Number(endMs);\n if (!Number.isFinite(start) || !Number.isFinite(end) || end <= start) return null;\n const format = (ms) => {\n const totalSeconds = Math.floor(ms / 1000);\n const minutes = Math.floor(totalSeconds / 60)\n .toString()\n .padStart(2, \"0\");\n const seconds = (totalSeconds % 60).toString().padStart(2, \"0\");\n return `${minutes}:${seconds}`;\n };\n return `${format(start)}–${format(end)}`;\n };\n\n return (\n <div\n style={{\n position: \"relative\",\n background: \"rgba(255, 255, 255, 0.82)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"12px\",\n overflow: \"hidden\",\n boxShadow: \"0 2px 4px rgba(30, 33, 37, 0.06)\",\n }}\n >\n {/* Left rail - subtle color for signal type */}\n {signal.railColor && (\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"5px\",\n background: signal.railColor,\n opacity: 0.6,\n }}\n />\n )}\n\n {/* Header - Clickable to expand/collapse */}\n <button\n type=\"button\"\n onClick={() => setIsExpanded(!isExpanded)}\n style={{\n width: \"100%\",\n padding: \"14px 16px 14px 21px\",\n background: \"transparent\",\n border: \"none\",\n cursor: \"pointer\",\n textAlign: \"left\",\n transition: \"background 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(231, 212, 162, 0.08)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n }}\n >\n {/* Content */}\n <div style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"12px\" }}>\n <div style={{ flex: 1, minWidth: 0 }}>\n {/* Signal name and badge */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n marginBottom: \"6px\",\n flexWrap: \"wrap\",\n }}\n >\n <span\n style={{\n fontSize: \"16px\",\n fontWeight: 700,\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.15,\n }}\n >\n {signal.name}\n </span>\n {signal.state && (\n <span\n style={{\n fontSize: \"11px\",\n fontWeight: 600,\n color: \"#1F8F5A\",\n background: \"rgba(31, 143, 90, 0.10)\",\n padding: \"6px 8px\",\n borderRadius: \"999px\",\n border: \"1px solid rgba(31,143,90,0.12)\",\n }}\n >\n {String(signal.state).toLowerCase() === \"present\" ? \"present\" : signal.state}\n </span>\n )}\n {signal.isPreview && (\n <span\n style={{\n fontSize: \"9px\",\n fontWeight: 650,\n letterSpacing: \"0.06em\",\n textTransform: \"uppercase\",\n color: \"rgba(184, 156, 106, 0.75)\",\n background: \"rgba(184, 156, 106, 0.12)\",\n padding: \"2px 6px\",\n borderRadius: \"4px\",\n border: \"1px solid rgba(184, 156, 106, 0.2)\",\n }}\n >\n Preview\n </span>\n )}\n </div>\n\n {/* Description */}\n <div\n style={{\n fontSize: \"13px\",\n color: \"rgba(30, 33, 37, 0.66)\",\n lineHeight: 1.4,\n marginBottom: \"8px\",\n }}\n >\n {signal.description}\n </div>\n\n {/* Technical key */}\n <div\n style={{\n fontSize: \"11px\",\n color: \"rgba(30, 33, 37, 0.48)\",\n fontFamily: \"ui-monospace, monospace\",\n marginBottom: \"10px\",\n }}\n >\n {signal.technicalKey}\n </div>\n\n {/* Metrics row */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n flexWrap: \"wrap\",\n gap: \"12px\",\n fontSize: \"11.5px\",\n }}\n >\n {/* Probability */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(139, 157, 127, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(139, 157, 127, 0.35)\",\n }}\n >\n prob\n </span>\n </TooltipTrigger>\n <TooltipContent className=\"w-fit max-w-[34ch] h-auto min-h-0 px-4 py-3 whitespace-normal break-words text-left text-[13px] leading-[1.45]\">\n <div>\n <div style={{ fontWeight: 600, marginBottom: \"4px\", maxWidth: \"34ch\" }}>\n Probability measures expectation.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\", maxWidth: \"34ch\" }}>\n How likely this pattern is, given past sessions and current observations.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n <strong\n style={{\n color: `rgba(139, 157, 127, ${signal.probability})`,\n }}\n >\n {signal.probability.toFixed(2)}\n </strong>\n {signal.probabilityRange && (\n <span\n style={{\n color: \"rgba(30, 33, 37, 0.42)\",\n fontSize: \"10.5px\",\n }}\n >\n ({signal.probabilityRange.min.toFixed(2)}–\n {signal.probabilityRange.max.toFixed(2)})\n </span>\n )}\n <span\n style={{\n display: \"inline-block\",\n width: \"50px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${signal.probability * 100}%`,\n background: `rgba(139, 157, 127, ${signal.probability})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </div>\n\n <span style={{ color: \"rgba(30, 33, 37, 0.24)\" }}>·</span>\n\n {/* Confidence */}\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"6px\" }}>\n <Tooltip>\n <TooltipTrigger asChild>\n <span\n style={{\n color: \"rgba(184, 156, 106, 0.65)\",\n cursor: \"help\",\n borderBottom: \"1px dotted rgba(184, 156, 106, 0.35)\",\n }}\n >\n conf\n </span>\n </TooltipTrigger>\n <TooltipContent className=\"w-fit max-w-[34ch] h-auto min-h-0 px-4 py-3 whitespace-normal break-words text-left text-[12px] leading-[1.45]\">\n <div>\n <div style={{ fontWeight: 600, marginBottom: \"4px\", maxWidth: \"34ch\" }}>\n Confidence measures evidence.\n </div>\n <div style={{ color: \"rgba(255, 255, 255, 0.85)\", maxWidth: \"34ch\" }}>\n How strongly the observations in this session support this signal.\n </div>\n </div>\n </TooltipContent>\n </Tooltip>\n <strong\n style={{\n color: `rgba(184, 156, 106, ${signal.confidence})`,\n }}\n >\n {signal.confidence.toFixed(2)}\n </strong>\n <span\n style={{\n display: \"inline-block\",\n width: \"50px\",\n height: \"3px\",\n background: \"rgba(30, 33, 37, 0.12)\",\n borderRadius: \"2px\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n >\n <span\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n height: \"100%\",\n width: `${signal.confidence * 100}%`,\n background: `rgba(184, 156, 106, ${signal.confidence})`,\n borderRadius: \"2px\",\n transition: \"width 0.3s ease\",\n }}\n />\n </span>\n </div>\n\n <span style={{ color: \"rgba(30, 33, 37, 0.24)\" }}>·</span>\n\n {/* Observation count */}\n <div\n style={{\n color: \"rgba(30, 33, 37, 0.52)\",\n fontSize: \"11px\",\n }}\n >\n {(signal.contributingObservations || []).length} observation\n {(signal.contributingObservations || []).length !== 1 ? \"s\" : \"\"}\n </div>\n </div>\n </div>\n\n {/* Rotating chevron on right */}\n <div\n style={{\n paddingTop: \"2px\",\n color: \"rgba(30, 33, 37, 0.42)\",\n flexShrink: 0,\n transition: \"transform 0.2s ease\",\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"flex-end\",\n gap: \"8px\",\n }}\n >\n {signal.deviation && (\n <DeviationIndicator\n level={signal.deviation}\n color={signal.railColor || \"rgba(30, 33, 37, 0.65)\"}\n direction={signal.deviationDirection}\n />\n )}\n <ChevronDown\n size={18}\n style={{\n transform: isExpanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s ease\",\n }}\n />\n </div>\n </div>\n </button>\n\n {/* Expanded view - Contributing observations */}\n {isExpanded && (\n <div\n style={{\n borderTop: \"1px solid rgba(52, 58, 64, 0.08)\",\n background: \"rgba(244, 241, 230, 0.25)\",\n padding: \"16px 16px 16px 21px\",\n }}\n >\n <div\n style={{\n fontSize: \"10px\",\n fontWeight: 650,\n letterSpacing: \"0.08em\",\n textTransform: \"uppercase\",\n color: \"rgba(30, 33, 37, 0.52)\",\n marginBottom: \"12px\",\n }}\n >\n Contributing Observations\n </div>\n\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"8px\",\n }}\n >\n {(signal.contributingObservations || []).map((obs, idx) => {\n const durationLabel = formatObservationTime(obs?.startMs, obs?.endMs);\n const playbackDurationLabel =\n durationLabel || (useFallbackObservationDuration ? \"00:00–00:04\" : null);\n const canPlayObservation = Boolean(playbackDurationLabel);\n const handleObservationAction = () => onExpandObservation?.(obs.key);\n const isCurrentObservationPlaying =\n Boolean(isObservationPlaying) &&\n Boolean(activeObservationId) &&\n String(activeObservationId) === String(obs?.playbackId || \"\");\n\n return (\n <div\n key={idx}\n role=\"button\"\n tabIndex={0}\n onClick={handleObservationAction}\n onKeyDown={(event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n handleObservationAction();\n }\n }}\n style={{\n background: isCurrentObservationPlaying\n ? \"rgba(94, 136, 176, 0.08)\"\n : \"rgba(255, 255, 255, 0.85)\",\n border: isCurrentObservationPlaying\n ? \"1px solid rgba(94, 136, 176, 0.35)\"\n : \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"8px\",\n padding: \"10px 12px\",\n textAlign: \"left\",\n cursor: \"pointer\",\n transition: \"all 0.15s ease\",\n position: \"relative\",\n overflow: \"hidden\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 1)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.20)\";\n e.currentTarget.style.transform = \"translateX(2px)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.85)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.12)\";\n e.currentTarget.style.transform = \"translateX(0)\";\n }}\n >\n {/* Influence indicator - subtle left accent */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"3px\",\n background:\n obs.influence === \"increases\"\n ? \"rgba(107, 123, 147, 0.35)\"\n : obs.influence === \"decreases\"\n ? \"rgba(30, 33, 37, 0.15)\"\n : \"rgba(30, 33, 37, 0.08)\",\n borderRadius: \"8px 0 0 8px\",\n }}\n />\n\n <div style={{ paddingLeft: \"6px\", marginBottom: \"6px\" }}>\n <div\n style={{\n fontSize: \"12px\",\n color: \"rgba(30, 33, 37, 0.82)\",\n lineHeight: 1.4,\n }}\n >\n {obs.statement}\n </div>\n </div>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n fontSize: \"10.5px\",\n paddingLeft: \"6px\",\n }}\n >\n <span\n style={{\n fontFamily: \"ui-monospace, monospace\",\n color: \"rgba(30, 33, 37, 0.42)\",\n }}\n >\n {obs.key}\n </span>\n <span style={{ color: \"rgba(30, 33, 37, 0.24)\" }}>·</span>\n <span style={{ color: \"rgba(184, 156, 106, 0.65)\" }}>\n conf\n </span>\n <strong\n style={{\n color: `rgba(184, 156, 106, ${obs.confidence})`,\n }}\n >\n {obs.confidence.toFixed(2)}\n </strong>\n <span style={{ color: \"rgba(30, 33, 37, 0.24)\" }}>·</span>\n <span\n style={{\n fontSize: \"10px\",\n color:\n obs.influence === \"increases\"\n ? \"rgba(107, 123, 147, 0.75)\"\n : obs.influence === \"decreases\"\n ? \"rgba(30, 33, 37, 0.52)\"\n : \"rgba(30, 33, 37, 0.42)\",\n }}\n >\n {obs.influence === \"increases\"\n ? \"↑ increases signal\"\n : obs.influence === \"decreases\"\n ? \"↓ decreases signal\"\n : \"− neutral\"}\n </span>\n </div>\n\n {showObservationPlaybackControls && canPlayObservation ? (\n <div\n style={{\n marginTop: \"8px\",\n paddingLeft: \"6px\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"8px\",\n }}\n >\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n border: isCurrentObservationPlaying\n ? \"1px solid rgba(94, 136, 176, 0.35)\"\n : \"1px solid rgba(148, 163, 184, 0.35)\",\n borderRadius: \"999px\",\n padding: \"2px 9px\",\n fontFamily: \"ui-monospace, monospace\",\n fontSize: \"10px\",\n color: \"rgba(71, 85, 105, 0.9)\",\n background: \"rgba(255,255,255,0.9)\",\n }}\n >\n {playbackDurationLabel}\n </span>\n <button\n type=\"button\"\n onClick={(event) => {\n event.stopPropagation();\n handleObservationAction();\n }}\n aria-label={\n isCurrentObservationPlaying\n ? \"Pause observation segment\"\n : \"Play observation segment\"\n }\n title={\n isCurrentObservationPlaying\n ? \"Pause observation segment\"\n : \"Play observation segment\"\n }\n disabled={!canPlayObservation}\n style={{\n width: \"26px\",\n height: \"26px\",\n borderRadius: \"999px\",\n border: isCurrentObservationPlaying\n ? \"1px solid rgba(94, 136, 176, 0.45)\"\n : \"1px solid rgba(148, 163, 184, 0.35)\",\n background: isCurrentObservationPlaying\n ? \"rgba(94,136,176,0.12)\"\n : \"rgba(255,255,255,0.95)\",\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n cursor: \"pointer\",\n color: isCurrentObservationPlaying\n ? \"rgba(94,136,176,0.95)\"\n : \"rgba(30, 33, 37, 0.72)\",\n opacity: canPlayObservation ? 1 : 0.45,\n }}\n >\n {isCurrentObservationPlaying ? <Pause size={12} /> : <Play size={12} />}\n </button>\n </div>\n ) : null}\n </div>\n );\n })}\n </div>\n\n {/* Reasoning note */}\n <div\n style={{\n marginTop: \"12px\",\n padding: \"10px 12px\",\n background: \"rgba(255, 255, 255, 0.6)\",\n borderRadius: \"6px\",\n fontSize: \"11px\",\n color: \"rgba(30, 33, 37, 0.65)\",\n lineHeight: 1.5,\n fontStyle: \"italic\",\n }}\n >\n <strong\n style={{ fontStyle: \"normal\", color: \"rgba(30, 33, 37, 0.75)\" }}\n >\n Note:\n </strong>{\" \"}\n This signal summarizes patterns observed in this session. It does not\n replace human judgment or constitute a conclusion.\n </div>\n </div>\n )}\n </div>\n );\n}\n\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { Pencil } from \"lucide-react\";\nimport DeviationIndicator from \"../primitives/DeviationIndicator\";\n\n/**\n * ConditionCard Component\n * Displays a condition card with category, title, metadata, definition, and editable policy section.\n * \n * @param {Object} data - The condition data object\n * @param {string} data.category - Category label\n * @param {string} data.title - Main title\n * @param {string} data.shortName - Short name\n * @param {string} data.technicalName - Technical name\n * @param {Object} data.metadata - Metadata object with type, tier, priority, vertical\n * @param {string} data.definition - Definition text\n * @param {Object} data.policy - Policy object with requiresPolicy and text\n * @param {string} data.railColor - Color for the left rail\n * @param {number} data.deviation - Deviation level (1-5)\n * @param {string} data.deviationDirection - Deviation direction ('up' or 'down')\n */\nexport default function ConditionCard({ data }) {\n const [isEditingPolicy, setIsEditingPolicy] = useState(false);\n const [policyText, setPolicyText] = useState(data.policy.text);\n\n const handleEditPolicy = () => {\n setIsEditingPolicy(true);\n };\n\n const handleSavePolicy = () => {\n setIsEditingPolicy(false);\n // In a real app, this would save to a backend\n console.log(\"Saving policy:\", policyText);\n };\n\n const handleCancelEdit = () => {\n setIsEditingPolicy(false);\n setPolicyText(data.policy.text);\n };\n\n return (\n <div\n className=\"flex rounded-2xl bg-white/85 shadow-lg border border-slate-200/50\"\n style={{ maxWidth: \"900px\", overflow: \"visible\" }}\n >\n {/* Left color rail */}\n <div\n className=\"w-1.5 flex-shrink-0 rounded-l-2xl\"\n style={{ backgroundColor: data.railColor }}\n />\n\n {/* Main content */}\n <div className=\"flex-1 p-6 overflow-visible\">\n {/* Category label */}\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n {data.category}\n </div>\n\n {/* Title and Deviation */}\n <div className=\"flex items-start justify-between gap-4 mb-1.5 relative\">\n <h2\n className=\"flex-1\"\n style={{\n fontSize: \"18px\",\n fontWeight: 720,\n letterSpacing: \"-0.01em\",\n lineHeight: 1.25,\n color: \"rgba(30, 33, 37, 0.92)\",\n }}\n >\n {data.title}\n </h2>\n {data.deviation && (\n <div className=\"flex-shrink-0\">\n <DeviationIndicator\n level={data.deviation}\n color={data.railColor}\n direction={data.deviationDirection}\n />\n </div>\n )}\n </div>\n\n {/* Short name */}\n <div\n className=\"text-[13px] leading-snug mt-1.5\"\n style={{ color: \"rgba(30, 33, 37, 0.68)\" }}\n >\n Short name: <strong>{data.shortName}</strong>\n </div>\n\n {/* Technical name */}\n <div\n className=\"mt-2 text-[11.5px] font-mono\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n {data.technicalName}\n </div>\n\n {/* Metadata */}\n <div\n className=\"mt-0.5 text-[11.5px]\"\n style={{ color: \"rgba(30, 33, 37, 0.52)\" }}\n >\n type <strong>{data.metadata.type}</strong> · tier{\" \"}\n <strong>{data.metadata.tier}</strong> · priority{\" \"}\n <strong>{data.metadata.priority}</strong> · vertical{\" \"}\n <strong>{data.metadata.vertical}</strong>\n </div>\n\n {/* Definition section */}\n <div className=\"mt-5\">\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase mb-2.5\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Definition\n </div>\n <p\n className=\"text-[13px] leading-relaxed\"\n style={{ color: \"rgba(30, 33, 37, 0.72)\" }}\n >\n {data.definition}\n </p>\n </div>\n\n {/* Policy section */}\n <div className=\"mt-6 border border-slate-200/50 rounded-xl bg-white/70 p-4\">\n {/* Policy header */}\n <div className=\"flex items-center justify-between gap-3 mb-3\">\n <div className=\"flex items-center gap-2.5\">\n <div\n className=\"text-[11px] tracking-[0.16em] uppercase\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n Policy\n </div>\n\n {data.policy.requiresPolicy && (\n <div\n className=\"text-[10px] tracking-[0.12em] uppercase border px-2 py-1 rounded-full\"\n style={{\n color: \"rgba(30, 33, 37, 0.55)\",\n borderColor: \"rgba(30, 33, 37, 0.40)\",\n background: \"rgba(255, 255, 255, 0.70)\",\n }}\n >\n requires_policy\n </div>\n )}\n </div>\n\n {/* Edit button */}\n {!isEditingPolicy && (\n <button\n onClick={handleEditPolicy}\n className=\"inline-flex items-center gap-2 text-xs px-3 py-1.5 rounded-lg border shadow-sm transition-all hover:shadow-md\"\n style={{\n borderColor: \"rgba(30, 33, 37, 0.40)\",\n background: \"rgba(255, 255, 255, 0.92)\",\n color: \"rgba(30, 33, 37, 0.78)\",\n }}\n aria-label=\"Edit policy\"\n >\n <Pencil\n className=\"w-3.5 h-3.5\"\n style={{ color: \"rgba(30, 33, 37, 0.70)\" }}\n />\n Edit policy\n </button>\n )}\n </div>\n\n {/* Policy text or editor */}\n {isEditingPolicy ? (\n <div className=\"space-y-3\">\n <textarea\n value={policyText}\n onChange={(e) => setPolicyText(e.target.value)}\n className=\"w-full text-[12.5px] leading-relaxed border rounded-lg p-3 focus:outline-none focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500/50 resize-none\"\n style={{\n color: \"rgba(30, 33, 37, 0.62)\",\n borderColor: \"rgba(30, 33, 37, 0.30)\",\n }}\n rows={6}\n />\n <div className=\"flex gap-2 justify-end\">\n <button\n onClick={handleCancelEdit}\n className=\"px-3 py-1.5 text-xs rounded-lg border transition-colors\"\n style={{\n borderColor: \"rgba(30, 33, 37, 0.30)\",\n background: \"white\",\n color: \"rgba(30, 33, 37, 0.70)\",\n }}\n >\n Cancel\n </button>\n <button\n onClick={handleSavePolicy}\n className=\"px-3 py-1.5 text-xs rounded-lg text-white transition-colors shadow-sm\"\n style={{\n background: \"#2563eb\",\n }}\n >\n Save policy\n </button>\n </div>\n </div>\n ) : (\n <p\n className=\"text-[12.5px] leading-relaxed\"\n style={{ color: \"rgba(30, 33, 37, 0.62)\" }}\n >\n {policyText}\n </p>\n )}\n </div>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport ScoreDriverCard from \"./ScoreDriverCard\";\n\n/**\n * ModelScoreCard Component\n * Displays a model score with expandable drivers/conditions.\n * \n * @param {Object} props - Component props\n * @param {number} props.score - The score value (0-100)\n * @param {number} props.confidence - Confidence level (0-1)\n * @param {Object} props.range - Range object with min and max\n * @param {string} props.modelKey - Model key identifier\n * @param {string} props.modelVersion - Model version\n * @param {string} props.title - Title for the score\n * @param {boolean} props.expanded - Whether drivers section is expanded\n * @param {Array} props.drivers - Array of score driver objects\n * @param {Function} props.onViewDrivers - Callback when expand/collapse is clicked\n * @param {Function} props.onPlayTimestamp - Callback when play timestamp is clicked\n */\nexport default function ModelScoreCard({\n score,\n confidence,\n range,\n modelKey = \"legacy_overall\",\n modelVersion = \"v2026_01_11_01\",\n title = \"Agent Score\",\n expanded: initialExpanded = false,\n drivers = [],\n onViewDrivers,\n onPlayTimestamp,\n}) {\n const [expanded, setExpanded] = useState(initialExpanded);\n\n const handleToggle = () => {\n const newExpanded = !expanded;\n setExpanded(newExpanded);\n if (onViewDrivers) {\n onViewDrivers();\n }\n };\n\n return (\n <div>\n {/* Section header */}\n <div style={{ marginBottom: \"12px\" }}>\n <div\n className=\"text-[11px] tracking-[0.14em] uppercase mb-2\"\n style={{ color: \"rgba(30, 33, 37, 0.42)\", fontWeight: 650 }}\n >\n MODEL OUTPUT\n </div>\n <div\n style={{\n fontSize: \"16px\",\n fontWeight: 720,\n letterSpacing: \"-0.01em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1.2,\n }}\n >\n {title}\n <span\n style={{\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n fontFamily: \"ui-monospace, monospace\",\n marginLeft: \"10px\",\n }}\n >\n model_key: {modelKey} · {modelVersion}\n </span>\n </div>\n </div>\n\n {/* Model output block */}\n <div\n style={{\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"14px\",\n background: \"rgba(255, 255, 255, 0.82)\",\n overflow: \"hidden\",\n }}\n >\n {/* Clickable header area */}\n <button\n type=\"button\"\n onClick={handleToggle}\n disabled={drivers.length === 0}\n style={{\n width: \"100%\",\n padding: \"16px 18px\",\n background: \"transparent\",\n border: \"none\",\n cursor: drivers.length > 0 ? \"pointer\" : \"default\",\n textAlign: \"left\",\n transition: \"background 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n if (drivers.length > 0) {\n e.currentTarget.style.background = \"rgba(231, 212, 162, 0.08)\";\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"flex-start\", gap: \"16px\" }}>\n <div style={{ flex: 1, minWidth: 0 }}>\n {/* Score row */}\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: \"16px\",\n alignItems: \"baseline\",\n marginBottom: \"12px\",\n }}\n >\n <div\n style={{\n fontSize: \"32px\",\n fontWeight: 760,\n letterSpacing: \"-0.02em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n lineHeight: 1,\n }}\n >\n {score}\n </div>\n <div\n style={{\n fontSize: \"12px\",\n color: \"rgba(30, 33, 37, 0.62)\",\n lineHeight: 1.4,\n }}\n >\n score (0–100) · confidence <strong>{confidence.toFixed(2)}</strong> ·{\" \"}\n <span\n style={{\n borderBottom: \"1px dashed rgba(231, 212, 162, 0.65)\",\n }}\n >\n model-based estimate\n </span>\n </div>\n </div>\n\n {/* Range + normalization note */}\n <div\n style={{\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n lineHeight: 1.5,\n }}\n >\n range <strong>{range.min}–{range.max}</strong> (illustrative) · normalized for comparability across calls ·{\" \"}\n {expanded\n ? \"based on evidence-weighted condition signals\"\n : \"evidence-weighted condition signals\"}\n </div>\n </div>\n\n {/* Rotating chevron on right */}\n {drivers.length > 0 && (\n <div\n style={{\n paddingTop: \"6px\",\n color: \"rgba(30, 33, 37, 0.42)\",\n flexShrink: 0,\n transition: \"transform 0.2s ease\",\n }}\n >\n <ChevronDown\n size={18}\n style={{\n transform: expanded ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 0.2s ease\",\n }}\n />\n </div>\n )}\n </div>\n </button>\n\n {/* Expanded state: drivers */}\n {expanded && drivers.length > 0 && (\n <div\n style={{\n borderTop: \"1px solid rgba(52, 58, 64, 0.10)\",\n padding: \"16px 18px 18px 18px\",\n }}\n >\n {/* Drivers header */}\n <div\n className=\"text-[10px] tracking-[0.12em] uppercase mb-4\"\n style={{ color: \"rgba(30, 33, 37, 0.36)\", fontWeight: 650 }}\n >\n SCORE CONDITIONS FOR THIS INTERACTION\n </div>\n\n {/* Drivers list */}\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"14px\" }}>\n {drivers.map((driver, i) => (\n <ScoreDriverCard\n key={i}\n driver={driver}\n onPlayTimestamp={onPlayTimestamp}\n showWeight={true}\n />\n ))}\n </div>\n\n {/* Note */}\n <div\n style={{\n marginTop: \"16px\",\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n lineHeight: 1.5,\n }}\n >\n Conditions shown are the largest contributors for this model on this interaction. Inspect timestamps to verify supporting evidence.\n </div>\n </div>\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\n\n/**\n * SummarySection component\n * Provides narrative context at the session level.\n * Uses neutral, evidence-aware language with explicit boundaries about what can be known from the transcript.\n */\n\nexport default function SummarySection({ \n title = \"Interaction overview\", \n summary,\n boundaryNote = \"This summary reflects observed conversation content and is bounded by transcript quality and available evidence.\"\n}) {\n return (\n <div className=\"pb-2\">\n {/* Section header */}\n <div className=\"mb-3\">\n <div \n className=\"text-[11px] tracking-[0.14em] uppercase mb-1.5\"\n style={{ color: 'rgba(30, 33, 37, 0.42)', fontWeight: 650 }}\n >\n Summary\n </div>\n <h2 \n className=\"text-[15px] leading-tight\"\n style={{ \n fontWeight: 700, \n letterSpacing: '-0.01em',\n color: 'rgba(30, 33, 37, 0.90)',\n lineHeight: 1.2\n }}\n >\n {title}\n </h2>\n </div>\n\n {/* Summary body */}\n <div \n className=\"text-[13.5px] max-w-[860px]\"\n style={{ \n lineHeight: 1.6,\n color: 'rgba(30, 33, 37, 0.70)'\n }}\n >\n {summary}\n </div>\n\n {/* Boundary / confidence note */}\n {boundaryNote && (\n <div \n className=\"mt-2 text-[11.5px]\"\n style={{ \n color: 'rgba(30, 33, 37, 0.52)',\n lineHeight: 1.5\n }}\n >\n {boundaryNote}\n </div>\n )}\n </div>\n );\n}\n\n"],"names":["ObservationCard","data","isExpanded","setIsExpanded","useState","jsxs","jsx","DeviationIndicator","ChevronDown","val","i","condition","tag","SmallObservationCard","category","statement","technicalKey","value","confidence","relevance","timestamps","railColor","expanded","nestedObservations","onPlayTimestamp","onToggle","selected","onClick","deviation","deviationDirection","isHovered","setIsHovered","Tooltip","TooltipTrigger","TooltipContent","Fragment","ts","e","ScoreDriverCard","driver","showWeight","hideMetrics","isAbsent","hasTimestamps","getCardBackground","ScoreDriverCardVariant","variant","desaturateColor","hex","r","g","b","gray","newR","newG","newB","getTitleStyle","getCardStyle","getRailColor","getRailOpacity","Play","SignalCard","signal","onExpandObservation","activeObservationId","isObservationPlaying","showObservationPlaybackControls","useFallbackObservationDuration","formatObservationTime","startMs","endMs","start","end","format","ms","totalSeconds","minutes","seconds","obs","idx","playbackDurationLabel","canPlayObservation","handleObservationAction","isCurrentObservationPlaying","event","Pause","ConditionCard","isEditingPolicy","setIsEditingPolicy","policyText","setPolicyText","handleEditPolicy","handleSavePolicy","handleCancelEdit","Pencil","ModelScoreCard","score","range","modelKey","modelVersion","title","initialExpanded","drivers","onViewDrivers","setExpanded","handleToggle","SummarySection","summary","boundaryNote"],"mappings":"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"}
|