aboutsummaryrefslogtreecommitdiffstats
path: root/apps/theming
diff options
context:
space:
mode:
authorFerdinand Thiessen <opensource@fthiessen.de>2023-12-15 16:14:37 +0100
committerFerdinand Thiessen <opensource@fthiessen.de>2023-12-15 21:09:39 +0100
commit84123b3910cd926da4162ce0a0b4838516d63241 (patch)
tree8c602da2ce45194b2c65597bf520f2e4a284fcbf /apps/theming
parent61f401da57d6d883dbee2b236f7c2f77e7fa9612 (diff)
downloadnextcloud-server-84123b3910cd926da4162ce0a0b4838516d63241.tar.gz
nextcloud-server-84123b3910cd926da4162ce0a0b4838516d63241.zip
fix(theming): Adjust primary text color calculation to also work with high contrast themes
Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
Diffstat (limited to 'apps/theming')
-rw-r--r--apps/theming/css/default.css4
-rw-r--r--apps/theming/lib/Themes/CommonThemeTrait.php7
-rw-r--r--apps/theming/tests/Themes/AccessibleThemeTestCase.php12
3 files changed, 15 insertions, 8 deletions
diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css
index 4119d370f08..e9388e6ab60 100644
--- a/apps/theming/css/default.css
+++ b/apps/theming/css/default.css
@@ -77,9 +77,9 @@
--color-primary-light-text: #00293f;
--color-primary-light-hover: #dbe4ea;
--color-primary-element: #00679e;
- --color-primary-element-hover: #1070a4;
+ --color-primary-element-hover: #005a8a;
--color-primary-element-text: #ffffff;
- --color-primary-element-text-dark: #f0f0f0;
+ --color-primary-element-text-dark: #f5f5f5;
--color-primary-element-light: #e5eff5;
--color-primary-element-light-hover: #dbe4ea;
--color-primary-element-light-text: #00293f;
diff --git a/apps/theming/lib/Themes/CommonThemeTrait.php b/apps/theming/lib/Themes/CommonThemeTrait.php
index 38ca760db9f..85172f1e9bc 100644
--- a/apps/theming/lib/Themes/CommonThemeTrait.php
+++ b/apps/theming/lib/Themes/CommonThemeTrait.php
@@ -43,6 +43,7 @@ trait CommonThemeTrait {
$colorPrimaryElement = $this->util->elementColor($this->primaryColor, $isBrightColor, $colorMainBackground);
$colorPrimaryLight = $this->util->mix($colorPrimaryElement, $colorMainBackground, -80);
$colorPrimaryElementLight = $this->util->mix($colorPrimaryElement, $colorMainBackground, -80);
+ $invertPrimaryTextColor = $this->util->invertTextColor($colorPrimaryElement);
// primary related colours
return [
@@ -66,10 +67,10 @@ trait CommonThemeTrait {
// used for buttons, inputs...
'--color-primary-element' => $colorPrimaryElement,
- '--color-primary-element-hover' => $this->util->mix($colorPrimaryElement, $colorMainBackground, 87),
- '--color-primary-element-text' => $this->util->invertTextColor($colorPrimaryElement) ? '#000000' : '#ffffff',
+ '--color-primary-element-hover' => $invertPrimaryTextColor ? $this->util->lighten($colorPrimaryElement, 4) : $this->util->darken($colorPrimaryElement, 4),
+ '--color-primary-element-text' => $invertPrimaryTextColor ? '#000000' : '#ffffff',
// mostly used for disabled states
- '--color-primary-element-text-dark' => $this->util->darken($this->util->invertTextColor($colorPrimaryElement) ? '#000000' : '#ffffff', 6),
+ '--color-primary-element-text-dark' => $invertPrimaryTextColor ? $this->util->lighten('#000000', 4) : $this->util->darken('#ffffff', 4),
// used for hover/focus states
'--color-primary-element-light' => $colorPrimaryElementLight,
diff --git a/apps/theming/tests/Themes/AccessibleThemeTestCase.php b/apps/theming/tests/Themes/AccessibleThemeTestCase.php
index 6c31506999d..29ad8cfaff2 100644
--- a/apps/theming/tests/Themes/AccessibleThemeTestCase.php
+++ b/apps/theming/tests/Themes/AccessibleThemeTestCase.php
@@ -47,7 +47,10 @@ class AccessibleThemeTestCase extends TestCase {
3.0,
],
'primary-element-text' => [
- ['--color-primary-element-text'],
+ [
+ '--color-primary-element-text',
+ '--color-primary-element-text-dark',
+ ],
[
'--color-primary-element',
'--color-primary-element-hover',
@@ -96,8 +99,11 @@ class AccessibleThemeTestCase extends TestCase {
* @dataProvider dataAccessibilityPairs
*/
public function testAccessibilityOfVariables($mainColors, $backgroundColors, $minContrast) {
- $this->assertNotNull($this->theme, 'You need to setup $this->theme in your setUp function');
- $this->assertNotNull($this->util, 'You need to setup $this->util in your setUp function');
+ if (!isset($this->theme)) {
+ $this->markTestSkipped('You need to setup $this->theme in your setUp function');
+ } elseif (!isset($this->util)) {
+ $this->markTestSkipped('You need to setup $this->util in your setUp function');
+ }
$variables = $this->theme->getCSSVariables();