Discipline Ledger Hero

(Design practice)

A studio for the parts nobody wants to own.

Auralis takes the messy middle of a brand: the pages that never got written, the type that never got decided, the system that only lived in one person's head.

(What we take on)

Identity

Marks, type systems and the rules that keep them alive after we leave.

Editorial

Long-form pages, reports and the writing that has to survive being read.

Interface

The screens where the brand finally has to do something useful.

Team reviewing printed layouts across a long studio table

Second week of a rebrand, printed and pinned before anything ships.

Studio floor, Rotterdam

About this block

Discipline Ledger HeroPRO

Editorial hero pairing an oversized statement, a paragraph and a pill CTA with a ruled index of disciplines, closed by a wide cinematic image band carrying a caption and a location credit on its own rule.

Hero147: Discipline Ledger Hero

Editorial hero for a studio or practice: an oversized statement and a paragraph sit beside a ruled index of the disciplines you take on, with a pill CTA under the copy and a wide cinematic image band closing the section on its own caption rule.

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

Base UI flavor

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

This installs the block to components/beste/block/hero147.tsx plus the badge7 eyebrow and button12 pill button it uses.

Quick start

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

tsx
import { Hero147, hero147Demo } from "@/components/beste/block/hero147";

export default function Page() {
  return <Hero147 {...hero147Demo} />;
}

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

tsx
import { Hero147 } from "@/components/beste/block/hero147";

export default function Page() {
  return (
    <Hero147
      badge={{ label: "Design practice" }}
      heading="A studio for the parts nobody wants to own."
      description="We take the messy middle of a brand and finish it."
      button={{ label: "Start a commission", href: "/contact" }}
      disciplines={[
        { title: "Identity", description: "Marks, type systems and the rules that keep them alive." },
        { title: "Editorial", description: "Long-form pages that survive being read." },
      ]}
      image={{ src: "/studio/table.jpg", alt: "Printed layouts across a studio table" }}
      labels={{ imageCaption: "Second week of a rebrand.", imageCredit: "Studio floor, Rotterdam" }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow label rendered as a Badge7
headingstringDisplay statement, rendered as the page h1
descriptionstringSupporting paragraph under the heading
buttonActionButtonPill CTA, rendered as Button12
disciplinesDiscipline[][]Ruled index in the narrow right column
image{ src: string; alt: string }Wide image band under the two columns
labelsHero147Labels{}Fixed strings that are not content: index title, image caption and credit
classNamestringExtra classes for the outer <section>
ts
type Discipline = {
  title: string;
  description: string;
};

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

type Hero147Labels = {
  disciplinesTitle?: string;
  imageCaption?: string;
  imageCredit?: string;
};

Behavior notes

  • The two columns align on md:items-end, so the discipline index sits on the same baseline as the CTA rather than floating next to the top of a very tall heading.
  • Discipline titles render as h2 under the h1, which keeps the outline correct when this block opens a page and the index doubles as a section summary.
  • The image band switches aspect ratio rather than height: aspect-[16/9] on mobile becomes aspect-[21/9] from md up, so the crop stays cinematic on desktop without going letterbox-thin on a phone.
  • Caption and credit share one border-t row under the image and wrap independently, so a long caption never pushes the credit out of the section.
  • Every part is optional: without image the block ends after the two columns, and without disciplines the heading column simply takes the full width.

More Hero blocks

View all Hero
PRO

hero120

Editorial Image Hero

Centered editorial hero with eyebrow, large heading, description, dual dark and outline CTAs, and a wide 16:9 image with a mono caption below.

PRO

hero122

Typographic Card Hero

Centered typographic hero on a muted card with an oversized heading, inline CTA, and a bottom monospace meta row of three labels.

PRO

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.

PRO

hero150

Offset Image Pair Hero

Split hero pairing a statement, paragraph and two pill CTAs with a pair of captioned portrait images, the second dropped by a stagger on desktop so the column reads as an editorial spread.

PRO

hero166

Split Headline Hero

An editorial hero that breaks its display heading across two lines and slots a square image tile floating a live payment card into the gap, with the paragraph and action landing under a hairline.

PRO

hero145

Editorial Product Hero

An editorial hero with an eyebrow and an oversized full-width light heading, then a lower row pairing a paragraph and two accent buttons with an image tile that floats a live app window frame.