From 04e9a8d316562915a6221dc0edd70e30014abf46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CShaun?= Date: Sat, 6 Jan 2024 19:53:06 -0500 Subject: [PATCH] increment version number --- README.md | 2 +- dist/icons.css | 2 +- dist/zen.css | 70 +++++++++---------- dist/zencss.js | 42 +++++------ dist/zencss.js.map | 2 +- dist/zencss.min.js.map | 2 +- docs/js/copy.js | 2 +- docs/js/updateseo.js | 2 +- docs/release-notes/release-info.html | 2 +- js/modules/accordian.js | 2 +- js/modules/background-image.js | 2 +- js/modules/carousel.js | 2 +- js/modules/cookie-consent.js | 2 +- js/modules/custom-elements.js | 2 +- js/modules/dark-mode.js | 2 +- js/modules/dropdown.js | 2 +- js/modules/exit-intent.js | 2 +- js/modules/image-gallery.js | 4 +- js/modules/lazy-load.js | 2 +- js/modules/link-scroll.js | 2 +- js/modules/misc.js | 2 +- js/modules/mobile-nav.js | 2 +- js/modules/modal.js | 2 +- js/modules/multistep-wizard.js | 2 +- js/modules/poll.js | 2 +- js/modules/star-component.js | 2 +- js/modules/tabs.js | 2 +- js/modules/test-mode.js | 2 +- js/modules/wizard.js | 2 +- package-lock.json | 4 +- scss/_user-settings.scss | 2 +- scss/core/_color-contrast-checker.scss | 2 +- scss/core/_config.scss | 2 +- scss/core/_flex.scss | 2 +- scss/core/_footer.scss | 2 +- scss/core/_formatting.scss | 2 +- scss/core/_framework.scss | 2 +- scss/core/_header.scss | 2 +- scss/core/_media-query.scss | 2 +- scss/core/_mixins.scss | 2 +- scss/core/_scaffold.scss | 2 +- scss/core/_wip.scss | 2 +- scss/design/_bg-color.scss | 2 +- scss/design/_border-color.scss | 2 +- scss/design/_buttons.scss | 2 +- scss/design/_text-color.scss | 2 +- scss/design/_text.scss | 2 +- scss/design/_themes.scss | 2 +- scss/general/_components.scss | 2 +- scss/general/_form.scss | 2 +- scss/general/_margin-padding.scss | 2 +- scss/general/_test.scss | 2 +- scss/optional/_accessability.scss | 2 +- scss/optional/_alert.scss | 2 +- scss/optional/_animation.scss | 2 +- scss/optional/_decoration.scss | 2 +- scss/optional/_image-gallery.scss | 2 +- scss/optional/_menus.scss | 2 +- scss/optional/_multistep-wizard.scss | 2 +- scss/optional/_slider.scss | 2 +- scss/optional/_stacking.scss | 2 +- scss/optional/_table.scss | 2 +- scss/optional/marketing/_contact-form.scss | 2 +- scss/optional/marketing/_exit-intent.scss | 2 +- .../optional/marketing/_marketing-promos.scss | 2 +- scss/zen.scss | 2 +- 66 files changed, 122 insertions(+), 122 deletions(-) diff --git a/README.md b/README.md index 1dfaf8fa..cbf1020f 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # zencss -An open-source, website authoring and design toolkit that helps you build, style, and debug websites. Current Release is v2.0.2-beta +An open-source, website authoring and design toolkit that helps you build, style, and debug websites. Current Release is v2.1.0-beta ### Pre-Launch Installation diff --git a/dist/icons.css b/dist/icons.css index e2703482..bf13addf 100644 --- a/dist/icons.css +++ b/dist/icons.css @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/dist/zen.css b/dist/zen.css index aa1efa64..59795763 100644 --- a/dist/zen.css +++ b/dist/zen.css @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -17,12 +17,12 @@ overflow-x: hidden; scroll-behavior: smooth; /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -36,22 +36,22 @@ Change colors, and this script will update the color value with a new compliant match for the font color. */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2024-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -67,54 +67,54 @@ /* Styles for tab content */ /* Hide tab content by default */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Mobile & Tablet Styles */ /* Styling for navigation and links */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Shrink and move label on input focus or if there is content in the input field */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Variables */ /* Mixin for hover styles */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Width and height */ /* Generate classes for gaps */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -124,95 +124,95 @@ /* Horizontal */ /* Contextual Classes */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Generate border color classes */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Mobile Styles */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Color for the fill effect on click */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Additional styling for better visualization */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Image Gallery Styles */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* RTL Enhancements */ /* Logical Properties for automatic RTL adaptation */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* Apply the mixin for each color */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -225,7 +225,7 @@ /* Flex Grow and Shrink Classes */ /* Order Classes */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -234,7 +234,7 @@ /* X-Large devices (large desktops, 1200px and up) */ /* XX-Large devices (larger desktops, 1400px and up) */ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/dist/zencss.js b/dist/zencss.js index 9f1bf353..16d6bbef 100644 --- a/dist/zencss.js +++ b/dist/zencss.js @@ -6,7 +6,7 @@ var __webpack_exports__ = {}; !*** ./modules/custom-elements.js ***! \************************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -50,7 +50,7 @@ customElements.define("z-col", ZCol); !*** ./modules/carousel.js ***! \*****************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -157,7 +157,7 @@ document.addEventListener("DOMContentLoaded", () => { !*** ./modules/dropdown.js ***! \*****************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -207,7 +207,7 @@ window.onclick = function (event) { !*** ./modules/image-gallery.js ***! \**********************************/ // /* -// * zenCSS v2.0.2-beta (https://zencss.com/) +// * zenCSS v2.1.0-beta (https://zencss.com/) // * Copyright 2022-2024 Shaun Mackey // * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) // */ @@ -215,7 +215,7 @@ window.onclick = function (event) { //12/29 removing lazy load /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -591,7 +591,7 @@ document.addEventListener("DOMContentLoaded", function () { !*** ./modules/accordian.js ***! \******************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -646,7 +646,7 @@ document.addEventListener("DOMContentLoaded", function () { !*** ./modules/misc.js ***! \*************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1026,7 +1026,7 @@ document.addEventListener("DOMContentLoaded", () => { !*** ./modules/dark-mode.js ***! \******************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1068,7 +1068,7 @@ document.addEventListener("DOMContentLoaded", () => { !*** ./modules/lazy-load.js ***! \******************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1152,7 +1152,7 @@ document.addEventListener("DOMContentLoaded", function () { !*** ./modules/background-image.js ***! \*************************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1181,7 +1181,7 @@ window.addEventListener("DOMContentLoaded", function () { !*** ./modules/mobile-nav.js ***! \*******************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1237,7 +1237,7 @@ document.addEventListener("DOMContentLoaded", (event) => { !*** ./modules/modal.js ***! \**************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1399,7 +1399,7 @@ customElements.define("z-modal", ZModal); !*** ./modules/star-component.js ***! \***********************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1475,7 +1475,7 @@ customElements.define("star-component", StarComponent); !*** ./modules/exit-intent.js ***! \********************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1550,7 +1550,7 @@ setTimeout(function () { !*** ./modules/wizard.js ***! \***************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1613,7 +1613,7 @@ document.addEventListener("DOMContentLoaded", (event) => { !*** ./modules/multistep-wizard.js ***! \*************************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1685,7 +1685,7 @@ document.addEventListener("DOMContentLoaded", function () { !*** ./modules/tabs.js ***! \*************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1723,7 +1723,7 @@ document.addEventListener("DOMContentLoaded", function () { !*** ./modules/poll.js ***! \*************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1802,7 +1802,7 @@ document.addEventListener("DOMContentLoaded", function () { !*** ./modules/link-scroll.js ***! \********************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1838,7 +1838,7 @@ document.addEventListener("DOMContentLoaded", () => { !*** ./modules/cookie-consent.js ***! \***********************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ @@ -1874,7 +1874,7 @@ document.addEventListener("DOMContentLoaded", (event) => { !*** ./modules/test-mode.js ***! \******************************/ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/dist/zencss.js.map b/dist/zencss.js.map index 9e884ed7..e91288bb 100644 --- a/dist/zencss.js.map +++ b/dist/zencss.js.map @@ -1 +1 @@ -{"version":3,"file":"zencss.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,mBAAmB;;AAE5E;AACA;AACA;AACA,SAAS;;AAET;AACA,6DAA6D,mBAAmB;AAChF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iEAAiE,mBAAmB;AACpF;AACA;AACA,iBAAiB;AACjB,cAAc;AACd;AACA;AACA,iEAAiE,mBAAmB;AACpF;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;AClGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,wFAAwF;AACxF,4BAA4B,iBAAiB;AAC7C;AACA,sEAAsE,aAAa,eAAe,EAAE,IAAI,EAAE;AAC1G;AACA,yFAAyF;AACzF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D,kDAAkD,cAAc;;AAEhE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,YAAY;;AAEZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA,qEAAqE;AACrE,+BAA+B,iBAAiB;AAChD;AACA,yEAAyE,aAAa,eAAe,EAAE,IAAI,EAAE;AAC7G;AACA;AACA,qEAAqE;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE,qDAAqD,cAAc;;AAEnE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,IAAI;;;;;;;;;ACvXJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;AAChE,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D;AAC5D;AACA,SAAS;AACT,KAAK;AACL,CAAC;;;;;;;;;AC9CD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,UAAU;;AAEV;AACA;AACA,UAAU;AACV;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,YAAY;AACZ;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,cAAc;AAC3D,2CAA2C,kBAAkB,MAAM,kBAAkB,MAAM,sBAAsB;AACjH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,oBAAoB;AAC5E,sDAAsD,kBAAkB,MAAM,kBAAkB,MAAM,sBAAsB;AAC5H;AACA;;AAEA;AACA,QAAQ;AACR,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA,2CAA2C;AAC3C,oCAAoC;AACpC,qCAAqC;AACrC,4DAA4D;;AAE5D;AACA;;AAEA;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD,cAAc;;AAEhE;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACnXA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;ACjCD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;AACT,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;;AAEA;AACA;AACA;AACA,+CAA+C;AAC/C,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB,YAAY;;AAEZ;AACA;AACA,YAAY;AACZ;AACA,IAAI;;;;;;;;;AC3EJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;ACpBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE;AACjE,YAAY;AACZ;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;AC/CD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACzJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;AClED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C,aAAa;AACb,4CAA4C,WAAW,4BAA4B;;AAEnF;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA,CAAC;;;;;;;;;ACtDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,4CAA4C,0BAA0B;AACtE;AACA,2CAA2C,gCAAgC;AAC3E;AACA;;AAEA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iEAAiE,MAAM;AACvE;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D,UAAU;AACtE;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,CAAC;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;AC7BD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;ACtED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mDAAmD,oBAAoB;AACvE;AACA,aAAa;AACb,SAAS;AACT;AACA,CAAC;;;;;;;;;AC3BD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,kEAAkE;AAClE,+CAA+C;AAC/C,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;AC3BD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,KAAK;AACL","sources":["webpack:///./modules/custom-elements.js","webpack:///./modules/carousel.js","webpack:///./modules/dropdown.js","webpack:///./modules/image-gallery.js","webpack:///./modules/accordian.js","webpack:///./modules/misc.js","webpack:///./modules/dark-mode.js","webpack:///./modules/lazy-load.js","webpack:///./modules/background-image.js","webpack:///./modules/mobile-nav.js","webpack:///./modules/modal.js","webpack:///./modules/star-component.js","webpack:///./modules/exit-intent.js","webpack:///./modules/wizard.js","webpack:///./modules/multistep-wizard.js","webpack:///./modules/tabs.js","webpack:///./modules/poll.js","webpack:///./modules/link-scroll.js","webpack:///./modules/cookie-consent.js","webpack:///./modules/test-mode.js"],"sourcesContent":["/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Define zenCSS elements for use in JS\n// ----------------------------------------\n\n// Define z-container custom element\nclass ZContainer extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-container\", ZContainer);\n\n// Define z-row custom element\nclass ZRow extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-row\", ZRow);\n\n// Define z-col custom element\nclass ZCol extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-col\", ZCol);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const sliders = document.querySelectorAll(\".slider\");\n\n sliders.forEach((slider) => {\n const slidesContainer = slider.querySelector(\".slides-container\");\n const originalSlides = Array.from(slidesContainer.children);\n const totalOriginalSlides = originalSlides.length;\n const nextButton = slider.querySelector(\".next\");\n const prevButton = slider.querySelector(\".prev\");\n const shouldAutoRotate = slider.getAttribute(\"data-auto-rotate\") === \"true\";\n\n // Clone the first and last slides to create an infinite loop effect\n const firstSlideClone = originalSlides[0].cloneNode(true);\n const lastSlideClone = originalSlides[totalOriginalSlides - 1].cloneNode(true);\n slidesContainer.insertBefore(lastSlideClone, originalSlides[0]);\n slidesContainer.appendChild(firstSlideClone);\n\n let currentIndex = 1; // Start from the first original slide (not the clone)\n let isTransitioning = false;\n let autoRotate;\n\n // Function to start auto-rotating\n function startAutoRotate() {\n if (shouldAutoRotate) {\n autoRotate = setInterval(moveToNext, 4000);\n }\n }\n\n // Function to stop auto-rotating\n function stopAutoRotate() {\n clearInterval(autoRotate);\n }\n\n // Initialize position to the first original slide\n slidesContainer.style.transition = \"none\";\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n\n // Re-enable transitions after initial positioning\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n\n function updateSlidePosition() {\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n }\n\n function moveToNext() {\n if (isTransitioning) return;\n currentIndex++;\n isTransitioning = true;\n updateSlidePosition();\n }\n\n function moveToPrev() {\n if (isTransitioning) return;\n currentIndex--;\n isTransitioning = true;\n updateSlidePosition();\n }\n\n slidesContainer.addEventListener(\"transitionend\", () => {\n if (currentIndex >= totalOriginalSlides + 1) {\n slidesContainer.style.transition = \"none\";\n currentIndex = 1;\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n } else if (currentIndex === 0) {\n slidesContainer.style.transition = \"none\";\n currentIndex = totalOriginalSlides;\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n }\n isTransitioning = false;\n });\n\n nextButton.addEventListener(\"click\", moveToNext);\n prevButton.addEventListener(\"click\", moveToPrev);\n\n // Event listeners to stop/start auto-rotating\n slidesContainer.addEventListener(\"mouseenter\", stopAutoRotate);\n slidesContainer.addEventListener(\"mouseleave\", startAutoRotate);\n nextButton.addEventListener(\"mouseenter\", stopAutoRotate);\n nextButton.addEventListener(\"mouseleave\", startAutoRotate);\n prevButton.addEventListener(\"mouseenter\", stopAutoRotate);\n prevButton.addEventListener(\"mouseleave\", startAutoRotate);\n\n // Start auto-rotating for this slider\n startAutoRotate();\n });\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n// Dropdown\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var dropdownLinks = document.querySelectorAll(\".dropdown .dropdown-link\");\n\n dropdownLinks.forEach(function (link) {\n link.addEventListener(\"click\", function (event) {\n event.preventDefault();\n\n // Toggle the dropdown content visibility\n var dropdownContent = link.nextElementSibling;\n if (dropdownContent.style.display === \"block\") {\n dropdownContent.style.display = \"none\";\n } else {\n // Close all open dropdowns before opening the new one\n closeAllDropdowns();\n dropdownContent.style.display = \"block\";\n }\n });\n });\n});\n\nfunction closeAllDropdowns() {\n var dropdowns = document.querySelectorAll(\".dropdown .dropdown-content\");\n dropdowns.forEach(function (dropdown) {\n dropdown.style.display = \"none\";\n });\n}\n\n// Close all dropdowns when clicking outside\nwindow.onclick = function (event) {\n if (!event.target.matches(\".dropdown-link\")) {\n closeAllDropdowns();\n }\n};\n","// /*\n// * zenCSS v2.0.2-beta (https://zencss.com/)\n// * Copyright 2022-2024 Shaun Mackey\n// * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n// */\n\n//12/29 removing lazy load\n\n/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\nfunction preloadImage(src) {\n const img = new Image();\n img.src = src;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const gallery = document.querySelector(\".image-gallery\");\n const modal = document.querySelector(\"z-modal\");\n const paginationNav = document.querySelector(\".pagination-nav\");\n\n if (gallery && modal && paginationNav) {\n let currentPage = 1;\n const imagesPerPage = 15;\n let currentModalIndex = 0;\n const imageWrappers = [];\n\n Array.from(gallery.children).forEach((img, index) => {\n const wrapper = document.createElement(\"div\");\n wrapper.style.display = index < imagesPerPage ? \"block\" : \"none\";\n const clonedImg = img.cloneNode(true);\n clonedImg.addEventListener(\"click\", () => {\n currentModalIndex = index;\n openModal(clonedImg.src, clonedImg.getAttribute(\"data-text\"), index);\n });\n wrapper.appendChild(clonedImg);\n imageWrappers.push(wrapper);\n });\n\n const totalPages = Math.ceil(imageWrappers.length / imagesPerPage);\n\n function updateImagesForPage(pageNumber) {\n imageWrappers.forEach((wrapper, index) => {\n const start = (pageNumber - 1) * imagesPerPage;\n const end = start + imagesPerPage;\n wrapper.style.display = index >= start && index < end ? \"block\" : \"none\";\n });\n }\n\n function updatePaginationNav() {\n paginationNav.innerHTML = '«';\n for (let i = 1; i <= totalPages; i++) {\n const classCurrent = i === currentPage ? \"current\" : \"\";\n paginationNav.innerHTML += `${i}`;\n }\n paginationNav.innerHTML += '»';\n }\n\n function openModal(src, text, index) {\n currentModalIndex = index;\n const modalBody = modal.shadowRoot.querySelector(\".modal-body\");\n const modalWrapper = modal.shadowRoot.querySelector(\".modal-wrapper\");\n const modalHeader = modal.shadowRoot.querySelector(\".modal-header\");\n\n if (modalBody && modalWrapper && modalHeader) {\n const currentWidth = modalWrapper.clientWidth;\n const currentHeight = modalWrapper.clientHeight;\n modalWrapper.style.minWidth = `${currentWidth}px`;\n modalWrapper.style.minHeight = `${currentHeight}px`;\n\n modalBody.innerHTML = \"\";\n const imageContainer = document.createElement(\"div\");\n imageContainer.style.display = \"flex\";\n imageContainer.style.position = \"relative\";\n imageContainer.style.justifyContent = \"center\";\n\n const prevArrow = document.createElement(\"div\");\n prevArrow.className = \"prev arrow theme-dark\";\n prevArrow.innerHTML = \"❮\";\n prevArrow.style.cursor = \"pointer\";\n prevArrow.style.position = \"absolute\";\n prevArrow.style.top = \"50%\";\n prevArrow.style.left = \"7px\";\n prevArrow.style.padding = \"10px\";\n prevArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n prevArrow.style.transform = \"translateY(-50%)\";\n prevArrow.onclick = function () {\n currentModalIndex = currentModalIndex > 0 ? currentModalIndex - 1 : imageWrappers.length - 1;\n const newImg = imageWrappers[currentModalIndex].firstChild;\n openModal(newImg.src, newImg.getAttribute(\"data-text\"), currentModalIndex);\n };\n imageContainer.appendChild(prevArrow);\n\n const modalImage = document.createElement(\"img\");\n modalImage.onload = () => {\n modalWrapper.style.minWidth = \"\";\n modalWrapper.style.minHeight = \"\";\n };\n modalImage.src = src;\n modalImage.style.maxWidth = \"100%\";\n modalImage.style.maxHeight = \"60vh\";\n modalImage.style.objectFit = \"contain\";\n modalImage.style.margin = \"auto\";\n imageContainer.appendChild(modalImage);\n\n const nextArrow = document.createElement(\"div\");\n nextArrow.className = \"next arrow theme-dark\";\n nextArrow.innerHTML = \"❯\";\n nextArrow.style.cursor = \"pointer\";\n nextArrow.style.position = \"absolute\";\n nextArrow.style.padding = \"10px\";\n nextArrow.style.top = \"50%\";\n nextArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n nextArrow.style.right = \"7px\";\n nextArrow.style.transform = \"translateY(-50%)\";\n nextArrow.onclick = function () {\n currentModalIndex = currentModalIndex < imageWrappers.length - 1 ? currentModalIndex + 1 : 0;\n const newImg = imageWrappers[currentModalIndex].firstChild;\n openModal(newImg.src, newImg.getAttribute(\"data-text\"), currentModalIndex);\n };\n imageContainer.appendChild(nextArrow);\n\n modalBody.appendChild(imageContainer);\n\n const modalText = document.createElement(\"p\");\n modalText.textContent = text;\n modalText.style.textAlign = \"center\";\n modalBody.appendChild(modalText);\n\n modalBody.style.overflowY = \"auto\";\n modalBody.style.maxHeight = \"80vh\";\n modalHeader.style.display = \"none\";\n\n modalWrapper.style.maxWidth = window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n\n const nextIndex = (index + 1) % imageWrappers.length;\n const prevIndex = (index - 1 + imageWrappers.length) % imageWrappers.length;\n preloadImage(imageWrappers[nextIndex].firstChild.src);\n preloadImage(imageWrappers[prevIndex].firstChild.src);\n\n modal.open();\n }\n }\n\n paginationNav.addEventListener(\"click\", function (event) {\n event.preventDefault();\n const target = event.target;\n if (target.tagName === \"A\" && target.dataset.page) {\n let newPage = currentPage;\n if (target.dataset.page === \"prev\") {\n newPage = currentPage > 1 ? currentPage - 1 : totalPages;\n } else if (target.dataset.page === \"next\") {\n newPage = currentPage < totalPages ? currentPage + 1 : 1;\n } else {\n newPage = parseInt(target.dataset.page);\n }\n\n if (newPage !== currentPage) {\n currentPage = newPage;\n updateImagesForPage(currentPage);\n updatePaginationNav();\n }\n }\n });\n\n window.addEventListener(\"resize\", function () {\n const modalWrapper = modal.shadowRoot.querySelector(\".modal-wrapper\");\n if (modalWrapper) {\n modalWrapper.style.maxWidth = window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n }\n });\n\n gallery.innerHTML = \"\";\n imageWrappers.forEach((wrapper) => gallery.appendChild(wrapper));\n updateImagesForPage(currentPage);\n updatePaginationNav();\n }\n});\n\n// function preloadImage(src) {\n// const img = new Image();\n// img.src = src;\n// }\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const gallery = document.querySelector(\".image-gallery\");\n// const modal = document.querySelector(\"z-modal\");\n// const paginationNav = document.querySelector(\".pagination-nav\");\n\n// if (gallery && modal && paginationNav) {\n// let currentPage = 1;\n// const imagesPerPage = 15;\n// let currentModalIndex = 0;\n// const imageWrappers = [];\n\n// Array.from(gallery.children).forEach((img, index) => {\n// const wrapper = document.createElement(\"div\");\n// wrapper.classList.add(\"lazy-load\"); // using the lazy-load class\n// wrapper.style.display = index < imagesPerPage ? \"block\" : \"none\";\n// const clonedImg = img.cloneNode(true);\n// clonedImg.addEventListener(\"click\", () => {\n// currentModalIndex = index;\n// openModal(\n// clonedImg.src,\n// clonedImg.getAttribute(\"data-text\"),\n// index,\n// );\n// });\n// wrapper.appendChild(clonedImg);\n// imageWrappers.push(wrapper);\n// });\n\n// const totalPages = Math.ceil(imageWrappers.length / imagesPerPage);\n\n// function updateImagesForPage(pageNumber) {\n// imageWrappers.forEach((wrapper, index) => {\n// const start = (pageNumber - 1) * imagesPerPage;\n// const end = start + imagesPerPage;\n// wrapper.style.display =\n// index >= start && index < end ? \"block\" : \"none\";\n// });\n// }\n\n// function updatePaginationNav() {\n// paginationNav.innerHTML =\n// '«';\n// for (let i = 1; i <= totalPages; i++) {\n// const classCurrent = i === currentPage ? \"current\" : \"\";\n// paginationNav.innerHTML += `${i}`;\n// }\n// paginationNav.innerHTML +=\n// '»';\n// }\n\n// function openModal(src, text, index) {\n// currentModalIndex = index;\n// const modalBody = modal.shadowRoot.querySelector(\".modal-body\");\n// const modalWrapper =\n// modal.shadowRoot.querySelector(\".modal-wrapper\");\n// const modalHeader = modal.shadowRoot.querySelector(\".modal-header\");\n\n// if (modalBody && modalWrapper && modalHeader) {\n// const currentWidth = modalWrapper.clientWidth;\n// const currentHeight = modalWrapper.clientHeight;\n// modalWrapper.style.minWidth = `${currentWidth}px`;\n// modalWrapper.style.minHeight = `${currentHeight}px`;\n\n// modalBody.innerHTML = \"\";\n// const imageContainer = document.createElement(\"div\");\n// imageContainer.style.display = \"flex\";\n// imageContainer.style.position = \"relative\";\n// imageContainer.style.justifyContent = \"center\";\n\n// const prevArrow = document.createElement(\"div\");\n// prevArrow.className = \"prev arrow theme-dark\";\n// prevArrow.innerHTML = \"❮\";\n// prevArrow.style.cursor = \"pointer\";\n// prevArrow.style.position = \"absolute\";\n// prevArrow.style.top = \"50%\";\n// prevArrow.style.left = \"7px\";\n// prevArrow.style.padding = \"10px\";\n// prevArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n// prevArrow.style.transform = \"translateY(-50%)\";\n// prevArrow.onclick = function () {\n// currentModalIndex =\n// currentModalIndex > 0\n// ? currentModalIndex - 1\n// : imageWrappers.length - 1;\n// const newImg = imageWrappers[currentModalIndex].firstChild;\n// openModal(\n// newImg.src,\n// newImg.getAttribute(\"data-text\"),\n// currentModalIndex,\n// );\n// };\n// imageContainer.appendChild(prevArrow);\n\n// const modalImage = document.createElement(\"img\");\n// modalImage.onload = () => {\n// modalWrapper.style.minWidth = \"\";\n// modalWrapper.style.minHeight = \"\";\n// };\n// modalImage.src = src;\n// modalImage.style.maxWidth = \"100%\";\n// modalImage.style.maxHeight = \"60vh\";\n// modalImage.style.objectFit = \"contain\";\n// modalImage.style.margin = \"auto\";\n// imageContainer.appendChild(modalImage);\n\n// const nextArrow = document.createElement(\"div\");\n// nextArrow.className = \"next arrow theme-dark\";\n// nextArrow.innerHTML = \"❯\";\n// nextArrow.style.cursor = \"pointer\";\n// nextArrow.style.position = \"absolute\";\n// nextArrow.style.padding = \"10px\";\n// nextArrow.style.top = \"50%\";\n// nextArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n// nextArrow.style.right = \"7px\";\n// nextArrow.style.transform = \"translateY(-50%)\";\n// nextArrow.onclick = function () {\n// currentModalIndex =\n// currentModalIndex < imageWrappers.length - 1\n// ? currentModalIndex + 1\n// : 0;\n// const newImg = imageWrappers[currentModalIndex].firstChild;\n// openModal(\n// newImg.src,\n// newImg.getAttribute(\"data-text\"),\n// currentModalIndex,\n// );\n// };\n// imageContainer.appendChild(nextArrow);\n\n// modalBody.appendChild(imageContainer);\n\n// const modalText = document.createElement(\"p\");\n// modalText.textContent = text;\n// modalText.style.textAlign = \"center\";\n// modalBody.appendChild(modalText);\n\n// modalBody.style.overflowY = \"auto\";\n// modalBody.style.maxHeight = \"80vh\";\n// modalHeader.style.display = \"none\";\n\n// modalWrapper.style.maxWidth =\n// window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n\n// const nextIndex = (index + 1) % imageWrappers.length;\n// const prevIndex =\n// (index - 1 + imageWrappers.length) % imageWrappers.length;\n// preloadImage(imageWrappers[nextIndex].firstChild.src);\n// preloadImage(imageWrappers[prevIndex].firstChild.src);\n\n// modal.open();\n// }\n// }\n\n// paginationNav.addEventListener(\"click\", function (event) {\n// event.preventDefault();\n// const target = event.target;\n// if (target.tagName === \"A\" && target.dataset.page) {\n// let newPage = currentPage;\n// if (target.dataset.page === \"prev\") {\n// newPage = currentPage > 1 ? currentPage - 1 : totalPages;\n// } else if (target.dataset.page === \"next\") {\n// newPage = currentPage < totalPages ? currentPage + 1 : 1;\n// } else {\n// newPage = parseInt(target.dataset.page);\n// }\n\n// if (newPage !== currentPage) {\n// currentPage = newPage;\n// updateImagesForPage(currentPage);\n// updatePaginationNav();\n// }\n// }\n// });\n\n// window.addEventListener(\"resize\", function () {\n// const modalWrapper =\n// modal.shadowRoot.querySelector(\".modal-wrapper\");\n// if (modalWrapper) {\n// modalWrapper.style.maxWidth =\n// window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n// }\n// });\n\n// gallery.innerHTML = \"\";\n// imageWrappers.forEach((wrapper) => gallery.appendChild(wrapper));\n// updateImagesForPage(currentPage);\n// updatePaginationNav();\n// }\n// });\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var accordionToggles = document.querySelectorAll(\".accordion-toggle\");\n\n accordionToggles.forEach(function (accordionToggle) {\n accordionToggle.addEventListener(\"click\", function () {\n // Determine if the clicked toggle is being expanded\n var isExpanding = this.getAttribute(\"aria-expanded\") === \"false\";\n\n // Remove active class from all toggles and reset icons\n accordionToggles.forEach(function (otherToggle) {\n otherToggle.classList.remove(\"active-toggle\");\n otherToggle.setAttribute(\"aria-expanded\", \"false\");\n\n var otherIcon = otherToggle.querySelector(\".zenicon-keyboard-arrow-right, .zenicon-keyboard-arrow-down\");\n if (otherIcon) {\n otherIcon.classList.remove(\"zenicon-keyboard-arrow-down\");\n otherIcon.classList.add(\"zenicon-keyboard-arrow-right\");\n }\n\n var otherPanel = otherToggle.nextElementSibling;\n otherPanel.style.maxHeight = null;\n otherPanel.setAttribute(\"aria-hidden\", \"true\"); // Hide other panels\n });\n\n // Set the clicked toggle as active if it's expanding\n if (isExpanding) {\n this.classList.add(\"active-toggle\");\n this.setAttribute(\"aria-expanded\", \"true\");\n\n var icon = this.querySelector(\".zenicon-keyboard-arrow-right, .zenicon-keyboard-arrow-down\");\n if (icon) {\n icon.classList.remove(\"zenicon-keyboard-arrow-right\");\n icon.classList.add(\"zenicon-keyboard-arrow-down\");\n }\n\n var panel = this.nextElementSibling;\n panel.style.maxHeight = panel.scrollHeight > 200 ? \"1000px\" : panel.scrollHeight + 10 + \"px\";\n panel.setAttribute(\"aria-hidden\", \"false\"); // Show the current panel\n }\n });\n });\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n// Dynamic year in footer\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const yearSpan = document.getElementById(\"current-year\");\n if (yearSpan) {\n const currentYear = new Date().getFullYear();\n yearSpan.textContent = currentYear;\n }\n});\n\n//-------------------------------------\n// icon toggle\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var iconToggles = document.querySelectorAll(\".icon-toggle\");\n\n iconToggles.forEach(function (toggle) {\n toggle.addEventListener(\"click\", function () {\n var iconOff = this.querySelector(\".icon-off\");\n var iconOn = this.querySelector(\".icon-on\");\n\n // Toggle the 'show' class\n iconOff.classList.toggle(\"show\");\n iconOn.classList.toggle(\"show\");\n });\n });\n});\n\n// New stuff here after modules were created. If we need to revert, include this stuff.\ndocument.querySelectorAll(\".accordion-toggle\").forEach((item) => {\n item.addEventListener(\"click\", (event) => {\n event.preventDefault();\n\n const contentId = item.getAttribute(\"aria-controls\");\n const content = document.getElementById(contentId);\n\n // Close other expanded contents\n document.querySelectorAll(\".expanded-content\").forEach((el) => {\n if (el.id !== contentId) {\n el.classList.remove(\"show\");\n el.style.overflowY = \"hidden\";\n }\n });\n\n // Toggle current content\n content.classList.toggle(\"show\");\n\n setTimeout(() => {\n if (content.scrollHeight > content.clientHeight) {\n content.style.overflowY = \"auto\";\n } else {\n content.style.overflowY = \"hidden\";\n }\n }, 500);\n });\n});\n\n//-------------------------------------\n// Corner Popup\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var cornerPopup = document.querySelector(\".corner-popup\");\n\n if (cornerPopup) {\n var button = cornerPopup.querySelector(\"button\");\n var popup = cornerPopup.querySelector(\"div\");\n\n popup.classList.add(\"card\");\n\n button.addEventListener(\"click\", function () {\n popup.classList.toggle(\"hidden\");\n console.log(\"Button clicked\");\n });\n }\n});\n\n//-------------------------------------\n// Responsive Table\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n // Function to apply data labels to a table\n function applyDataLabelsToTable(table) {\n // Get all the headers from the direct child thead of the table\n const headers = Array.from(table.querySelectorAll(\":scope > thead > tr > th\")).map((th) => th.textContent.trim());\n\n // Iterate over each row in the direct child tbody of the table\n table.querySelectorAll(\":scope > tbody > tr\").forEach((row) => {\n // Get all cells (td) in this row\n row.querySelectorAll(\":scope > td\").forEach((cell, index) => {\n // Assign the corresponding header text to the data-label attribute of the cell\n if (headers[index]) {\n cell.setAttribute(\"data-label\", headers[index]);\n }\n });\n });\n }\n\n // Select all tables with class 'responsive-table' and apply data labels to each\n document.querySelectorAll(\".responsive-table\").forEach(applyDataLabelsToTable);\n});\n\n//-------------------------------------\n// Lazy Load Test - WIP\n//-------------------------------------\n\n// document.addEventListener(\"DOMContentLoaded\", function() {\n// const lazyLoadImages = document.querySelectorAll(\"img.lazy-load\");\n\n// if (lazyLoadImages.length > 0) {\n// const imageObserver = new IntersectionObserver(function(entries, observer) {\n// entries.forEach(function(entry) {\n// if (entry.isIntersecting) {\n// const image = entry.target;\n// image.src = image.dataset.src;\n// image.classList.remove(\"lazy-load\");\n// imageObserver.unobserve(image);\n// }\n// });\n// });\n\n// lazyLoadImages.forEach(function(image) {\n// imageObserver.observe(image);\n// });\n// }\n// });\n\n//-------------------------------------\n// Tabbed Card\n//-------------------------------------\n\n// function showTab(tabNumber) {\n// const tabbedCard = document.querySelector(\".tabbed-card\");\n// if (tabbedCard) {\n// const tabs = tabbedCard.querySelectorAll(\".tab\");\n// const tabContents = tabbedCard.querySelectorAll(\".tab-content\");\n\n// if (tabs.length && tabContents.length) {\n// tabs.forEach((tab, index) => {\n// if (index + 1 === tabNumber) {\n// tab.classList.add(\"active\");\n// if (tabContents[index]) {\n// tabContents[index].classList.add(\"active\");\n// }\n// } else {\n// tab.classList.remove(\"active\");\n// if (tabContents[index]) {\n// tabContents[index].classList.remove(\"active\");\n// }\n// }\n// });\n// }\n// }\n// }\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const tabs = document.querySelectorAll(\".tab\");\n// if (tabs.length) {\n// tabs.forEach((tab) => {\n// tab.addEventListener(\"click\", function () {\n// const tabNumber = parseInt(tab.getAttribute(\"data-tab\"));\n// showTab(tabNumber);\n// });\n// });\n// }\n// });\n\n//-------------------------------------\n// side menus\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Select all the menu items\n const menuItems = document.querySelectorAll(\".nav-menu li\");\n\n // Only proceed if menu items exist\n if (menuItems.length) {\n menuItems.forEach((item) => {\n // Add click event listener to each menu item\n item.addEventListener(\"click\", function () {\n // Remove the 'active' class from all items\n menuItems.forEach((i) => i.classList.remove(\"active\"));\n\n // Add the 'active' class to the clicked item\n this.classList.add(\"active\");\n });\n });\n }\n});\n\n//-------------------------------------\n// unread notifications\n//-------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var button = document.querySelector(\".btn-circle\");\n\n // Check if the button exists\n if (button) {\n // Restore the data-unread attribute if 24 hours have not passed\n var unreadResetTime = localStorage.getItem(\"unreadResetTime\");\n if (unreadResetTime && new Date().getTime() < unreadResetTime) {\n button.removeAttribute(\"data-unread\");\n }\n\n // Add click event listener to the button\n button.addEventListener(\"click\", function () {\n // Remove data-unread attribute and set the reset time in localStorage\n button.removeAttribute(\"data-unread\");\n var resetTime = new Date().getTime() + 24 * 60 * 60 * 1000; // 24 hours from now\n localStorage.setItem(\"unreadResetTime\", resetTime);\n });\n }\n});\n\n//-------------------------------------\n// fade in animation\n//-------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const elementsToAnimate = document.querySelectorAll(\".fade-in\");\n\n if (elementsToAnimate.length > 0) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n entry.target.classList.add(\"visible\");\n }\n });\n },\n {\n threshold: 0.3,\n },\n );\n\n elementsToAnimate.forEach((el) => observer.observe(el));\n }\n});\n\n// //pie charts\n// document.addEventListener('DOMContentLoaded', () => {\n// const chart = document.querySelector('.zen-pie-chart');\n// let accumulatedRotation = 0;\n\n// document.querySelectorAll('.zen-pie-chart .zen-slice').forEach(slice => {\n// const percentage = parseFloat(slice.dataset.percentage);\n// const rotation = 360 * (percentage / 100);\n// const sliceRotation = accumulatedRotation + rotation / 2;\n\n// // Set styles and classes for the slice\n// slice.style.transform = `rotate(${sliceRotation}deg)`;\n// slice.style.clip = `rect(0px, ${chart.clientWidth}px, ${chart.clientWidth}px, ${chart.clientWidth / 2}px)`;\n// slice.style.backgroundColor = getComputedStyle(slice).backgroundColor;\n// slice.style.opacity = '1';\n\n// // For more than 50%, create an overlay slice to simulate the additional percentage\n// if (percentage > 50) {\n// let overlaySlice = document.createElement('div');\n// overlaySlice.classList.add('zen-slice', 'overlay');\n// overlaySlice.style.backgroundColor = slice.style.backgroundColor;\n// overlaySlice.style.position = 'absolute';\n// overlaySlice.style.width = '100%';\n// overlaySlice.style.height = '100%';\n// overlaySlice.style.transform = `rotate(${sliceRotation + 180}deg)`;\n// overlaySlice.style.clip = `rect(0px, ${chart.clientWidth}px, ${chart.clientWidth}px, ${chart.clientWidth / 2}px)`;\n// chart.appendChild(overlaySlice);\n// }\n\n// accumulatedRotation += rotation;\n// });\n// });\n\n//-------------------------------------\n// Pattern Interrupt\n//-------------------------------------\n// document.addEventListener('DOMContentLoaded', function() {\n// var modalShown = false;\n// var modal = document.querySelector('.pattern-interrupt');\n// var modal2 = document.querySelector('.modal');\n\n// function showModal() {\n// if (!modal) return; // Exit if no modal found\n\n// // Center the modal in the viewport\n// modal.style.display = 'block';\n// modal2.style.display = 'block';\n// modal.style.position = 'fixed'; // Fixed position\n// modal.style.top = '50%'; // Center vertically\n// modal.style.left = '50%'; // Center horizontally\n// modal.style.transform = 'translate(-50%, -50%)'; // Adjust for modal's dimensions\n\n// modalShown = true;\n// }\n\n// function checkScroll() {\n// if (modalShown) return; // Skip if the modal is already shown\n\n// var scrollPosition = window.pageYOffset || document.documentElement.scrollTop;\n// var totalHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;\n// var scrolledPercentage = (scrollPosition / totalHeight) * 100;\n\n// if (scrolledPercentage > 10) {\n// showModal();\n// }\n// }\n\n// // Attach the scroll event listener only if the modal exists\n// if (modal) {\n// window.addEventListener('scroll', checkScroll);\n// }\n// });\n\n//-------------------------------------\n// Dynamic Navigation\n//-------------------------------------\n// document.addEventListener('DOMContentLoaded', function() {\n// const header = document.querySelector('.header-sticky.slide-down');\n// console.log(\"Script running\");\n// if (header) {\n// fetch('../docs/navigation.html') // Assuming navigation.html is in the /docs folder\n// .then(response => response.text())\n// .then(data => {\n// header.innerHTML = data;\n// })\n// .catch(error => console.error('Error loading navigation:', error));\n// }\n// });\n\n// //-------------------------------------\n// // Video Player\n// //-------------------------------------\n\n// class VideoPlayer extends HTMLElement {\n// constructor() {\n// super();\n// const shadowRoot = this.attachShadow({ mode: 'open' });\n\n// const style = document.createElement('style');\n// style.textContent = `\n\n// `;\n\n// const container = document.createElement('div');\n// container.className = 'video-container';\n\n// const video = document.createElement('video');\n// video.className = 'video-player';\n// video.controls = true;\n\n// const src = this.getAttribute('src');\n// if (src) {\n// const source = document.createElement('source');\n// source.src = src;\n// source.type = 'video/mp4';\n// video.appendChild(source);\n// } else {\n// console.error('Video source not provided for .');\n// }\n\n// container.appendChild(video);\n// shadowRoot.appendChild(style);\n// shadowRoot.appendChild(container);\n// }\n// }\n\n// customElements.define('video-player', VideoPlayer);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n// Toggle Dark Mode Option\n//--------------------------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n function toggleDarkMode() {\n const zenElements = document.querySelectorAll(\".zen\");\n\n zenElements.forEach((element) => {\n element.classList.toggle(\"zen-dark\");\n });\n\n const isDarkModeEnabled = Array.from(zenElements).some((element) => element.classList.contains(\"zen-dark\"));\n localStorage.setItem(\"darkMode\", isDarkModeEnabled);\n }\n\n const toggleButton = document.getElementById(\"toggleDarkMode\");\n if (toggleButton) {\n toggleButton.addEventListener(\"click\", toggleDarkMode);\n }\n\n const storedDarkMode = localStorage.getItem(\"darkMode\");\n if (storedDarkMode === \"true\") {\n const zenElements = document.querySelectorAll(\".zen\");\n zenElements.forEach((element) => {\n element.classList.add(\"zen-dark\");\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var lazyImages = [].slice.call(document.querySelectorAll(\".zen img.lazy-load\"));\n\n if (lazyImages.length === 0) {\n //console.log('No lazy-load images found.');\n return;\n }\n\n if (\"IntersectionObserver\" in window) {\n let lazyImageObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n let lazyImage = entry.target;\n // Set onload before changing the src\n lazyImage.onload = function () {\n this.classList.remove(\"lazy-load\");\n //console.log('Lazy-load class removed:', this);\n };\n lazyImage.src = lazyImage.dataset.src;\n lazyImageObserver.unobserve(lazyImage);\n }\n });\n });\n\n lazyImages.forEach(function (lazyImage) {\n lazyImageObserver.observe(lazyImage);\n });\n } else {\n lazyImages.forEach(function (lazyImage) {\n lazyImage.onload = function () {\n this.classList.remove(\"lazy-load\");\n //console.log('Lazy-load class removed:', this);\n };\n lazyImage.src = lazyImage.dataset.src;\n });\n }\n});\n\n//old depricated - leaving for now to reference to what was done for image gallery\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const images = document.querySelectorAll(\".lazy-load\");\n\n// if (images.length > 0) {\n// const imageObserver = new IntersectionObserver((entries, observer) => {\n// entries.forEach((entry) => {\n// if (entry.isIntersecting) {\n// const image = entry.target;\n// image.setAttribute(\"aria-busy\", \"true\"); // Indicate loading\n// const newSrc = image.getAttribute(\"data-src\");\n\n// // Create a new Image to load in the background\n// const img = new Image();\n// img.onload = function () {\n// image.src = newSrc; // Set src when fully loaded\n// image.removeAttribute(\"aria-busy\"); // Remove loading indication\n// };\n// img.src = newSrc;\n\n// image.classList.remove(\"lazy-load\");\n// observer.unobserve(image);\n// }\n// });\n// });\n\n// images.forEach((image) => {\n// imageObserver.observe(image);\n// });\n// }\n// });\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n//Background image\n//--------------------------------------------------------\n\nwindow.addEventListener(\"DOMContentLoaded\", function () {\n var imageContainers = document.querySelectorAll(\".image-container\");\n imageContainers.forEach(function (container) {\n var img = container.querySelector(\"img\");\n var imgUrl = img.src;\n container.style.backgroundImage = \"url(\" + imgUrl + \")\";\n container.style.backgroundSize = \"cover\";\n container.style.backgroundPosition = \"center center\";\n img.style.display = \"none\";\n });\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// //--------------------------------------------------------\n// // Mobile Nav\n// //--------------------------------------------------------\n// document.addEventListener(\"DOMContentLoaded\", (event) => {\n// const hamburgerButton = document.getElementById(\"hamburger-button\");\n// const closeButton = document.getElementById(\"close-button\");\n// const nav = document.querySelector(\"nav\");\n// const navLinks = document.querySelectorAll(\".nav-link\");\n\n// const toggleMenu = () => {\n// nav.style.left = nav.style.left === \"0px\" ? \"-250px\" : \"0px\";\n// };\n\n// if (hamburgerButton && closeButton && nav) {\n// hamburgerButton.addEventListener(\"click\", toggleMenu);\n// closeButton.addEventListener(\"click\", toggleMenu);\n\n// navLinks.forEach((link) => {\n// // link.addEventListener(\"click\", toggleMenu); // Use toggleMenu to close the menu\n// });\n// }\n// });\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const hamburgerButton = document.getElementById(\"hamburger-button-2\");\n const closeButton = document.getElementById(\"close-button\");\n const nav = document.querySelector(\".top-nav\");\n const navLinks = document.querySelectorAll(\".nav-link\");\n\n const toggleMenu = () => {\n nav.style.left = nav.style.left === \"0px\" ? \"-250px\" : \"0px\";\n };\n\n if (hamburgerButton && closeButton && nav) {\n hamburgerButton.addEventListener(\"click\", toggleMenu);\n closeButton.addEventListener(\"click\", toggleMenu);\n\n navLinks.forEach((link) => {\n link.addEventListener(\"click\", toggleMenu);\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n// Modal\n//--------------------------------------------------------\n\nclass ZModal extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n this.render();\n }\n\n connectedCallback() {\n this.shadowRoot.querySelector(\".close\").addEventListener(\"click\", () => {\n this.close();\n });\n this.shadowRoot.querySelector(\".modal\").addEventListener(\"click\", (event) => {\n if (event.target === event.currentTarget) {\n this.close();\n }\n });\n document.addEventListener(\"click\", (event) => {\n if (event.target.classList.contains(\"modal-close\")) {\n this.close();\n }\n\n document.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n this.close();\n }\n });\n });\n\n const openModalButton = document.querySelector(\".modal-open\");\n if (openModalButton) {\n openModalButton.addEventListener(\"click\", () => {\n this.open();\n });\n }\n }\n\n open() {\n this.shadowRoot.querySelector(\".modal\").style.display = \"flex\";\n }\n\n close() {\n this.shadowRoot.querySelector(\".modal\").style.display = \"none\";\n }\n\n render() {\n this.shadowRoot.innerHTML = `\n \n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n \n \n \n \n
\n
\n
\n `;\n }\n}\n\ncustomElements.define(\"z-modal\", ZModal);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Star component\n// ----------------------------------------\nclass StarComponent extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n this.render();\n }\n\n static get observedAttributes() {\n return [\"stars\", \"half\"];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n this.render();\n }\n\n render() {\n const starCount = parseInt(this.getAttribute(\"stars\")) || 1;\n const half = this.getAttribute(\"half\") === \"true\";\n const fragment = document.createDocumentFragment();\n\n for (let i = 0; i < starCount; i++) {\n const starImg = document.createElement(\"img\");\n starImg.src = \"../../dist/img/icons/alerts/star-solid.svg\";\n starImg.alt = \"\";\n starImg.className = \"icon icon-gold\";\n fragment.appendChild(starImg);\n }\n\n if (half && starCount < 5) {\n const halfStarImg = document.createElement(\"img\");\n halfStarImg.src = \"../../dist/img/icons/alerts/star-half-stroke-regular.svg\";\n halfStarImg.alt = \"\";\n halfStarImg.className = \"icon icon-gold\";\n fragment.appendChild(halfStarImg);\n }\n\n this.shadowRoot.innerHTML = `\n \n `;\n this.shadowRoot.appendChild(fragment);\n }\n}\n\ncustomElements.define(\"star-component\", StarComponent);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Exit Intent\n// ----------------------------------------\n// Get the modal\nvar modal = document.querySelector(\".exit\");\n\n// Function to show the modal if conditions are met\nfunction tryToShowModal() {\n if (modal && shouldShowModal() && !modalIsDisplayed()) {\n modal.style.display = \"block\";\n }\n}\n\n// Function to hide modal and set a flag in local storage\nfunction closeModal() {\n if (modal) {\n modal.style.display = \"none\";\n // Set the flag in local storage with the current timestamp\n localStorage.setItem(\"modalClosed\", new Date().getTime());\n }\n}\n\n// Check if the modal is currently displayed\nfunction modalIsDisplayed() {\n return modal.style.display === \"block\";\n}\n\n// Get the element that closes the modal\nvar span = document.querySelector(\".close\");\n\n// When the user clicks on (x), close the modal\nif (span) {\n span.onclick = closeModal;\n}\n\n// When the user clicks anywhere outside of the modal, close it\nwindow.onclick = function (event) {\n if (event.target == modal) {\n closeModal();\n }\n};\n\n// Check local storage to see if we should show the modal\nfunction shouldShowModal() {\n var modalClosedTime = localStorage.getItem(\"modalClosed\");\n if (modalClosedTime) {\n var now = new Date();\n var daysPassed = (now.getTime() - parseInt(modalClosedTime, 10)) / (1000 * 3600 * 24);\n return daysPassed >= 7;\n }\n return true;\n}\n\n// Trigger the modal after 8 seconds if the user hasn't closed it already\nsetTimeout(function () {\n document.addEventListener(\"mousemove\", function (e) {\n if (e.clientY <= 5) {\n tryToShowModal();\n }\n });\n}, 8000);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Wizard\n// ----------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const steps = document.querySelectorAll(\".wizard-step\");\n const navItems = document.querySelectorAll(\".wizard-nav\");\n\n if (steps.length > 0 && navItems.length > 0) {\n let currentStep = 1;\n const totalSteps = steps.length;\n\n function goToStep(stepNumber) {\n steps.forEach((step) => {\n step.style.display = \"none\"; // Hide all steps\n });\n document.getElementById(`step-${stepNumber}`).style.display = \"block\"; // Show the desired step\n\n // Update the current class on pagination\n navItems.forEach((item) => {\n if (item.dataset.step == stepNumber.toString()) {\n item.classList.add(\"current\");\n } else {\n item.classList.remove(\"current\");\n }\n });\n }\n\n navItems.forEach((item) => {\n item.addEventListener(\"click\", (e) => {\n e.preventDefault();\n let direction = item.dataset.direction;\n if (direction) {\n if (direction === \"next\" && currentStep < totalSteps) {\n currentStep++;\n } else if (direction === \"prev\" && currentStep > 1) {\n currentStep--;\n }\n } else if (item.dataset.step) {\n currentStep = parseInt(item.dataset.step);\n }\n goToStep(currentStep);\n });\n });\n\n // Initialize the wizard to the first step\n goToStep(currentStep);\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const mswizard = document.querySelector(\".mswizard\");\n if (!mswizard) return;\n const progressBar = mswizard.querySelector(\".mswizard-progress\");\n const currentStepSpan = mswizard.querySelector(\"#current-step\");\n const totalStepsSpan = mswizard.querySelector(\"#total-steps\");\n const progressPercentage = mswizard.querySelector(\".progress-percentage\");\n const steps = mswizard.querySelectorAll(\".mswizard-step\");\n const totalSteps = steps.length;\n totalStepsSpan.textContent = totalSteps;\n progressBar.max = 100;\n\n function updatemswizardStep(stepNumber) {\n steps.forEach((step) => (step.style.display = \"none\"));\n mswizard.querySelector(`#step-${stepNumber}`).style.display = \"block\";\n currentStepSpan.textContent = stepNumber;\n const progressValue = ((stepNumber - 1) / (totalSteps - 1)) * 100;\n progressBar.value = progressValue;\n progressPercentage.textContent = `${Math.round(progressValue)}%`;\n const percentagePosition = progressBar.offsetWidth * (progressValue / 100) - progressPercentage.offsetWidth / 2;\n progressPercentage.style.left = `${Math.max(0, percentagePosition)}px`;\n progressPercentage.style.visibility = progressValue >= 5 ? \"visible\" : \"hidden\";\n }\n\n steps.forEach((step, index) => {\n if (index === totalSteps - 1) return; // No buttons on the last step\n\n const buttonContainer = document.createElement(\"div\");\n buttonContainer.className = \"button-container\";\n\n // Always add the Previous button except on the last step\n const prevButton = document.createElement(\"button\");\n prevButton.textContent = \"Previous\";\n prevButton.className = \"prev-btn\";\n prevButton.setAttribute(\"role\", \"button\");\n prevButton.setAttribute(\"aria-label\", `Go back to step ${index}`);\n if (index === 0) {\n prevButton.disabled = true;\n prevButton.classList.add(\"disabled\");\n } else {\n prevButton.addEventListener(\"click\", () => updatemswizardStep(index));\n }\n buttonContainer.appendChild(prevButton);\n\n // Add the Next/Finish button to all steps except the last\n const nextButton = document.createElement(\"button\");\n nextButton.textContent = index === totalSteps - 2 ? \"Finish\" : \"Next\";\n nextButton.className = \"next-btn\";\n nextButton.setAttribute(\"role\", \"button\");\n nextButton.setAttribute(\"aria-label\", `Go to step ${index + 2}`);\n nextButton.addEventListener(\"click\", () => updatemswizardStep(index + 2));\n buttonContainer.appendChild(nextButton);\n\n step.appendChild(buttonContainer);\n });\n\n updatemswizardStep(1);\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Tabs\n// ----------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const tabs = document.querySelectorAll(\".tab-nav .item\");\n\n if (tabs.length > 0) {\n function removeCurrentClass() {\n tabs.forEach((tab) => {\n tab.classList.remove(\"current\");\n });\n }\n\n function setCurrentClass(event) {\n event.preventDefault();\n removeCurrentClass();\n event.target.classList.add(\"current\");\n }\n\n tabs.forEach((tab) => {\n tab.addEventListener(\"click\", setCurrentClass);\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n//Poll\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var currentStep = 1;\n var results = { a: 0, b: 0, c: 0, d: 0 };\n\n function updateStepDisplay(step) {\n var steps = document.querySelectorAll(\".wizard-step\");\n steps.forEach(function (stepDiv) {\n stepDiv.classList.remove(\"active\");\n });\n document.querySelector(\"#step-\" + step).classList.add(\"active\");\n }\n\n function handleOptionSelect(event) {\n var selectedOption = event.target.value;\n results[selectedOption]++;\n if (currentStep < 4) {\n currentStep++;\n updateStepDisplay(currentStep);\n } else {\n // Call the showResult function immediately after the last selection\n showResult();\n }\n }\n\n function showResult() {\n // Remove the active class from all steps\n var steps = document.querySelectorAll(\".wizard-step\");\n steps.forEach(function (step) {\n step.classList.remove(\"active\");\n });\n\n // Calculate the most chosen answer\n var max = Math.max(...Object.values(results));\n var mostChosenResults = Object.keys(results).filter(function (key) {\n return results[key] === max;\n });\n\n // Take the first result if there's a tie\n var mostChosen = mostChosenResults[0];\n var resultElement = document.querySelector('#result-types [data-result=\"' + mostChosen + '\"]');\n var resultContent = resultElement ? resultElement.innerHTML : mostChosen;\n\n // Update the result div and make the result visible\n var resultDiv = document.getElementById(\"result-text\");\n if (resultDiv) {\n resultDiv.innerHTML = resultContent;\n }\n var resultContainer = document.getElementById(\"result\");\n if (resultContainer) {\n resultContainer.classList.add(\"active\"); // Ensure this class makes the element visible\n }\n }\n\n // Attaching change event listeners to radio buttons\n var wizard = document.querySelector(\".wizard\");\n if (wizard) {\n var radioButtons = wizard.querySelectorAll('input[type=\"radio\"]');\n radioButtons.forEach(function (radioButton) {\n radioButton.addEventListener(\"change\", handleOptionSelect);\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const anchors = document.querySelectorAll('a[href^=\"#\"]');\n\n if (anchors.length > 0) {\n anchors.forEach((anchor) => {\n anchor.addEventListener(\"click\", function (e) {\n const hrefAttribute = this.getAttribute(\"href\");\n\n // Skip processing if href is only '#'\n if (hrefAttribute === \"#\") {\n return;\n }\n\n e.preventDefault();\n const targetElement = document.querySelector(hrefAttribute);\n\n if (targetElement) {\n targetElement.scrollIntoView({ behavior: \"smooth\" });\n }\n });\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const banner = document.querySelector(\".cookie-consent-banner\");\n\n // Check if the banner element exists\n if (banner) {\n const acceptBtn = document.querySelector(\".accept-cookies\");\n banner.style.zIndex = \"1100\";\n\n // Check if cookies are already accepted\n if (!localStorage.getItem(\"cookies-accepted\")) {\n banner.style.display = \"block\"; // Show banner if cookies not accepted\n }\n\n // Event listener for accept button\n if (acceptBtn) {\n acceptBtn.addEventListener(\"click\", () => {\n localStorage.setItem(\"cookies-accepted\", \"true\"); // Set flag in local storage\n banner.style.display = \"none\"; // Hide banner\n });\n }\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n//Toggle test mode\n//--------------------------------------------------------\n\nvar toggleButton = document.getElementById(\"toggleButton\");\n\nif (toggleButton) {\n toggleButton.addEventListener(\"click\", function () {\n const toggleClassOnElements = (selector, className) => {\n const elements = document.querySelectorAll(selector);\n elements.forEach((element) => {\n element.classList.toggle(className);\n });\n };\n\n const selectorsAndClasses = [\n [\"z-container\", \"z-container-outline-on\"],\n [\"z-container-fluid\", \"z-container-fluid-outline-on\"],\n [\"z-row\", \"z-row-outline-on\"],\n [\"z-col\", \"z-col-outline-on\"],\n [\"p\", \"p-outline-on\"],\n [\"h1\", \"h1-outline-on\"],\n [\"h2\", \"h2-outline-on\"],\n [\"h3\", \"h3-outline-on\"],\n [\"h4\", \"h4-outline-on\"],\n [\"h5\", \"h5-outline-on\"],\n [\"h6\", \"h6-outline-on\"],\n [\".center-line\", \"center-line-outline-on\"],\n ];\n\n selectorsAndClasses.forEach(([selector, className]) => {\n toggleClassOnElements(selector, className);\n });\n });\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"zencss.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,yDAAyD,mBAAmB;;AAE5E;AACA;AACA;AACA,SAAS;;AAET;AACA,6DAA6D,mBAAmB;AAChF;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iEAAiE,mBAAmB;AACpF;AACA;AACA,iBAAiB;AACjB,cAAc;AACd;AACA;AACA,iEAAiE,mBAAmB;AACpF;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;AClGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,wFAAwF;AACxF,4BAA4B,iBAAiB;AAC7C;AACA,sEAAsE,aAAa,eAAe,EAAE,IAAI,EAAE;AAC1G;AACA,yFAAyF;AACzF;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D,kDAAkD,cAAc;;AAEhE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,YAAY;;AAEZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;AACA,qEAAqE;AACrE,+BAA+B,iBAAiB;AAChD;AACA,yEAAyE,aAAa,eAAe,EAAE,IAAI,EAAE;AAC7G;AACA;AACA,qEAAqE;AACrE;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE,qDAAqD,cAAc;;AAEnE;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA;AACA,IAAI;;;;;;;;;ACvXJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gEAAgE;AAChE,aAAa;;AAEb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4DAA4D;AAC5D;AACA,SAAS;AACT,KAAK;AACL,CAAC;;;;;;;;;AC9CD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;AACL,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,UAAU;;AAEV;AACA;AACA,UAAU;AACV;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,YAAY;AACZ;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wEAAwE;AACxE;AACA,SAAS;AACT;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,cAAc;AAC3D,2CAA2C,kBAAkB,MAAM,kBAAkB,MAAM,sBAAsB;AACjH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,oBAAoB;AAC5E,sDAAsD,kBAAkB,MAAM,kBAAkB,MAAM,sBAAsB;AAC5H;AACA;;AAEA;AACA,QAAQ;AACR,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;;AAE/B;AACA;AACA;AACA,2CAA2C;AAC3C,oCAAoC;AACpC,qCAAqC;AACrC,4DAA4D;;AAE5D;AACA;;AAEA;AACA,mCAAmC;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,MAAM;;AAEN;AACA;AACA;;AAEA;AACA;AACA;AACA,kDAAkD,cAAc;;AAEhE;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACnXA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;ACjCD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA,SAAS;AACT,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gEAAgE;AAChE;;AAEA;AACA;AACA;AACA,+CAA+C;AAC/C,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB,YAAY;;AAEZ;AACA;AACA,YAAY;AACZ;AACA,IAAI;;;;;;;;;AC3EJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;ACpBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE;AACjE,YAAY;AACZ;AACA,IAAI;;AAEJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;AC/CD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACzJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,CAAC;;;;;;;;;AClED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,6CAA6C;AAC7C,aAAa;AACb,4CAA4C,WAAW,4BAA4B;;AAEnF;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA,CAAC;;;;;;;;;ACtDD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,WAAW;AACnD;AACA;AACA;AACA,4CAA4C,0BAA0B;AACtE;AACA,2CAA2C,gCAAgC;AAC3E;AACA;;AAEA;AACA,8CAA8C;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iEAAiE,MAAM;AACvE;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4DAA4D,UAAU;AACtE;AACA;;AAEA;AACA,KAAK;;AAEL;AACA,CAAC;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;AC7BD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,CAAC;;;;;;;;;ACtED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mDAAmD,oBAAoB;AACvE;AACA,aAAa;AACb,SAAS;AACT;AACA,CAAC;;;;;;;;;AC3BD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,kEAAkE;AAClE,+CAA+C;AAC/C,aAAa;AACb;AACA;AACA,CAAC;;;;;;;;;AC3BD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT,KAAK;AACL","sources":["webpack:///./modules/custom-elements.js","webpack:///./modules/carousel.js","webpack:///./modules/dropdown.js","webpack:///./modules/image-gallery.js","webpack:///./modules/accordian.js","webpack:///./modules/misc.js","webpack:///./modules/dark-mode.js","webpack:///./modules/lazy-load.js","webpack:///./modules/background-image.js","webpack:///./modules/mobile-nav.js","webpack:///./modules/modal.js","webpack:///./modules/star-component.js","webpack:///./modules/exit-intent.js","webpack:///./modules/wizard.js","webpack:///./modules/multistep-wizard.js","webpack:///./modules/tabs.js","webpack:///./modules/poll.js","webpack:///./modules/link-scroll.js","webpack:///./modules/cookie-consent.js","webpack:///./modules/test-mode.js"],"sourcesContent":["/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Define zenCSS elements for use in JS\n// ----------------------------------------\n\n// Define z-container custom element\nclass ZContainer extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-container\", ZContainer);\n\n// Define z-row custom element\nclass ZRow extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-row\", ZRow);\n\n// Define z-col custom element\nclass ZCol extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-col\", ZCol);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const sliders = document.querySelectorAll(\".slider\");\n\n sliders.forEach((slider) => {\n const slidesContainer = slider.querySelector(\".slides-container\");\n const originalSlides = Array.from(slidesContainer.children);\n const totalOriginalSlides = originalSlides.length;\n const nextButton = slider.querySelector(\".next\");\n const prevButton = slider.querySelector(\".prev\");\n const shouldAutoRotate = slider.getAttribute(\"data-auto-rotate\") === \"true\";\n\n // Clone the first and last slides to create an infinite loop effect\n const firstSlideClone = originalSlides[0].cloneNode(true);\n const lastSlideClone = originalSlides[totalOriginalSlides - 1].cloneNode(true);\n slidesContainer.insertBefore(lastSlideClone, originalSlides[0]);\n slidesContainer.appendChild(firstSlideClone);\n\n let currentIndex = 1; // Start from the first original slide (not the clone)\n let isTransitioning = false;\n let autoRotate;\n\n // Function to start auto-rotating\n function startAutoRotate() {\n if (shouldAutoRotate) {\n autoRotate = setInterval(moveToNext, 4000);\n }\n }\n\n // Function to stop auto-rotating\n function stopAutoRotate() {\n clearInterval(autoRotate);\n }\n\n // Initialize position to the first original slide\n slidesContainer.style.transition = \"none\";\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n\n // Re-enable transitions after initial positioning\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n\n function updateSlidePosition() {\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n }\n\n function moveToNext() {\n if (isTransitioning) return;\n currentIndex++;\n isTransitioning = true;\n updateSlidePosition();\n }\n\n function moveToPrev() {\n if (isTransitioning) return;\n currentIndex--;\n isTransitioning = true;\n updateSlidePosition();\n }\n\n slidesContainer.addEventListener(\"transitionend\", () => {\n if (currentIndex >= totalOriginalSlides + 1) {\n slidesContainer.style.transition = \"none\";\n currentIndex = 1;\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n } else if (currentIndex === 0) {\n slidesContainer.style.transition = \"none\";\n currentIndex = totalOriginalSlides;\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n }\n isTransitioning = false;\n });\n\n nextButton.addEventListener(\"click\", moveToNext);\n prevButton.addEventListener(\"click\", moveToPrev);\n\n // Event listeners to stop/start auto-rotating\n slidesContainer.addEventListener(\"mouseenter\", stopAutoRotate);\n slidesContainer.addEventListener(\"mouseleave\", startAutoRotate);\n nextButton.addEventListener(\"mouseenter\", stopAutoRotate);\n nextButton.addEventListener(\"mouseleave\", startAutoRotate);\n prevButton.addEventListener(\"mouseenter\", stopAutoRotate);\n prevButton.addEventListener(\"mouseleave\", startAutoRotate);\n\n // Start auto-rotating for this slider\n startAutoRotate();\n });\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n// Dropdown\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var dropdownLinks = document.querySelectorAll(\".dropdown .dropdown-link\");\n\n dropdownLinks.forEach(function (link) {\n link.addEventListener(\"click\", function (event) {\n event.preventDefault();\n\n // Toggle the dropdown content visibility\n var dropdownContent = link.nextElementSibling;\n if (dropdownContent.style.display === \"block\") {\n dropdownContent.style.display = \"none\";\n } else {\n // Close all open dropdowns before opening the new one\n closeAllDropdowns();\n dropdownContent.style.display = \"block\";\n }\n });\n });\n});\n\nfunction closeAllDropdowns() {\n var dropdowns = document.querySelectorAll(\".dropdown .dropdown-content\");\n dropdowns.forEach(function (dropdown) {\n dropdown.style.display = \"none\";\n });\n}\n\n// Close all dropdowns when clicking outside\nwindow.onclick = function (event) {\n if (!event.target.matches(\".dropdown-link\")) {\n closeAllDropdowns();\n }\n};\n","// /*\n// * zenCSS v2.1.0-beta (https://zencss.com/)\n// * Copyright 2022-2024 Shaun Mackey\n// * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n// */\n\n//12/29 removing lazy load\n\n/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\nfunction preloadImage(src) {\n const img = new Image();\n img.src = src;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const gallery = document.querySelector(\".image-gallery\");\n const modal = document.querySelector(\"z-modal\");\n const paginationNav = document.querySelector(\".pagination-nav\");\n\n if (gallery && modal && paginationNav) {\n let currentPage = 1;\n const imagesPerPage = 15;\n let currentModalIndex = 0;\n const imageWrappers = [];\n\n Array.from(gallery.children).forEach((img, index) => {\n const wrapper = document.createElement(\"div\");\n wrapper.style.display = index < imagesPerPage ? \"block\" : \"none\";\n const clonedImg = img.cloneNode(true);\n clonedImg.addEventListener(\"click\", () => {\n currentModalIndex = index;\n openModal(clonedImg.src, clonedImg.getAttribute(\"data-text\"), index);\n });\n wrapper.appendChild(clonedImg);\n imageWrappers.push(wrapper);\n });\n\n const totalPages = Math.ceil(imageWrappers.length / imagesPerPage);\n\n function updateImagesForPage(pageNumber) {\n imageWrappers.forEach((wrapper, index) => {\n const start = (pageNumber - 1) * imagesPerPage;\n const end = start + imagesPerPage;\n wrapper.style.display = index >= start && index < end ? \"block\" : \"none\";\n });\n }\n\n function updatePaginationNav() {\n paginationNav.innerHTML = '«';\n for (let i = 1; i <= totalPages; i++) {\n const classCurrent = i === currentPage ? \"current\" : \"\";\n paginationNav.innerHTML += `${i}`;\n }\n paginationNav.innerHTML += '»';\n }\n\n function openModal(src, text, index) {\n currentModalIndex = index;\n const modalBody = modal.shadowRoot.querySelector(\".modal-body\");\n const modalWrapper = modal.shadowRoot.querySelector(\".modal-wrapper\");\n const modalHeader = modal.shadowRoot.querySelector(\".modal-header\");\n\n if (modalBody && modalWrapper && modalHeader) {\n const currentWidth = modalWrapper.clientWidth;\n const currentHeight = modalWrapper.clientHeight;\n modalWrapper.style.minWidth = `${currentWidth}px`;\n modalWrapper.style.minHeight = `${currentHeight}px`;\n\n modalBody.innerHTML = \"\";\n const imageContainer = document.createElement(\"div\");\n imageContainer.style.display = \"flex\";\n imageContainer.style.position = \"relative\";\n imageContainer.style.justifyContent = \"center\";\n\n const prevArrow = document.createElement(\"div\");\n prevArrow.className = \"prev arrow theme-dark\";\n prevArrow.innerHTML = \"❮\";\n prevArrow.style.cursor = \"pointer\";\n prevArrow.style.position = \"absolute\";\n prevArrow.style.top = \"50%\";\n prevArrow.style.left = \"7px\";\n prevArrow.style.padding = \"10px\";\n prevArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n prevArrow.style.transform = \"translateY(-50%)\";\n prevArrow.onclick = function () {\n currentModalIndex = currentModalIndex > 0 ? currentModalIndex - 1 : imageWrappers.length - 1;\n const newImg = imageWrappers[currentModalIndex].firstChild;\n openModal(newImg.src, newImg.getAttribute(\"data-text\"), currentModalIndex);\n };\n imageContainer.appendChild(prevArrow);\n\n const modalImage = document.createElement(\"img\");\n modalImage.onload = () => {\n modalWrapper.style.minWidth = \"\";\n modalWrapper.style.minHeight = \"\";\n };\n modalImage.src = src;\n modalImage.style.maxWidth = \"100%\";\n modalImage.style.maxHeight = \"60vh\";\n modalImage.style.objectFit = \"contain\";\n modalImage.style.margin = \"auto\";\n imageContainer.appendChild(modalImage);\n\n const nextArrow = document.createElement(\"div\");\n nextArrow.className = \"next arrow theme-dark\";\n nextArrow.innerHTML = \"❯\";\n nextArrow.style.cursor = \"pointer\";\n nextArrow.style.position = \"absolute\";\n nextArrow.style.padding = \"10px\";\n nextArrow.style.top = \"50%\";\n nextArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n nextArrow.style.right = \"7px\";\n nextArrow.style.transform = \"translateY(-50%)\";\n nextArrow.onclick = function () {\n currentModalIndex = currentModalIndex < imageWrappers.length - 1 ? currentModalIndex + 1 : 0;\n const newImg = imageWrappers[currentModalIndex].firstChild;\n openModal(newImg.src, newImg.getAttribute(\"data-text\"), currentModalIndex);\n };\n imageContainer.appendChild(nextArrow);\n\n modalBody.appendChild(imageContainer);\n\n const modalText = document.createElement(\"p\");\n modalText.textContent = text;\n modalText.style.textAlign = \"center\";\n modalBody.appendChild(modalText);\n\n modalBody.style.overflowY = \"auto\";\n modalBody.style.maxHeight = \"80vh\";\n modalHeader.style.display = \"none\";\n\n modalWrapper.style.maxWidth = window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n\n const nextIndex = (index + 1) % imageWrappers.length;\n const prevIndex = (index - 1 + imageWrappers.length) % imageWrappers.length;\n preloadImage(imageWrappers[nextIndex].firstChild.src);\n preloadImage(imageWrappers[prevIndex].firstChild.src);\n\n modal.open();\n }\n }\n\n paginationNav.addEventListener(\"click\", function (event) {\n event.preventDefault();\n const target = event.target;\n if (target.tagName === \"A\" && target.dataset.page) {\n let newPage = currentPage;\n if (target.dataset.page === \"prev\") {\n newPage = currentPage > 1 ? currentPage - 1 : totalPages;\n } else if (target.dataset.page === \"next\") {\n newPage = currentPage < totalPages ? currentPage + 1 : 1;\n } else {\n newPage = parseInt(target.dataset.page);\n }\n\n if (newPage !== currentPage) {\n currentPage = newPage;\n updateImagesForPage(currentPage);\n updatePaginationNav();\n }\n }\n });\n\n window.addEventListener(\"resize\", function () {\n const modalWrapper = modal.shadowRoot.querySelector(\".modal-wrapper\");\n if (modalWrapper) {\n modalWrapper.style.maxWidth = window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n }\n });\n\n gallery.innerHTML = \"\";\n imageWrappers.forEach((wrapper) => gallery.appendChild(wrapper));\n updateImagesForPage(currentPage);\n updatePaginationNav();\n }\n});\n\n// function preloadImage(src) {\n// const img = new Image();\n// img.src = src;\n// }\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const gallery = document.querySelector(\".image-gallery\");\n// const modal = document.querySelector(\"z-modal\");\n// const paginationNav = document.querySelector(\".pagination-nav\");\n\n// if (gallery && modal && paginationNav) {\n// let currentPage = 1;\n// const imagesPerPage = 15;\n// let currentModalIndex = 0;\n// const imageWrappers = [];\n\n// Array.from(gallery.children).forEach((img, index) => {\n// const wrapper = document.createElement(\"div\");\n// wrapper.classList.add(\"lazy-load\"); // using the lazy-load class\n// wrapper.style.display = index < imagesPerPage ? \"block\" : \"none\";\n// const clonedImg = img.cloneNode(true);\n// clonedImg.addEventListener(\"click\", () => {\n// currentModalIndex = index;\n// openModal(\n// clonedImg.src,\n// clonedImg.getAttribute(\"data-text\"),\n// index,\n// );\n// });\n// wrapper.appendChild(clonedImg);\n// imageWrappers.push(wrapper);\n// });\n\n// const totalPages = Math.ceil(imageWrappers.length / imagesPerPage);\n\n// function updateImagesForPage(pageNumber) {\n// imageWrappers.forEach((wrapper, index) => {\n// const start = (pageNumber - 1) * imagesPerPage;\n// const end = start + imagesPerPage;\n// wrapper.style.display =\n// index >= start && index < end ? \"block\" : \"none\";\n// });\n// }\n\n// function updatePaginationNav() {\n// paginationNav.innerHTML =\n// '«';\n// for (let i = 1; i <= totalPages; i++) {\n// const classCurrent = i === currentPage ? \"current\" : \"\";\n// paginationNav.innerHTML += `${i}`;\n// }\n// paginationNav.innerHTML +=\n// '»';\n// }\n\n// function openModal(src, text, index) {\n// currentModalIndex = index;\n// const modalBody = modal.shadowRoot.querySelector(\".modal-body\");\n// const modalWrapper =\n// modal.shadowRoot.querySelector(\".modal-wrapper\");\n// const modalHeader = modal.shadowRoot.querySelector(\".modal-header\");\n\n// if (modalBody && modalWrapper && modalHeader) {\n// const currentWidth = modalWrapper.clientWidth;\n// const currentHeight = modalWrapper.clientHeight;\n// modalWrapper.style.minWidth = `${currentWidth}px`;\n// modalWrapper.style.minHeight = `${currentHeight}px`;\n\n// modalBody.innerHTML = \"\";\n// const imageContainer = document.createElement(\"div\");\n// imageContainer.style.display = \"flex\";\n// imageContainer.style.position = \"relative\";\n// imageContainer.style.justifyContent = \"center\";\n\n// const prevArrow = document.createElement(\"div\");\n// prevArrow.className = \"prev arrow theme-dark\";\n// prevArrow.innerHTML = \"❮\";\n// prevArrow.style.cursor = \"pointer\";\n// prevArrow.style.position = \"absolute\";\n// prevArrow.style.top = \"50%\";\n// prevArrow.style.left = \"7px\";\n// prevArrow.style.padding = \"10px\";\n// prevArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n// prevArrow.style.transform = \"translateY(-50%)\";\n// prevArrow.onclick = function () {\n// currentModalIndex =\n// currentModalIndex > 0\n// ? currentModalIndex - 1\n// : imageWrappers.length - 1;\n// const newImg = imageWrappers[currentModalIndex].firstChild;\n// openModal(\n// newImg.src,\n// newImg.getAttribute(\"data-text\"),\n// currentModalIndex,\n// );\n// };\n// imageContainer.appendChild(prevArrow);\n\n// const modalImage = document.createElement(\"img\");\n// modalImage.onload = () => {\n// modalWrapper.style.minWidth = \"\";\n// modalWrapper.style.minHeight = \"\";\n// };\n// modalImage.src = src;\n// modalImage.style.maxWidth = \"100%\";\n// modalImage.style.maxHeight = \"60vh\";\n// modalImage.style.objectFit = \"contain\";\n// modalImage.style.margin = \"auto\";\n// imageContainer.appendChild(modalImage);\n\n// const nextArrow = document.createElement(\"div\");\n// nextArrow.className = \"next arrow theme-dark\";\n// nextArrow.innerHTML = \"❯\";\n// nextArrow.style.cursor = \"pointer\";\n// nextArrow.style.position = \"absolute\";\n// nextArrow.style.padding = \"10px\";\n// nextArrow.style.top = \"50%\";\n// nextArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n// nextArrow.style.right = \"7px\";\n// nextArrow.style.transform = \"translateY(-50%)\";\n// nextArrow.onclick = function () {\n// currentModalIndex =\n// currentModalIndex < imageWrappers.length - 1\n// ? currentModalIndex + 1\n// : 0;\n// const newImg = imageWrappers[currentModalIndex].firstChild;\n// openModal(\n// newImg.src,\n// newImg.getAttribute(\"data-text\"),\n// currentModalIndex,\n// );\n// };\n// imageContainer.appendChild(nextArrow);\n\n// modalBody.appendChild(imageContainer);\n\n// const modalText = document.createElement(\"p\");\n// modalText.textContent = text;\n// modalText.style.textAlign = \"center\";\n// modalBody.appendChild(modalText);\n\n// modalBody.style.overflowY = \"auto\";\n// modalBody.style.maxHeight = \"80vh\";\n// modalHeader.style.display = \"none\";\n\n// modalWrapper.style.maxWidth =\n// window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n\n// const nextIndex = (index + 1) % imageWrappers.length;\n// const prevIndex =\n// (index - 1 + imageWrappers.length) % imageWrappers.length;\n// preloadImage(imageWrappers[nextIndex].firstChild.src);\n// preloadImage(imageWrappers[prevIndex].firstChild.src);\n\n// modal.open();\n// }\n// }\n\n// paginationNav.addEventListener(\"click\", function (event) {\n// event.preventDefault();\n// const target = event.target;\n// if (target.tagName === \"A\" && target.dataset.page) {\n// let newPage = currentPage;\n// if (target.dataset.page === \"prev\") {\n// newPage = currentPage > 1 ? currentPage - 1 : totalPages;\n// } else if (target.dataset.page === \"next\") {\n// newPage = currentPage < totalPages ? currentPage + 1 : 1;\n// } else {\n// newPage = parseInt(target.dataset.page);\n// }\n\n// if (newPage !== currentPage) {\n// currentPage = newPage;\n// updateImagesForPage(currentPage);\n// updatePaginationNav();\n// }\n// }\n// });\n\n// window.addEventListener(\"resize\", function () {\n// const modalWrapper =\n// modal.shadowRoot.querySelector(\".modal-wrapper\");\n// if (modalWrapper) {\n// modalWrapper.style.maxWidth =\n// window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n// }\n// });\n\n// gallery.innerHTML = \"\";\n// imageWrappers.forEach((wrapper) => gallery.appendChild(wrapper));\n// updateImagesForPage(currentPage);\n// updatePaginationNav();\n// }\n// });\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var accordionToggles = document.querySelectorAll(\".accordion-toggle\");\n\n accordionToggles.forEach(function (accordionToggle) {\n accordionToggle.addEventListener(\"click\", function () {\n // Determine if the clicked toggle is being expanded\n var isExpanding = this.getAttribute(\"aria-expanded\") === \"false\";\n\n // Remove active class from all toggles and reset icons\n accordionToggles.forEach(function (otherToggle) {\n otherToggle.classList.remove(\"active-toggle\");\n otherToggle.setAttribute(\"aria-expanded\", \"false\");\n\n var otherIcon = otherToggle.querySelector(\".zenicon-keyboard-arrow-right, .zenicon-keyboard-arrow-down\");\n if (otherIcon) {\n otherIcon.classList.remove(\"zenicon-keyboard-arrow-down\");\n otherIcon.classList.add(\"zenicon-keyboard-arrow-right\");\n }\n\n var otherPanel = otherToggle.nextElementSibling;\n otherPanel.style.maxHeight = null;\n otherPanel.setAttribute(\"aria-hidden\", \"true\"); // Hide other panels\n });\n\n // Set the clicked toggle as active if it's expanding\n if (isExpanding) {\n this.classList.add(\"active-toggle\");\n this.setAttribute(\"aria-expanded\", \"true\");\n\n var icon = this.querySelector(\".zenicon-keyboard-arrow-right, .zenicon-keyboard-arrow-down\");\n if (icon) {\n icon.classList.remove(\"zenicon-keyboard-arrow-right\");\n icon.classList.add(\"zenicon-keyboard-arrow-down\");\n }\n\n var panel = this.nextElementSibling;\n panel.style.maxHeight = panel.scrollHeight > 200 ? \"1000px\" : panel.scrollHeight + 10 + \"px\";\n panel.setAttribute(\"aria-hidden\", \"false\"); // Show the current panel\n }\n });\n });\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n// Dynamic year in footer\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const yearSpan = document.getElementById(\"current-year\");\n if (yearSpan) {\n const currentYear = new Date().getFullYear();\n yearSpan.textContent = currentYear;\n }\n});\n\n//-------------------------------------\n// icon toggle\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var iconToggles = document.querySelectorAll(\".icon-toggle\");\n\n iconToggles.forEach(function (toggle) {\n toggle.addEventListener(\"click\", function () {\n var iconOff = this.querySelector(\".icon-off\");\n var iconOn = this.querySelector(\".icon-on\");\n\n // Toggle the 'show' class\n iconOff.classList.toggle(\"show\");\n iconOn.classList.toggle(\"show\");\n });\n });\n});\n\n// New stuff here after modules were created. If we need to revert, include this stuff.\ndocument.querySelectorAll(\".accordion-toggle\").forEach((item) => {\n item.addEventListener(\"click\", (event) => {\n event.preventDefault();\n\n const contentId = item.getAttribute(\"aria-controls\");\n const content = document.getElementById(contentId);\n\n // Close other expanded contents\n document.querySelectorAll(\".expanded-content\").forEach((el) => {\n if (el.id !== contentId) {\n el.classList.remove(\"show\");\n el.style.overflowY = \"hidden\";\n }\n });\n\n // Toggle current content\n content.classList.toggle(\"show\");\n\n setTimeout(() => {\n if (content.scrollHeight > content.clientHeight) {\n content.style.overflowY = \"auto\";\n } else {\n content.style.overflowY = \"hidden\";\n }\n }, 500);\n });\n});\n\n//-------------------------------------\n// Corner Popup\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var cornerPopup = document.querySelector(\".corner-popup\");\n\n if (cornerPopup) {\n var button = cornerPopup.querySelector(\"button\");\n var popup = cornerPopup.querySelector(\"div\");\n\n popup.classList.add(\"card\");\n\n button.addEventListener(\"click\", function () {\n popup.classList.toggle(\"hidden\");\n console.log(\"Button clicked\");\n });\n }\n});\n\n//-------------------------------------\n// Responsive Table\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n // Function to apply data labels to a table\n function applyDataLabelsToTable(table) {\n // Get all the headers from the direct child thead of the table\n const headers = Array.from(table.querySelectorAll(\":scope > thead > tr > th\")).map((th) => th.textContent.trim());\n\n // Iterate over each row in the direct child tbody of the table\n table.querySelectorAll(\":scope > tbody > tr\").forEach((row) => {\n // Get all cells (td) in this row\n row.querySelectorAll(\":scope > td\").forEach((cell, index) => {\n // Assign the corresponding header text to the data-label attribute of the cell\n if (headers[index]) {\n cell.setAttribute(\"data-label\", headers[index]);\n }\n });\n });\n }\n\n // Select all tables with class 'responsive-table' and apply data labels to each\n document.querySelectorAll(\".responsive-table\").forEach(applyDataLabelsToTable);\n});\n\n//-------------------------------------\n// Lazy Load Test - WIP\n//-------------------------------------\n\n// document.addEventListener(\"DOMContentLoaded\", function() {\n// const lazyLoadImages = document.querySelectorAll(\"img.lazy-load\");\n\n// if (lazyLoadImages.length > 0) {\n// const imageObserver = new IntersectionObserver(function(entries, observer) {\n// entries.forEach(function(entry) {\n// if (entry.isIntersecting) {\n// const image = entry.target;\n// image.src = image.dataset.src;\n// image.classList.remove(\"lazy-load\");\n// imageObserver.unobserve(image);\n// }\n// });\n// });\n\n// lazyLoadImages.forEach(function(image) {\n// imageObserver.observe(image);\n// });\n// }\n// });\n\n//-------------------------------------\n// Tabbed Card\n//-------------------------------------\n\n// function showTab(tabNumber) {\n// const tabbedCard = document.querySelector(\".tabbed-card\");\n// if (tabbedCard) {\n// const tabs = tabbedCard.querySelectorAll(\".tab\");\n// const tabContents = tabbedCard.querySelectorAll(\".tab-content\");\n\n// if (tabs.length && tabContents.length) {\n// tabs.forEach((tab, index) => {\n// if (index + 1 === tabNumber) {\n// tab.classList.add(\"active\");\n// if (tabContents[index]) {\n// tabContents[index].classList.add(\"active\");\n// }\n// } else {\n// tab.classList.remove(\"active\");\n// if (tabContents[index]) {\n// tabContents[index].classList.remove(\"active\");\n// }\n// }\n// });\n// }\n// }\n// }\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const tabs = document.querySelectorAll(\".tab\");\n// if (tabs.length) {\n// tabs.forEach((tab) => {\n// tab.addEventListener(\"click\", function () {\n// const tabNumber = parseInt(tab.getAttribute(\"data-tab\"));\n// showTab(tabNumber);\n// });\n// });\n// }\n// });\n\n//-------------------------------------\n// side menus\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Select all the menu items\n const menuItems = document.querySelectorAll(\".nav-menu li\");\n\n // Only proceed if menu items exist\n if (menuItems.length) {\n menuItems.forEach((item) => {\n // Add click event listener to each menu item\n item.addEventListener(\"click\", function () {\n // Remove the 'active' class from all items\n menuItems.forEach((i) => i.classList.remove(\"active\"));\n\n // Add the 'active' class to the clicked item\n this.classList.add(\"active\");\n });\n });\n }\n});\n\n//-------------------------------------\n// unread notifications\n//-------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var button = document.querySelector(\".btn-circle\");\n\n // Check if the button exists\n if (button) {\n // Restore the data-unread attribute if 24 hours have not passed\n var unreadResetTime = localStorage.getItem(\"unreadResetTime\");\n if (unreadResetTime && new Date().getTime() < unreadResetTime) {\n button.removeAttribute(\"data-unread\");\n }\n\n // Add click event listener to the button\n button.addEventListener(\"click\", function () {\n // Remove data-unread attribute and set the reset time in localStorage\n button.removeAttribute(\"data-unread\");\n var resetTime = new Date().getTime() + 24 * 60 * 60 * 1000; // 24 hours from now\n localStorage.setItem(\"unreadResetTime\", resetTime);\n });\n }\n});\n\n//-------------------------------------\n// fade in animation\n//-------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const elementsToAnimate = document.querySelectorAll(\".fade-in\");\n\n if (elementsToAnimate.length > 0) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n entry.target.classList.add(\"visible\");\n }\n });\n },\n {\n threshold: 0.3,\n },\n );\n\n elementsToAnimate.forEach((el) => observer.observe(el));\n }\n});\n\n// //pie charts\n// document.addEventListener('DOMContentLoaded', () => {\n// const chart = document.querySelector('.zen-pie-chart');\n// let accumulatedRotation = 0;\n\n// document.querySelectorAll('.zen-pie-chart .zen-slice').forEach(slice => {\n// const percentage = parseFloat(slice.dataset.percentage);\n// const rotation = 360 * (percentage / 100);\n// const sliceRotation = accumulatedRotation + rotation / 2;\n\n// // Set styles and classes for the slice\n// slice.style.transform = `rotate(${sliceRotation}deg)`;\n// slice.style.clip = `rect(0px, ${chart.clientWidth}px, ${chart.clientWidth}px, ${chart.clientWidth / 2}px)`;\n// slice.style.backgroundColor = getComputedStyle(slice).backgroundColor;\n// slice.style.opacity = '1';\n\n// // For more than 50%, create an overlay slice to simulate the additional percentage\n// if (percentage > 50) {\n// let overlaySlice = document.createElement('div');\n// overlaySlice.classList.add('zen-slice', 'overlay');\n// overlaySlice.style.backgroundColor = slice.style.backgroundColor;\n// overlaySlice.style.position = 'absolute';\n// overlaySlice.style.width = '100%';\n// overlaySlice.style.height = '100%';\n// overlaySlice.style.transform = `rotate(${sliceRotation + 180}deg)`;\n// overlaySlice.style.clip = `rect(0px, ${chart.clientWidth}px, ${chart.clientWidth}px, ${chart.clientWidth / 2}px)`;\n// chart.appendChild(overlaySlice);\n// }\n\n// accumulatedRotation += rotation;\n// });\n// });\n\n//-------------------------------------\n// Pattern Interrupt\n//-------------------------------------\n// document.addEventListener('DOMContentLoaded', function() {\n// var modalShown = false;\n// var modal = document.querySelector('.pattern-interrupt');\n// var modal2 = document.querySelector('.modal');\n\n// function showModal() {\n// if (!modal) return; // Exit if no modal found\n\n// // Center the modal in the viewport\n// modal.style.display = 'block';\n// modal2.style.display = 'block';\n// modal.style.position = 'fixed'; // Fixed position\n// modal.style.top = '50%'; // Center vertically\n// modal.style.left = '50%'; // Center horizontally\n// modal.style.transform = 'translate(-50%, -50%)'; // Adjust for modal's dimensions\n\n// modalShown = true;\n// }\n\n// function checkScroll() {\n// if (modalShown) return; // Skip if the modal is already shown\n\n// var scrollPosition = window.pageYOffset || document.documentElement.scrollTop;\n// var totalHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;\n// var scrolledPercentage = (scrollPosition / totalHeight) * 100;\n\n// if (scrolledPercentage > 10) {\n// showModal();\n// }\n// }\n\n// // Attach the scroll event listener only if the modal exists\n// if (modal) {\n// window.addEventListener('scroll', checkScroll);\n// }\n// });\n\n//-------------------------------------\n// Dynamic Navigation\n//-------------------------------------\n// document.addEventListener('DOMContentLoaded', function() {\n// const header = document.querySelector('.header-sticky.slide-down');\n// console.log(\"Script running\");\n// if (header) {\n// fetch('../docs/navigation.html') // Assuming navigation.html is in the /docs folder\n// .then(response => response.text())\n// .then(data => {\n// header.innerHTML = data;\n// })\n// .catch(error => console.error('Error loading navigation:', error));\n// }\n// });\n\n// //-------------------------------------\n// // Video Player\n// //-------------------------------------\n\n// class VideoPlayer extends HTMLElement {\n// constructor() {\n// super();\n// const shadowRoot = this.attachShadow({ mode: 'open' });\n\n// const style = document.createElement('style');\n// style.textContent = `\n\n// `;\n\n// const container = document.createElement('div');\n// container.className = 'video-container';\n\n// const video = document.createElement('video');\n// video.className = 'video-player';\n// video.controls = true;\n\n// const src = this.getAttribute('src');\n// if (src) {\n// const source = document.createElement('source');\n// source.src = src;\n// source.type = 'video/mp4';\n// video.appendChild(source);\n// } else {\n// console.error('Video source not provided for .');\n// }\n\n// container.appendChild(video);\n// shadowRoot.appendChild(style);\n// shadowRoot.appendChild(container);\n// }\n// }\n\n// customElements.define('video-player', VideoPlayer);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n// Toggle Dark Mode Option\n//--------------------------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n function toggleDarkMode() {\n const zenElements = document.querySelectorAll(\".zen\");\n\n zenElements.forEach((element) => {\n element.classList.toggle(\"zen-dark\");\n });\n\n const isDarkModeEnabled = Array.from(zenElements).some((element) => element.classList.contains(\"zen-dark\"));\n localStorage.setItem(\"darkMode\", isDarkModeEnabled);\n }\n\n const toggleButton = document.getElementById(\"toggleDarkMode\");\n if (toggleButton) {\n toggleButton.addEventListener(\"click\", toggleDarkMode);\n }\n\n const storedDarkMode = localStorage.getItem(\"darkMode\");\n if (storedDarkMode === \"true\") {\n const zenElements = document.querySelectorAll(\".zen\");\n zenElements.forEach((element) => {\n element.classList.add(\"zen-dark\");\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var lazyImages = [].slice.call(document.querySelectorAll(\".zen img.lazy-load\"));\n\n if (lazyImages.length === 0) {\n //console.log('No lazy-load images found.');\n return;\n }\n\n if (\"IntersectionObserver\" in window) {\n let lazyImageObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n let lazyImage = entry.target;\n // Set onload before changing the src\n lazyImage.onload = function () {\n this.classList.remove(\"lazy-load\");\n //console.log('Lazy-load class removed:', this);\n };\n lazyImage.src = lazyImage.dataset.src;\n lazyImageObserver.unobserve(lazyImage);\n }\n });\n });\n\n lazyImages.forEach(function (lazyImage) {\n lazyImageObserver.observe(lazyImage);\n });\n } else {\n lazyImages.forEach(function (lazyImage) {\n lazyImage.onload = function () {\n this.classList.remove(\"lazy-load\");\n //console.log('Lazy-load class removed:', this);\n };\n lazyImage.src = lazyImage.dataset.src;\n });\n }\n});\n\n//old depricated - leaving for now to reference to what was done for image gallery\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const images = document.querySelectorAll(\".lazy-load\");\n\n// if (images.length > 0) {\n// const imageObserver = new IntersectionObserver((entries, observer) => {\n// entries.forEach((entry) => {\n// if (entry.isIntersecting) {\n// const image = entry.target;\n// image.setAttribute(\"aria-busy\", \"true\"); // Indicate loading\n// const newSrc = image.getAttribute(\"data-src\");\n\n// // Create a new Image to load in the background\n// const img = new Image();\n// img.onload = function () {\n// image.src = newSrc; // Set src when fully loaded\n// image.removeAttribute(\"aria-busy\"); // Remove loading indication\n// };\n// img.src = newSrc;\n\n// image.classList.remove(\"lazy-load\");\n// observer.unobserve(image);\n// }\n// });\n// });\n\n// images.forEach((image) => {\n// imageObserver.observe(image);\n// });\n// }\n// });\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n//Background image\n//--------------------------------------------------------\n\nwindow.addEventListener(\"DOMContentLoaded\", function () {\n var imageContainers = document.querySelectorAll(\".image-container\");\n imageContainers.forEach(function (container) {\n var img = container.querySelector(\"img\");\n var imgUrl = img.src;\n container.style.backgroundImage = \"url(\" + imgUrl + \")\";\n container.style.backgroundSize = \"cover\";\n container.style.backgroundPosition = \"center center\";\n img.style.display = \"none\";\n });\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// //--------------------------------------------------------\n// // Mobile Nav\n// //--------------------------------------------------------\n// document.addEventListener(\"DOMContentLoaded\", (event) => {\n// const hamburgerButton = document.getElementById(\"hamburger-button\");\n// const closeButton = document.getElementById(\"close-button\");\n// const nav = document.querySelector(\"nav\");\n// const navLinks = document.querySelectorAll(\".nav-link\");\n\n// const toggleMenu = () => {\n// nav.style.left = nav.style.left === \"0px\" ? \"-250px\" : \"0px\";\n// };\n\n// if (hamburgerButton && closeButton && nav) {\n// hamburgerButton.addEventListener(\"click\", toggleMenu);\n// closeButton.addEventListener(\"click\", toggleMenu);\n\n// navLinks.forEach((link) => {\n// // link.addEventListener(\"click\", toggleMenu); // Use toggleMenu to close the menu\n// });\n// }\n// });\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const hamburgerButton = document.getElementById(\"hamburger-button-2\");\n const closeButton = document.getElementById(\"close-button\");\n const nav = document.querySelector(\".top-nav\");\n const navLinks = document.querySelectorAll(\".nav-link\");\n\n const toggleMenu = () => {\n nav.style.left = nav.style.left === \"0px\" ? \"-250px\" : \"0px\";\n };\n\n if (hamburgerButton && closeButton && nav) {\n hamburgerButton.addEventListener(\"click\", toggleMenu);\n closeButton.addEventListener(\"click\", toggleMenu);\n\n navLinks.forEach((link) => {\n link.addEventListener(\"click\", toggleMenu);\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n// Modal\n//--------------------------------------------------------\n\nclass ZModal extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n this.render();\n }\n\n connectedCallback() {\n this.shadowRoot.querySelector(\".close\").addEventListener(\"click\", () => {\n this.close();\n });\n this.shadowRoot.querySelector(\".modal\").addEventListener(\"click\", (event) => {\n if (event.target === event.currentTarget) {\n this.close();\n }\n });\n document.addEventListener(\"click\", (event) => {\n if (event.target.classList.contains(\"modal-close\")) {\n this.close();\n }\n\n document.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n this.close();\n }\n });\n });\n\n const openModalButton = document.querySelector(\".modal-open\");\n if (openModalButton) {\n openModalButton.addEventListener(\"click\", () => {\n this.open();\n });\n }\n }\n\n open() {\n this.shadowRoot.querySelector(\".modal\").style.display = \"flex\";\n }\n\n close() {\n this.shadowRoot.querySelector(\".modal\").style.display = \"none\";\n }\n\n render() {\n this.shadowRoot.innerHTML = `\n \n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n \n \n \n \n
\n
\n
\n `;\n }\n}\n\ncustomElements.define(\"z-modal\", ZModal);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Star component\n// ----------------------------------------\nclass StarComponent extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n this.render();\n }\n\n static get observedAttributes() {\n return [\"stars\", \"half\"];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n this.render();\n }\n\n render() {\n const starCount = parseInt(this.getAttribute(\"stars\")) || 1;\n const half = this.getAttribute(\"half\") === \"true\";\n const fragment = document.createDocumentFragment();\n\n for (let i = 0; i < starCount; i++) {\n const starImg = document.createElement(\"img\");\n starImg.src = \"../../dist/img/icons/alerts/star-solid.svg\";\n starImg.alt = \"\";\n starImg.className = \"icon icon-gold\";\n fragment.appendChild(starImg);\n }\n\n if (half && starCount < 5) {\n const halfStarImg = document.createElement(\"img\");\n halfStarImg.src = \"../../dist/img/icons/alerts/star-half-stroke-regular.svg\";\n halfStarImg.alt = \"\";\n halfStarImg.className = \"icon icon-gold\";\n fragment.appendChild(halfStarImg);\n }\n\n this.shadowRoot.innerHTML = `\n \n `;\n this.shadowRoot.appendChild(fragment);\n }\n}\n\ncustomElements.define(\"star-component\", StarComponent);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Exit Intent\n// ----------------------------------------\n// Get the modal\nvar modal = document.querySelector(\".exit\");\n\n// Function to show the modal if conditions are met\nfunction tryToShowModal() {\n if (modal && shouldShowModal() && !modalIsDisplayed()) {\n modal.style.display = \"block\";\n }\n}\n\n// Function to hide modal and set a flag in local storage\nfunction closeModal() {\n if (modal) {\n modal.style.display = \"none\";\n // Set the flag in local storage with the current timestamp\n localStorage.setItem(\"modalClosed\", new Date().getTime());\n }\n}\n\n// Check if the modal is currently displayed\nfunction modalIsDisplayed() {\n return modal.style.display === \"block\";\n}\n\n// Get the element that closes the modal\nvar span = document.querySelector(\".close\");\n\n// When the user clicks on (x), close the modal\nif (span) {\n span.onclick = closeModal;\n}\n\n// When the user clicks anywhere outside of the modal, close it\nwindow.onclick = function (event) {\n if (event.target == modal) {\n closeModal();\n }\n};\n\n// Check local storage to see if we should show the modal\nfunction shouldShowModal() {\n var modalClosedTime = localStorage.getItem(\"modalClosed\");\n if (modalClosedTime) {\n var now = new Date();\n var daysPassed = (now.getTime() - parseInt(modalClosedTime, 10)) / (1000 * 3600 * 24);\n return daysPassed >= 7;\n }\n return true;\n}\n\n// Trigger the modal after 8 seconds if the user hasn't closed it already\nsetTimeout(function () {\n document.addEventListener(\"mousemove\", function (e) {\n if (e.clientY <= 5) {\n tryToShowModal();\n }\n });\n}, 8000);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Wizard\n// ----------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const steps = document.querySelectorAll(\".wizard-step\");\n const navItems = document.querySelectorAll(\".wizard-nav\");\n\n if (steps.length > 0 && navItems.length > 0) {\n let currentStep = 1;\n const totalSteps = steps.length;\n\n function goToStep(stepNumber) {\n steps.forEach((step) => {\n step.style.display = \"none\"; // Hide all steps\n });\n document.getElementById(`step-${stepNumber}`).style.display = \"block\"; // Show the desired step\n\n // Update the current class on pagination\n navItems.forEach((item) => {\n if (item.dataset.step == stepNumber.toString()) {\n item.classList.add(\"current\");\n } else {\n item.classList.remove(\"current\");\n }\n });\n }\n\n navItems.forEach((item) => {\n item.addEventListener(\"click\", (e) => {\n e.preventDefault();\n let direction = item.dataset.direction;\n if (direction) {\n if (direction === \"next\" && currentStep < totalSteps) {\n currentStep++;\n } else if (direction === \"prev\" && currentStep > 1) {\n currentStep--;\n }\n } else if (item.dataset.step) {\n currentStep = parseInt(item.dataset.step);\n }\n goToStep(currentStep);\n });\n });\n\n // Initialize the wizard to the first step\n goToStep(currentStep);\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const mswizard = document.querySelector(\".mswizard\");\n if (!mswizard) return;\n const progressBar = mswizard.querySelector(\".mswizard-progress\");\n const currentStepSpan = mswizard.querySelector(\"#current-step\");\n const totalStepsSpan = mswizard.querySelector(\"#total-steps\");\n const progressPercentage = mswizard.querySelector(\".progress-percentage\");\n const steps = mswizard.querySelectorAll(\".mswizard-step\");\n const totalSteps = steps.length;\n totalStepsSpan.textContent = totalSteps;\n progressBar.max = 100;\n\n function updatemswizardStep(stepNumber) {\n steps.forEach((step) => (step.style.display = \"none\"));\n mswizard.querySelector(`#step-${stepNumber}`).style.display = \"block\";\n currentStepSpan.textContent = stepNumber;\n const progressValue = ((stepNumber - 1) / (totalSteps - 1)) * 100;\n progressBar.value = progressValue;\n progressPercentage.textContent = `${Math.round(progressValue)}%`;\n const percentagePosition = progressBar.offsetWidth * (progressValue / 100) - progressPercentage.offsetWidth / 2;\n progressPercentage.style.left = `${Math.max(0, percentagePosition)}px`;\n progressPercentage.style.visibility = progressValue >= 5 ? \"visible\" : \"hidden\";\n }\n\n steps.forEach((step, index) => {\n if (index === totalSteps - 1) return; // No buttons on the last step\n\n const buttonContainer = document.createElement(\"div\");\n buttonContainer.className = \"button-container\";\n\n // Always add the Previous button except on the last step\n const prevButton = document.createElement(\"button\");\n prevButton.textContent = \"Previous\";\n prevButton.className = \"prev-btn\";\n prevButton.setAttribute(\"role\", \"button\");\n prevButton.setAttribute(\"aria-label\", `Go back to step ${index}`);\n if (index === 0) {\n prevButton.disabled = true;\n prevButton.classList.add(\"disabled\");\n } else {\n prevButton.addEventListener(\"click\", () => updatemswizardStep(index));\n }\n buttonContainer.appendChild(prevButton);\n\n // Add the Next/Finish button to all steps except the last\n const nextButton = document.createElement(\"button\");\n nextButton.textContent = index === totalSteps - 2 ? \"Finish\" : \"Next\";\n nextButton.className = \"next-btn\";\n nextButton.setAttribute(\"role\", \"button\");\n nextButton.setAttribute(\"aria-label\", `Go to step ${index + 2}`);\n nextButton.addEventListener(\"click\", () => updatemswizardStep(index + 2));\n buttonContainer.appendChild(nextButton);\n\n step.appendChild(buttonContainer);\n });\n\n updatemswizardStep(1);\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Tabs\n// ----------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const tabs = document.querySelectorAll(\".tab-nav .item\");\n\n if (tabs.length > 0) {\n function removeCurrentClass() {\n tabs.forEach((tab) => {\n tab.classList.remove(\"current\");\n });\n }\n\n function setCurrentClass(event) {\n event.preventDefault();\n removeCurrentClass();\n event.target.classList.add(\"current\");\n }\n\n tabs.forEach((tab) => {\n tab.addEventListener(\"click\", setCurrentClass);\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n//Poll\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var currentStep = 1;\n var results = { a: 0, b: 0, c: 0, d: 0 };\n\n function updateStepDisplay(step) {\n var steps = document.querySelectorAll(\".wizard-step\");\n steps.forEach(function (stepDiv) {\n stepDiv.classList.remove(\"active\");\n });\n document.querySelector(\"#step-\" + step).classList.add(\"active\");\n }\n\n function handleOptionSelect(event) {\n var selectedOption = event.target.value;\n results[selectedOption]++;\n if (currentStep < 4) {\n currentStep++;\n updateStepDisplay(currentStep);\n } else {\n // Call the showResult function immediately after the last selection\n showResult();\n }\n }\n\n function showResult() {\n // Remove the active class from all steps\n var steps = document.querySelectorAll(\".wizard-step\");\n steps.forEach(function (step) {\n step.classList.remove(\"active\");\n });\n\n // Calculate the most chosen answer\n var max = Math.max(...Object.values(results));\n var mostChosenResults = Object.keys(results).filter(function (key) {\n return results[key] === max;\n });\n\n // Take the first result if there's a tie\n var mostChosen = mostChosenResults[0];\n var resultElement = document.querySelector('#result-types [data-result=\"' + mostChosen + '\"]');\n var resultContent = resultElement ? resultElement.innerHTML : mostChosen;\n\n // Update the result div and make the result visible\n var resultDiv = document.getElementById(\"result-text\");\n if (resultDiv) {\n resultDiv.innerHTML = resultContent;\n }\n var resultContainer = document.getElementById(\"result\");\n if (resultContainer) {\n resultContainer.classList.add(\"active\"); // Ensure this class makes the element visible\n }\n }\n\n // Attaching change event listeners to radio buttons\n var wizard = document.querySelector(\".wizard\");\n if (wizard) {\n var radioButtons = wizard.querySelectorAll('input[type=\"radio\"]');\n radioButtons.forEach(function (radioButton) {\n radioButton.addEventListener(\"change\", handleOptionSelect);\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const anchors = document.querySelectorAll('a[href^=\"#\"]');\n\n if (anchors.length > 0) {\n anchors.forEach((anchor) => {\n anchor.addEventListener(\"click\", function (e) {\n const hrefAttribute = this.getAttribute(\"href\");\n\n // Skip processing if href is only '#'\n if (hrefAttribute === \"#\") {\n return;\n }\n\n e.preventDefault();\n const targetElement = document.querySelector(hrefAttribute);\n\n if (targetElement) {\n targetElement.scrollIntoView({ behavior: \"smooth\" });\n }\n });\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const banner = document.querySelector(\".cookie-consent-banner\");\n\n // Check if the banner element exists\n if (banner) {\n const acceptBtn = document.querySelector(\".accept-cookies\");\n banner.style.zIndex = \"1100\";\n\n // Check if cookies are already accepted\n if (!localStorage.getItem(\"cookies-accepted\")) {\n banner.style.display = \"block\"; // Show banner if cookies not accepted\n }\n\n // Event listener for accept button\n if (acceptBtn) {\n acceptBtn.addEventListener(\"click\", () => {\n localStorage.setItem(\"cookies-accepted\", \"true\"); // Set flag in local storage\n banner.style.display = \"none\"; // Hide banner\n });\n }\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n//Toggle test mode\n//--------------------------------------------------------\n\nvar toggleButton = document.getElementById(\"toggleButton\");\n\nif (toggleButton) {\n toggleButton.addEventListener(\"click\", function () {\n const toggleClassOnElements = (selector, className) => {\n const elements = document.querySelectorAll(selector);\n elements.forEach((element) => {\n element.classList.toggle(className);\n });\n };\n\n const selectorsAndClasses = [\n [\"z-container\", \"z-container-outline-on\"],\n [\"z-container-fluid\", \"z-container-fluid-outline-on\"],\n [\"z-row\", \"z-row-outline-on\"],\n [\"z-col\", \"z-col-outline-on\"],\n [\"p\", \"p-outline-on\"],\n [\"h1\", \"h1-outline-on\"],\n [\"h2\", \"h2-outline-on\"],\n [\"h3\", \"h3-outline-on\"],\n [\"h4\", \"h4-outline-on\"],\n [\"h5\", \"h5-outline-on\"],\n [\"h6\", \"h6-outline-on\"],\n [\".center-line\", \"center-line-outline-on\"],\n ];\n\n selectorsAndClasses.forEach(([selector, className]) => {\n toggleClassOnElements(selector, className);\n });\n });\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/dist/zencss.min.js.map b/dist/zencss.min.js.map index 1128bd38..fc4d42f8 100644 --- a/dist/zencss.min.js.map +++ b/dist/zencss.min.js.map @@ -1 +1 @@ -{"version":3,"file":"zencss.min.js","mappings":"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","sources":["webpack:///./modules/test-mode.js","webpack:///./modules/custom-elements.js","webpack:///./modules/carousel.js","webpack:///./modules/dropdown.js","webpack:///./modules/image-gallery.js","webpack:///./modules/accordian.js","webpack:///./modules/misc.js","webpack:///./modules/dark-mode.js","webpack:///./modules/lazy-load.js","webpack:///./modules/background-image.js","webpack:///./modules/mobile-nav.js","webpack:///./modules/modal.js","webpack:///./modules/star-component.js","webpack:///./modules/exit-intent.js","webpack:///./modules/wizard.js","webpack:///./modules/multistep-wizard.js","webpack:///./modules/tabs.js","webpack:///./modules/poll.js","webpack:///./modules/link-scroll.js","webpack:///./modules/cookie-consent.js"],"sourcesContent":["/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n//Toggle test mode\n//--------------------------------------------------------\n\nvar toggleButton = document.getElementById(\"toggleButton\");\n\nif (toggleButton) {\n toggleButton.addEventListener(\"click\", function () {\n const toggleClassOnElements = (selector, className) => {\n const elements = document.querySelectorAll(selector);\n elements.forEach((element) => {\n element.classList.toggle(className);\n });\n };\n\n const selectorsAndClasses = [\n [\"z-container\", \"z-container-outline-on\"],\n [\"z-container-fluid\", \"z-container-fluid-outline-on\"],\n [\"z-row\", \"z-row-outline-on\"],\n [\"z-col\", \"z-col-outline-on\"],\n [\"p\", \"p-outline-on\"],\n [\"h1\", \"h1-outline-on\"],\n [\"h2\", \"h2-outline-on\"],\n [\"h3\", \"h3-outline-on\"],\n [\"h4\", \"h4-outline-on\"],\n [\"h5\", \"h5-outline-on\"],\n [\"h6\", \"h6-outline-on\"],\n [\".center-line\", \"center-line-outline-on\"],\n ];\n\n selectorsAndClasses.forEach(([selector, className]) => {\n toggleClassOnElements(selector, className);\n });\n });\n}\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Define zenCSS elements for use in JS\n// ----------------------------------------\n\n// Define z-container custom element\nclass ZContainer extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-container\", ZContainer);\n\n// Define z-row custom element\nclass ZRow extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-row\", ZRow);\n\n// Define z-col custom element\nclass ZCol extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-col\", ZCol);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const sliders = document.querySelectorAll(\".slider\");\n\n sliders.forEach((slider) => {\n const slidesContainer = slider.querySelector(\".slides-container\");\n const originalSlides = Array.from(slidesContainer.children);\n const totalOriginalSlides = originalSlides.length;\n const nextButton = slider.querySelector(\".next\");\n const prevButton = slider.querySelector(\".prev\");\n const shouldAutoRotate = slider.getAttribute(\"data-auto-rotate\") === \"true\";\n\n // Clone the first and last slides to create an infinite loop effect\n const firstSlideClone = originalSlides[0].cloneNode(true);\n const lastSlideClone = originalSlides[totalOriginalSlides - 1].cloneNode(true);\n slidesContainer.insertBefore(lastSlideClone, originalSlides[0]);\n slidesContainer.appendChild(firstSlideClone);\n\n let currentIndex = 1; // Start from the first original slide (not the clone)\n let isTransitioning = false;\n let autoRotate;\n\n // Function to start auto-rotating\n function startAutoRotate() {\n if (shouldAutoRotate) {\n autoRotate = setInterval(moveToNext, 4000);\n }\n }\n\n // Function to stop auto-rotating\n function stopAutoRotate() {\n clearInterval(autoRotate);\n }\n\n // Initialize position to the first original slide\n slidesContainer.style.transition = \"none\";\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n\n // Re-enable transitions after initial positioning\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n\n function updateSlidePosition() {\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n }\n\n function moveToNext() {\n if (isTransitioning) return;\n currentIndex++;\n isTransitioning = true;\n updateSlidePosition();\n }\n\n function moveToPrev() {\n if (isTransitioning) return;\n currentIndex--;\n isTransitioning = true;\n updateSlidePosition();\n }\n\n slidesContainer.addEventListener(\"transitionend\", () => {\n if (currentIndex >= totalOriginalSlides + 1) {\n slidesContainer.style.transition = \"none\";\n currentIndex = 1;\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n } else if (currentIndex === 0) {\n slidesContainer.style.transition = \"none\";\n currentIndex = totalOriginalSlides;\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n }\n isTransitioning = false;\n });\n\n nextButton.addEventListener(\"click\", moveToNext);\n prevButton.addEventListener(\"click\", moveToPrev);\n\n // Event listeners to stop/start auto-rotating\n slidesContainer.addEventListener(\"mouseenter\", stopAutoRotate);\n slidesContainer.addEventListener(\"mouseleave\", startAutoRotate);\n nextButton.addEventListener(\"mouseenter\", stopAutoRotate);\n nextButton.addEventListener(\"mouseleave\", startAutoRotate);\n prevButton.addEventListener(\"mouseenter\", stopAutoRotate);\n prevButton.addEventListener(\"mouseleave\", startAutoRotate);\n\n // Start auto-rotating for this slider\n startAutoRotate();\n });\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n// Dropdown\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var dropdownLinks = document.querySelectorAll(\".dropdown .dropdown-link\");\n\n dropdownLinks.forEach(function (link) {\n link.addEventListener(\"click\", function (event) {\n event.preventDefault();\n\n // Toggle the dropdown content visibility\n var dropdownContent = link.nextElementSibling;\n if (dropdownContent.style.display === \"block\") {\n dropdownContent.style.display = \"none\";\n } else {\n // Close all open dropdowns before opening the new one\n closeAllDropdowns();\n dropdownContent.style.display = \"block\";\n }\n });\n });\n});\n\nfunction closeAllDropdowns() {\n var dropdowns = document.querySelectorAll(\".dropdown .dropdown-content\");\n dropdowns.forEach(function (dropdown) {\n dropdown.style.display = \"none\";\n });\n}\n\n// Close all dropdowns when clicking outside\nwindow.onclick = function (event) {\n if (!event.target.matches(\".dropdown-link\")) {\n closeAllDropdowns();\n }\n};\n","// /*\n// * zenCSS v2.0.2-beta (https://zencss.com/)\n// * Copyright 2022-2024 Shaun Mackey\n// * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n// */\n\n//12/29 removing lazy load\n\n/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\nfunction preloadImage(src) {\n const img = new Image();\n img.src = src;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const gallery = document.querySelector(\".image-gallery\");\n const modal = document.querySelector(\"z-modal\");\n const paginationNav = document.querySelector(\".pagination-nav\");\n\n if (gallery && modal && paginationNav) {\n let currentPage = 1;\n const imagesPerPage = 15;\n let currentModalIndex = 0;\n const imageWrappers = [];\n\n Array.from(gallery.children).forEach((img, index) => {\n const wrapper = document.createElement(\"div\");\n wrapper.style.display = index < imagesPerPage ? \"block\" : \"none\";\n const clonedImg = img.cloneNode(true);\n clonedImg.addEventListener(\"click\", () => {\n currentModalIndex = index;\n openModal(clonedImg.src, clonedImg.getAttribute(\"data-text\"), index);\n });\n wrapper.appendChild(clonedImg);\n imageWrappers.push(wrapper);\n });\n\n const totalPages = Math.ceil(imageWrappers.length / imagesPerPage);\n\n function updateImagesForPage(pageNumber) {\n imageWrappers.forEach((wrapper, index) => {\n const start = (pageNumber - 1) * imagesPerPage;\n const end = start + imagesPerPage;\n wrapper.style.display = index >= start && index < end ? \"block\" : \"none\";\n });\n }\n\n function updatePaginationNav() {\n paginationNav.innerHTML = '«';\n for (let i = 1; i <= totalPages; i++) {\n const classCurrent = i === currentPage ? \"current\" : \"\";\n paginationNav.innerHTML += `${i}`;\n }\n paginationNav.innerHTML += '»';\n }\n\n function openModal(src, text, index) {\n currentModalIndex = index;\n const modalBody = modal.shadowRoot.querySelector(\".modal-body\");\n const modalWrapper = modal.shadowRoot.querySelector(\".modal-wrapper\");\n const modalHeader = modal.shadowRoot.querySelector(\".modal-header\");\n\n if (modalBody && modalWrapper && modalHeader) {\n const currentWidth = modalWrapper.clientWidth;\n const currentHeight = modalWrapper.clientHeight;\n modalWrapper.style.minWidth = `${currentWidth}px`;\n modalWrapper.style.minHeight = `${currentHeight}px`;\n\n modalBody.innerHTML = \"\";\n const imageContainer = document.createElement(\"div\");\n imageContainer.style.display = \"flex\";\n imageContainer.style.position = \"relative\";\n imageContainer.style.justifyContent = \"center\";\n\n const prevArrow = document.createElement(\"div\");\n prevArrow.className = \"prev arrow theme-dark\";\n prevArrow.innerHTML = \"❮\";\n prevArrow.style.cursor = \"pointer\";\n prevArrow.style.position = \"absolute\";\n prevArrow.style.top = \"50%\";\n prevArrow.style.left = \"7px\";\n prevArrow.style.padding = \"10px\";\n prevArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n prevArrow.style.transform = \"translateY(-50%)\";\n prevArrow.onclick = function () {\n currentModalIndex = currentModalIndex > 0 ? currentModalIndex - 1 : imageWrappers.length - 1;\n const newImg = imageWrappers[currentModalIndex].firstChild;\n openModal(newImg.src, newImg.getAttribute(\"data-text\"), currentModalIndex);\n };\n imageContainer.appendChild(prevArrow);\n\n const modalImage = document.createElement(\"img\");\n modalImage.onload = () => {\n modalWrapper.style.minWidth = \"\";\n modalWrapper.style.minHeight = \"\";\n };\n modalImage.src = src;\n modalImage.style.maxWidth = \"100%\";\n modalImage.style.maxHeight = \"60vh\";\n modalImage.style.objectFit = \"contain\";\n modalImage.style.margin = \"auto\";\n imageContainer.appendChild(modalImage);\n\n const nextArrow = document.createElement(\"div\");\n nextArrow.className = \"next arrow theme-dark\";\n nextArrow.innerHTML = \"❯\";\n nextArrow.style.cursor = \"pointer\";\n nextArrow.style.position = \"absolute\";\n nextArrow.style.padding = \"10px\";\n nextArrow.style.top = \"50%\";\n nextArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n nextArrow.style.right = \"7px\";\n nextArrow.style.transform = \"translateY(-50%)\";\n nextArrow.onclick = function () {\n currentModalIndex = currentModalIndex < imageWrappers.length - 1 ? currentModalIndex + 1 : 0;\n const newImg = imageWrappers[currentModalIndex].firstChild;\n openModal(newImg.src, newImg.getAttribute(\"data-text\"), currentModalIndex);\n };\n imageContainer.appendChild(nextArrow);\n\n modalBody.appendChild(imageContainer);\n\n const modalText = document.createElement(\"p\");\n modalText.textContent = text;\n modalText.style.textAlign = \"center\";\n modalBody.appendChild(modalText);\n\n modalBody.style.overflowY = \"auto\";\n modalBody.style.maxHeight = \"80vh\";\n modalHeader.style.display = \"none\";\n\n modalWrapper.style.maxWidth = window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n\n const nextIndex = (index + 1) % imageWrappers.length;\n const prevIndex = (index - 1 + imageWrappers.length) % imageWrappers.length;\n preloadImage(imageWrappers[nextIndex].firstChild.src);\n preloadImage(imageWrappers[prevIndex].firstChild.src);\n\n modal.open();\n }\n }\n\n paginationNav.addEventListener(\"click\", function (event) {\n event.preventDefault();\n const target = event.target;\n if (target.tagName === \"A\" && target.dataset.page) {\n let newPage = currentPage;\n if (target.dataset.page === \"prev\") {\n newPage = currentPage > 1 ? currentPage - 1 : totalPages;\n } else if (target.dataset.page === \"next\") {\n newPage = currentPage < totalPages ? currentPage + 1 : 1;\n } else {\n newPage = parseInt(target.dataset.page);\n }\n\n if (newPage !== currentPage) {\n currentPage = newPage;\n updateImagesForPage(currentPage);\n updatePaginationNav();\n }\n }\n });\n\n window.addEventListener(\"resize\", function () {\n const modalWrapper = modal.shadowRoot.querySelector(\".modal-wrapper\");\n if (modalWrapper) {\n modalWrapper.style.maxWidth = window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n }\n });\n\n gallery.innerHTML = \"\";\n imageWrappers.forEach((wrapper) => gallery.appendChild(wrapper));\n updateImagesForPage(currentPage);\n updatePaginationNav();\n }\n});\n\n// function preloadImage(src) {\n// const img = new Image();\n// img.src = src;\n// }\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const gallery = document.querySelector(\".image-gallery\");\n// const modal = document.querySelector(\"z-modal\");\n// const paginationNav = document.querySelector(\".pagination-nav\");\n\n// if (gallery && modal && paginationNav) {\n// let currentPage = 1;\n// const imagesPerPage = 15;\n// let currentModalIndex = 0;\n// const imageWrappers = [];\n\n// Array.from(gallery.children).forEach((img, index) => {\n// const wrapper = document.createElement(\"div\");\n// wrapper.classList.add(\"lazy-load\"); // using the lazy-load class\n// wrapper.style.display = index < imagesPerPage ? \"block\" : \"none\";\n// const clonedImg = img.cloneNode(true);\n// clonedImg.addEventListener(\"click\", () => {\n// currentModalIndex = index;\n// openModal(\n// clonedImg.src,\n// clonedImg.getAttribute(\"data-text\"),\n// index,\n// );\n// });\n// wrapper.appendChild(clonedImg);\n// imageWrappers.push(wrapper);\n// });\n\n// const totalPages = Math.ceil(imageWrappers.length / imagesPerPage);\n\n// function updateImagesForPage(pageNumber) {\n// imageWrappers.forEach((wrapper, index) => {\n// const start = (pageNumber - 1) * imagesPerPage;\n// const end = start + imagesPerPage;\n// wrapper.style.display =\n// index >= start && index < end ? \"block\" : \"none\";\n// });\n// }\n\n// function updatePaginationNav() {\n// paginationNav.innerHTML =\n// '«';\n// for (let i = 1; i <= totalPages; i++) {\n// const classCurrent = i === currentPage ? \"current\" : \"\";\n// paginationNav.innerHTML += `${i}`;\n// }\n// paginationNav.innerHTML +=\n// '»';\n// }\n\n// function openModal(src, text, index) {\n// currentModalIndex = index;\n// const modalBody = modal.shadowRoot.querySelector(\".modal-body\");\n// const modalWrapper =\n// modal.shadowRoot.querySelector(\".modal-wrapper\");\n// const modalHeader = modal.shadowRoot.querySelector(\".modal-header\");\n\n// if (modalBody && modalWrapper && modalHeader) {\n// const currentWidth = modalWrapper.clientWidth;\n// const currentHeight = modalWrapper.clientHeight;\n// modalWrapper.style.minWidth = `${currentWidth}px`;\n// modalWrapper.style.minHeight = `${currentHeight}px`;\n\n// modalBody.innerHTML = \"\";\n// const imageContainer = document.createElement(\"div\");\n// imageContainer.style.display = \"flex\";\n// imageContainer.style.position = \"relative\";\n// imageContainer.style.justifyContent = \"center\";\n\n// const prevArrow = document.createElement(\"div\");\n// prevArrow.className = \"prev arrow theme-dark\";\n// prevArrow.innerHTML = \"❮\";\n// prevArrow.style.cursor = \"pointer\";\n// prevArrow.style.position = \"absolute\";\n// prevArrow.style.top = \"50%\";\n// prevArrow.style.left = \"7px\";\n// prevArrow.style.padding = \"10px\";\n// prevArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n// prevArrow.style.transform = \"translateY(-50%)\";\n// prevArrow.onclick = function () {\n// currentModalIndex =\n// currentModalIndex > 0\n// ? currentModalIndex - 1\n// : imageWrappers.length - 1;\n// const newImg = imageWrappers[currentModalIndex].firstChild;\n// openModal(\n// newImg.src,\n// newImg.getAttribute(\"data-text\"),\n// currentModalIndex,\n// );\n// };\n// imageContainer.appendChild(prevArrow);\n\n// const modalImage = document.createElement(\"img\");\n// modalImage.onload = () => {\n// modalWrapper.style.minWidth = \"\";\n// modalWrapper.style.minHeight = \"\";\n// };\n// modalImage.src = src;\n// modalImage.style.maxWidth = \"100%\";\n// modalImage.style.maxHeight = \"60vh\";\n// modalImage.style.objectFit = \"contain\";\n// modalImage.style.margin = \"auto\";\n// imageContainer.appendChild(modalImage);\n\n// const nextArrow = document.createElement(\"div\");\n// nextArrow.className = \"next arrow theme-dark\";\n// nextArrow.innerHTML = \"❯\";\n// nextArrow.style.cursor = \"pointer\";\n// nextArrow.style.position = \"absolute\";\n// nextArrow.style.padding = \"10px\";\n// nextArrow.style.top = \"50%\";\n// nextArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n// nextArrow.style.right = \"7px\";\n// nextArrow.style.transform = \"translateY(-50%)\";\n// nextArrow.onclick = function () {\n// currentModalIndex =\n// currentModalIndex < imageWrappers.length - 1\n// ? currentModalIndex + 1\n// : 0;\n// const newImg = imageWrappers[currentModalIndex].firstChild;\n// openModal(\n// newImg.src,\n// newImg.getAttribute(\"data-text\"),\n// currentModalIndex,\n// );\n// };\n// imageContainer.appendChild(nextArrow);\n\n// modalBody.appendChild(imageContainer);\n\n// const modalText = document.createElement(\"p\");\n// modalText.textContent = text;\n// modalText.style.textAlign = \"center\";\n// modalBody.appendChild(modalText);\n\n// modalBody.style.overflowY = \"auto\";\n// modalBody.style.maxHeight = \"80vh\";\n// modalHeader.style.display = \"none\";\n\n// modalWrapper.style.maxWidth =\n// window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n\n// const nextIndex = (index + 1) % imageWrappers.length;\n// const prevIndex =\n// (index - 1 + imageWrappers.length) % imageWrappers.length;\n// preloadImage(imageWrappers[nextIndex].firstChild.src);\n// preloadImage(imageWrappers[prevIndex].firstChild.src);\n\n// modal.open();\n// }\n// }\n\n// paginationNav.addEventListener(\"click\", function (event) {\n// event.preventDefault();\n// const target = event.target;\n// if (target.tagName === \"A\" && target.dataset.page) {\n// let newPage = currentPage;\n// if (target.dataset.page === \"prev\") {\n// newPage = currentPage > 1 ? currentPage - 1 : totalPages;\n// } else if (target.dataset.page === \"next\") {\n// newPage = currentPage < totalPages ? currentPage + 1 : 1;\n// } else {\n// newPage = parseInt(target.dataset.page);\n// }\n\n// if (newPage !== currentPage) {\n// currentPage = newPage;\n// updateImagesForPage(currentPage);\n// updatePaginationNav();\n// }\n// }\n// });\n\n// window.addEventListener(\"resize\", function () {\n// const modalWrapper =\n// modal.shadowRoot.querySelector(\".modal-wrapper\");\n// if (modalWrapper) {\n// modalWrapper.style.maxWidth =\n// window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n// }\n// });\n\n// gallery.innerHTML = \"\";\n// imageWrappers.forEach((wrapper) => gallery.appendChild(wrapper));\n// updateImagesForPage(currentPage);\n// updatePaginationNav();\n// }\n// });\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var accordionToggles = document.querySelectorAll(\".accordion-toggle\");\n\n accordionToggles.forEach(function (accordionToggle) {\n accordionToggle.addEventListener(\"click\", function () {\n // Determine if the clicked toggle is being expanded\n var isExpanding = this.getAttribute(\"aria-expanded\") === \"false\";\n\n // Remove active class from all toggles and reset icons\n accordionToggles.forEach(function (otherToggle) {\n otherToggle.classList.remove(\"active-toggle\");\n otherToggle.setAttribute(\"aria-expanded\", \"false\");\n\n var otherIcon = otherToggle.querySelector(\".zenicon-keyboard-arrow-right, .zenicon-keyboard-arrow-down\");\n if (otherIcon) {\n otherIcon.classList.remove(\"zenicon-keyboard-arrow-down\");\n otherIcon.classList.add(\"zenicon-keyboard-arrow-right\");\n }\n\n var otherPanel = otherToggle.nextElementSibling;\n otherPanel.style.maxHeight = null;\n otherPanel.setAttribute(\"aria-hidden\", \"true\"); // Hide other panels\n });\n\n // Set the clicked toggle as active if it's expanding\n if (isExpanding) {\n this.classList.add(\"active-toggle\");\n this.setAttribute(\"aria-expanded\", \"true\");\n\n var icon = this.querySelector(\".zenicon-keyboard-arrow-right, .zenicon-keyboard-arrow-down\");\n if (icon) {\n icon.classList.remove(\"zenicon-keyboard-arrow-right\");\n icon.classList.add(\"zenicon-keyboard-arrow-down\");\n }\n\n var panel = this.nextElementSibling;\n panel.style.maxHeight = panel.scrollHeight > 200 ? \"1000px\" : panel.scrollHeight + 10 + \"px\";\n panel.setAttribute(\"aria-hidden\", \"false\"); // Show the current panel\n }\n });\n });\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n// Dynamic year in footer\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const yearSpan = document.getElementById(\"current-year\");\n if (yearSpan) {\n const currentYear = new Date().getFullYear();\n yearSpan.textContent = currentYear;\n }\n});\n\n//-------------------------------------\n// icon toggle\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var iconToggles = document.querySelectorAll(\".icon-toggle\");\n\n iconToggles.forEach(function (toggle) {\n toggle.addEventListener(\"click\", function () {\n var iconOff = this.querySelector(\".icon-off\");\n var iconOn = this.querySelector(\".icon-on\");\n\n // Toggle the 'show' class\n iconOff.classList.toggle(\"show\");\n iconOn.classList.toggle(\"show\");\n });\n });\n});\n\n// New stuff here after modules were created. If we need to revert, include this stuff.\ndocument.querySelectorAll(\".accordion-toggle\").forEach((item) => {\n item.addEventListener(\"click\", (event) => {\n event.preventDefault();\n\n const contentId = item.getAttribute(\"aria-controls\");\n const content = document.getElementById(contentId);\n\n // Close other expanded contents\n document.querySelectorAll(\".expanded-content\").forEach((el) => {\n if (el.id !== contentId) {\n el.classList.remove(\"show\");\n el.style.overflowY = \"hidden\";\n }\n });\n\n // Toggle current content\n content.classList.toggle(\"show\");\n\n setTimeout(() => {\n if (content.scrollHeight > content.clientHeight) {\n content.style.overflowY = \"auto\";\n } else {\n content.style.overflowY = \"hidden\";\n }\n }, 500);\n });\n});\n\n//-------------------------------------\n// Corner Popup\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var cornerPopup = document.querySelector(\".corner-popup\");\n\n if (cornerPopup) {\n var button = cornerPopup.querySelector(\"button\");\n var popup = cornerPopup.querySelector(\"div\");\n\n popup.classList.add(\"card\");\n\n button.addEventListener(\"click\", function () {\n popup.classList.toggle(\"hidden\");\n console.log(\"Button clicked\");\n });\n }\n});\n\n//-------------------------------------\n// Responsive Table\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n // Function to apply data labels to a table\n function applyDataLabelsToTable(table) {\n // Get all the headers from the direct child thead of the table\n const headers = Array.from(table.querySelectorAll(\":scope > thead > tr > th\")).map((th) => th.textContent.trim());\n\n // Iterate over each row in the direct child tbody of the table\n table.querySelectorAll(\":scope > tbody > tr\").forEach((row) => {\n // Get all cells (td) in this row\n row.querySelectorAll(\":scope > td\").forEach((cell, index) => {\n // Assign the corresponding header text to the data-label attribute of the cell\n if (headers[index]) {\n cell.setAttribute(\"data-label\", headers[index]);\n }\n });\n });\n }\n\n // Select all tables with class 'responsive-table' and apply data labels to each\n document.querySelectorAll(\".responsive-table\").forEach(applyDataLabelsToTable);\n});\n\n//-------------------------------------\n// Lazy Load Test - WIP\n//-------------------------------------\n\n// document.addEventListener(\"DOMContentLoaded\", function() {\n// const lazyLoadImages = document.querySelectorAll(\"img.lazy-load\");\n\n// if (lazyLoadImages.length > 0) {\n// const imageObserver = new IntersectionObserver(function(entries, observer) {\n// entries.forEach(function(entry) {\n// if (entry.isIntersecting) {\n// const image = entry.target;\n// image.src = image.dataset.src;\n// image.classList.remove(\"lazy-load\");\n// imageObserver.unobserve(image);\n// }\n// });\n// });\n\n// lazyLoadImages.forEach(function(image) {\n// imageObserver.observe(image);\n// });\n// }\n// });\n\n//-------------------------------------\n// Tabbed Card\n//-------------------------------------\n\n// function showTab(tabNumber) {\n// const tabbedCard = document.querySelector(\".tabbed-card\");\n// if (tabbedCard) {\n// const tabs = tabbedCard.querySelectorAll(\".tab\");\n// const tabContents = tabbedCard.querySelectorAll(\".tab-content\");\n\n// if (tabs.length && tabContents.length) {\n// tabs.forEach((tab, index) => {\n// if (index + 1 === tabNumber) {\n// tab.classList.add(\"active\");\n// if (tabContents[index]) {\n// tabContents[index].classList.add(\"active\");\n// }\n// } else {\n// tab.classList.remove(\"active\");\n// if (tabContents[index]) {\n// tabContents[index].classList.remove(\"active\");\n// }\n// }\n// });\n// }\n// }\n// }\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const tabs = document.querySelectorAll(\".tab\");\n// if (tabs.length) {\n// tabs.forEach((tab) => {\n// tab.addEventListener(\"click\", function () {\n// const tabNumber = parseInt(tab.getAttribute(\"data-tab\"));\n// showTab(tabNumber);\n// });\n// });\n// }\n// });\n\n//-------------------------------------\n// side menus\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Select all the menu items\n const menuItems = document.querySelectorAll(\".nav-menu li\");\n\n // Only proceed if menu items exist\n if (menuItems.length) {\n menuItems.forEach((item) => {\n // Add click event listener to each menu item\n item.addEventListener(\"click\", function () {\n // Remove the 'active' class from all items\n menuItems.forEach((i) => i.classList.remove(\"active\"));\n\n // Add the 'active' class to the clicked item\n this.classList.add(\"active\");\n });\n });\n }\n});\n\n//-------------------------------------\n// unread notifications\n//-------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var button = document.querySelector(\".btn-circle\");\n\n // Check if the button exists\n if (button) {\n // Restore the data-unread attribute if 24 hours have not passed\n var unreadResetTime = localStorage.getItem(\"unreadResetTime\");\n if (unreadResetTime && new Date().getTime() < unreadResetTime) {\n button.removeAttribute(\"data-unread\");\n }\n\n // Add click event listener to the button\n button.addEventListener(\"click\", function () {\n // Remove data-unread attribute and set the reset time in localStorage\n button.removeAttribute(\"data-unread\");\n var resetTime = new Date().getTime() + 24 * 60 * 60 * 1000; // 24 hours from now\n localStorage.setItem(\"unreadResetTime\", resetTime);\n });\n }\n});\n\n//-------------------------------------\n// fade in animation\n//-------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const elementsToAnimate = document.querySelectorAll(\".fade-in\");\n\n if (elementsToAnimate.length > 0) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n entry.target.classList.add(\"visible\");\n }\n });\n },\n {\n threshold: 0.3,\n },\n );\n\n elementsToAnimate.forEach((el) => observer.observe(el));\n }\n});\n\n// //pie charts\n// document.addEventListener('DOMContentLoaded', () => {\n// const chart = document.querySelector('.zen-pie-chart');\n// let accumulatedRotation = 0;\n\n// document.querySelectorAll('.zen-pie-chart .zen-slice').forEach(slice => {\n// const percentage = parseFloat(slice.dataset.percentage);\n// const rotation = 360 * (percentage / 100);\n// const sliceRotation = accumulatedRotation + rotation / 2;\n\n// // Set styles and classes for the slice\n// slice.style.transform = `rotate(${sliceRotation}deg)`;\n// slice.style.clip = `rect(0px, ${chart.clientWidth}px, ${chart.clientWidth}px, ${chart.clientWidth / 2}px)`;\n// slice.style.backgroundColor = getComputedStyle(slice).backgroundColor;\n// slice.style.opacity = '1';\n\n// // For more than 50%, create an overlay slice to simulate the additional percentage\n// if (percentage > 50) {\n// let overlaySlice = document.createElement('div');\n// overlaySlice.classList.add('zen-slice', 'overlay');\n// overlaySlice.style.backgroundColor = slice.style.backgroundColor;\n// overlaySlice.style.position = 'absolute';\n// overlaySlice.style.width = '100%';\n// overlaySlice.style.height = '100%';\n// overlaySlice.style.transform = `rotate(${sliceRotation + 180}deg)`;\n// overlaySlice.style.clip = `rect(0px, ${chart.clientWidth}px, ${chart.clientWidth}px, ${chart.clientWidth / 2}px)`;\n// chart.appendChild(overlaySlice);\n// }\n\n// accumulatedRotation += rotation;\n// });\n// });\n\n//-------------------------------------\n// Pattern Interrupt\n//-------------------------------------\n// document.addEventListener('DOMContentLoaded', function() {\n// var modalShown = false;\n// var modal = document.querySelector('.pattern-interrupt');\n// var modal2 = document.querySelector('.modal');\n\n// function showModal() {\n// if (!modal) return; // Exit if no modal found\n\n// // Center the modal in the viewport\n// modal.style.display = 'block';\n// modal2.style.display = 'block';\n// modal.style.position = 'fixed'; // Fixed position\n// modal.style.top = '50%'; // Center vertically\n// modal.style.left = '50%'; // Center horizontally\n// modal.style.transform = 'translate(-50%, -50%)'; // Adjust for modal's dimensions\n\n// modalShown = true;\n// }\n\n// function checkScroll() {\n// if (modalShown) return; // Skip if the modal is already shown\n\n// var scrollPosition = window.pageYOffset || document.documentElement.scrollTop;\n// var totalHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;\n// var scrolledPercentage = (scrollPosition / totalHeight) * 100;\n\n// if (scrolledPercentage > 10) {\n// showModal();\n// }\n// }\n\n// // Attach the scroll event listener only if the modal exists\n// if (modal) {\n// window.addEventListener('scroll', checkScroll);\n// }\n// });\n\n//-------------------------------------\n// Dynamic Navigation\n//-------------------------------------\n// document.addEventListener('DOMContentLoaded', function() {\n// const header = document.querySelector('.header-sticky.slide-down');\n// console.log(\"Script running\");\n// if (header) {\n// fetch('../docs/navigation.html') // Assuming navigation.html is in the /docs folder\n// .then(response => response.text())\n// .then(data => {\n// header.innerHTML = data;\n// })\n// .catch(error => console.error('Error loading navigation:', error));\n// }\n// });\n\n// //-------------------------------------\n// // Video Player\n// //-------------------------------------\n\n// class VideoPlayer extends HTMLElement {\n// constructor() {\n// super();\n// const shadowRoot = this.attachShadow({ mode: 'open' });\n\n// const style = document.createElement('style');\n// style.textContent = `\n\n// `;\n\n// const container = document.createElement('div');\n// container.className = 'video-container';\n\n// const video = document.createElement('video');\n// video.className = 'video-player';\n// video.controls = true;\n\n// const src = this.getAttribute('src');\n// if (src) {\n// const source = document.createElement('source');\n// source.src = src;\n// source.type = 'video/mp4';\n// video.appendChild(source);\n// } else {\n// console.error('Video source not provided for .');\n// }\n\n// container.appendChild(video);\n// shadowRoot.appendChild(style);\n// shadowRoot.appendChild(container);\n// }\n// }\n\n// customElements.define('video-player', VideoPlayer);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n// Toggle Dark Mode Option\n//--------------------------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n function toggleDarkMode() {\n const zenElements = document.querySelectorAll(\".zen\");\n\n zenElements.forEach((element) => {\n element.classList.toggle(\"zen-dark\");\n });\n\n const isDarkModeEnabled = Array.from(zenElements).some((element) => element.classList.contains(\"zen-dark\"));\n localStorage.setItem(\"darkMode\", isDarkModeEnabled);\n }\n\n const toggleButton = document.getElementById(\"toggleDarkMode\");\n if (toggleButton) {\n toggleButton.addEventListener(\"click\", toggleDarkMode);\n }\n\n const storedDarkMode = localStorage.getItem(\"darkMode\");\n if (storedDarkMode === \"true\") {\n const zenElements = document.querySelectorAll(\".zen\");\n zenElements.forEach((element) => {\n element.classList.add(\"zen-dark\");\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var lazyImages = [].slice.call(document.querySelectorAll(\".zen img.lazy-load\"));\n\n if (lazyImages.length === 0) {\n //console.log('No lazy-load images found.');\n return;\n }\n\n if (\"IntersectionObserver\" in window) {\n let lazyImageObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n let lazyImage = entry.target;\n // Set onload before changing the src\n lazyImage.onload = function () {\n this.classList.remove(\"lazy-load\");\n //console.log('Lazy-load class removed:', this);\n };\n lazyImage.src = lazyImage.dataset.src;\n lazyImageObserver.unobserve(lazyImage);\n }\n });\n });\n\n lazyImages.forEach(function (lazyImage) {\n lazyImageObserver.observe(lazyImage);\n });\n } else {\n lazyImages.forEach(function (lazyImage) {\n lazyImage.onload = function () {\n this.classList.remove(\"lazy-load\");\n //console.log('Lazy-load class removed:', this);\n };\n lazyImage.src = lazyImage.dataset.src;\n });\n }\n});\n\n//old depricated - leaving for now to reference to what was done for image gallery\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const images = document.querySelectorAll(\".lazy-load\");\n\n// if (images.length > 0) {\n// const imageObserver = new IntersectionObserver((entries, observer) => {\n// entries.forEach((entry) => {\n// if (entry.isIntersecting) {\n// const image = entry.target;\n// image.setAttribute(\"aria-busy\", \"true\"); // Indicate loading\n// const newSrc = image.getAttribute(\"data-src\");\n\n// // Create a new Image to load in the background\n// const img = new Image();\n// img.onload = function () {\n// image.src = newSrc; // Set src when fully loaded\n// image.removeAttribute(\"aria-busy\"); // Remove loading indication\n// };\n// img.src = newSrc;\n\n// image.classList.remove(\"lazy-load\");\n// observer.unobserve(image);\n// }\n// });\n// });\n\n// images.forEach((image) => {\n// imageObserver.observe(image);\n// });\n// }\n// });\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n//Background image\n//--------------------------------------------------------\n\nwindow.addEventListener(\"DOMContentLoaded\", function () {\n var imageContainers = document.querySelectorAll(\".image-container\");\n imageContainers.forEach(function (container) {\n var img = container.querySelector(\"img\");\n var imgUrl = img.src;\n container.style.backgroundImage = \"url(\" + imgUrl + \")\";\n container.style.backgroundSize = \"cover\";\n container.style.backgroundPosition = \"center center\";\n img.style.display = \"none\";\n });\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// //--------------------------------------------------------\n// // Mobile Nav\n// //--------------------------------------------------------\n// document.addEventListener(\"DOMContentLoaded\", (event) => {\n// const hamburgerButton = document.getElementById(\"hamburger-button\");\n// const closeButton = document.getElementById(\"close-button\");\n// const nav = document.querySelector(\"nav\");\n// const navLinks = document.querySelectorAll(\".nav-link\");\n\n// const toggleMenu = () => {\n// nav.style.left = nav.style.left === \"0px\" ? \"-250px\" : \"0px\";\n// };\n\n// if (hamburgerButton && closeButton && nav) {\n// hamburgerButton.addEventListener(\"click\", toggleMenu);\n// closeButton.addEventListener(\"click\", toggleMenu);\n\n// navLinks.forEach((link) => {\n// // link.addEventListener(\"click\", toggleMenu); // Use toggleMenu to close the menu\n// });\n// }\n// });\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const hamburgerButton = document.getElementById(\"hamburger-button-2\");\n const closeButton = document.getElementById(\"close-button\");\n const nav = document.querySelector(\".top-nav\");\n const navLinks = document.querySelectorAll(\".nav-link\");\n\n const toggleMenu = () => {\n nav.style.left = nav.style.left === \"0px\" ? \"-250px\" : \"0px\";\n };\n\n if (hamburgerButton && closeButton && nav) {\n hamburgerButton.addEventListener(\"click\", toggleMenu);\n closeButton.addEventListener(\"click\", toggleMenu);\n\n navLinks.forEach((link) => {\n link.addEventListener(\"click\", toggleMenu);\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n// Modal\n//--------------------------------------------------------\n\nclass ZModal extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n this.render();\n }\n\n connectedCallback() {\n this.shadowRoot.querySelector(\".close\").addEventListener(\"click\", () => {\n this.close();\n });\n this.shadowRoot.querySelector(\".modal\").addEventListener(\"click\", (event) => {\n if (event.target === event.currentTarget) {\n this.close();\n }\n });\n document.addEventListener(\"click\", (event) => {\n if (event.target.classList.contains(\"modal-close\")) {\n this.close();\n }\n\n document.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n this.close();\n }\n });\n });\n\n const openModalButton = document.querySelector(\".modal-open\");\n if (openModalButton) {\n openModalButton.addEventListener(\"click\", () => {\n this.open();\n });\n }\n }\n\n open() {\n this.shadowRoot.querySelector(\".modal\").style.display = \"flex\";\n }\n\n close() {\n this.shadowRoot.querySelector(\".modal\").style.display = \"none\";\n }\n\n render() {\n this.shadowRoot.innerHTML = `\n \n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n \n \n \n \n
\n
\n
\n `;\n }\n}\n\ncustomElements.define(\"z-modal\", ZModal);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Star component\n// ----------------------------------------\nclass StarComponent extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n this.render();\n }\n\n static get observedAttributes() {\n return [\"stars\", \"half\"];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n this.render();\n }\n\n render() {\n const starCount = parseInt(this.getAttribute(\"stars\")) || 1;\n const half = this.getAttribute(\"half\") === \"true\";\n const fragment = document.createDocumentFragment();\n\n for (let i = 0; i < starCount; i++) {\n const starImg = document.createElement(\"img\");\n starImg.src = \"../../dist/img/icons/alerts/star-solid.svg\";\n starImg.alt = \"\";\n starImg.className = \"icon icon-gold\";\n fragment.appendChild(starImg);\n }\n\n if (half && starCount < 5) {\n const halfStarImg = document.createElement(\"img\");\n halfStarImg.src = \"../../dist/img/icons/alerts/star-half-stroke-regular.svg\";\n halfStarImg.alt = \"\";\n halfStarImg.className = \"icon icon-gold\";\n fragment.appendChild(halfStarImg);\n }\n\n this.shadowRoot.innerHTML = `\n \n `;\n this.shadowRoot.appendChild(fragment);\n }\n}\n\ncustomElements.define(\"star-component\", StarComponent);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Exit Intent\n// ----------------------------------------\n// Get the modal\nvar modal = document.querySelector(\".exit\");\n\n// Function to show the modal if conditions are met\nfunction tryToShowModal() {\n if (modal && shouldShowModal() && !modalIsDisplayed()) {\n modal.style.display = \"block\";\n }\n}\n\n// Function to hide modal and set a flag in local storage\nfunction closeModal() {\n if (modal) {\n modal.style.display = \"none\";\n // Set the flag in local storage with the current timestamp\n localStorage.setItem(\"modalClosed\", new Date().getTime());\n }\n}\n\n// Check if the modal is currently displayed\nfunction modalIsDisplayed() {\n return modal.style.display === \"block\";\n}\n\n// Get the element that closes the modal\nvar span = document.querySelector(\".close\");\n\n// When the user clicks on (x), close the modal\nif (span) {\n span.onclick = closeModal;\n}\n\n// When the user clicks anywhere outside of the modal, close it\nwindow.onclick = function (event) {\n if (event.target == modal) {\n closeModal();\n }\n};\n\n// Check local storage to see if we should show the modal\nfunction shouldShowModal() {\n var modalClosedTime = localStorage.getItem(\"modalClosed\");\n if (modalClosedTime) {\n var now = new Date();\n var daysPassed = (now.getTime() - parseInt(modalClosedTime, 10)) / (1000 * 3600 * 24);\n return daysPassed >= 7;\n }\n return true;\n}\n\n// Trigger the modal after 8 seconds if the user hasn't closed it already\nsetTimeout(function () {\n document.addEventListener(\"mousemove\", function (e) {\n if (e.clientY <= 5) {\n tryToShowModal();\n }\n });\n}, 8000);\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Wizard\n// ----------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const steps = document.querySelectorAll(\".wizard-step\");\n const navItems = document.querySelectorAll(\".wizard-nav\");\n\n if (steps.length > 0 && navItems.length > 0) {\n let currentStep = 1;\n const totalSteps = steps.length;\n\n function goToStep(stepNumber) {\n steps.forEach((step) => {\n step.style.display = \"none\"; // Hide all steps\n });\n document.getElementById(`step-${stepNumber}`).style.display = \"block\"; // Show the desired step\n\n // Update the current class on pagination\n navItems.forEach((item) => {\n if (item.dataset.step == stepNumber.toString()) {\n item.classList.add(\"current\");\n } else {\n item.classList.remove(\"current\");\n }\n });\n }\n\n navItems.forEach((item) => {\n item.addEventListener(\"click\", (e) => {\n e.preventDefault();\n let direction = item.dataset.direction;\n if (direction) {\n if (direction === \"next\" && currentStep < totalSteps) {\n currentStep++;\n } else if (direction === \"prev\" && currentStep > 1) {\n currentStep--;\n }\n } else if (item.dataset.step) {\n currentStep = parseInt(item.dataset.step);\n }\n goToStep(currentStep);\n });\n });\n\n // Initialize the wizard to the first step\n goToStep(currentStep);\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const mswizard = document.querySelector(\".mswizard\");\n if (!mswizard) return;\n const progressBar = mswizard.querySelector(\".mswizard-progress\");\n const currentStepSpan = mswizard.querySelector(\"#current-step\");\n const totalStepsSpan = mswizard.querySelector(\"#total-steps\");\n const progressPercentage = mswizard.querySelector(\".progress-percentage\");\n const steps = mswizard.querySelectorAll(\".mswizard-step\");\n const totalSteps = steps.length;\n totalStepsSpan.textContent = totalSteps;\n progressBar.max = 100;\n\n function updatemswizardStep(stepNumber) {\n steps.forEach((step) => (step.style.display = \"none\"));\n mswizard.querySelector(`#step-${stepNumber}`).style.display = \"block\";\n currentStepSpan.textContent = stepNumber;\n const progressValue = ((stepNumber - 1) / (totalSteps - 1)) * 100;\n progressBar.value = progressValue;\n progressPercentage.textContent = `${Math.round(progressValue)}%`;\n const percentagePosition = progressBar.offsetWidth * (progressValue / 100) - progressPercentage.offsetWidth / 2;\n progressPercentage.style.left = `${Math.max(0, percentagePosition)}px`;\n progressPercentage.style.visibility = progressValue >= 5 ? \"visible\" : \"hidden\";\n }\n\n steps.forEach((step, index) => {\n if (index === totalSteps - 1) return; // No buttons on the last step\n\n const buttonContainer = document.createElement(\"div\");\n buttonContainer.className = \"button-container\";\n\n // Always add the Previous button except on the last step\n const prevButton = document.createElement(\"button\");\n prevButton.textContent = \"Previous\";\n prevButton.className = \"prev-btn\";\n prevButton.setAttribute(\"role\", \"button\");\n prevButton.setAttribute(\"aria-label\", `Go back to step ${index}`);\n if (index === 0) {\n prevButton.disabled = true;\n prevButton.classList.add(\"disabled\");\n } else {\n prevButton.addEventListener(\"click\", () => updatemswizardStep(index));\n }\n buttonContainer.appendChild(prevButton);\n\n // Add the Next/Finish button to all steps except the last\n const nextButton = document.createElement(\"button\");\n nextButton.textContent = index === totalSteps - 2 ? \"Finish\" : \"Next\";\n nextButton.className = \"next-btn\";\n nextButton.setAttribute(\"role\", \"button\");\n nextButton.setAttribute(\"aria-label\", `Go to step ${index + 2}`);\n nextButton.addEventListener(\"click\", () => updatemswizardStep(index + 2));\n buttonContainer.appendChild(nextButton);\n\n step.appendChild(buttonContainer);\n });\n\n updatemswizardStep(1);\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Tabs\n// ----------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const tabs = document.querySelectorAll(\".tab-nav .item\");\n\n if (tabs.length > 0) {\n function removeCurrentClass() {\n tabs.forEach((tab) => {\n tab.classList.remove(\"current\");\n });\n }\n\n function setCurrentClass(event) {\n event.preventDefault();\n removeCurrentClass();\n event.target.classList.add(\"current\");\n }\n\n tabs.forEach((tab) => {\n tab.addEventListener(\"click\", setCurrentClass);\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n//Poll\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var currentStep = 1;\n var results = { a: 0, b: 0, c: 0, d: 0 };\n\n function updateStepDisplay(step) {\n var steps = document.querySelectorAll(\".wizard-step\");\n steps.forEach(function (stepDiv) {\n stepDiv.classList.remove(\"active\");\n });\n document.querySelector(\"#step-\" + step).classList.add(\"active\");\n }\n\n function handleOptionSelect(event) {\n var selectedOption = event.target.value;\n results[selectedOption]++;\n if (currentStep < 4) {\n currentStep++;\n updateStepDisplay(currentStep);\n } else {\n // Call the showResult function immediately after the last selection\n showResult();\n }\n }\n\n function showResult() {\n // Remove the active class from all steps\n var steps = document.querySelectorAll(\".wizard-step\");\n steps.forEach(function (step) {\n step.classList.remove(\"active\");\n });\n\n // Calculate the most chosen answer\n var max = Math.max(...Object.values(results));\n var mostChosenResults = Object.keys(results).filter(function (key) {\n return results[key] === max;\n });\n\n // Take the first result if there's a tie\n var mostChosen = mostChosenResults[0];\n var resultElement = document.querySelector('#result-types [data-result=\"' + mostChosen + '\"]');\n var resultContent = resultElement ? resultElement.innerHTML : mostChosen;\n\n // Update the result div and make the result visible\n var resultDiv = document.getElementById(\"result-text\");\n if (resultDiv) {\n resultDiv.innerHTML = resultContent;\n }\n var resultContainer = document.getElementById(\"result\");\n if (resultContainer) {\n resultContainer.classList.add(\"active\"); // Ensure this class makes the element visible\n }\n }\n\n // Attaching change event listeners to radio buttons\n var wizard = document.querySelector(\".wizard\");\n if (wizard) {\n var radioButtons = wizard.querySelectorAll('input[type=\"radio\"]');\n radioButtons.forEach(function (radioButton) {\n radioButton.addEventListener(\"change\", handleOptionSelect);\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const anchors = document.querySelectorAll('a[href^=\"#\"]');\n\n if (anchors.length > 0) {\n anchors.forEach((anchor) => {\n anchor.addEventListener(\"click\", function (e) {\n const hrefAttribute = this.getAttribute(\"href\");\n\n // Skip processing if href is only '#'\n if (hrefAttribute === \"#\") {\n return;\n }\n\n e.preventDefault();\n const targetElement = document.querySelector(hrefAttribute);\n\n if (targetElement) {\n targetElement.scrollIntoView({ behavior: \"smooth\" });\n }\n });\n });\n }\n});\n","/*\n * zenCSS v2.0.2-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const banner = document.querySelector(\".cookie-consent-banner\");\n\n // Check if the banner element exists\n if (banner) {\n const acceptBtn = document.querySelector(\".accept-cookies\");\n banner.style.zIndex = \"1100\";\n\n // Check if cookies are already accepted\n if (!localStorage.getItem(\"cookies-accepted\")) {\n banner.style.display = \"block\"; // Show banner if cookies not accepted\n }\n\n // Event listener for accept button\n if (acceptBtn) {\n acceptBtn.addEventListener(\"click\", () => {\n localStorage.setItem(\"cookies-accepted\", \"true\"); // Set flag in local storage\n banner.style.display = \"none\"; // Hide banner\n });\n }\n }\n});\n"],"names":["toggleButton","ZContainer","HTMLElement","constructor","super","customElements","define","ZRow","ZCol","document","addEventListener","querySelectorAll","forEach","slider","slidesContainer","querySelector","originalSlides","Array","from","children","totalOriginalSlides","length","nextButton","prevButton","shouldAutoRotate","getAttribute","firstSlideClone","cloneNode","lastSlideClone","insertBefore","appendChild","autoRotate","currentIndex","isTransitioning","startAutoRotate","setInterval","moveToNext","stopAutoRotate","clearInterval","updateSlidePosition","style","transform","transition","setTimeout","closeAllDropdowns","dropdown","display","link","event","preventDefault","dropdownContent","nextElementSibling","window","onclick","target","matches","preloadImage","src","Image","gallery","modal","paginationNav","currentPage","imagesPerPage","currentModalIndex","imageWrappers","img","index","wrapper","createElement","clonedImg","openModal","push","totalPages","Math","ceil","updateImagesForPage","pageNumber","start","end","updatePaginationNav","innerHTML","i","classCurrent","text","modalBody","shadowRoot","modalWrapper","modalHeader","currentWidth","clientWidth","currentHeight","clientHeight","minWidth","minHeight","imageContainer","position","justifyContent","prevArrow","className","cursor","top","left","padding","backgroundColor","newImg","firstChild","modalImage","onload","maxWidth","maxHeight","objectFit","margin","nextArrow","right","modalText","textContent","textAlign","overflowY","innerWidth","nextIndex","prevIndex","open","tagName","dataset","page","newPage","parseInt","accordionToggles","accordionToggle","isExpanding","this","otherToggle","classList","remove","setAttribute","otherIcon","add","otherPanel","icon","panel","scrollHeight","yearSpan","getElementById","currentYear","Date","getFullYear","toggle","iconOff","iconOn","item","contentId","content","el","id","cornerPopup","button","popup","console","log","table","headers","map","th","trim","row","cell","menuItems","unreadResetTime","localStorage","getItem","getTime","removeAttribute","resetTime","setItem","elementsToAnimate","observer","IntersectionObserver","entries","entry","isIntersecting","threshold","observe","zenElements","element","isDarkModeEnabled","some","contains","lazyImages","slice","call","lazyImageObserver","lazyImage","unobserve","container","imgUrl","backgroundImage","backgroundSize","backgroundPosition","hamburgerButton","closeButton","nav","navLinks","toggleMenu","ZModal","attachShadow","mode","render","connectedCallback","close","currentTarget","key","openModalButton","StarComponent","observedAttributes","attributeChangedCallback","name","oldValue","newValue","starCount","half","fragment","createDocumentFragment","starImg","alt","halfStarImg","tryToShowModal","modalClosedTime","shouldShowModal","closeModal","span","e","clientY","steps","navItems","currentStep","totalSteps","goToStep","stepNumber","step","toString","direction","mswizard","progressBar","currentStepSpan","totalStepsSpan","progressPercentage","updatemswizardStep","progressValue","value","round","percentagePosition","offsetWidth","max","visibility","buttonContainer","disabled","tabs","setCurrentClass","tab","results","a","b","c","d","handleOptionSelect","selectedOption","stepDiv","Object","values","mostChosen","keys","filter","resultElement","resultContent","resultDiv","resultContainer","showResult","wizard","radioButton","anchors","anchor","hrefAttribute","targetElement","scrollIntoView","behavior","banner","acceptBtn","zIndex","selector","toggleClassOnElements"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"zencss.min.js","mappings":"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","sources":["webpack:///./modules/test-mode.js","webpack:///./modules/custom-elements.js","webpack:///./modules/carousel.js","webpack:///./modules/dropdown.js","webpack:///./modules/image-gallery.js","webpack:///./modules/accordian.js","webpack:///./modules/misc.js","webpack:///./modules/dark-mode.js","webpack:///./modules/lazy-load.js","webpack:///./modules/background-image.js","webpack:///./modules/mobile-nav.js","webpack:///./modules/modal.js","webpack:///./modules/star-component.js","webpack:///./modules/exit-intent.js","webpack:///./modules/wizard.js","webpack:///./modules/multistep-wizard.js","webpack:///./modules/tabs.js","webpack:///./modules/poll.js","webpack:///./modules/link-scroll.js","webpack:///./modules/cookie-consent.js"],"sourcesContent":["/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n//Toggle test mode\n//--------------------------------------------------------\n\nvar toggleButton = document.getElementById(\"toggleButton\");\n\nif (toggleButton) {\n toggleButton.addEventListener(\"click\", function () {\n const toggleClassOnElements = (selector, className) => {\n const elements = document.querySelectorAll(selector);\n elements.forEach((element) => {\n element.classList.toggle(className);\n });\n };\n\n const selectorsAndClasses = [\n [\"z-container\", \"z-container-outline-on\"],\n [\"z-container-fluid\", \"z-container-fluid-outline-on\"],\n [\"z-row\", \"z-row-outline-on\"],\n [\"z-col\", \"z-col-outline-on\"],\n [\"p\", \"p-outline-on\"],\n [\"h1\", \"h1-outline-on\"],\n [\"h2\", \"h2-outline-on\"],\n [\"h3\", \"h3-outline-on\"],\n [\"h4\", \"h4-outline-on\"],\n [\"h5\", \"h5-outline-on\"],\n [\"h6\", \"h6-outline-on\"],\n [\".center-line\", \"center-line-outline-on\"],\n ];\n\n selectorsAndClasses.forEach(([selector, className]) => {\n toggleClassOnElements(selector, className);\n });\n });\n}\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Define zenCSS elements for use in JS\n// ----------------------------------------\n\n// Define z-container custom element\nclass ZContainer extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-container\", ZContainer);\n\n// Define z-row custom element\nclass ZRow extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-row\", ZRow);\n\n// Define z-col custom element\nclass ZCol extends HTMLElement {\n constructor() {\n super();\n }\n}\n\ncustomElements.define(\"z-col\", ZCol);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const sliders = document.querySelectorAll(\".slider\");\n\n sliders.forEach((slider) => {\n const slidesContainer = slider.querySelector(\".slides-container\");\n const originalSlides = Array.from(slidesContainer.children);\n const totalOriginalSlides = originalSlides.length;\n const nextButton = slider.querySelector(\".next\");\n const prevButton = slider.querySelector(\".prev\");\n const shouldAutoRotate = slider.getAttribute(\"data-auto-rotate\") === \"true\";\n\n // Clone the first and last slides to create an infinite loop effect\n const firstSlideClone = originalSlides[0].cloneNode(true);\n const lastSlideClone = originalSlides[totalOriginalSlides - 1].cloneNode(true);\n slidesContainer.insertBefore(lastSlideClone, originalSlides[0]);\n slidesContainer.appendChild(firstSlideClone);\n\n let currentIndex = 1; // Start from the first original slide (not the clone)\n let isTransitioning = false;\n let autoRotate;\n\n // Function to start auto-rotating\n function startAutoRotate() {\n if (shouldAutoRotate) {\n autoRotate = setInterval(moveToNext, 4000);\n }\n }\n\n // Function to stop auto-rotating\n function stopAutoRotate() {\n clearInterval(autoRotate);\n }\n\n // Initialize position to the first original slide\n slidesContainer.style.transition = \"none\";\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n\n // Re-enable transitions after initial positioning\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n\n function updateSlidePosition() {\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n }\n\n function moveToNext() {\n if (isTransitioning) return;\n currentIndex++;\n isTransitioning = true;\n updateSlidePosition();\n }\n\n function moveToPrev() {\n if (isTransitioning) return;\n currentIndex--;\n isTransitioning = true;\n updateSlidePosition();\n }\n\n slidesContainer.addEventListener(\"transitionend\", () => {\n if (currentIndex >= totalOriginalSlides + 1) {\n slidesContainer.style.transition = \"none\";\n currentIndex = 1;\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n } else if (currentIndex === 0) {\n slidesContainer.style.transition = \"none\";\n currentIndex = totalOriginalSlides;\n slidesContainer.style.transform = `translateX(-${currentIndex * 100}%)`;\n setTimeout(() => {\n slidesContainer.style.transition = \"transform 0.5s ease\";\n }, 0);\n }\n isTransitioning = false;\n });\n\n nextButton.addEventListener(\"click\", moveToNext);\n prevButton.addEventListener(\"click\", moveToPrev);\n\n // Event listeners to stop/start auto-rotating\n slidesContainer.addEventListener(\"mouseenter\", stopAutoRotate);\n slidesContainer.addEventListener(\"mouseleave\", startAutoRotate);\n nextButton.addEventListener(\"mouseenter\", stopAutoRotate);\n nextButton.addEventListener(\"mouseleave\", startAutoRotate);\n prevButton.addEventListener(\"mouseenter\", stopAutoRotate);\n prevButton.addEventListener(\"mouseleave\", startAutoRotate);\n\n // Start auto-rotating for this slider\n startAutoRotate();\n });\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n// Dropdown\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var dropdownLinks = document.querySelectorAll(\".dropdown .dropdown-link\");\n\n dropdownLinks.forEach(function (link) {\n link.addEventListener(\"click\", function (event) {\n event.preventDefault();\n\n // Toggle the dropdown content visibility\n var dropdownContent = link.nextElementSibling;\n if (dropdownContent.style.display === \"block\") {\n dropdownContent.style.display = \"none\";\n } else {\n // Close all open dropdowns before opening the new one\n closeAllDropdowns();\n dropdownContent.style.display = \"block\";\n }\n });\n });\n});\n\nfunction closeAllDropdowns() {\n var dropdowns = document.querySelectorAll(\".dropdown .dropdown-content\");\n dropdowns.forEach(function (dropdown) {\n dropdown.style.display = \"none\";\n });\n}\n\n// Close all dropdowns when clicking outside\nwindow.onclick = function (event) {\n if (!event.target.matches(\".dropdown-link\")) {\n closeAllDropdowns();\n }\n};\n","// /*\n// * zenCSS v2.1.0-beta (https://zencss.com/)\n// * Copyright 2022-2024 Shaun Mackey\n// * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n// */\n\n//12/29 removing lazy load\n\n/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\nfunction preloadImage(src) {\n const img = new Image();\n img.src = src;\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const gallery = document.querySelector(\".image-gallery\");\n const modal = document.querySelector(\"z-modal\");\n const paginationNav = document.querySelector(\".pagination-nav\");\n\n if (gallery && modal && paginationNav) {\n let currentPage = 1;\n const imagesPerPage = 15;\n let currentModalIndex = 0;\n const imageWrappers = [];\n\n Array.from(gallery.children).forEach((img, index) => {\n const wrapper = document.createElement(\"div\");\n wrapper.style.display = index < imagesPerPage ? \"block\" : \"none\";\n const clonedImg = img.cloneNode(true);\n clonedImg.addEventListener(\"click\", () => {\n currentModalIndex = index;\n openModal(clonedImg.src, clonedImg.getAttribute(\"data-text\"), index);\n });\n wrapper.appendChild(clonedImg);\n imageWrappers.push(wrapper);\n });\n\n const totalPages = Math.ceil(imageWrappers.length / imagesPerPage);\n\n function updateImagesForPage(pageNumber) {\n imageWrappers.forEach((wrapper, index) => {\n const start = (pageNumber - 1) * imagesPerPage;\n const end = start + imagesPerPage;\n wrapper.style.display = index >= start && index < end ? \"block\" : \"none\";\n });\n }\n\n function updatePaginationNav() {\n paginationNav.innerHTML = '«';\n for (let i = 1; i <= totalPages; i++) {\n const classCurrent = i === currentPage ? \"current\" : \"\";\n paginationNav.innerHTML += `${i}`;\n }\n paginationNav.innerHTML += '»';\n }\n\n function openModal(src, text, index) {\n currentModalIndex = index;\n const modalBody = modal.shadowRoot.querySelector(\".modal-body\");\n const modalWrapper = modal.shadowRoot.querySelector(\".modal-wrapper\");\n const modalHeader = modal.shadowRoot.querySelector(\".modal-header\");\n\n if (modalBody && modalWrapper && modalHeader) {\n const currentWidth = modalWrapper.clientWidth;\n const currentHeight = modalWrapper.clientHeight;\n modalWrapper.style.minWidth = `${currentWidth}px`;\n modalWrapper.style.minHeight = `${currentHeight}px`;\n\n modalBody.innerHTML = \"\";\n const imageContainer = document.createElement(\"div\");\n imageContainer.style.display = \"flex\";\n imageContainer.style.position = \"relative\";\n imageContainer.style.justifyContent = \"center\";\n\n const prevArrow = document.createElement(\"div\");\n prevArrow.className = \"prev arrow theme-dark\";\n prevArrow.innerHTML = \"❮\";\n prevArrow.style.cursor = \"pointer\";\n prevArrow.style.position = \"absolute\";\n prevArrow.style.top = \"50%\";\n prevArrow.style.left = \"7px\";\n prevArrow.style.padding = \"10px\";\n prevArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n prevArrow.style.transform = \"translateY(-50%)\";\n prevArrow.onclick = function () {\n currentModalIndex = currentModalIndex > 0 ? currentModalIndex - 1 : imageWrappers.length - 1;\n const newImg = imageWrappers[currentModalIndex].firstChild;\n openModal(newImg.src, newImg.getAttribute(\"data-text\"), currentModalIndex);\n };\n imageContainer.appendChild(prevArrow);\n\n const modalImage = document.createElement(\"img\");\n modalImage.onload = () => {\n modalWrapper.style.minWidth = \"\";\n modalWrapper.style.minHeight = \"\";\n };\n modalImage.src = src;\n modalImage.style.maxWidth = \"100%\";\n modalImage.style.maxHeight = \"60vh\";\n modalImage.style.objectFit = \"contain\";\n modalImage.style.margin = \"auto\";\n imageContainer.appendChild(modalImage);\n\n const nextArrow = document.createElement(\"div\");\n nextArrow.className = \"next arrow theme-dark\";\n nextArrow.innerHTML = \"❯\";\n nextArrow.style.cursor = \"pointer\";\n nextArrow.style.position = \"absolute\";\n nextArrow.style.padding = \"10px\";\n nextArrow.style.top = \"50%\";\n nextArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n nextArrow.style.right = \"7px\";\n nextArrow.style.transform = \"translateY(-50%)\";\n nextArrow.onclick = function () {\n currentModalIndex = currentModalIndex < imageWrappers.length - 1 ? currentModalIndex + 1 : 0;\n const newImg = imageWrappers[currentModalIndex].firstChild;\n openModal(newImg.src, newImg.getAttribute(\"data-text\"), currentModalIndex);\n };\n imageContainer.appendChild(nextArrow);\n\n modalBody.appendChild(imageContainer);\n\n const modalText = document.createElement(\"p\");\n modalText.textContent = text;\n modalText.style.textAlign = \"center\";\n modalBody.appendChild(modalText);\n\n modalBody.style.overflowY = \"auto\";\n modalBody.style.maxHeight = \"80vh\";\n modalHeader.style.display = \"none\";\n\n modalWrapper.style.maxWidth = window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n\n const nextIndex = (index + 1) % imageWrappers.length;\n const prevIndex = (index - 1 + imageWrappers.length) % imageWrappers.length;\n preloadImage(imageWrappers[nextIndex].firstChild.src);\n preloadImage(imageWrappers[prevIndex].firstChild.src);\n\n modal.open();\n }\n }\n\n paginationNav.addEventListener(\"click\", function (event) {\n event.preventDefault();\n const target = event.target;\n if (target.tagName === \"A\" && target.dataset.page) {\n let newPage = currentPage;\n if (target.dataset.page === \"prev\") {\n newPage = currentPage > 1 ? currentPage - 1 : totalPages;\n } else if (target.dataset.page === \"next\") {\n newPage = currentPage < totalPages ? currentPage + 1 : 1;\n } else {\n newPage = parseInt(target.dataset.page);\n }\n\n if (newPage !== currentPage) {\n currentPage = newPage;\n updateImagesForPage(currentPage);\n updatePaginationNav();\n }\n }\n });\n\n window.addEventListener(\"resize\", function () {\n const modalWrapper = modal.shadowRoot.querySelector(\".modal-wrapper\");\n if (modalWrapper) {\n modalWrapper.style.maxWidth = window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n }\n });\n\n gallery.innerHTML = \"\";\n imageWrappers.forEach((wrapper) => gallery.appendChild(wrapper));\n updateImagesForPage(currentPage);\n updatePaginationNav();\n }\n});\n\n// function preloadImage(src) {\n// const img = new Image();\n// img.src = src;\n// }\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const gallery = document.querySelector(\".image-gallery\");\n// const modal = document.querySelector(\"z-modal\");\n// const paginationNav = document.querySelector(\".pagination-nav\");\n\n// if (gallery && modal && paginationNav) {\n// let currentPage = 1;\n// const imagesPerPage = 15;\n// let currentModalIndex = 0;\n// const imageWrappers = [];\n\n// Array.from(gallery.children).forEach((img, index) => {\n// const wrapper = document.createElement(\"div\");\n// wrapper.classList.add(\"lazy-load\"); // using the lazy-load class\n// wrapper.style.display = index < imagesPerPage ? \"block\" : \"none\";\n// const clonedImg = img.cloneNode(true);\n// clonedImg.addEventListener(\"click\", () => {\n// currentModalIndex = index;\n// openModal(\n// clonedImg.src,\n// clonedImg.getAttribute(\"data-text\"),\n// index,\n// );\n// });\n// wrapper.appendChild(clonedImg);\n// imageWrappers.push(wrapper);\n// });\n\n// const totalPages = Math.ceil(imageWrappers.length / imagesPerPage);\n\n// function updateImagesForPage(pageNumber) {\n// imageWrappers.forEach((wrapper, index) => {\n// const start = (pageNumber - 1) * imagesPerPage;\n// const end = start + imagesPerPage;\n// wrapper.style.display =\n// index >= start && index < end ? \"block\" : \"none\";\n// });\n// }\n\n// function updatePaginationNav() {\n// paginationNav.innerHTML =\n// '«';\n// for (let i = 1; i <= totalPages; i++) {\n// const classCurrent = i === currentPage ? \"current\" : \"\";\n// paginationNav.innerHTML += `${i}`;\n// }\n// paginationNav.innerHTML +=\n// '»';\n// }\n\n// function openModal(src, text, index) {\n// currentModalIndex = index;\n// const modalBody = modal.shadowRoot.querySelector(\".modal-body\");\n// const modalWrapper =\n// modal.shadowRoot.querySelector(\".modal-wrapper\");\n// const modalHeader = modal.shadowRoot.querySelector(\".modal-header\");\n\n// if (modalBody && modalWrapper && modalHeader) {\n// const currentWidth = modalWrapper.clientWidth;\n// const currentHeight = modalWrapper.clientHeight;\n// modalWrapper.style.minWidth = `${currentWidth}px`;\n// modalWrapper.style.minHeight = `${currentHeight}px`;\n\n// modalBody.innerHTML = \"\";\n// const imageContainer = document.createElement(\"div\");\n// imageContainer.style.display = \"flex\";\n// imageContainer.style.position = \"relative\";\n// imageContainer.style.justifyContent = \"center\";\n\n// const prevArrow = document.createElement(\"div\");\n// prevArrow.className = \"prev arrow theme-dark\";\n// prevArrow.innerHTML = \"❮\";\n// prevArrow.style.cursor = \"pointer\";\n// prevArrow.style.position = \"absolute\";\n// prevArrow.style.top = \"50%\";\n// prevArrow.style.left = \"7px\";\n// prevArrow.style.padding = \"10px\";\n// prevArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n// prevArrow.style.transform = \"translateY(-50%)\";\n// prevArrow.onclick = function () {\n// currentModalIndex =\n// currentModalIndex > 0\n// ? currentModalIndex - 1\n// : imageWrappers.length - 1;\n// const newImg = imageWrappers[currentModalIndex].firstChild;\n// openModal(\n// newImg.src,\n// newImg.getAttribute(\"data-text\"),\n// currentModalIndex,\n// );\n// };\n// imageContainer.appendChild(prevArrow);\n\n// const modalImage = document.createElement(\"img\");\n// modalImage.onload = () => {\n// modalWrapper.style.minWidth = \"\";\n// modalWrapper.style.minHeight = \"\";\n// };\n// modalImage.src = src;\n// modalImage.style.maxWidth = \"100%\";\n// modalImage.style.maxHeight = \"60vh\";\n// modalImage.style.objectFit = \"contain\";\n// modalImage.style.margin = \"auto\";\n// imageContainer.appendChild(modalImage);\n\n// const nextArrow = document.createElement(\"div\");\n// nextArrow.className = \"next arrow theme-dark\";\n// nextArrow.innerHTML = \"❯\";\n// nextArrow.style.cursor = \"pointer\";\n// nextArrow.style.position = \"absolute\";\n// nextArrow.style.padding = \"10px\";\n// nextArrow.style.top = \"50%\";\n// nextArrow.style.backgroundColor = \"rgba(255,255,255,.5)\";\n// nextArrow.style.right = \"7px\";\n// nextArrow.style.transform = \"translateY(-50%)\";\n// nextArrow.onclick = function () {\n// currentModalIndex =\n// currentModalIndex < imageWrappers.length - 1\n// ? currentModalIndex + 1\n// : 0;\n// const newImg = imageWrappers[currentModalIndex].firstChild;\n// openModal(\n// newImg.src,\n// newImg.getAttribute(\"data-text\"),\n// currentModalIndex,\n// );\n// };\n// imageContainer.appendChild(nextArrow);\n\n// modalBody.appendChild(imageContainer);\n\n// const modalText = document.createElement(\"p\");\n// modalText.textContent = text;\n// modalText.style.textAlign = \"center\";\n// modalBody.appendChild(modalText);\n\n// modalBody.style.overflowY = \"auto\";\n// modalBody.style.maxHeight = \"80vh\";\n// modalHeader.style.display = \"none\";\n\n// modalWrapper.style.maxWidth =\n// window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n\n// const nextIndex = (index + 1) % imageWrappers.length;\n// const prevIndex =\n// (index - 1 + imageWrappers.length) % imageWrappers.length;\n// preloadImage(imageWrappers[nextIndex].firstChild.src);\n// preloadImage(imageWrappers[prevIndex].firstChild.src);\n\n// modal.open();\n// }\n// }\n\n// paginationNav.addEventListener(\"click\", function (event) {\n// event.preventDefault();\n// const target = event.target;\n// if (target.tagName === \"A\" && target.dataset.page) {\n// let newPage = currentPage;\n// if (target.dataset.page === \"prev\") {\n// newPage = currentPage > 1 ? currentPage - 1 : totalPages;\n// } else if (target.dataset.page === \"next\") {\n// newPage = currentPage < totalPages ? currentPage + 1 : 1;\n// } else {\n// newPage = parseInt(target.dataset.page);\n// }\n\n// if (newPage !== currentPage) {\n// currentPage = newPage;\n// updateImagesForPage(currentPage);\n// updatePaginationNav();\n// }\n// }\n// });\n\n// window.addEventListener(\"resize\", function () {\n// const modalWrapper =\n// modal.shadowRoot.querySelector(\".modal-wrapper\");\n// if (modalWrapper) {\n// modalWrapper.style.maxWidth =\n// window.innerWidth >= 1070 ? \"860px\" : \"80%\";\n// }\n// });\n\n// gallery.innerHTML = \"\";\n// imageWrappers.forEach((wrapper) => gallery.appendChild(wrapper));\n// updateImagesForPage(currentPage);\n// updatePaginationNav();\n// }\n// });\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var accordionToggles = document.querySelectorAll(\".accordion-toggle\");\n\n accordionToggles.forEach(function (accordionToggle) {\n accordionToggle.addEventListener(\"click\", function () {\n // Determine if the clicked toggle is being expanded\n var isExpanding = this.getAttribute(\"aria-expanded\") === \"false\";\n\n // Remove active class from all toggles and reset icons\n accordionToggles.forEach(function (otherToggle) {\n otherToggle.classList.remove(\"active-toggle\");\n otherToggle.setAttribute(\"aria-expanded\", \"false\");\n\n var otherIcon = otherToggle.querySelector(\".zenicon-keyboard-arrow-right, .zenicon-keyboard-arrow-down\");\n if (otherIcon) {\n otherIcon.classList.remove(\"zenicon-keyboard-arrow-down\");\n otherIcon.classList.add(\"zenicon-keyboard-arrow-right\");\n }\n\n var otherPanel = otherToggle.nextElementSibling;\n otherPanel.style.maxHeight = null;\n otherPanel.setAttribute(\"aria-hidden\", \"true\"); // Hide other panels\n });\n\n // Set the clicked toggle as active if it's expanding\n if (isExpanding) {\n this.classList.add(\"active-toggle\");\n this.setAttribute(\"aria-expanded\", \"true\");\n\n var icon = this.querySelector(\".zenicon-keyboard-arrow-right, .zenicon-keyboard-arrow-down\");\n if (icon) {\n icon.classList.remove(\"zenicon-keyboard-arrow-right\");\n icon.classList.add(\"zenicon-keyboard-arrow-down\");\n }\n\n var panel = this.nextElementSibling;\n panel.style.maxHeight = panel.scrollHeight > 200 ? \"1000px\" : panel.scrollHeight + 10 + \"px\";\n panel.setAttribute(\"aria-hidden\", \"false\"); // Show the current panel\n }\n });\n });\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n// Dynamic year in footer\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const yearSpan = document.getElementById(\"current-year\");\n if (yearSpan) {\n const currentYear = new Date().getFullYear();\n yearSpan.textContent = currentYear;\n }\n});\n\n//-------------------------------------\n// icon toggle\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var iconToggles = document.querySelectorAll(\".icon-toggle\");\n\n iconToggles.forEach(function (toggle) {\n toggle.addEventListener(\"click\", function () {\n var iconOff = this.querySelector(\".icon-off\");\n var iconOn = this.querySelector(\".icon-on\");\n\n // Toggle the 'show' class\n iconOff.classList.toggle(\"show\");\n iconOn.classList.toggle(\"show\");\n });\n });\n});\n\n// New stuff here after modules were created. If we need to revert, include this stuff.\ndocument.querySelectorAll(\".accordion-toggle\").forEach((item) => {\n item.addEventListener(\"click\", (event) => {\n event.preventDefault();\n\n const contentId = item.getAttribute(\"aria-controls\");\n const content = document.getElementById(contentId);\n\n // Close other expanded contents\n document.querySelectorAll(\".expanded-content\").forEach((el) => {\n if (el.id !== contentId) {\n el.classList.remove(\"show\");\n el.style.overflowY = \"hidden\";\n }\n });\n\n // Toggle current content\n content.classList.toggle(\"show\");\n\n setTimeout(() => {\n if (content.scrollHeight > content.clientHeight) {\n content.style.overflowY = \"auto\";\n } else {\n content.style.overflowY = \"hidden\";\n }\n }, 500);\n });\n});\n\n//-------------------------------------\n// Corner Popup\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var cornerPopup = document.querySelector(\".corner-popup\");\n\n if (cornerPopup) {\n var button = cornerPopup.querySelector(\"button\");\n var popup = cornerPopup.querySelector(\"div\");\n\n popup.classList.add(\"card\");\n\n button.addEventListener(\"click\", function () {\n popup.classList.toggle(\"hidden\");\n console.log(\"Button clicked\");\n });\n }\n});\n\n//-------------------------------------\n// Responsive Table\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n // Function to apply data labels to a table\n function applyDataLabelsToTable(table) {\n // Get all the headers from the direct child thead of the table\n const headers = Array.from(table.querySelectorAll(\":scope > thead > tr > th\")).map((th) => th.textContent.trim());\n\n // Iterate over each row in the direct child tbody of the table\n table.querySelectorAll(\":scope > tbody > tr\").forEach((row) => {\n // Get all cells (td) in this row\n row.querySelectorAll(\":scope > td\").forEach((cell, index) => {\n // Assign the corresponding header text to the data-label attribute of the cell\n if (headers[index]) {\n cell.setAttribute(\"data-label\", headers[index]);\n }\n });\n });\n }\n\n // Select all tables with class 'responsive-table' and apply data labels to each\n document.querySelectorAll(\".responsive-table\").forEach(applyDataLabelsToTable);\n});\n\n//-------------------------------------\n// Lazy Load Test - WIP\n//-------------------------------------\n\n// document.addEventListener(\"DOMContentLoaded\", function() {\n// const lazyLoadImages = document.querySelectorAll(\"img.lazy-load\");\n\n// if (lazyLoadImages.length > 0) {\n// const imageObserver = new IntersectionObserver(function(entries, observer) {\n// entries.forEach(function(entry) {\n// if (entry.isIntersecting) {\n// const image = entry.target;\n// image.src = image.dataset.src;\n// image.classList.remove(\"lazy-load\");\n// imageObserver.unobserve(image);\n// }\n// });\n// });\n\n// lazyLoadImages.forEach(function(image) {\n// imageObserver.observe(image);\n// });\n// }\n// });\n\n//-------------------------------------\n// Tabbed Card\n//-------------------------------------\n\n// function showTab(tabNumber) {\n// const tabbedCard = document.querySelector(\".tabbed-card\");\n// if (tabbedCard) {\n// const tabs = tabbedCard.querySelectorAll(\".tab\");\n// const tabContents = tabbedCard.querySelectorAll(\".tab-content\");\n\n// if (tabs.length && tabContents.length) {\n// tabs.forEach((tab, index) => {\n// if (index + 1 === tabNumber) {\n// tab.classList.add(\"active\");\n// if (tabContents[index]) {\n// tabContents[index].classList.add(\"active\");\n// }\n// } else {\n// tab.classList.remove(\"active\");\n// if (tabContents[index]) {\n// tabContents[index].classList.remove(\"active\");\n// }\n// }\n// });\n// }\n// }\n// }\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const tabs = document.querySelectorAll(\".tab\");\n// if (tabs.length) {\n// tabs.forEach((tab) => {\n// tab.addEventListener(\"click\", function () {\n// const tabNumber = parseInt(tab.getAttribute(\"data-tab\"));\n// showTab(tabNumber);\n// });\n// });\n// }\n// });\n\n//-------------------------------------\n// side menus\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Select all the menu items\n const menuItems = document.querySelectorAll(\".nav-menu li\");\n\n // Only proceed if menu items exist\n if (menuItems.length) {\n menuItems.forEach((item) => {\n // Add click event listener to each menu item\n item.addEventListener(\"click\", function () {\n // Remove the 'active' class from all items\n menuItems.forEach((i) => i.classList.remove(\"active\"));\n\n // Add the 'active' class to the clicked item\n this.classList.add(\"active\");\n });\n });\n }\n});\n\n//-------------------------------------\n// unread notifications\n//-------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var button = document.querySelector(\".btn-circle\");\n\n // Check if the button exists\n if (button) {\n // Restore the data-unread attribute if 24 hours have not passed\n var unreadResetTime = localStorage.getItem(\"unreadResetTime\");\n if (unreadResetTime && new Date().getTime() < unreadResetTime) {\n button.removeAttribute(\"data-unread\");\n }\n\n // Add click event listener to the button\n button.addEventListener(\"click\", function () {\n // Remove data-unread attribute and set the reset time in localStorage\n button.removeAttribute(\"data-unread\");\n var resetTime = new Date().getTime() + 24 * 60 * 60 * 1000; // 24 hours from now\n localStorage.setItem(\"unreadResetTime\", resetTime);\n });\n }\n});\n\n//-------------------------------------\n// fade in animation\n//-------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const elementsToAnimate = document.querySelectorAll(\".fade-in\");\n\n if (elementsToAnimate.length > 0) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n entry.target.classList.add(\"visible\");\n }\n });\n },\n {\n threshold: 0.3,\n },\n );\n\n elementsToAnimate.forEach((el) => observer.observe(el));\n }\n});\n\n// //pie charts\n// document.addEventListener('DOMContentLoaded', () => {\n// const chart = document.querySelector('.zen-pie-chart');\n// let accumulatedRotation = 0;\n\n// document.querySelectorAll('.zen-pie-chart .zen-slice').forEach(slice => {\n// const percentage = parseFloat(slice.dataset.percentage);\n// const rotation = 360 * (percentage / 100);\n// const sliceRotation = accumulatedRotation + rotation / 2;\n\n// // Set styles and classes for the slice\n// slice.style.transform = `rotate(${sliceRotation}deg)`;\n// slice.style.clip = `rect(0px, ${chart.clientWidth}px, ${chart.clientWidth}px, ${chart.clientWidth / 2}px)`;\n// slice.style.backgroundColor = getComputedStyle(slice).backgroundColor;\n// slice.style.opacity = '1';\n\n// // For more than 50%, create an overlay slice to simulate the additional percentage\n// if (percentage > 50) {\n// let overlaySlice = document.createElement('div');\n// overlaySlice.classList.add('zen-slice', 'overlay');\n// overlaySlice.style.backgroundColor = slice.style.backgroundColor;\n// overlaySlice.style.position = 'absolute';\n// overlaySlice.style.width = '100%';\n// overlaySlice.style.height = '100%';\n// overlaySlice.style.transform = `rotate(${sliceRotation + 180}deg)`;\n// overlaySlice.style.clip = `rect(0px, ${chart.clientWidth}px, ${chart.clientWidth}px, ${chart.clientWidth / 2}px)`;\n// chart.appendChild(overlaySlice);\n// }\n\n// accumulatedRotation += rotation;\n// });\n// });\n\n//-------------------------------------\n// Pattern Interrupt\n//-------------------------------------\n// document.addEventListener('DOMContentLoaded', function() {\n// var modalShown = false;\n// var modal = document.querySelector('.pattern-interrupt');\n// var modal2 = document.querySelector('.modal');\n\n// function showModal() {\n// if (!modal) return; // Exit if no modal found\n\n// // Center the modal in the viewport\n// modal.style.display = 'block';\n// modal2.style.display = 'block';\n// modal.style.position = 'fixed'; // Fixed position\n// modal.style.top = '50%'; // Center vertically\n// modal.style.left = '50%'; // Center horizontally\n// modal.style.transform = 'translate(-50%, -50%)'; // Adjust for modal's dimensions\n\n// modalShown = true;\n// }\n\n// function checkScroll() {\n// if (modalShown) return; // Skip if the modal is already shown\n\n// var scrollPosition = window.pageYOffset || document.documentElement.scrollTop;\n// var totalHeight = document.documentElement.scrollHeight - document.documentElement.clientHeight;\n// var scrolledPercentage = (scrollPosition / totalHeight) * 100;\n\n// if (scrolledPercentage > 10) {\n// showModal();\n// }\n// }\n\n// // Attach the scroll event listener only if the modal exists\n// if (modal) {\n// window.addEventListener('scroll', checkScroll);\n// }\n// });\n\n//-------------------------------------\n// Dynamic Navigation\n//-------------------------------------\n// document.addEventListener('DOMContentLoaded', function() {\n// const header = document.querySelector('.header-sticky.slide-down');\n// console.log(\"Script running\");\n// if (header) {\n// fetch('../docs/navigation.html') // Assuming navigation.html is in the /docs folder\n// .then(response => response.text())\n// .then(data => {\n// header.innerHTML = data;\n// })\n// .catch(error => console.error('Error loading navigation:', error));\n// }\n// });\n\n// //-------------------------------------\n// // Video Player\n// //-------------------------------------\n\n// class VideoPlayer extends HTMLElement {\n// constructor() {\n// super();\n// const shadowRoot = this.attachShadow({ mode: 'open' });\n\n// const style = document.createElement('style');\n// style.textContent = `\n\n// `;\n\n// const container = document.createElement('div');\n// container.className = 'video-container';\n\n// const video = document.createElement('video');\n// video.className = 'video-player';\n// video.controls = true;\n\n// const src = this.getAttribute('src');\n// if (src) {\n// const source = document.createElement('source');\n// source.src = src;\n// source.type = 'video/mp4';\n// video.appendChild(source);\n// } else {\n// console.error('Video source not provided for .');\n// }\n\n// container.appendChild(video);\n// shadowRoot.appendChild(style);\n// shadowRoot.appendChild(container);\n// }\n// }\n\n// customElements.define('video-player', VideoPlayer);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n// Toggle Dark Mode Option\n//--------------------------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n function toggleDarkMode() {\n const zenElements = document.querySelectorAll(\".zen\");\n\n zenElements.forEach((element) => {\n element.classList.toggle(\"zen-dark\");\n });\n\n const isDarkModeEnabled = Array.from(zenElements).some((element) => element.classList.contains(\"zen-dark\"));\n localStorage.setItem(\"darkMode\", isDarkModeEnabled);\n }\n\n const toggleButton = document.getElementById(\"toggleDarkMode\");\n if (toggleButton) {\n toggleButton.addEventListener(\"click\", toggleDarkMode);\n }\n\n const storedDarkMode = localStorage.getItem(\"darkMode\");\n if (storedDarkMode === \"true\") {\n const zenElements = document.querySelectorAll(\".zen\");\n zenElements.forEach((element) => {\n element.classList.add(\"zen-dark\");\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var lazyImages = [].slice.call(document.querySelectorAll(\".zen img.lazy-load\"));\n\n if (lazyImages.length === 0) {\n //console.log('No lazy-load images found.');\n return;\n }\n\n if (\"IntersectionObserver\" in window) {\n let lazyImageObserver = new IntersectionObserver(function (entries, observer) {\n entries.forEach(function (entry) {\n if (entry.isIntersecting) {\n let lazyImage = entry.target;\n // Set onload before changing the src\n lazyImage.onload = function () {\n this.classList.remove(\"lazy-load\");\n //console.log('Lazy-load class removed:', this);\n };\n lazyImage.src = lazyImage.dataset.src;\n lazyImageObserver.unobserve(lazyImage);\n }\n });\n });\n\n lazyImages.forEach(function (lazyImage) {\n lazyImageObserver.observe(lazyImage);\n });\n } else {\n lazyImages.forEach(function (lazyImage) {\n lazyImage.onload = function () {\n this.classList.remove(\"lazy-load\");\n //console.log('Lazy-load class removed:', this);\n };\n lazyImage.src = lazyImage.dataset.src;\n });\n }\n});\n\n//old depricated - leaving for now to reference to what was done for image gallery\n\n// document.addEventListener(\"DOMContentLoaded\", function () {\n// const images = document.querySelectorAll(\".lazy-load\");\n\n// if (images.length > 0) {\n// const imageObserver = new IntersectionObserver((entries, observer) => {\n// entries.forEach((entry) => {\n// if (entry.isIntersecting) {\n// const image = entry.target;\n// image.setAttribute(\"aria-busy\", \"true\"); // Indicate loading\n// const newSrc = image.getAttribute(\"data-src\");\n\n// // Create a new Image to load in the background\n// const img = new Image();\n// img.onload = function () {\n// image.src = newSrc; // Set src when fully loaded\n// image.removeAttribute(\"aria-busy\"); // Remove loading indication\n// };\n// img.src = newSrc;\n\n// image.classList.remove(\"lazy-load\");\n// observer.unobserve(image);\n// }\n// });\n// });\n\n// images.forEach((image) => {\n// imageObserver.observe(image);\n// });\n// }\n// });\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n//Background image\n//--------------------------------------------------------\n\nwindow.addEventListener(\"DOMContentLoaded\", function () {\n var imageContainers = document.querySelectorAll(\".image-container\");\n imageContainers.forEach(function (container) {\n var img = container.querySelector(\"img\");\n var imgUrl = img.src;\n container.style.backgroundImage = \"url(\" + imgUrl + \")\";\n container.style.backgroundSize = \"cover\";\n container.style.backgroundPosition = \"center center\";\n img.style.display = \"none\";\n });\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// //--------------------------------------------------------\n// // Mobile Nav\n// //--------------------------------------------------------\n// document.addEventListener(\"DOMContentLoaded\", (event) => {\n// const hamburgerButton = document.getElementById(\"hamburger-button\");\n// const closeButton = document.getElementById(\"close-button\");\n// const nav = document.querySelector(\"nav\");\n// const navLinks = document.querySelectorAll(\".nav-link\");\n\n// const toggleMenu = () => {\n// nav.style.left = nav.style.left === \"0px\" ? \"-250px\" : \"0px\";\n// };\n\n// if (hamburgerButton && closeButton && nav) {\n// hamburgerButton.addEventListener(\"click\", toggleMenu);\n// closeButton.addEventListener(\"click\", toggleMenu);\n\n// navLinks.forEach((link) => {\n// // link.addEventListener(\"click\", toggleMenu); // Use toggleMenu to close the menu\n// });\n// }\n// });\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const hamburgerButton = document.getElementById(\"hamburger-button-2\");\n const closeButton = document.getElementById(\"close-button\");\n const nav = document.querySelector(\".top-nav\");\n const navLinks = document.querySelectorAll(\".nav-link\");\n\n const toggleMenu = () => {\n nav.style.left = nav.style.left === \"0px\" ? \"-250px\" : \"0px\";\n };\n\n if (hamburgerButton && closeButton && nav) {\n hamburgerButton.addEventListener(\"click\", toggleMenu);\n closeButton.addEventListener(\"click\", toggleMenu);\n\n navLinks.forEach((link) => {\n link.addEventListener(\"click\", toggleMenu);\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//--------------------------------------------------------\n// Modal\n//--------------------------------------------------------\n\nclass ZModal extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n this.render();\n }\n\n connectedCallback() {\n this.shadowRoot.querySelector(\".close\").addEventListener(\"click\", () => {\n this.close();\n });\n this.shadowRoot.querySelector(\".modal\").addEventListener(\"click\", (event) => {\n if (event.target === event.currentTarget) {\n this.close();\n }\n });\n document.addEventListener(\"click\", (event) => {\n if (event.target.classList.contains(\"modal-close\")) {\n this.close();\n }\n\n document.addEventListener(\"keydown\", (event) => {\n if (event.key === \"Escape\") {\n this.close();\n }\n });\n });\n\n const openModalButton = document.querySelector(\".modal-open\");\n if (openModalButton) {\n openModalButton.addEventListener(\"click\", () => {\n this.open();\n });\n }\n }\n\n open() {\n this.shadowRoot.querySelector(\".modal\").style.display = \"flex\";\n }\n\n close() {\n this.shadowRoot.querySelector(\".modal\").style.display = \"none\";\n }\n\n render() {\n this.shadowRoot.innerHTML = `\n \n
\n
\n
\n \n
\n \n
\n
\n \n
\n
\n \n \n \n \n
\n
\n
\n `;\n }\n}\n\ncustomElements.define(\"z-modal\", ZModal);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Star component\n// ----------------------------------------\nclass StarComponent extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: \"open\" });\n this.render();\n }\n\n static get observedAttributes() {\n return [\"stars\", \"half\"];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n this.render();\n }\n\n render() {\n const starCount = parseInt(this.getAttribute(\"stars\")) || 1;\n const half = this.getAttribute(\"half\") === \"true\";\n const fragment = document.createDocumentFragment();\n\n for (let i = 0; i < starCount; i++) {\n const starImg = document.createElement(\"img\");\n starImg.src = \"../../dist/img/icons/alerts/star-solid.svg\";\n starImg.alt = \"\";\n starImg.className = \"icon icon-gold\";\n fragment.appendChild(starImg);\n }\n\n if (half && starCount < 5) {\n const halfStarImg = document.createElement(\"img\");\n halfStarImg.src = \"../../dist/img/icons/alerts/star-half-stroke-regular.svg\";\n halfStarImg.alt = \"\";\n halfStarImg.className = \"icon icon-gold\";\n fragment.appendChild(halfStarImg);\n }\n\n this.shadowRoot.innerHTML = `\n \n `;\n this.shadowRoot.appendChild(fragment);\n }\n}\n\ncustomElements.define(\"star-component\", StarComponent);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Exit Intent\n// ----------------------------------------\n// Get the modal\nvar modal = document.querySelector(\".exit\");\n\n// Function to show the modal if conditions are met\nfunction tryToShowModal() {\n if (modal && shouldShowModal() && !modalIsDisplayed()) {\n modal.style.display = \"block\";\n }\n}\n\n// Function to hide modal and set a flag in local storage\nfunction closeModal() {\n if (modal) {\n modal.style.display = \"none\";\n // Set the flag in local storage with the current timestamp\n localStorage.setItem(\"modalClosed\", new Date().getTime());\n }\n}\n\n// Check if the modal is currently displayed\nfunction modalIsDisplayed() {\n return modal.style.display === \"block\";\n}\n\n// Get the element that closes the modal\nvar span = document.querySelector(\".close\");\n\n// When the user clicks on (x), close the modal\nif (span) {\n span.onclick = closeModal;\n}\n\n// When the user clicks anywhere outside of the modal, close it\nwindow.onclick = function (event) {\n if (event.target == modal) {\n closeModal();\n }\n};\n\n// Check local storage to see if we should show the modal\nfunction shouldShowModal() {\n var modalClosedTime = localStorage.getItem(\"modalClosed\");\n if (modalClosedTime) {\n var now = new Date();\n var daysPassed = (now.getTime() - parseInt(modalClosedTime, 10)) / (1000 * 3600 * 24);\n return daysPassed >= 7;\n }\n return true;\n}\n\n// Trigger the modal after 8 seconds if the user hasn't closed it already\nsetTimeout(function () {\n document.addEventListener(\"mousemove\", function (e) {\n if (e.clientY <= 5) {\n tryToShowModal();\n }\n });\n}, 8000);\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Wizard\n// ----------------------------------------\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const steps = document.querySelectorAll(\".wizard-step\");\n const navItems = document.querySelectorAll(\".wizard-nav\");\n\n if (steps.length > 0 && navItems.length > 0) {\n let currentStep = 1;\n const totalSteps = steps.length;\n\n function goToStep(stepNumber) {\n steps.forEach((step) => {\n step.style.display = \"none\"; // Hide all steps\n });\n document.getElementById(`step-${stepNumber}`).style.display = \"block\"; // Show the desired step\n\n // Update the current class on pagination\n navItems.forEach((item) => {\n if (item.dataset.step == stepNumber.toString()) {\n item.classList.add(\"current\");\n } else {\n item.classList.remove(\"current\");\n }\n });\n }\n\n navItems.forEach((item) => {\n item.addEventListener(\"click\", (e) => {\n e.preventDefault();\n let direction = item.dataset.direction;\n if (direction) {\n if (direction === \"next\" && currentStep < totalSteps) {\n currentStep++;\n } else if (direction === \"prev\" && currentStep > 1) {\n currentStep--;\n }\n } else if (item.dataset.step) {\n currentStep = parseInt(item.dataset.step);\n }\n goToStep(currentStep);\n });\n });\n\n // Initialize the wizard to the first step\n goToStep(currentStep);\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const mswizard = document.querySelector(\".mswizard\");\n if (!mswizard) return;\n const progressBar = mswizard.querySelector(\".mswizard-progress\");\n const currentStepSpan = mswizard.querySelector(\"#current-step\");\n const totalStepsSpan = mswizard.querySelector(\"#total-steps\");\n const progressPercentage = mswizard.querySelector(\".progress-percentage\");\n const steps = mswizard.querySelectorAll(\".mswizard-step\");\n const totalSteps = steps.length;\n totalStepsSpan.textContent = totalSteps;\n progressBar.max = 100;\n\n function updatemswizardStep(stepNumber) {\n steps.forEach((step) => (step.style.display = \"none\"));\n mswizard.querySelector(`#step-${stepNumber}`).style.display = \"block\";\n currentStepSpan.textContent = stepNumber;\n const progressValue = ((stepNumber - 1) / (totalSteps - 1)) * 100;\n progressBar.value = progressValue;\n progressPercentage.textContent = `${Math.round(progressValue)}%`;\n const percentagePosition = progressBar.offsetWidth * (progressValue / 100) - progressPercentage.offsetWidth / 2;\n progressPercentage.style.left = `${Math.max(0, percentagePosition)}px`;\n progressPercentage.style.visibility = progressValue >= 5 ? \"visible\" : \"hidden\";\n }\n\n steps.forEach((step, index) => {\n if (index === totalSteps - 1) return; // No buttons on the last step\n\n const buttonContainer = document.createElement(\"div\");\n buttonContainer.className = \"button-container\";\n\n // Always add the Previous button except on the last step\n const prevButton = document.createElement(\"button\");\n prevButton.textContent = \"Previous\";\n prevButton.className = \"prev-btn\";\n prevButton.setAttribute(\"role\", \"button\");\n prevButton.setAttribute(\"aria-label\", `Go back to step ${index}`);\n if (index === 0) {\n prevButton.disabled = true;\n prevButton.classList.add(\"disabled\");\n } else {\n prevButton.addEventListener(\"click\", () => updatemswizardStep(index));\n }\n buttonContainer.appendChild(prevButton);\n\n // Add the Next/Finish button to all steps except the last\n const nextButton = document.createElement(\"button\");\n nextButton.textContent = index === totalSteps - 2 ? \"Finish\" : \"Next\";\n nextButton.className = \"next-btn\";\n nextButton.setAttribute(\"role\", \"button\");\n nextButton.setAttribute(\"aria-label\", `Go to step ${index + 2}`);\n nextButton.addEventListener(\"click\", () => updatemswizardStep(index + 2));\n buttonContainer.appendChild(nextButton);\n\n step.appendChild(buttonContainer);\n });\n\n updatemswizardStep(1);\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n// ----------------------------------------\n// Tabs\n// ----------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n const tabs = document.querySelectorAll(\".tab-nav .item\");\n\n if (tabs.length > 0) {\n function removeCurrentClass() {\n tabs.forEach((tab) => {\n tab.classList.remove(\"current\");\n });\n }\n\n function setCurrentClass(event) {\n event.preventDefault();\n removeCurrentClass();\n event.target.classList.add(\"current\");\n }\n\n tabs.forEach((tab) => {\n tab.addEventListener(\"click\", setCurrentClass);\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\n//-------------------------------------\n//Poll\n//-------------------------------------\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n var currentStep = 1;\n var results = { a: 0, b: 0, c: 0, d: 0 };\n\n function updateStepDisplay(step) {\n var steps = document.querySelectorAll(\".wizard-step\");\n steps.forEach(function (stepDiv) {\n stepDiv.classList.remove(\"active\");\n });\n document.querySelector(\"#step-\" + step).classList.add(\"active\");\n }\n\n function handleOptionSelect(event) {\n var selectedOption = event.target.value;\n results[selectedOption]++;\n if (currentStep < 4) {\n currentStep++;\n updateStepDisplay(currentStep);\n } else {\n // Call the showResult function immediately after the last selection\n showResult();\n }\n }\n\n function showResult() {\n // Remove the active class from all steps\n var steps = document.querySelectorAll(\".wizard-step\");\n steps.forEach(function (step) {\n step.classList.remove(\"active\");\n });\n\n // Calculate the most chosen answer\n var max = Math.max(...Object.values(results));\n var mostChosenResults = Object.keys(results).filter(function (key) {\n return results[key] === max;\n });\n\n // Take the first result if there's a tie\n var mostChosen = mostChosenResults[0];\n var resultElement = document.querySelector('#result-types [data-result=\"' + mostChosen + '\"]');\n var resultContent = resultElement ? resultElement.innerHTML : mostChosen;\n\n // Update the result div and make the result visible\n var resultDiv = document.getElementById(\"result-text\");\n if (resultDiv) {\n resultDiv.innerHTML = resultContent;\n }\n var resultContainer = document.getElementById(\"result\");\n if (resultContainer) {\n resultContainer.classList.add(\"active\"); // Ensure this class makes the element visible\n }\n }\n\n // Attaching change event listeners to radio buttons\n var wizard = document.querySelector(\".wizard\");\n if (wizard) {\n var radioButtons = wizard.querySelectorAll('input[type=\"radio\"]');\n radioButtons.forEach(function (radioButton) {\n radioButton.addEventListener(\"change\", handleOptionSelect);\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n const anchors = document.querySelectorAll('a[href^=\"#\"]');\n\n if (anchors.length > 0) {\n anchors.forEach((anchor) => {\n anchor.addEventListener(\"click\", function (e) {\n const hrefAttribute = this.getAttribute(\"href\");\n\n // Skip processing if href is only '#'\n if (hrefAttribute === \"#\") {\n return;\n }\n\n e.preventDefault();\n const targetElement = document.querySelector(hrefAttribute);\n\n if (targetElement) {\n targetElement.scrollIntoView({ behavior: \"smooth\" });\n }\n });\n });\n }\n});\n","/*\n * zenCSS v2.1.0-beta (https://zencss.com/)\n * Copyright 2022-2024 Shaun Mackey\n * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE)\n */\n\ndocument.addEventListener(\"DOMContentLoaded\", (event) => {\n const banner = document.querySelector(\".cookie-consent-banner\");\n\n // Check if the banner element exists\n if (banner) {\n const acceptBtn = document.querySelector(\".accept-cookies\");\n banner.style.zIndex = \"1100\";\n\n // Check if cookies are already accepted\n if (!localStorage.getItem(\"cookies-accepted\")) {\n banner.style.display = \"block\"; // Show banner if cookies not accepted\n }\n\n // Event listener for accept button\n if (acceptBtn) {\n acceptBtn.addEventListener(\"click\", () => {\n localStorage.setItem(\"cookies-accepted\", \"true\"); // Set flag in local storage\n banner.style.display = \"none\"; // Hide banner\n });\n }\n }\n});\n"],"names":["toggleButton","ZContainer","HTMLElement","constructor","super","customElements","define","ZRow","ZCol","document","addEventListener","querySelectorAll","forEach","slider","slidesContainer","querySelector","originalSlides","Array","from","children","totalOriginalSlides","length","nextButton","prevButton","shouldAutoRotate","getAttribute","firstSlideClone","cloneNode","lastSlideClone","insertBefore","appendChild","autoRotate","currentIndex","isTransitioning","startAutoRotate","setInterval","moveToNext","stopAutoRotate","clearInterval","updateSlidePosition","style","transform","transition","setTimeout","closeAllDropdowns","dropdown","display","link","event","preventDefault","dropdownContent","nextElementSibling","window","onclick","target","matches","preloadImage","src","Image","gallery","modal","paginationNav","currentPage","imagesPerPage","currentModalIndex","imageWrappers","img","index","wrapper","createElement","clonedImg","openModal","push","totalPages","Math","ceil","updateImagesForPage","pageNumber","start","end","updatePaginationNav","innerHTML","i","classCurrent","text","modalBody","shadowRoot","modalWrapper","modalHeader","currentWidth","clientWidth","currentHeight","clientHeight","minWidth","minHeight","imageContainer","position","justifyContent","prevArrow","className","cursor","top","left","padding","backgroundColor","newImg","firstChild","modalImage","onload","maxWidth","maxHeight","objectFit","margin","nextArrow","right","modalText","textContent","textAlign","overflowY","innerWidth","nextIndex","prevIndex","open","tagName","dataset","page","newPage","parseInt","accordionToggles","accordionToggle","isExpanding","this","otherToggle","classList","remove","setAttribute","otherIcon","add","otherPanel","icon","panel","scrollHeight","yearSpan","getElementById","currentYear","Date","getFullYear","toggle","iconOff","iconOn","item","contentId","content","el","id","cornerPopup","button","popup","console","log","table","headers","map","th","trim","row","cell","menuItems","unreadResetTime","localStorage","getItem","getTime","removeAttribute","resetTime","setItem","elementsToAnimate","observer","IntersectionObserver","entries","entry","isIntersecting","threshold","observe","zenElements","element","isDarkModeEnabled","some","contains","lazyImages","slice","call","lazyImageObserver","lazyImage","unobserve","container","imgUrl","backgroundImage","backgroundSize","backgroundPosition","hamburgerButton","closeButton","nav","navLinks","toggleMenu","ZModal","attachShadow","mode","render","connectedCallback","close","currentTarget","key","openModalButton","StarComponent","observedAttributes","attributeChangedCallback","name","oldValue","newValue","starCount","half","fragment","createDocumentFragment","starImg","alt","halfStarImg","tryToShowModal","modalClosedTime","shouldShowModal","closeModal","span","e","clientY","steps","navItems","currentStep","totalSteps","goToStep","stepNumber","step","toString","direction","mswizard","progressBar","currentStepSpan","totalStepsSpan","progressPercentage","updatemswizardStep","progressValue","value","round","percentagePosition","offsetWidth","max","visibility","buttonContainer","disabled","tabs","setCurrentClass","tab","results","a","b","c","d","handleOptionSelect","selectedOption","stepDiv","Object","values","mostChosen","keys","filter","resultElement","resultContent","resultDiv","resultContainer","showResult","wizard","radioButton","anchors","anchor","hrefAttribute","targetElement","scrollIntoView","behavior","banner","acceptBtn","zIndex","selector","toggleClassOnElements"],"sourceRoot":""} \ No newline at end of file diff --git a/docs/js/copy.js b/docs/js/copy.js index 31c431bf..9b91f02e 100644 --- a/docs/js/copy.js +++ b/docs/js/copy.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/docs/js/updateseo.js b/docs/js/updateseo.js index 177021ea..11da658e 100644 --- a/docs/js/updateseo.js +++ b/docs/js/updateseo.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/docs/release-notes/release-info.html b/docs/release-notes/release-info.html index 6518886c..53e0e709 100644 --- a/docs/release-notes/release-info.html +++ b/docs/release-notes/release-info.html @@ -51,7 +51,7 @@

