import React, { useState } from 'react';
import {
Scale,
Brain,
AlertTriangle,
CheckCircle,
XCircle,
TrendingUp,
Activity,
BookOpen,
Info
} from 'lucide-react';
const Card = ({ children, className = "" }) => (
{children}
);
const Badge = ({ children, type = "neutral" }) => {
const colors = {
neutral: "bg-slate-700 text-slate-200",
success: "bg-emerald-900 text-emerald-200 border border-emerald-700",
warning: "bg-amber-900 text-amber-200 border border-amber-700",
danger: "bg-rose-900 text-rose-200 border border-rose-700",
};
return (
{children}
);
};
export default function App() {
const [activeTab, setActiveTab] = useState('calculator');
// Calculator State
const [experience, setExperience] = useState('');
const [bodyFat, setBodyFat] = useState('');
const [status, setStatus] = useState('');
const [result, setResult] = useState(null);
const calculateRecomp = () => {
let score = 0;
// 1. Опыт тренировок
const expPoints = {
newbie: 30,
intermediate: 15,
advanced: 7.5
};
score += expPoints[experience] || 0;
// 2. Статус
const statusPoints = {
detrained: 70, // Возврат после паузы
just_started: 50, // Только начал
active: 0 // Непрерывно тренируюсь
};
score += statusPoints[status] || 0;
// 3. Процент жира
const fatPoints = {
cat1: 0, // Сухие
cat2: 20,
cat3: 40,
cat4: 40 // Высокий жир = высокая доступность энергии
};
score += fatPoints[bodyFat] || 0;
// Определение вердикта
let message = "";
let type = "neutral";
let strategy = "";
if (score >= 100) {
message = "Очень высокая вероятность";
type = "success";
strategy = "У вас комбо факторов: либо мышечная память, либо избыток энергии в жире при новом стимуле. Используйте это время максимально.";
} else if (score >= 75) {
message = "Высокая вероятность";
type = "success";
strategy = "Отличные шансы. Держите белок 2.2г+ и создайте минимальный дефицит. Организм охотно отдаст жир на стройку мышц.";
} else if (score >= 50) {
message = "Средняя вероятность";
type = "warning";
strategy = "Рекомпозиция возможна, но прогресс будет нелинейным. Требуется ювелирный контроль питания и тяжелый тренинг.";
} else if (score >= 30) {
message = "Низкая вероятность";
type = "warning";
strategy = "Процесс будет идти крайне медленно. Вы рискуете потратить месяцы ради граммов мышц. Циклирование (набор/сушка) будет эффективнее.";
} else {
message = "Очень низкая вероятность";
type = "danger";
strategy = "Вы опытный и сухой. Физиологических ресурсов для рекомпозиции нет. Не тратьте время на попытки 'усидеть на двух стульях'.";
}
setResult({ score, message, type, strategy });
};
return (
{/* Header */}
{/* CALCULATOR TAB */}
{activeTab === 'calculator' && (
РЕАЛЬНОСТЬ РЕКОМПОЗИЦИИ
Хватит верить маркетингу. Проверь свой физиологический потенциал по системе баллов TFA.
Твой профиль
{/* Experience */}
{[
{ id: 'newbie', label: 'Новичок', sub: '< 1 года (+30%)' },
{ id: 'intermediate', label: 'Средний', sub: '1-3 года (+15%)' },
{ id: 'advanced', label: 'Опытный', sub: '> 3 лет (+7.5%)' }
].map((opt) => (
))}
{/* Status */}
{[
{ id: 'just_started', label: 'Только начинаю', sub: '+50%' },
{ id: 'detrained', label: 'Возврат после паузы', sub: '2+ мес (+70%)' },
{ id: 'active', label: 'Непрерывно тренируюсь', sub: '+0%' }
].map((opt) => (
))}
{/* Body Fat */}
{[
{ id: 'cat1', range: 'М: <10% | Ж: <18%', desc: 'Сухие (+0%)' },
{ id: 'cat2', range: 'М: 10-15% | Ж: 18-24%', desc: '+20%' },
{ id: 'cat3', range: 'М: 15-24% | Ж: 24-31%', desc: '+40%' },
{ id: 'cat4', range: 'М: 25%+ | Ж: 32%+', desc: '+40%' },
].map((cat) => (
))}
{/* Result Area */}
{result ? (
Анализ потенциала
{result.type === 'success' &&
}
{result.type === 'danger' &&
}
{result.type === 'warning' &&
}
{result.score > 100 ? '100+' : result.score}%
{result.message}
Стратегия TFA
{result.strategy}
Расчет основан на кумулятивном эффекте нейромышечной адаптации и доступности эндогенных запасов энергии.
) : (
Ждем твои данные
Выбери параметры слева, чтобы запустить алгоритм
)}
)}
{/* THEORY TAB */}
{activeTab === 'science' && (
ТЕОРИЯ: ЧИСТАЯ ФИЗИОЛОГИЯ
ОШИБКА ВЫЖИВШЕГО LBM — ЭТО НЕ МЫШЦЫ
Многие верят в рекомпозицию, глядя на цифры весов. Но наука говорит об обратном.
Жесткий факт:
DEXA и BodPod считают воду, гликоген и остатки еды как "мышцы" (LBM). Отек от белка — это не гипертрофия.
ЛИМИТ ЭНЕРГИИ ПОРОГ 500 ККАЛ
Исследования (Murphy et al.) подтверждают: дефицит энергии блокирует анаболизм.
Лимит:
Дефицит > 500 ккал/день обнуляет рост мышечной ткани у натурального атлета.
Биохимический конфликт
mTOR
Строительство
Условие:
Избыток энергии + Инсулин
VS
AMPK
Выживание
Условие:
Дефицит энергии [БЛОКИРУЕТ mTOR]
"Невозможно строить небоскреб, пока рабочие разбирают фундамент на дрова."
)}
{/* STRATEGY TAB */}
{activeTab === 'strategy' && (
АЛГОРИТМ TFA
Сценарий: ЗЕЛЕНАЯ ЗОНА
Вероятность 50%+ 01. ПИТАНИЕ
Белок 2.5–3.2 г/кг. Малый дефицит (200-300 ккал). Максимум нутриентной плотности.
02. ТРЕНИНГ
Силовая прогрессия. Если рабочие веса не растут — вы просто теряете время.
03. СОН
8+ часов. Рекомпозиция — это экстремальное восстановление. Без сна она невозможна.
Сценарий: КРАСНАЯ ЗОНА
Вероятность < 30%
Хватит пытаться обмануть физиологию. Переходи на циклическую модель.
ФАЗА НАБОРА
- Профицит 10% от поддержки
- Фокус на объеме и весах
- Длительность: 6-9 месяцев
- Дефицит 20-25%
- Сохранение интенсивности
- Длительность: до 12 недель
)}
{/* Footer */}
);
}