diff --git a/apps/frontend/src/views/PublicView.jsx b/apps/frontend/src/views/PublicView.jsx index aa383c9..22dd84c 100644 --- a/apps/frontend/src/views/PublicView.jsx +++ b/apps/frontend/src/views/PublicView.jsx @@ -2,6 +2,7 @@ import React, { useState, useEffect, useMemo } from 'react'; import '../App.css'; import SearchBar from '../components/SearchBar'; import MedicineResults from '../components/MedicineResults'; +import ProductResults from '../components/ProductResults'; import PharmacyList from '../components/PharmacyList'; import PharmacyMap from '../components/PharmacyMap'; import HomeView from './HomeView'; @@ -22,6 +23,8 @@ function PublicView({ const [searchQuery, setSearchQuery] = useState(''); const [medicines, setMedicines] = useState([]); + const [products, setProducts] = useState([]); + const [searchMode, setSearchMode] = useState('all'); // 'all' | 'medicines' | 'products' const [selectedMedicine, setSelectedMedicine] = useState(null); const [pharmacies, setPharmacies] = useState([]); const [loading, setLoading] = useState(false); @@ -35,6 +38,7 @@ function PublicView({ const searchMedicines = async () => { if (searchQuery.trim().length < 2) { setMedicines([]); + setProducts([]); setSelectedMedicine(null); setPharmacies([]); return; @@ -50,6 +54,16 @@ function PublicView({ } finally { setLoading(false); } + + try { + const productsResponse = await fetch(`/api/products/search?q=${encodeURIComponent(searchQuery)}`); + if (productsResponse.ok) { + const productsData = await productsResponse.json(); + setProducts(productsData.results || []); + } + } catch (err) { + console.error('Product search error:', err); + } }; const timeoutId = setTimeout(searchMedicines, 300); @@ -219,7 +233,42 @@ function PublicView({ {loading &&