From 04454b4a429311de27f141b3dd1c63bbe7596eb6 Mon Sep 17 00:00:00 2001 From: noah Date: Thu, 16 Apr 2026 15:47:20 +0200 Subject: [PATCH] feat: redesign drop zone as full-bleed poster typography Replace card/icon layout with a massive stacked serif headline that fills the window. Words animate in individually and shift pink on drag. Browse button is small and understated below the type. Co-Authored-By: Claude Sonnet 4.6 --- src/components/DropZone.tsx | 156 ++++++++++-------------------------- 1 file changed, 43 insertions(+), 113 deletions(-) diff --git a/src/components/DropZone.tsx b/src/components/DropZone.tsx index e99df23..bb541b8 100644 --- a/src/components/DropZone.tsx +++ b/src/components/DropZone.tsx @@ -15,16 +15,7 @@ interface DropZoneProps { onBrowse: () => void; } -const FORMAT_PILLS = [ - { label: "IMG", color: "bg-pink/10 text-pink" }, - { label: "PDF", color: "bg-orange/10 text-orange" }, - { label: "MP4", color: "bg-purple/10 text-purple" }, - { label: "MP3", color: "bg-blue/10 text-blue" }, - { label: "SVG", color: "bg-teal/10 text-teal" }, - { label: "CSV", color: "bg-mint/10 text-mint" }, - { label: "DOCX", color: "bg-orange/10 text-orange" }, - { label: "+60", color: "bg-[#f6f6f6] text-text-light" }, -]; +const WORDS = ["Drop", "files", "here"]; export function DropZone({ isDragging, @@ -36,120 +27,59 @@ export function DropZone({ }: DropZoneProps) { return (
- - {/* Card */} -
- {/* Upload icon — gradient bg + glow */} - + {WORDS.map((word, i) => ( + - - - - - + {word} + + ))} +
- {/* Heading + subtitle */} -
-

- {isDragging ? "Release to add" : "Drop files here"} -

-

- {isDragging - ? "Your files are ready for transformation" - : "Images, documents, audio, video, data — all formats welcome"} -

-
+ {/* Browse button — small and understated */} + + + + + + Browse files + - {/* Format pills */} - {!isDragging && ( -
- {FORMAT_PILLS.map(({ label, color }) => ( - - {label} - - ))} -
- )} - - {/* Browse button */} - - - - - Browse files - - - {/* Trust signal */} -

- 70+ formats — 100% client-side -

-
+

+ 70+ formats — 100% client-side +

);