
An auto-scrolling logo carousel with side fades and no heading, matching the marquee behavior of the titled variant.
@shadcnblocks
block/logos19/logos19.tsx
"use client";
import Marquee from "react-fast-marquee";
import { cn } from "cn";
type LogosSimpleStaticLogo = Logo & {
href?: string;
};
interface Logo {
src: string;
alt: string;
srcDark?: string;
className?: string;
}
interface LogosSimpleStaticProps {
logos: LogosSimpleStaticLogo[];
className?: string;
}
type Props = Partial<LogosSimpleStaticProps>;
const defaultProps: LogosSimpleStaticProps = {
logos: [
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-1.svg",
alt: "Company logo 1",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-2.svg",
alt: "Company logo 2",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-3.svg",
alt: "Company logo 3",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-4.svg",
alt: "Company logo 4",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-5.svg",
alt: "Company logo 5",
className: "h-5 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-6.svg",
alt: "Company logo 6",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-7.svg",
alt: "Company logo 7",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-8.svg",
alt: "Company logo 8",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-9.svg",
alt: "Company logo 9",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-10.svg",
alt: "Company logo 10",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-11.svg",
alt: "Company logo 11",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
{
src: "https://cdn.shadcnblocks.com/shadcnblocks/image-set/modern/logos/fictional-company-logo-12.svg",
alt: "Company logo 12",
className: "h-7 w-auto",
href: "https://www.shadcnblocks.com",
},
],
};
const Logos19 = (props: Props) => {
const { logos, className } = {
...defaultProps,
...props,
};
return (
<section className={cn("py-16", className)}>
<Marquee gradient gradientWidth={64} autoFill pauseOnHover speed={40}>
{logos.map((logo, index) => (
<div
key={`${logo.src}-${index}`}
className="mx-8 flex aspect-3/1 w-28 items-center justify-center sm:w-32 lg:mx-10"
>
<img
src={logo.src}
alt={logo.alt}
className={cn(
logo.className,
"h-auto max-h-7 w-auto object-contain dark:invert",
)}
/>
</div>
))}
</Marquee>
</section>
);
};
export { Logos19 };






























