From 0dc0d272e1226d2a0cfa9acc16aa8ed7e7ab30bf Mon Sep 17 00:00:00 2001 From: "shakespeare.diy" Date: Thu, 23 Jul 2026 16:45:11 +0700 Subject: [PATCH] fix: filter panel overlap, Wallet & Stash rename, Sasquatch on all pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Filter panel (MapPage): - Sheet now h-[82vh] max-h-[680px] with flex-col layout - Scrollable content area uses flex-1 min-h-0 (proper flex children) - "Show Results" button is now flex-shrink-0 at bottom of column - No more overlap between Show Results and Stash/Tour quick action buttons Wallet & Stash rename: - Settings tab renamed from "Wallet" to "Wallet & Stash" - "Me" dropdown in mobile header shows "Wallet & Stash" for the wallet link Sasquatch persistent button (all pages): - Minimized bubble is now ALWAYS visible on every page (not just pages with a guide message) - Tapping the bubble on any page opens Sasquatch with a generic helpful greeting - Pages with specific context (/, /map, /lab, /onboarding) still show their custom message - Pages without context (/wallet, /settings, /stash, /events, etc.) now show a generic "Ask me anything" greeting with common questions - Removed the separate X close button (minimize was already the same) — bubble stays visible as entry point at all times - onPointerUp now also sets isVisible=true so panel opens on pages without a message Co-authored-by: shakespeare.diy --- src/components/Layout.tsx | 2 +- src/components/SasquatchGuide.tsx | 66 +++++++++++++++++++------------ src/pages/MapPage.tsx | 12 +++--- src/pages/SettingsPage.tsx | 4 +- 4 files changed, 49 insertions(+), 35 deletions(-) diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index 52a3523..f64e417 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -204,7 +204,7 @@ function MobileHeaderUserMenu({ - Wallet + Wallet & Stash diff --git a/src/components/SasquatchGuide.tsx b/src/components/SasquatchGuide.tsx index 2f96609..91f6835 100644 --- a/src/components/SasquatchGuide.tsx +++ b/src/components/SasquatchGuide.tsx @@ -358,7 +358,9 @@ export function SasquatchGuide({ message, onDismiss }: SasquatchGuideProps) { dragMoved.current = false; setTimeout(() => setIsDragging(false), 50); if (!wasDrag) { + // Always open the panel — even on pages without a context message setIsMinimized(false); + setIsVisible(true); } }, [setIsMinimized]); @@ -576,16 +578,33 @@ Instructions: }; }, [handleSendMessage, setIsMinimized]); - // Show if we have a message prop OR if we've been opened externally - const shouldShow = !!message || isVisible; - if (!shouldShow) return null; + // The minimized bubble is ALWAYS visible so the user can reopen Sasquatch on any page. + // The full panel shows only when there's a message or when opened externally/by user tap. + const shouldShowPanel = !!message || isVisible; const inputDisabled = isThinking; + // Build a fallback generic message for pages with no specific context + const activeMessage = message ?? { + id: 'generic', + title: 'SkateSpots Assistant 🦧', + message: "Yo! I'm The Sasquatch. Ask me anything about spots, events, coaches, gear, or how the app works. I've got live data from the SkateSpots relay!", + context: undefined, + suggestedQuestions: [ + 'Find spots near me', + 'Any upcoming events?', + 'What is Nostr?', + 'How do zaps work?', + 'What is My Stash?', + 'How to add a spot?', + ], + enableChat: true, + }; + return ( <> - {/* ── Minimized bubble — draggable ── */} - {isMinimized && ( + {/* ── Minimized bubble — always visible, draggable ── */} + {(!shouldShowPanel || isMinimized) && (
- {message.title} + {activeMessage.title}
+ {/* Minimize — keeps the bubble visible */} -
@@ -690,21 +704,21 @@ Instructions:
{/* Greeting */}

- {message.message} + {activeMessage.message}

{/* Action button */} - {message.action && ( + {activeMessage.action && ( )} {/* Chat section */} - {message.enableChat && ( + {activeMessage.enableChat && (
{!showChat ? ( ) : (
{/* Suggested questions */} - {chatMessages.length === 0 && message.suggestedQuestions && ( + {chatMessages.length === 0 && activeMessage.suggestedQuestions && (
Quick questions:
- {message.suggestedQuestions.map((q) => ( + {activeMessage.suggestedQuestions.map((q) => ( - - + + Filters {hasActiveFilters && ( @@ -702,7 +702,7 @@ export default function MapPage() { -
+
{/* Layer toggles */}

Show on Map

@@ -858,10 +858,10 @@ export default function MapPage() { )}
- {/* Apply button fixed at bottom */} -
+ {/* Show Results button — sticks to bottom, never overlaps content */} +