'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 (
{/* Mobile filter button */}
Show {resultCount} {resultCount === 1 ? 'recipe' : 'recipes'} } > {/* Main content */}
{children}
); }