Complete mobile card view coverage for all remaining pages

- CSS fix: change blanket .table-responsive hide to only trigger when
  a .mobile-card-view sibling exists (.mobile-card-view ~ .table-responsive
  and :has() rule) — auto-fixes 60+ forms/reports/detail/help pages that
  were showing blank on mobile by making their tables scroll instead
- Add mobile card views to remaining list pages:
  JobsPriority (overdue jobs, main board, maintenance sections)
  NotificationLogs (email/SMS log entries)
  AiUsageReport (per-company AI usage breakdown)
  GiftCertificates/BulkResult (batch certificate list)
  Inventory/SamplePanels (Need to Order + On Wall tabs)
  BannedIps (active bans + lifted/expired bans)
  OnboardingProgress (per-company activation funnel)
  ReleaseNotes/Manage (versioned changelog entries)
  StorageMigration/Results (file migration status list)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-14 23:31:38 -04:00
parent f467862877
commit cf6acc125f
10 changed files with 780 additions and 2 deletions
@@ -84,6 +84,46 @@
}
</div>
</div>
<div class="mobile-card-view">
<div class="mobile-card-list">
@foreach (var file in Model.Files.OrderBy(f => f.Status).ThenBy(f => f.RelativePath))
{
var fStatusBadge = file.Status switch
{
MigrationFileStatus.Migrated => "bg-success",
MigrationFileStatus.Skipped => "bg-secondary",
_ => "bg-danger"
};
var fStatusLabel = file.Status switch
{
MigrationFileStatus.Migrated => "Migrated",
MigrationFileStatus.Skipped => "Already in Azure",
_ => "Failed"
};
<div class="mobile-data-card">
<div class="mobile-card-header">
<div class="mobile-card-icon" style="background: linear-gradient(135deg, #0369a1 0%, #075985 100%);">
<i class="bi bi-file-earmark"></i>
</div>
<div class="mobile-card-title">
<h6 class="font-monospace" style="font-size:.75rem;">@file.RelativePath</h6>
<small><span class="badge bg-light text-dark border">@file.Container</span></small>
</div>
</div>
<div class="mobile-card-body">
<div class="mobile-card-row">
<span class="mobile-card-label">Size</span>
<span class="mobile-card-value text-muted">@FormatBytes(file.FileSize)</span>
</div>
<div class="mobile-card-row">
<span class="mobile-card-label">Status</span>
<span class="mobile-card-value"><span class="badge @fStatusBadge">@fStatusLabel</span></span>
</div>
</div>
</div>
}
</div>
</div>
<div class="table-responsive">
<table class="table table-sm table-hover mb-0">
<thead>