PageSourceSearch

https://smartdevops.ai/assets/Blog-DwrZuYDF.js

js smartdevops.ai collected 2026-10-05 15:05:51 UTC 7,654 bytes, 6 lines download raw bytes

1import{F as E,O as e,w as m,U as d,r as S,a0 as L,a3 as O,L as B,V as M}from"./index-IBHyG7M_.js";import{S as _}from"./SEOHead-eytQxOGp.js";import{P as z,p as v}from"./pageHeroImages-tyb6mRmG.js";import{S as g}from"./skeleton-0R1CQmu9.js";import{C as F}from"./chevron-left-BuTMcAN3.js";import{C as $}from"./chevron-right-Dp_jLZ0E.js";import{m as N}from"./proxy-Dtno_ZDt.js";import{f as R}from"./format-sbWH3_uq.js";import{C as G}from"./clock-D5veJVIH.js";/**
2 * @license lucide-react v0.462.0 - ISC
3 *
4 * This source code is licensed under the ISC license.
5 * See the LICENSE file in the root directory of this source tree.
6 */const H=E("Ellipsis",[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]]),w=({className:a,...t})=>e.jsx("nav",{role:"navigation","aria-label":"pagination",className:m("mx-auto flex w-full justify-center",a),...t});w.displayName="Pagination";const P=d.forwardRef(({className:a,...t},r)=>e.jsx("ul",{ref:r,className:m("flex flex-row items-center gap-1",a),...t}));P.displayName="PaginationContent";const u=d.forwardRef(({className:a,...t},r)=>e.jsx("li",{ref:r,className:m("",a),...t}));u.displayName="PaginationItem";const h=({className:a,isActive:t,size:r="icon",...o})=>e.jsx("a",{"aria-current":t?"page":void 0,className:m(S({variant:t?"outline":"ghost",size:r}),a),...o});h.displayName="PaginationLink";const C=({className:a,...t})=>e.jsxs(h,{"aria-label":"Go to previous page",size:"default",className:m("gap-1 pl-2.5",a),...t,children:[e.jsx(F,{className:"h-4 w-4"}),e.jsx("span",{children:"Previous"})]});C.displayName="PaginationPrevious";const k=({className:a,...t})=>e.jsxs(h,{"aria-label":"Go to next page",size:"default",className:m("gap-1 pr-2.5",a),...t,children:[e.jsx("span",{children:"Next"}),e.jsx($,{className:"h-4 w-4"})]});k.displayName="PaginationNext";const I=({className:a,...t})=>e.jsxs("span",{"aria-hidden":!0,className:m("flex h-9 w-9 items-center justify-center",a),...t,children:[e.jsx(H,{className:"h-4 w-4"}),e.jsx("span",{className:"sr-only",children:"More pages"})]});I.displayName="PaginationEllipsis";const K=9,V={"@context":"https://schema.org","@type":"Blog",name:"Smart Devops LLC Blog",url:"https://smartdevops.ai/blog",description:"Expert insights on AWS, Azure, Kubernetes, DevOps automation, FinOps, and AI for enterprise infrastructure."},ee=()=>{const[a,t]=d.useState(null),[r,o]=d.useState(1),{data:p}=L(),j=d.useMemo(()=>{var s;if(!(!a||!p))return(s=p.find(n=>n.slug===a))==null?void 0:s.id},[a,p]),{data:x,isLoading:A}=O({page:r,limit:K,categoryId:j}),b=(x==null?void 0:x.posts)||[],f=x==null?void 0:x.pagination,i=Math.max(1,(f==null?void 0:f.pages)||1);d.useEffect(()=>{r>i&&o(i)},[r,i]);const y=a&&!j?b.filter(s=>{var n;return((n=s.category)==null?void 0:n.slug)===a}):b,D=d.useMemo(()=>{const s=[];if(i<=7){for(let c=1;c<=i;c+=1)s.push(c);return s}s.push(1);const n=Math.max(2,r-1),l=Math.min(i-1,r+1);n>2&&s.push("ellipsis");for(let c=n;c<=l;c+=1)s.push(c);return l<i-1&&s.push("ellipsis"),s.push(i),s},[r,i]);return e.jsxs(e.Fragment,{children:[e.jsx(_,{title:"Cloud & DevOps Blog",description:"Expert insights on AWS, Azure, Kubernetes, DevOps automation, FinOps, and AI for enterprise infrastructure.",keywords:"cloud blog, DevOps articles, AWS tutorials, Azure guides, Kubernetes insights, CI/CD best practices, FinOps, cloud architecture",canonical:"/blog",schema:V,breadcrumbs:[{name:"Smart Devops LLC",url:"/"},{name:"Blog",url:"/blog"}]}),e.jsxs("section",{className:"relative overflow-hidden bg-hero py-20 lg:py-28",children:[e.jsx(z,{src:v.blog.src,position:v.blog.position}),e.jsx("div",{className:"container relative z-10 mx-auto px-4 text-center",children:e.jsxs(N.div,{initial:{opacity:0,y:20},animate:{opacity:1,y:0},children:[e.jsx("span",{className:"inline-block px-3 py-1 text-xs font-display font-medium uppercase tracking-widest rounded-full bg-white/10 text-white/80 mb-4",children:"Blog"}),e.jsx("h1",{className:"text-4xl md:text-5xl font-display font-bold text-white",children:"Engineering Insights"}),e.jsx("p",{className:"mt-4 text-lg text-white/60 max-w-xl mx-auto",children:"Deep dives into cloud, DevOps, and AI from our team of engineers."})]})})]}),e.jsx("section",{className:"py-16 bg-background",children:e.jsxs("div",{className:"container mx-auto px-4",children:[e.jsxs("div",{className:"flex flex-wrap gap-2 mb-10",children:[e.jsx("button",{onClick:()=>{t(null),o(1)},className:`px-4 py-1.5 text-sm font-medium rounded-full border transition-colors ${a?"border-border hover:bg-primary hover:text-primary-foreground hover:border-primary":"bg-primary text-primary-foreground border-primary"}`,children:"All"}),p==null?void 0:p.map(s=>e.jsx("button",{onClick:()=>{t(s.slug),o(1)},className:`px-4 py-1.5 text-sm font-medium rounded-full border transition-colors ${a===s.slug?"bg-primary text-primary-foreground border-primary":"border-border hover:bg-primary hover:text-primary-foreground hover:border-primary"}`,children:s.name},s.slug))]}),A?e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:[1,2,3].map(s=>e.jsxs("div",{className:"rounded-2xl border border-border bg-card overflow-hidden",children:[e.jsx(g,{className:"h-36"}),e.jsxs("div",{className:"p-6 space-y-3",children:[e.jsx(g,{className:"h-4 w-1/3"}),e.jsx(g,{className:"h-5 w-full"}),e.jsx(g,{className:"h-4 w-2/3"})]})]},s))}):y&&y.length>0?e.jsx("div",{className:"grid md:grid-cols-2 lg:grid-cols-3 gap-6",children:y.map((s,n)=>{var l;return e.jsx(N.div,{initial:{opacity:0,y:20},whileInView:{opacity:1,y:0},viewport:{once:!0},transition:{delay:n*.05},children:e.jsxs(B,{to:`/blog/${s.slug}`,className:"group block h-full rounded-2xl border border-border bg-card overflow-hidden hover:border-primary/30 hover:shadow-lg transition-all",children:[e.jsx("div",{className:"h-auto bg-gradient-to-br from-navy to-navy-light flex items-center justify-center overflow-hidden min-h-40",children:s.featured_image?e.jsx("img",{src:M(s.featured_image),alt:s.title,className:"w-full h-auto object-contain max-h-48",loading:"lazy",decoding:"async"}):e.jsx("span",{className:"text-xs font-display text-white/40 uppercase tracking-widest",children:((l=s.category)==null?void 0:l.name)||"Article"})}),e.jsxs("div",{className:"p-6",children:[e.jsxs("div",{className:"flex items-center gap-3 text-xs text-muted-foreground mb-3",children:[s.published_at&&e.jsx("span",{children:R(new Date(s.published_at),"MMM d, yyyy")}),s.read_time_minutes&&e.jsxs("span",{className:"flex items-center gap-1",children:[e.jsx(G,{className:"w-3 h-3"})," ",s.read_time_minutes," min"]})]}),e.jsx("h2",{className:"font-display font-semibold text-foreground group-hover:text-primary transition-colors",children:s.title}),s.excerpt&&e.jsx("p",{className:"text-sm text-muted-foreground mt-2",children:s.excerpt})]})]})},s.id)})}):e.jsx("p",{className:"text-center text-muted-foreground py-12",children:"No posts yet. Check back soon!"}),i>1&&e.jsxs("div",{className:"mt-12 space-y-3",children:[e.jsxs("p",{className:"text-center text-sm text-muted-foreground",children:["Page ",r," of ",i]}),e.jsx(w,{children:e.jsxs(P,{children:[e.jsx(u,{children:e.jsx(C,{href:"#",onClick:s=>{s.preventDefault(),r>1&&o(r-1)},className:r===1?"pointer-events-none opacity-50":""})}),D.map((s,n)=>e.jsx(u,{children:s==="ellipsis"?e.jsx(I,{}):e.jsx(h,{href:"#",isActive:s===r,onClick:l=>{l.preventDefault(),s!==r&&o(s)},children:s})},`${s}-${n}`)),e.jsx(u,{children:e.jsx(k,{href:"#",onClick:s=>{s.preventDefault(),r<i&&o(r+1)},className:r>=i?"pointer-events-none opacity-50":""})})]})})]})]})})]})};export{ee 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.