aboutsummaryrefslogtreecommitdiff
path: root/git
diff options
context:
space:
mode:
Diffstat (limited to 'git')
-rw-r--r--git/cgit.scss884
-rw-r--r--git/default.nix3
-rw-r--r--git/theme.nix3
3 files changed, 863 insertions, 27 deletions
diff --git a/git/cgit.scss b/git/cgit.scss
index 3d0c4fb..12708ee 100644
--- a/git/cgit.scss
+++ b/git/cgit.scss
@@ -1,27 +1,867 @@
-// Stylesheet for cgit on git.kassouni.net, layered over cgit's stock cgit.css.
-// Rules here have to match `div#cgit ...` to win on specificity, so they nest
-// under the same id. Compiled by ./theme.nix.
+@use "palette";
@use "fonts";
div#cgit {
- font-family: fonts.$mono;
+ padding: 0em;
+ margin: 0em;
+ font-family: fonts.$mono;
+ font-size: 10pt;
+ line-height: 1.5;
+ color: var(--fg);
+ background: var(--bg);
+ padding: 4px;
+}
+
+div#cgit a {
+ color: var(--blue);
+ text-decoration: none;
+}
+
+div#cgit a:hover {
+ text-decoration: underline;
+}
+
+div#cgit table {
+ border-collapse: collapse;
+}
+
+div#cgit table#header {
+ width: 100%;
+ margin-bottom: 1em;
+}
+
+div#cgit table#header td.logo {
+ width: 96px;
+ vertical-align: top;
+}
- // cgit.css asks for generic `monospace` on these; point them at the webfont
- a.ls-blob,
- a.ls-dir,
- .ls-mod,
- .oid,
- div.commit-msg,
- div.notes,
- table.bin-blob th,
- table.bin-blob td,
- table.diff td,
- table.list td.commitgraph,
- table.list td.logmsg,
- table.list td.logsubject,
- table.ssdiff td,
- td.ls-mode,
- td.ls-size {
- font-family: fonts.$mono;
- }
+div#cgit table#header td.main {
+ font-size: 250%;
+ padding-left: 10px;
+ white-space: nowrap;
}
+
+div#cgit table#header td.main a {
+ color: var(--fg-bright);
+}
+
+div#cgit table#header td.form {
+ text-align: right;
+ vertical-align: bottom;
+ padding-right: 1em;
+ padding-bottom: 2px;
+ white-space: nowrap;
+}
+
+div#cgit table#header td.form form,
+div#cgit table#header td.form input,
+div#cgit table#header td.form select {
+ font-size: 90%;
+}
+
+div#cgit table#header td.sub {
+ color: var(--fg-dim);
+ border-top: solid 1px var(--grey);
+ padding-left: 10px;
+}
+
+div#cgit table.tabs {
+ border-bottom: solid 3px var(--grey);
+ border-collapse: collapse;
+ margin-top: 2em;
+ margin-bottom: 0px;
+ width: 100%;
+}
+
+div#cgit table.tabs td {
+ padding: 0px 1em;
+ vertical-align: bottom;
+}
+
+div#cgit table.tabs td a {
+ padding: 2px 0.75em;
+ color: var(--fg-dim);
+ font-size: 110%;
+}
+
+div#cgit table.tabs td a.active {
+ color: var(--fg-bright);
+ background-color: var(--bg-sel);
+}
+
+div#cgit table.tabs a[href^="http://"]:after, div#cgit table.tabs a[href^="https://"]:after {
+ content: "\2197";
+ opacity: 0.7;
+ margin: 0 0 0 3px;
+ font-size: 90%;
+}
+
+div#cgit table.tabs td.form {
+ text-align: right;
+}
+
+div#cgit table.tabs td.form form {
+ padding-bottom: 2px;
+ font-size: 90%;
+ white-space: nowrap;
+}
+
+div#cgit table.tabs td.form input,
+div#cgit table.tabs td.form select {
+ font-size: 90%;
+}
+
+div#cgit div.path {
+ margin: 0px;
+ padding: 5px 2em 2px 2em;
+ color: var(--fg-bright);
+ background-color: var(--bg-alt);
+}
+
+div#cgit div.content {
+ margin: 0px;
+ padding: 2em;
+ border-bottom: solid 3px var(--grey);
+}
+
+
+div#cgit table.list {
+ width: 100%;
+ border: none;
+ border-collapse: collapse;
+}
+
+div#cgit table.list tr {
+ background: var(--bg);
+}
+
+div#cgit table.list tr.logheader {
+ background: var(--bg-alt);
+}
+
+div#cgit table.list tr:nth-child(even) {
+ background: var(--bg-alt);
+}
+
+div#cgit table.list tr:nth-child(odd) {
+ background: var(--bg);
+}
+
+div#cgit table.list tr:hover {
+ background: var(--bg-sel);
+}
+
+div#cgit table.list tr.nohover {
+ background: var(--bg);
+}
+
+div#cgit table.list tr.nohover:hover {
+ background: var(--bg);
+}
+
+div#cgit table.list tr.nohover-highlight:hover:nth-child(even) {
+ background: var(--bg-alt);
+}
+
+div#cgit table.list tr.nohover-highlight:hover:nth-child(odd) {
+ background: var(--bg);
+}
+
+div#cgit table.list th {
+ font-weight: bold;
+ padding: 0.1em 0.5em 0.05em 0.5em;
+ vertical-align: baseline;
+}
+
+div#cgit table.list td {
+ border: none;
+ padding: 0.1em 0.5em 0.1em 0.5em;
+}
+
+div#cgit table.list td.commitgraph {
+ white-space: pre;
+}
+
+div#cgit table.list td.commitgraph .column1 {
+ color: var(--red);
+}
+
+div#cgit table.list td.commitgraph .column2 {
+ color: var(--green);
+}
+
+div#cgit table.list td.commitgraph .column3 {
+ color: var(--yellow);
+}
+
+div#cgit table.list td.commitgraph .column4 {
+ color: var(--blue);
+}
+
+div#cgit table.list td.commitgraph .column5 {
+ color: var(--purple);
+}
+
+div#cgit table.list td.commitgraph .column6 {
+ color: var(--cyan);
+}
+
+div#cgit table.list td.logsubject {
+ font-weight: bold;
+}
+
+div#cgit table.list td.logmsg {
+ white-space: pre;
+ padding: 0 0.5em;
+}
+
+div#cgit table.list td a {
+ color: var(--fg);
+}
+
+div#cgit table.list td a.ls-dir {
+ font-weight: bold;
+ color: var(--blue);
+}
+
+div#cgit table.list td a:hover {
+ color: var(--blue);
+}
+
+div#cgit img {
+ border: none;
+}
+
+div#cgit input#switch-btn {
+ margin: 2px 0px 0px 0px;
+}
+
+div#cgit td#sidebar input.txt {
+ width: 100%;
+ margin: 2px 0px 0px 0px;
+}
+
+div#cgit table#grid {
+ margin: 0px;
+}
+
+div#cgit td#content {
+ vertical-align: top;
+ padding: 1em 2em 1em 1em;
+ border: none;
+}
+
+div#cgit div#summary {
+ vertical-align: top;
+ margin-bottom: 1em;
+}
+
+div#cgit table#downloads {
+ float: right;
+ border-collapse: collapse;
+ border: solid 1px var(--grey);
+ margin-left: 0.5em;
+ margin-bottom: 0.5em;
+}
+
+div#cgit table#downloads th {
+ background-color: var(--bg-sel);
+}
+
+div#cgit div#blob {
+ border: solid 1px var(--grey);
+}
+
+div#cgit div.error {
+ color: var(--red);
+ font-weight: bold;
+ margin: 1em 2em;
+}
+
+div#cgit td.ls-size {
+ text-align: right;
+ width: 10em;
+}
+
+div#cgit td.ls-mode {
+ width: 10em;
+}
+
+div#cgit table.blob {
+ margin-top: 0.5em;
+ border-top: solid 1px var(--grey);
+}
+
+div#cgit table.blob td.hashes,
+div#cgit table.blob td.lines {
+ margin: 0; padding: 0 0 0 0.5em;
+ vertical-align: top;
+ color: var(--fg);
+}
+
+div#cgit table.blob td.linenumbers {
+ margin: 0; padding: 0 0.5em 0 0.5em;
+ vertical-align: top;
+ text-align: right;
+ border-right: 1px solid var(--grey);
+}
+
+div#cgit table.blob pre {
+ padding: 0; margin: 0;
+}
+
+div#cgit table.blob td.linenumbers a,
+div#cgit table.ssdiff td.lineno a {
+ color: var(--grey);
+ text-align: right;
+ text-decoration: none;
+}
+
+div#cgit table.blob td.linenumbers a:hover,
+div#cgit table.ssdiff td.lineno a:hover {
+ color: var(--fg);
+}
+
+div#cgit table.blob td.linenumbers a:target:before {
+ color: var(--orange);
+ content: "\2BA9";
+}
+
+div#cgit table.blame td.hashes,
+div#cgit table.blame td.lines,
+div#cgit table.blame td.linenumbers {
+ padding: 0;
+}
+
+div#cgit table.blame td.hashes div.alt,
+div#cgit table.blame td.lines div.alt {
+ padding: 0 0.5em 0 0.5em;
+}
+
+div#cgit table.blame td.linenumbers div.alt {
+ padding: 0 0.5em 0 0;
+}
+
+div#cgit table.blame div.alt:nth-child(even) {
+ background: var(--bg-alt);
+}
+
+div#cgit table.blame div.alt:nth-child(odd) {
+ background: var(--bg);
+}
+
+div#cgit table.blame td.lines > div {
+ position: relative;
+}
+
+div#cgit table.blame td.lines > div > pre {
+ padding: 0 0 0 0.5em;
+ position: absolute;
+ top: 0;
+}
+
+div#cgit table.blame .oid {
+ font-size: 100%;
+}
+
+div#cgit table.bin-blob {
+ margin-top: 0.5em;
+ border: solid 1px var(--grey);
+}
+
+div#cgit table.bin-blob th {
+ white-space: pre;
+ border: solid 1px var(--grey);
+ padding: 0.5em 1em;
+}
+
+div#cgit table.bin-blob td {
+ white-space: pre;
+ border-left: solid 1px var(--grey);
+ padding: 0em 1em;
+}
+
+div#cgit table.nowrap td {
+ white-space: nowrap;
+}
+
+div#cgit table.commit-info {
+ border-collapse: collapse;
+ margin-top: 1.5em;
+}
+
+div#cgit div.cgit-panel {
+ float: right;
+ margin-top: 1.5em;
+}
+
+div#cgit div.cgit-panel table {
+ border-collapse: collapse;
+ border: solid 1px var(--grey);
+ background-color: var(--bg-alt);
+}
+
+div#cgit div.cgit-panel th {
+ text-align: center;
+}
+
+div#cgit div.cgit-panel td {
+ padding: 0.25em 0.5em;
+}
+
+div#cgit div.cgit-panel td.label {
+ padding-right: 0.5em;
+}
+
+div#cgit div.cgit-panel td.ctrl {
+ padding-left: 0.5em;
+}
+
+div#cgit table.commit-info th {
+ text-align: left;
+ font-weight: normal;
+ padding: 0.1em 1em 0.1em 0.1em;
+ vertical-align: top;
+}
+
+div#cgit table.commit-info td {
+ font-weight: normal;
+ padding: 0.1em 1em 0.1em 0.1em;
+}
+
+div#cgit div.commit-subject {
+ font-weight: bold;
+ font-size: 125%;
+ margin: 1.5em 0em 0.5em 0em;
+ padding: 0em;
+}
+
+div#cgit div.commit-msg {
+ white-space: pre;
+}
+
+div#cgit div.notes-header {
+ font-weight: bold;
+ padding-top: 1.5em;
+}
+
+div#cgit div.notes {
+ white-space: pre;
+ border: solid 1px var(--yellow);
+ background-color: var(--bg-alt);
+ padding: 0.3em 2em 0.3em 1em;
+ float: left;
+}
+
+div#cgit div.notes-footer {
+ clear: left;
+}
+
+div#cgit div.diffstat-header {
+ font-weight: bold;
+ padding-top: 1.5em;
+}
+
+div#cgit table.diffstat {
+ border-collapse: collapse;
+ border: solid 1px var(--grey);
+ background-color: var(--bg-alt);
+}
+
+div#cgit table.diffstat th {
+ font-weight: normal;
+ text-align: left;
+ text-decoration: underline;
+ padding: 0.1em 1em 0.1em 0.1em;
+ font-size: 100%;
+}
+
+div#cgit table.diffstat td {
+ padding: 0.2em 0.2em 0.1em 0.1em;
+ font-size: 100%;
+ border: none;
+}
+
+div#cgit table.diffstat td.mode {
+ white-space: nowrap;
+}
+
+div#cgit table.diffstat td span.modechange {
+ padding-left: 1em;
+ color: var(--red);
+}
+
+div#cgit table.diffstat td.add a {
+ color: var(--green);
+}
+
+div#cgit table.diffstat td.del a {
+ color: var(--red);
+}
+
+div#cgit table.diffstat td.upd a {
+ color: var(--blue);
+}
+
+div#cgit table.diffstat td.graph {
+ width: 500px;
+ vertical-align: middle;
+}
+
+div#cgit table.diffstat td.graph table {
+ border: none;
+}
+
+div#cgit table.diffstat td.graph td {
+ padding: 0px;
+ border: 0px;
+ height: 7pt;
+}
+
+div#cgit table.diffstat td.graph td.add {
+ background-color: var(--green);
+}
+
+div#cgit table.diffstat td.graph td.rem {
+ background-color: var(--red);
+}
+
+div#cgit div.diffstat-summary {
+ color: var(--fg-dim);
+ padding-top: 0.5em;
+}
+
+div#cgit table.diff {
+ width: 100%;
+}
+
+div#cgit table.diff td {
+ white-space: pre;
+}
+
+div#cgit table.diff td div.head {
+ font-weight: bold;
+ margin-top: 1em;
+ color: var(--fg-bright);
+}
+
+div#cgit table.diff td div.hunk {
+ color: var(--cyan);
+}
+
+div#cgit table.diff td div.add {
+ color: var(--green);
+}
+
+div#cgit table.diff td div.del {
+ color: var(--red);
+}
+
+div#cgit .oid {
+ font-size: 90%;
+}
+
+div#cgit .left {
+ text-align: left;
+}
+
+div#cgit .right {
+ text-align: right;
+}
+
+div#cgit table.list td.reposection {
+ font-style: italic;
+ color: var(--fg-dim);
+}
+
+div#cgit a.button {
+ font-size: 80%;
+ padding: 0em 0.5em;
+}
+
+div#cgit a.primary {
+ font-size: 100%;
+}
+
+div#cgit a.secondary {
+ font-size: 90%;
+}
+
+div#cgit td.toplevel-repo {
+
+}
+
+div#cgit table.list td.sublevel-repo {
+ padding-left: 1.5em;
+}
+
+div#cgit ul.pager {
+ list-style-type: none;
+ text-align: center;
+ margin: 1em 0em 0em 0em;
+ padding: 0;
+}
+
+div#cgit ul.pager li {
+ display: inline-block;
+ margin: 0.25em 0.5em;
+}
+
+div#cgit ul.pager a {
+ color: var(--fg-dim);
+}
+
+div#cgit ul.pager .current {
+ font-weight: bold;
+}
+
+div#cgit span.age-mins {
+ font-weight: bold;
+ color: var(--green);
+}
+
+div#cgit span.age-hours {
+ color: var(--green);
+}
+
+div#cgit span.age-days {
+ color: var(--cyan);
+}
+
+div#cgit span.age-weeks {
+ color: var(--fg);
+}
+
+div#cgit span.age-months {
+ color: var(--fg-dim);
+}
+
+div#cgit span.age-years {
+ color: var(--grey);
+}
+
+div#cgit span.insertions {
+ color: var(--green);
+}
+
+div#cgit span.deletions {
+ color: var(--red);
+}
+
+div#cgit div.footer {
+ margin-top: 0.5em;
+ text-align: center;
+ font-size: 80%;
+ color: var(--grey);
+}
+
+div#cgit div.footer a {
+ color: var(--grey);
+ text-decoration: none;
+}
+
+div#cgit div.footer a:hover {
+ text-decoration: underline;
+}
+
+$-decos: (
+ "branch-deco": "green",
+ "tag-deco": "yellow",
+ "tag-annotated-deco": "orange",
+ "remote-deco": "blue",
+ "deco": "red",
+);
+
+@each $class, $colour in $-decos {
+ div#cgit a.#{$class} {
+ color: var(--#{$colour});
+ margin: 0px 0.5em;
+ padding: 0px 0.25em;
+ border: solid 1px var(--#{$colour});
+ border-radius: 2px;
+ }
+}
+
+div#cgit div.commit-subject a.branch-deco,
+div#cgit div.commit-subject a.tag-deco,
+div#cgit div.commit-subject a.tag-annotated-deco,
+div#cgit div.commit-subject a.remote-deco,
+div#cgit div.commit-subject a.deco {
+ margin-left: 1em;
+ font-size: 75%;
+}
+
+div#cgit table.stats {
+ border: solid 1px var(--grey);
+ border-collapse: collapse;
+}
+
+div#cgit table.stats th {
+ text-align: left;
+ padding: 1px 0.5em;
+ background-color: var(--bg-alt);
+ border: solid 1px var(--grey);
+}
+
+div#cgit table.stats td {
+ text-align: right;
+ padding: 1px 0.5em;
+ border: solid 1px var(--grey);
+}
+
+div#cgit table.stats td.total {
+ font-weight: bold;
+ text-align: left;
+}
+
+div#cgit table.stats td.sum {
+ color: var(--red);
+ font-weight: bold;
+}
+
+div#cgit table.stats td.left {
+ text-align: left;
+}
+
+div#cgit table.vgraph {
+ border-collapse: separate;
+ border: solid 1px var(--grey);
+ height: 200px;
+}
+
+div#cgit table.vgraph th {
+ background-color: var(--bg-alt);
+ font-weight: bold;
+ border: solid 1px var(--bg);
+ padding: 1px 0.5em;
+}
+
+div#cgit table.vgraph td {
+ vertical-align: bottom;
+ padding: 0px 10px;
+}
+
+div#cgit table.vgraph div.bar {
+ background-color: var(--grey);
+}
+
+div#cgit table.hgraph {
+ border: solid 1px var(--grey);
+ width: 800px;
+}
+
+div#cgit table.hgraph th {
+ background-color: var(--bg-alt);
+ font-weight: bold;
+ border: solid 1px var(--grey);
+ padding: 1px 0.5em;
+}
+
+div#cgit table.hgraph td {
+ vertical-align: middle;
+ padding: 2px 2px;
+}
+
+div#cgit table.hgraph div.bar {
+ background-color: var(--grey);
+ height: 1em;
+}
+
+div#cgit table.ssdiff {
+ width: 100%;
+}
+
+div#cgit table.ssdiff td {
+ font-size: 75%;
+ white-space: pre;
+ padding: 1px 4px 1px 4px;
+ border-left: solid 1px var(--grey);
+ border-right: solid 1px var(--grey);
+}
+
+div#cgit table.ssdiff td.add {
+ color: var(--fg);
+ background: color-mix(in srgb, var(--green) 18%, var(--bg));
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.add_dark {
+ color: var(--fg);
+ background: color-mix(in srgb, var(--green) 32%, var(--bg));
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff span.add {
+ background: color-mix(in srgb, var(--green) 32%, var(--bg));
+ font-weight: bold;
+}
+
+div#cgit table.ssdiff td.del {
+ color: var(--fg);
+ background: color-mix(in srgb, var(--red) 18%, var(--bg));
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.del_dark {
+ color: var(--fg);
+ background: color-mix(in srgb, var(--red) 32%, var(--bg));
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff span.del {
+ background: color-mix(in srgb, var(--red) 32%, var(--bg));
+ font-weight: bold;
+}
+
+div#cgit table.ssdiff td.changed {
+ color: var(--fg);
+ background: color-mix(in srgb, var(--yellow) 18%, var(--bg));
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.changed_dark {
+ color: var(--fg);
+ background: color-mix(in srgb, var(--yellow) 32%, var(--bg));
+ min-width: 50%;
+}
+
+div#cgit table.ssdiff td.lineno {
+ color: var(--fg-dim);
+ background: var(--bg-alt);
+ text-align: right;
+ width: 3em;
+ min-width: 3em;
+}
+
+div#cgit table.ssdiff td.hunk {
+ color: var(--fg);
+ background: color-mix(in srgb, var(--blue) 18%, var(--bg));
+ border-top: solid 1px var(--grey);
+ border-bottom: solid 1px var(--grey);
+}
+
+div#cgit table.ssdiff td.head {
+ border-top: solid 1px var(--grey);
+ border-bottom: solid 1px var(--grey);
+}
+
+div#cgit table.ssdiff td.head div.head {
+ font-weight: bold;
+ color: var(--fg-bright);
+}
+
+div#cgit table.ssdiff td.foot {
+ border-top: solid 1px var(--grey);
+ border-left: none;
+ border-right: none;
+ border-bottom: none;
+}
+
+div#cgit table.ssdiff td.space {
+ border: none;
+}
+
+div#cgit table.ssdiff td.space div {
+ min-height: 3em;
+}
+
diff --git a/git/default.nix b/git/default.nix
index f46c3ab..991c8ff 100644
--- a/git/default.nix
+++ b/git/default.nix
@@ -29,8 +29,7 @@ in {
group = "git"; # so cgit can traverse a non-world-readable repoRoot
gitHttpBackend.checkExportOkFiles = true;
settings = {
- # cgit adds one <link> per css entry, in order
- css = [ "/cgit.css" "/theme.css" ];
+ css = [ "/theme.css" ];
strict-export = "git-daemon-export-ok";
remove-suffix = true;
readme = [ ":README.md" ":README" ":readme.md" ];
diff --git a/git/theme.nix b/git/theme.nix
index 4d4a395..815f0ea 100644
--- a/git/theme.nix
+++ b/git/theme.nix
@@ -1,8 +1,5 @@
{ pkgs }:
-# The extra stylesheet for cgit, served next to cgit's stock cgit.css, plus the
-# webfont it references. Fonts ship here rather than being pulled from
-# kassouni.net so they stay same-origin and need no CORS headers.
pkgs.runCommand "cgit-theme"
{
nativeBuildInputs = [ pkgs.dart-sass ];