import Cookies from "js-cookie"; import { X } from "lucide-react"; import Link from "next/link"; import { type MouseEvent, useEffect, useState } from "react"; import { IconMatrix, type IconType } from "~/components/IconComponents"; import { cn } from "~/lib/utils"; import type { Banners } from "~/schemas/public/Banners"; const defaultHideDuration = 365; // days export const BannerFactory = (bannerData: Banners) => { const NEW_BANNER_KEY = `bannercookie_${bannerData.idbanner}`; let bgColor = ""; let accentColor = ""; let closeHoverColor = ""; switch (bannerData.color) { case "blu": bgColor = "bg-blue-600"; accentColor = "bg-blue-800"; closeHoverColor = "hover:bg-blue-500"; break; case "rosso": bgColor = "bg-red-600"; accentColor = "bg-red-800"; closeHoverColor = "hover:bg-red-500"; break; case "verde": bgColor = "bg-green-600"; accentColor = "bg-green-800"; closeHoverColor = "hover:bg-green-500"; break; case "indaco": bgColor = "bg-indigo-600"; accentColor = "bg-indigo-800"; closeHoverColor = "hover:bg-indigo-500"; break; default: bgColor = "bg-indigo-600"; accentColor = "bg-indigo-800"; closeHoverColor = "hover:bg-indigo-500"; break; } const NewBanner = () => { const [isBannerToShow, setIsBannerToShow] = useState(false); useEffect(() => { if (bannerData.is_unskippable === false) { const cookievalue = Cookies.get(NEW_BANNER_KEY) !== "true"; setIsBannerToShow(cookievalue); } }, []); const onClick = (e: MouseEvent) => { e.preventDefault(); Cookies.set(NEW_BANNER_KEY, "true", { expires: bannerData.hide_duration || defaultHideDuration, }); setIsBannerToShow(false); }; if (!isBannerToShow && bannerData.is_unskippable === false) { return null; } return (
{bannerData.titolo}{" "}

{bannerData.testo} {bannerData.has_cta && bannerData.cta_href && bannerData.cta_icon && ( {bannerData.cta_text} )}

{bannerData.is_unskippable === false && ( )}
); }; return ; };