diff --git a/apps/web/src/app/arcade/error.tsx b/apps/web/src/app/arcade/error.tsx new file mode 100644 index 00000000..3149e54a --- /dev/null +++ b/apps/web/src/app/arcade/error.tsx @@ -0,0 +1,191 @@ +'use client' + +import { useEffect } from 'react' +import { PageWithNav } from '@/components/PageWithNav' +import { css } from '../../../styled-system/css' + +export default function ArcadeError({ + error, + reset, +}: { + error: Error & { digest?: string } + reset: () => void +}) { + useEffect(() => { + console.error('[Arcade Error Boundary]', error) + }, [error]) + + return ( + +
+ {/* Error icon */} +
+ ⚠️ +
+ + {/* Error title */} +

+ Something Went Wrong +

+ + {/* Error message */} +

+ The game encountered an unexpected error. You can try reloading the game, or return to the + arcade lobby. +

+ + {/* Action buttons */} +
+ + + + Return to Lobby + +
+ + {/* Technical details (collapsed by default) */} +
+ + Show technical details + + +
+
+ Error: {error.message} +
+ + {error.digest && ( +
+ Digest: {error.digest} +
+ )} + + {error.stack && ( +
+                {error.stack}
+              
+ )} +
+
+
+
+ ) +} diff --git a/apps/web/src/app/error.tsx b/apps/web/src/app/error.tsx new file mode 100644 index 00000000..09e4210e --- /dev/null +++ b/apps/web/src/app/error.tsx @@ -0,0 +1,237 @@ +'use client' + +import { useEffect } from 'react' +import { css } from '../../styled-system/css' + +export default function RootError({ + error, + reset, +}: { + error: Error & { digest?: string } + reset: () => void +}) { + useEffect(() => { + console.error('[Root Error Boundary]', error) + }, [error]) + + return ( + + +
+ {/* Error icon */} +
+ ⚠️ +
+ + {/* Error title */} +

+ Something Went Wrong +

+ + {/* Error message */} +

+ The application encountered an unexpected error. You can try reloading the page, or + return to the home page. +

+ + {/* Action buttons */} +
+ + + + Return Home + +
+ + {/* Navigation links */} + + + {/* Technical details (collapsed by default) */} +
+ + Show technical details + + +
+
+ Error: {error.message} +
+ + {error.digest && ( +
+ Digest: {error.digest} +
+ )} + + {error.stack && ( +
+                  {error.stack}
+                
+ )} +
+
+
+ + + ) +}