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.
Files changed (159) hide show
  1. package/dist/AgentLiftCard.cjs.js.map +1 -1
  2. package/dist/AgentLiftCard.es.js +5 -3
  3. package/dist/AgentLiftCard.es.js.map +1 -1
  4. package/dist/CustomFilterChips.cjs.js.map +1 -1
  5. package/dist/CustomFilterChips.es.js +2 -1
  6. package/dist/CustomFilterChips.es.js.map +1 -1
  7. package/dist/FileUploadingState.cjs.js.map +1 -1
  8. package/dist/FileUploadingState.es.js +16 -10
  9. package/dist/FileUploadingState.es.js.map +1 -1
  10. package/dist/IntegrationCard.cjs.js.map +1 -1
  11. package/dist/IntegrationCard.es.js +3 -3
  12. package/dist/IntegrationCard.es.js.map +1 -1
  13. package/dist/SectionLabel.cjs.js.map +1 -1
  14. package/dist/SectionLabel.es.js.map +1 -1
  15. package/dist/SmallButton.cjs.js.map +1 -1
  16. package/dist/SmallButton.es.js +16 -16
  17. package/dist/SmallButton.es.js.map +1 -1
  18. package/dist/SummarySection.cjs.js.map +1 -1
  19. package/dist/SummarySection.es.js +11 -9
  20. package/dist/SummarySection.es.js.map +1 -1
  21. package/dist/TextInput.cjs.js.map +1 -1
  22. package/dist/TextInput.es.js.map +1 -1
  23. package/dist/Timeline.cjs.js.map +1 -1
  24. package/dist/Timeline.es.js +14 -8
  25. package/dist/Timeline.es.js.map +1 -1
  26. package/dist/Tooltip.cjs.js +1 -1
  27. package/dist/Tooltip.cjs.js.map +1 -1
  28. package/dist/Tooltip.es.js +31 -20
  29. package/dist/Tooltip.es.js.map +1 -1
  30. package/dist/TourGuideTooltip.cjs.js.map +1 -1
  31. package/dist/TourGuideTooltip.es.js +2 -1
  32. package/dist/TourGuideTooltip.es.js.map +1 -1
  33. package/dist/UpdatedInteractionRecording.cjs.js +1 -1
  34. package/dist/UpdatedInteractionRecording.cjs.js.map +1 -1
  35. package/dist/UpdatedInteractionRecording.es.js +79 -97
  36. package/dist/UpdatedInteractionRecording.es.js.map +1 -1
  37. package/dist/UploadInteraction.cjs.js.map +1 -1
  38. package/dist/UploadInteraction.es.js.map +1 -1
  39. package/dist/colors.cjs.js +2 -0
  40. package/dist/colors.cjs.js.map +1 -0
  41. package/dist/colors.es.js +2 -0
  42. package/dist/colors.es.js.map +1 -0
  43. package/dist/components/UpdatedInteractionDetails.cjs.js +10 -1
  44. package/dist/components/UpdatedInteractionDetails.cjs.js.map +1 -1
  45. package/dist/components/UpdatedInteractionDetails.es.js +1531 -9
  46. package/dist/components/UpdatedInteractionDetails.es.js.map +1 -1
  47. package/dist/components/chat.cjs.js +30 -1
  48. package/dist/components/chat.cjs.js.map +1 -1
  49. package/dist/components/chat.es.js +2222 -7
  50. package/dist/components/chat.es.js.map +1 -1
  51. package/dist/components/common.cjs.js +1 -1
  52. package/dist/components/common.es.js +32 -25
  53. package/dist/components/common.es.js.map +1 -1
  54. package/dist/components/data.cjs.js +1 -1
  55. package/dist/components/data.cjs.js.map +1 -1
  56. package/dist/components/data.es.js +1033 -4
  57. package/dist/components/data.es.js.map +1 -1
  58. package/dist/components/layout.cjs.js +3 -1
  59. package/dist/components/layout.cjs.js.map +1 -1
  60. package/dist/components/layout.es.js +1533 -8
  61. package/dist/components/layout.es.js.map +1 -1
  62. package/dist/components/login.cjs.js +1 -1
  63. package/dist/components/login.es.js +6 -2
  64. package/dist/components/login.es.js.map +1 -1
  65. package/dist/components/media.cjs.js +1 -1
  66. package/dist/components/media.cjs.js.map +1 -1
  67. package/dist/components/media.es.js +220 -6
  68. package/dist/components/media.es.js.map +1 -1
  69. package/dist/components/models.cjs.js +1 -1
  70. package/dist/components/models.cjs.js.map +1 -1
  71. package/dist/components/models.es.js +91 -2
  72. package/dist/components/models.es.js.map +1 -1
  73. package/dist/components/navigation.cjs.js +1 -1
  74. package/dist/components/navigation.cjs.js.map +1 -1
  75. package/dist/components/navigation.es.js +766 -7
  76. package/dist/components/navigation.es.js.map +1 -1
  77. package/dist/components/notifications.cjs.js +1 -1
  78. package/dist/components/notifications.cjs.js.map +1 -1
  79. package/dist/components/notifications.es.js +368 -3
  80. package/dist/components/notifications.es.js.map +1 -1
  81. package/dist/components/onboarding.cjs.js +1 -1
  82. package/dist/components/onboarding.cjs.js.map +1 -1
  83. package/dist/components/onboarding.es.js +985 -7
  84. package/dist/components/onboarding.es.js.map +1 -1
  85. package/dist/components/primitives.cjs.js +1 -1
  86. package/dist/components/primitives.cjs.js.map +1 -1
  87. package/dist/components/primitives.es.js +635 -25
  88. package/dist/components/primitives.es.js.map +1 -1
  89. package/dist/debugger-wc.cjs.js +4 -4
  90. package/dist/debugger-wc.cjs.js.map +1 -1
  91. package/dist/debugger-wc.es.js +15 -11
  92. package/dist/debugger-wc.es.js.map +1 -1
  93. package/dist/index.cjs.js +1 -1
  94. package/dist/index.cjs2.js +2 -49
  95. package/dist/index.cjs2.js.map +1 -1
  96. package/dist/index.cjs3.js +50 -0
  97. package/dist/index.cjs3.js.map +1 -0
  98. package/dist/index.es.js +104 -99
  99. package/dist/index.es.js.map +1 -1
  100. package/dist/index.es2.js +2632 -1776
  101. package/dist/index.es2.js.map +1 -1
  102. package/dist/index.es3.js +1944 -0
  103. package/dist/index.es3.js.map +1 -0
  104. package/dist/pages/interactionDetails.cjs.js +1 -1
  105. package/dist/pages/interactionDetails.cjs.js.map +1 -1
  106. package/dist/pages/interactionDetails.es.js +70 -47
  107. package/dist/pages/interactionDetails.es.js.map +1 -1
  108. package/dist/sortable.esm.cjs.js +1 -1
  109. package/dist/sortable.esm.cjs.js.map +1 -1
  110. package/dist/sortable.esm.es.js +55 -53
  111. package/dist/sortable.esm.es.js.map +1 -1
  112. package/dist/{chordia-ui.css → style.css} +1 -1
  113. package/package.json +1 -1
  114. package/src/components/UpdatedInteractionDetails/UpdatedInteractionDetails.jsx +318 -77
  115. package/src/components/UpdatedInteractionDetails/UpdatedInteractionRecording.jsx +7 -17
  116. package/dist/ChartRenderer.cjs.js +0 -31
  117. package/dist/ChartRenderer.cjs.js.map +0 -1
  118. package/dist/ChartRenderer.es.js +0 -2210
  119. package/dist/ChartRenderer.es.js.map +0 -1
  120. package/dist/GettingStarted.cjs.js +0 -2
  121. package/dist/GettingStarted.cjs.js.map +0 -1
  122. package/dist/GettingStarted.es.js +0 -983
  123. package/dist/GettingStarted.es.js.map +0 -1
  124. package/dist/InlineConfirm.cjs.js +0 -2
  125. package/dist/InlineConfirm.cjs.js.map +0 -1
  126. package/dist/InlineConfirm.es.js +0 -618
  127. package/dist/InlineConfirm.es.js.map +0 -1
  128. package/dist/InteractionSummaryCard.cjs.js +0 -2
  129. package/dist/InteractionSummaryCard.cjs.js.map +0 -1
  130. package/dist/InteractionSummaryCard.es.js +0 -216
  131. package/dist/InteractionSummaryCard.es.js.map +0 -1
  132. package/dist/LoginPage.cjs.js +0 -3
  133. package/dist/LoginPage.cjs.js.map +0 -1
  134. package/dist/LoginPage.es.js +0 -2618
  135. package/dist/LoginPage.es.js.map +0 -1
  136. package/dist/NavigationBar.cjs.js +0 -2
  137. package/dist/NavigationBar.cjs.js.map +0 -1
  138. package/dist/NavigationBar.es.js +0 -762
  139. package/dist/NavigationBar.es.js.map +0 -1
  140. package/dist/NotificationPanel.cjs.js +0 -2
  141. package/dist/NotificationPanel.cjs.js.map +0 -1
  142. package/dist/NotificationPanel.es.js +0 -371
  143. package/dist/NotificationPanel.es.js.map +0 -1
  144. package/dist/OverlayPanel.cjs.js +0 -2
  145. package/dist/OverlayPanel.cjs.js.map +0 -1
  146. package/dist/OverlayPanel.es.js +0 -93
  147. package/dist/OverlayPanel.es.js.map +0 -1
  148. package/dist/SplitPane.cjs.js +0 -4
  149. package/dist/SplitPane.cjs.js.map +0 -1
  150. package/dist/SplitPane.es.js +0 -1531
  151. package/dist/SplitPane.es.js.map +0 -1
  152. package/dist/SummaryStatsPanel.cjs.js +0 -2
  153. package/dist/SummaryStatsPanel.cjs.js.map +0 -1
  154. package/dist/SummaryStatsPanel.es.js +0 -1027
  155. package/dist/SummaryStatsPanel.es.js.map +0 -1
  156. package/dist/UpdatedInteractionDetails.cjs.js +0 -11
  157. package/dist/UpdatedInteractionDetails.cjs.js.map +0 -1
  158. package/dist/UpdatedInteractionDetails.es.js +0 -1310
  159. package/dist/UpdatedInteractionDetails.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"layout.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"layout.es.js","sources":["../../src/components/layout/FirstCallScreen.jsx","../../src/components/layout/OnboardingChecklist.jsx","../../src/components/layout/DemoProjectBanner.jsx","../../src/components/layout/LoginForm.jsx","../../src/components/layout/SplitPane.jsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useRef } from \"react\";\nimport { Upload, Link, Sparkles, CheckCircle2, X } from \"lucide-react\";\n\n/**\n * FirstCallScreen Component\n * Displays an onboarding screen with three options for getting started:\n * Upload an interaction, Explore a demonstration project, or Connect a data source.\n */\nexport default function FirstCallScreen({\n onUploadCall,\n onConnectSource,\n onUseSample,\n showExamples = false,\n}) {\n const [hoveredCard, setHoveredCard] = useState(null);\n const [uploadedFile, setUploadedFile] = useState(null);\n const [connectedSource, setConnectedSource] = useState(null);\n const [selectedProject, setSelectedProject] = useState(null);\n const fileInputRef = useRef(null);\n\n // Dummy data sources for testing\n const dummyDataSources = [\n { id: \"five9\", name: \"Five9\", status: \"available\", description: \"Cloud contact center platform\" },\n { id: \"twilio\", name: \"Twilio Flex\", status: \"available\", description: \"Programmable contact center\" },\n { id: \"genesys\", name: \"Genesys Cloud\", status: \"available\", description: \"All-in-one cloud contact center\" },\n { id: \"zoom\", name: \"Zoom Phone\", status: \"coming-soon\", description: \"Cloud phone system\" },\n ];\n\n // Dummy demo projects for testing\n const dummyProjects = [\n {\n id: \"retail-support\",\n name: \"Retail Customer Support\",\n description: \"Sample interactions from retail customer service team\",\n interactions: 24,\n dateRange: \"Last 30 days\",\n },\n {\n id: \"healthcare-billing\",\n name: \"Healthcare Billing Inquiries\",\n description: \"Patient billing and insurance verification calls\",\n interactions: 18,\n dateRange: \"Last 2 weeks\",\n },\n {\n id: \"financial-services\",\n name: \"Financial Services Compliance\",\n description: \"Banking and financial advisory interactions\",\n interactions: 32,\n dateRange: \"Last 45 days\",\n },\n ];\n\n const handleFileUpload = (event) => {\n const file = event.target.files?.[0];\n if (file) {\n // Check if file is audio or video\n const isAudio = file.type.startsWith(\"audio/\");\n const isVideo = file.type.startsWith(\"video/\");\n \n if (isAudio || isVideo) {\n setUploadedFile({\n name: file.name,\n type: file.type,\n size: file.size,\n lastModified: new Date(file.lastModified),\n });\n if (onUploadCall) {\n onUploadCall(file);\n } else {\n console.log(\"File uploaded:\", file.name, file.type, `(${(file.size / 1024 / 1024).toFixed(2)} MB)`);\n }\n } else {\n alert(\"Please select an audio or video file.\");\n }\n }\n // Reset input so the same file can be selected again\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n };\n\n const handleConnectSource = (sourceId) => {\n const source = dummyDataSources.find((s) => s.id === sourceId);\n if (source && source.status === \"available\") {\n setConnectedSource(source);\n if (onConnectSource) {\n onConnectSource(source);\n } else {\n console.log(\"Connected to:\", source.name);\n }\n }\n };\n\n const handleSelectProject = (projectId) => {\n const project = dummyProjects.find((p) => p.id === projectId);\n if (project) {\n setSelectedProject(project);\n if (onUseSample) {\n onUseSample(project);\n } else {\n console.log(\"Selected project:\", project.name);\n }\n }\n };\n\n const handleUploadClick = () => {\n if (fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n const handleSampleClick = () => {\n if (showExamples && !selectedProject) {\n // Show project selection if examples are enabled\n return;\n }\n if (onUseSample) {\n onUseSample(selectedProject || { id: \"default\", name: \"Demo Project\" });\n }\n };\n\n const handleConnectClick = () => {\n if (showExamples && !connectedSource) {\n // Show data source selection if examples are enabled\n return;\n }\n if (onConnectSource) {\n onConnectSource(connectedSource || { id: \"default\", name: \"Data Source\" });\n }\n };\n\n const options = [\n {\n id: \"upload\",\n icon: Upload,\n title: \"Upload an interaction\",\n description:\n \"Drop an audio or video recording to see what Compass surfaces\",\n recommended: false,\n onClick: handleUploadClick,\n },\n {\n id: \"sample\",\n icon: Sparkles,\n title: \"Explore a demonstration project\",\n description:\n \"See how Chordia Compass surfaces insights from real interaction data\",\n recommended: true,\n onClick: handleSampleClick,\n },\n {\n id: \"connect\",\n icon: Link,\n title: \"Connect a data source\",\n description:\n \"Link your existing system to automatically analyze interactions\",\n recommended: false,\n onClick: handleConnectClick,\n },\n ];\n\n return (\n <div\n style={{\n minHeight: \"100vh\",\n background: \"var(--surface-warm)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n padding: \"32px\",\n }}\n >\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept=\"audio/*,video/*\"\n onChange={handleFileUpload}\n style={{ display: \"none\" }}\n />\n <div style={{ maxWidth: \"680px\", width: \"100%\" }}>\n {/* Header */}\n <div style={{ textAlign: \"center\", marginBottom: \"48px\" }}>\n <h1\n style={{\n fontSize: \"32px\",\n fontWeight: 760,\n letterSpacing: \"-0.02em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n marginBottom: \"12px\",\n lineHeight: 1.2,\n }}\n >\n Experience Compass with one interaction\n </h1>\n <p\n style={{\n fontSize: \"15px\",\n color: \"rgba(30, 33, 37, 0.65)\",\n lineHeight: 1.5,\n maxWidth: \"520px\",\n margin: \"0 auto\",\n }}\n >\n Compass surfaces evidence, signals, and actionable insights from\n customer interactions. Start by exploring what it reveals.\n </p>\n </div>\n\n {/* Options */}\n <div\n style={{\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\",\n }}\n >\n {options.map((option) => {\n const Icon = option.icon;\n const isHovered = hoveredCard === option.id;\n\n return (\n <button\n key={option.id}\n type=\"button\"\n onClick={option.onClick}\n onMouseEnter={() => setHoveredCard(option.id)}\n onMouseLeave={() => setHoveredCard(null)}\n style={{\n position: \"relative\",\n width: \"100%\",\n padding: \"24px 28px\",\n background: isHovered\n ? \"rgba(255, 255, 255, 0.95)\"\n : \"rgba(255, 255, 255, 0.85)\",\n border: option.recommended\n ? \"2px solid rgba(184, 156, 106, 0.35)\"\n : isHovered\n ? \"1px solid rgba(52, 58, 64, 0.20)\"\n : \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"16px\",\n cursor: \"pointer\",\n textAlign: \"left\",\n transition: \"all 0.2s ease\",\n transform: isHovered ? \"translateY(-2px)\" : \"translateY(0)\",\n boxShadow: isHovered\n ? \"0 12px 28px rgba(30, 33, 37, 0.12)\"\n : \"0 4px 12px rgba(30, 33, 37, 0.06)\",\n }}\n >\n {/* Recommended badge */}\n {option.recommended && (\n <div\n style={{\n position: \"absolute\",\n top: \"16px\",\n right: \"20px\",\n fontSize: \"10px\",\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: \"4px 8px\",\n borderRadius: \"6px\",\n border: \"1px solid rgba(184, 156, 106, 0.2)\",\n }}\n >\n Recommended\n </div>\n )}\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"18px\",\n }}\n >\n {/* Icon */}\n <div\n style={{\n width: \"48px\",\n height: \"48px\",\n borderRadius: \"12px\",\n background: option.recommended\n ? \"rgba(184, 156, 106, 0.12)\"\n : \"rgba(231, 212, 162, 0.20)\",\n border: option.recommended\n ? \"1px solid rgba(184, 156, 106, 0.25)\"\n : \"1px solid rgba(231, 212, 162, 0.35)\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n flexShrink: 0,\n }}\n >\n <Icon\n size={22}\n style={{\n color: option.recommended\n ? \"rgba(184, 156, 106, 0.75)\"\n : \"rgba(30, 33, 37, 0.52)\",\n }}\n />\n </div>\n\n {/* Content */}\n <div style={{ flex: 1, paddingTop: \"2px\" }}>\n <div\n style={{\n fontSize: \"17px\",\n fontWeight: 680,\n letterSpacing: \"-0.01em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n marginBottom: \"6px\",\n lineHeight: 1.3,\n }}\n >\n {option.title}\n </div>\n <div\n style={{\n fontSize: \"13.5px\",\n color: \"rgba(30, 33, 37, 0.62)\",\n lineHeight: 1.5,\n }}\n >\n {option.description}\n </div>\n </div>\n </div>\n </button>\n );\n })}\n </div>\n\n {/* Footer note */}\n <div\n style={{\n marginTop: \"32px\",\n textAlign: \"center\",\n fontSize: \"12px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n lineHeight: 1.5,\n }}\n >\n Your workspace has been created automatically. You can configure\n settings and add teammates later.\n </div>\n\n {/* Testing Examples Section */}\n {showExamples && (\n <div style={{ marginTop: \"48px\", paddingTop: \"32px\", borderTop: \"1px solid rgba(52, 58, 64, 0.12)\" }}>\n <h2\n style={{\n fontSize: \"20px\",\n fontWeight: 680,\n letterSpacing: \"-0.01em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n marginBottom: \"24px\",\n }}\n >\n Testing Examples\n </h2>\n\n {/* Uploaded File Example */}\n {uploadedFile && (\n <div\n style={{\n marginBottom: \"24px\",\n padding: \"16px\",\n background: \"rgba(255, 255, 255, 0.85)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"12px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: \"8px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <CheckCircle2 size={18} style={{ color: \"#1F8F5A\" }} />\n <span style={{ fontSize: \"14px\", fontWeight: 650, color: \"rgba(30, 33, 37, 0.92)\" }}>\n File Uploaded\n </span>\n </div>\n <button\n onClick={() => setUploadedFile(null)}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"4px\",\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <X size={16} style={{ color: \"rgba(30, 33, 37, 0.42)\" }} />\n </button>\n </div>\n <div style={{ fontSize: \"13px\", color: \"rgba(30, 33, 37, 0.65)\", lineHeight: 1.5 }}>\n <div><strong>Name:</strong> {uploadedFile.name}</div>\n <div><strong>Type:</strong> {uploadedFile.type}</div>\n <div><strong>Size:</strong> {(uploadedFile.size / 1024 / 1024).toFixed(2)} MB</div>\n <div><strong>Uploaded:</strong> {uploadedFile.lastModified.toLocaleString()}</div>\n </div>\n </div>\n )}\n\n {/* Demo Projects Selection */}\n {!selectedProject && (\n <div style={{ marginBottom: \"24px\" }}>\n <h3\n style={{\n fontSize: \"15px\",\n fontWeight: 650,\n color: \"rgba(30, 33, 37, 0.82)\",\n marginBottom: \"12px\",\n }}\n >\n Select a Demonstration Project:\n </h3>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\n {dummyProjects.map((project) => (\n <button\n key={project.id}\n onClick={() => handleSelectProject(project.id)}\n style={{\n padding: \"12px 16px\",\n background: \"rgba(255, 255, 255, 0.85)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"8px\",\n textAlign: \"left\",\n cursor: \"pointer\",\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.20)\";\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 }}\n >\n <div style={{ fontSize: \"14px\", fontWeight: 650, color: \"rgba(30, 33, 37, 0.92)\", marginBottom: \"4px\" }}>\n {project.name}\n </div>\n <div style={{ fontSize: \"12px\", color: \"rgba(30, 33, 37, 0.62)\", marginBottom: \"4px\" }}>\n {project.description}\n </div>\n <div style={{ fontSize: \"11px\", color: \"rgba(30, 33, 37, 0.52)\" }}>\n {project.interactions} interactions · {project.dateRange}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Selected Project Example */}\n {selectedProject && (\n <div\n style={{\n marginBottom: \"24px\",\n padding: \"16px\",\n background: \"rgba(255, 255, 255, 0.85)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"12px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: \"8px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <CheckCircle2 size={18} style={{ color: \"#1F8F5A\" }} />\n <span style={{ fontSize: \"14px\", fontWeight: 650, color: \"rgba(30, 33, 37, 0.92)\" }}>\n Project Selected: {selectedProject.name}\n </span>\n </div>\n <button\n onClick={() => setSelectedProject(null)}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"4px\",\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <X size={16} style={{ color: \"rgba(30, 33, 37, 0.42)\" }} />\n </button>\n </div>\n <div style={{ fontSize: \"13px\", color: \"rgba(30, 33, 37, 0.65)\", lineHeight: 1.5 }}>\n <div>{selectedProject.description}</div>\n <div style={{ marginTop: \"4px\" }}>\n <strong>{selectedProject.interactions}</strong> interactions · <strong>{selectedProject.dateRange}</strong>\n </div>\n </div>\n </div>\n )}\n\n {/* Data Sources Selection */}\n {!connectedSource && (\n <div style={{ marginBottom: \"24px\" }}>\n <h3\n style={{\n fontSize: \"15px\",\n fontWeight: 650,\n color: \"rgba(30, 33, 37, 0.82)\",\n marginBottom: \"12px\",\n }}\n >\n Connect a Data Source:\n </h3>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"8px\" }}>\n {dummyDataSources.map((source) => (\n <button\n key={source.id}\n onClick={() => handleConnectSource(source.id)}\n disabled={source.status === \"coming-soon\"}\n style={{\n padding: \"12px 16px\",\n background: source.status === \"coming-soon\" \n ? \"rgba(255, 255, 255, 0.5)\" \n : \"rgba(255, 255, 255, 0.85)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"8px\",\n textAlign: \"left\",\n cursor: source.status === \"coming-soon\" ? \"not-allowed\" : \"pointer\",\n transition: \"all 0.15s ease\",\n opacity: source.status === \"coming-soon\" ? 0.6 : 1,\n }}\n onMouseEnter={(e) => {\n if (source.status !== \"coming-soon\") {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.95)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.20)\";\n }\n }}\n onMouseLeave={(e) => {\n if (source.status !== \"coming-soon\") {\n e.currentTarget.style.background = \"rgba(255, 255, 255, 0.85)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.12)\";\n }\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\" }}>\n <div>\n <div style={{ fontSize: \"14px\", fontWeight: 650, color: \"rgba(30, 33, 37, 0.92)\", marginBottom: \"4px\" }}>\n {source.name}\n </div>\n <div style={{ fontSize: \"12px\", color: \"rgba(30, 33, 37, 0.62)\" }}>\n {source.description}\n </div>\n </div>\n {source.status === \"coming-soon\" && (\n <span\n style={{\n fontSize: \"10px\",\n fontWeight: 600,\n color: \"rgba(30, 33, 37, 0.42)\",\n background: \"rgba(30, 33, 37, 0.08)\",\n padding: \"4px 8px\",\n borderRadius: \"4px\",\n }}\n >\n Coming Soon\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n\n {/* Connected Source Example */}\n {connectedSource && (\n <div\n style={{\n marginBottom: \"24px\",\n padding: \"16px\",\n background: \"rgba(255, 255, 255, 0.85)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"12px\",\n }}\n >\n <div style={{ display: \"flex\", alignItems: \"center\", justifyContent: \"space-between\", marginBottom: \"8px\" }}>\n <div style={{ display: \"flex\", alignItems: \"center\", gap: \"8px\" }}>\n <CheckCircle2 size={18} style={{ color: \"#1F8F5A\" }} />\n <span style={{ fontSize: \"14px\", fontWeight: 650, color: \"rgba(30, 33, 37, 0.92)\" }}>\n Connected: {connectedSource.name}\n </span>\n </div>\n <button\n onClick={() => setConnectedSource(null)}\n style={{\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n padding: \"4px\",\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <X size={16} style={{ color: \"rgba(30, 33, 37, 0.42)\" }} />\n </button>\n </div>\n <div style={{ fontSize: \"13px\", color: \"rgba(30, 33, 37, 0.65)\", lineHeight: 1.5 }}>\n {connectedSource.description}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport {\n X,\n CheckCircle2,\n Circle,\n ChevronRight,\n Sparkles,\n Users,\n FolderOpen,\n Link,\n Settings,\n BookOpen,\n} from \"lucide-react\";\n\n/**\n * OnboardingChecklist Component\n * Displays a collapsible checklist of onboarding tasks with progress tracking.\n * Shows completed items with checkmarks and allows interaction with incomplete items.\n */\nexport default function OnboardingChecklist({\n onDismiss,\n onItemClick,\n completedItems = [],\n}) {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const [hoveredItem, setHoveredItem] = useState(null);\n\n const checklistItems = [\n {\n id: \"name-project\",\n title: \"Name your workspace\",\n description: \"Give your default project a meaningful name\",\n icon: FolderOpen,\n completed: completedItems.includes(\"name-project\"),\n optional: true,\n },\n {\n id: \"evaluate-second-interaction\",\n title: \"Evaluate another interaction\",\n description: \"Upload or connect a second interaction to see patterns\",\n icon: Sparkles,\n completed: completedItems.includes(\"evaluate-second-interaction\"),\n },\n {\n id: \"connect-source\",\n title: \"Connect a data source\",\n description: \"Link your system or platform for automatic evaluation\",\n icon: Link,\n completed: completedItems.includes(\"connect-source\"),\n },\n {\n id: \"invite-team\",\n title: \"Add teammates\",\n description: \"Invite managers or QA team members to collaborate\",\n icon: Users,\n completed: completedItems.includes(\"invite-team\"),\n optional: true,\n },\n {\n id: \"learn-concepts\",\n title: \"Understand Chordia concepts\",\n description: \"Learn how conditions, evidence, and confidence work\",\n icon: BookOpen,\n completed: completedItems.includes(\"learn-concepts\"),\n optional: true,\n },\n {\n id: \"configure-scope\",\n title: \"Clarify evaluation scope\",\n description: \"Customize which signals and conditions matter for your team\",\n icon: Settings,\n completed: completedItems.includes(\"configure-scope\"),\n optional: true,\n },\n ];\n\n const completedCount = checklistItems.filter((item) => item.completed).length;\n const totalCount = checklistItems.length;\n const progressPercent = (completedCount / totalCount) * 100;\n\n if (isCollapsed) {\n return (\n <button\n type=\"button\"\n onClick={() => setIsCollapsed(false)}\n style={{\n width: \"100%\",\n padding: \"14px 16px\",\n background: \"rgba(255, 255, 255, 0.85)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"12px\",\n cursor: \"pointer\",\n textAlign: \"left\",\n transition: \"all 0.15s ease\",\n boxShadow: \"0 2px 8px rgba(30, 33, 37, 0.04)\",\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.18)\";\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 }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: \"12px\",\n }}\n >\n <div\n style={{\n fontSize: \"13px\",\n fontWeight: 600,\n color: \"rgba(30, 33, 37, 0.75)\",\n }}\n >\n Getting started ({completedCount}/{totalCount})\n </div>\n <ChevronRight size={16} style={{ color: \"rgba(30, 33, 37, 0.42)\" }} />\n </div>\n </button>\n );\n }\n\n return (\n <div\n style={{\n background: \"rgba(255, 255, 255, 0.85)\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"16px\",\n overflow: \"hidden\",\n boxShadow: \"0 4px 16px rgba(30, 33, 37, 0.06)\",\n }}\n >\n {/* Header */}\n <div\n style={{\n padding: \"18px 20px 16px\",\n borderBottom: \"1px solid rgba(52, 58, 64, 0.08)\",\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: \"12px\",\n }}\n >\n <div style={{ flex: 1 }}>\n <div\n style={{\n fontSize: \"15px\",\n fontWeight: 680,\n letterSpacing: \"-0.01em\",\n color: \"rgba(30, 33, 37, 0.92)\",\n marginBottom: \"6px\",\n lineHeight: 1.3,\n }}\n >\n Getting started with Chordia\n </div>\n <div\n style={{\n fontSize: \"12px\",\n color: \"rgba(30, 33, 37, 0.58)\",\n lineHeight: 1.4,\n }}\n >\n {completedCount} of {totalCount} completed\n </div>\n </div>\n <div style={{ display: \"flex\", gap: \"4px\" }}>\n {/* Collapse button */}\n <button\n type=\"button\"\n onClick={() => setIsCollapsed(true)}\n style={{\n width: \"28px\",\n height: \"28px\",\n borderRadius: \"6px\",\n background: \"transparent\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.15s ease\",\n color: \"rgba(30, 33, 37, 0.52)\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(231, 212, 162, 0.12)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.18)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.12)\";\n }}\n title=\"Collapse\"\n >\n <ChevronRight size={14} />\n </button>\n {/* Dismiss button */}\n {onDismiss && (\n <button\n type=\"button\"\n onClick={onDismiss}\n style={{\n width: \"28px\",\n height: \"28px\",\n borderRadius: \"6px\",\n background: \"transparent\",\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n cursor: \"pointer\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n transition: \"all 0.15s ease\",\n color: \"rgba(30, 33, 37, 0.52)\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"rgba(231, 212, 162, 0.12)\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.18)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n e.currentTarget.style.borderColor = \"rgba(52, 58, 64, 0.12)\";\n }}\n title=\"Dismiss checklist\"\n >\n <X size={14} />\n </button>\n )}\n </div>\n </div>\n {/* Progress bar */}\n <div\n style={{\n marginTop: \"14px\",\n height: \"6px\",\n background: \"rgba(30, 33, 37, 0.08)\",\n borderRadius: \"999px\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n height: \"100%\",\n width: `${progressPercent}%`,\n background:\n \"linear-gradient(90deg, rgba(184, 156, 106, 0.75) 0%, rgba(139, 157, 127, 0.75) 100%)\",\n borderRadius: \"999px\",\n transition: \"width 0.4s ease\",\n }}\n />\n </div>\n </div>\n\n {/* Checklist items */}\n <div style={{ padding: \"8px\" }}>\n {checklistItems.map((item, index) => {\n const Icon = item.icon;\n const isHovered = hoveredItem === item.id;\n\n return (\n <button\n key={item.id}\n type=\"button\"\n onClick={() => onItemClick?.(item.id)}\n onMouseEnter={() => setHoveredItem(item.id)}\n onMouseLeave={() => setHoveredItem(null)}\n disabled={item.completed}\n style={{\n width: \"100%\",\n padding: \"12px 14px\",\n background: item.completed\n ? \"rgba(139, 157, 127, 0.06)\"\n : isHovered\n ? \"rgba(231, 212, 162, 0.12)\"\n : \"transparent\",\n border: \"none\",\n borderRadius: \"10px\",\n cursor: item.completed ? \"default\" : \"pointer\",\n textAlign: \"left\",\n transition: \"all 0.15s ease\",\n marginBottom: index < checklistItems.length - 1 ? \"4px\" : \"0\",\n opacity: item.completed ? 0.7 : 1,\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n gap: \"12px\",\n }}\n >\n {/* Icon/Checkbox */}\n <div\n style={{\n width: \"20px\",\n height: \"20px\",\n marginTop: \"1px\",\n flexShrink: 0,\n }}\n >\n {item.completed ? (\n <CheckCircle2\n size={20}\n style={{ color: \"rgba(139, 157, 127, 0.75)\" }}\n />\n ) : (\n <Circle\n size={20}\n style={{ color: \"rgba(30, 33, 37, 0.24)\" }}\n />\n )}\n </div>\n {/* Content */}\n <div style={{ flex: 1, minWidth: 0 }}>\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n marginBottom: \"3px\",\n }}\n >\n <Icon\n size={14}\n style={{ color: \"rgba(30, 33, 37, 0.52)\", flexShrink: 0 }}\n />\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 600,\n color: item.completed\n ? \"rgba(30, 33, 37, 0.52)\"\n : \"rgba(30, 33, 37, 0.85)\",\n textDecoration: item.completed ? \"line-through\" : \"none\",\n lineHeight: 1.3,\n }}\n >\n {item.title}\n </span>\n {item.optional && !item.completed && (\n <span\n style={{\n fontSize: \"9px\",\n fontWeight: 600,\n letterSpacing: \"0.04em\",\n textTransform: \"uppercase\",\n color: \"rgba(30, 33, 37, 0.42)\",\n background: \"rgba(30, 33, 37, 0.06)\",\n padding: \"2px 5px\",\n borderRadius: \"4px\",\n }}\n >\n Optional\n </span>\n )}\n </div>\n <div\n style={{\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n lineHeight: 1.4,\n paddingLeft: \"22px\",\n }}\n >\n {item.description}\n </div>\n </div>\n {/* Arrow indicator (only for incomplete items on hover) */}\n {!item.completed && isHovered && (\n <ChevronRight\n size={16}\n style={{\n color: \"rgba(30, 33, 37, 0.32)\",\n marginTop: \"2px\",\n flexShrink: 0,\n }}\n />\n )}\n </div>\n </button>\n );\n })}\n </div>\n\n {/* Footer note */}\n <div\n style={{\n padding: \"12px 20px 16px\",\n borderTop: \"1px solid rgba(52, 58, 64, 0.08)\",\n }}\n >\n <div\n style={{\n fontSize: \"11px\",\n color: \"rgba(30, 33, 37, 0.52)\",\n lineHeight: 1.5,\n fontStyle: \"italic\",\n }}\n >\n You can dismiss this checklist anytime. These steps help you get the\n most from Chordia, but {'aren\\'t'} required.\n </div>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React from \"react\";\n\n/**\n * DemoProjectBanner Component\n * Displays a diagonal banner in the top-right corner indicating a demo project.\n * Creates a triangular ribbon effect with rotated text.\n */\nexport default function DemoProjectBanner({\n text = \"Demo Project\",\n accentColor = \"#B89C6A\",\n textColor = \"rgba(255, 255, 255, 0.95)\",\n size = \"medium\",\n position = \"fixed\",\n}) {\n // Size configurations\n const sizeConfig = {\n small: {\n width: 140,\n height: 140,\n fontSize: \"11px\",\n letterSpacing: \"0.08em\",\n fontWeight: 650,\n },\n medium: {\n width: 180,\n height: 180,\n fontSize: \"12px\",\n letterSpacing: \"0.1em\",\n fontWeight: 680,\n },\n large: {\n width: 220,\n height: 220,\n fontSize: \"13px\",\n letterSpacing: \"0.12em\",\n fontWeight: 700,\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div\n style={{\n position: position,\n top: 0,\n right: 0,\n width: config.width,\n height: config.height,\n overflow: \"hidden\",\n zIndex: position === \"fixed\" ? 9999 : 1,\n pointerEvents: \"none\",\n }}\n >\n {/* Triangle background */}\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: 0,\n width: 0,\n height: 0,\n borderStyle: \"solid\",\n borderWidth: `0 ${config.width}px ${config.height}px 0`,\n borderColor: `transparent ${accentColor} transparent transparent`,\n opacity: 0.92,\n }}\n />\n\n {/* Diagonal stripe for depth */}\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: 0,\n width: 0,\n height: 0,\n borderStyle: \"solid\",\n borderWidth: `0 ${config.width}px ${config.height}px 0`,\n borderColor: \"transparent rgba(0, 0, 0, 0.08) transparent transparent\",\n }}\n />\n\n {/* Text container - rotated 45deg */}\n <div\n style={{\n position: \"absolute\",\n top:\n size === \"small\"\n ? \"28px\"\n : size === \"medium\"\n ? \"38px\"\n : \"48px\",\n right:\n size === \"small\"\n ? \"-32px\"\n : size === \"medium\"\n ? \"-42px\"\n : \"-52px\",\n width:\n size === \"small\" ? \"160px\" : size === \"medium\" ? \"200px\" : \"240px\",\n transform: \"rotate(45deg)\",\n transformOrigin: \"center\",\n textAlign: \"center\",\n }}\n >\n <div\n style={{\n fontSize: config.fontSize,\n fontWeight: config.fontWeight,\n letterSpacing: config.letterSpacing,\n textTransform: \"uppercase\",\n color: textColor,\n textShadow: \"0 1px 2px rgba(0, 0, 0, 0.15)\",\n whiteSpace: \"nowrap\",\n userSelect: \"none\",\n }}\n >\n {text}\n </div>\n </div>\n\n {/* Subtle shadow for depth */}\n <div\n style={{\n position: \"absolute\",\n top: 0,\n right: 0,\n width: config.width,\n height: config.height,\n background:\n \"linear-gradient(135deg, transparent 0%, rgba(0, 0, 0, 0.04) 100%)\",\n pointerEvents: \"none\",\n }}\n />\n </div>\n );\n}\n\n","\"use client\";\nimport React, { useState } from 'react';\nimport { Lock, Mail, Eye, EyeOff, ArrowRight } from 'lucide-react';\n\n// Logo asset — concentric circles + wordmark\n// const LOGO_URL = new URL('../../assets/chordia-logo.png', import.meta.url).href;\nconst LOGO_URL = \"../../assets/chordia-logo.png\";\n\n/**\n * LoginForm — Chordia design system login component.\n *\n * Warm parchment aesthetic. Gold accents on focus, earth-tone CTA.\n * Purple is intentionally avoided — it's reserved for AI presence.\n *\n * Props:\n * - title: string (default: \"Chordia\") — only shown if no logo\n * - subtitle: string (default: \"Sign in to continue\")\n * - logo: ReactNode (optional — replaces the default logo image + subtitle)\n * - onLogin: (email, password) => Promise<void> | void\n * - loading: boolean\n * - error: string | null\n * - footer: ReactNode (optional — e.g. links, version info)\n * - showLabels: boolean (default: true)\n * - emailPlaceholder: string\n * - passwordPlaceholder: string\n * - onForgotPassword: () => void (optional — shows \"Forgot password?\" link)\n * - compact: boolean (default: false — skips the full-page centering wrapper)\n */\nexport default function LoginForm({\n title = 'Chordia',\n subtitle = 'Sign in to continue',\n logo,\n onLogin,\n loading = false,\n error = null,\n footer,\n showLabels = true,\n emailPlaceholder = 'you@company.com',\n passwordPlaceholder = 'Password',\n onForgotPassword,\n compact = false,\n}) {\n const [email, setEmail] = useState('');\n const [password, setPassword] = useState('');\n const [showPassword, setShowPassword] = useState(false);\n const [focused, setFocused] = useState(null);\n\n const handleSubmit = (e) => {\n e.preventDefault();\n if (!email || !password || loading) return;\n onLogin?.(email, password);\n };\n\n const canSubmit = email && password && !loading;\n\n // Warm earth accent — compliance orange, used for focus/CTA (not purple)\n const accentColor = 'var(--rail-compliance)';\n const accentRgba = '201, 138, 90'; // --rail-compliance raw\n\n const card = (\n <div style={{\n width: '100%',\n maxWidth: 400,\n background: 'var(--paper-elevated)',\n border: '1px solid var(--border)',\n borderRadius: 'var(--radius-lg)',\n padding: '44px 36px 36px',\n boxShadow: '0 8px 32px rgba(30, 33, 37, 0.06), 0 1px 3px rgba(30, 33, 37, 0.04)',\n position: 'relative',\n overflow: 'hidden',\n }}>\n {/* Decorative top rail — warm gold gradient */}\n <div style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: 3,\n background: `linear-gradient(90deg, var(--state-unknown), ${accentColor})`,\n opacity: 0.6,\n }} />\n\n {/* Logo / Title area */}\n <div style={{ textAlign: 'center', marginBottom: 32 }}>\n {logo || (\n <>\n {/* Logo on a dark pill so the light-colored asset is visible */}\n <div style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: '12px 24px',\n borderRadius: 'var(--radius-lg)',\n background: 'rgba(30, 33, 37, 0.92)',\n marginBottom: 16,\n }}>\n <img\n src={LOGO_URL}\n alt={title}\n style={{ height: 28, display: 'block' }}\n />\n </div>\n {subtitle && (\n <p style={{\n fontSize: 'var(--text-sm)',\n color: 'var(--text-muted)',\n marginTop: 4,\n marginBottom: 0,\n }}>{subtitle}</p>\n )}\n </>\n )}\n </div>\n\n <form onSubmit={handleSubmit}>\n {/* Email field */}\n <div style={{ marginBottom: 18 }}>\n {showLabels && (\n <label style={{\n display: 'block',\n fontSize: 'var(--text-sm)',\n fontWeight: 550,\n color: 'var(--text-strong)',\n marginBottom: 6,\n fontFamily: 'var(--font-sans)',\n }}>Email</label>\n )}\n <div style={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\n <Mail size={15} style={{\n position: 'absolute',\n left: 12,\n color: focused === 'email' ? `rgba(${accentRgba}, 0.7)` : 'var(--text-faint)',\n pointerEvents: 'none',\n transition: 'color 0.2s ease',\n }} />\n <input\n type=\"email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder={emailPlaceholder}\n required\n autoFocus\n autoComplete=\"email\"\n style={{\n width: '100%',\n padding: '11px 12px 11px 38px',\n fontSize: 'var(--text-md)',\n border: '1px solid',\n borderColor: focused === 'email' ? accentColor : 'var(--border)',\n borderRadius: 'var(--radius)',\n backgroundColor: focused === 'email' ? 'rgba(255,255,255,0.95)' : 'var(--paper)',\n color: 'var(--text-ink)',\n fontFamily: 'var(--font-sans)',\n outline: 'none',\n transition: 'border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease',\n boxShadow: focused === 'email' ? `0 0 0 3px rgba(${accentRgba}, 0.1)` : 'none',\n }}\n onFocus={() => setFocused('email')}\n onBlur={() => setFocused(null)}\n />\n </div>\n </div>\n\n {/* Password field */}\n <div style={{ marginBottom: 6 }}>\n {showLabels && (\n <label style={{\n display: 'block',\n fontSize: 'var(--text-sm)',\n fontWeight: 550,\n color: 'var(--text-strong)',\n marginBottom: 6,\n fontFamily: 'var(--font-sans)',\n }}>Password</label>\n )}\n <div style={{ position: 'relative', display: 'flex', alignItems: 'center' }}>\n <Lock size={15} style={{\n position: 'absolute',\n left: 12,\n color: focused === 'password' ? `rgba(${accentRgba}, 0.7)` : 'var(--text-faint)',\n pointerEvents: 'none',\n transition: 'color 0.2s ease',\n }} />\n <input\n type={showPassword ? 'text' : 'password'}\n value={password}\n onChange={(e) => setPassword(e.target.value)}\n placeholder={passwordPlaceholder}\n required\n autoComplete=\"current-password\"\n style={{\n width: '100%',\n padding: '11px 42px 11px 38px',\n fontSize: 'var(--text-md)',\n border: '1px solid',\n borderColor: focused === 'password' ? accentColor : 'var(--border)',\n borderRadius: 'var(--radius)',\n backgroundColor: focused === 'password' ? 'rgba(255,255,255,0.95)' : 'var(--paper)',\n color: 'var(--text-ink)',\n fontFamily: 'var(--font-sans)',\n outline: 'none',\n transition: 'border-color 0.2s ease, background-color 0.2s ease, box-shadow 0.2s ease',\n boxShadow: focused === 'password' ? `0 0 0 3px rgba(${accentRgba}, 0.1)` : 'none',\n }}\n onFocus={() => setFocused('password')}\n onBlur={() => setFocused(null)}\n />\n <button\n type=\"button\"\n onClick={() => setShowPassword(!showPassword)}\n style={{\n position: 'absolute',\n right: 8,\n background: 'none',\n border: 'none',\n padding: 4,\n cursor: 'pointer',\n color: 'var(--text-faint)',\n display: 'flex',\n alignItems: 'center',\n transition: 'color 0.15s ease',\n borderRadius: 'var(--radius-sm)',\n }}\n tabIndex={-1}\n onMouseEnter={(e) => { e.currentTarget.style.color = 'var(--text-muted)'; }}\n onMouseLeave={(e) => { e.currentTarget.style.color = 'var(--text-faint)'; }}\n >\n {showPassword ? <EyeOff size={16} /> : <Eye size={16} />}\n </button>\n </div>\n </div>\n\n {/* Forgot password link */}\n {onForgotPassword && (\n <div style={{ textAlign: 'right', marginBottom: 4 }}>\n <button\n type=\"button\"\n onClick={onForgotPassword}\n style={{\n background: 'none',\n border: 'none',\n padding: '2px 0',\n fontSize: 'var(--text-xs)',\n color: 'var(--text-muted)',\n cursor: 'pointer',\n fontFamily: 'var(--font-sans)',\n transition: 'color 0.15s ease',\n }}\n onMouseEnter={(e) => { e.currentTarget.style.color = 'var(--text-strong)'; }}\n onMouseLeave={(e) => { e.currentTarget.style.color = 'var(--text-muted)'; }}\n >\n Forgot password?\n </button>\n </div>\n )}\n\n {/* Error message — gold warning tint, no red */}\n {error && (\n <div style={{\n fontSize: 'var(--text-sm)',\n color: 'var(--text-strong)',\n marginTop: 12,\n padding: '8px 12px',\n background: 'color-mix(in srgb, var(--state-unknown) 10%, transparent)',\n border: '1px solid color-mix(in srgb, var(--state-unknown) 25%, transparent)',\n borderRadius: 'var(--radius-sm)',\n textAlign: 'center',\n fontWeight: 500,\n }}>{error}</div>\n )}\n\n {/* Submit button — dark ink, warm and authoritative */}\n <button\n type=\"submit\"\n disabled={!canSubmit}\n style={{\n width: '100%',\n padding: '11px 0',\n marginTop: 20,\n background: canSubmit ? 'var(--text-ink)' : 'var(--text-xfaint)',\n color: '#ffffff',\n border: 'none',\n borderRadius: 'var(--radius)',\n fontSize: 'var(--text-md)',\n fontWeight: 600,\n fontFamily: 'var(--font-sans)',\n cursor: canSubmit ? 'pointer' : 'not-allowed',\n transition: 'opacity 0.15s ease, transform 0.1s ease',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n }}\n onMouseEnter={(e) => {\n if (canSubmit) {\n e.currentTarget.style.opacity = '0.85';\n e.currentTarget.style.transform = 'translateY(-1px)';\n }\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '1';\n e.currentTarget.style.transform = 'translateY(0)';\n }}\n onMouseDown={(e) => {\n if (canSubmit) e.currentTarget.style.transform = 'translateY(0)';\n }}\n onMouseUp={(e) => {\n if (canSubmit) e.currentTarget.style.transform = 'translateY(-1px)';\n }}\n >\n {loading ? 'Signing in…' : (\n <>\n Sign In\n <ArrowRight size={16} />\n </>\n )}\n </button>\n </form>\n\n {/* Divider + Footer */}\n {footer && (\n <>\n <div style={{\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n margin: '24px 0 16px',\n }}>\n <div style={{ flex: 1, height: 1, background: 'var(--border)' }} />\n <span style={{ fontSize: 'var(--text-xs)', color: 'var(--text-faint)' }}>or</span>\n <div style={{ flex: 1, height: 1, background: 'var(--border)' }} />\n </div>\n <div style={{\n textAlign: 'center',\n fontSize: 'var(--text-xs)',\n color: 'var(--text-faint)',\n }}>{footer}</div>\n </>\n )}\n </div>\n );\n\n if (compact) return card;\n\n return (\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n background: 'var(--bg-chordia)',\n padding: 'var(--spacing-6)',\n }}>\n {card}\n </div>\n );\n}\n","\"use client\";\n\nimport React, { useState, useRef, useCallback, useEffect, useLayoutEffect } from \"react\";\n\n/**\n * SplitPane Component\n * Resizable two-pane layout with draggable divider and collapsible panels.\n *\n * Props:\n * left - React node for left pane\n * right - React node for right pane\n * defaultWidth - Initial left pane width in px (default: 260). Ignored if defaultRatio is set.\n * defaultRatio - Initial left pane width as ratio 0-1 (e.g. 0.5 for 50%). Overrides defaultWidth.\n * minWidth - Minimum left pane width in px (default: 180)\n * maxWidth - Maximum left pane width in px (default: 450)\n * minRatio - Minimum left pane width as ratio 0-1. Overrides minWidth when set.\n * maxRatio - Maximum left pane width as ratio 0-1. Overrides maxWidth when set.\n * collapsedWidth - Width of the collapsed strip in px (default: 0)\n * collapsed - Controlled collapsed state (optional)\n * onCollapsedChange - (collapsed: boolean) => void (optional)\n * collapseSide - Which side(s) can collapse: \"left\" | \"right\" | \"both\" | \"none\" (default: \"left\")\n * collapseThreshold - Drag below this px to auto-collapse left (default: minWidth - 40)\n * dividerWidth - Divider hit area width in px (default: 7)\n * style - Style for the outer container\n */\nexport default function SplitPane({\n left,\n right,\n defaultWidth = 260,\n defaultRatio,\n minWidth = 180,\n maxWidth = 450,\n minRatio,\n maxRatio,\n collapsedWidth = 0,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n collapseSide = \"left\",\n collapseThreshold,\n dividerWidth = 7,\n style,\n}) {\n const isControlled = controlledCollapsed !== undefined;\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const collapsed = isControlled ? controlledCollapsed : internalCollapsed;\n\n const setCollapsed = useCallback(\n (val) => {\n const next = typeof val === \"function\" ? val(collapsed) : val;\n if (!isControlled) setInternalCollapsed(next);\n onCollapsedChange?.(next);\n },\n [isControlled, collapsed, onCollapsedChange]\n );\n\n const containerRef = useRef(null);\n const [containerWidth, setContainerWidth] = useState(0);\n const [width, setWidth] = useState(defaultWidth);\n const [dragging, setDragging] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const startXRef = useRef(0);\n const startWidthRef = useRef(0);\n\n // Measure container and set initial width from ratio\n useLayoutEffect(() => {\n if (!containerRef.current) return;\n const w = containerRef.current.offsetWidth;\n setContainerWidth(w);\n if (!initialized && w > 0) {\n if (defaultRatio != null) {\n setWidth(Math.round(w * defaultRatio));\n }\n setInitialized(true);\n }\n }, []);\n\n // Observe container resize\n useEffect(() => {\n if (!containerRef.current) return;\n const ro = new ResizeObserver((entries) => {\n for (const entry of entries) {\n setContainerWidth(entry.contentRect.width);\n }\n });\n ro.observe(containerRef.current);\n return () => ro.disconnect();\n }, []);\n\n // Compute effective min/max from ratios if provided\n const effectiveMin = minRatio != null ? Math.round(containerWidth * minRatio) : minWidth;\n const effectiveMax = maxRatio != null ? Math.round(containerWidth * maxRatio) : maxWidth;\n const effectiveCollapseThreshold =\n collapseThreshold ?? (collapseSide === \"none\" ? 0 : effectiveMin - 40);\n\n const handleMouseDown = useCallback(\n (e) => {\n e.preventDefault();\n startXRef.current = e.clientX;\n startWidthRef.current = collapsed ? collapsedWidth : width;\n setDragging(true);\n },\n [width, collapsed, collapsedWidth]\n );\n\n useEffect(() => {\n if (!dragging) return;\n\n const handleMouseMove = (e) => {\n const delta = e.clientX - startXRef.current;\n const newWidth = startWidthRef.current + delta;\n\n const canCollapseLeft = collapseSide === \"left\" || collapseSide === \"both\";\n const canCollapseRight = collapseSide === \"right\" || collapseSide === \"both\";\n\n // Collapse left: dragged too far left\n if (canCollapseLeft && newWidth < effectiveCollapseThreshold) {\n if (!collapsed) setCollapsed(true);\n return;\n }\n\n // Collapse right: dragged too far right (right pane too narrow)\n const rightRemaining = containerWidth - newWidth - dividerWidth;\n if (canCollapseRight && containerWidth > 0 && rightRemaining < effectiveCollapseThreshold) {\n // Don't collapse right in this version — just clamp at max\n }\n\n if (collapsed) setCollapsed(false);\n setWidth(Math.min(Math.max(newWidth, effectiveMin), effectiveMax));\n };\n\n const handleMouseUp = () => setDragging(false);\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n document.body.style.userSelect = \"none\";\n document.body.style.cursor = \"col-resize\";\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n document.body.style.userSelect = \"\";\n document.body.style.cursor = \"\";\n };\n }, [\n dragging, collapsed, effectiveMin, effectiveMax, effectiveCollapseThreshold,\n containerWidth, dividerWidth, collapseSide, setCollapsed,\n ]);\n\n const handleDoubleClick = useCallback(() => {\n if (collapseSide !== \"none\") {\n setCollapsed((c) => !c);\n }\n }, [setCollapsed, collapseSide]);\n\n const actualLeftWidth = collapsed ? collapsedWidth : width;\n\n return (\n <div\n ref={containerRef}\n style={{\n display: \"flex\",\n height: \"100%\",\n overflow: \"hidden\",\n position: \"relative\",\n ...style,\n }}\n >\n {/* Left pane */}\n {(actualLeftWidth > 0 || !collapsed) && (\n <div\n style={{\n width: actualLeftWidth,\n flexShrink: 0,\n overflow: \"hidden\",\n transition: dragging ? \"none\" : \"width 0.2s ease\",\n height: \"100%\",\n border: \"1px solid\",\n borderColor: \"var(--border-subtle)\",\n }}\n >\n {!collapsed && left}\n </div>\n )}\n\n {/* Divider */}\n <div\n onMouseDown={handleMouseDown}\n onDoubleClick={handleDoubleClick}\n style={{\n width: `${dividerWidth}px`,\n flexShrink: 0,\n cursor: \"col-resize\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n zIndex: 2,\n }}\n >\n {/* Visual line */}\n {/* <div\n style={{\n width: \"1px\",\n height: \"100%\",\n background: dragging\n ? \"var(--rail-discovery, #5E88B0)\"\n : \"var(--border, rgba(52,58,64,0.12))\",\n transition: \"background 0.15s ease\",\n }}\n /> */}\n {/* Hover grip */}\n <div\n style={{\n position: \"absolute\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"5px\",\n height: \"28px\",\n borderRadius: \"3px\",\n background: dragging\n ? \"var(--rail-discovery, #5E88B0)\"\n : \"var(--border, rgba(52,58,64,0.12))\",\n opacity: dragging ? 1 : 0,\n transition: \"opacity 0.15s ease, background 0.15s ease\",\n }}\n className=\"splitpane-grip\"\n />\n <style>{`\n div:hover > .splitpane-grip { opacity: 0.7 !important; }\n `}</style>\n </div>\n\n {/* Right pane */}\n <div\n style={{\n flex: 1,\n minWidth: 0,\n overflow: \"hidden\",\n height: \"100%\",\n }}\n >\n {right}\n </div>\n </div>\n );\n}\n"],"names":["FirstCallScreen","onUploadCall","onConnectSource","onUseSample","showExamples","hoveredCard","setHoveredCard","useState","uploadedFile","setUploadedFile","connectedSource","setConnectedSource","selectedProject","setSelectedProject","fileInputRef","useRef","dummyDataSources","dummyProjects","handleFileUpload","event","file","_a","isAudio","isVideo","handleConnectSource","sourceId","source","s","handleSelectProject","projectId","project","p","jsxs","jsx","Upload","Sparkles","Link","option","Icon","isHovered","CheckCircle2","X","e","OnboardingChecklist","onDismiss","onItemClick","completedItems","isCollapsed","setIsCollapsed","hoveredItem","setHoveredItem","checklistItems","FolderOpen","Users","BookOpen","Settings","completedCount","item","totalCount","progressPercent","ChevronRight","index","Circle","DemoProjectBanner","text","accentColor","textColor","size","position","config","LOGO_URL","LoginForm","title","subtitle","logo","onLogin","loading","error","footer","showLabels","emailPlaceholder","passwordPlaceholder","onForgotPassword","compact","email","setEmail","password","setPassword","showPassword","setShowPassword","focused","setFocused","handleSubmit","canSubmit","accentRgba","card","Fragment","Mail","Lock","EyeOff","Eye","ArrowRight","SplitPane","left","right","defaultWidth","defaultRatio","minWidth","maxWidth","minRatio","maxRatio","collapsedWidth","controlledCollapsed","onCollapsedChange","collapseSide","collapseThreshold","dividerWidth","style","isControlled","internalCollapsed","setInternalCollapsed","collapsed","setCollapsed","useCallback","val","next","containerRef","containerWidth","setContainerWidth","width","setWidth","dragging","setDragging","initialized","setInitialized","startXRef","startWidthRef","useLayoutEffect","w","useEffect","ro","entries","entry","effectiveMin","effectiveMax","effectiveCollapseThreshold","handleMouseDown","handleMouseMove","delta","newWidth","handleMouseUp","handleDoubleClick","actualLeftWidth"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../LoginPage.cjs.js");exports.LoginPage=e.LoginPage;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../index.cjs2.js");require("react/jsx-runtime");require("react");require("lucide-react");require("../colors.cjs.js");exports.LoginPage=e.LoginPage;
