Add high contrast color themes.

This commit is contained in:
lutinglt committed 2026-05-25 22:49:05 +08:00
1 parent 102648e4b4
commit cbb8b09903
9 files changed
+177 -34

No files matched your search

+89 -22
View File
@@ -21,31 +21,55 @@
* @author lutinglt
*/
import type { GitHubColor, GitHubSyntax } from "src";
import type { GitHubColor } from "src";
import { defineTheme, primer, primer2GitHubColor, primer2GitHubSyntax } from "src";
/** - 仅适用于 Dark 主题
* - 不同步 GitHub 样式, 对调 --controlKnob-bgColor-rest 和 --controlTrack-bgColor-rest 的颜色
* - 激活颜色与背景色更一致, 在仪表板仓库/组织切换按钮中与菜单颜色一致
*/
function swapKnobAndTrackBgColor(color: GitHubColor): GitHubColor {
return {
...color,
controlKnob: { bgColor: { rest: color.controlTrack.bgColor.rest } },
controlTrack: { bgColor: { rest: color.controlKnob.bgColor.rest } },
};
}
const rawDarkColor = primer2GitHubColor(primer.dark, true);
export const githubDarkColor: GitHubColor = {
...rawDarkColor,
// 不同步 GitHub 样式, 对调 --controlKnob-bgColor-rest 和 --controlTrack-bgColor-rest 的颜色
// 激活颜色与背景色更一致, 在仪表板仓库/组织切换按钮中与菜单颜色一致
controlKnob: { bgColor: { rest: rawDarkColor.controlTrack.bgColor.rest } },
controlTrack: { bgColor: { rest: rawDarkColor.controlKnob.bgColor.rest } },
};
export const githubSoftDarkColor: GitHubColor = primer2GitHubColor(primer.darkDimmed, true);
export const githubColorblindDarkColor: GitHubColor = primer2GitHubColor(primer.darkColorblind, true);
export const githubTritanopiaDarkColor: GitHubColor = primer2GitHubColor(primer.darkTritanopia, true);
export const githubLightColor: GitHubColor = primer2GitHubColor(primer.light);
export const githubColorblindLightColor: GitHubColor = primer2GitHubColor(primer.lightColorblind);
export const githubTritanopiaLightColor: GitHubColor = primer2GitHubColor(primer.lightTritanopia);
export const githubDarkColor = swapKnobAndTrackBgColor(primer2GitHubColor(primer.dark, true));
export const githubColorblindDarkColor = swapKnobAndTrackBgColor(primer2GitHubColor(primer.darkColorblind, true));
export const githubTritanopiaDarkColor = swapKnobAndTrackBgColor(primer2GitHubColor(primer.darkTritanopia, true));
export const githubSoftDarkColor = primer2GitHubColor(primer.darkDimmed, true);
export const githubLightColor = primer2GitHubColor(primer.light);
export const githubColorblindLightColor = primer2GitHubColor(primer.lightColorblind);
export const githubTritanopiaLightColor = primer2GitHubColor(primer.lightTritanopia);
export const githubDarkSyntax: GitHubSyntax = primer2GitHubSyntax(primer.dark);
export const githubSoftDarkSyntax: GitHubSyntax = primer2GitHubSyntax(primer.darkDimmed);
export const githubColorblindDarkSyntax: GitHubSyntax = primer2GitHubSyntax(primer.darkColorblind);
export const githubTritanopiaDarkSyntax: GitHubSyntax = primer2GitHubSyntax(primer.darkTritanopia);
export const githubLightSyntax: GitHubSyntax = primer2GitHubSyntax(primer.light);
export const githubColorblindLightSyntax: GitHubSyntax = primer2GitHubSyntax(primer.lightColorblind);
export const githubTritanopiaLightSyntax: GitHubSyntax = primer2GitHubSyntax(primer.lightTritanopia);
export const githubDarkHighContrastColor = swapKnobAndTrackBgColor(primer2GitHubColor(primer.darkHighContrast, true));
export const githubDarkColorblindHighContrastColor = swapKnobAndTrackBgColor(
primer2GitHubColor(primer.darkColorblindHighContrast, true)
);
export const githubDarkTritanopiaHighContrastColor = swapKnobAndTrackBgColor(
primer2GitHubColor(primer.darkTritanopiaHighContrast, true)
);
export const githubSoftDarkHighContrastColor = primer2GitHubColor(primer.darkDimmedHighContrast, true);
export const githubLightHighContrastColor = primer2GitHubColor(primer.lightHighContrast);
export const githubLightColorblindHighContrastColor = primer2GitHubColor(primer.lightColorblindHighContrast);
export const githubLightTritanopiaHighContrastColor = primer2GitHubColor(primer.lightTritanopiaHighContrast);
export const githubDarkSyntax = primer2GitHubSyntax(primer.dark);
export const githubSoftDarkSyntax = primer2GitHubSyntax(primer.darkDimmed);
export const githubColorblindDarkSyntax = primer2GitHubSyntax(primer.darkColorblind);
export const githubTritanopiaDarkSyntax = primer2GitHubSyntax(primer.darkTritanopia);
export const githubLightSyntax = primer2GitHubSyntax(primer.light);
export const githubColorblindLightSyntax = primer2GitHubSyntax(primer.lightColorblind);
export const githubTritanopiaLightSyntax = primer2GitHubSyntax(primer.lightTritanopia);
export const githubDarkHighContrastSyntax = primer2GitHubSyntax(primer.darkHighContrast);
export const githubDarkColorblindHighContrastSyntax = primer2GitHubSyntax(primer.darkColorblindHighContrast);
export const githubDarkTritanopiaHighContrastSyntax = primer2GitHubSyntax(primer.darkTritanopiaHighContrast);
export const githubSoftDarkHighContrastSyntax = primer2GitHubSyntax(primer.darkDimmedHighContrast);
export const githubLightHighContrastSyntax = primer2GitHubSyntax(primer.lightHighContrast);
export const githubLightColorblindHighContrastSyntax = primer2GitHubSyntax(primer.lightColorblindHighContrast);
export const githubLightTritanopiaHighContrastSyntax = primer2GitHubSyntax(primer.lightTritanopiaHighContrast);
export const githubDarkTheme = defineTheme({
colorType: "github",
@@ -83,6 +107,42 @@ export const githubTritanopiaLightTheme = defineTheme({
syntaxColor: githubTritanopiaLightSyntax,
});
export const githubDarkHighContrastTheme = defineTheme({
colorType: "github",
themeColor: githubDarkHighContrastColor,
syntaxColor: githubDarkHighContrastSyntax,
});
export const githubDarkColorblindHighContrastTheme = defineTheme({
colorType: "github",
themeColor: githubDarkColorblindHighContrastColor,
syntaxColor: githubDarkColorblindHighContrastSyntax,
});
export const githubDarkTritanopiaHighContrastTheme = defineTheme({
colorType: "github",
themeColor: githubDarkTritanopiaHighContrastColor,
syntaxColor: githubDarkTritanopiaHighContrastSyntax,
});
export const githubSoftDarkHighContrastTheme = defineTheme({
colorType: "github",
themeColor: githubSoftDarkHighContrastColor,
syntaxColor: githubSoftDarkHighContrastSyntax,
});
export const githubLightHighContrastTheme = defineTheme({
colorType: "github",
themeColor: githubLightHighContrastColor,
syntaxColor: githubLightHighContrastSyntax,
});
export const githubLightColorblindHighContrastTheme = defineTheme({
colorType: "github",
themeColor: githubLightColorblindHighContrastColor,
syntaxColor: githubLightColorblindHighContrastSyntax,
});
export const githubLightTritanopiaHighContrastTheme = defineTheme({
colorType: "github",
themeColor: githubLightTritanopiaHighContrastColor,
syntaxColor: githubLightTritanopiaHighContrastSyntax,
});
export default {
githubDarkTheme,
githubSoftDarkTheme,
@@ -91,4 +151,11 @@ export default {
githubLightTheme,
githubColorblindLightTheme,
githubTritanopiaLightTheme,
githubDarkHighContrastTheme,
githubDarkColorblindHighContrastTheme,
githubDarkTritanopiaHighContrastTheme,
githubSoftDarkHighContrastTheme,
githubLightHighContrastTheme,
githubLightColorblindHighContrastTheme,
githubLightTritanopiaHighContrastTheme,
};
+13
View File
@@ -41,6 +41,19 @@ export default {
light: githubPink.githubPinkLightTheme,
softDark: githubPink.githubPinkSoftDarkTheme,
},
highContrast: {
dark: github.githubDarkHighContrastTheme,
light: github.githubLightHighContrastTheme,
softDark: github.githubSoftDarkHighContrastTheme,
colorblind: {
dark: github.githubDarkColorblindHighContrastTheme,
light: github.githubLightColorblindHighContrastTheme,
},
tritanopia: {
dark: github.githubDarkTritanopiaHighContrastTheme,
light: github.githubLightTritanopiaHighContrastTheme,
},
},
},
gitea: {
dark: giteaDarkTheme,