948ee88160
The top-level catch-all silently redirected unknown paths to "/", and the nested /admin/*, /p/:projectId/*, and /docs/* route groups had no catch-all (invalid subpaths rendered a blank pane). Add a shared NotFound component and wire it into all four route groups so a bad/typo'd URL shows a clear 404 with a link home. Client-side 404 UI (SPA still serves HTTP 200). Patch 0.52.2 → 0.52.3; CHANGELOG updated. Caught by the operator on PPE. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
22 lines
838 B
React
22 lines
838 B
React
// Client-side 404 for routes that don't match. An SPA serves index.html
|
|
// for every non-API path (HTTP 200), so an unknown URL would otherwise
|
|
// render blank — or, worse, silently bounce home. This surfaces a clear
|
|
// "page not found" instead. Used by the top-level router and by the
|
|
// nested /admin, /p/:projectId, and /docs route groups so an invalid
|
|
// subpath (e.g. /admin/users/allowlist/graduation) lands here too.
|
|
import { Link } from 'react-router-dom'
|
|
|
|
export default function NotFound({ message }) {
|
|
return (
|
|
<div className="not-found" role="alert">
|
|
<h1 className="not-found-code">404</h1>
|
|
<p className="not-found-message">
|
|
{message || "We couldn't find that page."}
|
|
</p>
|
|
<p className="not-found-actions">
|
|
<Link to="/">Return to the catalog</Link>
|
|
</p>
|
|
</div>
|
|
)
|
|
}
|