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;
 }
 
 /* ===========================================