"use client"; import { useEffect, useState } from "react"; import { api } from "@/lib/api"; import { RatiosCard } from "@/components/prism/RatiosCard"; import type { RatiosResponse } from "@/types/api"; type RatiosState = "loading" | "ready" | "error"; type Props = { ticker: string; }; export function RatiosPage({ ticker }: Props) { const [data, setData] = useState(null); const [ratiosState, setRatiosState] = useState("loading"); useEffect(() => { let cancelled = false; setRatiosState("loading"); setData(null); api .ratios(ticker) .then((res) => { if (!cancelled) { setData(res); setRatiosState("ready"); } }) .catch(() => { if (!cancelled) setRatiosState("error"); }); return () => { cancelled = true; }; }, [ticker]); if (ratiosState === "loading") { return
; } if (ratiosState === "error") { return (

Ratio data unavailable for {ticker}.

); } if (ratiosState === "ready" && data) { return ; } return null; }