import { createFileRoute, useNavigate, useSearch } from '@tanstack/react-router' import { useState, useMemo } from 'react' import Fuse from 'fuse.js' import { useCentralProductStore } from '../lib/stores/central-product-store' import { MyText, SearchBar, AppContainer, MyTouchableOpacity } from 'web-components' export const Route = createFileRoute('/home/search')({ component: SearchPage, validateSearch: (search: Record) => ({ q: search.q || '', }), }) function SearchPage() { const { q } = Route.useSearch() const navigate = useNavigate() const products = useCentralProductStore((s) => s.products) const fuse = useMemo( () => new Fuse(products, { keys: ['name', 'category', 'description'], threshold: 0.3, }), [products] ) const results = useMemo(() => { if (!q) return products.slice(0, 20) return fuse.search(q).map((r) => r.item) }, [q, fuse, products]) return ( navigate({ to: '/home/search', search: { q: val } })} onSearch={(val) => navigate({ to: '/home/search', search: { q: val } })} />
{results.map((product) => ( navigate({ to: '/home/product/$id', params: { id: String(product.id) } }) } className="rounded-xl border border-gray-100 bg-white p-3 shadow-sm" >
{product.images?.[0] && ( {product.name} )}
{product.name} ₹{product.discountedPrice ?? product.price}
))}
) }