j3w1/theme implementation brief — pagination theme: j3w1-theme 1.1.0 profile: default sourceDigest: sha256-C+iD5Q7l0XPU/boMj003wPbPLBOq3C3ZM7s4OfzJ6mc= pin: https://raw.githubusercontent.com/j3w1/theme/v1.1.0/exports/components/pagination.json spec: spec/components/pagination.md site: https://j3w1.github.io/theme/reference/#c-pagination maturity: stable priority: R1 Summary: Page links for a long result set; the current page takes the selection fill and aria-current, and the compact form reads "3 of 12" between previous and next. Use the pinned approved default profile. Pending roles in that profile use-and-report their decision IDs; this does not approve them. Proposed profiles are preview-only and blocked for delivery. Heritage profiles are historical-only. Deprecated or heritage roles are blocked for new approved-profile mappings. Consume roles within their documented scope, never primitives. Release numbering does not approve profiles or tokens. Tokens (resolved): root.bg #100c0c ({color.surface.default}) use link.text #e99499 ({color.text.default}) use link.bg-hover #1c0a09 ({color.interaction.hover.bg}) use link.bg-pressed #420f0c ({color.interaction.pressed.bg}) use link.ring #e53935 ({color.interaction.focus.ring}) use link.text-disabled #8a5559 ({color.text.disabled}) use current.bg #531310 ({color.interaction.selection.bg}) use current.text #f4eeee ({color.text.on-selection}) use current.ring #ffa2a7 ({color.interaction.focus.ring-container}) use gap.text #bd787d ({color.text.muted}) use status.text #e99499 ({color.text.default}) use status.emphasis #ffa2a7 ({color.text.bright}) use States: default, hover, focus-visible, current, disabled default: text {color.text.default}; no fill; no border [—] hover: background → {color.interaction.hover.bg} [cursor: pointer] focus-visible: ring 1px dashed {color.interaction.focus.ring} at −2px; on the current page the ring is {color.interaction.focus.ring-container} [the ring] current: fill {color.interaction.selection.bg}; text {color.text.on-selection}; no hover [`aria-current="page"`] disabled: text {color.text.disabled}; no fill; no hover [`aria-disabled="true"`; no `href`; cursor: not-allowed] Keyboard: Tab / Shift+Tab: Moves through previous, each page link and next in order; a disabled end has no href and is not a stop. Enter: Follows the focused link. ARIA: native nav > ul of links with aria-current="page" Responsive: The list wraps at 320px; the compact variant never wraps and is the choice below 600px or in a toolbar. RTL mirrors the order and swaps the previous and next glyphs through logical properties. Portability: nav with aria-label="Pagination" wrapping a ul of anchors; the current page is an anchor with aria-current="page"; a disabled end is an anchor without href carrying aria-disabled="true"; the fill is a background, the ring an outline. native: GTK4 a Box of Buttons with the current one using the selected style class. native: Qt a row of QToolButtons; the current one checked and styled with the selection fill. native: Terminal UI: page numbers on one line; the current number inverted. Rules: use only these values; no invented colours; radius 0; borders 1px (2px emphasis); focus is a 1px dashed ring, selection is a fill; do not restyle unrelated elements; report deviations per agents/consume.md; record theme.lock.json at the pinned revision.