From af42f13b67d411fbbdafd2b9443640ef5c1b934d Mon Sep 17 00:00:00 2001 From: Maximum-Prosper Date: Sun, 31 May 2026 00:52:25 +0100 Subject: [PATCH] feat: add branded not found route --- src/App.tsx | 5 +++ src/pages/NotFoundPage.tsx | 53 +++++++++++++++++++++++ src/pages/__tests__/NotFoundPage.test.tsx | 24 ++++++++++ 3 files changed, 82 insertions(+) create mode 100644 src/pages/NotFoundPage.tsx create mode 100644 src/pages/__tests__/NotFoundPage.test.tsx diff --git a/src/App.tsx b/src/App.tsx index c9f902d6..82e270e0 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,12 +1,17 @@ import { Toaster } from 'react-hot-toast'; import { createBrowserRouter, RouterProvider } from 'react-router'; import LandingPage from './pages/LandingPage'; +import NotFoundPage from './pages/NotFoundPage'; const router = createBrowserRouter([ { path: '/', element: , }, + { + path: '*', + element: , + }, ]); function App() { diff --git a/src/pages/NotFoundPage.tsx b/src/pages/NotFoundPage.tsx new file mode 100644 index 00000000..3cbce28e --- /dev/null +++ b/src/pages/NotFoundPage.tsx @@ -0,0 +1,53 @@ +import { Link } from 'react-router'; +import { ArrowLeft, Compass } from 'lucide-react'; +import { Button } from '@/components/ui/button'; + +function NotFoundPage() { + return ( +
+
+
+
+ ); +} + +export default NotFoundPage; diff --git a/src/pages/__tests__/NotFoundPage.test.tsx b/src/pages/__tests__/NotFoundPage.test.tsx new file mode 100644 index 00000000..7749e68d --- /dev/null +++ b/src/pages/__tests__/NotFoundPage.test.tsx @@ -0,0 +1,24 @@ +import { render, screen } from '@testing-library/react'; +import { MemoryRouter } from 'react-router'; +import { describe, expect, it } from 'vitest'; +import NotFoundPage from '@/pages/NotFoundPage'; + +describe('NotFoundPage', () => { + it('points unknown routes back to the marketplace home', () => { + render( + + + + ); + + expect( + screen.getByRole('heading', { + name: /this marketplace path is not live yet/i, + }) + ).toBeInTheDocument(); + + expect( + screen.getByRole('link', { name: /back to marketplace/i }) + ).toHaveAttribute('href', '/'); + }); +});