diff --git a/packages/frontend/src/lib/components/pagination/pagination.svelte b/packages/frontend/src/lib/components/pagination/pagination.svelte new file mode 100644 index 0000000..6f9682b --- /dev/null +++ b/packages/frontend/src/lib/components/pagination/pagination.svelte @@ -0,0 +1,66 @@ + + +{#if totalPages > 1} +
+ + {#each pageNumbers() as p, i (i)} + {#if p === -1} + + {:else} + + {/if} + {/each} + +
+{/if} diff --git a/packages/frontend/src/routes/admin/articles/+page.svelte b/packages/frontend/src/routes/admin/articles/+page.svelte index 4562293..1072eca 100644 --- a/packages/frontend/src/routes/admin/articles/+page.svelte +++ b/packages/frontend/src/routes/admin/articles/+page.svelte @@ -13,6 +13,7 @@ import type { Article } from "$lib/types"; import TimeAgo from "javascript-time-ago"; import Meta from "$lib/components/meta/meta.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; const { data } = $props(); @@ -204,7 +205,7 @@ {#if data.total > data.limit} -
+
{$_("admin.users.showing", { values: { @@ -214,32 +215,15 @@ }, })} -
- - -
+ { + const params = new SvelteURLSearchParams(page.url.searchParams.toString()); + params.set("offset", String((p - 1) * data.limit)); + goto(`?${params.toString()}`); + }} + />
{/if}
diff --git a/packages/frontend/src/routes/admin/comments/+page.svelte b/packages/frontend/src/routes/admin/comments/+page.svelte index 35e78bd..69fde6d 100644 --- a/packages/frontend/src/routes/admin/comments/+page.svelte +++ b/packages/frontend/src/routes/admin/comments/+page.svelte @@ -11,6 +11,7 @@ import * as Dialog from "$lib/components/ui/dialog"; import TimeAgo from "javascript-time-ago"; import Meta from "$lib/components/meta/meta.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; const { data } = $props(); const timeAgo = new TimeAgo("en"); @@ -153,7 +154,7 @@ {#if data.total > data.limit} -
+
{$_("admin.users.showing", { values: { @@ -163,28 +164,15 @@ }, })} -
- - -
+ { + const params = new SvelteURLSearchParams(page.url.searchParams.toString()); + params.set("offset", String((p - 1) * data.limit)); + goto(`?${params.toString()}`); + }} + />
{/if}
diff --git a/packages/frontend/src/routes/admin/queues/+page.svelte b/packages/frontend/src/routes/admin/queues/+page.svelte index 7ac55c2..76b7f64 100644 --- a/packages/frontend/src/routes/admin/queues/+page.svelte +++ b/packages/frontend/src/routes/admin/queues/+page.svelte @@ -9,6 +9,7 @@ import { Badge } from "$lib/components/ui/badge"; import type { Job } from "$lib/services"; import Meta from "$lib/components/meta/meta.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; const { data } = $props(); @@ -271,7 +272,7 @@ {#if data.total > data.limit} -
+
{$_("admin.users.showing", { values: { @@ -281,24 +282,11 @@ }, })} -
- - -
+ navigate({ offset: String((p - 1) * data.limit) })} + />
{/if} {/if} diff --git a/packages/frontend/src/routes/admin/recordings/+page.svelte b/packages/frontend/src/routes/admin/recordings/+page.svelte index cf5ddf8..640fdba 100644 --- a/packages/frontend/src/routes/admin/recordings/+page.svelte +++ b/packages/frontend/src/routes/admin/recordings/+page.svelte @@ -12,6 +12,7 @@ import type { Recording } from "$lib/types"; import TimeAgo from "javascript-time-ago"; import Meta from "$lib/components/meta/meta.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; const { data } = $props(); const timeAgo = new TimeAgo("en"); @@ -179,7 +180,7 @@
{#if data.total > data.limit} -
+
{$_("admin.users.showing", { values: { @@ -189,28 +190,15 @@ }, })} -
- - -
+ { + const params = new SvelteURLSearchParams(page.url.searchParams.toString()); + params.set("offset", String((p - 1) * data.limit)); + goto(`?${params.toString()}`); + }} + />
{/if}
diff --git a/packages/frontend/src/routes/admin/users/+page.svelte b/packages/frontend/src/routes/admin/users/+page.svelte index d15b1d5..37d8bb7 100644 --- a/packages/frontend/src/routes/admin/users/+page.svelte +++ b/packages/frontend/src/routes/admin/users/+page.svelte @@ -13,6 +13,7 @@ import * as Dialog from "$lib/components/ui/dialog"; import type { User } from "$lib/types"; import Meta from "$lib/components/meta/meta.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; const { data } = $props(); @@ -228,7 +229,7 @@ {#if data.total > data.limit} -
+
{$_("admin.users.showing", { values: { @@ -238,32 +239,15 @@ }, })} -
- - -
+ { + const params = new SvelteURLSearchParams(page.url.searchParams.toString()); + params.set("offset", String((p - 1) * data.limit)); + goto(`?${params.toString()}`); + }} + />
{/if}
diff --git a/packages/frontend/src/routes/admin/videos/+page.svelte b/packages/frontend/src/routes/admin/videos/+page.svelte index b790134..a0f5ddf 100644 --- a/packages/frontend/src/routes/admin/videos/+page.svelte +++ b/packages/frontend/src/routes/admin/videos/+page.svelte @@ -12,6 +12,7 @@ import * as Dialog from "$lib/components/ui/dialog"; import type { Video } from "$lib/types"; import Meta from "$lib/components/meta/meta.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; const { data } = $props(); @@ -209,7 +210,7 @@ {#if data.total > data.limit} -
+
{$_("admin.users.showing", { values: { @@ -219,32 +220,15 @@ }, })} -
- - -
+ { + const params = new SvelteURLSearchParams(page.url.searchParams.toString()); + params.set("offset", String((p - 1) * data.limit)); + goto(`?${params.toString()}`); + }} + />
{/if}
diff --git a/packages/frontend/src/routes/magazine/+page.svelte b/packages/frontend/src/routes/magazine/+page.svelte index 08cbb52..5824358 100644 --- a/packages/frontend/src/routes/magazine/+page.svelte +++ b/packages/frontend/src/routes/magazine/+page.svelte @@ -13,6 +13,7 @@ import Meta from "$lib/components/meta/meta.svelte"; import SexyBackground from "$lib/components/background/background.svelte"; import PageHero from "$lib/components/page-hero/page-hero.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; const timeAgo = new TimeAgo("en"); const { data } = $props(); @@ -50,22 +51,6 @@ goto(`?${params.toString()}`); } - const totalPages = $derived(Math.ceil(data.total / data.limit)); - - const pageNumbers = $derived(() => { - const pages: (number | -1)[] = []; - if (totalPages <= 7) { - for (let i = 1; i <= totalPages; i++) pages.push(i); - } else { - pages.push(1); - if (data.page > 3) pages.push(-1); - for (let i = Math.max(2, data.page - 1); i <= Math.min(totalPages - 1, data.page + 1); i++) - pages.push(i); - if (data.page < totalPages - 2) pages.push(-1); - pages.push(totalPages); - } - return pages; - }); @@ -308,38 +293,13 @@ {/if} - {#if totalPages > 1} + {#if Math.ceil(data.total / data.limit) > 1}
-
- - {#each pageNumbers() as p, i (i)} - {#if p === -1} - - {:else} - - {/if} - {/each} - -
+

{$_("common.total_results", { values: { total: data.total } })}

diff --git a/packages/frontend/src/routes/models/+page.svelte b/packages/frontend/src/routes/models/+page.svelte index 3a278db..594b6c5 100644 --- a/packages/frontend/src/routes/models/+page.svelte +++ b/packages/frontend/src/routes/models/+page.svelte @@ -11,6 +11,7 @@ import Meta from "$lib/components/meta/meta.svelte"; import SexyBackground from "$lib/components/background/background.svelte"; import PageHero from "$lib/components/page-hero/page-hero.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; const { data } = $props(); @@ -43,22 +44,6 @@ goto(`?${params.toString()}`); } - const totalPages = $derived(Math.ceil(data.total / data.limit)); - - const pageNumbers = $derived(() => { - const pages: (number | -1)[] = []; - if (totalPages <= 7) { - for (let i = 1; i <= totalPages; i++) pages.push(i); - } else { - pages.push(1); - if (data.page > 3) pages.push(-1); - for (let i = Math.max(2, data.page - 1); i <= Math.min(totalPages - 1, data.page + 1); i++) - pages.push(i); - if (data.page < totalPages - 2) pages.push(-1); - pages.push(totalPages); - } - return pages; - }); @@ -196,38 +181,13 @@ {/if} - {#if totalPages > 1} + {#if Math.ceil(data.total / data.limit) > 1}
-
- - {#each pageNumbers() as p, i (i)} - {#if p === -1} - - {:else} - - {/if} - {/each} - -
+

{$_("common.total_results", { values: { total: data.total } })}

diff --git a/packages/frontend/src/routes/videos/+page.svelte b/packages/frontend/src/routes/videos/+page.svelte index 31924d7..fa59b17 100644 --- a/packages/frontend/src/routes/videos/+page.svelte +++ b/packages/frontend/src/routes/videos/+page.svelte @@ -11,6 +11,7 @@ import Meta from "$lib/components/meta/meta.svelte"; import SexyBackground from "$lib/components/background/background.svelte"; import PageHero from "$lib/components/page-hero/page-hero.svelte"; + import Pagination from "$lib/components/pagination/pagination.svelte"; import TimeAgo from "javascript-time-ago"; import { formatVideoDuration } from "$lib/utils"; @@ -46,22 +47,6 @@ goto(`?${params.toString()}`); } - const totalPages = $derived(Math.ceil(data.total / data.limit)); - - const pageNumbers = $derived(() => { - const pages: (number | -1)[] = []; - if (totalPages <= 7) { - for (let i = 1; i <= totalPages; i++) pages.push(i); - } else { - pages.push(1); - if (data.page > 3) pages.push(-1); - for (let i = Math.max(2, data.page - 1); i <= Math.min(totalPages - 1, data.page + 1); i++) - pages.push(i); - if (data.page < totalPages - 2) pages.push(-1); - pages.push(totalPages); - } - return pages; - }); @@ -256,38 +241,13 @@ {/if} - {#if totalPages > 1} + {#if Math.ceil(data.total / data.limit) > 1}
-
- - {#each pageNumbers() as p, i (i)} - {#if p === -1} - - {:else} - - {/if} - {/each} - -
+

{$_("common.total_results", { values: { total: data.total } })}