Skip to content

Commit 7df0123

Browse files
committed
Make staged hunks hollow and unstaged filled
1 parent a56ec39 commit 7df0123

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

packages/ui/src/components/panels/diff/ZedDiffViewer.test.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,6 @@ describe('ZedDiffViewer', () => {
163163
);
164164
const css = container.querySelector('style')?.textContent || '';
165165
expect(css).toContain('st-hunk-status--staged');
166-
expect(css).toContain('Zed-like: staged hunks have a persistent frame');
166+
expect(css).toContain('Zed-like: staged_hollow -> staged has border');
167167
});
168168
});

packages/ui/src/components/panels/diff/ZedDiffViewer.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -471,12 +471,17 @@ export const ZedDiffViewer: React.FC<{
471471
box-shadow: 0 0 0 1px color-mix(in srgb, var(--st-hunk-frame-color) 36%, transparent);
472472
transition: opacity 110ms ease;
473473
}
474-
/* Zed-like: staged hunks have a persistent frame to distinguish them from unstaged hunks. */
475-
.st-diff-table .diff-hunk:has(.st-hunk-status--staged):has(.diff-code-insert, .diff-code-delete)::after { opacity: 1; }
476-
.st-diff-table .diff-hunk:has(.diff-code-insert, .diff-code-delete):hover::after {
474+
/* Zed-like: staged_hollow -> staged has border; unstaged filled -> no border even on hover. */
475+
.st-diff-table .diff-hunk:has(.st-hunk-status--staged):has(.diff-code-insert, .diff-code-delete)::after {
477476
opacity: 1;
477+
}
478+
.st-diff-table .diff-hunk:has(.st-hunk-status--staged):has(.diff-code-insert, .diff-code-delete):hover::after {
478479
box-shadow: 0 0 0 1px color-mix(in srgb, var(--st-hunk-frame-color) 48%, transparent);
479480
}
481+
.st-diff-table .diff-hunk:has(.st-hunk-status--unstaged):has(.diff-code-insert, .diff-code-delete)::after,
482+
.st-diff-table .diff-hunk:has(.st-hunk-status--unstaged):has(.diff-code-insert, .diff-code-delete):hover::after {
483+
opacity: 0;
484+
}
480485
481486
.st-diff-table .diff-hunk:has(.diff-code-insert, .diff-code-delete) tr td {
482487
background-image: linear-gradient(
@@ -497,9 +502,12 @@ export const ZedDiffViewer: React.FC<{
497502
);
498503
}
499504
/* Extra contrast on hover (more Zed-like). */
500-
.st-diff-table .diff-hunk:has(.diff-code-insert, .diff-code-delete):hover {
505+
.st-diff-table .diff-hunk:has(.st-hunk-status--unstaged):has(.diff-code-insert, .diff-code-delete):hover {
501506
filter: saturate(1.04) brightness(1.02);
502507
}
508+
.st-diff-table .diff-hunk:has(.st-hunk-status--staged):has(.diff-code-insert, .diff-code-delete):hover {
509+
filter: saturate(1.02) brightness(1.01);
510+
}
503511
504512
/* The widget row is used only as an "anchor"; it should not consume height. */
505513
.st-diff-table .diff-widget { height: 0; }

0 commit comments

Comments
 (0)