{
  "$schema": "https://shadcn-vue.com/schema/registry-item.json",
  "name": "compliance-soc2-readiness",
  "title": "Compliance Soc2 Readiness",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-vue/blocks/compliance-soc2-readiness/ComplianceSoc2Readiness.vue",
      "content": "<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport type { HTMLAttributes } from 'vue'\nimport {\n  AlertCircle,\n  AlertTriangle,\n  ArrowUpRight,\n  BadgeCheck,\n  Calendar,\n  Check,\n  CheckCircle2,\n  Clock,\n  Download,\n  Eye,\n  FileDown,\n  FileText,\n  Filter,\n  KeyRound,\n  Lock,\n  RefreshCw,\n  Search,\n  Server,\n  Shield,\n  ShieldCheck,\n  Users,\n  X,\n  Zap,\n} from 'lucide-vue-next'\nimport { cn } from '@/lib/utils'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'\nimport { Progress } from '@/components/ui/progress'\nimport { Separator } from '@/components/ui/separator'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@/components/ui/table'\nimport { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs'\n\ninterface Props {\n  class?: HTMLAttributes['class']\n  defaultFramework?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n  defaultFramework: 'soc2',\n})\n\nexport interface PillarData {\n  code: string\n  title: string\n  description: string\n  score: number\n  passed: number\n  total: number\n  status: string\n  statusVariant: 'success' | 'warning' | 'secondary'\n  highlights: string[]\n  iconType: 'key' | 'shield' | 'activity' | 'users' | 'lock' | 'server' | 'file'\n}\n\nexport interface EvidenceTestItem {\n  id: string\n  code: string\n  name: string\n  description: string\n  category: 'Identity & Auth' | 'Cloud Infrastructure' | 'Security Operations' | 'DevOps & CI/CD' | 'People & HR'\n  frequency: 'Continuous (1h)' | 'Daily' | 'Monthly' | 'Quarterly'\n  status: 'Passing' | 'Needs Attention'\n  statusVariant: 'success' | 'warning'\n  artifact: string\n  verified: boolean\n  lastTested: string\n  auditorNotes: string\n}\n\nexport interface FrameworkConfig {\n  id: string\n  tabLabel: string\n  name: string\n  badge: string\n  standard: string\n  score: number\n  readinessLabel: string\n  period: string\n  auditor: string\n  totalPassing: number\n  totalTests: number\n  pillars: PillarData[]\n  tests: EvidenceTestItem[]\n  trustCenterUrl: string\n}\n\nconst frameworksData: Record<string, FrameworkConfig> = {\n  soc2: {\n    id: 'soc2',\n    tabLabel: 'SOC 2 Type II',\n    name: 'SOC 2 Type II Readiness',\n    badge: 'Security & Confidentiality',\n    standard: 'AICPA Trust Services Criteria (CC1–CC9)',\n    score: 96,\n    readinessLabel: '96% Audit Ready',\n    period: 'Jan 1, 2026 – Dec 31, 2026',\n    auditor: 'KPMG LLP · Sarah Jenkins, CPA/CISA',\n    totalPassing: 69,\n    totalTests: 71,\n    pillars: [\n      {\n        code: 'CC1',\n        title: 'Access Control & IAM',\n        description: 'Identity federation, MFA enforcement, and least-privilege role provisioning.',\n        score: 100,\n        passed: 24,\n        total: 24,\n        status: '100% Passed · 24/24 tests',\n        statusVariant: 'success',\n        highlights: ['FIDO2/WebAuthn Hardware MFA', 'Just-In-Time Role Elevation'],\n        iconType: 'key',\n      },\n      {\n        code: 'CC2',\n        title: 'Encryption & Key Management',\n        description: 'Data encryption in-transit & at rest with automated CMK key rotation.',\n        score: 98,\n        passed: 18,\n        total: 18,\n        status: '98% Passed · 18/18 tests',\n        statusVariant: 'success',\n        highlights: ['AWS KMS Envelope CMKs', 'TLS 1.3 Strict Cipher Suites'],\n        iconType: 'shield',\n      },\n      {\n        code: 'CC3',\n        title: 'Incident Response & Logging',\n        description: 'Immutable audit trail ingesters, P1 runbooks, and real-time SIEM alerts.',\n        score: 94,\n        passed: 15,\n        total: 16,\n        status: '94% Passed · 15/16 tests',\n        statusVariant: 'warning',\n        highlights: ['Immutable WORM S3 Bucket', 'Quarterly Drill Executed'],\n        iconType: 'activity',\n      },\n      {\n        code: 'CC4',\n        title: 'Employee Security & Vendor Risk',\n        description: 'Background checks, awareness training, and third-party vendor DPA reviews.',\n        score: 92,\n        passed: 12,\n        total: 13,\n        status: '92% Passed · 12/13 tests',\n        statusVariant: 'secondary',\n        highlights: ['100% Staff Security Training', 'Tier 1 Vendor DPA Signed'],\n        iconType: 'users',\n      },\n    ],\n    tests: [\n      {\n        id: 'test-soc2-1',\n        code: 'CC6.1',\n        name: 'MFA Enforced for All Staff',\n        description: 'Continuous sync with Okta IAM confirming hardware/TOTP MFA active on all active seats.',\n        category: 'Identity & Auth',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'okta-mfa-sync-v2.json',\n        verified: true,\n        lastTested: '4m ago',\n        auditorNotes: '100% of 248 accounts verified with WebAuthn/FIDO2 hardware key enforcement.',\n      },\n      {\n        id: 'test-soc2-2',\n        code: 'CC6.6',\n        name: 'DB Storage Encrypted with KMS',\n        description: 'All production RDS PostgreSQL and Redis storage volumes encrypted at rest with AWS KMS.',\n        category: 'Cloud Infrastructure',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'aws-kms-rds-audit-prod.json',\n        verified: true,\n        lastTested: '12m ago',\n        auditorNotes: 'AES-256 GCM encryption validated across primary cluster and 4 replica volumes.',\n      },\n      {\n        id: 'test-soc2-3',\n        code: 'CC7.2',\n        name: 'Quarterly Penetration Test Completed',\n        description: 'Independent gray-box network and web application penetration test with zero open criticals.',\n        category: 'Security Operations',\n        frequency: 'Quarterly',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'BishopFox-Pentest-Q2-2026.pdf',\n        verified: true,\n        lastTested: 'Aug 12, 2026',\n        auditorNotes: 'Full remediation verified within 14-day SLA. Attestation signed by Bishop Fox.',\n      },\n      {\n        id: 'test-soc2-4',\n        code: 'CC6.7',\n        name: 'Automated Backup Verification Daily',\n        description: 'Daily point-in-time cross-region database snapshot validation and SHA-256 checksum test.',\n        category: 'Cloud Infrastructure',\n        frequency: 'Daily',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 's3-replica-checksum-20260821.log',\n        verified: true,\n        lastTested: '2h ago',\n        auditorNotes: 'Automated restore drill executed with RPO < 5m and RTO < 15m.',\n      },\n      {\n        id: 'test-soc2-5',\n        code: 'CC8.1',\n        name: 'Branch Protection & PR Reviews Enforced',\n        description: 'GitHub repository rulesets require min 2 peer reviews, signed commits, and passing CI.',\n        category: 'DevOps & CI/CD',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'github-branch-policy-main.json',\n        verified: true,\n        lastTested: '18m ago',\n        auditorNotes: 'Zero bypass permissions granted. Administrator force-push strictly disabled.',\n      },\n      {\n        id: 'test-soc2-6',\n        code: 'CC9.2',\n        name: 'Third-Party Vendor Risk Assessment',\n        description: 'Annual SOC 2 Type II report collection and DPA compliance review for active SaaS vendors.',\n        category: 'People & HR',\n        frequency: 'Monthly',\n        status: 'Needs Attention',\n        statusVariant: 'warning',\n        artifact: 'vendor-risk-matrix-2026.csv',\n        verified: false,\n        lastTested: 'Yesterday',\n        auditorNotes: '1 vendor report renewal pending (Datadog EU renewal contract awaiting counter-signature).',\n      },\n    ],\n    trustCenterUrl: 'https://trust.uipkge.dev',\n  },\n  iso27001: {\n    id: 'iso27001',\n    tabLabel: 'ISO 27001',\n    name: 'ISO/IEC 27001:2022 ISMS',\n    badge: 'Information Security Management',\n    standard: 'Annex A Controls (A.5 – A.8) · Stage 2 Ready',\n    score: 94,\n    readinessLabel: '94% Stage 2 Ready',\n    period: 'Audit Cycle 2026–2027',\n    auditor: 'BSI Group · Henrik Lindqvist, Lead Auditor',\n    totalPassing: 88,\n    totalTests: 93,\n    pillars: [\n      {\n        code: 'A.5',\n        title: 'Organizational Controls',\n        description: 'Information security policies, supplier governance, and asset inventories.',\n        score: 96,\n        passed: 35,\n        total: 37,\n        status: '96% Passed · 35/37 controls',\n        statusVariant: 'success',\n        highlights: ['Approved Security Policies', 'Supplier Risk Classification'],\n        iconType: 'shield',\n      },\n      {\n        code: 'A.6',\n        title: 'People Controls',\n        description: 'Screening, remote work guidelines, and continuous infosec education.',\n        score: 92,\n        passed: 8,\n        total: 8,\n        status: '92% Passed · 8/8 controls',\n        statusVariant: 'success',\n        highlights: ['Annual Training Certification', 'Formal Disciplinary Rules'],\n        iconType: 'users',\n      },\n      {\n        code: 'A.7',\n        title: 'Physical Controls',\n        description: 'Physical security perimeters, clear desk, and device screen lock policies.',\n        score: 100,\n        passed: 14,\n        total: 14,\n        status: '100% Passed · 14/14 controls',\n        statusVariant: 'success',\n        highlights: ['Zero Trust Cloud Infrastructure', 'Automated Screen Locking'],\n        iconType: 'lock',\n      },\n      {\n        code: 'A.8',\n        title: 'Technological Controls',\n        description: 'Endpoint protection, access rights, network security, and vulnerability management.',\n        score: 93,\n        passed: 31,\n        total: 34,\n        status: '93% Passed · 31/34 controls',\n        statusVariant: 'warning',\n        highlights: ['EDR on 100% Managed Laptops', 'Zero Trust Network Architecture'],\n        iconType: 'server',\n      },\n    ],\n    tests: [\n      {\n        id: 'test-iso-1',\n        code: 'A.8.2',\n        name: 'Privileged Access Rights Review',\n        description: 'Quarterly review and revocation of administrative privileges on AWS and cloud IdPs.',\n        category: 'Identity & Auth',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'iam-privileged-access-matrix.json',\n        verified: true,\n        lastTested: '8m ago',\n        auditorNotes: 'All root credentials locked behind hardware token in safe storage.',\n      },\n      {\n        id: 'test-iso-2',\n        code: 'A.8.24',\n        name: 'Use of Cryptography & Key Management',\n        description: 'Enforcement of cryptographic standard policies for data in transit and at rest.',\n        category: 'Cloud Infrastructure',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'crypto-policy-attestation.json',\n        verified: true,\n        lastTested: '15m ago',\n        auditorNotes: 'TLS 1.3 enforced globally. Insecure TLS 1.0/1.1 disabled.',\n      },\n      {\n        id: 'test-iso-3',\n        code: 'A.5.24',\n        name: 'Infosec Incident Management Plan',\n        description: 'Annual test of incident response playbooks and SIEM real-time alerting integration.',\n        category: 'Security Operations',\n        frequency: 'Quarterly',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'incident-drill-simulation-2026.pdf',\n        verified: true,\n        lastTested: 'Aug 04, 2026',\n        auditorNotes: 'Mean time to acknowledge (MTTA) under 3 minutes recorded during drill.',\n      },\n      {\n        id: 'test-iso-4',\n        code: 'A.8.9',\n        name: 'Configuration Management Validation',\n        description: 'Infrastructure-as-Code Terraform state tracking and drift detection alerts.',\n        category: 'DevOps & CI/CD',\n        frequency: 'Daily',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'terraform-drift-scan-log.json',\n        verified: true,\n        lastTested: '1h ago',\n        auditorNotes: '100% cloud resources provisioned strictly via verified CI pipelines.',\n      },\n      {\n        id: 'test-iso-5',\n        code: 'A.6.3',\n        name: 'Security Awareness & Training',\n        description: 'Tracking employee onboarding training completion and phishing simulation resilience.',\n        category: 'People & HR',\n        frequency: 'Monthly',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'knowbe4-training-summary-q2.csv',\n        verified: true,\n        lastTested: 'Aug 18, 2026',\n        auditorNotes: '98.4% staff passed quarterly spear-phishing test simulation.',\n      },\n      {\n        id: 'test-iso-6',\n        code: 'A.5.19',\n        name: 'Supplier Security Governance',\n        description: 'Formal security evaluation and risk scoring for external vendors processing company data.',\n        category: 'People & HR',\n        frequency: 'Monthly',\n        status: 'Needs Attention',\n        statusVariant: 'warning',\n        artifact: 'iso-vendor-evaluation-register.csv',\n        verified: false,\n        lastTested: '2 days ago',\n        auditorNotes: 'Annual security questionnaire overdue for 2 low-risk sub-contractors.',\n      },\n    ],\n    trustCenterUrl: 'https://trust.uipkge.dev',\n  },\n  hipaa: {\n    id: 'hipaa',\n    tabLabel: 'HIPAA Security Rule',\n    name: 'HIPAA Security & Privacy Rule',\n    badge: 'Healthcare & ePHI Protection',\n    standard: '45 CFR Part 160 & Part 164 Subparts A, C, E',\n    score: 98,\n    readinessLabel: '98% Compliant',\n    period: 'Active Assessment · 2026',\n    auditor: 'Coalfire Systems · HIPAA Assessor',\n    totalPassing: 42,\n    totalTests: 43,\n    pillars: [\n      {\n        code: '164.308',\n        title: 'Administrative Safeguards',\n        description: 'Security management process, workforce clearance, and contingency operations.',\n        score: 97,\n        passed: 18,\n        total: 18,\n        status: '97% Passed · 18/18 tests',\n        statusVariant: 'success',\n        highlights: ['Emergency Mode Operations', 'Violation Sanction Policy'],\n        iconType: 'shield',\n      },\n      {\n        code: '164.310',\n        title: 'Physical Safeguards',\n        description: 'Facility access controls, workstation security, and device media control.',\n        score: 100,\n        passed: 10,\n        total: 10,\n        status: '100% Passed · 10/10 tests',\n        statusVariant: 'success',\n        highlights: ['Encrypted SSD Storage Media', 'Biometric Facility Access'],\n        iconType: 'lock',\n      },\n      {\n        code: '164.312',\n        title: 'Technical Safeguards',\n        description: 'ePHI encryption, unique user identification, and automated session timeout.',\n        score: 96,\n        passed: 12,\n        total: 13,\n        status: '96% Passed · 12/13 tests',\n        statusVariant: 'warning',\n        highlights: ['15-Minute Auto-Lock Policy', 'SHA-256 Audit Trail Integrity'],\n        iconType: 'server',\n      },\n      {\n        code: '164.314',\n        title: 'Organizational Requirements',\n        description: 'Business Associate Agreements (BAAs) with all vendors handling ePHI.',\n        score: 100,\n        passed: 2,\n        total: 2,\n        status: '100% Passed · 2/2 BAAs',\n        statusVariant: 'success',\n        highlights: ['AWS HIPAA BAA Signed', 'Cloudflare HIPAA BAA Signed'],\n        iconType: 'users',\n      },\n    ],\n    tests: [\n      {\n        id: 'test-hipaa-1',\n        code: '164.312(a)(1)',\n        name: 'Unique User ePHI Access Identification',\n        description: 'Every healthcare provider and system operator assigned a unique non-shared login.',\n        category: 'Identity & Auth',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'hipaa-identity-access-log.json',\n        verified: true,\n        lastTested: '10m ago',\n        auditorNotes: 'Zero generic or shared accounts found across electronic health records.',\n      },\n      {\n        id: 'test-hipaa-2',\n        code: '164.312(a)(2)(iii)',\n        name: 'Automatic Logoff Configuration',\n        description: 'System automatically terminates an electronic session after 15 minutes of inactivity.',\n        category: 'Cloud Infrastructure',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'session-timeout-policy-test.json',\n        verified: true,\n        lastTested: '22m ago',\n        auditorNotes: 'Verified on web, desktop app, and clinician mobile portals.',\n      },\n      {\n        id: 'test-hipaa-3',\n        code: '164.312(b)',\n        name: 'Audit Controls & 6-Year Retention',\n        description: 'Immutable audit logs recording access, modification, and export of electronic patient data.',\n        category: 'Security Operations',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'audit-worm-retention-spec.json',\n        verified: true,\n        lastTested: '5m ago',\n        auditorNotes: 'AWS S3 Object Lock in Compliance Mode active with 6-year retention policy.',\n      },\n      {\n        id: 'test-hipaa-4',\n        code: '164.312(e)(1)',\n        name: 'Transmission Security TLS 1.3',\n        description: 'ePHI in transit encrypted across public networks using TLS 1.3 with HSTS enabled.',\n        category: 'Cloud Infrastructure',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'tls-cipher-scan-report.json',\n        verified: true,\n        lastTested: '30m ago',\n        auditorNotes: 'A+ SSL Labs score verified on all public API endpoints.',\n      },\n      {\n        id: 'test-hipaa-5',\n        code: '164.314(a)(1)',\n        name: 'Active BAAs for All Cloud Vendors',\n        description: 'Executed Business Associate Agreements signed with all subprocessors with access to ePHI.',\n        category: 'People & HR',\n        frequency: 'Monthly',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'signed-baa-register-2026.pdf',\n        verified: true,\n        lastTested: 'Aug 15, 2026',\n        auditorNotes: 'BAA signed with AWS, Twilio, SendGrid, and Datadog.',\n      },\n      {\n        id: 'test-hipaa-6',\n        code: '164.308(a)(7)',\n        name: 'Contingency & Disaster Recovery Plan',\n        description: 'Documented emergency mode operations and annual disaster recovery failover drill.',\n        category: 'Security Operations',\n        frequency: 'Quarterly',\n        status: 'Needs Attention',\n        statusVariant: 'warning',\n        artifact: 'dr-failover-drill-q2.pdf',\n        verified: false,\n        lastTested: '3 days ago',\n        auditorNotes: 'Q3 secondary region failover drill scheduled for next Tuesday.',\n      },\n    ],\n    trustCenterUrl: 'https://trust.uipkge.dev',\n  },\n  gdpr: {\n    id: 'gdpr',\n    tabLabel: 'GDPR',\n    name: 'General Data Protection Regulation',\n    badge: 'Data Privacy & Subject Rights',\n    standard: 'Regulation (EU) 2016/679 · DPO Supervised',\n    score: 95,\n    readinessLabel: '95% Compliant',\n    period: 'Annual Privacy Review · 2026',\n    auditor: 'Internal DPO & Lead Data Authority',\n    totalPassing: 32,\n    totalTests: 34,\n    pillars: [\n      {\n        code: 'Art 25',\n        title: 'Data Protection by Design',\n        description: 'Pseudonymization, data minimization, and automated retention limits.',\n        score: 94,\n        passed: 9,\n        total: 10,\n        status: '94% Passed · 9/10 tests',\n        statusVariant: 'success',\n        highlights: ['Automated 90-Day PII Purge', 'Data Minimization Schemas'],\n        iconType: 'shield',\n      },\n      {\n        code: 'Art 30',\n        title: 'Records of Processing (RoPA)',\n        description: 'Complete registry of personal data processing categories and legal purposes.',\n        score: 100,\n        passed: 8,\n        total: 8,\n        status: '100% Passed · 8/8 records',\n        statusVariant: 'success',\n        highlights: ['Dynamic RoPA Data Flow', 'Lawful Basis Cataloged'],\n        iconType: 'file',\n      },\n      {\n        code: 'Art 32',\n        title: 'Security of Processing',\n        description: 'Technical safeguards, encryption, and regular vulnerability assessments.',\n        score: 96,\n        passed: 11,\n        total: 11,\n        status: '100% Passed · 11/11 tests',\n        statusVariant: 'success',\n        highlights: ['Field-Level PII Encryption', 'Zero-Trust Bastion Access'],\n        iconType: 'lock',\n      },\n      {\n        code: 'Art 33/34',\n        title: 'Breach Notification Protocol',\n        description: '72-hour supervisory authority notification process and risk assessments.',\n        score: 90,\n        passed: 4,\n        total: 5,\n        status: '90% Passed · 4/5 tests',\n        statusVariant: 'warning',\n        highlights: ['72-Hour DPA Escalation SLA', 'Subject Notification Workflow'],\n        iconType: 'activity',\n      },\n    ],\n    tests: [\n      {\n        id: 'test-gdpr-1',\n        code: 'Art 17',\n        name: 'Right to Erasure / DSR Pipeline',\n        description: 'Automated user data deletion across database tables and 3rd party integrations in < 30 days.',\n        category: 'DevOps & CI/CD',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'dsr-erasure-orchestrator.json',\n        verified: true,\n        lastTested: '14m ago',\n        auditorNotes: 'Mean time to complete erasure request: 4.2 hours.',\n      },\n      {\n        id: 'test-gdpr-2',\n        code: 'Art 30',\n        name: 'RoPA Inventory Live Synchronization',\n        description:\n          'Data classification tags synced with schema catalog to ensure full records of processing coverage.',\n        category: 'Identity & Auth',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'ropa-schema-mapping-v3.json',\n        verified: true,\n        lastTested: '6m ago',\n        auditorNotes: '100% of PII data fields mapped to lawful basis.',\n      },\n      {\n        id: 'test-gdpr-3',\n        code: 'Art 28',\n        name: 'Data Processing Agreements (DPAs)',\n        description: 'Standard Contractual Clauses (SCCs) and DPAs executed with all EU data processors.',\n        category: 'People & HR',\n        frequency: 'Monthly',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'dpa-register-eu-2026.pdf',\n        verified: true,\n        lastTested: 'Aug 10, 2026',\n        auditorNotes: 'All sub-processors compliant with EU-US Data Privacy Framework.',\n      },\n      {\n        id: 'test-gdpr-4',\n        code: 'Art 7',\n        name: 'Cookie Consent & Preference CMP',\n        description: 'Explicit opt-in banner blocking non-essential tracking prior to affirmative user consent.',\n        category: 'Cloud Infrastructure',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'cmp-consent-telemetry.json',\n        verified: true,\n        lastTested: '1h ago',\n        auditorNotes: 'Zero tracking cookies loaded prior to consent confirmation.',\n      },\n      {\n        id: 'test-gdpr-5',\n        code: 'Art 32(1)(a)',\n        name: 'PII Field-Level Encryption at Rest',\n        description: 'Names, emails, and financial identifiers hashed or encrypted with AES-256 before storage.',\n        category: 'Cloud Infrastructure',\n        frequency: 'Continuous (1h)',\n        status: 'Passing',\n        statusVariant: 'success',\n        artifact: 'field-encryption-audit.json',\n        verified: true,\n        lastTested: '25m ago',\n        auditorNotes: 'KMS envelope encryption active on all customer records.',\n      },\n      {\n        id: 'test-gdpr-6',\n        code: 'Art 33',\n        name: '72-Hour Breach Notification Drill',\n        description: 'Tabletop simulation testing supervisory authority DPA notification within statutory 72h window.',\n        category: 'Security Operations',\n        frequency: 'Quarterly',\n        status: 'Needs Attention',\n        statusVariant: 'warning',\n        artifact: 'gdpr-breach-playbook-2026.pdf',\n        verified: false,\n        lastTested: '4 days ago',\n        auditorNotes: 'DPO escalation contact list updated; tabletop review due in Q3.',\n      },\n    ],\n    trustCenterUrl: 'https://trust.uipkge.dev',\n  },\n}\n\nconst activeFrameworkId = ref(props.defaultFramework || 'soc2')\nconst searchQuery = ref('')\nconst selectedCategory = ref<string>('all')\nconst runningTestIds = ref<Record<string, boolean>>({})\nconst lastTestedMap = ref<Record<string, string>>({})\nconst activeEvidenceModal = ref<EvidenceTestItem | null>(null)\nconst isTestingAll = ref(false)\nconst scheduleRequested = ref(false)\nconst exportSuccess = ref(false)\n\nconst currentFramework = computed(() => frameworksData[activeFrameworkId.value] || frameworksData.soc2)\n\nconst availableCategories = computed(() => {\n  const cats = new Set<string>()\n  currentFramework.value.tests.forEach((t) => cats.add(t.category))\n  return ['all', ...Array.from(cats)]\n})\n\nconst filteredTests = computed(() => {\n  const q = searchQuery.value.trim().toLowerCase()\n  const cat = selectedCategory.value\n  return currentFramework.value.tests.filter((test) => {\n    const matchesCat = cat === 'all' || test.category === cat\n    const matchesQuery =\n      !q ||\n      test.code.toLowerCase().includes(q) ||\n      test.name.toLowerCase().includes(q) ||\n      test.description.toLowerCase().includes(q) ||\n      test.artifact.toLowerCase().includes(q) ||\n      test.category.toLowerCase().includes(q)\n    return matchesCat && matchesQuery\n  })\n})\n\nfunction getPillarIcon(iconType: string) {\n  switch (iconType) {\n    case 'key':\n      return KeyRound\n    case 'shield':\n      return ShieldCheck\n    case 'activity':\n      return Zap\n    case 'users':\n      return Users\n    case 'lock':\n      return Lock\n    case 'server':\n      return Server\n    case 'file':\n      return FileText\n    default:\n      return Shield\n  }\n}\n\nfunction handleRunTest(testId: string) {\n  runningTestIds.value[testId] = true\n  setTimeout(() => {\n    runningTestIds.value[testId] = false\n    lastTestedMap.value[testId] = 'Just now'\n  }, 500)\n}\n\nfunction handleRunAllTests() {\n  isTestingAll.value = true\n  setTimeout(() => {\n    isTestingAll.value = false\n    currentFramework.value.tests.forEach((t) => {\n      lastTestedMap.value[t.id] = 'Just now'\n    })\n  }, 700)\n}\n\nfunction handleScheduleReview() {\n  scheduleRequested.value = true\n  setTimeout(() => {\n    scheduleRequested.value = false\n  }, 3000)\n}\n\nfunction handleExportPackage() {\n  exportSuccess.value = true\n  setTimeout(() => {\n    exportSuccess.value = false\n  }, 3000)\n}\n\nfunction viewEvidence(test: EvidenceTestItem) {\n  activeEvidenceModal.value = test\n}\n\nfunction closeEvidenceModal() {\n  activeEvidenceModal.value = null\n}\n</script>\n\n<template>\n  <div data-slot=\"compliance-soc2-readiness\" :class=\"cn('w-full space-y-6', props.class)\">\n    <!-- Framework Selector Tabs -->\n    <Tabs v-model=\"activeFrameworkId\" :default-value=\"props.defaultFramework\" class=\"w-full\">\n      <div class=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n        <TabsList class=\"grid w-full grid-cols-2 md:w-auto md:grid-cols-4\">\n          <TabsTrigger value=\"soc2\" class=\"text-xs font-medium\">SOC 2 Type II</TabsTrigger>\n          <TabsTrigger value=\"iso27001\" class=\"text-xs font-medium\">ISO 27001</TabsTrigger>\n          <TabsTrigger value=\"hipaa\" class=\"text-xs font-medium\">HIPAA Security Rule</TabsTrigger>\n          <TabsTrigger value=\"gdpr\" class=\"text-xs font-medium\">GDPR</TabsTrigger>\n        </TabsList>\n\n        <div class=\"text-muted-foreground flex items-center gap-2 text-xs\">\n          <span class=\"bg-success inline-flex size-2 rounded-full\" />\n          <span>Real-time Telemetry Ingestion Active</span>\n        </div>\n      </div>\n\n      <!-- Executive Overview Card -->\n      <Card class=\"border-border bg-card mt-4 shadow-xs\">\n        <CardContent class=\"p-6\">\n          <div class=\"flex flex-col gap-6 lg:flex-row lg:items-center lg:justify-between\">\n            <!-- Left: Framework info -->\n            <div class=\"space-y-2\">\n              <div class=\"flex flex-wrap items-center gap-2.5\">\n                <h1 class=\"text-foreground text-xl font-bold tracking-tight sm:text-2xl\">\n                  {{ currentFramework.name }}\n                </h1>\n                <Badge variant=\"secondary\" class=\"font-medium\">\n                  {{ currentFramework.badge }}\n                </Badge>\n              </div>\n              <p class=\"text-muted-foreground text-xs sm:text-sm\">\n                {{ currentFramework.standard }}\n              </p>\n              <div class=\"text-muted-foreground flex flex-wrap items-center gap-3 pt-1 text-xs\">\n                <Badge variant=\"outline\" class=\"gap-1.5 font-normal\">\n                  <Calendar class=\"size-3.5\" />\n                  {{ currentFramework.period }}\n                </Badge>\n                <Separator orientation=\"vertical\" class=\"hidden h-3.5 sm:block\" />\n                <span>\n                  Lead Assessor: <strong class=\"text-foreground font-medium\">{{ currentFramework.auditor }}</strong>\n                </span>\n              </div>\n            </div>\n\n            <!-- Right: Big Score Card & Action Buttons -->\n            <div class=\"flex flex-col gap-4 sm:flex-row sm:items-center\">\n              <!-- Score Badge -->\n              <div class=\"border-success/30 bg-success/10 flex items-center gap-3.5 rounded-xl border p-3.5 shadow-xs\">\n                <div class=\"bg-success/20 text-success flex size-11 shrink-0 items-center justify-center rounded-lg\">\n                  <ShieldCheck class=\"size-6\" />\n                </div>\n                <div class=\"space-y-0.5\">\n                  <div class=\"flex items-baseline gap-2\">\n                    <span class=\"text-success text-success text-2xl font-bold tracking-tight tabular-nums sm:text-3xl\">\n                      {{ currentFramework.score }}%\n                    </span>\n                    <Badge variant=\"success\" class=\"gap-1 px-2 text-xs font-semibold\">\n                      <CheckCircle2 class=\"size-3\" />\n                      {{ currentFramework.readinessLabel.replace(`${currentFramework.score}% `, '') }}\n                    </Badge>\n                  </div>\n                  <p class=\"text-muted-foreground text-xs\">\n                    {{ currentFramework.totalPassing }}/{{ currentFramework.totalTests }} Continuous Controls Passing\n                  </p>\n                </div>\n              </div>\n\n              <!-- Action Buttons -->\n              <div class=\"flex flex-wrap gap-2.5 sm:flex-col\">\n                <Button variant=\"default\" size=\"sm\" class=\"gap-2 shadow-xs\" @click=\"handleScheduleReview\">\n                  <Check v-if=\"scheduleRequested\" class=\"text-success size-4\" />\n                  <Calendar v-else class=\"size-4\" />\n                  <span>{{ scheduleRequested ? 'Review Requested!' : 'Schedule Auditor Review' }}</span>\n                </Button>\n\n                <Button variant=\"outline\" size=\"sm\" class=\"gap-2 shadow-xs\" @click=\"handleExportPackage\">\n                  <Check v-if=\"exportSuccess\" class=\"text-success size-4\" />\n                  <FileDown v-else class=\"size-4\" />\n                  <span>{{ exportSuccess ? 'Package Exported!' : 'Export Compliance Package' }}</span>\n                </Button>\n              </div>\n            </div>\n          </div>\n        </CardContent>\n      </Card>\n\n      <!-- 4 Compliance Control Pillar Cards -->\n      <div class=\"mt-6 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n        <Card\n          v-for=\"pillar in currentFramework.pillars\"\n          :key=\"pillar.code\"\n          class=\"border-border bg-card hover:border-border shadow-xs transition-colors\"\n        >\n          <CardHeader class=\"p-4 pb-2\">\n            <div class=\"flex items-start justify-between gap-2\">\n              <div class=\"flex items-center gap-2\">\n                <div\n                  class=\"bg-muted text-foreground border-border flex size-8 shrink-0 items-center justify-center rounded-lg border\"\n                >\n                  <component :is=\"getPillarIcon(pillar.iconType)\" class=\"size-4\" />\n                </div>\n                <Badge variant=\"outline\" class=\"font-mono text-xs font-semibold\">\n                  {{ pillar.code }}\n                </Badge>\n              </div>\n\n              <Badge :variant=\"pillar.statusVariant\" class=\"text-xs font-medium\">\n                {{ pillar.score === 100 ? 'Zero Gaps' : pillar.statusVariant === 'warning' ? '1 Warning' : 'Passing' }}\n              </Badge>\n            </div>\n\n            <CardTitle class=\"mt-2 text-sm leading-snug font-semibold\">\n              {{ pillar.title }}\n            </CardTitle>\n            <CardDescription class=\"line-clamp-2 text-xs\">\n              {{ pillar.description }}\n            </CardDescription>\n          </CardHeader>\n\n          <CardContent class=\"space-y-3 p-4 pt-1\">\n            <div class=\"space-y-1.5\">\n              <div class=\"flex flex-wrap items-baseline justify-between gap-x-2 gap-y-0.5 text-xs\">\n                <span class=\"text-foreground text-2xl font-bold tracking-tight tabular-nums\">\n                  {{ pillar.score }}%\n                </span>\n                <span class=\"text-muted-foreground font-medium tabular-nums\">\n                  {{ pillar.passed }}/{{ pillar.total }} tests\n                </span>\n              </div>\n              <Progress :model-value=\"pillar.score\" class=\"h-1.5 w-full\" />\n            </div>\n\n            <!-- Bullet highlights -->\n            <div class=\"bg-muted/40 border-border/60 space-y-1 rounded-md border p-2 text-xs\">\n              <div\n                v-for=\"highlight in pillar.highlights\"\n                :key=\"highlight\"\n                class=\"text-muted-foreground flex items-center gap-1.5\"\n              >\n                <CheckCircle2 class=\"text-success size-3 shrink-0\" />\n                <span class=\"truncate\">{{ highlight }}</span>\n              </div>\n            </div>\n          </CardContent>\n        </Card>\n      </div>\n\n      <!-- Automated Evidence Tests Table Card -->\n      <Card class=\"border-border bg-card mt-6 shadow-xs\">\n        <CardHeader class=\"flex flex-col gap-4 pb-4 sm:flex-row sm:items-center sm:justify-between\">\n          <div>\n            <div class=\"flex items-center gap-2\">\n              <CardTitle class=\"text-base font-semibold\">Automated Evidence Tests</CardTitle>\n              <Badge variant=\"secondary\" class=\"font-mono text-xs\"> {{ filteredTests.length }} Active </Badge>\n            </div>\n            <CardDescription class=\"text-xs\">\n              Continuous synthetic and policy compliance evaluation across infrastructure and IAM.\n            </CardDescription>\n          </div>\n\n          <div class=\"flex flex-wrap items-center gap-2\">\n            <Button\n              variant=\"outline\"\n              size=\"sm\"\n              class=\"gap-1.5 text-xs shadow-xs\"\n              :disabled=\"isTestingAll\"\n              @click=\"handleRunAllTests\"\n            >\n              <RefreshCw :class=\"['size-3.5', isTestingAll ? 'animate-spin' : '']\" />\n              <span>{{ isTestingAll ? 'Evaluating Tests...' : 'Run All Automated Tests' }}</span>\n            </Button>\n          </div>\n        </CardHeader>\n\n        <!-- Filter & Search Toolbar -->\n        <div class=\"border-border/60 border-t p-4 pt-3 pb-3\">\n          <div class=\"flex flex-col gap-3 lg:flex-row lg:items-center lg:justify-between\">\n            <div class=\"relative flex-1\">\n              <Search\n                class=\"text-muted-foreground pointer-events-none absolute top-1/2 left-3 size-3.5 -translate-y-1/2\"\n              />\n              <input\n                v-model=\"searchQuery\"\n                type=\"text\"\n                placeholder=\"Filter by control code, name, category, or evidence artifact...\"\n                class=\"border-border bg-background placeholder:text-muted-foreground focus-visible:ring-ring h-8 w-full rounded-md border px-3 pl-8 text-xs focus-visible:ring-2 focus-visible:outline-none\"\n              />\n            </div>\n\n            <div class=\"flex flex-wrap items-center gap-1.5\">\n              <span class=\"text-muted-foreground mr-1 flex items-center gap-1 text-xs font-medium\">\n                <Filter class=\"size-3\" />\n                Category:\n              </span>\n              <button\n                v-for=\"cat in availableCategories\"\n                :key=\"cat\"\n                type=\"button\"\n                :class=\"[\n                  'focus-visible:ring-ring inline-flex items-center rounded-full border px-2.5 py-1 text-xs font-medium transition-colors focus-visible:ring-2 focus-visible:outline-none',\n                  selectedCategory === cat\n                    ? 'border-primary bg-primary text-primary-foreground shadow-xs'\n                    : 'border-border bg-card text-muted-foreground hover:bg-accent hover:text-foreground',\n                ]\"\n                @click=\"selectedCategory = cat\"\n              >\n                {{ cat === 'all' ? 'All Categories' : cat }}\n              </button>\n            </div>\n          </div>\n        </div>\n\n        <!-- Table Container -->\n        <CardContent class=\"p-0\">\n          <div class=\"border-border/60 overflow-x-auto border-t\">\n            <Table>\n              <TableHeader class=\"bg-muted/50\">\n                <TableRow>\n                  <TableHead class=\"min-w-[220px] text-xs\">Control & Rule Name</TableHead>\n                  <TableHead class=\"text-xs\">Domain Category</TableHead>\n                  <TableHead class=\"text-xs\">Frequency</TableHead>\n                  <TableHead class=\"text-xs\">Status</TableHead>\n                  <TableHead class=\"text-xs\">Evidence Artifact</TableHead>\n                  <TableHead class=\"text-right text-xs\">Actions</TableHead>\n                </TableRow>\n              </TableHeader>\n              <TableBody>\n                <TableRow v-for=\"test in filteredTests\" :key=\"test.id\" class=\"hover:bg-muted/20\">\n                  <!-- Control Code & Name -->\n                  <TableCell class=\"py-3\">\n                    <div class=\"space-y-0.5\">\n                      <div class=\"flex items-center gap-2\">\n                        <span class=\"text-foreground font-mono text-xs font-bold\">{{ test.code }}</span>\n                        <span class=\"text-foreground text-xs font-semibold\">{{ test.name }}</span>\n                      </div>\n                      <p class=\"text-muted-foreground max-w-sm text-xs leading-relaxed sm:max-w-md\">\n                        {{ test.description }}\n                      </p>\n                    </div>\n                  </TableCell>\n\n                  <!-- Category -->\n                  <TableCell class=\"py-3\">\n                    <Badge variant=\"outline\" class=\"text-xs font-normal\">\n                      {{ test.category }}\n                    </Badge>\n                  </TableCell>\n\n                  <!-- Frequency -->\n                  <TableCell class=\"text-muted-foreground py-3 text-xs\">\n                    <div class=\"flex items-center gap-1.5 font-medium\">\n                      <Clock class=\"size-3.5\" />\n                      <span>{{ test.frequency }}</span>\n                    </div>\n                    <span class=\"text-muted-foreground/70 block text-xs\">\n                      Tested: {{ lastTestedMap[test.id] || test.lastTested }}\n                    </span>\n                  </TableCell>\n\n                  <!-- Status -->\n                  <TableCell class=\"py-3\">\n                    <Badge :variant=\"test.statusVariant\" class=\"gap-1 text-xs font-medium\">\n                      <CheckCircle2 v-if=\"test.status === 'Passing'\" class=\"size-3\" />\n                      <AlertTriangle v-else class=\"size-3\" />\n                      {{ test.status }}\n                    </Badge>\n                  </TableCell>\n\n                  <!-- Evidence Artifact Link -->\n                  <TableCell class=\"py-3\">\n                    <button\n                      type=\"button\"\n                      class=\"hover:border-primary/40 hover:bg-muted/60 focus-visible:ring-ring group border-border/80 bg-muted/30 flex items-center gap-1.5 rounded-md border px-2 py-1 text-left transition-colors focus-visible:ring-2 focus-visible:outline-none\"\n                      @click=\"viewEvidence(test)\"\n                    >\n                      <FileText class=\"text-muted-foreground group-hover:text-foreground size-3.5 shrink-0\" />\n                      <span class=\"text-foreground max-w-[150px] truncate font-mono text-xs sm:max-w-[200px]\">\n                        {{ test.artifact }}\n                      </span>\n                      <CheckCircle2 v-if=\"test.verified\" class=\"text-success size-3 shrink-0\" />\n                    </button>\n                  </TableCell>\n\n                  <!-- Action Buttons -->\n                  <TableCell class=\"py-3 text-right\">\n                    <div class=\"flex items-center justify-end gap-1.5\">\n                      <Button\n                        variant=\"ghost\"\n                        size=\"xs\"\n                        class=\"h-7 gap-1 text-xs\"\n                        :disabled=\"runningTestIds[test.id]\"\n                        @click=\"handleRunTest(test.id)\"\n                      >\n                        <RefreshCw :class=\"['size-3', runningTestIds[test.id] ? 'animate-spin' : '']\" />\n                        <span class=\"hidden sm:inline\">Test Now</span>\n                      </Button>\n\n                      <Button variant=\"outline\" size=\"xs\" class=\"h-7 gap-1 text-xs\" @click=\"viewEvidence(test)\">\n                        <Eye class=\"size-3\" />\n                        <span>Evidence</span>\n                      </Button>\n                    </div>\n                  </TableCell>\n                </TableRow>\n\n                <TableRow v-if=\"filteredTests.length === 0\">\n                  <TableCell colspan=\"6\" class=\"py-8 text-center\">\n                    <p class=\"text-muted-foreground text-xs\">No automated compliance tests match your query.</p>\n                  </TableCell>\n                </TableRow>\n              </TableBody>\n            </Table>\n          </div>\n        </CardContent>\n      </Card>\n\n      <!-- Auditor Access & Trust Center Preview Strip -->\n      <Card class=\"border-border bg-card mt-6 overflow-hidden shadow-xs\">\n        <CardContent class=\"p-6\">\n          <div class=\"flex flex-col gap-6 lg:flex-row lg:items-center lg:justify-between\">\n            <div class=\"flex items-start gap-4\">\n              <div\n                class=\"bg-primary/10 text-primary border-primary/20 flex size-11 shrink-0 items-center justify-center rounded-xl border\"\n              >\n                <BadgeCheck class=\"size-6\" />\n              </div>\n              <div class=\"space-y-1\">\n                <div class=\"flex flex-wrap items-center gap-2\">\n                  <h3 class=\"text-foreground text-base font-semibold\">Auditor Access & Public Trust Center</h3>\n                  <Badge variant=\"outline\" class=\"gap-1 font-mono text-xs\">\n                    <span class=\"bg-success size-1.5 rounded-full\" />\n                    Vault Online\n                  </Badge>\n                </div>\n                <p class=\"text-muted-foreground text-xs leading-relaxed sm:text-sm\">\n                  Cryptographically verifiable evidence room configured for continuous compliance review by\n                  <strong class=\"text-foreground font-medium\">{{ currentFramework.auditor }}</strong\n                  >.\n                </p>\n                <div class=\"text-muted-foreground flex flex-wrap items-center gap-3 pt-1 text-xs\">\n                  <span>Access Grant: <strong class=\"text-foreground font-medium\">Valid for 14 days</strong></span>\n                  <Separator orientation=\"vertical\" class=\"hidden h-3 sm:block\" />\n                  <span\n                    >Trust Portal:\n                    <span class=\"text-foreground font-mono\">{{ currentFramework.trustCenterUrl }}</span></span\n                  >\n                </div>\n              </div>\n            </div>\n\n            <div class=\"flex flex-wrap items-center gap-2.5 sm:self-start lg:self-center\">\n              <a :href=\"currentFramework.trustCenterUrl\" target=\"_blank\" rel=\"noreferrer\" class=\"inline-flex\">\n                <Button variant=\"outline\" size=\"sm\" class=\"gap-1.5 shadow-xs\">\n                  <ArrowUpRight class=\"size-4\" />\n                  <span>Preview Live Trust Center</span>\n                </Button>\n              </a>\n\n              <Button variant=\"secondary\" size=\"sm\" class=\"gap-1.5 shadow-xs\">\n                <KeyRound class=\"size-4\" />\n                <span>Manage Auditor Access</span>\n              </Button>\n            </div>\n          </div>\n        </CardContent>\n\n        <!-- Bottom Audit Ingestion Watermark -->\n        <div\n          class=\"bg-muted/40 border-border flex flex-col gap-2 border-t px-6 py-2.5 text-xs sm:flex-row sm:items-center sm:justify-between\"\n        >\n          <div class=\"text-muted-foreground flex items-center gap-2 font-mono\">\n            <span class=\"bg-success size-1.5 rounded-full\" />\n            <span>Ledger Stamp: 0x9b4a8e217f0a4421b8c1992019a · SHA-256 Verified</span>\n          </div>\n          <span class=\"text-muted-foreground font-mono text-xs\">\n            Framework: {{ currentFramework.tabLabel }} · Last Evaluation: Just now\n          </span>\n        </div>\n      </Card>\n    </Tabs>\n\n    <!-- Modal / Sheet Preview for Evidence Artifact -->\n    <div\n      v-if=\"activeEvidenceModal\"\n      class=\"bg-background/80 fixed inset-0 z-50 flex items-center justify-center p-4 backdrop-blur-sm\"\n      @click.self=\"closeEvidenceModal\"\n    >\n      <Card class=\"border-border bg-card w-full max-w-lg shadow-lg\">\n        <CardHeader class=\"flex flex-row items-center justify-between pb-3\">\n          <div class=\"space-y-1\">\n            <div class=\"flex items-center gap-2\">\n              <Badge variant=\"outline\" class=\"font-mono text-xs\">{{ activeEvidenceModal.code }}</Badge>\n              <CardTitle class=\"text-base font-semibold\">Evidence Verification Details</CardTitle>\n            </div>\n            <CardDescription class=\"text-xs\">{{ activeEvidenceModal.name }}</CardDescription>\n          </div>\n          <Button\n            variant=\"ghost\"\n            size=\"icon-sm\"\n            class=\"size-7\"\n            aria-label=\"Close evidence modal\"\n            @click=\"closeEvidenceModal\"\n          >\n            <X class=\"size-4\" />\n          </Button>\n        </CardHeader>\n\n        <CardContent class=\"space-y-4 text-xs\">\n          <div class=\"bg-muted/40 border-border/80 space-y-2 rounded-lg border p-3\">\n            <div class=\"flex items-center justify-between\">\n              <span class=\"text-muted-foreground font-medium\">Artifact File:</span>\n              <span class=\"text-foreground font-mono font-semibold\">{{ activeEvidenceModal.artifact }}</span>\n            </div>\n            <div class=\"flex items-center justify-between\">\n              <span class=\"text-muted-foreground font-medium\">Verification Status:</span>\n              <Badge :variant=\"activeEvidenceModal.statusVariant\" class=\"gap-1 text-xs\">\n                <CheckCircle2 v-if=\"activeEvidenceModal.verified\" class=\"size-3\" />\n                <AlertCircle v-else class=\"size-3\" />\n                {{ activeEvidenceModal.verified ? 'Cryptographically Verified' : 'Action Required' }}\n              </Badge>\n            </div>\n            <div class=\"flex items-center justify-between\">\n              <span class=\"text-muted-foreground font-medium\">Test Frequency:</span>\n              <span class=\"text-foreground font-mono\">{{ activeEvidenceModal.frequency }}</span>\n            </div>\n          </div>\n\n          <div class=\"space-y-1.5\">\n            <span class=\"text-muted-foreground font-medium\">Auditor Evaluation Notes:</span>\n            <p class=\"bg-muted/20 border-border text-foreground rounded-md border p-2.5 leading-relaxed\">\n              {{ activeEvidenceModal.auditorNotes }}\n            </p>\n          </div>\n\n          <div class=\"flex items-center justify-end gap-2 pt-2\">\n            <Button\n              aria-label=\"Close evidence modal\"\n              variant=\"outline\"\n              size=\"sm\"\n              class=\"text-xs\"\n              @click=\"closeEvidenceModal\"\n            >\n              Close\n            </Button>\n            <Button\n              aria-label=\"Close evidence modal\"\n              variant=\"default\"\n              size=\"sm\"\n              class=\"gap-1.5 text-xs\"\n              @click=\"closeEvidenceModal\"\n            >\n              <Download class=\"size-3.5\" />\n              Download Artifact\n            </Button>\n          </div>\n        </CardContent>\n      </Card>\n    </div>\n  </div>\n</template>\n",
      "type": "registry:block",
      "target": "~/app/components/blocks/ComplianceSoc2Readiness.vue"
    }
  ],
  "dependencies": [
    "lucide-vue-next"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/vue/badge.json",
    "https://uipkge.dev/r/vue/button.json",
    "https://uipkge.dev/r/vue/card.json",
    "https://uipkge.dev/r/vue/progress.json",
    "https://uipkge.dev/r/vue/separator.json",
    "https://uipkge.dev/r/vue/table.json",
    "https://uipkge.dev/r/vue/tabs.json"
  ],
  "description": "Vanta/Drata-style SOC 2 Type II, ISO 27001, and HIPAA compliance readiness dashboard with framework selector tabs, audit readiness scorecards, 4 control pillar health bars, continuous automated evidence test tables with verified artifact badges, and auditor trust center portal controls.",
  "categories": [
    "legal",
    "app",
    "security"
  ]
}