import { Archive, Clock, FolderOpen, HardDrive, Lock, Settings, Shield } from "lucide-react"; import { Card, CardContent, CardTitle } from "~/client/components/ui/card"; import type { Repository } from "~/client/lib/types"; import type { GetRepositoryStatsResponse } from "~/client/api-client/types.gen"; import type { RepositoryConfig } from "@zerobyte/core/restic"; import { DoctorReport } from "../components/doctor-report"; import { CompressionStatsChart } from "../components/compression-stats-chart"; import { cn } from "~/client/lib/utils"; import { useTimeFormat } from "~/client/lib/datetime"; type Props = { repository: Repository; initialStats?: GetRepositoryStatsResponse; }; const getEffectiveLocalPath = (repository: Repository): string | null => { if (repository.config.backend !== "local") return null; return repository.config.path; }; type ConfigRowProps = { icon: React.ReactNode; label: string; value: string; mono?: boolean; valueClassName?: string }; function ConfigRow({ icon, label, value, mono, valueClassName }: ConfigRowProps) { return (
{icon} {label} {value}
); } export const RepositoryInfoTabContent = ({ repository, initialStats }: Props) => { const effectiveLocalPath = getEffectiveLocalPath(repository); const { formatDateTime, formatTimeAgo } = useTimeFormat(); const config = repository.config as RepositoryConfig; const hasLocalPath = Boolean(effectiveLocalPath); const hasCaCert = Boolean(config.cacert); const hasInsecureTlsConfig = config.insecureTls !== undefined; return (
Overview
Name

{repository.name}

Backend

{repository.type}

Management

{repository.provisioningId ? "Provisioned" : "Manual"}

Compression Mode

{repository.compressionMode || "off"}

Created

{formatDateTime(repository.createdAt)}

Last Checked

{formatTimeAgo(repository.lastChecked)}

{hasLocalPath && (
Local Path

{effectiveLocalPath}

)}
Configuration
} label="Backend" value={repository.type} /> {hasLocalPath && ( } label="Local Path" value={effectiveLocalPath!} mono /> )} } label="Compression Mode" value={repository.compressionMode || "off"} /> {hasCaCert && ( } label="CA Certificate" value="Configured" valueClassName="text-success" /> )} {hasInsecureTlsConfig && ( } label="TLS Validation" value={config.insecureTls ? "Disabled" : "Enabled"} valueClassName={config.insecureTls ? "text-red-500" : "text-success"} /> )}
); };