import Link from '@/core/components/elements/Link/Link'; import { useEffect, useState } from 'react'; import useDevice from '@/core/hooks/useDevice'; import { Swiper, SwiperSlide } from 'swiper/react'; const BannerSection = () => { const [privateBrandData, setPrivateBrandData] = useState([]); const [homeBannerData, setHomeBannerData] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); const { isMobile, isDesktop } = useDevice(); useEffect(() => { const fetchAllBanners = async () => { try { // Fetch private brand banners const privateBrandRes = await fetch( '/api/banner-section?type=private-brand' ); if (privateBrandRes.ok) { const privateBrandResult = await privateBrandRes.json(); setPrivateBrandData(privateBrandResult.data || []); } // Fetch home banners const homeBannerRes = await fetch( '/api/banner-section?type=home-banner' ); if (homeBannerRes.ok) { const homeBannerResult = await homeBannerRes.json(); setHomeBannerData(homeBannerResult.data || []); } } catch (err) { setError('Network error'); } finally { setLoading(false); } }; fetchAllBanners(); }, []); // if (loading) return
Loading...
; // if (error) return
Error: {error}
; return (
{/* Private Brand Section */} {privateBrandData && privateBrandData.length > 0 && (
Private Brand
{/* Desktop Grid View */} {isDesktop && (
{privateBrandData.map((banner, index) => ( {banner.name ))}
)} {/* Mobile Swiper View */} {isMobile && ( {privateBrandData.map((banner, index) => ( {banner.name ))} )}
)} {/* Home Banner Section */} {homeBannerData && homeBannerData.length > 0 && (
{homeBannerData.map((banner, index) => (
{banner.name { e.target.style.display = 'none'; }} />
))}
)}
); }; export default BannerSection;