import { useState } from "react"; import type { ReactElement } from "react"; export interface MetricCell { label: string; value: string; color: string; // CSS color, e.g., "var(--ms-blue-400)" trend?: { direction: "up" | "down" | "neutral"; text: string; }; } export interface MetricsStripProps { cells: MetricCell[]; className?: string; } function MetricCellItem({ cell }: { cell: MetricCell }): ReactElement { const [hovered, setHovered] = useState(false); const trendColor = cell.trend?.direction === "up" ? "var(--success)" : cell.trend?.direction === "down" ? "var(--danger)" : "var(--muted)"; return (
{ setHovered(true); }} onMouseLeave={(): void => { setHovered(false); }} style={{ padding: "14px 16px", background: hovered ? "var(--surface-2)" : "var(--surface)", borderTop: `2px solid ${cell.color}`, transition: "background 0.15s ease", }} >
{cell.value}
{cell.label}
{cell.trend && (
{cell.trend.text}
)}
); } export function MetricsStrip({ cells, className = "" }: MetricsStripProps): ReactElement { return (
{cells.map((cell) => ( ))}
); }