import { useToast, type ToastPositionWithLogical, Box, HStack, Text, } from "@chakra-ui/react"; import { useNuiEvent } from "../hooks/useNuiEvent"; import { debugData } from "../utils/debugData"; import { IconProp } from "@fortawesome/fontawesome-svg-core"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; interface Props { title?: string; description: string; duration?: number; position?: ToastPositionWithLogical; status?: "info" | "warning" | "success" | "error"; id?: number; } interface CustomProps { style?: React.CSSProperties; description: string; title?: string; duration?: number; icon?: IconProp; iconColor?: string; position?: ToastPositionWithLogical; id?: number; } debugData([ { action: "notify", data: { description: "Dunak is nerd", title: "Dunak", id: 1, }, }, ]); debugData([ { action: "customNotify", data: { description: "Dunak is nerd", title: "Dunak", icon: "basket-shopping", style: { backgroundColor: "#2D3748", color: "white", }, }, }, ]); const Notifications: React.FC = () => { const toast = useToast(); // todo: figure out icon support useNuiEvent("customNotify", (data) => { if (data.id && toast.isActive(data.id)) return; toast({ duration: data.duration || 4000, position: data.position || "top-right", render: () => ( {data.icon && ( )} {data.title && {data.title}} {data.description && {data.description}} ), }); }); useNuiEvent("notify", (data) => { if (data.id && toast.isActive(data.id)) return; toast({ title: data.title, description: data.description, duration: data.duration || 4000, position: data.position || "top-right", status: data.status, }); }); return <>; }; export default Notifications;