Mercurial
diff hg-web/src/index.css @ 225:70de0c80d093 hg-web
[hg-web] Add side-by-side changeset diffs
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 02 Aug 2026 14:41:09 -0700 |
| parents | 3007ef5fc0ed |
| children |
line wrap: on
line diff
--- a/hg-web/src/index.css Sun Aug 02 13:51:11 2026 -0700 +++ b/hg-web/src/index.css Sun Aug 02 14:41:09 2026 -0700 @@ -478,30 +478,77 @@ margin-bottom: 10px; } -.changeset-diff pre { - margin: 0 0 16px; - padding: 0; +.side-by-side-diff { + margin-bottom: 18px; overflow-x: auto; border: 1px solid var(--border); + border-radius: 6px; + background: var(--bg-code); +} + +.diff-file-header { + padding: 9px 12px; + border-bottom: 1px solid var(--border); + background: var(--bg-subtle); + font-family: monospace; + font-weight: 600; } -.changeset-diff pre > span { - display: flex; - min-width: max-content; - padding-right: 12px; +.diff-column-headings { + display: grid; + grid-template-columns: minmax(380px, 1fr) minmax(380px, 1fr); + min-width: 760px; + border-bottom: 1px solid var(--border); + color: var(--text-secondary); + font-size: 12px; + font-weight: 600; + text-transform: uppercase; +} + +.diff-column-headings span { + padding: 6px 12px; } -.diff-line-number { - width: 54px; - flex-shrink: 0; - margin-right: 12px; - padding-right: 10px; +.diff-column-headings span + span { + border-left: 1px solid var(--border); +} + +.diff-grid { + display: grid; + grid-template-columns: 52px minmax(328px, 1fr) 52px minmax(328px, 1fr); + min-width: 760px; + font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; + font-size: 12px; + line-height: 1.5; +} + +.diff-side-number, +.diff-side-code { + min-height: 22px; + border-bottom: 1px solid color-mix(in srgb, var(--border) 55%, transparent); +} + +.diff-side-number { + padding: 2px 8px; color: var(--text-secondary); text-align: right; user-select: none; border-right: 1px solid var(--border); } +.diff-side-code { + display: block; + margin: 0; + padding: 2px 10px; + border-radius: 0; + background: transparent; + white-space: pre; +} + +.diff-column-divider { + border-left: 1px solid var(--border); +} + .diff-add { background: color-mix(in srgb, var(--success) 18%, transparent); } @@ -510,9 +557,22 @@ background: color-mix(in srgb, var(--danger) 18%, transparent); } -.diff-range { +.diff-empty { + background: color-mix(in srgb, var(--bg-subtle) 70%, transparent); +} + +.diff-meta { + color: var(--text-secondary); + background: var(--bg-subtle); +} + +.diff-range-row { + grid-column: 1 / -1; + padding: 4px 10px; color: var(--accent); background: var(--bg-subtle); + border-bottom: 1px solid var(--border); + white-space: pre; } /* ===========================================