import React, { useState, useEffect } from "react"; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faSearch } from '@fortawesome/free-solid-svg-icons'; import styles from "../../css/HomeCss/hero.module.css"; import { useNavigate } from 'react-router-dom'; function Hero() { const categories = ["Breakfast", "Lunch", "Dinner", "Dessert", "Vegetarian", "Pescatarian"]; const nationalities = ["American", "British", "French", "Indian", "Italian", "Japanese"]; const [ingredients, setIngredients] = useState([]); const [filteredIngredients, setFilteredIngredients] = useState([]); const [dropzoneItems, setDropzoneItems] = useState([]); const [isCategoryDropdownOpen, setIsCategoryDropdownOpen] = useState(false); const [isNationalityDropdownOpen, setIsNationalityDropdownOpen] = useState(false); const [selectedCategory, setSelectedCategory] = useState("Select category"); const [selectedNationality, setSelectedNationality] = useState("Select nationality"); const navigate = useNavigate(); const [searchTerm, setSearchTerm] = useState(""); const handleSearchInput = (e) => { setSearchTerm(e.target.value); }; useEffect(() => { fetch('http://localhost:8080/api/products') .then(response => response.json()) .then(data => { const filteredData = data.map(product => ({ id: product.id, product_name: product.name })); setIngredients(filteredData); setFilteredIngredients(filteredData); }) .catch(error => { console.error('Error fetching ingredients:', error); }); }, []); const handleIngredientSearch = (e) => { const filter = e.target.value.toLowerCase(); setFilteredIngredients( ingredients.filter((ingredient) => ingredient.product_name.toLowerCase().includes(filter)) ); }; const addToDropzone = (ingredient) => { if (!dropzoneItems.includes(ingredient)) { setDropzoneItems([...dropzoneItems, ingredient]); } else { removeFromDropzone(ingredient); } }; const removeFromDropzone = (ingredient) => { setDropzoneItems(dropzoneItems.filter(item => item.id !== ingredient.id)); }; const handleCategoryClick = (category) => { setSelectedCategory(selectedCategory === category ? "Select category" : category); setIsCategoryDropdownOpen(false); }; const handleNationalityClick = (nationality) => { if (selectedNationality === nationality) { setSelectedNationality("Select nationality"); } else { setSelectedNationality(nationality); } setIsNationalityDropdownOpen(false); }; const handleSearchClick = () => { const searchParams = new URLSearchParams(); if (selectedCategory !== "Select category") { searchParams.set('category', selectedCategory); } if (selectedNationality !== "Select nationality") { searchParams.set('nationality', selectedNationality); } if (searchTerm) { searchParams.set('searchTerm', searchTerm); } dropzoneItems.forEach(item => { searchParams.append('productId', item.id); }); navigate(`/recipes?${searchParams.toString()}`); }; return (

Discover Delicious Recipes

Explore the best recipes from around the world.

setIsCategoryDropdownOpen(true)} onMouseLeave={() => setIsCategoryDropdownOpen(false)} >
{isCategoryDropdownOpen && (
{categories.map((category, index) => (
handleCategoryClick(category)} > {category}
))}
)}
setIsNationalityDropdownOpen(true)} onMouseLeave={() => setIsNationalityDropdownOpen(false)} >
{isNationalityDropdownOpen && (
{nationalities.map((nationality, index) => (
handleNationalityClick(nationality)} > {nationality}
))}
)}
{filteredIngredients.map((ingredient, index) => (
addToDropzone(ingredient)} > {ingredient.product_name}
))}
{dropzoneItems.length === 0 ? (

Click ingredients to add them, or click to remove...

) : ( dropzoneItems.map((ingredient, index) => (
removeFromDropzone(ingredient)} > {ingredient.product_name} ×
)) )}
); } export default Hero;