# SimpleToast
Dead simple toast notifications for Phoenix LiveView. No CSS imports, no npm, just works.
## Installation
1. Add `simple_toast` to your dependencies:
```elixir
def deps do
[
{:simple_toast, "~> 0.1.0"}
]
end
```
2. Import the JavaScript hook in your `app.js`:
```javascript
import { SimpleToast } from "simple_toast";
// Add to your hooks
let hooks = {
// ... your other hooks
SimpleToast: SimpleToast
};
```
3. Add the container to your root layout (e.g., `root.html.heex`):
```heex
<SimpleToast.container />
```
That's it! No CSS imports needed - styles are injected automatically.
## Usage
### In LiveView
```elixir
def handle_event("save", _params, socket) do
# Your save logic here...
{:noreply, SimpleToast.send(socket, :success, "Changes saved!")}
end
def handle_event("delete", _params, socket) do
# Your delete logic here...
{:noreply, SimpleToast.send(socket, :error, "Failed to delete", duration: 5000)}
end
```
### In Controllers
```elixir
def create(conn, params) do
# Your create logic here...
conn
|> SimpleToast.put_flash(:success, "Item created successfully!")
|> redirect(to: ~p"/items")
end
```
## Toast Types
- `:info` - Blue toast for informational messages
- `:success` - Green toast for success messages
- `:error` - Red toast for error messages
- `:warning` - Yellow toast for warning messages
## Options
- `:duration` - How long to show the toast in milliseconds (default: 3000)
## Why SimpleToast?
Unlike other toast libraries, SimpleToast:
- **No CSS imports** - All styles are bundled inline
- **No JavaScript setup** - The hook is automatically injected
- **No npm dependencies** - Pure Elixir/Phoenix solution
- **No configuration** - Works out of the box
- **Minimal API** - Just `send/3` and `put_flash/3`
- **Tiny footprint** - Single component, no bloat
## License
MIT License. See LICENSE for details.