import { getRecipeListHTML } from './views/RecipeList.js'; import { getFilterHTML, setupFilter } from './views/Filter.js'; import { getRecipeDetailHTML, setupRecipeDetail } from './views/RecipeDetail.js'; import { getMealPlannerHTML, setupMealPlanner } from './views/MealPlanner.js'; function getBottomNavHTML() { return ` `; } function setupTabs() { const main = document.getElementById('main-view'); const planner = document.getElementById('planner-view'); const nav = document.getElementById('app-bottom-nav'); if (!main || !planner || !nav) return; const activeTab = 'nav-tab flex flex-col items-center gap-1 text-black min-w-[3.5rem]'; const idleTab = 'nav-tab flex flex-col items-center gap-1 text-gray-500 hover:text-gray-700 min-w-[3.5rem]'; const apply = (tab) => { const showRecipes = tab === 'recipes'; main.classList.toggle('hidden', !showRecipes); planner.classList.toggle('hidden', showRecipes); nav.querySelectorAll('.nav-tab[data-tab]').forEach((btn) => { const id = btn.getAttribute('data-tab'); if (btn.hasAttribute('disabled')) return; if (id === 'recipes' || id === 'planner') { btn.className = id === tab ? activeTab : idleTab; } }); }; nav.addEventListener('click', (e) => { const btn = e.target.closest('.nav-tab[data-tab]'); if (!btn || btn.hasAttribute('disabled')) return; const tab = btn.getAttribute('data-tab'); if (tab === 'recipes' || tab === 'planner') apply(tab); }); apply('recipes'); } document.addEventListener('DOMContentLoaded', () => { const appContainer = document.getElementById('app-container'); appContainer.innerHTML = ` ${getRecipeListHTML()} ${getMealPlannerHTML()} ${getBottomNavHTML()} ${getRecipeDetailHTML()} ${getFilterHTML()} `; setupTabs(); setupMealPlanner(); setupFilter(); setupRecipeDetail(); }); // --- GLOBAL NAVIGATION METHODS --- window.openRecipeDetail = () => { const view = document.getElementById('recipe-detail-view'); // Swap Tailwind classes to slide IN view.classList.remove('translate-x-full', 'opacity-0', 'pointer-events-none'); view.classList.add('translate-x-0', 'opacity-100', 'pointer-events-auto'); }; window.closeRecipeDetail = () => { const view = document.getElementById('recipe-detail-view'); // Swap Tailwind classes to slide OUT view.classList.remove('translate-x-0', 'opacity-100', 'pointer-events-auto'); view.classList.add('translate-x-full', 'opacity-0', 'pointer-events-none'); }; window.openFilters = () => { const fv = document.getElementById('filter-view'); fv.classList.remove('hidden'); fv.classList.add('flex'); }; window.closeFilters = () => { const fv = document.getElementById('filter-view'); fv.classList.add('hidden'); fv.classList.remove('flex'); };