import type { DragEvent } from 'react'; import { Button, Container, SegmentInput, IconButton } from '@ifrc-go/ui'; import { UploadCloudLineIcon, ArrowRightLineIcon, DeleteBinLineIcon } from '@ifrc-go/icons'; import { Link } from 'react-router-dom'; import styles from '../../pages/UploadPage/UploadPage.module.css'; interface FileUploadSectionProps { files: File[]; file: File | null; preview: string | null; imageType: string; onFileChange: (file: File | undefined) => void; onRemoveImage: (index: number) => void; onAddImage: () => void; onImageTypeChange: (value: string | undefined) => void; onChangeFile?: (file: File | undefined) => void; } export default function FileUploadSection({ files, file, preview, imageType, onFileChange, onRemoveImage, onAddImage, onImageTypeChange, onChangeFile, }: FileUploadSectionProps) { const onDrop = (e: DragEvent) => { e.preventDefault(); const dropped = e.dataTransfer.files?.[0]; if (dropped) { onFileChange(dropped); } }; return (

This app evaluates how well multimodal AI models analyze and describe crisis maps and drone imagery. Upload an image and the AI will generate a description. Then you can review and rate the result based on your expertise.

{/* "More ยป" link */}
More
{/* Image Type Selection */}
onImageTypeChange(value as string)} options={[ { key: 'crisis_map', label: 'Crisis Maps' }, { key: 'drone_image', label: 'Drone Imagery' } ]} keySelector={(o) => o.key} labelSelector={(o) => o.label} />
e.preventDefault()} onDrop={onDrop} > {files.length > 1 ? (
{files.map((file, index) => (
{`Image onRemoveImage(index)} title="Remove image" ariaLabel="Remove image" className="absolute top-2 right-2 bg-white/90 hover:bg-white shadow-md hover:shadow-lg border border-gray-200 hover:border-red-300 transition-all duration-200 backdrop-blur-sm" >
{file.name}
))}
) : file && preview ? (
File preview

{file.name}

{(file.size / 1024 / 1024).toFixed(2)} MB

) : ( <>

Drag & Drop any file here

or

)}
{file && files.length < 5 && ( )}
); }