EnterpriseFloorplansList report

List report

Structured report pages for large queryable lists with configurable columns and export controls.

ReportingListingData

Overview

A list-report floorplan standardizes table-first workflows: search, filter, review, and export.

Keep row density and action density balanced so people can process many rows quickly without losing query or selection context.

Treat filter, sort, pagination, visible columns, and export scope as one durable report state that can be shared, restored, and audited.

Query, configure, and export a governed report

Live preview

Filter and sort records, change density and visible columns, select rows across the report, inspect export scope, and page through results.

GOVERNANCE REPORT

Access requests

Review policy-sensitive requests across every operational team.

Live snapshot
Access request governance report
Updated
Customer data exportREQ-2916PrivacyPriya ShahHighPolicy check34 min ago
Production access exceptionREQ-2918SecurityMaya ChenHighIn review8 min ago
Retention policy exceptionREQ-2914LegalAsha MehtaMediumOpen2 hrs ago
Vendor renewal assessmentREQ-2917FinanceJon BellMediumOpen21 min ago
Workspace role changeREQ-2915PlatformLiam GarciaLowApproved1 hr ago
Showing 1–5 of 10Report generated 2 minutes ago · source snapshot verified

Anatomy

Use each piece in this order to keep interpretation and automation consistent.

Search requestsStatusRisk
24 RECORDSCompactExport
RequestOwnerStatus
Showing 1–5 of 24‹ 1 2 3 ›
Snapshot verifiedGenerated 2m ago
12345
  1. 1
    Filter header

    Primary controls for scope and query intent.

  2. 2
    Report toolbar

    Exports, density, and display mode controls.

  3. 3
    Data grid

    Main content row rendering with row-level and bulk actions.

  4. 4
    Pager

    Pagination with summary and jump points.

  5. 5
    Footer meta

    Totals, generation details, and refresh state.

The ordering here is not visual-only; it reflects interaction priority and expected user cognition. Keep this order unless policy demands a specific domain exception.

When to use

Use this pattern when the user needs guided consistency, state, and reuse at scale.

Recommended

  • Audit and operations reporting

    Use for periodic analysis and review tasks.

  • Large dataset management

    Use when users filter and sort often.

  • Governance exports

    Use when data snapshots must be exported.

When not to use

Avoid forcing this pattern where simpler, direct interactions are sufficient.

Avoid

  • Single item editors

    Use detail floors for complex mutation flows.

  • Informational pages

    Use cards and callouts for static content.

  • High-frequency events

    Use streaming views for real-time logs.

Variants

A small number of variants helps teams choose correctly without adding complexity.

Analytic

Denser row model for internal operations.

Configurable

Column and filter customization.

Minimal

Reduced columns for quick triage.

States

States communicate readiness, risk, and expected user behavior.

StateTriggerVisual responseInteraction
InitialPage loadFilter placeholders and skeletonCollect filters before rendering heavy rows.
FilteredUser applies queryUpdated row subset and totalsPreserve selected rows when possible.
Empty resultValid query returns no rowsFilter-aware recovery guidance inside the table regionAllow users to clear or revise criteria without leaving the report.
Partial failureRows or metadata cannot be resolvedKeep independent controls and identify the affected sourceOffer retry without discarding the query.
Export readyExport commandExport confirmation and filename previewOffer download and audit trace IDs.

Behavior

Behavior should remain predictable across devices, permissions, and async edges.

Durable query state

Keep filter, sort, column, density, and page state deterministic and URL-compatible.

Governed export

Confirm scope, format, policy masking, and audit identity before file generation.

Selection memory

Keep selection state by immutable ID across pagination and explain when a query change clears it.

Accessibility

Keep interaction clarity high and ensure assistive technologies get the same meaning.

KeyAction
Ctrl/CmdASelect all rows in page or active result set when supported.
PageDownMove to next row set where paging is keyboard accessible.
Ctrl/CmdETrigger report export flow.
  • Ensure table headers are exposed and sortable semantics are clear.
  • Keep action buttons announced and grouped by row context.
  • Give horizontally scrollable table regions keyboard access on narrow screens.
  • Announce result totals, selection changes, export completion, and data errors.
  • Keep column order consistent between headers and every data row.

Content guidelines

Consistency is achieved by language standards, not by design only.

Row naming

Use entity-first naming for quick scanning.

ExampleREQ-1024 · Payout request

Totals

Place totals where users expect them.

ExampleShowing 15–30 of 248 items

Export language

Use explicit retention and scope language.

ExampleExport current filtered list

Examples

Reference implementation style, payloads, and practical behavior.

Compose a controlled report

  • Keep query state application-owned so the URL, request, saved view, and export share one contract.
  • Use stable row identifiers to preserve selection across server-side pages.
  • Generate visible columns from the same ordered definition used for persisted preferences.
AccessRequestReport.tsx
tsx
import { DataTable, FilterBar, Pagination } from 'omverse-ui'
 
export function AccessRequestReport({ result, query, onQueryChange }) {
return (
<main aria-labelledby="report-title">
<h1 id="report-title">Access requests</h1>
<FilterBar
searchValue={query.search}
onSearchChange={(search) => onQueryChange({ ...query, search, page: 1 })}
filters={buildReportFilters(query, onQueryChange)}
resultCount={result.total}
onReset={() => onQueryChange(defaultQuery)}
/>
<DataTable
caption="Access request governance report"
columns={visibleColumns}
data={result.rows}
getRowId={(row) => row.id}
selectable
selectedRowIds={query.selectedIds}
onSelectionChange={(selectedIds) => onQueryChange({ ...query, selectedIds })}
/>
<Pagination
page={query.page}
totalPages={result.totalPages}
onPageChange={(page) => onQueryChange({ ...query, page })}
/>
</main>
)
}

Persist an auditable query contract

  • Store domain field names and sort directions instead of component-internal state.
  • Version visible-column and filter schemas before restoring older saved reports.
  • Record the exact query, policy mask, source timestamp, and requester in the export audit event.
report-query.json
json
{
"schemaVersion": 2,
"filters": { "status": ["open", "in_review"], "risk": ["high"] },
"sort": { "field": "updatedAt", "direction": "desc" },
"columns": ["request", "team", "owner", "risk", "status"],
"page": 1,
"pageSize": 50,
"exportPolicy": "mask_identity_fields"
}
Open linked component reference for implementation patterns

Props / API

Use these API entries as a baseline contract and validate them against your domain layer.

These names are implementation-oriented and should map to your local contracts.

Props

PropTypeDefaultDescription
rowsreadonly ReportRow[]requiredRows rendered in the main report body.
columnsreadonly ReportColumn[]requiredConfigurable columns and accessibility labels.
queryReportQueryrequiredControlled filter, sort, pagination, density, and visible-column state.
selectionreadonly Key[][]Selected immutable record IDs preserved across compatible pages.
exportEnabledbooleantrueFeature flag for export controls.
onExport(request: ExportRequest) => Promise<ExportResult>requiredPrepares a policy-masked export and returns its audit identity.
onPageChange(page: number) => voidrequiredPage navigation state update.