![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/.cursor-server/data/User/History/-5e132e90/ |
'use client';
import LayoutWithSidebar from '../components/LayoutWithSidebar';
import SEO from '@/components/SEO';
import Link from 'next/link';
import { useState, useEffect } from 'react';
import { useSession } from 'next-auth/react';
import { motion } from 'framer-motion';
import { usePublicNotifications } from '@/context/PublicNotificationContext';
import PublicCaseFeed from '../components/PublicCaseFeed';
import toast from 'react-hot-toast';
// Newsletter Signup Component
function NewsletterSignupForm({ isMobile }: { isMobile: boolean }) {
const [email, setEmail] = useState('');
const [isSubmitting, setIsSubmitting] = useState(false);
const [language, setLanguage] = useState('en');
const handleSubmit = async (e: React.FormEvent) => {
e.preventDefault();
if (!email || !email.includes('@')) {
toast.error('Please enter a valid email address');
return;
}
setIsSubmitting(true);
try {
const response = await fetch('/api/public/newsletter/subscribe', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email,
language,
source: 'homepage'
}),
});
const data = await response.json();
if (response.ok) {
toast.success('🎉 Successfully subscribed to case updates!', {
duration: 5000,
position: 'top-right',
});
setEmail('');
} else {
if (response.status === 409) {
toast.success('✅ You\'re already subscribed to updates!', {
duration: 4000,
position: 'top-right',
});
} else {
toast.error(data.message || 'Failed to subscribe. Please try again.');
}
}
} catch (error) {
toast.error('Network error. Please try again.');
} finally {
setIsSubmitting(false);
}
};
return (
<form onSubmit={handleSubmit} className={`max-w-lg mx-auto ${isMobile ? 'space-y-3' : 'space-y-4'}`}>
<div className={`flex ${isMobile ? 'flex-col space-y-3' : 'flex-col sm:flex-row'} gap-3`}>
<div className="flex-1">
<input
type="email"
value={email}
onChange={(e) => setEmail(e.target.value)}
placeholder="Enter your email address"
className={`w-full rounded-lg border-0 text-gray-900 placeholder-gray-500 focus:ring-2 focus:ring-white ${isMobile ? 'px-4 py-3 text-base' : 'px-5 py-4 text-lg'}`}
disabled={isSubmitting}
required
/>
</div>
<div>
<select
value={language}
onChange={(e) => setLanguage(e.target.value)}
className={`rounded-lg border-0 text-gray-900 focus:ring-2 focus:ring-white ${isMobile ? 'w-full px-4 py-3 text-base' : 'px-4 py-4 text-lg'}`}
disabled={isSubmitting}
>
<option value="en">🇺🇸 English</option>
<option value="fr">🇫🇷 Français</option>
</select>
</div>
<button
type="submit"
disabled={isSubmitting || !email}
className={`bg-white text-blue-600 rounded-lg font-bold shadow-lg hover:bg-gray-100 disabled:opacity-50 disabled:cursor-not-allowed transition-all duration-200 ${isMobile ? 'w-full px-6 py-3 text-base' : 'px-8 py-4 text-lg'}`}
>
{isSubmitting ? '⏳ Subscribing...' : '📧 Subscribe'}
</button>
</div>
</form>
);
}