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="HrExBiGxG8O5pBxYq2I3GKWSf2gPzwaVMMwQNmCH"> 7<meta name="robots" content="all"/> 8<meta name="description" content=""/> 9<link rel="canonical" href="https://imaginant.com/"/> 10 11 12 <meta property="og:title" content="Imaginant"> 13 <meta property="og:description" content=""> 14 <meta property="og:url" content="https://imaginant.com"> 15 <meta property="og:updated_time" content="2026-05-29T09:34:25.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': "HrExBiGxG8O5pBxYq2I3GKWSf2gPzwaVMMwQNmCH", 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>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-1-4ad59b83.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 1743 1744 </div> 1745 </div> 1746 1747 <div class="content-wrapper"> 1748 <div class="w-full"> 1749 1750<div id="carousel-9380101258" data-widget="Carousel" data-framework="tailwind4" class="carousel w-full" data-wrap="true" data-controls="true" data-ride="carousel" data-interval="5000" data-pause="hover" data-animation="crossfade"> 1751<div class="carousel-item relative w-full block"><img class="block w-full" src="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/slide-1.jpg" width="2000" height="500"> 1752<div data-widget="Carousel__slide__controls" class="absolute left-5 right-5 top-1/2 flex -translate-y-1/2 transform justify-between"> 1753<div class="btn btn-circle" href="#">â®</div> 1754<div class="btn btn-circle" href="#">â¯</div> 1755</div> 1756</div> 1757<div class="carousel-item relative w-full hidden"><img class="block w-full" src="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/slide-2.jpg" width="2000" height="500"> 1758<div data-widget="Carousel__slide__controls" class="absolute left-5 right-5 top-1/2 flex -translate-y-1/2 transform justify-between"> 1759<div class="btn btn-circle" href="#">â®</div> 1760<div class="btn btn-circle" href="#">â¯</div> 1761</div> 1762</div> 1763<div class="carousel-item relative w-full hidden"><img class="block w-full" src="https://media.cmsmax.cloud/vboolzeea26onpgnesjpo/slide-3.jpg" width="2000" height="500"> 1764<div data-widget="Carousel__slide__controls" class="absolute left-5 right-5 top-1/2 flex -translate-y-1/2 transform justify-between"> 1765<div class="btn btn-circle" href="#">â®</div> 1766<div class="btn btn-circle" href="#">â¯</div> 1767</div> 1768</div> 1769</div> 1770<section class="max-w-7xl mx-auto py-4 px-4 text-lg"> 1771<p class="mb-10"><strong> <span> <span>ALTANA has acquired the business of Imaginant Inc. which is now part of ALTANA's BYK Division.</span> </span> </strong> <a href="https://www.byk-instruments.com/company/press/altana-imaginant" class="text-primary hover:underline">Learn more.</a></p> 1772<p><span><strong>
1772High-Resolution High-Precision Coating Thickness Gauges</strong></span></p> 1773<p><span><strong>High-Performance Ultrasound Pulser-Receivers</strong></span></p> 1774<p><span><strong>Precision-Manufactured RoHS-Compliant Contact and Immersion Ultrasound Transducers</strong></span></p> 1775<div class="text-center" data-bootstrap-contains="containers"> 1776<div class="max-w-7xl mx-auto"> 1777<div id="bizcontent_default"> 1778<p class="text-left">We design and manufacture high-precision, high-performance Ultrasound Metrology equipment and transducers. Founded in 1986, we have 35 years of expertise and innovation with all aspects of ultrasound-based systems.</p> 1779<ul class="text-left list-disc pl-6"> 1780<li class="pb-4">We design and manufacture the<span> </span><strong>JSR Ultrasonics<sup>®</sup><span> </span></strong>brand of Pulser-Receiver instruments. Pulser-Receivers serve as an ultrasound metrology system's interface to ultrasound transducers for test, measurement, or imaging applications.<span> </span><a href="/pulser-receivers" class="text-primary hover:underline">Learn more.</a></li> 1781<li class="pb-4">We design and precision-manufacture the<span> </span><strong>PureView Precision<sup>TM</sup></strong><span> </span>line of high-frequency ultrasound transducers with uniform device to device performance. Ultrasound transducers serve as the bridge between the physical world and ultrasound metrology systems.<span> </span><a href="/ultrasound-transducers" class="text-primary hover:underline">Learn more.</a></li> 1782<li class="pb-4">We design and manufacture the<span> </span><strong>PELT<sup>®</sup><span> </span></strong>brand of precision handheld and Robotic thickness measurement gauges that employ ultrasound to measure thin coating layers. PELT<sup>®</sup><span> </span>gauges precisely measure the thickness of each layer in a multi-layer stack on any substrate.<span> </span><a href="/coating-thickness-gauges" class="text-primary hover:underline">Learn more.</a></li> 1783</ul> 1784</div> 1785</div> 1786</div> 1787</section> 1788 1789 </div> 1790 </div> 1791 1792 <div class="below-content-wrapper"> 1793 <div class="w-full"> 1794 1795 </div> 1796 </div> 1797 1798 <div class="footer-wrapper"> 1799 <div class="w-full"> 1800 1801<section class="bg-[#212529] text-center py-[15px]"> 1802<div class="max-w-7xl mx-auto px-4"> 1803<p class="text-sm text-white m-0">© Copyright <span class="cms-widget inline">2026</span>. All Rights Reserved.</p> 1804</div> 1805</section> 1806 </div> 1807 </div> 1808 1809 <div class="sticky bottom-0 left-0 right-0 z-50 block w-full translate-y-px md:hidden"> 1810 <div class="w-full"> 1811 <div id="footer-contact" class="container-fluid"> 1812 <div class="row"> 1813 <div class="col-12"> 1814 <a class="btn btn-block btn-primary" href="/contact">Contact Us</a> 1815 </div> 1816 </div> 1817 </div> 1818 </div> 1819 </div> 1820 </main> 1821 1822 <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" />
1822<script type="module" src="https://assets.cmsmax.cloud/build/assets/theme-BuF4kL1c.js"></script>
1822 1823
1824<script src="https://assets.cmsmax.cloud/vendor/livewire/livewire.min.js?id=8ea5922c" data-csrf="HrExBiGxG8O5pBxYq2I3GKWSf2gPzwaVMMwQNmCH" data-module-url="https://imaginant.com/livewire-7540cd72" data-update-uri="https://imaginant.com/livewire/update" data-navigate-once="true"></script>
1824 1825 1826
1826<script defer src="https://cdn.n1ed.com/widgets.js?apiKey=EOFLp6zR" data-ts="1780047265000"></script>
1826 <div x-data="{ 1827 notifications: [], 1828 add(notification) { 1829 const id = Date.now() + Math.random(); 1830 this.notifications.push({ 1831 id: id, 1832 show: true, 1833 ...notification 1834 }); 1835 1836 setTimeout(() => { 1837 this.dismiss(id); 1838 }, 5000); 1839 }, 1840 dismiss(id) { 1841 const notification = this.notifications.find(n => n.id === id); 1842 if (notification) { 1843 notification.show = false; 1844 setTimeout(() => { 1845 this.notifications = this.notifications.filter(n => n.id !== id); 1846 }, 200); 1847 } 1848 } 1849}" @notification.window="add($event.detail[0] ?? $event.detail)" 1850 class="toast-container" 1851 role="status"> 1852 <template x-for="notification in notifications" :key="notification.id"> 1853 <div x-show="notification.show" 1854 x-transition:enter="transform ease-out duration-300" 1855 x-transition:enter-start="translate-y-2 opacity-0" 1856 x-transition:enter-end="translate-y-0 opacity-100" 1857 x-transition:leave="transition ease-in duration-200" 1858 x-transition:leave-start="opacity-100" 1859 x-transition:leave-end="opacity-0" 1860 class="toast-notification" 1861 :class="{ 1862 'toast-notification--success': notification.type === 'success', 1863 'toast-notification--error': notification.type === 'error' 1864 }"> 1865 <div class="toast-notification__body"> 1866 <div class="toast-notification__content"> 1867 <div class="toast-notification__icon-wrapper"> 1868 <template x-if="notification.type === 'success'"> 1869 <div class="toast-notification__icon toast-notification__icon--success"> 1870 <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true"> 1871 <path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"></path> 1872 </svg> 1873 </div> 1874 </template> 1875 <template x-if="notification.type === 'error'"> 1876 <div class="toast-notification__icon toast-notification__icon--error"> 1877 <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" aria-hidden="true"> 1878 <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12"></path> 1879 </svg> 1880 </div> 1881 </template> 1882 </div> 1883 <div class="toast-notification__message" 1884 :class="{ 1885 'toast-notification__message--success': notification.type === 'success', 1886 'toast-notification__message--error': notification.type === 'error' 1887 }"> 1888 <p x-text="notification.message"></p> 1889 </div> 1890 <div class="toast-notification__dismiss"> 1891 <button @click="dismiss(notification.id)" 1892 class="toast-notification__dismiss-button" 1893 :class="{ 1894 'toast-notification__dismiss-button--success': notification.type === 'success', 1895 'toast-notification__dismiss-button--error': notification.type === 'error' 1896 }" 1897 aria-label="Dismiss notification"> 1898 <svg viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> 1899 <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> 1900 </svg> 1901 </button> 1902 </div> 1903 </div> 1904 </div> 1905 </div> 1906 </template> 1907</div> 1908</body> 1909</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.