2
2
  //# sourceMappingURL=login.cjs.js.map
@@ -1,5 +1,9 @@
1
- import { L as e } from "../LoginPage.es.js";
1
+ import { L as a } from "../index.es2.js";
2
+ import "react/jsx-runtime";
3
+ import "react";
4
+ import "lucide-react";
5
+ import "../colors.es.js";
2
6
  export {
3
- e as LoginPage
7
+ a as LoginPage
4
8
  };
5
9
  //# sourceMappingURL=login.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"login.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("../Timeline.cjs.js"),e=require("../InteractionSummaryCard.cjs.js");exports.ConversationTurn=r.ConversationTurn;exports.Timeline=r.Timeline;exports.TranscriptCard=r.TranscriptCard;exports.InteractionSummaryCard=e.InteractionCard;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const x=require("../Timeline.cjs.js"),r=require("react/jsx-runtime"),w=require("react");require("lucide-react");const C={inbound:"var(--rail-discovery, #5E88B0)",outbound:"var(--rail-purple, #9B7AA8)",internal:"var(--rail-outcome, #6B7C93)",chat:"var(--rail-teal, #7BA89D)"},D=t=>{if(t==null||t<=0)return null;const i=Math.floor(t/3600),o=Math.floor(t%3600/60),s=Math.round(t%60);return i>0?`${i}:${String(o).padStart(2,"0")}:${String(s).padStart(2,"0")}`:`${o}:${String(s).padStart(2,"0")}`},R=t=>{if(!t)return null;try{return new Date(t).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return null}};function W({title:t,agentName:i,customerName:o,date:s,duration:y,direction:u,driver:v,sentiment:c,disposition:h,scores:p,tags:f,railColor:S,isActive:d=!1,onClick:g,children:T}){const j=S||C[u]||"var(--rail-outcome, #6B7C93)",b=D(y),m=R(s),l=[];i&&l.push(i),o&&l.push(o),m&&l.push(m),b&&l.push(b);const a=[];return u&&a.push({label:u}),v&&a.push({label:v}),c&&a.push({label:c}),h&&a.push({label:h}),f&&a.push(...f),r.jsxs("div",{onClick:g,style:{position:"relative",padding:"10px 14px 10px 18px",borderRadius:"var(--radius-md, 8px)",overflow:"hidden",background:d?"var(--hover-warm-subtle, rgba(231,212,162,0.08))":"var(--paper-elevated, rgba(255,255,255,0.82))",border:`1px solid ${d?"var(--border-hover, rgba(52,58,64,0.18))":"var(--border, rgba(52,58,64,0.12))"}`,cursor:g?"pointer":"default",transition:"background 0.15s, border-color 0.15s"},onMouseEnter:e=>{!d&&g&&(e.currentTarget.style.background="var(--hover-warm-subtle, rgba(231,212,162,0.08))",e.currentTarget.style.borderColor="var(--border-hover, rgba(52,58,64,0.18))")},onMouseLeave:e=>{d||(e.currentTarget.style.background="var(--paper-elevated, rgba(255,255,255,0.82))",e.currentTarget.style.borderColor="var(--border, rgba(52,58,64,0.12))")},children:[r.jsx("div",{style:{position:"absolute",left:0,top:0,bottom:0,width:"var(--rail-width-thin, 4px)",backgroundColor:j,borderRadius:"var(--radius-md, 8px) 0 0 var(--radius-md, 8px)"}}),r.jsxs("div",{style:{display:"flex",alignItems:"flex-start",justifyContent:"space-between",gap:12},children:[r.jsxs("div",{style:{flex:1,minWidth:0},children:[t?r.jsx("div",{style:{fontSize:"var(--text-md, 13px)",fontWeight:550,color:"var(--text-strong, rgba(30,33,37,0.92))",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",lineHeight:"var(--leading-snug, 1.375)"},children:t}):null,l.length>0?r.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:6,marginTop:3,fontSize:"var(--text-sm, 11px)",color:"var(--text-muted, rgba(30,33,37,0.56))",lineHeight:"var(--leading-snug, 1.375)"},children:l.map((e,n)=>r.jsxs(w.Fragment,{children:[n>0?r.jsx("span",{style:{color:"var(--text-xfaint, rgba(30,33,37,0.28))"},children:"·"}):null,r.jsx("span",{children:e})]},n))}):null,a.length>0?r.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginTop:6},children:a.map((e,n)=>r.jsx("span",{style:{display:"inline-block",fontSize:"var(--text-xs, 10px)",fontWeight:500,padding:"1px 7px",borderRadius:999,background:"var(--paper, rgba(255,255,255,0.78))",border:"1px solid var(--border-subtle, rgba(52,58,64,0.08))",color:e.color||"var(--text-faint, rgba(30,33,37,0.36))",textTransform:"capitalize",letterSpacing:"0.01em",lineHeight:1.5},children:e.label},n))}):null]}),p&&p.length>0?r.jsx("div",{style:{display:"flex",gap:10,flexShrink:0,alignItems:"flex-start",paddingTop:2},children:p.map((e,n)=>r.jsxs("div",{style:{textAlign:"center",minWidth:28},children:[r.jsx("div",{style:{fontSize:"var(--text-lg, 14px)",fontWeight:600,color:"var(--text-strong, rgba(30,33,37,0.92))",fontFamily:"var(--font-mono, monospace)",lineHeight:1.2},children:e.value!=null?Math.round(e.value):"—"}),r.jsx("div",{style:{fontSize:"var(--text-xxs, 9px)",fontWeight:650,textTransform:"uppercase",letterSpacing:"var(--tracking-label, 0.16em)",color:"var(--text-xfaint, rgba(30,33,37,0.28))",marginTop:1},children:e.label})]},n))}):null]}),T]})}exports.ConversationTurn=x.ConversationTurn;exports.Timeline=x.Timeline;exports.TranscriptCard=x.TranscriptCard;exports.InteractionSummaryCard=W;
