diff --git a/apps/web/src/DiffComparison.tsx b/apps/web/src/DiffComparison.tsx new file mode 100644 index 0000000..aa11ebc --- /dev/null +++ b/apps/web/src/DiffComparison.tsx @@ -0,0 +1,68 @@ +import { Popover } from "@base-ui/react/popover"; +import { InfoIcon, XIcon } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import { useDiffSource } from "./app-state.tsx"; +import { diffComparison } from "./diff-comparison.ts"; +import { useSession } from "./session-context.tsx"; + +export function DiffComparison() { + const session = useSession(); + const { mode, repository } = useDiffSource(); + const comparison = diffComparison(session, mode, repository?.head); + return ( + + + } + > + {comparison.summary} + Comparison + + + + +
+ Diff comparison + + } + > + +
+ {comparison.description} + {comparison.details.length > 0 && ( +
+ {comparison.details.map(({ label, value }) => ( +
+
{label}
+
{value}
+
+ ))} +
+ )} +
+
+
+
+ ); +} diff --git a/apps/web/src/DiffWorkspace.tsx b/apps/web/src/DiffWorkspace.tsx index f26057c..aaea1af 100644 --- a/apps/web/src/DiffWorkspace.tsx +++ b/apps/web/src/DiffWorkspace.tsx @@ -27,6 +27,7 @@ import { import { useAppearance } from "./appearance-context.tsx"; import { CopyPathButton } from "./CopyPathButton.tsx"; import { DiffToolbar } from "./DiffToolbar.tsx"; +import { DiffComparison } from "./DiffComparison.tsx"; import { themesFor } from "./display-options.ts"; import { DraftComment, ReviewCommentCard } from "./review.tsx"; import type { CommentAnnotation } from "./review-model.ts"; @@ -610,13 +611,6 @@ export function DiffWorkspace() { ], ); - const scopeDescription = piped - ? "Command output · fixed snapshot" - : mode === "staged" - ? "HEAD → index" - : mode === "unstaged" - ? "Index → working tree, including untracked files" - : "HEAD → working tree, including untracked files"; const emptyTitle = !repository ? diff.notice ? "Cannot load changes" @@ -765,7 +759,7 @@ export function DiffWorkspace() {