{ "name": "file-upload-demo", "type": "registry:example", "dependencies": [ "lucide-react", "sonner" ], "registryDependencies": [ "button", "file-upload" ], "files": [ { "path": "examples/file-upload-demo.tsx", "type": "registry:example", "content": "\"use client\";\n\nimport { Upload, X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { toast } from \"sonner\";\nimport { Button } from \"@/registry/bases/base/ui/button\";\nimport {\n FileUpload,\n FileUploadDropzone,\n FileUploadItem,\n FileUploadItemDelete,\n FileUploadItemMetadata,\n FileUploadItemPreview,\n FileUploadList,\n FileUploadTrigger,\n} from \"@/registry/bases/base/ui/file-upload\";\n\nexport default function FileUploadDemo() {\n const [files, setFiles] = React.useState([]);\n\n const onFileReject = React.useCallback((file: File, message: string) => {\n toast(message, {\n description: `\"${file.name.length > 20 ? `${file.name.slice(0, 20)}...` : file.name}\" has been rejected`,\n });\n }, []);\n\n return (\n \n \n
\n
\n \n
\n

Drag & drop files here

\n

\n Or click to browse (max 2 files, up to 5MB each)\n

\n
\n (\n \n Browse files\n \n )}\n />\n
\n \n {files.map((file, index) => (\n \n \n \n (\n \n \n \n )}\n />\n \n ))}\n \n \n );\n}\n", "target": "" } ] }