'use client' import { useState, useEffect } from 'react' import { Paper, Container, Box, Typography, Button, Divider, IconButton, Chip, } from '@mui/material' import { Facebook, Twitter, Instagram, YouTube, LinkedIn, GitHub, MusicNote as TikTok, Share as DefaultIcon } from '@mui/icons-material' import { useRouter } from 'next/navigation' import { useTranslations, useLocale } from 'next-intl' interface DynamicPage { id: string title: string slug: string showInFooter: boolean footerOrder?: number } interface SocialMediaLink { id: string platform: string name: string url: string icon: string order: number } export function Footer() { const [dynamicPages, setDynamicPages] = useState([]) const [socialLinks, setSocialLinks] = useState([]) const router = useRouter() const t = useTranslations('home') const tSeo = useTranslations('seo') const locale = useLocale() useEffect(() => { fetchDynamicPages() fetchSocialLinks() }, []) const fetchDynamicPages = async () => { try { const response = await fetch('/api/pages?location=footer') if (response.ok) { const data = await response.json() setDynamicPages(data.data || []) } } catch (error) { console.error('Failed to fetch dynamic pages:', error) } } const fetchSocialLinks = async () => { try { const response = await fetch('/api/social-media') if (response.ok) { const data = await response.json() setSocialLinks(data.data || []) } } catch (error) { console.error('Failed to fetch social media links:', error) } } const getCurrentYear = () => { return new Date().getFullYear() } const renderSocialIcon = (iconName: string) => { const iconMap = { 'Facebook': Facebook, 'Twitter': Twitter, 'Instagram': Instagram, 'YouTube': YouTube, 'LinkedIn': LinkedIn, 'GitHub': GitHub, 'TikTok': TikTok } const IconComponent = iconMap[iconName as keyof typeof iconMap] || DefaultIcon return } return ( {/* Brand */} {t('footer.brand')} {tSeo('footer')} {/* Quick Links */} {t('footer.quickLinks.title')} {/* Static important links */} {/* Dynamic pages - filtered for non-legal pages */} {dynamicPages .filter(page => !['terms', 'privacy', 'cookies', 'gdpr'].includes(page.slug)) .sort((a, b) => (a.footerOrder || 999) - (b.footerOrder || 999)) .map((page) => ( ))} {/* Legal */} {t('footer.legal.title')} {/* Dynamic legal pages */} {dynamicPages .filter(page => ['terms', 'privacy', 'cookies', 'gdpr'].includes(page.slug)) .sort((a, b) => (a.footerOrder || 999) - (b.footerOrder || 999)) .map((page) => ( ))} {/* Social */} {t('footer.social.title')} {socialLinks.map((link) => ( {renderSocialIcon(link.icon)} ))} {socialLinks.length === 0 && ( No social media links configured )} © {getCurrentYear()} Biblical Guide - {locale === 'ro' ? 'Făcut cu ❤️ și 🙏' : 'Made with ❤️ and 🙏'} ) }