← Files DataARCHIVED FILE

templates/data-app/base/src/components/DataAppToast.jsx

772 Bytes · Sep 30, 2026 · 23:19 UTC

↓ Download file

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