← Files DataARCHIVED FILE
templates/data-app/base/src/components/DataAppToast.jsx
772 Bytes · Sep 30, 2026 · 23:19 UTC
import React, { useEffect } from "react";
import { Icon } from "./Icon.jsx";
export function DataAppToast({ message, onDismiss, duration = 3500 }) {
useEffect(() => {
if (!message) return undefined;
const timer = setTimeout(onDismiss, duration);
return () => clearTimeout(timer);
}, [duration, message, onDismiss]);
if (!message) return null;
const displayMessage = typeof message === "string" ? message.replace(/\.\s*$/u, "") : message;
return (
<div className="dashboard-toast" role="status" aria-live="polite">
<span>{displayMessage}</span>
<button type="button" className="dashboard-toast-dismiss" aria-label="Dismiss notification" onClick={onDismiss}>
<Icon name="close" size={15} />
</button>
</div>
);
}
SHA-256: 1c80d8723f951755c132c5b1e51fab8dafd38cd6312ad7bc9e5a98d4403c2213