2
2
  //# sourceMappingURL=media.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"media.cjs.js","sources":["../../src/components/media/InteractionSummaryCard.jsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\n\n/**\n * Direction rail color mapping.\n * Uses rail colors for categorization, not judgment.\n */\nconst DIRECTION_COLORS = {\n inbound: \"var(--rail-discovery, #5E88B0)\",\n outbound: \"var(--rail-purple, #9B7AA8)\",\n internal: \"var(--rail-outcome, #6B7C93)\",\n chat: \"var(--rail-teal, #7BA89D)\",\n};\n\n/**\n * Format seconds to mm:ss or h:mm:ss\n */\nconst formatDuration = (seconds) => {\n if (seconds == null || seconds <= 0) return null;\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.round(seconds % 60);\n if (h > 0) return `${h}:${String(m).padStart(2, \"0\")}:${String(s).padStart(2, \"0\")}`;\n return `${m}:${String(s).padStart(2, \"0\")}`;\n};\n\n/**\n * Format a date string to a compact, readable form.\n */\nconst formatDate = (dateStr) => {\n if (!dateStr) return null;\n try {\n return new Date(dateStr).toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n } catch {\n return null;\n }\n};\n\n/**\n * InteractionCard Component\n * Displays a summary card for a completed interaction (call/chat).\n * Designed for use in history lists, search results, and monitoring views.\n *\n * Uses the Chordia design language: left rail, muted metadata,\n * non-judgmental score display, subtle hover states.\n *\n * @param {Object} props\n * @param {string} [props.title] - Primary label (e.g., call purpose, one-liner)\n * @param {string} [props.agentName] - Agent who handled the interaction\n * @param {string} [props.customerName] - Customer name (omit if unknown)\n * @param {string} [props.date] - ISO date string for when the interaction occurred\n * @param {number} [props.duration] - Duration in seconds\n * @param {string} [props.direction] - \"inbound\" | \"outbound\" | \"internal\" | \"chat\"\n * @param {string} [props.driver] - Call driver / reason\n * @param {string} [props.sentiment] - Customer sentiment label\n * @param {string} [props.disposition] - Call disposition / outcome label\n * @param {Array} [props.scores] - [{label, value}] score metrics to display\n * @param {Array} [props.tags] - [{label, color?}] additional tag pills\n * @param {string} [props.railColor] - Override the left rail color\n * @param {boolean} [props.isActive] - Whether this card is currently selected/active\n * @param {Function} [props.onClick] - Click handler\n * @param {React.ReactNode} [props.children] - Additional content below the card body\n */\nexport default function InteractionCard({\n title,\n agentName,\n customerName,\n date,\n duration,\n direction,\n driver,\n sentiment,\n disposition,\n scores,\n tags,\n railColor,\n isActive = false,\n onClick,\n children,\n}) {\n const resolvedRailColor =\n railColor || DIRECTION_COLORS[direction] || \"var(--rail-outcome, #6B7C93)\";\n const formattedDuration = formatDuration(duration);\n const formattedDate = formatDate(date);\n\n // Collect metadata items\n const metaItems = [];\n if (agentName) metaItems.push(agentName);\n if (customerName) metaItems.push(customerName);\n if (formattedDate) metaItems.push(formattedDate);\n if (formattedDuration) metaItems.push(formattedDuration);\n\n // Collect tag items from explicit tags + contextual fields\n const allTags = [];\n if (direction) allTags.push({ label: direction });\n if (driver) allTags.push({ label: driver });\n if (sentiment) allTags.push({ label: sentiment });\n if (disposition) allTags.push({ label: disposition });\n if (tags) allTags.push(...tags);\n\n return (\n <div\n onClick={onClick}\n style={{\n position: \"relative\",\n padding: \"10px 14px 10px 18px\",\n borderRadius: \"var(--radius-md, 8px)\",\n overflow: \"hidden\",\n background: isActive\n ? \"var(--hover-warm-subtle, rgba(231,212,162,0.08))\"\n : \"var(--paper-elevated, rgba(255,255,255,0.82))\",\n border: `1px solid ${\n isActive\n ? \"var(--border-hover, rgba(52,58,64,0.18))\"\n : \"var(--border, rgba(52,58,64,0.12))\"\n }`,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"background 0.15s, border-color 0.15s\",\n }}\n onMouseEnter={(e) => {\n if (!isActive && onClick) {\n e.currentTarget.style.background =\n \"var(--hover-warm-subtle, rgba(231,212,162,0.08))\";\n e.currentTarget.style.borderColor =\n \"var(--border-hover, rgba(52,58,64,0.18))\";\n }\n }}\n onMouseLeave={(e) => {\n if (!isActive) {\n e.currentTarget.style.background =\n \"var(--paper-elevated, rgba(255,255,255,0.82))\";\n e.currentTarget.style.borderColor =\n \"var(--border, rgba(52,58,64,0.12))\";\n }\n }}\n >\n {/* Left rail */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"var(--rail-width-thin, 4px)\",\n backgroundColor: resolvedRailColor,\n borderRadius: \"var(--radius-md, 8px) 0 0 var(--radius-md, 8px)\",\n }}\n />\n\n {/* Main content row */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 12,\n }}\n >\n {/* Left: title + metadata */}\n <div style={{ flex: 1, minWidth: 0 }}>\n {/* Title */}\n {title ? (\n <div\n style={{\n fontSize: \"var(--text-md, 13px)\",\n fontWeight: 550,\n color: \"var(--text-strong, rgba(30,33,37,0.92))\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n lineHeight: \"var(--leading-snug, 1.375)\",\n }}\n >\n {title}\n </div>\n ) : null}\n\n {/* Metadata row */}\n {metaItems.length > 0 ? (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 6,\n marginTop: 3,\n fontSize: \"var(--text-sm, 11px)\",\n color: \"var(--text-muted, rgba(30,33,37,0.56))\",\n lineHeight: \"var(--leading-snug, 1.375)\",\n }}\n >\n {metaItems.map((item, i) => (\n <React.Fragment key={i}>\n {i > 0 ? (\n <span\n style={{\n color: \"var(--text-xfaint, rgba(30,33,37,0.28))\",\n }}\n >\n ·\n </span>\n ) : null}\n <span>{item}</span>\n </React.Fragment>\n ))}\n </div>\n ) : null}\n\n {/* Tags row */}\n {allTags.length > 0 ? (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n marginTop: 6,\n }}\n >\n {allTags.map((tag, i) => (\n <span\n key={i}\n style={{\n display: \"inline-block\",\n fontSize: \"var(--text-xs, 10px)\",\n fontWeight: 500,\n padding: \"1px 7px\",\n borderRadius: 999,\n background: \"var(--paper, rgba(255,255,255,0.78))\",\n border: \"1px solid var(--border-subtle, rgba(52,58,64,0.08))\",\n color: tag.color || \"var(--text-faint, rgba(30,33,37,0.36))\",\n textTransform: \"capitalize\",\n letterSpacing: \"0.01em\",\n lineHeight: 1.5,\n }}\n >\n {tag.label}\n </span>\n ))}\n </div>\n ) : null}\n </div>\n\n {/* Right: score pills */}\n {scores && scores.length > 0 ? (\n <div\n style={{\n display: \"flex\",\n gap: 10,\n flexShrink: 0,\n alignItems: \"flex-start\",\n paddingTop: 2,\n }}\n >\n {scores.map((score, i) => (\n <div key={i} style={{ textAlign: \"center\", minWidth: 28 }}>\n <div\n style={{\n fontSize: \"var(--text-lg, 14px)\",\n fontWeight: 600,\n color: \"var(--text-strong, rgba(30,33,37,0.92))\",\n fontFamily: \"var(--font-mono, monospace)\",\n lineHeight: 1.2,\n }}\n >\n {score.value != null ? Math.round(score.value) : \"—\"}\n </div>\n <div\n style={{\n fontSize: \"var(--text-xxs, 9px)\",\n fontWeight: 650,\n textTransform: \"uppercase\",\n letterSpacing: \"var(--tracking-label, 0.16em)\",\n color: \"var(--text-xfaint, rgba(30,33,37,0.28))\",\n marginTop: 1,\n }}\n >\n {score.label}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n </div>\n\n {/* Optional children slot */}\n {children}\n </div>\n );\n}\n"],"names":["DIRECTION_COLORS","formatDuration","seconds","h","m","formatDate","dateStr","InteractionCard","title","agentName","customerName","date","duration","direction","driver","sentiment","disposition","scores","tags","railColor","isActive","onClick","children","resolvedRailColor","formattedDuration","formattedDate","metaItems","allTags","jsxs","jsx","item","i","React","tag","score"],"mappings":"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"}
