Toast
Toasts can be a nice way to signalize the user about important information from user action.
import { useToast } from "@dreamy-ui/react";
function Toast() {
const { toast } = useToast();
return (
<Button onClick={() => toast({ title: "Welcome!", description: "Make yourself at home!" })}>
Toast
</Button>
);
}
The status
prop changes the color of the Toast and the icon.
<Flex wrapped gap={2}>
{["success", "error", "warning", "info", "loading"].map((status) => (
<Button
key={status}
onClick={() => toast({
title: status + "!",
description: `This is a ${status} toast!`,
status
})}
>
{status}
</Button>
))}
</Flex>
The position
prop changes the position of the Toast.
<Flex wrapped gap={2}>
{["top-left", "top-center", "top-right", "bottom-left", "bottom-center", "bottom-right"].map((position) => (
<Button
key={position}
onClick={() => toast({
title: position,
description: `This toast is at ${position}!`,
position
})}
>
{position}
</Button>
))}
</Flex>
The duration
prop changes the duration of the Toast.
<HStack>
<Button onClick={() => toast({ title: "This toast lasts!", duration: 10_000 })}>
10 seconds
</Button>
<Button
onClick={() => toast({
title: "This toast lasts forever!",
description: "To close this toast, you need to click the close button.",
duration: Number.POSITIVE_INFINITY,
isClosable: true
})}
>
Infinite
</Button>
</HStack>
The isClosable
prop allows you to close the toast.
<Button onClick={() => toast({ title: "Closable", description: "This toast is closable!", isClosable: true })}>
Closable
</Button>
The rightContent
prop allows you to render custom content to the right of the toast.
<Button
onClick={() => toast({
title: "Right content",
description: "This toast has a right content!",
rightContent: <Button variant='outline' size='sm'>Okay</Button>
})}
>
Right content
</Button>
The render
prop allows you to render custom toast.
<Button
onClick={() => toast({
title: "This toast is custom!",
render: () => <Box p={4} bg="primary" rounded="l2">This is a custom toast!</Box>
})}
>
Custom Render
</Button>
You can use updateToast
function to update a toast
export function UpdateToast() {
const { toast, updateToast } = useToast();
const [toastId, setToastId] = useState<string | null>(null);
return (
<HStack>
<Button
onClick={() => {
setToastId(
toast({
title: "Loading",
description: "Please wait till file is uploaded!",
status: "loading",
duration: Number.POSITIVE_INFINITY
})
);
}}
>
Send Toast
</Button>
<Button
onClick={() => {
if (toastId) {
updateToast(toastId, {
title: "Success!",
description: "File uploaded successfully!",
status: "success"
});
}
}}
>
Update Toast
</Button>
</HStack>
);
}
Use defaultToastProps
in the DreamyProvider
to set default props for all toasts.
<DreamyProvider
defaultToastProps={{
position: "top-right",
duration: 10_000,
isClosable: true
}}
>
...
</DreamyProvider>