"use client";
interface SkeletonProps {
className?: string;
variant?: "text" | "circular" | "rectangular";
style?: React.CSSProperties;
}
export default function Skeleton({ className = "", variant = "rectangular", style }: SkeletonProps) {
const baseClasses = "relative overflow-hidden bg-gray-200/80 dark:bg-white/[0.07]";
const variantClasses = {
text: "rounded-md h-4 w-full",
circular: "rounded-full",
rectangular: "rounded-xl",
};
return (
);
}
/* Preset skeleton layouts */
export function SkeletonCard() {
return (
);
}
export function SkeletonStat() {
return (
);
}
export function SkeletonFileCard() {
return (
);
}
export function SkeletonActivity() {
return (
);
}
export function SkeletonRow() {
return (
);
}
export function DashboardSkeleton() {
return (
{/* Bandeau */}
{[...Array(4)].map((_, i) => )}
{/* KPI */}
{[...Array(5)].map((_, i) => )}
{/* Stockage + activité */}
{[...Array(5)].map((_, i) => )}
{[...Array(14)].map((_, i) => )}
{/* Reprendre */}
{[...Array(6)].map((_, i) => )}
{/* Timeline + latéral */}
{[...Array(6)].map((_, i) => )}
{[...Array(4)].map((_, i) => )}
{[...Array(4)].map((_, i) => )}
);
}