feat: dark mode support, markdown descriptions, inline editing on TaskPage

- Full dark mode across TaskPage (header, cards, sidebar, forms)
- Task descriptions rendered as markdown (ReactMarkdown + remark-gfm)
- Inline description editing with markdown preview
- Inline title editing (click to edit)
- Theme system (useTheme hook with light/dark/system toggle)
- Dark mode classes across remaining components
This commit is contained in:
2026-01-29 10:33:38 +00:00
parent ef35e508c4
commit f4c60bf6aa
13 changed files with 599 additions and 398 deletions

View File

@@ -3,6 +3,7 @@ import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom";
import { DashboardLayout } from "./components/DashboardLayout";
import { LoginPage } from "./components/LoginPage";
import { ToastProvider } from "./components/Toast";
import { ThemeProvider } from "./hooks/useTheme";
import { useSession } from "./lib/auth-client";
// Lazy-loaded pages for code splitting
@@ -50,20 +51,26 @@ function App() {
if (session.isPending) {
return (
<div className="min-h-screen bg-gray-50 flex items-center justify-center">
<div className="min-h-screen bg-gray-50 dark:bg-gray-950 flex items-center justify-center">
<div className="text-gray-400">Loading...</div>
</div>
);
}
if (!session.data) {
return <LoginPage onSuccess={() => window.location.reload()} />;
return (
<ThemeProvider>
<LoginPage onSuccess={() => window.location.reload()} />
</ThemeProvider>
);
}
return (
<ToastProvider>
<AuthenticatedApp />
</ToastProvider>
<ThemeProvider>
<ToastProvider>
<AuthenticatedApp />
</ToastProvider>
</ThemeProvider>
);
}