import { deltaClass, fmtCurrency, fmtPct } from "@/lib/format"; import { rangePercent } from "@/lib/overview"; import type { TickerOverview } from "@/types/api"; type Props = { overview: TickerOverview; onToggleWatchlist: () => void; isSaved: boolean; }; export function TickerHeader({ overview, onToggleWatchlist, isSaved }: Props) { const pct = rangePercent(overview); const lastSource = overview.meta.sources["quote.price"]; return (
{overview.profile.sector && ( {overview.profile.sector} )}
{overview.profile.symbol} {overview.profile.name || "Name unavailable"}
{overview.profile.exchange ? {overview.profile.exchange} : null} {overview.meta.is_partial ? Partial Data : null}
52 Week Range
{fmtCurrency(overview.range_52w.low)} {fmtCurrency(overview.range_52w.price ?? overview.quote.price)} {fmtCurrency(overview.range_52w.high)}
{pct != null ? : null}
{pct == null ? "Range unavailable" : `${pct.toFixed(0)}% through the annual range`}
{fmtCurrency(overview.quote.price)} {fmtCurrency(overview.quote.change)} ยท {fmtPct(overview.quote.change_pct, 2, true)} Prev close {fmtCurrency(overview.quote.prev_close)} {lastSource ? Source {lastSource.replaceAll("_", " ")} : null}
); }