@redrob-labs/ui v1.0.2 · Redrob Group Design System 2026

ArticleLayout

Publishing · src/components/ArticleLayout/ArticleLayout.tsx

A published piece: kicker, title, standfirst, byline, contents, body, tags.

story takes the same object PostList renders, so a post travels from the index to its own page without being reshaped. Direct props win, which is what lets one page override a single field without copying the whole story.

Every author is named. There is no "et al." and no overflow count, because authorship is credit and a truncated list decides for the reader whose name was worth the space. With roles present, people are separated by a middot rather than "and" - "A, Researcher and B, Researcher" reads as three people.

titleAs exists so this can sit under a page that already owns the h1. Two h1s on a page break the outline for anybody navigating by headings.

The paper link is not decoration: a piece that states a finding has to say where the method and the data are, or the number cannot be checked.

Import

import { ArticleLayout } from '@redrob-labs/ui';

Rendered

The design system's own preview case, run against this package's build. The parity gate compares this rendering to the reference bundle's.

Props

PropTypeNotes
story PubStory The same object the index lists take. Anything passed directly wins over it.
title React.ReactNode
titleAs string 'h2' where the page already has an h1 above, such as a StoryHeader claim.
kicker string
standfirst React.ReactNode
authors Array<PubAuthor | string>
author string A single author, as a convenience.
avatar string | React.ReactNode
date string
dateTime string
reading string
finding PubFinding The headline number, shown above the byline.
paper PubPaper Where the method and data are.
contents ArticleTocEntry[]
contentsLabel string
tags ArticleTag[]
className string
children React.ReactNode

Exported types

ArticleTocEntry, ArticleTag