"use client"; import { Loader2, LogOut, Wifi, WifiOff, AlertTriangle, } from "lucide-react"; import { DropdownMenu, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from "@/shared/components/ui/dropdown-menu"; import { cn } from "@/shared/lib/utils"; import type { SessionStatus } from "./parcel-sync-types"; /* ------------------------------------------------------------------ */ /* Connection Status Pill */ /* ------------------------------------------------------------------ */ export function ConnectionPill({ session, connecting, connectionError, onDisconnect, }: { session: SessionStatus; connecting: boolean; connectionError: string; onDisconnect: () => void; }) { const elapsed = session.connectedAt ? Math.floor( (Date.now() - new Date(session.connectedAt).getTime()) / 60_000, ) : 0; const elapsedLabel = elapsed < 1 ? "acum" : elapsed < 60 ? `${elapsed} min` : `${Math.floor(elapsed / 60)}h ${elapsed % 60}m`; return ( {/* Status header */}
Conexiune eTerra {session.connected && ( {elapsedLabel} )}
{session.connected && session.username && (

{session.username}

)} {connectionError && (

{connectionError}

)}
{/* Maintenance banner */} {!session.connected && session.eterraMaintenance && (

eTerra este în mentenanță

Platforma ANCPI nu este disponibilă momentan. Conectarea va fi reactivată automat când serviciul revine online.

{session.eterraHealthMessage && (

{session.eterraHealthMessage}

)}
)} {/* Info when not connected (and not in maintenance) */} {!session.connected && !connectionError && !session.eterraMaintenance && (

Conexiunea se face automat când începi să scrii un UAT.

Credențialele sunt preluate din configurarea serverului.

)} {/* Error detail (only when NOT maintenance) */} {!session.connected && connectionError && !session.eterraMaintenance && (

Conexiunea automată a eșuat. Verifică credențialele din variabilele de mediu (ETERRA_USERNAME / ETERRA_PASSWORD).

)} {/* Connected — active jobs info + disconnect */} {session.connected && ( <> {session.activeJobCount > 0 && (

{session.activeJobCount} job {session.activeJobCount > 1 ? "-uri" : ""} activ {session.activeJobCount > 1 ? "e" : ""} {session.activeJobPhase && ( {" "} — {session.activeJobPhase} )}

)}
)}
); }