diff --git a/app/components/layout/Header/HeaderTop.tsx b/app/components/layout/Header/HeaderTop.tsx index 6e20811..87b85d9 100644 --- a/app/components/layout/Header/HeaderTop.tsx +++ b/app/components/layout/Header/HeaderTop.tsx @@ -1,8 +1,56 @@ -import Link from 'next/link'; -import headerData from './header.json'; +"use client"; + +import { useEffect, useState } from "react"; +import Link from "next/link"; +import headerData from "./header.json"; + +interface HeaderData { + top: { + phone: string; + email: string; + location: string; + socialLinks: Array<{ + platform: string; + url: string; + icon: string; + }>; + languages: Array<{ + name: string; + value: string; + }>; + }; +} const HeaderTop = () => { - const { phone, email, location, socialLinks, languages } = headerData.top; + const [data, setData] = useState(headerData); + const [loading, setLoading] = useState(true); + + useEffect(() => { + const fetchHeaderData = async () => { + try { + const apiUrl = process.env.NEXT_PUBLIC_API_URL || "http://localhost:3000"; + const response = await fetch(`${apiUrl}/api/header`); + + if (response.ok) { + const result = await response.json(); + if (result.success && result.data && result.data.top) { + setData({ + top: result.data.top, + }); + } + } + } catch (error) { + console.warn("Failed to fetch header data from API, using fallback:", error); + // Use fallback data (already set as initial state) + } finally { + setLoading(false); + } + }; + + fetchHeaderData(); + }, []); + + const { phone, email, location, socialLinks, languages } = data.top; return (
@@ -13,7 +61,7 @@ const HeaderTop = () => {
  • Help Line - {phone} + {phone}
  • @@ -34,15 +82,13 @@ const HeaderTop = () => {
  • - - {languages[0]?.name || 'English'} - + {languages[0]?.name || "English"}