PageSourceSearch

https://rewriter.pro/assets/index-Cr33EHBz.js

js rewriter.pro collected 2026-10-05 07:21:32 UTC 2,917 bytes, 1 lines download raw bytes

1import{j as e,L as a,Q as o,S as d,T as i,V as c,W as m,m as t,X as x,Y as g}from"./main-DcVtzUt_.js";import{f as u}from"./formatter-Ce_Vu9Jy.js";function p({post:s}){const{slug:r}=s;return e.jsx(a,{to:"/blog/$slug",params:{slug:r},className:"h-full",children:e.jsxs(o,{className:"h-full py-0 transition-[box-shadow,ring-color] hover:shadow-md dark:hover:ring-foreground/20",children:[s.image&&e.jsx("div",{className:"aspect-video w-full overflow-hidden rounded-t-xl bg-muted",children:e.jsx("img",{src:s.image,alt:s.title,className:"size-full object-cover transition-transform hover:scale-[1.05]",width:1280,height:720,loading:"lazy",decoding:"async"})}),e.jsxs(d,{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:s.category}),e.jsx("span",{className:"text-xs text-muted-foreground",children:u(s.date)})]}),e.jsxs(i,{className:"pb-4",children:[e.jsx(c,{className:"line-clamp-2 text-lg",children:s.title}),s.description&&e.jsx(m,{className:"mt-2 line-clamp-2",children:s.description})]})]})})}function h({posts:s}){return s.length===0?e.jsx("div",{className:"py-12 text-center text-muted-foreground",children:t.blog.noPosts}):e.jsx("div",{className:"grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3",children:s.map(r=>e.jsx(p,{post:r},r.slug))})}function f({currentPage:s,totalPages:r}){if(r<=1)return null;const l=s-1,n=s+1;return e.jsxs("nav",{className:"mt-8 flex items-center justify-center gap-2","aria-label":"Blog pagination",children:[s>1?e.jsx(a,{to:"/blog",search:l<=1?{page:void 0}:{page:l},className:"inline-flex items-center rounded-lg border border-border px-4 py-2 text-sm font-medium hover:bg-muted",children:t.blog.previous}):e.jsx("span",{className:"inline-flex cursor-not-allowed items-center rounded-lg border border-border px-4 py-2 text-muted-foreground text-sm",children:t.blog.previous}),e.jsxs("span",{className:"px-2 text-muted-foreground text-sm",children:[t.blog.page," ",s," ",t.blog.of," ",r]}),s<r?e.jsx(a,{to:"/blog",search:{page:n},className:"inline-flex items-center rounded-lg border border-border px-4 py-2 text-sm font-medium hover:bg-muted",children:t.blog.next}):e.jsx("span",{className:"inline-flex cursor-not-allowed items-center rounded-lg border border-border px-4 py-2 text-muted-foreground text-sm",children:t.blog.next})]})}function N(){const{posts:s,totalPages:r,currentPage:l}=x.useLoaderData();return e.jsx(g,{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:t.blog.title}),e.jsx("p",{className:"text-muted-foreground text-lg",children:t.blog.description})]}),e.jsx(h,{posts:s}),e.jsx(f,{currentPage:l,totalPages:r})]})})}export{N 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.