Toast Button
An upload button component which uses toasts as its response method.
Note:
All uploadthing functions like .onUploadComplete
will run on each file as
each file upload runs its own startUpload
.
About
The <ToastButton/>
component uses the Button and Sonner.
Installation
pnpm dlx shadcn@latest add https://uploadthingui.vercel.app/r/toast-button.json
Usage
import ToastButton from "@/components/uploadthingui/toast-button";
<ToastButton
props={{ endpoint: "imageUploader" }}
instanceId="toast-button-general"
showDetails
/>
Make sure to add the sonner
component inside your layout.tsx
.
import { Toaster } from 'sonner';
export default function RootLayout({ children }) {
return (
<html lang="en">
<head />
<body>
<main>{children}</main>
<Toaster />
</body>
</html>
)
}
Props
Name | Type | Required | Default | Description |
---|---|---|---|---|
props | uploadthing | yes | - | Accepts all the props that are available with uploadthing Only the endpoint is required. Note that the endpoint isn't type-safe. |
showDetails | boolean | no | false | Show the details/metadata for the upload route endpoint |
instanceId | string | yes | - | This will be used as an identifier if multiple file upload buttons are used at the same time It's recommended to add this to avoid duplication of file uploads |
allowInBetweenUploads | boolean | no | true | Whether to allow in-between uploads If false , then when files are being uploaded, no new files can be uploaded. |
routeDetails | routeDetails | no | - | Additional details for the upload; Example: maxFileCount, minFileCount, etc. It's recommended to add these details here instead of in your route. |
children | ReactNode | no | - | Any node written will take the place of the action button |
Examples
Custom Action Button
Route Details
Note:
Add route details (minFileCount
& maxFileCount
) here and not inside your
core.ts
. This is because each file upload runs its own startUpload
.
If a route has a minFileCount
set to 2
, then that condition will never be
met at the route level. Therefore, you shouldn't add these properties inside
your core.ts
; instead, add them at the component level.
Allow In Between Uploads
Note:
Set to true
by default. When set to false
, you won't be able to upload any
files when a file is being uploaded.
Without metadata
Note:
Set to false
by default. When set to true
, you'll see additional details
about the route.
Change Log
No changes made until today :)