diff --git a/src/pages/Servers.tsx b/src/pages/Servers.tsx
index 59b8adf..dba9de2 100644
--- a/src/pages/Servers.tsx
+++ b/src/pages/Servers.tsx
@@ -32,6 +32,37 @@ interface ServerData extends ServerInfo {
error?: string
}
+// Loading Skeleton Component
+const LoadingSkeleton = ({ width = '60px', height = '40px', className = '', style = {} }: { width?: string, height?: string, className?: string, style?: React.CSSProperties }) => (
+
+)
+
function Servers() {
const { t } = useTranslation()
@@ -49,6 +80,7 @@ function Servers() {
]
const [servers, setServers] = useState([])
+ const [loading, setLoading] = useState(true)
const [selectedCategory, setSelectedCategory] = useState('All')
// Fetch A2S data for all servers
@@ -84,6 +116,7 @@ function Servers() {
const results = await Promise.all(serverPromises)
setServers(results)
+ setLoading(false)
}
fetchServerData()
@@ -174,7 +207,69 @@ function Servers() {
gridTemplateColumns: 'repeat(auto-fit, minmax(350px, 1fr))',
gap: '2rem'
}}>
- {filteredServers.map((server) => (
+ {loading ? (
+ // Show loading skeletons
+ serverList.map((_, index) => (
+
+ {/* Status Indicator Skeleton */}
+
+
+ {/* Server Header Skeleton */}
+
+
+ {/* Server Stats Skeleton */}
+
+
+ {/* Server Details Skeleton */}
+
+
+
+
+ {/* Join Button Skeleton */}
+
+
+ ))
+ ) : (
+ filteredServers.map((server) => (
- ))}
+ ))
+ )}