From 55620b3ec4b0afaabecc3b10ba8ae1fa94d0b62f Mon Sep 17 00:00:00 2001 From: Foundups Date: Sat, 8 Nov 2025 23:32:20 +0900 Subject: [PATCH 01/11] fix(gotjunk): Fix icon visibility on map with dark backgrounds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Changed all navigation and map control buttons from white backgrounds to dark gray (bg-gray-800) to fix white-on-white visibility issue reported by user. Changes: - LeftSidebarNav: bg-white/90 β†’ bg-gray-800/90 for all 4 nav buttons - PigeonMapView: bg-white β†’ bg-gray-800 for zoom/center/legend controls - White icons now clearly visible on dark backgrounds - Provides contrast against light map tile backgrounds Fixes user feedback: "icons no longer display on the map view... need a lite color background and not white on white" πŸ€– Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- .../gotjunk/frontend/components/LeftSidebarNav.tsx | 8 ++++---- .../gotjunk/frontend/components/PigeonMapView.tsx | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/modules/foundups/gotjunk/frontend/components/LeftSidebarNav.tsx b/modules/foundups/gotjunk/frontend/components/LeftSidebarNav.tsx index 1c2dc86aa..1561b7131 100644 --- a/modules/foundups/gotjunk/frontend/components/LeftSidebarNav.tsx +++ b/modules/foundups/gotjunk/frontend/components/LeftSidebarNav.tsx @@ -79,7 +79,7 @@ export const LeftSidebarNav: React.FC = ({ className={`p-4 rounded-2xl backdrop-blur-md shadow-xl transition-all ${ activeTab === 'browse' ? 'bg-blue-500/70 ring-2 ring-blue-400 shadow-blue-500/50 border-2 border-blue-300' - : 'bg-white/90 hover:bg-white border-2 border-gray-300 shadow-2xl' + : 'bg-gray-800/90 hover:bg-gray-700/90 border-2 border-gray-600 shadow-2xl' }`} > @@ -94,7 +94,7 @@ export const LeftSidebarNav: React.FC = ({ className={`p-4 rounded-2xl backdrop-blur-md shadow-xl transition-all ${ activeTab === 'map' ? 'bg-blue-500/70 ring-2 ring-blue-400 shadow-blue-500/50 border-2 border-blue-300' - : 'bg-white/90 hover:bg-white border-2 border-gray-300 shadow-2xl' + : 'bg-gray-800/90 hover:bg-gray-700/90 border-2 border-gray-600 shadow-2xl' }`} > @@ -109,7 +109,7 @@ export const LeftSidebarNav: React.FC = ({ className={`p-4 rounded-2xl backdrop-blur-md shadow-xl transition-all ${ activeTab === 'myitems' ? 'bg-blue-500/70 ring-2 ring-blue-400 shadow-blue-500/50 border-2 border-blue-300' - : 'bg-white/90 hover:bg-white border-2 border-gray-300 shadow-2xl' + : 'bg-gray-800/90 hover:bg-gray-700/90 border-2 border-gray-600 shadow-2xl' }`} > @@ -124,7 +124,7 @@ export const LeftSidebarNav: React.FC = ({ className={`p-4 rounded-2xl backdrop-blur-md shadow-xl transition-all ${ activeTab === 'cart' ? 'bg-blue-500/70 ring-2 ring-blue-400 shadow-blue-500/50 border-2 border-blue-300' - : 'bg-white/90 hover:bg-white border-2 border-gray-300 shadow-2xl' + : 'bg-gray-800/90 hover:bg-gray-700/90 border-2 border-gray-600 shadow-2xl' }`} > diff --git a/modules/foundups/gotjunk/frontend/components/PigeonMapView.tsx b/modules/foundups/gotjunk/frontend/components/PigeonMapView.tsx index 42f2c3c6e..526c83115 100644 --- a/modules/foundups/gotjunk/frontend/components/PigeonMapView.tsx +++ b/modules/foundups/gotjunk/frontend/components/PigeonMapView.tsx @@ -92,14 +92,14 @@ export const PigeonMapView: React.FC = ({
+ )} ); }; diff --git a/modules/foundups/gotjunk/frontend/hooks/useLongPress.ts b/modules/foundups/gotjunk/frontend/hooks/useLongPress.ts index d4a9f235a..8f69b53c0 100644 --- a/modules/foundups/gotjunk/frontend/hooks/useLongPress.ts +++ b/modules/foundups/gotjunk/frontend/hooks/useLongPress.ts @@ -43,6 +43,7 @@ export function useLongPress({ const longPressTriggeredRef = useRef(false); const startPosRef = useRef<{ x: number; y: number } | null>(null); const lastLongPressTimeRef = useRef(0); + const lastTapTimeRef = useRef(0); // Prevent double-tap from touch+mouse events const clear = useCallback(() => { if (timerRef.current) { @@ -101,6 +102,17 @@ export function useLongPress({ // Fire tap only if long-press wasn't triggered if (!longPressTriggeredRef.current && onTap) { + const now = Date.now(); + + // Prevent double-tap from touch+mouse events (mobile browsers fire both) + // Skip if onTap was called within 300ms (debounce) + if (now - lastTapTimeRef.current < 300) { + console.log('[useLongPress] Skipping duplicate tap event (touch+mouse collision)'); + startPosRef.current = null; + return; + } + + lastTapTimeRef.current = now; onTap(event); }