1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[893],{7013:(e,t,s)=>{"use strict";s.d(t,{A:()=>l});let l=(0,s(71847).A)("ArrowUpRight",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]])},15239:(e,t,s)=>{"use strict";s.d(t,{default:()=>r.a});var l=s(54652),r=s.n(l)},48314:(e,t,s)=>{"use strict";s.d(t,{A:()=>l});let l=(0,s(71847).A)("RotateCcw",[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]])},54652:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var s in t)Object.defineProperty(e,s,{enumerable:!0,get:t[s]})}(t,{default:function(){return c},getImageProps:function(){return i}});let l=s(28140),r=s(75040),a=s(81356),n=l._(s(71124));function i(e){let{props:t}=(0,r.getImgProps)(e,{defaultLoader:n.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,s]of Object.entries(t))void 0===s&&delete t[e];return{props:t}}let c=a.Image},71847:(e,t,s)=>{"use strict";s.d(t,{A:()=>i});var l=s(12115);let r=function(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return t.filter((e,t,s)=>!!e&&""!==e.trim()&&s.indexOf(e)===t).join(" ").trim()};var a={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let n=(0,l.forwardRef)((e,t)=>{let{color:s="currentColor",size:n=24,strokeWidth:i=2,absoluteStrokeWidth:c,className:o="",children:d,iconNode:p,...m}=e;return(0,l.createElement)("svg",{ref:t,...a,width:n,height:n,stroke:s,strokeWidth:c?24*Number(i)/Number(n):i,className:r("lucide",o),...m},[...p.map(e=>{let[t,s]=e;return(0,l.createElement)(t,s)}),...Array.isArray(d)?d:[d]])}),i=(e,t)=>{let s=(0,l.forwardRef)((s,a)=>{let{className:i,...c}=s;return(0,l.createElement)(n,{ref:a,iconNode:t,className:r("lucide-".concat(e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),i),...c})});return s.displayName="".concat(e),s}},86651:(e,t,s)=>{"use strict";s.d(t,{A:()=>l});let l=(0,s(71847).A)("Search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]])},91938:(e,t,s)=>{"use strict";s.d(t,{ProjectsExplorer:()=>g});var l=s(95155),r=s(15239),a=s(52619),n=s.n(a),i=s(12115),c=s(48314),o=s(86651),d=s(71847);let p=(0,d.A)("Calendar",[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]]),m=(0,d.A)("MapPin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]);var u=s(7013);let x=["AV","ELV","Fire","Automation","Networking","BMS"],h=["Healthcare","Hospitality","Residential","Government","Commercial","Education","Industrial"];function g(e){let{projects:t,serviceNames:s}=e,a=(0,i.useMemo)(()=>t.map(e=>({...e,_systems:function(e){let t=new Set,s=(e.scope.join(" ")+" "+e.brief+" "+e.brands.join(" ")).toLowerCase();return/\b(av|atmos|projector|cinema|audio|public[- ]?address|pa\b|paging)/.test(s)&&t.add("AV"),/\b(cctv|surveillance|access[- ]?control|nurse[- ]?call|intrusion|elv|video)/.test(s)&&t.add("ELV"),/\b(fire[- ]?alarm|addressable|detection|cause[- ]?and[- ]?effect|voice[- ]?evac)/.test(s)&&t.add("Fire"),/\b(automation|knx|crestron|control4|lighting control|scene)/.test(s)&&t.add("Automation"),/\b(network|cabling|cat6|wi[- ]?fi|switch|router|backbone|ip[- ]?pbx)/.test(s)&&t.add("Networking"),/\b(bms|building[- ]management|chiller|ahu|sub[- ]?meter)/.test(s)&&t.add("BMS"),[...t]}(e),_industry:function(e){let t=e.toLowerCase();return/health|hospital/.test(t)?"Healthcare":/hotel|hospitality|resort/.test(t)?"Hospitality":/resid|villa|home/.test(t)?"Residential":/gov|civic|defence/.test(t)?"Government":/educat|school|college|campus/.test(t)?"Education":/industrial|plant|process/.test(t)?"Industrial":"Commercial"}(e.sector),_scale:function(e){let t=(e.size+" "+e.brief).toLowerCase();return/multi[- ]?block|teaching hospital|campus|mall|secretariat|enterprise|nation/.test(t)?"Enterprise":/multi[- ]?tenant|hotel|hospital|college|office|tower|institut/.test(t)?"Mid":"Small"}(e),_rationale:function(e){if(e.outcome)return e.outcome;let t=e.brief.split(RegExp("(?<=[.!?])\\s"))[0];return t.length>200?t.slice(0,197)+"â¦":t}(e),_city:e.location.split(",")[0].trim()})),[t]),d=(0,i.useMemo)(()=>["All",...Array.from(new Set(a.map(e=>e._city))).sort()],[a]),g=(0,i.useMemo)(()=>{let e=new Set;return a.forEach(t=>{var s;return null==(s=t.serviceSlugs)?void 0:s.forEach(t=>e.add(t))}),Array.from(e).map(e=>{var t;return{slug:e,name:null!=(t=s[e])?t:e}}).sort((e,t)=>
1e.name.localeCompare(t.name))},[a,s]),[b,v]=(0,i.useState)("All"),[j,y]=(0,i.useState)("All"),[k,N]=(0,i.useState)("All"),[A,w]=(0,i.useState)("All"),[C,_]=(0,i.useState)("All"),[S,E]=(0,i.useState)(""),M=S.trim().toLowerCase(),L=a.filter(function(e){var t;return("All"===b||e._industry===b)&&("All"===j||e._city===j)&&("All"===k||!!e._systems.includes(k))&&("All"===C||e.status===C)&&("All"===A||!!(null!=(t=e.serviceSlugs)?t:[]).includes(A))&&(!M||!![e.name,e.sector,e.location,e.brief,...e.brands].join(" ").toLowerCase().includes(M))&&!0}),P=+("All"!==b)+ +("All"!==j)+ +("All"!==k)+ +("All"!==C)+ +("All"!==A)+ +!!M;return(0,l.jsx)("section",{className:"bg-sc-paper-50 py-16 md:py-20","aria-label":"Projects explorer",children:(0,l.jsxs)("div",{className:"container-wide",children:[(0,l.jsxs)("div",{className:"flex flex-wrap items-end justify-between gap-y-4 border-b border-sc-stone-300 pb-5",children:[(0,l.jsxs)("div",{className:"max-w-2xl",children:[(0,l.jsx)("p",{className:"font-sans text-[17px] italic text-sc-gold-500",children:"\xb7 The work \xb7 filterable"}),(0,l.jsxs)("h2",{className:"font-geist font-medium mt-3 text-[clamp(2rem,4vw,3.5rem)] leading-[0.96] text-sc-ink-900",children:[t.length," projects,",(0,l.jsx)("br",{}),(0,l.jsx)("em",{className:"text-sc-gold-500",children:"five lenses."})]})]}),(0,l.jsxs)("div",{className:"flex flex-wrap items-baseline gap-x-5 gap-y-2 font-sans text-[14px] italic text-sc-ink-700",children:[(0,l.jsxs)("p",{children:[L.length," of ",t.length," matching"]}),P>0&&(0,l.jsxs)("button",{type:"button",onClick:function(){v("All"),y("All"),N("All"),_("All"),w("All"),E("")},className:"inline-flex items-center gap-1.5 border-b border-sc-gold-500/60 pb-0.5 not-italic text-[11.5px] font-medium uppercase tracking-[0.22em] text-sc-ink-900 transition-colors hover:border-sc-copper-600 hover:text-sc-copper-700",children:[(0,l.jsx)(c.A,{className:"h-3 w-3"}),"Reset ",P," filter",1===P?"":"s"]})]})]}),(0,l.jsxs)("div",{className:"mt-6",children:[(0,l.jsx)("label",{htmlFor:"projects-explorer-search",className:"text-[11.5px] font-semibold uppercase tracking-[0.30em] text-sc-gold-600",children:"Search"}),(0,l.jsxs)("div",{className:"mt-3 flex items-center gap-3 border border-sc-stone-300 bg-sc-paper-50 px-3 py-2.5 focus-within:border-sc-gold-500",children:[(0,l.jsx)(o.A,{className:"h-4 w-4 shrink-0 text-sc-ink-700"}),(0,l.jsx)("input",{id:"projects-explorer-search",type:"text",value:S,onChange:e=>
1E(e.target.value),placeholder:"By name, sector, brand, or city â try âAtmosâ or âHoneywellâ",className:"w-full bg-transparent text-[14px] text-sc-ink-900 placeholder:text-sc-ink-700/55 focus:outline-none"}),S&&(0,l.jsx)("button",{type:"button",onClick:()=>E(""),"aria-label":"Clear search",className:"text-[11px] font-medium uppercase tracking-[0.22em] text-sc-ink-700 hover:text-sc-copper-700",children:"Clear"})]})]}),(0,l.jsxs)("div",{className:"mt-8 grid gap-x-8 gap-y-6 md:grid-cols-2 md:gap-x-10 lg:grid-cols-3",children:[(0,l.jsx)(f,{label:"Industry",options:["All",...h],value:b,onChange:e=>v(e),count:e=>a.filter(t=>{var s;let l={...t};return("All"===e||l._industry===e)&&("All"===j||l._city===j)&&("All"===k||l._systems.includes(k))&&("All"===C||l.status===C)&&("All"===A||(null!=(s=l.serviceSlugs)?s:[]).includes(A))}).length}),(0,l.jsx)(f,{label:"City",options:d,value:j,onChange:y,count:e=>a.filter(t=>{var s;return("All"===b||t._industry===b)&&("All"===e||t._city===e)&&("All"===k||t._systems.includes(k))&&("All"===C||t.status===C)&&("All"===A||(null!=(s=t.serviceSlugs)?s:[]).includes(A))}).length}),(0,l.jsx)(f,{label:"System",options:["All",...x],value:k,onChange:e=>N(e),count:e=>a.filter(t=>{var s;return("All"===b||t._industry===b)&&("All"===j||t._city===j)&&("All"===e||t._systems.includes(e))&&("All"===C||t.status===C)&&("All"===A||(null!=(s=t.serviceSlugs)?s:[]).includes(A))}).length}),(0,l.jsx)(f,{label:"Status",options:["All","Completed","Ongoing"],value:C,onChange:e=>_(e)}),(0,l.jsxs)("div",{className:"border-t border-sc-stone-300 pt-3",children:[(0,l.jsx)("label",{htmlFor:"projects-explorer-service",className:"text-[11.5px] font-semibold uppercase tracking-[0.30em] text-sc-gold-600",children:"Service"}),(0,l.jsxs)("select",{id:"projects-explorer-service",value:A,onChange:e=>w(e.target.value),className:"mt-3 w-full border border-sc-stone-300 bg-sc-paper-50 px-3 py-2 text-[13px] font-medium uppercase tracking-[0.18em] text-sc-ink-800 focus:border-sc-gold-500 focus:outline-none",children:[(0,l.jsx)("option",{value:"All",children:"All services"}),g.map(e=>(0,l.jsx)("option",{value:e.slug,children:e.name.toUpperCase()},e.slug))]})]})]}),(0,l.jsx)("div",{className:"mt-10 divide-y divide-sc-stone-300",children:0===L.length?(0,l.jsxs)("div",{className:"py-12 text-center font-sans text-[15px] italic text-sc-ink-800",children:["No reference projects match these filters yet â relax one filter or"," ",(0,l.jsx)(n(),{href:"/contact",className:"border-b border-sc-gold-500/60 pb-0.5 not-italic transition-colors hover:border-sc-copper-600 hover:text-sc-copper-700",children:"ask us about confidential work"}),"."]}):L.map((e,t)=>{var s;let a="subcontract"===e.publicRelationship||!0===e.subcontracted?{label:"Relationship",value:e.principalContractor?"Executed under ".concat(e.principalContractor):"Completed under sub-contract"}:"not-disclosed"===e.publicRelationship?{label:"Relationship",value:"Public-sector engagement"}:{label:"Client",value:null!=(s=e.client)?s:null};return(0,l.jsxs)("article",{className:"grid items-start gap-y-4 py-9 md:grid-cols-12 md:gap-x-10 md:gap-y-3 md:py-12",children:[(0,l.jsxs)("div",{className:"md:col-span-2",children:[(0,l.jsx)("span",{className:"font-sans text-[28px] italic leading-none text-sc-gold-500 md:text-[36px]",children:String(t+1).padStart(2,"0")}),(0,l.jsx)("p",{className:"mt-3 text-[11.5px] font-medium uppercase tracking-[0.22em] text-sc-gold-600",children:e.status}),(0,l.jsx)("p",{className:"mt-4 text-[11.5px] font-medium uppercase tracking-[0.22em] text-sc-ink-700",children:"Scale"}),(0,l.jsx)("p",{className:"font-geist font-medium text-[18px] leading-tight text-sc-ink-900",children:e._scale})]}),(0,l.jsxs)("div",{className:"md:col-span-7",children:[(0,l.jsx)("h3",{className:"font-geist font-medium text-[26px] leading-[1.1] text-sc-ink-900 md:text-[34px]",children:(0,l.jsx)(n(),{href:"/projects/".concat(e.slug),className:"transition-colors hover:text-sc-copper-700",children:e.name})}),(0,l.jsx)("p",{className:"mt-2 text-[11px] font-medium uppercase tracking-[0.22em] text-sc-ink-700",children:e.sector}),(0,l.jsx)("div",{className:"mt-5 flex flex-wrap gap-2",children:e._systems.map(e=>(0,l.jsx)("span",{className:"border border-sc-gold-500/45 px-2.5 py-1 font-mono-tight text-[11px] uppercase tracking-[0.22em] text-sc-gold-600",children:e},e))}),(0,l.jsxs)("div",{className:"mt-5 border-l-2 border-sc-gold-500/60 pl-4 py-2",children:[(0,l.jsx)("p",{className:"text-[11.5px] font-semibold uppercase tracking-[0.30em] text-sc-gold-600",children:"Why this solution"}),(0,l.jsx)("p",{className:"mt-2 font-sans text-[14.5px] leading-[1.6] text-sc-ink-800 md:text-[15.5px]",children:e._rationale})]}),(0,l.jsx)("div",{className:"mt-5 flex flex-wrap gap-2",children:e.brands.slice(0,6).map(e=>(0,l.jsx)("span",{className:"border border-sc-stone-300 bg-sc-paper-50 px-2.5 py-1 text-[11px] font-medium uppercase tracking-[0.22em] text-sc-ink-700",children:e},e))})]}),(0,l.jsxs)("div",{className:"md:col-span-3",children:[e.coverImage&&(0,l.jsx)(n(),{href:"/projects/".concat(e.slug),className:"group/photo mb-5 block border border-sc-stone-300 bg-sc-stone-200 p-1.5 md:p-2","aria-label":"Open ".concat(e.name," case study"),children:(0,l.jsx)("span",{className:"relative block aspect-[3/2] overflow-hidden",children:(0,l.jsx)(r.default,{src:e.coverImage,alt:"".concat(e.name," â system installation view"),fill:!0,sizes:"(max-width: 768px) 100vw, 24vw",className:"object-cover transition duration-700 group-hover/photo:scale-[1.03]"})})}),(0,l.jsxs)("ul",{className:"space-y-2.5 font-sans text-[14px] leading-[1.5] text-sc-ink-800",children:[(0,l.jsxs)("li",{className:"flex items-baseline gap-2",children:[(0,l.jsx)(p,{className:"h-3.5 w-3.5 shrink-0 translate-y-0.5 text-sc-gold-500"}),(0,l.jsx)("span",{children:e.year})]}),(0,l.jsxs)("li",{className:"flex items-baseline gap-2",children:[(0,l.jsx)(m,{className:"h-3.5 w-3.5 shrink-0 translate-y-0.5 text-sc-gold-500"}),(0,l.jsx)("span",{children:e.location})]}),a.value&&(0,l.jsxs)("li",{children:[(0,l.jsx)("p",{className:"text-[11px] font-medium uppercase tracking-[0.22em] text-sc-gold-600",children:a.label}),(0,l.jsx)("p",{className:"mt-0.5 font-sans text-[14px] text-sc-ink-800",children:a.value})]}),(0,l.jsx)("li",{className:"border-t border-sc-stone-300 pt-3 text-[13px] italic text-sc-ink-700",children:e.size}),(0,l.jsx)("li",{children:(0,l.jsxs)(n(),{href:"/projects/".concat(e.slug),className:"inline-flex items-center gap-1 pt-1 text-[11.5px] font-medium uppercase tracking-[0.22em] text-sc-ink-900 transition-colors hover:text-sc-copper-700",children:["Open case study",(0,l.jsx)(u.A,{className:"h-3 w-3"})]})})]})]})]},e.slug)})})]})})}
1function f(e){let{label:t,options:s,value:r,onChange:a,count:n,renderOption:i}=e;return(0,l.jsxs)("div",{className:"border-t border-sc-stone-300 pt-3",children:[(0,l.jsx)("p",{className:"text-[11.5px] font-semibold uppercase tracking-[0.30em] text-sc-gold-600",children:t}),(0,l.jsx)("div",{className:"mt-3 flex flex-wrap gap-2",children:s.map(e=>{let t=e===r,s=n?n(e):void 0;if(0===s&&!t&&"All"!==e)return null;let c=i?i(e):e;return(0,l.jsxs)("button",{type:"button",onClick:()=>a(e),"aria-pressed":t,className:"inline-flex items-center gap-1.5 border px-2.5 py-1.5 text-[11.5px] font-medium uppercase tracking-[0.22em] transition-colors "+(t?"border-sc-ink-900 bg-sc-ink-900 text-sc-ivory-50":"border-sc-stone-300 bg-sc-paper-50 text-sc-ink-800 hover:border-sc-gold-500/70 hover:text-sc-copper-700"),children:[(0,l.jsx)("span",{children:c}),void 0!==s&&(0,l.jsx)("span",{className:"font-mono-tight text-[11px] tracking-[0.08em] "+(t?"text-sc-ivory-50/70":"text-sc-ink-700/65"),children:s})]},e)})})]})}},92374:(e,t,s)=>{"use strict";s.r(t),s.d(t,{TrackedLink:()=>i});var l=s(95155),r=s(52619),a=s.n(r),n=s(22027);function i(e){let{href:t,event:s,payload:r={},external:i=!1,className:c,children:o,...d}=e;function p(){let e="origin_path"in r?r:{...r,origin_path:window.location.pathname};(0,n.u4)(s,e)}let m={"data-tg-tracked":s};return i?(0,l.jsx)("a",{href:t,onClick:p,className:c,...m,...d,children:o}):(0,l.jsx)(a(),{href:t,onClick:p,className:c,...m,...d,children:o})}},93581:(e,t,s)=>{Promise.resolve().then(s.t.bind(s,52619,23)),Promise.resolve().then(s.t.bind(s,81356,23)),Promise.resolve().then(s.bind(s,91938)),Promise.resolve().then(s.bind(s,92374))}},e=>{e.O(0,[2619,1356,2027,8441,1255,7358],()=>e(e.s=93581)),_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.