"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
BackgroundGradientAnimation
Animated aurora wash behind any content
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]) => (
))}
{}}
onSubmit={() => {}}
/>
);
}