1<!DOCTYPE html> 2<html lang="en" dir="ltr" id="page" > 3 <head> 4 <meta charset="UTF-8"> 5<meta name="viewport" content="width=device-width, initial-scale=1.0"> 6<meta name="csrf-token" content="L0inKVJ0gaxUqXGreVLHZcVi8PTsj1MbyzRlELFs"> 7<meta name="robots" content="all"/> 8<meta name="description" content=""/> 9<link rel="canonical" href="https://imaginant.com/about-us"/> 10 11 12 <meta property="og:title" content="About Us | Imaginant"> 13 <meta property="og:description" content=""> 14 <meta property="og:url" content="https://imaginant.com/about-us"> 15 <meta property="og:updated_time" content="2026-03-17T13:15:50.000000Z"/> 16<meta property="og:type" content="website"> 17 18 19 20 21 <link rel="icon" type="image/png" sizes="32x32" href="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/byk-thumbnail.png"> 22<!-- Google tag (gtag.js) -->
vendor: 65 bytes, lines 22-23
22 23<script async src="https://www.googletagmanager.com/gtag/js?id=
23G-V4GKXW6N53
vendor: 13 bytes, line 23
23"></script>
24<script> 25
vendor: 138 bytes, lines 25-29
25window.dataLayer = window.dataLayer || []; 26 function gtag(){dataLayer.push(arguments);} 27 gtag('js', new Date()); 28 29 gtag('config', '
29G-V4GKXW6N53
vendor: 5 bytes, line 29
29');
30</script>
30 31 32
32<script> 33 (function () { 34 function storeAnalyticsSessionData(clientId, sessionId) { 35 fetch("https:\/\/imaginant.com\/analytics\/session", { 36 method: 'POST', 37 headers: { 38 'Content-Type': 'application/json', 39 'X-CSRF-TOKEN': "L0inKVJ0gaxUqXGreVLHZcVi8PTsj1MbyzRlELFs", 40 'Accept': 'application/json', 41 }, 42 body: JSON.stringify({ 43 client_id: clientId, 44 session_id: sessionId, 45 }), 46 }); 47 } 48 49 function readGtagValues() { 50 if (typeof window.gtag !== 'function') { 51 return; 52 } 53 54 if (typeof window.gaSessionStored === 'boolean' && window.gaSessionStored) { 55 return; 56 } 57 58 const measurementId = Object.keys(window.google_tag_manager || []).filter(e => { return e.substring(0,2) == 'G-' })[0]; 59 60 if (measurementId) { 61 window.gtag('get', measurementId, 'client_id', function (clientId) { 62 window.gtag('get', measurementId, 'session_id', function (sessionId) { 63 if (clientId || sessionId) { 64 storeAnalyticsSessionData((clientId).toString(), (sessionId).toString()); 65 window.gaSessionStored = true; 66 } 67 }); 68 }); 69 } 70 } 71 72 if (document.readyState === 'loading') { 73 document.addEventListener('DOMContentLoaded', readGtagValues); 74 } else { 75 readGtagValues(); 76 } 77 78 setTimeout(readGtagValues, 1500); 79 })(); 80 </script>
80 81 82<title>About Us | Imaginant</title> 83 84 85 86 87<link rel="preconnect" href="https://media.cmsmax.cloud" crossorigin> 88 <link rel="preconnect" href="https://cdn.cmsmax.cloud/production" crossorigin> 89<style >/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 300; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rk5hkwv4exomudjfnmiu.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 300; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rk5hkwvaexomudjfnmg.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 400; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rk8zkwv4exomudjfnmiu.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 400; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rk8zkwvaexomudjfnmg.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 500; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rk-rkwv4exomudjfnmiu.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 500; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rk-rkwvaexomudjfnmg.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 600; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rkxhjwv4exomudjfnmiu.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 600; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rkxhjwvaexomudjfnmg.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 700; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rkyfjwv4exomudjfnmiu.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1D
89BF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 700; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rkyfjwvaexomudjfnmg.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 800; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rk0zjwv4exomudjfnmiu.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: italic; font-weight: 800; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memqyags126mizpba-ufuicvxscekx2cmqvxlwq8twz0pw86hd0rk0zjwvaexomudjfnmg.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 300; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsih0b4uavquwaeqxjn-mq.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 300; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsih0b4gavquwaeqxjm.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 400; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsjz0b4uavquwaeqxjn-mq.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 400; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsjz0b4gavquwaeqxjm.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 500; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsjr0b4uavquwaeqxjn-mq.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 500; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvn
89xbbobj2ovzyoosr4dvjwugsjr0b4gavquwaeqxjm.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 600; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsgh1x4uavquwaeqxjn-mq.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 600; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsgh1x4gavquwaeqxjm.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 700; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsg-1x4uavquwaeqxjn-mq.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 700; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugsg-1x4gavquwaeqxjm.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}/* latin-ext */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 800; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugshz1x4uavquwaeqxjn-mq.woff) format('woff'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;}/* latin */@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 800; font-stretch: normal; font-display: swap; src: url(https://media.cmsmax.cloud/fonts/094549b9e1/sopensansv44memsyags126mizpba-uvwbx2vvnxbbobj2ovzyoosr4dvjwugshz1x4gavquwaeqxjm.woff) format('woff'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}</style> 90 91 <style> 92 :root { 93 --primary-font: 'Open Sans', sans-serif; 94 --secondary-font: 'Open Sans', sans-serif; 95 --parent-menu-font: 'Open Sans', sans-serif; 96 --child-menu-font: 'Open Sans', sans-serif; 97 } 98 99 h1, h2, h3, h4, h5, h6 { 100 font-family: var(--primary-font); 101 } 102 103 body { 104 font-family: var(--secondary-font); 105 } 106 107 /* Parent/Top-level menu items (depth 0) */ 108 .menu-item-top-link, 109 .menu-simple-link { 110 font-family: var(--parent-menu-font); 111 } 112 113 /* Child/Nested menu items (depth > 0) */ 114 .menu-submenu-link, 115 .menu-submenu-placeholder-span, 116 .menu-nested-link { 117 font-family: var(--child-menu-font); 118 } 119 </style> 120 121<style> 122 [x-cloak] { 123 display: none !important; 124 } 125</style> 126 127 128<style>@layer properties, package-theme, theme, base, filaforms, components, utilities, theme-overrides;</style> 129 130 131 132<!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.list-item][wire\:loading\.list-item], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak="x-cloak"],[x-cloak=""] {display: none !important;}[wire\:cloak="wire:cloak"],[wire\:cloak=""] {display: none !important;}dialog#livewire-error::backdrop {background-color: rgba(0, 0, 0, .6);}</style> 133 134 135 136 137 <link rel="stylesheet" type="text/css" id="css-engine-theme" href="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/css/theme-2a962b48.css"> 138 139 140 <link rel="stylesheet" type="text/css" id="css-engine-tenant" href="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/css/tenant-7a220d31.css"> 141 142 143 144 145 <link rel="stylesheet" type="text/css" id="css-engine-page" href="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/css/page-11-9d8a7898.css"> 146 147 148 149<style></style> 150 151 </head> 152 <body> 153 <style id="cookie-consent-fallback-css"> 154 @layer cookie-consent-fallback{ 155 @media (min-width:640px){ 156 .cookie-consent-actions{flex-direction:row;width:auto} 157 .cookie-consent-content .sm\:flex-row{flex-direction:row} 158 .cookie-consent-content .sm\:items-center{align-items:center} 159 .cookie-consent-content .sm\:justify-between{justify-content:space-between} 160 .cookie-consent-content .sm\:w-auto{width:auto} 161 } 162 } 163 </style> 164 165 <div class="js-cookie-consent cookie-consent-banner" data-nosnippet> 166 <div class="cookie-consent-content"><section class="text-gray-600 w-full flex flex-col sm:flex-row sm:items-center sm:justify-between gap-5"><p class="flex-1 min-w-0 m-0">
166Our website uses cookies. By continuing to use our site, you agree to our use of cookies in accordance with our <a href="/privacy">Privacy Policy</a>.</p><div class="flex shrink-0 gap-3 w-full sm:w-auto flex-col sm:flex-row"><button type="button" class="js-cookie-consent-agree cookie-consent-agree w-full sm:w-auto bg-stone-900 text-white px-3 py-2 rounded-lg">Allow cookies</button> <button type="button" class="js-cookie-consent-decline w-full sm:w-auto px-3 py-2 text-stone-900 border border-stone-300 rounded-lg">Decline</button></div></section></div> 167</div> 168 169
169<script> 170 171 window.laravelCookieConsent = (function () { 172 173 const COOKIE_VALUE = 1; 174 const COOKIE_REJECTED_VALUE = 0; 175 const COOKIE_DOMAIN = 'imaginant.com'; 176 177 function consentWithCookies() { 178 setCookie('laravel_cookie_consent', COOKIE_VALUE, 7300); 179 updateGoogleConsent('granted'); 180 hideCookieDialog(); 181 } 182 183 function rejectCookies() { 184 setCookie('laravel_cookie_consent', COOKIE_REJECTED_VALUE, 7300); 185 updateGoogleConsent('denied'); 186 hideCookieDialog(); 187 } 188 189 function cookieExists(name) { 190 return document.cookie.split('; ').some(c => 191 c === name + '=' + COOKIE_VALUE || c === name + '=' + COOKIE_REJECTED_VALUE 192 ); 193 } 194 195 function hideCookieDialog() { 196 const dialogs = document.getElementsByClassName('js-cookie-consent'); 197 198 for (let i = 0; i < dialogs.length; ++i) { 199 dialogs[i].style.display = 'none'; 200 } 201 } 202 203 function setCookie(name, value, expirationInDays) { 204 const date = new Date(); 205 date.setTime(date.getTime() + (expirationInDays * 24 * 60 * 60 * 1000)); 206 document.cookie = name + '=' + value 207 + ';expires=' + date.toUTCString() 208 + ';domain=' + COOKIE_DOMAIN 209 + ';path=/' 210 + ';samesite=lax'; 211 } 212 213 function updateGoogleConsent(value) { 214 window.dataLayer = window.dataLayer || []; 215 window.gtag = window.gtag || function () { 216 window.dataLayer.push(arguments); 217 }; 218 219 window.gtag('consent', 'update', { 220 ad_storage: value, 221 analytics_storage: value, 222 ad_user_data: value, 223 ad_personalization: value, 224 }); 225 } 226 227 if (cookieExists('laravel_cookie_consent')) { 228 hideCookieDialog(); 229 } 230 231 const buttons = document.getElementsByClassName('js-cookie-consent-agree'); 232 233 for (let i = 0; i < buttons.length; ++i) { 234 buttons[i].addEventListener('click', consentWithCookies); 235 } 236 237 const declineButtons = document.getElementsByClassName('js-cookie-consent-decline'); 238 239 for (let i = 0; i < declineButtons.length; ++i) { 240 declineButtons[i].addEventListener('click', rejectCookies); 241 } 242 243 return { 244 consentWithCookies: consentWithCookies, 245 rejectCookies: rejectCookies, 246 hideCookieDialog: hideCookieDialog 247 }; 248 })(); 249 250 window.acceptCookies = function () { 251 window.laravelCookieConsent.consentWithCookies(); 252 }; 253 254 window.rejectCookies = function () { 255 window.laravelCookieConsent.rejectCookies(); 256 }; 257 </script>
257 258 259 260 <main class="page-wrapper "> 261 <div class="header-wrapper contents"> 262 <div class="w-full"> 263 264<header class="shadow-sm lg:flex lg:justify-between lg:items-center p-4 lg:px-[25px] lg:py-[20px] lg:flex-wrap 2xl:flex-nowrap"> 265<div class="hidden lg:block lg:order-0"><a href="/"><img src="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/byk-logo.png" alt="" class="max-w-[350px]"></a></div> 266<span class="cms-widget"><div x-data="{ 267 mobileMenuOpen: false, 268 searchOpen: false, 269 toggleMobileMenu() { 270 this.mobileMenuOpen = !this.mobileMenuOpen; 271 }, 272 toggleSearch() { 273 this.searchOpen = !this.searchOpen; 274 } 275}" x-init="$watch('searchOpen', value => { if (value) { $nextTick(() => $refs.searchInput?.focus()) } })"> 276 <div class="mobile-nav lg:hidden"> 277 278 <div class="bar"> 279 280 <a class="logo-container" href="/" aria-label="Imaginant - Home"> 281 <img src="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/byk-logo.png" 282 alt="Imaginant" 283 width="200" 284 height="66.666666666667" 285 class=""> 286 </a> 287 288 289 <div class="icons"> 290 291 292 293 294 295 </div> 296 297 298 <button @click="toggleMobileMenu()" type="button" :aria-expanded="mobileMenuOpen" 299 aria-controls="mobile-nav-bar" aria-label="Toggle navigation" 300 class="hamburger-btn"> 301 <span class="sr-only">Toggle navigation</span> 302 303 <div class="hamburger-container"> 304 <span class="hamburger-line top" 305 :class="mobileMenuOpen ? 'opacity-0 -translate-y-1/2 top-1/2' : 'opacity-100'"></span> 306 <span class="hamburger-line middle" 307 :class="mobileMenuOpen ? '-rotate-45' : ''"></span> 308 <span class="hamburger-line middle" 309 :class="mobileMenuOpen ? 'rotate-45 ' : ''"></span> 310 <span class="hamburger-line bottom" 311 :class="mobileMenuOpen ? 'opacity-0 -translate-y-1/2 top-1/2' : 'opacity-100'"></span> 312 </div> 313 </button> 314 </div> 315 316 317 318 <div x-cloak 319 x-show="mobileMenuOpen" x-transition:enter="transition ease-out duration-300" 320 x-transition:enter-start="opacity-0 -translate-y-4" x-transition:enter-end="opacity-100 translate-y-0" 321 x-transition:leave="transition ease-in duration-200" x-transition:leave-start="opacity-100 translate-y-0" 322 x-transition:leave-end="opacity-0 -translate-y-4" id="mobile-nav-bar" 323 class="menu-dropdown" @click.away="mobileMenuOpen = false"> 324 <nav class="menu-nav"> 325 <ul class="menu-tree-list space-y-1" 326 x-data="{ 327 openItems: {}, 328 toggleItem(key) { 329 this.openItems[key] = !this.openItems[key]; 330 } 331 }" 332 > 333 <li class="menu-tree-item"> 334 <div> 335 336 <div class="menu-tree-level1-btn menu-tree-row"> 337 <a href="/pulser-receivers" 338 class="menu-tree-parent-link menu-tree-level1-title"> 339 Pulser-Receivers 340 </a> 341 <button type="button" 342 @click="toggleItem('item-595')" 343 :aria-expanded="openItems['item-595'] ? 'true' : 'false'" 344 class="menu-tree-toggle-btn"> 345 <span class="sr-only">Toggle Pulser-Receivers submenu</span> 346 <svg xmlns="http://www.w3.org/2000/svg" 347 class="menu-tree-level1-icon" 348 :class="{ 'rotate-180': openItems['item-595'] }" 349 aria-hidden="true" 350 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 351 <path stroke-width="2" stroke-linecap="round" d="m6 9 6 6 6-6"/> 352 </svg> 353 </button> 354 </div> 355 356 357 <div x-cloak 358 x-show="openItems['item-595']" 359 x-collapse.duration.200ms 360 class="menu-tree-level1-submenu"> 361 <ul class="menu-tree-level1-list"> 362 <li class="menu-tree-item"> 363 364 <a href="/pulser-receivers" 365 class="menu-tree-link-level2"> 366 Overview 367 </a> 368 </li> 369 <li class="menu-tree-item"> 370 371 <a href="/pulser-receiver-selection-guide" 372 class="menu-tree-link-level2"> 373 Selection Guide 374 </a> 375 </li> 376 <li class="menu-tree-item"> 377 <div> 378 379 <button type="button" 380 @click="toggleItem('item-598')" 381 :aria-expanded="openItems['item-598'] ? 'true' : 'false'" 382 class="menu-tree-level2-btn">
383 <span class="menu-tree-level2-title">General Purpose</span> 384 <svg xmlns="http://www.w3.org/2000/svg" 385 class="menu-tree-level2-icon" 386 :class="{ 'rotate-180': openItems['item-598'] }" 387 aria-hidden="true" 388 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 389 <path stroke-width="2" stroke-linecap="round" d="m6 9 6 6 6-6"/> 390 </svg> 391 </button> 392 393 394 <div x-cloak 395 x-show="openItems['item-598']" 396 x-collapse.duration.200ms 397 class="menu-tree-level2-submenu"> 398 <ul class="menu-tree-level2-list"> 399 <li class="menu-tree-item"> 400 401 <a href="/dpr300" 402 class="menu-tree-link-level3"> 403 DPR300 404 </a> 405 </li> 406 <li class="menu-tree-item"> 407 408 <a href="/dpr500" 409 class="menu-tree-link-level3"> 410 DPR500 411 </a> 412 </li> 413 <li class="menu-tree-item"> 414 415 <a href="/prc50" 416 class="menu-tree-link-level3"> 417 PRC50 418 </a> 419 </li> 420 </ul> 421 </div> 422 </div> 423 </li> 424 <li class="menu-tree-item"> 425 <div> 426 427 <button type="button" 428 @click="toggleItem('item-602')" 429 :aria-expanded="openItems['item-602'] ? 'true' : 'false'" 430 class="menu-tree-level2-btn"> 431 <span class="menu-tree-level2-title">Specialized</span> 432 <svg xmlns="http://www.w3.org/2000/svg" 433 class="menu-tree-level2-icon" 434 :class="{ 'rotate-180': openItems['item-602'] }" 435 aria-hidden="true" 436 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 437 <path stroke-width="2" stroke-linecap="round" d="m6 9 6 6 6-6"/> 438 </svg> 439 </button> 440 441 442 <div x-cloak 443 x-show="openItems['item-602']" 444 x-collapse.duration.200ms 445 class="menu-tree-level2-submenu"> 446 <ul class="menu-tree-level2-list"> 447 <li class="menu-tree-item"> 448 449 <a href="/pureview" 450 class="menu-tree-link-level3"> 451 PureView 452 </a> 453 </li> 454 </ul> 455 </div> 456 </div> 457 </li> 458 <li class="menu-tree-item"> 459 460 <a href="/accessories" 461 class="menu-tree-link-level2"> 462 Accessories 463 </a> 464 </li> 465 <li class="menu-tree-item"> 466 467 <a href="/pulser-receivers/downloads-resources" 468 class="menu-tree-link-level2"> 469 Downloads and Resources 470 </a> 471 </li> 472 </ul> 473 </div> 474 </div> 475 </li> 476 <li class="menu-tree-item"> 477 <div> 478 479 <div class="menu-tree-level1-btn menu-tree-row"> 480 <a href="/ultrasound-transducers" 481 class="menu-tree-parent-link menu-tree-level1-title"> 482 Ultrasound Transducers 483 </a> 484 <button type="button" 485 @click="toggleItem('item-606')" 486 :aria-expanded="openItems['item-606'] ? 'true' : 'false'" 487 class="menu-tree-toggle-btn">
488 <span class="sr-only">Toggle Ultrasound Transducers submenu</span> 489 <svg xmlns="http://www.w3.org/2000/svg" 490 class="menu-tree-level1-icon" 491 :class="{ 'rotate-180': openItems['item-606'] }" 492 aria-hidden="true" 493 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 494 <path stroke-width="2" stroke-linecap="round" d="m6 9 6 6 6-6"/> 495 </svg> 496 </button> 497 </div> 498 499 500 <div x-cloak 501 x-show="openItems['item-606']" 502 x-collapse.duration.200ms 503 class="menu-tree-level1-submenu"> 504 <ul class="menu-tree-level1-list"> 505 <li class="menu-tree-item"> 506 507 <a href="/immersion-transducer-models" 508 class="menu-tree-link-level2"> 509 Immersion Transducer Models 510 </a> 511 </li> 512 <li class="menu-tree-item"> 513 514 <a href="/ultrasound-transducers" 515 class="menu-tree-link-level2"> 516 Overview 517 </a> 518 </li> 519 </ul> 520 </div> 521 </div> 522 </li> 523 <li class="menu-tree-item"> 524 <div> 525 526 <div class="menu-tree-level1-btn menu-tree-row"> 527 <a href="/coating-thickness-gauges" 528 class="menu-tree-parent-link menu-tree-level1-title"> 529 Coating Thickness Gauges 530 </a> 531 <button type="button" 532 @click="toggleItem('item-609')" 533 :aria-expanded="openItems['item-609'] ? 'true' : 'false'" 534 class="menu-tree-toggle-btn"> 535 <span class="sr-only">Toggle Coating Thickness Gauges submenu</span> 536 <svg xmlns="http://www.w3.org/2000/svg" 537 class="menu-tree-level1-icon" 538 :class="{ 'rotate-180': openItems['item-609'] }" 539 aria-hidden="true" 540 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 541 <path stroke-width="2" stroke-linecap="round" d="m6 9 6 6 6-6"/> 542 </svg> 543 </button> 544 </div> 545 546 547 <div x-cloak 548 x-show="openItems['item-609']" 549 x-collapse.duration.200ms 550 class="menu-tree-level1-submenu"> 551 <ul class="menu-tree-level1-list"> 552 <li class="menu-tree-item"> 553 554 <a href="/coating-thickness-gauges" 555 class="menu-tree-link-level2"> 556 Overview 557 </a> 558 </li> 559 <li class="menu-tree-item"> 560 561 <a href="/pelt-ts3-and-ts5" 562 class="menu-tree-link-level2"> 563 μPELT ts3 and ts5 564 </a> 565 </li> 566 <li class="menu-tree-item"> 567 568 <a href="/pelt-ts3h-and-ts5plus" 569 class="menu-tree-link-level2"> 570 μPELT ts3H and ts5+ 571 </a> 572 </li> 573 <li class="menu-tree-item"> 574 575 <a href="/robotic-pelt" 576 class="menu-tree-link-level2"> 577 Robotic PELT 578 </a> 579 </li> 580 <li class="menu-tree-item"> 581 582 <a href="/coating-thickness-gauges/downloads-resources-34" 583 class="menu-tree-link-level2"> 584 Downloads and Resources 585 </a> 586 </li> 587 </ul> 588 </div> 589 </div> 590 </li> 591 <li class="menu-tree-item"> 592 <div> 593 594 <div class="menu-tree-level1-btn menu-tree-row"> 595 <a href="/contact" 596 class="menu-tree-parent-link menu-tree-level1-title"> 597 Contact 598 </a> 599 <button type="button" 600 @click="toggleItem('item-615')" 601 :aria-expanded="openItems['item-615'] ? 'true' : 'false'" 602 class="menu-tree-toggle-btn">
603 <span class="sr-only">Toggle Contact submenu</span> 604 <svg xmlns="http://www.w3.org/2000/svg" 605 class="menu-tree-level1-icon" 606 :class="{ 'rotate-180': openItems['item-615'] }" 607 aria-hidden="true" 608 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 609 <path stroke-width="2" stroke-linecap="round" d="m6 9 6 6 6-6"/> 610 </svg> 611 </button> 612 </div> 613 614 615 <div x-cloak 616 x-show="openItems['item-615']" 617 x-collapse.duration.200ms 618 class="menu-tree-level1-submenu"> 619 <ul class="menu-tree-level1-list"> 620 <li class="menu-tree-item"> 621 622 <a href="/contact" 623 class="menu-tree-link-level2"> 624 General Inquiries 625 </a> 626 </li> 627 <li class="menu-tree-item"> 628 629 <a href="/pelt-support" 630 class="menu-tree-link-level2"> 631 PELT Coating Thickness Gauge Sales/Support 632 </a> 633 </li> 634 <li class="menu-tree-item"> 635 636 <a href="/pulser-receiver-transducer-support" 637 class="menu-tree-link-level2"> 638 Pulser-Receiver and Transducer Sales/Support 639 </a> 640 </li> 641 </ul> 642 </div> 643 </div> 644 </li> 645 <li class="menu-tree-item"> 646 647 <a href="/about-us" 648 class="menu-tree-link-level1"> 649 About Us 650 </a> 651 </li> 652 </ul> 653 </nav> 654 </div> 655 </div> 656</div> 657 658<header x-data="{ mobileMenuOpen: false }" 659 class="hidden lg:block"> 660 <div class="menu-header"> 661 <nav class="nav"> 662 <!-- Desktop Menu --> 663 <div class="desktop-container"> 664 <div class="desktop-list"> 665 <div x-data="{ 666 open: false, 667 closeTimeout: null, 668 openMenu() { 669 clearTimeout(this.closeTimeout); 670 this.open = true; 671 }, 672 closeMenu() { 673 this.closeTimeout = setTimeout(() => { 674 this.open = false; 675 }, 50); 676 }, 677 678 positionDropdown: function() { 679 const rect = this.$el.getBoundingClientRect(); 680 const dropdown = this.$refs.dropdown; 681 if (!dropdown) return; 682 683 dropdown.style.left = ''; 684 dropdown.style.right = ''; 685 686 const rightSpace = window.innerWidth - rect.left; 687 const leftSpace = rect.right; 688 689 if (rightSpace >= 300) { 690 dropdown.style.left = '0'; 691 } else if (leftSpace >= 300) { 692 dropdown.style.right = '0'; 693 } else { 694 dropdown.style.left = '0'; 695 } 696 }, 697 positionBridge: function() { 698 const menuItem = this.$el.querySelector('.menu-item-top-container, .menu-item-top-placeholder-btn'); 699 const dropdown = this.$refs.dropdown; 700 const bridge = this.$refs.bridge; 701 702 if (!menuItem || !dropdown || !bridge) return; 703 704 const menuRect = menuItem.getBoundingClientRect(); 705 const dropdownRect = dropdown.getBoundingClientRect(); 706 const parentRect = this.$el.getBoundingClientRect(); 707 708 // Calculate the gap between menu item bottom and dropdown top 709 const gap = dropdownRect.top - menuRect.bottom; 710 711 if (gap > 0) { 712 bridge.style.position = 'absolute'; 713 bridge.style.top = (menuRect.bottom - parentRect.top) + 'px'; 714 bridge.style.left = '0'; 715 bridge.style.width = '100%'; 716 // Add a few extra pixels to overlap with the dropdown 717 bridge.style.height = (gap + 10) + 'px'; 718 bridge.style.zIndex = '40'; 719 } 720 }, 721 722 }" 723 @mouseenter="openMenu()" @mouseleave="closeMenu()" @focusin="openMenu()" @focusout="if (! $el.contains($event.relatedTarget)) closeMenu()" @keydown.escape="closeMenu()" 724 @click.away="closeMenu()" 725 726 x-init="$watch('open', value => { if (value) { setTimeout(function(){ positionBridge(); positionDropdown(); }, 10); } })" 727 class="menu-dropdown-parent"> 728 729 730 731 <div class="menu-item-top-container"> 732 <a href="/pulser-receivers" 733 class="menu-item-top-link" 734 :class="{ 'text-primary' : open }"> 735 Pulser-Receivers 736 </a> 737 <button type="button" 738 @click.prevent="open = !open" 739 :aria-expanded="open.toString()" 740 class="menu-item-top-btn">
741 <span class="sr-only">Toggle Pulser-Receivers dropdown</span> 742 <svg :class="{ 'rotate-180': open }" 743 class="menu-chevron-icon" xmlns="http://www.w3.org/2000/svg" 744 aria-hidden="true" 745 width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" 746 stroke-linejoin="round"> 747 <path d="m6 9 6 6 6-6"/> 748 </svg> 749 </button> 750 </div> 751 752 753 <div x-show="open" 754 x-ref="bridge" 755 class="menu-hover-bridge" 756 x-cloak></div> 757 758 759 <div x-show="open" 760 x-ref="dropdown" x-transition:enter="transition ease-out duration-200" 761 x-transition:enter-start="opacity-0 scale-95" 762 x-transition:enter-end="opacity-100 scale-100" 763 x-transition:leave="transition ease-in duration-150" 764 x-transition:leave-start="opacity-100 scale-100" 765 x-transition:leave-end="opacity-0 scale-95" 766 class=" menu-dropdown-desktop " 767 style="display: none;"> 768 769 <a class="menu-nested-link " 770 href="/pulser-receivers" 771 > 772 Overview 773 </a> 774 <a class="menu-nested-link " 775 href="/pulser-receiver-selection-guide" 776 > 777 Selection Guide 778 </a> 779 <div x-data="{ 780 subOpen: false, 781 closeTimeout: null, 782 openMenu() { 783 clearTimeout(this.closeTimeout); 784 this.subOpen = true; 785 }, 786 closeMenu() { 787 this.closeTimeout = setTimeout(() => { 788 this.subOpen = false; 789 }, 50); 790 }, 791 positionSubmenu: function() { 792 const rect = this.$el.getBoundingClientRect(); 793 const submenu = this.$refs.submenu; 794 if (!submenu) return; 795 796 submenu.style.left = ''; 797 submenu.style.right = ''; 798 submenu.style.top = '0'; 799 800 const rightSpace = window.innerWidth - rect.right; 801 const leftSpace = rect.left; 802 803 if (rightSpace >= 250) { 804 submenu.style.left = '100%'; 805 submenu.style.marginLeft = '8px'; 806 } else if (leftSpace >= 250) { 807 submenu.style.right = '100%'; 808 submenu.style.marginRight = '8px'; 809 } else { 810 submenu.style.left = '100%'; 811 submenu.style.marginLeft = '8px'; 812 } 813 } 814 }" 815 @mouseenter="openMenu()" @mouseleave="closeMenu()" @focusin="openMenu()" @focusout="if (! $el.contains($event.relatedTarget)) closeMenu()" @keydown.escape="closeMenu()" 816 @click.away="closeMenu()" 817 818 x-init="$watch('subOpen', value => { if (value) { setTimeout(function(){ positionSubmenu(); }, 10); } })" 819 class="relative"> 820 821 822 823 <div @mouseenter="openMenu()" class="menu-submenu-container"> 824 <a href="" 825 class="menu-submenu-link "> 826 General Purpose 827 </a> 828 <button type="button" 829 @click.prevent="subOpen = !subOpen" 830 :aria-expanded="subOpen.toString()" 831 @mouseenter="openMenu()" class="menu-submenu-btn"> 832 <span class="sr-only">Toggle General Purpose submenu</span> 833 <svg 834 :class="{ '-rotate-90': subOpen }" 835 class="menu-chevron-icon" xmlns="http://www.w3.org/2000/svg" 836 aria-hidden="true" 837 width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" 838 stroke-linejoin="round"> 839 <path d="m6 9 6 6 6-6"/> 840 </svg> 841 </button> 842 </div> 843 844 845 846 847 <div x-show="subOpen" 848 x-ref="submenu" x-transition:enter="transition ease-out duration-200" 849 x-transition:enter-start="opacity-0 " 850 x-transition:enter-end="opacity-100 " 851 x-transition:leave="transition ease-in duration-150" 852 x-transition:leave-start="opacity-100 " 853 x-transition:leave-end="opacity-0 " 854 class=" menu-submenu-desktop " 855 style="display: none;"> 856 857 <a class="menu-nested-link pl-6 sm:pl-3 w-full min-w-40 max-w-64 break-words" 858 href="/dpr300" 859 > 860 DPR300 861 </a> 862 <a class="menu-nested-link pl-6 sm:pl-3 w-full min-w-40 max-w-64 break-words" 863 href="/dpr500" 864 > 865 DPR500 866 </a> 867 <a class="menu-nested-link pl-6 sm:pl-3 w-full min-w-40 max-w-64 break-words" 868 href="/prc50" 869 > 870 PRC50 871 </a> 872 </div> 873 </div> 874 <div x-data="{ 875 subOpen: false, 876 closeTimeout: null, 877 openMenu() { 878 clearTimeout(this.closeTimeout); 879 this.subOpen = true; 880 }, 881 closeMenu() { 882 this.closeTimeout = setTimeout(() => { 883 this.subOpen = false;
884 }, 50); 885 }, 886 positionSubmenu: function() { 887 const rect = this.$el.getBoundingClientRect(); 888 const submenu = this.$refs.submenu; 889 if (!submenu) return; 890 891 submenu.style.left = ''; 892 submenu.style.right = ''; 893 submenu.style.top = '0'; 894 895 const rightSpace = window.innerWidth - rect.right; 896 const leftSpace = rect.left; 897 898 if (rightSpace >= 250) { 899 submenu.style.left = '100%'; 900 submenu.style.marginLeft = '8px'; 901 } else if (leftSpace >= 250) { 902 submenu.style.right = '100%'; 903 submenu.style.marginRight = '8px'; 904 } else { 905 submenu.style.left = '100%'; 906 submenu.style.marginLeft = '8px'; 907 } 908 } 909 }" 910 @mouseenter="openMenu()" @mouseleave="closeMenu()" @focusin="openMenu()" @focusout="if (! $el.contains($event.relatedTarget)) closeMenu()" @keydown.escape="closeMenu()" 911 @click.away="closeMenu()" 912 913 x-init="$watch('subOpen', value => { if (value) { setTimeout(function(){ positionSubmenu(); }, 10); } })" 914 class="relative"> 915 916 917 918 <div @mouseenter="openMenu()" class="menu-submenu-container"> 919 <a href="" 920 class="menu-submenu-link "> 921 Specialized 922 </a> 923 <button type="button" 924 @click.prevent="subOpen = !subOpen" 925 :aria-expanded="subOpen.toString()" 926 @mouseenter="openMenu()" class="menu-submenu-btn"> 927 <span class="sr-only">Toggle Specialized submenu</span> 928 <svg 929 :class="{ '-rotate-90': subOpen }" 930 class="menu-chevron-icon" xmlns="http://www.w3.org/2000/svg" 931 aria-hidden="true" 932 width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" 933 stroke-linejoin="round"> 934 <path d="m6 9 6 6 6-6"/> 935 </svg> 936 </button> 937 </div> 938 939 940 941 942 <div x-show="subOpen" 943 x-ref="submenu" x-transition:enter="transition ease-out duration-200" 944 x-transition:enter-start="opacity-0 " 945 x-transition:enter-end="opacity-100 " 946 x-transition:leave="transition ease-in duration-150" 947 x-transition:leave-start="opacity-100 " 948 x-transition:leave-end="opacity-0 " 949 class=" menu-submenu-desktop " 950 style="display: none;"> 951 952 <a class="menu-nested-link pl-6 sm:pl-3 w-full min-w-40 max-w-64 break-words" 953 href="/pureview" 954 > 955 PureView 956 </a> 957 </div> 958 </div> 959 <a class="menu-nested-link " 960 href="/accessories" 961 > 962 Accessories 963 </a> 964 <a class="menu-nested-link " 965 href="/pulser-receivers/downloads-resources" 966 > 967 Downloads and Resources 968 </a> 969 </div> 970 </div> 971 <div x-data="{ 972 open: false, 973 closeTimeout: null, 974 openMenu() { 975 clearTimeout(this.closeTimeout); 976 this.open = true; 977 }, 978 closeMenu() { 979 this.closeTimeout = setTimeout(() => { 980 this.open = false; 981 }, 50); 982 }, 983 984 positionDropdown: function() { 985 const rect = this.$el.getBoundingClientRect(); 986 const dropdown = this.$refs.dropdown; 987 if (!dropdown) return; 988 989 dropdown.style.left = ''; 990 dropdown.style.right = ''; 991 992 const rightSpace = window.innerWidth - rect.left; 993 const leftSpace = rect.right; 994 995 if (rightSpace >= 300) { 996 dropdown.style.left = '0'; 997 } else if (leftSpace >= 300) { 998 dropdown.style.right = '0'; 999 } else { 1000 dropdown.style.left = '0'; 1001 } 1002 }, 1003 positionBridge: function() { 1004 const menuItem = this.$el.querySelector('.menu-item-top-container, .menu-item-top-placeholder-btn'); 1005 const dropdown = this.$refs.dropdown; 1006 const bridge = this.$refs.bridge; 1007 1008 if (!menuItem || !dropdown || !bridge) return; 1009 1010 const menuRect = menuItem.getBoundingClientRect(); 1011 const dropdownRect = dropdown.getBoundingClientRect(); 1012 const parentRect = this.$el.getBoundingClientRect(); 1013 1014 // Calculate the gap between menu item bottom and dropdown top 1015 const gap = dropdownRect.top - menuRect.bottom; 1016 1017 if (gap > 0) { 1018 bridge.style.position = 'absolute'; 1019 bridge.style.top = (menuRect.bottom - parentRect.top) + 'px'; 1020 bridge.style.left = '0'; 1021 bridge.style.width = '100%'; 1022 // Add a few extra pixels to overlap with the dropdown 1023 bridge.style.height = (gap + 10) + 'px'; 1024 bridge.style.zIndex = '40'; 1025 } 1026 }, 1027 1028 }" 1029 @mouseenter="openMenu()" @mouseleave="closeMenu()" @focusin="openMenu()" @focusout="if (! $el.contains($event.relatedTarget)) closeMenu()" @keydown.escape="closeMenu()" 1030 @click.away="closeMenu()" 1031 1032 x-init="$watch('open', value => { if (value) { setTimeout(function(){ positionBridge(); positionDropdown(); }, 10); } })" 1033 class="menu-dropdown-parent"> 1034 1035 1036 1037 <div class="menu-item-top-container"> 1038 <a href="/ultrasound-transducers" 1039 class="menu-item-top-link" 1040 :class="{ 'text-primary' : open }"> 1041 Ultrasound Transducers 1042 </a> 1043 <button type="button" 1044 @click.prevent="open = !open" 1045 :aria-expanded="open.toString()" 1046 class="menu-item-top-btn">
1047 <span class="sr-only">Toggle Ultrasound Transducers dropdown</span> 1048 <svg :class="{ 'rotate-180': open }" 1049 class="menu-chevron-icon" xmlns="http://www.w3.org/2000/svg" 1050 aria-hidden="true" 1051 width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" 1052 stroke-linejoin="round"> 1053 <path d="m6 9 6 6 6-6"/> 1054 </svg> 1055 </button> 1056 </div> 1057 1058 1059 <div x-show="open" 1060 x-ref="bridge" 1061 class="menu-hover-bridge" 1062 x-cloak></div> 1063 1064 1065 <div x-show="open" 1066 x-ref="dropdown" x-transition:enter="transition ease-out duration-200" 1067 x-transition:enter-start="opacity-0 scale-95" 1068 x-transition:enter-end="opacity-100 scale-100" 1069 x-transition:leave="transition ease-in duration-150" 1070 x-transition:leave-start="opacity-100 scale-100" 1071 x-transition:leave-end="opacity-0 scale-95" 1072 class=" menu-dropdown-desktop " 1073 style="display: none;"> 1074 1075 <a class="menu-nested-link " 1076 href="/immersion-transducer-models" 1077 > 1078 Immersion Transducer Models 1079 </a> 1080 <a class="menu-nested-link " 1081 href="/ultrasound-transducers" 1082 > 1083 Overview 1084 </a> 1085 </div> 1086 </div> 1087 <div x-data="{ 1088 open: false, 1089 closeTimeout: null, 1090 openMenu() { 1091 clearTimeout(this.closeTimeout); 1092 this.open = true; 1093 }, 1094 closeMenu() { 1095 this.closeTimeout = setTimeout(() => { 1096 this.open = false; 1097 }, 50); 1098 }, 1099 1100 positionDropdown: function() { 1101 const rect = this.$el.getBoundingClientRect(); 1102 const dropdown = this.$refs.dropdown; 1103 if (!dropdown) return; 1104 1105 dropdown.style.left = ''; 1106 dropdown.style.right = ''; 1107 1108 const rightSpace = window.innerWidth - rect.left; 1109 const leftSpace = rect.right; 1110 1111 if (rightSpace >= 300) { 1112 dropdown.style.left = '0'; 1113 } else if (leftSpace >= 300) { 1114 dropdown.style.right = '0'; 1115 } else { 1116 dropdown.style.left = '0'; 1117 } 1118 }, 1119 positionBridge: function() { 1120 const menuItem = this.$el.querySelector('.menu-item-top-container, .menu-item-top-placeholder-btn'); 1121 const dropdown = this.$refs.dropdown; 1122 const bridge = this.$refs.bridge; 1123 1124 if (!menuItem || !dropdown || !bridge) return; 1125 1126 const menuRect = menuItem.getBoundingClientRect(); 1127 const dropdownRect = dropdown.getBoundingClientRect(); 1128 const parentRect = this.$el.getBoundingClientRect(); 1129 1130 // Calculate the gap between menu item bottom and dropdown top 1131 const gap = dropdownRect.top - menuRect.bottom; 1132 1133 if (gap > 0) { 1134 bridge.style.position = 'absolute'; 1135 bridge.style.top = (menuRect.bottom - parentRect.top) + 'px'; 1136 bridge.style.left = '0'; 1137 bridge.style.width = '100%'; 1138 // Add a few extra pixels to overlap with the dropdown 1139 bridge.style.height = (gap + 10) + 'px'; 1140 bridge.style.zIndex = '40'; 1141 } 1142 }, 1143 1144 }" 1145 @mouseenter="openMenu()" @mouseleave="closeMenu()" @focusin="openMenu()" @focusout="if (! $el.contains($event.relatedTarget)) closeMenu()" @keydown.escape="closeMenu()" 1146 @click.away="closeMenu()" 1147 1148 x-init="$watch('open', value => { if (value) { setTimeout(function(){ positionBridge(); positionDropdown(); }, 10); } })" 1149 class="menu-dropdown-parent"> 1150 1151 1152 1153 <div class="menu-item-top-container"> 1154 <a href="/coating-thickness-gauges" 1155 class="menu-item-top-link" 1156 :class="{ 'text-primary' : open }"> 1157 Coating Thickness Gauges 1158 </a> 1159 <button type="button" 1160 @click.prevent="open = !open" 1161 :aria-expanded="open.toString()" 1162 class="menu-item-top-btn">
1163 <span class="sr-only">Toggle Coating Thickness Gauges dropdown</span> 1164 <svg :class="{ 'rotate-180': open }" 1165 class="menu-chevron-icon" xmlns="http://www.w3.org/2000/svg" 1166 aria-hidden="true" 1167 width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" 1168 stroke-linejoin="round"> 1169 <path d="m6 9 6 6 6-6"/> 1170 </svg> 1171 </button> 1172 </div> 1173 1174 1175 <div x-show="open" 1176 x-ref="bridge" 1177 class="menu-hover-bridge" 1178 x-cloak></div> 1179 1180 1181 <div x-show="open" 1182 x-ref="dropdown" x-transition:enter="transition ease-out duration-200" 1183 x-transition:enter-start="opacity-0 scale-95" 1184 x-transition:enter-end="opacity-100 scale-100" 1185 x-transition:leave="transition ease-in duration-150" 1186 x-transition:leave-start="opacity-100 scale-100" 1187 x-transition:leave-end="opacity-0 scale-95" 1188 class=" menu-dropdown-desktop " 1189 style="display: none;"> 1190 1191 <a class="menu-nested-link " 1192 href="/coating-thickness-gauges" 1193 > 1194 Overview 1195 </a> 1196 <a class="menu-nested-link " 1197 href="/pelt-ts3-and-ts5" 1198 > 1199 μPELT ts3 and ts5 1200 </a> 1201 <a class="menu-nested-link " 1202 href="/pelt-ts3h-and-ts5plus" 1203 > 1204 μPELT ts3H and ts5+ 1205 </a> 1206 <a class="menu-nested-link " 1207 href="/robotic-pelt" 1208 > 1209 Robotic PELT 1210 </a> 1211 <a class="menu-nested-link " 1212 href="/coating-thickness-gauges/downloads-resources-34" 1213 > 1214 Downloads and Resources 1215 </a> 1216 </div> 1217 </div> 1218 <div x-data="{ 1219 open: false, 1220 closeTimeout: null, 1221 openMenu() { 1222 clearTimeout(this.closeTimeout); 1223 this.open = true; 1224 }, 1225 closeMenu() { 1226 this.closeTimeout = setTimeout(() => { 1227 this.open = false; 1228 }, 50); 1229 }, 1230 1231 positionDropdown: function() { 1232 const rect = this.$el.getBoundingClientRect(); 1233 const dropdown = this.$refs.dropdown; 1234 if (!dropdown) return; 1235 1236 dropdown.style.left = ''; 1237 dropdown.style.right = ''; 1238 1239 const rightSpace = window.innerWidth - rect.left; 1240 const leftSpace = rect.right; 1241 1242 if (rightSpace >= 300) { 1243 dropdown.style.left = '0'; 1244 } else if (leftSpace >= 300) { 1245 dropdown.style.right = '0'; 1246 } else { 1247 dropdown.style.left = '0'; 1248 } 1249 }, 1250 positionBridge: function() { 1251 const menuItem = this.$el.querySelector('.menu-item-top-container, .menu-item-top-placeholder-btn'); 1252 const dropdown = this.$refs.dropdown; 1253 const bridge = this.$refs.bridge; 1254 1255 if (!menuItem || !dropdown || !bridge) return; 1256 1257 const menuRect = menuItem.getBoundingClientRect(); 1258 const dropdownRect = dropdown.getBoundingClientRect(); 1259 const parentRect = this.$el.getBoundingClientRect(); 1260 1261 // Calculate the gap between menu item bottom and dropdown top 1262 const gap = dropdownRect.top - menuRect.bottom; 1263 1264 if (gap > 0) { 1265 bridge.style.position = 'absolute'; 1266 bridge.style.top = (menuRect.bottom - parentRect.top) + 'px'; 1267 bridge.style.left = '0'; 1268 bridge.style.width = '100%'; 1269 // Add a few extra pixels to overlap with the dropdown 1270 bridge.style.height = (gap + 10) + 'px'; 1271 bridge.style.zIndex = '40'; 1272 } 1273 }, 1274 1275 }" 1276 @mouseenter="openMenu()" @mouseleave="closeMenu()" @focusin="openMenu()" @focusout="if (! $el.contains($event.relatedTarget)) closeMenu()" @keydown.escape="closeMenu()" 1277 @click.away="closeMenu()" 1278 1279 x-init="$watch('open', value => { if (value) { setTimeout(function(){ positionBridge(); positionDropdown(); }, 10); } })" 1280 class="menu-dropdown-parent"> 1281 1282 1283 1284 <div class="menu-item-top-container"> 1285 <a href="/contact" 1286 class="menu-item-top-link" 1287 :class="{ 'text-primary' : open }"> 1288 Contact 1289 </a> 1290 <button type="button" 1291 @click.prevent="open = !open" 1292 :aria-expanded="open.toString()" 1293 class="menu-item-top-btn">
1294 <span class="sr-only">Toggle Contact dropdown</span> 1295 <svg :class="{ 'rotate-180': open }" 1296 class="menu-chevron-icon" xmlns="http://www.w3.org/2000/svg" 1297 aria-hidden="true" 1298 width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" 1299 stroke-linejoin="round"> 1300 <path d="m6 9 6 6 6-6"/> 1301 </svg> 1302 </button> 1303 </div> 1304 1305 1306 <div x-show="open" 1307 x-ref="bridge" 1308 class="menu-hover-bridge" 1309 x-cloak></div> 1310 1311 1312 <div x-show="open" 1313 x-ref="dropdown" x-transition:enter="transition ease-out duration-200" 1314 x-transition:enter-start="opacity-0 scale-95" 1315 x-transition:enter-end="opacity-100 scale-100" 1316 x-transition:leave="transition ease-in duration-150" 1317 x-transition:leave-start="opacity-100 scale-100" 1318 x-transition:leave-end="opacity-0 scale-95" 1319 class=" menu-dropdown-desktop " 1320 style="display: none;"> 1321 1322 <a class="menu-nested-link " 1323 href="/contact" 1324 > 1325 General Inquiries 1326 </a> 1327 <a class="menu-nested-link " 1328 href="/pelt-support" 1329 > 1330 PELT Coating Thickness Gauge Sales/Support 1331 </a> 1332 <a class="menu-nested-link " 1333 href="/pulser-receiver-transducer-support" 1334 > 1335 Pulser-Receiver and Transducer Sales/Support 1336 </a> 1337 </div> 1338 </div> 1339 <div class="menu-simple-link-container"> 1340 <a class="menu-simple-link hover:md:text-primary" 1341 href="/about-us" 1342 > 1343 About Us 1344 </a> 1345 </div> 1346 </div> 1347 </div> 1348 1349 <!-- Mobile Full Screen Menu --> 1350 <div x-cloak x-show="mobileMenuOpen" x-transition:enter="transition ease-out duration-300" 1351 x-transition:enter-start="opacity-0" x-transition:enter-end="opacity-100" 1352 x-transition:leave="transition ease-in duration-150" x-transition:leave-start="opacity-100" 1353 x-transition:leave-end="opacity-0" class="mobile-overlay"> 1354 1355 <!-- Mobile Menu Header --> 1356 <div class="mobile-header"> 1357 <h2 class="mobile-title">Menu</h2> 1358 <button @click="mobileMenuOpen = false" class="mobile-close-btn"> 1359 <span class="sr-only">Close menu</span> 1360 <svg class="mobile-close-icon" xmlns="http://www.w3.org/2000/svg" 1361 aria-hidden="true" 1362 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 1363 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 1364 d="M6 18L18 6M6 6l12 12"/> 1365 </svg> 1366 </button> 1367 </div> 1368 1369 <div class="mobile-content"> 1370 <ul class="menu-tree-list" 1371 x-data="{ 1372 openItems: {}, 1373 toggleItem(key) { 1374 this.openItems[key] = !this.openItems[key]; 1375 } 1376 }" 1377 > 1378 <li class="menu-tree-item"> 1379 <div> 1380 1381 <div class="menu-tree-level1-btn menu-tree-row"> 1382 <a href="/pulser-receivers" 1383 class="menu-tree-parent-link menu-tree-level1-title"> 1384 Pulser-Receivers 1385 </a> 1386 <button type="button" 1387 @click="toggleItem('item-595')" 1388 :aria-expanded="openItems['item-595'] ? 'true' : 'false'" 1389 class="menu-tree-toggle-btn menu-tree-toggle-btn-flush">
1390 <span class="sr-only">Toggle Pulser-Receivers submenu</span> 1391 <svg xmlns="http://www.w3.org/2000/svg" 1392 class="menu-tree-level1-icon" 1393 :class="{ 'rotate-90': openItems['item-595'] }" 1394 aria-hidden="true" 1395 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 1396 <path stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 1397 </svg> 1398 </button> 1399 </div> 1400 1401 1402 <div x-cloak 1403 x-show="openItems['item-595']" 1404 x-transition:enter="transition-all ease-out duration-200" 1405 x-transition:enter-start="transform scale-y-0 origin-top" 1406 x-transition:enter-end="transform scale-y-100 origin-top" 1407 x-transition:leave="transition-all ease-in duration-150" 1408 x-transition:leave-start="transform scale-y-100 origin-top" 1409 x-transition:leave-end="transform scale-y-0 origin-top" 1410 class="menu-tree-level1-submenu"> 1411 <ul class="menu-tree-level1-list"> 1412 <li> 1413 1414 <a href="/pulser-receivers" 1415 class="menu-tree-link-level2"> 1416 Overview 1417 </a> 1418 </li> 1419 <li> 1420 1421 <a href="/pulser-receiver-selection-guide" 1422 class="menu-tree-link-level2"> 1423 Selection Guide 1424 </a> 1425 </li> 1426 <li> 1427 <div> 1428 1429 <button type="button" 1430 @click="toggleItem('item-598')" 1431 :aria-expanded="openItems['item-598'] ? 'true' : 'false'" 1432 class="menu-tree-level2-btn"> 1433 <span class="menu-tree-level2-title">General Purpose</span> 1434 <svg xmlns="http://www.w3.org/2000/svg" 1435 class="menu-tree-level2-icon" 1436 :class="{ 'rotate-90': openItems['item-598'] }" 1437 aria-hidden="true" 1438 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 1439 <path stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 1440 </svg> 1441 </button> 1442 1443 1444 <div x-cloak 1445 x-show="openItems['item-598']" 1446 x-transition:enter="transition-all ease-out duration-200" 1447 x-transition:enter-start="transform scale-y-0 origin-top" 1448 x-transition:enter-end="transform scale-y-100 origin-top" 1449 x-transition:leave="transition-all ease-in duration-150" 1450 x-transition:leave-start="transform scale-y-100 origin-top" 1451 x-transition:leave-end="transform scale-y-0 origin-top" 1452 class="menu-tree-level2-submenu"> 1453 <ul class="menu-tree-level2-list"> 1454 <li> 1455 1456 <a href="/dpr300" 1457 class="menu-tree-link-level3"> 1458 DPR300 1459 </a> 1460 </li> 1461 <li> 1462 1463 <a href="/dpr500" 1464 class="menu-tree-link-level3"> 1465 DPR500 1466 </a> 1467 </li> 1468 <li> 1469 1470 <a href="/prc50" 1471 class="menu-tree-link-level3"> 1472 PRC50 1473 </a> 1474 </li> 1475 </ul> 1476 </div> 1477 </div> 1478 </li> 1479 <li> 1480 <div> 1481 1482 <button type="button" 1483 @click="toggleItem('item-602')" 1484 :aria-expanded="openItems['item-602'] ? 'true' : 'false'" 1485 class="menu-tree-level2-btn">
1486 <span class="menu-tree-level2-title">Specialized</span> 1487 <svg xmlns="http://www.w3.org/2000/svg" 1488 class="menu-tree-level2-icon" 1489 :class="{ 'rotate-90': openItems['item-602'] }" 1490 aria-hidden="true" 1491 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 1492 <path stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 1493 </svg> 1494 </button> 1495 1496 1497 <div x-cloak 1498 x-show="openItems['item-602']" 1499 x-transition:enter="transition-all ease-out duration-200" 1500 x-transition:enter-start="transform scale-y-0 origin-top" 1501 x-transition:enter-end="transform scale-y-100 origin-top" 1502 x-transition:leave="transition-all ease-in duration-150" 1503 x-transition:leave-start="transform scale-y-100 origin-top" 1504 x-transition:leave-end="transform scale-y-0 origin-top" 1505 class="menu-tree-level2-submenu"> 1506 <ul class="menu-tree-level2-list"> 1507 <li> 1508 1509 <a href="/pureview" 1510 class="menu-tree-link-level3"> 1511 PureView 1512 </a> 1513 </li> 1514 </ul> 1515 </div> 1516 </div> 1517 </li> 1518 <li> 1519 1520 <a href="/accessories" 1521 class="menu-tree-link-level2"> 1522 Accessories 1523 </a> 1524 </li> 1525 <li> 1526 1527 <a href="/pulser-receivers/downloads-resources" 1528 class="menu-tree-link-level2"> 1529 Downloads and Resources 1530 </a> 1531 </li> 1532 </ul> 1533 </div> 1534 </div> 1535 </li> 1536 <li class="menu-tree-item"> 1537 <div> 1538 1539 <div class="menu-tree-level1-btn menu-tree-row"> 1540 <a href="/ultrasound-transducers" 1541 class="menu-tree-parent-link menu-tree-level1-title"> 1542 Ultrasound Transducers 1543 </a> 1544 <button type="button" 1545 @click="toggleItem('item-606')" 1546 :aria-expanded="openItems['item-606'] ? 'true' : 'false'" 1547 class="menu-tree-toggle-btn menu-tree-toggle-btn-flush"> 1548 <span class="sr-only">Toggle Ultrasound Transducers submenu</span> 1549 <svg xmlns="http://www.w3.org/2000/svg" 1550 class="menu-tree-level1-icon" 1551 :class="{ 'rotate-90': openItems['item-606'] }" 1552 aria-hidden="true" 1553 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 1554 <path stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 1555 </svg> 1556 </button> 1557 </div> 1558 1559 1560 <div x-cloak 1561 x-show="openItems['item-606']" 1562 x-transition:enter="transition-all ease-out duration-200" 1563 x-transition:enter-start="transform scale-y-0 origin-top" 1564 x-transition:enter-end="transform scale-y-100 origin-top" 1565 x-transition:leave="transition-all ease-in duration-150" 1566 x-transition:leave-start="transform scale-y-100 origin-top" 1567 x-transition:leave-end="transform scale-y-0 origin-top" 1568 class="menu-tree-level1-submenu"> 1569 <ul class="menu-tree-level1-list"> 1570 <li> 1571 1572 <a href="/immersion-transducer-models" 1573 class="menu-tree-link-level2"> 1574 Immersion Transducer Models 1575 </a> 1576 </li> 1577 <li> 1578 1579 <a href="/ultrasound-transducers" 1580 class="menu-tree-link-level2"> 1581 Overview 1582 </a> 1583 </li> 1584 </ul> 1585 </div> 1586 </div> 1587 </li> 1588 <li class="menu-tree-item"> 1589 <div> 1590 1591 <div class="menu-tree-level1-btn menu-tree-row"> 1592 <a href="/coating-thickness-gauges" 1593 class="menu-tree-parent-link menu-tree-level1-title"> 1594 Coating Thickness Gauges 1595 </a> 1596 <button type="button" 1597 @click="toggleItem('item-609')" 1598 :aria-expanded="openItems['item-609'] ? 'true' : 'false'" 1599 class="menu-tree-toggle-btn menu-tree-toggle-btn-flush">
1600 <span class="sr-only">Toggle Coating Thickness Gauges submenu</span> 1601 <svg xmlns="http://www.w3.org/2000/svg" 1602 class="menu-tree-level1-icon" 1603 :class="{ 'rotate-90': openItems['item-609'] }" 1604 aria-hidden="true" 1605 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 1606 <path stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 1607 </svg> 1608 </button> 1609 </div> 1610 1611 1612 <div x-cloak 1613 x-show="openItems['item-609']" 1614 x-transition:enter="transition-all ease-out duration-200" 1615 x-transition:enter-start="transform scale-y-0 origin-top" 1616 x-transition:enter-end="transform scale-y-100 origin-top" 1617 x-transition:leave="transition-all ease-in duration-150" 1618 x-transition:leave-start="transform scale-y-100 origin-top" 1619 x-transition:leave-end="transform scale-y-0 origin-top" 1620 class="menu-tree-level1-submenu"> 1621 <ul class="menu-tree-level1-list"> 1622 <li> 1623 1624 <a href="/coating-thickness-gauges" 1625 class="menu-tree-link-level2"> 1626 Overview 1627 </a> 1628 </li> 1629 <li> 1630 1631 <a href="/pelt-ts3-and-ts5" 1632 class="menu-tree-link-level2"> 1633 μPELT ts3 and ts5 1634 </a> 1635 </li> 1636 <li> 1637 1638 <a href="/pelt-ts3h-and-ts5plus" 1639 class="menu-tree-link-level2"> 1640 μPELT ts3H and ts5+ 1641 </a> 1642 </li> 1643 <li> 1644 1645 <a href="/robotic-pelt" 1646 class="menu-tree-link-level2"> 1647 Robotic PELT 1648 </a> 1649 </li> 1650 <li> 1651 1652 <a href="/coating-thickness-gauges/downloads-resources-34" 1653 class="menu-tree-link-level2"> 1654 Downloads and Resources 1655 </a> 1656 </li> 1657 </ul> 1658 </div> 1659 </div> 1660 </li> 1661 <li class="menu-tree-item"> 1662 <div> 1663 1664 <div class="menu-tree-level1-btn menu-tree-row"> 1665 <a href="/contact" 1666 class="menu-tree-parent-link menu-tree-level1-title"> 1667 Contact 1668 </a> 1669 <button type="button" 1670 @click="toggleItem('item-615')" 1671 :aria-expanded="openItems['item-615'] ? 'true' : 'false'" 1672 class="menu-tree-toggle-btn menu-tree-toggle-btn-flush"> 1673 <span class="sr-only">Toggle Contact submenu</span> 1674 <svg xmlns="http://www.w3.org/2000/svg" 1675 class="menu-tree-level1-icon" 1676 :class="{ 'rotate-90': openItems['item-615'] }" 1677 aria-hidden="true" 1678 fill="none" viewBox="0 0 24 24" stroke="currentColor"> 1679 <path stroke-width="2" stroke-linecap="round" stroke-linejoin="round" d="M9 5l7 7-7 7"/> 1680 </svg> 1681 </button> 1682 </div> 1683 1684 1685 <div x-cloak 1686 x-show="openItems['item-615']" 1687 x-transition:enter="transition-all ease-out duration-200" 1688 x-transition:enter-start="transform scale-y-0 origin-top" 1689 x-transition:enter-end="transform scale-y-100 origin-top" 1690 x-transition:leave="transition-all ease-in duration-150" 1691 x-transition:leave-start="transform scale-y-100 origin-top" 1692 x-transition:leave-end="transform scale-y-0 origin-top" 1693 class="menu-tree-level1-submenu"> 1694 <ul class="menu-tree-level1-list"> 1695 <li> 1696 1697 <a href="/contact" 1698 class="menu-tree-link-level2"> 1699 General Inquiries 1700 </a> 1701 </li> 1702 <li> 1703 1704 <a href="/pelt-support" 1705 class="menu-tree-link-level2"> 1706 PELT Coating Thickness Gauge Sales/Support 1707 </a> 1708 </li> 1709 <li> 1710 1711 <a href="/pulser-receiver-transducer-support" 1712 class="menu-tree-link-level2"> 1713 Pulser-Receiver and Transducer Sales/Support 1714 </a> 1715 </li> 1716 </ul> 1717 </div> 1718 </div> 1719 </li> 1720 <li class="menu-tree-item"> 1721 1722 <a href="/about-us" 1723 class="menu-tree-link-level1"> 1724 About Us 1725 </a> 1726 </li> 1727 </ul> 1728 </div> 1729 </div> 1730 </nav> 1731 </div> 1732</header> 1733</span></header> 1734<style></style> 1735 </div> 1736 </div> 1737 1738 1739 1740 <div class="px-4 mx-auto max-w-7xl"> 1741 <div class="w-full"> 1742 <nav class="breadcrumb-nav" aria-label="Breadcrumb"> 1743 <div class="breadcrumb-wrapper"> 1744 <ol class="breadcrumb-list"> 1745 1746 <li class="breadcrumb-item breadcrumb-index"><a class="breadcrumb-link" href="/">Home</a></li> 1747 1748 <li class="breadcrumb-separator mx-2" aria-hidden="true"></li> 1749 <li class="breadcrumb-item breadcrumb-last">About Us</li> 1750 </ol> 1751 </div> 1752</nav> 1753 1754 <h1 class="page-title">About Us</h1> 1755 1756 </div> 1757 </div> 1758 1759 <div class="w-full px-4 pb-12 mx-auto max-w-7xl"> 1760 <div class="main-content-wrapper"> 1761 1762<p class="mb-4">We design and manufacture high-performance ultrasound system hardware, non-destructive coating thickness gauges, and ultrasound transducers. We have more than 35 years of expertise and innovation with all aspects of ultrasound-based systems, and we maintain long-standing relationships with a diverse base of customers across all continents.</p> 1763<p class="mb-4">Since our inception, we have provided innovative hardware for integration into demanding ultrasound applications through our JSR Ultrasonics<sup>®</sup> brand. The wide range of applications spans the automotive, semiconductor, aerospace, coatings, laminated materials, medical, energy, and defense research market sectors. Our Pulser-Receiver products have a long-standing and successful track record of usage in critical inspection systems including the assessment of turbine and aircraft engine components, oil pipeline testing, Intra-Vascular UltraSound (IVUS) cathethers, acoustic microscopes, and numerous others.</p> 1764<p class="mb-4">Through our PELT<sup>®</sup> brand of multi-layer thickness gauges, we offer non-destructive solutions for measuring the thickness of coatings including paints, plastics, and rubbers. Initially developed for the automotive and aerospace industries over 25 years ago, we have continually expanded the scope of PELT's measurement capability into other manufacturing industries including metal coil coating, automotive plastic parts, transportation vehicles, and shipping containers. Our innovative technology allows our gauges to detect and measure the thickness of each layer in a layer stack that has been coated on a substrate, even non-metallic materials such as carbon fiber, plastics, glass, wood, and composites. This patented gauging technology is offered in both handheld spot-measurement gauges and online automated robotic gauges for factories, both of which enable exacting process control of coatings applied to production parts.</p> 1765<p class="mb-4">A recent addition to our product portfolio is that of Ultrasound Transducers. The NDT market expressed the need for a source of reliable high-frequency transducers, and we have responded by creating a manufacturing process for reliable contact and immersion transducers. Our patent-pending technology produces highly-reliable ultrasound transducers that exhibit uniform performance from device to device. Our ultrasound transducers, when combined with JSR Ultrasonics pulser-receivers, offer our customers the two most-critical elements of any ultrasound-based system.</p> 1766<p class="mb-4">We invest in innovative research and development to remain at the leading edge of what can be accomplished. We welcome collaboration with our customers with the goal of providing the highest-performing ultrasound metrology equipment and solutions possible.</p> 1767 </div> 1768 </div> 1769 1770 <div class="below-content-wrapper"> 1771 <div class="w-full"> 1772 1773 </div> 1774 </div> 1775 1776 <div class="footer-wrapper"> 1777 <div class="w-full"> 1778
1779<section class="bg-[#212529] text-center py-[15px]"> 1780<div class="max-w-7xl mx-auto px-4"> 1781<p class="text-sm text-white m-0">© Copyright <span class="cms-widget inline">2026</span>. All Rights Reserved.</p> 1782</div> 1783</section> 1784 </div> 1785 </div> 1786 1787 <div class="sticky bottom-0 left-0 right-0 z-50 block w-full translate-y-px md:hidden"> 1788 <div class="w-full"> 1789 <div id="footer-contact" class="container-fluid"> 1790 <div class="row"> 1791 <div class="col-12"> 1792 <a class="btn btn-block btn-primary" href="/contact">Contact Us</a> 1793 </div> 1794 </div> 1795 </div> 1796 </div> 1797 </div> 1798 </main> 1799 1800 <link rel="modulepreload" as="script" href="https://assets.cmsmax.cloud/build/assets/theme-BuF4kL1c.js" /><link rel="modulepreload" as="script" href="https://assets.cmsmax.cloud/build/assets/datetime-DATciA-0.js" />
1800<script type="module" src="https://assets.cmsmax.cloud/build/assets/theme-BuF4kL1c.js"></script>
1800 1801
1802<script src="https://assets.cmsmax.cloud/vendor/livewire/livewire.min.js?id=8ea5922c" data-csrf="L0inKVJ0gaxUqXGreVLHZcVi8PTsj1MbyzRlELFs" data-module-url="https://imaginant.com/livewire-7540cd72" data-update-uri="https://imaginant.com/livewire/update" data-navigate-once="true"></script>
1802 1803 1804
1804<script defer src="https://cdn.n1ed.com/widgets.js?apiKey=EOFLp6zR" data-ts="1773753350000"></script>
1804 <div x-data="{ 1805 notifications: [], 1806 add(notification) { 1807 const id = Date.now() + Math.random(); 1808 this.notifications.push({ 1809 id: id, 1810 show: true, 1811 ...notification 1812 }); 1813 1814 setTimeout(() => { 1815 this.dismiss(id); 1816 }, 5000); 1817 }, 1818 dismiss(id) { 1819 const notification = this.notifications.find(n => n.id === id); 1820 if (notification) { 1821 notification.show = false; 1822 setTimeout(() => { 1823 this.notifications = this.notifications.filter(n => n.id !== id); 1824 }, 200); 1825 } 1826 } 1827}" @notification.window="add($event.detail[0] ?? $event.detail)" 1828 class="toast-container" 1829 role="status"> 1830 <template x-for="notification in notifications" :key="notification.id"> 1831 <div x-show="notification.show" 1832 x-transition:enter="transform ease-out duration-300" 1833 x-transition:enter-start="translate-y-2 opacity-0" 1834 x-transition:enter-end="translate-y-0 opacity-100" 1835 x-transition:leave="transition ease-in duration-200" 1836 x-transition:leave-start="opacity-100" 1837 x-transition:leave-end="opacity-0" 1838 class="toast-notification" 1839 :class="{ 1840 'toast-notification--success': notification.type === 'success', 1841 'toast-notification--error': notification.type === 'error' 1842 }"> 1843 <div class="toast-notification__body"> 1844 <div class="toast-notification__content"> 1845 <div class="toast-notification__icon-wrapper"> 1846 <template x-if="notification.type === 'success'"> 1847 <div class="toast-notification__icon toast-notification__icon--success"> 1848 <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true"> 1849 <path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path> 1850 </svg> 1851 </div> 1852 </template> 1853 <template x-if="notification.type === 'error'"> 1854 <div class="toast-notification__icon toast-notification__icon--error"> 1855 <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true"> 1856 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path> 1857 </svg> 1858 </div> 1859 </template> 1860 </div> 1861 <div class="toast-notification__message" 1862 :class="{ 1863 'toast-notification__message--success': notification.type === 'success', 1864 'toast-notification__message--error': notification.type === 'error' 1865 }"> 1866 <p x-text="notification.message"></p> 1867 </div> 1868 <div class="toast-notification__dismiss"> 1869 <button @click="dismiss(notification.id)" 1870 class="toast-notification__dismiss-button" 1871 :class="{ 1872 'toast-notification__dismiss-button--success': notification.type === 'success', 1873 'toast-notification__dismiss-button--error': notification.type === 'error' 1874 }" 1875 aria-label="Dismiss notification"> 1876 <svg viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> 1877 <path d="M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z"></path> 1878 </svg> 1879 </button> 1880 </div> 1881 </div> 1882 </div> 1883 </div> 1884 </template> 1885</div> 1886</body> 1887</html>
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.