"use client"; import { useEffect, useRef, useState } from "react"; import Link from "next/link"; import { gsap } from "gsap"; import { useGSAP } from "@gsap/react"; import { ArrowRight } from "@/components/ui/icons"; import AnimatedButton from "@/components/ui/AnimatedButton"; /** * Full-bleed image hero (GSAP). The showcase image spans the full width as * the section background, with floating glass cards overlaid — a tag pill, * a tabbed info card, and an animated, tilted feature card. * * Swap the visuals by replacing the slide images (HeroBanner*.jpg) and the * feature-card image in /public/images. */ const HEADLINE_2 = ["Digital", "Products"]; // Auto-rotating slides — each drives the full-width image + info card. const SLIDES = [ { label: "Build", image: "/images/HeroBanner3.jpg", title: "Engineering that performs.", desc: "Production-grade web, mobile and AI products — designed to perform and built to scale.", }, { label: "Scale", image: "/images/HeroBanner2.jpg", title: "Grow without limits.", desc: "Cloud, DevOps and data systems that keep you fast, secure and always-on as you scale.", }, ]; export default function Hero() { const root = useRef(null); const [tab, setTab] = useState(0); // Auto-advance through slides; resets whenever `tab` changes (manual or auto). useEffect(() => { const id = setTimeout(() => setTab((t) => (t + 1) % SLIDES.length), 4500); return () => clearTimeout(id); }, [tab]); const slide = SLIDES[tab]; useGSAP( () => { const tl = gsap.timeline({ defaults: { ease: "power3.out", duration: 0.8 } }); tl.from(".hero-eyebrow", { opacity: 0, y: 16, duration: 0.6 }) .from(".hero-word", { yPercent: 120, opacity: 0, stagger: 0.07, duration: 0.7 }, "-=0.2") .from(".hero-sub", { opacity: 0, y: 20, duration: 0.6 }, "-=0.2") .from(".hero-cta", { opacity: 0, y: 20, stagger: 0.1, duration: 0.6 }, "-=0.3") .from(".hero-pill", { opacity: 0, y: -16, duration: 0.6 }, "-=0.3") .from(".hero-info", { opacity: 0, x: -28, duration: 0.7 }, "-=0.4") .from(".hero-card", { opacity: 0, scale: 0.9, duration: 0.7 }, "-=0.5"); gsap.to(".hero-glow-1", { scale: 1.15, opacity: 0.8, duration: 8, repeat: -1, yoyo: true, ease: "sine.inOut" }); gsap.to(".hero-glow-2", { scale: 1.1, opacity: 0.7, duration: 10, repeat: -1, yoyo: true, ease: "sine.inOut" }); // Floating feature card (bottom-right) — gentle bob gsap.to(".hero-card", { y: -14, duration: 3, repeat: -1, yoyo: true, ease: "sine.inOut" }); gsap.to(".hero-pill", { y: 8, duration: 4, repeat: -1, yoyo: true, ease: "sine.inOut" }); }, { scope: root } ); return (
{/* Full-width background — crossfading slide layers w/ slow zoom */}
{SLIDES.map((s, i) => (
))}
{/* Legibility + cinematic vignette */}
{/* Ambient glows */}
{/* Tag pill (top-left) */}
Capabilities +
{/* Eyebrow kicker */}
A technology studio for ambitious teams
{/* Headline */}

High-Performance {HEADLINE_2.map((w, i) => ( {w} {i < HEADLINE_2.length - 1 &&  } ))}

{/* Subtitle */}

We design, engineer and scale web, mobile and AI products — turning ambitious ideas into software that performs in the real world.

{/* CTAs */}
Start a project See our work
{/* Floating cards pinned to the bottom */}
{/* Info card (left) — gradient-ring glass */}
{SLIDES.map((s, i) => ( ))}
{/* Slideshow progress */}
{SLIDES.map((s, i) => (
{i === tab ? (
) : (
)}
))}

{slide.title}

{slide.desc}

Explore services
{/* Animated feature card (right, tilted) */}
Orbit AI Platform ★★★★★ 4.0
Featured case study
Let’s go
); }