import { useMemo } from "react"; import { AppDataTable, useAppTable, } from "@/client/components/table/AppDataTable"; import { EmptyTableState } from "./BacklinksPageEmptyTableState"; import { backlinksColumns } from "./BacklinksTableColumns"; import type { BacklinksOverviewData } from "./backlinksPageTypes"; import { groupBacklinksByDomain } from "./backlinksPageUtils"; export function BacklinksTable({ rows, }: { rows: BacklinksOverviewData["backlinks"]; }) { const groupedData = useMemo(() => groupBacklinksByDomain(rows), [rows]); const table = useAppTable({ data: groupedData, columns: backlinksColumns, initialState: { sorting: [{ id: "firstSeen", desc: true }], }, getSubRows: (row) => row.subRows, withSorting: true, withExpanded: true, getRowCanExpand: (row) => row.depth === 0, }); if (rows.length === 0) { return ; } return ( ({ className: row.depth === 0 ? "cursor-pointer bg-base-200/50 transition-colors hover:bg-base-200/80" : "bg-base-100", onClick: row.depth === 0 ? row.getToggleExpandedHandler() : undefined, })} /> ); }