feat(app): auth UI, SPA mode, /api base URL

- auth: login/register bottom sheets, token storage, authFetch
- AuthProvider context w/ auto-refresh on mount
- hide add/edit/delete for guests, sign-in button in nav
- SPA mode (ssr:false), loaders→client-side useEffect
- API base URL /api (same-origin), loading spinners
This commit is contained in:
2026-07-11 21:40:57 +02:00
parent 7bd27d9b9c
commit c4e9076b11
9 changed files with 659 additions and 163 deletions

View File

@@ -10,6 +10,7 @@ import { ThemeProvider } from "next-themes";
import type { Route } from "./+types/root";
import "./app.css";
import { AuthProvider } from "./lib/auth";
import { TooltipProvider } from "./components/ui/tooltip";
export const links: Route.LinksFunction = () => [
@@ -43,11 +44,13 @@ export function Layout({ children }: { children: React.ReactNode }) {
</head>
<body>
<ThemeProvider attribute="class" defaultTheme="system" enableSystem>
<TooltipProvider>
{children}
<ScrollRestoration />
<Scripts />
</TooltipProvider>
<AuthProvider>
<TooltipProvider>
{children}
<ScrollRestoration />
<Scripts />
</TooltipProvider>
</AuthProvider>
</ThemeProvider>
</body>
</html>