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}

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