'use client'; import { useRef, useState } from 'react'; import Navigation from '../Navigation'; import { parseErrorResponse } from '../../lib/error-handler'; interface ImportResult { markdown: string; title: string; documentType: 'pdf'; metadata?: { pageCount?: number; producer?: string; creationDate?: string; characterCount?: number; }; } export default function ImportPage() { const [selectedFile, setSelectedFile] = useState(null); const [isDragging, setIsDragging] = useState(false); const [isLoading, setIsLoading] = useState(false); const [error, setError] = useState(null); const [result, setResult] = useState(null); const fileInputRef = useRef(null); const handleFileSelect = (file: File) => { setError(null); setResult(null); if (!file.name.toLowerCase().endsWith('.pdf')) { setError('Endast PDF-filer stöds för tillfället.'); return; } setSelectedFile(file); }; const handleDragOver = (e: React.DragEvent) => { e.preventDefault(); setIsDragging(true); }; const handleDragLeave = () => setIsDragging(false); const handleDrop = (e: React.DragEvent) => { e.preventDefault(); setIsDragging(false); const file = e.dataTransfer.files[0]; if (file) handleFileSelect(file); }; const handleFileInputChange = (e: React.ChangeEvent) => { const file = e.target.files?.[0]; if (file) handleFileSelect(file); }; const handleImport = async (e: React.FormEvent) => { e.preventDefault(); if (!selectedFile) return; setError(null); setResult(null); setIsLoading(true); try { const formData = new FormData(); formData.append('file', selectedFile); const res = await fetch('/api/document-import-proxy', { method: 'POST', body: formData, }); if (!res.ok) { const errorMessage = await parseErrorResponse(res); setError(errorMessage || 'Importen misslyckades.'); return; } const data: ImportResult = await res.json(); setResult(data); } catch (err) { const message = err instanceof Error ? err.message : 'Något oväntat gick fel'; setError(`Fel: ${message}`); } finally { setIsLoading(false); } }; const copyToClipboard = () => { if (result?.markdown) { navigator.clipboard.writeText(result.markdown); } }; return (

Importera dokument

Ladda upp en PDF-fil och konvertera den till Markdown-format.

{/* UPLOAD-SEKTION */}
fileInputRef.current?.click()} style={{ border: `2px dashed ${isDragging ? '#3b82f6' : selectedFile ? '#10b981' : '#d1d5db'}`, borderRadius: '8px', padding: '2.5rem 1.5rem', textAlign: 'center', cursor: 'pointer', background: isDragging ? '#eff6ff' : selectedFile ? '#f0fdf4' : '#f9fafb', transition: 'all 0.15s ease', marginBottom: '1rem', }} >
{selectedFile ? '📄' : '⬆️'}
{selectedFile ? ( <>

{selectedFile.name}

{(selectedFile.size / 1024 / 1024).toFixed(2)} MB — Klicka för att byta fil

) : ( <>

Dra och släpp din PDF här

eller klicka för att välja fil (max 50 MB)

)}
{error && (

⚠️ {error}

)}
{/* RESULT */} {result && (

✓ {result.title}

{result.metadata && (

{result.metadata.pageCount} sidor {result.metadata.characterCount ? ` · ${result.metadata.characterCount.toLocaleString('sv')} tecken` : ''}

)}
              {result.markdown}
            
)}
); }