+ {/* P-M2 tab strip — hash-routed. Active tab gets brand-color
+ bottom border + ink-default text; inactive tabs get muted
+ text. aria-selected + role=tab for SR users. */}
+
+ {VALID_TABS.map((t) => {
+ const label = t.charAt(0).toUpperCase() + t.slice(1);
+ const isActive = tab === t;
+ return (
+
+ );
+ })}
+
+
{renewMutation.isSuccess && (
Renewal triggered successfully. A renewal job has been created.
@@ -671,6 +750,14 @@ export default function CertificateDetailPage() {
)}
+ {/* ── Overview tab panel ─────────────────────────────────── */}
+ {tab === 'overview' && (
+
{/* Revocation Banner */}
{isRevoked && (
@@ -788,16 +875,6 @@ export default function CertificateDetailPage() {
- {/* Inline Policy Editor */}
-
-
- {/* Revocation Endpoints (CRL + OCSP) — Phase 5 */}
-
-
{/* Tags */}
{cert.tags && Object.keys(cert.tags).length > 0 && (
@@ -809,7 +886,45 @@ export default function CertificateDetailPage() {
)}
+
+ )}
+ {/* ── Policy tab panel ──────────────────────────────────── */}
+ {tab === 'policy' && (
+