// mb-filters.jsx — Filters sheet content (segment, category, radius, region, mode) function RadiusSlider({ value, onChange, min = 1, max = 15 }) { const pct = ((value - min) / (max - min)) * 100; return (
Raio de busca {value}km
onChange(Number(e.target.value))} className="mb-range" style={{ "--pct": pct + "%" }} />
{min} kma partir da sua posição{max} km
); } // Mapeia cidade do endereço para região conhecida function cityToRegion(city) { if (!city) return null; const c = city.toLowerCase(); if (c.includes("barra") || c.includes("coqueiro")) return "Barra dos Coqueiros"; if (c.includes("expans")) return "Zona de Expansão"; if (c.includes("aracaju")) return "Aracaju"; return null; } function FiltersSheet({ filt, setFilt, addresses = [], segments }) { const segs = segments || SEGMENTS; const seg = segs.find(s => s.id === filt.seg); const set = (patch) => setFilt(f => ({ ...f, ...patch })); // GPS real const [gpsPos, setGpsPos] = React.useState(null); React.useEffect(() => { if (!navigator.geolocation) return; navigator.geolocation.getCurrentPosition( p => setGpsPos({ lat: p.coords.latitude, lng: p.coords.longitude }), () => setGpsPos(null), { timeout: 4000 } ); }, []); const useGPS = () => set({ region: "Todas" }); const useAddress = (addr) => { const region = cityToRegion(addr.city); if (region) set({ region }); }; return (
{/* posição de busca */}
Centro da busca
{/* GPS */} {/* Endereços cadastrados */} {addresses.length > 0 && addresses.map(addr => { const region = cityToRegion(addr.city); const active = filt.region === region; return ( ); })}
set({ radius: v })} /> {/* region */}
Região
{["Todas", ...REGIONS].map(r => ( set({ region: r })}>{r} ))}
{/* segment */}
Segmento
{segs.map(s => ( set({ seg: filt.seg === s.id ? null : s.id, cat: null })}>{s.question || s.q} ))}
{/* category (depends on segment — usa IDs reais da API) */} {seg && (() => { // API segments: categories = [{id, name}]; hardcoded: cats = ["nome"] const cats = seg.categories && seg.categories.length > 0 ? seg.categories.map(c => ({ id: c.id, name: c.name })) : (seg.cats || []).map(name => ({ id: name, name })); if (cats.length === 0) return null; return (
Categoria
{cats.map(c => ( set({ cat: filt.cat === c.id ? null : c.id })}>{c.name} ))}
); })()} {/* mode */}
Forma de receber
{[["todos", "Tudo", null], ["delivery", "Entrega", "bike"], ["pickup", "Retirada", "store"]].map(([id, lbl, ic]) => ( set({ mode: id })}>{lbl} ))}
); } Object.assign(window, { RadiusSlider, FiltersSheet });