'use client'; import { Loader2 } from 'lucide-react'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { CodeBlock } from '@/components/ui/code-block'; import { Sheet, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, } from '@/components/ui/sheet'; import type { ConfigPreviewResult } from '@/lib/services/openflare'; interface PreviewSheetProps { open: boolean; onOpenChange: (open: boolean) => void; preview: ConfigPreviewResult | null; loading: boolean; error: string | null; publishing: boolean; canPublish: boolean; onPublish: () => void; } export function PreviewSheet({ open, onOpenChange, preview, loading, error, publishing, canPublish, onPublish, }: PreviewSheetProps) { return ( 发布预览 查看待发布配置的渲染结果与支持文件。
{loading ? (
正在加载预览...
) : error ? (

{error}

) : preview ? (
规则 {preview.route_count} 条 网站 {preview.website_count} 个 {preview.checksum.slice(0, 16)}...

主配置

路由配置

{preview.support_files.length > 0 ? (

支持文件 ({preview.support_files.length})

{preview.support_files.map((file) => (
{file.path}
))}
) : (

当前发布不需要额外支持文件。

)} {!canPublish ? (

当前规则与已激活版本一致,无法重复发布。

) : null}
) : null}
); }