Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/ui/components/mobile/MobileCarousel.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@ export function MobileCarousel({
<div className="flex touch-pan-y">
{/* Slide 1: Body Heatmap (NAV-03: default view) */}
<div className="flex-[0_0_100%] min-w-0 px-4">
<MobileHeatmap profileId={profileId} daysBack={daysBack} />
<MobileHeatmap
profileId={profileId}
daysBack={daysBack}
isActive={selectedIndex === 0}
/>
</div>

{/* Slide 2: Muscle List */}
Expand Down
14 changes: 13 additions & 1 deletion src/ui/components/mobile/MobileHeatmap.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import { MuscleDetailModal } from './MuscleDetailModal';
interface MobileHeatmapProps {
profileId: string | null;
daysBack?: number;
isActive?: boolean;
}

/**
Expand Down Expand Up @@ -130,7 +131,11 @@ interface MuscleStats {
* Mobile heatmap component.
* Displays a single body view with 3D flip animation between front and back.
*/
export function MobileHeatmap({ profileId, daysBack = 7 }: MobileHeatmapProps): React.ReactElement {
export function MobileHeatmap({
profileId,
daysBack = 7,
isActive = true,
}: MobileHeatmapProps): React.ReactElement {
const { stats, isLoading, error } = useScientificMuscleVolume(profileId, daysBack);
const { config } = useEffectiveMuscleGroupConfig(profileId);
const [view, setView] = useSessionState<'front' | 'back'>(
Expand All @@ -148,6 +153,13 @@ export function MobileHeatmap({ profileId, daysBack = 7 }: MobileHeatmapProps):
}
}, [tappedRegion]);

// Close modal when carousel navigates away from heatmap
useEffect(() => {
if (!isActive) {
setSelectedRegion(null);
}
}, [isActive]);

// Create set of hidden muscles for quick lookup
const hiddenMuscles = useMemo(
() => new Set<ScientificMuscle>(config.hidden),
Expand Down