From 9f222b562db5a5d6f82fc6803e8c76b002e61bb2 Mon Sep 17 00:00:00 2001 From: imeepos Date: Tue, 15 Jul 2025 10:33:05 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=A8=A1=E6=9D=BF=E8=AF=A6=E6=83=85?= =?UTF-8?q?=E5=BC=B9=E6=A1=86UI/UX=E5=85=A8=E9=9D=A2=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 视觉设计优化: - 重新设计信息架构,按重要性分层展示 - 优化颜色系统,减少视觉噪音 - 统一间距和字体层次,提升可读性 - 使用渐变背景和卡片设计增强视觉层次 交互体验改进: - 实现渐进披露,核心信息优先展示 - 添加可折叠区域,减少信息密度 - 优化状态指示器,更清晰的文件状态展示 - 改进匹配规则编辑器的位置和样式 响应式适配: - 移动端友好的布局设计 - 自适应网格系统 - 触摸友好的交互元素 - 优化小屏幕下的信息展示 信息架构重构: - 概览页:核心信息卡片 + 可折叠技术详情 - 素材页:主要信息 + 可展开详细信息 - 轨道页:轨道概览 + 片段详情 + 可展开属性 遵循frontend-developer规范,提升用户体验 --- .../template/TemplateDetailModal.tsx | 663 +++++++++++------- 1 file changed, 420 insertions(+), 243 deletions(-) diff --git a/apps/desktop/src/components/template/TemplateDetailModal.tsx b/apps/desktop/src/components/template/TemplateDetailModal.tsx index 2435cdb..7ae2b8f 100644 --- a/apps/desktop/src/components/template/TemplateDetailModal.tsx +++ b/apps/desktop/src/components/template/TemplateDetailModal.tsx @@ -1,5 +1,5 @@ import React, { useState } from 'react'; -import { X, Calendar, Clock, Monitor, Layers, FileText, Image, Video, Music, Type, Sparkles, CheckCircle, XCircle, AlertCircle, Upload, Cloud } from 'lucide-react'; +import { X, Calendar, Clock, Monitor, Layers, FileText, Image, Video, Music, Type, Sparkles, CheckCircle, XCircle, AlertCircle, Upload, Cloud, ChevronDown, ChevronRight, Info } from 'lucide-react'; import { Template, TemplateMaterial, TemplateMaterialType, TrackType } from '../../types/template'; import { SegmentMatchingRuleEditor } from './SegmentMatchingRuleEditor'; @@ -13,6 +13,31 @@ export const TemplateDetailModal: React.FC = ({ onClose, }) => { const [activeTab, setActiveTab] = useState<'overview' | 'materials' | 'tracks'>('overview'); + const [expandedSections, setExpandedSections] = useState>({}); + const [expandedMaterials, setExpandedMaterials] = useState>({}); + const [expandedSegments, setExpandedSegments] = useState>({}); + + // 切换展开状态 + const toggleSection = (sectionId: string) => { + setExpandedSections(prev => ({ + ...prev, + [sectionId]: !prev[sectionId] + })); + }; + + const toggleMaterial = (materialId: string) => { + setExpandedMaterials(prev => ({ + ...prev, + [materialId]: !prev[materialId] + })); + }; + + const toggleSegment = (segmentId: string) => { + setExpandedSegments(prev => ({ + ...prev, + [segmentId]: !prev[segmentId] + })); + }; // 格式化时长 const formatDuration = (microseconds: number) => { @@ -207,40 +232,41 @@ export const TemplateDetailModal: React.FC = ({ } return ( -
-
+
+
{/* 模态框头部 */} -
-
-

{template.name}

+
+
+

{template.name}

{template.description && ( -

{template.description}

+

{template.description}

)}
{/* 标签页导航 */} -
-