Files
investor-flow/app/src/components/SectionCollapse.tsx
T
Investor Flow Build e262187c3c fix: backfill symbol_demand for sidebar-added symbols + analyst ratings schema fix
- Add await ctx.cache.subscribe() to addSymbol mutation so symbols
  added via the sidebar get registered in symbol_demand and yfinance
  jobs are queued immediately
- Backfill PEP, WYNN, STZ, CELH into symbol_demand + adapter_queue
- Upgrade yahoo-finance2 3.15.3 -> 3.15.4 and pass validateResult:false
  to quoteSummary() to handle Yahoo schema drift
- Add error detail logging for analyst ratings schema failures
- Update .gitignore with common ignores
2026-07-23 18:02:24 -04:00

40 lines
1.3 KiB
TypeScript

'use client';
import { useMarketOutlookSections, type SectionId } from '@/stores/market-outlook-sections-store';
interface SectionCollapseProps {
id: SectionId;
title: string;
children: React.ReactNode;
info?: React.ReactNode;
}
export function SectionCollapse({ id, title, children, info }: SectionCollapseProps) {
const open = useMarketOutlookSections((s) => s.open[id]);
const toggle = useMarketOutlookSections((s) => s.toggle);
return (
<div>
<div
role="button"
tabIndex={0}
onClick={() => toggle(id)}
onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); toggle(id); } }}
className="flex items-center gap-2 w-full text-left group cursor-pointer"
>
<span className={`text-xs text-fg-muted transition-transform duration-200 ${open ? 'rotate-90' : ''}`}>
▸
</span>
<h3 className="text-base font-semibold text-fg group-hover:text-accent transition-colors">
{title}
</h3>
{info && (
<span onClick={(e) => e.stopPropagation()} className="inline-flex">
{info}
</span>
)}
</div>
{open && <div className="animate-in fade-in duration-200 mt-4">{children}</div>}
</div>
);
}