import { Link2, ShieldAlert, Sparkles, TrendingUp, Wrench, type LucideIcon, } from "lucide-react"; import type { BacklinksAccessStatusData } from "./backlinksPageTypes"; import { formatRelativeTimestamp } from "./backlinksPageUtils"; export function BacklinksAccessLoadingState() { return (
); } export function BacklinksSetupGate({ status, isTesting, testError, onTest, }: { status: BacklinksAccessStatusData | undefined; isTesting: boolean; testError: string | null; onTest: () => void; }) { return (

Enable Backlinks

Backlinks is not enabled for your DataForSEO account yet. Turn it on in DataForSEO, then test access here.

DataForSEO offers a free 14-day trial for Backlinks. Then, it's $100/month. We're gauging interest in building out a lower-cost alternative, if you're interested.

Open DataForSEO Backlinks
); } export function BacklinksEmptyState() { return (

Start with a domain or page URL

Keep backlink research simple: see who links to you, check what pages attract links, and spot recent wins or losses without getting buried in enterprise SEO dashboards.

); } export function BacklinksLoadingState() { return (
{Array.from({ length: 8 }).map((_, index) => (
))}
{Array.from({ length: 2 }).map((_, index) => (
))}
); } export function BacklinksErrorState({ errorMessage, onRetry, }: { errorMessage: string | null; onRetry: () => void; }) { return (

Could not load backlinks

{errorMessage ?? "Please try again in a moment."}

); } function BacklinksSetupFeedback({ status, testError, }: { status: BacklinksAccessStatusData | undefined; testError: string | null; }) { return (
{status?.lastCheckedAt ? (
Last checked {formatRelativeTimestamp(status.lastCheckedAt)}.
) : null} {status?.lastErrorMessage ? (
{status.lastErrorMessage}
) : null} {testError ? (
{testError}
) : null}
); } function BeginnerCard({ icon: Icon, title, body, }: { icon: LucideIcon; title: string; body: string; }) { return (

{title}

{body}

); } function InlineMailingListLink() { return ( join the OpenSEO mailing list ); }