import * as React from "react";
import {
DetailLink,
DetailList,
DetailSectionCard,
Empty,
LocalSystemCells,
} from "@/components/detail/DetailList";
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table";
import type {
AcceleratorPageState,
AcceleratorRow,
AcceleratorSystemRow,
AcceleratorVendorSummaryRow,
} from "@/types/local-frontier";
export type AcceleratorPagesProps = {
page: AcceleratorPageState;
};
function VendorSummaryTable({
rows,
}: {
rows: readonly AcceleratorVendorSummaryRow[];
}): React.JSX.Element {
if (!rows.length) return No accelerator vendors.;
return (
Vendor
Accelerators
Systems
{rows.map((row) => (
{row.accelerators}
{row.systems}
))}
);
}
function AcceleratorTable({
rows,
}: {
rows: readonly AcceleratorRow[];
}): React.JSX.Element {
if (!rows.length) return No accelerators.;
return (
Accelerator
Vendor
Systems
Max memory
Max bandwidth
Lowest latest price
{rows.map((row) => (
{row.name}
{row.systems}
{row.maxMemory}
{row.maxBandwidth}
{row.lowestLatestPrice}
))}
);
}
function AcceleratorSystemsTable({
rows,
}: {
rows: readonly AcceleratorSystemRow[];
}): React.JSX.Element {
if (!rows.length) return No systems.;
return (
System
System vendor
Count
Memory
Bandwidth
Latest price
{rows.map((row) => (
))}
);
}
export function AcceleratorPages({
page,
}: AcceleratorPagesProps): React.JSX.Element {
if (page.emptyMessage) return {page.emptyMessage};
return (
{page.summaryRows.length ? (
) : null}
{page.vendors.length ? (
) : null}
{page.accelerators.length || page.kind !== "model" ? (
) : null}
{page.systems.length || page.kind !== "overview" ? (
) : null}
);
}