Files
chapter-organizer/WebApp/Components/Shared/Components/PageHeader.razor
T

127 lines
3.3 KiB
Plaintext

@namespace WebApp.Components.Shared.Components
<PageTitle>@GetPageTitle()</PageTitle>
<div class="page-header">
<MudStack Spacing="2">
@* Breadcrumbs *@
@if (BreadcrumbItems != null && BreadcrumbItems.Any())
{
<MudBreadcrumbs Items="@BreadcrumbItems"></MudBreadcrumbs>
}
@* Title Row with Back Button and Actions *@
<MudStack Row="true" Justify="Justify.SpaceBetween" AlignItems="AlignItems.Center" Spacing="2">
<MudStack Row="true" AlignItems="AlignItems.Center" Spacing="2">
@* Back Button *@
@if (ShowBackButton && !string.IsNullOrEmpty(BackButtonUrl))
{
<MudIconButton Icon="@Icons.Material.Filled.ArrowBack"
Href="@BackButtonUrl"
Size="Size.Large"
Color="Color.Default"
Class="no-print" />
}
@* Icon *@
@if (!string.IsNullOrEmpty(Icon))
{
<MudIcon Icon="@Icon" Size="Size.Large" />
}
@* Title *@
<MudText Typo="Typo.h3">
@Title
@if (TitleSuffix != null)
{
@TitleSuffix
}
</MudText>
</MudStack>
@* Action Buttons *@
@if (ActionButtons != null)
{
<div class="page-header-actions">
@ActionButtons
</div>
}
</MudStack>
@* Subtitle *@
@if (!string.IsNullOrEmpty(Subtitle))
{
<MudText Typo="Typo.h4">@Subtitle</MudText>
}
@* Description *@
@if (!string.IsNullOrEmpty(Description))
{
<MudText Typo="Typo.body2">@Description</MudText>
}
@* Custom Header Content *@
@if (HeaderContent != null)
{
@HeaderContent
}
@* Divider *@
@if (ShowDivider)
{
<MudDivider />
}
</MudStack>
</div>
@code {
// Required
[Parameter]
public string Title { get; set; } = string.Empty;
// Optional - Basic
[Parameter]
public string? Subtitle { get; set; }
[Parameter]
public string? Description { get; set; }
[Parameter]
public string? Icon { get; set; }
[Parameter]
public bool ShowDivider { get; set; } = true;
// Optional - Navigation
[Parameter]
public List<BreadcrumbItem>? BreadcrumbItems { get; set; }
[Parameter]
public bool ShowBackButton { get; set; } = false;
[Parameter]
public string? BackButtonUrl { get; set; }
// Optional - Actions
[Parameter]
public RenderFragment? ActionButtons { get; set; }
// Optional - Advanced
[Parameter]
public RenderFragment? TitleSuffix { get; set; }
[Parameter]
public RenderFragment? HeaderContent { get; set; }
private string GetPageTitle()
{
var baseTitle = Title;
if (!string.IsNullOrEmpty(Subtitle))
{
baseTitle = $"{Title} {Subtitle}";
}
return $"{baseTitle} - TSA Chapter Organizer";
}
}