"use client"; import React, { useState, useEffect } from "react"; import Link from "next/link"; import "./Footer.scss"; import toast from "react-hot-toast"; import { apiClient } from "@/app/utils/apiClient"; interface Category { id: number; product_category: string; } const Footer = () => { const [email, setEmail] = useState(""); const [categories, setCategories] = useState([]); const [loading, setLoading] = useState(true); const [subscribing, setSubscribing] = useState(false); useEffect(() => { const fetchCategories = async () => { try { setLoading(true); const response = await apiClient("/product/categories", { skipAuth: true, }); if (response && response.success) { setCategories(response.data.slice(0, 5)); } } catch (error) { console.error("Error fetching categories for footer:", error); } finally { setLoading(false); } }; fetchCategories(); }, []); const handleSubscribe = async (e: React.FormEvent) => { e.preventDefault(); if (!email || !/\S+@\S+\.\S+/.test(email)) { toast.error("Please enter a valid email address"); return; } setSubscribing(true); try { const response = await apiClient("/newsletter/subscribe", { method: "POST", body: JSON.stringify({ email }), }); if (response.success) { toast.success("Thank you for subscribing to our newsletter!"); setEmail(""); } else { toast.error( response.message || "You're already subscribed to our newsletter." ); } } catch (error: any) { console.error("Subscribe error:", error); toast.error(error.message || "Failed to subscribe. Please try again."); } finally { setSubscribing(false); } }; const currentYear = new Date().getFullYear(); return ( ); }; export default Footer;