PageSourceSearch

https://dylanbochman.netlify.app/assets/Blog-CgndFpsn.js

js dylanbochman.netlify.app collected 2026-10-03 10:40:24 UTC 5,708 bytes, 1 lines download raw bytes

1import{r,j as e,L as f,B as j,W as y}from"./vendor-B8mTEsSR.js";import{c as b,C as v,a as N,b as w,B as m,d as S,e as B,f as C,P as R}from"./index-B1jOIFiH.js";import{g as T,f as k,a as D,s as P,l as E}from"./blog-loader-Bmfj_pCa.js";import"./ui-Dc_FVRD7.js";import"./blog-loader-BhJ8bIFE.js";import"./monitoring-DrLQlyIz.js";import"./theme-FyGxoSVC.js";const g=r.forwardRef(({className:s,type:a,...i},n)=>e.jsx("input",{type:a,className:b("flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",s),ref:n,...i}));g.displayName="Input";function F({post:s}){return e.jsx(f,{to:`/blog/${s.slug}`,className:"block h-full group",children:e.jsxs(v,{className:"h-full flex flex-col transition-all group-hover:shadow-lg group-hover:border-primary/50",children:[e.jsxs(N,{children:[e.jsxs("div",{className:"flex items-start justify-between gap-2",children:[e.jsx(w,{className:"text-xl group-hover:text-primary transition-colors",children:s.title}),s.featured&&e.jsx(m,{variant:"secondary",className:"shrink-0",children:"Featured"})]}),e.jsxs(S,{className:"flex items-center gap-2 text-sm",children:[e.jsx("time",{dateTime:s.date,children:new Date(s.date).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"})}),e.jsx("span",{children:"•"}),e.jsx("span",{children:s.readingTime})]})]}),e.jsx(B,{className:"flex-grow",children:e.jsx("p",{className:"text-muted-foreground",children:s.description})}),e.jsx(C,{className:"flex flex-wrap gap-2",children:s.tags.map(a=>e.jsx(m,{variant:"outline",children:a},a))})]})})}function I({posts:s}){const[a,i]=r.useState(""),[n,l]=r.useState(null),c=r.useMemo(()=>T(s),[s]),o=r.useMemo(()=>{let t=s;a&&(t=k(t,a)),n&&(t=D(t,n));const x=P(t,"desc"),h=x.filter(d=>d.featured),p=x.filter(d=>!d.featured);return[...h,...p]},[s,a,n]),u=t=>{l(n===t?null:t)};return e.jsxs("div",{className:"space-y-8",children:[e.jsxs("div",{className:"space-y-4",children:[e.jsx(g,{type:"search",placeholder:"Search posts...",value:a,onChange:t=>i(t.target.value),className:"max-w-md"}),c.length>0&&e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx("span",{className:"text-sm font-medium text-muted-foreground",children:"Filter by tag:"}),c.map(t=>e.jsx(m,{variant:n===t?"default":"outline",className:"cursor-pointer hover:bg-primary/10",onClick:()=>u(t),children:t},t))]})]}),o.length>0?e.jsx("div",{className:"grid gap-6 md:grid-cols-2 lg:grid-cols-3",children:o.map(t=>e.jsx(F,{post:t},t.slug))}):e.jsxs("div",{className:"text-center py-12",children:[e.jsx("p",{className:"text-muted-foreground",children:"No posts found matching your criteria."}),(a||n)&&e.jsx("button",{onClick:()=>{i(""),l(null)},className:"mt-2 text-sm text-primary hover:underline",children:"Clear filters"})]})]})}function U(){const[s,a]=r.useState([]),[i,n]=r.useState(!0),[l,c]=r.useState(null);return r.useEffect(()=>{E().then(o=>{a(o),n(!1)}).catch(o=>{console.error("Error loading blog posts:",o),c("Failed to load blog posts. Please try again later."),n(!1)})},[]),e.jsxs(e.Fragment,{children:[e.jsxs(j,{children:[e.jsx("title",{children:"Blog - Dylan Bochman"}),e.jsx("meta",{name:"description",content:"Articles and insights on Site Reliability Engineering, Incident Management, DevOps, and System Reliability."}),e.jsx("meta",{name:"keywords",content:"SRE Blog, Incident Management, DevOps, System Reliability, Technical Writing, Post-Incident Analysis"}),e.jsx("meta",{property:"og:type",content:"website"}),e.jsx("meta",{property:"og:url",content:"https://dylanbochman.com/blog"}),e.jsx("meta",{property:"og:title",content:"Blog - Dylan Bochman"}),e.jsx("meta",{property:"og:description",content:"Practical notes on reliability, incident response, and system design, written while building and operating this site."}),e.jsx("meta",{property:"og:image",content:"https://dylanbochman.com/social-preview.webp"}),e.jsx("meta",{property:"og:site_name",content:"Dylan Bochman"}),e.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),e.jsx("meta",{name:"twitter:url",content:"https://dylanbochman.com/blog"}),e.jsx("meta",{name:"twitter:title",content:"Blog - Dylan Bochman"}),e.jsx("meta",{name:"twitter:description",content:"Articles and insights on Site Reliability Engineering, Incident Management, DevOps, and System Reliability."}),e.jsx("meta",{name:"twitter:image",content:"https://dylanbochman.com/social-preview.webp"}),e.jsx("link",{rel:"canonical",href:"https://dylanbochman.com/blog"})]}),e.jsx(R,{children:e.jsxs("div",{className:"container mx-auto px-4 py-12",children:[e.jsxs("header",{className:"mb-12",children:[e.jsxs("div",{className:"flex items-center gap-4 mb-4",children:[e.jsx("h1",{className:"text-4xl font-bold",children:"Blog"}),e.jsx("a",{href:"/rss.xml",target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-orange-500 transition-colors",title:"Subscribe via RSS","aria-label":"RSS Feed",children:e.jsx(y,{className:"w-6 h-6"})})]}),e.jsx("p",{className:"text-xl text-muted-foreground",children:"Reflections on reliability, resilience, and web developement in the age of AI."})]}),i&&e.jsx("div",{className:"flex items-center justify-center py-12",children:e.jsx("div",{className:"text-muted-foreground",children:"Loading posts..."})}),l&&e.jsx("div",{className:"bg-destructive/10 text-destructive px-4 py-3 rounded-md",children:l}),!i&&!l&&e.jsx(I,{posts:s})]})})]})}export{U 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.