/** * Medication Plan Assistant - Main Application * * A pharmacokinetic simulation tool for lisdexamfetamine (Elvanse/Vyvanse) * medication planning. Helps users visualize drug concentration profiles, * manage deviations, and get dose correction suggestions. * * @author Andreas Weyer * @license MIT */ import React from 'react'; import { GitBranch } from 'lucide-react'; // Components import DaySchedule from './components/day-schedule'; import SimulationChart from './components/simulation-chart'; import Settings from './components/settings'; import LanguageSelector from './components/language-selector'; import DisclaimerModal from './components/disclaimer-modal'; import { Button } from './components/ui/button'; import { PROJECT_REPOSITORY_URL } from './constants/defaults'; // Custom Hooks import { useAppState } from './hooks/useAppState'; import { useSimulation } from './hooks/useSimulation'; import { useLanguage } from './hooks/useLanguage'; // --- Main Component --- const MedPlanAssistant = () => { const { currentLanguage, t, changeLanguage } = useLanguage(); // Disclaimer modal state const [showDisclaimer, setShowDisclaimer] = React.useState(false); React.useEffect(() => { const hasAccepted = localStorage.getItem('medPlanDisclaimerAccepted_v1'); if (!hasAccepted) { setShowDisclaimer(true); } }, []); const handleAcceptDisclaimer = () => { localStorage.setItem('medPlanDisclaimerAccepted_v1', 'true'); setShowDisclaimer(false); }; const handleOpenDisclaimer = () => { setShowDisclaimer(true); }; const { appState, updateNestedState, updateUiSetting, handleReset, addDay, removeDay, addDoseToDay, removeDoseFromDay, updateDoseInDay, sortDosesInDay } = useAppState(); const { pkParams, days, therapeuticRange, doseIncrement, uiSettings } = appState; const { showDayTimeOnXAxis, chartView, yAxisMin, yAxisMax, showTemplateDay, simulationDays, displayedDays, showDayReferenceLines } = uiSettings; const { combinedProfile, templateProfile } = useSimulation(appState); return (
{t('appSubtitle')}