import { useEffect, useState } from "react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Skeleton } from "@/components/ui/skeleton"; import { Link } from "@tanstack/react-router"; interface LinkData { links: { [key: string]: { [key: string]: { records: number; distinct_dids: number; }; }; }; } export function AllBacklinksViewer({ aturi }: { aturi: string }) { const [data, setData] = useState(null); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchData = async () => { try { const response = await fetch( `https://constellation.microcosm.blue/links/all?target=${encodeURIComponent(aturi)}`, ); const jsonData = await response.json(); setData(jsonData); setLoading(false); } catch (err) { setError("Error fetching data"); setLoading(false); } }; fetchData(); }, [aturi]); if (loading) { return ( <>

Backlinks

{[...Array(6)].map((_, i) => ( ))}
); } if (error) { return ( Error {error} ); } if (!data) return null; return ( <>

Backlinks

Interaction Statistics from{" "} constellation
{Object.entries(data.links).map(([category, stats]) => ( {formatCategoryName(category)}
{Object.entries(stats).map(([stat, values]) => (

{formatStatName(stat)}

Records: {values.records}
Distinct DIDs: {values.distinct_dids}
))}
))} {Object.entries(data.links).length == 0 && (

Nothing doing! No links indexed for this target!

You can{" "} view the api response .
)}
); } // Helper function to format category names const formatCategoryName = (name: string) => { return name .split(".") .pop() ?.replace(/([A-Z])/g, " $1") .trim(); }; // Helper function to format stat names const formatStatName = (name: string) => { return name.split(".").filter(Boolean).join("."); }; export default AllBacklinksViewer;