mirror of
https://github.com/Snigdha-OS/package-browser.git
synced 2025-09-06 04:35:17 +02:00
Compare commits
4 Commits
f36187ec73
...
6bc0c56de2
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6bc0c56de2 | ||
![]() |
176bd3ef9d | ||
![]() |
3f2a66057a | ||
![]() |
9ff67af9f2 |
@@ -1,29 +1,42 @@
|
|||||||
import {
|
import {
|
||||||
JSX
|
JSX,
|
||||||
|
useMemo
|
||||||
} from 'react';
|
} from 'react';
|
||||||
|
|
||||||
import { Package } from '../types';
|
import {
|
||||||
import { PackageCard } from './PackageCard';
|
Package
|
||||||
|
} from '../types';
|
||||||
|
|
||||||
|
import {
|
||||||
|
PackageCard
|
||||||
|
} from './PackageCard';
|
||||||
|
|
||||||
interface PackageListProps {
|
interface PackageListProps {
|
||||||
packages: Package[];
|
packages: Package[];
|
||||||
loading: boolean;
|
loading: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function PackageList({ packages, loading }: PackageListProps): JSX.Element {
|
export function PackageList({
|
||||||
if (loading) {
|
packages,
|
||||||
return (
|
loading
|
||||||
<div className="flex items-center justify-center h-64">
|
}: PackageListProps): JSX.Element {
|
||||||
<div className="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500"></div>
|
if (loading) return (
|
||||||
</div>
|
<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 (
|
const sortedPackages = useMemo(
|
||||||
<div className="grid gap-4">
|
() => [...packages].sort(
|
||||||
{packages.map((pkg) => (
|
(a, b) => a.name.localeCompare(b.name)
|
||||||
<PackageCard key={pkg.name} package={pkg} />
|
), [packages]
|
||||||
))}
|
);
|
||||||
</div>
|
|
||||||
);
|
return (
|
||||||
}
|
<div className="grid gap-4">
|
||||||
|
{sortedPackages.map((pkg) => (
|
||||||
|
<PackageCard key={pkg.name} package={pkg} />
|
||||||
|
))}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user