From 67eca589d898a8a4bc4d22de7a16afa4739563a2 Mon Sep 17 00:00:00 2001 From: Nico <47644445+nicotsx@users.noreply.github.com> Date: Sat, 28 Feb 2026 14:16:50 +0100 Subject: [PATCH] style: improve repo details layout (#596) --- .../components/compression-stats-chart.tsx | 66 ++--- .../repositories/components/doctor-report.tsx | 88 +++--- app/client/modules/repositories/tabs/info.tsx | 262 +++++++++--------- 3 files changed, 214 insertions(+), 202 deletions(-) diff --git a/app/client/modules/repositories/components/compression-stats-chart.tsx b/app/client/modules/repositories/components/compression-stats-chart.tsx index 4187863e..f6412bb7 100644 --- a/app/client/modules/repositories/components/compression-stats-chart.tsx +++ b/app/client/modules/repositories/components/compression-stats-chart.tsx @@ -2,7 +2,7 @@ import { useQuery } from "@tanstack/react-query"; import { Archive } from "lucide-react"; import { getRepositoryStatsOptions } from "~/client/api-client/@tanstack/react-query.gen"; import { ByteSize } from "~/client/components/bytes-size"; -import { Card, CardContent, CardHeader, CardTitle } from "~/client/components/ui/card"; +import { Card, CardContent, CardTitle } from "~/client/components/ui/card"; import type { GetRepositoryStatsResponse } from "~/client/api-client/types.gen"; type Props = { @@ -53,9 +53,9 @@ export function CompressionStatsChart({ repositoryShortId, initialStats }: Props if (error) { return ( - -

Failed to load compression statistics

-

{error.message}

+ +

Failed to load compression statistics

+

{error.message}

); } @@ -71,67 +71,61 @@ export function CompressionStatsChart({ repositoryShortId, initialStats }: Props } return ( - - - - + +
+ + Compression Statistics - - -
+
+
+
-
- Stored Size -
+
Stored Size
- +
-
- Uncompressed -
+
Uncompressed
- +
-
- Space Saved -
+
Space Saved
- {spaceSavingPercent.toFixed(1)}% - + {spaceSavingPercent.toFixed(1)}% +
-
- Ratio -
+
Ratio
- + {compressionRatio > 0 ? `${compressionRatio.toFixed(2)}x` : "—"}
-
-
- Snapshots -
+
+
Snapshots
- {snapshotsCount.toLocaleString()} - + {snapshotsCount.toLocaleString()} + {compressionProgressPercent.toFixed(1)}% compressed
-
-
+ +
); } diff --git a/app/client/modules/repositories/components/doctor-report.tsx b/app/client/modules/repositories/components/doctor-report.tsx index 7709523e..71008035 100644 --- a/app/client/modules/repositories/components/doctor-report.tsx +++ b/app/client/modules/repositories/components/doctor-report.tsx @@ -2,6 +2,7 @@ import { AlertCircle, CheckCircle2 } from "lucide-react"; import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "~/client/components/ui/collapsible"; import { formatDateTime } from "~/client/lib/datetime"; import { cn, safeJsonParse } from "~/client/lib/utils"; +import { Card, CardTitle } from "~/client/components/ui/card"; type DoctorStep = { step: string; @@ -23,66 +24,69 @@ type Props = { export const DoctorReport = ({ result, repositoryStatus }: Props) => { return ( -
-

Doctor Report

+ +
+ Doctor Report + {result && ( + + {formatDateTime(result.completedAt)} + + )} +
+ {result && (
- Completed {formatDateTime(result.completedAt)} -
- {result.steps.map((step) => ( - - -
- {step.step.replaceAll("_", " ")} - {step.success ? ( - - ) : ( - - )} -
-
- -
- {step.output && ( -
-												{safeJsonParse(step.output) ? JSON.stringify(safeJsonParse(step.output), null, 2) : step.output}
+					{result.steps.map((step) => (
+						
+							
+								{step.step.replaceAll("_", " ")}
+								{step.success ? (
+									
+								) : (
+									
+								)}
+							
+							
+								
+ {step.output && ( +
+											{safeJsonParse(step.output) ? JSON.stringify(safeJsonParse(step.output), null, 2) : step.output}
+										
+ )} + {step.error && ( +
+
Error
+
+												{step.error}
 											
- )} - {step.error && ( -
-
Error
-
-													{step.error}
-												
-
- )} - {!step.output && !step.error && ( -
No output recorded
- )} -
- - - ))} -
+
+ )} + {!step.output && !step.error && ( +
No output recorded
+ )} +
+ + + ))}
)}

No doctor report available.

-

Doctor operation running...

+

Doctor operation running...

-
+
); }; diff --git a/app/client/modules/repositories/tabs/info.tsx b/app/client/modules/repositories/tabs/info.tsx index e33838e0..1d37f140 100644 --- a/app/client/modules/repositories/tabs/info.tsx +++ b/app/client/modules/repositories/tabs/info.tsx @@ -2,7 +2,7 @@ import { useMutation } from "@tanstack/react-query"; import { useState } from "react"; import { toast } from "sonner"; import { Pencil, Square, Stethoscope, Trash2, Unlock } from "lucide-react"; -import { Card } from "~/client/components/ui/card"; +import { Card, CardContent, CardTitle } from "~/client/components/ui/card"; import { Button } from "~/client/components/ui/button"; import { AlertDialog, @@ -106,135 +106,149 @@ export const RepositoryInfoTabContent = ({ repository, initialStats }: Props) => return ( <> -
- -
-
- Repository Settings -
-
- - - - - -
-
- +
+
-

Current Configuration

-
-
-
Name
-

{repository.name}

-
-
-
Compression mode
-

{repository.compressionMode || "off"}

-
+

Repository Settings

+
+
+ + + + + +
+
+ +
+
+ + Overview + +
+
Name
+

{repository.name}

+
+
+
Backend
+

{repository.type}

+
+
+
Compression Mode
+

{repository.compressionMode || "off"}

+
+
+
Created
+

{formatDateTime(repository.createdAt)}

+
+
+
Status
+

+ + {repository.status || "Unknown"} +

+
+
+
Last Checked
+

{formatTimeAgo(repository.lastChecked)}

+
+ {hasLocalPath && ( +
+
Local Path
+

{effectiveLocalPath}

+
+ )} + {hasCaCert && ( +
+
CA Certificate
+

Configured

+
+ )} + {hasInsecureTlsConfig && ( +
+
TLS Validation
+

+ Disabled + Enabled +

+
+ )} +
+
+ + {hasLastError && ( + +

Last Error

+

{repository.lastError}

+
+ )} + +
+
-
-

Repository Information

-
-
-
Backend
-

{repository.type}

+
+ + + + Configuration +
+
+									{JSON.stringify(repository.config, null, 2)}
+								
-
-
Status
-

{repository.status || "unknown"}

-
-
-
Local path
-

{effectiveLocalPath}

-
-
-
Created at
-

{formatDateTime(repository.createdAt)}

-
-
-
Last checked
-

{formatTimeAgo(repository.lastChecked)}

-
-
-
CA Certificate
-

- configured -

-
-
-
TLS Certificate Validation
-

- disabled - enabled -

-
-
+
- -
-
-
-

Last Error

-
-
-

{repository.lastError}

-
-
- -
-

Configuration

-
-
{JSON.stringify(repository.config, null, 2)}
-
-
-
- - - - +