48 lines
1.9 KiB
Plaintext
48 lines
1.9 KiB
Plaintext
<nav>
|
|
<div class="vert_container centered">
|
|
<a class="nav_option @(currentSection == "home" ? "active" : "")" href="#home" @onclick:preventDefault @onclick="ScrollToHome">
|
|
<img class="icon medium" src="/img/douwco_logo.png" />
|
|
</a>
|
|
<a class="nav_option @(currentSection == "about_me" ? "active" : "")" href="#about_me" @onclick:preventDefault @onclick="ScrollToAboutMe">
|
|
<img class="icon small" src="/img/icons/user.png" alt="Icon" />
|
|
<p>About <span>Me</span></p>
|
|
</a>
|
|
<a class="nav_option @(currentSection == "apps" ? "active" : "")" href="#apps" @onclick:preventDefault @onclick="ScrollToApps">
|
|
<img class="icon small" src="/img/icons/projects_icon.png" alt="Icon" />
|
|
<p>Douwco <span>Apps</span></p>
|
|
</a>
|
|
<a class="nav_option @(currentSection == "games" ? "active" : "")" href="#games" @onclick:preventDefault @onclick="ScrollToGames">
|
|
<img class="icon small" src="/img/icons/devicegamepad2.png" alt="Icon" />
|
|
<p>My <span>Games</span></p>
|
|
</a>
|
|
</div>
|
|
</nav>
|
|
|
|
@code {
|
|
[Inject]
|
|
private ScrollService ScrollService { get; set; } = default!;
|
|
|
|
private string currentSection = "home";
|
|
|
|
protected override async Task OnInitializedAsync()
|
|
{
|
|
ScrollService.OnSectionChanged += HandleSectionChange;
|
|
}
|
|
|
|
private void HandleSectionChange(string sectionId)
|
|
{
|
|
currentSection = sectionId;
|
|
StateHasChanged();
|
|
}
|
|
|
|
private async Task ScrollToHome() => await ScrollService.ScrollToSection("home");
|
|
private async Task ScrollToAboutMe() => await ScrollService.ScrollToSection("about_me");
|
|
private async Task ScrollToApps() => await ScrollService.ScrollToSection("apps");
|
|
private async Task ScrollToGames() => await ScrollService.ScrollToSection("games");
|
|
|
|
public void Dispose()
|
|
{
|
|
ScrollService.OnSectionChanged -= HandleSectionChange;
|
|
}
|
|
}
|