ROPAManagerLite
Read-only variant of ROPAManager. Renders the summary stats, lawful-basis breakdown, risk indicators, compliance-gap alerts, and the records table — without the form, edit affordances, or CSV-export panel.
Overview
ROPAManagerLite is the display-only counterpart of ROPAManager. It renders the same summary cards (total records, active records, cross-border records, records with gaps), the same lawful-basis breakdown, the same risk indicators (sensitive data, DPIA required, automated decisions, due for review), the same compliance-gap alerts, and the same records table — but the add/edit form, the validation utilities, and the CSV-export panel are not bundled.
Reach for it on internal dashboards, audit reports, and DPO review pages. For the full read/write surface, use the regular ROPAManager from the same module.
import { ROPAManagerLite } from '@tantainnovative/ndpr-toolkit/ropa/lite';Quickstart
import { ROPAManagerLite } from '@tantainnovative/ndpr-toolkit/ropa/lite';
import type { RecordOfProcessingActivities } from '@tantainnovative/ndpr-toolkit';
const ropa: RecordOfProcessingActivities = {
id: 'ropa_001',
organizationName: 'Acme Ltd',
organizationContact: 'privacy@acme.example',
organizationAddress: '12 Marina Road, Lagos',
version: '1.0.0',
lastUpdated: Date.now(),
records: [
{
id: 'rec_001',
name: 'Order fulfilment',
description: 'Processing customer orders end to end.',
department: 'Operations',
controllerDetails: {
name: 'Acme Ltd',
contact: 'privacy@acme.example',
address: '12 Marina Road, Lagos',
},
lawfulBasis: 'contract',
lawfulBasisJustification: 'Necessary to perform the purchase contract.',
purposes: ['Fulfil and ship customer orders'],
dataCategories: ['Contact info', 'Order history'],
dataSubjectCategories: ['Customers'],
recipients: ['Logistics partner'],
retentionPeriod: '7 years',
securityMeasures: ['Encryption at rest', 'Access control'],
dataSource: 'data_subject',
dpiaRequired: false,
automatedDecisionMaking: false,
status: 'active',
createdAt: Date.now(),
updatedAt: Date.now(),
lastReviewedAt: Date.now() - 86400_000 * 30,
nextReviewDate: Date.now() + 86400_000 * 60,
},
],
};
export default function ROPAOverview() {
return (
<ROPAManagerLite
ropa={ropa}
showSummary
showComplianceGaps
onRecordClick={(r) => router.push(`/ropa/${r.id}`)}
/>
);
}Props
| Prop | Type | Description |
|---|---|---|
ropa | RecordOfProcessingActivities | Required. The full ROPA whose records are displayed. Matches the full ROPAManager API. |
title | string | Header. Defaults to "Record of Processing Activities (ROPA)". |
description | string | Sub-header. Defaults to an NDPA accountability-principle explainer. |
showSummary | boolean | Toggle the four-stat summary cards plus the lawful-basis / risk-indicator panels. Defaults to true. |
showComplianceGaps | boolean | Toggle the gap-alert banner powered by identifyComplianceGaps. Defaults to true. |
onRecordClick | (record: ProcessingRecord) => void | Optional row callback. When provided, each row becomes keyboard-accessible (Enter / Space activates). |
className | string | Extra class merged onto the root. |
classNames | ROPAManagerLiteClassNames | Per-slot overrides (root, header, title, summary, summaryCard, table, tableHeader, tableRow, statusBadge, complianceScore, gapAlert). |
unstyled | boolean | Strip every default class. |
Built-in row highlights
The table colour-codes rows so reviewers can scan for problems:
- Red — review is overdue (
nextReviewDateis in the past). - Yellow — record has at least one compliance gap from
identifyComplianceGaps. - White / surface — healthy.
When NOT to use the Lite variant
- You need a DPO to add, edit, or archive records — use the full ROPAManager.
- You need CSV export — use
exportROPAToCSVfrom/core(or the full manager's export panel). - You want server-side validation — pair with
validateProcessingRecordfrom/core.