# Pagination Navigate between multiple pages of content. ```svelte
{#each data as user} {/each}
ID Name Email Country
{user.id} {user.name} {user.email} {user.country}
(page = event.page)}> {#snippet children(pagination)} {#each pagination().pages as page, index (page)} {#if page.type === 'page'} {page.value} {:else} {/if} {/each} {/snippet}
``` ## Page Size ```svelte
{#each data as user} {/each}
ID Name Email Country
{user.id} {user.name} {user.email} {user.country}
(page = event.page)}> {#snippet children(pagination)} {#each pagination().pages as page, index (page)} {#if page.type === 'page'} {page.value} {:else} {/if} {/each} {/snippet}
``` ## Direction ```svelte
{#each data as user} {/each}
ID Name Email Country
{user.id} {user.name} {user.email} {user.country}
(page = event.page)} dir="rtl"> {#snippet children(pagination)} {#each pagination().pages as page, index (page)} {#if page.type === 'page'} {page.value} {:else} {/if} {/each} {/snippet}
``` ## Total Count For server-side pagination, your data source may be truncated. Make sure to specify the total records using `count`. ```json { "data": [...], "pagination": { "page": 1, "limit": 10, "count": 500, } } ``` {/* prettier-ignore */} ```svelte ... ``` ## API Reference | Property | Default | Type | | ---------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ids | - | Partial\<\{ root: string; ellipsis: (index: number) => string; prevTrigger: string; nextTrigger: string; item: (page: number) => string; }> \| undefined — The ids of the elements in the accordion. Useful for composition. | | translations | - | IntlTranslations \| undefined — Specifies the localized strings that identifies the accessibility elements and their states | | count | - | number \| undefined — Total number of data items | | pageSize | - | number \| undefined — The controlled number of data items per page | | defaultPageSize | 10 | number \| undefined — The initial number of data items per page when rendered. Use when you don't need to control the page size of the pagination. | | siblingCount | 1 | number \| undefined — Number of pages to show beside active page | | page | - | number \| undefined — The controlled active page | | defaultPage | 1 | number \| undefined — The initial active page when rendered. Use when you don't need to control the active page of the pagination. | | onPageChange | - | ((details: PageChangeDetails) => void) \| undefined — Called when the page number is changed | | onPageSizeChange | - | ((details: PageSizeChangeDetails) => void) \| undefined — Called when the page size is changed | | type | "button" | "button" \| "link" \| undefined — The type of the trigger element | | getPageUrl | - | ((details: PageUrlDetails) => string) \| undefined — Function to generate href attributes for pagination links. Only used when \`type\` is set to "link". | | dir | "ltr" | "ltr" \| "rtl" \| undefined — The document's text/writing direction. | | getRootNode | - | (() => ShadowRoot \| Node \| Document) \| undefined — A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron. | | element | - | Snippet\<\[HTMLAttributes\<"div">]> \| undefined — Render the element yourself | | value | - | () => PaginationApi\ | | element | - | Snippet\<\[HTMLAttributes\<"div">]> \| undefined — Render the element yourself | | children | - | Snippet\<\[() => PaginationApi\]> | | element | - | Snippet\<\[HTMLAttributes\<"button">]> \| undefined — Render the element yourself | | type | - | "page" | | value | - | number | | element | - | Snippet\<\[HTMLAttributes\<"a">]> \| undefined — Render the element yourself | | index | - | number | | element | - | Snippet\<\[HTMLAttributes\<"span">]> \| undefined — Render the element yourself | | element | - | Snippet\<\[HTMLAttributes\<"button">]> \| undefined — Render the element yourself |