Skip to content
Folio

Start

Templates

A gallery answers what a Table looks like. These answer the question after it — which components a real screen needs together, and how they space against each other once there are twelve of them rather than one.

Console

Dashboard

12 components

A console: a sidebar, a figure band, tabs, a filterable table and two job cards.

Density. Twelve components in a bounded column, close enough together that any spacing decision that was only ever checked in isolation shows up.

NavItemFigureBandTabsToggleGroupTableBadge+6

Console

Activity board

12 components

One screen of a working week: four figures, two lanes over time, a ranked attention column, a grouped table and two bar charts.

A console as a GRID rather than a column. Every tile is handed its height by the row instead of choosing one, which is where a chart that sizes itself 16:9 — and an empty state that does not — read at two different heights in the same cell.

BigNumberLineChartBarChartBarListTableAlert+6

Marketing

Landing page

11 components

A marketing page: a hero, a figure band, three pillars, a reversed pricing plate and an FAQ.

Air. Very few components, a great deal of space, and the type ladder carrying the page — the opposite failure mode to the console.

StatusPillButtonTagFigureBandCardSeparator+5

Content

Blog index

10 components

A publication index: a filter strip, a lead story, and a ruled list of records.

Uneven records. A card grid hides them behind equal boxes; a ruled list does not, so a summary that runs three lines on one row and one on the next shows immediately.

ToggleGroupInputBadgeTagAvatarLinkArrow+4

Console

Architecture explorer

12 components

One diagram given the screen: a floating toolbar, a pannable canvas, an inspector, a minimap, a key and the conclusions under it.

Chrome arranged AROUND a surface rather than stacked with it. A floating bar over a canvas, a panel that appears where the reader is already looking, a minimap in the far corner — spacing decisions only ever checked in a column do not survive that.

ArchitectureFigureDiagramCanvasDiagramToolbarDiagramExportMenuDiagramInspectorDiagramMinimap+6

Content

Article

8 components

One post, rendered from a real Markdown file through the site’s own pipeline.

The reading surface, against markup nobody in this repository authored: headings, tables, footnotes, LaTeX as MathML, task lists, fenced code, a flow diagram and a numbered pipeline, all out of one .md file.

ArticleDiagramStepsAvatarBadgeTag+2

Settings

Settings

13 components

A workspace settings screen: a section rail, four groups of real controls, and a save bar that only exists once something changed.

Form density down a long page. A checkbox row, a switch row and a radio row were each spaced correctly on their own and then stacked, at which point they stop agreeing about what a row is — and the save bar has to pin itself over the last of them without covering it.

NavItemFieldInputTextareaSelectSwitch+7

Auth

Sign in

9 components

A centred authentication card: email and password, a rejected attempt still on screen, and a divider into two SSO buttons.

The failed state, which is the state a sign-in screen is actually judged on. Drawn only in its happy path, a card has nowhere to put a rejection that has to reach the form, the field and the screen reader at the same time.

CardFieldInputAlertCheckboxButton+3

Data

Data table

12 components

A table with everything a real one has: a filter strip, a sorted column, row selection with a bulk bar, and pagination.

A table under its own controls. Sorting, selecting and filtering each look right alone; together they compete for the header row, the bulk bar has to appear without shifting the rows beneath it, and filtering to nothing has to land somewhere other than a blank rectangle.

TableTHCheckboxInputSelectToggleGroup+6

Forms

Multi-step form

12 components

Four steps to create a deploy environment: the rail on one side, the current step’s fields beside it, and a review that reads back what was entered.

A sequence rather than a page. Steps is a display rail and enforces nothing — it cannot know which fields belong to the marked step — so this is where the seam between "what the rail says" and "what the form shows" is either kept in one place or quietly duplicated in two.

StepsFieldInputTextareaSelectRadioGroup+6

Data

Record detail

10 components

One incident: a title block carrying its status, the write-up, a metadata rail, and the activity that happened to it.

Two columns that are not equals. The body is prose on the measure and the rail is a dozen short facts, so a definition list and a paragraph have to hold the same vertical rhythm without either one setting the other’s — the failure the console never sees, because everything in it is the same shape.

BreadcrumbStatusPillBadgeDropdownMenuAvatarTag+4

Patterns

Loading, empty, error

10 components

The three states every real screen has, drawn side by side: a skeleton, an empty collection, and a page that failed.

The states nobody screenshots. Each is built once, shipped, and never seen beside the other two again — which is how a skeleton ends up a different shape from the thing it stands in for, and an error page ends up reading like an empty folder.

SkeletonPageSkeletonBlockSkeletonLineSkeletonTextEmptyStateErrorState+4

Content

Documentation

11 components

A reference page: a sidebar of sections, an article column with a props table and a keyboard note, and a contents rail beside it.

Three columns at once. A sidebar and a contents rail leave the middle narrower than any other template’s, which is the width at which a table, a long code identifier and a callout stop fitting and have to decide which of them scrolls.

NavItemBreadcrumbTableKbdAlertSteps+5

Marketing

Pricing

11 components

Three plans behind a monthly/annual switch, a feature comparison table, and the questions people ask before paying.

One card that has to win without colour. There is a single accent and no gradient in this system, so "recommended" is carried by the plate variant, a rule weight and where the badge sits — and if that reads as a mistake rather than as emphasis, the depth ramp is wrong.

CardCardTitleToggleGroupTableAccordionStatusPill+5