chordia-ui 3.3.8 → 3.4.0

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 (162) 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 +7 -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 +105 -99
  99. package/dist/index.es.js.map +1 -1
  100. package/dist/index.es2.js +2992 -1774
  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/src/components/index.js +1 -1
  117. package/src/components/login/SignUpPage.jsx +336 -0
  118. package/src/components/login/index.js +1 -0
  119. package/dist/ChartRenderer.cjs.js +0 -31
  120. package/dist/ChartRenderer.cjs.js.map +0 -1
  121. package/dist/ChartRenderer.es.js +0 -2210
  122. package/dist/ChartRenderer.es.js.map +0 -1
  123. package/dist/GettingStarted.cjs.js +0 -2
  124. package/dist/GettingStarted.cjs.js.map +0 -1
  125. package/dist/GettingStarted.es.js +0 -983
  126. package/dist/GettingStarted.es.js.map +0 -1
  127. package/dist/InlineConfirm.cjs.js +0 -2
  128. package/dist/InlineConfirm.cjs.js.map +0 -1
  129. package/dist/InlineConfirm.es.js +0 -618
  130. package/dist/InlineConfirm.es.js.map +0 -1
  131. package/dist/InteractionSummaryCard.cjs.js +0 -2
  132. package/dist/InteractionSummaryCard.cjs.js.map +0 -1
  133. package/dist/InteractionSummaryCard.es.js +0 -216
  134. package/dist/InteractionSummaryCard.es.js.map +0 -1
  135. package/dist/LoginPage.cjs.js +0 -3
  136. package/dist/LoginPage.cjs.js.map +0 -1
  137. package/dist/LoginPage.es.js +0 -2618
  138. package/dist/LoginPage.es.js.map +0 -1
  139. package/dist/NavigationBar.cjs.js +0 -2
  140. package/dist/NavigationBar.cjs.js.map +0 -1
  141. package/dist/NavigationBar.es.js +0 -762
  142. package/dist/NavigationBar.es.js.map +0 -1
  143. package/dist/NotificationPanel.cjs.js +0 -2
  144. package/dist/NotificationPanel.cjs.js.map +0 -1
  145. package/dist/NotificationPanel.es.js +0 -371
  146. package/dist/NotificationPanel.es.js.map +0 -1
  147. package/dist/OverlayPanel.cjs.js +0 -2
  148. package/dist/OverlayPanel.cjs.js.map +0 -1
  149. package/dist/OverlayPanel.es.js +0 -93
  150. package/dist/OverlayPanel.es.js.map +0 -1
  151. package/dist/SplitPane.cjs.js +0 -4
  152. package/dist/SplitPane.cjs.js.map +0 -1
  153. package/dist/SplitPane.es.js +0 -1531
  154. package/dist/SplitPane.es.js.map +0 -1
  155. package/dist/SummaryStatsPanel.cjs.js +0 -2
  156. package/dist/SummaryStatsPanel.cjs.js.map +0 -1
  157. package/dist/SummaryStatsPanel.es.js +0 -1027
  158. package/dist/SummaryStatsPanel.es.js.map +0 -1
  159. package/dist/UpdatedInteractionDetails.cjs.js +0 -11
  160. package/dist/UpdatedInteractionDetails.cjs.js.map +0 -1
  161. package/dist/UpdatedInteractionDetails.es.js +0 -1310
  162. package/dist/UpdatedInteractionDetails.es.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AgentLiftCard.cjs.js","sources":["../src/components/common/EvidenceItem.jsx","../src/components/common/AgentLiftCard.jsx"],"sourcesContent":["import React from 'react';\nimport { User, UserCheck, Play, Pause, ScrollText } from 'lucide-react';\nimport SmallButton from '../primitives/SmallButton.jsx';\n\nfunction fmtMs(ms) {\n return `${Math.floor(ms / 60000)}:${String(Math.floor((ms % 60000) / 1000)).padStart(2, '0')}`;\n}\n\nexport default function EvidenceItem({ ev, onPlay, onHighlight, isPlaying }) {\n const actor = ev.actor === 'agent' ? <UserCheck size={11} /> : <User size={11} />;\n return (\n <div style={{\n fontSize: 'var(--text-sm)', padding: '6px 10px', borderRadius: 'var(--radius-sm)',\n background: 'var(--paper-elevated)', border: '1px solid var(--border)', marginTop: 4,\n }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 5, marginBottom: 3 }}>\n <span style={{ color: 'var(--text-muted)' }}>{actor}</span>\n {ev.source && <span style={{ color: 'var(--text-muted)', fontWeight: 500 }}>{ev.source}</span>}\n <span style={{ marginLeft: 'auto', display: 'flex', gap: 4, alignItems: 'center' }}>\n {ev.start_ms != null && (\n <SmallButton\n variant=\"primary\"\n size=\"sm\"\n onClick={() => onPlay(ev.start_ms, ev.end_ms)}\n title={isPlaying ? 'Pause audio' : 'Play audio'}\n style={{\n width: 24,\n height: 24,\n borderRadius: '50%',\n padding: 0,\n minWidth: 24,\n background: isPlaying\n ? 'var(--rail-discovery, #5E88B0)'\n : 'var(--paper, rgba(255,255,255,0.78))',\n border: isPlaying\n ? 'none'\n : '1px solid var(--border, rgba(52,58,64,0.12))',\n color: isPlaying ? '#fff' : 'var(--text-muted)',\n }}\n >\n {isPlaying ? <Pause size={10} /> : <Play size={10} style={{ marginLeft: 0.5 }} />}\n </SmallButton>\n )}\n {ev.turn_ids?.length > 0 && (\n <SmallButton variant=\"ghost\" size=\"sm\" onClick={() => onHighlight(ev.turn_ids)} title=\"Show in transcript\"><ScrollText size={10} /></SmallButton>\n )}\n {ev.start_ms != null && (\n <span style={{ fontSize: 'var(--text-xs)', color: 'var(--text-faint)' }}>{fmtMs(ev.start_ms)}</span>\n )}\n </span>\n </div>\n <div style={{ color: 'var(--text-base)', fontStyle: 'italic', lineHeight: 1.4 }}>\"{(ev.text || '').slice(0, 200)}\"</div>\n </div>\n );\n}\n","import React from 'react';\nimport { TrendingUp } from 'lucide-react';\nimport DetailCard from '../primitives/DetailCard.jsx';\nimport Tag from '../primitives/Tag.jsx';\n\nexport default function AgentLiftCard({ outcomeLift }) {\n if (outcomeLift.lift == null) return null;\n\n const pExpected = outcomeLift.p_expected;\n const pFull = outcomeLift.p_full;\n const liftRaw = outcomeLift.lift_raw ?? (pFull != null && pExpected != null ? pFull - pExpected : null);\n const liftRecentered = outcomeLift.lift;\n\n const fmtPct = (v) => v != null ? Math.round(v * 100) + '%' : '—';\n const fmtPp = (v) => {\n if (v == null) return '—';\n const pp = (v * 100).toFixed(1);\n return v > 0 ? `+${pp}pp` : `${pp}pp`;\n };\n\n const liftColor = (v) =>\n v > 0 ? 'var(--state-present)' : v < 0 ? '#f87171' : 'var(--text-muted)';\n\n return (\n <DetailCard title={\n <div style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <TrendingUp size={12} /> Agent Lift Analysis\n </div>\n }>\n {/* Main equation row: Baseline + Impact = Outcome */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 16 }}>\n {/* Call Difficulty Baseline */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 600, color: 'var(--text-faint)' }}>\n {fmtPct(pExpected)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-faint)', marginTop: 2 }}>Expected Outcome</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>Based on call type & difficulty</div>\n </div>\n\n {/* Plus sign */}\n <div style={{ fontSize: 16, color: 'var(--text-faint)', fontWeight: 300 }}>+</div>\n\n {/* Agent Impact (raw lift) */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 700, color: liftColor(liftRaw) }}>\n {fmtPp(liftRaw)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-muted)', marginTop: 2 }}>Agent Impact</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>Behavior-driven change</div>\n </div>\n\n {/* Equals sign */}\n <div style={{ fontSize: 16, color: 'var(--text-faint)', fontWeight: 300 }}>=</div>\n\n {/* Agent Outcome */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 600, color: 'var(--text-ink)' }}>\n {fmtPct(pFull)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-muted)', marginTop: 2 }}>Predicted Outcome</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>With agent behaviors</div>\n </div>\n </div>\n\n {/* Recentered lift — the \"so what\" */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n padding: '8px 12px',\n borderRadius: 6,\n background: 'var(--surface-raised, #f5f5f5)',\n marginBottom: 12,\n }}>\n <span style={{ fontSize: 10, color: 'var(--text-muted)' }}>vs. Average Agent:</span>\n <span style={{\n fontSize: 14,\n fontWeight: 700,\n color: liftColor(liftRecentered),\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n }}>\n {fmtPp(liftRecentered)}\n <svg width=\"10\" height=\"7\">\n {liftRecentered > 0 ? (\n <path d=\"M5 0 L9 6 L1 6 Z\" fill=\"var(--state-present)\" />\n ) : liftRecentered < 0 ? (\n <path d=\"M5 6 L9 0 L1 0 Z\" fill=\"#f87171\" />\n ) : (\n <rect x=\"1\" y=\"2.5\" width=\"8\" height=\"1\" fill=\"var(--text-muted)\" />\n )}\n </svg>\n </span>\n {outcomeLift.interpretation?.lift_band && (\n <span style={{\n fontSize: 9,\n fontWeight: 600,\n color: liftColor(liftRecentered),\n textTransform: 'capitalize',\n }}>\n {outcomeLift.interpretation.lift_band.replace(/_/g, ' ')}\n </span>\n )}\n </div>\n\n {/* Key Drivers */}\n {outcomeLift.driver_signal_keys?.length > 0 && (\n <div>\n <div style={{ fontSize: 9, fontWeight: 600, color: 'var(--text-muted)', marginBottom: 6, textTransform: 'uppercase', letterSpacing: '0.04em' }}>\n Key Drivers\n </div>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 4 }}>\n {outcomeLift.driver_signal_keys.map((key, i) => (\n <Tag key={i} variant=\"default\" size=\"xs\">\n {key.replace(/^sig\\./, '').replace(/_/g, ' ')}\n </Tag>\n ))}\n </div>\n </div>\n )}\n </DetailCard>\n );\n}\n"],"names":["fmtMs","ms","EvidenceItem","ev","onPlay","onHighlight","isPlaying","actor","jsx","UserCheck","User","jsxs","SmallButton","Pause","Play","_a","ScrollText","AgentLiftCard","outcomeLift","pExpected","pFull","liftRaw","liftRecentered","fmtPct","v","fmtPp","pp","liftColor","DetailCard","TrendingUp","_b","key","i","Tag"],"mappings":"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"}
1
+ {"version":3,"file":"AgentLiftCard.cjs.js","sources":["../src/components/common/EvidenceItem.jsx","../src/components/common/AgentLiftCard.jsx"],"sourcesContent":["import React from 'react';\nimport { User, UserCheck, Play, Pause, ScrollText } from 'lucide-react';\nimport SmallButton from '../primitives/SmallButton.jsx';\n\nfunction fmtMs(ms) {\n return `${Math.floor(ms / 60000)}:${String(Math.floor((ms % 60000) / 1000)).padStart(2, '0')}`;\n}\n\nexport default function EvidenceItem({ ev, onPlay, onHighlight, isPlaying }) {\n const actor = ev.actor === 'agent' ? <UserCheck size={11} /> : <User size={11} />;\n return (\n <div style={{\n fontSize: 'var(--text-sm)', padding: '6px 10px', borderRadius: 'var(--radius-sm)',\n background: 'var(--paper-elevated)', border: '1px solid var(--border)', marginTop: 4,\n }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 5, marginBottom: 3 }}>\n <span style={{ color: 'var(--text-muted)' }}>{actor}</span>\n {ev.source && <span style={{ color: 'var(--text-muted)', fontWeight: 500 }}>{ev.source}</span>}\n <span style={{ marginLeft: 'auto', display: 'flex', gap: 4, alignItems: 'center' }}>\n {ev.start_ms != null && (\n <SmallButton\n variant=\"primary\"\n size=\"sm\"\n onClick={() => onPlay(ev.start_ms, ev.end_ms)}\n title={isPlaying ? 'Pause audio' : 'Play audio'}\n style={{\n width: 24,\n height: 24,\n borderRadius: '50%',\n padding: 0,\n minWidth: 24,\n background: isPlaying\n ? 'var(--rail-discovery, #5E88B0)'\n : 'var(--paper, rgba(255,255,255,0.78))',\n border: isPlaying\n ? 'none'\n : '1px solid var(--border, rgba(52,58,64,0.12))',\n color: isPlaying ? '#fff' : 'var(--text-muted)',\n }}\n >\n {isPlaying ? <Pause size={10} /> : <Play size={10} style={{ marginLeft: 0.5 }} />}\n </SmallButton>\n )}\n {ev.turn_ids?.length > 0 && (\n <SmallButton variant=\"ghost\" size=\"sm\" onClick={() => onHighlight(ev.turn_ids)} title=\"Show in transcript\"><ScrollText size={10} /></SmallButton>\n )}\n {ev.start_ms != null && (\n <span style={{ fontSize: 'var(--text-xs)', color: 'var(--text-faint)' }}>{fmtMs(ev.start_ms)}</span>\n )}\n </span>\n </div>\n <div style={{ color: 'var(--text-base)', fontStyle: 'italic', lineHeight: 1.4 }}>\"{(ev.text || '').slice(0, 200)}\"</div>\n </div>\n );\n}\n","import React from 'react';\nimport { TrendingUp } from 'lucide-react';\nimport DetailCard from '../primitives/DetailCard.jsx';\nimport Tag from '../primitives/Tag.jsx';\n\nexport default function AgentLiftCard({ outcomeLift }) {\n if (outcomeLift.lift == null) return null;\n\n const pExpected = outcomeLift.p_expected;\n const pFull = outcomeLift.p_full;\n const liftRaw = outcomeLift.lift_raw ?? (pFull != null && pExpected != null ? pFull - pExpected : null);\n const liftRecentered = outcomeLift.lift;\n\n const fmtPct = (v) => v != null ? Math.round(v * 100) + '%' : '—';\n const fmtPp = (v) => {\n if (v == null) return '—';\n const pp = (v * 100).toFixed(1);\n return v > 0 ? `+${pp}pp` : `${pp}pp`;\n };\n\n const liftColor = (v) =>\n v > 0 ? 'var(--state-present)' : v < 0 ? '#f87171' : 'var(--text-muted)';\n\n return (\n <DetailCard title={\n <div style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <TrendingUp size={12} /> Agent Lift Analysis\n </div>\n }>\n {/* Main equation row: Baseline + Impact = Outcome */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 16 }}>\n {/* Call Difficulty Baseline */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 600, color: 'var(--text-faint)' }}>\n {fmtPct(pExpected)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-faint)', marginTop: 2 }}>Expected Outcome</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>Based on call type & difficulty</div>\n </div>\n\n {/* Plus sign */}\n <div style={{ fontSize: 16, color: 'var(--text-faint)', fontWeight: 300 }}>+</div>\n\n {/* Agent Impact (raw lift) */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 700, color: liftColor(liftRaw) }}>\n {fmtPp(liftRaw)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-muted)', marginTop: 2 }}>Agent Impact</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>Behavior-driven change</div>\n </div>\n\n {/* Equals sign */}\n <div style={{ fontSize: 16, color: 'var(--text-faint)', fontWeight: 300 }}>=</div>\n\n {/* Agent Outcome */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 600, color: 'var(--text-ink)' }}>\n {fmtPct(pFull)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-muted)', marginTop: 2 }}>Predicted Outcome</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>With agent behaviors</div>\n </div>\n </div>\n\n {/* Recentered lift — the \"so what\" */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n padding: '8px 12px',\n borderRadius: 6,\n background: 'var(--surface-raised, #f5f5f5)',\n marginBottom: 12,\n }}>\n <span style={{ fontSize: 10, color: 'var(--text-muted)' }}>vs. Average Agent:</span>\n <span style={{\n fontSize: 14,\n fontWeight: 700,\n color: liftColor(liftRecentered),\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n }}>\n {fmtPp(liftRecentered)}\n <svg width=\"10\" height=\"7\">\n {liftRecentered > 0 ? (\n <path d=\"M5 0 L9 6 L1 6 Z\" fill=\"var(--state-present)\" />\n ) : liftRecentered < 0 ? (\n <path d=\"M5 6 L9 0 L1 0 Z\" fill=\"#f87171\" />\n ) : (\n <rect x=\"1\" y=\"2.5\" width=\"8\" height=\"1\" fill=\"var(--text-muted)\" />\n )}\n </svg>\n </span>\n {outcomeLift.interpretation?.lift_band && (\n <span style={{\n fontSize: 9,\n fontWeight: 600,\n color: liftColor(liftRecentered),\n textTransform: 'capitalize',\n }}>\n {outcomeLift.interpretation.lift_band.replace(/_/g, ' ')}\n </span>\n )}\n </div>\n\n {/* Key Drivers */}\n {outcomeLift.driver_signal_keys?.length > 0 && (\n <div>\n <div style={{ fontSize: 9, fontWeight: 600, color: 'var(--text-muted)', marginBottom: 6, textTransform: 'uppercase', letterSpacing: '0.04em' }}>\n Key Drivers\n </div>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 4 }}>\n {outcomeLift.driver_signal_keys.map((key, i) => (\n <Tag key={i} variant=\"default\" size=\"xs\">\n {key.replace(/^sig\\./, '').replace(/_/g, ' ')}\n </Tag>\n ))}\n </div>\n </div>\n )}\n </DetailCard>\n );\n}\n"],"names":["fmtMs","ms","EvidenceItem","ev","onPlay","onHighlight","isPlaying","actor","jsx","UserCheck","User","jsxs","SmallButton","Pause","Play","_a","ScrollText","AgentLiftCard","outcomeLift","pExpected","pFull","liftRaw","liftRecentered","fmtPct","v","fmtPp","pp","liftColor","DetailCard","TrendingUp","_b","key","i","Tag"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as t, jsxs as r } from "react/jsx-runtime";
2
2
  import "react";
3
3
  import { UserCheck as x, User as v, Pause as m, Play as y, ScrollText as u, TrendingUp as z } from "lucide-react";
4
- import { S as g, D as S, T as _ } from "./SmallButton.es.js";
4
+ import { S as g, a as S, T as _ } from "./SmallButton.es.js";
5
5
  function b(e) {
6
6
  return `${Math.floor(e / 6e4)}:${String(Math.floor(e % 6e4 / 1e3)).padStart(2, "0")}`;
7
7
  }
@@ -53,9 +53,11 @@ function B({ ev: e, onPlay: a, onHighlight: d, isPlaying: n }) {
53
53
  }
54
54
  function I({ outcomeLift: e }) {
55
55
  var p, h;
56
- if (e.lift == null) return null;
56
+ if (e.lift == null)
57
+ return null;
57
58
  const a = e.p_expected, d = e.p_full, n = e.lift_raw ?? (d != null && a != null ? d - a : null), l = e.lift, o = (i) => i != null ? Math.round(i * 100) + "%" : "—", f = (i) => {
58
- if (i == null) return "—";
59
+ if (i == null)
60
+ return "—";
59
61
  const s = (i * 100).toFixed(1);
60
62
  return i > 0 ? `+${s}pp` : `${s}pp`;
61
63
  }, c = (i) => i > 0 ? "var(--state-present)" : i < 0 ? "#f87171" : "var(--text-muted)";
@@ -1 +1 @@
1
- {"version":3,"file":"AgentLiftCard.es.js","sources":["../src/components/common/EvidenceItem.jsx","../src/components/common/AgentLiftCard.jsx"],"sourcesContent":["import React from 'react';\nimport { User, UserCheck, Play, Pause, ScrollText } from 'lucide-react';\nimport SmallButton from '../primitives/SmallButton.jsx';\n\nfunction fmtMs(ms) {\n return `${Math.floor(ms / 60000)}:${String(Math.floor((ms % 60000) / 1000)).padStart(2, '0')}`;\n}\n\nexport default function EvidenceItem({ ev, onPlay, onHighlight, isPlaying }) {\n const actor = ev.actor === 'agent' ? <UserCheck size={11} /> : <User size={11} />;\n return (\n <div style={{\n fontSize: 'var(--text-sm)', padding: '6px 10px', borderRadius: 'var(--radius-sm)',\n background: 'var(--paper-elevated)', border: '1px solid var(--border)', marginTop: 4,\n }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 5, marginBottom: 3 }}>\n <span style={{ color: 'var(--text-muted)' }}>{actor}</span>\n {ev.source && <span style={{ color: 'var(--text-muted)', fontWeight: 500 }}>{ev.source}</span>}\n <span style={{ marginLeft: 'auto', display: 'flex', gap: 4, alignItems: 'center' }}>\n {ev.start_ms != null && (\n <SmallButton\n variant=\"primary\"\n size=\"sm\"\n onClick={() => onPlay(ev.start_ms, ev.end_ms)}\n title={isPlaying ? 'Pause audio' : 'Play audio'}\n style={{\n width: 24,\n height: 24,\n borderRadius: '50%',\n padding: 0,\n minWidth: 24,\n background: isPlaying\n ? 'var(--rail-discovery, #5E88B0)'\n : 'var(--paper, rgba(255,255,255,0.78))',\n border: isPlaying\n ? 'none'\n : '1px solid var(--border, rgba(52,58,64,0.12))',\n color: isPlaying ? '#fff' : 'var(--text-muted)',\n }}\n >\n {isPlaying ? <Pause size={10} /> : <Play size={10} style={{ marginLeft: 0.5 }} />}\n </SmallButton>\n )}\n {ev.turn_ids?.length > 0 && (\n <SmallButton variant=\"ghost\" size=\"sm\" onClick={() => onHighlight(ev.turn_ids)} title=\"Show in transcript\"><ScrollText size={10} /></SmallButton>\n )}\n {ev.start_ms != null && (\n <span style={{ fontSize: 'var(--text-xs)', color: 'var(--text-faint)' }}>{fmtMs(ev.start_ms)}</span>\n )}\n </span>\n </div>\n <div style={{ color: 'var(--text-base)', fontStyle: 'italic', lineHeight: 1.4 }}>\"{(ev.text || '').slice(0, 200)}\"</div>\n </div>\n );\n}\n","import React from 'react';\nimport { TrendingUp } from 'lucide-react';\nimport DetailCard from '../primitives/DetailCard.jsx';\nimport Tag from '../primitives/Tag.jsx';\n\nexport default function AgentLiftCard({ outcomeLift }) {\n if (outcomeLift.lift == null) return null;\n\n const pExpected = outcomeLift.p_expected;\n const pFull = outcomeLift.p_full;\n const liftRaw = outcomeLift.lift_raw ?? (pFull != null && pExpected != null ? pFull - pExpected : null);\n const liftRecentered = outcomeLift.lift;\n\n const fmtPct = (v) => v != null ? Math.round(v * 100) + '%' : '—';\n const fmtPp = (v) => {\n if (v == null) return '—';\n const pp = (v * 100).toFixed(1);\n return v > 0 ? `+${pp}pp` : `${pp}pp`;\n };\n\n const liftColor = (v) =>\n v > 0 ? 'var(--state-present)' : v < 0 ? '#f87171' : 'var(--text-muted)';\n\n return (\n <DetailCard title={\n <div style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <TrendingUp size={12} /> Agent Lift Analysis\n </div>\n }>\n {/* Main equation row: Baseline + Impact = Outcome */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 16 }}>\n {/* Call Difficulty Baseline */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 600, color: 'var(--text-faint)' }}>\n {fmtPct(pExpected)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-faint)', marginTop: 2 }}>Expected Outcome</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>Based on call type & difficulty</div>\n </div>\n\n {/* Plus sign */}\n <div style={{ fontSize: 16, color: 'var(--text-faint)', fontWeight: 300 }}>+</div>\n\n {/* Agent Impact (raw lift) */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 700, color: liftColor(liftRaw) }}>\n {fmtPp(liftRaw)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-muted)', marginTop: 2 }}>Agent Impact</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>Behavior-driven change</div>\n </div>\n\n {/* Equals sign */}\n <div style={{ fontSize: 16, color: 'var(--text-faint)', fontWeight: 300 }}>=</div>\n\n {/* Agent Outcome */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 600, color: 'var(--text-ink)' }}>\n {fmtPct(pFull)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-muted)', marginTop: 2 }}>Predicted Outcome</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>With agent behaviors</div>\n </div>\n </div>\n\n {/* Recentered lift — the \"so what\" */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n padding: '8px 12px',\n borderRadius: 6,\n background: 'var(--surface-raised, #f5f5f5)',\n marginBottom: 12,\n }}>\n <span style={{ fontSize: 10, color: 'var(--text-muted)' }}>vs. Average Agent:</span>\n <span style={{\n fontSize: 14,\n fontWeight: 700,\n color: liftColor(liftRecentered),\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n }}>\n {fmtPp(liftRecentered)}\n <svg width=\"10\" height=\"7\">\n {liftRecentered > 0 ? (\n <path d=\"M5 0 L9 6 L1 6 Z\" fill=\"var(--state-present)\" />\n ) : liftRecentered < 0 ? (\n <path d=\"M5 6 L9 0 L1 0 Z\" fill=\"#f87171\" />\n ) : (\n <rect x=\"1\" y=\"2.5\" width=\"8\" height=\"1\" fill=\"var(--text-muted)\" />\n )}\n </svg>\n </span>\n {outcomeLift.interpretation?.lift_band && (\n <span style={{\n fontSize: 9,\n fontWeight: 600,\n color: liftColor(liftRecentered),\n textTransform: 'capitalize',\n }}>\n {outcomeLift.interpretation.lift_band.replace(/_/g, ' ')}\n </span>\n )}\n </div>\n\n {/* Key Drivers */}\n {outcomeLift.driver_signal_keys?.length > 0 && (\n <div>\n <div style={{ fontSize: 9, fontWeight: 600, color: 'var(--text-muted)', marginBottom: 6, textTransform: 'uppercase', letterSpacing: '0.04em' }}>\n Key Drivers\n </div>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 4 }}>\n {outcomeLift.driver_signal_keys.map((key, i) => (\n <Tag key={i} variant=\"default\" size=\"xs\">\n {key.replace(/^sig\\./, '').replace(/_/g, ' ')}\n </Tag>\n ))}\n </div>\n </div>\n )}\n </DetailCard>\n );\n}\n"],"names":["fmtMs","ms","EvidenceItem","ev","onPlay","onHighlight","isPlaying","actor","jsx","UserCheck","User","jsxs","SmallButton","Pause","Play","_a","ScrollText","AgentLiftCard","outcomeLift","pExpected","pFull","liftRaw","liftRecentered","fmtPct","v","fmtPp","pp","liftColor","DetailCard","TrendingUp","_b","key","i","Tag"],"mappings":";;;;AAIA,SAASA,EAAMC,GAAI;AACjB,SAAO,GAAG,KAAK,MAAMA,IAAK,GAAK,CAAC,IAAI,OAAO,KAAK,MAAOA,IAAK,MAAS,GAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAC9F;AAEA,SAAwBC,EAAa,EAAE,IAAAC,GAAI,QAAAC,GAAQ,aAAAC,GAAa,WAAAC,KAAa;;AAC3E,QAAMC,IAAQJ,EAAG,UAAU,UAAU,gBAAAK,EAACC,GAAA,EAAU,MAAM,GAAA,CAAI,IAAK,gBAAAD,EAACE,GAAA,EAAK,MAAM,IAAI;AAC/E,SACE,gBAAAC,EAAC,SAAI,OAAO;AAAA,IACV,UAAU;AAAA,IAAkB,SAAS;AAAA,IAAY,cAAc;AAAA,IAC/D,YAAY;AAAA,IAAyB,QAAQ;AAAA,IAA2B,WAAW;AAAA,EAAA,GAEnF,UAAA;AAAA,IAAA,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,cAAc,EAAA,GACzE,UAAA;AAAA,MAAA,gBAAAH,EAAC,UAAK,OAAO,EAAE,OAAO,oBAAA,GAAwB,UAAAD,GAAM;AAAA,MACnDJ,EAAG,UAAU,gBAAAK,EAAC,QAAA,EAAK,OAAO,EAAE,OAAO,qBAAqB,YAAY,IAAA,GAAQ,UAAAL,EAAG,OAAA,CAAO;AAAA,MACvF,gBAAAQ,EAAC,QAAA,EAAK,OAAO,EAAE,YAAY,QAAQ,SAAS,QAAQ,KAAK,GAAG,YAAY,SAAA,GACrE,UAAA;AAAA,QAAAR,EAAG,YAAY,QACd,gBAAAK;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS,MAAMR,EAAOD,EAAG,UAAUA,EAAG,MAAM;AAAA,YAC5C,OAAOG,IAAY,gBAAgB;AAAA,YACnC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,SAAS;AAAA,cACT,UAAU;AAAA,cACV,YAAYA,IACR,mCACA;AAAA,cACJ,QAAQA,IACJ,SACA;AAAA,cACJ,OAAOA,IAAY,SAAS;AAAA,YAAA;AAAA,YAG7B,UAAAA,IAAY,gBAAAE,EAACK,GAAA,EAAM,MAAM,IAAI,IAAK,gBAAAL,EAACM,GAAA,EAAK,MAAM,IAAI,OAAO,EAAE,YAAY,MAAI,CAAG;AAAA,UAAA;AAAA,QAAA;AAAA,UAGlFC,IAAAZ,EAAG,aAAH,gBAAAY,EAAa,UAAS,uBACpBH,GAAA,EAAY,SAAQ,SAAQ,MAAK,MAAK,SAAS,MAAMP,EAAYF,EAAG,QAAQ,GAAG,OAAM,sBAAqB,UAAA,gBAAAK,EAACQ,GAAA,EAAW,MAAM,GAAA,CAAI,EAAA,CAAE;AAAA,QAEpIb,EAAG,YAAY,QACd,gBAAAK,EAAC,UAAK,OAAO,EAAE,UAAU,kBAAkB,OAAO,uBAAwB,UAAAR,EAAMG,EAAG,QAAQ,EAAA,CAAE;AAAA,MAAA,EAAA,CAEjG;AAAA,IAAA,GACF;AAAA,IACA,gBAAAQ,EAAC,OAAA,EAAI,OAAO,EAAE,OAAO,oBAAoB,WAAW,UAAU,YAAY,IAAA,GAAO,UAAA;AAAA,MAAA;AAAA,OAAGR,EAAG,QAAQ,IAAI,MAAM,GAAG,GAAG;AAAA,MAAE;AAAA,IAAA,EAAA,CAAC;AAAA,EAAA,GACpH;AAEJ;ACjDA,SAAwBc,EAAc,EAAE,aAAAC,KAAe;;AACrD,MAAIA,EAAY,QAAQ,KAAM,QAAO;AAErC,QAAMC,IAAYD,EAAY,YACxBE,IAAQF,EAAY,QACpBG,IAAUH,EAAY,aAAaE,KAAS,QAAQD,KAAa,OAAOC,IAAQD,IAAY,OAC5FG,IAAiBJ,EAAY,MAE7BK,IAAS,CAACC,MAAMA,KAAK,OAAO,KAAK,MAAMA,IAAI,GAAG,IAAI,MAAM,KACxDC,IAAQ,CAACD,MAAM;AACnB,QAAIA,KAAK,KAAM,QAAO;AACtB,UAAME,KAAMF,IAAI,KAAK,QAAQ,CAAC;AAC9B,WAAOA,IAAI,IAAI,IAAIE,CAAE,OAAO,GAAGA,CAAE;AAAA,EACnC,GAEMC,IAAY,CAACH,MACjBA,IAAI,IAAI,yBAAyBA,IAAI,IAAI,YAAY;AAEvD,SACE,gBAAAb,EAACiB,GAAA,EAAW,OACV,gBAAAjB,EAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,KACxD,UAAA;AAAA,IAAA,gBAAAH,EAACqB,GAAA,EAAW,MAAM,GAAA,CAAI;AAAA,IAAE;AAAA,EAAA,EAAA,CAC1B,GAGA,UAAA;AAAA,IAAA,gBAAAlB,EAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,cAAc,GAAA,GAEzE,UAAA;AAAA,MAAA,gBAAAA,EAAC,SAAI,OAAO,EAAE,WAAW,UAAU,MAAM,KACvC,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,oBAAA,GACjD,UAAAe,EAAOJ,CAAS,EAAA,CACnB;AAAA,QACA,gBAAAX,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,WAAW,EAAA,GAAK,UAAA,mBAAA,CAAgB;AAAA,QACxF,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,GAAG,OAAO,qBAAqB,WAAW,KAAK,UAAA,kCAAA,CAA+B;AAAA,MAAA,GACxG;AAAA,MAGA,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,YAAY,IAAA,GAAO,UAAA,IAAA,CAAC;AAAA,MAG5E,gBAAAG,EAAC,SAAI,OAAO,EAAE,WAAW,UAAU,MAAM,KACvC,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAOmB,EAAUN,CAAO,EAAA,GAClE,UAAAI,EAAMJ,CAAO,GAChB;AAAA,QACA,gBAAAb,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,WAAW,EAAA,GAAK,UAAA,eAAA,CAAY;AAAA,QACpF,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,GAAG,OAAO,qBAAqB,WAAW,KAAK,UAAA,yBAAA,CAAsB;AAAA,MAAA,GAC/F;AAAA,MAGA,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,YAAY,IAAA,GAAO,UAAA,IAAA,CAAC;AAAA,MAG5E,gBAAAG,EAAC,SAAI,OAAO,EAAE,WAAW,UAAU,MAAM,KACvC,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,kBAAA,GACjD,UAAAe,EAAOH,CAAK,EAAA,CACf;AAAA,QACA,gBAAAZ,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,WAAW,EAAA,GAAK,UAAA,oBAAA,CAAiB;AAAA,QACzF,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,UAAU,GAAG,OAAO,qBAAqB,WAAW,KAAK,UAAA,uBAAA,CAAoB;AAAA,MAAA,EAAA,CAC7F;AAAA,IAAA,GACF;AAAA,IAGA,gBAAAG,EAAC,SAAI,OAAO;AAAA,MACV,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,KAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,cAAc;AAAA,IAAA,GAEd,UAAA;AAAA,MAAA,gBAAAH,EAAC,QAAA,EAAK,OAAO,EAAE,UAAU,IAAI,OAAO,oBAAA,GAAuB,UAAA,qBAAA,CAAkB;AAAA,MAC7E,gBAAAG,EAAC,UAAK,OAAO;AAAA,QACX,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAOgB,EAAUL,CAAc;AAAA,QAC/B,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK;AAAA,MAAA,GAEJ,UAAA;AAAA,QAAAG,EAAMH,CAAc;AAAA,0BACpB,OAAA,EAAI,OAAM,MAAK,QAAO,KACpB,UAAAA,IAAiB,IAChB,gBAAAd,EAAC,QAAA,EAAK,GAAE,oBAAmB,MAAK,uBAAA,CAAuB,IACrDc,IAAiB,IACnB,gBAAAd,EAAC,QAAA,EAAK,GAAE,oBAAmB,MAAK,UAAA,CAAU,IAE1C,gBAAAA,EAAC,UAAK,GAAE,KAAI,GAAE,OAAM,OAAM,KAAI,QAAO,KAAI,MAAK,qBAAoB,EAAA,CAEtE;AAAA,MAAA,GACF;AAAA,QACCO,IAAAG,EAAY,mBAAZ,gBAAAH,EAA4B,cAC3B,gBAAAP,EAAC,UAAK,OAAO;AAAA,QACX,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAOmB,EAAUL,CAAc;AAAA,QAC/B,eAAe;AAAA,MAAA,GAEd,UAAAJ,EAAY,eAAe,UAAU,QAAQ,MAAM,GAAG,EAAA,CACzD;AAAA,IAAA,GAEJ;AAAA,MAGCY,IAAAZ,EAAY,uBAAZ,gBAAAY,EAAgC,UAAS,uBACvC,OAAA,EACC,UAAA;AAAA,MAAA,gBAAAtB,EAAC,SAAI,OAAO,EAAE,UAAU,GAAG,YAAY,KAAK,OAAO,qBAAqB,cAAc,GAAG,eAAe,aAAa,eAAe,SAAA,GAAY,UAAA,eAEhJ;AAAA,MACA,gBAAAA,EAAC,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,UAAU,QAAQ,KAAK,KACnD,UAAAU,EAAY,mBAAmB,IAAI,CAACa,GAAKC,MACxC,gBAAAxB,EAACyB,GAAA,EAAY,SAAQ,WAAU,MAAK,MACjC,YAAI,QAAQ,UAAU,EAAE,EAAE,QAAQ,MAAM,GAAG,EAAA,GADpCD,CAEV,CACD,EAAA,CACH;AAAA,IAAA,EAAA,CACF;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"AgentLiftCard.es.js","sources":["../src/components/common/EvidenceItem.jsx","../src/components/common/AgentLiftCard.jsx"],"sourcesContent":["import React from 'react';\nimport { User, UserCheck, Play, Pause, ScrollText } from 'lucide-react';\nimport SmallButton from '../primitives/SmallButton.jsx';\n\nfunction fmtMs(ms) {\n return `${Math.floor(ms / 60000)}:${String(Math.floor((ms % 60000) / 1000)).padStart(2, '0')}`;\n}\n\nexport default function EvidenceItem({ ev, onPlay, onHighlight, isPlaying }) {\n const actor = ev.actor === 'agent' ? <UserCheck size={11} /> : <User size={11} />;\n return (\n <div style={{\n fontSize: 'var(--text-sm)', padding: '6px 10px', borderRadius: 'var(--radius-sm)',\n background: 'var(--paper-elevated)', border: '1px solid var(--border)', marginTop: 4,\n }}>\n <div style={{ display: 'flex', alignItems: 'center', gap: 5, marginBottom: 3 }}>\n <span style={{ color: 'var(--text-muted)' }}>{actor}</span>\n {ev.source && <span style={{ color: 'var(--text-muted)', fontWeight: 500 }}>{ev.source}</span>}\n <span style={{ marginLeft: 'auto', display: 'flex', gap: 4, alignItems: 'center' }}>\n {ev.start_ms != null && (\n <SmallButton\n variant=\"primary\"\n size=\"sm\"\n onClick={() => onPlay(ev.start_ms, ev.end_ms)}\n title={isPlaying ? 'Pause audio' : 'Play audio'}\n style={{\n width: 24,\n height: 24,\n borderRadius: '50%',\n padding: 0,\n minWidth: 24,\n background: isPlaying\n ? 'var(--rail-discovery, #5E88B0)'\n : 'var(--paper, rgba(255,255,255,0.78))',\n border: isPlaying\n ? 'none'\n : '1px solid var(--border, rgba(52,58,64,0.12))',\n color: isPlaying ? '#fff' : 'var(--text-muted)',\n }}\n >\n {isPlaying ? <Pause size={10} /> : <Play size={10} style={{ marginLeft: 0.5 }} />}\n </SmallButton>\n )}\n {ev.turn_ids?.length > 0 && (\n <SmallButton variant=\"ghost\" size=\"sm\" onClick={() => onHighlight(ev.turn_ids)} title=\"Show in transcript\"><ScrollText size={10} /></SmallButton>\n )}\n {ev.start_ms != null && (\n <span style={{ fontSize: 'var(--text-xs)', color: 'var(--text-faint)' }}>{fmtMs(ev.start_ms)}</span>\n )}\n </span>\n </div>\n <div style={{ color: 'var(--text-base)', fontStyle: 'italic', lineHeight: 1.4 }}>\"{(ev.text || '').slice(0, 200)}\"</div>\n </div>\n );\n}\n","import React from 'react';\nimport { TrendingUp } from 'lucide-react';\nimport DetailCard from '../primitives/DetailCard.jsx';\nimport Tag from '../primitives/Tag.jsx';\n\nexport default function AgentLiftCard({ outcomeLift }) {\n if (outcomeLift.lift == null) return null;\n\n const pExpected = outcomeLift.p_expected;\n const pFull = outcomeLift.p_full;\n const liftRaw = outcomeLift.lift_raw ?? (pFull != null && pExpected != null ? pFull - pExpected : null);\n const liftRecentered = outcomeLift.lift;\n\n const fmtPct = (v) => v != null ? Math.round(v * 100) + '%' : '—';\n const fmtPp = (v) => {\n if (v == null) return '—';\n const pp = (v * 100).toFixed(1);\n return v > 0 ? `+${pp}pp` : `${pp}pp`;\n };\n\n const liftColor = (v) =>\n v > 0 ? 'var(--state-present)' : v < 0 ? '#f87171' : 'var(--text-muted)';\n\n return (\n <DetailCard title={\n <div style={{ display: 'flex', alignItems: 'center', gap: 4 }}>\n <TrendingUp size={12} /> Agent Lift Analysis\n </div>\n }>\n {/* Main equation row: Baseline + Impact = Outcome */}\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, marginBottom: 16 }}>\n {/* Call Difficulty Baseline */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 600, color: 'var(--text-faint)' }}>\n {fmtPct(pExpected)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-faint)', marginTop: 2 }}>Expected Outcome</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>Based on call type & difficulty</div>\n </div>\n\n {/* Plus sign */}\n <div style={{ fontSize: 16, color: 'var(--text-faint)', fontWeight: 300 }}>+</div>\n\n {/* Agent Impact (raw lift) */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 700, color: liftColor(liftRaw) }}>\n {fmtPp(liftRaw)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-muted)', marginTop: 2 }}>Agent Impact</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>Behavior-driven change</div>\n </div>\n\n {/* Equals sign */}\n <div style={{ fontSize: 16, color: 'var(--text-faint)', fontWeight: 300 }}>=</div>\n\n {/* Agent Outcome */}\n <div style={{ textAlign: 'center', flex: 1 }}>\n <div style={{ fontSize: 20, fontWeight: 600, color: 'var(--text-ink)' }}>\n {fmtPct(pFull)}\n </div>\n <div style={{ fontSize: 10, color: 'var(--text-muted)', marginTop: 2 }}>Predicted Outcome</div>\n <div style={{ fontSize: 9, color: 'var(--text-faint)', marginTop: 1 }}>With agent behaviors</div>\n </div>\n </div>\n\n {/* Recentered lift — the \"so what\" */}\n <div style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: 8,\n padding: '8px 12px',\n borderRadius: 6,\n background: 'var(--surface-raised, #f5f5f5)',\n marginBottom: 12,\n }}>\n <span style={{ fontSize: 10, color: 'var(--text-muted)' }}>vs. Average Agent:</span>\n <span style={{\n fontSize: 14,\n fontWeight: 700,\n color: liftColor(liftRecentered),\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n }}>\n {fmtPp(liftRecentered)}\n <svg width=\"10\" height=\"7\">\n {liftRecentered > 0 ? (\n <path d=\"M5 0 L9 6 L1 6 Z\" fill=\"var(--state-present)\" />\n ) : liftRecentered < 0 ? (\n <path d=\"M5 6 L9 0 L1 0 Z\" fill=\"#f87171\" />\n ) : (\n <rect x=\"1\" y=\"2.5\" width=\"8\" height=\"1\" fill=\"var(--text-muted)\" />\n )}\n </svg>\n </span>\n {outcomeLift.interpretation?.lift_band && (\n <span style={{\n fontSize: 9,\n fontWeight: 600,\n color: liftColor(liftRecentered),\n textTransform: 'capitalize',\n }}>\n {outcomeLift.interpretation.lift_band.replace(/_/g, ' ')}\n </span>\n )}\n </div>\n\n {/* Key Drivers */}\n {outcomeLift.driver_signal_keys?.length > 0 && (\n <div>\n <div style={{ fontSize: 9, fontWeight: 600, color: 'var(--text-muted)', marginBottom: 6, textTransform: 'uppercase', letterSpacing: '0.04em' }}>\n Key Drivers\n </div>\n <div style={{ display: 'flex', flexWrap: 'wrap', gap: 4 }}>\n {outcomeLift.driver_signal_keys.map((key, i) => (\n <Tag key={i} variant=\"default\" size=\"xs\">\n {key.replace(/^sig\\./, '').replace(/_/g, ' ')}\n </Tag>\n ))}\n </div>\n </div>\n )}\n </DetailCard>\n );\n}\n"],"names":["fmtMs","ms","EvidenceItem","ev","onPlay","onHighlight","isPlaying","actor","jsx","UserCheck","User","jsxs","SmallButton","Pause","Play","_a","ScrollText","AgentLiftCard","outcomeLift","pExpected","pFull","liftRaw","liftRecentered","fmtPct","v","fmtPp","pp","liftColor","DetailCard","TrendingUp","_b","key","i","Tag"],"mappings":";;;;AAIA,SAASA,EAAMC,GAAI;AACjB,SAAO,GAAG,KAAK,MAAMA,IAAK,GAAK,CAAC,IAAI,OAAO,KAAK,MAAOA,IAAK,MAAS,GAAI,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAC9F;AAEA,SAAwBC,EAAa,EAAE,IAAAC,GAAI,QAAAC,GAAQ,aAAAC,GAAa,WAAAC,KAAa;;AAC3E,QAAMC,IAAQJ,EAAG,UAAU,UAAW,gBAAAK,EAAAC,GAAA,EAAU,MAAM,GAAI,CAAA,IAAK,gBAAAD,EAACE,GAAK,EAAA,MAAM,GAAI,CAAA;AAE7E,SAAA,gBAAAC,EAAC,SAAI,OAAO;AAAA,IACV,UAAU;AAAA,IAAkB,SAAS;AAAA,IAAY,cAAc;AAAA,IAC/D,YAAY;AAAA,IAAyB,QAAQ;AAAA,IAA2B,WAAW;AAAA,EAEnF,GAAA,UAAA;AAAA,IAAC,gBAAAA,EAAA,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,cAAc,EAAA,GACzE,UAAA;AAAA,MAAA,gBAAAH,EAAC,UAAK,OAAO,EAAE,OAAO,uBAAwB,UAAMD,GAAA;AAAA,MACnDJ,EAAG,UAAW,gBAAAK,EAAA,QAAA,EAAK,OAAO,EAAE,OAAO,qBAAqB,YAAY,IAAQ,GAAA,UAAAL,EAAG,OAAO,CAAA;AAAA,MACtF,gBAAAQ,EAAA,QAAA,EAAK,OAAO,EAAE,YAAY,QAAQ,SAAS,QAAQ,KAAK,GAAG,YAAY,SAAA,GACrE,UAAA;AAAA,QAAAR,EAAG,YAAY,QACd,gBAAAK;AAAA,UAACI;AAAA,UAAA;AAAA,YACC,SAAQ;AAAA,YACR,MAAK;AAAA,YACL,SAAS,MAAMR,EAAOD,EAAG,UAAUA,EAAG,MAAM;AAAA,YAC5C,OAAOG,IAAY,gBAAgB;AAAA,YACnC,OAAO;AAAA,cACL,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,cAAc;AAAA,cACd,SAAS;AAAA,cACT,UAAU;AAAA,cACV,YAAYA,IACR,mCACA;AAAA,cACJ,QAAQA,IACJ,SACA;AAAA,cACJ,OAAOA,IAAY,SAAS;AAAA,YAC9B;AAAA,YAEC,UAAYA,IAAA,gBAAAE,EAACK,GAAM,EAAA,MAAM,IAAI,IAAK,gBAAAL,EAACM,GAAK,EAAA,MAAM,IAAI,OAAO,EAAE,YAAY,OAAO;AAAA,UAAA;AAAA,QACjF;AAAA,UAEDC,IAAAZ,EAAG,aAAH,gBAAAY,EAAa,UAAS,uBACpBH,GAAY,EAAA,SAAQ,SAAQ,MAAK,MAAK,SAAS,MAAMP,EAAYF,EAAG,QAAQ,GAAG,OAAM,sBAAqB,UAAC,gBAAAK,EAAAQ,GAAA,EAAW,MAAM,GAAA,CAAI,EAAE,CAAA;AAAA,QAEpIb,EAAG,YAAY,QACd,gBAAAK,EAAC,UAAK,OAAO,EAAE,UAAU,kBAAkB,OAAO,oBAAoB,GAAI,UAAMR,EAAAG,EAAG,QAAQ,GAAE;AAAA,MAAA,GAEjG;AAAA,IAAA,GACF;AAAA,IACA,gBAAAQ,EAAC,OAAI,EAAA,OAAO,EAAE,OAAO,oBAAoB,WAAW,UAAU,YAAY,IAAA,GAAO,UAAA;AAAA,MAAA;AAAA,OAAGR,EAAG,QAAQ,IAAI,MAAM,GAAG,GAAG;AAAA,MAAE;AAAA,IAAA,GAAC;AAAA,EACpH,EAAA,CAAA;AAEJ;ACjDwB,SAAAc,EAAc,EAAE,aAAAC,KAAe;;AACrD,MAAIA,EAAY,QAAQ;AAAa,WAAA;AAErC,QAAMC,IAAYD,EAAY,YACxBE,IAAQF,EAAY,QACpBG,IAAUH,EAAY,aAAaE,KAAS,QAAQD,KAAa,OAAOC,IAAQD,IAAY,OAC5FG,IAAiBJ,EAAY,MAE7BK,IAAS,CAACC,MAAMA,KAAK,OAAO,KAAK,MAAMA,IAAI,GAAG,IAAI,MAAM,KACxDC,IAAQ,CAACD,MAAM;AACnB,QAAIA,KAAK;AAAa,aAAA;AACtB,UAAME,KAAMF,IAAI,KAAK,QAAQ,CAAC;AAC9B,WAAOA,IAAI,IAAI,IAAIE,CAAE,OAAO,GAAGA,CAAE;AAAA,EAAA,GAG7BC,IAAY,CAACH,MACjBA,IAAI,IAAI,yBAAyBA,IAAI,IAAI,YAAY;AAEvD,SACG,gBAAAb,EAAAiB,GAAA,EAAW,OACV,gBAAAjB,EAAC,OAAI,EAAA,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,EACxD,GAAA,UAAA;AAAA,IAAC,gBAAAH,EAAAqB,GAAA,EAAW,MAAM,GAAI,CAAA;AAAA,IAAE;AAAA,EAAA,EAC1B,CAAA,GAGA,UAAA;AAAA,IAAC,gBAAAlB,EAAA,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,YAAY,UAAU,KAAK,GAAG,cAAc,GAAA,GAEzE,UAAA;AAAA,MAAA,gBAAAA,EAAC,SAAI,OAAO,EAAE,WAAW,UAAU,MAAM,EACvC,GAAA,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,oBAAoB,GACrE,UAAOe,EAAAJ,CAAS,EACnB,CAAA;AAAA,QACA,gBAAAX,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,WAAW,EAAE,GAAG,UAAgB,mBAAA,CAAA;AAAA,QACxF,gBAAAA,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,GAAG,OAAO,qBAAqB,WAAW,EAAE,GAAG,UAA+B,kCAAA,CAAA;AAAA,MAAA,GACxG;AAAA,MAGA,gBAAAA,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,YAAY,IAAI,GAAG,UAAC,IAAA,CAAA;AAAA,MAG5E,gBAAAG,EAAC,SAAI,OAAO,EAAE,WAAW,UAAU,MAAM,EACvC,GAAA,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAOmB,EAAUN,CAAO,EAClE,GAAA,UAAAI,EAAMJ,CAAO,GAChB;AAAA,QACA,gBAAAb,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,WAAW,EAAE,GAAG,UAAY,eAAA,CAAA;AAAA,QACpF,gBAAAA,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,GAAG,OAAO,qBAAqB,WAAW,EAAE,GAAG,UAAsB,yBAAA,CAAA;AAAA,MAAA,GAC/F;AAAA,MAGA,gBAAAA,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,YAAY,IAAI,GAAG,UAAC,IAAA,CAAA;AAAA,MAG5E,gBAAAG,EAAC,SAAI,OAAO,EAAE,WAAW,UAAU,MAAM,EACvC,GAAA,UAAA;AAAA,QAAA,gBAAAH,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,IAAI,YAAY,KAAK,OAAO,kBAAkB,GACnE,UAAOe,EAAAH,CAAK,EACf,CAAA;AAAA,QACA,gBAAAZ,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,IAAI,OAAO,qBAAqB,WAAW,EAAE,GAAG,UAAiB,oBAAA,CAAA;AAAA,QACzF,gBAAAA,EAAC,OAAI,EAAA,OAAO,EAAE,UAAU,GAAG,OAAO,qBAAqB,WAAW,EAAE,GAAG,UAAoB,uBAAA,CAAA;AAAA,MAAA,GAC7F;AAAA,IAAA,GACF;AAAA,IAGA,gBAAAG,EAAC,SAAI,OAAO;AAAA,MACV,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,KAAK;AAAA,MACL,SAAS;AAAA,MACT,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,cAAc;AAAA,IAEd,GAAA,UAAA;AAAA,MAAC,gBAAAH,EAAA,QAAA,EAAK,OAAO,EAAE,UAAU,IAAI,OAAO,oBAAA,GAAuB,UAAkB,qBAAA,CAAA;AAAA,MAC7E,gBAAAG,EAAC,UAAK,OAAO;AAAA,QACX,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAOgB,EAAUL,CAAc;AAAA,QAC/B,SAAS;AAAA,QACT,YAAY;AAAA,QACZ,KAAK;AAAA,MAEJ,GAAA,UAAA;AAAA,QAAAG,EAAMH,CAAc;AAAA,0BACpB,OAAI,EAAA,OAAM,MAAK,QAAO,KACpB,UAAiBA,IAAA,IACf,gBAAAd,EAAA,QAAA,EAAK,GAAE,oBAAmB,MAAK,wBAAuB,IACrDc,IAAiB,IACnB,gBAAAd,EAAC,QAAK,EAAA,GAAE,oBAAmB,MAAK,UAAU,CAAA,IAE1C,gBAAAA,EAAC,UAAK,GAAE,KAAI,GAAE,OAAM,OAAM,KAAI,QAAO,KAAI,MAAK,oBAAoB,CAAA,GAEtE;AAAA,MAAA,GACF;AAAA,QACCO,IAAAG,EAAY,mBAAZ,gBAAAH,EAA4B,cAC3B,gBAAAP,EAAC,UAAK,OAAO;AAAA,QACX,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,OAAOmB,EAAUL,CAAc;AAAA,QAC/B,eAAe;AAAA,MAAA,GAEd,UAAYJ,EAAA,eAAe,UAAU,QAAQ,MAAM,GAAG,GACzD;AAAA,IAAA,GAEJ;AAAA,MAGCY,IAAAZ,EAAY,uBAAZ,gBAAAY,EAAgC,UAAS,uBACvC,OACC,EAAA,UAAA;AAAA,MAAA,gBAAAtB,EAAC,SAAI,OAAO,EAAE,UAAU,GAAG,YAAY,KAAK,OAAO,qBAAqB,cAAc,GAAG,eAAe,aAAa,eAAe,YAAY,UAEhJ,eAAA;AAAA,MACC,gBAAAA,EAAA,OAAA,EAAI,OAAO,EAAE,SAAS,QAAQ,UAAU,QAAQ,KAAK,KACnD,UAAAU,EAAY,mBAAmB,IAAI,CAACa,GAAKC,MACvC,gBAAAxB,EAAAyB,GAAA,EAAY,SAAQ,WAAU,MAAK,MACjC,YAAI,QAAQ,UAAU,EAAE,EAAE,QAAQ,MAAM,GAAG,KADpCD,CAEV,CACD,GACH;AAAA,IAAA,GACF;AAAA,EAEJ,EAAA,CAAA;AAEJ;"}
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFilterChips.cjs.js","sources":["../src/components/common/Pagination.jsx","../src/components/common/CustomFilterChips.jsx"],"sourcesContent":[" \"use client\";\n\nimport React, { useMemo } from \"react\";\n\n/**\n * Pagination Component\n * @param {number} page - current page number (1-based)\n * @param {number} pageSize - rows per page\n * @param {number} totalCount - total row count (for pagination)\n * @param {number} currentDataLength - length of current page's data array\n * @param {function} onPageChange - function(newPage) for pagination\n * @param {function} onPageSizeChange - function(newPageSize) for changing rows/page\n * @param {Array} pageSizeOptions - array of page size options (default: [10, 20, 50, 100])\n * @param {string} className - additional CSS classes\n * @param {boolean} showRecordCounter - whether to show the record counter (default: true)\n * @param {boolean} showPageSizeSelector - whether to show the page size selector (default: true)\n */\nexport default function Pagination({\n page = 1,\n pageSize = 10,\n totalCount = 0,\n currentDataLength = 0,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100],\n className = \"\",\n showRecordCounter = true,\n showPageSizeSelector = true,\n}) {\n const totalPages = Math.ceil(totalCount / pageSize);\n\n const currentRecordStart = (page - 1) * pageSize + 1;\n const currentRecordEnd = Math.min(\n (page - 1) * pageSize + currentDataLength,\n totalCount\n );\n\n const pageNumbers = useMemo(() => {\n if (totalPages <= 1) return [];\n\n const pages = [];\n const maxVisiblePages = 7;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i += 1) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n\n let startPage = Math.max(2, page - 2);\n let endPage = Math.min(totalPages - 1, page + 2);\n\n if (page <= 3) {\n endPage = 5;\n }\n\n if (page >= totalPages - 2) {\n startPage = totalPages - 4;\n }\n\n if (startPage > 2) {\n pages.push(\"ellipsis-start\");\n }\n\n for (let i = startPage; i <= endPage; i += 1) {\n pages.push(i);\n }\n\n if (endPage < totalPages - 1) {\n pages.push(\"ellipsis-end\");\n }\n\n pages.push(totalPages);\n }\n\n return pages;\n }, [page, totalPages]);\n\n if (!onPageChange || totalPages === 0) {\n return null;\n }\n\n const shouldShowPageSizeSelector =\n showPageSizeSelector && typeof onPageSizeChange === \"function\";\n\n return (\n <div\n className={`flex items-center justify-between px-3 py-3 gap-4 bg-[white] rounded-b-lg ${className}`}\n >\n <div className=\"flex items-center gap-4\">\n {shouldShowPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-gray-700\">Rows per page:</span>\n <select\n className=\"border border-gray-300 rounded px-2 py-1 text-sm bg-white text-gray-700\"\n value={pageSize}\n onChange={(e) => onPageSizeChange(Number(e.target.value))}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n {showRecordCounter && (\n <span className=\"text-sm text-gray-700\">\n Showing{\" \"}\n {currentRecordEnd > 0\n ? `${currentRecordStart}-${currentRecordEnd}`\n : 0}{\" \"}\n of {totalCount}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n &lt; Previous\n </button>\n\n {pageNumbers.map((pageNum, index) => {\n if (pageNum === \"ellipsis-start\" || pageNum === \"ellipsis-end\") {\n return (\n <button\n key={`ellipsis-${index}`}\n className=\"w-8 h-8 rounded-full text-gray-500 flex items-center justify-center cursor-default\"\n disabled\n aria-hidden=\"true\"\n >\n <span className=\"text-xs\">...</span>\n </button>\n );\n }\n\n const isActive = pageNum === page;\n\n return (\n <button\n key={pageNum}\n className={`w-8 h-8 rounded-full flex items-center justify-center transition-colors text-sm font-medium ${\n isActive\n ? \"bg-green-2 text-black font-semibold\"\n : \"bg-white border border-gray-300 text-gray-700 hover:bg-gray-50\"\n }`}\n onClick={() => onPageChange(pageNum)}\n aria-label={`Go to page ${pageNum}`}\n aria-current={isActive ? \"page\" : undefined}\n >\n {pageNum}\n </button>\n );\n })}\n\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Next page\"\n >\n Next &gt;\n </button>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React from \"react\";\n\nfunction formatLabel(key) {\n return key\n .replace(/([A-Z])/g, \" $1\")\n .replace(/_/g, \" \")\n .replace(/^./, (str) => str.toUpperCase())\n .trim();\n}\n\nexport default function CustomFilterChips({\n filters,\n onChange,\n onClear,\n customFilters = [],\n fieldOptions = {},\n className = \"\",\n}) {\n const chips = [];\n\n const getDisplayLabel = (key, value) => {\n if (fieldOptions[key] && Array.isArray(fieldOptions[key])) {\n const option = fieldOptions[key].find((opt) => {\n const optValue =\n typeof opt === \"object\"\n ? opt.value !== undefined\n ? opt.value\n : opt.id\n : opt;\n return optValue === value || String(optValue) === String(value);\n });\n if (option) {\n return typeof option === \"object\"\n ? option.label || option.value || String(option)\n : String(option);\n }\n }\n return String(value);\n };\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (Array.isArray(value) && value.length) {\n const displayValues = value.map((v) => getDisplayLabel(key, v));\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValues.join(\", \")}`,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n } else if (typeof value === \"string\" && value.trim() !== \"\") {\n const displayValue = getDisplayLabel(key, value);\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValue}`,\n onRemove: () => onChange({ ...filters, [key]: \"\" }),\n });\n }\n });\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (\n value &&\n typeof value === \"object\" &&\n (value.min != null || value.max != null)\n ) {\n const label =\n value.min != null && value.max != null\n ? `${formatLabel(key)}: ${value.min}\\u2013${value.max}`\n : value.min != null\n ? `${formatLabel(key)} \\u2265 ${value.min}`\n : `${formatLabel(key)} \\u2264 ${value.max}`;\n chips.push({\n key,\n label,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n }\n });\n\n (customFilters || []).forEach((filterObj) => {\n if (filterObj && filterObj.active) {\n chips.push({\n key: filterObj.key,\n label: filterObj.label,\n onRemove: filterObj.onRemove,\n });\n }\n });\n\n if (!chips.length) return null;\n\n return (\n <div className={`flex flex-wrap items-center gap-4 ${className}`}>\n {chips.map((c) => (\n <span\n key={c.key}\n className=\"bg-white h-10 border border-gray-200 rounded-[14px] px-3 flex items-center text-[13px] transition-colors\"\n >\n {c.label}\n <button\n onClick={c.onRemove}\n className=\"ml-2 text-gray-500 hover:text-black transition-colors flex items-center\"\n type=\"button\"\n >\n <span className=\"relative top-[-1px]\">×</span>\n </button>\n </span>\n ))}\n <button\n onClick={onClear}\n className=\"h-10 px-3.5 rounded-[14px] bg-white border border-gray-200 text-red-600 transition-colors flex items-center justify-center gap-1.5\"\n type=\"button\"\n >\n <span className=\"text-red-600\">×</span>\n <span>Clear</span>\n </button>\n </div>\n );\n}\n\n"],"names":["Pagination","page","pageSize","totalCount","currentDataLength","onPageChange","onPageSizeChange","pageSizeOptions","className","showRecordCounter","showPageSizeSelector","totalPages","currentRecordStart","currentRecordEnd","pageNumbers","useMemo","pages","i","startPage","endPage","shouldShowPageSizeSelector","jsxs","jsx","e","size","pageNum","index","isActive","formatLabel","key","str","CustomFilterChips","filters","onChange","onClear","customFilters","fieldOptions","chips","getDisplayLabel","value","option","opt","optValue","displayValues","v","newFilters","displayValue","label","filterObj","c"],"mappings":"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"}
1
+ {"version":3,"file":"CustomFilterChips.cjs.js","sources":["../src/components/common/Pagination.jsx","../src/components/common/CustomFilterChips.jsx"],"sourcesContent":[" \"use client\";\n\nimport React, { useMemo } from \"react\";\n\n/**\n * Pagination Component\n * @param {number} page - current page number (1-based)\n * @param {number} pageSize - rows per page\n * @param {number} totalCount - total row count (for pagination)\n * @param {number} currentDataLength - length of current page's data array\n * @param {function} onPageChange - function(newPage) for pagination\n * @param {function} onPageSizeChange - function(newPageSize) for changing rows/page\n * @param {Array} pageSizeOptions - array of page size options (default: [10, 20, 50, 100])\n * @param {string} className - additional CSS classes\n * @param {boolean} showRecordCounter - whether to show the record counter (default: true)\n * @param {boolean} showPageSizeSelector - whether to show the page size selector (default: true)\n */\nexport default function Pagination({\n page = 1,\n pageSize = 10,\n totalCount = 0,\n currentDataLength = 0,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100],\n className = \"\",\n showRecordCounter = true,\n showPageSizeSelector = true,\n}) {\n const totalPages = Math.ceil(totalCount / pageSize);\n\n const currentRecordStart = (page - 1) * pageSize + 1;\n const currentRecordEnd = Math.min(\n (page - 1) * pageSize + currentDataLength,\n totalCount\n );\n\n const pageNumbers = useMemo(() => {\n if (totalPages <= 1) return [];\n\n const pages = [];\n const maxVisiblePages = 7;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i += 1) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n\n let startPage = Math.max(2, page - 2);\n let endPage = Math.min(totalPages - 1, page + 2);\n\n if (page <= 3) {\n endPage = 5;\n }\n\n if (page >= totalPages - 2) {\n startPage = totalPages - 4;\n }\n\n if (startPage > 2) {\n pages.push(\"ellipsis-start\");\n }\n\n for (let i = startPage; i <= endPage; i += 1) {\n pages.push(i);\n }\n\n if (endPage < totalPages - 1) {\n pages.push(\"ellipsis-end\");\n }\n\n pages.push(totalPages);\n }\n\n return pages;\n }, [page, totalPages]);\n\n if (!onPageChange || totalPages === 0) {\n return null;\n }\n\n const shouldShowPageSizeSelector =\n showPageSizeSelector && typeof onPageSizeChange === \"function\";\n\n return (\n <div\n className={`flex items-center justify-between px-3 py-3 gap-4 bg-[white] rounded-b-lg ${className}`}\n >\n <div className=\"flex items-center gap-4\">\n {shouldShowPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-gray-700\">Rows per page:</span>\n <select\n className=\"border border-gray-300 rounded px-2 py-1 text-sm bg-white text-gray-700\"\n value={pageSize}\n onChange={(e) => onPageSizeChange(Number(e.target.value))}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n {showRecordCounter && (\n <span className=\"text-sm text-gray-700\">\n Showing{\" \"}\n {currentRecordEnd > 0\n ? `${currentRecordStart}-${currentRecordEnd}`\n : 0}{\" \"}\n of {totalCount}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n &lt; Previous\n </button>\n\n {pageNumbers.map((pageNum, index) => {\n if (pageNum === \"ellipsis-start\" || pageNum === \"ellipsis-end\") {\n return (\n <button\n key={`ellipsis-${index}`}\n className=\"w-8 h-8 rounded-full text-gray-500 flex items-center justify-center cursor-default\"\n disabled\n aria-hidden=\"true\"\n >\n <span className=\"text-xs\">...</span>\n </button>\n );\n }\n\n const isActive = pageNum === page;\n\n return (\n <button\n key={pageNum}\n className={`w-8 h-8 rounded-full flex items-center justify-center transition-colors text-sm font-medium ${\n isActive\n ? \"bg-green-2 text-black font-semibold\"\n : \"bg-white border border-gray-300 text-gray-700 hover:bg-gray-50\"\n }`}\n onClick={() => onPageChange(pageNum)}\n aria-label={`Go to page ${pageNum}`}\n aria-current={isActive ? \"page\" : undefined}\n >\n {pageNum}\n </button>\n );\n })}\n\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Next page\"\n >\n Next &gt;\n </button>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React from \"react\";\n\nfunction formatLabel(key) {\n return key\n .replace(/([A-Z])/g, \" $1\")\n .replace(/_/g, \" \")\n .replace(/^./, (str) => str.toUpperCase())\n .trim();\n}\n\nexport default function CustomFilterChips({\n filters,\n onChange,\n onClear,\n customFilters = [],\n fieldOptions = {},\n className = \"\",\n}) {\n const chips = [];\n\n const getDisplayLabel = (key, value) => {\n if (fieldOptions[key] && Array.isArray(fieldOptions[key])) {\n const option = fieldOptions[key].find((opt) => {\n const optValue =\n typeof opt === \"object\"\n ? opt.value !== undefined\n ? opt.value\n : opt.id\n : opt;\n return optValue === value || String(optValue) === String(value);\n });\n if (option) {\n return typeof option === \"object\"\n ? option.label || option.value || String(option)\n : String(option);\n }\n }\n return String(value);\n };\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (Array.isArray(value) && value.length) {\n const displayValues = value.map((v) => getDisplayLabel(key, v));\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValues.join(\", \")}`,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n } else if (typeof value === \"string\" && value.trim() !== \"\") {\n const displayValue = getDisplayLabel(key, value);\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValue}`,\n onRemove: () => onChange({ ...filters, [key]: \"\" }),\n });\n }\n });\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (\n value &&\n typeof value === \"object\" &&\n (value.min != null || value.max != null)\n ) {\n const label =\n value.min != null && value.max != null\n ? `${formatLabel(key)}: ${value.min}\\u2013${value.max}`\n : value.min != null\n ? `${formatLabel(key)} \\u2265 ${value.min}`\n : `${formatLabel(key)} \\u2264 ${value.max}`;\n chips.push({\n key,\n label,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n }\n });\n\n (customFilters || []).forEach((filterObj) => {\n if (filterObj && filterObj.active) {\n chips.push({\n key: filterObj.key,\n label: filterObj.label,\n onRemove: filterObj.onRemove,\n });\n }\n });\n\n if (!chips.length) return null;\n\n return (\n <div className={`flex flex-wrap items-center gap-4 ${className}`}>\n {chips.map((c) => (\n <span\n key={c.key}\n className=\"bg-white h-10 border border-gray-200 rounded-[14px] px-3 flex items-center text-[13px] transition-colors\"\n >\n {c.label}\n <button\n onClick={c.onRemove}\n className=\"ml-2 text-gray-500 hover:text-black transition-colors flex items-center\"\n type=\"button\"\n >\n <span className=\"relative top-[-1px]\">×</span>\n </button>\n </span>\n ))}\n <button\n onClick={onClear}\n className=\"h-10 px-3.5 rounded-[14px] bg-white border border-gray-200 text-red-600 transition-colors flex items-center justify-center gap-1.5\"\n type=\"button\"\n >\n <span className=\"text-red-600\">×</span>\n <span>Clear</span>\n </button>\n </div>\n );\n}\n\n"],"names":["Pagination","page","pageSize","totalCount","currentDataLength","onPageChange","onPageSizeChange","pageSizeOptions","className","showRecordCounter","showPageSizeSelector","totalPages","currentRecordStart","currentRecordEnd","pageNumbers","useMemo","pages","i","startPage","endPage","shouldShowPageSizeSelector","jsxs","jsx","e","size","pageNum","index","isActive","formatLabel","key","str","CustomFilterChips","filters","onChange","onClear","customFilters","fieldOptions","chips","getDisplayLabel","value","option","opt","optValue","displayValues","v","newFilters","displayValue","label","filterObj","c"],"mappings":"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"}
@@ -16,7 +16,8 @@ function A({
16
16
  (n - 1) * o + f,
17
17
  b
18
18
  ), $ = v(() => {
19
- if (r <= 1) return [];
19
+ if (r <= 1)
20
+ return [];
20
21
  const s = [];
21
22
  if (r <= 7)
22
23
  for (let a = 1; a <= r; a += 1)
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFilterChips.es.js","sources":["../src/components/common/Pagination.jsx","../src/components/common/CustomFilterChips.jsx"],"sourcesContent":[" \"use client\";\n\nimport React, { useMemo } from \"react\";\n\n/**\n * Pagination Component\n * @param {number} page - current page number (1-based)\n * @param {number} pageSize - rows per page\n * @param {number} totalCount - total row count (for pagination)\n * @param {number} currentDataLength - length of current page's data array\n * @param {function} onPageChange - function(newPage) for pagination\n * @param {function} onPageSizeChange - function(newPageSize) for changing rows/page\n * @param {Array} pageSizeOptions - array of page size options (default: [10, 20, 50, 100])\n * @param {string} className - additional CSS classes\n * @param {boolean} showRecordCounter - whether to show the record counter (default: true)\n * @param {boolean} showPageSizeSelector - whether to show the page size selector (default: true)\n */\nexport default function Pagination({\n page = 1,\n pageSize = 10,\n totalCount = 0,\n currentDataLength = 0,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100],\n className = \"\",\n showRecordCounter = true,\n showPageSizeSelector = true,\n}) {\n const totalPages = Math.ceil(totalCount / pageSize);\n\n const currentRecordStart = (page - 1) * pageSize + 1;\n const currentRecordEnd = Math.min(\n (page - 1) * pageSize + currentDataLength,\n totalCount\n );\n\n const pageNumbers = useMemo(() => {\n if (totalPages <= 1) return [];\n\n const pages = [];\n const maxVisiblePages = 7;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i += 1) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n\n let startPage = Math.max(2, page - 2);\n let endPage = Math.min(totalPages - 1, page + 2);\n\n if (page <= 3) {\n endPage = 5;\n }\n\n if (page >= totalPages - 2) {\n startPage = totalPages - 4;\n }\n\n if (startPage > 2) {\n pages.push(\"ellipsis-start\");\n }\n\n for (let i = startPage; i <= endPage; i += 1) {\n pages.push(i);\n }\n\n if (endPage < totalPages - 1) {\n pages.push(\"ellipsis-end\");\n }\n\n pages.push(totalPages);\n }\n\n return pages;\n }, [page, totalPages]);\n\n if (!onPageChange || totalPages === 0) {\n return null;\n }\n\n const shouldShowPageSizeSelector =\n showPageSizeSelector && typeof onPageSizeChange === \"function\";\n\n return (\n <div\n className={`flex items-center justify-between px-3 py-3 gap-4 bg-[white] rounded-b-lg ${className}`}\n >\n <div className=\"flex items-center gap-4\">\n {shouldShowPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-gray-700\">Rows per page:</span>\n <select\n className=\"border border-gray-300 rounded px-2 py-1 text-sm bg-white text-gray-700\"\n value={pageSize}\n onChange={(e) => onPageSizeChange(Number(e.target.value))}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n {showRecordCounter && (\n <span className=\"text-sm text-gray-700\">\n Showing{\" \"}\n {currentRecordEnd > 0\n ? `${currentRecordStart}-${currentRecordEnd}`\n : 0}{\" \"}\n of {totalCount}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n &lt; Previous\n </button>\n\n {pageNumbers.map((pageNum, index) => {\n if (pageNum === \"ellipsis-start\" || pageNum === \"ellipsis-end\") {\n return (\n <button\n key={`ellipsis-${index}`}\n className=\"w-8 h-8 rounded-full text-gray-500 flex items-center justify-center cursor-default\"\n disabled\n aria-hidden=\"true\"\n >\n <span className=\"text-xs\">...</span>\n </button>\n );\n }\n\n const isActive = pageNum === page;\n\n return (\n <button\n key={pageNum}\n className={`w-8 h-8 rounded-full flex items-center justify-center transition-colors text-sm font-medium ${\n isActive\n ? \"bg-green-2 text-black font-semibold\"\n : \"bg-white border border-gray-300 text-gray-700 hover:bg-gray-50\"\n }`}\n onClick={() => onPageChange(pageNum)}\n aria-label={`Go to page ${pageNum}`}\n aria-current={isActive ? \"page\" : undefined}\n >\n {pageNum}\n </button>\n );\n })}\n\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Next page\"\n >\n Next &gt;\n </button>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React from \"react\";\n\nfunction formatLabel(key) {\n return key\n .replace(/([A-Z])/g, \" $1\")\n .replace(/_/g, \" \")\n .replace(/^./, (str) => str.toUpperCase())\n .trim();\n}\n\nexport default function CustomFilterChips({\n filters,\n onChange,\n onClear,\n customFilters = [],\n fieldOptions = {},\n className = \"\",\n}) {\n const chips = [];\n\n const getDisplayLabel = (key, value) => {\n if (fieldOptions[key] && Array.isArray(fieldOptions[key])) {\n const option = fieldOptions[key].find((opt) => {\n const optValue =\n typeof opt === \"object\"\n ? opt.value !== undefined\n ? opt.value\n : opt.id\n : opt;\n return optValue === value || String(optValue) === String(value);\n });\n if (option) {\n return typeof option === \"object\"\n ? option.label || option.value || String(option)\n : String(option);\n }\n }\n return String(value);\n };\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (Array.isArray(value) && value.length) {\n const displayValues = value.map((v) => getDisplayLabel(key, v));\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValues.join(\", \")}`,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n } else if (typeof value === \"string\" && value.trim() !== \"\") {\n const displayValue = getDisplayLabel(key, value);\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValue}`,\n onRemove: () => onChange({ ...filters, [key]: \"\" }),\n });\n }\n });\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (\n value &&\n typeof value === \"object\" &&\n (value.min != null || value.max != null)\n ) {\n const label =\n value.min != null && value.max != null\n ? `${formatLabel(key)}: ${value.min}\\u2013${value.max}`\n : value.min != null\n ? `${formatLabel(key)} \\u2265 ${value.min}`\n : `${formatLabel(key)} \\u2264 ${value.max}`;\n chips.push({\n key,\n label,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n }\n });\n\n (customFilters || []).forEach((filterObj) => {\n if (filterObj && filterObj.active) {\n chips.push({\n key: filterObj.key,\n label: filterObj.label,\n onRemove: filterObj.onRemove,\n });\n }\n });\n\n if (!chips.length) return null;\n\n return (\n <div className={`flex flex-wrap items-center gap-4 ${className}`}>\n {chips.map((c) => (\n <span\n key={c.key}\n className=\"bg-white h-10 border border-gray-200 rounded-[14px] px-3 flex items-center text-[13px] transition-colors\"\n >\n {c.label}\n <button\n onClick={c.onRemove}\n className=\"ml-2 text-gray-500 hover:text-black transition-colors flex items-center\"\n type=\"button\"\n >\n <span className=\"relative top-[-1px]\">×</span>\n </button>\n </span>\n ))}\n <button\n onClick={onClear}\n className=\"h-10 px-3.5 rounded-[14px] bg-white border border-gray-200 text-red-600 transition-colors flex items-center justify-center gap-1.5\"\n type=\"button\"\n >\n <span className=\"text-red-600\">×</span>\n <span>Clear</span>\n </button>\n </div>\n );\n}\n\n"],"names":["Pagination","page","pageSize","totalCount","currentDataLength","onPageChange","onPageSizeChange","pageSizeOptions","className","showRecordCounter","showPageSizeSelector","totalPages","currentRecordStart","currentRecordEnd","pageNumbers","useMemo","pages","i","startPage","endPage","shouldShowPageSizeSelector","jsxs","jsx","e","size","pageNum","index","isActive","formatLabel","key","str","CustomFilterChips","filters","onChange","onClear","customFilters","fieldOptions","chips","getDisplayLabel","value","option","opt","optValue","displayValues","v","newFilters","displayValue","label","filterObj","c"],"mappings":"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"}
1
+ {"version":3,"file":"CustomFilterChips.es.js","sources":["../src/components/common/Pagination.jsx","../src/components/common/CustomFilterChips.jsx"],"sourcesContent":[" \"use client\";\n\nimport React, { useMemo } from \"react\";\n\n/**\n * Pagination Component\n * @param {number} page - current page number (1-based)\n * @param {number} pageSize - rows per page\n * @param {number} totalCount - total row count (for pagination)\n * @param {number} currentDataLength - length of current page's data array\n * @param {function} onPageChange - function(newPage) for pagination\n * @param {function} onPageSizeChange - function(newPageSize) for changing rows/page\n * @param {Array} pageSizeOptions - array of page size options (default: [10, 20, 50, 100])\n * @param {string} className - additional CSS classes\n * @param {boolean} showRecordCounter - whether to show the record counter (default: true)\n * @param {boolean} showPageSizeSelector - whether to show the page size selector (default: true)\n */\nexport default function Pagination({\n page = 1,\n pageSize = 10,\n totalCount = 0,\n currentDataLength = 0,\n onPageChange,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100],\n className = \"\",\n showRecordCounter = true,\n showPageSizeSelector = true,\n}) {\n const totalPages = Math.ceil(totalCount / pageSize);\n\n const currentRecordStart = (page - 1) * pageSize + 1;\n const currentRecordEnd = Math.min(\n (page - 1) * pageSize + currentDataLength,\n totalCount\n );\n\n const pageNumbers = useMemo(() => {\n if (totalPages <= 1) return [];\n\n const pages = [];\n const maxVisiblePages = 7;\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i += 1) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n\n let startPage = Math.max(2, page - 2);\n let endPage = Math.min(totalPages - 1, page + 2);\n\n if (page <= 3) {\n endPage = 5;\n }\n\n if (page >= totalPages - 2) {\n startPage = totalPages - 4;\n }\n\n if (startPage > 2) {\n pages.push(\"ellipsis-start\");\n }\n\n for (let i = startPage; i <= endPage; i += 1) {\n pages.push(i);\n }\n\n if (endPage < totalPages - 1) {\n pages.push(\"ellipsis-end\");\n }\n\n pages.push(totalPages);\n }\n\n return pages;\n }, [page, totalPages]);\n\n if (!onPageChange || totalPages === 0) {\n return null;\n }\n\n const shouldShowPageSizeSelector =\n showPageSizeSelector && typeof onPageSizeChange === \"function\";\n\n return (\n <div\n className={`flex items-center justify-between px-3 py-3 gap-4 bg-[white] rounded-b-lg ${className}`}\n >\n <div className=\"flex items-center gap-4\">\n {shouldShowPageSizeSelector && (\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm text-gray-700\">Rows per page:</span>\n <select\n className=\"border border-gray-300 rounded px-2 py-1 text-sm bg-white text-gray-700\"\n value={pageSize}\n onChange={(e) => onPageSizeChange(Number(e.target.value))}\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n {showRecordCounter && (\n <span className=\"text-sm text-gray-700\">\n Showing{\" \"}\n {currentRecordEnd > 0\n ? `${currentRecordStart}-${currentRecordEnd}`\n : 0}{\" \"}\n of {totalCount}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page - 1)}\n disabled={page <= 1}\n aria-label=\"Previous page\"\n >\n &lt; Previous\n </button>\n\n {pageNumbers.map((pageNum, index) => {\n if (pageNum === \"ellipsis-start\" || pageNum === \"ellipsis-end\") {\n return (\n <button\n key={`ellipsis-${index}`}\n className=\"w-8 h-8 rounded-full text-gray-500 flex items-center justify-center cursor-default\"\n disabled\n aria-hidden=\"true\"\n >\n <span className=\"text-xs\">...</span>\n </button>\n );\n }\n\n const isActive = pageNum === page;\n\n return (\n <button\n key={pageNum}\n className={`w-8 h-8 rounded-full flex items-center justify-center transition-colors text-sm font-medium ${\n isActive\n ? \"bg-green-2 text-black font-semibold\"\n : \"bg-white border border-gray-300 text-gray-700 hover:bg-gray-50\"\n }`}\n onClick={() => onPageChange(pageNum)}\n aria-label={`Go to page ${pageNum}`}\n aria-current={isActive ? \"page\" : undefined}\n >\n {pageNum}\n </button>\n );\n })}\n\n <button\n className=\"px-3 py-1.5 rounded-lg bg-white border border-gray-300 text-gray-700 flex items-center justify-center hover:bg-gray-50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:bg-white text-sm font-medium\"\n onClick={() => onPageChange(page + 1)}\n disabled={page >= totalPages}\n aria-label=\"Next page\"\n >\n Next &gt;\n </button>\n </div>\n </div>\n );\n}\n\n","\"use client\";\n\nimport React from \"react\";\n\nfunction formatLabel(key) {\n return key\n .replace(/([A-Z])/g, \" $1\")\n .replace(/_/g, \" \")\n .replace(/^./, (str) => str.toUpperCase())\n .trim();\n}\n\nexport default function CustomFilterChips({\n filters,\n onChange,\n onClear,\n customFilters = [],\n fieldOptions = {},\n className = \"\",\n}) {\n const chips = [];\n\n const getDisplayLabel = (key, value) => {\n if (fieldOptions[key] && Array.isArray(fieldOptions[key])) {\n const option = fieldOptions[key].find((opt) => {\n const optValue =\n typeof opt === \"object\"\n ? opt.value !== undefined\n ? opt.value\n : opt.id\n : opt;\n return optValue === value || String(optValue) === String(value);\n });\n if (option) {\n return typeof option === \"object\"\n ? option.label || option.value || String(option)\n : String(option);\n }\n }\n return String(value);\n };\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (Array.isArray(value) && value.length) {\n const displayValues = value.map((v) => getDisplayLabel(key, v));\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValues.join(\", \")}`,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n } else if (typeof value === \"string\" && value.trim() !== \"\") {\n const displayValue = getDisplayLabel(key, value);\n chips.push({\n key,\n label: `${formatLabel(key)}: ${displayValue}`,\n onRemove: () => onChange({ ...filters, [key]: \"\" }),\n });\n }\n });\n\n Object.entries(filters || {}).forEach(([key, value]) => {\n if (\n value &&\n typeof value === \"object\" &&\n (value.min != null || value.max != null)\n ) {\n const label =\n value.min != null && value.max != null\n ? `${formatLabel(key)}: ${value.min}\\u2013${value.max}`\n : value.min != null\n ? `${formatLabel(key)} \\u2265 ${value.min}`\n : `${formatLabel(key)} \\u2264 ${value.max}`;\n chips.push({\n key,\n label,\n onRemove: () => {\n const newFilters = { ...filters };\n delete newFilters[key];\n onChange(newFilters);\n },\n });\n }\n });\n\n (customFilters || []).forEach((filterObj) => {\n if (filterObj && filterObj.active) {\n chips.push({\n key: filterObj.key,\n label: filterObj.label,\n onRemove: filterObj.onRemove,\n });\n }\n });\n\n if (!chips.length) return null;\n\n return (\n <div className={`flex flex-wrap items-center gap-4 ${className}`}>\n {chips.map((c) => (\n <span\n key={c.key}\n className=\"bg-white h-10 border border-gray-200 rounded-[14px] px-3 flex items-center text-[13px] transition-colors\"\n >\n {c.label}\n <button\n onClick={c.onRemove}\n className=\"ml-2 text-gray-500 hover:text-black transition-colors flex items-center\"\n type=\"button\"\n >\n <span className=\"relative top-[-1px]\">×</span>\n </button>\n </span>\n ))}\n <button\n onClick={onClear}\n className=\"h-10 px-3.5 rounded-[14px] bg-white border border-gray-200 text-red-600 transition-colors flex items-center justify-center gap-1.5\"\n type=\"button\"\n >\n <span className=\"text-red-600\">×</span>\n <span>Clear</span>\n </button>\n </div>\n );\n}\n\n"],"names":["Pagination","page","pageSize","totalCount","currentDataLength","onPageChange","onPageSizeChange","pageSizeOptions","className","showRecordCounter","showPageSizeSelector","totalPages","currentRecordStart","currentRecordEnd","pageNumbers","useMemo","pages","i","startPage","endPage","shouldShowPageSizeSelector","jsxs","jsx","e","size","pageNum","index","isActive","formatLabel","key","str","CustomFilterChips","filters","onChange","onClear","customFilters","fieldOptions","chips","getDisplayLabel","value","option","opt","optValue","displayValues","v","newFilters","displayValue","label","filterObj","c"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"FileUploadingState.cjs.js","sources":["../src/components/common/AutoSearch.jsx","../src/components/common/SideDrawer.jsx","../src/components/common/FileUploadingState.jsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { X, Search, PlusCircle } from \"lucide-react\";\nimport TextInput from \"../primitives/TextInput\";\nimport SmallButton from \"../primitives/SmallButton\";\n\nconst AutoSearch = ({\n options = [],\n value = null,\n onChange,\n placeholder = \"Search...\",\n disabled = false,\n showSuggestions = true,\n styling,\n isAddNew = false,\n}) => {\n const [search, setSearch] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const [addedOption, setAddedOption] = useState(null);\n\n const containerRef = useRef(null);\n\n const filteredOptions = useMemo(() => {\n if (!showSuggestions) return [];\n const lower = search.toLowerCase();\n\n return options.filter((opt) => {\n if (!opt) return false;\n const label = opt.label || \"\";\n const val = opt.value || \"\";\n return (\n (label.toLowerCase().includes(lower) ||\n val.toLowerCase().includes(lower)) &&\n (!addedOption || opt.value !== addedOption.value)\n );\n });\n }, [search, options, showSuggestions, addedOption]);\n\n const exactMatchExists = useMemo(() => {\n if (!isAddNew) return false;\n const lower = search.toLowerCase();\n return options.some((opt) => {\n if (!opt) return false;\n const label = opt.label || \"\";\n const val = opt.value || \"\";\n return label.toLowerCase() === lower || val.toLowerCase() === lower;\n });\n }, [options, search, isAddNew]);\n\n // Close dropdown on outside click\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (event) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target)\n ) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n const handleSelect = (opt) => {\n onChange?.(opt);\n setSearch(\"\");\n setIsOpen(false);\n setAddedOption(null);\n };\n\n const handleAddNew = () => {\n const newOpt = { label: search, value: search };\n setAddedOption(newOpt);\n onChange?.(newOpt);\n setIsOpen(false);\n setSearch(\"\");\n };\n\n const handleClear = () => {\n onChange?.(null);\n setSearch(\"\");\n setIsOpen(false);\n setAddedOption(null);\n };\n\n const handleInputChange = (e) => {\n const newValue = e.target.value;\n if (showSuggestions) {\n setSearch(newValue);\n setIsOpen(true);\n } else if (isAddNew) {\n setSearch(newValue);\n setIsOpen(newValue.length >= 3);\n } else {\n onChange?.(newValue);\n }\n };\n\n const handleInputFocus = () => {\n if (showSuggestions || isAddNew) {\n setIsOpen(true);\n }\n };\n\n const shouldShowDropdown =\n isOpen && !value && (showSuggestions ? search.length >= 3 : search.length >= 3);\n\n return (\n <div className=\"relative w-full\" ref={containerRef}>\n <div\n className={\n styling\n ? styling\n : \"flex items-center gap-2 border rounded-md px-3 py-2 bg-white shadow-sm\"\n }\n >\n <Search className=\"w-4 h-4 text-gray-400\" />\n <div className=\"flex-1\">\n {showSuggestions && value ? (\n <div\n className=\"text-gray-800 truncate\"\n title={value.label}\n style={{\n fontSize: 'var(--text-sm)',\n fontWeight: 'var(--font-medium)',\n letterSpacing: 'var(--tracking-normal)',\n lineHeight: 'var(--leading-normal)',\n textTransform: 'none',\n textDecoration: 'none',\n fontFamily: 'var(--font-sans)',\n }}\n >\n {value.label}\n </div>\n ) : (\n <TextInput\n value={showSuggestions || isAddNew ? search : value || \"\"}\n onChange={(val) =>\n handleInputChange({ target: { value: val } })\n }\n placeholder={placeholder}\n disabled={disabled}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n padding: 0,\n backgroundColor: \"transparent\",\n }}\n onFocus={handleInputFocus}\n />\n )}\n </div>\n {(value || addedOption) && (\n <SmallButton\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClear}\n style={{\n padding: 0,\n width: 20,\n height: 20,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: \"rgba(107,114,128,1)\",\n }}\n >\n <X className=\"w-3 h-3\" />\n </SmallButton>\n )}\n </div>\n\n {shouldShowDropdown && (\n <div\n className=\"absolute w-full rounded-md border border-gray-300 bg-white shadow-lg custom-thin-scrollbar-library\"\n style={{\n maxHeight: 240,\n overflowY: \"auto\",\n zIndex: 30,\n }}\n >\n {filteredOptions.length > 0 && (\n <ul className=\"m-0 p-0 list-none\">\n {filteredOptions.map((opt) => (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = \"var(--hover-warm)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n className=\"cursor-pointer px-4 py-2\"\n title={opt.label}\n >\n <span\n className=\"truncate block w-full\"\n style={{\n fontFamily: \"var(--font-sans)\",\n color: \"var(--text-base)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-medium)\",\n letterSpacing: \"var(--tracking-normal)\",\n lineHeight: \"var(--leading-normal)\",\n textTransform: \"none\",\n textDecoration: \"none\",\n }}\n >\n {opt.label}\n </span>\n </li>\n ))}\n </ul>\n )}\n\n {isAddNew &&\n !exactMatchExists &&\n !addedOption &&\n search.length >= 3 && (\n <SmallButton\n type=\"button\"\n variant=\"secondary\"\n onClick={handleAddNew}\n style={{\n width: \"100%\",\n justifyContent: \"space-between\",\n padding: \"8px 10px\",\n border: \"none\",\n borderTop: \"1px solid rgba(229, 231, 235, 1)\",\n borderRadius: 0,\n backgroundColor: \"transparent\",\n color: \"rgba(107,114,128,1)\",\n }}\n >\n <span>{`Add \"${search}\"`}</span>\n <PlusCircle className=\"w-5 h-5 text-green-500\" />\n </SmallButton>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default AutoSearch;\n\n","\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport { X } from \"lucide-react\";\n\n/**\n * SideDrawer — slide-in panel from the right edge.\n *\n * Props:\n * - open boolean Whether the drawer is visible\n * - onClose function Close callback\n * - title string Header title\n * - subtitle string Optional description below the divider\n * - children ReactNode Drawer body content\n * - footer ReactNode Optional fixed footer (e.g. Cancel/Save buttons)\n * - width number|string Drawer width (default 515)\n * - height number|string Drawer height (default 762)\n * - toggleLabel string Optional toggle label (right side of subtitle row)\n * - toggleChecked boolean Toggle state\n * - onToggle function Toggle callback\n */\nexport default function SideDrawer({\n open,\n onClose,\n title,\n subtitle,\n children,\n footer,\n width = 515,\n height = 762,\n toggleLabel,\n toggleChecked,\n onToggle,\n}) {\n const drawerRef = useRef(null);\n\n // Close on Escape key\n useEffect(() => {\n if (!open) return;\n const handleKey = (e) => {\n if (e.key === \"Escape\") onClose?.();\n };\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return (\n <>\n {/* Backdrop */}\n <div\n onClick={onClose}\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 1200,\n background: \"rgba(0, 0, 0, 0.20)\",\n }}\n />\n\n {/* Drawer panel */}\n <div\n ref={drawerRef}\n style={{\n position: \"fixed\",\n top: \"50%\",\n right: 0,\n transform: \"translateY(-50%)\",\n zIndex: 1201,\n display: \"flex\",\n width,\n height,\n maxHeight: \"100vh\",\n padding: \"20px\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n gap: \"20px\",\n borderRadius: \"12px 0 0 12px\",\n background: \"#FFF\",\n boxShadow: \"648px 0 100px 0 rgba(0, 0, 0, 0.20)\",\n }}\n >\n {/* Header: Title + Close */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n flexShrink: 0,\n }}\n >\n <h2\n style={{\n fontSize: \"24px\",\n fontWeight: 600,\n fontStyle: \"normal\",\n color: \"var(--Grey-3, #252525)\",\n margin: 0,\n lineHeight: \"normal\",\n }}\n >\n {title}\n </h2>\n <button\n onClick={onClose}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"28px\",\n height: \"28px\",\n border: \"none\",\n background: \"transparent\",\n color: \"var(--Grey-Strong, #808183)\",\n cursor: \"pointer\",\n borderRadius: \"4px\",\n transition: \"background 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#ECEEF2\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n }}\n >\n <X size={20} strokeWidth={2} />\n </button>\n </div>\n\n {/* Divider */}\n <div\n style={{\n width: \"100%\",\n height: \"1px\",\n background: \"#ECEEF2\",\n flexShrink: 0,\n }}\n />\n\n {/* Subtitle row with optional toggle */}\n {(subtitle || toggleLabel) && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n gap: \"12px\",\n flexShrink: 0,\n }}\n >\n {subtitle && (\n <p\n style={{\n fontSize: \"13px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"140%\",\n color: \"#0B0B0B\",\n margin: 0,\n flex: 1,\n }}\n >\n {subtitle}\n </p>\n )}\n {toggleLabel && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n flexShrink: 0,\n }}\n >\n {/* Toggle switch */}\n <button\n onClick={() => onToggle?.(!toggleChecked)}\n style={{\n position: \"relative\",\n width: \"40px\",\n height: \"22px\",\n borderRadius: \"11px\",\n border: \"none\",\n background: toggleChecked\n ? \"var(--Base-Strong, #0B0B0B)\"\n : \"var(--Base-Faint, #D9D9D9)\",\n cursor: \"pointer\",\n transition: \"background 0.2s ease\",\n padding: 0,\n flexShrink: 0,\n }}\n >\n <div\n style={{\n position: \"absolute\",\n top: \"2px\",\n left: toggleChecked ? \"20px\" : \"2px\",\n width: \"18px\",\n height: \"18px\",\n borderRadius: \"50%\",\n background: \"#FFF\",\n transition: \"left 0.2s ease\",\n boxShadow: \"0 1px 3px rgba(0,0,0,0.15)\",\n }}\n />\n </button>\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 500,\n color: \"var(--Base-Strong, #1E1E1E)\",\n lineHeight: 1.4,\n }}\n >\n {toggleLabel}\n </span>\n </div>\n )}\n </div>\n )}\n\n {/* Body content — scrollable */}\n <div\n style={{\n flex: 1,\n width: \"100%\",\n overflowY: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\",\n minHeight: 0,\n }}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <>\n <div\n style={{\n width: \"100%\",\n height: \"1px\",\n background: \"#ECEEF2\",\n flexShrink: 0,\n }}\n />\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: \"12px\",\n width: \"100%\",\n flexShrink: 0,\n }}\n >\n {footer}\n </div>\n </>\n )}\n </div>\n </>\n );\n}\n\n/**\n * DrawerButton — standard button for use in SideDrawer footer.\n *\n * Props:\n * - label string\n * - variant \"primary\" | \"secondary\" (default \"secondary\")\n * - onClick function\n * - disabled boolean\n */\nexport function DrawerButton({\n label,\n variant = \"secondary\",\n onClick,\n disabled,\n}) {\n const isPrimary = variant === \"primary\";\n\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n style={{\n display: \"flex\",\n height: \"36px\",\n padding: \"0 20px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"6px\",\n border: isPrimary ? \"none\" : \"1px solid #D9D9D9\",\n background: isPrimary\n ? \"var(--Base-Strong, #0B0B0B)\"\n : \"var(--Base-White, #FFF)\",\n color: isPrimary ? \"#FFF\" : \"var(--Base-Strong, #1E1E1E)\",\n fontSize: \"16px\",\n fontWeight: 600,\n cursor: disabled ? \"default\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n if (!disabled && !isPrimary) {\n e.currentTarget.style.background = \"#ECEEF2\";\n }\n }}\n onMouseLeave={(e) => {\n if (!disabled && !isPrimary) {\n e.currentTarget.style.background = \"var(--Base-White, #FFF)\";\n }\n }}\n >\n {label}\n </button>\n );\n}\n\n/**\n * DrawerLabel — form label for use inside SideDrawer.\n *\n * Props:\n * - children ReactNode\n * - htmlFor string\n */\nexport function DrawerLabel({ children, htmlFor }) {\n return (\n <label\n htmlFor={htmlFor}\n style={{\n display: \"block\",\n color: \"var(--Base-Strong, #2E3236)\",\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"normal\",\n marginBottom: \"6px\",\n }}\n >\n {children}\n </label>\n );\n}\n\n/**\n * DrawerInput — text input for use inside SideDrawer.\n *\n * Props:\n * - All standard <input> props (type, placeholder, value, onChange, etc.)\n */\nexport function DrawerInput(props) {\n return (\n <input\n {...props}\n style={{\n width: \"100%\",\n padding: \"10px 12px\",\n borderRadius: \"6px\",\n border: \"1px solid #D9D9D9\",\n color: \"var(--Base-Strong, #2E3236)\",\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"normal\",\n outline: \"none\",\n boxSizing: \"border-box\",\n background: \"#FFF\",\n transition: \"border-color 0.15s ease\",\n ...props.style,\n }}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = \"#808183\";\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = \"#D9D9D9\";\n props.onBlur?.(e);\n }}\n />\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { FolderCheck } from \"lucide-react\";\n\n/**\n * ThreeCirclesSpinner — animated concentric spinner matching the Figma asset.\n * Three arcs (outer gold, middle green, inner gold) rotating at different speeds.\n */\nfunction ThreeCirclesSpinner({ size = 48 }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ animation: \"file-upload-spin 1.2s linear infinite\" }}\n >\n <path\n d=\"M43 24C43 26.4951 42.5086 28.9658 41.5537 31.271C40.5989 33.5762 39.1993 35.6707 37.435 37.435C35.6707 39.1993 33.5762 40.5989 31.271 41.5537C28.9658 42.5086 26.4951 43 24 43C21.5049 43 19.0342 42.5086 16.729 41.5537C14.4238 40.5989 12.3293 39.1993 10.565 37.435C8.80066 35.6707 7.40113 33.5762 6.44629 31.271C5.49145 28.9658 5 26.4951 5 24\"\n stroke=\"#F3E7C7\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M12 24C12 22.4241 12.3104 20.8637 12.9134 19.4078C13.5165 17.9519 14.4004 16.629 15.5147 15.5147C16.629 14.4004 17.9519 13.5165 19.4078 12.9134C20.8637 12.3104 22.4241 12 24 12C25.5759 12 27.1363 12.3104 28.5922 12.9134C30.0481 13.5165 31.371 14.4004 32.4853 15.5147C33.5996 16.629 34.4835 17.9519 35.0866 19.4078C35.6896 20.8637 36 22.4241 36 24\"\n stroke=\"#00A66E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M20 24C20 24.5253 20.1035 25.0454 20.3045 25.5307C20.5055 26.016 20.8001 26.457 21.1716 26.8284C21.543 27.1999 21.984 27.4945 22.4693 27.6955C22.9546 27.8965 23.4747 28 24 28C24.5253 28 25.0454 27.8965 25.5307 27.6955C26.016 27.4945 26.457 27.1999 26.8284 26.8284C27.1999 26.457 27.4945 26.016 27.6955 25.5307C27.8965 25.0454 28 24.5253 28 24\"\n stroke=\"#F3E7C7\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\n/**\n * FileUploadingState — shows file upload progress with spinner.\n *\n * Props:\n * - title string Main message (default \"Uploading your file...\")\n * - subtitle string Secondary message (default \"Please wait while we process your file\")\n * - progress number Optional progress percentage (0-100)\n * - width number|string Container width (default 648)\n * - height number|string Container height (default 281)\n */\nexport default function FileUploadingState({\n title = \"Uploading your file...\",\n subtitle = \"Please wait while we process your file\",\n progress,\n width = 648,\n height = 281,\n}) {\n return (\n <>\n <style>{`\n @keyframes file-upload-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n `}</style>\n\n <div\n style={{\n display: \"flex\",\n width,\n height,\n padding: \"88px 64px 64px 64px\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"12px\",\n border: \"2px dashed #D9D9D9\",\n background: \"var(--Grey-White, #FFF)\",\n boxSizing: \"border-box\",\n }}\n >\n {/* Spinner */}\n <ThreeCirclesSpinner size={48} />\n\n {/* Title */}\n <p\n style={{\n fontSize: \"16px\",\n fontWeight: 600,\n color: \"var(--Base-Strong, #2E3236)\",\n margin: 0,\n lineHeight: \"normal\",\n textAlign: \"center\",\n }}\n >\n {title}\n </p>\n\n {/* Subtitle */}\n <p\n style={{\n fontSize: \"13px\",\n fontWeight: 400,\n color: \"var(--Grey-Strong, #808183)\",\n margin: 0,\n lineHeight: \"140%\",\n textAlign: \"center\",\n }}\n >\n {subtitle}\n </p>\n\n {/* Optional progress bar */}\n {progress !== undefined && (\n <div\n style={{\n width: \"200px\",\n height: \"4px\",\n borderRadius: \"2px\",\n background: \"#ECEEF2\",\n marginTop: \"8px\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${Math.min(100, Math.max(0, progress))}%`,\n height: \"100%\",\n borderRadius: \"2px\",\n background: \"var(--Green-Primary, #00A66E)\",\n transition: \"width 0.3s ease\",\n }}\n />\n </div>\n )}\n </div>\n </>\n );\n}\n\n/**\n * FileUploadSuccessState — shows upload complete with folder-check icon.\n *\n * Props:\n * - title string Main message (default \"File uploaded successfully!\")\n * - subtitle string Secondary message (default \"13 files have been uploaded to your project\")\n * - actionLabel string Button label (default \"Add more files\")\n * - onAction function Button click callback\n * - width number|string Container width (default 648)\n * - height number|string Container height (default 281)\n */\nexport function FileUploadSuccessState({\n title = \"File uploaded successfully!\",\n subtitle = \"Redirecting...\",\n actionLabel = \"Add more files\",\n onAction,\n width = 648,\n height = 281,\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n width,\n height,\n padding: \"88px 64px 64px 64px\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"12px\",\n border: \"1px solid #D9D9D9\",\n background: \"var(--Grey-White, #FFF)\",\n boxSizing: \"border-box\",\n }}\n >\n {/* Icon circle */}\n <div\n style={{\n display: \"flex\",\n width: \"64px\",\n height: \"64px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"9999px\",\n background: \"var(--Focus-2, #FAF5E9)\",\n flexShrink: 0,\n marginBottom: \"8px\",\n }}\n >\n <FolderCheck size={24} strokeWidth={2} color=\"var(--Base-Strong, #2E3236)\" />\n </div>\n\n {/* Title */}\n <p\n style={{\n fontSize: \"16px\",\n fontWeight: 600,\n color: \"var(--Base-Strong, #2E3236)\",\n margin: 0,\n lineHeight: \"normal\",\n textAlign: \"center\",\n }}\n >\n {title}\n </p>\n\n {/* Subtitle */}\n <p\n style={{\n fontSize: \"14px\",\n fontWeight: 500,\n color: \"var(--Grey-Strong, #808183)\",\n margin: 0,\n lineHeight: \"140%\",\n textAlign: \"center\",\n }}\n >\n {subtitle}\n </p>\n\n {/* Action button */}\n {actionLabel && onAction && (\n <button\n onClick={onAction}\n style={{\n display: \"flex\",\n padding: \"8px 20px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"6px\",\n border: \"1px solid #D9D9D9\",\n background: \"var(--Base-White, #FFF)\",\n color: \"var(--Grey-Strong, #808183)\",\n fontSize: \"14px\",\n fontWeight: 500,\n cursor: \"pointer\",\n marginTop: \"8px\",\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#ECEEF2\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"var(--Base-White, #FFF)\";\n }}\n >\n {actionLabel}\n </button>\n )}\n </div>\n );\n}\n"],"names":["AutoSearch","options","value","onChange","placeholder","disabled","showSuggestions","styling","isAddNew","search","setSearch","useState","isOpen","setIsOpen","addedOption","setAddedOption","containerRef","useRef","filteredOptions","useMemo","lower","opt","label","val","exactMatchExists","useEffect","handleClickOutside","event","handleSelect","handleAddNew","newOpt","handleClear","handleInputChange","e","newValue","handleInputFocus","shouldShowDropdown","jsxs","jsx","Search","TextInput","SmallButton","X","PlusCircle","SideDrawer","open","onClose","title","subtitle","children","footer","width","height","toggleLabel","toggleChecked","onToggle","drawerRef","handleKey","Fragment","DrawerButton","variant","onClick","isPrimary","DrawerLabel","htmlFor","DrawerInput","props","_a","ThreeCirclesSpinner","size","FileUploadingState","progress","FileUploadSuccessState","actionLabel","onAction","FolderCheck"],"mappings":"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"}
1
+ {"version":3,"file":"FileUploadingState.cjs.js","sources":["../src/components/common/AutoSearch.jsx","../src/components/common/SideDrawer.jsx","../src/components/common/FileUploadingState.jsx"],"sourcesContent":["\"use client\";\n\nimport React, { useState, useMemo, useRef, useEffect } from \"react\";\nimport { X, Search, PlusCircle } from \"lucide-react\";\nimport TextInput from \"../primitives/TextInput\";\nimport SmallButton from \"../primitives/SmallButton\";\n\nconst AutoSearch = ({\n options = [],\n value = null,\n onChange,\n placeholder = \"Search...\",\n disabled = false,\n showSuggestions = true,\n styling,\n isAddNew = false,\n}) => {\n const [search, setSearch] = useState(\"\");\n const [isOpen, setIsOpen] = useState(false);\n const [addedOption, setAddedOption] = useState(null);\n\n const containerRef = useRef(null);\n\n const filteredOptions = useMemo(() => {\n if (!showSuggestions) return [];\n const lower = search.toLowerCase();\n\n return options.filter((opt) => {\n if (!opt) return false;\n const label = opt.label || \"\";\n const val = opt.value || \"\";\n return (\n (label.toLowerCase().includes(lower) ||\n val.toLowerCase().includes(lower)) &&\n (!addedOption || opt.value !== addedOption.value)\n );\n });\n }, [search, options, showSuggestions, addedOption]);\n\n const exactMatchExists = useMemo(() => {\n if (!isAddNew) return false;\n const lower = search.toLowerCase();\n return options.some((opt) => {\n if (!opt) return false;\n const label = opt.label || \"\";\n const val = opt.value || \"\";\n return label.toLowerCase() === lower || val.toLowerCase() === lower;\n });\n }, [options, search, isAddNew]);\n\n // Close dropdown on outside click\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (event) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target)\n ) {\n setIsOpen(false);\n }\n };\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n const handleSelect = (opt) => {\n onChange?.(opt);\n setSearch(\"\");\n setIsOpen(false);\n setAddedOption(null);\n };\n\n const handleAddNew = () => {\n const newOpt = { label: search, value: search };\n setAddedOption(newOpt);\n onChange?.(newOpt);\n setIsOpen(false);\n setSearch(\"\");\n };\n\n const handleClear = () => {\n onChange?.(null);\n setSearch(\"\");\n setIsOpen(false);\n setAddedOption(null);\n };\n\n const handleInputChange = (e) => {\n const newValue = e.target.value;\n if (showSuggestions) {\n setSearch(newValue);\n setIsOpen(true);\n } else if (isAddNew) {\n setSearch(newValue);\n setIsOpen(newValue.length >= 3);\n } else {\n onChange?.(newValue);\n }\n };\n\n const handleInputFocus = () => {\n if (showSuggestions || isAddNew) {\n setIsOpen(true);\n }\n };\n\n const shouldShowDropdown =\n isOpen && !value && (showSuggestions ? search.length >= 3 : search.length >= 3);\n\n return (\n <div className=\"relative w-full\" ref={containerRef}>\n <div\n className={\n styling\n ? styling\n : \"flex items-center gap-2 border rounded-md px-3 py-2 bg-white shadow-sm\"\n }\n >\n <Search className=\"w-4 h-4 text-gray-400\" />\n <div className=\"flex-1\">\n {showSuggestions && value ? (\n <div\n className=\"text-gray-800 truncate\"\n title={value.label}\n style={{\n fontSize: 'var(--text-sm)',\n fontWeight: 'var(--font-medium)',\n letterSpacing: 'var(--tracking-normal)',\n lineHeight: 'var(--leading-normal)',\n textTransform: 'none',\n textDecoration: 'none',\n fontFamily: 'var(--font-sans)',\n }}\n >\n {value.label}\n </div>\n ) : (\n <TextInput\n value={showSuggestions || isAddNew ? search : value || \"\"}\n onChange={(val) =>\n handleInputChange({ target: { value: val } })\n }\n placeholder={placeholder}\n disabled={disabled}\n style={{\n border: \"none\",\n boxShadow: \"none\",\n padding: 0,\n backgroundColor: \"transparent\",\n }}\n onFocus={handleInputFocus}\n />\n )}\n </div>\n {(value || addedOption) && (\n <SmallButton\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClear}\n style={{\n padding: 0,\n width: 20,\n height: 20,\n border: \"none\",\n backgroundColor: \"transparent\",\n color: \"rgba(107,114,128,1)\",\n }}\n >\n <X className=\"w-3 h-3\" />\n </SmallButton>\n )}\n </div>\n\n {shouldShowDropdown && (\n <div\n className=\"absolute w-full rounded-md border border-gray-300 bg-white shadow-lg custom-thin-scrollbar-library\"\n style={{\n maxHeight: 240,\n overflowY: \"auto\",\n zIndex: 30,\n }}\n >\n {filteredOptions.length > 0 && (\n <ul className=\"m-0 p-0 list-none\">\n {filteredOptions.map((opt) => (\n <li\n key={opt.value}\n onClick={() => handleSelect(opt)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = \"var(--hover-warm)\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = \"transparent\";\n }}\n className=\"cursor-pointer px-4 py-2\"\n title={opt.label}\n >\n <span\n className=\"truncate block w-full\"\n style={{\n fontFamily: \"var(--font-sans)\",\n color: \"var(--text-base)\",\n fontSize: \"var(--text-sm)\",\n fontWeight: \"var(--font-medium)\",\n letterSpacing: \"var(--tracking-normal)\",\n lineHeight: \"var(--leading-normal)\",\n textTransform: \"none\",\n textDecoration: \"none\",\n }}\n >\n {opt.label}\n </span>\n </li>\n ))}\n </ul>\n )}\n\n {isAddNew &&\n !exactMatchExists &&\n !addedOption &&\n search.length >= 3 && (\n <SmallButton\n type=\"button\"\n variant=\"secondary\"\n onClick={handleAddNew}\n style={{\n width: \"100%\",\n justifyContent: \"space-between\",\n padding: \"8px 10px\",\n border: \"none\",\n borderTop: \"1px solid rgba(229, 231, 235, 1)\",\n borderRadius: 0,\n backgroundColor: \"transparent\",\n color: \"rgba(107,114,128,1)\",\n }}\n >\n <span>{`Add \"${search}\"`}</span>\n <PlusCircle className=\"w-5 h-5 text-green-500\" />\n </SmallButton>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default AutoSearch;\n\n","\"use client\";\n\nimport React, { useEffect, useRef } from \"react\";\nimport { X } from \"lucide-react\";\n\n/**\n * SideDrawer — slide-in panel from the right edge.\n *\n * Props:\n * - open boolean Whether the drawer is visible\n * - onClose function Close callback\n * - title string Header title\n * - subtitle string Optional description below the divider\n * - children ReactNode Drawer body content\n * - footer ReactNode Optional fixed footer (e.g. Cancel/Save buttons)\n * - width number|string Drawer width (default 515)\n * - height number|string Drawer height (default 762)\n * - toggleLabel string Optional toggle label (right side of subtitle row)\n * - toggleChecked boolean Toggle state\n * - onToggle function Toggle callback\n */\nexport default function SideDrawer({\n open,\n onClose,\n title,\n subtitle,\n children,\n footer,\n width = 515,\n height = 762,\n toggleLabel,\n toggleChecked,\n onToggle,\n}) {\n const drawerRef = useRef(null);\n\n // Close on Escape key\n useEffect(() => {\n if (!open) return;\n const handleKey = (e) => {\n if (e.key === \"Escape\") onClose?.();\n };\n document.addEventListener(\"keydown\", handleKey);\n return () => document.removeEventListener(\"keydown\", handleKey);\n }, [open, onClose]);\n\n if (!open) return null;\n\n return (\n <>\n {/* Backdrop */}\n <div\n onClick={onClose}\n style={{\n position: \"fixed\",\n inset: 0,\n zIndex: 1200,\n background: \"rgba(0, 0, 0, 0.20)\",\n }}\n />\n\n {/* Drawer panel */}\n <div\n ref={drawerRef}\n style={{\n position: \"fixed\",\n top: \"50%\",\n right: 0,\n transform: \"translateY(-50%)\",\n zIndex: 1201,\n display: \"flex\",\n width,\n height,\n maxHeight: \"100vh\",\n padding: \"20px\",\n flexDirection: \"column\",\n alignItems: \"flex-start\",\n gap: \"20px\",\n borderRadius: \"12px 0 0 12px\",\n background: \"#FFF\",\n boxShadow: \"648px 0 100px 0 rgba(0, 0, 0, 0.20)\",\n }}\n >\n {/* Header: Title + Close */}\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n flexShrink: 0,\n }}\n >\n <h2\n style={{\n fontSize: \"24px\",\n fontWeight: 600,\n fontStyle: \"normal\",\n color: \"var(--Grey-3, #252525)\",\n margin: 0,\n lineHeight: \"normal\",\n }}\n >\n {title}\n </h2>\n <button\n onClick={onClose}\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"28px\",\n height: \"28px\",\n border: \"none\",\n background: \"transparent\",\n color: \"var(--Grey-Strong, #808183)\",\n cursor: \"pointer\",\n borderRadius: \"4px\",\n transition: \"background 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#ECEEF2\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"transparent\";\n }}\n >\n <X size={20} strokeWidth={2} />\n </button>\n </div>\n\n {/* Divider */}\n <div\n style={{\n width: \"100%\",\n height: \"1px\",\n background: \"#ECEEF2\",\n flexShrink: 0,\n }}\n />\n\n {/* Subtitle row with optional toggle */}\n {(subtitle || toggleLabel) && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"space-between\",\n width: \"100%\",\n gap: \"12px\",\n flexShrink: 0,\n }}\n >\n {subtitle && (\n <p\n style={{\n fontSize: \"13px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"140%\",\n color: \"#0B0B0B\",\n margin: 0,\n flex: 1,\n }}\n >\n {subtitle}\n </p>\n )}\n {toggleLabel && (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n gap: \"8px\",\n flexShrink: 0,\n }}\n >\n {/* Toggle switch */}\n <button\n onClick={() => onToggle?.(!toggleChecked)}\n style={{\n position: \"relative\",\n width: \"40px\",\n height: \"22px\",\n borderRadius: \"11px\",\n border: \"none\",\n background: toggleChecked\n ? \"var(--Base-Strong, #0B0B0B)\"\n : \"var(--Base-Faint, #D9D9D9)\",\n cursor: \"pointer\",\n transition: \"background 0.2s ease\",\n padding: 0,\n flexShrink: 0,\n }}\n >\n <div\n style={{\n position: \"absolute\",\n top: \"2px\",\n left: toggleChecked ? \"20px\" : \"2px\",\n width: \"18px\",\n height: \"18px\",\n borderRadius: \"50%\",\n background: \"#FFF\",\n transition: \"left 0.2s ease\",\n boxShadow: \"0 1px 3px rgba(0,0,0,0.15)\",\n }}\n />\n </button>\n <span\n style={{\n fontSize: \"13px\",\n fontWeight: 500,\n color: \"var(--Base-Strong, #1E1E1E)\",\n lineHeight: 1.4,\n }}\n >\n {toggleLabel}\n </span>\n </div>\n )}\n </div>\n )}\n\n {/* Body content — scrollable */}\n <div\n style={{\n flex: 1,\n width: \"100%\",\n overflowY: \"auto\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"16px\",\n minHeight: 0,\n }}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <>\n <div\n style={{\n width: \"100%\",\n height: \"1px\",\n background: \"#ECEEF2\",\n flexShrink: 0,\n }}\n />\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-end\",\n gap: \"12px\",\n width: \"100%\",\n flexShrink: 0,\n }}\n >\n {footer}\n </div>\n </>\n )}\n </div>\n </>\n );\n}\n\n/**\n * DrawerButton — standard button for use in SideDrawer footer.\n *\n * Props:\n * - label string\n * - variant \"primary\" | \"secondary\" (default \"secondary\")\n * - onClick function\n * - disabled boolean\n */\nexport function DrawerButton({\n label,\n variant = \"secondary\",\n onClick,\n disabled,\n}) {\n const isPrimary = variant === \"primary\";\n\n return (\n <button\n onClick={onClick}\n disabled={disabled}\n style={{\n display: \"flex\",\n height: \"36px\",\n padding: \"0 20px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"6px\",\n border: isPrimary ? \"none\" : \"1px solid #D9D9D9\",\n background: isPrimary\n ? \"var(--Base-Strong, #0B0B0B)\"\n : \"var(--Base-White, #FFF)\",\n color: isPrimary ? \"#FFF\" : \"var(--Base-Strong, #1E1E1E)\",\n fontSize: \"16px\",\n fontWeight: 600,\n cursor: disabled ? \"default\" : \"pointer\",\n opacity: disabled ? 0.5 : 1,\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n if (!disabled && !isPrimary) {\n e.currentTarget.style.background = \"#ECEEF2\";\n }\n }}\n onMouseLeave={(e) => {\n if (!disabled && !isPrimary) {\n e.currentTarget.style.background = \"var(--Base-White, #FFF)\";\n }\n }}\n >\n {label}\n </button>\n );\n}\n\n/**\n * DrawerLabel — form label for use inside SideDrawer.\n *\n * Props:\n * - children ReactNode\n * - htmlFor string\n */\nexport function DrawerLabel({ children, htmlFor }) {\n return (\n <label\n htmlFor={htmlFor}\n style={{\n display: \"block\",\n color: \"var(--Base-Strong, #2E3236)\",\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"normal\",\n marginBottom: \"6px\",\n }}\n >\n {children}\n </label>\n );\n}\n\n/**\n * DrawerInput — text input for use inside SideDrawer.\n *\n * Props:\n * - All standard <input> props (type, placeholder, value, onChange, etc.)\n */\nexport function DrawerInput(props) {\n return (\n <input\n {...props}\n style={{\n width: \"100%\",\n padding: \"10px 12px\",\n borderRadius: \"6px\",\n border: \"1px solid #D9D9D9\",\n color: \"var(--Base-Strong, #2E3236)\",\n fontSize: \"16px\",\n fontStyle: \"normal\",\n fontWeight: 400,\n lineHeight: \"normal\",\n outline: \"none\",\n boxSizing: \"border-box\",\n background: \"#FFF\",\n transition: \"border-color 0.15s ease\",\n ...props.style,\n }}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = \"#808183\";\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = \"#D9D9D9\";\n props.onBlur?.(e);\n }}\n />\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { FolderCheck } from \"lucide-react\";\n\n/**\n * ThreeCirclesSpinner — animated concentric spinner matching the Figma asset.\n * Three arcs (outer gold, middle green, inner gold) rotating at different speeds.\n */\nfunction ThreeCirclesSpinner({ size = 48 }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 48 48\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{ animation: \"file-upload-spin 1.2s linear infinite\" }}\n >\n <path\n d=\"M43 24C43 26.4951 42.5086 28.9658 41.5537 31.271C40.5989 33.5762 39.1993 35.6707 37.435 37.435C35.6707 39.1993 33.5762 40.5989 31.271 41.5537C28.9658 42.5086 26.4951 43 24 43C21.5049 43 19.0342 42.5086 16.729 41.5537C14.4238 40.5989 12.3293 39.1993 10.565 37.435C8.80066 35.6707 7.40113 33.5762 6.44629 31.271C5.49145 28.9658 5 26.4951 5 24\"\n stroke=\"#F3E7C7\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M12 24C12 22.4241 12.3104 20.8637 12.9134 19.4078C13.5165 17.9519 14.4004 16.629 15.5147 15.5147C16.629 14.4004 17.9519 13.5165 19.4078 12.9134C20.8637 12.3104 22.4241 12 24 12C25.5759 12 27.1363 12.3104 28.5922 12.9134C30.0481 13.5165 31.371 14.4004 32.4853 15.5147C33.5996 16.629 34.4835 17.9519 35.0866 19.4078C35.6896 20.8637 36 22.4241 36 24\"\n stroke=\"#00A66E\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M20 24C20 24.5253 20.1035 25.0454 20.3045 25.5307C20.5055 26.016 20.8001 26.457 21.1716 26.8284C21.543 27.1999 21.984 27.4945 22.4693 27.6955C22.9546 27.8965 23.4747 28 24 28C24.5253 28 25.0454 27.8965 25.5307 27.6955C26.016 27.4945 26.457 27.1999 26.8284 26.8284C27.1999 26.457 27.4945 26.016 27.6955 25.5307C27.8965 25.0454 28 24.5253 28 24\"\n stroke=\"#F3E7C7\"\n strokeWidth=\"4\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n\n/**\n * FileUploadingState — shows file upload progress with spinner.\n *\n * Props:\n * - title string Main message (default \"Uploading your file...\")\n * - subtitle string Secondary message (default \"Please wait while we process your file\")\n * - progress number Optional progress percentage (0-100)\n * - width number|string Container width (default 648)\n * - height number|string Container height (default 281)\n */\nexport default function FileUploadingState({\n title = \"Uploading your file...\",\n subtitle = \"Please wait while we process your file\",\n progress,\n width = 648,\n height = 281,\n}) {\n return (\n <>\n <style>{`\n @keyframes file-upload-spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n `}</style>\n\n <div\n style={{\n display: \"flex\",\n width,\n height,\n padding: \"88px 64px 64px 64px\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"12px\",\n border: \"2px dashed #D9D9D9\",\n background: \"var(--Grey-White, #FFF)\",\n boxSizing: \"border-box\",\n }}\n >\n {/* Spinner */}\n <ThreeCirclesSpinner size={48} />\n\n {/* Title */}\n <p\n style={{\n fontSize: \"16px\",\n fontWeight: 600,\n color: \"var(--Base-Strong, #2E3236)\",\n margin: 0,\n lineHeight: \"normal\",\n textAlign: \"center\",\n }}\n >\n {title}\n </p>\n\n {/* Subtitle */}\n <p\n style={{\n fontSize: \"13px\",\n fontWeight: 400,\n color: \"var(--Grey-Strong, #808183)\",\n margin: 0,\n lineHeight: \"140%\",\n textAlign: \"center\",\n }}\n >\n {subtitle}\n </p>\n\n {/* Optional progress bar */}\n {progress !== undefined && (\n <div\n style={{\n width: \"200px\",\n height: \"4px\",\n borderRadius: \"2px\",\n background: \"#ECEEF2\",\n marginTop: \"8px\",\n overflow: \"hidden\",\n }}\n >\n <div\n style={{\n width: `${Math.min(100, Math.max(0, progress))}%`,\n height: \"100%\",\n borderRadius: \"2px\",\n background: \"var(--Green-Primary, #00A66E)\",\n transition: \"width 0.3s ease\",\n }}\n />\n </div>\n )}\n </div>\n </>\n );\n}\n\n/**\n * FileUploadSuccessState — shows upload complete with folder-check icon.\n *\n * Props:\n * - title string Main message (default \"File uploaded successfully!\")\n * - subtitle string Secondary message (default \"13 files have been uploaded to your project\")\n * - actionLabel string Button label (default \"Add more files\")\n * - onAction function Button click callback\n * - width number|string Container width (default 648)\n * - height number|string Container height (default 281)\n */\nexport function FileUploadSuccessState({\n title = \"File uploaded successfully!\",\n subtitle = \"Redirecting...\",\n actionLabel = \"Add more files\",\n onAction,\n width = 648,\n height = 281,\n}) {\n return (\n <div\n style={{\n display: \"flex\",\n width,\n height,\n padding: \"88px 64px 64px 64px\",\n flexDirection: \"column\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"12px\",\n border: \"1px solid #D9D9D9\",\n background: \"var(--Grey-White, #FFF)\",\n boxSizing: \"border-box\",\n }}\n >\n {/* Icon circle */}\n <div\n style={{\n display: \"flex\",\n width: \"64px\",\n height: \"64px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"9999px\",\n background: \"var(--Focus-2, #FAF5E9)\",\n flexShrink: 0,\n marginBottom: \"8px\",\n }}\n >\n <FolderCheck size={24} strokeWidth={2} color=\"var(--Base-Strong, #2E3236)\" />\n </div>\n\n {/* Title */}\n <p\n style={{\n fontSize: \"16px\",\n fontWeight: 600,\n color: \"var(--Base-Strong, #2E3236)\",\n margin: 0,\n lineHeight: \"normal\",\n textAlign: \"center\",\n }}\n >\n {title}\n </p>\n\n {/* Subtitle */}\n <p\n style={{\n fontSize: \"14px\",\n fontWeight: 500,\n color: \"var(--Grey-Strong, #808183)\",\n margin: 0,\n lineHeight: \"140%\",\n textAlign: \"center\",\n }}\n >\n {subtitle}\n </p>\n\n {/* Action button */}\n {actionLabel && onAction && (\n <button\n onClick={onAction}\n style={{\n display: \"flex\",\n padding: \"8px 20px\",\n justifyContent: \"center\",\n alignItems: \"center\",\n gap: \"8px\",\n borderRadius: \"6px\",\n border: \"1px solid #D9D9D9\",\n background: \"var(--Base-White, #FFF)\",\n color: \"var(--Grey-Strong, #808183)\",\n fontSize: \"14px\",\n fontWeight: 500,\n cursor: \"pointer\",\n marginTop: \"8px\",\n transition: \"all 0.15s ease\",\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.background = \"#ECEEF2\";\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.background = \"var(--Base-White, #FFF)\";\n }}\n >\n {actionLabel}\n </button>\n )}\n </div>\n );\n}\n"],"names":["AutoSearch","options","value","onChange","placeholder","disabled","showSuggestions","styling","isAddNew","search","setSearch","useState","isOpen","setIsOpen","addedOption","setAddedOption","containerRef","useRef","filteredOptions","useMemo","lower","opt","label","val","exactMatchExists","useEffect","handleClickOutside","event","handleSelect","handleAddNew","newOpt","handleClear","handleInputChange","e","newValue","handleInputFocus","shouldShowDropdown","jsxs","jsx","Search","TextInput","SmallButton","X","PlusCircle","SideDrawer","open","onClose","title","subtitle","children","footer","width","height","toggleLabel","toggleChecked","onToggle","drawerRef","handleKey","Fragment","DrawerButton","variant","onClick","isPrimary","DrawerLabel","htmlFor","DrawerInput","props","_a","ThreeCirclesSpinner","size","FileUploadingState","progress","FileUploadSuccessState","actionLabel","onAction","FolderCheck"],"mappings":"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"}
@@ -14,24 +14,29 @@ const K = ({
14
14
  isAddNew: h = !1
15
15
  }) => {
16
16
  const [s, p] = k(""), [g, x] = k(!1), [u, m] = k(null), y = C(null), S = F(() => {
17
- if (!l) return [];
17
+ if (!l)
18
+ return [];
18
19
  const i = s.toLowerCase();
19
20
  return t.filter((a) => {
20
- if (!a) return !1;
21
+ if (!a)
22
+ return !1;
21
23
  const b = a.label || "", v = a.value || "";
22
24
  return (b.toLowerCase().includes(i) || v.toLowerCase().includes(i)) && (!u || a.value !== u.value);
23
25
  });
24
26
  }, [s, t, l, u]), W = F(() => {
25
- if (!h) return !1;
27
+ if (!h)
28
+ return !1;
26
29
  const i = s.toLowerCase();
27
30
  return t.some((a) => {
28
- if (!a) return !1;
31
+ if (!a)
32
+ return !1;
29
33
  const b = a.label || "", v = a.value || "";
30
34
  return b.toLowerCase() === i || v.toLowerCase() === i;
31
35
  });
32
36
  }, [t, s, h]);
33
37
  D(() => {
34
- if (!g) return;
38
+ if (!g)
39
+ return;
35
40
  const i = (a) => {
36
41
  y.current && !y.current.contains(a.target) && x(!1);
37
42
  };
@@ -194,7 +199,8 @@ function V({
194
199
  }) {
195
200
  const x = C(null);
196
201
  return D(() => {
197
- if (!t) return;
202
+ if (!t)
203
+ return;
198
204
  const u = (m) => {
199
205
  m.key === "Escape" && (n == null || n());
200
206
  };
@@ -765,10 +771,10 @@ function Z({
765
771
  export {
766
772
  K as A,
767
773
  X as D,
768
- Z as F,
774
+ Q as F,
769
775
  V as S,
770
- J as a,
771
- q as b,
772
- Q as c
776
+ q as a,
777
+ J as b,
778
+ Z as c
773
779
  };
774
780
  //# sourceMappingURL=FileUploadingState.es.js.map