Skip to content

docs: add development research document for pagination#6270

Open
michaelmkraus wants to merge 10 commits into
mainfrom
docs-research-pagination
Open

docs: add development research document for pagination#6270
michaelmkraus wants to merge 10 commits into
mainfrom
docs-research-pagination

Conversation

@michaelmkraus
Copy link
Copy Markdown
Contributor

@michaelmkraus michaelmkraus commented Mar 9, 2026

Proposed changes

  • add dev research document for pagination

resolves # (issue number)

Types of changes

  • Bugfix (non-breaking change that fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Refactoring (improvements to existing components or architectural decisions)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation Update (if none of the other choices apply)

🔭🐙🐈 Test this branch here: https://design-system.deutschebahn.com/core-web/review/docs-research-pagination

@michaelmkraus michaelmkraus added the 📕documentation Improvements or additions to documentation label Mar 9, 2026
@github-project-automation github-project-automation Bot moved this to 🏗 In progress in UX Engineering Team Backlog Mar 9, 2026
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Mar 9, 2026

⚠️ No Changeset found

Latest commit: f55dacf

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@michaelmkraus michaelmkraus moved this from 🏗 In progress to 🎁 Ready for review in UX Engineering Team Backlog Mar 9, 2026
@sarahbrng sarahbrng moved this from 🎁 Ready for review to 👀 Actively In Review in UX Engineering Team Backlog Mar 10, 2026
sarahbrng
sarahbrng previously approved these changes Mar 10, 2026
@github-project-automation github-project-automation Bot moved this from 👀 Actively In Review to ⏰ready for release in UX Engineering Team Backlog Mar 10, 2026
sarahbrng
sarahbrng previously approved these changes Mar 10, 2026
Comment thread docs/research/pagination.md Outdated
Comment thread docs/research/pagination.md Outdated
Comment thread docs/research/pagination.md Outdated
Comment thread docs/research/pagination.md
Comment thread docs/research/pagination.md
Co-authored-by: Maximilian Franzke <787658+mfranzke@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 10 comments.


## Overview 🔍

The following overview consolidates the basic data of the 15 design systems. It specifies the exact naming of the pagination component in the respective system, documents the underlying technological basis, and list the most important architectural findings.
| **SNCF WCS** | `Pagination` | Web Components (StencilJS), Angular, React | ([https://wcs.dev.sncf/](https://wcs.dev.sncf/)) | Relies on standardized design tokens for consistent group styling across different frameworks. Separates visual representation from data state. |
| **Telefonica Mistica** | `Pagination` | React | [Mistica](https://github.com/Telefonica/mistica-web) | Deep theming support (e.g., Movistar Skin). As a purely presentational component, it relies on external state management in the parent container. |
| **Telekom Scale** | `scale-pagination` | Web Components (StencilJS) | ([https://telekom.github.io/scale/](https://telekom.github.io/scale/)) | Implements specific micro-interactions (1.05x hover scale) as well as detailed, integrated event tracking (`pagination.next_click`). |
| **Washington Post WPDS** | `Pagination` | React | ([https://build.washingtonpost.com/](https://www.google.com/search?q=https://build.washingtonpost.com/)) | Limits visual slots to a maximum of 7 elements. Designed for content-heavy environments (article archives, search results) to avoid visual overload with infinite search results. |

Several abstract architectural patterns can be derived and considered as practices for developing a scalable pagination component.
Beyond basic ARIA labels, semantic HTML plays a crucial role in pagination. It is an industry best practice to implement the `rel="next"` and `rel="prev"` HTML attributes on the respective pagination links. These attributes clarify the sequential relationship between pages for search engines, improve structural accessibility, and enable modern browsers to prefetch upcoming content, significantly improving the perceived performance of the application.
CSS functions like `sibling-index()` and `sibling-count()` can be utilized to dynamically style pagination items. However, because cross-browser support is still limited.

## Conclusion 🏁

Implementing pagination is more than visually rendering a numeric HTML list. It represents a critical interface between backend, frontend routing architecture, and cognitive ergonomics. The 15 examined design systems provide a consistent picture of standards, which can be summarized in three main point:
* **Reactive Responsive Design:** Automatic reduction of `siblingCount` to 0 on mobile viewports to prevent horizontal scrolling (collapsing the layout from `< 1... 4 5 6... 9 >` to `< 1... 5... 9 >`).
* **Truncation (Ellipsis):** Implementation of robust logic for omission marks (`...`). Introduction of flexible props `siblingCount` (pages next to the current page) and `boundaryCount` (pages at the outer edges).
* **Full Internationalization (i18n):** Architecture for seamless translatability of all screen reader texts and text nodes (e.g., "Next Page", "Page 4 of 10").
* **Sequential Relationship:** include the `rel="next"` and `rel="prev"` attributes on the 'Next' and 'Previous' anchor tags to clarify the sequential relationship of the pages.

## Overview 🔍

The following overview consolidates the basic data of the 15 design systems. It specifies the exact naming of the pagination component in the respective system, documents the underlying technological basis, and list the most important architectural findings.
| **SNCF WCS** | `Pagination` | Web Components (StencilJS), Angular, React | ([https://wcs.dev.sncf/](https://wcs.dev.sncf/)) | Relies on standardized design tokens for consistent group styling across different frameworks. Separates visual representation from data state. |
| **Telefonica Mistica** | `Pagination` | React | [Mistica](https://github.com/Telefonica/mistica-web) | Deep theming support (e.g., Movistar Skin). As a purely presentational component, it relies on external state management in the parent container. |
| **Telekom Scale** | `scale-pagination` | Web Components (StencilJS) | ([https://telekom.github.io/scale/](https://telekom.github.io/scale/)) | Implements specific micro-interactions (1.05x hover scale) as well as detailed, integrated event tracking (`pagination.next_click`). |
| **Washington Post WPDS** | `Pagination` | React | ([https://build.washingtonpost.com/](https://www.google.com/search?q=https://build.washingtonpost.com/)) | Limits visual slots to a maximum of 7 elements. Designed for content-heavy environments (article archives, search results) to avoid visual overload with infinite search results. |

Several abstract architectural patterns can be derived and considered as practices for developing a scalable pagination component.
Beyond basic ARIA labels, semantic HTML plays a crucial role in pagination. It is an industry best practice to implement the `rel="next"` and `rel="prev"` HTML attributes on the respective pagination links. These attributes clarify the sequential relationship between pages for search engines, improve structural accessibility, and enable modern browsers to prefetch upcoming content, significantly improving the perceived performance of the application.
CSS functions like `sibling-index()` and `sibling-count()` can be utilized to dynamically style pagination items. However, because cross-browser support is still limited.

## Conclusion 🏁

Implementing pagination is more than visually rendering a numeric HTML list. It represents a critical interface between backend, frontend routing architecture, and cognitive ergonomics. The 15 examined design systems provide a consistent picture of standards, which can be summarized in three main point:
* **Reactive Responsive Design:** Automatic reduction of `siblingCount` to 0 on mobile viewports to prevent horizontal scrolling (collapsing the layout from `< 1... 4 5 6... 9 >` to `< 1... 5... 9 >`).
* **Truncation (Ellipsis):** Implementation of robust logic for omission marks (`...`). Introduction of flexible props `siblingCount` (pages next to the current page) and `boundaryCount` (pages at the outer edges).
* **Full Internationalization (i18n):** Architecture for seamless translatability of all screen reader texts and text nodes (e.g., "Next Page", "Page 4 of 10").
* **Sequential Relationship:** include the `rel="next"` and `rel="prev"` attributes on the 'Next' and 'Previous' anchor tags to clarify the sequential relationship of the pages.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🛠️configuration 📕documentation Improvements or additions to documentation

Projects

Status: ⏰ready for release

Development

Successfully merging this pull request may close these issues.

4 participants