import { useState, useEffect } from "react"; import { Link, useLocation } from "react-router-dom"; import { Menu, X, Phone, Mail, ChevronDown, Search, User, Wifi, PhoneCall, Building2, Signal, Server, Network, Cable, Cloud, Shield, Settings, Laptop, Globe } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { SearchDialog } from "@/components/SearchDialog"; import { motion, AnimatePresence } from "framer-motion"; import targoLogo from "@/assets/targo-logo.png"; // Business menu items with icons and descriptions const businessMenuItems = [ { category: "CONNECTIVITÉ", items: [ { label: "Internet affaires", href: "/business/internet", icon: Globe, description: "Connexion fibre haute vitesse pour entreprises" }, { label: "SD-WAN", href: "/business/sd-wan", icon: Network, description: "Réseau intelligent multi-sites" }, { label: "Réseaux inter-sites", href: "/business/reseau-inter-sites", icon: Cable, description: "Liaisons dédiées entre vos succursales" }, ] }, { category: "COMMUNICATIONS", items: [ { label: "Téléphonie IP", href: "/business/telephonie", icon: PhoneCall, description: "Système téléphonique cloud complet" }, { label: "Liaisons SIP", href: "/business/sip", icon: Phone, description: "Trunks SIP pour votre PBX" }, { label: "Amplification cellulaire", href: "/business/amplification-cellulaire", icon: Signal, description: "Signal mobile amplifié partout" }, ] }, { category: "INFRASTRUCTURE", items: [ { label: "Services cloud", href: "/business/cloud", icon: Cloud, description: "Hébergement et sauvegarde sécurisés" }, { label: "Virtualisation", href: "/business/virtualisation", icon: Server, description: "Infrastructure virtualisée sur mesure" }, { label: "Microsoft 365", href: "/business/microsoft-365", icon: Laptop, description: "Suite Microsoft pour entreprises" }, ] }, { category: "SERVICES", items: [ { label: "WiFi commercial", href: "/business/wifi", icon: Wifi, description: "WiFi haute densité pour commerces" }, { label: "Câblage structuré", href: "/business/cablage", icon: Cable, description: "Installation réseau professionnelle" }, { label: "Services gérés", href: "/business/services-geres", icon: Settings, description: "Gestion TI complète externalisée" }, { label: "Sécurité DDoS", href: "/business/securite", icon: Shield, description: "Protection contre les cyberattaques" }, { label: "Multilogement", href: "/business/multilogement", icon: Building2, description: "Solutions pour immeubles résidentiels" }, ] } ]; const Header = () => { const [isMenuOpen, setIsMenuOpen] = useState(false); const [isSearchOpen, setIsSearchOpen] = useState(false); const [isScrolled, setIsScrolled] = useState(false); const location = useLocation(); useEffect(() => { const handleScroll = () => { setIsScrolled(window.scrollY > 20); }; window.addEventListener("scroll", handleScroll); return () => window.removeEventListener("scroll", handleScroll); }, []); // Lock body scroll when mobile menu is open useEffect(() => { if (isMenuOpen) { document.body.style.overflow = "hidden"; } else { document.body.style.overflow = ""; } return () => { document.body.style.overflow = ""; }; }, [isMenuOpen]); useEffect(() => { const down = (e: KeyboardEvent) => { if (e.key === "k" && (e.metaKey || e.ctrlKey)) { e.preventDefault(); setIsSearchOpen((open) => !open); } }; document.addEventListener("keydown", down); return () => document.removeEventListener("keydown", down); }, []); const navLinks = [ { label: "Internet", href: "/internet" }, { label: "Télévision", href: "/television" }, { label: "Téléphone", href: "/telephone" }, { label: "Affaires", href: "/business", isMegaMenu: true }, { label: "À propos", href: "/support", submenu: [ { label: "Actualités", href: "/actualites" }, { label: "Support", href: "/support" }, ] }, ]; return (
{/* Top bar */}
514.448.0773 support@targo.ca
La puissance de la fibre locale
{/* Main nav */}
); }; export default Header;