A Day In The Tool

(One ordinary Tuesday)

The same screen, four times in a working day.

Nothing here is a special case. Pick an hour and see exactly what the studio was looking at.

(The hours)

Catalogue, spring

Reading order decided before layout. Two sections carry the argument, the rest support it.

  • Audience: independent booksellers
  • Success: preorders before print
  • Open: budget ceiling
brief.md

A brief that argues with itself before you do

Clients fill the same short template overnight. Missing answers stay visible instead of quietly becoming assumptions.

Time to first callDown to one day
About this block

A Day In The ToolPRO

Showcase built as a ruled timetable: selecting an hour swaps a soft panel that floats the matching interface piece over a dotted field, then explains the moment and states one outcome on its own rule.

Usecase50: A Day In The Tool

A working day set as a ruled timetable. Pick an hour and the panel beside it shows the interface piece that was open at that moment, with the story and the outcome it produced.

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

Base UI flavor

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

This installs the block to components/beste/block/usecase50.tsx, the editor10, calendar11, upload23 and upload20 pieces the demo puts in the panel, and the badge7 eyebrow it uses.

Quick start

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

tsx
import { Usecase50, usecase50Demo } from "@/components/beste/block/usecase50";

export default function Page() {
  return <Usecase50 {...usecase50Demo} />;
}

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

tsx
import { Usecase50 } from "@/components/beste/block/usecase50";
import { Calendar11 } from "@/components/beste/piece/calendar11";
import { Editor10 } from "@/components/beste/piece/editor10";

export default function Page() {
  return (
    <Usecase50
      badge={{ label: "One ordinary Tuesday" }}
      heading="The same screen, four times in a working day."
      description="Pick an hour and see exactly what the studio was looking at."
      labels={{ scheduleTitle: "The hours" }}
      moments={[
        {
          time: "08:40",
          label: "The brief arrives already answered",
          title: "A brief that argues with itself before you do",
          description: "Clients fill the same short template overnight.",
          media: <Editor10 title="Catalogue, spring" code="brief.md" />,
          outcomeTitle: "Time to first call",
          outcome: "Down to one day",
        },
        {
          time: "10:15",
          label: "The week books itself",
          title: "Reviews land where the work already is",
          description: "One ninety-minute session a week, at the same hour.",
          media: <Calendar11 heading="Book the weekly review" date="Thursday, 14 March" />,
          outcomeTitle: "Sessions per project",
          outcome: "One a week, no more",
        },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow label rendered as a Badge7
headingstringSection heading in the left header column
descriptionstringSupporting paragraph in the right header column
momentsMoment[][]Hours in the timetable, first one selected on mount
labelsUsecase50Labels{}Fixed strings that are not content: the timetable's title
classNamestringExtra classes for the outer <section>
ts
type Moment = {
  time: string;
  label: string;
  title: string;
  description: string;
  /** Media object for this moment, usually a registry piece */
  media: ReactNode;
  outcomeTitle: string;
  outcome: string;
};

type Usecase50Labels = {
  scheduleTitle?: string;
};

Behavior notes

  • media is a ReactNode per moment, so each hour can show a different piece: the demo runs an editor, a calendar, a single upload and an upload grid without the block knowing anything about them.
  • The piece floats over a dotted field drawn on the panel's own surface, a radial-gradient on currentColor at text-foreground/20, with no second fill and no border, so the panel keeps one surface and the pattern follows the theme.
  • Timetable rows are a grid-cols-[4.5rem_1fr] with tabular-nums on the time, so the hours form a straight column whatever the labels do.
  • Selection is expressed twice: the row's top rule darkens from border-border to border-foreground and the label gains weight, so it does not rely on colour alone.
  • The media area is flex-1 with min-h-[260px], so switching between a tall calendar and a short upload card does not make the panel jump.
  • The outcome line sits on a border-current/10 rule with items-baseline justify-between, so the label and its value stay aligned and wrap cleanly when the panel is narrow.
  • Below md the timetable stacks above the panel in source order, so a phone reads the day first and then the selected hour.

More Use Case blocks

View all Use Case
PRO

usecase43

A Day In Appointments

A use case with an eyebrow over a hairline rule, a two-column heading, and three image tiles that each float a live appointment card above a title and description.

PRO

usecase47

Job Index With Image Panel

Ruled index of jobs on the left that swaps the panel beside it, where each selection brings its own photograph, explanation and two ruled outcome figures.

PRO

usecase1

Interactive Tab Showcase

Tab-based use case section with images, descriptions, and feature checklists that collapse to accordion on mobile. Perfect for showcasing how different teams or departments use your product.

PRO

usecase12

Workflow Stage Tabs

Tab navigation showing workflow stages with split image cards featuring stats overlays and descriptions. Perfect for demonstrating product workflow or development process stages.

PRO

usecase14

Segmented Control Tabs

Segmented control style tabs with split layout showing image, description, and bullet point features. Perfect for comparing solution approaches or product capabilities.

PRO

usecase40

Solution Comparison Table

Feature comparison table with checkmarks, text values, highlighted column, and CTA buttons in footer. Perfect for comparing your solution against alternatives or competitors.