Skip to content
This repository was archived by the owner on Jul 28, 2026. It is now read-only.

Commit b8f295f

Browse files
authored
Merge pull request #6 from ZeroHost-Code/beta
Beta
2 parents 7159c90 + 1d9e134 commit b8f295f

13 files changed

Lines changed: 1014 additions & 105 deletions

File tree

README.md

Lines changed: 544 additions & 0 deletions
Large diffs are not rendered by default.

config/db.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ dotenv.config({ path: resolve(__dirname, '..', '.env') });
88

99
const pool = mariadb.createPool({
1010
host: process.env.DB_HOST,
11-
port: parseInt(process.env.DB_PORT || '3306'),
11+
port: parseInt(process.env.DB_PORT || '3306', 10),
1212
user: process.env.DB_USER,
1313
password: process.env.DB_PASSWORD,
1414
database: process.env.DB_NAME,
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,5 @@ export const FEATURE_LIMITS = {
1616
};
1717

1818
export const DEPLOY_LOCATIONS = [1];
19+
20+
export const NEST_IDS = [5, 6, 7];

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"name": "zerohost-dashboard",
3-
"version": "0.9.7",
3+
"version": "0.9.8",
44
"private": true,
55
"type": "module",
66
"scripts": {
7-
"start": "npm i && node server.js",
8-
"dev": "npm i && node --watch server.js"
7+
"start": "node server.js",
8+
"dev": "node --watch server.js"
99
},
1010
"dependencies": {
1111
"argon2": "^0.41.1",

public/css/style.css

Lines changed: 155 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,12 @@ cap-widget {
360360
box-shadow: 0 4px 20px rgba(239, 68, 68, 0.3);
361361
}
362362

363+
.btn-danger:hover {
364+
color: #fff;
365+
transform: translateY(-2px);
366+
box-shadow: 0 8px 32px rgba(239, 68, 68, 0.45);
367+
}
368+
363369
.btn-warning {
364370
background: linear-gradient(135deg, #f59e0b, #d97706);
365371
color: #fff;
@@ -461,6 +467,96 @@ cap-widget {
461467
transition: transform var(--transition);
462468
}
463469

470+
.sidebar.resizing {
471+
transition: none;
472+
}
473+
474+
.sidebar-resizer {
475+
position: absolute;
476+
top: 0;
477+
right: 0;
478+
bottom: 0;
479+
width: 5px;
480+
cursor: col-resize;
481+
z-index: 10;
482+
background: transparent;
483+
transition: background 0.15s;
484+
}
485+
486+
.sidebar-resizer:hover,
487+
.sidebar.resizing .sidebar-resizer {
488+
background: var(--accent-1);
489+
}
490+
491+
.sidebar.collapsed {
492+
width: 60px;
493+
}
494+
495+
.sidebar.collapsed .sidebar-resizer {
496+
display: none;
497+
}
498+
499+
.sidebar.collapsed .sidebar-logo {
500+
justify-content: center;
501+
}
502+
503+
.sidebar.collapsed .sidebar-logo-text {
504+
display: none;
505+
}
506+
507+
.sidebar.collapsed .sidebar-header {
508+
padding: 16px 12px;
509+
justify-content: center;
510+
}
511+
512+
.sidebar.collapsed .sidebar-nav {
513+
padding: 12px 8px;
514+
}
515+
516+
.sidebar.collapsed .nav-section-label {
517+
display: none;
518+
}
519+
520+
.sidebar.collapsed .nav-item {
521+
font-size: 0;
522+
justify-content: center;
523+
padding: 10px 0;
524+
gap: 0;
525+
}
526+
527+
.sidebar.collapsed .nav-item svg {
528+
font-size: 1rem;
529+
width: 20px;
530+
height: 20px;
531+
}
532+
533+
.sidebar.collapsed .sidebar-footer {
534+
border-top: none;
535+
padding: 0;
536+
}
537+
538+
.sidebar.collapsed #logout-btn {
539+
display: none !important;
540+
}
541+
542+
.sidebar.collapsed .user-info {
543+
justify-content: center;
544+
padding: 4px 0;
545+
}
546+
547+
.sidebar.collapsed .user-name,
548+
.sidebar.collapsed .user-email {
549+
display: none;
550+
}
551+
552+
.sidebar.collapsed .sidebar-footer > div:not(.user-info) {
553+
display: none;
554+
}
555+
556+
.sidebar.collapsed ~ .main-content {
557+
margin-left: 60px;
558+
}
559+
464560
.main-content {
465561
position: relative;
466562
z-index: 1;
@@ -771,6 +867,11 @@ cap-widget {
771867
color: var(--accent-orange);
772868
}
773869

870+
.status-offline {
871+
background: rgba(107, 114, 128, 0.12);
872+
color: #9ca3af;
873+
}
874+
774875
.server-card-details {
775876
display: flex;
776877
flex-wrap: wrap;
@@ -1071,6 +1172,10 @@ tbody tr:hover {
10711172
transform: translateX(0);
10721173
}
10731174

1175+
.sidebar-resizer {
1176+
display: none;
1177+
}
1178+
10741179
.main-content {
10751180
margin-left: 0;
10761181
padding: 20px;
@@ -1112,7 +1217,7 @@ tbody tr:hover {
11121217
}
11131218
}
11141219

1115-
/* ===== PTERODACTYL PAGE ===== */
1220+
/* ===== PYRODACTYL PAGE ===== */
11161221
.ptero-grid {
11171222
max-width: 640px;
11181223
}
@@ -1309,10 +1414,10 @@ tbody tr:hover {
13091414
justify-content: space-between;
13101415
gap: 20px;
13111416
flex-wrap: wrap;
1312-
animation: slideUp 0.4s ease;
1417+
animation: slideUpFromBelow 0.4s ease;
13131418
}
13141419

1315-
@keyframes slideUp {
1420+
@keyframes slideUpFromBelow {
13161421
from { transform: translateY(100%); opacity: 0; }
13171422
to { transform: translateY(0); opacity: 1; }
13181423
}
@@ -1559,6 +1664,53 @@ tbody tr:hover {
15591664
font-size: 0.88rem;
15601665
}
15611666

1667+
.activity-list-truncated {
1668+
position: relative;
1669+
}
1670+
1671+
.activity-list-truncated::after {
1672+
content: '';
1673+
position: absolute;
1674+
bottom: 0;
1675+
left: -24px;
1676+
right: -24px;
1677+
height: 100px;
1678+
backdrop-filter: blur(6px);
1679+
-webkit-backdrop-filter: blur(6px);
1680+
mask-image: linear-gradient(transparent, #000 80%);
1681+
-webkit-mask-image: linear-gradient(transparent, #000 80%);
1682+
pointer-events: none;
1683+
}
1684+
1685+
.activity-more-overlay {
1686+
position: absolute;
1687+
bottom: 8px;
1688+
left: 0;
1689+
right: 0;
1690+
text-align: center;
1691+
z-index: 2;
1692+
}
1693+
1694+
/* ===== LOG PAGE ===== */
1695+
.log-pagination {
1696+
display: flex;
1697+
align-items: center;
1698+
justify-content: center;
1699+
gap: 12px;
1700+
padding: 16px 0;
1701+
}
1702+
1703+
.log-pagination-info {
1704+
font-size: 0.82rem;
1705+
color: var(--text-muted);
1706+
}
1707+
1708+
.log-pagination .btn-ghost[disabled] {
1709+
opacity: 0.4;
1710+
cursor: not-allowed;
1711+
pointer-events: none;
1712+
}
1713+
15621714
/* ===== SEARCH & FILTERS ===== */
15631715
.servers-toolbar {
15641716
display: flex;

public/index.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@
99
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
1010
<link href="https://fonts.googleapis.com/css2?family=JetBrains+Mono:ital,wght@0,100..800;1,100..800&family=Schibsted+Grotesk:ital,wght@0,400..900;1,400..900&display=swap" rel="stylesheet" />
1111
<link rel="stylesheet" href="/css/style.css" />
12-
<script src="https://cdn.jsdelivr.net/npm/cap-widget@latest"></script>
13-
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3435983595130644" crossorigin="anonymous"></script>
12+
<script src="https://cdn.jsdelivr.net/npm/cap-widget@0.1.56"></script>
1413
</head>
1514
<body>
1615

0 commit comments

Comments
 (0)