feat: full FrontOffice updates - discount store, blog, payment gateway, UI improvements
Build and Deploy to Kubernetes / build-and-deploy (push) Failing after 4m55s

- Discount store pages (products, cart, orders, order detail)
- Blog pages and services
- Payment gateway callback page
- AppImage component, EmptyState, LoadingState, PageHeader
- DiscountCartService, DiscountOrderService, DiscountProductService
- BlogCategoryService, BlogPostService, SitePageService, ImageCacheService
- PhoneVerifyForm component
- Profile Hub page
- UI/UX improvements across all pages
- landing.js for homepage
- Config and routing updates
This commit is contained in:
masoodafar-web
2026-02-16 00:51:39 +03:30
parent f0d1156457
commit 6db83ccd90
104 changed files with 7668 additions and 1370 deletions
@@ -0,0 +1,40 @@
@inject NavigationManager Navigation
@inject IJSRuntime JS
<div class="page-header">
<MudStack Spacing="0">
<MudText Typo="Typo.h5">@Title</MudText>
@if (!string.IsNullOrWhiteSpace(Subtitle))
{
<MudText Typo="Typo.body2" Class="mud-text-secondary">@Subtitle</MudText>
}
</MudStack>
@if (ShowBack)
{
<MudButton Variant="Variant.Text" StartIcon="@Icons.Material.Filled.ArrowBack" OnClick="GoBack">بازگشت</MudButton>
}
</div>
@code {
[Parameter] public string Title { get; set; } = string.Empty;
/// <summary>
/// Optional subtitle text displayed below the title.
/// </summary>
[Parameter] public string? Subtitle { get; set; }
/// <summary>
/// Fallback URL if there's no browser history. Uses history.back() first.
/// </summary>
[Parameter] public string? BackHref { get; set; }
/// <summary>
/// Whether to show the back button. Default is true.
/// </summary>
[Parameter] public bool ShowBack { get; set; } = true;
private async Task GoBack()
{
await JS.InvokeVoidAsync("history.back");
}
}