Package Exports
- @birhaus/compliance
- @birhaus/compliance/dist/index.js
- @birhaus/compliance/dist/index.mjs
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@birhaus/compliance) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@birhaus/compliance
Regulatory compliance and audit trail components for BIRHAUS design system
Comprehensive React components for regulatory compliance, audit trails, and privacy management with built-in support for SEPRELAD, GDPR, and Spanish-first documentation.
๐ Features
- ๐๏ธ SEPRELAD Compliance - Paraguay financial reporting automation
- ๐ GDPR Privacy Controls - European privacy regulation support
- ๐ Audit Trails - Complete action logging and timeline visualization
- ๐ช๐ธ Spanish-First - Primary Spanish interface with regulatory terminology
- ๐ Regulatory Reports - Automated compliance report generation
- ๐ Privacy Management - User consent and data protection tools
- โฟ Accessibility - WCAG AA+ compliant components
- โก Real-time Monitoring - Live compliance violation detection
- ๐ฑ Responsive - Mobile-optimized compliance interfaces
๐ฆ Installation
npm install @birhaus/compliance
# Peer dependencies
npm install react react-dom @birhaus/tokens @birhaus/primitives @birhaus/provider๐ฏ Quick Start
import {
BirhausAuditTrail,
BirhausPrivacyManager,
BirhausSEPRELADDashboard
} from '@birhaus/compliance'
function ComplianceDashboard() {
return (
<div>
{/* SEPRELAD Financial Compliance */}
<BirhausSEPRELADDashboard
transactions={transactionData}
showAlerts={true}
autoReport={true}
locale="es-PY"
/>
{/* Audit Trail Visualization */}
<BirhausAuditTrail
events={auditEvents}
showFilters={true}
titleEs="Registro de Actividades"
exportFormats={['pdf', 'csv']}
/>
{/* Privacy & GDPR Controls */}
<BirhausPrivacyManager
userConsents={userConsentData}
showGDPRControls={true}
allowDataExport={true}
privacyPolicy="/privacy-policy"
/>
</div>
)
}๐ Components
| Component | Purpose | Compliance Standards |
|---|---|---|
| BirhausSEPRELADDashboard | Paraguay financial reporting | SEPRELAD, Anti-Money Laundering |
| BirhausAuditTrail | Action logging & timeline | SOX, ISO 27001, Audit Standards |
| BirhausPrivacyManager | GDPR privacy controls | GDPR, CCPA, Data Protection |
| BirhausComplianceChecklist | Regulatory requirement tracking | Custom compliance frameworks |
| BirhausRegulatoryReport | Automated report generation | Multiple regulatory standards |
๐๏ธ SEPRELAD Dashboard
Complete Paraguay financial compliance automation:
import { BirhausSEPRELADDashboard } from '@birhaus/compliance'
function FinancialCompliance() {
const transactions = [
{
id: '1',
monto: 15000, // USD - triggers SEPRELAD reporting
moneda: 'USD',
tipo: 'transferencia',
fecha: new Date(),
origen: 'Juan Pรฉrez',
destino: 'Marรญa Gonzรกlez',
documentoIdentidad: '1.234.567'
}
]
return (
<BirhausSEPRELADDashboard
transactions={transactions}
// Automatic threshold monitoring
thresholdUSD={10000} // SEPRELAD threshold
autoReport={true} // Generate reports automatically
// Real-time alerts
showAlerts={true}
alertTypes={['threshold', 'suspicious', 'incomplete']}
// Spanish-first reporting
reportLanguage="es"
includeSpanishSummary={true}
// Export capabilities
showExport={true}
exportFormats={['pdf', 'excel', 'csv']}
// Audit integration
onComplianceEvent={(event) => {
console.log('SEPRELAD event:', event)
// Log to audit trail
}}
/>
)
}SEPRELAD Features
- โ Threshold Monitoring - Automatic USD conversion and reporting
- โ Suspicious Activity Detection - Pattern analysis for unusual transactions
- โ Document Validation - CI, RUC, and passport verification
- โ Report Generation - Official SEPRELAD format reports
- โ Spanish Documentation - All reports in Spanish as required
- โ Real-time Alerts - Immediate notification of reportable events
// Advanced SEPRELAD Configuration
<BirhausSEPRELADDashboard
transactions={transactions}
// Advanced monitoring
suspiciousPatterns={{
rapidTransfers: { limit: 5, timeframe: '1h' },
roundNumbers: true,
structuring: { threshold: 9500 }
}}
// Regulatory settings
reportingEntity={{
name: 'Banco Nacional de Paraguay',
code: 'BNP001',
supervisor: 'SEPRELAD'
}}
// Automatic escalation
escalationRules={{
amount: 50000, // USD
frequency: 10, // transactions per day
alertEmail: 'compliance@bank.py'
}}
/>๐ Audit Trail
Complete audit trail visualization with Spanish-first documentation:
import { BirhausAuditTrail } from '@birhaus/compliance'
function AuditPage() {
const auditEvents = [
{
id: '1',
timestamp: '2024-08-21T10:30:00Z',
actor: 'Marรญa Garcรญa',
actorId: 'user_123',
action: 'transferencia.creada',
entity: 'transferencia',
entityId: 'trans_456',
details: {
monto: 500000,
moneda: 'PYG',
destino: 'Juan Pรฉrez'
},
ipAddress: '192.168.1.100',
userAgent: 'Mozilla/5.0...',
status: 'success'
}
]
return (
<BirhausAuditTrail
events={auditEvents}
// Spanish-first interface
titleEs="Registro de Auditorรญa"
titleEn="Audit Trail"
emptyMessage="No hay actividades registradas"
// Filtering capabilities
showFilters={true}
filters={{
dateRange: true,
actor: true,
action: true,
status: true
}}
// Search functionality
showSearch={true}
searchFields={['actor', 'action', 'entity']}
// Export options
showExport={true}
exportFormats={['pdf', 'csv', 'json']}
// Real-time updates
realTime={true}
refreshInterval={30000} // 30 seconds
// Compliance features
showIntegrityCheck={true}
signEvents={true} // Digital signatures
/>
)
}Audit Trail Features
- ๐ Search & Filter - Find specific events quickly
- ๐ Timeline View - Chronological event visualization
- ๐ Integrity Protection - Tamper-evident audit logs
- ๐ฑ Mobile Optimized - Touch-friendly audit review
- โก Real-time Updates - Live event streaming
- ๐ Export Options - Multiple format support
๐ Privacy Manager
GDPR-compliant privacy controls and user consent management:
import { BirhausPrivacyManager } from '@birhaus/compliance'
function PrivacyDashboard() {
const userConsents = [
{
userId: 'user_123',
name: 'Marรญa Garcรญa',
email: 'maria@example.com',
consents: {
marketing: { granted: true, date: '2024-01-15' },
analytics: { granted: false, date: '2024-01-15' },
cookies: { granted: true, date: '2024-01-15' }
},
dataRequests: [
{
type: 'access',
date: '2024-02-01',
status: 'completed'
}
]
}
]
return (
<BirhausPrivacyManager
userConsents={userConsents}
// GDPR compliance
showGDPRControls={true}
gdprOptions={{
allowDataAccess: true,
allowDataPortability: true,
allowDataDeletion: true,
allowConsentWithdrawal: true
}}
// Spanish-first privacy
privacyLabels={{
dataAccess: { es: 'Acceso a Datos', en: 'Data Access' },
dataPortability: { es: 'Portabilidad', en: 'Portability' },
dataDeletion: { es: 'Eliminaciรณn', en: 'Deletion' }
}}
// Cookie management
cookieCategories={[
{ key: 'essential', required: true, nameEs: 'Esenciales' },
{ key: 'analytics', required: false, nameEs: 'Analรญticas' },
{ key: 'marketing', required: false, nameEs: 'Marketing' }
]}
// Privacy policy integration
privacyPolicyUrl="/politica-privacidad"
termsOfServiceUrl="/terminos-servicio"
// Audit integration
onPrivacyEvent={(event) => {
console.log('Privacy event:', event)
// Log privacy actions for audit
}}
/>
)
}GDPR Features
- โ Consent Management - Granular user consent tracking
- โ Data Access Requests - "Right to know" implementation
- โ Data Portability - Export user data in standard formats
- โ Data Deletion - "Right to be forgotten" automation
- โ Cookie Controls - Granular cookie category management
- โ Privacy Audit - Complete privacy action logging
๐ Regulatory Reports
Automated compliance report generation:
import { BirhausRegulatoryReport } from '@birhaus/compliance'
function ComplianceReporting() {
return (
<BirhausRegulatoryReport
reportType="seprelad-monthly"
// Data sources
transactions={transactionData}
entities={entityData}
timeRange={{
start: new Date('2024-08-01'),
end: new Date('2024-08-31')
}}
// Report configuration
includeGraphs={true}
includeSummary={true}
language="es" // Spanish-first reports
// Template customization
template={{
logo: '/company-logo.png',
header: 'Reporte Mensual SEPRELAD',
footer: 'Documento Confidencial'
}}
// Export settings
exportFormats={['pdf', 'excel']}
autoEmail={{
recipients: ['compliance@company.py'],
subject: 'Reporte Mensual SEPRELAD - Agosto 2024'
}}
// Compliance validation
validateBeforeExport={true}
requiredFields={['entityName', 'reportingPeriod', 'transactionSummary']}
/>
)
}โ Compliance Checklist
Track regulatory requirements across multiple frameworks:
import { BirhausComplianceChecklist } from '@birhaus/compliance'
function ComplianceTracking() {
const requirements = [
{
id: 'seprelad-1',
framework: 'SEPRELAD',
requirement: 'Reportar transacciones > $10,000 USD',
status: 'compliant',
lastChecked: '2024-08-21',
evidence: '/docs/seprelad-report-aug-2024.pdf'
},
{
id: 'gdpr-1',
framework: 'GDPR',
requirement: 'Polรญtica de privacidad actualizada',
status: 'pending',
dueDate: '2024-09-01',
assignee: 'Legal Team'
}
]
return (
<BirhausComplianceChecklist
requirements={requirements}
// Framework filtering
frameworks={['SEPRELAD', 'GDPR', 'SOX', 'ISO27001']}
showFrameworkFilter={true}
// Status tracking
statusTypes={{
compliant: { color: 'green', labelEs: 'Cumpliendo' },
pending: { color: 'yellow', labelEs: 'Pendiente' },
overdue: { color: 'red', labelEs: 'Vencido' }
}}
// Progress visualization
showProgressBar={true}
groupBy="framework"
// Action management
allowAddRequirement={true}
allowStatusUpdate={true}
allowEvidenceUpload={true}
// Notifications
sendReminders={true}
reminderDays={[30, 7, 1]} // Days before due date
/>
)
}๐ Data Protection Utilities
Additional utilities for data protection compliance:
import {
encryptSensitiveData,
anonymizeUserData,
validateDataRetention,
generatePrivacyReport
} from '@birhaus/compliance'
// Data encryption for storage
const encryptedData = encryptSensitiveData(userData, {
algorithm: 'AES-256-GCM',
keyRotation: true
})
// User data anonymization
const anonymizedData = anonymizeUserData(userData, {
preserveFields: ['id', 'createdAt'],
anonymizeFields: ['name', 'email', 'phone'],
strategy: 'pseudonymization' // or 'randomization'
})
// Data retention compliance
const retentionCheck = validateDataRetention(dataset, {
retentionPeriod: '7 years',
category: 'financial',
regulation: 'SEPRELAD'
})
// Privacy impact assessment
const privacyReport = generatePrivacyReport(dataProcessingActivity, {
includeRiskAssessment: true,
includeDataFlow: true,
language: 'es'
})๐จ Real-time Monitoring
Set up real-time compliance monitoring:
import { useComplianceMonitor } from '@birhaus/compliance'
function ComplianceMonitor() {
const {
violations,
alerts,
riskScore,
subscribe,
unsubscribe
} = useComplianceMonitor({
frameworks: ['SEPRELAD', 'GDPR'],
realTime: true,
alertThreshold: 'medium'
})
useEffect(() => {
// Subscribe to compliance events
const unsubscribeCallback = subscribe('seprelad', (event) => {
if (event.severity === 'high') {
// Send immediate alert
sendAlert('High-risk SEPRELAD violation detected')
}
})
return unsubscribeCallback
}, [subscribe])
return (
<div className="space-y-4">
{/* Risk Score Display */}
<div className="p-4 bg-white rounded-lg">
<h3>Puntuaciรณn de Riesgo: {riskScore}/100</h3>
<div className={`h-2 rounded ${
riskScore > 70 ? 'bg-red-500' :
riskScore > 40 ? 'bg-yellow-500' : 'bg-green-500'
}`} />
</div>
{/* Active Violations */}
{violations.map(violation => (
<div key={violation.id} className="p-4 border-l-4 border-red-500">
<h4>{violation.title}</h4>
<p>{violation.description}</p>
<span>Severidad: {violation.severity}</span>
</div>
))}
</div>
)
}๐ช๐ธ Spanish-First Compliance
All compliance terminology prioritizes Spanish language:
Regulatory Terminology
| Spanish | English | Context |
|---|---|---|
| Cumplimiento | Compliance | General compliance |
| Reporte Regulatorio | Regulatory Report | Official reporting |
| Operaciรณn Sospechosa | Suspicious Activity | SEPRELAD reporting |
| Consentimiento | Consent | GDPR privacy |
| Portabilidad de Datos | Data Portability | User rights |
| Derecho al Olvido | Right to be Forgotten | Data deletion |
Example Spanish-First Usage
<BirhausSEPRELADDashboard
titleEs="Panel de Cumplimiento SEPRELAD"
titleEn="SEPRELAD Compliance Dashboard"
// Spanish regulatory terms
alerts={{
threshold: 'Umbral de Reporte Alcanzado',
suspicious: 'Actividad Sospechosa Detectada',
incomplete: 'Documentaciรณn Incompleta'
}}
// Spanish report sections
reportSections={{
summary: 'Resumen Ejecutivo',
transactions: 'Transacciones Reportables',
entities: 'Entidades Involucradas',
recommendations: 'Recomendaciones'
}}
/>๐ฑ Mobile Compliance
Mobile-optimized compliance interfaces:
<BirhausPrivacyManager
// Mobile-first consent management
mobileOptimized={true}
// Touch-friendly controls
touchTargets="large"
// Simplified mobile UI
mobileLayout={{
hideSecondaryInfo: true,
stackControls: true,
expandableDetails: true
}}
// Mobile notifications
pushNotifications={{
consentUpdates: true,
privacyRequests: true,
dataBreaches: true
}}
/>๐งช Testing Compliance Components
import { render, screen } from '@testing-library/react'
import { BirhausAuditTrail } from '@birhaus/compliance'
import { complianceTestUtils } from '@birhaus/test-utils'
describe('BirhausAuditTrail', () => {
it('should display audit events in Spanish', () => {
render(
<BirhausAuditTrail
events={mockAuditEvents}
titleEs="Registro de Auditorรญa"
/>
)
expect(screen.getByText('Registro de Auditorรญa')).toBeInTheDocument()
})
it('should meet SEPRELAD compliance requirements', async () => {
const { container } = render(
<BirhausSEPRELADDashboard transactions={mockTransactions} />
)
const complianceResult = await complianceTestUtils.validateSEPRELAD(container)
expect(complianceResult.isCompliant).toBe(true)
})
})๐ Performance & Security
- Bundle Size: ~65KB gzipped (including crypto utilities)
- Data Encryption: AES-256-GCM for sensitive data
- Audit Integrity: SHA-256 hashing for tamper detection
- Real-time Processing: WebSocket-based compliance monitoring
- Secure Storage: Encrypted local storage for temporary data
๐ Troubleshooting
Common Issues
SEPRELAD reports not generating
// Ensure transaction data has required fields
const transaction = {
monto: 15000,
moneda: 'USD', // Required for USD conversion
documentoIdentidad: '1.234.567', // Required for reporting
tipoDocumento: 'CI' // Required field
}GDPR consent not saving
// Ensure BirhausProvider is configured
<BirhausProvider
compliance={{
gdpr: true,
cookieConsent: true
}}
>
<App />
</BirhausProvider>Audit events not displaying
// Check date format for audit events
const auditEvent = {
timestamp: new Date().toISOString(), // ISO format required
// ... other fields
}๐ค Contributing
We welcome contributions! Please see our Contributing Guide.
Compliance Standards
When contributing to compliance features:
- Follow SEPRELAD documentation standards
- Implement GDPR requirements completely
- Maintain Spanish-first language priority
- Include comprehensive audit logging
- Add proper security measures
๐ License
MIT ยฉ BIRHAUS Team
Cumplimiento regulatorio simplificado con BIRHAUS ๐๏ธ๐ช๐ธ