From 5ec9a8a07a56a236385bcda54e65e467a6dca771 Mon Sep 17 00:00:00 2001 From: Noah Hernandez <63211322+oahnh@users.noreply.github.com> Date: Sat, 2 Dec 2023 15:36:55 -0800 Subject: [PATCH] feat(map): adds preview component, updates UI --- src/app/siteMapPage/page.tsx | 28 ++-- .../FilterButton/FilterButton.tsx | 21 ++- .../userComponents/SiteMap/Control.tsx | 85 +++++++++++ .../SiteMap/DisplayPreviewCard.tsx | 102 +++++++++++++ .../userComponents/SiteMap/SiteMap.tsx | 124 +++++++++++----- src/supabase/media/queries.ts | 22 +++ src/supabase/tours/queries.tsx | 14 ++ src/types/supabase.ts | 137 +++++++++++++++++- 8 files changed, 476 insertions(+), 57 deletions(-) create mode 100644 src/components/userComponents/SiteMap/Control.tsx create mode 100644 src/components/userComponents/SiteMap/DisplayPreviewCard.tsx diff --git a/src/app/siteMapPage/page.tsx b/src/app/siteMapPage/page.tsx index f12e594d..6c3e9b6a 100644 --- a/src/app/siteMapPage/page.tsx +++ b/src/app/siteMapPage/page.tsx @@ -19,23 +19,33 @@ const SiteMap = dynamic( }, ); + + /** * @returns Page for the interactive map */ function MapPage() { + + // move tour logic here: need to share state between filter + const handleFilter = () => {}; + + const renderFilterContainer = () => ( +
+

FILTER BY

+
+ {filterButtonContent && + filterButtonContent.map(text => ( + + ))} +
+
+ ); + return ( <>
-
-

Site Map

-
- {filterButtonContent && - filterButtonContent.map(text => ( - - ))} -
-
+ {renderFilterContainer()}
diff --git a/src/components/userComponents/FilterButton/FilterButton.tsx b/src/components/userComponents/FilterButton/FilterButton.tsx index cd304413..019ca7e9 100644 --- a/src/components/userComponents/FilterButton/FilterButton.tsx +++ b/src/components/userComponents/FilterButton/FilterButton.tsx @@ -5,11 +5,22 @@ interface FilterButtonProps { onClick?: () => void; } -function FilterButton({ content, ...children }: FilterButtonProps) { +/** + * + * @param onClick.content + * @param onClick function to handle the functionality we want to tie to our filter buttons + * @param content is the content to be rendered in the button + * @param root0.onClick + * @param onClick.onClick + */ +function FilterButton({ content, onClick, ...children }: FilterButtonProps) { const [isSelected, setIsSelected] = useState(false); - const defaultStyle = 'bg-[#4b711d]/[0.13] text-[#4B711D] border-[#547829]'; - const selectedStyle = 'bg-[#547829] text-white border-[#547829]'; + const selectedStyle = 'bg-[#7ca24e]/[0.3]'; + + const buttonClass = `py-2 px-4 rounded-2xl whitespace-nowrap border-[0.8px] border-[#386131] border-solid flex-nowrap text-[#386131] ${ + isSelected ? selectedStyle : '' + }`; const handleClick = () => { setIsSelected(!isSelected); @@ -18,9 +29,7 @@ function FilterButton({ content, ...children }: FilterButtonProps) { return (