diff --git a/src/public/staticwebapp.config.json b/src/public/staticwebapp.config.json new file mode 100644 index 0000000..c4e8259 --- /dev/null +++ b/src/public/staticwebapp.config.json @@ -0,0 +1,16 @@ +{ + "navigationFallback": { + "rewrite": "/404.html", + "exclude": [ + "/images/*.{png,jpg,gif,svg,ico,webp}", + "/_next/*", + "/favicon.ico" + ] + }, + "responseOverrides": { + "404": { + "rewrite": "/404.html", + "statusCode": 404 + } + } +} diff --git a/src/src/app/error.tsx b/src/src/app/error.tsx new file mode 100644 index 0000000..33d9667 --- /dev/null +++ b/src/src/app/error.tsx @@ -0,0 +1,45 @@ +"use client"; + +import { useEffect } from "react"; +import { useRouter } from "next/navigation"; +import ErrorMessage from "@/components/shared/ErrorMessage"; + +export default function GlobalError({ + error, + reset, +}: { + error: Error & { digest?: string }; + reset: () => void; +}) { + const router = useRouter(); + + useEffect(() => { + // Log errors in development for debugging + if (process.env.NODE_ENV === "development") { + console.error(error); + } + }, [error]); + + return ( + +
+ + +
+
+ ); +} diff --git a/src/src/app/not-found.tsx b/src/src/app/not-found.tsx new file mode 100644 index 0000000..e8302c4 --- /dev/null +++ b/src/src/app/not-found.tsx @@ -0,0 +1,19 @@ +import Link from "next/link"; +import ErrorMessage from "@/components/shared/ErrorMessage"; + +export default function NotFound() { + return ( + + + Back to Home + + + ); +} diff --git a/src/src/components/shared/ErrorMessage.tsx b/src/src/components/shared/ErrorMessage.tsx new file mode 100644 index 0000000..7685fa4 --- /dev/null +++ b/src/src/components/shared/ErrorMessage.tsx @@ -0,0 +1,28 @@ +"use client"; + +import { ReactNode } from "react"; +import { typographyStyles } from "@/components/shared/typography/core/styles"; + +interface ErrorMessageProps { + title: string; + heading: string; + message: string; + children?: ReactNode; +} + +export default function ErrorMessage({ title, heading, message, children }: ErrorMessageProps) { + return ( +
+

+ {title} +

+

+ {heading} +

+

+ {message} +

+ {children} +
+ ); +}