fixed code

This commit is contained in:
SlimusMinus
2026-08-11 00:24:07 +03:00
parent c50b75eece
commit 7f59ee1f38
95 changed files with 3623 additions and 2830 deletions

28
src/components/Toast.jsx Normal file
View File

@@ -0,0 +1,28 @@
// src/components/Toast.jsx
import { useEffect } from "react";
/**
* Toast — всплывающее сообщение об ошибке/успехе, автоматически скрывается.
*
* @param {string} message — текст сообщения
* @param {"error"|"success"} [type="error"]
* @param {function} onDismiss — вызывается по истечении таймера или по клику на крестик
* @param {number} [duration=4000] — время жизни в мс
*/
export default function Toast({ message, type = "error", onDismiss, duration = 4000 }) {
useEffect(() => {
const timer = setTimeout(onDismiss, duration);
return () => clearTimeout(timer);
}, [onDismiss, duration]);
if (!message) return null;
return (
<div className={`f-toast f-toast-${type}`} role="alert">
<span>{message}</span>
<button type="button" className="f-toast-close" onClick={onDismiss} aria-label="Close">
×
</button>
</div>
);
}