"use client"; // Two-tier "who holds this" strip (M22 Symbol Search Index, ADR-0011). // // Tier 1 — tracked funds (M21 `fund_position_records`): each fund that holds the // symbol, with its weight in the fund's disclosed book and the record source/as-of. // Tier 2 — the count of distinct 13F filers that reported the symbol (M4 cache). // // Facts only (ADR-0010 / ADR-0007): never "you should follow this fund". import { useEffect, useState } from "react"; import { api, type FundHoldersResult } from "@/lib/trpc"; import { Badge } from "@/components/ui"; export function FundHoldingsStrip({ symbol }: { symbol: string | null }) { const [data, setData] = useState(null); const [showInstitutions, setShowInstitutions] = useState(false); const [error, setError] = useState(false); useEffect(() => { let cancelled = false; setData(null); setShowInstitutions(false); setError(false); if (!symbol) return; api.symbols .holders({ symbol }) .then((d) => { if (!cancelled) setData(d); }) .catch(() => { if (!cancelled) setError(true); }); return () => { cancelled = true; }; }, [symbol]); if (error) return null; // silent — strip is auxiliary if (!data) return null; if (data.tracked.length === 0 && data.institutionCount === 0) return null; return (

Who holds {symbol}

{data.tracked.length > 0 && ( )} {data.institutionCount > 0 && (
{showInstitutions && (

From the shared 13F filings cache (M4 institutional module). This is every distinct filer that reported the symbol, passive and active alike.

)}
)}
); }