Add pagination to the Jobs / Shifts / Talent list pages
CI/CD / CI · dotnet build (push) Successful in 2m50s
CI/CD / Deploy · hamkadr (push) Successful in 5m42s

The list pages loaded EVERY matching listing into one page (/Jobs was a ~2.6MB page with 1000+
cards) — no pagination at all. Add server-side paging (24/page, DB Skip/Take; near-me still sorts
all by distance then paginates in memory). The header count now shows the true total, and a shared
_Pager partial renders prev/next + a windowed page list that preserves all active filters in the URL.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
soroush.asadi
2026-06-23 19:27:41 +03:30
parent ccc5a954dd
commit 5fcdb8599f
8 changed files with 111 additions and 17 deletions
+11
View File
@@ -80,6 +80,17 @@ a { color: inherit; text-decoration: none; }
.nav-more-menu a { color: var(--text); font-weight: 600; font-size: 14px; padding: 9px 12px; border-radius: 8px; white-space: nowrap; }
.nav-more-menu a:hover, .nav-more-menu a.active { background: var(--primary-soft); color: var(--primary-dark); }
/* Pagination */
.pager { display: flex; flex-wrap: wrap; justify-content: center; align-items: center; gap: 6px; margin: 26px 0 4px; }
.pager-btn, .pager-num {
display: inline-flex; align-items: center; justify-content: center; min-width: 38px; height: 38px;
padding: 0 12px; border: 1px solid var(--line); border-radius: 9px; background: #fff;
color: var(--text); font-weight: 600; font-size: 14px; text-decoration: none; transition: all .15s;
}
.pager-btn:hover, .pager-num:hover { border-color: var(--primary); color: var(--primary-dark); }
.pager-num.active { background: var(--primary); border-color: var(--primary); color: #fff; cursor: default; }
.pager-gap { padding: 0 2px; color: var(--muted); }
.cta-post { white-space: nowrap; box-shadow: 0 2px 8px rgba(240,132,62,.35); }
.header-actions { display: flex; align-items: center; gap: 12px; margin-inline-start: auto; }
.nav-action { font-weight: 600; font-size: 15px; color: var(--muted); white-space: nowrap; transition: color .15s; }