Studio Brief With Changing Plate

(Start a brief)

Four answers and we know whether we are the wrong studio for you.

This is the same set of questions we would ask on a first call, asked in the order that actually decides anything.

Printed material laid out across a studio table

Wordmark and print system for a small publisher, set over four weeks.

What are we making?

Pick the centre of gravity. The rest tends to follow it.

No forms after this one

The reply comes from the person who would run the work, not from an account manager collecting more answers.

We say no in writing

If the date, the budget, or the shape of it is wrong for us, you get told why rather than ghosted.

The brief stays yours

Nothing you write here is shown to anyone outside the studio, and we delete it if the work does not happen.

About this block

Studio Brief With Changing PlateFREE

A four-step studio brief where the tall photograph beside it changes with the question on screen, each with its own caption, and sending the brief swaps the plate for the studio and the form for a ledger of the answers.

Agency24: Studio Brief With Changing Plate

A four-step studio brief where the tall photograph beside it changes with the question on screen, each with its own caption. Sending the brief swaps the plate for the studio and the form for a ledger of the answers.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/agency24"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/agency24"

That installs the block file, the badge7 eyebrow and button12 pill it is built from, and the questionnaire primitive.

Quick start

tsx
import { Agency24, agency24Demo } from "@/components/beste/block/agency24";

export default function Page() {
  return <Agency24 {...agency24Demo} />;
}
tsx
import { Agency24 } from "@/components/beste/block/agency24";

export default function Page() {
  return (
    <Agency24
      badge={{ label: "Start a brief" }}
      heading="Four answers and we know whether we are the wrong studio for you."
      description="The same questions we would ask on a first call."
      shortcuts="numbers"
      steps={[
        {
          name: "work",
          title: "What are we making?",
          required: true,
          choices: [
            { value: "identity", label: "An identity" },
            { value: "site", label: "A site" },
          ],
          image: { src: "https://images.unsplash.com/photo-1583201173319-a4efa99605cf", alt: "Print" },
          caption: "Wordmark and print system for a small publisher.",
        },
        {
          name: "contact",
          title: "Where do we send the reply?",
          required: true,
          // an input step: the field writes to the same name
          input: { label: "Email address", placeholder: "you@studio.com", type: "email" },
          image: { src: "https://images.unsplash.com/photo-1777523743687-233bbfdbd894", alt: "Desk" },
          caption: "Every brief gets a written answer.",
        },
      ]}
      closing={{
        image: { src: "https://images.unsplash.com/photo-1763307411452-43cfd9f516ce", alt: "Studio" },
        caption: "This is the room your brief lands in on Monday morning.",
        title: "Brief received",
        description: "One of us replies inside two working days.",
        emptyLabel: "Left blank",
      }}
      button={{ label: "Book the intro call", href: "https://beste.co" }}
      notes={[
        {
          title: "No forms after this one",
          description: "The reply comes from the person who would run the work.",
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badgeBadgeParenthetical eyebrow above the heading, rendered with Badge7.
headingstringSection heading.
descriptionstringLead paragraph, set opposite the heading.
stepsBriefStep[][]The questions, each carrying the plate and caption shown while it is on screen.
shortcuts"letters" | "numbers"Prints a shortcut on every choice of the active step.
closingClosingThe plate, the caption, and the ledger heading shown once the brief is sent.
buttonActionButtonButton12 pill under the ledger.
notesNote[][]Ruled row under the brief.
labelsAgency24Labels{}Overrides for the navigation buttons and the rewrite link.
classNamestringMerged onto the section element.
ts
type Badge = { label: string };
type ActionButton = { label: string; href: string };
type BriefImage = { src: string; alt: string };
type Note = { title: string; description: string };

type BriefStep = {
  name: string;
  title: string;
  description?: string;
  choices?: BriefChoice[];
  input?: { label: string; placeholder?: string; type?: "email" | "text" };
  required?: boolean;
  multiple?: boolean;
  image: BriefImage;
  caption: string;
};

type BriefChoice = { value: string; label: string; description?: string };

type Closing = {
  image: BriefImage;
  caption: string;
  title: string;
  description: string;
  emptyLabel?: string;
};

type Agency24Labels = {
  previous?: string;
  next?: string;
  submit?: string;
  restart?: string;
};

Behavior notes

  • The plate is driven by the step on screen, not by hover or by scroll. Moving with Next, Previous, or a shortcut key changes the photograph and the caption under it, so the picture is always describing the question being asked.
  • Give every step an image and a caption. They are required for that reason: a step without one would leave the column showing the previous answer's picture.
  • A step with input renders a text field under the fixed choices, or on its own when the step has no choices. It writes to the same field name, so the ledger prints what was typed.
  • The questions sit directly on the page rather than inside a filled panel. One step of a brief is short, and a tinted box around it only advertises the space the step is not using. The bordered choices carry the structure instead.
  • The whole brief is uncontrolled. steps decides the order, and the block only watches which step is active to pick the plate.
  • Sending swaps the plate for closing.image and the form for a ledger of every step and its answer, with closing.emptyLabel standing in for anything left blank.
  • Write a different one clears the ledger and remounts the brief at the first step, plate included.

More Agency blocks

View all Agency
PRO

agency21

Capabilities Accordion

Ruled, expandable capability rows with oversized type, detail copy, and monospace tag chips.

PRO

agency14

Studio Team

A studio team grid of member portraits with names and roles.

PRO

agency11

Studio Manifesto

Oversized editorial manifesto statement with emphasized phrases, principle chips and a founder signature.

PRO

agency16

Studio At A Glance

Studio overview pairing facts, copy and highlight stats with a clean studio image.

PRO

agency12

Studio Values

Studio values laid out with oversized ghost numerals, titles, descriptions and keywords.

PRO

agency17

Principles Selector

Interactive principle list that swaps a detail panel with image as each is hovered.