Studio Story Page

(Since 2014)

A studio that would rather finish nine things than start ninety.

We have turned down more work than we have taken, which is the only reason the work we take gets the room it needs. Everything below is the arithmetic behind that sentence.

Founded
2014
Bench
Eleven people
Projects a year
Nine
Based in
Rotterdam
Auralis team reviewing printed layouts across a long studio table
The making room, late on a press day
(Inside the studio)

A studio shaped by the work it keeps.

Eleven people at one long table: designers, a writer, an editor and one engineer who tells the rest of us when a drawing will not survive contact with a browser. Nothing leaves the room until somebody has argued against it and lost.

Founded
2014, in a borrowed loft
Bench
Eleven hands, one editor
Discipline
Identity and editorial
Read our principles
(The bench)

The people who pitch are the people who draw.

No account layer, no handover after the kickoff. The four below are who you meet in week one and who you are still speaking to at launch.

Meet the studio
Portrait of Marit Vandenberg

Marit Vandenberg

Founder and Creative Director

Portrait of Idris Okonkwo

Idris Okonkwo

Principal Brand Designer

Portrait of Lena Sørensen

Lena Sørensen

Editor and Type Lead

Portrait of Caleb Moretti

Caleb Moretti

Engineering Partner

(The road so far)

Ten years, and the parts that changed how we work.

Not a timeline of wins. These are the five moments that changed a habit, which is the only kind of milestone worth writing down.

  1. 2014

    Two desks and a borrowed kettle

    A side practice between two people who kept turning down good briefs to wait for the right one. The first wordmark we drew still hangs above the printer, mostly as a warning.

  2. 2017

    We took the colour out

    We stripped our own identity back to black, white and one grey, and the work got sharper for it. Constraint became the house style: structure first, contrast second, decoration almost never.

  3. 2019

    The first year-long retainer

    A ferry operator signed for twelve months and we hired three people to meet it. That was the year we learned to write our process down and to argue in the open rather than over a table.

  4. 2022

    Systems instead of pages

    We stopped handing over flat comps and started handing over rules. The work began outliving the projects that paid for it, which is the only measure of a system that matters.

  5. 2026

    Nine projects, on purpose

    We capped the year at nine engagements and published the number. Turning work down in public is uncomfortable exactly once, and then it is the easiest thing the studio does.

Read the full studio story
(Said afterwards)

Three clients, asked a year later.

Logoipsum
They argued us out of the project we asked for and into the one we needed. Four years on, the system is still on every hull.

Ida Sundqvist

Managing Director

Worked on

Identity and wayfinding

Logoipsum
Two designers have joined us since launch and neither of them needed anyone to explain how the thing works. That is the whole review.

Tomás Ferreira

Founder

Worked on

Packaging system

Logoipsum
We expected a design partner and got somebody who ran the launch with us, including the parts nobody enjoys.

Amara Boateng

Editor in Chief

Worked on

Editorial system

(Two ways in)

Whichever of these you are, the first reply comes from a partner.

You have a brief

Even a half-written one. The version you have not tidied up tells us more than the version you have.

  • A paragraph about what is actually wrong
  • A fixed figure and a date within a week
  • Next opening is January

You are just looking

Read the journal instead. We write up the arguments as well as the outcomes, including the projects that went sideways.

  • Case notes with the parts that failed left in
  • One letter a quarter, when something ships
  • No sequence, no sales follow-up

We answer every enquiry ourselves, including the ones we turn down.

About this page

Studio Story PagePRO

A monochrome about page in eight sections: a studio bar navbar, a fact-led statement hero, a studio split with a photograph, a team grid on a soft band, a decade of milestones, an inverted client quote ledger, a two-path closing panel and a footer that lists the studio's addresses.

Composed from 8 blocks. Installing this page installs all of them, plus the pieces and primitives they use.

Built in the Auralis collection.

Story1: Studio Story Page

A monochrome about page in eight sections: a studio bar navbar, a fact-led statement hero, a studio split with a photograph, a team grid on a soft band, a decade of milestones, an inverted client quote ledger, a two-path closing panel, and a footer listing the studio's addresses. Eight blocks, one install.

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.

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

