- {/* 头像 - 和图片生成一样的一闪一闪效果 */}
-
+export const QianwenVideoLoading = memo(
+ ({
+ providerType,
+ modelName,
+ phase = "processing",
+ elapsedSeconds = 0,
+ }: VideoGenerationLoadingProps) => {
+ const normalizedProviderType =
+ providerType === "doubao-video" ? "volcano-video" : providerType || "qianwen-video";
+ const resolvedModelName =
+ modelName?.trim() ||
+ PROVIDER_MODEL_LABEL[normalizedProviderType] ||
+ "AI 视频模型";
+ const elapsedLabel = elapsedSeconds > 0 ? `已等待 ${elapsedSeconds}s` : "预计 60~180 秒";
+ const phaseHint = PHASE_HINT[phase];
+ const isFailed = phase === "failed";
+ const palette = isFailed
+ ? {
+ ping: "bg-red-500/20",
+ pulse: "bg-red-500/10",
+ ring: "ring-red-500/30",
+ spinner: "text-red-500",
+ dot: "bg-red-500",
+ }
+ : {
+ ping: "bg-blue-500/20",
+ pulse: "bg-blue-500/10",
+ ring: "ring-blue-500/30",
+ spinner: "text-blue-500",
+ dot: "bg-blue-500",
+ };
+ const gradientClass =
+ PROVIDER_GRADIENT_CLASS[normalizedProviderType] || PROVIDER_GRADIENT_CLASS["qianwen-video"];
-
- {/* 文本提示 */}
-
-
- 正在生成视频
-
-
-
-
-
-
-
-
- {/* 视频占位符 - 170x200 像素,带动态效果 */}
-
- {/* 底层渐变背景 */}
-
-
- {/* 动态模糊叠加层 1 */}
-
-
- {/* 动态模糊叠加层 2 */}
-
-
- {/* 噪点纹理效果 */}
-
-
- {/* 模糊叠加 */}
-
-
- {/* 中心图标 */}
-
-
- {/* 外圈光晕 */}
-
- {/* 视频图标 */}
-
+ return (
+
+
+ {/* 头像 - 和图片生成一样的一闪一闪效果 */}
+
-
- {/* 提示文字 */}
-
- ⏱️ 视频生成需要 30-60 秒,请耐心等待...
-
+
+
+
+
+ {resolvedModelName}
+
+
+ {/* 文本提示 */}
+
+
+ 正在生成视频
+
+
+
+
+
+
+
+
+ {/* 视频占位符 - 170x200 像素,带动态效果 */}
+
+ {/* 底层渐变背景 */}
+
+
+ {/* 动态模糊叠加层 1 */}
+
+
+ {/* 动态模糊叠加层 2 */}
+
+
+ {/* 噪点纹理效果 */}
+
+
+ {/* 模糊叠加 */}
+
+
+ {/* 中心图标 */}
+
+
+ {/* 外圈光晕 */}
+
+ {/* 视频图标 */}
+
+
+
+
+ {/* 流光效果 */}
+
+
+
+ {/* 提示文字 */}
+
+
{phaseHint}
+
{elapsedLabel}
+
+
+
+ {/* 流光动画样式 */}
+
-
- {/* 流光动画样式 */}
-
-
- );
-});
+ );
+ }
+);
QianwenVideoLoading.displayName = "QianwenVideoLoading";
-