From da92ec72a7694f4483892128ab2d1be64b9461eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=20Jurmanovi=C4=87?= Date: Sat, 21 Mar 2026 21:18:33 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20restyle=20server=20detail=20=E2=80=94?= =?UTF-8?q?=20breadcrumb=20topbar,=20info=20strip,=20tab=20bar?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/dashboard/server/[id]/page.tsx | 21 +-- .../server/ServerConfigurationTabs.tsx | 44 +++--- src/components/server/ServerHeader.tsx | 141 +++++------------- 3 files changed, 67 insertions(+), 139 deletions(-) diff --git a/src/app/dashboard/server/[id]/page.tsx b/src/app/dashboard/server/[id]/page.tsx index f93150d..b6033c5 100755 --- a/src/app/dashboard/server/[id]/page.tsx +++ b/src/app/dashboard/server/[id]/page.tsx @@ -28,19 +28,14 @@ export default async function ServerPage({ params }: ServerPageProps) { ]); return ( -
-
- - -
- -
-
+
+ +
); } diff --git a/src/components/server/ServerConfigurationTabs.tsx b/src/components/server/ServerConfigurationTabs.tsx index 499c825..aed43b1 100755 --- a/src/components/server/ServerConfigurationTabs.tsx +++ b/src/components/server/ServerConfigurationTabs.tsx @@ -71,30 +71,28 @@ export function ServerConfigurationTabs({ }; return ( -
-
- -
+
+ -
{renderTabContent()}
+
{renderTabContent()}
); } diff --git a/src/components/server/ServerHeader.tsx b/src/components/server/ServerHeader.tsx index 78c56df..924adb6 100755 --- a/src/components/server/ServerHeader.tsx +++ b/src/components/server/ServerHeader.tsx @@ -1,6 +1,6 @@ 'use client'; import Link from 'next/link'; -import { Server, getStatusColor, serviceStatusToString, ServiceStatus } from '@/lib/schemas/server'; +import { Server, serviceStatusToString, ServiceStatus } from '@/lib/schemas/server'; import { startServerEventAction, restartServerEventAction, @@ -10,6 +10,8 @@ import { hasPermission, User } from '@/lib/schemas'; import { useState, useTransition } from 'react'; import { useRouter } from 'next/navigation'; import { DeleteServerModal } from './DeleteServerModal'; +import { Badge } from '@/components/ui/Badge'; +import { GhButton } from '@/components/ui/GhButton'; interface ServerHeaderProps { server: Server; @@ -43,112 +45,45 @@ export function ServerHeader({ server, user }: ServerHeaderProps) { ServiceStatus.Stopping, ServiceStatus.Unknown ].includes(server.status); + return ( -
-
-
- - - - - Back to Dashboard - + <> + {/* Topbar */} +
+
+ Servers + / + {server.name}
-
- -
-
-
-

{server.name}

-
- - - {serviceStatusToString(server.status)} - -
-
- -
- {canDeleteServer && ( - - )} - - - - - -
+
+ + ● {serviceStatusToString(server.status)} + + Start + Restart + Stop + {canDeleteServer && ( + setIsDeleteModalOpen(true)} disabled={disabled || isPending}>Remove + )}
+ -
-
-
Current Track
-
{server.state?.track || 'N/A'}
+ {/* Info strip */} +
+ {[ + { label: 'Track', value: server.state?.track ?? 'N/A' }, + { label: 'Players', value: `${server.state?.playerCount ?? 0} / ${server.state?.maxConnections ?? 0}` }, + { label: 'Session', value: server.state?.session ?? 'N/A' }, + { label: 'Max Connections', value: String(server.state?.maxConnections ?? 0) }, + ].map(({ label, value }) => ( +
+
{label}
+
{value}
-
-
Players
-
- {server.state?.playerCount || 0} / {server.state?.maxConnections || 0} -
-
-
-
Session
-
{server.state?.session || 'N/A'}
-
-
-
Max Connections
-
- {server.state?.maxConnections || 0} -
-
-
+ ))}
setIsDeleteModalOpen(false)} server={server} /> -
+ ); }