'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 canManageCustomTemplates: boolean onRequestUpgrade: () => void 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, canManageCustomTemplates, onRequestUpgrade, onCreate, onPreview, onActivate, onDeactivate, onEdit, onDuplicate, onDelete, }: CustomTemplateSectionProps) { const styles = useThemeStyles() const runTemplateAction = (action: () => void) => { if (!canManageCustomTemplates) { onRequestUpgrade() return } action() } return (

自定义模板

{!canManageCustomTemplates && ( 授权受限 )}

{canManageCustomTemplates ? '这里列出你自己创建的模板,可继续编辑、复制或删除' : '当前许可证未包含自定义模板功能,请联系管理员处理授权'}

{loading ? (
加载中...
) : error ? (
{error}
) : (
{templates.length === 0 ? (
暂无自定义模板。
) : filteredTemplates.length === 0 ? (
未找到匹配的模板名称,请调整搜索关键词。
) : ( filteredTemplates.map((tpl) => (
onPreview(tpl)} className="group relative cursor-pointer rounded-lg border border-slate-200 bg-white px-4 py-3 transition-colors hover:border-slate-300 hover:bg-slate-50 dark:border-slate-700 dark:bg-slate-900 dark:hover:border-slate-600 dark:hover:bg-slate-800/70" >

{tpl.name}

{tpl.description && (

{tpl.description}

)}
{tpl.statusLabel} {tpl.updatedLabel} · 版本 {tpl.version} {tpl.status === 'active' ? ( ) : ( )}
)) )}
)}
) }