'use client' import { useThemeStyles, cn } from '@/lib/ui-styles' import type { DisplayTemplate } from './types' interface CustomTemplateSectionProps { loading: boolean error: string | null templates: DisplayTemplate[] filteredTemplates: DisplayTemplate[] deletingId: string | null onCreate: () => void onPreview: (template: DisplayTemplate) => void onActivate: (id: string) => void onDeactivate: (id: string) => void onEdit: (template: DisplayTemplate) => void onDuplicate: (template: DisplayTemplate) => void onDelete: (id: string) => void } export default function CustomTemplateSection({ loading, error, templates, filteredTemplates, deletingId, onCreate, onPreview, onActivate, onDeactivate, onEdit, onDuplicate, onDelete, }: CustomTemplateSectionProps) { const styles = useThemeStyles() return (

自定义模板

这里列出你自己创建的模板,可继续编辑、复制或删除

这些模板才会被真实上传面板使用,确保状态为“启用”后用户才能看到。

{loading ? (
加载中...
) : error ? (
{error}
) : (
{templates.length === 0 ? (
暂无自定义模板,点击上方卡片开始创建。
) : filteredTemplates.length === 0 ? (
未找到匹配的模板名称,请调整搜索关键词。
) : ( filteredTemplates.map((tpl) => (
onPreview(tpl)} className={cn(styles.cardStyles.hover, 'group relative overflow-hidden cursor-pointer')} >

{tpl.name}

{tpl.description && (

{tpl.description}

)}
{tpl.statusLabel} 预览
{tpl.status === 'active' ? ( ) : ( )} {tpl.updatedLabel} · v{tpl.version}
)) )}
)}
) }