import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { resolveAssetSrc } from "@/utils/media.util"; // Shared details view for the sticky announcement bar (client + admin // variants) — pages through every currently-active sticky announcement (max // 3, see notificationBroadcasts.controller.js's countActiveSticky) with a // segmented progress bar. bannerImage is ONE shared image for the whole set // (not per-announcement) — see NotificationBroadcastList.jsx's banner picker // and the sticky_banner_settings singleton. export default function AnnouncementCarouselDialog({ open, onOpenChange, announcements, activeIndex, onIndexChange, resolveClickAction, navigate, bannerImage, }) { const current = announcements[activeIndex]; if (!current) return null; const clickAction = resolveClickAction(current); const imageSrc = resolveAssetSrc(bannerImage); return (
{current.title || "Announcement"}

{current.message || ""}

{clickAction && ( )} {announcements.length > 1 && (
{announcements.map((a, i) => (
)}
{imageSrc ? ( ) : ( No image )}
); }