This commit is contained in:
2025-01-04 00:34:03 +01:00
parent 41829408dc
commit 0ca14bbc19
18111 changed files with 1871397 additions and 0 deletions

View File

@@ -0,0 +1,87 @@
/* ---------------------------------------- */
/* Setup Authentication Views */
/* ---------------------------------------- */
body.auth {
gap: 1rem;
justify-content: space-evenly;
align-items: center;
// Main Header
#main-header {
height: var(--header-size);
flex: none;
justify-content: center;
background: var(--main-logo) 50% 50% no-repeat;
background-size: var(--header-size) var(--header-size);
width: 100%;
h1 {
flex: none;
margin: 0;
font-size: var(--header-font-size);
text-align: center;
filter: drop-shadow(0 0 4px black);
}
}
// Authentication
.application.framed {
position: relative;
width: 100%;
max-width: var(--max-width);
padding: var(--form-padding);
h2 {
text-align: center;
margin: 0;
}
}
// Footer
#watermark {
flex: none;
#software-version {
flex: none;
margin: 0;
font-family: var(--font-h2);
font-size: var(--font-size-24);
font-weight: bold;
color: var(--color-light-4);
text-align: center;
filter: drop-shadow(0 0 4px black);
}
}
}
/* ---------------------------------------- */
/* EULA Application */
/* ---------------------------------------- */
#eula {
max-height: 90vh;
z-index: calc(var(--z-index-notification) - 1);
#eula-content {
h1, h2 {
text-align: center;
}
.terms li {
margin: 1rem 0;
}
.copyright {
margin-top: 2rem;
font-size: var(--font-size-14);
color: var(--color-light-5);
}
}
#eula-form {
margin-top: 2rem;
h2 {
margin: 0;
}
button#sign {
flex: 2;
}
}
}

View File

@@ -0,0 +1,63 @@
/* ---------------------------------------- */
/* Join Game View */
/* ---------------------------------------- */
// Note that this view also uses body.auth
body.join {
--max-width: 1040px;
// Background.
#main-background { background-position: center; }
// Outer form
#join-game {
width: 100%;
max-width: var(--max-width);
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: min-content min-content 1fr;
gap: 1rem;
}
#join-game-details {
.form-group > label {
flex: 2;
}
.form-fields > span {
flex: none;
}
}
#join-game-world {
grid-row: 1 / span 3;
grid-column: 2;
}
#world-description {
max-height: 500px;
}
}
// Minimal Join Theme
body.join.join-theme-minimal {
--max-width: 460px;
#main-header {
background: none;
flex: 1;
}
#join-game {
flex: 2;
display: flex;
flex-direction: column;
h2 {
display: none;
}
#join-game-setup {
p { display: none; }
}
}
#watermark { display: none; }
}

View File

@@ -0,0 +1,100 @@
/* ---------------------------------------- */
/* User Management View */
/* ---------------------------------------- */
// Note that this view also uses body.auth
body.players {
--max-width: 720px;
// User Management App
#manage-players {
width: 100%;
max-width: var(--max-width);
header.player {
margin-bottom: -0.5rem;
}
#player-list {
display: flex;
max-height: calc(100vh - 400px);
overflow-y: auto;
flex-direction: column;
gap: 0.5rem;
margin: -0.75rem;
padding: 0.75rem;
li {
margin: 0;
}
}
.show {
flex: 0 0 32px;
text-align: center;
> i {
margin: 0;
}
}
.controls {
flex: 0 0 24px;
justify-content: flex-end;
text-align: center;
}
}
// Permissions Configuration
#permissions-config {
header {
text-align: center;
font-weight: bold;
}
.index {
flex: 0 0 200px;
text-align: left;
}
.permissions-list { padding: 0; }
.permission { border-bottom: 2px ridge var(--color-cool-3); }
.form-fields { justify-content: space-around; }
// TODO: Only needed until we can unify styles between in-game permissions dialog and user management permissions
// dialog.
button {
height: calc(1.25 * var(--input-height));
}
}
/* ----------------------------------------- */
/* Permissions Config */
/* ----------------------------------------- */
#permissions-config {
header.table-header {
background: var(--color-cool-4);
padding: 0.5rem;
color: var(--color-text-light-highlight);
border: 1px solid var(--color-cool-4);
text-align: center;
font-weight: bold;
}
ul.permissions-list {
list-style: none;
margin: 0;
padding: 0;
max-height: 600px;
overflow: hidden auto;
}
li.permission {
padding: 0.25rem 0.5rem;
border-bottom: 1px solid var(--color-border-dark-4);
.form-fields {
justify-content: space-around;
}
}
.index {
flex: 0 0 200px;
text-align: left;
font-weight: bold;
}
}
}

