From 2191ef596b4d81a87a3f20f514560fb2e0b746b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pavel=20Konvi=C4=8Dka?= Date: Tue, 4 Aug 2026 18:22:58 +0200 Subject: [PATCH] Add configurable theme colors for side panels, texts, login page --- assets/scss/_login.scss | 6 +++--- assets/scss/_sidepanel.scss | 4 ++-- src/DI/FancyAdminExtension.php | 6 ++++++ src/UI/Presenters/@layout.latte | 14 ++++++++++++++ src/UI/Presenters/BasePresenterTrait.php | 1 + 5 files changed, 26 insertions(+), 5 deletions(-) diff --git a/assets/scss/_login.scss b/assets/scss/_login.scss index 132c6d8..a548c46 100644 --- a/assets/scss/_login.scss +++ b/assets/scss/_login.scss @@ -1,8 +1,8 @@ @use 'variables' as *; .bg-primary-variant { - background-color: $tertiary; - color: $tertiary-text; + background-color: var(--loginPageBackground, #{$tertiary}); + color: var(--loginPageTextColor, #{$tertiary-text}); &::before { content: ''; @@ -137,7 +137,7 @@ } .linkInForm { - color: $tertiary-text; + color: var(--loginPageTextColor, #{$tertiary-text}); } diff --git a/assets/scss/_sidepanel.scss b/assets/scss/_sidepanel.scss index 393da92..7ac4b98 100644 --- a/assets/scss/_sidepanel.scss +++ b/assets/scss/_sidepanel.scss @@ -41,7 +41,7 @@ flex-direction: column; align-items: center; justify-content: center; - color: $black; + color: var(--sidePanelItemColor, #{$black}); transition: width .5s ease; text-decoration: none; @@ -124,7 +124,7 @@ justify-content: flex-start; flex-direction: row; text-decoration: none; - color: $black; + color: var(--sidePanelItemColor, #{$black}); align-items: center; text-align: left; gap: 10px; diff --git a/src/DI/FancyAdminExtension.php b/src/DI/FancyAdminExtension.php index 82046be..ab222b1 100644 --- a/src/DI/FancyAdminExtension.php +++ b/src/DI/FancyAdminExtension.php @@ -90,6 +90,12 @@ public function getConfigSchema(): Schema 'inputBorder' => Expect::string()->required(), 'inputFocusBorder' => Expect::string()->required(), 'inputFocusBackground' => Expect::string()->required(), + // Nepovinne barvy. Pri null si _sidepanel.scss / _login.scss / layout + // drzi puvodni hodnoty, takze existujici projekty se nemeni. + 'sidePanelItemColor' => Expect::string()->nullable()->default(null), + 'textColor' => Expect::string()->nullable()->default(null), + 'loginPageBackground' => Expect::string()->nullable()->default(null), + 'loginPageTextColor' => Expect::string()->nullable()->default(null), ]), ]); } diff --git a/src/UI/Presenters/@layout.latte b/src/UI/Presenters/@layout.latte index 67b9336..70c0a0c 100644 --- a/src/UI/Presenters/@layout.latte +++ b/src/UI/Presenters/@layout.latte @@ -44,6 +44,19 @@ --inputBorder: {$colors['inputBorder']|noescape}; --inputFocusBorder: {$colors['inputFocusBorder']|noescape}; --inputFocusBackground: {$colors['inputFocusBackground']|noescape}; + {if !empty($colors['sidePanelItemColor'])} + --sidePanelItemColor: {$colors['sidePanelItemColor']|noescape}; + {/if} + {if !empty($colors['textColor'])} + --bs-body-color: {$colors['textColor']|noescape}; + --bs-heading-color: {$colors['textColor']|noescape}; + {/if} + {if !empty($colors['loginPageBackground'])} + --loginPageBackground: {$colors['loginPageBackground']|noescape}; + {/if} + {if !empty($colors['loginPageTextColor'])} + --loginPageTextColor: {$colors['loginPageTextColor']|noescape}; + {/if} } {/if} @@ -52,6 +65,7 @@ getTemplate()->loginPageLogoPath = $this->_fancyAdmin->getLoginPageLogoPath(); $this->getTemplate()->hmr = $this->_fancyAdmin->getHmr(); $this->getTemplate()->projectName = $this->_fancyAdmin->getProjectName(); + $this->getTemplate()->project = $this->_fancyAdmin->getProject(); $this->getTemplate()->colors = $this->_fancyAdmin->getColors(); $this->_jsComponents->setComponents($this->_fancyAdmin->getJsComponentsConfig()); $this->_jsComponents->setFirebaseLink('setFirebaseTokenLink', $this->getPresenter()->link('setFirebaseToken!', ['firebaseToken' => '__firebaseToken__']));