+
{msg.title}
+
{msg.description}
+
+ {msg.showInstall && (
+
+ Install with: {msg.showInstall}
+
+ )}
+
+ {/* Action buttons */}
+
+ {error.recoverable && onRetry && (
+
+ )}
+ {onDismiss && (
+
+ )}
+
+
+ );
+}
diff --git a/tests/components/ErrorBoundary.test.tsx b/tests/components/ErrorBoundary.test.tsx
new file mode 100644
index 0000000..b5a98d0
--- /dev/null
+++ b/tests/components/ErrorBoundary.test.tsx
@@ -0,0 +1,275 @@
+import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
+import { render, screen } from "@testing-library/react";
+import userEvent from "@testing-library/user-event";
+import { ErrorBoundary, ErrorDisplay } from "@/components/ErrorBoundary";
+import type { McError, McErrorCode } from "@/lib/types";
+
+/** Helper to create a McError with defaults */
+function makeMcError(overrides: Partial