diff options
author | Dustin Walker <dustin.walker@email.wsu.edu> | 2025-09-22 16:20:09 -0400 |
---|---|---|
committer | Dustin Walker <dustin.walker@email.wsu.edu> | 2025-09-22 16:20:09 -0400 |
commit | 1bd40ef64a47ed668a5bbf132f144bf0d2e3a251 (patch) | |
tree | edf9a5aff73270705b7dfbded34aec6ecd245bd2 | |
parent | da01a2bf50d3f88f163f70c7d4d2933682c83c20 (diff) |
home page done
12 files changed, 130 insertions, 17 deletions
@@ -425,4 +425,6 @@ FodyWeavers.xsd *.msi *.msix *.msm -*.msp
\ No newline at end of file +*.msp + +.DS_Store diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Index.cshtml b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Index.cshtml index f9ff8d4..7c36f96 100644 --- a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Index.cshtml +++ b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Index.cshtml @@ -1,10 +1,59 @@ @page @model IndexModel @{ - ViewData["Title"] = "Home page"; + ViewData["Title"] = "Home"; } -<div class="text-center"> - <h1 class="display-4">Welcome</h1> - <p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p> +<div class="container"> + <div class="row align-items-start mb-4"> + <aside class="col-12 col-md-6 mb-3 text-center"> + <img src="~/img/mainstreet.png" class="img-fluid rounded shadow-sm" style="max-height:130px;" alt="Site banner" loading="lazy" /> + <img src="~/img/harvest.png" class="img-fluid rounded shadow-sm" style="max-height:130px;" alt="Site banner" loading="lazy" /> + <img src="~/img/landscape.png" class="img-fluid rounded shadow-sm" style="max-height:130px;" alt="Site banner" loading="lazy" /> + </aside> + <section class="col-12 col-md-6 mb-3"> + <h4 class="h4">York County, Pennsylvania</h4> + <p>The source for this website can be found at <a href="https://git.dwalker.xyz/sovereign-demesne-azure.git">git.dwalker.xyz</a>. Licensed under <a href="https://git.dwalker.xyz/sovereign-demesne.git/tree/LICENSE">GPLv3</a>.</p> + <p><b>Council Members:</b> A mumble server is up in case of emergency meetings. We also have <a href="https://rss.dwalker.xyz">RSS management</a> and an <a href="https://bridge.dwalker.xyz">RSS bridge</a> to populate it.</p> + </section> + </div> + + <div class="row g-4"> + @foreach (IndexModel.LinkSection section in Model.Sections) + { + <section class="col-12 col-md-6"> + <h2 class="h5 text-center">@(section.Title)</h2> + <hr/> + <ul class="list-unstyled link-columns"> + @foreach (IndexModel.LinkItem link in section.Links) + { + <li class="mb-2"> + <a class="link-light" href="@link.Url">@link.Text</a> + @if (!string.IsNullOrWhiteSpace(link.Description)) + { + <div class="text-body-secondary small">@link.Description</div> + } + </li> + } + </ul> + </section> + } + </div> + <br/> + <div class="row g-4"> + <h2 class="h5 text-center">@Model.LargeSection.Title</h2> + <hr/> + <ul class="list-unstyled link-columns-big"> + @foreach (IndexModel.LinkItem link in Model.LargeSection.Links) + { + <li class="mb-2"> + <a class="link-light" href="@link.Url">@link.Text</a> + @if (!string.IsNullOrWhiteSpace(link.Description)) + { + <div class="text-body-secondary small">@link.Description</div> + } + </li> + } + </ul> + </div> </div> diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Index.cshtml.cs b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Index.cshtml.cs index 1dc7a2e..150a657 100644 --- a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Index.cshtml.cs +++ b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Index.cshtml.cs @@ -6,6 +6,12 @@ public sealed class IndexModel : PageModel { private readonly ILogger<IndexModel> _logger; + public record LinkItem(string Text, string Url, string? Description = null); + public record LinkSection(string Title, IReadOnlyList<LinkItem> Links); + + public IReadOnlyList<LinkSection> Sections { get; private set; } = default!; + public LinkSection LargeSection { get; private set; } = default!; + public IndexModel(ILogger<IndexModel> logger) { _logger = logger; @@ -13,6 +19,42 @@ public sealed class IndexModel : PageModel public void OnGet() { - + Sections = + [ + new LinkSection("Content", + [ + new LinkItem("Code", "https://git.dwalker.xyz"), + new LinkItem("Web Feed", "https://rss.dwalker.xyz"), + new LinkItem("RSS Bridge", "https://bridge.dwalker.xyz"), + new LinkItem("Budget", "https://budget.dwalker.xyz"), + new LinkItem("FoundryVTT", "https://foundry.dwalker.xyz"), + ]), + new LinkSection("Links", + [ + new LinkItem("Build your own Website", "https://landchad.net"), + new LinkItem("Grand Sumo", "https://www.sumo.or.jp/En/"), + new LinkItem("Suckless Software", "https://suckless.org"), + new LinkItem("Weather", "https://wttr.in"), + new LinkItem("1MB Club", "https://1mb.club"), + new LinkItem("Translations", "https://simplytranslate.org"), + new LinkItem("Homesteader's Chronicle", "https://thehomesteaderschronicle.com/"), + new LinkItem("Luke Smith", "https://lukesmith.xyz"), + ]), + ]; + LargeSection = new LinkSection("Local Goods & Services", + [ + new LinkItem("Brown's Orchard", "https://brownsorchards.com"), + new LinkItem("Godfrey Brothers Meats", "https://godfreymeats.com"), + new LinkItem("Hiwwe wie Driwwe", "https://hiwwe-wie-driwwe.com/"), + new LinkItem("Maple Lawn Farms", "https://maplelawnfarms.com/"), + new LinkItem("Miller Plant Farm", "https://millerplantfarm.com"), + new LinkItem("Christmastime in Loganville", "https://christmastimeinloganville.com"), + new LinkItem("Perrydell Dairy Farm", "https://perrydellfarm.com"), + new LinkItem("Roburritos", "https://roburritos.com"), + new LinkItem("Shaw Orchards", "http://shaworchards.com"), + new LinkItem("Sonnewald Natural Goods", "https://sonnewald.org"), + new LinkItem("Jeff's Subs", "https://jeffssubs.com"), + new LinkItem("Flinchbaugh's Farm Market", "https://flinchbaughsorchard.com"), + ]); } } diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Privacy.cshtml b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Reference.cshtml index 46ba966..ed745c3 100644 --- a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Privacy.cshtml +++ b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Reference.cshtml @@ -1,5 +1,5 @@ @page -@model PrivacyModel +@model ReferenceModel @{ ViewData["Title"] = "Privacy Policy"; } diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Privacy.cshtml.cs b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Reference.cshtml.cs index e979f14..6a11cff 100644 --- a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Privacy.cshtml.cs +++ b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Reference.cshtml.cs @@ -2,11 +2,11 @@ namespace SovereignDemesneRazor.Pages; -public sealed class PrivacyModel : PageModel +public sealed class ReferenceModel : PageModel { - private readonly ILogger<PrivacyModel> _logger; + private readonly ILogger<ReferenceModel> _logger; - public PrivacyModel(ILogger<PrivacyModel> logger) + public ReferenceModel(ILogger<ReferenceModel> logger) { _logger = logger; } diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Shared/_Layout.cshtml b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Shared/_Layout.cshtml index 048c327..5bff736 100644 --- a/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Shared/_Layout.cshtml +++ b/SovereignDemesneAzure/SovereignDemesneRazor/Pages/Shared/_Layout.cshtml @@ -3,7 +3,7 @@ <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>@ViewData["Title"] - SovereignDemesneRazor</title> + <title>Dustin Walker's Webpage - @ViewData["Title"]</title> <script type="importmap"></script> <link rel="stylesheet" href="~/lib/bootswatch-darkly/dist/bootstrap.min.css" /> <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" /> @@ -11,9 +11,10 @@ </head> <body> <header> - <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3"> + <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-dark bg-dark border-bottom box-shadow mb-3"> <div class="container"> - <a class="navbar-brand" asp-area="" asp-page="/Index">SovereignDemesneRazor</a> + <img src="~/img/HPR.png" class="img-fluid" style="max-height:50px; margin-right:30px;" alt="Logo"/> + <a class="navbar-brand" asp-area="" asp-page="/Index">Dustin Walker's Webpage</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> @@ -21,10 +22,10 @@ <div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"> <ul class="navbar-nav flex-grow-1"> <li class="nav-item"> - <a class="nav-link text-dark" asp-area="" asp-page="/Index">Home</a> + <a class="nav-link text-light" asp-area="" asp-page="/Index">Home</a> </li> <li class="nav-item"> - <a class="nav-link text-dark" asp-area="" asp-page="/Privacy">Privacy</a> + <a class="nav-link text-light" asp-area="" asp-page="/Reference">Reference</a> </li> </ul> </div> @@ -37,9 +38,10 @@ </main> </div> - <footer class="border-top footer text-muted"> + <footer class="border-top footer text-muted text-center"> <div class="container"> - <a asp-page="/Index">razor.dwalker.xyz</a> © 2025 - Anno Domini + <img src="~/img/logo.png" class="img-fluid" style="max-height:30px; margin-right:15px;" alt="Logo"/> + <a href="https://dwalker.xyz">dwalker.xyz</a> © 2025 Anno Domini </div> </footer> diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/css/site.css b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/css/site.css index 819f612..7364cd0 100644 --- a/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/css/site.css +++ b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/css/site.css @@ -8,6 +8,24 @@ html { } } +/* Two-column split for large lists on md+ screens; falls back to one column on mobile */ +@media (min-width: 768px) { + .link-columns { + column-count: 3; + column-gap: 1.25rem; + } + .link-columns > li { + break-inside: avoid; + } + .link-columns-big { + column-count: 5; + column-gap: 1.25rem; + } + .link-columns-big > li { + break-inside: avoid; + } +} + .btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus { box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb; } diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/HPR.png b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/HPR.png Binary files differnew file mode 100644 index 0000000..a3ca05c --- /dev/null +++ b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/HPR.png diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/harvest.png b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/harvest.png Binary files differnew file mode 100644 index 0000000..19b0b3b --- /dev/null +++ b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/harvest.png diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/landscape.png b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/landscape.png Binary files differnew file mode 100644 index 0000000..d1ec2c0 --- /dev/null +++ b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/landscape.png diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/logo.png b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/logo.png Binary files differnew file mode 100644 index 0000000..e680ebf --- /dev/null +++ b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/logo.png diff --git a/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/mainstreet.png b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/mainstreet.png Binary files differnew file mode 100644 index 0000000..185b224 --- /dev/null +++ b/SovereignDemesneAzure/SovereignDemesneRazor/wwwroot/img/mainstreet.png |