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 */} +