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 +0,0 @@
1
- {"version":3,"file":"InlineConfirm.es.js","sources":["../src/components/primitives/ColorPalette.jsx","../src/components/primitives/Badge.jsx","../src/components/primitives/Checkbox.jsx","../src/components/primitives/TextArea.jsx","../src/components/primitives/Select.jsx","../src/components/primitives/MultiSelect.jsx","../src/components/primitives/FormLabel.jsx","../src/components/primitives/InlineConfirm.jsx"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\n\n/**\n * ColorPalette component\n * Renders grouped color chips with name, hex, and usage text.\n *\n * @param {{ name: string; hex: string; usage: string; category: string; }[]} colors\n */\nexport default function ColorPalette({ colors = [] }) {\n // Group colors by category\n const groupedColors = colors.reduce((acc, color) => {\n if (!acc[color.category]) {\n acc[color.category] = [];\n }\n acc[color.category].push(color);\n return acc;\n }, {});\n\n return (\n <div\n style={{\n fontFamily: \"system-ui, -apple-system, sans-serif\",\n }}\n >\n {Object.entries(groupedColors).map(([category, categoryColors]) => (\n <div key={category} style={{ marginBottom: \"24px\" }}>\n {/* Category header */}\n <div\n style={{\n fontSize: '11px',\n letterSpacing: '0.14em',\n textTransform: 'uppercase',\n marginBottom: '12px',\n color: \"rgba(30, 33, 37, 0.62)\",\n fontWeight: 650,\n }}\n >\n {category}\n </div>\n\n {/* Color chips grid */}\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: \"repeat(auto-fill, minmax(220px, 1fr))\",\n gap: \"12px\",\n }}\n >\n {categoryColors.map((color, i) => (\n <div\n key={i}\n style={{\n border: \"1px solid rgba(52, 58, 64, 0.12)\",\n borderRadius: \"12px\",\n overflow: \"hidden\",\n background: \"rgba(255, 255, 255, 0.72)\",\n }}\n >\n {/* Color swatch */}\n <div\n style={{\n height: \"64px\",\n background: color.hex,\n borderBottom: \"1px solid rgba(52, 58, 64, 0.10)\",\n }}\n />\n\n {/* Color info */}\n <div style={{ padding: \"10px 12px\" }}>\n <div\n style={{\n fontSize: \"13px\",\n fontWeight: 680,\n color: \"rgba(30, 33, 37, 0.92)\",\n marginBottom: \"4px\",\n }}\n >\n {color.name}\n </div>\n <div\n style={{\n fontSize: \"11.5px\",\n fontFamily: \"ui-monospace, monospace\",\n color: \"rgba(30, 33, 37, 0.52)\",\n marginBottom: \"6px\",\n }}\n >\n {color.hex}\n </div>\n <div\n style={{\n fontSize: \"11.5px\",\n color: \"rgba(30, 33, 37, 0.62)\",\n lineHeight: 1.4,\n }}\n >\n {color.usage}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\n\n","\"use client\";\n\nexport default function Badge({ children, color, icon, ...props }) {\n const baseStyle = {\n fontSize: 'var(--text-xs)',\n padding: '1px 5px',\n borderRadius: 'var(--radius-sm)',\n display: 'inline-flex',\n alignItems: 'center'\n };\n\n const computedStyle = {\n ...baseStyle,\n color: color,\n backgroundColor: `color-mix(in srgb, ${color} 15%, transparent)`,\n ...props.style\n };\n\n return (\n <span style={computedStyle} {...props}>\n {icon && (\n <span style={{ marginRight: '3px' }}>\n {icon}\n </span>\n )}\n {children}\n </span>\n );\n}","\"use client\";\n\nimport { Check } from 'lucide-react';\n\n/**\n * Styled checkbox matching Chordia design system.\n * Uses --rail-tone (purple) when checked, --border when unchecked.\n * No native browser checkbox — fully custom.\n *\n * @param {boolean} checked\n * @param {function} onChange - receives new boolean value\n * @param {string} [label] - optional label text\n * @param {'md'|'sm'} [size='md']\n * @param {boolean} [disabled=false]\n * @param {object} [style] - override style on the outer label\n */\nexport default function Checkbox({\n checked = false,\n onChange,\n label,\n size = 'md',\n disabled = false,\n style,\n ...props\n}) {\n const boxSize = size === 'sm' ? 12 : 16;\n const checkSize = size === 'sm' ? 8 : 11;\n\n return (\n <label\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: size === 'sm' ? 3 : 'var(--spacing-2)',\n fontSize: size === 'sm' ? 'var(--text-xs)' : 'var(--text-sm)',\n color: disabled ? 'var(--text-faint)' : 'var(--text-base)',\n cursor: disabled ? 'not-allowed' : 'pointer',\n userSelect: 'none',\n ...style,\n }}\n onClick={(e) => {\n e.preventDefault();\n if (!disabled && onChange) onChange(!checked);\n }}\n {...props}\n >\n <span\n style={{\n width: boxSize,\n height: boxSize,\n borderRadius: size === 'sm' ? 2 : 3,\n border: `1px solid ${checked ? 'var(--text-ink)' : 'var(--border)'}`,\n background: checked ? 'var(--text-ink)' : 'transparent',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'var(--transition-fast)',\n flexShrink: 0,\n opacity: disabled ? 0.5 : 1,\n }}\n >\n {checked && (\n <Check size={checkSize} style={{ color: 'white' }} strokeWidth={3} />\n )}\n </span>\n {label}\n </label>\n );\n}\n","\"use client\";\nimport React from 'react';\n\nconst baseStyle = {\n width: '100%',\n padding: 'var(--spacing-2)',\n fontSize: 'var(--text-md)',\n border: '1px solid var(--border)',\n borderRadius: 'var(--radius)',\n backgroundColor: 'var(--paper)',\n color: 'var(--text-base)',\n fontFamily: 'var(--font-sans)',\n outline: 'none',\n transition: 'border-color 0.15s ease',\n};\n\nexport default function TextArea({\n value,\n onChange,\n placeholder,\n disabled = false,\n mono = false,\n rows = 4,\n resize = true,\n style,\n ...rest\n}) {\n return (\n <textarea\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n rows={rows}\n style={{\n ...baseStyle,\n resize: resize ? 'vertical' : 'none',\n minHeight: rows * 20,\n ...(mono ? { fontFamily: 'var(--font-mono)' } : {}),\n ...(disabled ? { opacity: 0.6, cursor: 'not-allowed' } : {}),\n ...style,\n }}\n onFocus={(e) => { e.currentTarget.style.borderColor = 'var(--border-hover)'; }}\n onBlur={(e) => { e.currentTarget.style.borderColor = 'var(--border)'; }}\n {...rest}\n />\n );\n}\n","\"use client\";\nimport React from 'react';\n\nconst baseStyle = {\n width: '100%',\n padding: 'var(--spacing-1) var(--spacing-2)',\n fontSize: 'var(--text-md)',\n border: '1px solid var(--border)',\n borderRadius: 'var(--radius)',\n backgroundColor: 'var(--paper)',\n color: 'var(--text-base)',\n fontFamily: 'var(--font-sans)',\n cursor: 'pointer',\n outline: 'none',\n transition: 'border-color 0.15s ease',\n};\n\nexport default function Select({\n value,\n onChange,\n options = [],\n disabled = false,\n placeholder,\n style,\n ...rest\n}) {\n return (\n <select\n value={value}\n onChange={(e) => onChange?.(e.target.value)}\n disabled={disabled}\n style={{\n ...baseStyle,\n ...(disabled ? { opacity: 0.6, cursor: 'not-allowed' } : {}),\n ...style,\n }}\n onFocus={(e) => { e.currentTarget.style.borderColor = 'var(--border-hover)'; }}\n onBlur={(e) => { e.currentTarget.style.borderColor = 'var(--border)'; }}\n {...rest}\n >\n {placeholder && <option value=\"\">{placeholder}</option>}\n {options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n );\n}\n","\"use client\";\nimport React, { useState, useRef, useEffect } from \"react\";\nimport Checkbox from \"./Checkbox\";\n\n/**\n * MultiSelect\n *\n * Lightweight multi-select dropdown built from primitives.\n * - Renders a trigger pill showing placeholder or \"N selected\"\n * - Shows options in a popover with checkboxes\n * - Optional left/right icons in the trigger\n *\n * Props:\n * - value: string[] // selected values\n * - onChange(nextValues: string[]) // change handler\n * - options: { value, label }[]\n * - placeholder?: string\n * - disabled?: boolean\n * - leftIcon?: ReactNode\n * - rightIcon?: ReactNode // if omitted, simple chevron is used\n * - maxMenuHeight?: number // px\n * - draggable?: boolean // if true, allow drag & drop reordering of options\n */\nexport default function MultiSelect({\n value = [],\n onChange,\n options = [],\n placeholder = \"Select options\",\n disabled = false,\n leftIcon = null,\n rightIcon = null,\n maxMenuHeight = 240,\n draggable = false,\n}) {\n const [open, setOpen] = useState(false);\n const [hoveredValue, setHoveredValue] = useState(null);\n const [orderedOptions, setOrderedOptions] = useState(options);\n const [draggingValue, setDraggingValue] = useState(null);\n const triggerRef = useRef(null);\n const menuRef = useRef(null);\n\n // Keep internal order in sync with props\n useEffect(() => {\n setOrderedOptions(options);\n }, [options]);\n\n const selectedSet = new Set((value || []).map(String));\n\n const handleToggle = (optionValue) => {\n if (!onChange) return;\n const key = String(optionValue);\n const next = new Set(selectedSet);\n if (next.has(key)) {\n next.delete(key);\n } else {\n next.add(key);\n }\n onChange(Array.from(next));\n };\n\n // Close on outside click\n useEffect(() => {\n if (!open) return;\n const handleClickOutside = (event) => {\n if (\n triggerRef.current &&\n !triggerRef.current.contains(event.target) &&\n menuRef.current &&\n !menuRef.current.contains(event.target)\n ) {\n setOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [open]);\n\n const selectedCount = selectedSet.size;\n const displayLabel =\n selectedCount === 0\n ? placeholder\n : `${selectedCount} ${selectedCount === 1 ? \"selected\" : \"selected\"}`;\n\n const isErrorState = false; // hook for future error styling, matches Select API shape\n\n return (\n <div style={{ position: \"relative\", width: \"100%\" }}>\n <button\n type=\"button\"\n ref={triggerRef}\n disabled={disabled}\n onClick={() => !disabled && setOpen((prev) => !prev)}\n style={{\n // Match Select base style as closely as possible\n width: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n gap: 8,\n padding: \"var(--spacing-1) var(--spacing-2)\",\n borderRadius: \"var(--radius)\",\n ...(open\n ? {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n }\n : {}),\n border: `1px solid ${isErrorState ? \"var(--state-present)\" : \"var(--border)\"}`,\n backgroundColor: disabled ? \"rgba(249, 250, 251, 1)\" : \"var(--paper)\",\n color: selectedCount === 0 ? \"var(--text-muted)\" : \"var(--text-base)\",\n cursor: disabled ? \"not-allowed\" : \"pointer\",\n fontFamily: \"var(--font-sans)\",\n fontSize: \"var(--text-md)\",\n outline: \"none\",\n transition: \"border-color 0.15s ease, background-color 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n if (disabled) return;\n e.currentTarget.style.borderColor = \"var(--border-hover)\";\n }}\n onMouseLeave={(e) => {\n if (disabled) return;\n e.currentTarget.style.borderColor = \"var(--border)\";\n }}\n >\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n minWidth: 0,\n flex: 1,\n }}\n >\n {leftIcon && (\n <span style={{ flexShrink: 0, display: \"inline-flex\" }}>\n {leftIcon}\n </span>\n )}\n <span\n style={{\n whiteSpace: \"nowrap\",\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n }}\n >\n {displayLabel}\n </span>\n </div>\n <span style={{ flexShrink: 0, display: \"inline-flex\" }}>\n {rightIcon || (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n transform: open ? \"rotate(180deg)\" : \"rotate(0deg)\",\n transition: \"transform 150ms ease\",\n color: \"var(--text-muted)\",\n }}\n >\n <path\n d=\"M5.25 7.5L10 12.25L14.75 7.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </span>\n </button>\n\n {open && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n zIndex: 40,\n marginTop: 0,\n width: \"100%\",\n maxHeight: maxMenuHeight,\n overflowY: \"auto\",\n backgroundColor: \"#FFFFFF\",\n borderRadius: 8,\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0,\n border: \"1px solid rgba(209, 213, 219, 1)\",\n borderTop: \"none\",\n boxShadow:\n \"0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)\",\n }}\n >\n <div style={{ padding: \"4px 0\" }}>\n {(orderedOptions && orderedOptions.length === 0) ? (\n <div\n style={{\n padding: \"8px 12px\",\n fontSize: \"var(--text-sm)\",\n color: \"var(--text-muted)\",\n fontFamily: \"var(--font-sans)\",\n }}\n >\n No options\n </div>\n ) : (\n orderedOptions.map((opt) => {\n const isChecked = selectedSet.has(String(opt.value));\n const isDragging = draggingValue === String(opt.value);\n return (\n <div\n key={opt.value}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: 8,\n padding: \"6px 12px\",\n cursor: \"pointer\",\n backgroundColor:\n hoveredValue === String(opt.value)\n ? \"var(--hover-warm)\"\n : \"transparent\",\n opacity: isDragging ? 0.6 : 1,\n }}\n onClick={() => handleToggle(opt.value)}\n onMouseEnter={() => setHoveredValue(String(opt.value))}\n onMouseLeave={() => setHoveredValue(null)}\n draggable={draggable}\n onDragStart={(e) => {\n if (!draggable) return;\n setDraggingValue(String(opt.value));\n if (e.dataTransfer) {\n e.dataTransfer.effectAllowed = \"move\";\n }\n }}\n onDragOver={(e) => {\n if (!draggable) return;\n e.preventDefault();\n }}\n onDrop={(e) => {\n if (!draggable) return;\n e.preventDefault();\n const fromIndex = orderedOptions.findIndex(\n (o) => String(o.value) === draggingValue\n );\n const toIndex = orderedOptions.findIndex(\n (o) => String(o.value) === String(opt.value)\n );\n if (\n fromIndex === -1 ||\n toIndex === -1 ||\n fromIndex === toIndex\n ) {\n setDraggingValue(null);\n return;\n }\n const next = [...orderedOptions];\n const [moved] = next.splice(fromIndex, 1);\n next.splice(toIndex, 0, moved);\n setOrderedOptions(next);\n setDraggingValue(null);\n }}\n onDragEnd={() => {\n if (!draggable) return;\n setDraggingValue(null);\n }}\n >\n {draggable && (\n <span\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: 14,\n height: 14,\n color: \"var(--text-faint)\",\n cursor: \"grab\",\n }}\n onClick={(e) => {\n e.stopPropagation(); // don't toggle when clicking handle\n }}\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4 7H16M4 10H16M4 13H16\"\n stroke=\"currentColor\"\n strokeWidth=\"1.4\"\n strokeLinecap=\"round\"\n />\n </svg>\n </span>\n )}\n <Checkbox\n size=\"sm\"\n checked={isChecked}\n onChange={() => handleToggle(opt.value)}\n style={{ gap: 0 }}\n />\n <span\n style={{\n fontSize: \"var(--text-sm)\",\n color: \"var(--text-base)\",\n fontFamily: \"var(--font-sans)\",\n }}\n >\n {opt.label}\n </span>\n </div>\n );\n })\n )}\n </div>\n </div>\n )}\n </div>\n );\n}\n\n","\"use client\";\nimport React from 'react';\n\nexport default function FormLabel({ children, htmlFor, style }) {\n return (\n <label\n htmlFor={htmlFor}\n style={{\n display: 'block',\n fontSize: 'var(--text-base)',\n color: 'var(--text-muted)',\n marginBottom: 'var(--spacing-1)',\n fontFamily: 'var(--font-sans)',\n ...style,\n }}\n >\n {children}\n </label>\n );\n}\n","\"use client\";\nimport React, { useState } from 'react';\nimport SmallButton from './SmallButton.jsx';\n\nexport default function InlineConfirm({\n children,\n onConfirm,\n prompt = 'Delete?',\n confirmLabel = 'Yes',\n cancelLabel = 'No',\n style,\n}) {\n const [confirming, setConfirming] = useState(false);\n\n if (confirming) {\n return (\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--spacing-1)',\n ...style,\n }}\n >\n <span\n style={{\n fontSize: 'var(--text-sm)',\n color: 'var(--text-muted)',\n }}\n >\n {prompt}\n </span>\n <SmallButton\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation();\n onConfirm?.();\n setConfirming(false);\n }}\n style={{ color: 'var(--text-ink)', fontWeight: 'var(--font-semibold)' }}\n >\n {confirmLabel}\n </SmallButton>\n <SmallButton\n variant=\"ghost\"\n size=\"sm\"\n onClick={(e) => {\n e.stopPropagation();\n setConfirming(false);\n }}\n >\n {cancelLabel}\n </SmallButton>\n </span>\n );\n }\n\n return (\n <span\n onClick={(e) => {\n e.stopPropagation();\n setConfirming(true);\n }}\n style={{ cursor: 'pointer', ...style }}\n >\n {children}\n </span>\n );\n}\n"],"names":["ColorPalette","colors","groupedColors","acc","color","jsx","category","categoryColors","i","jsxs","Badge","children","icon","props","computedStyle","Checkbox","checked","onChange","label","size","disabled","style","boxSize","checkSize","e","Check","baseStyle","TextArea","value","placeholder","mono","rows","resize","rest","Select","options","opt","MultiSelect","leftIcon","rightIcon","maxMenuHeight","draggable","open","setOpen","useState","hoveredValue","setHoveredValue","orderedOptions","setOrderedOptions","draggingValue","setDraggingValue","triggerRef","useRef","menuRef","useEffect","selectedSet","handleToggle","optionValue","key","next","handleClickOutside","event","selectedCount","displayLabel","prev","isChecked","isDragging","fromIndex","o","toIndex","moved","FormLabel","htmlFor","InlineConfirm","onConfirm","prompt","confirmLabel","cancelLabel","confirming","setConfirming","SmallButton"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";const r=require("react/jsx-runtime"),w=require("react"),T={inbound:"var(--rail-discovery, #5E88B0)",outbound:"var(--rail-purple, #9B7AA8)",internal:"var(--rail-outcome, #6B7C93)",chat:"var(--rail-teal, #7BA89D)"},C=e=>{if(e==null||e<=0)return null;const i=Math.floor(e/3600),o=Math.floor(e%3600/60),s=Math.round(e%60);return i>0?`${i}:${String(o).padStart(2,"0")}:${String(s).padStart(2,"0")}`:`${o}:${String(s).padStart(2,"0")}`},D=e=>{if(!e)return null;try{return new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return null}};function R({title:e,agentName:i,customerName:o,date:s,duration:m,direction:p,driver:x,sentiment:h,disposition:v,scores:u,tags:f,railColor:y,isActive:d=!1,onClick:g,children:j}){const S=y||T[p]||"var(--rail-outcome, #6B7C93)",c=C(m),b=D(s),l=[];i&&l.push(i),o&&l.push(o),b&&l.push(b),c&&l.push(c);const a=[];return p&&a.push({label:p}),x&&a.push({label:x}),h&&a.push({label:h}),v&&a.push({label:v}),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:t=>{!d&&g&&(t.currentTarget.style.background="var(--hover-warm-subtle, rgba(231,212,162,0.08))",t.currentTarget.style.borderColor="var(--border-hover, rgba(52,58,64,0.18))")},onMouseLeave:t=>{d||(t.currentTarget.style.background="var(--paper-elevated, rgba(255,255,255,0.82))",t.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:S,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:[e?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:e}):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((t,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:t})]},n))}):null,a.length>0?r.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:4,marginTop:6},children:a.map((t,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:t.color||"var(--text-faint, rgba(30,33,37,0.36))",textTransform:"capitalize",letterSpacing:"0.01em",lineHeight:1.5},children:t.label},n))}):null]}),u&&u.length>0?r.jsx("div",{style:{display:"flex",gap:10,flexShrink:0,alignItems:"flex-start",paddingTop:2},children:u.map((t,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:t.value!=null?Math.round(t.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:t.label})]},n))}):null]}),j]})}exports.InteractionCard=R;
2
- //# sourceMappingURL=InteractionSummaryCard.cjs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InteractionSummaryCard.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","e","jsx","item","i","React","tag","score"],"mappings":"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"}
@@ -1,216 +0,0 @@
1
- import { jsxs as d, jsx as e } from "react/jsx-runtime";
2
- import C from "react";
3
- const D = {
4
- inbound: "var(--rail-discovery, #5E88B0)",
5
- outbound: "var(--rail-purple, #9B7AA8)",
6
- internal: "var(--rail-outcome, #6B7C93)",
7
- chat: "var(--rail-teal, #7BA89D)"
8
- }, W = (t) => {
9
- if (t == null || t <= 0) return null;
10
- const o = Math.floor(t / 3600), i = Math.floor(t % 3600 / 60), p = Math.round(t % 60);
11
- return o > 0 ? `${o}:${String(i).padStart(2, "0")}:${String(p).padStart(2, "0")}` : `${i}:${String(p).padStart(2, "0")}`;
12
- }, k = (t) => {
13
- if (!t) return null;
14
- try {
15
- return new Date(t).toLocaleDateString("en-US", {
16
- month: "short",
17
- day: "numeric",
18
- hour: "2-digit",
19
- minute: "2-digit"
20
- });
21
- } catch {
22
- return null;
23
- }
24
- };
25
- function z({
26
- title: t,
27
- agentName: o,
28
- customerName: i,
29
- date: p,
30
- duration: y,
31
- direction: u,
32
- driver: h,
33
- sentiment: v,
34
- disposition: b,
35
- scores: g,
36
- tags: x,
37
- railColor: S,
38
- isActive: s = !1,
39
- onClick: f,
40
- children: w
41
- }) {
42
- const T = S || D[u] || "var(--rail-outcome, #6B7C93)", c = W(y), m = k(p), l = [];
43
- o && l.push(o), i && l.push(i), m && l.push(m), c && l.push(c);
44
- const a = [];
45
- return u && a.push({ label: u }), h && a.push({ label: h }), v && a.push({ label: v }), b && a.push({ label: b }), x && a.push(...x), /* @__PURE__ */ d(
46
- "div",
47
- {
48
- onClick: f,
49
- style: {
50
- position: "relative",
51
- padding: "10px 14px 10px 18px",
52
- borderRadius: "var(--radius-md, 8px)",
53
- overflow: "hidden",
54
- background: s ? "var(--hover-warm-subtle, rgba(231,212,162,0.08))" : "var(--paper-elevated, rgba(255,255,255,0.82))",
55
- border: `1px solid ${s ? "var(--border-hover, rgba(52,58,64,0.18))" : "var(--border, rgba(52,58,64,0.12))"}`,
56
- cursor: f ? "pointer" : "default",
57
- transition: "background 0.15s, border-color 0.15s"
58
- },
59
- onMouseEnter: (r) => {
60
- !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))");
61
- },
62
- onMouseLeave: (r) => {
63
- 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))");
64
- },
65
- children: [
66
- /* @__PURE__ */ e(
67
- "div",
68
- {
69
- style: {
70
- position: "absolute",
71
- left: 0,
72
- top: 0,
73
- bottom: 0,
74
- width: "var(--rail-width-thin, 4px)",
75
- backgroundColor: T,
76
- borderRadius: "var(--radius-md, 8px) 0 0 var(--radius-md, 8px)"
77
- }
78
- }
79
- ),
80
- /* @__PURE__ */ d(
81
- "div",
82
- {
83
- style: {
84
- display: "flex",
85
- alignItems: "flex-start",
86
- justifyContent: "space-between",
87
- gap: 12
88
- },
89
- children: [
90
- /* @__PURE__ */ d("div", { style: { flex: 1, minWidth: 0 }, children: [
91
- t ? /* @__PURE__ */ e(
92
- "div",
93
- {
94
- style: {
95
- fontSize: "var(--text-md, 13px)",
96
- fontWeight: 550,
97
- color: "var(--text-strong, rgba(30,33,37,0.92))",
98
- overflow: "hidden",
99
- textOverflow: "ellipsis",
100
- whiteSpace: "nowrap",
101
- lineHeight: "var(--leading-snug, 1.375)"
102
- },
103
- children: t
104
- }
105
- ) : null,
106
- l.length > 0 ? /* @__PURE__ */ e(
107
- "div",
108
- {
109
- style: {
110
- display: "flex",
111
- flexWrap: "wrap",
112
- gap: 6,
113
- marginTop: 3,
114
- fontSize: "var(--text-sm, 11px)",
115
- color: "var(--text-muted, rgba(30,33,37,0.56))",
116
- lineHeight: "var(--leading-snug, 1.375)"
117
- },
118
- children: l.map((r, n) => /* @__PURE__ */ d(C.Fragment, { children: [
119
- n > 0 ? /* @__PURE__ */ e(
120
- "span",
121
- {
122
- style: {
123
- color: "var(--text-xfaint, rgba(30,33,37,0.28))"
124
- },
125
- children: "·"
126
- }
127
- ) : null,
128
- /* @__PURE__ */ e("span", { children: r })
129
- ] }, n))
130
- }
131
- ) : null,
132
- a.length > 0 ? /* @__PURE__ */ e(
133
- "div",
134
- {
135
- style: {
136
- display: "flex",
137
- flexWrap: "wrap",
138
- gap: 4,
139
- marginTop: 6
140
- },
141
- children: a.map((r, n) => /* @__PURE__ */ e(
142
- "span",
143
- {
144
- style: {
145
- display: "inline-block",
146
- fontSize: "var(--text-xs, 10px)",
147
- fontWeight: 500,
148
- padding: "1px 7px",
149
- borderRadius: 999,
150
- background: "var(--paper, rgba(255,255,255,0.78))",
151
- border: "1px solid var(--border-subtle, rgba(52,58,64,0.08))",
152
- color: r.color || "var(--text-faint, rgba(30,33,37,0.36))",
153
- textTransform: "capitalize",
154
- letterSpacing: "0.01em",
155
- lineHeight: 1.5
156
- },
157
- children: r.label
158
- },
159
- n
160
- ))
161
- }
162
- ) : null
163
- ] }),
164
- g && g.length > 0 ? /* @__PURE__ */ e(
165
- "div",
166
- {
167
- style: {
168
- display: "flex",
169
- gap: 10,
170
- flexShrink: 0,
171
- alignItems: "flex-start",
172
- paddingTop: 2
173
- },
174
- children: g.map((r, n) => /* @__PURE__ */ d("div", { style: { textAlign: "center", minWidth: 28 }, children: [
175
- /* @__PURE__ */ e(
176
- "div",
177
- {
178
- style: {
179
- fontSize: "var(--text-lg, 14px)",
180
- fontWeight: 600,
181
- color: "var(--text-strong, rgba(30,33,37,0.92))",
182
- fontFamily: "var(--font-mono, monospace)",
183
- lineHeight: 1.2
184
- },
185
- children: r.value != null ? Math.round(r.value) : "—"
186
- }
187
- ),
188
- /* @__PURE__ */ e(
189
- "div",
190
- {
191
- style: {
192
- fontSize: "var(--text-xxs, 9px)",
193
- fontWeight: 650,
194
- textTransform: "uppercase",
195
- letterSpacing: "var(--tracking-label, 0.16em)",
196
- color: "var(--text-xfaint, rgba(30,33,37,0.28))",
197
- marginTop: 1
198
- },
199
- children: r.label
200
- }
201
- )
202
- ] }, n))
203
- }
204
- ) : null
205
- ]
206
- }
207
- ),
208
- w
209
- ]
210
- }
211
- );
212
- }
213
- export {
214
- z as I
215
- };
216
- //# sourceMappingURL=InteractionSummaryCard.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InteractionSummaryCard.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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"}