import type { MenuCategory, MenuFilter, MenuItem } from '@/domain/menu/entities'; export function filterMenuCategories( categories: MenuCategory[], filter: MenuFilter ): MenuCategory[] { const query = filter.searchQuery?.toLowerCase().trim() ?? ''; return categories .map((category) => { if (filter.categoryId && filter.categoryId !== 'All' && category.id !== filter.categoryId) { return { ...category, items: [] }; } let items = category.items; if (query) { items = items.filter( (item) => item.name.toLowerCase().includes(query) || (item.description?.toLowerCase().includes(query) ?? false) ); } if (filter.vegetarianOnly) { items = items.filter((item) => item.isVegetarian); } return { ...category, items }; }) .filter((category) => category.items.length > 0); } export function filterMenuItems(items: MenuItem[], filter: MenuFilter): MenuItem[] { const query = filter.searchQuery?.toLowerCase().trim() ?? ''; return items.filter((item) => { if (filter.vegetarianOnly && !item.isVegetarian) return false; if (!query) return true; return ( item.name.toLowerCase().includes(query) || (item.description?.toLowerCase().includes(query) ?? false) ); }); }