Feedback toastnotification
Toast Message
Transient snackbar notification.
Preview
Success
Settings saved successfully!
Error
Failed to upload file. Please try again.
Usage
Copy the full block below to use this component with its imports.
astro
---
import { ToastMessage } from 'astro-component-kit';
---
<ToastNotif message="File uploaded" variant="success" /> ---
import { ToastMessage } from 'astro-component-kit';
---
<ToastNotif message="File uploaded" variant="success" /> Manual Installation
If you are not using the npm package, create a new file src/components/lib/ToastMessage.astro and paste the following code:
astro
---
/**
* ToastNotif — A transient snackbar notification that appears at the corner of the screen.
*
* @param {string} message - The notification content.
* @param {string} icon - Emoji or SVG icon. Default is '✅'.
* @param {'success'|'info'|'error'} variant - Theme of the toast. Default is 'success'.
* @param {boolean} show - Initial visibility. Default is true.
*/
interface Props {
message: string;
icon?: string;
variant?: 'success' | 'info' | 'error';
show?: boolean;
}
const {
message,
icon = "✅",
variant = 'success',
show = true
} = Astro.props;
---
<div class:list={['toast', `toast--${variant}`, { 'toast--show': show }]} role="status">
<div class="toast__icon" aria-hidden="true">{icon}</div>
<span class="toast__msg">{message}</span>
</div>
<style>
.toast {
position: fixed;
bottom: 2rem;
right: 2rem;
background: var(--c-bg-elev, #0f172a);
color: var(--c-text-1, #fff);
padding: var(--sp-4, 1rem) var(--sp-6, 1.5rem);
border-radius: var(--r-md, 14px);
border: 1px solid var(--c-border, rgba(255,255,255,0.1));
display: flex;
align-items: center;
gap: var(--sp-3, 0.8rem);
box-shadow: 0 15px 45px rgba(0,0,0,0.4);
transform: translateY(150%) scale(0.9);
transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
z-index: 10000;
}
.toast--show { transform: translateY(0) scale(1); }
.toast--success { border-left: 4px solid #10b981; }
.toast--info { border-left: 4px solid var(--c-primary, #6366f1); }
.toast--error { border-left: 4px solid #ef4444; }
.toast__icon {
background: rgba(255,255,255,0.05);
width: 28px; height: 28px;
display: grid; place-items: center;
border-radius: var(--r-sm, 6px);
font-size: 1rem;
flex-shrink: 0;
}
.toast__msg { font-size: 0.9rem; font-weight: 500; white-space: nowrap; }
</style> ---
/**
* ToastNotif — A transient snackbar notification that appears at the corner of the screen.
*
* @param {string} message - The notification content.
* @param {string} icon - Emoji or SVG icon. Default is '✅'.
* @param {'success'|'info'|'error'} variant - Theme of the toast. Default is 'success'.
* @param {boolean} show - Initial visibility. Default is true.
*/
interface Props {
message: string;
icon?: string;
variant?: 'success' | 'info' | 'error';
show?: boolean;
}
const {
message,
icon = "✅",
variant = 'success',
show = true
} = Astro.props;
---
<div class:list={['toast', `toast--${variant}`, { 'toast--show': show }]} role="status">
<div class="toast__icon" aria-hidden="true">{icon}</div>
<span class="toast__msg">{message}</span>
</div>
<style>
.toast {
position: fixed;
bottom: 2rem;
right: 2rem;
background: var(--c-bg-elev, #0f172a);
color: var(--c-text-1, #fff);
padding: var(--sp-4, 1rem) var(--sp-6, 1.5rem);
border-radius: var(--r-md, 14px);
border: 1px solid var(--c-border, rgba(255,255,255,0.1));
display: flex;
align-items: center;
gap: var(--sp-3, 0.8rem);
box-shadow: 0 15px 45px rgba(0,0,0,0.4);
transform: translateY(150%) scale(0.9);
transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
z-index: 10000;
}
.toast--show { transform: translateY(0) scale(1); }
.toast--success { border-left: 4px solid #10b981; }
.toast--info { border-left: 4px solid var(--c-primary, #6366f1); }
.toast--error { border-left: 4px solid #ef4444; }
.toast__icon {
background: rgba(255,255,255,0.05);
width: 28px; height: 28px;
display: grid; place-items: center;
border-radius: var(--r-sm, 6px);
font-size: 1rem;
flex-shrink: 0;
}
.toast__msg { font-size: 0.9rem; font-weight: 500; white-space: nowrap; }
</style>
Quick Info
- Category
- Feedback
- Filename
ToastMessage.astro- Dependencies
- None — pure Astro + CSS
- Tags
- toastnotification