This installs the page to components/beste/page/story1.tsx and everything behind it: the eight blocks it composes (navbar59, hero148, about63, about60, about62, testimonial45, cta80, footer116) and the button12 and badge7 components they use. Eleven files, no follow-up installs.

Quick start

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

tsx
import { Story1, story1Demo } from "@/components/beste/page/story1";

export default function Page() {
  return <Story1 {...story1Demo} />;
}

Each section is a separate prop, so the usual next step is to keep the demo and replace one section at a time.

tsx
import { Story1, story1Demo } from "@/components/beste/page/story1";

export default function Page() {
  return (
    <Story1
      {...story1Demo}
      milestones={{
        label: "Ten years",
        heading: "What happened, in order.",
        items: [
          { year: "2016", title: "Two people and a rented desk" },
          { year: "2019", title: "First packaging line, first factory visit" },
          { year: "2023", title: "The studio buys the building" },
        ],
      }}
    />
  );
}

Props

Every prop is the full prop object of the block that renders that section, so anything the block accepts is accepted here.

PropTypeDefaultDescription
navbarComponentProps<typeof Navbar59>Studio bar
heroComponentProps<typeof Hero148>Fact-led statement hero
studioComponentProps<typeof About63>Studio split with a photograph
teamComponentProps<typeof About60>Team grid
milestonesComponentProps<typeof About62>A decade, in order
testimonialComponentProps<typeof Testimonial45>Client quote ledger
ctaComponentProps<typeof Cta80>Two-path closing panel
footerComponentProps<typeof Footer116>Addresses and links
classNamestringExtra classes for the page's outer wrapper

Sections

SectionBlockNotes
Navbarnavbar59Sticky for the whole document
Herohero148Leads with facts rather than a photograph
Studioabout63Copy beside a full-height photograph
Teamabout60Given bg-muted/50 by the page; fill the grid rows
Milestonesabout62Reads as a ledger, so keep entries one line each
Quotestestimonial45Rendered on the inverted band
Closingcta80Two paths, not one button
Footerfooter116One column per address

Behavior notes

  • Every section is conditional on its own prop, so omitting milestones removes that section entirely rather than rendering an empty one. Three of the eight blocks are about* variants, so dropping one still leaves a coherent page.
  • The navbar is given sticky top-0 z-50 by the page and stays for the whole document, which works because the block carries its own opaque band.
  • The quote ledger sits inside a wrapper carrying the dark class, which swaps the theme tokens for that subtree, so the block's own cards, rules and muted labels follow the switch rather than staying light on a dark rectangle.
  • The page sets className="bg-muted/50" on the team section after spreading team, so a className passed inside that prop is overridden.
  • The team grid and the milestone ledger are the two sections whose item count shows: a half-empty row of portraits is the most visible way to make this page look unfinished.
  • The whole page is a client component, since the blocks it composes are. It fetches nothing and holds no state above the blocks.
  • The page is Pro because blocks inside it are, which is why the licence parameters are on the command above.

Blocks in this page

Browse all blocks
PRO

navbar59

Studio Bar Navbar

Editorial single-row navbar — bold wordmark, quiet bold links, and an outline pill CTA. Collapses to a clean full-height mobile menu.

PRO

hero148

Wide Statement Fact Hero

Photo-free hero that runs a display statement across the full width, drops the paragraph and pill CTAs onto one baseline beneath it, and closes with a ruled four-column row of studio facts.

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

about60

Team Member Grid

Team section with an eyebrow, big heading, description and CTA above a responsive grid of people cards (portrait image, name, role).

PRO

about62

Milestone Timeline

About section with a header and a vertical timeline of milestones on a left rail, each marked by a year, title, and description.

PRO

testimonial45

Client Quote Ledger

Three testimonials as ruled columns, each led by a grayscale client logo, followed by a large quote and an attribution block that names the person, the role and the project they hired the studio for.

PRO

cta80

Two Path Closing CTA

Closing section that offers two routes side by side, each a ruled column with a title, a short pitch, a dotted-rule list of what to expect and its own pill CTA, one solid and one outline.

PRO

footer116

Studio Locations Footer

Footer for a studio with several addresses — a parenthetical label and heading over a ruled row of city names with addresses and directions links, closed by a nav, copyright and back-to-top bar.