Called with the next page (already clamped to 1..pageCount).
variant
NockerlPaginationVariant
'numbered'
numbered (default) · compact · prev-next.
siblings
number
1
How many page cells to show either side of the current page (numbered).
tone
NockerlPaginationTone
'neutral'
Color of the compact "Page X of Y" label. 'neutral' (default) keeps the WHOLE phrase in the card text color (accent-restraint law); 'accent' tints the ENTIRE phrase cyan. Never a partial tint: the whole phrase shares one color, never a lone cyan digit. No effect on the numbered / prev-next variants.
label
string
'NockerlPagination'
Accessible name for the <nav> landmark.
Compose ships offset paging + load-more, not a numbered control. These are the
real fetchTasks paging parameters; a numbered bar would be new work (see drift).
Parameter
Type
Default
Description
limit
Int
500
Page size. The number of rows fetched per request (server cap is 500).
offset
Int
0
Rows to skip: (page - 1) * limit for an equivalent page cursor.
status
String?
null
Server-side filter (single or comma-separated) so paging never drops active rows behind the cap.
sortBy
String
"updatedAt"
Sort key applied before paging, so page boundaries are stable.
sortOrder
String
"desc"
Sort direction (asc / desc).
TaskListResponse.data
List<…>
n/a
The page of rows. Appended to the list on "load more".
TaskListResponse.total
Int
n/a
Total matching rows. Compared against the loaded count to know when the end is reached.
SwiftUI (Voice) has no pagination control: a @Query + LazyVStack pages
lazily on scroll. These are the knobs that exist, listed honestly (see drift).
Style
Type
Default
Description
@Query(sort:order:)
property wrapper
n/a
Backs the list with a sorted SwiftData fetch. The whole result set is bound; no page cursor.
LazyVStack
View
n/a
Materializes rows only as they scroll into view: the lazy "paging" the app actually does.
filtered
[TranscriptionRecord]
n/a
Optional client-side search predicate applied over the query results before rendering.
Cross-platform drift (tracked for reconciliation)
Numbered pagination is a web/dashboard pattern. Neither shipped app has it,
so the numbered control is designed originally here from the laws + the button
vocabulary (current page = the button-primary cyan selected fill).
Android: offset paging (limit / offset + total) with load-more /
append-on-scroll: no page numbers, no prev/next, no “of N” jump.
Swift (Voice): an in-memory @Query in a LazyVStack. Lazy scroll
only, no limit/offset, no total cursor.
The web total / pageSize map cleanly onto the apps’ total / limit; only
the numbered + page-size UI is web-specific. A shared “load more” control is
the closest cross-platform primitive.