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..fc9104e --- /dev/null +++ b/app/components/filters/MobileFilters.tsx @@ -0,0 +1,26 @@ +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 075699d..200d4b3 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"; @@ -68,11 +69,16 @@ export async function clientLoader({ request, serverLoader }: Route.ClientLoader export default function Component({ loaderData }: Route.ComponentProps) { return ( -
+
-

Recommendations

-
+
+

+ Recommendations +

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