"use client"; import { useState, useEffect } from "react"; import { api } from "@/lib/api"; import { Card } from "@/components/ui/Card"; import { Spinner } from "@/components/ui/Spinner"; import type { Muscle } from "@/lib/types"; interface MusclesStepProps { selectedIds: number[]; onChange: (ids: number[]) => void; } export function MusclesStep({ selectedIds, onChange }: MusclesStepProps) { const [muscles, setMuscles] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { async function fetch() { try { const data = await api.getMuscles(); setMuscles(data); } catch (err) { console.error("Failed to fetch muscles:", err); } finally { setLoading(false); } } fetch(); }, []); const toggle = (id: number) => { if (selectedIds.includes(id)) { onChange(selectedIds.filter((i) => i !== id)); } else { onChange([...selectedIds, id]); } }; if (loading) { return (
); } return (

Target Muscles

Select the muscle groups you want to focus on. Leave empty to target all muscle groups equally.

{muscles.map((muscle) => { const isSelected = selectedIds.includes(muscle.id); return ( toggle(muscle.id)} className={`p-4 text-center transition-all duration-150 ${ isSelected ? "border-[#39FF14] bg-[rgba(57,255,20,0.1)]" : "" }`} > {muscle.name} ); })}
); }