1import{d as I,y as K,x as Q,f as i,i as e,t as a,h as o,p as G,o as r,w as M,s as c,b as X,e as Z,l,g as n,k as f,F as x,r as y,m as B,_ as ee,L as te,j as q,n as _,G as se,z as R}from"./CWXzWxAq.js";import{_ as oe}from"./BIQXtUGu.js";import{_ as re}from"./BSGv3ur8.js";import{_ as ne}from"./CW6TSjOm.js";import{_ as ae}from"./DLF33vme.js";import{u as ie,o as le,e as de,f as ce}from"./V6PXsQGD.js";import{c as U}from"./DQSuM1Xs.js";import{a as ue}from"./Cx-PPbXK.js";import{D as pe,i as me,S as fe}from"./Bxr3hh73.js";import{u as j}from"./j6FCzuTM.js";import{u as ge}from"./DMfQYHr3.js";import"./CU3qXiyL.js";import"./ujoLtV0O.js";const he={class:"text-3xl font-extrabold brand-text sm:text-4xl"},xe={class:"mt-1 text-sm text-muted"},ye=I({__name:"StatCounter",props:{value:{},label:{},suffix:{default:"+"}},setup(S){const u=S,b=G(0),h=G(null);let w=!1;function T(d){return d>=1e3?Math.round(d/1e3)+"K"+u.suffix:d+u.suffix}return K(()=>{if(!h.value)return;const d=new IntersectionObserver(k=>{if(k[0]?.isIntersecting&&!w){w=!0;const F=performance.now(),E=1100,v=N=>{const O=Math.min(1,(N-F)/E),D=1-Math.pow(1-O,3);b.value=Math.round(u.value*D),O<1&&requestAnimationFrame(v)};requestAnimationFrame(v)}},{threshold:.4});d.observe(h.value),Q(()=>d.disconnect())}),(d,k)=>(r(),i("div",{ref_key:"el",ref:h,class:"text-center"},[e("div",he,a(T(o(b))),1),e("div",xe,a(S.label),1)],512))}}),be=Object.assign(ye,{__name:"StatCounter"}),_e={class:"relative overflow-hidden border-b"},ve={class:"mx-auto max-w-4xl px-4 py-16 text-center sm:py-24"},we={class:"mb-4 inline-flex items-center gap-2 rounded-full border bg-surface px-3 py-1 text-xs text-muted"},ke={class:"mx-auto mt-8 max-w-2xl"},Fe={class:"mt-6 flex flex-wrap items-center justify-center gap-x-8 gap-y-2 text-sm text-muted"},Oe={class:"text-foreground"},Ce={class:"text-foreground"},Se={class:"text-foreground"},Te={class:"mt-8"},Ee={class:"mx-auto max-w-7xl px-4"},Ne={class:"grid grid-cols-2 gap-4 border-b py-8 sm:grid-cols-4"},De={key:0,class:"border-b py-10"},Pe={class:"grid gap-6 sm:grid-cols-2 lg:grid-cols-4"},$e={class:"mb-2 text-sm font-semibold uppercase tracking-wide text-muted"},qe={class:"flex flex-wrap gap-2"},Ae={key:1,class:"py-10"},Le={class:"mb-5 flex items-end justify-between gap-4"},Ge={class:"py-10"},Me={class:"mb-5 flex items-end justify-between gap-4"},Be={class:"py-10"},Re={class:"mb-5 flex items-end justify-between gap-4"},Ue={class:"py-10"},je={class:"space-y-8"},Ie={class:"mb-3 flex items-center justify-between"},He={class:"text-lg font-semibold"},We={class:"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-4"},Ye={class:"py-10"},Ve={class:"mb-5"},ze={class:"text-2xl font-bold"},Je={class:"grid gap-4 sm:grid-cols-2 lg:grid-cols-4"},Ke={class:"text-xs font-semibold uppercase tracking-wide text-brand"},Qe={class:"mt-2 text-lg font-bold"},Xe={class:"mt-1 text-sm text-muted"},Ze={class:"mt-3 space-y-1.5 text-sm text-muted"},et={class:"py-10"},tt={class:"flex flex-wrap gap-2"},st={class:"py-10"},ot={class:"mb-5 flex items-end justify-between gap-4"},rt={class:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3"},nt={class:"text-xs font-semibold uppercase tracking-wide text-brand"},at={class:"mt-2 font-bold group-hover:text-brand"},it={class:"mt-2 text-sm text-muted"},lt={class:"py-10"},dt={class:"mx-auto max-w-3xl"},ct={class:"mx-auto max-w-3xl pb-8"},Ft=I({__name:"index",async setup(S){let u,b;const{data:h}=([u,b]=M(()=>j("/api/home",{key:"home"},"$Ao7D03Tl7i")),u=await u,b(),u),{data:w}=([u,b]=M(()=>j("/api/categories",{key:"categories",default:()=>[]},"$fGTvJLHqo9")),u=await u,b(),u),T=ge(pe,"/"),d=_(()=>h.value?.stats??{creators:0,categories:0,free:0}),k=_(()=>me(h.value?.trending??[],T.value,fe)),F=_(()=>h.value?.featured??[]),E=_(()=>h.value?.newest??[]),v=p=>(w.value||[]).filter(t=>t.group===p).sort((t,P)=>P.count-t.count),N=_(()=>v("niche").slice(0,16)),O=_(()=>se.map(p=>({group:p,label:R[p],items:v(p).slice(0,8)}))),D=["niche","location","price","popularity"],A=_(()=>D.map(p=>({group:p,label:R[p],items:v(p).slice(0,8)})).filter(p=>p.items.length)),H=new Date().getFullYear(),L=[{q:"How do I search for OnlyFans creators?",a:"Type a name, niche, or location into the search bar and we'll surface matching creators from our index. You can also browse by category â niche, location, background, body type, profession or age â and open any profile to find a direct link to their official OnlyFans page."},{q:"Is Prooven free to use?",a:"Yes. Searching and browsing creators on Prooven is completely free. Some creators run free OnlyFans pages while others are paid â each listing clearly shows the price so you know before you click."},{q:"Can I find OnlyFans creators near me?",a:"Yes. Use the Near Me page or browse our location categories to find creators who share that they're based in your city, region or country."},{q:"Do you host any OnlyFans content?",a:"No. Prooven is a discovery directory. We only show public profile information and link out to creators' official OnlyFans pages â all content stays on OnlyFans."},{q:"How often is the directory updated?",a:"Our listings are refreshed regularly as new creators are added and existing profiles update their details, so you always see current information."},{q:"I'm a creator â how do I get listed?",a:"Head to the Promote page to submit your page or request featured placement. Listing helps fans discover you and grow your subscriber base."},{q:"Do you have a cam girl finder?",a:"Yes. The Cam Girl Finder on Prooven lets you browse live webcam models from Chaturbate, Stripchat and other cam sites in one feed â the same kind of live search people look up as Camgirlfinder or cam girl finder."}
1],W=[{tag:"Advanced Tools",title:"Advanced Search",desc:"Find creators by name, tags, location and more with powerful controls that surface exactly what you're after.",points:["Combine multiple filters for pinpoint accuracy","Search across niche, location and price at once"]},{tag:"Personalised",title:"Smart Filtering",desc:"Filter by category, price range and free vs. paid pages to instantly narrow thousands of profiles.",points:["Toggle free-only in one tap","Sort by rating, popularity and activity"]},{tag:"Organised",title:"Categorised Creators",desc:"Every creator is tagged across niche, location, background and more, so browsing is fast and intuitive.",points:["Hundreds of curated categories","Related creators on every profile"]},{tag:"Direct",title:"Verified Links",desc:"Profiles link straight to official OnlyFans pages â no fake redirects, no dead links, no guesswork.",points:["Direct-to-source links","Free and paid pages clearly labelled"]}],Y=`## The easiest way to discover OnlyFans creators 2 3OnlyFans is home to millions of creators, but its built-in search is famously limited. Unless you already know a creator's exact username, finding new people to follow means endless scrolling on social media, relying on word of mouth, or digging through cluttered general search results. **${c.name}** was built to fix that. 4 5We maintain a structured, tagged index of publicly available OnlyFans profiles and organise them by the things that actually matter to you: niche, location, background, body type, profession and age. Instead of guessing, you browse by interest and jump straight to a creator's official page. 6 7### Search by keyword, niche or location 8 9Enter a name, niche or topic and our finder instantly surfaces relevant profiles. Looking for a creator in a specific city? Use our location categories or the Near Me page. Into a particular style or niche? We've got hundreds of curated categories covering everything from fitness and gaming to alternative and cosplay creators. 10 11### Free and paid pages, clearly labelled 12 13Plenty of creators run free OnlyFans pages and monetise through tips and pay-per-view content, while others charge a monthly subscription. Every listing on ${c.shortName} shows whether a page is free or paid along with the price, so there are no surprises. You can even filter to show only free pages. 14 15### Built for fans and creators alike 16 17For fans, ${c.shortName} saves hours of searching and helps you discover creators you'd never have found otherwise. For creators, being listed means new fans can actually find you â boosting visibility and subscriber growth. If you're a creator, you can submit your page or request featured placement on our Promote page. 18 19### A note on how we work 20 21${c.name} is a discovery directory, not a content host. We display public profile information and link directly to creators' official OnlyFans pages. We respect creator privacy and honour removal requests â see our DMCA page for details. The site is intended for adults aged 18 and over.`;return X({title:()=>`${c.name} â ${c.tagline}`,description:c.description,ogTitle:`${c.name} â ${c.tagline}`,ogDescription:c.description,ogUrl:c.url}),Z({link:[{rel:"canonical",href:c.url}]}),ie([le(),de(),ce(L)]),(p,t)=>{const P=te,m=ee,C=be,$=oe,V=re,z=ne,J=ae;return r(),i("div",null,[e("section",_e,[t[7]||(t[7]=e("div",{class:"absolute inset-0 -z-10 opacity-30 [background:radial-gradient(60%_60%_at_50%_0%,var(--brand)_0%,transparent_60%)]"},null,-1)),e("div",ve,[e("div",we," ð Top creators of "+a(o(H)),1),t[5]||(t[5]=e("h1",{class:"text-balance text-4xl font-extrabold leading-tight sm:text-5xl md:text-6xl"},[l(" The OnlyFans "),e("span",{class:"brand-text"},"Search Engine"),l(" & Creator Finder ")],-1)),t[6]||(t[6]=e("p",{class:"mx-auto mt-4 max-w-2xl text-balance text-lg text-muted"}," Search and discover OnlyFans creators by niche, location, age and more. Skip the endless scrolling â find creators who match your vibe in seconds. ",-1)),e("div",ke,[n(P,{size:"lg",placeholder:"Try âpetite latinaâ, âfitnessâ, or âLondonââ¦"})]),e("div",Fe,[e("span",null,[e("strong",Oe,a(o(U)(o(d).creators))+"+",1),t[0]||(t[0]=l(" creators",-1))]),e("span",null,[e("strong",Ce,a(o(U)(o(d).free))+"+",1),t[1]||(t[1]=l(" free pages",-1))]),e("span",null,[e("strong",Se,a(o(d).categories)+"+",1),t[2]||(t[2]=l(" categories",-1))]),t[3]||(t[3]=e("span",null,"Updated daily",-1))]),e("div",Te,[n(m,{to:"/cams",class:"inline-flex items-center gap-2 rounded-full border border-brand/40 bg-surface px-5 py-2.5 text-sm font-semibold transition hover:border-brand"},{default:f(()=>[...t[4]||(t[4]=[e("span",{class:"live-dot h-2 w-2 rounded-full bg-red-500"}
21,null,-1),l(" Cam Girl Finder â who is online now ",-1)])]),_:1})])])]),e("div",Ee,[e("section",Ne,[n(C,{value:o(d).creators,label:"Creators indexed"},null,8,["value"]),n(C,{value:o(d).free,label:"Free pages"},null,8,["value"]),n(C,{value:o(d).categories,label:"Categories"},null,8,["value"]),n(C,{value:195,label:"Countries & cities",suffix:"+"})]),o(A).length?(r(),i("section",De,[t[8]||(t[8]=e("div",{class:"mb-5"},[e("h2",{class:"text-2xl font-bold"},"Browse by category"),e("p",{class:"text-sm text-muted"}," Jump straight into the most popular niches, locations, price tiers and creator rankings. ")],-1)),e("div",Pe,[(r(!0),i(x,null,y(o(A),s=>(r(),i("div",{key:s.group},[e("h3",$e,a(s.label),1),e("ul",qe,[(r(!0),i(x,null,y(s.items,g=>(r(),i("li",{key:g.slug},[n(m,{to:`/best/${g.slug}`,class:"inline-block rounded-full border bg-surface px-3 py-1.5 text-sm text-muted transition hover:border-brand hover:text-foreground"},{default:f(()=>[l(a(g.name),1)]),_:2},1032,["to"])]))),128))])]))),128))])])):B("",!0),o(F).length>0?(r(),i("section",Ae,[e("div",Le,[t[10]||(t[10]=e("div",null,[e("h2",{class:"text-2xl font-bold"},"â Featured Creators"),e("p",{class:"text-sm text-muted"},"Hand-picked profiles worth checking out.")],-1)),n(m,{to:"/trending",class:"shrink-0 text-sm font-medium text-brand hover:underline"},{default:f(()=>[...t[9]||(t[9]=[l("Top 100 â",-1)])]),_:1})]),n($,{creators:o(F)},null,8,["creators"])])):B("",!0),e("section",Ge,[e("div",Me,[t[12]||(t[12]=e("div",null,[e("h2",{class:"text-2xl font-bold"},"Trending Creators"),e("p",{class:"text-sm text-muted"},"The most popular OnlyFans creators right now.")],-1)),n(m,{to:"/creators",class:"shrink-0 text-sm font-medium text-brand hover:underline"},{default:f(()=>[...t[11]||(t[11]=[l("View all â",-1)])]),_:1})]),n($,{creators:o(k)},null,8,["creators"])]),e("section",Be,[e("div",Re,[t[14]||(t[14]=e("div",null,[e("h2",{class:"text-2xl font-bold"},"ð New Creators"),e("p",{class:"text-sm text-muted"},"Fresh profiles just added to the directory.")],-1)),n(m,{to:"/new",class:"shrink-0 text-sm font-medium text-brand hover:underline"},{default:f(()=>[...t[13]||(t[13]=[l("See all new â",-1)])]),_:1})]),n($,{creators:o(E)},null,8,["creators"])]),e("section",Ue,[t[16]||(t[16]=e("div",{class:"mb-5"},[e("h2",{class:"text-2xl font-bold"},"Popular Categories"),e("p",{class:"text-sm text-muted"}," Explore creators across niches, locations and more â find content that matches your interests. ")],-1)),e("div",je,[(r(!0),i(x,null,y(o(O),s=>(r(),i("div",{key:s.group},[e("div",Ie,[e("h3",He,a(s.label),1),n(m,{to:"/best",class:"text-sm text-brand hover:underline"},{default:f(()=>[...t[15]||(t[15]=[l("More â",-1)])]),_:1})]),e("div",We,[(r(!0),i(x,null,y(s.items,g=>(r(),q(V,{key:g.slug,category:g},null,8,["category"]))),128))])]))),128))])]),e("section",Ye,[e("div",Ve,[e("h2",ze,"Why use "+a(o(c).shortName)+"?",1),t[17]||(t[17]=e("p",{class:"text-sm text-muted"}," Tools that make finding the right creator effortless â precision search with intuitive browsing. ",-1))]),e("div",Je,[(r(),i(x,null,y(W,s=>e("div",{key:s.title,class:"rounded-2xl border bg-surface p-5"},[e("span",Ke,a(s.tag),1),e("h3",Qe,a(s.title),1),e("p",Xe,a(s.desc),1),e("ul",Ze,[(r(!0),i(x,null,y(s.points,g=>(r(),i("li",{key:g,class:"flex gap-2"},[t[18]||(t[18]=e("span",{class:"text-accent"},"â",-1)),l(a(g),1)]))),128))])])),64))])]),e("section",et,[t[20]||(t[20]=e("h2",{class:"mb-4 text-2xl font-bold"},"Browse by niche",-1)),e("div",tt,[(r(!0),i(x,null,y(o(N),s=>(r(),q(m,{key:s.slug,to:`/best/${s.slug}`,class:"rounded-full border bg-surface px-3 py-1.5 text-sm text-muted transition hover:border-brand hover:text-foreground"},{default:f(()=>[l(a(s.name),1)]),_:2},1032,["to"]))),128)),n(m,{to:"/best",class:"rounded-full brand-gradient px-3 py-1.5 text-sm font-medium text-white"},{default:f(()=>[...t[19]||(t[19]=[l(" All categories â ",-1)])]),_:1})])]),e("section",st,[e("div",ot,[t[22]||(t[22]=e("div",null,[e("h2",{class:"text-2xl font-bold"},"OnlyFans Guides"),e("p",{class:"text-sm text-muted"},"Tips for finding creators, free pages, pricing, promotion and safety.")],-1)),n(m,{to:"/guides",class:"shrink-0 text-sm font-medium text-brand hover:underline"},{default:f(()=>[...t[21]||(t[21]=[l("All guides â",-1)])]),_:1})]),e("div",rt,[(r(!0),i(x,null,y(o(ue).slice(0,3),s=>(r(),q(m,{key:s.slug,to:`/guides/${s.slug}`,class:"group rounded-2xl border bg-surface p-5 transition hover:border-brand/60"},{default:f(()=>[e("span",nt,a(s.category),1),e("h3",at,a(s.title),1),e("p",it,a(s.description),1)]),_:2},1032,["to"]))),128))])]),e("section",lt,[e("div",dt,[n(z,{markdown:Y})])]),e("div",ct,[n(J,{items:L})])])])}}});
21export{Ft 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.