Merge version_2 into main

Merge version_2 into main
This commit was merged in pull request #14.
This commit is contained in:
2026-03-11 19:57:08 +00:00
4 changed files with 6 additions and 82 deletions

View File

@@ -13,76 +13,29 @@ import SocialProofOne from '@/components/sections/socialProof/SocialProofOne';
import ContactText from '@/components/sections/contact/ContactText';
import FooterLogoEmphasis from '@/components/sections/footer/FooterLogoEmphasis';
import { Activity, Apple, Brain, Dumbbell, Heart, Target, Zap, Users, Star, TrendingDown, TrendingUp } from 'lucide-react';
import { useWorkoutStorage } from '@/hooks/useWorkoutStorage';
import { useEffect, useState } from 'react';
export default function LandingPage() {
const { metrics: userMetrics, saveWorkout, getWorkoutsByType } = useWorkoutStorage();
const [displayMetrics, setDisplayMetrics] = useState([
const displayMetrics = [
{ id: "1", value: "10.000+", description: "Passos diários rastreados em tempo real com motivação visual de progresso." },
{ id: "2", value: "500 kg", description: "Volume total de peso levantado monitorado com progressão semanal automática." },
{ id: "3", value: "150+ km", description: "Distância corrida mapeada com GPS, ritmo calculado e calorias precisas." },
{ id: "4", value: "42 dias", description: "Sequência de treinos consistentes com badges de dedicação desbloqueados." }
]);
useEffect(() => {
if (userMetrics) {
const updatedMetrics = [
{
id: "1", value: userMetrics.totalDistance > 0 ? `${Math.round(userMetrics.totalDistance).toLocaleString()}+` : "10.000+", description: "Passos diários rastreados em tempo real com motivação visual de progresso."
},
{
id: "2", value: userMetrics.totalWeight > 0 ? `${Math.round(userMetrics.totalWeight)} kg` : "500 kg", description: "Volume total de peso levantado monitorado com progressão semanal automática."
},
{
id: "3", value: userMetrics.totalDistance > 0 ? `${Math.round(userMetrics.totalDistance)}+ km` : "150+ km", description: "Distância corrida mapeada com GPS, ritmo calculado e calorias precisas."
},
{
id: "4", value: userMetrics.consistency > 0 ? `${userMetrics.consistency} dias` : "42 dias", description: "Sequência de treinos consistentes com badges de dedicação desbloqueados."
}
];
setDisplayMetrics(updatedMetrics);
}
}, [userMetrics]);
];
const handleCardioInteraction = (data: any) => {
saveWorkout({
type: 'cardio',
date: new Date().toISOString().split('T')[0],
data: { ...data, timestamp: Date.now() }
});
console.log('Cardio interaction:', data);
};
const handleTrainingInteraction = (data: any) => {
saveWorkout({
type: 'training',
date: new Date().toISOString().split('T')[0],
data: { ...data, timestamp: Date.now() }
});
console.log('Training interaction:', data);
};
const handleWorkoutMode = (productId: string, productName: string) => {
saveWorkout({
type: 'training',
date: new Date().toISOString().split('T')[0],
data: {
workout: productName,
startTime: Date.now(),
productId,
}
});
console.log('Workout mode:', productId, productName);
};
const handleNutritionSelect = (planId: string, planName: string) => {
saveWorkout({
type: 'nutrition',
date: new Date().toISOString().split('T')[0],
data: {
plan: planName,
planId,
selectedAt: Date.now(),
}
});
console.log('Nutrition select:', planId, planName);
};
return (

View File

@@ -1,8 +1,6 @@
'use client';
import { useWorkoutStorage } from '@/hooks/useWorkoutStorage';
import FeatureCardTwentyFive from './FeatureCardTwentyFive';
import { ReactNode } from 'react';
interface FeatureCardTwentyFiveWithSavingProps {
title: string;
@@ -34,20 +32,7 @@ export function FeatureCardTwentyFiveWithSaving({
onFeatureInteraction,
workoutType,
}: FeatureCardTwentyFiveWithSavingProps) {
const { saveWorkout } = useWorkoutStorage();
const handleFeatureInteraction = (featureIndex: number, data?: any) => {
if (workoutType && data) {
const workoutData = {
type: workoutType,
date: new Date().toISOString().split('T')[0],
data: {
feature: features[featureIndex]?.title,
...data,
},
};
saveWorkout(workoutData as any);
}
onFeatureInteraction?.(data);
};

View File

@@ -1,6 +1,5 @@
'use client';
import { useWorkoutStorage } from '@/hooks/useWorkoutStorage';
import PricingCardOne from './PricingCardOne';
interface NutritionPlan {
@@ -35,8 +34,6 @@ export function PricingCardOneWithSaving({
useInvertedBackground,
onNutritionPlanSelected,
}: PricingCardOneWithSavingProps) {
const { saveWorkout } = useWorkoutStorage();
const handlePlanSelection = (planId: string, planBadge: string) => {
const nutritionData = {
type: 'nutrition' as const,
@@ -47,18 +44,11 @@ export function PricingCardOneWithSaving({
selectedAt: Date.now(),
},
};
saveWorkout(nutritionData as any);
onNutritionPlanSelected?.(nutritionData);
};
const enhancedPlans = plans.map(plan => ({
...plan,
buttons: plan.buttons || [
{
text: 'Selecionar',
onClick: () => handlePlanSelection(plan.id, plan.badge),
},
],
}));
return (

View File

@@ -1,6 +1,5 @@
'use client';
import { useWorkoutStorage } from '@/hooks/useWorkoutStorage';
import ProductCardOne from './ProductCardOne';
interface ProductCardOneWithSavingProps {
@@ -48,8 +47,6 @@ export function ProductCardOneWithSaving({
gridVariant,
onWorkoutStart,
}: ProductCardOneWithSavingProps) {
const { saveWorkout } = useWorkoutStorage();
const handleProductClick = (productId: string, productName: string) => {
const workoutData = {
type: 'training' as const,
@@ -60,7 +57,6 @@ export function ProductCardOneWithSaving({
productId,
},
};
saveWorkout(workoutData as any);
onWorkoutStart?.(workoutData);
};