'use client'; import { useState, useCallback, ReactNode } from 'react'; import Sidebar from './Sidebar'; import RecipesSidebar from './RecipesSidebar'; import type { FacetCounts, FilterState } from '@/lib/types'; interface RecipeLayoutProps { children: ReactNode; categories: string[]; tags: string[]; facetCounts: FacetCounts; resultCount: number; filters: FilterState; onFilterChange: (filters: FilterState) => void; } export default function RecipeLayout({ children, categories, tags, facetCounts, resultCount, filters, onFilterChange, }: RecipeLayoutProps) { const [sidebarOpen, setSidebarOpen] = useState(false); const handleFilterChange = useCallback((newFilters: FilterState) => { onFilterChange(newFilters); }, [onFilterChange]); const closeSidebar = useCallback(() => setSidebarOpen(false), []); const activeFilterCount = (filters.search ? 1 : 0) + (filters.category ? 1 : 0) + filters.selectedTags.length; return (