import { useQuery } from "@tanstack/react-query"; import { listRepositoriesOptions } from "~/client/api-client/@tanstack/react-query.gen"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "~/client/components/ui/card"; import type { Volume } from "~/client/lib/types"; import type { InternalFormValues } from "./types"; type SummarySectionProps = { volume: Volume; frequency: string; formValues: InternalFormValues; }; export const SummarySection = ({ volume, frequency, formValues }: SummarySectionProps) => { const { data: repositoriesData } = useQuery({ ...listRepositoriesOptions(), }); return (
Schedule summary Review the backup configuration.

Volume

{volume.name}

Schedule

{frequency ? frequency.charAt(0).toUpperCase() + frequency.slice(1) : "-"}

Repository

{repositoriesData?.find((r) => r.shortId === formValues.repositoryId)?.name || "—"}

{(formValues.includePaths && formValues.includePaths.length > 0) || formValues.includePatterns ? (

Include paths/patterns

{formValues.includePaths?.slice(0, 20).map((path) => ( {path} ))} {formValues.includePaths && formValues.includePaths.length > 20 && ( + {formValues.includePaths.length - 20} more )} {formValues.includePatterns ?.split("\n") .filter(Boolean) .slice(0, 20 - (formValues.includePaths?.length || 0)) .map((pattern) => ( {pattern.trim()} ))}
) : null} {formValues.excludePatternsText && (

Exclude patterns

{formValues.excludePatternsText .split("\n") .filter(Boolean) .map((pattern) => ( {pattern.trim()} ))}
)} {formValues.excludeIfPresentText && (

Exclude if present

{formValues.excludeIfPresentText .split("\n") .filter(Boolean) .map((filename) => ( {filename.trim()} ))}
)}

One file system

{formValues.oneFileSystem ? "Enabled" : "Disabled"}

Retention

{Object.entries(formValues) .filter(([key, value]) => key.startsWith("keep") && Boolean(value)) .map(([key, value]) => { const label = key.replace("keep", "").toLowerCase(); return `${value.toString()} ${label}`; }) .join(", ") || "-"}

); };