You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

659 lines
12 KiB
SCSS

$accent-400: #f8f5ff;
$accent-500: #d8ccfa;
$job-running-400: #dfd;
$job-running-500: #bfb;
*,
*::before,
*::after {
color: inherit;
font-family: inherit;
margin: 0;
box-sizing: border-box;
}
html,
body {
height: 100%;
min-height: 100%;
}
img {
display: block;
}
//
// Animations
//
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
//
// Typography
//
$base-font-size: 18px;
$heading-scale: 1.33;
@function pow($number, $exponent) {
$value: 1;
@if $exponent > 0 {
@for $i from 1 through $exponent {
$value: $value * $number;
}
}
@return $value;
}
@for $i from 1 through 5 {
h#{$i} {
$factor: pow($heading-scale, 5 - $i);
font-size: $base-font-size * $factor;
font-family: 'Lato', sans-serif;
font-weight: 300;
line-height: 1;
}
}
pre,
code {
font-family: 'JetBrains Mono', monospace;
font-size: 14px;
line-height: 1;
}
pre {
background: #f0f0f0;
line-height: 1.5;
padding: 0.5rem;
border-radius: 0.5rem;
width: 100%;
& > code {
padding: 0;
}
}
code {
background: #f0f0f0;
padding: 0 0.25rem;
border-radius: 0.25rem;
}
.material-symbols-outlined {
font-weight: normal;
font-style: normal;
display: inline-block;
line-height: 1;
text-transform: none;
letter-spacing: normal;
word-wrap: normal;
white-space: nowrap;
direction: ltr;
font-family: 'Material Symbols Outlined Variable';
font-size: 24px; /* Preferred icon size */
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}
button,
.button {
border: none;
text-decoration: none;
display: inline-block;
color: darken($accent-400, 80%);
background-color: darken($accent-400, 5%);
font-size: 18px;
font-weight: 500;
padding: 0.5rem 1rem 0.5rem 0.65rem;
border-radius: 2rem;
cursor: pointer;
transition: background-color 150ms ease-in-out;
// border: 1px solid #e0e0e0;
display: inline-grid;
place-items: center;
grid-auto-flow: column;
gap: 0.35rem;
.material-symbols-outlined {
font-size: 22px;
}
&.loading {
.material-symbols-outlined {
animation: spin 1s linear infinite;
}
}
&:hover {
background-color: darken($accent-400, 10%);
}
&.flat {
background-color: transparent;
color: #333;
border: none;
&:hover {
background-color: #00000010;
}
}
}
input[type='text'],
select,
textarea {
width: auto;
&:not(textarea) {
height: 2rem;
}
font-size: 18px;
font-weight: 400;
background: #fff;
border: none;
border: 1px solid #ddd;
border-radius: 1rem;
padding: 0.25rem 0.75rem;
display: flex;
align-items: center;
resize: vertical;
&:disabled {
opacity: 0.5;
}
&::placeholder {
color: #999;
}
}
textarea {
min-height: 2rem;
// padding: 7px 0.25rem;
padding: 0.5rem 0.75rem;
}
form {
width: 100%;
display: grid;
padding: 2rem;
border-radius: 1rem;
background: #fff;
border: 1px solid #ddd;
grid-template-columns: minmax(7rem, auto) 1fr;
gap: 0.5rem;
align-items: start;
.row {
grid-column: span 2;
display: flex;
flex-direction: row;
&.right {
justify-content: flex-end;
}
}
.compound {
display: flex;
flex-direction: row;
gap: 0.5rem;
& > .fill {
flex-grow: 1;
}
}
input[type='text'],
textarea {
font-family: 'JetBrains Mono', monospace;
font-size: 15px;
font-weight: 400;
}
label {
display: flex;
align-items: center;
height: 2rem;
font-weight: 700;
}
}
.object {
display: grid;
grid-template-columns: auto 1fr;
border: 1px solid #ddd;
width: 100%;
& > .key {
font-weight: 700;
display: flex;
align-items: center;
min-height: 2rem;
padding: 0 1rem 0 0.25rem;
}
& > .value {
min-height: 2rem;
padding: 0.25rem;
display: flex;
align-items: center;
border-left: 1px solid #ddd;
word-break: break-word;
}
& > .key,
& > .value {
border-top: 1px solid #ddd;
}
& > .key:nth-child(1) {
border-top: none;
}
& > .value:nth-child(2) {
border-top: none;
}
}
.array {
display: grid;
border: 1px solid #ddd;
width: 100%;
& > .item {
display: flex;
align-items: center;
min-height: 2rem;
padding: 0.25rem;
}
& > .item {
border-top: 1px solid #ddd;
}
& > .item:nth-child(1) {
border-top: none;
}
}
.compound-value {
border-radius: 4px;
&.borderless {
border: none;
}
}
.deploys {
width: 100%;
display: flex;
flex-direction: column;
gap: 1rem;
}
.deploy {
width: 100%;
background: $accent-400;
padding: 1rem 1rem 2rem;
border-radius: 1rem;
display: grid;
grid-template-columns: 1fr auto;
grid-template-rows: auto auto;
align-items: center;
grid-template-areas:
'title shield'
'description .';
gap: 0.5rem;
& > .title {
grid-area: title;
font-size: 24px;
font-weight: 600;
color: #666;
a {
text-decoration: none;
color: inherit;
&:hover {
color: #444;
text-decoration: underline;
}
}
}
& > .shield {
grid-area: shield;
background: darken($accent-400, 4%);
font-size: 16px;
display: grid;
place-content: center;
padding: 0.125rem 0.25rem;
border-radius: 0.25rem;
}
& > .description {
grid-area: description;
font-family: monospace;
font-size: 15px;
a {
text-decoration: none;
color: inherit;
&:hover {
text-decoration: underline;
}
}
}
// border: 1px solid #ddd;
// padding: 1rem;
// border-radius: 1rem;
}
.card {
width: 100%;
border: 1px solid #ddd;
padding: 1rem;
border-radius: 1rem;
display: grid;
}
//
// Structure
//
body {
font-family: 'Lato', sans-serif;
font-size: 18px;
line-height: 1.25;
color: #333;
background: #fff;
display: grid;
grid-template-columns: auto 1fr;
grid-template-areas: 'sidebar main';
.sidebar {
grid-area: sidebar;
min-width: 300px;
width: 15vw;
background: $accent-400;
color: #333;
display: flex;
flex-direction: column;
align-items: start;
z-index: 1;
padding: 1rem;
// box-shadow: 0 0 1rem 0 #0002, 0 0 0.25rem 0 #0002;
.header {
padding: 1rem;
font-weight: 300;
font-size: 48px;
}
.menu-button {
display: grid;
place-content: center;
aspect-ratio: 1;
.material-symbols-outlined {
font-size: 20px;
}
}
nav {
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
padding-top: 1rem;
.nav-item {
display: flex;
flex-direction: column;
align-items: flex-start;
.label {
color: inherit;
text-decoration: none;
display: grid;
grid-auto-flow: column;
align-items: center;
gap: 0.5rem;
cursor: pointer;
transition: background-color 150ms ease-in-out;
font-size: 16px;
padding: 0.5rem 0.75rem;
border-radius: 100px;
&:hover {
background-color: $accent-500;
}
.material-symbols-outlined {
font-size: 18px;
}
}
.children {
flex-direction: column;
padding-left: 1.5rem;
display: flex;
flex-direction: column;
align-items: flex-start;
.nav-item {
padding: 5px;
position: relative;
}
}
&.group {
& > .label {
font-size: 18px;
font-weight: 400;
}
}
}
}
}
& > .scroll-container {
grid-area: main;
display: grid;
overflow-y: auto;
.phc-logo {
position: absolute;
top: 1rem;
left: 1rem;
font-size: 32px;
font-weight: 500;
line-height: 1;
color: #666;
-webkit-text-stroke: 4px #fff;
paint-order: stroke fill;
}
main {
position: relative;
overflow-x: auto;
padding: 4rem 1rem 2rem;
display: grid;
grid-template-columns: minmax(auto, 80ch);
justify-content: center;
align-content: start;
gap: 2rem;
justify-self: center;
width: 100%;
// max-width: 80ch;
//
// Components
//
& > h1 {
// & > .title {
// }
& > .kind {
padding-bottom: 0.25rem;
font-size: 20px;
font-weight: 400;
color: #666;
}
}
.buttons {
display: flex;
flex-wrap: wrap;
gap: 0.5rem;
}
.list {
display: flex;
flex-direction: column;
width: 100%;
gap: 1rem;
}
.job {
padding: 1rem;
border-radius: 1rem;
width: 100%;
background: $accent-400;
display: grid;
grid-template-columns: 1fr;
grid-row: auto auto;
gap: 0.5rem;
cursor: pointer;
& > .name {
grid-column: span 3;
font-size: 18px;
font-weight: 600;
}
& > .footer {
display: flex;
justify-content: space-between;
align-items: center;
}
& .submitted-at {
font-size: 15px;
}
& .delta {
font-size: 15px;
}
&:hover {
background: $accent-500;
}
&.running {
background: $job-running-400;
&:hover {
background: $job-running-500;
}
}
}
}
}
}