1import{r as c,j as t,m}from"./index-XjcTDRdy.js";function g({onRequestDemo:u}){const i=[{id:"rpi",title:"TruFlow RPI",subtitle:"Regulatory Posture Intelligence",description:"Turn compliance signals into governed action and continuously verified policy closure.",image:"/TruFlow RPI.png",accent:"#417242"},{id:"optimize",title:"TruFlow Optimize",subtitle:"FinOps & Cost Intelligence",description:"Turn cloud and data sprawl into cost-efficient assets with actionable intelligence.",image:"/TruFlow Optimize.png",accent:"#BB8915"},{id:"context",title:"TruFlow Context",subtitle:"AI Ready Data Product",description:"Certified, fit-for-purpose data assets with clear ownership and validated trust scores.",image:"/TruFlow Context.png",accent:"#51419E"},{id:"assurance",title:"TruFlow Assurance",subtitle:"Trusted Decision Intelligence",description:"Turn business activity and controls into actionable compliance insights.",image:"/TruFlow Assurance.png",accent:"#0C25A3"}],[a,d]=c.useState(i[0].id),x=c.useRef([]);return c.useEffect(()=>{const e={root:null,rootMargin:"-40% 0px -60% 0px",threshold:0},o=s=>{s.forEach(n=>{n.isIntersecting&&d(n.target.id)})},l=new IntersectionObserver(o,e);return x.current.forEach(s=>{s&&l.observe(s)}),()=>l.disconnect()},[]),t.jsx("section",{className:"bg-white py-16 sm:py-24 relative border-t border-neutral-100",children:t.jsxs("div",{className:"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 flex flex-col lg:flex-row gap-12 lg:gap-24 relative items-start",children:[t.jsxs("div",{className:"lg:w-[40%] sticky top-32 hidden lg:flex flex-col py-4",children:[t.jsx("h2",{className:"text-2xl sm:text-3xl lg:text-4xl font-sans font-bold text-neutral-900 tracking-tight leading-snug",children:"TruFlow Solutions"}),t.jsx("p",{className:"mt-2 text-base sm:text-lg md:text-xl font-normal text-neutral-500 tracking-tight mb-10",children:"One shared platform. Four key solutions"}),t.jsx("div",{className:"flex flex-col border-l-2 border-neutral-100 ml-2",children:i.map(e=>t.jsxs("a",{href:`#${e.id}`,className:`relative pl-8 py-4 flex flex-col transition-all duration-300 font-sans group ${a===e.id?"text-neutral-900 font-semibold":"text-neutral-400 hover:text-neutral-600 font-medium"}`,children:[a===e.id&&t.jsx(m.div,{layoutId:"activeIndicator",className:"absolute left-[-2px] top-0 bottom-0 w-[2px] rounded-r-full",style:{backgroundColor:e.accent},transition:{type:"spring",stiffness:300,damping:30}}),t.jsx("span",{className:"text-xl font-bold",children:e.title}),t.jsx("span",{className:`text-sm font-medium transition-colors ${a===e.id?"":"text-neutral-400 group-hover:text-neutral-500"}`,style:{color:a===e.id?e.accent:void 0}
1,children:e.subtitle})]},e.id))})]}),t.jsx("div",{className:"lg:w-[60%] flex flex-col gap-24 lg:gap-36 pb-24",children:i.map((e,o)=>t.jsxs("div",{id:e.id,ref:l=>x.current[o]=l,className:"scroll-mt-32 flex flex-col",children:[t.jsxs("div",{className:"flex flex-col gap-1 mb-3",children:[t.jsx("h3",{className:"text-2xl sm:text-3xl font-bold font-sans text-neutral-900 tracking-tight",children:e.title}),t.jsx("p",{className:"text-base sm:text-lg font-semibold font-sans",style:{color:e.accent},children:e.subtitle})]}),t.jsx("p",{className:"text-base sm:text-lg text-neutral-600 mb-8 font-sans leading-relaxed",children:e.description}),t.jsx("div",{className:"w-full",children:t.jsx("img",{src:e.image,alt:e.title,className:"w-full h-auto object-contain block",loading:"lazy",width:"1200",height:"900",onError:l=>{const s=l.target;s.style.display="none";const n=s.parentElement;if(n){const r=document.createElement("div");r.className="w-full aspect-[4/3] bg-neutral-100 flex flex-col items-center justify-center text-neutral-500 rounded-xl border border-neutral-200/50 border-dashed font-mono text-sm",r.innerHTML=`<span>[ Missing Image ]</span><span class="text-xs mt-2 text-neutral-400">${e.image}</span>`,n.appendChild(r)}}})})]},e.id))})]})})}export{g 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.