/projects、/conversation、/initial、/removelens这四个的Header样式风格和返回按钮风格

This commit is contained in:
2026-06-30 10:08:54 +08:00
parent c05639fb47
commit 702a8b3a5d
12 changed files with 1139 additions and 199 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+36 -36
View File
@@ -1,37 +1,37 @@
<!doctype html> <!doctype html>
<html lang="zh-CN"> <html lang="zh-CN">
<head> <head>
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" /> <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet" /> <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap" rel="stylesheet" />
<title>民众智创</title> <title>民众智创</title>
<script> <script>
(function() { (function() {
var cached = localStorage.getItem('siteInfo'); var cached = localStorage.getItem('siteInfo');
if (cached) { if (cached) {
try { try {
var info = JSON.parse(cached); var info = JSON.parse(cached);
if (info.siteName) { if (info.siteName) {
document.title = info.siteName; document.title = info.siteName;
} }
if (info.siteLogo) { if (info.siteLogo) {
var link = document.querySelector('link[rel="icon"]'); var link = document.querySelector('link[rel="icon"]');
if (link) { if (link) {
link.href = info.siteLogo; link.href = info.siteLogo;
link.type = 'image/png'; link.type = 'image/png';
} }
} }
} catch (e) {} } catch (e) {}
} }
})(); })();
</script> </script>
<script type="module" crossorigin src="/assets/index-qlqE3vB0.js"></script> <script type="module" crossorigin src="/assets/index-Ducf_SGZ.js"></script>
<link rel="stylesheet" crossorigin href="/assets/index-D3IaMBsq.css"> <link rel="stylesheet" crossorigin href="/assets/index-D3IaMBsq.css">
</head> </head>
<body> <body>
<div id="root"></div> <div id="root"></div>
</body> </body>
</html> </html>
+26 -22
View File
@@ -951,31 +951,35 @@ const AIChatPage: React.FC = () => {
{/* 主内容区 */} {/* 主内容区 */}
<Layout style={{ display: 'flex', flex: 1, background: 'transparent' }}> <Layout style={{ display: 'flex', flex: 1, background: 'transparent' }}>
{/* 头部 - 显示对话标题和模型信息 */} {/* 头部 - 显示对话标题和模型信息 */}
<Header <div className="animate-fadeInUp" style={{
style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center',
borderRadius: '20px 20px 0 0', marginBottom: 24, padding: '16px 24px', borderRadius: 16,
background: 'rgba(255,255,255,0.6)',
background: 'rgba(255,255,255,0.1)', backdropFilter: 'blur(10px)',
backdropFilter: 'blur(20px)', border: '1px solid rgba(99, 102, 241, 0.08)',
borderBottom: '1px solid rgba(99, 102, 241, 0.08)', position: 'relative', overflow: 'hidden', flexWrap: 'wrap', gap: 12,
display: 'flex', }}>
alignItems: 'center', <div style={{ display: 'flex', alignItems: 'center', gap: 16 }}>
justifyContent: 'space-between', <div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} />
padding: '0 24px',
}}
>
<div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
<div style={{ width: 36, height: 36, borderRadius: 12, background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<RobotOutlined style={{ fontSize: 18, color: '#fff' }} />
</div>
<div> <div>
<Text strong style={{ fontSize: 16, background: 'linear-gradient(90deg, #6366f1, #8b5cf6)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent' }}> <h2 style={{
margin: 0,
</Text> fontSize: 18,
{/* <div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, #6366f1, #8b5cf6)', borderRadius: 1, marginTop: 4 }} /> */} fontWeight: 700,
background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)',
WebkitBackgroundClip: 'text',
WebkitTextFillColor: 'transparent',
backgroundClip: 'text'
}}>
AI创作
</h2>
<p style={{ fontSize: 13, color: '#64748b', margin: '4px 0 0 0' }}>
/
</p>
</div> </div>
<div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} />
</div> </div>
</Header> </div>
{/* 消息区域 */} {/* 消息区域 */}
<Content <Content
+23 -35
View File
@@ -1416,56 +1416,43 @@ const GeneratePage: React.FC = () => {
justifyContent: "space-between", justifyContent: "space-between",
alignItems: "center", alignItems: "center",
marginBottom: 24, marginBottom: 24,
padding: "20px 28px", padding: "16px 24px",
borderRadius: 16, borderRadius: 16,
background: "linear-gradient(135deg, #1e1b4b 0%, #312e81 100%)", background: "rgba(255,255,255,0.6)",
position: "relative", backdropFilter: "blur(10px)",
overflow: "hidden", border: "1px solid rgba(99, 102, 241, 0.08)",
}} }}
> >
<div <div style={{ display: "flex", alignItems: "center", gap: 16 }}>
style={{
position: "absolute",
right: -30,
bottom: -30,
width: 160,
height: 160,
borderRadius: "50%",
background: "rgba(255,255,255,0.05)",
}}
/>
<div
style={{
display: "flex",
alignItems: "center",
gap: 14,
position: "relative",
}}
>
<Button <Button
icon={<ArrowLeftOutlined />} icon={<ArrowLeftOutlined />}
onClick={() => navigate("/projects")} onClick={() => navigate("/projects")}
style={{ style={{
background: "rgba(255,255,255,0.1)",
border: "1px solid rgba(255,255,255,0.2)",
color: "#fff",
borderRadius: 10, borderRadius: 10,
fontSize: 13,
height: 32,
background: "rgba(99, 102, 241, 0.1)",
border: "1px solid rgba(99, 102, 241, 0.2)",
color: "#6366f1",
}} }}
/> >
</Button>
<div style={{ width: 32, height: 2, background: "linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)", borderRadius: 1 }} />
<div> <div>
<div style={{ display: "flex", alignItems: "center", gap: 10 }}> <div style={{ display: "flex", alignItems: "center", gap: 10 }}>
<Typography.Title <Typography.Title
level={4} level={4}
style={{ margin: 0, color: "#fff", fontWeight: 700 }} style={{ margin: 0, fontSize: 16, fontWeight: 700, background: "linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)", WebkitBackgroundClip: "text", WebkitTextFillColor: "transparent", backgroundClip: "text" }}
> >
{projectName} {projectName}
</Typography.Title> </Typography.Title>
{project && ( {project && (
<Tag <Tag
style={{ style={{
background: "rgba(255,255,255,0.12)", background: "rgba(99, 102, 241, 0.08)",
border: "1px solid rgba(255,255,255,0.2)", border: "1px solid rgba(99, 102, 241, 0.15)",
color: "rgba(255,255,255,0.8)", color: "#6366f1",
borderRadius: 6, borderRadius: 6,
}} }}
> >
@@ -1474,17 +1461,18 @@ const GeneratePage: React.FC = () => {
)} )}
</div> </div>
<Typography.Text <Typography.Text
style={{ color: "rgba(255,255,255,0.5)", fontSize: 13 }} style={{ color: "#64748b", fontSize: 13 }}
> >
AI优化 AI优化
</Typography.Text> </Typography.Text>
</div> </div>
<div style={{ width: 32, height: 2, background: "linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)", borderRadius: 1 }} />
</div> </div>
<Tag <Tag
style={{ style={{
background: "rgba(255,255,255,0.1)", background: "rgba(99, 102, 241, 0.08)",
border: "1px solid rgba(255,255,255,0.2)", border: "1px solid rgba(99, 102, 241, 0.15)",
color: "#fff", color: "#6366f1",
borderRadius: 20, borderRadius: 20,
fontSize: 13, fontSize: 13,
padding: "4px 14px", padding: "4px 14px",
+26 -11
View File
@@ -450,15 +450,15 @@ function InitialInfo() {
<div style={{ borderBottom: '1px solid rgba(99, 102, 241, 0.08)', width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '16px 24px', background: 'rgba(255,255,255,0.6)', backdropFilter: 'blur(10px)', boxSizing: 'border-box' }}> <div style={{ borderBottom: '1px solid rgba(99, 102, 241, 0.08)', width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '16px 24px', background: 'rgba(255,255,255,0.6)', backdropFilter: 'blur(10px)', boxSizing: 'border-box' }}>
<Button <Button
type="text"
icon={<ArrowLeftOutlined />} icon={<ArrowLeftOutlined />}
onClick={() => navigate(-1)} onClick={() => navigate(-1)}
style={{ style={{
color: '#64748b',
borderRadius: 10, borderRadius: 10,
fontSize: 13, fontSize: 13,
height: 32, height: 32,
transition: 'all 0.25s cubic-bezier(0.4, 0, 0.2, 1)', background: 'rgba(99, 102, 241, 0.1)',
border: '1px solid rgba(99, 102, 241, 0.2)',
color: '#6366f1',
}} }}
> >
@@ -523,6 +523,7 @@ function InitialInfo() {
</div> </div>
</div> </div>
</div> </div>
<div style={{ margin: '20px 0', height: 1, background: 'linear-gradient(90deg, transparent, rgba(99, 102, 241, 0.15), transparent)', borderRadius: 0.5 }} />
{taskDetail?.finalImageUrl && ( {taskDetail?.finalImageUrl && (
<div style={{ marginTop: 16 }}> <div style={{ marginTop: 16 }}>
<div> <div>
@@ -1229,9 +1230,9 @@ function InitialInfo() {
{/* 创作记录弹窗 */} {/* 创作记录弹窗 */}
<Modal <Modal
title={ title={
<div style={{ display: 'flex', alignItems: 'center', gap: 10 }}> <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>
<div style={{ width: 4, height: 18, background: 'linear-gradient(180deg, #6366f1 0%, #8b5cf6 100%)', borderRadius: 2 }} /> <div style={{ width: 4, height: 20, background: 'linear-gradient(180deg, #6366f1 0%, #8b5cf6 100%)', borderRadius: 2 }} />
<span style={{ fontSize: 15, fontWeight: 700, background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' }}> <span style={{ fontSize: 16, fontWeight: 700, background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' }}>
</span> </span>
</div> </div>
@@ -1240,22 +1241,36 @@ function InitialInfo() {
onCancel={() => setIsModalOpen(false)} onCancel={() => setIsModalOpen(false)}
width={850} width={850}
footer={null} footer={null}
style={{ borderRadius: 16 }} style={{ borderRadius: 20 }}
styles={{ styles={{
body: { height: 580, display: 'flex', flexDirection: 'column', padding: 0 },
header: { background: 'rgba(255,255,255,0.6)', backdropFilter: 'blur(10px)', borderBottom: '1px solid rgba(99, 102, 241, 0.08)', padding: '16px 24px' }, header: { background: 'rgba(255,255,255,0.6)', backdropFilter: 'blur(10px)', borderBottom: '1px solid rgba(99, 102, 241, 0.08)', padding: '16px 24px' },
body: { background: 'linear-gradient(135deg, #f8fafc 0%, #eef2ff 50%, #f0f9ff 100%)', },
}} }}
> >
{/* 搜索区域 */} {/* 搜索区域 */}
<div style={{ display: 'flex', justifyContent: 'flex-end', marginBottom: 16 }}> <div style={{ display: 'flex', justifyContent: 'flex-end', margin: '16px 24px', flexShrink: 0 }}>
<Input <Input
placeholder="搜索产品名称" placeholder="搜索产品名称"
value={searchKeyword} value={searchKeyword}
onChange={(e) => setSearchKeyword(e.target.value)} onChange={(e) => setSearchKeyword(e.target.value)}
onPressEnter={handleSearch} onPressEnter={handleSearch}
style={{ width: 200, borderRadius: 8, marginRight: 8, border: '1px solid rgba(99, 102, 241, 0.15)', background: 'rgba(255,255,255,0.8)' }} style={{
width: 220,
borderRadius: 10,
marginRight: 10,
border: '1px solid rgba(99, 102, 241, 0.15)',
background: 'rgba(255,255,255,0.8)',
}}
/> />
<Button type="primary" onClick={handleSearch} style={{ borderRadius: 8, background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', border: 'none', boxShadow: '0 4px 12px rgba(99, 102, 241, 0.3)' }}> <Button
type="primary"
onClick={handleSearch}
style={{
borderRadius: 10,
background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)',
border: 'none',
}}
>
</Button> </Button>
</div> </div>
+25 -23
View File
@@ -440,30 +440,32 @@ const GenerateConver: React.FC = () => {
{/* 顶部标题栏 */} {/* 顶部标题栏 */}
<Header <div className="animate-fadeInUp" style={{
style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center',
background: 'rgba(255,255,255,0.6)', marginBottom: 24, padding: '16px 24px', borderRadius: 16,
backdropFilter: 'blur(10px)', background: 'rgba(255,255,255,0.6)',
padding: '16px 24px', backdropFilter: 'blur(10px)',
borderBottom: '1px solid rgba(99, 102, 241, 0.08)', border: '1px solid rgba(99, 102, 241, 0.08)',
display: 'flex', position: 'relative', overflow: 'hidden', flexWrap: 'wrap', gap: 12,
alignItems: 'center', }}>
justifyContent: 'space-between',
}}
>
<div style={{ display: 'flex', alignItems: 'center', gap: 16 }}> <div style={{ display: 'flex', alignItems: 'center', gap: 16 }}>
<div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} /> <div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} />
<h2 style={{ <div>
margin: 0, <h2 style={{
fontSize: 18, margin: 0,
fontWeight: 700, fontSize: 18,
background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', fontWeight: 700,
WebkitBackgroundClip: 'text', background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)',
WebkitTextFillColor: 'transparent', WebkitBackgroundClip: 'text',
backgroundClip: 'text' WebkitTextFillColor: 'transparent',
}}> backgroundClip: 'text'
}}>
</h2>
</h2>
<p style={{ fontSize: 13, color: '#64748b', margin: '4px 0 0 0' }}>
</p>
</div>
<div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} /> <div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} />
</div> </div>
<Button <Button
@@ -481,7 +483,7 @@ const GenerateConver: React.FC = () => {
> >
</Button> </Button>
</Header> </div>
{/* 左侧预览区域 */} {/* 左侧预览区域 */}
<div style={{ flex: 1, background: 'rgba(248, 250, 252, 0.5)', borderRight: '1px solid rgba(99, 102, 241, 0.08)', overflowY: 'auto' }}> <div style={{ flex: 1, background: 'rgba(248, 250, 252, 0.5)', borderRight: '1px solid rgba(99, 102, 241, 0.08)', overflowY: 'auto' }}>
+43 -17
View File
@@ -15,7 +15,7 @@ import {
TagOutlined, TeamOutlined, ToolOutlined, TruckOutlined, VideoCameraOutlined, TagOutlined, TeamOutlined, ToolOutlined, TruckOutlined, VideoCameraOutlined,
WalletOutlined, BankOutlined, BuildOutlined, ExperimentOutlined, HighlightOutlined, WalletOutlined, BankOutlined, BuildOutlined, ExperimentOutlined, HighlightOutlined,
IdcardOutlined, MedicineBoxOutlined, ReadOutlined, RestOutlined, SketchOutlined, IdcardOutlined, MedicineBoxOutlined, ReadOutlined, RestOutlined, SketchOutlined,
SolutionOutlined, SolutionOutlined, FileTextOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import { useNavigate } from 'react-router-dom'; import { useNavigate } from 'react-router-dom';
import { useAppStore } from '../store/useAppStore'; import { useAppStore } from '../store/useAppStore';
@@ -109,25 +109,51 @@ const ProjectsPage: React.FC = () => {
{/* Header banner */} {/* Header banner */}
<div className="animate-fadeInUp" style={{ <div className="animate-fadeInUp" style={{
display: 'flex', justifyContent: 'space-between', alignItems: 'center', display: 'flex', justifyContent: 'space-between', alignItems: 'center',
marginBottom: 24, padding: '22px 24px', borderRadius: 16, marginBottom: 24, padding: '16px 24px', borderRadius: 16,
background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', background: 'rgba(255,255,255,0.6)',
backdropFilter: 'blur(10px)',
border: '1px solid rgba(99, 102, 241, 0.08)',
position: 'relative', overflow: 'hidden', flexWrap: 'wrap', gap: 12, position: 'relative', overflow: 'hidden', flexWrap: 'wrap', gap: 12,
}}> }}>
<div style={{ position: 'absolute', right: -20, top: -20, width: 200, height: 200, borderRadius: '50%', background: 'rgba(255,255,255,0.08)' }} /> <div style={{ display: 'flex', alignItems: 'center', gap: 16 }}>
<div style={{ position: 'relative', zIndex: 1 }}> <div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} />
<Typography.Title level={3} style={{ margin: '0 0 4px', color: '#fff', fontWeight: 700 }}></Typography.Title> <div>
<Typography.Text style={{ color: 'rgba(255,255,255,0.7)', fontSize: 14 }}> <h2 style={{
{projects.length} · margin: 0,
</Typography.Text> fontSize: 18,
fontWeight: 700,
background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)',
WebkitBackgroundClip: 'text',
WebkitTextFillColor: 'transparent',
backgroundClip: 'text'
}}>
</h2>
<p style={{ fontSize: 13, color: '#64748b', margin: '4px 0 0 0' }}>
{projects.length} ·
</p>
</div>
<div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} />
</div>
<div style={{ display: 'flex', gap: 12 }}>
<Button icon={<FileTextOutlined />} onClick={() => navigate('/records')} size="large" style={{
background: 'rgba(99, 102, 241, 0.1)',
border: '1px solid rgba(99, 102, 241, 0.2)',
color: '#6366f1',
fontWeight: 600,
borderRadius: 10,
height: 42,
}}></Button>
<Button icon={<PlusOutlined />} onClick={() => setModalOpen(true)} size="large" style={{
background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)',
border: 'none',
color: '#fff',
fontWeight: 600,
borderRadius: 10,
height: 42,
boxShadow: '0 4px 16px rgba(99, 102, 241, 0.35)',
}}></Button>
</div> </div>
<Button icon={<PlusOutlined />} onClick={() => setModalOpen(true)} size="large" style={{
background: 'rgba(255,255,255,0.15)', border: '1px solid rgba(255,255,255,0.3)',
color: '#fff', fontWeight: 600, backdropFilter: 'blur(10px)', borderRadius: 10, height: 42,
}}></Button>
<Button icon={<PlusOutlined />} onClick={() => navigate('/records')} size="large" style={{
background: 'rgba(255,255,255,0.15)', border: '1px solid rgba(255,255,255,0.3)',
color: '#fff', fontWeight: 600, backdropFilter: 'blur(10px)', borderRadius: 10, height: 42,
}}></Button>
</div> </div>
{projects.length === 0 ? ( {projects.length === 0 ? (
+28 -4
View File
@@ -27,7 +27,9 @@ import {
DownloadOutlined, DownloadOutlined,
RocketOutlined, RocketOutlined,
PictureOutlined, PictureOutlined,
ArrowLeftOutlined,
} from '@ant-design/icons'; } from '@ant-design/icons';
import { useNavigate } from 'react-router-dom';
import { useAppStore } from '../store/useAppStore'; import { useAppStore } from '../store/useAppStore';
import type { GenerationStatus, AspectRatio, Resolution } from '../types'; import type { GenerationStatus, AspectRatio, Resolution } from '../types';
import { formatDate } from '../utils/formatDate'; import { formatDate } from '../utils/formatDate';
@@ -41,6 +43,7 @@ const statusConfig: Record<GenerationStatus, { color: string; text: string; icon
}; };
const RecordsPage: React.FC = () => { const RecordsPage: React.FC = () => {
const navigate = useNavigate();
const { records, projects, fetchRecords, fetchProjects, generateVideo } = useAppStore(); const { records, projects, fetchRecords, fetchProjects, generateVideo } = useAppStore();
const recordItems = records.items; const recordItems = records.items;
const [currentPage, setCurrentPage] = useState(1); const [currentPage, setCurrentPage] = useState(1);
@@ -113,10 +116,31 @@ const RecordsPage: React.FC = () => {
return ( return (
<div> <div>
<div style={{ marginBottom: 20 }}> <div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: 20, padding: '16px 24px', borderRadius: 16, background: 'rgba(255,255,255,0.6)', backdropFilter: 'blur(10px)', border: '1px solid rgba(99, 102, 241, 0.08)' }}>
<Typography.Text style={{ fontSize: 14, color: '#94a3b8' }}> <div style={{ display: 'flex', alignItems: 'center', gap: 16 }}>
<Button
</Typography.Text> icon={<ArrowLeftOutlined />}
onClick={() => navigate('/projects')}
style={{
borderRadius: 10,
fontSize: 13,
height: 32,
background: 'rgba(99, 102, 241, 0.1)',
border: '1px solid rgba(99, 102, 241, 0.2)',
color: '#6366f1',
}}
>
</Button>
<div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} />
<div>
<Typography.Title level={2} style={{ margin: 0, fontSize: 16, fontWeight: 700, background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', backgroundClip: 'text' }}></Typography.Title>
<Typography.Text style={{ fontSize: 13, color: '#64748b' }}>
</Typography.Text>
</div>
<div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} />
</div>
</div> </div>
{/* Filters */} {/* Filters */}
+23 -25
View File
@@ -589,34 +589,32 @@ function RemoveInfo() {
<div style={{ position: 'absolute', bottom: -100, left: -100, width: 300, height: 300, background: 'radial-gradient(circle, rgba(167,139,250,0.08) 0%, transparent 70%)', borderRadius: '50%' }} /> <div style={{ position: 'absolute', bottom: -100, left: -100, width: 300, height: 300, background: 'radial-gradient(circle, rgba(167,139,250,0.08) 0%, transparent 70%)', borderRadius: '50%' }} />
{/* 标题栏 */} {/* 标题栏 */}
<div style={{ padding: '20px 32px', display: 'flex', alignItems: 'center', gap: 16, position: 'relative', zIndex: 10 }}> <div style={{ padding: '16px 24px', display: 'flex', alignItems: 'center', justifyContent: 'space-between', borderRadius: 16, background: 'rgba(255,255,255,0.6)', backdropFilter: 'blur(10px)', border: '1px solid rgba(99, 102, 241, 0.08)', position: 'relative', zIndex: 10 }}>
<Button <div style={{ display: 'flex', alignItems: 'center', gap: 16 }}>
type="text" <Button
icon={<ArrowLeftOutlined />} icon={<ArrowLeftOutlined />}
onClick={() => navigate(-1)} onClick={() => navigate(-1)}
style={{ style={{
fontSize: 16, borderRadius: 10,
color: '#6366f1', fontSize: 13,
background: 'rgba(99, 102, 241, 0.1)', height: 32,
borderRadius: 12, background: 'rgba(99, 102, 241, 0.1)',
padding: '8px 16px', border: '1px solid rgba(99, 102, 241, 0.2)',
transition: 'all 0.2s ease', color: '#6366f1',
}} }}
onMouseEnter={(e) => { >
e.currentTarget.style.background = 'rgba(99, 102, 241, 0.15)';
}} </Button>
onMouseLeave={(e) => { <div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} />
e.currentTarget.style.background = 'rgba(99, 102, 241, 0.1)'; <div>
}} <h1 style={{ fontSize: 18, fontWeight: 700, background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', margin: 0 }}>
/>
<div style={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
<div style={{ display: 'flex', alignItems: 'center', gap: 16 }}>
<div style={{ width: 40, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} />
<h1 style={{ fontSize: 22, fontWeight: 700, background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', WebkitBackgroundClip: 'text', WebkitTextFillColor: 'transparent', margin: 0 }}>
AI视频拆镜工作台 AI视频拆镜工作台
</h1> </h1>
<div style={{ width: 40, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} /> <p style={{ fontSize: 13, color: '#64748b', margin: '4px 0 0 0' }}>
仿
</p>
</div> </div>
<div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} />
</div> </div>
</div> </div>
+22 -23
View File
@@ -167,49 +167,48 @@ export default function VideoFrameExtractor() {
> >
<div style={{ maxWidth: 1200, margin: '50px auto', position: 'relative', zIndex: 10 }}> <div style={{ maxWidth: 1200, margin: '0 auto', position: 'relative', zIndex: 10 }}>
<div style={{ marginBottom: 50, height: 160, display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}> <div className="animate-fadeInUp" style={{
display: 'flex', justifyContent: 'space-between', alignItems: 'center',
marginBottom: 24, padding: '16px 24px', borderRadius: 16,
background: 'rgba(255,255,255,0.6)',
backdropFilter: 'blur(10px)',
border: '1px solid rgba(99, 102, 241, 0.08)',
position: 'relative', overflow: 'hidden', flexWrap: 'wrap', gap: 12,
}}>
<div style={{ display: 'flex', alignItems: 'center', gap: 16 }}> <div style={{ display: 'flex', alignItems: 'center', gap: 16 }}>
<div style={{ width: 40, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} /> <div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #6366f1, #8b5cf6, transparent)', borderRadius: 1 }} />
<div> <div>
<h1 style={{ <h2 style={{
fontSize: 24,
fontWeight: 700,
margin: 0, margin: 0,
fontSize: 18,
fontWeight: 700,
background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)', background: 'linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%)',
WebkitBackgroundClip: 'text', WebkitBackgroundClip: 'text',
WebkitTextFillColor: 'transparent', WebkitTextFillColor: 'transparent',
backgroundClip: 'text' backgroundClip: 'text'
}}> }}>
AI视频拆镜工作台 AI视频拆镜工作台
</h1> </h2>
<p style={{ fontSize: 13, color: '#64748b', margin: '4px 0 0 0' }}> <p style={{ fontSize: 13, color: '#64748b', margin: '4px 0 0 0' }}>
仿 仿
</p> </p>
</div> </div>
<div style={{ width: 40, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} /> <div style={{ width: 32, height: 2, background: 'linear-gradient(90deg, transparent, #8b5cf6, #6366f1, transparent)', borderRadius: 1 }} />
</div> </div>
<Button <Button
type="text" type="primary"
ghost
icon={<FileTextOutlined />} icon={<FileTextOutlined />}
onClick={handleOpenModal} onClick={handleOpenModal}
style={{ style={{
fontSize: 14, borderRadius: 10,
color: '#6366f1', padding: '6px 16px',
fontSize: 13,
background: 'rgba(99, 102, 241, 0.1)', background: 'rgba(99, 102, 241, 0.1)',
borderRadius: 12, borderColor: 'rgba(99, 102, 241, 0.2)',
padding: '10px 20px', color: '#6366f1',
display: 'flex',
alignItems: 'center',
gap: 8,
transition: 'all 0.2s ease',
}}
onMouseEnter={(e) => {
e.currentTarget.style.background = 'rgba(99, 102, 241, 0.15)';
}}
onMouseLeave={(e) => {
e.currentTarget.style.background = 'rgba(99, 102, 241, 0.1)';
}} }}
> >
+3 -3
View File
@@ -453,15 +453,15 @@ function InitialInfo() {
> >
<div style={{ borderBottom: '1px solid rgba(99, 102, 241, 0.08)', width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '16px 24px', background: 'rgba(255,255,255,0.6)', backdropFilter: 'blur(10px)', boxSizing: 'border-box' }}> <div style={{ borderBottom: '1px solid rgba(99, 102, 241, 0.08)', width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'space-between', padding: '16px 24px', background: 'rgba(255,255,255,0.6)', backdropFilter: 'blur(10px)', boxSizing: 'border-box' }}>
<Button <Button
type="text"
icon={<ArrowLeftOutlined />} icon={<ArrowLeftOutlined />}
onClick={() => window.history.back()} onClick={() => window.history.back()}
style={{ style={{
color: '#64748b',
borderRadius: 10, borderRadius: 10,
fontSize: 13, fontSize: 13,
height: 32, height: 32,
transition: 'all 0.25s cubic-bezier(0.4, 0, 0.2, 1)', background: 'rgba(99, 102, 241, 0.1)',
border: '1px solid rgba(99, 102, 241, 0.2)',
color: '#6366f1',
}} }}
> >