'use client'; import { Loader2 } from 'lucide-react'; import { useTranslations } from 'next-intl'; 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) { const t = useTranslations('configVersions'); return ( {t('previewTitle')} {t('previewDesc')}
{loading ? (
{t('loadingPreview')}
) : error ? (

{error}

) : preview ? (
{t('routeCount', { count: preview.route_count })} {t('websiteCount', { count: preview.website_count })} {preview.checksum.slice(0, 16)}...

{t('mainConfig')}

{t('routeConfig')}

{preview.support_files.length > 0 ? (

{t('supportFiles', { count: preview.support_files.length, })}

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

{t('noSupportFiles')}

)} {!canPublish ? (

{t('noChanges')}

) : null}
) : null}
); }