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

PropTypeDescription
ropaRecordOfProcessingActivitiesRequired. The full ROPA whose records are displayed. Matches the full ROPAManager API.
titlestringHeader. Defaults to "Record of Processing Activities (ROPA)".
descriptionstringSub-header. Defaults to an NDPA accountability-principle explainer.
showSummarybooleanToggle the four-stat summary cards plus the lawful-basis / risk-indicator panels. Defaults to true.
showComplianceGapsbooleanToggle the gap-alert banner powered by identifyComplianceGaps. Defaults to true.
onRecordClick(record: ProcessingRecord) => voidOptional row callback. When provided, each row becomes keyboard-accessible (Enter / Space activates).
classNamestringExtra class merged onto the root.
classNamesROPAManagerLiteClassNamesPer-slot overrides (root, header, title, summary, summaryCard, table, tableHeader, tableRow, statusBadge, complianceScore, gapAlert).
unstyledbooleanStrip every default class.

Built-in row highlights

The table colour-codes rows so reviewers can scan for problems:

  • Red — review is overdue (nextReviewDate is 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 exportROPAToCSV from /core (or the full manager's export panel).
  • You want server-side validation — pair with validateProcessingRecord from /core.