add pagination across all admin and shop views
All checks were successful
deploy / deploy (push) Successful in 1m38s

URL-based offset pagination with ?page=N for bookmarkable pages.
Admin views use push_patch, shop collection uses navigate links.
Responsive on mobile with horizontal-scroll tables and stacking
pagination controls. Includes dev seed script for testing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
jamey
2026-03-01 09:42:34 +00:00
parent 7f6fd012a5
commit 3480b326a9
21 changed files with 1485 additions and 211 deletions

View File

@@ -467,6 +467,102 @@
font-size: var(--t-text-small);
}
/* ── Shop pagination ── */
.shop-pagination {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 1rem;
margin-top: 2.5rem;
padding-top: 1.5rem;
border-top: 1px solid var(--t-border);
}
.shop-pagination-showing {
font-size: var(--t-text-small);
color: var(--t-text-secondary);
}
.shop-pagination-buttons {
display: flex;
align-items: center;
gap: 0.25rem;
flex-wrap: wrap;
}
.shop-pagination-btn {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 2.25rem;
height: 2.25rem;
padding-inline: 0.5rem;
font-size: var(--t-text-small);
color: var(--t-text-primary);
background: transparent;
border: 1px solid var(--t-border);
border-radius: var(--t-radius-button, 0.375rem);
text-decoration: none;
transition: background-color 0.15s, border-color 0.15s;
&:hover {
background: var(--t-surface-sunken, var(--t-surface-alt));
}
}
.shop-pagination-btn-active {
background: var(--t-accent);
color: var(--t-text-inverse, #fff);
border-color: var(--t-accent);
pointer-events: none;
&:hover {
background: var(--t-accent);
}
}
.shop-pagination-btn-disabled {
opacity: 0.4;
pointer-events: none;
}
.shop-pagination-ellipsis {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 2.25rem;
height: 2.25rem;
font-size: var(--t-text-small);
color: var(--t-text-secondary);
}
@media (max-width: 35.99em) {
.shop-pagination {
justify-content: center;
}
.shop-pagination-showing {
width: 100%;
text-align: center;
}
.shop-pagination-buttons {
justify-content: center;
}
.shop-pagination-btn {
min-width: 2rem;
height: 2rem;
font-size: 0.8125rem;
}
.shop-pagination-ellipsis {
min-width: 1.5rem;
}
}
/* ── Search page ── */
.search-page-form {