arche / internal/archesrv/templates/srv_base.html

commit 154431fd
  1{{ define "head" }}
  2<!DOCTYPE html>
  3<html lang="en">
  4    <head>
  5        <meta charset="utf-8" />
  6        <meta name="viewport" content="width=device-width, initial-scale=1" />
  7        <title>{{ block "title" . }}arche forge{{ end }}</title>
  8        <style>
  9      /* Reset & base */
 10      *,
 11      *::before,
 12      *::after {
 13        box-sizing: border-box;
 14        margin: 0;
 15        padding: 0;
 16      }
 17      body {
 18        font-family: monospace;
 19        font-size: 14px;
 20        background: #fff;
 21        color: #111;
 22      }
 23      a {
 24        color: #0645ad;
 25        text-decoration: none;
 26      }
 27      a:hover {
 28        text-decoration: underline;
 29      }
 30      pre,
 31      code {
 32        font-family: monospace;
 33      }
 34
 35      /* Layout */
 36      nav {
 37        background: #2b2b2b;
 38        color: #ddd;
 39        padding: 6px 16px;
 40        display: flex;
 41        align-items: center;
 42        gap: 20px;
 43      }
 44      nav a {
 45        color: #ccc;
 46        font-size: 13px;
 47      }
 48      nav a:hover {
 49        color: #fff;
 50        text-decoration: none;
 51      }
 52      nav .brand {
 53        color: #fff;
 54        font-weight: bold;
 55        font-size: 15px;
 56      }
 57      nav .spacer {
 58        flex: 1;
 59      }
 60      .container {
 61        max-width: 960px;
 62        margin: 0 auto;
 63        padding: 20px 16px;
 64      }
 65
 66      /* Tables */
 67      table {
 68        width: 100%;
 69        border-collapse: collapse;
 70      }
 71      th {
 72        text-align: left;
 73        background: #f4f4f4;
 74        padding: 6px 8px;
 75        border-bottom: 1px solid #ddd;
 76        font-size: 12px;
 77        text-transform: uppercase;
 78        color: #666;
 79      }
 80      td {
 81        padding: 6px 8px;
 82        border-bottom: 1px solid #eee;
 83        vertical-align: top;
 84      }
 85      tr:last-child td {
 86        border-bottom: none;
 87      }
 88
 89      /* Badges */
 90      .badge {
 91        display: inline-block;
 92        padding: 1px 6px;
 93        border-radius: 3px;
 94        font-size: 11px;
 95        font-weight: bold;
 96      }
 97      .badge-public {
 98        background: #d4edda;
 99        color: #155724;
100      }
101      .badge-private {
102        background: #f8d7da;
103        color: #721c24;
104      }
105      .badge-draft {
106        background: #fff3cd;
107        color: #856404;
108      }
109      .badge-public-phase {
110        background: #cfe2ff;
111        color: #084298;
112      }
113      .badge-secret {
114        background: #e2e3e5;
115        color: #383d41;
116      }
117
118      /* Phase classes for commit rows */
119      .phase-draft {
120        border-left: 3px solid #ffc107;
121      }
122      .phase-public {
123        border-left: 3px solid #0d6efd;
124      }
125      .phase-secret {
126        border-left: 3px solid #6c757d;
127      }
128
129      /* Diff */
130      .diff-block {
131        background: #f8f8f8;
132        border: 1px solid #ddd;
133        border-radius: 3px;
134        margin: 8px 0;
135        overflow-x: auto;
136      }
137      .diff-block pre {
138        padding: 8px;
139        line-height: 1.4;
140        white-space: pre;
141      }
142      .diff-add {
143        background: #e6ffed;
144        color: #22863a;
145      }
146      .diff-del {
147        background: #ffeef0;
148        color: #cb2431;
149      }
150      .diff-hdr {
151        color: #6a737d;
152      }
153
154      /* Forms */
155      form label {
156        display: block;
157        margin-bottom: 4px;
158        font-size: 13px;
159        color: #333;
160      }
161      form input[type="text"],
162      form input[type="password"] {
163        width: 280px;
164        padding: 6px 8px;
165        border: 1px solid #ccc;
166        border-radius: 3px;
167        font-size: 13px;
168      }
169      form .field {
170        margin-bottom: 12px;
171      }
172      button,
173      input[type="submit"] {
174        padding: 6px 14px;
175        background: #2b2b2b;
176        color: #fff;
177        border: none;
178        border-radius: 3px;
179        font-size: 13px;
180        cursor: pointer;
181      }
182      button:hover {
183        background: #444;
184      }
185      .error {
186        color: #c00;
187        margin-bottom: 8px;
188        font-size: 13px;
189      }
190
191      /* Tree */
192      .tree-path {
193        font-size: 13px;
194        margin-bottom: 8px;
195        color: #555;
196      }
197      .tree-path a {
198        color: #0645ad;
199      }
200      .entry-dir a {
201        color: #0645ad;
202        font-weight: bold;
203      }
204      .entry-file a {
205        color: #111;
206      }
207
208      /* Repo header */
209      h1.repo-name {
210        font-size: 20px;
211        margin-bottom: 4px;
212      }
213      .repo-meta {
214        font-size: 12px;
215        color: #666;
216        margin-bottom: 12px;
217      }
218
219      /* Commit log */
220      .log-row {
221        display: flex;
222        align-items: baseline;
223        gap: 8px;
224        padding: 5px 0;
225        border-bottom: 1px solid #f0f0f0;
226      }
227      .log-sha {
228        font-size: 12px;
229        color: #666;
230        font-family: monospace;
231        min-width: 70px;
232      }
233      .log-msg {
234        flex: 1;
235      }
236      .log-author {
237        font-size: 12px;
238        color: #888;
239        min-width: 100px;
240        text-align: right;
241      }
242      .log-date {
243        font-size: 12px;
244        color: #aaa;
245        min-width: 120px;
246        text-align: right;
247      }
248      .bookmark-tag {
249        background: #f0f4ff;
250        border: 1px solid #b0c0ff;
251        border-radius: 3px;
252        padding: 0 4px;
253        font-size: 11px;
254        color: #0645ad;
255        margin-left: 4px;
256      }
257      .head-tag {
258        background: #ffe082;
259        border: 1px solid #fbc02d;
260        border-radius: 3px;
261        padding: 0 4px;
262        font-size: 11px;
263      }
264        </style>
265    </head>
266    <body>
267        <nav>
268            <a class="brand" href="/">
269                <svg width="18"
270                     height="18"
271                     viewBox="0 0 128 128"
272                     xmlns="http://www.w3.org/2000/svg"
273                     style="vertical-align: middle;
274                            margin-right: 6px">
275                    <circle cx="64" cy="64" r="48" stroke="white" stroke-width="8" fill="none" />
276                    <circle cx="64" cy="64" r="10" fill="white" />
277                </svg>
278            arche</a>
279            {{ block "navextra" . }}{{ end }}
280            <span class="spacer"></span>
281            {{ if .User }}<a href="/settings/keys">settings</a>
282            <a href="/settings/token">token</a>{{ if .User.IsAdmin }}
283            <a href="/admin/users">admin</a>{{ end }}
284            <span style="color: #aaa; font-size: 12px">{{.User.Username}}</span>
285            <a href="/logout">logout</a>{{ else }}<a href="/login">login</a>{{ if
286            registrationOpen }} <a href="/register">register</a>{{ end }}{{ end }}
287        </nav>
288        {{ end }} {{ define "foot" }}
289    </body>
290</html>
291{{ end }}