diff hg-web/src/index.css @ 221:ce7f4400c2de hg-web

[hg-web] Harden forge and add changeset UI
author MrJuneJune <me@mrjunejune.com>
date Sun, 02 Aug 2026 09:01:24 -0700
parents 9f4429c49733
children 0e7b9464248d
line wrap: on
line diff
--- a/hg-web/src/index.css	Sun Aug 02 08:34:54 2026 -0700
+++ b/hg-web/src/index.css	Sun Aug 02 09:01:24 2026 -0700
@@ -270,13 +270,15 @@
   align-items: flex-start;
   max-height: 600px;
   overflow-y: auto;
+  position: relative;
 }
 
 .graph-canvas-column {
   flex-shrink: 0;
-  background: var(--bg);
   position: sticky;
   left: 0;
+  z-index: 1;
+  border-right: 1px solid var(--border);
 }
 
 .graph-details-column {
@@ -285,11 +287,16 @@
 }
 
 .graph-row {
+  width: 100%;
   height: 40px;
   display: flex;
   flex-direction: column;
   justify-content: center;
   padding: 0 12px;
+  background: transparent;
+  color: inherit;
+  text-align: left;
+  border: 0;
   border-bottom: 1px solid var(--border);
   font-size: 12px;
   cursor: pointer;
@@ -300,6 +307,12 @@
   background: var(--hover);
 }
 
+.graph-row:focus-visible {
+  outline: 2px solid var(--accent);
+  outline-offset: -2px;
+  background: var(--hover);
+}
+
 .graph-row-meta {
   display: flex;
   gap: 10px;
@@ -365,6 +378,128 @@
 }
 
 /* ===========================================
+   Changeset Detail
+   =========================================== */
+.changeset-paper {
+  background: var(--bg);
+  background-image: url("/pencil_texture.png");
+  border: 1px solid var(--border);
+  border-radius: 6px;
+  padding: 24px;
+}
+
+.changeset-heading,
+.changeset-meta,
+.changeset-parents,
+.changeset-files,
+.changeset-labels {
+  display: flex;
+  align-items: center;
+  flex-wrap: wrap;
+  gap: 10px;
+}
+
+.changeset-heading {
+  justify-content: space-between;
+  margin-bottom: 12px;
+}
+
+.changeset-heading code {
+  overflow-wrap: anywhere;
+}
+
+.changeset-paper h2 {
+  margin-bottom: 8px;
+}
+
+.changeset-meta {
+  color: var(--text-secondary);
+  justify-content: space-between;
+  margin-bottom: 16px;
+}
+
+.changeset-branch,
+.changeset-labels span {
+  background: var(--bg-subtle);
+  border: 1px solid var(--border);
+  border-radius: 999px;
+  padding: 2px 8px;
+  font-size: 12px;
+}
+
+.changeset-labels,
+.changeset-parents,
+.changeset-files {
+  margin: 12px 0;
+}
+
+.changeset-parents button {
+  border: 0;
+  background: transparent;
+  color: var(--accent);
+  cursor: pointer;
+  font-family: monospace;
+}
+
+.changeset-parents button:hover {
+  text-decoration: underline;
+}
+
+.changeset-parents button:focus-visible {
+  outline: 2px solid var(--accent);
+  outline-offset: 2px;
+}
+
+.changeset-files code {
+  overflow-wrap: anywhere;
+}
+
+.changeset-diff {
+  margin-top: 24px;
+}
+
+.changeset-diff h3 {
+  margin-bottom: 10px;
+}
+
+.changeset-diff pre {
+  margin: 0 0 16px;
+  padding: 0;
+  overflow-x: auto;
+  border: 1px solid var(--border);
+}
+
+.changeset-diff pre > span {
+  display: flex;
+  min-width: max-content;
+  padding-right: 12px;
+}
+
+.diff-line-number {
+  width: 54px;
+  flex-shrink: 0;
+  margin-right: 12px;
+  padding-right: 10px;
+  color: var(--text-secondary);
+  text-align: right;
+  user-select: none;
+  border-right: 1px solid var(--border);
+}
+
+.diff-add {
+  background: color-mix(in srgb, var(--success) 18%, transparent);
+}
+
+.diff-remove {
+  background: color-mix(in srgb, var(--danger) 18%, transparent);
+}
+
+.diff-range {
+  color: var(--accent);
+  background: var(--bg-subtle);
+}
+
+/* ===========================================
    Common States
    =========================================== */
 .empty-state {