From 2d02f64239f4ab4ffbcbea3f6e798a314aa7151a Mon Sep 17 00:00:00 2001 From: Szedann <65607498+Szedann@users.noreply.github.com> Date: Sun, 20 Jul 2025 20:56:33 +0200 Subject: [PATCH] feat: featured gallery --- .../src/components/content/PackageItem.tsx | 6 ++-- .../frontend/src/routes/app/browser/index.tsx | 32 +++++++++++++------ .../frontend/src/routes/app/browser/route.tsx | 4 +-- packages/core/src/api/packages/data.rs | 11 +++++++ .../src/api/packages/provider/modrinth.rs | 28 ++++++++++++++-- packages/web_common/src/theme.css | 9 +----- 6 files changed, 66 insertions(+), 24 deletions(-) diff --git a/apps/onelauncher/frontend/src/components/content/PackageItem.tsx b/apps/onelauncher/frontend/src/components/content/PackageItem.tsx index d668c161..ef7c9acf 100644 --- a/apps/onelauncher/frontend/src/components/content/PackageItem.tsx +++ b/apps/onelauncher/frontend/src/components/content/PackageItem.tsx @@ -13,7 +13,7 @@ function includes(list: { includes: (arg0: TArray) => boole export function PackageGrid({ items, provider }: { items: Array; provider: Provider }) { return ( -
+
{items.map(item => ( ))} @@ -45,11 +45,11 @@ export function PackageItem({ provider, ...item }: SearchResult & { provider: Pr {`Icon {`Icon - +
{loaders.toSpliced(loaders.length > 3 ? 2 : 3).map(loader => )} diff --git a/apps/onelauncher/frontend/src/routes/app/browser/index.tsx b/apps/onelauncher/frontend/src/routes/app/browser/index.tsx index 36c7b2c4..fdb00cdd 100644 --- a/apps/onelauncher/frontend/src/routes/app/browser/index.tsx +++ b/apps/onelauncher/frontend/src/routes/app/browser/index.tsx @@ -27,19 +27,20 @@ function RouteComponent() { function Featured() { // const context = useBrowserContext(); - const [provider, slug] = useMemo<[Provider, string]>(() => ['Modrinth', 'sodium'], []); + const [provider, slug] = useMemo<[Provider, string]>(() => ['Modrinth', 'iris'], []); const featuredPackage = usePackageData(provider, slug, {}, 'getFeatured'); const navigate = useNavigate(); - + const featuredImageIndex = useMemo(() => featuredPackage.data?.gallery.findIndex(image => image.featured), [featuredPackage.data]); + const [selectedImage, setSelectedImage] = useState(featuredImageIndex ?? 0); return (
-
Featured
-
+
Featured
+
- thumbnail + thumbnail
-
+

{featuredPackage.data?.name}

@@ -49,7 +50,20 @@ function Featured() {
-

{featuredPackage.data?.short_desc}

+

{featuredPackage.data?.short_desc}

+ +
+ {featuredPackage.data?.gallery.map( + (image, index) => ( + setSelectedImage(index)} + src={image.url} + /> + ), + )} +