{"id":10379,"date":"2025-12-19T21:11:25","date_gmt":"2025-12-19T21:11:25","guid":{"rendered":"https:\/\/dev.smartplug.com\/staging\/?page_id=10379"},"modified":"2026-08-05T20:53:55","modified_gmt":"2026-08-05T20:53:55","slug":"commercial","status":"publish","type":"page","link":"https:\/\/dev.smartplug.com\/staging\/categories\/commercial\/","title":{"rendered":"Commercial"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"10379\" class=\"elementor elementor-10379\">\n\t\t\t\t<div class=\"elementor-element elementor-element-3bca2de e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"3bca2de\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t<div class=\"elementor-element elementor-element-a6fee19 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"a6fee19\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-5bd7c62 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"5bd7c62\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f1844a3 elementor-widget elementor-widget-heading\" data-id=\"f1844a3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Commercial<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8d6de6e e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"8d6de6e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d72c499 elementor-widget elementor-widget-html\" data-id=\"d72c499\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"custom-dock-wrapper\" id=\"custom-dock-wrapper\">\r\n\r\n    <div class=\"custom-dock-trigger\" id=\"custom-dock-trigger\">\r\n        \u2630\r\n        <span class=\"custom-dock-badge\" id=\"custom-dock-badge\">0<\/span>\r\n    <\/div>\r\n\r\n    \r\n    <div class=\"custom-dock-hint\" id=\"custom-dock-hint\">\r\n        <small>Having trouble finding the right product?<\/small>\r\n        <strong>TRY PRODUCT FILTER<\/strong>\r\n    <\/div>\r\n\r\n    <div class=\"custom-dock-flyout\">\r\n\r\n        <div class=\"custom-dock-header-row\">\r\n            <span class=\"custom-dock-filter-label\">Product Filter<\/span>\r\n            <button type=\"button\" class=\"custom-dock-reset-btn\" id=\"custom-dock-reset-btn\">\r\n                Reset Filters\r\n            <\/button>\r\n        <\/div>\r\n\r\n        \r\n\r\n        \r\n        <div class=\"custom-dock-search-row\">\r\n            <input\r\n                type=\"text\"\r\n                id=\"custom-dock-search\"\r\n                class=\"custom-dock-search-input\"\r\n                placeholder=\"Search products\u2026\"\r\n                autocomplete=\"off\"\r\n            >\r\n        <\/div>\r\n\r\n        \r\n        <div class=\"custom-dock-chips\" id=\"custom-dock-chips\"><\/div>\r\n\r\n        \r\n\r\n        <button class=\"custom-dock-cat-btn\">\r\n            Application\r\n        <\/button>\r\n\r\n        <div class=\"custom-dock-prod-list\">\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"application\" value=\"marine\">\r\n                Marine\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"application\" value=\"rv\">\r\n                RV\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"application\" value=\"dockside\">\r\n                Dockside\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"application\" value=\"specialty\">\r\n                Specialty\r\n            <\/label>\r\n\r\n        <\/div>\r\n\r\n        \r\n\r\n        <button class=\"custom-dock-cat-btn\">\r\n            Product Type\r\n        <\/button>\r\n\r\n        <div class=\"custom-dock-prod-list\">\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"type\" value=\"connector\">\r\n                Connector\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"type\" value=\"cordset\">\r\n                Cordset\r\n            <\/label>\r\n\r\n            \r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"type\" value=\"inlet\">\r\n                Inlet\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"type\" value=\"elci\">\r\n                ELCI\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"type\" value=\"service-kits\">\r\n                Service Kits\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"type\" value=\"combokit\">\r\n                Combokit\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"type\" value=\"data-ports\">\r\n                Data Ports\r\n            <\/label>\r\n\r\n        <\/div>\r\n\r\n        \r\n\r\n        <button class=\"custom-dock-cat-btn\">\r\n            Amperage\r\n        <\/button>\r\n\r\n        <div class=\"custom-dock-prod-list custom-dock-prod-list-amp\">\r\n\r\n            <label class=\"custom-dock-prod-link custom-dock-amp-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"amp\" value=\"15\">\r\n                <span class=\"custom-dock-amp-text\">15A<small>Standard outlets<\/small><\/span>\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link custom-dock-amp-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"amp\" value=\"16\">\r\n                <span class=\"custom-dock-amp-text\">16A<small>Compact setups<\/small><\/span>\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link custom-dock-amp-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"amp\" value=\"30\">\r\n                <span class=\"custom-dock-amp-text\">30A<small>Most RVs<\/small><\/span>\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link custom-dock-amp-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"amp\" value=\"32\">\r\n                <span class=\"custom-dock-amp-text\">32A<small>Larger boats<\/small><\/span>\r\n            <\/label>\r\n\r\n            <label class=\"custom-dock-prod-link custom-dock-amp-link\">\r\n                <input type=\"checkbox\" class=\"product-filter\" data-filter=\"amp\" value=\"50\">\r\n                <span class=\"custom-dock-amp-text\">50A<small>Large RVs &amp; boats<\/small><\/span>\r\n            <\/label>\r\n\r\n        <\/div>\r\n\r\n        <div class=\"custom-dock-results\">\r\n\r\n            <h4>Matching Products <span id=\"match-count\" class=\"custom-dock-match-count\"><\/span><\/h4>\r\n\r\n            \r\n            <div id=\"sub-filters-section\"><\/div>\r\n\r\n            <div id=\"recommended-products\">\r\n                <p class=\"custom-dock-empty-msg\">Check an attribute above to see matching products.<\/p>\r\n                <a href=\"https:\/\/dev.smartplug.com\/staging\/shop\/\" class=\"custom-dock-browse-all-btn\">\r\n                    Browse All Products \u2192\r\n                <\/a>\r\n            <\/div>\r\n\r\n            <div id=\"related-products\"><\/div>\r\n\r\n        <\/div>\r\n\r\n    <\/div>\r\n\r\n<\/div>\r\n\r\n<script>\r\n\r\n\/\/ Swap these image\/url values for your real product data.\r\nconst products = [\r\n    {\r\n        name: \"SmartPlug Connector\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-connector\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Connector.avif\",\r\n        attributes: { application: [\"rv\", \"marine\"], type: [\"connector\"], amp: [] }\r\n    },\r\n    {\r\n        name: \"SmartPlug Inlet\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-inlet\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Inlet.avif\",\r\n        \/\/ \"color\" only exists on products where it's relevant \u2014 that's what\r\n        \/\/ makes the Color sub-filter appear only when it's actually useful.\r\n        attributes: { application: [\"rv\"], type: [\"inlet\"], amp: [], color: [\"stainless\", \"white\", \"grey\", \"black\"] }\r\n    },\r\n    {\r\n        name: \"Angled RV Cordset 30 Amp\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/angled-rv-cordset-30-amp\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/Angled-RV-Cordset-30-Amp.avif\",\r\n        attributes: { application: [\"marine\"], type: [\"cordset\"], amp: [\"30\"] }\r\n    },\r\n    {\r\n        \/\/ Merged with the duplicate \"data-ports\" version of this product \u2014\r\n        \/\/ the two copies disagreed on type (inlet vs. data-ports). Since\r\n        \/\/ there's a dedicated Data Ports checkbox and the product is\r\n        \/\/ clearly TV\/phone\/internet (not power), it's classified as\r\n        \/\/ data-ports only. Flip this back to \"inlet\" if that's wrong.\r\n        name: \"SmartPlug TV\/Phone\/Internet Inlets\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-tv-phone-internet-inlets\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-TV_Phone_Internet-Inlets-1.avif\",\r\n        attributes: { application: [\"marine\", \"rv\"], type: [\"data-ports\"], amp: [] }\r\n    },\r\n    {\r\n        \/\/ Merged with a duplicate entry that had fuller amp data (30\/50)\r\n        \/\/ and a \"push-type\" tag; kept this one's real url\/image.\r\n        name: \"SmartPlug Cordset With Push-Type Park Power Connector\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-cordset-with-push-type-park-power-connector\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Cordset-With-Push-Type-Park-Power-Connector.avif\",\r\n        attributes: { application: [\"rv\"], type: [\"cordset\", \"push-type\"], amp: [\"30\", \"50\"] }\r\n    },\r\n    {\r\n        \/\/ Merged with a duplicate entry that had \"combat-kits\" (typo for\r\n        \/\/ \"combokit\" \u2014 didn't match the Combokit checkbox at all), plus\r\n        \/\/ extra amps\/applications. Union'd everything together here.\r\n        name: \"SmartPlug Combo Kit\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-combo-kit-2\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Combo-Kit.avif\",\r\n        attributes: { application: [\"marine\", \"rv\", \"specialty\"], type: [\"combokit\"], amp: [\"15\", \"16\", \"30\", \"32\", \"50\"] }\r\n    },\r\n    {\r\n        \/\/ Renamed from \"50A SmartPlug Female Connector to 15A STD Wall Plug\r\n        \/\/ Connector\" to match the authoritative product name \u2014 it shared the\r\n        \/\/ exact same URL as the placeholder duplicate below, so the two are\r\n        \/\/ merged into one entry (attributes union'd) rather than listed twice.\r\n        name: \"15 Amp 115V \/ 30 Amp 125V \u2013 4\u2019 Cordset\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/15-amp-115v-30-amp-125v-4-cordset\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/15-Amp-115V-_-30-Amp-125V-%E2%80%93-4-Cordset.avif\",\r\n        attributes: { application: [\"rv\", \"dockside\", \"marine\"], type: [\"cordset\"], amp: [\"15\", \"30\"] }\r\n    },\r\n    {\r\n        \/\/ Merged with a duplicate entry that had a different (conflicting)\r\n        \/\/ application list \u2014 union'd both together.\r\n        name: \"SmartPlug Dual Configuration Smartplug Cordset w\/SmartPlug Connector Shore Power End\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-dual-configuration-smartplug-cordset-w-smartplug-connector-shore-power-end\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_SmartPlug-Connector-Shore-Power-End.avif\",\r\n        attributes: {\r\n            application: [\"marine\", \"rv\", \"dockside\", \"specialty\"],\r\n            type: [\"cordset\", \"connector\"],\r\n            amp: [\"30\", \"50\"] }\r\n    },\r\n    {\r\n        name: \"Angled RV Cordset 50 Amp\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/angled-rv-cordset-50-amp\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/Angled-RV-Cordset-50-Amp.avif\",\r\n        attributes: {\r\n            application: [\"rv\"],\r\n            type: [\"cordset\"],\r\n            amp: [\"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Connector - White\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [\"marine\", \"rv\", \"specialty\"],\r\n            type: [\"connector\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"],\r\n            color: [\"white\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Inlet - White\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [\"marine\", \"rv\", \"specialty\"],\r\n            type: [\"inlet\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"],\r\n            color: [\"white\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"15 Amp 115V \/ 30 Amp 125V \u2013 25\u2019 and 50\u2032 Cordset\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/15-amp-115v-30-amp-125v-25-and-50%e2%80%b2-cordset\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/15-Amp-115V-_-30-Amp-125V-%E2%80%93-25-and-50%E2%80%B2-Cordset.avif\",\r\n        attributes: {\r\n            application: [\"marine\", \"rv\"],\r\n            type: [\"cordset\"],\r\n            amp: [\"15\", \"30\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Dual Configuration Smartplug Cordset w\/ Shore Power Twist-Type Connector\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-dual-configuration-smartplug-cordset-w-shore-power-twist-type-connector\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_-Shore-Power-Twist-Type-Connector-2.avif\",\r\n        attributes: {\r\n            application: [\"marine\", \"specialty\"],\r\n            type: [\"cordset\", \"twist-type\"],\r\n            amp: [\"30\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Harmonized Cord w\/ SmartPlug Boat Side Connector w\/ Blunt End\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-harmonized-cord-w-smartplug-boat-side-connector-w-blunt-end\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Harmonized-Cord-w_-SmartPlug-Boat-Side-Connector-w_-Blunt-End.avif\",\r\n        attributes: {\r\n            application: [\"marine\", \"specialty\"],\r\n            type: [\"cordset\", \"connector\"],\r\n            amp: [\"16\", \"32\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug ELCI Sensor & Breaker Combo Kit\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-elci-sensor-breaker-combo-kit\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-ELCI-Sensor-Breaker-Combo-Kit.avif\",\r\n        attributes: {\r\n            application: [\"marine\"],\r\n            type: [\"elci\"],\r\n            amp: [\"30\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug ELCI Sensor & Breaker Combo Kit \u2013 WHITE\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-elci-sensor-breaker-combo-kit-white\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-ELCI-Sensor-Breaker-Combo-Kit-%E2%80%93-WHITE.avif\",\r\n        attributes: {\r\n            application: [\"marine\"],\r\n            type: [\"elci\"],\r\n            amp: [\"30\", \"50\"],\r\n            color: [\"white\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug ELCI Breakers\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-elci-breakers\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-ELCI-Breakers.avif\",\r\n        attributes: {\r\n            application: [\"marine\"],\r\n            type: [\"elci\"],\r\n            amp: [\"30\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug ELCI Breakers \u2013 WHITE\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/elci-breakers-white\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-ELCI-Breakers-%E2%80%93-WHITE.avif\",\r\n        attributes: {\r\n            application: [\"marine\"],\r\n            type: [\"elci\"],\r\n            amp: [\"30\", \"50\"],\r\n            color: [\"white\"]\r\n        }\r\n    },\r\n    {\r\n        \/\/ was type: [\"kits\"] \u2014 didn't match the \"service-kits\" checkbox value\r\n        name: \"EATON Lighthouse Double Pedestal Retro-fit Conversion Kit\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/eaton-lighthouse-double-pedestal-retro-fit-conversion-kit\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/EATON-Lighthouse-Double-Pedestal-Retro-fit-Conversion-Kit.avif\",\r\n        attributes: {\r\n            application: [\"dockside\", \"marine\"],\r\n            type: [\"service-kits\"],\r\n            amp: [\"15\", \"30\"]\r\n        }\r\n    },\r\n    {\r\n        \/\/ Left un-typed on purpose \u2014 a mounting bracket accessory, not\r\n        \/\/ clearly a \"kit\". Flag if you want it under Service Kits too.\r\n        name: \"EATON Lighthouse Pedestal Mounting Bracket\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/eaton-lighthouse-pedestal-mounting-bracket\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/EATON-Lighthouse-Pedestal-Mounting-Bracket.avif\",\r\n        attributes: {\r\n            application: [\"dockside\", \"marine\"],\r\n            type: [],\r\n            amp: [\"15\", \"30\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"EATON Lighthouse Pedestal Retro-fit Conversion Kit\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/eaton-lighthouse-pedestal-retro-fit-conversion-kit\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/EATON-Lighthouse-Pedestal-Retro-fit-Conversion-Kit.avif\",\r\n        attributes: {\r\n            application: [\"dockside\", \"marine\"],\r\n            type: [\"service-kits\"],\r\n            amp: [\"30\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"LEGACY Lighthouse Pedestal Mounting Bracket\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/legacy-lighthouse-pedestal-mounting-bracket-copy\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/LEGACY-Lighthouse-Pedestal-Mounting-Bracket.avif\",\r\n        attributes: {\r\n            application: [\"marine\"],\r\n            type: [],\r\n            amp: [\"30\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Cordset Storage Bag\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-cordset-storage-bag\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Cordset-Storage-Bag.avif\",\r\n        attributes: {\r\n            application: [\"specialty\"],\r\n            type: [\"cordset\"],\r\n            amp: [\"30\", \"50\"],\r\n            color: [\"black\"]\r\n        }\r\n    },\r\n    {\r\n        \/\/ was type: [\"connector\",\"service\"]\r\n        name: \"SmartPlug Female Receptacle\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-female-receptacle\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Female-Receptacle.avif\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"combokit\", \"marine\", \"rv\", \"specialty\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Dock & Lift Kit\",\r\n        url: \"#\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dock-Lift-Kit.avif\",\r\n        attributes: {\r\n            application: [\"dockside\"],\r\n            type: [\"service-kits\"],\r\n            amp: []\r\n        }\r\n    },\r\n    {\r\n        \/\/ was type: [\"connector\",\"inlet\",\"service\"]\r\n        name: \"SmartPlug Male Inlet Connector\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-male-inlet-connector\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Male-Inlet-Connector.avif\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Female Connector Inlet\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/https-dev-smartplug-com-staging-smartplug-female-receptacle-copy\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Female-Connector-Inlet.avif\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"combokit\", \"marine\", \"rv\", \"specialty\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Male Inlet Connector Strain Relief\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-male-inlet-connector-strain-relief\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Male-Inlet-Connector-Strain-Relief.avif\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"connector\", \"inlet\", \"service-kits\"],\r\n            amp: [\"30\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Female Connector Gasket\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-female-connector-gasket\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Female-Connector-Gasket.avif\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"connector\", \"service-kits\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Male Connector Gasket\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-male-connector-gasket\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Male-Connector-Gasket.avif\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"connector\", \"service-kits\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Weather Door Receptacle\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-weather-door-receptacle\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Weather-Door-Receptacle.avif\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: []\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Side Lever Kit\",\r\n        url: \"https:\/\/dev.smartplug.com\/staging\/smartplug-side-lever-kit\/\",\r\n        image: \"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Side-Lever-Kit.avif\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\", \"marine\", \"rv\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Side Lever\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Mounting Screws\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: []\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Mounting Gasket\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Rear Gasket\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Stainless Steel Mounting Screws\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: [],\r\n            color: [\"stainless\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Replacement Cover\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: [\"30\", \"50\"],\r\n            color: [\"white\"]\r\n        }\r\n    },\r\n    {\r\n        name: \"SmartPlug Replacement Cover\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: [\"30\", \"50\"],\r\n            color: [\"black\"]\r\n        }\r\n    },\r\n    {\r\n        \/\/ was type: [\"kits\",\"service\"]\r\n        name: \"SmartPlug Installation Hardware Kit\",\r\n        url: \"#\",\r\n        image: \"https:\/\/placehold.co\/45x45\/0D1C38\/fff?text=SP\",\r\n        attributes: {\r\n            application: [],\r\n            type: [\"service-kits\"],\r\n            amp: [\"16\", \"30\", \"32\", \"50\"]\r\n        }\r\n    },\r\n\r\n];\r\n\r\n\/\/ --- Filter group setup ---\r\n\/\/ MAIN groups live in the top accordion panels and are read straight\r\n\/\/ from the DOM. SUBFILTER_CONFIG defines everything that instead shows\r\n\/\/ up dynamically down in the results, keyed to whatever attribute name\r\n\/\/ you want to sub-filter by. To add another one later (e.g. \"material\"),\r\n\/\/ just add another key here \u2014 no HTML changes needed.\r\n\/\/\r\n\/\/ NOTE: a \"twist-push\" group used to be listed here, but there was never\r\n\/\/ a matching checkbox in the HTML, so it did nothing. Some cordset\r\n\/\/ products do carry \"twist-type\"\/\"push-type\" tags inside their `type`\r\n\/\/ array (they still match the Cordset checkbox fine) \u2014 if you want a\r\n\/\/ dedicated Twist\/Push filter, the cleanest way is a sub-filter (like\r\n\/\/ Color) that appears once Cordset is selected. Ask if you'd like that built.\r\nconst MAIN_FILTER_GROUPS = ['application', 'type', 'amp'];\r\n\r\nconst SUBFILTER_CONFIG = {\r\n    color: {\r\n        label: 'Color',\r\n        options: [\r\n            { value: 'stainless', label: 'Stainless' },\r\n            { value: 'white', label: 'White' },\r\n            { value: 'grey', label: 'Grey' },\r\n            { value: 'black', label: 'Black' },\r\n            { value: 'orange', label: 'Orange' },\r\n            { value: 'clear', label: 'Clear' }\r\n        ]\r\n    }\r\n    \/\/ Add future sub-filters here, e.g.:\r\n    \/\/ material: { label: 'Material', options: [...] }\r\n};\r\n\r\n\/\/ Human-readable labels for chips + any place we need to display a raw\r\n\/\/ filter value back to the user. Falls back to the raw value (capitalized)\r\n\/\/ if something's missing here, so this never breaks if you add a new\r\n\/\/ checkbox and forget to update it.\r\nconst VALUE_LABELS = {\r\n    marine: 'Marine',\r\n    rv: 'RV',\r\n    dockside: 'Dockside',\r\n    specialty: 'Specialty',\r\n    connector: 'Connector',\r\n    cordset: 'Cordset',\r\n    inlet: 'Inlet',\r\n    elci: 'ELCI',\r\n    'service-kits': 'Service Kits',\r\n    combokit: 'Combokit',\r\n    'data-ports': 'Data Ports',\r\n    '15': '15A',\r\n    '16': '16A',\r\n    '30': '30A',\r\n    '32': '32A',\r\n    '50': '50A',\r\n    stainless: 'Stainless',\r\n    white: 'White',\r\n    grey: 'Grey',\r\n    black: 'Black',\r\n    orange: 'Orange',\r\n    clear: 'Clear'\r\n};\r\n\r\nfunction labelFor(value) {\r\n    return VALUE_LABELS[value] || (value.charAt(0).toUpperCase() + value.slice(1));\r\n}\r\n\r\n\/\/ Tracks which sub-filter values are currently checked, e.g. { color: ['white','black'] }.\r\n\/\/ Kept as JS state (not just read from the DOM) since the sub-filter\r\n\/\/ checkboxes get rebuilt each time the results refresh.\r\nlet activeSubFilters = {};\r\n\r\n\/\/ --- Accordion behaviour for the TOP-LEVEL category buttons ---\r\ndocument.querySelectorAll('.custom-dock-cat-btn').forEach(button => {\r\n    button.addEventListener('click', function () {\r\n        const list = this.nextElementSibling;\r\n\r\n        document.querySelectorAll('.custom-dock-prod-list').forEach(item => {\r\n            if (item !== list) item.style.display = \"none\";\r\n        });\r\n        document.querySelectorAll('.custom-dock-cat-btn').forEach(btn => {\r\n            if (btn !== this) btn.classList.remove(\"active\");\r\n        });\r\n\r\n        if (list.style.display === \"grid\") {\r\n            list.style.display = \"none\";\r\n            this.classList.remove(\"active\");\r\n        } else {\r\n            list.style.display = \"grid\";\r\n            this.classList.add(\"active\");\r\n        }\r\n    });\r\n});\r\n\r\n\/\/ --- Wire up the MAIN filter checkboxes ---\r\ndocument.querySelectorAll('.product-filter').forEach(filter => {\r\n    filter.addEventListener('change', updateRecommendations);\r\n});\r\n\r\n\/\/ --- Reset button ---\r\ndocument.getElementById('custom-dock-reset-btn').addEventListener('click', function () {\r\n    \/\/ Uncheck every main checkbox\r\n    document.querySelectorAll('.product-filter:checked').forEach(cb => {\r\n        cb.checked = false;\r\n    });\r\n\r\n    \/\/ Close every top-level accordion panel and clear active state\r\n    document.querySelectorAll('.custom-dock-prod-list').forEach(list => {\r\n        list.style.display = \"none\";\r\n    });\r\n    document.querySelectorAll('.custom-dock-cat-btn').forEach(btn => {\r\n        btn.classList.remove(\"active\");\r\n    });\r\n\r\n    \/\/ Clear sub-filter state and its rendered block entirely\r\n    activeSubFilters = {};\r\n    document.getElementById('sub-filters-section').innerHTML = '';\r\n\r\n    \/\/ Clear the search box too\r\n    const searchInput = document.getElementById('custom-dock-search');\r\n    if (searchInput) searchInput.value = '';\r\n\r\n    \/\/ Refresh the results back to the empty state\r\n    updateRecommendations();\r\n});\r\n\r\n\/\/ --- Quick-start preset buttons (\"I Own an RV\" \/ \"I Own a Boat\") ---\r\n\/\/ One tap checks the matching Application box, opens that accordion so\r\n\/\/ the choice is visible, and runs the filter \u2014 skips the hunt-and-peck.\r\ndocument.querySelectorAll('.custom-dock-preset-btn').forEach(btn => {\r\n    btn.addEventListener('click', function () {\r\n        const appValue = this.dataset.app;\r\n        const target = document.querySelector(\r\n            `.product-filter[data-filter=\"application\"][value=\"${appValue}\"]`\r\n        );\r\n        if (!target) return;\r\n\r\n        target.checked = true;\r\n\r\n        \/\/ Open the Application panel so the person can see what got checked\r\n        const appList = target.closest('.custom-dock-prod-list');\r\n        const appBtn = appList ? appList.previousElementSibling : null;\r\n        document.querySelectorAll('.custom-dock-prod-list').forEach(list => {\r\n            list.style.display = (list === appList) ? \"grid\" : \"none\";\r\n        });\r\n        document.querySelectorAll('.custom-dock-cat-btn').forEach(b => {\r\n            b.classList.toggle('active', b === appBtn);\r\n        });\r\n\r\n        updateRecommendations();\r\n    });\r\n});\r\n\r\n\/\/ --- Search box: quick jump to a product by name, independent of filters ---\r\nconst searchInputEl = document.getElementById('custom-dock-search');\r\nif (searchInputEl) {\r\n    searchInputEl.addEventListener('input', updateRecommendations);\r\n}\r\n\r\n\/\/ ==========================================================\r\n\/\/ Mobile-friendly open\/close + periodic hint bubble\r\n\/\/ ==========================================================\r\n\/\/\r\n\/\/ Behaviour:\r\n\/\/ - Hover works on desktop, tap works everywhere (unchanged from before).\r\n\/\/ - A hint bubble (\"Having trouble finding the right product? \/ PRODUCT\r\n\/\/   FILTER\") appears next to the trigger every 5s, for as long as the\r\n\/\/   dock has never been opened yet... but ALSO restarts its 5s cycle\r\n\/\/   fresh any time the dock goes from open -> closed again (hover ends,\r\n\/\/   or the panel is tapped closed, or the user clicks outside).\r\n\/\/ - The hint is always suppressed while the dock is actually open\r\n\/\/   (hover or tap), so it never overlaps the flyout panel.\r\n\r\nconst dockWrapper = document.getElementById('custom-dock-wrapper');\r\nconst dockTrigger = document.getElementById('custom-dock-trigger');\r\nconst dockHint = document.getElementById('custom-dock-hint');\r\n\r\n\/\/ How long the bubble stays visible per pulse, and how long it waits\r\n\/\/ (fully hidden) before showing again. Tweak these two numbers only.\r\nconst HINT_VISIBLE_MS = 8000; \/\/ stays on screen ~8s each time it appears\r\nconst HINT_HIDDEN_MS = 10000; \/\/ waits 10s after hiding before showing again\r\n\r\nlet dockHintShowTimer = null;  \/\/ timer that hides the bubble after it's shown\r\nlet dockHintWaitTimer = null;  \/\/ timer that re-shows the bubble after the gap\r\nlet isDockOpen = false; \/\/ tracks open state, whether via tap or hover\r\n\r\n\/\/ Shows the bubble, keeps it up for HINT_VISIBLE_MS, then hides it and\r\n\/\/ schedules the next appearance after HINT_HIDDEN_MS. Recursive by design\r\n\/\/ so \"visible time\" and \"gap time\" can differ (a plain setInterval can't\r\n\/\/ do that cleanly).\r\nfunction showDockHintOnce() {\r\n    if (!dockHint || isDockOpen) return;\r\n\r\n    dockHint.classList.add('custom-dock-hint-show');\r\n\r\n    dockHintShowTimer = setTimeout(() => {\r\n        dockHint.classList.remove('custom-dock-hint-show');\r\n        dockHintShowTimer = null;\r\n\r\n        dockHintWaitTimer = setTimeout(() => {\r\n            dockHintWaitTimer = null;\r\n            showDockHintOnce();\r\n        }, HINT_HIDDEN_MS);\r\n    }, HINT_VISIBLE_MS);\r\n}\r\n\r\n\/\/ Wipes any pending hint + timers. Called whenever the dock opens.\r\nfunction pauseDockHint() {\r\n    if (dockHintShowTimer) {\r\n        clearTimeout(dockHintShowTimer);\r\n        dockHintShowTimer = null;\r\n    }\r\n    if (dockHintWaitTimer) {\r\n        clearTimeout(dockHintWaitTimer);\r\n        dockHintWaitTimer = null;\r\n    }\r\n    if (dockHint) dockHint.classList.remove('custom-dock-hint-show');\r\n}\r\n\r\n\/\/ Starts the show\/wait cycle fresh. Called on page load, and again every\r\n\/\/ time the dock closes (so it \"starts again as it is\") \u2014 always beginning\r\n\/\/ with a fresh HINT_HIDDEN_MS wait before the next appearance, so closing\r\n\/\/ the dock never triggers an instant re-pop.\r\nfunction resumeDockHintCycle() {\r\n    pauseDockHint();\r\n    if (!dockHint) return;\r\n    dockHintWaitTimer = setTimeout(() => {\r\n        dockHintWaitTimer = null;\r\n        showDockHintOnce();\r\n    }, HINT_HIDDEN_MS);\r\n}\r\n\r\nif (dockTrigger && dockWrapper) {\r\n\r\n    dockTrigger.addEventListener('click', function (e) {\r\n        e.stopPropagation();\r\n        dockWrapper.classList.toggle('custom-dock-open');\r\n\r\n        if (dockWrapper.classList.contains('custom-dock-open')) {\r\n            isDockOpen = true;\r\n            pauseDockHint();\r\n        } else {\r\n            isDockOpen = false;\r\n            resumeDockHintCycle();\r\n        }\r\n    });\r\n\r\n    document.addEventListener('click', function (e) {\r\n        if (!dockWrapper.contains(e.target)) {\r\n            if (dockWrapper.classList.contains('custom-dock-open')) {\r\n                dockWrapper.classList.remove('custom-dock-open');\r\n                isDockOpen = false;\r\n                resumeDockHintCycle();\r\n            }\r\n        }\r\n    });\r\n\r\n    \/\/ Desktop hover: opens\/closes the flyout via CSS, but JS still needs to\r\n    \/\/ know about it so the hint pauses\/resumes at the right moments.\r\n    dockWrapper.addEventListener('mouseenter', function () {\r\n        isDockOpen = true;\r\n        pauseDockHint();\r\n    });\r\n\r\n    dockWrapper.addEventListener('mouseleave', function () {\r\n        \/\/ Only truly \"closed\" if it's not pinned open by a tap\r\n        if (!dockWrapper.classList.contains('custom-dock-open')) {\r\n            isDockOpen = false;\r\n            resumeDockHintCycle();\r\n        }\r\n    });\r\n\r\n    \/\/ First-visit attention pulse: draws the eye once, then stops so it\r\n    \/\/ never feels naggy on repeat visits.\r\n    setTimeout(() => dockTrigger.classList.add('custom-dock-pulse'), 800);\r\n    dockTrigger.addEventListener('click', () => dockTrigger.classList.remove('custom-dock-pulse'), { once: true });\r\n\r\n    \/\/ Kick off the hint cycle on load\r\n    resumeDockHintCycle();\r\n}\r\n\r\n\/\/ Reads only the MAIN checkboxes into { application: ['rv'], type: ['inlet'], ... }\r\nfunction getMainSelectedFilters() {\r\n    const selected = {};\r\n    document.querySelectorAll('.product-filter:checked').forEach(cb => {\r\n        const group = cb.dataset.filter;\r\n        if (!MAIN_FILTER_GROUPS.includes(group)) return; \/\/ sub-filter checkboxes are handled separately\r\n        if (!selected[group]) selected[group] = [];\r\n        selected[group].push(cb.value);\r\n    });\r\n    return selected;\r\n}\r\n\r\n\/\/ A product \"matches\" a filter group if it has at least one value in common with the checked\r\n\/\/ boxes for that group. It's a full match if it satisfies every group that has a selection.\r\n\/\/ Works the same whether \"selected\" contains main groups, sub-filter groups, or both.\r\nfunction matchScore(product, selected) {\r\n    const groups = Object.keys(selected);\r\n    if (groups.length === 0) return { full: false, partial: false, hits: 0 };\r\n\r\n    let hits = 0;\r\n    groups.forEach(group => {\r\n        const productValues = product.attributes[group] || [];\r\n        const overlap = productValues.some(v => selected[group].includes(v));\r\n        if (overlap) hits++;\r\n    });\r\n\r\n    return {\r\n        full: hits === groups.length,\r\n        partial: hits > 0,\r\n        hits\r\n    };\r\n}\r\n\r\nfunction renderProductCard(product, matchLabel) {\r\n    const link = document.createElement('a');\r\n    link.className = 'custom-dock-prod-link';\r\n    link.href = product.url;\r\n    link.target = '_blank';\r\n    link.rel = 'noopener noreferrer';\r\n\r\n    link.innerHTML = `\r\n        <img decoding=\"async\" src=\"${product.image}\" alt=\"${product.name}\">\r\n        <span>\r\n            ${product.name}\r\n            ${matchLabel ? `<span class=\"custom-dock-match-tag\">${matchLabel}<\/span>` : ''}\r\n        <\/span>\r\n    `;\r\n    return link;\r\n}\r\n\r\n\/\/ Builds the dynamic sub-filter checkbox row(s) that sit right under\r\n\/\/ \"Matching Products\". baseMatches = whatever currently satisfies the\r\n\/\/ MAIN filters only (before any sub-filter is applied). A sub-filter\r\n\/\/ group shows up if at least one of those products actually has that\r\n\/\/ attribute defined \u2014 so it only appears when it'd be useful, e.g.\r\n\/\/ Color only shows once Inlet-type products are in the results.\r\n\/\/ Rendered as a compact horizontal row of pill checkboxes with no\r\n\/\/ heading text.\r\nfunction renderSubFilters(baseMatches) {\r\n    const container = document.getElementById('sub-filters-section');\r\n    container.innerHTML = '';\r\n\r\n    const relevantGroups = Object.keys(SUBFILTER_CONFIG).filter(key => {\r\n        return baseMatches.some(p => (p.attributes[key] || []).length > 0);\r\n    });\r\n\r\n    \/\/ Drop stale selections for sub-filters that are no longer relevant,\r\n    \/\/ so a hidden checkbox can never silently keep narrowing results.\r\n    Object.keys(activeSubFilters).forEach(key => {\r\n        if (!relevantGroups.includes(key)) delete activeSubFilters[key];\r\n    });\r\n\r\n    if (relevantGroups.length === 0) return;\r\n\r\n    relevantGroups.forEach(key => {\r\n        const config = SUBFILTER_CONFIG[key];\r\n\r\n        const block = document.createElement('div');\r\n        block.className = 'custom-dock-subfilter-block';\r\n\r\n        const list = document.createElement('div');\r\n        list.className = 'custom-dock-subfilter-list';\r\n\r\n        config.options.forEach(opt => {\r\n            const label = document.createElement('label');\r\n            label.className = 'custom-dock-subitem';\r\n\r\n            const input = document.createElement('input');\r\n            input.type = 'checkbox';\r\n            input.className = 'product-filter';\r\n            input.dataset.filter = key;\r\n            input.value = opt.value;\r\n            input.checked = (activeSubFilters[key] || []).includes(opt.value);\r\n\r\n            input.addEventListener('change', function () {\r\n                if (!activeSubFilters[key]) activeSubFilters[key] = [];\r\n                if (this.checked) {\r\n                    if (!activeSubFilters[key].includes(opt.value)) {\r\n                        activeSubFilters[key].push(opt.value);\r\n                    }\r\n                } else {\r\n                    activeSubFilters[key] = activeSubFilters[key].filter(v => v !== opt.value);\r\n                    if (activeSubFilters[key].length === 0) delete activeSubFilters[key];\r\n                }\r\n                updateRecommendations();\r\n            });\r\n\r\n            label.appendChild(input);\r\n            label.appendChild(document.createTextNode(opt.label));\r\n            list.appendChild(label);\r\n        });\r\n\r\n        block.appendChild(list);\r\n        container.appendChild(block);\r\n    });\r\n}\r\n\r\n\/\/ Renders removable chips for every active main + sub filter, and keeps\r\n\/\/ the trigger badge count in sync. Clicking a chip's \u00d7 unchecks the\r\n\/\/ matching checkbox and re-runs the filter \u2014 no need to reopen an accordion\r\n\/\/ just to undo one choice.\r\nfunction renderChipsAndBadge(mainSelected) {\r\n    const chipsEl = document.getElementById('custom-dock-chips');\r\n    const badgeEl = document.getElementById('custom-dock-badge');\r\n    chipsEl.innerHTML = '';\r\n\r\n    let totalCount = 0;\r\n\r\n    Object.keys(mainSelected).forEach(group => {\r\n        mainSelected[group].forEach(value => {\r\n            totalCount++;\r\n            chipsEl.appendChild(buildChip(group, value));\r\n        });\r\n    });\r\n\r\n    Object.keys(activeSubFilters).forEach(group => {\r\n        (activeSubFilters[group] || []).forEach(value => {\r\n            totalCount++;\r\n            chipsEl.appendChild(buildChip(group, value));\r\n        });\r\n    });\r\n\r\n    if (badgeEl) {\r\n        badgeEl.textContent = totalCount;\r\n        badgeEl.style.display = totalCount > 0 ? 'flex' : 'none';\r\n    }\r\n}\r\n\r\nfunction buildChip(group, value) {\r\n    const chip = document.createElement('span');\r\n    chip.className = 'custom-dock-chip';\r\n    chip.innerHTML = `${labelFor(value)} <button type=\"button\" aria-label=\"Remove ${labelFor(value)} filter\">\u2715<\/button>`;\r\n\r\n    chip.querySelector('button').addEventListener('click', () => {\r\n        const cb = document.querySelector(`.product-filter[data-filter=\"${group}\"][value=\"${value}\"]`);\r\n        if (cb) {\r\n            cb.checked = false;\r\n            cb.dispatchEvent(new Event('change'));\r\n        } else {\r\n            \/\/ Sub-filter checkbox may not currently be rendered \u2014 clear state directly\r\n            if (activeSubFilters[group]) {\r\n                activeSubFilters[group] = activeSubFilters[group].filter(v => v !== value);\r\n                if (activeSubFilters[group].length === 0) delete activeSubFilters[group];\r\n            }\r\n            updateRecommendations();\r\n        }\r\n    });\r\n\r\n    return chip;\r\n}\r\n\r\nfunction updateRecommendations() {\r\n    const mainSelected = getMainSelectedFilters();\r\n    const recommendedEl = document.getElementById('recommended-products');\r\n    const relatedEl = document.getElementById('related-products');\r\n    const matchCountEl = document.getElementById('match-count');\r\n    const searchTerm = (document.getElementById('custom-dock-search') || {}).value || '';\r\n    const trimmedSearch = searchTerm.trim().toLowerCase();\r\n\r\n    recommendedEl.innerHTML = '';\r\n    relatedEl.innerHTML = '';\r\n\r\n    \/\/ Search takes priority: if someone's typing, show name matches across\r\n    \/\/ the whole catalog immediately rather than making them also manage filters.\r\n    if (trimmedSearch.length > 0) {\r\n        renderChipsAndBadge(mainSelected);\r\n        const nameMatches = products.filter(p => p.name.toLowerCase().includes(trimmedSearch));\r\n        matchCountEl.textContent = nameMatches.length > 0 ? `(${nameMatches.length})` : '';\r\n        if (nameMatches.length > 0) {\r\n            nameMatches.forEach(p => recommendedEl.appendChild(renderProductCard(p)));\r\n        } else {\r\n            recommendedEl.innerHTML = `<p class=\"custom-dock-empty-msg\">No products matched \"${searchTerm}\". Try a different term or check an attribute above.<\/p>`;\r\n        }\r\n        document.getElementById('sub-filters-section').innerHTML = '';\r\n        return;\r\n    }\r\n\r\n    if (Object.keys(mainSelected).length === 0) {\r\n        recommendedEl.innerHTML = `\r\n            <p class=\"custom-dock-empty-msg\">Check an attribute above to see matching products.<\/p>\r\n            <a href=\"https:\/\/dev.smartplug.com\/staging\/shop\/\" class=\"custom-dock-browse-all-btn\">Browse All Products \u2192<\/a>\r\n        `;\r\n        matchCountEl.textContent = '';\r\n        activeSubFilters = {};\r\n        document.getElementById('sub-filters-section').innerHTML = '';\r\n        renderChipsAndBadge(mainSelected);\r\n        return;\r\n    }\r\n\r\n    \/\/ What matches on MAIN filters alone \u2014 used to decide which sub-filters to show\r\n    const baseMatches = products.filter(p => matchScore(p, mainSelected).full);\r\n\r\n    \/\/ Sub-filters (e.g. Color) should only ever appear when EVERY main\r\n    \/\/ group currently has at most one box checked. The moment any single\r\n    \/\/ group (Application, Product Type, Amperage) has 2+ checked, we\r\n    \/\/ suppress sub-filters entirely \u2014 pass an empty array so\r\n    \/\/ renderSubFilters finds no relevant groups and clears any active\r\n    \/\/ sub-filter selections along with it.\r\n    const anyGroupHasMultiple = Object.values(mainSelected).some(vals => vals.length > 1);\r\n    renderSubFilters(anyGroupHasMultiple ? [] : baseMatches);\r\n\r\n    \/\/ Combine main + active sub-filters for the actual results shown\r\n    const fullSelected = { ...mainSelected };\r\n    Object.keys(activeSubFilters).forEach(key => {\r\n        if (activeSubFilters[key] && activeSubFilters[key].length > 0) {\r\n            fullSelected[key] = activeSubFilters[key];\r\n        }\r\n    });\r\n\r\n    renderChipsAndBadge(mainSelected);\r\n\r\n    \/\/ \"Matching Products\" must satisfy main filters AND any active sub-filter (e.g. Color).\r\n    const scoredFull = products.map(p => ({ product: p, score: matchScore(p, fullSelected) }));\r\n    const fullMatches = scoredFull.filter(s => s.score.full);\r\n\r\n    matchCountEl.textContent = fullMatches.length > 0 ? `(${fullMatches.length})` : '';\r\n\r\n    \/\/ \"You Might Also Like\" and its \"Shares N attribute(s)\" label are scored\r\n    \/\/ against MAIN filters ONLY. Sub-filters (Color, etc.) should never count\r\n    \/\/ as a \"shared attribute\" and should never by themselves decide whether\r\n    \/\/ something is related \u2014 only the top-level filter groups do.\r\n    const fullMatchProducts = new Set(fullMatches.map(s => s.product));\r\n    const mainScored = products.map(p => ({ product: p, score: matchScore(p, mainSelected) }));\r\n    const relatedMatches = mainScored\r\n        .filter(s => s.score.partial && !fullMatchProducts.has(s.product))\r\n        .sort((a, b) => b.score.hits - a.score.hits);\r\n\r\n    if (fullMatches.length > 0) {\r\n        fullMatches.forEach(s => {\r\n            recommendedEl.appendChild(renderProductCard(s.product));\r\n        });\r\n    } else {\r\n        recommendedEl.innerHTML = `\r\n            <p class=\"custom-dock-empty-msg\">No exact match yet \u2014 try fewer attributes, or see related products below.<\/p>\r\n        `;\r\n    }\r\n\r\n    if (relatedMatches.length > 0) {\r\n        const heading = document.createElement('h4');\r\n        heading.textContent = 'You Might Also Like';\r\n        relatedEl.appendChild(heading);\r\n\r\n        relatedMatches.slice(0, 4).forEach(s => {\r\n            const sharedLabel = `Shares ${s.score.hits} attribute${s.score.hits > 1 ? 's' : ''}`;\r\n            relatedEl.appendChild(renderProductCard(s.product, sharedLabel));\r\n        });\r\n    }\r\n}\r\n\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4d063bb e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"4d063bb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-b633a87 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"b633a87\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-06c878a zoom-hover elementor-widget elementor-widget-image\" data-id=\"06c878a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-combo-kit\/\">\n\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Combo-Kit.avif\" class=\"attachment-full size-full wp-image-11980\" alt=\"\" srcset=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Combo-Kit.avif 500w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Combo-Kit-300x300.avif 300w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Combo-Kit-100x100.avif 100w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Combo-Kit-64x64.avif 64w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Combo-Kit-150x150.avif 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1121786 elementor-widget elementor-widget-heading\" data-id=\"1121786\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Combo Kit<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9617fcd elementor-widget elementor-widget-text-editor\" data-id=\"9617fcd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\"><li class=\"elementor-icon-list-item\">The SmartPlug Combo Kit includes a SmartPlug Inlet and Connector offers superior performance and ease of use.<\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Larger contact surface reduces overheating.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i>\u00a0Weatherproof seals protect against moisture.<\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Installs quickly using standard mounting holes.<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-562c7de wpr-button-icon-style-inline wpr-button-icon-position-right elementor-widget elementor-widget-wpr-button\" data-id=\"562c7de\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wpr-button.default\">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\n\t\t<div class=\"wpr-button-wrap elementor-clearfix\">\n\t\t<a class=\"wpr-button wpr-button-effect wpr-button-none\" data-text=\"\" href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-combokit\/\">\n\t\t\t\n\t\t\t<span class=\"wpr-button-content\">\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-text\">Where to buy<\/span>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-icon\"><svg class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\n\t\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-52d374a e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"52d374a\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-dfdfd03 zoom-hover elementor-widget elementor-widget-image\" data-id=\"dfdfd03\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-connector\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Connector.avif\" class=\"attachment-full size-full wp-image-12000\" alt=\"\" srcset=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Connector.avif 500w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Connector-300x300.avif 300w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Connector-100x100.avif 100w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Connector-64x64.avif 64w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Connector-150x150.avif 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7a5606e elementor-widget elementor-widget-heading\" data-id=\"7a5606e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Connector<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7985c0e elementor-widget elementor-widget-text-editor\" data-id=\"7985c0e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\"><li>The SmartPlug Connector delivers safer, hassle-free power with enhanced conductivity, secure locking, and weatherproof protection.<\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Relieves stress on the coach structure to protect your RV<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Cord rests close to the coach side, reducing run over risk\u00a0 \u00a0 \u00a0and\u00a0 trip hazards<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Easier to store and coil when you are breaking camp<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-810a120 wpr-button-icon-style-inline wpr-button-icon-position-right elementor-widget elementor-widget-wpr-button\" data-id=\"810a120\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wpr-button.default\">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\n\t\t<div class=\"wpr-button-wrap elementor-clearfix\">\n\t\t<a class=\"wpr-button wpr-button-effect wpr-button-none\" data-text=\"\" href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-connector\/\">\n\t\t\t\n\t\t\t<span class=\"wpr-button-content\">\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-text\">Where to buy<\/span>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-icon\"><svg class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\n\t\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7c22c8c e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"7c22c8c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ef28f64 zoom4-hover elementor-widget elementor-widget-image\" data-id=\"ef28f64\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-inlet\/\">\n\t\t\t\t\t\t\t<img decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/Updated-Inlets.png\" class=\"attachment-full size-full wp-image-13091\" alt=\"\" srcset=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/Updated-Inlets.png 500w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/Updated-Inlets-300x300.png 300w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/Updated-Inlets-150x150.png 150w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/Updated-Inlets-100x100.png 100w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/Updated-Inlets-64x64.png 64w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c6bf8bf elementor-widget elementor-widget-heading\" data-id=\"c6bf8bf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Inlet<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3f02f64 elementor-widget elementor-widget-text-editor\" data-id=\"3f02f64\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\"><li>The SmartPlug Inlet combines effortless installation, secure locking, superior conductivity, and weatherproof protection for reliable, worry-free power.<\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Weatherproof gaskets prevent water intrusion.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Locking clips hold plug firmly in place.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Smart push-in shape guarantees correct alignment.<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7cdbdc0 wpr-button-icon-style-inline wpr-button-icon-position-right elementor-widget elementor-widget-wpr-button\" data-id=\"7cdbdc0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wpr-button.default\">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\n\t\t<div class=\"wpr-button-wrap elementor-clearfix\">\n\t\t<a class=\"wpr-button wpr-button-effect wpr-button-none\" data-text=\"\" href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-inlet\/\">\n\t\t\t\n\t\t\t<span class=\"wpr-button-content\">\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-text\">Where to buy<\/span>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-icon\"><svg class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\n\t\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-7bc98e4 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"7bc98e4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-989b808 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"989b808\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-e97654f zoom-hover elementor-widget elementor-widget-image\" data-id=\"e97654f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-dual-configuration-smartplug-cordset-w-smartplug-connector-shore-power-end\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_SmartPlug-Connector-Shore-Power-End.avif\" class=\"attachment-full size-full wp-image-11986\" alt=\"\" srcset=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_SmartPlug-Connector-Shore-Power-End.avif 500w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_SmartPlug-Connector-Shore-Power-End-300x300.avif 300w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_SmartPlug-Connector-Shore-Power-End-100x100.avif 100w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_SmartPlug-Connector-Shore-Power-End-64x64.avif 64w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_SmartPlug-Connector-Shore-Power-End-150x150.avif 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9d81df7 elementor-widget elementor-widget-heading\" data-id=\"9d81df7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Dual Configuration Cordset w\/ Connector Shore Power End<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-2cb3ca4 elementor-widget elementor-widget-text-editor\" data-id=\"2cb3ca4\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\"><li>The SmartPlug Dual Configuration Cordset features secure multi-point locking and weatherproof seals for dependable shore power connections.<\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Multi-point clips secure plug firmly in inlet.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Locking system prevents stress from cord movement.<br data-start=\"187\" data-end=\"190\" \/><\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Weatherproof protection ensures reliable connections.<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4aaad3c wpr-button-icon-style-inline wpr-button-icon-position-right elementor-widget elementor-widget-wpr-button\" data-id=\"4aaad3c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wpr-button.default\">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\n\t\t<div class=\"wpr-button-wrap elementor-clearfix\">\n\t\t<a class=\"wpr-button wpr-button-effect wpr-button-none\" data-text=\"\" href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-dual-configuration-smartplug-cordset-w-smartplug-connector-shore-power-end\/\">\n\t\t\t\n\t\t\t<span class=\"wpr-button-content\">\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-text\">Where to buy<\/span>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-icon\"><svg class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\n\t\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c80203c e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"c80203c\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6960b8d zoom-hover elementor-widget elementor-widget-image\" data-id=\"6960b8d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-dual-configuration-smartplug-cordset-w-shore-power-twist-type-connector\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_-Shore-Power-Twist-Type-Connector-2.avif\" class=\"attachment-full size-full wp-image-12024\" alt=\"\" srcset=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_-Shore-Power-Twist-Type-Connector-2.avif 500w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_-Shore-Power-Twist-Type-Connector-2-300x300.avif 300w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_-Shore-Power-Twist-Type-Connector-2-100x100.avif 100w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_-Shore-Power-Twist-Type-Connector-2-64x64.avif 64w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Dual-Configuration-Smartplug-Cordset-w_-Shore-Power-Twist-Type-Connector-2-150x150.avif 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-87cead0 elementor-widget elementor-widget-heading\" data-id=\"87cead0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Dual Configuration Cordset w\/ Shore Power Twist-Type Connector<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-84f99d5 elementor-widget elementor-widget-text-editor\" data-id=\"84f99d5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\"><li>The SmartPlug Dual Configuration Cordset with Shore Power Twist-Type Connector ensures secure locking and weatherproof protection for reliable power connections.<\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Multi-point clips secure plug firmly in inlet.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Locks prevent stress from cord movement.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i>\u00a0Reliable weatherproof protection for the plug.<\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-801be1e wpr-button-icon-style-inline wpr-button-icon-position-right elementor-widget elementor-widget-wpr-button\" data-id=\"801be1e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wpr-button.default\">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\n\t\t<div class=\"wpr-button-wrap elementor-clearfix\">\n\t\t<a class=\"wpr-button wpr-button-effect wpr-button-none\" data-text=\"\" href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-dual-configuration-smartplug-cordset-w-shore-power-twist-type-connector\/\">\n\t\t\t\n\t\t\t<span class=\"wpr-button-content\">\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-text\">Where to buy<\/span>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-icon\"><svg class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\n\t\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-4c28deb e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"4c28deb\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-db40d0c zoom-hover elementor-widget elementor-widget-image\" data-id=\"db40d0c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-harmonized-cord-w-smartplug-boat-side-connector-w-blunt-end\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Harmonized-Cord-w_-SmartPlug-Boat-Side-Connector-w_-Blunt-End.avif\" class=\"attachment-full size-full wp-image-12003\" alt=\"\" srcset=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Harmonized-Cord-w_-SmartPlug-Boat-Side-Connector-w_-Blunt-End.avif 500w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Harmonized-Cord-w_-SmartPlug-Boat-Side-Connector-w_-Blunt-End-300x300.avif 300w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Harmonized-Cord-w_-SmartPlug-Boat-Side-Connector-w_-Blunt-End-100x100.avif 100w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Harmonized-Cord-w_-SmartPlug-Boat-Side-Connector-w_-Blunt-End-64x64.avif 64w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Harmonized-Cord-w_-SmartPlug-Boat-Side-Connector-w_-Blunt-End-150x150.avif 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e90f8ce elementor-widget elementor-widget-heading\" data-id=\"e90f8ce\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Harmonized Cord w\/ Boat Side Connector w\/ Blunt End<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-75e2152 elementor-widget elementor-widget-text-editor\" data-id=\"75e2152\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\"><li>The SmartPlug Harmonized Cord with Boat Side Connector and Blunt End delivers secure multi-point locking, weatherproof protection, and complete 16\u202fA, 240\u202fV shore power connectivity.<\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Multi-point clips secure plug in inlet.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Locks prevent stress from cord movement.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Weatherproof seals protect electrical connection.<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-05b3f9a wpr-button-icon-style-inline wpr-button-icon-position-right elementor-widget elementor-widget-wpr-button\" data-id=\"05b3f9a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wpr-button.default\">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\n\t\t<div class=\"wpr-button-wrap elementor-clearfix\">\n\t\t<a class=\"wpr-button wpr-button-effect wpr-button-none\" data-text=\"\" href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-harmonized-cord-w-smartplug-boat-side-connector-w-blunt-end\/\">\n\t\t\t\n\t\t\t<span class=\"wpr-button-content\">\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-text\">Where to buy<\/span>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-icon\"><svg class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\n\t\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-bcd1528 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"bcd1528\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-bb58e15 e-con-full e-flex wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-child\" data-id=\"bb58e15\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f392f97 zoom-hover elementor-widget elementor-widget-image\" data-id=\"f392f97\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<a href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-cordset-storage-bag\/\">\n\t\t\t\t\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"500\" height=\"500\" src=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Cordset-Storage-Bag.avif\" class=\"attachment-full size-full wp-image-12025\" alt=\"\" srcset=\"https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Cordset-Storage-Bag.avif 500w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Cordset-Storage-Bag-300x300.avif 300w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Cordset-Storage-Bag-100x100.avif 100w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Cordset-Storage-Bag-64x64.avif 64w, https:\/\/dev.smartplug.com\/staging\/wp-content\/uploads\/2026\/07\/SmartPlug-Cordset-Storage-Bag-150x150.avif 150w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/>\t\t\t\t\t\t\t\t<\/a>\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ce58201 elementor-widget elementor-widget-heading\" data-id=\"ce58201\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Cordset Storage Bag<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a0b1d3b elementor-widget elementor-widget-text-editor\" data-id=\"a0b1d3b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ul class=\"elementor-icon-list-items\"><li class=\"elementor-icon-list-item\"><span class=\"elementor-icon-list-text\">Easy one-handed engagement and dis-engagement of your shore power connection<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Clear see-through window for easy visibility.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Two carry straps for easy handling.<\/span><\/li><li class=\"elementor-icon-list-item\"><i class=\"fas fa-check\" aria-hidden=\"true\"><\/i><span class=\"elementor-icon-list-text\">\u00a0Heavy-duty zipper protects cord from environment.<\/span><\/li><\/ul>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8587737 wpr-button-icon-style-inline wpr-button-icon-position-right elementor-widget elementor-widget-wpr-button\" data-id=\"8587737\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"wpr-button.default\">\n\t\t\t\t\t\t\n\t\t\t\n\t\t\n\t\t<div class=\"wpr-button-wrap elementor-clearfix\">\n\t\t<a class=\"wpr-button wpr-button-effect wpr-button-none\" data-text=\"\" href=\"https:\/\/dev.smartplug.com\/staging\/smartplug-cordset-storage-bag\/\">\n\t\t\t\n\t\t\t<span class=\"wpr-button-content\">\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-text\">Where to buy<\/span>\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t<span class=\"wpr-button-icon\"><svg class=\"e-font-icon-svg e-fas-arrow-right\" viewBox=\"0 0 448 512\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><path d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg><\/span>\n\t\t\t\t\t\t\t<\/span>\n\t\t<\/a>\n\n\t\t\t\t<\/div>\n\t\n\t\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Commercial \u2630 0 Having trouble finding the right product? TRY PRODUCT FILTER Product Filter Reset Filters Application Marine RV Dockside Specialty Product Type Connector Cordset Inlet ELCI Service Kits Combokit Data Ports Amperage 15AStandard outlets 16ACompact setups 30AMost RVs 32ALarger boats 50ALarge RVs &amp; boats Matching Products Check an attribute above to see matching products. Browse All Products \u2192 Combo Kit The SmartPlug Combo Kit includes a SmartPlug Inlet and Connector offers superior performance and ease of use. \u00a0Larger contact surface reduces overheating. \u00a0Weatherproof seals protect against moisture. \u00a0Installs quickly using standard mounting holes. Where to buy Connector The SmartPlug Connector delivers safer, hassle-free power with enhanced conductivity, secure locking, and weatherproof protection. \u00a0Relieves stress on the coach structure to protect your RV \u00a0Cord rests close to the coach side, reducing run over risk\u00a0 \u00a0 \u00a0and\u00a0 trip hazards \u00a0Easier to store and coil when you are breaking camp Where to buy Inlet The SmartPlug Inlet combines effortless installation, secure locking, superior conductivity, and weatherproof protection for reliable, worry-free power. \u00a0Weatherproof gaskets prevent water intrusion. \u00a0Locking clips hold plug firmly in place. \u00a0Smart push-in shape guarantees correct alignment. Where to buy Dual Configuration Cordset w\/ Connector Shore Power End The SmartPlug Dual Configuration Cordset features secure multi-point locking and weatherproof seals for dependable shore power connections. \u00a0Multi-point clips secure plug firmly in inlet. \u00a0Locking system prevents stress from cord movement. \u00a0Weatherproof protection ensures reliable connections. Where to buy Dual Configuration Cordset w\/ Shore Power Twist-Type Connector The SmartPlug Dual Configuration Cordset with Shore Power Twist-Type Connector ensures secure locking and weatherproof protection for reliable power connections. \u00a0Multi-point clips secure plug firmly in inlet. \u00a0Locks prevent stress from cord movement. \u00a0Reliable weatherproof protection for the plug. Where to buy Harmonized Cord w\/ Boat Side Connector w\/ Blunt End The SmartPlug Harmonized Cord with Boat Side Connector and Blunt End delivers secure multi-point locking, weatherproof protection, and complete 16\u202fA, 240\u202fV shore power connectivity. \u00a0Multi-point clips secure plug in inlet. \u00a0Locks prevent stress from cord movement. \u00a0Weatherproof seals protect electrical connection. Where to buy Cordset Storage Bag Easy one-handed engagement and dis-engagement of your shore power connection \u00a0Clear see-through window for easy visibility. \u00a0Two carry straps for easy handling. \u00a0Heavy-duty zipper protects cord from environment. Where to buy<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":14240,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-10379","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages\/10379","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/comments?post=10379"}],"version-history":[{"count":56,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages\/10379\/revisions"}],"predecessor-version":[{"id":14527,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages\/10379\/revisions\/14527"}],"up":[{"embeddable":true,"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/pages\/14240"}],"wp:attachment":[{"href":"https:\/\/dev.smartplug.com\/staging\/wp-json\/wp\/v2\/media?parent=10379"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 6a7611d2190636a6b8736f05. Config Timestamp: 2026-08-07 17:11:45 UTC, Cached Timestamp: 2026-08-09 17:55:13 UTC -->