Skip to content

Record page

A record page for a standard or custom object, with its header, tabs and sidebar. A page file you edit, with no props.

Account

Edge Communications

Type
Customer - Direct
Account Owner
Ellen Hart
Industry
Electronics

Open pipeline

$75K

+25% vs last year

Closed won

$110K

+15.8% vs last year

Win rate

67%

+16.7 pts vs last year

Open cases

2

−33.3% vs last year

Subject:
Starting generator after electrical failure
Status:
Escalated
Priority:
High
Subject:
Seeking guidance on electrical wiring installation for GC5060
Status:
New
Priority:
Medium

Installation

pnpm dlx shadcn@latest add @wisty/record-page

The CLI installs the Radix or Base UI file to match your project, with what it builds on: card, tabs, activity-timeline, data-table, kpi-row, page-regions, path, record-detail, record-header, related-list.

If your project doesn't have Wisty UI's theme yet, add it once with npx shadcn@latest add @wisty/cosmos. Until then, components keep shadcn's default look. Installation has the details.

When to use

Use it

  • For a record's page in an app, on any object: an account with its contacts and cases, an opportunity with its path and products, a case, or a custom object's record.
  • When you want Lightning's record page as a starting point you own: install it, copy the example nearest your object into your page, and add, move or remove a section by its lines.
  • When the app reads one record, its layouts and its related lists, and passes each section plain values.

Don't use it

Usage

import { RecordPage } from "@/components/wisty/record-page"
<RecordPage />

The install writes the Account page, record-page.tsx, and its fixtures, record-page-data.ts, beside it. RecordPage takes no props: the page file is what you edit. Swap the fixture import for the app's data and change the JSX. It is Page regions' Header and Right Sidebar: Record header on top, a card of Related, Details and Activity tabs in the main region, KPI row and Cases as tiles in the sidebar. The Opportunity example is the same page for another object: Path under the header, Products and Contact Roles on the Related tab, Stage History beside them. For a case or a custom object, copy the example nearest it and change the lines that name the object: the icon, the object label, the columns and the lists. Wire each section's handlers (onAction, onRowAction, onEdit, onToggleComplete) to the app's saves; Follow and a task's checkbox are page state in the examples.

Examples

Opportunity

Edge Emergency Generator with Path under the header, its Products and Contact Roles on the Related tab, and its Stage History beside them.

Opportunity

Edge Emergency Generator

Close Date
Nov 20, 2026
Amount
$75,000.00
Stage
Id. Decision Makers
Opportunity Owner
Ellen Hart
Stage: Id. Decision Makers
Amount:
$75,000.00
Probability (%):
60%
Close Date:
Nov 20, 2026
Amount:
$75,000.00
Probability (%):
50%
Close Date:
Nov 20, 2026
Amount:
$75,000.00
Probability (%):
20%
Close Date:
Oct 30, 2026
Amount:
$60,000.00
Probability (%):
10%
Close Date:
Oct 30, 2026
Amount:
$60,000.00
Probability (%):
10%
Close Date:
Oct 30, 2026

API reference

RecordPage

Edge Communications' record page: Lightning's Header and Right Sidebar over the account's fixtures.

SLDS mapping

The page is Lightning's record page on the Header and Right Sidebar template, built from the blocks that draw each part: Record header is the highlights panel; the main region's card holds the Tabs component in Lightning's order, Related (Related list cards), Details (Record detail, the page layout's sections) and Activity (Activity timeline); the sidebar holds KPI row and a Related list as tiles, as a Dynamic Related List shows in a sidebar. Path sits under the header at the page's full width, where Lightning places it.

Known gaps:

Responsive behavior

  • The page follows its own width, not the window's: from 54rem the main region takes two thirds and the sidebar the rest, never narrower than 22rem; below that the sidebar stacks under the main region, as Page regions lays them out.
  • Each section sizes itself inside its region: a related list shows tiles below 30rem, the details go to one column below about 584px, and the figures go two by two in the sidebar.

Rules

  • Pass null as a list's records, or as activities, when it couldn't load, never []: an empty array says there are none.
  • Pass each count the app knows, never the length of a list it read with a limit. Add hasMore when it only knows there are more.
  • Pass raw values with a type, null for an empty field, and amounts in one currency with currency set to match on every section. Each section formats them with locale, currency and timeZone.
  • Pass today in the same time zone as timeZone; overdue tasks and upcoming activity come from it.
  • Render one per page: the header's name is the page's h1. Never pass asChild or render.