"use client";

import { Loader2 } from "lucide-react";
import { cn } from "@/lib/utils";

interface LoadingSpinnerProps {
  className?: string;
  size?: "sm" | "md" | "lg";
  "aria-label"?: string;
}

const sizeClasses = {
  sm: "h-4 w-4",
  md: "h-8 w-8",
  lg: "h-10 w-10",
};

/**
 * Reusable loading spinner (Loader2 icon with animate-spin).
 */
export function LoadingSpinner({
  className,
  size = "md",
  "aria-label": ariaLabel = "Loading",
}: LoadingSpinnerProps) {
  return (
    <Loader2
      className={cn(
        "animate-spin text-muted-foreground",
        sizeClasses[size],
        className
      )}
      aria-hidden={!ariaLabel}
      aria-label={ariaLabel}
    />
  );
}
