PageSourceSearch

https://trains.fyi/_next/static/chunks/pages/blog-edae304f1d8072fa.js

js trains.fyi collected 2026-09-24 09:54:42 UTC 4,937 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9892],{3937:(e,a,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/blog",function(){return l(43244)}])},43244:(e,a,l)=>{"use strict";l.r(a),l.d(a,{__N_SSG:()=>g,default:()=>m});var t=l(37876),s=l(48230),r=l.n(s),i=l(14232),n=l(49915),d=l(85392),c=l(74),o=l(93408),x=l(73865),g=!0;function m({posts:e}){let{t:a,language:l}=(0,x.B)();return(0,i.useEffect)(()=>{window.gtag&&window.gtag("event","page_view",{page_title:"Blog",page_location:window.location.href,page_path:"/blog"})},[]),(0,t.jsxs)("div",{className:"bg-white",children:[(0,t.jsx)(o.A,{title:"Blog",description:"News, guides, and deep dives from the team behind trains.fyi.",canonical:"/blog/",image:"/social.png",type:"website",keywords:"trains blog, railfan blog, train tracking news, trains.fyi blog"}),(0,t.jsx)(c.A,{}),(0,t.jsxs)("main",{className:"isolate",children:[(0,t.jsx)("div",{className:"mx-auto max-w-7xl px-6 lg:px-8 pt-4",children:(0,t.jsx)(n.A,{pages:[{name:a("blogTitle"),href:"/blog"}]})}),(0,t.jsxs)("div",{className:"mx-auto max-w-7xl px-6 lg:px-8 pt-8 pb-12",children:[(0,t.jsx)("h1",{className:"text-4xl font-bold tracking-tight text-gray-900 sm:text-5xl",children:a("blogTitle")}),(0,t.jsx)("p",{className:"mt-4 max-w-2xl text-lg text-gray-600",children:a("blogSubtitle")})]}),(0,t.jsx)("div",{className:"mx-auto max-w-7xl px-6 lg:px-8 pb-24",children:0===e.length?(0,t.jsx)("p",{className:"text-gray-500",children:a("blogNoPosts")}):(0,t.jsx)("ul",{className:"grid gap-10 sm:grid-cols-2 lg:grid-cols-3",children:e.map(e=>{var a;return(0,t.jsx)("li",{className:"group rounded-lg overflow-hidden border border-gray-200 hover:shadow-lg transition-shadow bg-white",children:(0,t.jsxs)(r(),{href:`/blog/${e.slug}/`,className:"block",children:[e.image&&(0,t.jsx)("div",{className:"aspect-[16/9] w-full overflow-hidden bg-gray-100",children:(0,t.jsx)("img",{src:e.image,alt:e.imageAlt||e.title,className:"h-full w-full object-cover group-hover:scale-105 transition-transform duration-500",loading:"lazy"})}),(0,t.jsxs)("div",{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-x-3 text-xs text-gray-500",children:[e.date&&(0,t.jsx)("time",{dateTime:e.date,children:(a=e.date,a?new Date(a).toLocaleDateString("en"===l?"en-US":l,{year:"numeric",month:"long",day:"numeric"}):"")}),e.readingTime&&(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("span",{"aria-hidden":!0,children:"\xb7"}),(0,t.jsx)("span",{children:e.readingTime})]})]}),(0,t.jsx)("h2",{className:"mt-3 text-xl font-semibold text-gray-900 group-hover:text-blue-700",children:e.title}),(0,t.jsx)("p",{className:"mt-2 text-sm text-gray-600 line-clamp-3",children:e.description})]})]})},e.slug)})})})]}),(0,t.jsx)(d.A,{})]})}},49915:(e,a,l)=>{"use strict";l.d(a,{A:()=>n});var t=l(37876),s=l(60570),r=l(48230),i=l.n(r);function n({pages:e}){return(0,t.jsx)("nav",{"aria-label":"Breadcrumb",className:"flex",children:(0,t.jsxs)("ol",{role:"list",className:"flex items-center space-x-4 pt-6",children:[(0,t.jsx)("li",{children:(0,t.jsx)("div",{children:(0,t.jsxs)(i(),{href:"/",className:"text-gray-400 hover:text-gray-500",children:[(0,t.jsx)(s.A,{"aria-hidden":"true",className:"h-5 w-5 flex-shrink-0"}),(0,t.jsx)("span",{className:"sr-only",children:"Home"})]})})}),e.map(e=>(0,t.jsx)("li",{children:(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)("svg",{fill:"currentColor",viewBox:"0 0 20 20","aria-hidden":"true",className:"h-5 w-5 flex-shrink-0 text-gray-300",children:(0,t.jsx)("path",{d:"M5.555 17.776l8-16 .894.448-8 16-.894-.448z"})}),(0,t.jsx)(i(),{href:e.href,"aria-current":e.current?"page":void 0,className:"ml-4 text-sm font-medium text-gray-500 hover:text-gray-700",children:e.name})]})},e.name))]})})}},60570:(e,a,l)=>{"use strict";l.d(a,{A:()=>s});var t=l(14232);let s=t.forwardRef(function({title:e,titleId:a,...l},s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true","data-slot":"icon",ref:s,"aria-labelledby":a},l),e?t.createElement("title",{id:a},e):null,t.createElement("path",{fillRule:"evenodd",d:"M9.293 2.293a1 1 0 0 1 1.414 0l7 7A1 1 0 0 1 17 11h-1v6a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1v-3a1 1 0 0 0-1-1H9a1 1 0 0 0-1 1v3a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-6H3a1 1 0 0 1-.707-1.707l7-7Z",clipRule:"evenodd"}))})},77808:(e,a,l)=>{"use strict";l.d(a,{A:()=>s});var t=l(14232);let s=t.forwardRef(function({title:e,titleId:a,...l},s){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:s,"aria-labelledby":a},l),e?t.createElement("title",{id:a},e):null,t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18"}))})}},e=>{e.O(0,[6701,3927,2325,3990,8447,5392,636,6593,8792],()=>e(e.s=3937)),_N_E=e.O()}]);

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.