{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "file-upload-demo", "dependencies": [ "lucide-react" ], "registryDependencies": [ "https://reusables.vercel.app/r/use-file-upload", "progress", "button" ], "files": [ { "path": "registry/example/file-upload-demo.tsx", "content": "\"use client\"\n\nimport Image from \"next/image\"\nimport { Upload, X } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { useFileUpload } from \"@/hooks/use-file-upload\"\nimport { Button } from \"@/components/ui/button\"\nimport { Progress } from \"@/components/ui/progress\"\n\nexport default function FileUploadDemo() {\n const {\n handleFileUpload,\n cancelUpload,\n selectedFile,\n isUploading,\n progress,\n error,\n data,\n } = useFileUpload()\n\n return (\n
\n
\n {data ?\n \n : \n
\n \n

\n Click to upload image\n

\n

Any file up to 5MB

\n
\n handleFileUpload(e.target.files?.[0]!)}\n disabled={isUploading}\n />\n \n }\n
\n\n {(isUploading || selectedFile) && !data && (\n
\n
\n
\n
\n

\n {selectedFile?.name}\n

\n

\n {(selectedFile?.size! / 1024 / 1024).toFixed(2)} MB\n

\n
\n
\n {isUploading && (\n \n \n \n )}\n
\n\n {isUploading && }\n
\n )}\n\n {error && (\n
\n {error}\n
\n )}\n
\n )\n}\n", "type": "registry:example", "target": "components/file-upload-demo.tsx" } ], "type": "registry:example" }