From b787ce4fc18987a887bbac1a65deb07c6dde64e1 Mon Sep 17 00:00:00 2001 From: Mark Malstrom Date: Wed, 4 Jun 2025 00:16:17 -0500 Subject: [PATCH 1/2] Add mobile filter dialog --- app/components/filters/Filters.tsx | 8 ++++++-- app/components/filters/MobileFilters.tsx | 20 ++++++++++++++++++++ app/routes/_index/route.tsx | 4 ++++ 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 app/components/filters/MobileFilters.tsx diff --git a/app/components/filters/Filters.tsx b/app/components/filters/Filters.tsx index fce34c3..b5b3dd4 100644 --- a/app/components/filters/Filters.tsx +++ b/app/components/filters/Filters.tsx @@ -1,9 +1,13 @@ import { DisclosureGroup } from "react-aria-components"; import * as Stars from "./Stars"; -export function Filters() { +import type { ClassProps } from "~/lib/props"; + +export function Filters( + { className = "sticky top-0 mx-20 hidden h-screen pt-10 lg:block" }: ClassProps = {}, +) { return ( - + {/* TODO: Search */} {/* TODO: Tags */} diff --git a/app/components/filters/MobileFilters.tsx b/app/components/filters/MobileFilters.tsx new file mode 100644 index 0000000..f59af77 --- /dev/null +++ b/app/components/filters/MobileFilters.tsx @@ -0,0 +1,20 @@ +import { Button, Dialog, DialogTrigger, Modal } from "react-aria-components"; +import { Filters } from "./Filters"; + +export function MobileFilters() { + return ( + + + + + + + + + ); +} diff --git a/app/routes/_index/route.tsx b/app/routes/_index/route.tsx index 075699d..4c8b2da 100644 --- a/app/routes/_index/route.tsx +++ b/app/routes/_index/route.tsx @@ -3,6 +3,7 @@ import { AnimatePresence, motion } from "motion/react"; import { isRouteErrorResponse, useNavigate } from "react-router"; import { Recommendation } from "~/components/Recommendation"; import { Filters } from "~/components/filters/Filters"; +import { MobileFilters } from "~/components/filters/MobileFilters"; import { getCollection } from "~/lib/content"; import { stores } from "~/lib/stores.client"; import { filterRecs, Stars } from "./utilities"; @@ -72,6 +73,9 @@ export default function Component({ loaderData }: Route.ComponentProps) {

Recommendations

+
+ +
From ce14f9baea01a1f92fbadbb508adc68ddac4fd78 Mon Sep 17 00:00:00 2001 From: Mark Malstrom Date: Wed, 4 Jun 2025 00:28:55 -0500 Subject: [PATCH 2/2] Refine mobile filter controls --- app/components/filters/MobileFilters.tsx | 34 ++++++++++++++---------- app/routes/_index/route.tsx | 12 +++++---- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/app/components/filters/MobileFilters.tsx b/app/components/filters/MobileFilters.tsx index f59af77..fc9104e 100644 --- a/app/components/filters/MobileFilters.tsx +++ b/app/components/filters/MobileFilters.tsx @@ -1,20 +1,26 @@ -import { Button, Dialog, DialogTrigger, Modal } from "react-aria-components"; +import { Button, Disclosure, DisclosurePanel } from "react-aria-components"; +import { Bars3Icon, XMarkIcon } from "@heroicons/react/24/solid"; import { Filters } from "./Filters"; export function MobileFilters() { return ( - - - - - - - - + + {({ open }) => ( + <> + + + + + + )} + ); } diff --git a/app/routes/_index/route.tsx b/app/routes/_index/route.tsx index 4c8b2da..200d4b3 100644 --- a/app/routes/_index/route.tsx +++ b/app/routes/_index/route.tsx @@ -69,14 +69,16 @@ export async function clientLoader({ request, serverLoader }: Route.ClientLoader export default function Component({ loaderData }: Route.ComponentProps) { return ( -
+
-

Recommendations

-
+
+

+ Recommendations +

-
-
+ +
{loaderData.filteredRecs.map((rec) => (