Editorial Issue Bento

(This issue)

One cover story and everything printed beside it.

About this block

Editorial Issue BentoPRO

Magazine mosaic whose cover story fills a two-row photographic tile with its category and page count on the scrim, beside an inverted figure tile, a bordered publication note and three soft article tiles.

Bento9: Editorial Issue Bento

An issue contents page laid out as a mosaic. The cover story takes a large photographic tile with its category on top and its page count on a rule, an inverted figure states the extent, a bordered tile explains the subscription, and the remaining articles sit in soft tiles beside them.

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

Base UI flavor

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

This installs the block to components/beste/block/bento9.tsx plus the badge7 eyebrow it uses.

Quick start

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

tsx
import { Bento9, bento9Demo } from "@/components/beste/block/bento9";

export default function Page() {
  return <Bento9 {...bento9Demo} />;
}

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

tsx
import { Bento9 } from "@/components/beste/block/bento9";

export default function Page() {
  return (
    <Bento9
      badge={{ label: "This issue" }}
      heading="One cover story and everything printed beside it."
      cover={{
        src: "/issue/cover.jpg",
        alt: "Printed letterforms as a type specimen",
        category: "Cover story",
        title: "The alphabet that took nine months and one apology",
        meta: "Issue 12 · 22 pages",
        href: "/issue/12/alphabet",
      }}
      stories={[
        { category: "Interface", title: "Reading is not a feature", meta: "8 pages", href: "/issue/12/reading" },
        { category: "Materials", title: "Cloth, board and the cost of both", meta: "6 pages", href: "/issue/12/cloth" },
      ]}
      figure={{ value: "200", title: "Pages, no advertising" }}
      subscribe={{
        title: "Printed twice a year",
        description: "Posted to anyone who has worked with the studio.",
      }}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow label rendered as a Badge7
headingstringSection heading above the mosaic
coverCoverStoryLarge photographic tile linking to the lead article
storiesSideStory[][]Text tiles for the rest of the issue, each one a link
figureFigureTileInverted dark tile holding one number
subscribeSubscribeTileBordered tile describing how the issue is distributed
classNamestringExtra classes for the outer <section>
ts
type CoverStory = {
  src: string;
  alt: string;
  category: string;
  title: string;
  meta: string;
  href: string;
};

type SideStory = {
  category: string;
  title: string;
  meta: string;
  href: string;
};

type FigureTile = {
  value: string;
  title: string;
};

type SubscribeTile = {
  title: string;
  description: string;
};

Behavior notes

  • The cover tile spans md:col-span-4 md:row-span-2 and uses justify-between, so its category badge stays pinned to the top of the picture while the title and page count sit at the foot.
  • Its Badge7 is passed className="text-background/70", which is how the eyebrow reads on a photograph instead of resolving to the page's foreground token.
  • The whole cover tile is a Link, so the photograph, title and meta are one target rather than a small link under an image.
  • Story tiles use justify-between gap-4 with the meta line on a border-t border-current/10 rule, so titles of different lengths still line their page counts up along the bottom of the row.
  • The subscription tile is the only bordered surface and carries no button, which keeps a text-heavy tile from overflowing on a tablet.
  • Only the figure tile is inverted, giving the mosaic exactly one dark anchor; its text-background tokens are hardcoded because that surface is fixed rather than adaptive.
  • The tiles fill six columns per row (4+2, 4+2, then 2+2+2), so the cover, figure, subscription and three stories leave no gap at the end of a row.

More Bento blocks

View all Bento
PRO

bento14

Publication Hub Mosaic

A six-column mosaic that carries a whole publication at once: the newest piece as a photographic tile, two counted figures, a reader quote, an inverted subscribe cell and a row of subject chips.

PRO

bento3

Selected Work Bento

Work mosaic on a six-column track mixing photographic tiles that carry their caption inside on a gradient scrim with a soft statement tile and an inverted figure tile, the lead project spanning four columns and two rows.

PRO

bento15

Practice Bento

One mosaic of six tiles: a large photograph that drifts inside its tile, an ink quote tile with film grain, a serif figure that counts up, a small photograph, an hours sheet and a call-to-action tile with a sliding-marker pill, each rising into view in turn.

PRO

bento4

Service Bento With Figure

Service mosaic whose lead tile floats a photo-strip media piece over a dotted field between its eyebrow and statement, beside a photographic tile captioned on its scrim, an inverted figure tile and three soft icon tiles.

PRO

bento6

Object Study Bento

Product mosaic pairing a two-row hero photograph captioned on its scrim with a tall specification tile, then two square macro tiles that carry their caption inside and an inverted figure tile closing the row.

PRO

bento2

Studio Summary Bento

Studio mosaic whose lead tile floats a mood-board media piece over a dotted field between its own eyebrow and statement, beside a photographic tile captioned on its scrim, an inverted figure tile, a soft quote tile and a bordered CTA tile.