'use client'; import { Button } from '@/components/ui/Button'; import { Heading, Text } from '@/components/ui/Typography'; import { useState } from 'react'; interface NewsletterProps { title?: string; subtitle?: string; buttonText?: string; disclaimer?: string; } export function Newsletter({ title = 'Join our newsletter', subtitle = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.', buttonText = 'Sign Up', disclaimer = 'By clicking Sign Up you\'re confirming that you agree with our Terms and Conditions.' }: NewsletterProps) { // Form state const [email, setEmail] = useState(''); const [error, setError] = useState(''); const [isSubmitting, setIsSubmitting] = useState(false); const [isSubmitted, setIsSubmitted] = useState(false); // Handle input change const handleChange = (e: React.ChangeEvent) => { setEmail(e.target.value); if (error) setError(''); }; // Validate email const validateEmail = () => { if (!email.trim()) { setError('Molimo unesite vašu email adresu'); return false; } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) { setError('Molimo unesite ispravnu email adresu'); return false; } return true; }; // Handle form submission const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (validateEmail()) { setIsSubmitting(true); // Simulate API call setTimeout(() => { setIsSubmitting(false); setIsSubmitted(true); setEmail(''); // Reset success message after 5 seconds setTimeout(() => { setIsSubmitted(false); }, 5000); }, 1000); } }; return (
{title} {subtitle}
{isSubmitted ? (
Uspješno ste se pretplatili!
Hvala na prijavi. Uskoro ćete primiti našu prvu newsletter poruku.
) : (
{error && ( {error} )}
{!isSubmitted && ( {disclaimer} )}
)}
); }