'use client'; import Link from 'next/link'; import { Server, getStatusColor, serviceStatusToString, ServiceStatus } from '@/lib/schemas/server'; import { startServerEventAction, restartServerEventAction, stopServerEventAction } from '@/lib/actions/servers'; import { hasPermission, User } from '@/lib/schemas'; import { useState, useTransition } from 'react'; import { useRouter } from 'next/navigation'; import { DeleteServerModal } from './DeleteServerModal'; interface ServerHeaderProps { server: Server; user: User; } export function ServerHeader({ server, user }: ServerHeaderProps) { const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false); const [isPending, startTransition] = useTransition(); const router = useRouter(); const canDeleteServer = hasPermission(user, 'server.delete'); const startServer = () => startTransition(async () => { await startServerEventAction(server.id); router.refresh(); }); const restartServer = () => startTransition(async () => { await restartServerEventAction(server.id); router.refresh(); }); const stopServer = () => startTransition(async () => { await stopServerEventAction(server.id); router.refresh(); }); const disabled = [ ServiceStatus.Restarting, ServiceStatus.Starting, ServiceStatus.Stopping, ServiceStatus.Unknown ].includes(server.status); return (