mirror of
https://github.com/root-fr/jmap-webmail.git
synced 2026-09-26 08:01:20 +00:00
New features: - Folder management with context menu, inline editing, drag-and-drop (#44) - Mail multi-selection with batch move/delete and shift-click (#43) Bug fixes: - Health endpoint false-positive restarts (#41, thanks @wrenix and @ClemaX) - Identity deletion failing (#42, thanks @freddij) - Inline CID images, email list flicker, dark mode clipboard tint Feature requests from @dlecourtaltimafr (#43, #44). Contact pagination fix contributed by @capitanroy (#46). Dependencies: Next.js 16.2.1, Tailwind 4.2.2, Zustand 5.0.12, flatted CVE fix (GHSA-rf6f-7fwh-wjgh).
55 lines
1.8 KiB
TypeScript
55 lines
1.8 KiB
TypeScript
"use client";
|
|
|
|
import { useEffect } from "react";
|
|
import { AlertTriangle, RefreshCw } from "lucide-react";
|
|
|
|
/**
|
|
* Global error boundary for the root layout.
|
|
*
|
|
* IMPORTANT: Strings in this file CANNOT be translated.
|
|
* This global error boundary renders outside the root layout and has no access
|
|
* to providers (including next-intl). This is a Next.js limitation for
|
|
* catastrophic error handling. These English strings only appear during
|
|
* critical failures when the entire app crashes.
|
|
*
|
|
* The component must render its own <html> and <body> tags as it replaces
|
|
* the root layout entirely.
|
|
*/
|
|
export default function GlobalError({
|
|
error,
|
|
reset,
|
|
}: {
|
|
error: Error & { digest?: string };
|
|
reset: () => void;
|
|
}) {
|
|
useEffect(() => {
|
|
}, [error]);
|
|
|
|
return (
|
|
<html lang="en">
|
|
<body className="bg-gray-50 dark:bg-gray-900">
|
|
<div className="min-h-screen flex items-center justify-center">
|
|
<div className="text-center max-w-md px-4">
|
|
<div className="w-20 h-20 mx-auto mb-6 rounded-full bg-red-100 dark:bg-red-900/30 flex items-center justify-center">
|
|
<AlertTriangle className="w-10 h-10 text-red-600 dark:text-red-400" />
|
|
</div>
|
|
<h1 className="text-2xl font-bold text-gray-900 dark:text-gray-100 mb-2">
|
|
Something went wrong
|
|
</h1>
|
|
<p className="text-gray-600 dark:text-gray-400 mb-6">
|
|
An unexpected error occurred. Please try again.
|
|
</p>
|
|
<button
|
|
onClick={reset}
|
|
className="inline-flex items-center px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors"
|
|
>
|
|
<RefreshCw className="w-4 h-4 mr-2" />
|
|
Try again
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|