Filterable Newsroom IndexFREE

A newsroom whose kind pills are derived from the announcements and carry live counts, narrowing a chronological list of hairline rows that align the kind, the date, and the headline with its summary.

News37: Filterable Newsroom Index

A newsroom whose kind pills are derived from the announcements and carry live counts, narrowing a chronological list of hairline rows that align the kind, the date and the headline with its summary.

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/news37"

Base UI flavor

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

This installs the block to components/beste/block/news37.tsx plus the badge23 component it uses for the eyebrow.

Quick start

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

tsx
import { News37, news37Demo } from "@/components/beste/block/news37";

export default function NewsroomPage() {
  return <News37 {...news37Demo} />;
}

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

tsx
import { News37 } from "@/components/beste/block/news37";

export default function NewsroomPage() {
  return (
    <News37
      badge={{ label: "Newsroom" }}
      heading="Everything we have announced, in the order it happened"
      description="All of it stays up, including the parts that did not go to plan."
      allLabel="Everything"
      items={[
        {
          kind: "Product",
          date: "14 May 2026",
          title: "Multi-site capacity sharing is out of testing",
          summary: "Four clinics can now share one waiting list while keeping their own rules.",
          href: "/news/multi-site",
        },
        {
          kind: "Incident",
          date: "24 April 2026",
          title: "Forty-one minutes of slow booking pages",
          summary: "Root cause, timeline, and the four things we changed afterwards.",
          href: "/news/incident-april",
        },
      ]}
      emptyLabel="Nothing filed under that yet."
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string }Eyebrow above the hairline rule, rendered through Badge23
headingstringSection heading in the left column of the header
descriptionstringSupporting paragraph, right-aligned from md up
allLabelstring"All"Label for the unfiltered pill
itemsAnnouncement[][]The newsroom, in the order it should read
emptyLabelstringLine shown when a filter matches nothing
classNamestringExtra classes for the outer section
ts
type Announcement = {
  kind: string;
  date: string;
  title: string;
  summary: string;
  href: string;
};

Behavior notes

More News blocks

View all News
PRO

news4

Magazine News Grid

Magazine-style news section with large featured article and 2x2 grid. Dynamic category filtering.

PRO

news8

Numbered Headlines

Compact numbered headline list with large index numbers, category badges, and source attribution.

PRO

news25

Category Hub

News categories grid with story counts, top story preview, and browse links.

PRO

news3

Live News Feed

Real-time news feed with category tabs, live indicators, trending badges, and source attribution.

PRO

news12

World News by Region

Global news grid with color-coded region indicators, hot story badges, and source attribution.

PRO

news14

Minimal Big Numbers

Minimal news list with oversized numbers, large typography, and clean dividers. Perfect for weekly roundups.