Split Panel About

Inside Polaris

We build brands that refuse to blend in: loud, deliberate, unmistakable.

Polaris is a creative studio for founders who would rather divide a room than bore it. Strategy, identity, and motion under one roof, shipped without the agency theater.

Start a project
Polaris creative team reviewing concepts at the studio
  • One senior team from kickoff to launch.
  • Brand systems documented, not just delivered.
  • Fixed scope, fixed price, zero surprise invoices.
  • Motion and identity built to move together.

120+

Brands shipped since 2017.

4.9

Average client rating.

About this block

Split Panel AboutPRO

A hard light/dark split about panel: dark statement side and a light image-and-facts side.

About47: Split Panel About

A hard two-panel split: a dark statement side (badge, heading, description, CTA) on the left and a light image-and-facts side (photo, checklist of commitments, stat pair) on the right, both inside a single rounded, overflow-hidden card.

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

Base UI flavor

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

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

Quick start

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

tsx
import { About47, about47Demo } from "@/components/beste/block/about47";

export default function AboutPage() {
  return <About47 {...about47Demo} />;
}

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

tsx
import { About47 } from "@/components/beste/block/about47";

export default function AboutPage() {
  return (
    <About47
      label="Inside the studio"
      heading="We build products that refuse to blend in."
      description="A small team for founders who want to move fast without the agency theater."
      button={{ label: "Start a project", href: "https://beste.co" }}
      image={{
        src: "https://images.unsplash.com/photo-1542744173-8e7e53415bb0?w=1200&h=900&fit=crop",
        alt: "Team reviewing concepts at the studio",
      }}
      commitments={[
        "One senior team from kickoff to launch.",
        "Documented systems, not just deliverables.",
        "Fixed scope, fixed price.",
      ]}
      stats={[
        { value: "120+", label: "Products shipped." },
        { value: "4.9", label: "Average client rating." },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
labelstringEyebrow badge text on the dark panel
headingstringStatement heading, rendered as plain text
descriptionstringSupporting paragraph under the heading
buttonActionLinkCTA rendered as a Button1 on the dark panel
imageImageItemPhoto on the light panel
commitmentsstring[][]Checklist items on the light panel, each with a check icon
statsStatItem[][]Two-column stat pair at the bottom of the light panel
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

  • The two panels are lg:grid-cols-2 inside one overflow-hidden rounded-md wrapper; below lg they stack, statement panel first.
  • The dark panel passes labelClassName="text-background/70" to Badge6 and tone="primary" to Button1 so both remain legible against the bg-foreground background instead of using their default light-surface styling.
  • The dark panel uses justify-between on a full-height flex column, pinning the button to the bottom of the panel regardless of how much heading/description text there is, while the light panel just stacks its blocks top to bottom.
  • The stats grid on the light panel is a fixed grid-cols-2 regardless of how many stat items are passed; more than two items wrap to a second row instead of the grid expanding to more columns.
  • Commitments render only a check icon plus text (no numbering), while the light panel's image, if omitted, simply collapses that space rather than leaving a placeholder box.

More About blocks

View all About
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

about55

Four Parts About

A type-led about with an oversized statement and a four-part Who/What/How/Why grid.

PRO

about80

Story Split

The classic about split: a serif heading that settles in word by word, two paragraphs, a sliding-marker pill and three ruled figures that count up on the left, and a portrait photograph drifting inside its frame on the right.

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

about66

About with Stats Grid

Two-column about with a tall image on one side and an eyebrow, heading, description, and 2x2 stats grid on the other.

PRO

about36

Edge Label About

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