fix: alignment, section order, and tooltip duplication

- Move symbol badge inline with input (flex items-end) so symbol and
  rack inputs align at the bottom
- Move Signal Timeline chart above Slot Evidence table
- Deduplicate signal fires by slotId per day in chart data processing
  and by slotName in tooltip rendering (prevents MACD Bullish etc
  from appearing twice)
This commit is contained in:
Investor Flow Build
2026-08-11 23:20:54 -04:00
parent 762d6612f5
commit 9a1d837150
2 changed files with 38 additions and 22 deletions
+20 -18
View File
@@ -119,19 +119,21 @@ export function ConfluencePanel() {
{/* Header */}
<div className="flex flex-wrap items-end gap-4">
<div>
<label className="block text-xs text-fg-muted mb-1">Symbol</label>
<div className="relative w-48">
<SymbolAutocomplete
onPick={pickSymbol}
onSubmitRaw={(raw) => pickSymbol(raw.toUpperCase())}
placeholder="Search symbol…"
ariaLabel="Select symbol for signal confluence"
inputClassName="w-full bg-surface-sunken border border-line rounded-lg px-3 py-1.5 text-xs text-fg placeholder:text-fg-muted focus:outline-none focus:border-accent focus:ring-1 focus:ring-accent"
/>
<div className="flex items-end gap-2">
<div>
<label className="block text-xs text-fg-muted mb-1">Symbol</label>
<div className="relative w-48">
<SymbolAutocomplete
onPick={pickSymbol}
onSubmitRaw={(raw) => pickSymbol(raw.toUpperCase())}
placeholder="Search symbol…"
ariaLabel="Select symbol for signal confluence"
inputClassName="w-full bg-surface-sunken border border-line rounded-lg px-3 py-1.5 text-xs text-fg placeholder:text-fg-muted focus:outline-none focus:border-accent focus:ring-1 focus:ring-accent"
/>
</div>
</div>
{symbol && (
<span className="mt-1 inline-flex items-center rounded bg-accent/10 border border-accent/30 px-2 py-0.5 text-xs font-medium text-accent">
<span className="mb-0.5 inline-flex items-center rounded bg-accent/10 border border-accent/30 px-2 py-1.5 text-xs font-medium text-accent">
{symbol}
</span>
)}
@@ -187,6 +189,13 @@ export function ConfluencePanel() {
</div>
) : null}
{/* Signal Timeline chart */}
{symbol && (
<CollapsibleSection title="Signal Timeline" defaultOpen>
<ConfluenceChart symbol={symbol} />
</CollapsibleSection>
)}
{/* Slot evidence grid */}
{assessments.length > 0 && (
<CollapsibleSection title="Slot Evidence" defaultOpen>
@@ -211,13 +220,6 @@ export function ConfluencePanel() {
</CollapsibleSection>
)}
{/* Signal Timeline chart */}
{symbol && (
<CollapsibleSection title="Signal Timeline" defaultOpen>
<ConfluenceChart symbol={symbol} />
</CollapsibleSection>
)}
{/* Scorecard */}
{scorecard && scorecard.slots.length > 0 && (
<CollapsibleSection title="Reliability Scorecard">