PageSourceSearch

https://rubpage.com/assets/SearchPage-CRK9k5wf.js

js rubpage.com collected 2026-10-02 19:36:44 UTC 3,245 bytes, 1 lines download raw bytes

1import{j as e}from"./vendor-query-nkyHp8gL.js";import{k as y,r as j}from"./vendor-react-BNT0nzvx.js";import{U as v,t as N,L as S,P,O as x,B as l,X as w,n as C,f as R}from"./index-UlqsakHc.js";import"./vendor-ui-DPPUfW-O.js";import"./vendor-charts-B_MCcq71.js";import"./vendor-supabase-BRDBMtg7.js";const B=()=>{const[o,n]=y(),[t,d]=j.useState(o.get("q")||""),r=o.get("category")||"all",s=o.get("q")||"",{data:g,isLoading:m}=v(s,"",r),h=a=>{a.preventDefault();const i=new URLSearchParams;t&&i.set("q",t),r!=="all"&&i.set("category",r),n(i)},u=()=>{d(""),n({})},c=(g??[]).map(N),p=t||r!=="all",f=s?`${s} — Body Rub & Erotic Massage Search | RubPage`:r!=="all"?`${r.replace(/-/g," ").replace(/\b\w/g,a=>a.toUpperCase())} Massage Providers | RubPage`:"Search Body Rub & Erotic Massage Providers | RubPage",b=s?`Search results for "${s}" on RubPage. Find verified body rub, erotic massage & nuru massage providers matching your search.`:"Search for verified body rub, erotic massage & nuru massage providers worldwide. Filter by service type, city, and more.";return e.jsxs(S,{children:[e.jsx(P,{title:f,description:b,canonical:"/search",noindex:!!s}),e.jsx("section",{className:"py-6 border-b border-border",children:e.jsxs("div",{className:"container mx-auto px-4",children:[e.jsx("h1",{className:"text-xl font-semibold text-foreground mb-4 tracking-tight",children:s?`Results for "${s}"`:"Search"}),e.jsxs("form",{onSubmit:h,className:"flex gap-3 max-w-lg",children:[e.jsxs("div",{className:"flex-1 relative",children:[e.jsx(x,{className:"absolute left-3.5 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground z-10"}),e.jsx("input",{type:"text","aria-label":"Search for body rub providers by city or name",placeholder:"Search by name...",value:t,onChange:a=>d(a.target.value),className:"w-full h-9 pl-10 pr-3 rounded-md border border-border bg-background text-base sm:text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring/20 transition-all",name:"city-search",autoComplete:"off","data-1p-ignore":!0,"data-lpignore":"true"})]}),e.jsx(l,{type:"submit",size:"sm",children:"Search"})]}),p&&e.jsx("div",{className:"mt-3",children:e.jsxs(l,{variant:"ghost",size:"sm",onClick:u,className:"text-xs text-muted-foreground",children:[e.jsx(w,{className:"w-3 h-3 mr-1"})," Clear"]})})]})}),e.jsx("section",{className:"py-6",children:e.jsxs("div",{className:"container mx-auto px-4",children:[e.jsx("p",{className:"text-xs text-muted-foreground mb-4",children:m?"Searching...":`${c.length} results`}),m?e.jsx("div",{className:"flex justify-center py-16",children:e.jsx(C,{className:"w-5 h-5 animate-spin text-muted-foreground"})}):c.length>0?e.jsx("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-3",children:c.map(a=>e.jsx(R,{listing:a},a.id))}):e.jsxs("div",{className:"text-center py-16",children:[e.jsx(x,{className:"w-8 h-8 text-muted-foreground mx-auto mb-3"}),e.jsx("h3",{className:"text-base font-medium text-foreground mb-1",children:"No results found"}),e.jsx("p",{className:"text-muted-foreground text-sm mb-4",children:"Try adjusting your search"}),e.jsx(l,{variant:"outline",size:"sm",onClick:u,children:"Clear Filters"})]})]})})]})};export{B as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.