1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18870,e=>{"use strict";var t=e.i(43476),s=e.i(57688);let r=[{src:"/images/clients/gs-logo.png",alt:"Gorgeous Shop"},{src:"/images/clients/mh-logo.png",alt:"More Handles"},{src:"/images/clients/ths-logo.png",alt:"The Handle Studio"},{src:"/images/clients/tm-logo.png",alt:"Tile Merchant"},{src:"/images/clients/wm-logo.png",alt:"Westminster Marble"}];function l(){return(0,t.jsx)("section",{className:"py-8 bg-dark overflow-hidden",children:(0,t.jsx)("div",{className:"container",children:(0,t.jsxs)("div",{className:"flex flex-col lg:flex-row items-center justify-center gap-6 lg:gap-12",children:[(0,t.jsx)("p",{className:"text-sm text-white/70 font-medium uppercase tracking-wide flex-shrink-0",children:"Trusted by"}),(0,t.jsx)("div",{className:"hidden lg:flex items-center justify-center gap-12 opacity-70",children:r.map(e=>(0,t.jsx)(s.default,{src:e.src,alt:e.alt,width:400,height:163,className:"h-14 w-auto object-contain"},e.alt))}),(0,t.jsx)("div",{className:"lg:hidden w-full opacity-70 overflow-hidden [mask-image:linear-gradient(to_right,transparent,black_10%,black_90%,transparent)]",children:(0,t.jsx)("div",{className:"flex animate-marquee gap-12 w-max",children:[...r,...r].map((e,r)=>(0,t.jsx)(s.default,{src:e.src,alt:e.alt,width:400,height:163,className:"h-10 w-auto object-contain flex-shrink-0"},`${e.alt}-${r}`))})})]})})})}e.s(["default",()=>l])},40175,e=>{"use strict";var t=e.i(43476),s=e.i(71645);function r({pretitle:e,title:s,description:r,align:l="center",titleAs:i="h2",dark:a=!1,className:n=""}){return(0,t.jsxs)("div",{className:`${"center"===l?"text-center max-w-2xl mx-auto":""} mb-12 ${n}`,children:[e&&(0,t.jsx)("p",{className:"pretitle",children:e}),(0,t.jsx)(i,{className:`text-3xl md:text-4xl font-semibold mb-4 ${a?"text-white":""}`,children:s}),r&&(0,t.jsx)("p",{className:`text-lg ${a?"text-white/70":"text-muted"}`,children:r})]})}function l({pretitle:e="Our Process",title:l,description:i,steps:a}){let n=(0,s.useRef)(null),[o,c]=(0,s.useState)(!1),[d,h]=(0,s.use
1State)(!1),[m,u]=(0,s.useState)(!1);(0,s.useEffect)(()=>{let e=()=>u(window.innerWidth<768);return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let x=a.length>4||m,p=(0,s.useCallback)(()=>{let e=n.current;e&&(c(e.scrollLeft>1),h(e.scrollLeft<e.scrollWidth-e.clientWidth-1))},[]);(0,s.useEffect)(()=>{if(!x)return;let e=n.current;if(e)return p(),e.addEventListener("scroll",p,{passive:!0}),window.addEventListener("resize",p),()=>{e.removeEventListener("scroll",p),window.removeEventListener("resize",p)}},[x,p]);let f=e=>{let t=n.current;if(!t)return;let s=t.querySelector("[data-step]");if(!s)return;let r=s.offsetWidth+24;t.scrollBy({left:"left"===e?-r:r,behavior:"smooth"})},g=e=>{let s=e.number||e.step;return(0,t.jsxs)("div",{"data-step":!0,className:`bg-white/5 backdrop-blur border border-white/10 rounded-lg p-6 ${x?"w-full shrink-0 snap-start":""}`,children:[(0,t.jsx)("p",{className:"text-primary text-4xl font-semibold mb-3",children:s}),(0,t.jsx)("h3",{className:"text-lg font-semibold text-white mb-2",children:e.title}),(0,t.jsx)("p",{className:"text-white/70 text-sm",children:e.description})]},s)},w=x?(0,t.jsxs)("div",{className:"relative",children:[o&&(0,t.jsx)("button",{onClick:()=>f("left"),"aria-label":"Previous step",className:"absolute -left-4 top-1/2 -translate-y-1/2 z-10 w-10 h-10 rounded-full bg-white/10 backdrop-blur border border-white/20 flex items-center justify-center text-white hover:bg-white/20 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})})}),(0,t.jsx)("div",{ref:n,className:"flex gap-6 overflow-x-auto snap-x snap-mandatory scrollbar-hide",style:{scrollbarWidth:"none",msOverflowStyle:"none"},children:a.map(g)}),d&&(0,t.jsx)("button",{onClick:()=>f("right"),"aria-label":"Next step",className:"absolute -right-4 top-1/2 -translate-y-1/2 z-10 w-10 h-10 rounded-full bg-white/10 backdrop-blur border border-white/20 flex items-center justify-center text-white hover:bg-white/20 transition-colors",children:(0,t.jsx)("svg",{className:"w-5 h-5",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,t.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})})]}):(0,t.jsx)("div",{className:"grid md:grid-cols-2 lg:grid-cols-4 gap-6",children:a.map(g)});return l?(0,t.jsx)("section",{className:"section-dark py-20",children:(0,t.jsxs)("div",{className:"container",children:[(0,t.jsx)(r,{pretitle:e,title:l,description:i,dark:!0}),w]})}):w}e.s(["default",()=>l],40175)}]);
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.