import { Loader2 } from "lucide-react";
import type * as React from "react";
import { cn } from "@/lib/cn";
type PageHeaderProps = {
eyebrow: string;
title: React.ReactNode;
description?: React.ReactNode;
leading?: React.ReactNode;
actions?: React.ReactNode;
className?: string;
};
export function PageShell({ className, ...props }: React.ComponentProps<"div">) {
return
;
}
export function PageHeader({
eyebrow,
title,
description,
leading,
actions,
className,
}: PageHeaderProps) {
return (
{leading}
{eyebrow}
{title}
{description &&
{description}
}
{actions}
);
}
type StatePanelProps = React.ComponentProps<"div"> & {
title: React.ReactNode;
description?: React.ReactNode;
icon?: React.ReactNode;
action?: React.ReactNode;
tone?: "default" | "error";
loading?: boolean;
};
export function StatePanel({
title,
description,
icon,
action,
tone = "default",
loading = false,
className,
...props
}: StatePanelProps) {
return (
{loading ? (
) : (
icon &&
{icon}
)}
{title}
{description &&
{description}
}
{action &&
{action}
}
);
}
export function FullScreenLoader({ label }: { label?: string }) {
return (
{label && (
{label}
)}
);
}