From 64d76f8347e2e0ca8cacea1fcfe9703964e8b02f Mon Sep 17 00:00:00 2001 From: Sean O'Connor Date: Fri, 5 Dec 2025 02:31:48 -0500 Subject: [PATCH] refactor: Streamline map loading and drawer rendering, remove tooltip arrow, and update Navbar tooltip styling with a pulsing indicator. --- src/app/page.tsx | 23 ++++++++--------------- src/components/MapLoader.tsx | 34 +++++++++++++--------------------- src/components/Navbar.tsx | 10 +++++++--- src/components/ui/tooltip.tsx | 1 - 4 files changed, 28 insertions(+), 40 deletions(-) diff --git a/src/app/page.tsx b/src/app/page.tsx index bd86dd1..6b5a7af 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -11,16 +11,11 @@ import { WelcomeModal } from "~/components/WelcomeModal"; export default function HomePage() { const [selectedShop, setSelectedShop] = useState(null); const [isDiscoveryOpen, setIsDiscoveryOpen] = useState(true); - const [isMapLoaded, setIsMapLoaded] = useState(false); useEffect(() => { // Hide discovery panel on mobile initially const isMobile = window.innerWidth < 640; // sm breakpoint setIsDiscoveryOpen(!isMobile); - - // Mark map as loaded after a short delay - const timer = setTimeout(() => setIsMapLoaded(true), 500); - return () => clearTimeout(timer); }, []); return ( @@ -40,16 +35,14 @@ export default function HomePage() { /> - {/* Right Drawer - only show after map loads */} - {isMapLoaded && ( - setSelectedShop(null)} - isOpen={isDiscoveryOpen} - /> - )} + {/* Right Drawer */} + setSelectedShop(null)} + isOpen={isDiscoveryOpen} + /> ); diff --git a/src/components/MapLoader.tsx b/src/components/MapLoader.tsx index 4022f43..0b3f08d 100644 --- a/src/components/MapLoader.tsx +++ b/src/components/MapLoader.tsx @@ -1,7 +1,6 @@ "use client"; import dynamic from "next/dynamic"; -import { useState, useEffect } from "react"; import { Skeleton } from "~/components/ui/skeleton"; import { Coffee, Loader2 } from "lucide-react"; @@ -23,27 +22,20 @@ interface MapLoaderProps { selectedShop: CoffeeShop | null; } -export default function MapLoader({ shops, onShopSelect, selectedShop }: MapLoaderProps) { - const [isLoading, setIsLoading] = useState(true); - - const Map = dynamic(() => import("./Map"), { - ssr: false, - loading: () => ( -
- -
- - -
+// Move dynamic import outside component to prevent re-imports +const Map = dynamic(() => import("./Map"), { + ssr: false, + loading: () => ( +
+ +
+ +
- ), - }); - - useEffect(() => { - // Small delay to ensure smooth transition - const timer = setTimeout(() => setIsLoading(false), 100); - return () => clearTimeout(timer); - }, []); +
+ ), +}); +export default function MapLoader({ shops, onShopSelect, selectedShop }: MapLoaderProps) { return ; } diff --git a/src/components/Navbar.tsx b/src/components/Navbar.tsx index fda9f13..6b4203d 100644 --- a/src/components/Navbar.tsx +++ b/src/components/Navbar.tsx @@ -1,4 +1,4 @@ -import { Coffee, PanelLeft, X } from "lucide-react"; +import { ArrowUp, Coffee, PanelLeft, X } from "lucide-react"; import { Button } from "~/components/ui/button"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "~/components/ui/tooltip"; import { useState, useEffect } from "react"; @@ -39,7 +39,11 @@ export default function Navbar({ isDiscoveryOpen, onToggleDiscovery }: NavbarPro <>
-
+
+ {/* Pulsing indicator ring */} + {showTooltip && ( +
+ )} @@ -57,7 +61,7 @@ export default function Navbar({ isDiscoveryOpen, onToggleDiscovery }: NavbarPro Toggle Panel - +

Discover Coffee Shops

diff --git a/src/components/ui/tooltip.tsx b/src/components/ui/tooltip.tsx index 907ab79..71d6112 100644 --- a/src/components/ui/tooltip.tsx +++ b/src/components/ui/tooltip.tsx @@ -52,7 +52,6 @@ function TooltipContent({ {...props} > {children} - )