import React, { useState, useEffect } from 'react';
import { Head, useForm } from '@inertiajs/react';
import EmployerLayout from '../../Layouts/EmployerLayout';
import {
Megaphone,
Send,
CheckCircle2,
Users,
Search,
Calendar,
Target,
Filter,
ChevronRight,
MessageSquare,
Info,
Heart,
MapPin,
Clock,
Sparkles,
BellRing
} from 'lucide-react';
import {
Dialog,
DialogContent,
DialogDescription,
DialogHeader,
DialogTitle,
DialogTrigger,
DialogFooter
} from '@/components/ui/dialog';
export default function Announcements({ initialAnnouncements }) {
const [isDialogOpen, setIsDialogOpen] = useState(false);
const [searchTerm, setSearchTerm] = useState('');
const [toastMessage, setToastMessage] = useState(null);
const [toastSub, setToastSub] = useState(null);
const [announcements, setAnnouncements] = useState(initialAnnouncements || []);
useEffect(() => {
setAnnouncements(initialAnnouncements || []);
}, [initialAnnouncements]);
const { data: newAnnouncement, setData: setNewAnnouncement, post, processing, reset } = useForm({
title: '',
content: '',
audience: 'Charity',
type: 'Charity',
provided_items: '',
event_date: '',
event_time: '',
location_details: '',
location_pin: ''
});
const showToast = (message, subMessage = null) => {
setToastMessage(message);
setToastSub(subMessage);
setTimeout(() => {
setToastMessage(null);
setToastSub(null);
}, 5000);
};
const handleCreate = (e) => {
e.preventDefault();
post('/employer/announcements/create', {
preserveScroll: true,
onSuccess: () => {
reset();
setIsDialogOpen(false);
showToast(
'💖 COMMUNITY CHARITY EVENT POSTED!',
'🔔 Instant Push Notification sent to all workers in Dubai! ⏰ Morning-of reminder notification scheduled successfully.'
);
}
});
};
const filteredAnnouncements = announcements.filter(ann =>
ann.title.toLowerCase().includes(searchTerm.toLowerCase()) ||
ann.content.toLowerCase().includes(searchTerm.toLowerCase())
);
return (
{toastSub}
}Organizing a support program? Share community campaigns directly. The platform will automatically push an **instant pop-up notification** to workers, followed by a **morning-of event reminder** to keep attendance strong.
You haven't posted any announcements yet
{ann.content}