diff --git a/db-snapshots/db-snapshot.sql b/db-snapshots/db-snapshot.sql index 22de1d13..fa630299 100644 --- a/db-snapshots/db-snapshot.sql +++ b/db-snapshots/db-snapshot.sql @@ -407,4 +407,4 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2025-11-28 16:06:14 +-- Dump completed on 2025-11-28 16:07:57 diff --git a/wp-content/themes/homeproz/dist/assets/main.css b/wp-content/themes/homeproz/dist/assets/main.css index 6a56aa0b..ff552958 100644 --- a/wp-content/themes/homeproz/dist/assets/main.css +++ b/wp-content/themes/homeproz/dist/assets/main.css @@ -1,2 +1,2 @@ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com - */*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.absolute{position:absolute}.relative{position:relative}.block{display:block}.hidden{display:none}.border{border-width:1px}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.outline{outline-style:solid}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}:root{--color-bg-dark: #0A0A0A;--color-bg-card: #161616;--color-accent: #9F3730;--color-accent-hover: #C8473F;--color-accent-light: #BF524B;--color-text: #F5F5F5;--color-text-muted: #B0B0B0;--color-border: #2A2A2A;--color-success: #2E7D32;--color-warning: #F9A825;--color-sold: #757575;--font-display: "Abril Fatface", Georgia, serif;--font-body: "Inter", "Droid Sans", Arial, sans-serif;--container-max: 1200px;--container-padding: 1.5rem;--transition-fast: .15s ease}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-body);background-color:var(--color-bg-dark);color:var(--color-text-muted);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--color-text);font-weight:400;line-height:1.2;margin-bottom:1rem}h1{font-size:3rem}h2{font-size:2.25rem}h3{font-size:1.875rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1.125rem}p{margin-bottom:1rem}a{color:var(--color-accent-light);text-decoration:none}a:hover{color:var(--color-accent-hover)}.container{max-width:var(--container-max);margin-left:auto;margin-right:auto;padding-left:var(--container-padding);padding-right:var(--container-padding)}.site-main{min-height:50vh;padding:2rem 0}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;font-family:var(--font-body);font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;border-radius:.25rem;border:none;cursor:pointer}.btn-primary{background-color:var(--color-accent);color:#fff}.btn-primary:hover{background-color:var(--color-accent-hover);color:#fff}.btn-secondary{background-color:transparent;border:2px solid var(--color-accent);color:var(--color-accent)}.btn-secondary:hover{background-color:var(--color-accent);color:#fff}.badge{display:inline-block;padding:.25rem .75rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;border-radius:.25rem}.badge-success{background-color:var(--color-success);color:#fff}.badge-warning{background-color:var(--color-warning);color:#000}.badge-muted{background-color:var(--color-sold);color:#fff}.card{background-color:var(--color-bg-card);border-radius:.5rem;overflow:hidden}input[type=text],input[type=email],input[type=tel],input[type=number],input[type=search],textarea,select{width:100%;padding:.75rem 1rem;background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);font-family:var(--font-body);font-size:1rem}input[type=text]::-moz-placeholder,input[type=email]::-moz-placeholder,input[type=tel]::-moz-placeholder,input[type=number]::-moz-placeholder,input[type=search]::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{color:var(--color-sold)}input[type=text]::placeholder,input[type=email]::placeholder,input[type=tel]::placeholder,input[type=number]::placeholder,input[type=search]::placeholder,textarea::placeholder,select::placeholder{color:var(--color-sold)}input[type=text]:focus,input[type=email]:focus,input[type=tel]:focus,input[type=number]:focus,input[type=search]:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-accent)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.alignwide{max-width:calc(var(--container-max) + 200px)}.alignfull{width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw}.wp-block-image img{max-width:100%;height:auto}@media (max-width: 768px){:root{--container-padding: 1rem}h1{font-size:2.25rem}h2{font-size:1.875rem}h3{font-size:1.5rem}} + */*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.absolute{position:absolute}.relative{position:relative}.block{display:block}.hidden{display:none}.border{border-width:1px}.uppercase{text-transform:uppercase}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.outline{outline-style:solid}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.site-header{position:sticky;top:0;z-index:100;background-color:var(--color-bg-dark);border-bottom:1px solid var(--color-border)}.header-container{padding-top:1rem;padding-bottom:1rem}.header-inner{display:flex;align-items:center;justify-content:space-between;gap:2rem}.site-branding{flex-shrink:0}.site-branding .custom-logo-link{display:block}.site-branding .custom-logo-link img{max-height:60px;width:auto}.site-branding .site-title-link{text-decoration:none}.site-branding .site-title{font-family:var(--font-display);font-size:1.5rem;color:var(--color-text);letter-spacing:.02em}.main-navigation{display:none;flex-grow:1;justify-content:center}@media (min-width: 1024px){.main-navigation{display:flex}}.main-navigation .nav-menu{display:flex;align-items:center;gap:2rem;list-style:none;margin:0;padding:0}.main-navigation .menu-item a{display:block;padding:.5rem 0;color:var(--color-text-muted);font-size:.875rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;text-decoration:none}.main-navigation .menu-item a:hover{color:var(--color-text)}.main-navigation .menu-item.current-menu-item a,.main-navigation .menu-item.current_page_item a{color:var(--color-accent-light)}.menu-toggle{display:flex;flex-direction:column;justify-content:center;align-items:center;width:44px;height:44px;padding:0;background:transparent;border:none;cursor:pointer}@media (min-width: 1024px){.menu-toggle{display:none}}.menu-toggle .menu-toggle-icon{display:flex;flex-direction:column;gap:5px}.menu-toggle .bar{display:block;width:24px;height:2px;background-color:var(--color-text)}.menu-toggle[aria-expanded=true] .bar:nth-child(1){transform:translateY(7px) rotate(45deg)}.menu-toggle[aria-expanded=true] .bar:nth-child(2){opacity:0}.menu-toggle[aria-expanded=true] .bar:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.header-cta{display:none;flex-shrink:0}@media (min-width: 1024px){.header-cta{display:block}}.header-cta .header-phone{display:inline-flex;align-items:center;padding:.625rem 1.25rem;background-color:var(--color-accent);color:#fff;font-size:.875rem;font-weight:600;text-decoration:none;border-radius:.25rem}.header-cta .header-phone:hover{background-color:var(--color-accent-hover);color:#fff}.mobile-navigation{display:none;position:absolute;top:100%;left:0;right:0;background-color:var(--color-bg-card);border-bottom:1px solid var(--color-border);padding:1rem}.mobile-navigation.is-open{display:block}@media (min-width: 1024px){.mobile-navigation{display:none!important}}.mobile-navigation .mobile-nav-menu{list-style:none;margin:0;padding:0}.mobile-navigation .menu-item{border-bottom:1px solid var(--color-border)}.mobile-navigation .menu-item:last-child{border-bottom:none}.mobile-navigation .menu-item a{display:block;padding:1rem 0;color:var(--color-text);font-size:1rem;text-decoration:none}.mobile-navigation .menu-item a:hover{color:var(--color-accent-light)}.mobile-navigation .mobile-menu-cta{margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--color-border)}.mobile-navigation .mobile-menu-cta .btn{display:block;width:100%;text-align:center}:root{--color-bg-dark: #0A0A0A;--color-bg-card: #161616;--color-accent: #9F3730;--color-accent-hover: #C8473F;--color-accent-light: #BF524B;--color-text: #F5F5F5;--color-text-muted: #B0B0B0;--color-border: #2A2A2A;--color-success: #2E7D32;--color-warning: #F9A825;--color-sold: #757575;--font-display: "Abril Fatface", Georgia, serif;--font-body: "Inter", "Droid Sans", Arial, sans-serif;--container-max: 1200px;--container-padding: 1.5rem;--transition-fast: .15s ease}html{font-size:16px;scroll-behavior:smooth}body{font-family:var(--font-body);background-color:var(--color-bg-dark);color:var(--color-text-muted);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--color-text);font-weight:400;line-height:1.2;margin-bottom:1rem}h1{font-size:3rem}h2{font-size:2.25rem}h3{font-size:1.875rem}h4{font-size:1.5rem}h5{font-size:1.25rem}h6{font-size:1.125rem}p{margin-bottom:1rem}a{color:var(--color-accent-light);text-decoration:none}a:hover{color:var(--color-accent-hover)}.container{max-width:var(--container-max);margin-left:auto;margin-right:auto;padding-left:var(--container-padding);padding-right:var(--container-padding)}.site-main{min-height:50vh;padding:2rem 0}.btn{display:inline-flex;align-items:center;justify-content:center;padding:.75rem 1.5rem;font-family:var(--font-body);font-weight:600;font-size:.875rem;text-transform:uppercase;letter-spacing:.05em;border-radius:.25rem;border:none;cursor:pointer}.btn-primary{background-color:var(--color-accent);color:#fff}.btn-primary:hover{background-color:var(--color-accent-hover);color:#fff}.btn-secondary{background-color:transparent;border:2px solid var(--color-accent);color:var(--color-accent)}.btn-secondary:hover{background-color:var(--color-accent);color:#fff}.badge{display:inline-block;padding:.25rem .75rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;border-radius:.25rem}.badge-success{background-color:var(--color-success);color:#fff}.badge-warning{background-color:var(--color-warning);color:#000}.badge-muted{background-color:var(--color-sold);color:#fff}.card{background-color:var(--color-bg-card);border-radius:.5rem;overflow:hidden}input[type=text],input[type=email],input[type=tel],input[type=number],input[type=search],textarea,select{width:100%;padding:.75rem 1rem;background-color:var(--color-bg-card);border:1px solid var(--color-border);border-radius:.25rem;color:var(--color-text);font-family:var(--font-body);font-size:1rem}input[type=text]::-moz-placeholder,input[type=email]::-moz-placeholder,input[type=tel]::-moz-placeholder,input[type=number]::-moz-placeholder,input[type=search]::-moz-placeholder,textarea::-moz-placeholder,select::-moz-placeholder{color:var(--color-sold)}input[type=text]::placeholder,input[type=email]::placeholder,input[type=tel]::placeholder,input[type=number]::placeholder,input[type=search]::placeholder,textarea::placeholder,select::placeholder{color:var(--color-sold)}input[type=text]:focus,input[type=email]:focus,input[type=tel]:focus,input[type=number]:focus,input[type=search]:focus,textarea:focus,select:focus{outline:none;border-color:var(--color-accent)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.alignwide{max-width:calc(var(--container-max) + 200px)}.alignfull{width:100vw;position:relative;left:50%;right:50%;margin-left:-50vw;margin-right:-50vw}.wp-block-image img{max-width:100%;height:auto}@media (max-width: 768px){:root{--container-padding: 1rem}h1{font-size:2.25rem}h2{font-size:1.875rem}h3{font-size:1.5rem}} diff --git a/wp-content/themes/homeproz/dist/assets/main.js b/wp-content/themes/homeproz/dist/assets/main.js index cc11c6f9..036b2f15 100644 --- a/wp-content/themes/homeproz/dist/assets/main.js +++ b/wp-content/themes/homeproz/dist/assets/main.js @@ -1 +1 @@ -(function(o){o(function(){console.log("HomeProz theme initialized")})})(jQuery); +(function(e){var a=e(".menu-toggle"),o=e(".mobile-navigation");a.length&&(a.on("click",function(){var n=e(this).attr("aria-expanded")==="true";e(this).attr("aria-expanded",!n),o.toggleClass("is-open"),n?e("body").removeClass("mobile-menu-open"):e("body").addClass("mobile-menu-open")}),e(document).on("keydown",function(n){n.key==="Escape"&&o.hasClass("is-open")&&(a.attr("aria-expanded","false"),o.removeClass("is-open"),e("body").removeClass("mobile-menu-open"))}),e(document).on("click",function(n){o.hasClass("is-open")&&!e(n.target).closest(".mobile-navigation").length&&!e(n.target).closest(".menu-toggle").length&&(a.attr("aria-expanded","false"),o.removeClass("is-open"),e("body").removeClass("mobile-menu-open"))}))})(jQuery);(function(e){e(function(){})})(jQuery); diff --git a/wp-content/themes/homeproz/header.php b/wp-content/themes/homeproz/header.php new file mode 100644 index 00000000..cabb3deb --- /dev/null +++ b/wp-content/themes/homeproz/header.php @@ -0,0 +1,24 @@ + + +> + + + + + + + +> + + +
+ + + diff --git a/wp-content/themes/homeproz/inc/template-functions.php b/wp-content/themes/homeproz/inc/template-functions.php index f1da2df7..a3ca2bce 100644 --- a/wp-content/themes/homeproz/inc/template-functions.php +++ b/wp-content/themes/homeproz/inc/template-functions.php @@ -132,6 +132,18 @@ function homeproz_format_price($price) { return '$' . number_format($price); } +/** + * Fallback menu when no menu is assigned + */ +function homeproz_fallback_menu() { + echo ''; +} + /** * Get theme option (placeholder for future ACF options) * diff --git a/wp-content/themes/homeproz/src/main.js b/wp-content/themes/homeproz/src/main.js index 6d9f470c..c5fa37ea 100644 --- a/wp-content/themes/homeproz/src/main.js +++ b/wp-content/themes/homeproz/src/main.js @@ -6,12 +6,15 @@ import './main.scss'; +// Import component JS +import '../template-parts/header/navigation.js'; + (function($) { 'use strict'; // Document ready $(function() { - console.log('HomeProz theme initialized'); + // Theme initialized }); })(jQuery); diff --git a/wp-content/themes/homeproz/src/main.scss b/wp-content/themes/homeproz/src/main.scss index 5a24ceb5..c880a676 100644 --- a/wp-content/themes/homeproz/src/main.scss +++ b/wp-content/themes/homeproz/src/main.scss @@ -7,6 +7,9 @@ // Import Tailwind @import 'tailwind.css'; +// Import component styles +@import '../template-parts/header/site-header.scss'; + // ============================================ // CSS Custom Properties (Design Tokens) // ============================================ diff --git a/wp-content/themes/homeproz/template-parts/header/navigation.js b/wp-content/themes/homeproz/template-parts/header/navigation.js new file mode 100644 index 00000000..317b6a4a --- /dev/null +++ b/wp-content/themes/homeproz/template-parts/header/navigation.js @@ -0,0 +1,52 @@ +/** + * Navigation functionality + * + * @package HomeProz + */ + +(function($) { + 'use strict'; + + // Mobile menu toggle + var $menuToggle = $('.menu-toggle'); + var $mobileMenu = $('.mobile-navigation'); + + if (!$menuToggle.length) { + return; + } + + $menuToggle.on('click', function() { + var isExpanded = $(this).attr('aria-expanded') === 'true'; + + $(this).attr('aria-expanded', !isExpanded); + $mobileMenu.toggleClass('is-open'); + + // Prevent body scroll when menu is open + if (!isExpanded) { + $('body').addClass('mobile-menu-open'); + } else { + $('body').removeClass('mobile-menu-open'); + } + }); + + // Close mobile menu on escape key + $(document).on('keydown', function(e) { + if (e.key === 'Escape' && $mobileMenu.hasClass('is-open')) { + $menuToggle.attr('aria-expanded', 'false'); + $mobileMenu.removeClass('is-open'); + $('body').removeClass('mobile-menu-open'); + } + }); + + // Close mobile menu when clicking outside + $(document).on('click', function(e) { + if ($mobileMenu.hasClass('is-open') && + !$(e.target).closest('.mobile-navigation').length && + !$(e.target).closest('.menu-toggle').length) { + $menuToggle.attr('aria-expanded', 'false'); + $mobileMenu.removeClass('is-open'); + $('body').removeClass('mobile-menu-open'); + } + }); + +})(jQuery); diff --git a/wp-content/themes/homeproz/template-parts/header/site-header.php b/wp-content/themes/homeproz/template-parts/header/site-header.php new file mode 100644 index 00000000..b67f890a --- /dev/null +++ b/wp-content/themes/homeproz/template-parts/header/site-header.php @@ -0,0 +1,72 @@ + + diff --git a/wp-content/themes/homeproz/template-parts/header/site-header.scss b/wp-content/themes/homeproz/template-parts/header/site-header.scss new file mode 100644 index 00000000..6d4c4bc4 --- /dev/null +++ b/wp-content/themes/homeproz/template-parts/header/site-header.scss @@ -0,0 +1,220 @@ +/** + * Site Header Styles + * + * @package HomeProz + */ + +.site-header { + position: sticky; + top: 0; + z-index: 100; + background-color: var(--color-bg-dark); + border-bottom: 1px solid var(--color-border); +} + +.header-container { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.header-inner { + display: flex; + align-items: center; + justify-content: space-between; + gap: 2rem; +} + +// Logo / Branding +.site-branding { + flex-shrink: 0; + + .custom-logo-link { + display: block; + + img { + max-height: 60px; + width: auto; + } + } + + .site-title-link { + text-decoration: none; + } + + .site-title { + font-family: var(--font-display); + font-size: 1.5rem; + color: var(--color-text); + letter-spacing: 0.02em; + } +} + +// Desktop Navigation +.main-navigation { + display: none; + flex-grow: 1; + justify-content: center; + + @media (min-width: 1024px) { + display: flex; + } + + .nav-menu { + display: flex; + align-items: center; + gap: 2rem; + list-style: none; + margin: 0; + padding: 0; + } + + .menu-item { + a { + display: block; + padding: 0.5rem 0; + color: var(--color-text-muted); + font-size: 0.875rem; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 0.05em; + text-decoration: none; + + &:hover { + color: var(--color-text); + } + } + + &.current-menu-item a, + &.current_page_item a { + color: var(--color-accent-light); + } + } +} + +// Mobile Menu Toggle +.menu-toggle { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + width: 44px; + height: 44px; + padding: 0; + background: transparent; + border: none; + cursor: pointer; + + @media (min-width: 1024px) { + display: none; + } + + .menu-toggle-icon { + display: flex; + flex-direction: column; + gap: 5px; + } + + .bar { + display: block; + width: 24px; + height: 2px; + background-color: var(--color-text); + } + + &[aria-expanded="true"] { + .bar:nth-child(1) { + transform: translateY(7px) rotate(45deg); + } + .bar:nth-child(2) { + opacity: 0; + } + .bar:nth-child(3) { + transform: translateY(-7px) rotate(-45deg); + } + } +} + +// Header CTA +.header-cta { + display: none; + flex-shrink: 0; + + @media (min-width: 1024px) { + display: block; + } + + .header-phone { + display: inline-flex; + align-items: center; + padding: 0.625rem 1.25rem; + background-color: var(--color-accent); + color: white; + font-size: 0.875rem; + font-weight: 600; + text-decoration: none; + border-radius: 0.25rem; + + &:hover { + background-color: var(--color-accent-hover); + color: white; + } + } +} + +// Mobile Navigation +.mobile-navigation { + display: none; + position: absolute; + top: 100%; + left: 0; + right: 0; + background-color: var(--color-bg-card); + border-bottom: 1px solid var(--color-border); + padding: 1rem; + + &.is-open { + display: block; + } + + @media (min-width: 1024px) { + display: none !important; + } + + .mobile-nav-menu { + list-style: none; + margin: 0; + padding: 0; + } + + .menu-item { + border-bottom: 1px solid var(--color-border); + + &:last-child { + border-bottom: none; + } + + a { + display: block; + padding: 1rem 0; + color: var(--color-text); + font-size: 1rem; + text-decoration: none; + + &:hover { + color: var(--color-accent-light); + } + } + } + + .mobile-menu-cta { + margin-top: 1.5rem; + padding-top: 1.5rem; + border-top: 1px solid var(--color-border); + + .btn { + display: block; + width: 100%; + text-align: center; + } + } +}