"use client"; import { cn } from "@/lib/utils"; /** * [로딩 스피너 컴포넌트] * * 전역적으로 사용 가능한 로딩 스피너입니다. * - 크기 조절 가능 (sm, md, lg) * - 색상 커스터마이징 가능 * - 텍스트와 함께 사용 가능 * * @example * // 기본 사용 * * * @example * // 크기 및 텍스트 지정 * * * @example * // 버튼 내부에서 사용 * */ interface LoadingSpinnerProps { /** 스피너 크기 */ size?: "sm" | "md" | "lg"; /** 스피너와 함께 표시할 텍스트 */ text?: string; /** 추가 CSS 클래스 */ className?: string; /** 스피너 색상 (Tailwind 클래스) */ color?: string; } export function LoadingSpinner({ size = "md", text, className, color = "border-gray-900 dark:border-white", }: LoadingSpinnerProps) { // 크기별 스타일 매핑 const sizeClasses = { sm: "h-4 w-4 border-2", md: "h-8 w-8 border-3", lg: "h-12 w-12 border-4", }; return (
{/* ========== 회전 스피너 ========== */}
{/* ========== 로딩 텍스트 (선택적) ========== */} {text && ( {text} )}
); } /** * [인라인 스피너 컴포넌트] * * 버튼 내부나 작은 공간에서 사용하기 적합한 미니 스피너입니다. * * @example * */ export function InlineSpinner({ className }: { className?: string }) { return ( ); }