Portal: full mock-driven surfaces, demonolithed components, backend-ready mocks (#6686)

This commit is contained in:
Reece Browne
2026-06-16 12:20:35 +01:00
committed by GitHub
parent 6716398ccb
commit 96accea984
146 changed files with 12221 additions and 286 deletions
+38
View File
@@ -0,0 +1,38 @@
import type { ReactNode } from "react";
import "@shared/components/StatTile.css";
export type StatTileTone = "default" | "success" | "warning" | "danger";
export interface StatTileProps {
label: ReactNode;
value: ReactNode;
/** Colours the value (e.g. error rate over threshold). */
tone?: StatTileTone;
className?: string;
}
/**
* Compact label-over-value stat used inside detail panels, cards, and metric
* grids (the small sibling of {@link MetricCard}). Value uses tabular figures
* so columns of stats stay aligned.
*/
export function StatTile({
label,
value,
tone = "default",
className,
}: StatTileProps) {
return (
<div className={["sui-stat", className ?? ""].filter(Boolean).join(" ")}>
<span className="sui-stat__label">{label}</span>
<span
className={
"sui-stat__value" +
(tone !== "default" ? ` sui-stat__value--${tone}` : "")
}
>
{value}
</span>
</div>
);
}