diff --git a/src/app/(app)/dashboard/page.tsx b/src/app/(app)/dashboard/page.tsx index a7b0fd2..0ada2b3 100644 --- a/src/app/(app)/dashboard/page.tsx +++ b/src/app/(app)/dashboard/page.tsx @@ -108,7 +108,7 @@ export default function DashboardPage() {
diff --git a/src/app/(app)/layout.tsx b/src/app/(app)/layout.tsx index 7fd6cb2..de58a80 100644 --- a/src/app/(app)/layout.tsx +++ b/src/app/(app)/layout.tsx @@ -20,7 +20,7 @@ export default function AppLayout({ children }: { children: React.ReactNode }) { return (
-
+
{children}
diff --git a/src/app/(app)/servers/[id]/page.tsx b/src/app/(app)/servers/[id]/page.tsx index 9cc46bb..f15f83d 100644 --- a/src/app/(app)/servers/[id]/page.tsx +++ b/src/app/(app)/servers/[id]/page.tsx @@ -196,7 +196,7 @@ export default function ServerDetailPage() { description={`${server.type} · ${server.version} · Port ${server.port}`} icon={Server} actions={ -
+
{hasPermission('servers:start') && server.status === 'offline' && ( diff --git a/src/components/ConsoleViewer.tsx b/src/components/ConsoleViewer.tsx index 09b7ae3..426388e 100644 --- a/src/components/ConsoleViewer.tsx +++ b/src/components/ConsoleViewer.tsx @@ -88,7 +88,7 @@ export default function ConsoleViewer({ serverId, readOnly = false }: ConsoleVie {/* Console Output */}
{lines.length === 0 ? (

Waiting for server output...

diff --git a/src/components/PageHeader.tsx b/src/components/PageHeader.tsx index 943362c..137c2b1 100644 --- a/src/components/PageHeader.tsx +++ b/src/components/PageHeader.tsx @@ -9,16 +9,16 @@ interface PageHeaderProps { export default function PageHeader({ title, description, icon: Icon, actions }: PageHeaderProps) { return ( -
-
-
- {Icon && } -
-

{title}

- {description &&

{description}

} +
+
+
+ {Icon && } +
+

{title}

+ {description &&

{description}

}
- {actions &&
{actions}
} + {actions &&
{actions}
}
) diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index b98c81b..25321a9 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -1,6 +1,6 @@ 'use client' -import { useState } from 'react' +import { useState, useEffect } from 'react' import { usePathname } from 'next/navigation' import Link from 'next/link' import { useAuth } from '@/contexts/AuthContext' @@ -14,6 +14,8 @@ import { ChevronLeft, ChevronRight, Gamepad2, + Menu, + X, } from 'lucide-react' interface NavItem { @@ -33,6 +35,7 @@ const navItems: NavItem[] = [ export default function Sidebar() { const [collapsed, setCollapsed] = useState(false) + const [mobileOpen, setMobileOpen] = useState(false) const pathname = usePathname() const { user, logout, hasPermission } = useAuth() @@ -40,18 +43,41 @@ export default function Sidebar() { item => !item.permission || hasPermission(item.permission) ) - return ( - + + ) + + return ( + <> + {/* Mobile top bar */} +
+ + + MC-Manager +
+ + {/* Mobile overlay */} + {mobileOpen && ( +
setMobileOpen(false)} + /> + )} + + {/* Mobile sidebar drawer */} + + + {/* Desktop sidebar */} + + ) } diff --git a/src/components/templates/DataManagementTemplate.tsx b/src/components/templates/DataManagementTemplate.tsx index e61ddc9..3d6f62c 100644 --- a/src/components/templates/DataManagementTemplate.tsx +++ b/src/components/templates/DataManagementTemplate.tsx @@ -133,9 +133,9 @@ export default function DataManagementTemplate>({ {/* Search & Filters Bar */}
-
+
{/* Search */} -
+
>({ {columns.map(col => ( col.sortable && handleSort(col.key)} @@ -221,7 +221,7 @@ export default function DataManagementTemplate>({ }`} > {columns.map(col => ( - + {col.render ? col.render(item) : String(item[col.key] ?? '—')}