Upload Island

A Dynamic Island for uploads: a pill that morphs between idle, uploading and done, and expands into the file list on hover.

"use client"

import { demoAdapter } from "@/examples/_demo"
import { UploadIsland } from "@/components/upload-island"

export default function UploadIslandExample() {
  return <UploadIsland adapter={demoAdapter} />
}

Installation

npx shadcn@latest add @uploadcn/upload-island

Usage

import { UploadIsland } from "@/components/upload-island"
<UploadIsland maxFiles={10} />

The pill is the dropzone itself, so it's both a button and a drop target. The shape animates with motion's layout; content cross-fades with a blur. It expands on hover and on keyboard focus, and its accessible name always describes the progress.

Props

Prop

Type

On this page