import React, { useState, useRef, useLayoutEffect } from 'react'; import { motion, AnimatePresence } from 'framer-motion'; import gsap from 'gsap'; import { ScrollTrigger } from 'gsap/ScrollTrigger'; gsap.registerPlugin(ScrollTrigger); const servicesData = [ { id: 1, category: 'IT Infrastructure', title: 'Windows 11 Transition', description: 'Upgrade to Windows 11 before October 2025 to ensure continued security support and take advantage of the latest features.', icon: 'desktop_windows', image: 'https://lh3.googleusercontent.com/aida-public/AB6AXuBMpd_cFINnFibfNErBs8OVAAyDQYTRXix88YH91QImuGi11XGwlY_QUB2R9htcC1h_fTXUeftdEieGT-oi5p5TBjpAyW-86mSsXu-rqhRTBsJlAGuE37bxJES4DUayktXIToEcF-M4PyXdyyTPIYtpYrxK18b2-sPwMzuzCL0LpgJwd5EoYxAkrJQ7W4eBrIG2e9Cw9sY0dJpXJy-TRgwBG0nk-S7W4Y0s3U9w--AzE4fcUimeGMqWwdCncU5tnETmkrkDNFiCyKSA' }, { id: 2, category: 'Web Services', title: 'Web Services', description: 'Web design, domain registration, email services, and more to establish and enhance your online presence.', icon: 'language', image: 'https://lh3.googleusercontent.com/aida-public/AB6AXuCxibXNCB5mU7MdWE5znMWnQUc9-d2ZoYF7LXK1CMssnvaFz2ZsGzyxXMbqDmely-UfxapqILD5-Exeo1wlQZKg8T2MK4vjlyAMaehoJoqTy2hHh8rxj46i8CKb4-ILL2JswBc98nJt_Fo1DfcDH0dHH5Zz6H4R2Jm1deViSW8Sp2zNp1sTc4eRHy1URiSRQFcr1C8rca6dKiuNDuyDiUmmesqHobXGItaBeFjJC-0OatWpKbr0zF-Y5qvk9Yl5FY2KUcDY9AcTfelu' }, { id: 3, category: 'IT Infrastructure', title: 'Performance Upgrades', description: 'Enhance your desktops and laptops with SSDs, maintain your Windows installations, and achieve dramatic performance boosts.', icon: 'speed', image: 'https://lh3.googleusercontent.com/aida-public/AB6AXuBs2fGGwp4EkMarA9Uvy7IOqyW0Pzxzt-94Bsr8Tkbem4uHPq-vMEmGgKuEmds2zKwPrw2nVcvL3MjjKYWieLSLh5pVUbbK6T9aDxt2xhvo4trARZobhzoQCJfI-r6aGW_aqfwC5XxOr9VA3YdnNnYEgkfW_TWrUWYa6mD8X0KdVG3sLimA8p7qWxIqUzFFV82twn60rP4OwLdIsc6t1OGnJzjemxL1Aw05aDo6Ckfr0a1oZ2kD4xKeTkG--zUhezvXB9I03l6f3b46' }, { id: 4, category: 'IT Infrastructure', title: 'Printer & Scanner Installation', description: 'Professional installation and configuration of printers and scanners to ensure seamless integration into your workflow.', icon: 'print', image: '/assets/services/printer-scanner.png' }, { id: 5, category: 'IT Infrastructure', title: 'New/Refurbished Desktop Hardware', description: 'Supply and installation of new or refurbished desktop hardware, tailored to meet your business requirements.', icon: 'computer', image: '/assets/services/desktop-hardware.png' }, { id: 6, category: 'Security', title: 'VPN Setup', description: 'Configure Virtual Private Networks to allow secure remote access to your internal network from anywhere.', icon: 'vpn_lock', image: '/assets/services/vpn-setup.png' }, { id: 7, category: 'Networking', title: 'Network Infrastructure Support', description: 'Robust network solutions to ensure connectivity, security, and efficiency, including routers, access points, and switches.', icon: 'lan', image: '/assets/services/network-infrastructure.png' }, { id: 8, category: 'Networking', title: 'Network Attached Storage', description: 'Selection, setup, and maintenance of Network Attached Storage solutions to provide scalable and reliable data storage.', icon: 'storage', image: '/assets/services/nas-storage.png' } ]; const categories = ['All', 'IT Infrastructure', 'Web Services', 'Security', 'Networking']; const Services: React.FC<{ preview?: boolean }> = ({ preview = false }) => { const [activeCategory, setActiveCategory] = useState('All'); const containerRef = useRef(null); const imagesRef = useRef<(HTMLDivElement | null)[]>([]); // Reset refs on render to handle filtering updates imagesRef.current = []; const filteredServices = activeCategory === 'All' ? servicesData : servicesData.filter(s => s.category === activeCategory || (activeCategory === 'Web Development' && s.category === 'Security')); const displayedServices = preview ? servicesData.slice(0, 3) : filteredServices; useLayoutEffect(() => { const ctx = gsap.context(() => { imagesRef.current.forEach((imgWrapper) => { if (!imgWrapper) return; gsap.to(imgWrapper, { yPercent: 30, ease: "none", scrollTrigger: { trigger: imgWrapper.closest('.group'), start: "top bottom", end: "bottom top", scrub: true } }); }); }, containerRef); return () => ctx.revert(); }, [filteredServices]); return (
Our Services

Comprehensive IT solutions tailored to your business needs.

{categories.map((cat) => ( ))}
{filteredServices.map((service, index) => ( {/* Image Container */}
{/* Parallax Wrapper */}
{ if (el) imagesRef.current.push(el); }} className="w-full h-[140%] -mt-[20%]" > {service.title}
{service.icon}

{service.title}

{service.description}

Learn More arrow_forward
))}
{preview && (
View all services arrow_forward
)}
); }; export default Services;