From b98c34c39f75e1c02dde4b956d9e5c3e6ed403e7 Mon Sep 17 00:00:00 2001 From: moux1024 <403053463@qq.com> Date: Wed, 24 Sep 2025 21:25:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E:=20=E5=88=86=E4=BA=AB?= =?UTF-8?q?=E9=A1=B5=E8=A7=84=E5=88=99;=20H5=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/share/page.tsx | 99 ++++++++++++++------ components/SmartChatBox/SmartChatBox.tsx | 4 +- components/pages/work-flow.tsx | 8 +- components/pages/work-flow/H5MediaViewer.tsx | 14 +-- components/pages/work-flow/H5TaskInfo.tsx | 88 ++++++++++++++++- 5 files changed, 166 insertions(+), 47 deletions(-) diff --git a/app/share/page.tsx b/app/share/page.tsx index d7a454f..ae5ad57 100644 --- a/app/share/page.tsx +++ b/app/share/page.tsx @@ -197,36 +197,7 @@ export default function SharePage(): JSX.Element {

Invite friends to join and earn rewards.

- - {/* Section 1: Invite Flow */} -
-

Invitation Flow

-
    -
  1. -
    - Step 1 - Share -
    -

    Copy your invitation link and share it with friends.

    -
  2. -
  3. -
    - Step 2 - Register -
    -

    Friends click the link and register directly.

    -
  4. -
  5. -
    - Step 3 - Reward -
    -

    You both receive rewards after your friend activates their account.

    -
  6. -
-
- - {/* Section 2: My Invitation Link */} + {/* Section 1: My Invitation Link */}
@@ -277,6 +248,74 @@ export default function SharePage(): JSX.Element {
+ {/* Section 2: Invite Flow - Two Columns (Left: Steps, Right: Rules) */} +
+
+ {/* Left: Steps */} +
+

Invitation Flow

+
    +
  1. +
    + Step 1 + Share +
    +

    Copy your invitation link and share it with friends.

    +
  2. +
  3. +
    + Step 2 + Register +
    +

    Friends click the link and register directly.

    +
  4. +
  5. +
    + Step 3 + Reward +
    +

    You both receive rewards after your friend activates their account.

    +
  6. +
+
+ {/* Right: Rules */} +
+

MovieFlow Credits Rewards Program

+
+

Welcome to MovieFlow! Our Credits Program is designed to reward your growth and contributions. Credits can be redeemed for premium templates, effects, and membership time.

+ +
+

How to Earn Credits?

+ +
+

Welcome Bonus

+

All new users receive a bonus of 500 credits upon successful registration!

+
+ +
+

Invite & Earn

+

Invite friends to join using your unique referral link. Both you and your friend will get 500 credits once they successfully sign up.

+ +
+

If your invited friend completes their first purchase, you will receive a bonus equal to 20% of the credits they earn from that purchase.

+
+
+ +
+

Daily Login

+

Starting the day after registration, log in daily to claim 100 credits.

+

This reward can be claimed for 7 consecutive days.

+ +
+

Please note: Daily login credits will reset automatically on the 8th day, so remember to use them in time!

+
+
+
+
+ +
+
+
{/* Section 3: Invite Records */}
diff --git a/components/SmartChatBox/SmartChatBox.tsx b/components/SmartChatBox/SmartChatBox.tsx index 39cb4c9..e141121 100644 --- a/components/SmartChatBox/SmartChatBox.tsx +++ b/components/SmartChatBox/SmartChatBox.tsx @@ -116,7 +116,7 @@ export default function SmartChatBox({ const textBlock = last.blocks.find(b => (b as any).type === 'text') as any; const text = textBlock?.text || ''; if (text && onNewMessage) { - const snippet = text.slice(0, 20); + const snippet = text.slice(0, 40); onNewMessage(snippet); } } @@ -199,7 +199,7 @@ export default function SmartChatBox({ )} {/* Messages grouped by date */} -
+
{groupedMessages.map((group) => ( diff --git a/components/pages/work-flow.tsx b/components/pages/work-flow.tsx index 6d223f0..cecf083 100644 --- a/components/pages/work-flow.tsx +++ b/components/pages/work-flow.tsx @@ -624,7 +624,7 @@ Please process this video editing request.`; {isMobile ? (
{(!isSmartChatBoxOpen && chatTip) && ( -
+
{chatTip}
)} @@ -640,7 +640,7 @@ Please process this video editing request.`; setChatTip(null); setHasUnread(false); }} - className="backdrop-blur-lg bg-custom-purple/80 border-transparent hover:opacity-90" + className="backdrop-blur-lg bg-custom-purple/80 border-transparent hover:bg-custom-purple/80" />
) : ( @@ -698,8 +698,8 @@ Please process this video editing request.`; if (!isSmartChatBoxOpen && snippet) { setChatTip(snippet); setHasUnread(true); - // 3秒后自动消失 - setTimeout(() => setChatTip(null), 3000); + // 5秒后自动消失 + setTimeout(() => setChatTip(null), 5000); } }} onClearPreview={() => { diff --git a/components/pages/work-flow/H5MediaViewer.tsx b/components/pages/work-flow/H5MediaViewer.tsx index 8a5237f..6ddcf36 100644 --- a/components/pages/work-flow/H5MediaViewer.tsx +++ b/components/pages/work-flow/H5MediaViewer.tsx @@ -3,7 +3,7 @@ import React, { useEffect, useMemo, useRef, useState } from 'react'; import { Carousel } from 'antd'; import type { CarouselRef } from 'antd/es/carousel'; -import { Play, Pause, Scissors, MessageCircleMore, Download, ArrowDownWideNarrow, RotateCcw, Navigation } from 'lucide-react'; +import { Play, Pause, FeatherIcon, MessageCircleMore, Download, ArrowDownWideNarrow, RotateCcw, Navigation } from 'lucide-react'; import { TaskObject } from '@/api/DTO/movieEdit'; import { ScriptRenderer } from '@/components/script-renderer/ScriptRenderer'; import ScriptLoading from './script-loading'; @@ -395,15 +395,15 @@ export function H5MediaViewer({ {stage === 'final_video' && videoUrls.length > 0 && renderVideoSlides()} {stage === 'video' && videoUrls.length > 0 && renderVideoSlides()} {(stage === 'scene' || stage === 'character') && imageUrls.length > 0 && renderImageSlides()} - {/* 全局固定操作区(右上角)视频暂停时展示 */} + {/* 全局固定操作区(右下角)视频暂停时展示 */} {(stage === 'video' || stage === 'final_video') && !isPlaying && ( -
+
{stage === 'video' && ( <> { @@ -416,7 +416,7 @@ export function H5MediaViewer({ /> = ({ return null }, [selectedView, taskObject, displayCurrent, total]) + /** 阶段图标(H5 精简版) */ + const StageIcon = useMemo(() => { + const Icon = stageIconMap[currentStage].icon + return ( + + + + + + ) + }, [currentStage, stageColor]) + return (
= ({ >
-
+ {/* 左侧标题区域 */} +

= ({ {subtitle} )} - +

+ + {/* 右侧状态区域 */} +
+ + {currentLoadingText && currentLoadingText !== 'Task completed' && ( + +
+ {StageIcon} +
+
+ {/* 背景流光 */} + + {currentLoadingText} + + + {/* 主文字轻微律动 */} + + + + {/* 底部装饰线 */} + +
+
+ )} +