zenCSS Software Releases

12/31/2023 2.0.2-beta - Github Link + Github Link diff --git a/js/modules/accordian.js b/js/modules/accordian.js index c7fda4c8..867f3719 100644 --- a/js/modules/accordian.js +++ b/js/modules/accordian.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/background-image.js b/js/modules/background-image.js index b58805c7..6a08b12e 100644 --- a/js/modules/background-image.js +++ b/js/modules/background-image.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/carousel.js b/js/modules/carousel.js index 3bb77d68..d0a6144a 100644 --- a/js/modules/carousel.js +++ b/js/modules/carousel.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/cookie-consent.js b/js/modules/cookie-consent.js index f274cc7d..11c091ee 100644 --- a/js/modules/cookie-consent.js +++ b/js/modules/cookie-consent.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/custom-elements.js b/js/modules/custom-elements.js index cb8986b0..a69ddc2f 100644 --- a/js/modules/custom-elements.js +++ b/js/modules/custom-elements.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/dark-mode.js b/js/modules/dark-mode.js index 26f5f63e..9143c322 100644 --- a/js/modules/dark-mode.js +++ b/js/modules/dark-mode.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/dropdown.js b/js/modules/dropdown.js index 0668fb1e..2463c5de 100644 --- a/js/modules/dropdown.js +++ b/js/modules/dropdown.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/exit-intent.js b/js/modules/exit-intent.js index 8295821c..069b723e 100644 --- a/js/modules/exit-intent.js +++ b/js/modules/exit-intent.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/image-gallery.js b/js/modules/image-gallery.js index 841f65ec..52652289 100644 --- a/js/modules/image-gallery.js +++ b/js/modules/image-gallery.js @@ -1,5 +1,5 @@ // /* -// * zenCSS v2.0.2-beta (https://zencss.com/) +// * zenCSS v2.1.0-beta (https://zencss.com/) // * Copyright 2022-2024 Shaun Mackey // * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) // */ @@ -7,7 +7,7 @@ //12/29 removing lazy load /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/lazy-load.js b/js/modules/lazy-load.js index faa100c1..b7aaabe9 100644 --- a/js/modules/lazy-load.js +++ b/js/modules/lazy-load.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/link-scroll.js b/js/modules/link-scroll.js index 49c29e95..661aaf1b 100644 --- a/js/modules/link-scroll.js +++ b/js/modules/link-scroll.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/misc.js b/js/modules/misc.js index 087c3cd1..e40a8f26 100644 --- a/js/modules/misc.js +++ b/js/modules/misc.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/mobile-nav.js b/js/modules/mobile-nav.js index 53cb7106..15f0c484 100644 --- a/js/modules/mobile-nav.js +++ b/js/modules/mobile-nav.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/modal.js b/js/modules/modal.js index 8d08801a..a50c3a65 100644 --- a/js/modules/modal.js +++ b/js/modules/modal.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/multistep-wizard.js b/js/modules/multistep-wizard.js index c5a670b6..7fa30e59 100644 --- a/js/modules/multistep-wizard.js +++ b/js/modules/multistep-wizard.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/poll.js b/js/modules/poll.js index 09e9363d..3b890f4f 100644 --- a/js/modules/poll.js +++ b/js/modules/poll.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/star-component.js b/js/modules/star-component.js index 6eefcb07..f9d18289 100644 --- a/js/modules/star-component.js +++ b/js/modules/star-component.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/tabs.js b/js/modules/tabs.js index 4d2507f4..c508342b 100644 --- a/js/modules/tabs.js +++ b/js/modules/tabs.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/test-mode.js b/js/modules/test-mode.js index e557e8ed..770e9dc4 100644 --- a/js/modules/test-mode.js +++ b/js/modules/test-mode.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/js/modules/wizard.js b/js/modules/wizard.js index a9b307a6..bcd68d22 100644 --- a/js/modules/wizard.js +++ b/js/modules/wizard.js @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/package-lock.json b/package-lock.json index 9b74de4b..ed9144c4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "zencss", - "version": "v2.0.2-beta", + "version": "v2.1.0-beta", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "zencss", - "version": "v2.0.2-beta", + "version": "v2.1.0-beta", "license": "MIT", "devDependencies": { "autoprefixer": "^10.4.16", diff --git a/scss/_user-settings.scss b/scss/_user-settings.scss index 2f041201..d75207a8 100644 --- a/scss/_user-settings.scss +++ b/scss/_user-settings.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_color-contrast-checker.scss b/scss/core/_color-contrast-checker.scss index 277a7b21..30781fb2 100644 --- a/scss/core/_color-contrast-checker.scss +++ b/scss/core/_color-contrast-checker.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_config.scss b/scss/core/_config.scss index 507868a5..5f539503 100644 --- a/scss/core/_config.scss +++ b/scss/core/_config.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_flex.scss b/scss/core/_flex.scss index e10d5889..e3efb28d 100644 --- a/scss/core/_flex.scss +++ b/scss/core/_flex.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_footer.scss b/scss/core/_footer.scss index 3b3faae5..d7ac4ee4 100644 --- a/scss/core/_footer.scss +++ b/scss/core/_footer.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_formatting.scss b/scss/core/_formatting.scss index b6efdc3a..f3a95a4c 100644 --- a/scss/core/_formatting.scss +++ b/scss/core/_formatting.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_framework.scss b/scss/core/_framework.scss index 04ad19a5..9de060fc 100644 --- a/scss/core/_framework.scss +++ b/scss/core/_framework.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_header.scss b/scss/core/_header.scss index f27842bf..f883846e 100644 --- a/scss/core/_header.scss +++ b/scss/core/_header.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_media-query.scss b/scss/core/_media-query.scss index 69be99fb..de762755 100644 --- a/scss/core/_media-query.scss +++ b/scss/core/_media-query.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_mixins.scss b/scss/core/_mixins.scss index bbef24d2..451b5941 100644 --- a/scss/core/_mixins.scss +++ b/scss/core/_mixins.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2024-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_scaffold.scss b/scss/core/_scaffold.scss index 20501889..00f2a0b8 100644 --- a/scss/core/_scaffold.scss +++ b/scss/core/_scaffold.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/core/_wip.scss b/scss/core/_wip.scss index 2ec7fec9..b9c44434 100644 --- a/scss/core/_wip.scss +++ b/scss/core/_wip.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/design/_bg-color.scss b/scss/design/_bg-color.scss index e0672b57..3cada3d1 100644 --- a/scss/design/_bg-color.scss +++ b/scss/design/_bg-color.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/design/_border-color.scss b/scss/design/_border-color.scss index 39b39adf..34cef52f 100644 --- a/scss/design/_border-color.scss +++ b/scss/design/_border-color.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/design/_buttons.scss b/scss/design/_buttons.scss index 0090cafd..f6b45b83 100644 --- a/scss/design/_buttons.scss +++ b/scss/design/_buttons.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/design/_text-color.scss b/scss/design/_text-color.scss index 7ea36ecd..78e4a5d5 100644 --- a/scss/design/_text-color.scss +++ b/scss/design/_text-color.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/design/_text.scss b/scss/design/_text.scss index 7efc795b..c629a498 100644 --- a/scss/design/_text.scss +++ b/scss/design/_text.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/design/_themes.scss b/scss/design/_themes.scss index 3c9a3925..a87c3beb 100644 --- a/scss/design/_themes.scss +++ b/scss/design/_themes.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/general/_components.scss b/scss/general/_components.scss index b9307628..c93b9e48 100644 --- a/scss/general/_components.scss +++ b/scss/general/_components.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/general/_form.scss b/scss/general/_form.scss index 92243734..b8031f0a 100644 --- a/scss/general/_form.scss +++ b/scss/general/_form.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/general/_margin-padding.scss b/scss/general/_margin-padding.scss index e8da3e46..a71ec3e1 100644 --- a/scss/general/_margin-padding.scss +++ b/scss/general/_margin-padding.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/general/_test.scss b/scss/general/_test.scss index 0f6de6d3..efac0c57 100644 --- a/scss/general/_test.scss +++ b/scss/general/_test.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_accessability.scss b/scss/optional/_accessability.scss index b3c8cc3b..9def9df5 100644 --- a/scss/optional/_accessability.scss +++ b/scss/optional/_accessability.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_alert.scss b/scss/optional/_alert.scss index 5cba9018..743b5725 100644 --- a/scss/optional/_alert.scss +++ b/scss/optional/_alert.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_animation.scss b/scss/optional/_animation.scss index b8a7912b..c5762df0 100644 --- a/scss/optional/_animation.scss +++ b/scss/optional/_animation.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_decoration.scss b/scss/optional/_decoration.scss index dd2f957b..b0a66187 100644 --- a/scss/optional/_decoration.scss +++ b/scss/optional/_decoration.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_image-gallery.scss b/scss/optional/_image-gallery.scss index 962cbf41..57dcb341 100644 --- a/scss/optional/_image-gallery.scss +++ b/scss/optional/_image-gallery.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_menus.scss b/scss/optional/_menus.scss index 0d0a622b..75737e4d 100644 --- a/scss/optional/_menus.scss +++ b/scss/optional/_menus.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_multistep-wizard.scss b/scss/optional/_multistep-wizard.scss index 0d8158a5..f701723a 100644 --- a/scss/optional/_multistep-wizard.scss +++ b/scss/optional/_multistep-wizard.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_slider.scss b/scss/optional/_slider.scss index d0150c40..f0484c1e 100644 --- a/scss/optional/_slider.scss +++ b/scss/optional/_slider.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/_stacking.scss b/scss/optional/_stacking.scss index a8dc19d8..3b801c14 100644 --- a/scss/optional/_stacking.scss +++ b/scss/optional/_stacking.scss @@ -1,5 +1,5 @@ // /* -// * zenCSS v2.0.2-beta (https://zencss.com/) +// * zenCSS v2.1.0-beta (https://zencss.com/) // * Copyright 2022-2024 Shaun Mackey // * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) // */ diff --git a/scss/optional/_table.scss b/scss/optional/_table.scss index a8e42820..a9b0d44a 100644 --- a/scss/optional/_table.scss +++ b/scss/optional/_table.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/marketing/_contact-form.scss b/scss/optional/marketing/_contact-form.scss index 9abb85de..33198d73 100644 --- a/scss/optional/marketing/_contact-form.scss +++ b/scss/optional/marketing/_contact-form.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/marketing/_exit-intent.scss b/scss/optional/marketing/_exit-intent.scss index 48066bfe..3416afed 100644 --- a/scss/optional/marketing/_exit-intent.scss +++ b/scss/optional/marketing/_exit-intent.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/optional/marketing/_marketing-promos.scss b/scss/optional/marketing/_marketing-promos.scss index bf9c7fa0..5dd197cb 100644 --- a/scss/optional/marketing/_marketing-promos.scss +++ b/scss/optional/marketing/_marketing-promos.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */ diff --git a/scss/zen.scss b/scss/zen.scss index e62a9e6f..1c27ab0b 100644 --- a/scss/zen.scss +++ b/scss/zen.scss @@ -1,5 +1,5 @@ /* - * zenCSS v2.0.2-beta (https://zencss.com/) + * zenCSS v2.1.0-beta (https://zencss.com/) * Copyright 2022-2024 Shaun Mackey * Licensed under MIT (https://github.com/zen-solutions/zencss/blob/main/LICENSE) */