sheengemologic ui
All components

DataTablePage

Composes page header, app actions, saved-view controls, table-owned query and selection chrome, and explicit regional states.@gemologic/sheen-patterns · application

Playground

This example has no scalar controls. Its validated source remains interactive below.

Accounts

Accepted table region
<DataTablePage title="Accounts" toolbarLabel="Account actions" loadingFallback={<div>Loading accounts</div>}><section aria-label="Accounts table">Accepted table region</section></DataTablePage>

Variant matrix

Continuous client table page

Accounts

Accepted table region

Anatomy

Package
@gemologic/sheen-patterns
Source
packages/patterns/src/DataTablePage.tsx
Tokens
  • --sheen-color-bg
  • --sheen-color-border
  • --sheen-color-danger-fg
  • --sheen-space-block-sm
  • --sheen-space-inline-sm

Accessibility

Role: region, heading, toolbar, form, alertKeyboard: Tab, Shift+Tab, ArrowLeft, ArrowRight, Home, End, Enter, Space, Escape

Do

  • Keep saved-view persistence and state application in the app adapter.
  • Let the child DataTable own search, filters, result counts, columns, and export controls.
  • Define DataTable actions once so row context and selection controls cannot drift.
  • Use refresh to retain accepted table DOM; use permission-denied to remove unauthorized content immediately.

Do not

  • Do not mirror DataTable query or selection controls into the page toolbar.
  • Do not show a cold fallback during background refresh.
  • Do not use saved-view records from localStorage as an implicit per-user persistence layer.

Generated props

NameTypeDefaultDescription
title *stringVisible page title and accessible loading-region label.
headingLevel1 | 2 | 3 | 4 | 5 | 61Semantic heading level for the page title.
breadcrumbJSX.ElementOptional breadcrumb rendered above the title.
headerActionsJSX.ElementOptional page-level actions beside the title.
tabsJSX.ElementOptional page tabs below the title row.
toolbarLabel *stringRequired accessible name for the app-action toolbar.
toolbarGroupsreadonly ToolbarGroup[]Stable app action groups; whole trailing groups overflow together.
viewsDataTablePageViewsControlled app-backed saved-view records, selection, draft name, pending/error state, and operation callbacks.
stateDataTablePageStatereadyReady content or an authorization-safe not-found, server-error, or permission-denied replacement.
loadingPhase"idle" | "cold" | "refresh"idleIdle, delayed cold fallback, or retained-content refresh presentation.
loadingFallback *JSX.ElementLayout-matched cold-load placeholder reserved in server markup.
errorTitlestringOptional localized title overriding the selected regional error default.
errorDescriptionstringOptional localized regional error detail.
onRetry() => void | Promise<void>Optional regional error retry action.
statusJSX.ElementOptional page status/footer content.
children *JSX.ElementThe DataTable owner. Its actions prop owns row, context, and selection action behavior.
Native Solid/HTML attributes remain available and are omitted from this authored-prop view.