@@ -1,9 +1,223 @@
1
- import { C as n, T as o, a as e } from "../Timeline.es.js";
2
- import { I as t } from "../InteractionSummaryCard.es.js";
1
+ import { C as H, a as O, T as j } from "../Timeline.es.js";
2
+ import { jsxs as d, jsx as a } from "react/jsx-runtime";
3
+ import C from "react";
4
+ import "lucide-react";
5
+ const D = {
6
+ inbound: "var(--rail-discovery, #5E88B0)",
7
+ outbound: "var(--rail-purple, #9B7AA8)",
8
+ internal: "var(--rail-outcome, #6B7C93)",
9
+ chat: "var(--rail-teal, #7BA89D)"
10
+ }, W = (t) => {
11
+ if (t == null || t <= 0)
12
+ return null;
13
+ const o = Math.floor(t / 3600), i = Math.floor(t % 3600 / 60), p = Math.round(t % 60);
14
+ return o > 0 ? `${o}:${String(i).padStart(2, "0")}:${String(p).padStart(2, "0")}` : `${i}:${String(p).padStart(2, "0")}`;
15
+ }, k = (t) => {
16
+ if (!t)
17
+ return null;
18
+ try {
19
+ return new Date(t).toLocaleDateString("en-US", {
20
+ month: "short",
21
+ day: "numeric",
22
+ hour: "2-digit",
23
+ minute: "2-digit"
24
+ });
25
+ } catch {
26
+ return null;
27
+ }
28
+ };
29
+ function M({
30
+ title: t,
31
+ agentName: o,
32
+ customerName: i,
33
+ date: p,
34
+ duration: y,
35
+ direction: u,
36
+ driver: h,
37
+ sentiment: v,
38
+ disposition: b,
39
+ scores: g,
40
+ tags: c,
41
+ railColor: S,
42
+ isActive: s = !1,
43
+ onClick: f,
44
+ children: T
45
+ }) {
46
+ const w = S || D[u] || "var(--rail-outcome, #6B7C93)", x = W(y), m = k(p), l = [];
47
+ o && l.push(o), i && l.push(i), m && l.push(m), x && l.push(x);
48
+ const e = [];
49
+ return u && e.push({ label: u }), h && e.push({ label: h }), v && e.push({ label: v }), b && e.push({ label: b }), c && e.push(...c), /* @__PURE__ */ d(
50
+ "div",
51
+ {
52
+ onClick: f,
53
+ style: {
54
+ position: "relative",
55
+ padding: "10px 14px 10px 18px",
56
+ borderRadius: "var(--radius-md, 8px)",
57
+ overflow: "hidden",
58
+ background: s ? "var(--hover-warm-subtle, rgba(231,212,162,0.08))" : "var(--paper-elevated, rgba(255,255,255,0.82))",
59
+ border: `1px solid ${s ? "var(--border-hover, rgba(52,58,64,0.18))" : "var(--border, rgba(52,58,64,0.12))"}`,
60
+ cursor: f ? "pointer" : "default",
61
+ transition: "background 0.15s, border-color 0.15s"
62
+ },
63
+ onMouseEnter: (r) => {
64
+ !s && f && (r.currentTarget.style.background = "var(--hover-warm-subtle, rgba(231,212,162,0.08))", r.currentTarget.style.borderColor = "var(--border-hover, rgba(52,58,64,0.18))");
65
+ },
66
+ onMouseLeave: (r) => {
67
+ s || (r.currentTarget.style.background = "var(--paper-elevated, rgba(255,255,255,0.82))", r.currentTarget.style.borderColor = "var(--border, rgba(52,58,64,0.12))");
68
+ },
69
+ children: [
70
+ /* @__PURE__ */ a(
71
+ "div",
72
+ {
73
+ style: {
74
+ position: "absolute",
75
+ left: 0,
76
+ top: 0,
77
+ bottom: 0,
78
+ width: "var(--rail-width-thin, 4px)",
79
+ backgroundColor: w,
80
+ borderRadius: "var(--radius-md, 8px) 0 0 var(--radius-md, 8px)"
81
+ }
82
+ }
83
+ ),
84
+ /* @__PURE__ */ d(
85
+ "div",
86
+ {
87
+ style: {
88
+ display: "flex",
89
+ alignItems: "flex-start",
90
+ justifyContent: "space-between",
91
+ gap: 12
92
+ },
93
+ children: [
94
+ /* @__PURE__ */ d("div", { style: { flex: 1, minWidth: 0 }, children: [
95
+ t ? /* @__PURE__ */ a(
96
+ "div",
97
+ {
98
+ style: {
99
+ fontSize: "var(--text-md, 13px)",
100
+ fontWeight: 550,
101
+ color: "var(--text-strong, rgba(30,33,37,0.92))",
102
+ overflow: "hidden",
103
+ textOverflow: "ellipsis",
104
+ whiteSpace: "nowrap",
105
+ lineHeight: "var(--leading-snug, 1.375)"
106
+ },
107
+ children: t
108
+ }
109
+ ) : null,
110
+ l.length > 0 ? /* @__PURE__ */ a(
111
+ "div",
112
+ {
113
+ style: {
114
+ display: "flex",
115
+ flexWrap: "wrap",
116
+ gap: 6,
117
+ marginTop: 3,
118
+ fontSize: "var(--text-sm, 11px)",
119
+ color: "var(--text-muted, rgba(30,33,37,0.56))",
120
+ lineHeight: "var(--leading-snug, 1.375)"
121
+ },
122
+ children: l.map((r, n) => /* @__PURE__ */ d(C.Fragment, { children: [
123
+ n > 0 ? /* @__PURE__ */ a(
124
+ "span",
125
+ {
126
+ style: {
127
+ color: "var(--text-xfaint, rgba(30,33,37,0.28))"
128
+ },
129
+ children: "·"
130
+ }
131
+ ) : null,
132
+ /* @__PURE__ */ a("span", { children: r })
133
+ ] }, n))
134
+ }
135
+ ) : null,
136
+ e.length > 0 ? /* @__PURE__ */ a(
137
+ "div",
138
+ {
139
+ style: {
140
+ display: "flex",
141
+ flexWrap: "wrap",
142
+ gap: 4,
143
+ marginTop: 6
144
+ },
145
+ children: e.map((r, n) => /* @__PURE__ */ a(
146
+ "span",
147
+ {
148
+ style: {
149
+ display: "inline-block",
150
+ fontSize: "var(--text-xs, 10px)",
151
+ fontWeight: 500,
152
+ padding: "1px 7px",
153
+ borderRadius: 999,
154
+ background: "var(--paper, rgba(255,255,255,0.78))",
155
+ border: "1px solid var(--border-subtle, rgba(52,58,64,0.08))",
156
+ color: r.color || "var(--text-faint, rgba(30,33,37,0.36))",
157
+ textTransform: "capitalize",
158
+ letterSpacing: "0.01em",
159
+ lineHeight: 1.5
160
+ },
161
+ children: r.label
162
+ },
163
+ n
164
+ ))
165
+ }
166
+ ) : null
167
+ ] }),
168
+ g && g.length > 0 ? /* @__PURE__ */ a(
169
+ "div",
170
+ {
171
+ style: {
172
+ display: "flex",
173
+ gap: 10,
174
+ flexShrink: 0,
175
+ alignItems: "flex-start",
176
+ paddingTop: 2
177
+ },
178
+ children: g.map((r, n) => /* @__PURE__ */ d("div", { style: { textAlign: "center", minWidth: 28 }, children: [
179
+ /* @__PURE__ */ a(
180
+ "div",
181
+ {
182
+ style: {
183
+ fontSize: "var(--text-lg, 14px)",
184
+ fontWeight: 600,
185
+ color: "var(--text-strong, rgba(30,33,37,0.92))",
186
+ fontFamily: "var(--font-mono, monospace)",
187
+ lineHeight: 1.2
188
+ },
189
+ children: r.value != null ? Math.round(r.value) : "—"
190
+ }
191
+ ),
192
+ /* @__PURE__ */ a(
193
+ "div",
194
+ {
195
+ style: {
196
+ fontSize: "var(--text-xxs, 9px)",
197
+ fontWeight: 650,
198
+ textTransform: "uppercase",
199
+ letterSpacing: "var(--tracking-label, 0.16em)",
200
+ color: "var(--text-xfaint, rgba(30,33,37,0.28))",
201
+ marginTop: 1
202
+ },
203
+ children: r.label
204
+ }
205
+ )
206
+ ] }, n))
207
+ }
208
+ ) : null
209
+ ]
210
+ }
211
+ ),
212
+ T
213
+ ]
214
+ }
215
+ );
216
+ }
3
217
  export {
4
- n as ConversationTurn,
5
- t as InteractionSummaryCard,
6
- o as Timeline,
7
- e as TranscriptCard
218
+ H as ConversationTurn,
219
+ M as InteractionSummaryCard,
220
+ O as Timeline,
221
+ j as TranscriptCard
8
222
  };
