"use client"; import { useEffect, useRef } from "react"; import { cn } from "@/lib/utils"; import { getGsap } from "@/lib/lazyGsap"; const LOGOS = [ { id: 1, name: "Mintlify", src: "/images/logos/mintlify_logo.svg.svg", className: "scale-90 md:scale-70" }, { id: 3, name: "Firecrawl", src: "/images/logos/Firecrawl.svg.svg", className: "scale-95 md:scale-75 -translate-y-0.5" }, { id: 4, name: "Mastra", src: "/images/logos/Mastra.svg.svg", className: "scale-105 md:scale-95" }, { id: 2, name: "Browser Use", src: "/images/logos/Browser use.svg", className: "scale-85 md:scale-65" }, { id: 5, name: "T3.chat", src: "/images/logos/T3_svg.svg", className: "scale-65 md:scale-55" }, ]; export default function LogoWall() { const sectionRef = useRef(null); useEffect(() => { const section = sectionRef.current; if (!section) return; let ctx: { revert: () => void } | null = null; let cancelled = false; if (window.innerWidth < 1024) return; getGsap().then((gsap) => { if (cancelled) return; ctx = gsap.context(() => { gsap.set(".logo-wall-title", { opacity: 0, y: 20, scale: 0.97, transformOrigin: "center bottom", }); gsap.set(".logo-wall-item", { opacity: 0, y: 15, scale: 0.96, }); const tl = gsap.timeline({ defaults: { overwrite: "auto" }, delay: 0.35, }); tl.to(".logo-wall-title, .logo-wall-item", { opacity: 1, y: 0, scale: 1, duration: 1.1, ease: "power3.out", }); }, section); }); return () => { cancelled = true; ctx?.revert(); }; }, []); return (
Powering millions of customers for the best startups
{LOGOS.map((logo) => (
{logo.src && ( {logo.name} )}
))}
); }