PageSourceSearch

https://getrapai.com/assets/index-CDmBdijQ.js

js getrapai.com collected 2026-10-04 18:37:30 UTC 3,208 bytes, 1 lines download raw bytes

1import{e as t,j as e,s as o,aq as d,dx as c,eY as u,ar as x,dy as g,eJ as m,fb as p,am as b,fc as f,fd as h}from"./index-AXjBfABT.js";const j=()=>"Next",l=((r={},s={})=>(s.locale??t(),j())),N=()=>"No posts yet",_=((r={},s={})=>(s.locale??t(),N())),v=()=>"of",y=((r={},s={})=>(s.locale??t(),v())),w=()=>"Page",C=((r={},s={})=>(s.locale??t(),w())),B=()=>"Blog pagination",D=((r={},s={})=>(s.locale??t(),B())),L=()=>"Previous",a=((r={},s={})=>(s.locale??t(),L()));function z({post:r}){const{slug:s}=r;return e.jsx(o,{to:"/blog/$slug",params:{slug:s},className:"h-full",children:e.jsxs(d,{className:"h-full border border-border py-0 ring-0 transition-colors hover:border-primary",children:[r.image&&e.jsx("div",{className:"aspect-video w-full overflow-hidden rounded-t-xl bg-muted",children:e.jsx("img",{src:r.image,alt:r.title,className:"size-full object-cover transition-transform hover:scale-[1.05]",width:1280,height:720,loading:"lazy",decoding:"async"})}),e.jsxs(c,{className:"flex flex-row items-center justify-between gap-2 pt-4 pb-0",children:[e.jsx("span",{className:"rounded-full bg-muted px-2.5 py-0.5 text-xs font-medium text-muted-foreground capitalize",children:r.category}),e.jsx("span",{className:"text-xs text-muted-foreground",children:u(new Date(r.date))})]}),e.jsxs(x,{className:"pb-4",children:[e.jsx(g,{className:"line-clamp-2 text-lg font-semibold",children:e.jsx("h2",{children:r.title})}),r.description&&e.jsx(m,{className:"mt-2 line-clamp-2",children:r.description})]})]})})}function k({posts:r}){return r.length===0?e.jsx("div",{className:"py-12 text-center text-muted-foreground",children:_()}):e.jsx("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3",children:r.map(s=>e.jsx(z,{post:s},s.slug))})}function P({currentPage:r,totalPages:s}){if(s<=1)return null;const n=r-1,i=r+1;return e.jsxs("nav",{className:"mt-8 flex items-center justify-center gap-2","aria-label":D(),children:[r>1?e.jsx(o,{to:"/blog",search:n<=1?{page:void 0}:{page:n},className:"inline-flex items-center rounded-lg border border-border px-4 py-2 text-sm font-medium hover:bg-muted",children:a()}):e.jsx("span",{"aria-disabled":"true",className:"inline-flex cursor-not-allowed items-center rounded-lg border border-border px-4 py-2 text-muted-foreground text-sm",children:a()}),e.jsxs("span",{className:"px-2 text-muted-foreground text-sm",children:[C()," ",r," ",y()," ",s]}),r<s?e.jsx(o,{to:"/blog",search:{page:i},className:"inline-flex items-center rounded-lg border border-border px-4 py-2 text-sm font-medium hover:bg-muted",children:l()}):e.jsx("span",{"aria-disabled":"true",className:"inline-flex cursor-not-allowed items-center rounded-lg border border-border px-4 py-2 text-muted-foreground text-sm",children:l()})]})}function q(){const{posts:r,totalPages:s,currentPage:n}=p.useLoaderData();return e.jsx(b,{className:"py-16 px-4",children:e.jsxs("div",{className:"mx-auto space-y-8",children:[e.jsxs("div",{className:"space-y-4 text-center",children:[e.jsx("h1",{className:"text-3xl font-bold tracking-tight",children:f()}),e.jsx("p",{className:"text-muted-foreground text-lg",children:h()})]}),e.jsx(k,{posts:r}),e.jsx(P,{currentPage:n,totalPages:s})]})})}export{q 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.