SMP: Minecraft-style join window with live status; allow beta tunnel origin for dev HMR

This commit is contained in:
Martin Dvořák 2026-09-24 09:20:06 +00:00
commit d540a6a873
7 changed files with 318 additions and 6 deletions

View file

@ -619,6 +619,152 @@ a.win-icon {
background: #ffffff;
}
/* ============================================================
MINECRAFT SMP JOIN MENU (opened from the SMP service shortcut)
============================================================ */
.smp {
display: flex;
flex-direction: column;
gap: 14px;
font-family: "Monocraft", "JetBrains Mono", monospace;
color: #e6e6e6;
background-color: #313131;
background-image:
linear-gradient(rgba(255, 255, 255, 0.045) 1px, transparent 1px),
linear-gradient(90deg, rgba(255, 255, 255, 0.045) 1px, transparent 1px);
background-size: 16px 16px;
}
.smp-header {
text-align: center;
}
.smp-title {
margin: 0;
font-size: 1.4rem;
color: #ffffff;
text-shadow: 2px 2px 0 #1d1d1d;
}
.smp-subtitle {
margin: 6px 0 0;
font-size: 0.8rem;
color: #a8a8a8;
}
.smp-server {
display: flex;
align-items: center;
gap: 12px;
padding: 8px 10px;
background: rgba(0, 0, 0, 0.4);
border: 2px solid #000000;
box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.08);
}
.smp-server-offline {
opacity: 0.85;
}
.smp-server-icon {
flex-shrink: 0;
width: 48px;
height: 48px;
display: grid;
place-items: center;
overflow: hidden;
background: #111111;
border: 2px solid #000000;
image-rendering: pixelated;
}
.smp-server-icon img {
width: 100%;
height: 100%;
image-rendering: pixelated;
}
.smp-server-icon-fallback {
font-size: 1.6rem;
}
.smp-server-info {
flex: 1;
min-width: 0;
}
.smp-server-name {
color: #ffffff;
font-weight: 700;
text-shadow: 2px 2px 0 #1d1d1d;
}
.smp-server-motd {
margin-top: 3px;
font-size: 0.76rem;
color: #a8a8a8;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.smp-server-addr {
margin-top: 4px;
font-size: 0.7rem;
color: #7a7a7a;
}
.smp-server-meta {
flex-shrink: 0;
text-align: right;
}
.smp-server-players {
font-size: 0.85rem;
color: #ffffff;
}
.smp-ping {
display: flex;
align-items: flex-end;
justify-content: flex-end;
gap: 2px;
height: 16px;
margin-top: 5px;
}
.smp-ping span {
width: 3px;
background: #4a4a4a;
}
.smp-ping-on span {
background: #4ade80;
}
.smp-actions {
display: flex;
gap: 10px;
}
.smp .smp-btn {
flex: 1;
display: inline-flex;
align-items: center;
justify-content: center;
padding: 10px 14px;
font-family: inherit;
font-size: 0.82rem;
color: #ffffff;
text-decoration: none;
text-shadow: 2px 2px 0 rgba(0, 0, 0, 0.55);
background: #6c6c6c;
border: 2px solid;
border-color: #a6a6a6 #2e2e2e #2e2e2e #a6a6a6;
cursor: pointer;
}
.smp .smp-btn:hover {
background: #7d7d7d;
}
.smp .smp-btn:active {
border-color: #2e2e2e #a6a6a6 #a6a6a6 #2e2e2e;
}
.smp .smp-btn-green {
background: #3f8f3f;
border-color: #74d174 #1f4f1f #1f4f1f #74d174;
}
.smp .smp-btn-green:hover {
background: #4aa34a;
}
.smp-hint {
margin: 0;
font-size: 0.7rem;
line-height: 1.5;
text-align: center;
color: #9a9a9a;
}
.app-surface .project-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));