1import{j as e}from"./vendor-query-nkyHp8gL.js";import{d as b,ai as x,aj as p,L as h,P as u,n as j}from"./index-BG1hbjB_.js";import{L as i}from"./vendor-react-BNT0nzvx.js";import"./vendor-ui-DPPUfW-O.js";import"./vendor-charts-B_MCcq71.js";import"./vendor-supabase-BRDBMtg7.js";const w=()=>{const{data:r,isLoading:n}=b(200),{data:l,isLoading:c}=x(),{data:o,isLoading:d}=p(),m=n||c||d,a=new Map;for(const s of r??[]){const t=s.state||"Other";a.has(t)||a.set(t,[]),a.get(t).push(s)}const g=[...a.keys()].sort();return e.jsxs(h,{children:[e.jsx(u,{title:"Sitemap â RubPage",description:"Browse all pages on RubPage. Find body rub providers by city, state, and service category.",canonical:"/sitemap",noindex:!1}),e.jsxs("div",{className:"container mx-auto px-4 py-8 max-w-5xl",children:[e.jsx("h1",{className:"text-2xl font-bold mb-6",children:"Sitemap"}),m?e.jsx("div",{className:"flex justify-center py-12",children:e.jsx(j,{className:"w-6 h-6 animate-spin text-muted-foreground"})}):e.jsxs("div",{className:"space-y-8",children:[e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 border-b border-border pb-2",children:"Main Pages"}),e.jsx("ul",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-1 text-sm",children:[{to:"/",label:"Home"},{to:"/cities",label:"All Cities"},{to:"/about",label:"About"},{to:"/how-it-works",label:"How It Works"},{to:"/massage-types",label:"Service Types"},{to:"/advertise",label:"Advertise"},{to:"/faq",label:"FAQ"},{to:"/blog",label:"Blog"},{to:"/safety-tips",label:"Safety Tips"},{to:"/contact",label:"Contact"},{to:"/videos",label:"Videos"},{to:"/terms",label:"Terms"},{to:"/privacy",label:"Privacy"},{to:"/section-2257",label:"18 U.S.C. § 2257"},{to:"/report-trafficking",label:"Report Trafficking"},{to:"/law-enforcement",label:"Law Enforcement"}].map(s=>e.jsx("li",{children:e.jsx(i,{to:s.to,className:"text-primary hover:underline",children:s.label})},s.to))})]}),l&&l.length>0&&e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 border-b border-border pb-2",children:"Service Categories"}),e.jsx("ul",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-1 text-sm",children:l.map(s=>e.jsx("li",{children:e.jsx(i,{to:`/category/${s.slug}`,className:"text-primary hover:underline",children:s.name})},s.slug))})]}),o&&o.length>0&&e.jsxs("section",{children:[e.jsx("h2",{className:"text-lg font-semibold mb-3 border-b border-border pb-2",children:"States"}),e.jsx("ul",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-1 text-sm",children:o.map(s=>e.jsx("li",{children:e.jsxs(i,{to:`/state/${s.slug}`,className:"text-primary hover:underline",children:[s.name," (",s.totalListings,")"]})},s.slug))})]}),g.map(s=>e.jsxs("section",{children:[e.jsxs("h2",{className:"text-lg font-semibold mb-3 border-b border-border pb-2",children:["Cities in ",s]}),e.jsx("ul",{className:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-1 text-sm",children:a.get(s).map(t=>e.jsx("li",{children:e.jsxs(i,{to:`/city/${t.slug}`,className:"text-primary hover:underline",children:[t.name," (",t.listing_count,")"]})},t.slug))})]},s))]})]})]})};export{w 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.