Elements Pro launch: $79 for the first 50 with LAUNCH50 · $129 standard.

Components / Blocks / AdvancedRecordGrid

AdvancedRecordGrid.

ProBlockDatav0.2.0

A record workspace with saved views, search, sortable columns, paging and bulk actions. Selection across pages is an explicit step, and a partial bulk failure keeps the failed rows selected for repair.

Get Elements Pro
Demo dataResponsive

Customers

Demo data

Saved views

Status
Northline StudioPro8$149Active
Harbor CoStarter3$49Active
FieldnoteTrial2$0Trial
Quarry LabsPro12$199Past due
Lumen WorksStarter4$49Active
1–5 of 5
Page 1 of 1

Installation

Add the licensed registry once. Keep your license key in the project’s uncommitted environment.

components.json
{
  "registries": {
    "@elements-pro": {
      "headers": {
        "Authorization": "Bearer ${ELEMENTS_PRO_LICENSE_KEY}"
      },
      "url": "https://pro.elements.micropreneur.dev/r/{name}.json"
    }
  }
}
export ELEMENTS_PRO_LICENSE_KEY=mpro_...
pnpm dlx shadcn@latest add @elements-pro/advanced-record-grid

The shadcn CLI writes the source into your project. Files added:

  • components/elements-pro/advanced-record-grid.tsxblock
  • components/ui/button.tsxui
  • components/ui/card.tsxui
  • components/ui/input.tsxui
  • components/ui/table.tsxui
Dependencies@base-ui/reactclass-variance-authorityclsxlucide-reacttailwind-merge

API

PropTypeDefaultDescription
title (required)string—
descriptionstring—
columns (required)RecordGridColumn<T>[]—Header, value for search and sort, optional render and alignment.
rows (required)T[]—
getRowId (required)(row) => string—
viewsRecordGridView[]—Saved views; filter rows for the active one.
activeViewIdstring—
onViewChange(viewId) => void—Called when a saved view is chosen.
bulkActionsRecordGridBulkAction[]—
onBulkAction(actionId, rowIds) => Promise<{ failedIds; message? }>—Run a bulk action and report which rows failed.
onOpenRow(rowId) => void—Makes the first column a button that opens the row.
pageSizenumber10

RecordGridColumn<T>

PropTypeDefaultDescription
id (required)string—
header (required)string—
value (required)(row: T) => string | number—
render(row: T) => ReactNode—
align'left' | 'right'—
sortableboolean—

Accessibility

  • Sortable headers are buttons, and the column reports aria-sort ascending, descending or none.
  • Every row checkbox is labelled with the row name; the page checkbox shows a mixed state.
  • Bulk results, including partial failures, are announced politely.