@@ -22,21 +22,36 @@ export const PaginatedNavigation = ({
2222 const generatePages = ( ) => {
2323 const pages : ( number | 'ellipsis' ) [ ] = [ ] ;
2424
25- if ( totalPages <= 5 ) {
25+ if ( totalPages <= 7 ) {
26+ // Show all pages if 7 or fewer
2627 for ( let i = 1 ; i <= totalPages ; i ++ ) {
2728 pages . push ( i ) ;
2829 }
29- } else if ( currentPage <= 3 ) {
30- for ( let i = 1 ; i <= Math . min ( currentPage + 2 , totalPages ) ; i ++ ) {
31- pages . push ( i ) ;
32- }
3330 } else {
31+ // Always show first page
3432 pages . push ( 1 ) ;
35- pages . push ( 'ellipsis' ) ;
3633
37- const maxPage = Math . min ( currentPage + 2 , totalPages ) ;
38- for ( let i = currentPage ; i <= maxPage ; i ++ ) {
39- pages . push ( i ) ;
34+ if ( currentPage <= 3 ) {
35+ // Near beginning: 1 2 3 4 ... last
36+ for ( let i = 2 ; i <= 4 ; i ++ ) {
37+ pages . push ( i ) ;
38+ }
39+ pages . push ( 'ellipsis' ) ;
40+ pages . push ( totalPages ) ;
41+ } else if ( currentPage >= totalPages - 2 ) {
42+ // Near end: 1 ... (last-3) (last-2) (last-1) last
43+ pages . push ( 'ellipsis' ) ;
44+ for ( let i = totalPages - 3 ; i <= totalPages ; i ++ ) {
45+ pages . push ( i ) ;
46+ }
47+ } else {
48+ // In middle: 1 ... (current-1) current (current+1) ... last
49+ pages . push ( 'ellipsis' ) ;
50+ for ( let i = currentPage - 1 ; i <= currentPage + 1 ; i ++ ) {
51+ pages . push ( i ) ;
52+ }
53+ pages . push ( 'ellipsis' ) ;
54+ pages . push ( totalPages ) ;
4055 }
4156 }
4257
0 commit comments