// 创作页空态:横幅、推荐提示词与精选作品。 import { useAppearanceStore } from "@/stores/use-appearance-store"; import type { CreationMode } from "./creation-assets"; import { ArrowUp, ChevronDown, Clapperboard, FileText, Image as ImageIcon, Sparkles } from "lucide-react"; import { LayoutGroup, motion, useReducedMotion } from "motion/react"; import { useState } from "react"; import { aceternityMotion } from "@/lib/aceternity-motion"; import { creationFeaturedWorks, inspirationSource } from "./creation-inspirations"; import { modeLabels } from "./creation-types"; import { Button } from "antd"; export const creationEmptyBannerFrames = [ { src: "/short-drama-styles/cyberpunk-neon.jpg", caption: "镜头01 · 雨夜霓虹" }, { src: "/short-drama-styles/suspense-noir.jpg", caption: "镜头02 · 暗巷追逐" }, { src: "/short-drama-styles/retro-hong-kong.jpg", caption: "镜头03 · 天台重逢" }, ]; export function CreationEmptyBanner() { const brandName = useAppearanceStore((state) => state.appearance.brandName); return ( ); } export const creationEmptySuggestions: Array<{ mode: CreationMode; icon: typeof Clapperboard; title: string; hint: string; prompt: string; openLibrary?: boolean }> = [ { mode: "video", icon: Clapperboard, title: "生成第一个镜头", hint: "描述画面、镜头运动与光线", prompt: "雨夜天台,镜头缓缓推近霓虹灯牌下的主角,她回眸看向镜头,强对比电影感布光" }, { mode: "image", icon: ImageIcon, title: "从参考图开始", hint: "上传风格图,生成同风格画面", prompt: "", openLibrary: true }, { mode: "text", icon: FileText, title: "续写故事", hint: "和 AI 讨论剧情、角色与对白", prompt: "帮我续写一个短剧故事,先聊聊剧情走向:" }, { mode: "video", icon: Sparkles, title: "引用技能增强", hint: "@技能 调用分镜、配音等专业能力", prompt: "调用分镜技能,帮我规划这个镜头的拍摄方案:" }, ]; export function CreationEmptySuggest({ onStartPrompt, onOpenLibrary }: { onStartPrompt: (mode: CreationMode, prompt: string) => void; onOpenLibrary: () => void }) { const reducedMotion = useReducedMotion(); const [hovered, setHovered] = useState(null); return (
{creationEmptySuggestions.map((item) => { const Icon = item.icon; const start = () => { if (item.openLibrary) onOpenLibrary(); else onStartPrompt(item.mode, item.prompt); }; return ( setHovered(item.title)} onHoverEnd={() => setHovered(null)} whileHover={reducedMotion ? undefined : { y: -2 }} transition={aceternityMotion.spring.surface} > {hovered === item.title ? : null} {item.title} {item.hint} ); })}
); } export function CreationFeaturedWorks({ onStartPrompt }: { onStartPrompt: (mode: CreationMode, prompt: string) => void }) { const [filter, setFilter] = useState<"all" | CreationMode>("all"); const [limit, setLimit] = useState(12); const filtered = creationFeaturedWorks.filter((item) => filter === "all" || item.mode === filter); return (

{creationFeaturedWorks.length} 个创意起点 · 点击填入提示词,不自动生成

{(["all", "video", "image", "text"] as const).map((value) => ( ))}
{filtered.slice(0, limit).map((item, index) => ( ))}
); }