summaryrefslogtreecommitdiff
path: root/ping/frontend/src/lib/stores/toast.ts
diff options
context:
space:
mode:
Diffstat (limited to 'ping/frontend/src/lib/stores/toast.ts')
-rw-r--r--ping/frontend/src/lib/stores/toast.ts22
1 files changed, 22 insertions, 0 deletions
diff --git a/ping/frontend/src/lib/stores/toast.ts b/ping/frontend/src/lib/stores/toast.ts
new file mode 100644
index 0000000..454461b
--- /dev/null
+++ b/ping/frontend/src/lib/stores/toast.ts
@@ -0,0 +1,22 @@
+import { writable } from "svelte/store";
+
+export interface Toast {
+ color?: string | undefined;
+ title?: string | undefined;
+ message?: string | undefined;
+}
+
+export const toastList = writable<Toast[]>([]);
+
+export function addToast(toast: Toast) {
+ toast ??= { color: "red", title: "Error", message: "An error occurred" };
+ toast.color ??= "red";
+ toast.title ??= "Error";
+ toast.message ??= "An error occurred";
+
+ toastList.update((list) => [...list, toast]);
+
+ setTimeout(() => {
+ toastList.update((list) => list.filter((t) => t !== toast));
+ }, 5000);
+} \ No newline at end of file