mirror of
https://github.com/OliveTin/OliveTin
synced 2025-12-13 09:35:37 +00:00
Some checks failed
Build Snapshot / build-snapshot (push) Has been cancelled
DevSkim / DevSkim (push) Has been cancelled
CodeQL / Analyze (go) (push) Has been cancelled
CodeQL / Analyze (javascript) (push) Has been cancelled
Codestyle checks / codestyle (push) Has been cancelled
793 lines
11 KiB
CSS
793 lines
11 KiB
CSS
html, body {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
}
|
|
|
|
body {
|
|
background-color: #dee3e7;
|
|
color: black;
|
|
font-family: sans-serif;
|
|
margin: 0;
|
|
padding: 0;
|
|
text-align: center;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
dialog {
|
|
box-shadow: 0 0 6px 0 #444;
|
|
max-width: 600px;
|
|
min-width: 60%;
|
|
text-align: left;
|
|
padding: 0;
|
|
}
|
|
|
|
dialog[open] {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
dialog.big {
|
|
max-width: 100vw;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
max-height: 100dvh;
|
|
border: none;
|
|
margin: 0;
|
|
}
|
|
|
|
fieldset {
|
|
font-family: sans-serif;
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, 180px);
|
|
grid-auto-rows: 1fr;
|
|
grid-gap: 1em;
|
|
padding: 0;
|
|
text-align: center;
|
|
justify-content: center;
|
|
border: 0;
|
|
}
|
|
|
|
footer {
|
|
font-size: smaller;
|
|
}
|
|
|
|
footer span {
|
|
display: inline-block;
|
|
}
|
|
|
|
a {
|
|
color: black;
|
|
}
|
|
|
|
nav ul li a {
|
|
display: block;
|
|
padding: 0.5em 1em;
|
|
user-select: none;
|
|
text-decoration: none;
|
|
font-size: small;
|
|
}
|
|
|
|
a:focus {
|
|
background-color: black;
|
|
color: white;
|
|
outline: 1px solid black;
|
|
}
|
|
|
|
nav ul li a:hover {
|
|
background-color: #efefef;
|
|
color: black;
|
|
cursor: pointer;
|
|
border: 0;
|
|
outline: 0;
|
|
}
|
|
|
|
nav ul li a.selected {
|
|
background-color: #c4cdd4;
|
|
color: black;
|
|
outline: 0;
|
|
}
|
|
|
|
#sidebar-toggler-button {
|
|
height: 2em;
|
|
width: 2em;
|
|
text-align: center;
|
|
display: inline-grid;
|
|
place-items: center;
|
|
margin-left: 1em;
|
|
padding: 0;
|
|
}
|
|
|
|
.userinfo {
|
|
padding-right: 1em;
|
|
font-size: small;
|
|
}
|
|
|
|
.userinfo svg, .userinfo span {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
nav {
|
|
left: -250px;
|
|
}
|
|
|
|
nav.topbar {
|
|
display: flex;
|
|
flex-direction: row;
|
|
place-content: end;
|
|
border-radius: .5em;
|
|
padding-right: 1em;
|
|
padding-left: 1em;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
nav.sidebar {
|
|
background-color: white;
|
|
position: fixed;
|
|
width: 180px;
|
|
height: 100dvh;
|
|
top: 0;
|
|
transition: left 0.5s ease, visibility 0.5s ease;
|
|
box-shadow: 0 0 10px 0 #444;
|
|
z-index: -1;
|
|
flex-direction: column;
|
|
display: flex;
|
|
visibility: hidden;
|
|
}
|
|
|
|
nav.sidebar.shown {
|
|
visibility: visible;
|
|
left: 0;
|
|
}
|
|
|
|
.sidebar #navigation-links {
|
|
padding-top: 4em;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
#supplemental-links {
|
|
flex-grow: 0;
|
|
}
|
|
|
|
h1 {
|
|
display: inline;
|
|
font-size: small;
|
|
padding-left: .5em;
|
|
flex-grow: 1;
|
|
margin: 0;
|
|
}
|
|
|
|
dialog h1 {
|
|
padding-left: 0;
|
|
}
|
|
|
|
nav ul {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
nav.topbar ul {
|
|
display: inline-block;
|
|
}
|
|
|
|
nav.topbar ul li {
|
|
display: inline-block;
|
|
font-size: small;
|
|
}
|
|
|
|
nav.topbar ul li a {
|
|
border-radius: .5em;
|
|
}
|
|
|
|
nav.sidebar ul li {
|
|
list-style: none;
|
|
text-align: left;
|
|
border-bottom: 1px solid #ccc;
|
|
}
|
|
|
|
table {
|
|
background-color: white;
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
}
|
|
|
|
th,
|
|
td {
|
|
border-top: 1px solid #efefef;
|
|
text-align: left;
|
|
padding: 0.6em;
|
|
}
|
|
|
|
th:first-child {
|
|
width: 5%;
|
|
}
|
|
|
|
tr:hover td {
|
|
background-color: beige;
|
|
}
|
|
|
|
legend {
|
|
font-family: sans-serif;
|
|
padding-top: 1em;
|
|
text-align: center;
|
|
width: 100%;
|
|
padding-bottom: 1em;
|
|
font-weight: bold;
|
|
}
|
|
|
|
span.icon {
|
|
display: block;
|
|
font-size: 3em;
|
|
}
|
|
|
|
span.icon img {
|
|
width: 1em;
|
|
}
|
|
|
|
.action-header {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.action-header span.icon,
|
|
tr.log-row span.icon {
|
|
display: inline-block;
|
|
padding-right: 0.2em;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.error {
|
|
background-color: salmon;
|
|
color: black;
|
|
}
|
|
|
|
.title.temporary-status-message {
|
|
color: gray;
|
|
}
|
|
|
|
h2 {
|
|
display: inline-block;
|
|
font-size: 1em;
|
|
margin-top: 0;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
div.entity h2 {
|
|
grid-column: 1 / span all;
|
|
}
|
|
|
|
details {
|
|
display: inline-block;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
/* General Buttons */
|
|
|
|
button {
|
|
transition: none;
|
|
font-weight: bold;
|
|
border-radius: .7em;
|
|
box-shadow: none;
|
|
font-size: 1em;
|
|
padding: 0.6em 1em;
|
|
border: 1px solid #ccc;
|
|
font-family: sans-serif;
|
|
color: black;
|
|
text-align: center;
|
|
background-color: white;
|
|
user-select: none;
|
|
}
|
|
|
|
action-button {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
action-button button {
|
|
font-size: .85em;
|
|
font-weight: normal;
|
|
flex-grow: 1;
|
|
width: 100%;
|
|
z-index: 1;
|
|
padding: 1em;
|
|
box-shadow: 0 0 6px 0 #aaa;
|
|
transition: background-color 1s ease, color .3s ease;
|
|
}
|
|
|
|
execution-button button {
|
|
margin-top: 0.2em;
|
|
margin-bottom: 0.2em;
|
|
}
|
|
|
|
button:focus {
|
|
outline: 1px solid black;
|
|
}
|
|
|
|
button:hover {
|
|
background-color: #ececec;
|
|
color: black;
|
|
cursor: pointer;
|
|
}
|
|
|
|
button:disabled {
|
|
color: #3c3c3c;
|
|
background-color: #cecece;
|
|
cursor: not-allowed;
|
|
text-decoration: line-through;
|
|
}
|
|
|
|
button[name="cancel"]:hover {
|
|
background-color: salmon;
|
|
color: black;
|
|
}
|
|
|
|
button[name="start"]:hover {
|
|
background-color: #aceaac;
|
|
color: black;
|
|
}
|
|
|
|
action-button button:hover {
|
|
box-shadow: 0 0 10px 0 #666;
|
|
}
|
|
|
|
span.title {
|
|
display: inline;
|
|
}
|
|
|
|
action-button details {
|
|
flex-grow: 1;
|
|
}
|
|
|
|
action-button details[open] {
|
|
margin-top: 0;
|
|
}
|
|
|
|
action-button details summary div {
|
|
display: inline-flex;
|
|
}
|
|
|
|
action-button details summary div span:first-child {
|
|
flex-grow: 1;
|
|
}
|
|
|
|
.action-button-footer {
|
|
text-align: left;
|
|
font-size: smaller;
|
|
overflow: auto;
|
|
}
|
|
|
|
execution-button {
|
|
display: inline-block;
|
|
margin-right: .2em;
|
|
margin-left: .2em;
|
|
margin-top: .2em;
|
|
}
|
|
|
|
.action-status {
|
|
padding: .4em;
|
|
border-radius: .4em;
|
|
}
|
|
|
|
.action-failed {
|
|
background-color: #e78284;
|
|
}
|
|
|
|
.action-success {
|
|
background-color: #a6d189;
|
|
color: black;
|
|
}
|
|
|
|
.action-nonzero-exit {
|
|
background-color: #ef9f76;
|
|
color: black;
|
|
}
|
|
|
|
.action-timeout {
|
|
background-color: #99d1db;
|
|
color: black;
|
|
}
|
|
|
|
.action-blocked {
|
|
background-color: #ca9ee6;
|
|
color: black;
|
|
}
|
|
|
|
img.logo {
|
|
width: 1em;
|
|
height: 1em;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
main {
|
|
padding: 1em;
|
|
padding-top: 3.5em;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
summary {
|
|
cursor: pointer;
|
|
}
|
|
|
|
form div.wrapper {
|
|
background-color: white;
|
|
text-align: left;
|
|
}
|
|
|
|
label {
|
|
text-align: right;
|
|
display: inline-block;
|
|
}
|
|
|
|
header {
|
|
text-align: left;
|
|
display: flex;
|
|
flex-direction: row;
|
|
z-index: 3;
|
|
align-items: center;
|
|
padding-bottom: .2em;
|
|
padding-top: 1em;
|
|
position: fixed;
|
|
background-color: #dee3e7;
|
|
width: 100vw;
|
|
}
|
|
|
|
input {
|
|
font-family: sans-serif;
|
|
padding: 0.6em;
|
|
border: 1px solid #ccc;
|
|
border-radius: .4em;
|
|
}
|
|
|
|
input:invalid {
|
|
outline: 2px solid red;
|
|
}
|
|
|
|
input[type="checkbox"] {
|
|
justify-self: baseline;
|
|
}
|
|
|
|
form .wrapper span.icon {
|
|
display: inline-block;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
div.arguments {
|
|
display: grid;
|
|
grid-template-columns: max-content auto auto; /* We don't want the label or the description to wrap, and the input to take up the rest of the space */
|
|
grid-template-rows: auto;
|
|
grid-gap: 1em;
|
|
align-items: center;
|
|
|
|
}
|
|
|
|
p.argument-wrapper {
|
|
display: flex;
|
|
}
|
|
|
|
div.buttons {
|
|
display: flex;
|
|
justify-content: end;
|
|
gap: 1em;
|
|
}
|
|
|
|
input.invalid {
|
|
background-color: salmon;
|
|
}
|
|
|
|
#available-version {
|
|
background-color: #aceaac;
|
|
padding: 0.2em;
|
|
border-radius: 1em;
|
|
}
|
|
|
|
span.tag {
|
|
border-radius: 0.4em;
|
|
margin-top: .2em;
|
|
margin-right: .2em;
|
|
display: inline-block;
|
|
background-color: lightgray;
|
|
padding: .4em;
|
|
color: black;
|
|
}
|
|
|
|
span.annotation {
|
|
display: inline-block;
|
|
margin-top: .2em;
|
|
margin-right: .2em;
|
|
}
|
|
|
|
span.annotation-key {
|
|
padding: 0.4em;
|
|
border-radius: 0.4em 0 0 .4em;
|
|
display: inline-block;
|
|
background-color: lightgray;
|
|
color: #666;
|
|
}
|
|
|
|
span.annotation-value {
|
|
padding: 0.4em;
|
|
border-radius: 0 .4em .4em 0;
|
|
display: inline-block;
|
|
background-color: lightgray;
|
|
color: black;
|
|
}
|
|
|
|
.box-shadow {
|
|
box-shadow: 0 0 5px 0 #444;
|
|
background-color: #fff;
|
|
text-align: left;
|
|
}
|
|
|
|
.border-radius {
|
|
border-radius: .7em;
|
|
}
|
|
|
|
.box-shadow p {
|
|
padding: .6em;
|
|
margin: 0;
|
|
}
|
|
|
|
div.toolbar {
|
|
padding: .4em;
|
|
text-align: left;
|
|
background-color: #fff;
|
|
display: flex;
|
|
flex-direction: row;
|
|
}
|
|
|
|
div.display {
|
|
border: 1px solid #666;
|
|
box-shadow: 0 0 6px 0 #aaa;
|
|
border-radius: .7em;
|
|
display: flex;
|
|
align-items: center;
|
|
place-content: center center;
|
|
flex-direction: column;
|
|
font-size: small;
|
|
}
|
|
|
|
#execution-dialog-xterm {
|
|
flex-grow: 1;
|
|
}
|
|
|
|
.padded-content {
|
|
padding: 1em;
|
|
}
|
|
|
|
.padded-content-sides {
|
|
padding-left: 1em;
|
|
padding-right: 1em;
|
|
}
|
|
|
|
.ta-left {
|
|
text-align: left;
|
|
}
|
|
|
|
.xterm {
|
|
padding: 1em;
|
|
}
|
|
|
|
.flex-col {
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
label.input-with-icons {
|
|
border: 1px solid #ccc;
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
}
|
|
|
|
label.input-with-icons input {
|
|
border: 0;
|
|
padding: .6em;
|
|
flex-grow: 1;
|
|
}
|
|
|
|
label.input-with-icons svg {
|
|
font-size: 1.5em;
|
|
}
|
|
|
|
label.input-with-icons button {
|
|
border: 0;
|
|
background-color: transparent;
|
|
padding-top: 0;
|
|
padding-bottom: 0;
|
|
box-shadow: none;
|
|
transition: color .3s ease;
|
|
}
|
|
|
|
.sm-side-icons action-button button {
|
|
display: flex;
|
|
flex-direction: row;
|
|
align-items: center;
|
|
}
|
|
|
|
.sm-imageicons-fullwidth action-button button .icon img {
|
|
width: 100%;
|
|
}
|
|
|
|
label.input-with-icons button:disabled {
|
|
display: none;
|
|
}
|
|
|
|
#content-login hr {
|
|
border: 0;
|
|
border-top: 1px dashed #ccc;
|
|
}
|
|
|
|
#content-login button {
|
|
width: 100%;
|
|
grid-column: 1 / span 3;
|
|
margin-bottom: 1em;
|
|
}
|
|
|
|
#content-login button:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
#content-login ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
#content-login form {
|
|
width: auto;
|
|
place-self: center;
|
|
}
|
|
|
|
.oauth2-icon {
|
|
font-size: 1.8em;
|
|
vertical-align: middle;
|
|
}
|
|
|
|
@media screen and (width <= 600px) {
|
|
fieldset {
|
|
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
|
|
}
|
|
|
|
label {
|
|
text-align: left;
|
|
margin-bottom: .6em;
|
|
font-weight: bold;
|
|
}
|
|
|
|
p.argument-wrapper {
|
|
flex-direction: column;
|
|
}
|
|
|
|
div.arguments {
|
|
grid-template-columns: auto;
|
|
}
|
|
|
|
dialog {
|
|
border-left: 0;
|
|
border-right: 0;
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
width: 100vw;
|
|
max-width: 100vw;
|
|
}
|
|
|
|
.xterm {
|
|
margin-left: 0;
|
|
margin-right: 0;
|
|
width: fit-content;
|
|
}
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
body, header {
|
|
background-color: #333;
|
|
color: white;
|
|
}
|
|
|
|
.box-shadow {
|
|
box-shadow: 0 0 6px 0 #625c5c;
|
|
background-color: #222;
|
|
}
|
|
|
|
dialog {
|
|
background-color: #222;
|
|
color: white;
|
|
}
|
|
|
|
form div.wrapper {
|
|
background-color: #222;
|
|
}
|
|
|
|
label.input-with-icons {
|
|
border: 1px solid #666;
|
|
background-color: #383838;
|
|
}
|
|
|
|
input {
|
|
background-color: #383838;
|
|
color: white;
|
|
border: 1px solid #666;
|
|
}
|
|
|
|
button {
|
|
border: 1px solid #666;
|
|
background-color: #222;
|
|
color: white;
|
|
}
|
|
|
|
action-button button {
|
|
box-shadow: 0 0 6px 0 #444;
|
|
}
|
|
|
|
button:focus {
|
|
outline: 2px solid #72B7F4;
|
|
}
|
|
|
|
button:disabled {
|
|
background-color: black;
|
|
}
|
|
|
|
button:hover {
|
|
background-color: #444;
|
|
color: white;
|
|
}
|
|
|
|
|
|
footer {
|
|
color: #bbb;
|
|
}
|
|
|
|
a, a:visited {
|
|
color: #bbb;
|
|
}
|
|
|
|
a:focus {
|
|
background-color: #72B7F4;
|
|
color: black;
|
|
outline: 1px solid #72B7F4;
|
|
}
|
|
|
|
nav.sidebar {
|
|
background-color: #111;
|
|
color: white;
|
|
}
|
|
|
|
nav.sidebar ul li {
|
|
border-bottom: 1px solid #3e3e3e;
|
|
}
|
|
|
|
nav ul li a:hover {
|
|
background-color: #1b5988;
|
|
color: white;
|
|
}
|
|
|
|
nav ul li a.selected {
|
|
background-color: #0c3351;
|
|
color: white;
|
|
}
|
|
|
|
table,
|
|
td,
|
|
th {
|
|
border-top: 1px solid gray;
|
|
}
|
|
|
|
td,
|
|
tr {
|
|
background-color: #222;
|
|
color: white;
|
|
}
|
|
|
|
tr:hover td {
|
|
background-color: #1b5988;
|
|
}
|
|
|
|
div.toolbar {
|
|
background-color: black;
|
|
}
|
|
|
|
div.display {
|
|
box-shadow: 0 0 6px 0 #444;
|
|
}
|
|
}
|