diff --git a/LANCommander/UI/Pages/Launcher.razor b/LANCommander/UI/Pages/Launcher.razor
new file mode 100644
index 00000000..a46965f0
--- /dev/null
+++ b/LANCommander/UI/Pages/Launcher.razor
@@ -0,0 +1,61 @@
+@page "/Launcher"
+@layout BasicLayout
+@using LANCommander.Models
+@inject UpdateService UpdateService
+@inject NavigationManager NavigationManager
+
+
+ @switch (Settings.Theme)
+ {
+ case LANCommanderTheme.Light:
+

+ break;
+
+ case LANCommanderTheme.Dark:
+

+ break;
+ }
+
+
Grab the Launcher!
+
+
+
+ Download
+
+
+
+
+
+
+
+
+
+
+@code {
+ LANCommanderSettings Settings = SettingService.GetSettings();
+
+ string DownloadLink { get; set; } = "/Launcher/Download";
+
+ protected override async Task OnInitializedAsync()
+ {
+ var version = UpdateService.GetCurrentVersion();
+ var fileName = $"LANCommander.Client-Windows-x64-v{version}.zip";
+ var path = Path.Combine(Settings.Launcher.StoragePath, fileName);
+
+ if (!File.Exists(path) || !Settings.Launcher.HostUpdates)
+ {
+ var release = await UpdateService.GetRelease(version);
+
+ if (release == null)
+ release = (await UpdateService.GetReleases(1)).FirstOrDefault();
+
+ if (release != null)
+ {
+ var asset = release.Assets.FirstOrDefault(a => a.Name == fileName);
+
+ if (asset != null)
+ DownloadLink = asset.BrowserDownloadUrl;
+ }
+ }
+ }
+}
diff --git a/LANCommander/UI/Shared/BasicLayout.razor b/LANCommander/UI/Shared/BasicLayout.razor
new file mode 100644
index 00000000..25d1d62e
--- /dev/null
+++ b/LANCommander/UI/Shared/BasicLayout.razor
@@ -0,0 +1,26 @@
+@inherits LayoutComponentBase
+@using Microsoft.AspNetCore.Components.Authorization;
+@using System.Security.Claims;
+@inject AuthenticationStateProvider AuthenticationStateProvider
+
+
+
+ @Body
+
+
+
+
+
+@code {
+ ClaimsPrincipal User;
+
+ protected override async Task OnInitializedAsync()
+ {
+ var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
+
+ if (authState.User.Identity.IsAuthenticated)
+ User = authState.User;
+ }
+}
\ No newline at end of file
diff --git a/LANCommander/UI/Shared/MainLayout.razor b/LANCommander/UI/Shared/MainLayout.razor
index ec972923..40b4e3cf 100644
--- a/LANCommander/UI/Shared/MainLayout.razor
+++ b/LANCommander/UI/Shared/MainLayout.razor
@@ -58,7 +58,7 @@
-
+
@Body
diff --git a/LANCommander/wwwroot/css/site.css b/LANCommander/wwwroot/css/site.css
index 989e87e3..fd5e6950 100644
--- a/LANCommander/wwwroot/css/site.css
+++ b/LANCommander/wwwroot/css/site.css
@@ -1,3 +1,12 @@
+.layout {
+ min-height: 100vh;
+}
+
+.ant-layout-content {
+ display: flex;
+ flex-direction: column;
+}
+
.ant-header {
display: flex;
}
@@ -341,6 +350,25 @@ label.ant-btn-icon-only {
padding: 6px 8px;
}
+.launcher-download {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ gap: 20px;
+ flex-grow: 1;
+ justify-content: center;
+}
+
+.launcher-download img {
+ max-width: 500px;
+ width: 75vw;
+}
+
+.launcher-download h1 {
+ font-size: 32px;
+ margin-bottom: 0;
+}
+
@media screen and (min-width: 768px) {
.mobile-menu {
display: none;