"use client"; import { cn } from "@/lib/utils"; import { motion } from "motion/react"; import { AuroraBackground } from "@/components/ui/aurora-background"; import { BackgroundBeams } from "@/components/ui/background-beams"; import { BackgroundGradientAnimation } from "@/components/ui/background-gradient-animation"; import { BentoGrid, BentoGridItem } from "@/components/ui/bento-grid"; import { CardSpotlight } from "@/components/ui/card-spotlight"; import { CardStack } from "@/components/ui/card-stack"; import { DirectionAwareHover } from "@/components/ui/direction-aware-hover"; import { EncryptedText } from "@/components/ui/encrypted-text"; import { EvervaultCard } from "@/components/ui/evervault-card"; import { FlipWords } from "@/components/ui/flip-words"; import { HeroHighlight, Highlight } from "@/components/ui/hero-highlight"; import { InfiniteMovingCards } from "@/components/ui/infinite-moving-cards"; import { MovingBorder } from "@/components/ui/moving-border"; import { PinContainer } from "@/components/ui/3d-pin"; import { PlaceholdersAndVanishInput } from "@/components/ui/placeholders-and-vanish-input"; import { SparklesCore } from "@/components/ui/sparkles"; import { ThreeDMarquee } from "@/components/ui/3d-marquee"; import { TracingBeam } from "@/components/ui/tracing-beam"; import { TypewriterEffect } from "@/components/ui/typewriter-effect"; import { AnimatedTooltip } from "@/components/ui/animated-tooltip"; function Card({ children, className, label, }: { children: React.ReactNode; className?: string; label?: string; }) { return (
{children} {label && ( {label} )}
); } function SectionLabel({ id, index, title }: { id: string; index: string; title: string }) { return (
{index}

{title}

); } const BENTO_ITEMS = [ { title: "Vendored, not installed", description: "Each component ships as source in components/ui — zero registry lock-in.", header: "✦", className: "md:col-span-2", }, { title: "Tailwind v4 native", description: "Same cn() util and zinc palette as the rest of the template.", header: "❖", }, { title: "Zero-warning lint", description: "Vendored dir has its own scoped eslint override.", header: "✓", className: "md:col-span-2", }, ]; const PEOPLE = [ { id: 1, name: "Aceternity", designation: "ui.aceternity.com", image: "/vercel.svg" }, { id: 2, name: "Vercel", designation: "nextjs-template", image: "/next.svg" }, { id: 3, name: "Template", designation: "Shadcn + Aceternity", image: "/vercel.svg" }, ]; const STACK_CARDS = [ { id: 1, name: "3D Pin", designation: "Hover cards", content: <>A card that lifts on hover, with a beam behind it., }, { id: 2, name: "Tracing Beam", designation: "Scroll guide", content: <>A beam that traces your scroll, guiding the eye down the page., }, { id: 3, name: "Evervault", designation: "Encrypted hover", content: <>Patterns react to your mouse while the card sits above an animated capsule., }, ]; const TESTIMONIALS_MOCK = [ { quote: "The fifty components slot straight into the template and just work.", name: "Next.js Template", title: "Vendored showcase", }, { quote: "Hover, scroll and type — everything below is live, not a static screenshot.", name: "Aceternity Registry", title: "ui.aceternity.com", }, { quote: "Built with motion/react and Tailwind v4, matching the template's own stack.", name: "Motion", title: "motion/react", }, ]; export function ShowcaseGallery() { return (

50 components · vendored · lint-clean

Aceternity UI, wired for this template

Animated cards, beams, bento grids and text effects — pulled from the registry, adapted to Tailwind v4 + motion/react, and demoed live on this page.

BackgroundBeams — hover to see the glow

SparklesCore

BackgroundGradientAnimation

Animated aurora wash behind any content

Hover me

3D Pin

Perspective lift

on hover

CardSpotlight

Move your cursor for a spotlight.

DirectionAwareHover

{BENTO_ITEMS.map((item, i) => ( ))} MovingBorder
Text effects with{" "} mouse-follow highlight
Animate text like
{[ ["Beam one", "The beam follows your scroll."], ["Beam two", "It traces between sticky sections."], ["Beam three", "Pairs perfectly with tall content."], ].map(([t, d]) => (

{t}

{d}

))}
{}} onSubmit={() => {}} />
); }