+
+
No articles found
+
Try adjusting your search query
+
+
+ );
+ }
+
+ return (
+
+ {/* Active Filters Display */}
+ {(currentSearchQuery || currentTitleQuery || currentAuthorQuery || currentAbstractQuery) && (
+
+
+
+
Active Filters:
+
+
+
+ {currentSearchQuery && (
+
+ General: {currentSearchQuery}
+
+
+ )}
+ {currentTitleQuery && (
+
+ Title: {currentTitleQuery}
+
+
+ )}
+ {currentAuthorQuery && (
+
+ Author: {currentAuthorQuery}
+
+
+ )}
+ {currentAbstractQuery && (
+
+ Abstract: {currentAbstractQuery}
+
+
+ )}
+
+
+
+ )}
+
+ {/* Articles List */}
+ {articles.map((article) => (
+
+ ))}
+
+ {/* Fixed Pagination at Bottom */}
+
+
+
+
+ {/* Previous Button */}
+
+ 1 ? generatePageUrl(currentPage - 1) : "#"}
+ onClick={(e) => {
+ e.preventDefault();
+ if (currentPage > 1) navigateToPage(currentPage - 1);
+ }}
+ className={`text-white hover:bg-gray-700 border-gray-600 ${currentPage <= 1 ? "pointer-events-none opacity-50" : ""}`}
+ />
+
+
+ {/* Show a few pages around current */}
+ {currentPage > 2 && (
+
+ {
+ e.preventDefault();
+ navigateToPage(currentPage - 2);
+ }}
+ className="text-white hover:bg-gray-700 border-gray-600"
+ >
+ {currentPage - 2}
+
+
+ )}
+
+ {currentPage > 1 && (
+
+ {
+ e.preventDefault();
+ navigateToPage(currentPage - 1);
+ }}
+ className="text-white hover:bg-gray-700 border-gray-600"
+ >
+ {currentPage - 1}
+
+
+ )}
+
+ {/* Current Page */}
+
+
+ {currentPage}
+
+
+
+ {/* Next pages */}
+ {hasNextPage && (
+
+ {
+ e.preventDefault();
+ navigateToPage(currentPage + 1);
+ }}
+ className="text-white hover:bg-gray-700 border-gray-600"
+ >
+ {currentPage + 1}
+
+
+ )}
+
+ {hasNextPage && (
+
+ {
+ e.preventDefault();
+ navigateToPage(currentPage + 2);
+ }}
+ className="text-white hover:bg-gray-700 border-gray-600"
+ >
+ {currentPage + 2}
+
+
+ )}
+
+ {/* Ellipsis if there are likely more pages */}
+ {hasNextPage && currentPage > 1 && (
+
+
+
+ )}
+
+ {/* Next Button */}
+
+ {
+ e.preventDefault();
+ if (hasNextPage) navigateToPage(currentPage + 1);
+ }}
+ className={`text-white hover:bg-gray-700 border-gray-600 ${!hasNextPage ? "pointer-events-none opacity-50" : ""}`}
+ />
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/src/components/ui/aspect-ratio.tsx b/src/components/ui/aspect-ratio.tsx
new file mode 100644
index 0000000..3df3fd0
--- /dev/null
+++ b/src/components/ui/aspect-ratio.tsx
@@ -0,0 +1,11 @@
+"use client"
+
+import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio"
+
+function AspectRatio({
+ ...props
+}: React.ComponentProps