import { AlertCircle } from "lucide-react"; import type { ReactNode } from "react"; import { getErrorMessage } from "@fusion/core"; import { AgentEmptyState } from "./AgentEmptyState"; import { ProjectGridSkeleton } from "./ProjectGridSkeleton"; export interface DataBoundaryProps { isEmpty: boolean; isLoading?: boolean; hasFetched?: boolean; error?: unknown; loadingFallback?: ReactNode; emptyFallback?: ReactNode; errorFallback?: ReactNode; children: ReactNode; } function DefaultErrorFallback({ error }: { error: unknown }) { return (

Unable to load data

{getErrorMessage(error) || "Something went wrong while loading this view."}

); } export function DataBoundary({ isEmpty, isLoading = false, hasFetched = false, error, loadingFallback, emptyFallback, errorFallback, children, }: DataBoundaryProps) { if (error) { return <>{errorFallback ?? }; } const shouldShowLoading = isLoading || (!hasFetched && !error); if (shouldShowLoading) { return <>{loadingFallback ?? }; } if (hasFetched && isEmpty) { return ( <> {emptyFallback ?? ( )} ); } return <>{children}; }