NOCTA UI

File Upload

Advanced file upload component with drag & drop, progress tracking, validation, and preview support

Installation

Install the File Upload component using the nocta-ui CLI:

npx nocta-ui add file-upload

Import the component:

import { FileUpload } from '@/components/ui/file-upload';

Examples

Basic File Upload

Single File Upload

Image Upload with Preview

Sizes

Three size options are available: sm, md, and lg. The default size is md.

Small Size

Medium Size (Default)

Large Size

Component States

Disabled State

File Types & Validation

File Type Restrictions

// Images only
<FileUpload accept="image/*" />

// Specific image types
<FileUpload accept="image/jpeg,image/png,image/gif" />

// Documents
<FileUpload accept=".pdf,.doc,.docx,.txt" />

// Multiple types
<FileUpload accept="image/*,.pdf,.doc,.docx,text/*" />

// All files
<FileUpload accept="*/*" />

File Size Limits

// 1MB limit
<FileUpload maxSize={1024 * 1024} />

// 5MB limit
<FileUpload maxSize={5 * 1024 * 1024} />

// 50MB limit
<FileUpload maxSize={50 * 1024 * 1024} />

File Count Limits

// Single file only
<FileUpload multiple={false} />

// Up to 5 files
<FileUpload multiple maxFiles={5} />

// Up to 20 files
<FileUpload multiple maxFiles={20} />

// Unlimited files
<FileUpload multiple />

API Reference

PropTypeDefaultDescription
variant'default' | 'default' | 'compact''default'Visual style variant
size'sm' | 'md' | 'lg''md'Size of the upload area
multiplebooleanfalseAllow multiple file selection
acceptstring-Accepted file types (MIME types or extensions)
maxSizenumber-Maximum file size in bytes
maxFilesnumber-Maximum number of files
disabledbooleanfalseDisable the upload component
filesFileUploadFile[][]Array of files
onFilesChange(files: FileUploadFile[]) => void-Callback when files change
onUpload(files: FileUploadFile[]) => Promise<void>-Upload function
showProgressbooleantrueShow upload progress
showPreviewbooleantrueShow image previews
uploadTextstring'Click to upload or drag and drop'Upload zone text
dragTextstring'Drop files here'Drag over text
classNamestring-Additional CSS classes