import View from '@/views' import React, { useEffect, useState } from 'react' import { useLocation, Link } from 'react-router-dom' import { Menu, X, Home, Info, Package, Briefcase, BookOpen, Phone, Facebook, Twitter, Linkedin, Instagram, MapPin, Mail, PlayCircle, } from 'lucide-react' 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: 'Public.nav.home', name: translate('::Public.nav.home'), path: '/home', icon: Home, }, { resourceKey: 'Public.nav.about', name: translate('::Public.nav.about'), path: '/about', icon: Info, }, { resourceKey: 'Public.nav.services', name: translate('::Public.nav.services'), path: '/services', icon: Briefcase, }, { resourceKey: 'Public.nav.products', name: translate('::Public.nav.products'), path: '/products', icon: Package, }, { resourceKey: 'Public.nav.blog', name: translate('::Public.nav.blog'), path: '/blog', icon: BookOpen, }, { resourceKey: 'Public.nav.demo', name: translate('::Public.nav.demo'), action: () => setIsDemoOpen(true), icon: PlayCircle, }, { resourceKey: 'Public.nav.contact', name: translate('::Public.nav.contact'), path: '/contact', icon: Phone, }, { resourceKey: 'Public.nav.giris', name: translate('::Public.nav.giris'), path: '/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('::Public.nav.home')}
  • {translate('::Public.nav.products')}
  • {translate('::Public.nav.services')}
  • {translate('::Public.nav.about')}
  • {translate('::Public.nav.blog')}
  • {translate('::Public.nav.contact')}
{/* Services */}

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

  • {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('::Public.nav.contact')}

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

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