();
+
+ view! {
+
+ {move || {
+ context.toasts.get().into_values().map(|toast| {
+ view! { }
+ }).collect::>()
+ }}
+
+ }
+}
+
+#[component]
+fn ToastItem(toast: Toast) -> impl IntoView {
+ let (visible, set_visible) = (toast.visible, toast.visible.write_only());
+
+ let base_classes = "pointer-events-auto relative w-full rounded-lg border p-4 shadow-lg transition-all duration-300 ease-in-out";
+ let color_classes = match toast.level {
+ NotificationLevel::Success => "bg-green-50 text-green-900 border-green-200 dark:bg-green-900 dark:text-green-100 dark:border-green-800",
+ NotificationLevel::Error => "bg-red-50 text-red-900 border-red-200 dark:bg-red-900 dark:text-red-100 dark:border-red-800",
+ NotificationLevel::Warning => "bg-yellow-50 text-yellow-900 border-yellow-200 dark:bg-yellow-900 dark:text-yellow-100 dark:border-yellow-800",
+ NotificationLevel::Info => "bg-blue-50 text-blue-900 border-blue-200 dark:bg-blue-900 dark:text-blue-100 dark:border-blue-800",
+ };
+
+ view! {
+
+
+
+
+
+
+ }
+}
diff --git a/frontend/src/store.rs b/frontend/src/store.rs
index e2bfb1c..f73c456 100644
--- a/frontend/src/store.rs
+++ b/frontend/src/store.rs
@@ -7,15 +7,18 @@ use std::collections::HashMap;
use struct_patch::traits::Patch;
use base64::{Engine as _, engine::general_purpose::STANDARD as BASE64};
+use crate::components::toast::ToastContext;
+
pub fn show_toast(level: NotificationLevel, message: impl Into) {
let msg = message.into();
gloo_console::log!("TOAST CALL:", &msg, format!("{:?}", level));
log::info!("Displaying toast: [{:?}] {}", level, msg);
- match level {
- NotificationLevel::Info => { leptos_shadcn_toast::toast::info(&msg).show(); },
- NotificationLevel::Success => { leptos_shadcn_toast::toast::success(&msg).show(); },
- NotificationLevel::Warning => { leptos_shadcn_toast::toast::warning(&msg).show(); },
- NotificationLevel::Error => { leptos_shadcn_toast::toast::error(&msg).show(); },
+
+ if let Some(context) = use_context::() {
+ context.add(msg, level);
+ } else {
+ log::error!("ToastContext not found!");
+ gloo_console::error!("ToastContext not found!");
}
}