"use client"; import type { HTMLAttributes } from "react"; import { cn } from "@/shared/utils/cn"; type SpinnerSize = "sm" | "md" | "lg" | "xl"; type LoadingType = "spinner" | "page" | "skeleton" | "card"; const spinnerSizes: Record = { sm: "size-4", md: "size-6", lg: "size-8", xl: "size-12", }; interface SpinnerProps { size?: SpinnerSize; className?: string; label?: string; } interface PageLoadingProps { message?: string; className?: string; } interface SkeletonProps extends HTMLAttributes { className?: string; } interface LoadingProps extends HTMLAttributes { type?: LoadingType; className?: string; message?: string; size?: SpinnerSize; label?: string; } // Spinner loading export function Spinner({ size = "md", className, label = "Loading" }: SpinnerProps) { return ( {label} ); } // Full page loading export function PageLoading({ message = "Loading...", className }: PageLoadingProps) { return (

{message}

); } // Skeleton loading export function Skeleton({ className, ...props }: SkeletonProps) { return (