View File

@@ -0,0 +1,848 @@
/* ---------------------------------------- */
/* Setup Layout */
/* ---------------------------------------- */
body.setup {
--max-width: 1200px;
--sidebarWidth: 480px;
padding: 1rem 0;
gap: 2rem;
}
#setup {
flex: 1;
width: 100%;
display: flex;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
gap: 2rem;
padding: 0 2rem;
overflow: hidden;
}
/* ---------------------------------------- */
/* Setup Menu */
/* ---------------------------------------- */
#setup-menu {
--button-size: 40px;
--pip-size: 16px;
position: fixed;
top: 2rem;
right: 2rem;
width: 320px;
#setup-menu-buttons {
width: 100%;
justify-content: flex-end;
padding: 0.5rem;
gap: 0.5rem;
}
button {
position: relative;
flex: 0 0 var(--button-size);
height: var(--button-size);
font-size: var(--font-size-20);
.pip {
position: absolute;
top: -4px;
right: -4px;
width: var(--pip-size);
height: var(--pip-size);
font-size: var(--font-size-10);
line-height: var(--pip-size);
text-align: center;
color: black;
border: 1px solid black;
border-radius: calc(var(--pip-size) / 2);
&.warning {
background: var(--color-warm-1);
}
&.error {
background: #ec0f0f;
}
}
}
}
/* ---------------------------------------- */
/* Setup Sidebar */
/* ---------------------------------------- */
#setup-sidebar {
display: flex;
flex-direction: column;
gap: 2rem;
flex: 0 0 var(--sidebarWidth);
container: setup-sidebar / size;
#setup-sidebar-news,
#setup-sidebar-featured {
position: relative;
padding: var(--form-padding);
gap: 1rem;
border-radius: 8px;
h2 {
margin: 0;
}
}
#setup-sidebar-news {
flex: 1;
.container {
position: relative;
flex: 1;
}
#news-articles {
gap: 1rem;
position: absolute;
width: 100%;
height: 100%;
}
}
#setup-sidebar-featured {
height: 320px;
background-size: cover;
justify-content: space-between;
}
.news {
position: relative;
flex: 1;
min-height: 60px;
justify-content: center;
border: 1px solid var(--color-cool-4);
border-radius: 4px;
color: inherit;
text-decoration: none;
> img {
position: absolute;
width: 100%;
height: 100%;
object-fit: cover;
filter: brightness(0.75);
transition: 0.5s;
}
> h3 {
margin: 1rem;
text-align: center;
text-shadow: none;
filter: drop-shadow(0 0 4px black);
}
.caption {
background: var(--color-cool-5-75);
backdrop-filter: blur(4px);
margin: 1rem;
padding: 1rem;
border: 1px solid #000;
border-radius: 3px;
font-size: var(--font-size-12);
color: var(--color-light-2);
text-align: center;
}
&:hover {
border-color: var(--color-warm-1);
box-shadow: 0 0 4px var(--color-warm-1);
> img {
filter: none;
}
}
}
}
@container setup-sidebar (max-height: 850px) {
#setup-sidebar #setup-sidebar-featured {
height: 200px;
.news .caption {
display: none;
}
}
}
@container setup-sidebar (max-height: 580px) {
#setup-sidebar #setup-sidebar-featured {
height: 100px;
> h2 { display: none; }
}
}
/* ---------------------------------------- */
/* Setup Packages */
/* ---------------------------------------- */
#setup-packages {
flex: 1;
padding: 0;
gap: 0;
nav.tabs {
padding: var(--form-padding);
padding-bottom: 0;
.item {
font-size: var(--font-size-24);
&.disabled { color: var(--color-light-5); }
}
}
section.tab {
flex: 1;
flex-direction: column;
padding: var(--form-padding);
gap: 1rem;
overflow: hidden;
&.active {
display: flex;
}
}
header.controls {
--control-height: 40px;
--view-mode-height: 32px;
gap: 1rem;
.filter {
flex: 2 1 380px;
input {
height: var(--control-height);
}
}
button {
height: var(--control-height);
flex: 1 1 120px;
}
button#moduleCreate {
flex: 0 0 var(--control-height);
}
.view-modes {
flex: none;
display: flex;
align-items: center;
gap: 0.5rem;
button {
height: var(--view-mode-height);
width: var(--view-mode-height);
border: none;
}
}
}
/** No filter results found */
.no-results {
font-style: italic;
.button.search-packages {
display: inline-block;
line-height: 32px;
margin-left: 1rem;
}
}
/** Locked */
.locked {
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
h3 { width: 50%; }
i { font-size: var(--font-size-28); }
}
/** Single Package */
.package {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
gap: 1rem;
border: 1px solid var(--color-cool-4);
border-radius: 3px;
// Status Icons
.status-icons {
position: absolute;
top: -0.25rem;
right: -0.25rem;
display: flex;
gap: 0.5rem;
font-size: var(--font-size-14);
color: var(--color-light-2);
text-shadow: 0 0 4px black;
}
// Package Title
.package-title {
width: 100%;
margin: 1rem 0;
padding: 1rem;
font-size: var(--font-size-20);
text-align: center;
}
// Thumbnail
img.thumbnail {
position: absolute;
width: 100%;
height: 100%;
z-index: -1;
object-fit: cover;
filter: brightness(0.25);
transition: 0.5s;
}
/** Package Tags */
.tags {
display: flex;
align-items: center;
flex-wrap: wrap-reverse;
gap: 0.25rem;
position: absolute;
bottom: 0.5rem;
left: 0.5rem;
&.left {
max-width: 50%;
}
&.right {
max-width: 50%;
left: auto;
right: 0.5rem;
justify-content: flex-end;
}
// Play button
.play {
cursor: pointer;
}
}
// Package Hover
&:hover, &.loading {
border-color: var(--color-warm-1);
box-shadow: 0 0 4px var(--color-warm-2);
.package-title::after {
border-color: var(--color-light-1);
}
img.thumbnail {
filter: none;
}
.tags .tag {
opacity: 1;
}
}
}
/** Gallery View */
.package-list.gallery {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
grid-auto-rows: max-content;
grid-gap: 1rem;
.package {
height: 200px;
.package-title {
background: linear-gradient(transparent 0%, rgb(0 0 0 / 50%) 25%, rgb(0 0 0 / 50%) 75%, transparent 100%);
&::after {
display: block;
content: "";
width: 80%;
margin: 0.5rem auto 0;
border-top: 2px solid var(--color-light-4);
-webkit-mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
}
}
}
}
/** Tile View */
.package-list.tiles {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
grid-auto-rows: max-content;
grid-gap: 1rem;
.package {
height: 68px;
background: var(--color-cool-5);
.package-title {
margin: 0;
padding: 0.5rem;
text-align: left;
font-size: var(--font-size-16);
}
.tags.left {
max-width: 25%;
}
.tags.right {
flex-wrap: nowrap;
overflow: hidden;
max-width: 75%;
}
}
}
/** Details View */
.package-list.details {
display: flex;
flex-direction: column;
gap: 1rem;
.package {
flex: 0 0 180px;
height: 180px;
display: flex;
flex-direction: row;
gap: 0;
.package-thumbnail {
position: relative;
display: flex;
flex-direction: column;
align-items: center;
flex: 0 0 320px;
height: 100%;
border-right: 1px solid var(--color-cool-4);
}
.package-content {
flex: 1;
gap: 0.5rem;
height: 100%;
font-size: var(--font-size-14);
}
.package-description {
width: 100%;
flex: 1;
padding: 0.5rem 1rem;
}
.package-footer {
position: relative;
flex: 0 0 30px;
}
}
}
// All View Modes
.package-list {
height: 100%;
min-height: 400px;
list-style: none;
margin: 0;
padding: 0.25rem 0 1rem; // allow for lock icon overflow
&.empty {
display: none;
}
}
// Featured Play Button
.package-list.gallery,
.package-list.details {
.play {
position: absolute;
top: 100px;
visibility: hidden;
font-size: var(--font-size-48);
color: var(--color-light-5);
filter: drop-shadow(0 0 4px black);
transition: 0.5s;
&:hover {
color: var(--color-light-1);
text-shadow: 0 0 8px var(--color-warm-1);
}
}
.package:hover .play {
visibility: visible;
}
.package.loading .play {
visibility: visible;
color: var(--color-light-1);
text-shadow: 0 0 8px var(--color-warm-1);
}
}
// Progress Bar
#progress {
--color-progress-background: #5D49FF;
--color-progress-border: #B2C3FF;
display: flex;
flex-direction: column;
margin: 1rem;
gap: 1rem;
&:empty {
display: none;
}
.progress-bar {
flex: 0 0 16px;
width: 100%;
background: black;
border: 1px solid var(--color-cool-3);
border-radius: 4px;
}
.bar {
position: relative;
height: 10px;
margin: 2px;
display: block;
background: var(--color-progress-background);
border: 1px solid var(--color-progress-border);
border-radius: 2px;
max-width: calc(100% - 4px);
transition: 0.25s;
line-height: 10px;
text-align: right;
}
.pct {
display: block;
position: absolute;
top: -3px;
left: -3px;
padding: 1px 5px;
color: var(--color-light-1);
text-shadow: 1px 1px 4px black;
background: var(--color-cool-5-75);
border: 1px solid black;
border-radius: 2px;
white-space: nowrap;
}
}
a.launch-tour {
color: var(--color-warm-1);
text-decoration: underline;
&:hover {
cursor: pointer;
}
}
}
/** Tags */
.tags .tag {
flex: none;
height: 24px;
padding: 0 0.5rem;
display: flex;
align-items: center;
gap: 0.25rem;
background: var(--color-cool-4);
border: 1px solid var(--color-cool-3);
border-radius: 2px;
font-size: var(--font-size-12);
color: var(--color-light-2);
opacity: 0.75;
&.error {
color: var(--color-light-2);
background: var(--color-level-error-bg);
border-color: var(--color-level-error-border);
}
&.warning {
color: var(--color-light-2);
background: var(--color-level-warning-bg);
border-color: var(--color-level-warning-border);
}
&.success {
color: var(--color-light-2);
background: var(--color-level-success-bg);
border-color: var(--color-level-success-border);
}
}
/* ---------------------------------------- */
/* Setup Package Warnings */
/* ---------------------------------------- */
#setup-warnings {
#setup-warnings-packages {
gap: 2rem;
section.flexcol {
gap: 2rem;
}
h2.divider {
margin-bottom: 0;
}
}
.package {
gap: 1rem;
header {
justify-content: flex-end;
gap: 1rem;
h4 {
flex: 3;
font-size: var(--font-size-20);
margin: 0;
}
.reference {
flex: 1;
}
button {
flex: none;
padding: .25rem .5rem;
}
}
code {
max-height: 250px;
overflow: auto;
white-space: pre;
border: 2px solid;
&.warnings {
border-color: var(--color-level-warning);
}
&.errors {
border-color: var(--color-level-error);
}
}
.control {
flex: none;
}
}
}
/* ---------------------------------------- */
/* Application Configuration */
/* ---------------------------------------- */
#setup-configuration {
.form-group.ssl {
align-items: flex-start;
}
.form-group.highlight {
label {
&::after {
font-family: var(--font-awesome);
font-weight: 900;
margin-left: 0.5rem;
content: "\f071";
color: var(--color-level-warning);
}
}
p.hint {
color: var(--color-level-warning);
}
}
}
/* ---------------------------------------- */
/* Miscellaneous */
/* ---------------------------------------- */
#confirm-code {
margin: 1rem 0;
span {
display: block;
font-size: var(--font-size-24);
text-align: center;
}
}
#delete-confirm {
text-align: center;
}
// Updated Table
.updated-packages {
margin: 0;
.header > div {
line-height: 1.5;
font-weight: bold;
border-bottom: 1px solid var(--color-cool-4);
font-size: 1.1em;
}
:is(.header, .result) > div {
padding: .5rem 1rem;
}
.package { flex: 0 0 200px; }
.action {
flex: 0 0 110px;
font-weight: bold;
}
.description { overflow-wrap: anywhere; }
.warning {
color: yellow;
> i::before { content: "\f071"; }
}
.error {
color: red;
> i::before { content: "\f06a"; }
}
.success {
color: limegreen;
> i::before { content: "\f05a"; }
}
}
// Dependencies Dialog
.dependencies-info {
align-items: unset;
> .automatic {
border-right: 2px var(--color-cool-4) solid;
padding-right: 0.5rem;
}
> .manual {
padding-left: 0.5rem;
}
.hint {
line-height: 1rem;
color: var(--color-light-5);
}
}
/* ---------------------------------------- */
/* Backups */
/* ---------------------------------------- */
#backup-manager {
.categories footer {
margin-top: auto;
display: flex;
justify-content: space-between;
}
}
.backup-list {
form { gap: 1rem; }
}
#create-backup {
font-size: var(--font-size-14);
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
> input { top: -8px; }
}
.snapshot-dialog {
.disk-space {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
}
/* ---------------------------------------- */
/* Compatibility Checker */
/* ---------------------------------------- */
#compatibility-checker aside {
height: 100%;
flex: 0 0 220px;
padding-right: 1rem;
border-right: 1px solid var(--color-cool-4);
nav.categories {
height: unset;
flex: unset;
padding-right: unset;
border-right: unset;
flex: 1;
}
.summary {
flex: none;
list-style: none;
padding-left: 0;
font-size: var(--font-size-14);
> li {
&.understated { opacity: .75; }
> i { margin-right: .375rem; }
&.success > i { color: var(--color-level-success); }
&.warning > i { color: var(--color-level-warning); }
&.error > i { color: var(--color-level-error); }
&.neutral > i { color: var(--color-cool-3); }
}
}
}
/* ---------------------------------------- */
/* Software Update View */
/* ---------------------------------------- */
body.update {
--max-width: 960px;
#update-progress {
--color-progress-background: #5D49FF;
--color-progress-border: #B2C3FF;
display: none;
flex: 0 0 16px;
width: 100%;
background: black;
border: 1px solid var(--color-cool-3);
border-radius: 4px;
.bar {
position: relative;
height: 10px;
margin: 2px;
display: block;
background: var(--color-progress-background);
border: 1px solid var(--color-progress-border);
border-radius: 2px;
max-width: calc(100% - 4px);
transition: 0.25s;
line-height: 10px;
text-align: right;
}
.pct {
display: block;
position: absolute;
top: -3px;
right: -3px;
padding: 1px 5px;
color: var(--color-light-1);
text-shadow: 1px 1px 4px black;
background: var(--color-cool-5-75);
border: 1px solid black;
border-radius: 2px;
}
}
}
#update-notes {
max-height: 80vh;
article {
padding-right: 0.75rem;
margin-right: -0.75rem;
overflow: hidden auto;
}
footer {
margin-top: 1rem;
border-top: 1px solid var(--color-cool-4);
.buttons { gap: .5rem; }
}
button {
width: 100%;
height: 2.5rem;
}
}
#module-create {
.tabs {
margin: 0 -1.5rem;
padding-bottom: 1rem;
border-bottom: 2px ridge var(--color-cool-4);
}
}