From 2223be2cc455d678ba45a64758108c1508f7a7b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=B2=81=E6=B1=80?=
<131967983+lutinglt@users.noreply.github.com>
Date: Wed, 12 Nov 2025 02:21:15 +0800
Subject: [PATCH] Support blue yellow colorblind theme (#35910)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This icon is from GitHub:
---------
Signed-off-by: 鲁汀 <131967983+lutinglt@users.noreply.github.com>
Co-authored-by: lutinglt
---
.../img/svg/gitea-colorblind-blueyellow.svg | 1 +
services/webtheme/webtheme.go | 6 ++++++
.../css/themes/theme-gitea-auto-tritanopia.css | 8 ++++++++
.../css/themes/theme-gitea-dark-tritanopia.css | 15 +++++++++++++++
.../css/themes/theme-gitea-light-tritanopia.css | 15 +++++++++++++++
web_src/svg/gitea-colorblind-blueyellow.svg | 13 +++++++++++++
6 files changed, 58 insertions(+)
create mode 100644 public/assets/img/svg/gitea-colorblind-blueyellow.svg
create mode 100644 web_src/css/themes/theme-gitea-auto-tritanopia.css
create mode 100644 web_src/css/themes/theme-gitea-dark-tritanopia.css
create mode 100644 web_src/css/themes/theme-gitea-light-tritanopia.css
create mode 100644 web_src/svg/gitea-colorblind-blueyellow.svg
diff --git a/public/assets/img/svg/gitea-colorblind-blueyellow.svg b/public/assets/img/svg/gitea-colorblind-blueyellow.svg
new file mode 100644
index 0000000000..63a101b50d
--- /dev/null
+++ b/public/assets/img/svg/gitea-colorblind-blueyellow.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/services/webtheme/webtheme.go b/services/webtheme/webtheme.go
index 72f01a76c7..57d63f4e07 100644
--- a/services/webtheme/webtheme.go
+++ b/services/webtheme/webtheme.go
@@ -39,6 +39,9 @@ func (info *ThemeMetaInfo) GetDescription() string {
if info.ColorblindType == "red-green" {
return "Red-green colorblind friendly"
}
+ if info.ColorblindType == "blue-yellow" {
+ return "Blue-yellow colorblind friendly"
+ }
return ""
}
@@ -46,6 +49,9 @@ func (info *ThemeMetaInfo) GetExtraIconName() string {
if info.ColorblindType == "red-green" {
return "gitea-colorblind-redgreen"
}
+ if info.ColorblindType == "blue-yellow" {
+ return "gitea-colorblind-blueyellow"
+ }
return ""
}
diff --git a/web_src/css/themes/theme-gitea-auto-tritanopia.css b/web_src/css/themes/theme-gitea-auto-tritanopia.css
new file mode 100644
index 0000000000..178a23983b
--- /dev/null
+++ b/web_src/css/themes/theme-gitea-auto-tritanopia.css
@@ -0,0 +1,8 @@
+@import "./theme-gitea-light-tritanopia.css" (prefers-color-scheme: light);
+@import "./theme-gitea-dark-tritanopia.css" (prefers-color-scheme: dark);
+
+gitea-theme-meta-info {
+ --theme-display-name: "Auto";
+ --theme-colorblind-type: "blue-yellow";
+ --theme-color-scheme: "auto";
+}
diff --git a/web_src/css/themes/theme-gitea-dark-tritanopia.css b/web_src/css/themes/theme-gitea-dark-tritanopia.css
new file mode 100644
index 0000000000..1dbd9967dd
--- /dev/null
+++ b/web_src/css/themes/theme-gitea-dark-tritanopia.css
@@ -0,0 +1,15 @@
+@import "./theme-gitea-dark-protanopia-deuteranopia.css";
+
+gitea-theme-meta-info {
+ --theme-display-name: "Dark";
+ --theme-colorblind-type: "blue-yellow";
+ --theme-color-scheme: "dark";
+}
+
+/* blue/yellow colorblind-friendly colors */
+/* from GitHub: blue yellow blindness is based on red green blindness, and --diffBlob-deletion-* restored to the normal theme color */
+:root {
+ --color-diff-removed-linenum-bg: #482121;
+ --color-diff-removed-row-bg: #301e1e;
+ --color-diff-removed-word-bg: #6f3333;
+}
diff --git a/web_src/css/themes/theme-gitea-light-tritanopia.css b/web_src/css/themes/theme-gitea-light-tritanopia.css
new file mode 100644
index 0000000000..a50fd9c1a4
--- /dev/null
+++ b/web_src/css/themes/theme-gitea-light-tritanopia.css
@@ -0,0 +1,15 @@
+@import "./theme-gitea-light-protanopia-deuteranopia.css";
+
+gitea-theme-meta-info {
+ --theme-display-name: "Light";
+ --theme-colorblind-type: "blue-yellow";
+ --theme-color-scheme: "light";
+}
+
+/* blue/yellow colorblind-friendly colors */
+/* from GitHub: blue yellow blindness is based on red green blindness, and --diffBlob-deletion-* restored to the normal theme color */
+:root {
+ --color-diff-removed-linenum-bg: #ffcecb;
+ --color-diff-removed-row-bg: #ffeef0;
+ --color-diff-removed-word-bg: #fdb8c0;
+}
diff --git a/web_src/svg/gitea-colorblind-blueyellow.svg b/web_src/svg/gitea-colorblind-blueyellow.svg
new file mode 100644
index 0000000000..752ff88432
--- /dev/null
+++ b/web_src/svg/gitea-colorblind-blueyellow.svg
@@ -0,0 +1,13 @@
+
\ No newline at end of file