"use client"; import React, { useState, useEffect, useRef } from "react"; import { ChevronRight, Gem, Search, ChevronDown } from "lucide-react"; import authAxios from "@/utils/axios"; import Image from "next/image"; const PremiumBanner = ({ data }) => { const { header1, description1, header_quote1, header_quote2, header_quote3, header_quote4, } = data || {}; const [formData, setFormData] = useState({ first_name: "", last_name: "", email: "", phone_number: "", country: "", }); const [message, setMessage] = useState(""); const [countries, setCountries] = useState([]); const [filteredCountries, setFilteredCountries] = useState([]); const [isDropdownOpen, setIsDropdownOpen] = useState(false); const [searchTerm, setSearchTerm] = useState(""); const dropdownRef = useRef(null); useEffect(() => { const fetchCountries = async () => { try { const response = await fetch("https://countriesnow.space/api/v0.1/countries/"); const data = await response.json(); if (!data.error && data.data) { setCountries(data.data); setFilteredCountries(data.data); } } catch (error) { console.error("Error fetching countries:", error); } }; fetchCountries(); }, []); useEffect(() => { const handleClickOutside = (event) => { if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { setIsDropdownOpen(false); } }; document.addEventListener("mousedown", handleClickOutside); return () => { document.removeEventListener("mousedown", handleClickOutside); }; }, []); useEffect(() => { if (searchTerm) { const filtered = countries.filter(country => country.country.toLowerCase().includes(searchTerm.toLowerCase()) ); setFilteredCountries(filtered); } else { setFilteredCountries(countries); } }, [searchTerm, countries]); const handleInputChange = (e) => { const { name, value } = e.target; setFormData((prevState) => ({ ...prevState, [name]: value, })); }; const handleCountrySearch = (e) => { setSearchTerm(e.target.value); }; const selectCountry = (countryName) => { setFormData(prev => ({ ...prev, country: countryName })); setIsDropdownOpen(false); setSearchTerm(""); }; const handleSubmit = async (e) => { e.preventDefault(); if (!formData.country) { setMessage("Please select your country."); return; } try { const response = await authAxios.post( "/consultation/booking/create/", formData ); if (response.status === 201) { setFormData({ first_name: "", last_name: "", email: "", phone_number: "", country: "", }); setMessage("Consultation experts will contact you shortly."); setTimeout(() => { setMessage(""); }, 5000); } else { setMessage("An error occurred. Please try again."); } } catch (error) { console.error("Error submitting form:", error); setMessage("An error occurred. Please try again."); } }; return (

Book a Free Consultation

Get expert guidance tailored to your needs.

setIsDropdownOpen(!isDropdownOpen)} > {formData.country || "Select Country"}
{isDropdownOpen && (
{filteredCountries.length > 0 ? ( filteredCountries.map((country, index) => (
selectCountry(country.country)} > {country.country}
)) ) : (
No countries found
)}
)}
{message && (

{message}

)}

{header1 ?? "Why Choose Our Consultation?"}

{description1 ?? "Gain expert insights and personalized guidance."}

  • {header_quote1 ?? "Expert guidance from experienced professionals"}
  • {header_quote2 ?? "Tailored advice for your specific needs"}
  • {header_quote3 ?? "Unlock clarity and direction in life"}
  • {header_quote4 ?? "Free initial text-based consultation"}
); }; export default PremiumBanner;