Interleaved About

Designers reviewing printed layouts across a studio table
Inside Polaris

We build brands that refuse to blend in — loud type, long days, no filler.

Polaris is a fourteen-person studio working out of a converted print house. We pair strategists with type-obsessed designers, then ship identity systems, campaigns, and the occasional billboard nobody asked for but everybody remembers.

14

People, one floor, zero account managers.

19yr

Of putting craft ahead of the brief.

Bright open studio workspace with monitors and prints
About this block

Interleaved AboutPRO

Magazine about where copy is interleaved between two staggered offset images.

About40: Interleaved About

Magazine-style about section built on a 12-column grid: copy is interleaved between two staggered, offset portrait images using explicit row/column placement and negative margins to make the images overlap the text band.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/about40?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/about40?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/about40.tsx, the badge6 and button1 components it uses for the eyebrow label and the CTA, and its dependencies.

Quick start

The installed file exports about40Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.

tsx
import { About40, about40Demo } from "@/components/beste/block/about40";

export default function Page() {
  return <About40 {...about40Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { About40 } from "@/components/beste/block/about40";

export default function Page() {
  return (
    <About40
      label="Inside Polaris"
      heading="We build brands that <strong>refuse to blend in</strong>."
      description="Polaris is a fourteen-person studio working out of a converted print house."
      button={{ label: "Read the studio file", href: "https://beste.co" }}
      images={[
        { src: "https://images.unsplash.com/photo-1522202176988-66273c2fd55f?w=1000&h=1250&fit=crop", alt: "Studio table reviewing layouts" },
        { src: "https://images.unsplash.com/photo-1531482615713-2afd69097998?w=800&h=1067&fit=crop", alt: "Open studio workspace" },
      ]}
      stats={[
        { value: "14", label: "People, one floor, zero account managers." },
        { value: "19yr", label: "Of putting craft ahead of the brief." },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
labelstringEyebrow label rendered inside the badge
headingstringRendered via dangerouslySetInnerHTML; <strong> spans render text-primary
descriptionstringParagraph in the lower-left gap
buttonActionLinkCTA below the description and stats
imagesImageItem[][]First two entries become imageA/imageB
statsStatItem[][]Rendered as a fixed 2-column grid
classNamestringExtra classes for the outer <section>
ts
type ActionLink = { label: string; href: string };
type ImageItem = { src: string; alt: string };
type StatItem = { value: string; label: string };

Behavior notes

  • Only the first two images entries are used, destructured as imageA and imageB; further entries are ignored, and if imageB is missing the layout still reserves its grid track as empty space.
  • The four blocks (imageA, heading, copy+stats+CTA, imageB) sit on explicit grid rows and columns (md:row-start-1/md:row-start-2, md:col-start-7) instead of flowing in document order, and imageB is pulled up with md:-mt-20 so it overlaps the copy block above it.
  • Hovering either image scales it slightly (group-hover/about40:scale-105) over a 500ms transition.
  • stats render in a fixed 2-column grid regardless of stats.length, matching the two stats used in the demo.
  • Button1's seal icon is overridden to ArrowUpRight instead of the component's default ArrowRight.

More About blocks

View all About
PRO

about5

Image & Text Split

Side-by-side layout with a tall image on the left and company story, inline stats, and CTAs on the right.

PRO

about53

Pinned Photos About

About with two subtly rotated, captioned studio photos clustered beside the statement.

PRO

about21

Checklist & Image Split

Two-column layout with checklist highlights on the left, featured image and testimonial quote on the right, plus a full-width stats row.

PRO

about36

Edge Label About

Asymmetric about with a bleeding image, vertical edge label, offset copy and an inline stats row.

PRO

about63

Studio Story Split

Image-led about split with a tall portrait, an offset statement heading, supporting copy, mono studio facts, and a seal CTA.

PRO

about46

About Strip

An about intro followed by a horizontally scrollable strip mixing image, stat, quote and values cards.