import View from '@/views/Views' import React, { useEffect, useState } from 'react' import { useLocation, Link } from 'react-router-dom' import { FaBars, FaTimes, FaHome, FaInfoCircle, FaVectorSquare, FaBriefcase, FaBook, FaPhone, FaFacebook, FaTwitter, FaLinkedin, FaInstagram, FaMapPin, FaEnvelope, FaPlayCircle, FaBookOpen } from 'react-icons/fa'; import Logo from '@/views/public/Logo' import { ROUTES_ENUM } from '@/routes/route.constant' import { useLocalization } from '@/utils/hooks/useLocalization' import LanguageSelector from '../template/LanguageSelector' import Demo from '@/views/public/Demo' import { ScrollContext } from '@/contexts/ScrollContext' interface NavLink { resourceKey?: string name: string path?: string action?: () => void icon?: React.ComponentType } const PublicLayout = () => { const location = useLocation() const { translate } = useLocalization() const [isOpen, setIsOpen] = useState(false) const [scrolled, setScrolled] = useState(false) const [isDemoOpen, setIsDemoOpen] = useState(false) const currentYear = new Date().getFullYear() useEffect(() => { window.scrollTo(0, 0) }, [location.pathname]) useEffect(() => { const handleScroll = () => { const isScrolled = window.scrollY > 10 if (isScrolled !== scrolled) { setScrolled(isScrolled) } } window.addEventListener('scroll', handleScroll) return () => window.removeEventListener('scroll', handleScroll) }, [scrolled]) const toggleMenu = () => setIsOpen(!isOpen) const navLinks: NavLink[] = [ { resourceKey: 'App.Home', name: translate('::App.Home'), path: ROUTES_ENUM.public.home, icon: FaHome, }, { resourceKey: 'App.About', name: translate('::App.About'), path: ROUTES_ENUM.public.about, icon: FaInfoCircle, }, { resourceKey: 'App.Services', name: translate('::App.Services'), path: ROUTES_ENUM.public.services, icon: FaBriefcase, }, { resourceKey: 'Public.nav.products', name: translate('::App.Orders'), path: ROUTES_ENUM.public.products, icon: FaVectorSquare, }, { resourceKey: 'Public.nav.blog', name: translate('::App.BlogManagement'), path: ROUTES_ENUM.public.blog, icon: FaBookOpen, }, { resourceKey: 'App.Demos', name: translate('::App.Demos'), action: () => setIsDemoOpen(true), icon: FaPlayCircle, }, { resourceKey: 'Public.nav.contact', name: translate('::App.Contact'), path: ROUTES_ENUM.public.contact, icon: FaPhone, }, { resourceKey: 'Public.nav.giris', name: translate('::Public.nav.giris'), path: ROUTES_ENUM.authenticated.login, }, ] const getNavItemClass = (resourceKey?: string) => { switch (resourceKey) { case 'Public.nav.giris': return 'bg-blue-600 rounded px-2 py-1' case 'Public.nav.basket': return 'bg-green-600 rounded px-2 py-1' default: return '' } } return (
{/* HEADER */}
{/* Desktop Navigation */} {/* Mobile Menu Button */}
{/* Mobile Navigation */} {isOpen && (
)}

{translate('::Public.footer.companyInfo')}

{/* Quick Links */}

{translate('::Public.footer.quickLinksTitle')}

  • {translate('::App.Home')}
  • {translate('::App.Orders')}
  • {translate('::App.Services')}
  • {translate('::App.About')}
  • {translate('::App.BlogManagement')}
  • {translate('::App.Contact')}
{/* Services */}

{translate('::Public.services.title')}

  • {translate('::Public.services.software.title')}
  • {translate('::Public.services.web.title')}
  • {translate('::Public.services.mobile.title')}
  • {translate('::Public.services.database.title')}
  • {translate('::Public.services.integration.title')}
  • {translate('::Public.services.consulting.title')}
{/* Contact Info */}

{translate('::App.Contact')}

© {currentYear} Sözsoft Platform. {translate('::Public.footer.copyright')}

  • {translate('::Public.footer.privacyPolicy')}
  • {translate('::Public.footer.termsOfUse')}
{/* Demo Modal */} setIsDemoOpen(false)} />
) } export default PublicLayout