1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/GrainBackground-BJob1nWP.js","assets/rolldown-runtime-W-g5d7YK.js","assets/framer-BtAzFV5C.js"])))=>i.map(i=>d[i]); 2import{a as p}from"./rolldown-runtime-W-g5d7YK.js";import{d as b,f,o as l,u as h}from"./framer-BtAzFV5C.js";import{_r as d,ki as a,vr as v}from"./tanstack-Cj0XUZ4O.js";import{i as j,n as N}from"./intlayer-BVpZREeE.js";import{Hn as y,Kn as k,Mn as S,Q as w,hn as z,k as P,on as _,vn as x}from"./lucide-DpFOn6HD.js";import{t as C}from"./captchaLogos-pi5vkWTg.js";import{t as E}from"./useLocalizedHead-BbL_6EiX.js";import{t as $}from"./productPages-gNP4Fgdm.js";var n=p(f()),e=b(),A=(0,n.lazy)(()=>j(()=>import("./GrainBackground-BJob1nWP.js").then(r=>({default:r.GrainBackground})),__vite__mapDeps([0,1,2])));function I(r,t){if(r.upcoming)return t;const o=[];return r.tokenPrice!==null&&o.push(`$${r.tokenPrice.toFixed(2)}`),r.imagePrice!==null&&o.push(`$${r.imagePrice.toFixed(2)}`),o.length===0?"â":`from $${Math.min(r.tokenPrice??1/0,r.imagePrice??1/0).toFixed(2)} / 1K`}function V(){const r=N($,"productPages").g,[t,o]=(0,n.useState)("all");E({title:String(r.seoTitle),description:String(r.seoDescription)});const i=[{id:"all",label:String(r.categories.all)},{id:"Token-based",label:String(r.categories.tokenBased)},{id:"Score-based",label:String(r.categories.scoreBased)},{id:"Interactive",label:String(r.categories.interactive)},{id:"Image recognition",label:String(r.categories.recognition)},{id:"OCR",label:String(r.categories.ocr)},{id:"Audio",label:String(r.categories.audio)},{id:"extension",label:String(r.categories.extensions)}],m=[{name:String(r.chromeExt),slug:"chrome-ext",type:"extension",status:"v2.4.0",users:"10k+",rating:"4.9",description:String(r.chromeExtDesc),href:"/products/extensions",price:0,speedSec:0},{name:String(r.firefoxExt),slug:"firefox-ext",type:"extension",status:"v2.1.0",users:"5k+",rating:"4.8",description:String(r.firefoxExtDesc),href:"/products/extensions",price:0,speedSec:0}],g=(0,n.useMemo)(()=>t==="all"?[...d]:t==="extension"?[]:d.filter(s=>s.type===t),[t]),u=t==="all"||t==="extension";return(0,e.jsxs)("div",{className:"min-h-screen bg-background text-foreground pt-24 pb-20 relative overflow-hidden font-sans selection:bg-primary/30",children:[(0,e.jsx)("div",{className:"absolute inset-0 z-0 pointer-events-none",children:(0,e.jsx)(n.Suspense,{fallback:(0,e.jsx)("div",{className:"absolute inset-0 bg-background"}),children:(0,e.jsx)(A,{className:"z-0"})})}),(0,e.jsx)("div",{className:"fixed inset-0 z-0 pointer-events-none opacity-20 bg-[radial-gradient(ellipse_at_top,_var(--tw-gradient-stops))] from-primary/40 via-background to-background"}),(0,e.jsxs)("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 relative z-10",children:[(0,e.jsxs)("div",{className:"flex flex-col md:flex-row md:items-end justify-between gap-6 mb-12",children:[(0,e.jsxs)("div",{children:[(0,e.jsx)("h1",{className:"text-4xl md:text-5xl font-black font-sans tracking-tight mb-4 text-foreground",children:r.header}),(0,e.jsxs)("p",{className:"text-muted-foreground text-lg max-w-xl",children:[d.length,"+ ",r.headerSubtitle]})]}),(0,e.jsx)("div",{className:"flex flex-wrap items-center gap-1 p-1 rounded-xl bg-card border border-border backdrop-blur-sm self-start md:self-auto",children:i.map(s=>(0,e.jsx)("button",{onClick:()=>
2o(s.id),className:` 3 px-4 py-2 rounded-lg text-sm font-medium transition-all duration-200 4 ${t===s.id?"bg-muted text-foreground shadow-lg shadow-black/20":"text-muted-foreground hover:text-foreground hover:bg-card"} 5 `,children:s.label},s.id))})]}),(0,e.jsx)(l.div,{layout:!0,className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4",children:(0,e.jsxs)(h,{mode:"popLayout",children:[g.map(s=>(0,e.jsx)(c,{product:s,labels:r},s.slug)),u&&m.map(s=>(0,e.jsx)(D,{ext:s,labels:r},s.slug)),t==="all"&&v.slice(0,4).map(s=>(0,e.jsx)(c,{product:s,labels:r},s.slug))]})}),(0,e.jsx)("div",{className:"mt-16 text-center",children:(0,e.jsxs)(a,{to:"/pricing",className:"inline-flex items-center gap-2 px-6 py-3 rounded-xl bg-card border border-border text-foreground hover:bg-muted transition-colors font-medium text-sm",children:[r.viewPricing,(0,e.jsx)(y,{size:16})]})})]})]})}function c({product:r,labels:t}){const o=C(r.slug);return(0,e.jsx)(l.div,{layout:!0,initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.2},className:"group relative",children:(0,e.jsxs)("div",{className:`block h-full bg-background hover:bg-background border border-border hover:border-border rounded-2xl p-5 transition-all duration-300 hover:-translate-y-1 hover:shadow-xl hover:shadow-black/50 flex flex-col justify-between relative ${r.upcoming?"opacity-60":""}`,children:[(0,e.jsx)(a,{to:`/docs/recognition/${r.slug}`,className:"absolute inset-0 z-0","aria-label":`View ${r.name}`}),(0,e.jsxs)("div",{className:"flex items-start justify-between mb-4 relative z-10 pointer-events-none",children:[(0,e.jsx)("div",{className:"w-10 h-10 rounded-xl bg-card border border-border flex items-center justify-center overflow-hidden",children:o?(0,e.jsx)("img",{src:o,alt:`${r.name} logo`,className:"w-full h-full object-contain p-1.5",loading:"lazy"}):(0,e.jsx)("span",{className:"text-xs font-bold text-muted-foreground",children:r.name.charAt(0)})}),(0,e.jsx)("div",{className:"flex items-center gap-1 pointer-events-auto",children:r.upcoming?(0,e.jsx)("span",{className:"text-[10px] uppercase font-bold tracking-wider px-2 py-1 rounded-md border border-border bg-muted text-muted-foreground",children:t.statusSoon}):(0,e.jsx)("span",{className:"text-[10px] uppercase font-bold tracking-wider px-2 py-1 rounded-md border border-border bg-emerald-500/10 text-emerald-600",children:t.statusLive})})]}),(0,e.jsxs)("div",{className:"mb-4 relative z-10 pointer-events-none",children:[(0,e.jsxs)("h3",{className:"text-lg font-bold text-foreground mb-1 group-hover:text-foreground transition-colors flex items-center gap-1",children:[r.name,(0,e.jsx)(x,{size:14,className:"opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300 text-muted-foreground"})]}),(0,e.jsx)("p",{className:"text-xs text-muted-foreground",children:r.type})]}),(0,e.jsxs)("div",{className:"space-y-4 mt-auto relative z-10 pointer-events-none",children:[!r.upcoming&&(0,e.jsx)("div",{className:"flex items-center justify-between text-xs font-mono border-b border-border pb-3",children:(0,e.jsxs)("div",{className:"flex items-center gap-1.5 text-muted-foreground",children:[(0,e.jsx)(z,{size:11}),(0,e.jsx)("span",{children:r.speedSec?`${r.speedSec}s`:"â"})]})}),(0,e.jsxs)("div",{className:"flex items-center justify-between pt-1 pointer-events-auto",children:[(0,e.jsx)("div",{className:"text-[11px] font-semibold px-2 py-1 rounded-md bg-card text-foreground border border-border pointer-events-none tabular-nums",children:I(r,String(t.comingSoon))}),(0,e.jsxs)("div",{className:"flex items-center gap-2",children:[(0,e.jsx)(a,{to:`/docs/recognition/${r.slug}`,className:"text-muted-foreground hover:text-foreground transition-colors p-1 relative z-20",title:String(t.titleDocs),onClick:i=>i.stopPropagation(),children:(0,e.jsx)(S,{size:14})}),(0,e.jsx)(a,{to:"/pricing",className:"text-muted-foreground hover:text-foreground transition-colors p-1 relative z-20",title:String(t.titleViewPricing),onClick:i=>i.stopPropagation(),children:(0,e.jsx)(_,{size:14})})]})]})]})]})})}function D({ext:r,labels:t}){return(0,e.jsx)(l.div,{layout:!0,initial:{opacity:0,scale:.9}
5,animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},transition:{duration:.2},className:"group relative",children:(0,e.jsxs)("div",{className:"block h-full bg-background hover:bg-background border border-border hover:border-border rounded-2xl p-5 transition-all duration-300 hover:-translate-y-1 hover:shadow-xl hover:shadow-black/50 flex flex-col justify-between relative",children:[(0,e.jsx)(a,{to:r.href,className:"absolute inset-0 z-0","aria-label":`View ${r.name}`}),(0,e.jsxs)("div",{className:"flex items-start justify-between mb-4 relative z-10 pointer-events-none",children:[(0,e.jsx)("div",{className:"w-10 h-10 rounded-xl bg-card border border-border flex items-center justify-center",children:(0,e.jsx)(w,{size:20,className:"text-muted-foreground"})}),(0,e.jsx)("span",{className:"text-[10px] uppercase font-bold tracking-wider px-2 py-1 rounded-md border border-border bg-card text-muted-foreground",children:r.status})]}),(0,e.jsxs)("div",{className:"mb-4 relative z-10 pointer-events-none",children:[(0,e.jsxs)("h3",{className:"text-lg font-bold text-foreground mb-1 group-hover:text-foreground transition-colors flex items-center gap-1",children:[r.name,(0,e.jsx)(x,{size:14,className:"opacity-0 -translate-x-2 group-hover:opacity-100 group-hover:translate-x-0 transition-all duration-300 text-muted-foreground"})]}),(0,e.jsx)("p",{className:"text-xs text-muted-foreground",children:r.description})]}),(0,e.jsxs)("div",{className:"space-y-4 mt-auto relative z-10 pointer-events-none",children:[(0,e.jsxs)("div",{className:"grid grid-cols-2 gap-2 text-xs",children:[(0,e.jsxs)("div",{className:"bg-card rounded-lg p-2 border border-border",children:[(0,e.jsxs)("div",{className:"text-muted-foreground mb-0.5 flex items-center gap-1",children:[(0,e.jsx)(k,{size:10})," ",t.labelUsers]}),(0,e.jsx)("div",{className:"text-foreground font-mono font-medium",children:r.users})]}),(0,e.jsxs)("div",{className:"bg-card rounded-lg p-2 border border-border",children:[(0,e.jsxs)("div",{className:"text-muted-foreground mb-0.5 flex items-center gap-1",children:[(0,e.jsx)(P,{size:10})," ",t.labelRating]}),(0,e.jsx)("div",{className:"text-foreground font-mono font-medium",children:r.rating})]})]}),(0,e.jsx)("div",{className:"flex items-center justify-between pt-1",children:(0,e.jsx)("div",{className:"text-[11px] font-semibold px-2 py-1 rounded-md bg-card text-foreground border border-border",children:t.free})})]})]})})}export{V as component};
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.