"use client" import { useEffect, useRef, useState } from "react" import { Check, MapPin, Clock, Shield, Zap } from "lucide-react" const features = [ { icon: MapPin, title: "Locally Based", description: "We're right here in Auckland. Real people, real support, no overseas call centres." }, { icon: Clock, title: "Fast Response", description: "We understand downtime costs money. Our team responds quickly to get you back online." }, { icon: Shield, title: "Secure & Reliable", description: "Your data is safe with us. We use enterprise-grade security for all our services." }, { icon: Zap, title: "No Jargon", description: "We explain things in plain English. Tech shouldn't be complicated." } ] const benefits = [ "No lock-in contracts", "Free initial consultation", "Transparent pricing", "Ongoing support included", "NZ-based data hosting", "Small business specialists" ] function AnimatedCounter({ end, suffix = "" }: { end: number; suffix?: string }) { const [count, setCount] = useState(0) const ref = useRef(null) const [isVisible, setIsVisible] = useState(false) useEffect(() => { const observer = new IntersectionObserver( ([entry]) => { if (entry.isIntersecting) { setIsVisible(true) } }, { threshold: 0.5 } ) if (ref.current) { observer.observe(ref.current) } return () => observer.disconnect() }, []) useEffect(() => { if (!isVisible) return const duration = 2000 const steps = 60 const increment = end / steps let current = 0 const timer = setInterval(() => { current += increment if (current >= end) { setCount(end) clearInterval(timer) } else { setCount(Math.floor(current)) } }, duration / steps) return () => clearInterval(timer) }, [isVisible, end]) return (
{count}{suffix}
) } export function Features() { const [activeFeature, setActiveFeature] = useState(0) useEffect(() => { const interval = setInterval(() => { setActiveFeature((prev) => (prev + 1) % features.length) }, 4000) return () => clearInterval(interval) }, []) return (
{/* Section Header */}
Why Cloudrite?

Tech That Actually Works

We're not a faceless corporation. We're your friendly neighbourhood I.T team who genuinely cares about your business.

{/* Features Bento Grid */}
{/* Left side - Feature showcase */}
{/* Background decoration */}
{/* Feature icons row */}
{features.map((feature, index) => { const Icon = feature.icon return ( ) })}
{/* Active feature content */}
{features.map((feature, index) => (

{feature.title}

{feature.description}

))}
{/* Progress bar */}
{features.map((_, index) => (
))}
{/* Right side - Benefits list */}

What You Get With Us

{benefits.map((benefit, index) => (
{benefit}
))}
{/* Stats Row */}

Uptime Guarantee

Support Available

NZ

Hosted & Based

) }