"use client"; import { memo } from "react"; import { SparklesIcon } from "./icons"; import { Scissors, Expand, Droplet } from "lucide-react"; interface ImageProcessingLoadingProps { type: "enhance" | "rmbg" | "extend" | "watermark"; // 处理类型:变清晰、抠图、图像拓展或去水印 } /** * 图片处理加载占位符组件 * 显示类似 Gemini 生图的动态卡片效果 */ export const ImageProcessingLoading = memo(({ type }: ImageProcessingLoadingProps) => { const isEnhance = type === "enhance"; const isRmbg = type === "rmbg"; const isExtend = type === "extend"; const isWatermark = type === "watermark"; let text: string; let icon: any; let colorClasses: any; if (isEnhance) { text = "正在变清晰"; icon = SparklesIcon; colorClasses = { ping: "bg-blue-500/20", pulse: "bg-blue-500/10", ring: "ring-blue-500/30", text: "text-blue-500", dot: "bg-blue-500", gradientFrom: "from-blue-400", gradientFromOverlay: "from-blue-500/40", gradientToOverlay: "to-blue-500/30", }; } else if (isRmbg) { text = "正在抠图"; icon = Scissors; colorClasses = { ping: "bg-green-500/20", pulse: "bg-green-500/10", ring: "ring-green-500/30", text: "text-green-500", dot: "bg-green-500", gradientFrom: "from-green-400", gradientFromOverlay: "from-green-500/40", gradientToOverlay: "to-green-500/30", }; } else if (isWatermark) { text = "正在去水印"; icon = Droplet; colorClasses = { ping: "bg-cyan-500/20", pulse: "bg-cyan-500/10", ring: "ring-cyan-500/30", text: "text-cyan-500", dot: "bg-cyan-500", gradientFrom: "from-cyan-400", gradientFromOverlay: "from-cyan-500/40", gradientToOverlay: "to-cyan-500/30", }; } else { text = "正在图像拓展"; icon = Expand; colorClasses = { ping: "bg-orange-500/20", pulse: "bg-orange-500/10", ring: "ring-orange-500/30", text: "text-orange-500", dot: "bg-orange-500", gradientFrom: "from-orange-400", gradientFromOverlay: "from-orange-500/40", gradientToOverlay: "to-orange-500/30", }; } const Icon = icon; return (
{/* 头像 */}
{/* 文本提示 */}
{text}
{/* 图片占位符 - 170x200px */}
{/* 底层渐变背景 */}
{/* 动态模糊叠加层 1 */}
{/* 动态模糊叠加层 2 */}
{/* 噪点纹理效果 */}
{/* 模糊叠加 */}
{/* 中心图标 */}
{/* 外圈光晕 */}
{/* 图标 */}
{/* 流光效果 */}
{/* 提示文字 */} 正在处理图片,请稍候...
{/* 流光动画样式 */}
); }); ImageProcessingLoading.displayName = "ImageProcessingLoading";