{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "security-trust-center-grid",
  "title": "Security — Trust Centre Grid",
  "type": "registry:block",
  "files": [
    {
      "path": "packages/registry-react/blocks/security-trust-center-grid/SecurityTrustCenterGrid.tsx",
      "content": "'use client'\n\nimport { ArrowUpRight, FileText, KeyRound, Lock, ScrollText, ServerCog, Users } from 'lucide-react'\nimport { Badge } from '@/components/ui/badge'\nimport { Button } from '@/components/ui/button'\nimport { Card, CardContent } from '@/components/ui/card'\nimport { Separator } from '@/components/ui/separator'\n\nconst programmes = [\n  {\n    name: 'SOC 2 Type II',\n    scope: 'Security, availability, confidentiality',\n    audited: 'Mar 2026',\n    body: 'Prescient Assurance',\n  },\n  { name: 'ISO 27001', scope: 'Information security management', audited: 'Jan 2026', body: 'BSI Group' },\n  { name: 'HIPAA', scope: 'PHI handling, BAA available', audited: 'Nov 2025', body: 'Third-party assessed' },\n  { name: 'GDPR', scope: 'EU data protection, DPA available', audited: 'Ongoing', body: 'Self-attested' },\n]\n\n// Stated as mechanisms, not reassurance: each line is something a reviewer can\n// verify rather than a claim about intent.\nconst controls = [\n  { icon: Lock, label: 'Read-only warehouse access', detail: 'No write grant is ever requested.' },\n  { icon: KeyRound, label: 'Customer-managed keys', detail: 'Rotation handled through your KMS.' },\n  { icon: Users, label: 'SCIM deprovisioning', detail: 'Access ends with the directory record.' },\n  { icon: ScrollText, label: 'Immutable audit log', detail: 'Append-only, exportable, 7-year retention.' },\n  { icon: ServerCog, label: 'Regional isolation', detail: 'EU, US, and AU estates do not share planes.' },\n  { icon: FileText, label: 'Published subprocessors', detail: 'Change notice 30 days before it takes effect.' },\n]\n\nexport function SecurityTrustCenterGrid() {\n  return (\n    <section data-slot=\"security-trust-center-grid\" className=\"bg-background\">\n      <div className=\"mx-auto max-w-6xl px-6 py-20 lg:py-28\">\n        <div className=\"flex flex-wrap items-end justify-between gap-6\">\n          <div className=\"max-w-2xl\">\n            <Badge variant=\"secondary\">Trust</Badge>\n            <h2 className=\"mt-4 text-3xl font-semibold tracking-tight sm:text-4xl\">What we can show you, with dates</h2>\n            <p className=\"text-muted-foreground mt-3 text-lg\">\n              Reports are available under NDA. Everything below names who audited it and when.\n            </p>\n          </div>\n          <Button variant=\"outline\">Open the trust centre</Button>\n        </div>\n\n        <div className=\"mt-10 grid gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n          {programmes.map((programme) => (\n            <Card key={programme.name} className=\"group\">\n              <CardContent className=\"flex h-full flex-col p-5\">\n                <p className=\"text-sm font-semibold\">{programme.name}</p>\n                <p className=\"text-muted-foreground mt-2 text-xs leading-relaxed\">{programme.scope}</p>\n                <Separator className=\"my-4\" />\n                <dl className=\"space-y-1.5 text-xs\">\n                  <div className=\"flex items-center justify-between gap-3\">\n                    <dt className=\"text-muted-foreground\">Audited</dt>\n                    <dd className=\"font-medium\">{programme.audited}</dd>\n                  </div>\n                  <div className=\"flex items-center justify-between gap-3\">\n                    <dt className=\"text-muted-foreground\">By</dt>\n                    <dd className=\"truncate font-medium\">{programme.body}</dd>\n                  </div>\n                </dl>\n                <Button variant=\"ghost\" size=\"sm\" className=\"mt-auto justify-start px-0 pt-4 text-xs\">\n                  Request report\n                  <ArrowUpRight\n                    className=\"ml-1 size-3 transition-transform group-hover:translate-x-0.5 group-hover:-translate-y-0.5\"\n                    aria-hidden=\"true\"\n                  />\n                </Button>\n              </CardContent>\n            </Card>\n          ))}\n        </div>\n\n        <Separator className=\"my-10\" />\n\n        <ul className=\"grid gap-x-10 gap-y-6 sm:grid-cols-2 lg:grid-cols-3\">\n          {controls.map((control) => (\n            <li key={control.label} className=\"flex gap-3\">\n              <control.icon className=\"text-muted-foreground mt-0.5 size-4 shrink-0\" aria-hidden=\"true\" />\n              <div className=\"min-w-0\">\n                <p className=\"text-sm font-medium\">{control.label}</p>\n                <p className=\"text-muted-foreground mt-0.5 text-xs leading-relaxed\">{control.detail}</p>\n              </div>\n            </li>\n          ))}\n        </ul>\n      </div>\n    </section>\n  )\n}\n",
      "type": "registry:block",
      "target": "~/components/blocks/SecurityTrustCenterGrid.tsx"
    }
  ],
  "dependencies": [
    "lucide-react"
  ],
  "devDependencies": [],
  "registryDependencies": [
    "https://uipkge.dev/r/react/badge.json",
    "https://uipkge.dev/r/react/button.json",
    "https://uipkge.dev/r/react/card.json",
    "https://uipkge.dev/r/react/separator.json"
  ],
  "description": "Trust centre surface pairing compliance programmes with their audit date, scope, and report link, over a row of operational controls stated as facts rather than claims.",
  "categories": [
    "marketing"
  ]
}