import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useQuery } from '@tanstack/react-query'; import { Loader2, Plus, Printer, ExternalLink, AlertTriangle, Info } from 'lucide-react'; import { multiVirtualPrinterApi } from '../api/client'; import { Card, CardContent } from './Card'; import { Button } from './Button'; import { VirtualPrinterCard } from './VirtualPrinterCard'; import { VirtualPrinterAddDialog } from './VirtualPrinterAddDialog'; export function VirtualPrinterList() { const { t } = useTranslation(); const [showAddDialog, setShowAddDialog] = useState(false); const { data, isLoading } = useQuery({ queryKey: ['virtual-printers'], queryFn: multiVirtualPrinterApi.list, refetchInterval: 10000, }); if (isLoading) { return ( ); } const printers = data?.printers || []; const models = data?.models || {}; return (
{/* Top row - Setup Required (25%) + How it works (75%) */}

{t('virtualPrinter.setupRequired.title')}

{t('virtualPrinter.setupRequired.description')}

{t('virtualPrinter.setupRequired.readGuide')}

{t('virtualPrinter.howItWorks.title')}

{t('virtualPrinter.howItWorks.intro')}

{t('virtualPrinter.mode.archive')}

{t('virtualPrinter.howItWorks.archiveDesc')}

{t('virtualPrinter.mode.review')}

{t('virtualPrinter.howItWorks.reviewDesc')}

{t('virtualPrinter.mode.queue')}

{t('virtualPrinter.howItWorks.queueDesc')}

{t('virtualPrinter.mode.proxy')}

{t('virtualPrinter.howItWorks.proxyDesc')}

{/* Header with add button */}

{t('virtualPrinter.list.title')}

({printers.length})
{/* Printer cards - 3 column grid */} {printers.length === 0 ? (

{t('virtualPrinter.list.empty')}

) : (
{printers.map((printer) => ( ))}
)} {showAddDialog && ( setShowAddDialog(false)} /> )}
); }