"use client"; import { Button } from "@/components/ui/button"; import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { Alert, AlertDescription } from "@/components/ui/alert"; import { AlertTriangle, CheckCircle2, Monitor } from "lucide-react"; import BrandingLogo from "./BrandingLogo"; import { useEnvContext } from "@app/hooks/useEnvContext"; import { useLicenseStatusContext } from "@app/hooks/useLicenseStatusContext"; import { useTranslations } from "next-intl"; type DeviceAuthMetadata = { ip: string | null; city: string | null; deviceName: string | null; applicationName: string; createdAt: number; }; type DeviceAuthConfirmationProps = { metadata: DeviceAuthMetadata; onConfirm: () => void; onCancel: () => void; loading: boolean; }; export function DeviceAuthConfirmation({ metadata, onConfirm, onCancel, loading }: DeviceAuthConfirmationProps) { const { env } = useEnvContext(); const { isUnlocked } = useLicenseStatusContext(); const t = useTranslations(); const formatDate = (timestamp: number) => { const date = new Date(timestamp); return date.toLocaleString(undefined, { month: "long", day: "numeric", year: "numeric", hour: "2-digit", minute: "2-digit", timeZoneName: "short" }); }; const locationText = metadata.city && metadata.ip ? `${metadata.city} ${metadata.ip}` : metadata.ip || t("deviceUnknownLocation"); const logoWidth = isUnlocked() ? env.branding.logo?.authPage?.width || 175 : 175; const logoHeight = isUnlocked() ? env.branding.logo?.authPage?.height || 58 : 58; return (

{t("deviceActivation")}

{t("deviceAuthorizationRequested", { location: locationText, date: formatDate(metadata.createdAt) })}

{metadata.applicationName}

{metadata.deviceName && (

{t("deviceLabel", { deviceName: metadata.deviceName })}

)}

{t("deviceWantsAccess")}

{t("deviceExistingAccess")}

{t("deviceFullAccess")}
{t("deviceOrganizationsAccess")}
); }