'use client'; import { useState, useCallback, ReactNode } from 'react'; import RecipesSidebar from './RecipesSidebar'; import type { FilterState } from '@/lib/types'; interface RecipeLayoutProps { children: ReactNode; categories: string[]; tags: string[]; filters?: FilterState; onFilterChange?: (filters: FilterState) => void; showFilters?: boolean; } export default function RecipeLayout({ children, categories, tags, filters, onFilterChange, showFilters = true }: RecipeLayoutProps) { const [sidebarOpen, setSidebarOpen] = useState(false); const handleFilterChange = useCallback((newFilters: FilterState) => { if (onFilterChange) { onFilterChange(newFilters); } }, [onFilterChange]); return (
{/* Mobile Overlay */} {sidebarOpen && (
setSidebarOpen(false)} aria-hidden="true" /> )} {/* Mobile menu button - only visible on mobile */}
{/* Sidebar - Always visible on desktop (lg+), slide-out on mobile */} {/* Main content */}
{children}
); }