/** * Layout - Main page layout wrapper. * * Composes Header, main content area, Footer, BottomNav, and VoiceButton * into a consistent full-page structure. Hides footer on mobile * when BottomNav is visible. */ import PropTypes from "prop-types"; import Header from "./Header"; import Footer from "./Footer"; import BottomNav from "./BottomNav"; import { VoiceButton } from "@components/voice"; function Layout({ children, language, onLanguageChange, hideHeader = false, hideFooter = false, hideBottomNav = false, className = "", }) { return (
{/* Skip-to-content link for accessibility */} Skip to main content {!hideHeader && (
)}
{children}
{!hideFooter &&
); } Layout.propTypes = { children: PropTypes.node.isRequired, language: PropTypes.string, onLanguageChange: PropTypes.func, hideHeader: PropTypes.bool, hideFooter: PropTypes.bool, hideBottomNav: PropTypes.bool, className: PropTypes.string, }; export default Layout;