9
223
  //# sourceMappingURL=media.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
1
+ {"version":3,"file":"media.es.js","sources":["../../src/components/media/InteractionSummaryCard.jsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\n\n/**\n * Direction rail color mapping.\n * Uses rail colors for categorization, not judgment.\n */\nconst DIRECTION_COLORS = {\n inbound: \"var(--rail-discovery, #5E88B0)\",\n outbound: \"var(--rail-purple, #9B7AA8)\",\n internal: \"var(--rail-outcome, #6B7C93)\",\n chat: \"var(--rail-teal, #7BA89D)\",\n};\n\n/**\n * Format seconds to mm:ss or h:mm:ss\n */\nconst formatDuration = (seconds) => {\n if (seconds == null || seconds <= 0) return null;\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = Math.round(seconds % 60);\n if (h > 0) return `${h}:${String(m).padStart(2, \"0\")}:${String(s).padStart(2, \"0\")}`;\n return `${m}:${String(s).padStart(2, \"0\")}`;\n};\n\n/**\n * Format a date string to a compact, readable form.\n */\nconst formatDate = (dateStr) => {\n if (!dateStr) return null;\n try {\n return new Date(dateStr).toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n } catch {\n return null;\n }\n};\n\n/**\n * InteractionCard Component\n * Displays a summary card for a completed interaction (call/chat).\n * Designed for use in history lists, search results, and monitoring views.\n *\n * Uses the Chordia design language: left rail, muted metadata,\n * non-judgmental score display, subtle hover states.\n *\n * @param {Object} props\n * @param {string} [props.title] - Primary label (e.g., call purpose, one-liner)\n * @param {string} [props.agentName] - Agent who handled the interaction\n * @param {string} [props.customerName] - Customer name (omit if unknown)\n * @param {string} [props.date] - ISO date string for when the interaction occurred\n * @param {number} [props.duration] - Duration in seconds\n * @param {string} [props.direction] - \"inbound\" | \"outbound\" | \"internal\" | \"chat\"\n * @param {string} [props.driver] - Call driver / reason\n * @param {string} [props.sentiment] - Customer sentiment label\n * @param {string} [props.disposition] - Call disposition / outcome label\n * @param {Array} [props.scores] - [{label, value}] score metrics to display\n * @param {Array} [props.tags] - [{label, color?}] additional tag pills\n * @param {string} [props.railColor] - Override the left rail color\n * @param {boolean} [props.isActive] - Whether this card is currently selected/active\n * @param {Function} [props.onClick] - Click handler\n * @param {React.ReactNode} [props.children] - Additional content below the card body\n */\nexport default function InteractionCard({\n title,\n agentName,\n customerName,\n date,\n duration,\n direction,\n driver,\n sentiment,\n disposition,\n scores,\n tags,\n railColor,\n isActive = false,\n onClick,\n children,\n}) {\n const resolvedRailColor =\n railColor || DIRECTION_COLORS[direction] || \"var(--rail-outcome, #6B7C93)\";\n const formattedDuration = formatDuration(duration);\n const formattedDate = formatDate(date);\n\n // Collect metadata items\n const metaItems = [];\n if (agentName) metaItems.push(agentName);\n if (customerName) metaItems.push(customerName);\n if (formattedDate) metaItems.push(formattedDate);\n if (formattedDuration) metaItems.push(formattedDuration);\n\n // Collect tag items from explicit tags + contextual fields\n const allTags = [];\n if (direction) allTags.push({ label: direction });\n if (driver) allTags.push({ label: driver });\n if (sentiment) allTags.push({ label: sentiment });\n if (disposition) allTags.push({ label: disposition });\n if (tags) allTags.push(...tags);\n\n return (\n <div\n onClick={onClick}\n style={{\n position: \"relative\",\n padding: \"10px 14px 10px 18px\",\n borderRadius: \"var(--radius-md, 8px)\",\n overflow: \"hidden\",\n background: isActive\n ? \"var(--hover-warm-subtle, rgba(231,212,162,0.08))\"\n : \"var(--paper-elevated, rgba(255,255,255,0.82))\",\n border: `1px solid ${\n isActive\n ? \"var(--border-hover, rgba(52,58,64,0.18))\"\n : \"var(--border, rgba(52,58,64,0.12))\"\n }`,\n cursor: onClick ? \"pointer\" : \"default\",\n transition: \"background 0.15s, border-color 0.15s\",\n }}\n onMouseEnter={(e) => {\n if (!isActive && onClick) {\n e.currentTarget.style.background =\n \"var(--hover-warm-subtle, rgba(231,212,162,0.08))\";\n e.currentTarget.style.borderColor =\n \"var(--border-hover, rgba(52,58,64,0.18))\";\n }\n }}\n onMouseLeave={(e) => {\n if (!isActive) {\n e.currentTarget.style.background =\n \"var(--paper-elevated, rgba(255,255,255,0.82))\";\n e.currentTarget.style.borderColor =\n \"var(--border, rgba(52,58,64,0.12))\";\n }\n }}\n >\n {/* Left rail */}\n <div\n style={{\n position: \"absolute\",\n left: 0,\n top: 0,\n bottom: 0,\n width: \"var(--rail-width-thin, 4px)\",\n backgroundColor: resolvedRailColor,\n borderRadius: \"var(--radius-md, 8px) 0 0 var(--radius-md, 8px)\",\n }}\n />\n\n {/* Main content row */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"flex-start\",\n justifyContent: \"space-between\",\n gap: 12,\n }}\n >\n {/* Left: title + metadata */}\n <div style={{ flex: 1, minWidth: 0 }}>\n {/* Title */}\n {title ? (\n <div\n style={{\n fontSize: \"var(--text-md, 13px)\",\n fontWeight: 550,\n color: \"var(--text-strong, rgba(30,33,37,0.92))\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n lineHeight: \"var(--leading-snug, 1.375)\",\n }}\n >\n {title}\n </div>\n ) : null}\n\n {/* Metadata row */}\n {metaItems.length > 0 ? (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 6,\n marginTop: 3,\n fontSize: \"var(--text-sm, 11px)\",\n color: \"var(--text-muted, rgba(30,33,37,0.56))\",\n lineHeight: \"var(--leading-snug, 1.375)\",\n }}\n >\n {metaItems.map((item, i) => (\n <React.Fragment key={i}>\n {i > 0 ? (\n <span\n style={{\n color: \"var(--text-xfaint, rgba(30,33,37,0.28))\",\n }}\n >\n ·\n </span>\n ) : null}\n <span>{item}</span>\n </React.Fragment>\n ))}\n </div>\n ) : null}\n\n {/* Tags row */}\n {allTags.length > 0 ? (\n <div\n style={{\n display: \"flex\",\n flexWrap: \"wrap\",\n gap: 4,\n marginTop: 6,\n }}\n >\n {allTags.map((tag, i) => (\n <span\n key={i}\n style={{\n display: \"inline-block\",\n fontSize: \"var(--text-xs, 10px)\",\n fontWeight: 500,\n padding: \"1px 7px\",\n borderRadius: 999,\n background: \"var(--paper, rgba(255,255,255,0.78))\",\n border: \"1px solid var(--border-subtle, rgba(52,58,64,0.08))\",\n color: tag.color || \"var(--text-faint, rgba(30,33,37,0.36))\",\n textTransform: \"capitalize\",\n letterSpacing: \"0.01em\",\n lineHeight: 1.5,\n }}\n >\n {tag.label}\n </span>\n ))}\n </div>\n ) : null}\n </div>\n\n {/* Right: score pills */}\n {scores && scores.length > 0 ? (\n <div\n style={{\n display: \"flex\",\n gap: 10,\n flexShrink: 0,\n alignItems: \"flex-start\",\n paddingTop: 2,\n }}\n >\n {scores.map((score, i) => (\n <div key={i} style={{ textAlign: \"center\", minWidth: 28 }}>\n <div\n style={{\n fontSize: \"var(--text-lg, 14px)\",\n fontWeight: 600,\n color: \"var(--text-strong, rgba(30,33,37,0.92))\",\n fontFamily: \"var(--font-mono, monospace)\",\n lineHeight: 1.2,\n }}\n >\n {score.value != null ? Math.round(score.value) : \"—\"}\n </div>\n <div\n style={{\n fontSize: \"var(--text-xxs, 9px)\",\n fontWeight: 650,\n textTransform: \"uppercase\",\n letterSpacing: \"var(--tracking-label, 0.16em)\",\n color: \"var(--text-xfaint, rgba(30,33,37,0.28))\",\n marginTop: 1,\n }}\n >\n {score.label}\n </div>\n </div>\n ))}\n </div>\n ) : null}\n </div>\n\n {/* Optional children slot */}\n {children}\n </div>\n );\n}\n"],"names":["DIRECTION_COLORS","formatDuration","seconds","h","m","s","formatDate","dateStr","InteractionCard","title","agentName","customerName","date","duration","direction","driver","sentiment","disposition","scores","tags","railColor","isActive","onClick","children","resolvedRailColor","formattedDuration","formattedDate","metaItems","allTags","jsxs","e","jsx","item","i","React","tag","score"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../OverlayPanel.cjs.js");exports.OverlayPanel=e.OverlayPanel;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime");require("react");const u=require("lucide-react"),x=require("react-dom");function m({open:i,onClose:n,title:r="",children:s,maxWidth:a=700,showCloseButton:l=!0,footer:t=null,className:d="",bodyClassName:o=""}){if(!i||typeof document>"u")return null;const c=e.jsx("div",{className:"fixed inset-0 flex items-center justify-center bg-black/30 p-4",style:{zIndex:1004},children:e.jsxs("div",{className:`bg-white rounded-xl shadow-xl relative w-full ${d}`,style:{maxWidth:a,maxHeight:"90vh",display:"flex",flexDirection:"column",overflow:"hidden"},children:[e.jsxs("div",{style:{position:"relative",flexShrink:0,background:"#fff",borderBottom:"1px solid rgba(0,0,0,0.08)",padding:r||l?"1rem 1.5rem 1rem":0,borderRadius:"12px 12px 0 0"},children:[l&&e.jsx("button",{type:"button",className:"absolute top-3 right-3 text-gray-400 hover:text-black",onClick:n,children:e.jsx(u.X,{size:20})}),r&&e.jsx("div",{className:"pr-8",children:e.jsx("h2",{className:"font-bold text-lg",style:{fontFamily:"var(--font-sans)"},children:r})})]}),e.jsx("div",{className:`custom-thin-scrollbar-library ${o}`,style:{flex:1,minHeight:0,overflowY:"auto",padding:"1rem 1.5rem"},children:s}),t&&e.jsx("div",{style:{flexShrink:0,padding:"1rem 1.5rem",borderTop:"1px solid rgba(0,0,0,0.08)"},children:t})]})});return x.createPortal(c,document.body)}exports.OverlayPanel=m;
2
2
  //# sourceMappingURL=models.cjs.js.map