content /
Logo Cloud
Trusted-by logo strip with 6 company logos rendered as styled abbreviation boxes. Clean, professional, muted palette.
Preview
Source
tsx
"use client";
import { motion } from "framer-motion";
import { logos } from "@/lib/placeholders";
const accentColors = [
"bg-violet-500/10 text-violet-600 border-violet-200/50",
"bg-sky-500/10 text-sky-600 border-sky-200/50",
"bg-emerald-500/10 text-emerald-600 border-emerald-200/50",
"bg-rose-500/10 text-rose-600 border-rose-200/50",
"bg-amber-500/10 text-amber-600 border-amber-200/50",
"bg-indigo-500/10 text-indigo-600 border-indigo-200/50",
];
export default function LogoCloud() {
return (
<section className="py-14 sm:py-20 bg-background border-b border-border">
<div className="container mx-auto px-6">
{/* Heading */}
<motion.div
initial={{ opacity: 0, y: 16 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true }}
transition={{ duration: 0.5 }}
className="text-center mb-10"
>
<p className="text-sm font-semibold uppercase tracking-widest text-muted-foreground">
Trusted by leading teams at
</p>
</motion.div>
{/* Logo strip */}
<motion.div
initial={{ opacity: 0 }}
whileInView={{ opacity: 1 }}
viewport={{ once: true }}
transition={{ duration: 0.6, delay: 0.1 }}
className="flex flex-wrap items-center justify-center gap-4 sm:gap-6"
>
{logos.map((logo, i) => (
<motion.div
key={logo.name}
initial={{ opacity: 0, scale: 0.9 }}
whileInView={{ opacity: 1, scale: 1 }}
viewport={{ once: true }}
transition={{ duration: 0.4, delay: 0.1 + i * 0.06 }}
className={`flex items-center gap-3 rounded-xl border px-5 py-3 ${accentColors[i % accentColors.length]}`}
>
{/* Abbreviation badge */}
<span className="w-8 h-8 rounded-lg bg-current/10 flex items-center justify-center text-xs font-black tracking-tighter opacity-70">
{logo.abbr}
</span>
<span className="text-sm font-semibold whitespace-nowrap opacity-80">
{logo.name}
</span>
</motion.div>
))}
</motion.div>
{/* Subtle tagline */}
<motion.p
initial={{ opacity: 0 }}
whileInView={{ opacity: 1 }}
viewport={{ once: true }}
transition={{ duration: 0.5, delay: 0.5 }}
className="text-center text-xs text-muted-foreground mt-8"
>
200+ companies trust us to power their digital experience
</motion.p>
</div>
</section>
);
} Claude Code Instructions
CLI Install
npx innovations add logo-cloudWhere to use it
Place directly below the hero or above the features section as a trust signal.
In Astro (src/pages/index.astro):
import LogoCloud from '../components/innovations/content/logo-cloud';
<LogoCloud client:visible />
In Next.js (app/page.tsx):
import LogoCloud from '@/components/innovations/content/logo-cloud';
Logo data comes from '@/lib/placeholders' (logos array with name + abbr fields). The component renders styled abbreviation boxes since actual SVG logos aren't available. To swap in real logos:
1. Import your SVG logo components or <img> tags
2. Replace the abbreviation box div with your logo component
3. Remove the accentColors array if using full-color logos (use a neutral background instead)