import { Server } from '@/types/server'; import { CloudIcon, LoaderCircleIcon, MapPinIcon, MousePointerClickIcon, SlashIcon } from 'lucide-react'; import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip'; import ServerActions from '@/pages/servers/components/actions'; import { cn } from '@/lib/utils'; import { Site } from '@/types/site'; import { StatusRipple } from '@/components/status-ripple'; import { Badge } from '@/components/ui/badge'; import { useForm } from '@inertiajs/react'; export default function ServerHeader({ server, site }: { server: Server; site?: Site }) { const statusForm = useForm(); const checkStatus = () => { if (['installing', 'installation_failed'].includes(server.status)) { return; } statusForm.patch(route('servers.status', { server: server.id })); }; return (
{statusForm.processing && } {!statusForm.processing && }
{server.status}
{server.name}
{server.name} Server Name
{server.provider}
{server.provider} Server Provider
{server.ip}
{server.ip} Server IP
{['installing', 'installation_failed'].includes(server.status) && ( <>
%{parseInt(server.progress || '0')}
{server.status === 'installation_failed' && ( {server.status} )}
Status
)} {site && ( <>
{site.domain}
{site.domain}
)} {site && ['installing', 'installation_failed'].includes(site.status) && ( <>
%{parseInt(site.progress.toString() || '0')}
{site.status === 'installation_failed' && ( {site.status} )}
Status
)}
); }