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 }}