diff --git a/CHANGELOG.md b/CHANGELOG.md
index 14c2447..7de642f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed
- Replaced project card grid with sortable data table on Home page for better handling of large project lists
+- Replaced package card grid with sortable data table on Project page for consistency
- Improved pod naming: Orchard pods now named `orchard-{env}-server-*` for clarity (#51)
### Fixed
diff --git a/frontend/src/pages/ProjectPage.tsx b/frontend/src/pages/ProjectPage.tsx
index 6b8a99e..75ad577 100644
--- a/frontend/src/pages/ProjectPage.tsx
+++ b/frontend/src/pages/ProjectPage.tsx
@@ -1,23 +1,17 @@
import { useState, useEffect, useCallback } from 'react';
-import { useParams, Link, useSearchParams, useNavigate, useLocation } from 'react-router-dom';
+import { useParams, useSearchParams, useNavigate, useLocation } from 'react-router-dom';
import { Project, Package, PaginatedResponse, AccessLevel } from '../types';
import { getProject, listPackages, createPackage, getMyProjectAccess, UnauthorizedError, ForbiddenError } from '../api';
import { Breadcrumb } from '../components/Breadcrumb';
import { Badge } from '../components/Badge';
+import { DataTable } from '../components/DataTable';
import { SearchInput } from '../components/SearchInput';
-import { SortDropdown, SortOption } from '../components/SortDropdown';
import { FilterChip, FilterChipGroup } from '../components/FilterChip';
import { Pagination } from '../components/Pagination';
import { AccessManagement } from '../components/AccessManagement';
import { useAuth } from '../contexts/AuthContext';
import './Home.css';
-const SORT_OPTIONS: SortOption[] = [
- { value: 'name', label: 'Name' },
- { value: 'created_at', label: 'Created' },
- { value: 'updated_at', label: 'Updated' },
-];
-
const FORMAT_OPTIONS = ['generic', 'npm', 'pypi', 'docker', 'deb', 'rpm', 'maven', 'nuget', 'helm'];
function formatBytes(bytes: number): string {
@@ -140,8 +134,9 @@ function ProjectPage() {
updateParams({ search: value, page: '1' });
};
- const handleSortChange = (newSort: string, newOrder: 'asc' | 'desc') => {
- updateParams({ sort: newSort, order: newOrder, page: '1' });
+ const handleSortChange = (columnKey: string) => {
+ const newOrder = columnKey === sort ? (order === 'asc' ? 'desc' : 'asc') : 'asc';
+ updateParams({ sort: columnKey, order: newOrder, page: '1' });
};
const handleFormatChange = (value: string) => {
@@ -294,7 +289,6 @@ function ProjectPage() {
))}
-
No packages match your filters. Try adjusting your search.
- ) : ( -No packages yet. Create your first package to start uploading artifacts!
- )} -{pkg.description}
} +