Compare commits

...

4 Commits

Author SHA1 Message Date
Eshan Roy
6bc0c56de2 Merge PR #7 from XlebyllleK/master
feat: sort packages alphabetically
2025-01-12 10:57:28 +05:30
XlebyllleK
176bd3ef9d Update PackageList.tsx 2025-01-11 23:17:11 +02:00
XlebyllleK
3f2a66057a feat: Optimize package sorting with useMemo 2025-01-11 23:15:54 +02:00
XlebyllleK
9ff67af9f2 Sort packages alphabetically 2025-01-11 23:08:04 +02:00

View File

@@ -1,29 +1,42 @@
import {
JSX
JSX,
useMemo
} from 'react';
import { Package } from '../types';
import { PackageCard } from './PackageCard';
import {
Package
} from '../types';
import {
PackageCard
} from './PackageCard';
interface PackageListProps {
packages: Package[];
loading: boolean;
packages: Package[];
loading: boolean;
}
export function PackageList({ packages, loading }: PackageListProps): JSX.Element {
if (loading) {
return (
<div className="flex items-center justify-center h-64">
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500"></div>
</div>
export function PackageList({
packages,
loading
}: PackageListProps): JSX.Element {
if (loading) return (
<div className="flex items-center justify-center h-64">
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500"></div>
</div>
);
}
return (
<div className="grid gap-4">
{packages.map((pkg) => (
<PackageCard key={pkg.name} package={pkg} />
))}
</div>
);
}
const sortedPackages = useMemo(
() => [...packages].sort(
(a, b) => a.name.localeCompare(b.name)
), [packages]
);
return (
<div className="grid gap-4">
{sortedPackages.map((pkg) => (
<PackageCard key={pkg.name} package={pkg} />
))}
</div>
);
}