Bylined Hero With Studio Band

Written by two people

No editorial team, no ghostwriters, no house voice

Everything published here is written by whichever of us did the work being described. You always know who is talking, and you can write back to them directly.

The two of us working at a shared studio table
The studio, on the Tuesday morning issue 042 went out.
Maria Santos

Maria Santos

Partner, brand

Writes about pricing, proposals and the conversations before a project starts.

Alex Turner

Alex Turner

Partner, product

Writes about interface craft, handovers and the month after a launch.

About this block

Bylined Hero With Studio BandPRO

A hero that sets its position and paragraph against a seal button held at the right edge of the same row, then runs a captioned wide photograph beneath it and closes on one portrait card per writer.

Hero173: Bylined Hero With Studio Band

A hero that sets its position and paragraph against a seal button held at the right edge of the same row, then runs a captioned wide photograph beneath it and closes on one portrait card per writer.

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

Base UI flavor

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

This installs the block to components/beste/block/hero173.tsx, the badge6 component used for the eyebrow and the button1 seal button beside the heading.

Quick start

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

tsx
import { Hero173, hero173Demo } from "@/components/beste/block/hero173";

export default function AboutPage() {
  return <Hero173 {...hero173Demo} />;
}

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

tsx
import { Hero173 } from "@/components/beste/block/hero173";

export default function AboutPage() {
  return (
    <Hero173
      eyebrow="Written by two people"
      heading="No editorial team, no ghostwriters, no house voice"
      description="Everything here is written by whichever of us did the work being described."
      button={{ label: "Read what we publish", href: "/writing" }}
      image={{ src: "/studio/table.jpg", alt: "The two of us at a shared table" }}
      caption="The studio, on the Tuesday morning issue 042 went out."
      writers={[
        {
          name: "Maria Santos",
          title: "Partner, brand",
          line: "Writes about pricing, proposals and the conversations before a project starts.",
          avatar: { src: "/people/maria.jpg", alt: "Maria Santos" },
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Badge6 label above the heading
headingstring–The position the page is taking
descriptionstring–Paragraph under the heading
buttonActionButton–Seal button held at the right of the heading row
imageStudioImage–Wide photograph under the heading row
captionstring–Caption under the photograph
writersWriter[][]One portrait card per writer
classNamestring–Extra classes for the outer section
ts
type Writer = {
  name: string;
  title: string;
  line: string;
  avatar: WriterAvatar;
};

type WriterAvatar = {
  src: string;
  alt: string;
};

type StudioImage = {
  src: string;
  alt: string;
};

type ActionButton = {
  label: string;
  href: string;
};

Behavior notes

  • The heading row is lg:items-end, so the button sits on the baseline at the bottom of the paragraph rather than floating level with the first line. Below lg it drops under the text.
  • The photograph is 16/9 on small screens and 21/9 from md up, so the band gets wider as the column does instead of growing taller.
  • It is a real figure with a figcaption, which keeps the caption attached to the picture for anyone reading the markup rather than the layout.
  • Writer cards sit on a hairline and take two columns from md up. They are plain text, so a name is not a link that goes nowhere.
  • The block is a h1, since it is written to open a page rather than to sit inside one.

More Hero blocks

View all Hero
PRO

hero166

Split Headline Hero

PRO

hero162

Indexed Rows Hero

PRO

hero114

Collage Hero

Get Pro access