Measured entry
kokonut-file-upload
inputdark-futuristicmotion on file
A client-side drag-and-drop file picker with animated idle, dragging, progress, cancel, and error states. It ships as a shadcn registry TypeScript component, uses Tailwind utility classes and a local cn helper, and depends on React, Motion, and Lucide. Its built-in progress is simulated, so real transfer logic belongs in the success callback or a replacement handler.



Measured
Every value below was written by the harness on the run that produced the frames above. None of it is derived from the prose.
| Build | OK |
|---|---|
| Mount | OK |
| Console errors | 0 |
| Uncaught page errors | 0 |
| Horizontal overflow | clean at 375, 768, 1440 |
| Axe critical | 0 |
| Axe serious | 0 |
| Axe moderate | 0 |
| Axe minor | 0 |
| Gzip marginal | 72.7 KB (138.1 KB build, 65.4 KB baseline) |
| Bare mode | FAIL |
| Provider required | NO |
| Demo used | written from the component source API |
What the harness recorded
BARE BUILD
✗ Build failed in 1m 52s error during build: [vite:load-fallback] Could not load <sandbox>/src/lib/utils (imported by src/cut/components/kokonutui/file-upload.tsx): ENOENT: no such file or directory, open '<sandbox>/src/lib/utils'
Verdict
A credible, adaptable drop zone when the surrounding app owns the actual upload. It builds and mounts cleanly in the prepared harness, but it needs a shadcn-style setup and does not mount in a bare project as copied.
Use it if
- You want a polished single-file drop zone with file type, size, and custom validation hooks.
- Your app already uses Tailwind and shadcn-style aliases and can wire the selected file into its own upload service.
- You need light and dark styling plus animated progress and error feedback in one component.
Skip it if
- You need real network upload progress out of the box, because the included progress sequence is only a simulation.
- You need multiple-file selection, queued uploads, retry controls, or resumable transfers.
- You want a dependency-light native input and do not want Motion, Lucide, Tailwind utilities, or a local class-name helper.
Install
| Declared dependencies | lucide-react, motion |
|---|---|
| Missing on install | none |
| Bare install | fails once the shadcn-style helpers are removed, so it needs that setup |
| Provider | no provider required in the harness |
In a non-shadcn project, add Tailwind with dark-mode support, install Motion and Lucide React, configure the at-sign path alias, and provide a cn class-merging utility under the local lib path. Keep it as a client component, then replace or bypass the simulated progress flow when connecting real storage.
Source and credit
This page is a review, not a copy. The component source lives with its author and this site does not republish it. Read the license before you use anything.
Author repository
github.com/kokonut-labs/kokonutuiAlternatives
Other published entries for the input pattern, ordered by what they measured: mounts first, then clean axe scans, then bare-mode passes, then the smaller bundle.
- clay-inputclaymorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 17.9KB
- Bare
- pass
- Prov
- NO
- neu-search-inputneumorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 18.1KB
- Bare
- pass
- Prov
- NO
- clay-search-inputclaymorphism
- Renders
- YES
- A11y
- 0
- Gzip
- 18.3KB
- Bare
- pass
- Prov
- NO
- originui-comp-33minimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 20.7KB
- Bare
- pass
- Prov
- NO
- hextaui-labelminimal-flat
- Renders
- YES
- A11y
- 0
- Gzip
- 31.3KB
- Bare
- pass
- Prov
- NO
- ruixen-circular-stepper-inputliquid-glass
- Renders
- YES
- A11y
- 0
- Gzip
- 61.1KB
- Bare
- pass
- Prov
- NO