'use client'; import React, { useState } from 'react'; import Link from 'next/link'; import Image from 'next/image'; import { useReveal } from '@/hooks/useReveal'; import GSAPAnimator from '@/components/GSAPAnimator'; import SectionEyebrow from '@/components/SectionEyebrow'; function Reveal({ children, delay = 0 }: { children: React.ReactNode; delay?: number }) { const { ref, visible } = useReveal(); return (
{children}
); } export default function AboutUsPage() { return (
{/* ── HERO ── */}
{/* Background photo */}
{/* Accent blobs */}
{/* Big ghost text */}
LOYALY

The People
Behind Loyaly.

We're not just building a product. We're redefining retail, one store at a time.

{/* ── OUR STORY ── */}
Our Story

We started with
a simple idea.

Offline retail deserves the same intelligence as online. A store owner in Coimbatore shouldn't be flying blind while an e-commerce algorithm knows exactly what every user wants.

Today, we're building a connected ecosystem where businesses grow smarter and customers shop better together.

{/* ── MISSION & VISION ── */}
{/* Ambient top glow */}
{/* Section header */}

What drives everything we do.

{[ { label: 'Mission', emoji: '🎯', bg: 'linear-gradient(160deg, #ffffff 0%, #fdf4e2 100%)', textColor: '#171512', border: 'rgba(244,190,40,0.45)', pillBg: 'rgba(244,190,40,0.14)', pillText: '#8a5a14', pillBorder: 'rgba(244,190,40,0.5)', orb1: 'rgba(244,190,40,0.20)', orb2: 'rgba(255,152,0,0.14)', gfx: 'rgba(244,190,40,0.38)', body: 'Loyaly exists to close the gap between digital discovery and physical purchase. We give local stores the tools to compete, and give shoppers a reason to keep coming back.', }, { label: 'Vision', emoji: '🔮', bg: 'linear-gradient(160deg, #fff7e2 0%, #ffe6a8 100%)', textColor: '#171512', border: 'rgba(244,190,40,0.55)', pillBg: '#f4be28', pillText: '#171512', pillBorder: 'rgba(201,150,15,0.6)', orb1: 'rgba(255,255,255,0.7)', orb2: 'rgba(244,190,40,0.3)', gfx: 'rgba(201,150,15,0.32)', body: 'Empowering every neighbourhood, making exceptional in-store experiences and real Lyts accessible to all.', }, ].map((mv, i) => (
{/* Animated background orbs (clipped to the card) */}
{/* Pop-out corner sticker */} {mv.emoji} {/* Tilted sticker-pill label */} {mv.emoji} {mv.label}

{mv.body}

))}
{/* ── MARKET OPPORTUNITY ── */}
Market Opportunity

13 Million Stores.
One Opportunity.

India's retail market is one of the largest and fastest-growing in the world. We're building Loyaly for the stores that power it, and the shoppers who love them.

{[ { val: '13 Million+', label: 'Total Retail Stores Across India' }, { val: '2 Million+', label: 'Organised & High-Footfall Stores' }, { val: '50,000+', label: 'Stores In Our Launch Cities' }, ].map((m) => (
{m.val}
{m.label}
))}
{/* ── TEAM ── */} {/* ── CLOSE: POINT TO THE CREW ── */}

"We're not just building a product. We're redefining retail."

See Our Products → Join Us
); } /* ── Team Carousel ─────────────────────────────────────────────────────── */ const TEAM_MEMBERS = [ { name: 'Coming Soon', role: 'Co-Founder & CEO', gradient: 'linear-gradient(160deg,#1a0a3a 0%,#4a2080 100%)', initials: '?' }, { name: 'Coming Soon', role: 'Head of Product', gradient: 'linear-gradient(160deg,#0a1a3a 0%,#1a5080 100%)', initials: '?' }, { name: 'Coming Soon', role: 'Lead Engineer', gradient: 'linear-gradient(160deg,#1a1200 0%,#f4be28 100%)', initials: '✦' }, { name: 'Coming Soon', role: 'Head of Design', gradient: 'linear-gradient(160deg,#0a2a1a 0%,#1a8050 100%)', initials: '?' }, { name: 'Coming Soon', role: 'Growth & Marketing', gradient: 'linear-gradient(160deg,#2a0a1a 0%,#80203a 100%)', initials: '?' }, ]; function TeamCarousel() { const [active, setActive] = useState(2); const CARD_W = 320; const CARD_GAP = 24; const STEP = CARD_W + CARD_GAP; return (
{/* Grid bg */}
{/* Header */}
The Team

Builders. Thinkers.
Retail obsessives.

Profiles coming soon. We're still busy building the future of retail.

{/* Carousel viewport */}
{/* Sliding track — translate so active card is always centered */}
{TEAM_MEMBERS.map((member, i) => { const dist = Math.abs(i - active); const isActive = i === active; const scale = isActive ? 1 : dist === 1 ? 0.82 : 0.68; const blur = isActive ? 0 : dist === 1 ? 2 : 4; const opacity = isActive ? 1 : dist === 1 ? 0.72 : 0.42; const cardH = isActive ? '100%' : dist === 1 ? '82%' : '68%'; return (
setActive(i)} style={{ flexShrink: 0, width: CARD_W, height: cardH, borderRadius: 32, background: member.gradient, cursor: isActive ? 'default' : 'pointer', filter: `blur(${blur}px)`, transform: `scale(${scale})`, opacity, transition: 'all 0.6s cubic-bezier(0.22,1,0.36,1)', position: 'relative', overflow: 'hidden', boxShadow: isActive ? '0 40px 100px rgba(0,0,0,0.75)' : '0 10px 40px rgba(0,0,0,0.35)', border: isActive ? '1.5px solid rgba(244,190,40,0.4)' : '1px solid rgba(255,255,255,0.07)', alignSelf: 'center', }} > {/* Dark gradient overlay */}
{/* Watermark */}
{member.initials}
{/* Avatar */}
{/* Name & role */}
{member.name}
{member.role}
{/* Gold dot */} {isActive && (
)}
); })}
{/* Edge fade masks */}
{/* Navigation dots + arrow buttons */}
{/* Left arrow */} {/* Dots */}
{TEAM_MEMBERS.map((_, i) => (
{/* Right arrow */}
); }