import { HeaderHelpLabel } from "@/client/features/keywords/components"; import { Search } from "lucide-react"; import { BacklinksNewLostChart, BacklinksTrendChart, } from "./BacklinksPageCharts"; import { BacklinksTable } from "./BacklinksTable"; import { ReferringDomainsTable } from "./ReferringDomainsTable"; import { TopPagesTable } from "./TopPagesTable"; import type { BacklinksOverviewData, BacklinksSearchState, } from "./backlinksPageTypes"; import { TAB_DESCRIPTIONS, formatRelativeTimestamp, } from "./backlinksPageUtils"; export function BacklinksOverviewPanels({ data, summaryStats, }: { data: BacklinksOverviewData; summaryStats: Array<{ label: string; value: string; description: string }>; }) { return ( <>
{data.scope} Target: {data.displayTarget} - Updated {formatRelativeTimestamp(data.fetchedAt)}
{data.scope === "page" ? (
Showing backlinks for this exact page. Enter a bare domain for site-wide results. Trend charts are only shown for domain-level lookups.
) : null} ); } export function BacklinksResultsCard({ activeTab, filteredData, filterText, isTabLoading, tabErrorMessage, onFilterTextChange, onSetActiveTab, }: { activeTab: BacklinksSearchState["tab"]; filteredData: { backlinks: BacklinksOverviewData["backlinks"]; referringDomains: BacklinksOverviewData["referringDomains"]; topPages: BacklinksOverviewData["topPages"]; }; filterText: string; isTabLoading: boolean; tabErrorMessage: string | null; onFilterTextChange: (value: string) => void; onSetActiveTab: (tab: BacklinksSearchState["tab"]) => void; }) { return (
{tabErrorMessage ? (
{tabErrorMessage}
) : null} {activeTab === "backlinks" ? ( ) : null} {activeTab === "domains" && isTabLoading && !tabErrorMessage ? ( ) : null} {activeTab === "domains" && !isTabLoading && !tabErrorMessage ? ( ) : null} {activeTab === "pages" && isTabLoading && !tabErrorMessage ? ( ) : null} {activeTab === "pages" && !isTabLoading && !tabErrorMessage ? ( ) : null}
); } function OverviewGrid({ data, summaryStats, }: { data: BacklinksOverviewData; summaryStats: Array<{ label: string; value: string; description: string }>; }) { const domainScope = data.scope === "domain"; return (
{domainScope ? : null}
); } function ResultsHeader({ activeTab, filterText, onFilterTextChange, onSetActiveTab, }: { activeTab: BacklinksSearchState["tab"]; filterText: string; onFilterTextChange: (value: string) => void; onSetActiveTab: (tab: BacklinksSearchState["tab"]) => void; }) { return (
Backlinks Referring Domains Top Pages

{TAB_DESCRIPTIONS[activeTab]}

); } function SummaryStatsGrid({ data, summaryStats, }: { data: BacklinksOverviewData; summaryStats: Array<{ label: string; value: string; description: string }>; }) { const cardClassName = `card bg-base-100 border border-base-300 ${data.scope === "domain" ? "md:col-span-2 xl:col-span-1" : ""}`; return (
{summaryStats.map((item) => (

{item.value}

))}
); } function TrendPanels({ data }: { data: BacklinksOverviewData }) { return ( <> ); } function TrendCard({ children, description, title, }: { children: React.ReactNode; description: string; title: string; }) { return (

{title}

{description}

{children}
); } function TabButton({ activeTab, children, onClick, tab, }: { activeTab: BacklinksSearchState["tab"]; children: string; onClick: (tab: BacklinksSearchState["tab"]) => void; tab: BacklinksSearchState["tab"]; }) { return ( ); } function TabLoadingState({ label }: { label: string }) { return (

{label}...

); }