Files
Nexus.Reader/src/NexusReader.UI.Shared/Components/Organisms/CurrentReadingWidget.razor
T

80 lines
2.8 KiB
Plaintext

@using NexusReader.Application.DTOs.User
@using NexusReader.UI.Shared.Components.Atoms
@inject NavigationManager NavigationManager
<section class="current-reading-card glass-panel">
@if (Book != null)
{
<div class="card-layout">
<div class="book-cover">
<img src="@(Book.CoverUrl ?? "https://via.placeholder.com/120x180?text=No+Cover")" alt="@Book.Title" />
</div>
<div class="book-details">
<div class="header-info">
<h3 class="book-title">@Book.Title</h3>
<span class="author-name">by @Book.Author.Name</span>
</div>
<div class="chapter-progress">
<div class="progress-header">
<span class="chapter-name">@Book.LastChapter</span>
<span class="percentage">@(Book.Progress.ToString("F0"))%</span>
</div>
<div class="progress-bar-container">
<div class="progress-bar-fill" style="width: @(Book.Progress.ToString("F0"))%"></div>
</div>
</div>
@if (!string.IsNullOrEmpty(Book.Description))
{
<p class="book-excerpt">
@Book.Description
</p>
}
else
{
<p class="book-excerpt empty">
Kontynuuj odkrywanie wiedzy w książce "@Book.Title".
Twój cyfrowy asystent Nexus jest gotowy do analizy kolejnych rozdziałów i generowania interaktywnych map myśli.
</p>
}
<div class="actions">
<button class="btn-nexus outline" @onclick="HandleContinueReading">
Continue Reading
<NexusIcon Name="arrow-right" Size="16" />
</button>
</div>
</div>
</div>
}
else
{
<div class="empty-state">
<div class="empty-icon">
<NexusIcon Name="book-open" Size="48" />
</div>
<div class="empty-text">
<h3>Brak aktywnych lektur</h3>
<p>Przejdź do biblioteki, aby rozpocząć przygodę z Nexus Reader.</p>
</div>
<button class="btn-nexus primary" @onclick='() => NavigationManager.NavigateTo("/library")'>
Przejdź do Biblioteki
</button>
</div>
}
</section>
@code {
[Parameter] public LastReadBookDto? Book { get; set; }
private void HandleContinueReading()
{
if (Book != null)
{
NavigationManager.NavigateTo($"/reader/{Book.Id}?chapter={Book.LastChapterIndex}");
}
}
}