diff --git a/src/media/css/colors/dark/colors_alternative.css b/src/media/css/colors/dark/colors_alternative.css index 988b0a9..652e0ec 100644 --- a/src/media/css/colors/dark/colors_alternative.css +++ b/src/media/css/colors/dark/colors_alternative.css @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/css/global/dark/colors_alternative.css - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Alternative dark mode color definitions for Moko-Cassiopeia template */ diff --git a/src/media/css/colors/dark/colors_standard.css b/src/media/css/colors/dark/colors_standard.css index 9876df2..9b0a44b 100644 --- a/src/media/css/colors/dark/colors_standard.css +++ b/src/media/css/colors/dark/colors_standard.css @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/css/global/dark/colors_standard.css - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Standard dark mode color definitions for Moko-Cassiopeia template */ @@ -244,10 +244,308 @@ --focus-ring-opacity: .6; --focus-ring-color: #5472ff66; - --form-valid-color: #78d694; - --form-valid-border-color: #78d694; + --form-valid-color: var(--green); + --form-valid-border-color: var(--green); --form-invalid-color: #ff8e86; --form-invalid-border-color: #ff8e86; + + /* Missing variables from template.css - Added for compatibility */ + --_fa-family: var(--fa-family, var(--fa-style-family, "Font Awesome 7 Free")); + --accordion-active-bg: #2b323b; + --accordion-active-color: #c7ccff; + --accordion-bg: var(--body-color); + --accordion-body-padding-x: 1.25rem; + --accordion-body-padding-y: 1rem; + --accordion-border-color: var(--border-color); + --accordion-border-radius: 0.25rem; + --accordion-border-width: 1px; + --accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23c7ccff'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --accordion-btn-bg: var(--accordion-bg); + --accordion-btn-color: var(--body-color); + --accordion-btn-focus-border-color: #5472ff; + --accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(84, 114, 255, 0.6); + --accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23e6ebf1'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --accordion-btn-icon-transform: rotate(-180deg); + --accordion-btn-icon-transition: transform 0.2s ease-in-out; + --accordion-btn-icon-width: 1.25rem; + --accordion-btn-padding-x: 1.25rem; + --accordion-btn-padding-y: 1rem; + --accordion-color: var(--body-color); + --accordion-inner-border-radius: calc(0.25rem - 1px); + --accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --alert-bg: #2b323b; + --alert-border: 1px solid var(--alert-border-color); + --alert-border-color: #36404a; + --alert-border-radius: 0.25rem; + --alert-color: var(--body-color); + --alert-margin-bottom: 1rem; + --alert-padding-x: 1rem; + --alert-padding-y: 1rem; + --aspect-ratio: 42.8571428571%; + --backdrop-bg: hsl(0, 0%, 0%); + --backdrop-opacity: 0.5; + --backdrop-zindex: 1040; + --badge-border-radius: 0.25rem; + --badge-color: var(--body-color); + --badge-font-size: 0.75em; + --badge-font-weight: 700; + --badge-padding-x: 0.65em; + --badge-padding-y: 0.35em; + --bg-opacity: 1; + --black-rgb: 0, 0, 0; + --body-text-align: left; + --border-opacity: 1; + --border-radius-sxl: .5rem; + --breadcrumb-bg: ; + --breadcrumb-border-radius: ; + --breadcrumb-divider: "/"; + --breadcrumb-divider-color: var(--secondary); + --breadcrumb-font-size: 1rem; + --breadcrumb-item-active-color: var(--link-color); + --breadcrumb-item-padding-x: 0.5rem; + --breadcrumb-margin-bottom: 1rem; + --breadcrumb-padding-x: 0; + --breadcrumb-padding-y: 0; + --bs-body-bg: var(--body-bg); + --bs-border-radius: var(--border-radius); + --btn-active-shadow-rgb: 84, 114, 255; + --btn-disabled-bg: var(--primary); + --btn-focus-bg: transparent; + --btn-focus-border-color: transparent; + --btn-focus-color: var(--btn-color); + --card-bg: var(--body-bg); + --card-border-color: var(--border-color); + --card-border-radius: var(--border-radius); + --card-border-width: var(--border-width); + --card-cap-bg: rgba(255, 255, 255, 0.03); + --card-cap-color: inherit; + --card-cap-padding-x: 1rem; + --card-cap-padding-y: 0.5rem; + --card-color: inherit; + --card-group-margin: 0.75rem; + --card-height: auto; + --card-img-overlay-padding: 1rem; + --card-inner-border-radius: calc(var(--border-radius) - var(--border-width)); + --card-spacer-x: 1rem; + --card-spacer-y: 1rem; + --card-title-spacer-y: 0.5rem; + --color-active: var(--mainmenu-nav-link-color); + --color-brand: var(--color-primary); + --container-below-topbar-background-repeat: var(--container-below-topbar-bg-repeat); + --container-below-topbar-bg-color: ; + --container-bottom-a-background-repeat: var(--container-bottom-a-bg-repeat); + --container-bottom-b-background-repeat: var(--container-bottom-b-bg-repeat); + --container-sidebar-background-repeat: var(--container-sidebar-bg-repeat); + --container-top-a-background-repeat: var(--container-top-a-bg-repeat); + --container-top-b-background-repeat: var(--container-top-b-bg-repeat); + --dropdown-bg: var(--dark); + --dropdown-border-color: var(--border-color-translucent); + --dropdown-border-radius: 0.25rem; + --dropdown-border-width: 1px; + --dropdown-color: var(--body-color); + --dropdown-divider-bg: var(--border-color-translucent); + --dropdown-divider-margin-y: 0.5rem; + --dropdown-font-size: 1rem; + --dropdown-header-color: var(--secondary); + --dropdown-header-padding-x: 1rem; + --dropdown-header-padding-y: 0.5rem; + --dropdown-item-padding-x: 1rem; + --dropdown-item-padding-y: 0.25rem; + --dropdown-link-active-bg: var(--primary); + --dropdown-link-active-color: var(--body-color); + --dropdown-link-color: var(--body-color); + --dropdown-link-disabled-color: var(--secondary); + --dropdown-min-width: 10rem; + --dropdown-padding-x: 0; + --dropdown-padding-y: 0.5rem; + --dropdown-spacer: 0.125rem; + --dropdown-zindex: 1000; + --fa-display: inline-block; + --fa-family: var(--fa-style-family, "Font Awesome 7 Free"); + --fa-style: 900; + --fa-style-family: "Font Awesome 7 Free"; + --fa-width: 1.25em; + --font-family-body: var(--body-font-family); + --font-family-headings: var(--body-font-family); + --font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --font-weight-headings: 700; + --font-weight-normal: 400; + --gab-blue: #6fb7ff; + --gab-gray1: #222831; + --gab-gray2: #2b323b; + --gab-gray3: #36404a; + --gab-green: #78d694; + --gab-orange: #ff9c4d; + --gab-red: #ff7a73; + --gutter-x: 3rem; + --gutter-y: 3rem; + --hue: 220; + --list-group-action-active-bg: var(--primary-bg-subtle); + --list-group-action-active-color: var(--emphasis-color); + --list-group-action-color: var(--body-color); + --list-group-active-bg: var(--primary); + --list-group-active-border-color: var(--primary); + --list-group-active-color: var(--emphasis-color); + --list-group-bg: var(--body-bg); + --list-group-border-color: var(--border-color); + --list-group-border-radius: 0.25rem; + --list-group-border-width: 1px; + --list-group-color: var(--body-color); + --list-group-disabled-bg: var(--body-bg); + --list-group-disabled-color: var(--secondary); + --list-group-item-padding-x: 1rem; + --list-group-item-padding-y: 0.5rem; + --modal-bg: var(--body-bg); + --modal-border-color: var(--border-color-translucent); + --modal-border-radius: 0.3rem; + --modal-border-width: 1px; + --modal-color: ; + --modal-footer-bg: ; + --modal-footer-border-color: var(--border-color); + --modal-footer-border-width: 1px; + --modal-footer-gap: 0.5rem; + --modal-header-border-color: var(--border-color); + --modal-header-border-width: 1px; + --modal-header-padding: 1rem 1rem; + --modal-header-padding-x: 1rem; + --modal-header-padding-y: 1rem; + --modal-inner-border-radius: calc(0.3rem - 1px); + --modal-margin: 1.75rem; + --modal-padding: 1rem; + --modal-title-line-height: 1.5; + --modal-width: 1140px; + --modal-zindex: 1050; + --nav-link-active-color: var(--link-active-color); + --nav-link-color: var(--link-color); + --nav-link-disabled-color: var(--secondary); + --nav-link-font-size: 1rem; + --nav-link-font-weight: ; + --nav-link-padding-x: 1rem; + --nav-link-padding-y: 0.5rem; + --nav-pills-border-radius: 0.25rem; + --nav-pills-link-active-bg: var(--primary); + --nav-pills-link-active-color: var(--emphasis-color); + --nav-tabs-border-color: var(--border-color); + --nav-tabs-border-radius: 0.25rem; + --nav-tabs-border-width: 1px; + --nav-tabs-link-active-bg: var(--body-bg); + --nav-tabs-link-active-border-color: var(--border-color) var(--border-color) var(--body-bg); + --nav-tabs-link-active-color: var(--emphasis-color); + --navbar-active-color: var(--link-active-color); + --navbar-brand-active-color: var(--link-active-color); + --navbar-brand-color: var(--body-color); + --navbar-brand-font-size: 1.25rem; + --navbar-brand-margin-end: 1rem; + --navbar-brand-padding-y: 0.3125rem; + --navbar-color: var(--body-color); + --navbar-nav-link-padding-x: 0.5rem; + --navbar-padding-x: 1rem; + --navbar-padding-y: 0.5rem; + --navbar-toggler-font-size: 1.25rem; + --navbar-toggler-padding-x: 0.75rem; + --navbar-toggler-padding-y: 0.25rem; + --navbar-toggler-transition: box-shadow 0.15s ease-in-out; + --offcanvas-bg: var(--body-bg); + --offcanvas-border-color: var(--border-color-translucent); + --offcanvas-border-width: 0; + --offcanvas-color: ; + --offcanvas-height: auto; + --offcanvas-padding-x: 1rem; + --offcanvas-padding-y: 1rem; + --offcanvas-width: 400px; + --offcanvas-zindex: 1045; + --padding-x: 0.25rem; + --padding-y: 0.25rem; + --pagination-active-bg: var(--primary); + --pagination-active-border-color: var(--primary); + --pagination-active-color: var(--emphasis-color); + --pagination-bg: var(--body-bg); + --pagination-border-color: var(--border-color); + --pagination-border-radius: 0.2rem; + --pagination-border-width: 1px; + --pagination-color: var(--link-color); + --pagination-disabled-bg: var(--body-bg); + --pagination-disabled-border-color: var(--border-color); + --pagination-disabled-color: var(--secondary); + --pagination-focus-bg: var(--secondary-bg); + --pagination-focus-box-shadow: 0 0 0 0.25rem rgba(84, 114, 255, 0.6); + --pagination-focus-color: var(--link-active-color); + --pagination-font-size: 0.875rem; + --pagination-padding-x: 0.5rem; + --pagination-padding-y: 0.25rem; + --popover-arrow-border: var(--popover-border-color); + --popover-arrow-height: 0.5rem; + --popover-arrow-width: 1rem; + --popover-bg: var(--body-bg); + --popover-body-color: var(--body-color); + --popover-body-padding-x: 1rem; + --popover-body-padding-y: 1rem; + --popover-border-color: var(--border-color-translucent); + --popover-border-radius: 0.3rem; + --popover-border-width: 1px; + --popover-font-size: 0.875rem; + --popover-header-bg: var(--secondary-bg); + --popover-header-color: ; + --popover-header-font-size: 1rem; + --popover-header-padding-x: 1rem; + --popover-header-padding-y: 0.5rem; + --popover-inner-border-radius: calc(0.3rem - 1px); + --popover-max-width: 276px; + --popover-zindex: 1060; + --progress-bar-bg: var(--primary); + --progress-bar-color: var(--emphasis-color); + --progress-bar-transition: width 0.6s ease; + --progress-bg: var(--secondary-bg); + --progress-border-radius: 0.25rem; + --progress-font-size: 0.75rem; + --progress-height: 1rem; + --scroll-height: 75vh; + --spinner-animation-name: spinner-grow; + --spinner-animation-speed: 1.5s; + --spinner-border-width: 0.2em; + --spinner-height: 1rem; + --spinner-vertical-align: -0.125em; + --spinner-width: 1rem; + --subhead-btn-accent: #5472ff; + --table-accent-bg: var(--table-active-bg); + --table-active-bg: var(--secondary-bg); + --table-active-color: var(--emphasis-color); + --table-bg: var(--body-bg); + --table-border-color: var(--border-color); + --table-color: var(--body-color); + --table-striped-bg: var(--secondary-bg); + --table-striped-color: var(--body-color); + --template-bg-dark-80: hsl(var(--hue), 40%, 20%); + --template-bg-light: var(--body-bg); + --text-opacity: 1; + --toast-bg: rgba(21, 27, 34, 0.85); + --toast-border-color: var(--border-color-translucent); + --toast-border-radius: 0.25rem; + --toast-border-width: 1px; + --toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --toast-color: ; + --toast-font-size: 0.875rem; + --toast-header-bg: rgba(21, 27, 34, 0.85); + --toast-header-border-color: var(--border-color); + --toast-header-color: var(--secondary-text-emphasis); + --toast-max-width: 350px; + --toast-padding-x: 0.75rem; + --toast-padding-y: 0.5rem; + --toast-spacing: 1em; + --toast-zindex: 1090; + --tooltip-arrow-height: 0.4rem; + --tooltip-arrow-width: 0.8rem; + --tooltip-bg: hsl(0, 0%, 0%); + --tooltip-border-radius: 0.25rem; + --tooltip-color: var(--emphasis-color); + --tooltip-font-size: 0.875rem; + --tooltip-margin: ; + --tooltip-max-width: 200px; + --tooltip-opacity: 0.9; + --tooltip-padding-x: 0.5rem; + --tooltip-padding-y: 0.25rem; + --tooltip-zindex: 1070; + --white-rgb: 255, 255, 255; } .btn { diff --git a/src/media/css/colors/light/colors_alternative.css b/src/media/css/colors/light/colors_alternative.css index 49b5675..27253a4 100644 --- a/src/media/css/colors/light/colors_alternative.css +++ b/src/media/css/colors/light/colors_alternative.css @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/css/global/light/colors_alternative.css - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Alternative light mode color definitions for Moko-Cassiopeia template */ diff --git a/src/media/css/colors/light/colors_standard.css b/src/media/css/colors/light/colors_standard.css index c9daa6c..e2645b8 100644 --- a/src/media/css/colors/light/colors_standard.css +++ b/src/media/css/colors/light/colors_standard.css @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/css/global/light/colors_standard.css - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Standard light mode color definitions for Moko-Cassiopeia template */ @@ -94,7 +94,7 @@ --nav-bg-color: var(--color-link); --border: 5px; - --muted-color: #6d757e; + --muted-color: var(--secondary); --hr-color: var(--border-color, #dfe3e7); --link-active-color: var(--link-color); --code-color-ink: var(--code-color, #e93f8e); @@ -126,7 +126,7 @@ --gray-600: #6d757e; --gray-700: #484f56; --gray-800: #353b41; - --gray-900: #22262a; + --gray-900: var(--body-color); --primary: #010156; --secondary: #6d757e; --success: #448344; @@ -197,7 +197,7 @@ --link-hover-color: #424077; --link-hover-color-rgb: 66, 64, 119; --code-color: #e93f8e; - --highlight-color: #22262a; + --highlight-color: var(--body-color); --highlight-bg: #fbeea8; --border-width: 1px; --border-style: solid; @@ -217,10 +217,304 @@ --focus-ring-width: .25rem; --focus-ring-opacity: .25; --focus-ring-color: #01015640; - --form-valid-color: #448344; - --form-valid-border-color: #448344; - --form-invalid-color: #a51f18; - --form-invalid-border-color: #a51f18; + --form-valid-color: var(--success); + --form-valid-border-color: var(--success); + --form-invalid-color: var(--danger); + --form-invalid-border-color: var(--danger); + + /* Missing variables from template.css - Added for compatibility */ + --_fa-family: var(--fa-family, var(--fa-style-family, "Font Awesome 7 Free")); + --accordion-active-bg: #e7eaee; + --accordion-active-color: #0f244d; + --accordion-bg: var(--body-color); + --accordion-body-padding-x: 1.25rem; + --accordion-body-padding-y: 1rem; + --accordion-border-color: var(--border-color); + --accordion-border-radius: 0.25rem; + --accordion-border-width: 1px; + --accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230f244d'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --accordion-btn-bg: var(--accordion-bg); + --accordion-btn-color: hsl(210, 11%, 15%); + --accordion-btn-focus-border-color: #8894aa; + --accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(1, 1, 86, 0.25); + --accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='hsl%28210, 11%, 15%%29'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --accordion-btn-icon-transform: rotate(-180deg); + --accordion-btn-icon-transition: transform 0.2s ease-in-out; + --accordion-btn-icon-width: 1.25rem; + --accordion-btn-padding-x: 1.25rem; + --accordion-btn-padding-y: 1rem; + --accordion-color: hsl(210, 11%, 15%); + --accordion-inner-border-radius: calc(0.25rem - 1px); + --accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --alert-bg: #d7d8d9; + --alert-border: 1px solid var(--alert-border-color); + --alert-border-color: #c2c4c6; + --alert-border-radius: 0.25rem; + --alert-color: #202327; + --alert-margin-bottom: 1rem; + --alert-padding-x: 1rem; + --alert-padding-y: 1rem; + --aspect-ratio: 42.8571428571%; + --backdrop-bg: hsl(0, 0%, 0%); + --backdrop-opacity: 0.5; + --backdrop-zindex: 1040; + --badge-border-radius: 0.25rem; + --badge-color: var(--body-color); + --badge-font-size: 0.75em; + --badge-font-weight: 700; + --badge-padding-x: 0.65em; + --badge-padding-y: 0.35em; + --bg-opacity: 1; + --body-text-align: left; + --border-opacity: 1; + --border-radius-sxl: .5rem; + --breadcrumb-bg: ; + --breadcrumb-border-radius: ; + --breadcrumb-divider: "/"; + --breadcrumb-divider-color: hsl(210, 7%, 46%); + --breadcrumb-font-size: 1rem; + --breadcrumb-item-active-color: var(--link-color); + --breadcrumb-item-padding-x: 0.5rem; + --breadcrumb-margin-bottom: 1rem; + --breadcrumb-padding-x: 0; + --breadcrumb-padding-y: 0; + --bs-body-bg: var(--body-bg); + --bs-border-radius: var(--border-radius); + --btn-active-shadow-rgb: 1, 1, 86; + --btn-focus-bg: transparent; + --btn-focus-border-color: transparent; + --btn-focus-color: var(--btn-color); + --card-bg: var(--body-bg); + --card-border-color: var(--border-color); + --card-border-radius: var(--border-radius); + --card-border-width: var(--border-width); + --card-cap-bg: rgba(0, 0, 0, 0.03); + --card-cap-color: inherit; + --card-cap-padding-x: 1rem; + --card-cap-padding-y: 0.5rem; + --card-color: inherit; + --card-group-margin: 0.75rem; + --card-height: auto; + --card-img-overlay-padding: 1rem; + --card-inner-border-radius: calc(var(--border-radius) - var(--border-width)); + --card-spacer-x: 1rem; + --card-spacer-y: 1rem; + --card-title-spacer-y: 0.5rem; + --color-active: var(--color-hover); + --color-brand: var(--color-primary); + --container-below-topbar-background-repeat: var(--container-below-topbar-bg-repeat); + --container-below-topbar-bg-color: ; + --container-bottom-a-background-repeat: var(--container-bottom-a-bg-repeat); + --container-bottom-b-background-repeat: var(--container-bottom-b-bg-repeat); + --container-sidebar-background-repeat: var(--container-sidebar-bg-repeat); + --container-top-a-background-repeat: var(--container-top-a-bg-repeat); + --container-top-b-background-repeat: var(--container-top-b-bg-repeat); + --dropdown-bg: hsl(210, 10%, 23%); + --dropdown-border-color: var(--border-color-translucent); + --dropdown-border-radius: 0.25rem; + --dropdown-border-width: 1px; + --dropdown-color: hsl(210, 14%, 89%); + --dropdown-divider-bg: var(--border-color-translucent); + --dropdown-divider-margin-y: 0.5rem; + --dropdown-font-size: 1rem; + --dropdown-header-color: hsl(210, 11%, 71%); + --dropdown-header-padding-x: 1rem; + --dropdown-header-padding-y: 0.5rem; + --dropdown-item-padding-x: 1rem; + --dropdown-item-padding-y: 0.25rem; + --dropdown-link-active-bg: var(--primary); + --dropdown-link-active-color: var(--body-color); + --dropdown-link-color: hsl(210, 14%, 89%); + --dropdown-link-disabled-color: hsl(210, 11%, 71%); + --dropdown-min-width: 10rem; + --dropdown-padding-x: 0; + --dropdown-padding-y: 0.5rem; + --dropdown-spacer: 0.125rem; + --dropdown-zindex: 1000; + --fa-display: inline-block; + --fa-family: var(--fa-style-family, "Font Awesome 7 Free"); + --fa-style: 900; + --fa-style-family: "Font Awesome 7 Free"; + --fa-width: 1.25em; + --font-family-body: var(--body-font-family); + --font-family-headings: var(--body-font-family); + --font-weight-headings: 700; + --font-weight-normal: 400; + --gab-blue: #0066cc; + --gab-gray1: #f5f5f5; + --gab-gray2: #e0e0e0; + --gab-gray3: #bdbdbd; + --gab-green: #4caf50; + --gab-orange: #ff9800; + --gab-red: #f44336; + --gutter-x: 3rem; + --gutter-y: 3rem; + --hue: 220; + --list-group-action-active-bg: hsl(210, 16%, 93%); + --list-group-action-active-color: hsl(210, 11%, 15%); + --list-group-action-color: hsl(210, 9%, 31%); + --list-group-active-bg: var(--primary); + --list-group-active-border-color: var(--primary); + --list-group-active-color: var(--body-color); + --list-group-bg: var(--body-color); + --list-group-border-color: rgba(0, 0, 0, 0.125); + --list-group-border-radius: 0.25rem; + --list-group-border-width: 1px; + --list-group-color: hsl(210, 11%, 15%); + --list-group-disabled-bg: var(--body-color); + --list-group-disabled-color: hsl(210, 7%, 46%); + --list-group-item-padding-x: 1rem; + --list-group-item-padding-y: 0.5rem; + --modal-bg: var(--body-color); + --modal-border-color: var(--border-color-translucent); + --modal-border-radius: 0.3rem; + --modal-border-width: 1px; + --modal-color: ; + --modal-footer-bg: ; + --modal-footer-border-color: var(--border-color); + --modal-footer-border-width: 1px; + --modal-footer-gap: 0.5rem; + --modal-header-border-color: var(--border-color); + --modal-header-border-width: 1px; + --modal-header-padding: 1rem 1rem; + --modal-header-padding-x: 1rem; + --modal-header-padding-y: 1rem; + --modal-inner-border-radius: calc(0.3rem - 1px); + --modal-margin: 1.75rem; + --modal-padding: 1rem; + --modal-title-line-height: 1.5; + --modal-width: 1140px; + --modal-zindex: 1050; + --nav-link-active-color: var(--link-active-color); + --nav-link-color: var(--link-color); + --nav-link-disabled-color: hsl(210, 7%, 46%); + --nav-link-font-size: 1rem; + --nav-link-font-weight: ; + --nav-link-padding-x: 1rem; + --nav-link-padding-y: 0.5rem; + --nav-pills-border-radius: 0.25rem; + --nav-pills-link-active-bg: var(--primary); + --nav-pills-link-active-color: var(--body-color); + --nav-tabs-border-color: hsl(210, 14%, 89%); + --nav-tabs-border-radius: 0.25rem; + --nav-tabs-border-width: 1px; + --nav-tabs-link-active-bg: var(--body-color); + --nav-tabs-link-active-border-color: hsl(210, 14%, 89%) hsl(210, 14%, 89%) var(--body-color); + --nav-tabs-link-active-color: hsl(210, 9%, 31%); + --navbar-active-color: var(--link-active-color); + --navbar-brand-active-color: var(--link-active-color); + --navbar-brand-color: var(--body-color); + --navbar-brand-font-size: 1.25rem; + --navbar-brand-margin-end: 1rem; + --navbar-brand-padding-y: 0.3125rem; + --navbar-color: var(--body-color); + --navbar-nav-link-padding-x: 0.5rem; + --navbar-padding-x: 1rem; + --navbar-padding-y: 0.5rem; + --navbar-toggler-font-size: 1.25rem; + --navbar-toggler-padding-x: 0.75rem; + --navbar-toggler-padding-y: 0.25rem; + --navbar-toggler-transition: box-shadow 0.15s ease-in-out; + --offcanvas-bg: var(--body-color); + --offcanvas-border-color: var(--border-color-translucent); + --offcanvas-border-width: 0; + --offcanvas-color: ; + --offcanvas-height: auto; + --offcanvas-padding-x: 1rem; + --offcanvas-padding-y: 1rem; + --offcanvas-width: 400px; + --offcanvas-zindex: 1045; + --padding-x: 0.25rem; + --padding-y: 0.25rem; + --pagination-active-bg: var(--primary); + --pagination-active-border-color: var(--primary); + --pagination-active-color: var(--body-color); + --pagination-bg: var(--body-color); + --pagination-border-color: hsl(210, 14%, 89%); + --pagination-border-radius: 0.2rem; + --pagination-border-width: 1px; + --pagination-color: var(--link-color); + --pagination-disabled-bg: var(--body-color); + --pagination-disabled-border-color: hsl(210, 14%, 89%); + --pagination-disabled-color: hsl(210, 7%, 46%); + --pagination-focus-bg: hsl(210, 16%, 93%); + --pagination-focus-box-shadow: 0 0 0 0.25rem rgba(1, 1, 86, 0.25); + --pagination-focus-color: var(--link-active-color); + --pagination-font-size: 0.875rem; + --pagination-padding-x: 0.5rem; + --pagination-padding-y: 0.25rem; + --popover-arrow-border: var(--popover-border-color); + --popover-arrow-height: 0.5rem; + --popover-arrow-width: 1rem; + --popover-bg: var(--body-color); + --popover-body-color: hsl(210, 11%, 15%); + --popover-body-padding-x: 1rem; + --popover-body-padding-y: 1rem; + --popover-border-color: var(--border-color-translucent); + --popover-border-radius: 0.3rem; + --popover-border-width: 1px; + --popover-font-size: 0.875rem; + --popover-header-bg: #f0f0f0; + --popover-header-color: ; + --popover-header-font-size: 1rem; + --popover-header-padding-x: 1rem; + --popover-header-padding-y: 0.5rem; + --popover-inner-border-radius: calc(0.3rem - 1px); + --popover-max-width: 276px; + --popover-zindex: 1060; + --progress-bar-bg: var(--primary); + --progress-bar-color: var(--body-color); + --progress-bar-transition: width 0.6s ease; + --progress-bg: hsl(210, 16%, 93%); + --progress-border-radius: 0.25rem; + --progress-font-size: 0.75rem; + --progress-height: 1rem; + --scroll-height: 75vh; + --spinner-animation-name: spinner-grow; + --spinner-animation-speed: 1.5s; + --spinner-border-width: 0.2em; + --spinner-height: 1rem; + --spinner-vertical-align: -0.125em; + --spinner-width: 1rem; + --subhead-btn-accent: #132f53; + --table-accent-bg: var(--table-active-bg); + --table-active-bg: #444a4f; + --table-active-color: var(--body-color); + --table-bg: hsl(210, 10%, 23%); + --table-border-color: #494f54; + --table-color: var(--body-color); + --table-striped-bg: #3f454b; + --table-striped-color: var(--body-color); + --template-bg-dark-80: hsl(var(--hue), 40%, 20%); + --template-bg-light: #f0f4fb; + --text-opacity: 1; + --toast-bg: rgba(255, 255, 255, 0.85); + --toast-border-color: var(--border-color-translucent); + --toast-border-radius: 0.25rem; + --toast-border-width: 1px; + --toast-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --toast-color: ; + --toast-font-size: 0.875rem; + --toast-header-bg: rgba(255, 255, 255, 0.85); + --toast-header-border-color: rgba(0, 0, 0, 0.05); + --toast-header-color: hsl(210, 7%, 46%); + --toast-max-width: 350px; + --toast-padding-x: 0.75rem; + --toast-padding-y: 0.5rem; + --toast-spacing: 1em; + --toast-zindex: 1090; + --tooltip-arrow-height: 0.4rem; + --tooltip-arrow-width: 0.8rem; + --tooltip-bg: hsl(0, 0%, 0%); + --tooltip-border-radius: 0.25rem; + --tooltip-color: var(--body-color); + --tooltip-font-size: 0.875rem; + --tooltip-margin: ; + --tooltip-max-width: 200px; + --tooltip-opacity: 0.9; + --tooltip-padding-x: 0.5rem; + --tooltip-padding-y: 0.25rem; + --tooltip-zindex: 1070; } .btn { @@ -266,8 +560,8 @@ .btn-primary { --btn-color: hsl(0, 0%, 100%); - --btn-bg: hsl(240, 98%, 17%); - --btn-border-color: hsl(240, 98%, 17%); + --btn-bg: var(--primary); + --btn-border-color: var(--primary); --btn-hover-color: hsl(0, 0%, 100%); --btn-hover-bg: #010149; --btn-hover-border-color: #010145; @@ -277,8 +571,8 @@ --btn-active-border-color: #010141; --btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); --btn-disabled-color: hsl(0, 0%, 100%); - --btn-disabled-bg: hsl(240, 98%, 17%); - --btn-disabled-border-color: hsl(240, 98%, 17%); + --btn-disabled-bg: var(--primary); + --btn-disabled-border-color: var(--primary); } .btn-secondary { @@ -401,19 +695,19 @@ } .btn-outline-primary { - --btn-color: hsl(240, 98%, 17%); - --btn-border-color: hsl(240, 98%, 17%); + --btn-color: var(--primary); + --btn-border-color: var(--primary); --btn-hover-color: hsl(0, 0%, 100%); - --btn-hover-bg: hsl(240, 98%, 17%); - --btn-hover-border-color: hsl(240, 98%, 17%); + --btn-hover-bg: var(--primary); + --btn-hover-border-color: var(--primary); --btn-focus-shadow-rgb: 1, 1, 86; --btn-active-color: hsl(0, 0%, 100%); - --btn-active-bg: hsl(240, 98%, 17%); - --btn-active-border-color: hsl(240, 98%, 17%); + --btn-active-bg: var(--primary); + --btn-active-border-color: var(--primary); --btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); - --btn-disabled-color: hsl(240, 98%, 17%); + --btn-disabled-color: var(--primary); --btn-disabled-bg: transparent; - --btn-disabled-border-color: hsl(240, 98%, 17%); + --btn-disabled-border-color: var(--primary); --gradient: none; } diff --git a/src/media/css/editor.css b/src/media/css/editor.css index 426b3a5..503b5ce 100644 --- a/src/media/css/editor.css +++ b/src/media/css/editor.css @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/css/editor.css - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Stylesheet for Joomla editor content within Moko-Cassiopeia template */ diff --git a/src/media/css/system/searchtools/searchtools.css b/src/media/css/system/searchtools/searchtools.css index 33281d5..beee4b1 100644 --- a/src/media/css/system/searchtools/searchtools.css +++ b/src/media/css/system/searchtools/searchtools.css @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/css/system/searchtools/searchtools.css - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Stylesheet for Joomla search tools integration in Moko-Cassiopeia template */ diff --git a/src/media/css/template-rtl.css b/src/media/css/template-rtl.css index 55e8898..d83191b 100644 --- a/src/media/css/template-rtl.css +++ b/src/media/css/template-rtl.css @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/css/template-rtl.css - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Right-to-left (RTL) layout stylesheet for Moko-Cassiopeia template */ diff --git a/src/media/css/template.css b/src/media/css/template.css index e025344..d8aa8b5 100644 --- a/src/media/css/template.css +++ b/src/media/css/template.css @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/css/template.css - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Main stylesheet providing layout, typography, and component styles for Moko-Cassiopeia */ diff --git a/src/media/js/darkmode-toggle.js b/src/media/js/darkmode-toggle.js index 84b8281..56a6e85 100644 --- a/src/media/js/darkmode-toggle.js +++ b/src/media/js/darkmode-toggle.js @@ -8,7 +8,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/js/darkmode-toggle.js - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: JavaScript logic for dark mode toggle functionality in Moko-Cassiopeia */ diff --git a/src/media/js/mod_menu/menu-metismenu-es5.js b/src/media/js/mod_menu/menu-metismenu-es5.js index e17e87a..b483eba 100644 --- a/src/media/js/mod_menu/menu-metismenu-es5.js +++ b/src/media/js/mod_menu/menu-metismenu-es5.js @@ -8,7 +8,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/js/mod_menu/menu-metismenu-es5.js - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: ES5-compatible MetisMenu script for Joomla mod_menu in Moko-Cassiopeia */ diff --git a/src/media/js/mod_menu/menu-metismenu.js b/src/media/js/mod_menu/menu-metismenu.js index 4133a5a..80a5804 100644 --- a/src/media/js/mod_menu/menu-metismenu.js +++ b/src/media/js/mod_menu/menu-metismenu.js @@ -8,7 +8,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/js/mod_menu/menu-metismenu.js - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Modern MetisMenu script for Joomla mod_menu in Moko-Cassiopeia */ diff --git a/src/media/js/template.js b/src/media/js/template.js index 0d0639f..cce4c0a 100644 --- a/src/media/js/template.js +++ b/src/media/js/template.js @@ -8,7 +8,7 @@ DEFGROUP: Joomla.Template.Site INGROUP: Moko-Cassiopeia PATH: ./media/templates/site/moko-cassiopeia/js/template.js - VERSION: 03.05.00 + VERSION: 03.08.00 BRIEF: Core JavaScript utilities and behaviors for Moko-Cassiopeia template */ !function(a){"use strict";window.Toc={helpers:{findOrFilter:function(e,t){var n=e.find(t);return e.filter(t).add(n).filter(":not([data-toc-skip])")},generateUniqueIdBase:function(e){return a(e).text().trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,64).replace(/^-+|-+$/gm,"").toLowerCase()||e.tagName.toLowerCase()},generateUniqueId:function(e){for(var t=this.generateUniqueIdBase(e),n=0;;n++){var r=t;if(0')},createChildNavList:function(e){var t=this.createNavList();return e.append(t),t},generateNavEl:function(e,t){var n=a('');n.attr("href","#"+e),n.text(t);var r=a("
  • ");return r.append(n),r},generateNavItem:function(e){var t=this.generateAnchor(e),n=a(e),r=n.data("toc-text")||n.text();return this.generateNavEl(t,r)},getTopLevel:function(e){for(var t=1;t<=6;t++){if(1 + * @license GNU General Public License version 3 or later; see LICENSE.txt + * + * SPDX-License-Identifier: GPL-3.0-or-later + * + * FILE INFORMATION + * DEFGROUP: Joomla.Template.Site + * INGROUP: Moko-Cassiopeia + * PATH: ./templates/moko-cassiopeia/script.php + * VERSION: 03.08.00 + * BRIEF: Installation and update script for Moko-Cassiopeia template + */ + +defined('_JEXEC') or die; + +use Joomla\CMS\Factory; +use Joomla\CMS\Filesystem\File; +use Joomla\CMS\Filesystem\Folder; +use Joomla\CMS\Installer\InstallerAdapter; +use Joomla\CMS\Installer\InstallerScriptInterface; +use Joomla\CMS\Language\Text; +use Joomla\CMS\Log\Log; + +/** + * Installation script for Moko-Cassiopeia template + * + * @since 03.08.00 + */ +return new class () implements InstallerScriptInterface { + /** + * The template's minimum supported Joomla version + * + * @var string + * @since 03.08.00 + */ + private $minimumJoomla = '4.0'; + + /** + * The template's minimum supported PHP version + * + * @var string + * @since 03.08.00 + */ + private $minimumPhp = '7.4'; + + /** + * List of files to be removed during update (old/deprecated files) + * + * @var array + * @since 03.08.00 + */ + private $filesToRemove = [ + // Add deprecated files here as needed + // Example: 'media/templates/site/moko-cassiopeia/js/old-script.js', + ]; + + /** + * List of folders to be removed during update (old/deprecated folders) + * + * @var array + * @since 03.08.00 + */ + private $foldersToRemove = [ + // Add deprecated folders here as needed + // Example: 'media/templates/site/moko-cassiopeia/old-assets', + ]; + + /** + * Function called before extension installation/update/removal procedure commences + * + * @param string $type The type of change (install or discover_install, update, uninstall) + * @param InstallerAdapter $parent The class calling this method + * + * @return boolean True on success + * + * @since 03.08.00 + */ + public function preflight(string $type, InstallerAdapter $parent): bool + { + // Check minimum Joomla version + if (version_compare(JVERSION, $this->minimumJoomla, '<')) { + Factory::getApplication()->enqueueMessage( + sprintf( + Text::_('JLIB_INSTALLER_MINIMUM_JOOMLA'), + $this->minimumJoomla + ), + 'error' + ); + return false; + } + + // Check minimum PHP version + if (version_compare(PHP_VERSION, $this->minimumPhp, '<')) { + Factory::getApplication()->enqueueMessage( + sprintf( + Text::_('JLIB_INSTALLER_MINIMUM_PHP'), + $this->minimumPhp + ), + 'error' + ); + return false; + } + + return true; + } + + /** + * Function called after extension installation/update/removal procedure completes + * + * @param string $type The type of change (install or discover_install, update, uninstall) + * @param InstallerAdapter $parent The class calling this method + * + * @return boolean True on success + * + * @since 03.08.00 + */ + public function postflight(string $type, InstallerAdapter $parent): bool + { + // Only run cleanup on update + if ($type === 'update') { + $this->cleanupMediaFolder(); + } + + // Display success message + if ($type === 'install') { + Factory::getApplication()->enqueueMessage( + 'Moko-Cassiopeia template has been successfully installed!', + 'success' + ); + } elseif ($type === 'update') { + Factory::getApplication()->enqueueMessage( + 'Moko-Cassiopeia template has been successfully updated to version 03.08.00!', + 'success' + ); + } + + return true; + } + + /** + * Function called when extension is installed + * + * @param InstallerAdapter $parent The class calling this method + * + * @return boolean True on success + * + * @since 03.08.00 + */ + public function install(InstallerAdapter $parent): bool + { + return true; + } + + /** + * Function called when extension is updated + * + * @param InstallerAdapter $parent The class calling this method + * + * @return boolean True on success + * + * @since 03.08.00 + */ + public function update(InstallerAdapter $parent): bool + { + return true; + } + + /** + * Function called when extension is uninstalled + * + * @param InstallerAdapter $parent The class calling this method + * + * @return boolean True on success + * + * @since 03.08.00 + */ + public function uninstall(InstallerAdapter $parent): bool + { + return true; + } + + /** + * Clean up the media folder by removing old and deprecated files + * + * @return void + * + * @since 03.08.00 + */ + private function cleanupMediaFolder(): void + { + $app = Factory::getApplication(); + $mediaPath = JPATH_ROOT . '/media/templates/site/moko-cassiopeia'; + $removedFiles = 0; + $removedFolders = 0; + $errors = []; + + // Set up logging + Log::addLogger( + ['text_file' => 'moko_cassiopeia_cleanup.php'], + Log::ALL, + ['moko-cassiopeia-cleanup'] + ); + + Log::add('Starting media folder cleanup', Log::INFO, 'moko-cassiopeia-cleanup'); + + // Remove deprecated files + foreach ($this->filesToRemove as $file) { + $filePath = JPATH_ROOT . '/' . $file; + + if (File::exists($filePath)) { + try { + if (File::delete($filePath)) { + $removedFiles++; + Log::add("Removed file: {$file}", Log::INFO, 'moko-cassiopeia-cleanup'); + } else { + $errors[] = "Failed to remove file: {$file}"; + Log::add("Failed to remove file: {$file}", Log::WARNING, 'moko-cassiopeia-cleanup'); + } + } catch (\Exception $e) { + $errors[] = "Error removing file {$file}: " . $e->getMessage(); + Log::add("Error removing file {$file}: " . $e->getMessage(), Log::ERROR, 'moko-cassiopeia-cleanup'); + } + } + } + + // Remove deprecated folders + foreach ($this->foldersToRemove as $folder) { + $folderPath = JPATH_ROOT . '/' . $folder; + + if (Folder::exists($folderPath)) { + try { + if (Folder::delete($folderPath)) { + $removedFolders++; + Log::add("Removed folder: {$folder}", Log::INFO, 'moko-cassiopeia-cleanup'); + } else { + $errors[] = "Failed to remove folder: {$folder}"; + Log::add("Failed to remove folder: {$folder}", Log::WARNING, 'moko-cassiopeia-cleanup'); + } + } catch (\Exception $e) { + $errors[] = "Error removing folder {$folder}: " . $e->getMessage(); + Log::add("Error removing folder {$folder}: " . $e->getMessage(), Log::ERROR, 'moko-cassiopeia-cleanup'); + } + } + } + + // Clean up empty directories in media folder + if (is_dir($mediaPath)) { + $this->removeEmptyDirectories($mediaPath); + } + + // Display cleanup summary + if ($removedFiles > 0 || $removedFolders > 0) { + $message = sprintf( + 'Media folder cleanup: Removed %d file(s) and %d folder(s).', + $removedFiles, + $removedFolders + ); + $app->enqueueMessage($message, 'info'); + Log::add($message, Log::INFO, 'moko-cassiopeia-cleanup'); + } + + // Display errors if any + foreach ($errors as $error) { + $app->enqueueMessage($error, 'warning'); + } + + Log::add('Media folder cleanup completed', Log::INFO, 'moko-cassiopeia-cleanup'); + } + + /** + * Recursively remove empty directories + * + * @param string $path The directory path to check + * + * @return boolean True if directory was removed, false otherwise + * + * @since 03.08.00 + */ + private function removeEmptyDirectories(string $path): bool + { + if (!is_dir($path)) { + return false; + } + + $empty = true; + $items = glob($path . '/{,.}*', GLOB_BRACE); + + foreach ($items as $item) { + $basename = basename($item); + + // Skip . and .. + if ($basename === '.' || $basename === '..') { + continue; + } + + if (is_dir($item)) { + if (!$this->removeEmptyDirectories($item)) { + $empty = false; + } + } else { + $empty = false; + } + } + + // Remove directory if it's empty + if ($empty && $path !== JPATH_ROOT . '/media/templates/site/moko-cassiopeia') { + try { + if (Folder::delete($path)) { + Log::add("Removed empty directory: {$path}", Log::INFO, 'moko-cassiopeia-cleanup'); + return true; + } + } catch (\Exception $e) { + Log::add("Error removing empty directory {$path}: " . $e->getMessage(), Log::WARNING, 'moko-cassiopeia-cleanup'); + } + } + + return $empty; + } +}; diff --git a/src/templates/templateDetails.xml b/src/templates/templateDetails.xml index 9aa2481..bda2a3b 100644 --- a/src/templates/templateDetails.xml +++ b/src/templates/templateDetails.xml @@ -11,7 +11,7 @@ DEFGROUP: Joomla INGROUP: Moko-Cassiopeia PATH: templates/moko-cassiopeia/templateDetails.xml - VERSION: 03.06.00 + VERSION: 03.08.00 BRIEF: Template manifest XML file for Moko-Cassiopeia ========================================================================= --> @@ -22,7 +22,7 @@ moko-cassiopeia - 03.06.00 + 03.08.00 2025-12-23 Jonathan Miller || Moko Consulting hello@mokoconsulting.tech @@ -206,7 +206,7 @@ - + diff --git a/updates.xml b/updates.xml index 91b0a15..29a083c 100644 --- a/updates.xml +++ b/updates.xml @@ -10,7 +10,7 @@ INGROUP: Moko-Cassiopeia REPO: https://github.com/mokoconsulting-tech/moko-cassiopeia PATH: ./updates.xml - VERSION: 03.06.00 + VERSION: 03.08.00 BRIEF: Update manifest XML file for Moko-Cassiopeia --> @@ -22,7 +22,7 @@ template site - 03.06.00 + 03.08.00 2025-12-12 Jonathan Miller || Moko Consulting hello@mokoconsulting.tech