Simple ways to show customers, partners, or integrations. Replace the sample marks with your own.
Static row
A short label and one centered logo row that wraps on narrow widths.
tsx
"use client";import { cn } from "@/lib/utils";type Logos01Props = { className?: string;};const LOGOS = [ { src: "/assets/icons/logos/slack.svg", alt: "Slack" }, { src: "/assets/icons/logos/notion.svg", alt: "Notion" }, { src: "/assets/icons/logos/linear.svg", alt: "Linear" }, { src: "/assets/icons/logos/github.svg", alt: "GitHub" }, { src: "/assets/icons/logos/figma.svg", alt: "Figma" }, { src: "/assets/icons/logos/stripe.svg", alt: "Stripe" },] as const;export function Logos01({ className }: Logos01Props) { return ( <section className={cn("@container w-full bg-background", className)}> <div className="mx-auto flex w-full max-w-3xl flex-col items-center gap-5 px-4 py-10 @[32rem]:gap-6 @[32rem]:px-6 @[32rem]:py-12"> <p className="text-xs tracking-wide text-muted-foreground"> Trusted by teams everywhere </p> <ul className="flex flex-nowrap items-center justify-center gap-x-4 @[32rem]:gap-x-8"> {LOGOS.map((logo) => ( <li key={logo.src} className="flex items-center"> <img src={logo.src} alt={logo.alt} className="h-4 w-auto object-contain opacity-70 brightness-0 @[32rem]:h-6 dark:invert" /> </li> ))} </ul> </div> </section> );}Installation
npx @arctis-sh/@arctis-sh/ui@latest add logos-01Usage
import { Logos01 } from "@/components/blocks/logos/logos-01"<Logos01 />Marquee
A left-aligned introduction with an infinite logo ticker below.
tsx
"use client";import { cn } from "@/lib/utils";type Logos02Props = { className?: string;};const LOGOS = [ "slack", "notion", "linear", "github", "figma", "stripe", "intercom", "airtable", "hubspot", "asana",] as const;export function Logos02({ className }: Logos02Props) { const track = [...LOGOS, ...LOGOS, ...LOGOS]; return ( <section className={cn("w-full overflow-hidden bg-background", className)}> <style>{` @keyframes logos-02-scroll { from { transform: translateX(0); } to { transform: translateX(-33.333%); } } `}</style> <div className="flex w-full flex-col gap-5 py-10"> <p className="px-6 text-left text-xs tracking-wide text-muted-foreground"> Trusted by companies everywhere </p> <div className="w-full overflow-hidden" aria-hidden="true"> <div className="flex w-max items-center" style={{ animation: "logos-02-scroll 28s linear infinite" }} > {track.map((name, i) => ( <img key={`${name}-${i}`} src={`/assets/icons/logos/${name}.svg`} alt="" className="mr-10 h-5 w-auto shrink-0 object-contain opacity-70 brightness-0 sm:mr-12 sm:h-6 dark:invert" /> ))} </div> </div> </div> </section> );}Installation
npx @arctis-sh/@arctis-sh/ui@latest add logos-02Usage
import { Logos02 } from "@/components/blocks/logos/logos-02"<Logos02 />Grid
An even logo grid with three columns on narrow screens and up to six when wide.
tsx
"use client";import { cn } from "@/lib/utils";type Logos03Props = { className?: string;};const LOGOS = [ { src: "/assets/icons/logos/slack.svg", alt: "Slack" }, { src: "/assets/icons/logos/notion.svg", alt: "Notion" }, { src: "/assets/icons/logos/linear.svg", alt: "Linear" }, { src: "/assets/icons/logos/github.svg", alt: "GitHub" }, { src: "/assets/icons/logos/figma.svg", alt: "Figma" }, { src: "/assets/icons/logos/stripe.svg", alt: "Stripe" }, { src: "/assets/icons/logos/intercom.svg", alt: "Intercom" }, { src: "/assets/icons/logos/airtable.svg", alt: "Airtable" }, { src: "/assets/icons/logos/hubspot.svg", alt: "HubSpot" }, { src: "/assets/icons/logos/asana.svg", alt: "Asana" }, { src: "/assets/icons/logos/dropbox.svg", alt: "Dropbox" }, { src: "/assets/icons/logos/snowflake.svg", alt: "Snowflake" },] as const;export function Logos03({ className }: Logos03Props) { return ( <section className={cn("@container w-full bg-background", className)}> <div className="mx-auto flex w-full max-w-3xl flex-col items-center gap-6 px-4 py-10 @[32rem]:px-6 @[32rem]:py-12"> <p className="text-xs tracking-wide text-muted-foreground"> Trusted by companies everywhere </p> <ul className="grid w-full grid-cols-3 gap-x-6 gap-y-8 @[28rem]:grid-cols-4 @[40rem]:grid-cols-6"> {LOGOS.map((logo) => ( <li key={logo.src} className="flex items-center justify-center"> <img src={logo.src} alt={logo.alt} className="h-5 w-auto object-contain opacity-70 brightness-0 @[32rem]:h-6 dark:invert" /> </li> ))} </ul> </div> </section> );}Installation
npx @arctis-sh/@arctis-sh/ui@latest add logos-03Usage
import { Logos03 } from "@/components/blocks/logos/logos-03"<Logos03 />