About Strip

Inside Polaris

A studio built sideways — strategy, design and build moving in one continuous line.

We work as a single horizontal team, not a relay of departments. Scroll the strip to see how the studio actually runs — the people, the proof, and the principles we refuse to compromise.

Read the studio brief
The Polaris team mid-critique around a shared table

Every project starts at one table, with everyone already in the room.

11 days

Median time from kickoff to the first clickable prototype.

“They handed us a working product, not a deck about one. That distinction has cost us three agencies.”

Priya Nair — VP Product, Settle

A designer sketching interface flows on glass

Strategy and craft sit at the same desk, so nothing gets lost in handoff.

What we hold the line on

  • Ship the seam-free, not the show-reel.
  • One owner per decision, always named.
  • Prototypes over promises, every week.

94%

Of engagements renew into a second build cycle.

Late-evening working session lit by monitors

We stay close to the work until it earns its keep in the wild.

About this block

About StripPRO

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

About46: About Strip

An about intro (heading and lead paragraph in an asymmetric two-column header) followed by a full-bleed, horizontally scrollable strip that mixes four different card types: photo cards with a caption overlay, stat cards, dark quote cards, and a checklist-style values card. Prev/next buttons drive the scroll programmatically alongside native drag/swipe.

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/about46?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

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

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

Quick start

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

tsx
import { About46, about46Demo } from "@/components/beste/block/about46";

export default function AboutPage() {
  return <About46 {...about46Demo} />;
}

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

tsx
import { About46 } from "@/components/beste/block/about46";

export default function AboutPage() {
  return (
    <About46
      label="Inside the studio"
      heading="A team built sideways, moving as <strong>one continuous line</strong>."
      lead="We work as a single horizontal team, not a relay of departments."
      button={{ label: "Read the brief", href: "https://beste.co" }}
      cards={[
        {
          variant: "image",
          src: "https://images.unsplash.com/photo-1522071820081-009f0129c71c?w=900&h=1200&fit=crop",
          alt: "Team mid-critique around a table",
          caption: "Every project starts at one table.",
        },
        { variant: "stat", value: "11 days", label: "Median time to first prototype." },
        {
          variant: "quote",
          quote: "They handed us a working product, not a deck about one.",
          attribution: "Priya Nair, VP Product",
        },
        {
          variant: "values",
          title: "What we hold the line on",
          items: ["Ship the real thing.", "One owner per decision.", "Prototypes over promises."],
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
labelstring–Eyebrow badge text above the heading
headingstring–Intro statement; supports inline <strong> for primary-colored highlights
leadstring–Supporting paragraph next to the heading
buttonActionLink–CTA rendered as a Button1 with an arrow icon
cardsStripCard[][]Ordered list of cards rendered in the horizontal strip
classNamestring–Extra classes for the outer <section>
ts
type ActionLink = { label: string; href: string };

type StripCard =
  | { variant: "image"; src: string; alt: string; caption: string }
  | { variant: "stat"; value: string; label: string }
  | { variant: "quote"; quote: string; attribution: string }
  | { variant: "values"; title: string; items: string[] };

Behavior notes

  • cards is a discriminated union on variant; each card type renders at a different fixed width (image 300px, stat 260px, quote 340px, values 300px) so the strip's rhythm depends on which variants are used and in what order.
  • The scroller hides its native scrollbar ([scrollbar-width:none] plus a WebKit pseudo-element rule) and relies on the two arrow buttons or native drag/trackpad/touch scrolling; there is no scroll-snap, so the strip settles at whatever offset the user leaves it at.
  • The prev/next buttons scroll by 75% of the visible scroller width (scroller.clientWidth * 0.75) with behavior: "smooth", not by a fixed card count.
  • The scroller's inner track uses calc((100vw - 80rem) / 2 + 1.5rem) for its left/right padding so the first and last cards align with the max-w-7xl intro content on wide viewports, while still allowing cards to bleed to the true viewport edge on narrower screens.
  • Image cards scale their photo on hover (group-hover/about46:scale-105) and overlay a bottom-anchored gradient scrim so the caption text stays legible over any photo.

More About blocks

View all About
PRO

about42

Framed Studio Card

PRO

about39

Numeral About

PRO

about36

Edge Label About

Get Pro access