-
-
+
+
-
-
-
-
diff --git a/GUI/js/featured.js b/GUI/js/featured.js
index 88b2aca..7fe1a6a 100644
--- a/GUI/js/featured.js
+++ b/GUI/js/featured.js
@@ -15,7 +15,6 @@ function escapeHtml(text) {
*/
async function loadFeaturedServers() {
const featuredContainer = document.getElementById('featuredServersList');
- const myServersContainer = document.getElementById('myServersList');
try {
console.log('[FeaturedServers] Fetching from', FEATURED_SERVERS_API);
@@ -54,6 +53,15 @@ async function loadFeaturedServers() {
const escapedName = escapeHtml(server.Name || 'Unknown Server');
const escapedAddress = escapeHtml(server.Address || '');
const bannerUrl = server.img_Banner || 'https://via.placeholder.com/400x240/1e293b/ffffff?text=Server+Banner';
+ const discordUrl = server.discord || '';
+
+ // Build Discord button HTML if discord link exists
+ const discordButton = discordUrl ? `
+
+ ` : '';
return `
@@ -67,10 +75,13 @@ async function loadFeaturedServers() {
${escapedName}
${escapedAddress}
-
+
+
+ ${discordButton}
+
@@ -80,13 +91,6 @@ async function loadFeaturedServers() {
featuredContainer.innerHTML = featuredHTML;
}
- // Show "Coming Soon" for my servers
- myServersContainer.innerHTML = `
-
- `;
-
} catch (error) {
console.error('[FeaturedServers] Error loading servers:', error);
featuredContainer.innerHTML = `
@@ -96,11 +100,6 @@ async function loadFeaturedServers() {
${error.message}
`;
- myServersContainer.innerHTML = `
-
- `;
}
}
@@ -151,6 +150,22 @@ async function copyServerAddress(address, button) {
}
}
+/**
+ * Open server Discord in external browser
+ */
+function openServerDiscord(discordUrl) {
+ try {
+ console.log('[FeaturedServers] Opening Discord:', discordUrl);
+ if (window.electronAPI && window.electronAPI.openExternal) {
+ window.electronAPI.openExternal(discordUrl);
+ } else {
+ window.open(discordUrl, '_blank');
+ }
+ } catch (error) {
+ console.error('[FeaturedServers] Failed to open Discord link:', error);
+ }
+}
+
// Load featured servers when the featured page becomes visible
document.addEventListener('DOMContentLoaded', () => {
const observer = new MutationObserver((mutations) => {
diff --git a/GUI/style.css b/GUI/style.css
index 9c14abe..ab36fcd 100644
--- a/GUI/style.css
+++ b/GUI/style.css
@@ -1005,20 +1005,12 @@ body {
}
/* Featured Servers Styles */
-.featured-layout {
- display: grid;
- grid-template-columns: 1fr 1fr;
- gap: 2rem;
- height: calc(100vh - 180px);
- overflow: hidden;
-}
-
-.featured-left,
-.featured-right {
+.featured-container {
display: flex;
flex-direction: column;
+ height: calc(100vh - 180px);
overflow: hidden;
- min-height: 0;
+ padding: 0 2rem;
}
.featured-header {
@@ -1074,8 +1066,8 @@ body {
transition: all 0.3s ease;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
display: grid;
- grid-template-columns: 200px 1fr;
- min-height: 120px;
+ grid-template-columns: 300px 1fr;
+ min-height: 180px;
flex-shrink: 0;
}
@@ -1086,24 +1078,24 @@ body {
}
.featured-server-banner {
- width: 200px;
+ width: 300px;
height: 100%;
- min-height: 120px;
+ min-height: 180px;
object-fit: cover;
background: linear-gradient(135deg, #1e293b, #334155);
flex-shrink: 0;
}
.featured-server-content {
- padding: 1.25rem;
+ padding: 1.5rem 2rem;
display: flex;
flex-direction: column;
justify-content: center;
- gap: 0.75rem;
+ gap: 1rem;
}
.featured-server-name {
- font-size: 1.15rem;
+ font-size: 1.35rem;
font-weight: 600;
color: white;
line-height: 1.4;
@@ -1118,27 +1110,40 @@ body {
padding: 0.625rem 1rem;
border-radius: 6px;
border: 1px solid rgba(255, 255, 255, 0.1);
+ gap: 1rem;
}
.server-address-text {
font-family: 'JetBrains Mono', monospace;
color: #94a3b8;
font-size: 0.9rem;
+ flex: 1;
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.server-action-buttons {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ flex-shrink: 0;
}
.copy-address-btn {
background: linear-gradient(135deg, #9333ea, #7c3aed);
color: white;
border: none;
- padding: 0.5rem 1rem;
+ padding: 0.5rem 0.875rem;
border-radius: 6px;
cursor: pointer;
- font-size: 0.875rem;
+ font-size: 0.8125rem;
font-weight: 500;
transition: all 0.2s ease;
display: flex;
align-items: center;
- gap: 0.5rem;
+ gap: 0.375rem;
white-space: nowrap;
}
@@ -1155,6 +1160,31 @@ body {
background: linear-gradient(135deg, #10b981, #059669);
}
+.server-discord-btn {
+ background: linear-gradient(135deg, #5865F2, #4752C4);
+ color: white;
+ border: none;
+ padding: 0.5rem 0.875rem;
+ border-radius: 6px;
+ cursor: pointer;
+ font-size: 0.8125rem;
+ font-weight: 500;
+ transition: all 0.2s ease;
+ display: flex;
+ align-items: center;
+ gap: 0.375rem;
+ white-space: nowrap;
+}
+
+.server-discord-btn:hover {
+ background: linear-gradient(135deg, #4752C4, #3c45a5);
+ transform: scale(1.05);
+}
+
+.server-discord-btn:active {
+ transform: scale(0.95);
+}
+
.loading-spinner {
display: flex;
flex-direction: column;