v0.2.0 41cf2ec

60-mr.css RawHistoryFolder

1@layer components {
2  /* merge requests: the review page. Hue only where it carries a verdict. */
3  .mr-h .show-kv { margin-top: 0; }
4  .mr-h + * { margin-top: var(--lh); }
5  .mr-state[data-state="open"]::before { content: "● "; color: var(--teal); }
6  .mr-state[data-state="merged"]::before { content: "✓ "; color: var(--teal); }
7  .mr-state[data-state="closed"]::before { content: "✗ "; color: var(--red); }
8  .mr-desc { margin-top: var(--lh); max-width: var(--measure); white-space: pre-wrap; overflow-wrap: anywhere; }
9  .mr-desc a, .c-text a { text-decoration: underline; }
10
11  .since {
12    display: flex; flex-wrap: wrap; column-gap: 3ch; margin-top: var(--lh);
13    & a { text-decoration: none; color: var(--ink-dim); }
14    & a:hover { color: var(--ink); text-decoration: underline; }
15    & a[aria-current] { color: var(--ink-hi); font-weight: bold; }
16    & a[aria-current]::before { content: "▸ "; }
17    & .mute { font-weight: normal; }
18  }
19
20  /* merge block: first thing in the rail */
21  .decide {
22    & .d-acts { margin-top: calc(var(--lh) / 2); }
23    & select {
24      display: block; width: 100%; font: inherit; color: inherit; background: var(--paper-alt);
25      border: 1px solid var(--rule); border-radius: 0; padding: 0 1ch;
26    }
27    & .d-btns { display: flex; gap: 2ch; margin-top: 4px; flex-wrap: wrap; }
28    & .d-btns button { color: var(--ink-dim); }
29    & .d-btns button:hover { color: var(--ink); text-decoration: underline; }
30    & .d-btns .d-main { background: var(--ink); color: var(--paper); font-weight: bold; padding: 0 1ch; }
31    & .d-btns .d-main:hover { background: var(--ink-hi); text-decoration: none; }
32    & .d-or { margin-top: calc(var(--lh) / 2); }
33    & .clone { margin-top: 0; }
34    & .clone code { white-space: pre-wrap; overflow-wrap: anywhere; }
35  }
36
37  .pcommits li { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
38  .pcommits li[data-new] { background: var(--row); }
39  .pcommits .s { color: var(--ink); }
40  .rail code { border-bottom: 1px dotted var(--ink-mute); }
41
42  /* a note: a ruled block, under its line in the diff and in the list of comments */
43  .cmt {
44    border-left: 2px solid var(--ink); padding-left: 1ch; margin-top: calc(var(--lh) / 2); max-width: var(--measure);
45    white-space: normal;
46    & p { white-space: normal; }
47    & .c-who { font-weight: bold; }
48    & .c-state { color: var(--ink-dim); }
49    & .c-text { white-space: pre-wrap; overflow-wrap: anywhere; }
50    & .c-where { font-size: var(--fs-s); overflow-wrap: anywhere; }
51    & .c-act button { color: var(--ink-dim); }
52    & .c-act button:hover { color: var(--ink); text-decoration: underline; }
53    &[data-resolved="true"] { border-left-color: var(--rule); }
54    &[data-resolved="true"] .c-text { color: var(--ink-dim); }
55  }
56  .dt .fnote td { background: var(--paper-alt); padding: 2px 0 4px; white-space: normal; }
57  .dt .fnote .cmt, .dt .fnote .cform { margin: 0; font-size: var(--fs); line-height: var(--lh); }
58  .dt .fnote .cmt + .cmt, .dt .fnote .cmt + .cform { margin-top: calc(var(--lh) / 2); }
59  .ln a { color: inherit; text-decoration: none; }
60  .ln a:hover, .ln a:focus-visible { text-decoration: underline; color: var(--ink-hi); }
61
62  /* the forms: a comment, a new merge request */
63  .cform {
64    display: grid; gap: 2px; margin-top: var(--lh); max-width: var(--measure);
65    & label { color: var(--ink-dim); }
66    & textarea, & input[type="text"] {
67      display: block; width: 100%; font: inherit; color: inherit; resize: vertical;
68      background: var(--paper-alt); border: 1px solid var(--rule); border-radius: 0; padding: 0 1ch;
69    }
70    & textarea::placeholder { color: var(--ink-mute); opacity: 1; }
71    & .f-btns { display: flex; gap: 2ch; align-items: baseline; margin-top: 4px; }
72    & .f-btns a { color: var(--ink-dim); }
73    & .f-btns button { color: var(--ink-dim); }
74    & .f-btns button:hover { color: var(--ink); text-decoration: underline; }
75    & .f-btns .f-main { background: var(--ink); color: var(--paper); font-weight: bold; padding: 0 1ch; }
76    & .f-btns .f-main:hover { background: var(--ink-hi); text-decoration: none; }
77  }
78  .cform.create { margin-top: var(--lh); }
79
80  .list.mrs {
81    & .c-n { width: 5ch; }
82    & .c-state { width: 9ch; }
83    & .c-subject { overflow: hidden; text-overflow: ellipsis; }
84    & .c-who { width: 12ch; }
85    & .c-when { width: 11ch; }
86    & tr[data-state="open"] .c-state { font-weight: bold; }
87    & tr[data-state="open"] .c-state::before { content: "● "; color: var(--teal); }
88    & tr[data-state="merged"] .c-state::before { content: "✓ "; color: var(--teal); }
89    & tr[data-state="closed"] .c-state::before { content: "✗ "; color: var(--red); }
90  }
91  #mr-notice:empty { display: none; }
92
93  @media (max-width: 700px) {
94    .list.mrs .c-who { display: none; }
95  }
96}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 4

Tags 45

↑↓ moveenter openesc close