ReactJS paginated component with React Router
Your code looks quite reasonable. There are only a few small things I notice:

Indent the JSX in App a bit more: ScrollToTop is a child of Router, so it should be indented further, not on the same level as Router. (It doesn't really make a difference here, but it's good to be consistent, and could be an improvement if that section ever got more complicated)

Avoid let, prefer const - ESLint rule here.

Or, in the case of oneBasedNewPage, consider defining the argument with that name instead of creating a new variable - and maybe call it oneIndexed, not oneBased:
const handleChange = (
  event: React.MouseEvent&lt;HTMLButtonElement&gt; | null,
  oneIndexedNewPage: number
) =&gt; {


URLSearchParams does not differentiate between numbers and strings.
urlParams.set(&quot;page&quot;, oneBasedNewPage.toString());

can be
urlParams.set(&quot;page&quot;, oneIndexedNewPage);

if you wish.

Consider if using Math.min might be clearer than the conditional operator:
function getPageNumber() {
  const newPage = parseInt(urlParams.get(&quot;page&quot;)) || DEFAULT_PAGE;
  return Math.min(newPage, MAX_PAGE_COUNT);
}