From 34e5eea684f66b2f893fc4835e7a934885657f39 Mon Sep 17 00:00:00 2001 From: moux1024 <403053463@qq.com> Date: Wed, 22 Oct 2025 18:13:25 +0800 Subject: [PATCH] fix banner --- app/create/page.tsx | 4 +- app/page.tsx | 14 +- components/FamousTemplate.tsx | 11 +- components/HomeBanner.tsx | 259 +----------------- .../CreateInput/VideoCreationForm.tsx | 39 +-- 5 files changed, 36 insertions(+), 291 deletions(-) diff --git a/app/create/page.tsx b/app/create/page.tsx index b332b09..d893bb9 100644 --- a/app/create/page.tsx +++ b/app/create/page.tsx @@ -4,7 +4,9 @@ import { DashboardLayout } from '@/components/layout/dashboard-layout'; export default function CreatePage() { return ( - +
+ +
); } \ No newline at end of file diff --git a/app/page.tsx b/app/page.tsx index e4d85f5..a52fea1 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,7 +1,7 @@ "use client"; -import { useEffect } from 'react'; +import { useLayoutEffect } from 'react'; import { useRouter } from 'next/navigation'; import { TopBar } from "@/components/layout/top-bar"; import { HomePage2 } from "@/components/pages/home-page2"; @@ -13,11 +13,17 @@ export default function Home() { const router = useRouter(); const { deviceType, isMobile, isTablet, isDesktop } = useDeviceType(); - useEffect(() => { - if (isAuthenticated()) { + const authed = isAuthenticated(); + + useLayoutEffect(() => { + if (authed) { router.replace('/home'); } - }, [router]); + }, [authed, router]); + + if (authed) { + return null; + } return ( <> {isMobile || isTablet ? ( diff --git a/components/FamousTemplate.tsx b/components/FamousTemplate.tsx index 1387091..7abd552 100644 --- a/components/FamousTemplate.tsx +++ b/components/FamousTemplate.tsx @@ -48,7 +48,7 @@ const FamousTemplate: React.FC = ({ showTabs = true }) => {

- Hot Templates + Inspiration Lab

{showTabs && (
@@ -86,15 +86,12 @@ const FamousTemplate: React.FC = ({ showTabs = true }) => { className="relative h-40 group" onMouseEnter={(e) => { const v = e.currentTarget.querySelector('video') as HTMLVideoElement | null - // @ts-ignore v?.play?.() }} onMouseLeave={(e) => { const v = e.currentTarget.querySelector('video') as HTMLVideoElement | null - // @ts-ignore v?.pause?.() if (v) { - // @ts-ignore v.currentTime = 0 } }} @@ -117,13 +114,13 @@ const FamousTemplate: React.FC = ({ showTabs = true }) => {
{t.name}
-
= ({ showTabs = true }) => { -
- -
- {eyebrow ? ( - - {eyebrow} - - ) : null} - {title ? ( -

- {title} -

- ) : null} - {(subtitle && isDesktop) ? ( -

{subtitle}

- ) : null} - {(description && isDesktop) ? ( -

{description}

- ) : null} - {ctaLabel ? ( - ctaHref ? ( - - {ctaLabel} - - ) : ( - - ) - ) : null} -
- - {isFlying ? ( - - ) : null} -
- {/* Base content - always present under the banner */} -
+
Your idea. A movie. In minutes.
+
Our AI turns sparks into full-blown stories — fast & free.
+
diff --git a/components/pages/create-video/CreateInput/VideoCreationForm.tsx b/components/pages/create-video/CreateInput/VideoCreationForm.tsx index 1d146f1..272fd6c 100644 --- a/components/pages/create-video/CreateInput/VideoCreationForm.tsx +++ b/components/pages/create-video/CreateInput/VideoCreationForm.tsx @@ -3,12 +3,8 @@ import { useState, useRef, useEffect, useMemo } from 'react'; import { PhotoPreviewSection } from '../PhotoPreview'; import type { PhotoItem, PhotoType } from '../PhotoPreview/types'; +import { ActionButton } from '@/components/common/ActionButton'; import { - PlusOutlined, - UserOutlined, - CameraOutlined, - BulbOutlined, - ArrowRightOutlined, SettingOutlined, } from '@ant-design/icons'; import { Dropdown, Popover } from 'antd'; @@ -17,7 +13,7 @@ import { MobileConfigModal } from './MobileConfigModal'; import { AddItemModal } from './AddItemModal'; import { defaultConfig } from './config-options'; import type { ConfigOptions } from './config-options'; -import { CircleArrowRight, X } from 'lucide-react'; +import { CircleArrowRight, X, Clapperboard } from 'lucide-react'; import TemplatePreviewModal from '@/components/common/TemplatePreviewModal'; import { PcTemplateModal } from "@/components/ChatInputBox/PcTemplateModal" import { useDeviceType } from '@/hooks/useDeviceType'; @@ -48,7 +44,7 @@ export default function VideoCreationForm() { const [isRoleGenerating, setIsRoleGenerating] = useState<{ [key: string]: boolean }>({}); const [isItemGenerating, setIsItemGenerating] = useState<{ [key: string]: boolean }>({}); const [currentTemplate, setCurrentTemplate] = useState(null); - const [inputPlaceholder, setInputPlaceholder] = useState(''); + const [generateText, setGenerateText] = useState(''); const [templateTitle, setTemplateTitle] = useState(''); const [isMentionOpen, setIsMentionOpen] = useState(false); @@ -95,7 +91,7 @@ export default function VideoCreationForm() { /** Clear current template related states */ const clearTemplateSelection = () => { handleConfigChange('pcode', ''); - setInputPlaceholder(''); + setGenerateText(''); setTemplateTitle(''); setPhotos([]); }; @@ -111,7 +107,7 @@ export default function VideoCreationForm() { })).filter(p => p.url); setPhotos(prev => [...prev, ...characterPhotos]); - setInputPlaceholder(template.generateText || template.name); + setGenerateText(template.generateText || template.name); setTemplateTitle(template.name); handleConfigChange('pcode', template.pcode || ''); setTimeout(() => { @@ -396,9 +392,9 @@ export default function VideoCreationForm() { )} {/* Template Description */} - {inputPlaceholder && ( + {generateText && (
-
{inputPlaceholder}
+
{generateText}
)} {/* Text Input Area - Middle */} @@ -416,7 +412,7 @@ export default function VideoCreationForm() { )} {/* Control Panel - Bottom */} -
+
{/* Left Side - Upload and Options */}
{/* Upload Button with Dropdown */} @@ -599,18 +595,13 @@ export default function VideoCreationForm() {
{/* Right Side - Create Button */} - + } + width="w-10" + height="h-10" + />