import "./Toast.css"; import clsx from "clsx"; import { useEffect } from "preact/hooks"; import { removeToastFromStore, ToastOptionsWithRequiredId, toasts } from "../services/toast"; import Icon from "./react/Icon"; import { RawHtmlBlock } from "./react/RawHtml"; import Button from "./react/Button"; export default function ToastContainer() { return (
{toasts.value.map(toast => )}
) } function Toast({ id, title, timeout, progress, message, icon, buttons }: ToastOptionsWithRequiredId) { // Autohide. useEffect(() => { if (!timeout || timeout <= 0) return; const timerId = setTimeout(() => removeToastFromStore(id), timeout); return () => clearTimeout(timerId); }, [ id, timeout ]); function dismissToast() { removeToastFromStore(id); } const closeButton = (