chordia-ui 3.3.8 → 3.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AgentLiftCard.cjs.js.map +1 -1
- package/dist/AgentLiftCard.es.js +5 -3
- package/dist/AgentLiftCard.es.js.map +1 -1
- package/dist/CustomFilterChips.cjs.js.map +1 -1
- package/dist/CustomFilterChips.es.js +2 -1
- package/dist/CustomFilterChips.es.js.map +1 -1
- package/dist/FileUploadingState.cjs.js.map +1 -1
- package/dist/FileUploadingState.es.js +16 -10
- package/dist/FileUploadingState.es.js.map +1 -1
- package/dist/IntegrationCard.cjs.js.map +1 -1
- package/dist/IntegrationCard.es.js +3 -3
- package/dist/IntegrationCard.es.js.map +1 -1
- package/dist/SectionLabel.cjs.js.map +1 -1
- package/dist/SectionLabel.es.js.map +1 -1
- package/dist/SmallButton.cjs.js.map +1 -1
- package/dist/SmallButton.es.js +16 -16
- package/dist/SmallButton.es.js.map +1 -1
- package/dist/SummarySection.cjs.js.map +1 -1
- package/dist/SummarySection.es.js +11 -9
- package/dist/SummarySection.es.js.map +1 -1
- package/dist/TextInput.cjs.js.map +1 -1
- package/dist/TextInput.es.js.map +1 -1
- package/dist/Timeline.cjs.js.map +1 -1
- package/dist/Timeline.es.js +14 -8
- package/dist/Timeline.es.js.map +1 -1
- package/dist/Tooltip.cjs.js +1 -1
- package/dist/Tooltip.cjs.js.map +1 -1
- package/dist/Tooltip.es.js +31 -20
- package/dist/Tooltip.es.js.map +1 -1
- package/dist/TourGuideTooltip.cjs.js.map +1 -1
- package/dist/TourGuideTooltip.es.js +2 -1
- package/dist/TourGuideTooltip.es.js.map +1 -1
- package/dist/UpdatedInteractionRecording.cjs.js +1 -1
- package/dist/UpdatedInteractionRecording.cjs.js.map +1 -1
- package/dist/UpdatedInteractionRecording.es.js +79 -97
- package/dist/UpdatedInteractionRecording.es.js.map +1 -1
- package/dist/UploadInteraction.cjs.js.map +1 -1
- package/dist/UploadInteraction.es.js.map +1 -1
- package/dist/colors.cjs.js +2 -0
- package/dist/colors.cjs.js.map +1 -0
- package/dist/colors.es.js +2 -0
- package/dist/colors.es.js.map +1 -0
- package/dist/components/UpdatedInteractionDetails.cjs.js +10 -1
- package/dist/components/UpdatedInteractionDetails.cjs.js.map +1 -1
- package/dist/components/UpdatedInteractionDetails.es.js +1531 -9
- package/dist/components/UpdatedInteractionDetails.es.js.map +1 -1
- package/dist/components/chat.cjs.js +30 -1
- package/dist/components/chat.cjs.js.map +1 -1
- package/dist/components/chat.es.js +2222 -7
- package/dist/components/chat.es.js.map +1 -1
- package/dist/components/common.cjs.js +1 -1
- package/dist/components/common.es.js +32 -25
- package/dist/components/common.es.js.map +1 -1
- package/dist/components/data.cjs.js +1 -1
- package/dist/components/data.cjs.js.map +1 -1
- package/dist/components/data.es.js +1033 -4
- package/dist/components/data.es.js.map +1 -1
- package/dist/components/layout.cjs.js +3 -1
- package/dist/components/layout.cjs.js.map +1 -1
- package/dist/components/layout.es.js +1533 -8
- package/dist/components/layout.es.js.map +1 -1
- package/dist/components/login.cjs.js +1 -1
- package/dist/components/login.es.js +6 -2
- package/dist/components/login.es.js.map +1 -1
- package/dist/components/media.cjs.js +1 -1
- package/dist/components/media.cjs.js.map +1 -1
- package/dist/components/media.es.js +220 -6
- package/dist/components/media.es.js.map +1 -1
- package/dist/components/models.cjs.js +1 -1
- package/dist/components/models.cjs.js.map +1 -1
- package/dist/components/models.es.js +91 -2
- package/dist/components/models.es.js.map +1 -1
- package/dist/components/navigation.cjs.js +1 -1
- package/dist/components/navigation.cjs.js.map +1 -1
- package/dist/components/navigation.es.js +766 -7
- package/dist/components/navigation.es.js.map +1 -1
- package/dist/components/notifications.cjs.js +1 -1
- package/dist/components/notifications.cjs.js.map +1 -1
- package/dist/components/notifications.es.js +368 -3
- package/dist/components/notifications.es.js.map +1 -1
- package/dist/components/onboarding.cjs.js +1 -1
- package/dist/components/onboarding.cjs.js.map +1 -1
- package/dist/components/onboarding.es.js +985 -7
- package/dist/components/onboarding.es.js.map +1 -1
- package/dist/components/primitives.cjs.js +1 -1
- package/dist/components/primitives.cjs.js.map +1 -1
- package/dist/components/primitives.es.js +635 -25
- package/dist/components/primitives.es.js.map +1 -1
- package/dist/debugger-wc.cjs.js +4 -4
- package/dist/debugger-wc.cjs.js.map +1 -1
- package/dist/debugger-wc.es.js +15 -11
- package/dist/debugger-wc.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs2.js +2 -49
- package/dist/index.cjs2.js.map +1 -1
- package/dist/index.cjs3.js +50 -0
- package/dist/index.cjs3.js.map +1 -0
- package/dist/index.es.js +104 -99
- package/dist/index.es.js.map +1 -1
- package/dist/index.es2.js +2632 -1776
- package/dist/index.es2.js.map +1 -1
- package/dist/index.es3.js +1944 -0
- package/dist/index.es3.js.map +1 -0
- package/dist/pages/interactionDetails.cjs.js +1 -1
- package/dist/pages/interactionDetails.cjs.js.map +1 -1
- package/dist/pages/interactionDetails.es.js +70 -47
- package/dist/pages/interactionDetails.es.js.map +1 -1
- package/dist/sortable.esm.cjs.js +1 -1
- package/dist/sortable.esm.cjs.js.map +1 -1
- package/dist/sortable.esm.es.js +55 -53
- package/dist/sortable.esm.es.js.map +1 -1
- package/dist/{chordia-ui.css → style.css} +1 -1
- package/package.json +1 -1
- package/src/components/UpdatedInteractionDetails/UpdatedInteractionDetails.jsx +318 -77
- package/src/components/UpdatedInteractionDetails/UpdatedInteractionRecording.jsx +7 -17
- package/dist/ChartRenderer.cjs.js +0 -31
- package/dist/ChartRenderer.cjs.js.map +0 -1
- package/dist/ChartRenderer.es.js +0 -2210
- package/dist/ChartRenderer.es.js.map +0 -1
- package/dist/GettingStarted.cjs.js +0 -2
- package/dist/GettingStarted.cjs.js.map +0 -1
- package/dist/GettingStarted.es.js +0 -983
- package/dist/GettingStarted.es.js.map +0 -1
- package/dist/InlineConfirm.cjs.js +0 -2
- package/dist/InlineConfirm.cjs.js.map +0 -1
- package/dist/InlineConfirm.es.js +0 -618
- package/dist/InlineConfirm.es.js.map +0 -1
- package/dist/InteractionSummaryCard.cjs.js +0 -2
- package/dist/InteractionSummaryCard.cjs.js.map +0 -1
- package/dist/InteractionSummaryCard.es.js +0 -216
- package/dist/InteractionSummaryCard.es.js.map +0 -1
- package/dist/LoginPage.cjs.js +0 -3
- package/dist/LoginPage.cjs.js.map +0 -1
- package/dist/LoginPage.es.js +0 -2618
- package/dist/LoginPage.es.js.map +0 -1
- package/dist/NavigationBar.cjs.js +0 -2
- package/dist/NavigationBar.cjs.js.map +0 -1
- package/dist/NavigationBar.es.js +0 -762
- package/dist/NavigationBar.es.js.map +0 -1
- package/dist/NotificationPanel.cjs.js +0 -2
- package/dist/NotificationPanel.cjs.js.map +0 -1
- package/dist/NotificationPanel.es.js +0 -371
- package/dist/NotificationPanel.es.js.map +0 -1
- package/dist/OverlayPanel.cjs.js +0 -2
- package/dist/OverlayPanel.cjs.js.map +0 -1
- package/dist/OverlayPanel.es.js +0 -93
- package/dist/OverlayPanel.es.js.map +0 -1
- package/dist/SplitPane.cjs.js +0 -4
- package/dist/SplitPane.cjs.js.map +0 -1
- package/dist/SplitPane.es.js +0 -1531
- package/dist/SplitPane.es.js.map +0 -1
- package/dist/SummaryStatsPanel.cjs.js +0 -2
- package/dist/SummaryStatsPanel.cjs.js.map +0 -1
- package/dist/SummaryStatsPanel.es.js +0 -1027
- package/dist/SummaryStatsPanel.es.js.map +0 -1
- package/dist/UpdatedInteractionDetails.cjs.js +0 -11
- package/dist/UpdatedInteractionDetails.cjs.js.map +0 -1
- package/dist/UpdatedInteractionDetails.es.js +0 -1310
- package/dist/UpdatedInteractionDetails.es.js.map +0 -1
|
@@ -1 +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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"}
|