workout-stepper-footer.tsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. "use client";
  2. import { ArrowLeft, ArrowRight } from "lucide-react";
  3. import { useI18n } from "locales/client";
  4. import { Button } from "@/components/ui/button";
  5. export function WorkoutBuilderFooter({
  6. currentStep,
  7. totalSteps,
  8. canContinue,
  9. onPrevious,
  10. onNext,
  11. onStartWorkout,
  12. selectedEquipment,
  13. selectedMuscles,
  14. }: {
  15. currentStep: number;
  16. totalSteps: number;
  17. canContinue: boolean;
  18. onPrevious: VoidFunction;
  19. onNext: VoidFunction;
  20. onStartWorkout?: VoidFunction;
  21. selectedEquipment: any[];
  22. selectedMuscles: any[];
  23. }) {
  24. const t = useI18n();
  25. const isFirstStep = currentStep === 1;
  26. const isFinalStep = currentStep === totalSteps;
  27. return (
  28. <div className="w-full sticky bottom-0 z-10">
  29. {/* Mobile layout - vertical stack */}
  30. <div className="flex flex-col gap-4 px-2 sm:px-6 pb-2">
  31. {/* Center stats on top for mobile */}
  32. <div className="flex items-center justify-center"></div>
  33. {/* Navigation buttons */}
  34. <div className="min-h-12 flex items-center justify-between gap-3 bg-white dark:bg-slate-900 w-full p-0.5 border border-slate-400 dark:border-slate-700 rounded-full">
  35. {/* Previous button */}
  36. <Button className="flex-1 rounded-full min-h-12" disabled={isFirstStep} onClick={onPrevious} size="default" variant="ghost">
  37. <div className="flex items-center gap-2">
  38. <ArrowLeft className="h-4 w-4" />
  39. <span className="font-medium">{t("workout_builder.navigation.previous")}</span>
  40. </div>
  41. </Button>
  42. {/* Next/Start Workout button */}
  43. <Button
  44. className="flex-1 rounded-full bg-blue-600 hover:bg-blue-700 min-h-12 dark:bg-blue-500 dark:hover:bg-blue-600"
  45. disabled={!canContinue}
  46. onClick={isFinalStep ? () => onStartWorkout?.() : onNext}
  47. size="default"
  48. variant="default"
  49. >
  50. <div className="flex items-center justify-center gap-2">
  51. <span className="font-semibold">{t("workout_builder.navigation.continue")}</span>
  52. <ArrowRight className="h-4 w-4" />
  53. </div>
  54. </Button>
  55. </div>
  56. </div>
  57. </div>
  58. );
  59. }