diff --git a/src/app/convert/page.tsx b/src/app/convert/page.tsx index 52baf8a..382fb7b 100644 --- a/src/app/convert/page.tsx +++ b/src/app/convert/page.tsx @@ -4,13 +4,16 @@ import { useState } from 'react'; import { AnimatePresence, motion } from 'framer-motion'; import Link from 'next/link'; import { DropZone } from '@/components/DropZone'; -import { FileCard } from '@/components/FileCard'; +import { FileRow } from '@/components/FileRow'; import { PreviewModal } from '@/components/PreviewModal'; import { useFileUpload } from '@/hooks/useFileUpload'; import { useConversion } from '@/hooks/useConversion'; import { formatFileSize } from '@/lib/utils'; import { UploadedFile } from '@/types'; +/* Number of ghost rows to show below real files */ +const MIN_VISIBLE_ROWS = 8; + export default function ConvertPage() { const { files, @@ -43,6 +46,7 @@ export default function ConvertPage() { ).length; const completedCount = files.filter((f) => f.status === 'done').length; const totalSize = files.reduce((acc, f) => acc + f.size, 0); + const ghostRowCount = Math.max(0, MIN_VISIBLE_ROWS - files.length); return (
- Transmute
-
-
- v1.0 / client-side
-
-
+ Transmute
+ {'\u203A'}
+ Converter
+ + 100% client-side — files never leave your browser +
++
{isDragging ? 'Your files are ready for transformation' : 'Images, documents, audio, video, data \u2014 all formats welcome'}
+- 100% client-side — your files never leave your browser -
-+ 70+ formats — 100% client-side +
- {truncateFilename(file.name)} -
-- {formatFileSize(file.size)} -
-- {file.error} -
- )} - - {/* Format selector — styled like a form field on paper */} - {file.availableFormats.length > 0 && file.status !== 'done' && ( -- Format not supported for conversion -
- )} -{file.error}
+ )} +