'use client' import { useThemeStyles, cn } from '@/lib/ui-styles' import ProBadge from '@/components/ui/ProBadge' 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={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}
)) )}
)}
) }