From 7768d90b148617428fce4b0d7694dc704badb8f7 Mon Sep 17 00:00:00 2001 From: Szedann <65607498+Szedann@users.noreply.github.com> Date: Fri, 1 Aug 2025 21:46:32 +0200 Subject: [PATCH] fix: mod browser UI QC issues pt 2 --- .../src/components/content/PackageItem.tsx | 2 +- .../frontend/src/routes/app/browser/route.tsx | 109 ++++++++---------- .../web_common/src/components/Dropdown.tsx | 12 +- 3 files changed, 61 insertions(+), 62 deletions(-) diff --git a/apps/onelauncher/frontend/src/components/content/PackageItem.tsx b/apps/onelauncher/frontend/src/components/content/PackageItem.tsx index b9386b87..9eb681ac 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 => ( ))} diff --git a/apps/onelauncher/frontend/src/routes/app/browser/route.tsx b/apps/onelauncher/frontend/src/routes/app/browser/route.tsx index 36a0f716..ec8ee36b 100644 --- a/apps/onelauncher/frontend/src/routes/app/browser/route.tsx +++ b/apps/onelauncher/frontend/src/routes/app/browser/route.tsx @@ -9,6 +9,7 @@ import { AnimatedOutlet, Dropdown, Show, TextField } from '@onelauncher/common/c import { createFileRoute } from '@tanstack/react-router'; import { SearchMdIcon } from '@untitled-theme/icons-react'; import { useEffect, useState } from 'react'; +import { SelectValue } from 'react-aria-components'; export const Route = createFileRoute('/app/browser')({ component: RouteComponent, @@ -32,13 +33,13 @@ export function BrowserLayout({ children }: PropsWithChildren) { return (
-
+
-
+
@@ -47,57 +48,7 @@ export function BrowserLayout({ children }: PropsWithChildren) {
- -
-
-
- ); -} - -function BrowserSidebar() { - const context = useBrowserContext(); - const clusters = useClusters(); - - useEffect(() => { - const game_versions = context.cluster?.mc_version ? [context.cluster.mc_version] : null; - const loaders = context.cluster?.mc_loader ? [context.cluster.mc_loader] : null; - context.setQuery({ ...context.query, filters: { ...defaultFilters, ...context.query.filters, game_versions, loaders } }); - // eslint-disable-next-line react-hooks/exhaustive-deps -- loop - }, [context.cluster]); - - return ( -
-
-
-
Active Cluster
- { - if (!clusters) - return; - const cluster = clusters[index as number]; - context.setCluster(cluster); - }} - selectedKey={context.cluster ? clusters?.indexOf(context.cluster) : undefined} - > - {clusters?.map((cluster, index) => ( - - {cluster.name} - - ))} - -
-
-
Provider
- context.setProvider(id as typeof context.provider)} selectedKey={context.provider}> - {PROVIDERS.map(provider => ( - -
- - {provider} -
-
- ))} -
+ {/* */}
@@ -123,16 +74,16 @@ function BrowserCategories() { } return ( -
-
-
+
+ {/*
*/} +
-
-
Categories
+
+
Categories
{categories.map(category => (

switchCategory(category.id)} > @@ -147,11 +98,49 @@ function BrowserCategories() { } function BrowserToolbar() { + const clusters = useClusters(); const context = useBrowserContext(); const [query, setQuery] = useState(context.query.query ?? ''); + useEffect(() => { + const game_versions = context.cluster?.mc_version ? [context.cluster.mc_version] : null; + const loaders = context.cluster?.mc_loader ? [context.cluster.mc_loader] : null; + context.setQuery({ ...context.query, filters: { ...defaultFilters, ...context.query.filters, game_versions, loaders } }); + // eslint-disable-next-line react-hooks/exhaustive-deps -- loop + }, [context.cluster]); return (

-
+
+ context.setProvider(id as typeof context.provider)} + placeholder="Select a Provider" + selectedKey={context.provider} + > + {PROVIDERS.map(provider => ( + +
+ + {provider} +
+
+ ))} +
+ { + if (!clusters) + return; + const cluster = clusters[index as number]; + context.setCluster(cluster); + }} + placeholder="Select a cluster" + selectedKey={context.cluster ? clusters?.indexOf(context.cluster) : undefined} + > + {clusters?.map((cluster, index) => ( + + {cluster.name} + + ))} + +
customMinimalIcon?: React.ReactNode; popoverClassName?: string; + selectValue?: (arg1: SelectValueRenderProps & { defaultChildren: React.ReactNode | undefined }) => string; } export function Dropdown(props: DropdownProps) { @@ -115,6 +118,7 @@ export function Dropdown(props: DropdownProps) { customMinimalIcon, minimal, popoverClassName, + selectValue, ...rest } = props; @@ -129,7 +133,13 @@ export function Dropdown(props: DropdownProps) {