feat(web): add read-only project and task SPA pages

Co-Authored-By: Claude Haiku 4.5 <[email protected]>
This commit is contained in:
shaggy (mosaic-dev box)
2026-08-10 22:23:59 -05:00
co-authored by Claude Haiku 4.5
parent e00cc475a2
commit a6085eea37
15 changed files with 1519 additions and 5 deletions
@@ -0,0 +1,55 @@
import type { ReactElement } from 'react';
import { useRouteError } from 'react-router-dom';
interface ResourceRouteErrorBoundaryProps {
message: string;
href: string;
linkLabel: string;
}
function ResourceRouteErrorBoundary({
message,
href,
linkLabel,
}: ResourceRouteErrorBoundaryProps): ReactElement {
useRouteError();
return (
<div role="alert" className="flex min-h-screen flex-col items-center justify-center gap-3 p-8">
<p className="text-sm font-medium">{message}</p>
<a href={href} className="text-sm underline">
{linkLabel}
</a>
</div>
);
}
export function ProjectsRouteErrorBoundary(): ReactElement {
return (
<ResourceRouteErrorBoundary
message="Something went wrong loading projects."
href="/projects"
linkLabel="Reload projects"
/>
);
}
export function ProjectDetailRouteErrorBoundary(): ReactElement {
return (
<ResourceRouteErrorBoundary
message="Something went wrong loading this project."
href="/projects"
linkLabel="Back to projects"
/>
);
}
export function TasksRouteErrorBoundary(): ReactElement {
return (
<ResourceRouteErrorBoundary
message="Something went wrong loading tasks."
href="/tasks"
linkLabel="Reload tasks"
/>
);
}