A headless toast package for use in Vue-Inertia-Laravel projects. For seamless integration, use the Surge Toast composer package in Laravel.
Install the package via npm, pnpm or yarn. Via NPM:
npm install surge-toast
If you want to use the Laravel flash message integration, you can install the Laravel package as well. For documentation, see the package here.
composer require surge/toast
And then in the app.js
or app.ts
file of your project, use the plugin:
import { toast } from "surge-toast"
//...
app.use(toast)
Within a, preferably, layout file define your Toast component and access the useToast
hook.
<template>
<!-- ... -->
<Toast v-for="toast in toasts" :key="toast.id" :toast="toast" />
</template>
<script setup>
import { Toast } from '@/Components/Toast'
import { useToast } from "surge-toast"
const { toasts } = useToast()
</script>
The package comes with a Laravel plugin that can be used to automatically render toast messages from the server on your frontend. This is handled automatically through intercepting the Inertia JS events, and sending via the event bus.
You can also call the toasts manually using the useToast
hook.
The examples/
directory contains three examples for using the package.
- A generic Tailwind toast component with Vue transitions
- A generic Tailwind toast component with HeadlessUI control
shadcn-vue
sonner component
You can copy these examples directly and modify as desired. If you are going to handle the logic yourself, ensure the key
when performing a v-for
loop is set to be toast.id
or index
to ensure smooth rendering in the VDom.
The MIT License (MIT). Please see License File for more information.