"use client";
import { memo } from "react";
import { SparklesIcon } from "./icons";
interface VolcanoVisionLoadingProps {
imageCount?: number; // 🆕 用户选择的图片数量,默认1张
}
/**
* 火山引擎视觉图片生成加载占位符组件
* 显示动态数量的 170x200 像素模糊动态效果
*/
export const VolcanoVisionLoading = memo(({ imageCount = 1 }: VolcanoVisionLoadingProps) => {
// 确保数量在 1-3 范围内
const count = Math.min(Math.max(imageCount, 1), 3);
return (
{/* 头像 */}
{/* 文本提示 */}
正在生成 {count} 张图片
{/* 图片占位符 - 横向排列,每个 170x200px */}
{Array.from({ length: count }, (_, index) => index).map((index) => (
{/* 底层渐变背景 */}
{/* 动态模糊叠加层 1 */}
{/* 动态模糊叠加层 2 */}
{/* 噪点纹理效果 */}
{/* 模糊叠加 */}
{/* 中心图标 */}
{/* 外圈光晕 */}
{/* 图片图标 */}
{/* 流光效果 */}
))}
{/* 提示文字 */}
火山引擎正在创作 {count} 张图片,请稍候...
{/* 流光动画样式 */}
);
});
VolcanoVisionLoading.displayName = "VolcanoVisionLoading";