diff --git a/frontend/index.html b/frontend/index.html index 1abf41b..2da949e 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -3,6 +3,10 @@ + + + + UMBRA diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 66de45d..98d7a3e 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -21,7 +21,7 @@ function ProtectedRoute({ children }: { children: React.ReactNode }) { if (isLoading) { return ( -
+
Loading...
); @@ -39,7 +39,7 @@ function AdminRoute({ children }: { children: React.ReactNode }) { if (isLoading) { return ( -
+
Loading...
); diff --git a/frontend/src/components/admin/AdminDashboardPage.tsx b/frontend/src/components/admin/AdminDashboardPage.tsx index 0b5cd04..fac3982 100644 --- a/frontend/src/components/admin/AdminDashboardPage.tsx +++ b/frontend/src/components/admin/AdminDashboardPage.tsx @@ -23,7 +23,7 @@ export default function AdminDashboardPage() { dashboard ? dashboard.total_users - dashboard.active_users : null; return ( -
+
{/* Stats grid */}
{isLoading ? ( diff --git a/frontend/src/components/admin/AdminPortal.tsx b/frontend/src/components/admin/AdminPortal.tsx index b519f6f..3776dd7 100644 --- a/frontend/src/components/admin/AdminPortal.tsx +++ b/frontend/src/components/admin/AdminPortal.tsx @@ -18,7 +18,7 @@ export default function AdminPortal() {
{/* Portal header with tab navigation */}
-
+
diff --git a/frontend/src/components/admin/ConfigPage.tsx b/frontend/src/components/admin/ConfigPage.tsx index 2b1131a..5821cbe 100644 --- a/frontend/src/components/admin/ConfigPage.tsx +++ b/frontend/src/components/admin/ConfigPage.tsx @@ -54,7 +54,7 @@ export default function ConfigPage() { const totalPages = data ? Math.ceil(data.total / PER_PAGE) : 1; return ( -
+
diff --git a/frontend/src/components/admin/IAMPage.tsx b/frontend/src/components/admin/IAMPage.tsx index 9eb3166..6f3d4a0 100644 --- a/frontend/src/components/admin/IAMPage.tsx +++ b/frontend/src/components/admin/IAMPage.tsx @@ -95,7 +95,7 @@ export default function IAMPage() { : null; return ( -
+
{/* Stats row */}
window.matchMedia('(min-width: 1024px)').matches); - useEffect(() => { - const mql = window.matchMedia('(min-width: 1024px)'); - const handler = (e: MediaQueryListEvent) => setIsDesktop(e.matches); - mql.addEventListener('change', handler); - return () => mql.removeEventListener('change', handler); - }, []); + const isDesktop = useMediaQuery('(min-width: 1024px)'); // Continuously resize calendar during panel open/close CSS transition useEffect(() => { @@ -483,7 +478,7 @@ export default function CalendarPage() {
{/* Custom toolbar */} -
+

Loading...

-
+
@@ -375,7 +375,7 @@ export default function ProjectDetail() { return (
{/* Header */} -
+
@@ -417,7 +417,7 @@ export default function ProjectDetail() { {/* Content area */}
{/* Summary section - scrolls with left panel on small, fixed on large */} -
+
{/* Description */} {project.description && (

{project.description}

@@ -490,7 +490,7 @@ export default function ProjectDetail() {
{/* Task list header + view controls */} -
+

Tasks

{/* View toggle */} @@ -544,7 +544,7 @@ export default function ProjectDetail() {
{/* Left panel: task list or kanban */}
-
+
{topLevelTasks.length === 0 ? ( {/* Header */} -
+

Projects

@@ -111,7 +111,7 @@ export default function ProjectsPage() {
-
+
{/* Summary stats */} {!isLoading && projects.length > 0 && (
diff --git a/frontend/src/components/reminders/RemindersPage.tsx b/frontend/src/components/reminders/RemindersPage.tsx index 7fdb1b6..c88f391 100644 --- a/frontend/src/components/reminders/RemindersPage.tsx +++ b/frontend/src/components/reminders/RemindersPage.tsx @@ -99,7 +99,7 @@ export default function RemindersPage() { return (
{/* Header */} -
+

Reminders

@@ -148,7 +148,7 @@ export default function RemindersPage() { panelOpen ? 'w-full lg:w-[55%]' : 'w-full' }`} > -
+
{/* Summary stats */} {!isLoading && reminders.length > 0 && (
diff --git a/frontend/src/components/settings/SettingsPage.tsx b/frontend/src/components/settings/SettingsPage.tsx index a6fd474..46e47eb 100644 --- a/frontend/src/components/settings/SettingsPage.tsx +++ b/frontend/src/components/settings/SettingsPage.tsx @@ -344,7 +344,7 @@ export default function SettingsPage() { return (
{/* Page header — matches Stage 4-5 pages */} -
+
diff --git a/frontend/src/components/todos/TodosPage.tsx b/frontend/src/components/todos/TodosPage.tsx index 40d1367..1656c19 100644 --- a/frontend/src/components/todos/TodosPage.tsx +++ b/frontend/src/components/todos/TodosPage.tsx @@ -128,7 +128,7 @@ export default function TodosPage() { return (
{/* Header */} -
+

Todos

{/* Priority filter */} @@ -183,7 +183,7 @@ export default function TodosPage() { panelOpen ? 'w-full lg:w-[55%]' : 'w-full' }`} > -
+
{/* Summary stats */} {!isLoading && todos.length > 0 && (
diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx index 643041c..0a9968a 100644 --- a/frontend/src/components/ui/button.tsx +++ b/frontend/src/components/ui/button.tsx @@ -18,7 +18,7 @@ const buttonVariants = cva( default: 'h-10 px-4 py-2', sm: 'h-9 rounded-md px-3', lg: 'h-11 rounded-md px-8', - icon: 'h-10 w-10', + icon: 'h-11 w-11 md:h-10 md:w-10', }, }, defaultVariants: { diff --git a/frontend/src/components/ui/input.tsx b/frontend/src/components/ui/input.tsx index 04db187..3e70a9d 100644 --- a/frontend/src/components/ui/input.tsx +++ b/frontend/src/components/ui/input.tsx @@ -9,7 +9,7 @@ const Input = React.forwardRef( (