Compare commits
9 Commits
v1.24.4.25
...
v1.24.5
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5037e46447 | ||
|
|
cd2f7579b1 | ||
|
|
1b237b12f3 | ||
|
|
a8453a87a5 | ||
|
|
6aef26cdc8 | ||
|
|
a4c94cb34d | ||
|
|
8c45f44309 | ||
|
|
1c9b02ea88 | ||
|
|
61313d5644 |
36
.github/release.md
vendored
@@ -1,36 +1,8 @@
|
|||||||
## 🎉 项目已毕业! (这是最后一版开发版本)
|
## ✨ Feature
|
||||||
|
|
||||||
目前项目的主要功能开发已全部完成, 进入维护阶段.
|
- 支持色盲主题(Beta) ( 红绿色盲和蓝色盲 ) ( Colorblind & Tritanopia )
|
||||||
|
|
||||||
维护阶段项目发版频率与 Gitea 发版频率保持一致, 版本号将与 Gitea 保持一致(不再附带时间戳).
|
|
||||||
|
|
||||||
每逢 Gitea 大版本更新时, 项目中间如有修复, 会发布当前版本的最后一个 `.latest` 版本. 之后会发布适配第一个大版本的 `.rc`
|
|
||||||
预发布版本, 问题不多时会发布正式版本, 正式版本之后的修复会等 Gitea 发布下一个小版本时再发布.
|
|
||||||
|
|
||||||
## 🌈 Style
|
|
||||||
|
|
||||||
- 优化创建仓库/派生仓库/迁移仓库/创建组织页面的样式与设置页面的样式一致
|
|
||||||
- 优化消息右上角小图标样式
|
|
||||||
- 优化组织页面下的 RSS 订阅按钮样式
|
|
||||||
|
|
||||||
#### 更符合 GitHub 风格
|
|
||||||
|
|
||||||
- 同步代码编辑器背景色和字体大小 (修复亮色模式下编辑器背景色问题) #12
|
|
||||||
- 同步查看代码文件内容页面/文件树样式 (包括滚动时固定的导航栏, 尽量与 GitHub 一致)
|
|
||||||
- 同步分页菜单样式
|
|
||||||
- 同步登录/注册页面样式
|
|
||||||
- 同步 Issue/PR 列表样式
|
|
||||||
- 同步 Issue/PR 详细页面侧边栏样式
|
|
||||||
- 同步仓库代码文件页 README 导航栏样式
|
|
||||||
- 同步用户点星仓库列表样式
|
|
||||||
- 优化私有标签样式
|
|
||||||
- 优化热力图和动态样式
|
|
||||||
- 优化仪表板仓库/组织列表样式
|
|
||||||
- 略微增加仓库代码文件列表的单行高度
|
|
||||||
|
|
||||||
## 🐞 Fix
|
## 🐞 Fix
|
||||||
|
|
||||||
- Action 作业步骤页面标题选中时滚动固定的高度
|
- 查看代码文件页面路径栏有时内容不会居中
|
||||||
- 用户公开活动页动态布局
|
- 查看代码文件页面文件树头部滚动到底部时不会固定住
|
||||||
- 顶部导航栏工单管理/请求合并页面搜索框旁的选择下拉框按钮内容过窄
|
|
||||||
- 手机页面下注册/登录页导航栏注册按钮换行
|
|
||||||
|
|||||||
4
.github/workflows/release.yml
vendored
@@ -18,8 +18,10 @@ jobs:
|
|||||||
- name: Create release
|
- name: Create release
|
||||||
run: |
|
run: |
|
||||||
export TZ=Asia/Shanghai
|
export TZ=Asia/Shanghai
|
||||||
TAG="v$(npm run -s version).$(date +%y%m%d%H%M)"
|
TAG="v$(npm run -s version)"
|
||||||
tar -zcf dist/theme-github.tar.gz --remove-files dist/theme-github-auto.css dist/theme-github-light.css dist/theme-github-dark.css dist/theme-github-soft-dark.css
|
tar -zcf dist/theme-github.tar.gz --remove-files dist/theme-github-auto.css dist/theme-github-light.css dist/theme-github-dark.css dist/theme-github-soft-dark.css
|
||||||
|
tar -zcf dist/theme-github-colorblind.tar.gz --remove-files dist/theme-github-colorblind-auto.css dist/theme-github-colorblind-light.css dist/theme-github-colorblind-dark.css
|
||||||
|
tar -zcf dist/theme-github-tritanopia.tar.gz --remove-files dist/theme-github-tritanopia-auto.css dist/theme-github-tritanopia-light.css dist/theme-github-tritanopia-dark.css
|
||||||
gh release create "$TAG" dist/* --notes-file .github/release.md --draft -t $TAG
|
gh release create "$TAG" dist/* --notes-file .github/release.md --draft -t $TAG
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
|||||||
@@ -95,8 +95,8 @@ npm run commit
|
|||||||
|
|
||||||
请在颜色主题文件头部附加自己的作者信息, 方便 Issue 提问者找到你 `@`.
|
请在颜色主题文件头部附加自己的作者信息, 方便 Issue 提问者找到你 `@`.
|
||||||
|
|
||||||
推荐使用 `import { defineTheme } from "src"` 导入主题生成框架, 然后使用 `defineTheme` 函数生成主题,
|
推荐使用 `import { defineTheme, type ThemeColor } from "src"` 导入主题生成框架, 声明主题颜色, 然后使用 `defineTheme` 函数生成主题所有 CSS 变量,
|
||||||
defineTheme 中设置了一些经过计算得到的 Gitea 变量可以减少工作量, 具体请查看函数说明.
|
defineTheme 中设置了一些经过计算得到的 Gitea 变量可以减少工作量, 具体请查看函数说明和定义.
|
||||||
|
|
||||||
颜色计算函数可以从 `src/functions` 导入, 例如 `import { scaleColorLight } from "src/functions"`, 或者使用 `polished` 库.
|
颜色计算函数可以从 `src/functions` 导入, 例如 `import { scaleColorLight } from "src/functions"`, 或者使用 `polished` 库.
|
||||||
|
|
||||||
@@ -107,12 +107,15 @@ defineTheme 中设置了一些经过计算得到的 Gitea 变量可以减少工
|
|||||||
* @author 你的名字
|
* @author 你的名字
|
||||||
* @description 主题描述
|
* @description 主题描述
|
||||||
*/
|
*/
|
||||||
import { defineTheme } from "src";
|
import { defineTheme, type ThemeColor } from "src";
|
||||||
export default defineTheme({
|
export const 主题名称DarkColors: ThemeColor = {
|
||||||
...
|
...
|
||||||
});
|
}
|
||||||
|
export default defineTheme(主题名称DarkColors);
|
||||||
// 使用其他主题颜色作为基础
|
// 使用其他主题颜色作为基础
|
||||||
import dark from "themes/dark";
|
import dark from "themes/dark";
|
||||||
|
import { darkColors } from "themes/dark";
|
||||||
|
export const 主题名称DarkColors: ThemeColor = darkColors;
|
||||||
export default defineTheme({
|
export default defineTheme({
|
||||||
...dark,
|
...dark,
|
||||||
...
|
...
|
||||||
@@ -130,17 +133,26 @@ export default defineTheme({
|
|||||||
* @author 你的名字
|
* @author 你的名字
|
||||||
* @description 主题描述
|
* @description 主题描述
|
||||||
*/
|
*/
|
||||||
import type { Theme } from "src";
|
import type { Theme, Chroma, Primary, Secondary, ... } from "src";
|
||||||
|
export const primary: Primary = ...;
|
||||||
|
export const secondary: Secondary =...;
|
||||||
|
export const chroma: Chroma =...;
|
||||||
|
...
|
||||||
export default theme: Theme = {
|
export default theme: Theme = {
|
||||||
...
|
primary,
|
||||||
|
secondary,
|
||||||
|
chroma,
|
||||||
|
...
|
||||||
};
|
};
|
||||||
```
|
```
|
||||||
|
|
||||||
完成主题颜色开发后, 请在某个仓库的代码文件列表页, 打开 Code 菜单选择 Tea Cli 进行截图, 并放入 `screenshots`
|
完成主题颜色开发后, 请在某个仓库的代码文件列表页, 打开 Code 菜单选择 Tea Cli 进行截图, 并放入 `screenshots`
|
||||||
目录下, 截图名与主题名相同. (推荐克隆 Github 的 actions/checkout 仓库, 该仓库信息较全, 避免泄露个人隐私)
|
目录下, 截图名与主题名相同. (推荐克隆本仓库, 避免泄露个人隐私)
|
||||||
|
|
||||||
然后将截图信息添加到 `README.md` 文件中, 可以在折叠部分中添加自己的说明.
|
然后将截图信息添加到 `README.md` 文件中, 可以在折叠部分中添加自己的说明.
|
||||||
|
|
||||||
|
主题颜色复用案例可以参考本主题的色盲主题.
|
||||||
|
|
||||||
## 主题样式贡献
|
## 主题样式贡献
|
||||||
|
|
||||||
主题样式使用 TypeScript 的 css 模板字符串开发, 该模板字符串会经过 sass 预处理器处理, 支持 SCSS 语法并且主题只接受 SCSS 嵌套语法, 请不要使用 CSS 语法, 如果一定要用请说明原因.
|
主题样式使用 TypeScript 的 css 模板字符串开发, 该模板字符串会经过 sass 预处理器处理, 支持 SCSS 语法并且主题只接受 SCSS 嵌套语法, 请不要使用 CSS 语法, 如果一定要用请说明原因.
|
||||||
|
|||||||
19
README.md
@@ -46,6 +46,11 @@ THEMES = gitea-auto, gitea-light, gitea-dark, github-auto, github-light, github-
|
|||||||
|
|
||||||
## 截图
|
## 截图
|
||||||
|
|
||||||
|
### 基本主题
|
||||||
|
|
||||||
|
```ini
|
||||||
|
THEMES = github-auto, github-light, github-dark, github-soft-dark
|
||||||
|
```
|
||||||
<details open>
|
<details open>
|
||||||
<summary>GitHub</summary>
|
<summary>GitHub</summary>
|
||||||
<h4>theme-github-light.css</h4>
|
<h4>theme-github-light.css</h4>
|
||||||
@@ -56,9 +61,19 @@ THEMES = gitea-auto, gitea-light, gitea-dark, github-auto, github-light, github-
|
|||||||
<img src="screenshots/soft-dark.png"/>
|
<img src="screenshots/soft-dark.png"/>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
### 色盲主题 ( Beta )
|
||||||
|
|
||||||
|
```ini
|
||||||
|
THEMES = github-colorblind-auto, github-colorblind-light, github-colorblind-dark
|
||||||
|
THEMES = github-tritanopia-auto, github-tritanopia-light, github-tritanopia-dark
|
||||||
|
```
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>其他主题</summary>
|
<summary>红绿色盲 & 蓝色盲 ( Colorblind & Tritanopia )</summary>
|
||||||
等待贡献者ing...
|
<h4>theme-github-colorblind-light.css & theme-github-tritanopia-light.css</h4>
|
||||||
|
<img src="screenshots/colorblind-light.png"/>
|
||||||
|
<h4>theme-github-colorblind-dark.css & theme-github-tritanopia-dark.css</h4>
|
||||||
|
<img src="screenshots/colorblind-dark.png"/>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
## 自定义 CSS 变量
|
## 自定义 CSS 变量
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "gitea-github-theme",
|
"name": "gitea-github-theme",
|
||||||
"version": "1.24.4",
|
"version": "1.24.5",
|
||||||
"description": "A theme to make Gitea look and feel like GitHub",
|
"description": "A theme to make Gitea look and feel like GitHub",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
BIN
screenshots/colorblind-dark.png
vendored
Normal file
|
After Width: | Height: | Size: 260 KiB |
BIN
screenshots/colorblind-light.png
vendored
Normal file
|
After Width: | Height: | Size: 259 KiB |
BIN
screenshots/dark.png
vendored
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 260 KiB |
BIN
screenshots/light.png
vendored
|
Before Width: | Height: | Size: 201 KiB After Width: | Height: | Size: 259 KiB |
BIN
screenshots/soft-dark.png
vendored
|
Before Width: | Height: | Size: 202 KiB After Width: | Height: | Size: 261 KiB |
@@ -1,36 +1,6 @@
|
|||||||
import { prettylights2Chroma } from "./prettylights";
|
import { prettylights2Chroma, type prettylightsColor } from "./prettylights";
|
||||||
|
|
||||||
export const defaultDarkChroma = prettylights2Chroma({
|
export const lightPrettylights: prettylightsColor = {
|
||||||
syntax: {
|
|
||||||
brackethighlighter: { angle: "#9198a1", unmatched: "#f85149" },
|
|
||||||
carriage: { return: { bg: "#b62324", text: "#f0f6fc" } },
|
|
||||||
comment: "#9198a1",
|
|
||||||
constant: "#79c0ff",
|
|
||||||
constantOtherReferenceLink: "#a5d6ff",
|
|
||||||
entity: "#d2a8ff",
|
|
||||||
entityTag: "#7ee787",
|
|
||||||
invalid: { illegal: { bg: "#8e1519", text: "#f0f6fc" } },
|
|
||||||
keyword: "#ff7b72",
|
|
||||||
markup: {
|
|
||||||
bold: "#f0f6fc",
|
|
||||||
changed: { bg: "#5a1e02", text: "#ffdfb6" },
|
|
||||||
deleted: { bg: "#67060c", text: "#ffdcd7" },
|
|
||||||
heading: "#1f6feb",
|
|
||||||
ignored: { bg: "#1158c7", text: "#f0f6fc" },
|
|
||||||
inserted: { bg: "#033a16", text: "#aff5b4" },
|
|
||||||
italic: "#f0f6fc",
|
|
||||||
list: "#f2cc60",
|
|
||||||
},
|
|
||||||
metaDiffRange: "#d2a8ff",
|
|
||||||
storageModifierImport: "#f0f6fc",
|
|
||||||
string: "#a5d6ff",
|
|
||||||
stringRegexp: "#7ee787",
|
|
||||||
sublimelinterGutterMark: "#3d444d",
|
|
||||||
variable: "#ffa657",
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
export const defaultLightChroma = prettylights2Chroma({
|
|
||||||
syntax: {
|
syntax: {
|
||||||
brackethighlighter: { angle: "#59636e", unmatched: "#82071e" },
|
brackethighlighter: { angle: "#59636e", unmatched: "#82071e" },
|
||||||
carriage: { return: { bg: "#cf222e", text: "#f6f8fa" } },
|
carriage: { return: { bg: "#cf222e", text: "#f6f8fa" } },
|
||||||
@@ -58,4 +28,37 @@ export const defaultLightChroma = prettylights2Chroma({
|
|||||||
sublimelinterGutterMark: "#818b98",
|
sublimelinterGutterMark: "#818b98",
|
||||||
variable: "#953800",
|
variable: "#953800",
|
||||||
},
|
},
|
||||||
});
|
};
|
||||||
|
|
||||||
|
export const darkPrettylights: prettylightsColor = {
|
||||||
|
syntax: {
|
||||||
|
brackethighlighter: { angle: "#9198a1", unmatched: "#f85149" },
|
||||||
|
carriage: { return: { bg: "#b62324", text: "#f0f6fc" } },
|
||||||
|
comment: "#9198a1",
|
||||||
|
constant: "#79c0ff",
|
||||||
|
constantOtherReferenceLink: "#a5d6ff",
|
||||||
|
entity: "#d2a8ff",
|
||||||
|
entityTag: "#7ee787",
|
||||||
|
invalid: { illegal: { bg: "#8e1519", text: "#f0f6fc" } },
|
||||||
|
keyword: "#ff7b72",
|
||||||
|
markup: {
|
||||||
|
bold: "#f0f6fc",
|
||||||
|
changed: { bg: "#5a1e02", text: "#ffdfb6" },
|
||||||
|
deleted: { bg: "#67060c", text: "#ffdcd7" },
|
||||||
|
heading: "#1f6feb",
|
||||||
|
ignored: { bg: "#1158c7", text: "#f0f6fc" },
|
||||||
|
inserted: { bg: "#033a16", text: "#aff5b4" },
|
||||||
|
italic: "#f0f6fc",
|
||||||
|
list: "#f2cc60",
|
||||||
|
},
|
||||||
|
metaDiffRange: "#d2a8ff",
|
||||||
|
storageModifierImport: "#f0f6fc",
|
||||||
|
string: "#a5d6ff",
|
||||||
|
stringRegexp: "#7ee787",
|
||||||
|
sublimelinterGutterMark: "#3d444d",
|
||||||
|
variable: "#ffa657",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const defaultLightChroma = prettylights2Chroma(lightPrettylights);
|
||||||
|
export const defaultDarkChroma = prettylights2Chroma(darkPrettylights);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { themeVars } from "src/types/vars";
|
|||||||
import { defaultDarkChroma, defaultLightChroma } from "./chroma";
|
import { defaultDarkChroma, defaultLightChroma } from "./chroma";
|
||||||
import type { Theme } from "./theme";
|
import type { Theme } from "./theme";
|
||||||
|
|
||||||
type ThemeColor = {
|
export type ThemeColor = {
|
||||||
/** 用于标识当前是否为暗色主题: `true` 暗色 `false` 亮色 */
|
/** 用于标识当前是否为暗色主题: `true` 暗色 `false` 亮色 */
|
||||||
isDarkTheme: boolean;
|
isDarkTheme: boolean;
|
||||||
/** 主色调(强调色) */
|
/** 主色调(强调色) */
|
||||||
@@ -14,38 +14,41 @@ type ThemeColor = {
|
|||||||
primaryContrast: string;
|
primaryContrast: string;
|
||||||
/** 副色调(边框色) */
|
/** 副色调(边框色) */
|
||||||
secondary: string;
|
secondary: string;
|
||||||
/** 红色 */
|
/** 基础颜色 */
|
||||||
red: string;
|
base: {
|
||||||
/** 橙色 */
|
/** 红色 */
|
||||||
orange: string;
|
red: string;
|
||||||
/** 黄色 */
|
/** 橙色 */
|
||||||
yellow: string;
|
orange: string;
|
||||||
/** 黄绿色/橄榄色 */
|
/** 黄色 */
|
||||||
olive: string;
|
yellow: string;
|
||||||
/** 绿色 */
|
/** 黄绿色/橄榄色 */
|
||||||
green: string;
|
olive: string;
|
||||||
/** 蓝绿色/青色(偏绿) */
|
/** 绿色 */
|
||||||
teal: string;
|
green: string;
|
||||||
/** 蓝绿色/青色(偏蓝) */
|
/** 蓝绿色/青色(偏绿) */
|
||||||
cyan: string;
|
teal: string;
|
||||||
/** 蓝色 */
|
/** 蓝绿色/青色(偏蓝) */
|
||||||
blue: string;
|
cyan: string;
|
||||||
/** 蓝紫色/紫罗兰色 */
|
/** 蓝色 */
|
||||||
violet: string;
|
blue: string;
|
||||||
/** 紫色 */
|
/** 蓝紫色/紫罗兰色 */
|
||||||
purple: string;
|
violet: string;
|
||||||
/** 粉红色 */
|
/** 紫色 */
|
||||||
pink: string;
|
purple: string;
|
||||||
/** 棕色 */
|
/** 粉红色 */
|
||||||
brown: string;
|
pink: string;
|
||||||
/** 黑色 */
|
/** 棕色 */
|
||||||
black: string;
|
brown: string;
|
||||||
/** 灰色 */
|
/** 黑色 */
|
||||||
grey: string;
|
black: string;
|
||||||
/** 金色 */
|
/** 灰色 */
|
||||||
gold: string;
|
grey: string;
|
||||||
/** 白色 */
|
/** 金色 */
|
||||||
white: string;
|
gold: string;
|
||||||
|
/** 白色 */
|
||||||
|
white: string;
|
||||||
|
};
|
||||||
/** Action 日志 */
|
/** Action 日志 */
|
||||||
console: Console;
|
console: Console;
|
||||||
/** 提交代码对比 */
|
/** 提交代码对比 */
|
||||||
@@ -161,161 +164,161 @@ export function defineTheme(themeColor: ThemeColor, chroma: Chroma | null = null
|
|||||||
|
|
||||||
const named: Named = {
|
const named: Named = {
|
||||||
red: {
|
red: {
|
||||||
self: themeColor.red,
|
self: themeColor.base.red,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.red, 15) : scaleColorLight(themeColor.red, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.red, 15) : scaleColorLight(themeColor.base.red, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.red, -10),
|
num1: scaleColorLight(themeColor.base.red, -10),
|
||||||
num2: scaleColorLight(themeColor.red, -20),
|
num2: scaleColorLight(themeColor.base.red, -20),
|
||||||
},
|
},
|
||||||
badge: {
|
badge: {
|
||||||
self: themeColor.red,
|
self: themeColor.base.red,
|
||||||
bg: rgba(themeColor.red, 0.1),
|
bg: rgba(themeColor.base.red, 0.1),
|
||||||
hover: {
|
hover: {
|
||||||
bg: rgba(themeColor.red, 0.3),
|
bg: rgba(themeColor.base.red, 0.3),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
orange: {
|
orange: {
|
||||||
self: themeColor.orange,
|
self: themeColor.base.orange,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.orange, 15) : scaleColorLight(themeColor.orange, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.orange, 15) : scaleColorLight(themeColor.base.orange, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.orange, -10),
|
num1: scaleColorLight(themeColor.base.orange, -10),
|
||||||
num2: scaleColorLight(themeColor.orange, -20),
|
num2: scaleColorLight(themeColor.base.orange, -20),
|
||||||
},
|
},
|
||||||
badge: {
|
badge: {
|
||||||
self: themeColor.orange,
|
self: themeColor.base.orange,
|
||||||
bg: rgba(themeColor.orange, 0.1),
|
bg: rgba(themeColor.base.orange, 0.1),
|
||||||
hover: {
|
hover: {
|
||||||
bg: rgba(themeColor.orange, 0.3),
|
bg: rgba(themeColor.base.orange, 0.3),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
yellow: {
|
yellow: {
|
||||||
self: themeColor.yellow,
|
self: themeColor.base.yellow,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.yellow, 15) : scaleColorLight(themeColor.yellow, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.yellow, 15) : scaleColorLight(themeColor.base.yellow, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.yellow, -10),
|
num1: scaleColorLight(themeColor.base.yellow, -10),
|
||||||
num2: scaleColorLight(themeColor.yellow, -20),
|
num2: scaleColorLight(themeColor.base.yellow, -20),
|
||||||
},
|
},
|
||||||
badge: {
|
badge: {
|
||||||
self: themeColor.yellow,
|
self: themeColor.base.yellow,
|
||||||
bg: rgba(themeColor.yellow, 0.1),
|
bg: rgba(themeColor.base.yellow, 0.1),
|
||||||
hover: {
|
hover: {
|
||||||
bg: rgba(themeColor.yellow, 0.3),
|
bg: rgba(themeColor.base.yellow, 0.3),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
olive: {
|
olive: {
|
||||||
self: themeColor.olive,
|
self: themeColor.base.olive,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.olive, 15) : scaleColorLight(themeColor.olive, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.olive, 15) : scaleColorLight(themeColor.base.olive, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.olive, -10),
|
num1: scaleColorLight(themeColor.base.olive, -10),
|
||||||
num2: scaleColorLight(themeColor.olive, -20),
|
num2: scaleColorLight(themeColor.base.olive, -20),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
green: {
|
green: {
|
||||||
self: themeColor.green,
|
self: themeColor.base.green,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.green, 15) : scaleColorLight(themeColor.green, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.green, 15) : scaleColorLight(themeColor.base.green, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.green, -10),
|
num1: scaleColorLight(themeColor.base.green, -10),
|
||||||
num2: scaleColorLight(themeColor.green, -20),
|
num2: scaleColorLight(themeColor.base.green, -20),
|
||||||
},
|
},
|
||||||
badge: {
|
badge: {
|
||||||
self: themeColor.green,
|
self: themeColor.base.green,
|
||||||
bg: rgba(themeColor.green, 0.1),
|
bg: rgba(themeColor.base.green, 0.1),
|
||||||
hover: {
|
hover: {
|
||||||
bg: rgba(themeColor.green, 0.3),
|
bg: rgba(themeColor.base.green, 0.3),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
teal: {
|
teal: {
|
||||||
self: themeColor.teal,
|
self: themeColor.base.teal,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.teal, 15) : scaleColorLight(themeColor.teal, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.teal, 15) : scaleColorLight(themeColor.base.teal, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.teal, -10),
|
num1: scaleColorLight(themeColor.base.teal, -10),
|
||||||
num2: scaleColorLight(themeColor.teal, -20),
|
num2: scaleColorLight(themeColor.base.teal, -20),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
blue: {
|
blue: {
|
||||||
self: themeColor.blue,
|
self: themeColor.base.blue,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.blue, 15) : scaleColorLight(themeColor.blue, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.blue, 15) : scaleColorLight(themeColor.base.blue, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.blue, -10),
|
num1: scaleColorLight(themeColor.base.blue, -10),
|
||||||
num2: scaleColorLight(themeColor.blue, -20),
|
num2: scaleColorLight(themeColor.base.blue, -20),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
violet: {
|
violet: {
|
||||||
self: themeColor.violet,
|
self: themeColor.base.violet,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.violet, 15) : scaleColorLight(themeColor.violet, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.violet, 15) : scaleColorLight(themeColor.base.violet, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.violet, -10),
|
num1: scaleColorLight(themeColor.base.violet, -10),
|
||||||
num2: scaleColorLight(themeColor.violet, -20),
|
num2: scaleColorLight(themeColor.base.violet, -20),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
purple: {
|
purple: {
|
||||||
self: themeColor.purple,
|
self: themeColor.base.purple,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.purple, 15) : scaleColorLight(themeColor.purple, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.purple, 15) : scaleColorLight(themeColor.base.purple, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.purple, -10),
|
num1: scaleColorLight(themeColor.base.purple, -10),
|
||||||
num2: scaleColorLight(themeColor.purple, -20),
|
num2: scaleColorLight(themeColor.base.purple, -20),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
pink: {
|
pink: {
|
||||||
self: themeColor.pink,
|
self: themeColor.base.pink,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.pink, 15) : scaleColorLight(themeColor.pink, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.pink, 15) : scaleColorLight(themeColor.base.pink, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.pink, -10),
|
num1: scaleColorLight(themeColor.base.pink, -10),
|
||||||
num2: scaleColorLight(themeColor.pink, -20),
|
num2: scaleColorLight(themeColor.base.pink, -20),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
brown: {
|
brown: {
|
||||||
self: themeColor.brown,
|
self: themeColor.base.brown,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.brown, 15) : scaleColorLight(themeColor.brown, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.brown, 15) : scaleColorLight(themeColor.base.brown, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.brown, -10),
|
num1: scaleColorLight(themeColor.base.brown, -10),
|
||||||
num2: scaleColorLight(themeColor.brown, -20),
|
num2: scaleColorLight(themeColor.base.brown, -20),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
black: {
|
black: {
|
||||||
self: themeColor.black,
|
self: themeColor.base.black,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.black, 15) : scaleColorLight(themeColor.black, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.black, 15) : scaleColorLight(themeColor.base.black, 25),
|
||||||
dark: {
|
dark: {
|
||||||
num1: scaleColorLight(themeColor.black, -10),
|
num1: scaleColorLight(themeColor.base.black, -10),
|
||||||
num2: scaleColorLight(themeColor.black, -20),
|
num2: scaleColorLight(themeColor.base.black, -20),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
grey: {
|
grey: {
|
||||||
self: themeColor.grey,
|
self: themeColor.base.grey,
|
||||||
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.grey, 15) : scaleColorLight(themeColor.grey, 25),
|
light: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.grey, 15) : scaleColorLight(themeColor.base.grey, 25),
|
||||||
},
|
},
|
||||||
gold: themeColor.gold,
|
gold: themeColor.base.gold,
|
||||||
white: themeColor.white,
|
white: themeColor.base.white,
|
||||||
};
|
};
|
||||||
|
|
||||||
const message: Message = {
|
const message: Message = {
|
||||||
error: {
|
error: {
|
||||||
bg: {
|
bg: {
|
||||||
self: rgba(themeColor.red, 0.1),
|
self: rgba(themeColor.base.red, 0.1),
|
||||||
active: rgba(themeColor.red, 0.5),
|
active: rgba(themeColor.base.red, 0.5),
|
||||||
hover: rgba(themeColor.red, 0.3),
|
hover: rgba(themeColor.base.red, 0.3),
|
||||||
},
|
},
|
||||||
border: rgba(themeColor.red, 0.4),
|
border: rgba(themeColor.base.red, 0.4),
|
||||||
text: saturate(0.2, themeColor.red), // 饱和度提高
|
text: saturate(0.2, themeColor.base.red), // 饱和度提高
|
||||||
},
|
},
|
||||||
success: {
|
success: {
|
||||||
bg: rgba(themeColor.green, 0.1),
|
bg: rgba(themeColor.base.green, 0.1),
|
||||||
border: rgba(themeColor.green, 0.4),
|
border: rgba(themeColor.base.green, 0.4),
|
||||||
text: saturate(0.2, themeColor.green),
|
text: saturate(0.2, themeColor.base.green),
|
||||||
},
|
},
|
||||||
warning: {
|
warning: {
|
||||||
bg: rgba(themeColor.yellow, 0.1),
|
bg: rgba(themeColor.base.yellow, 0.1),
|
||||||
border: rgba(themeColor.yellow, 0.4),
|
border: rgba(themeColor.base.yellow, 0.4),
|
||||||
text: saturate(0.2, themeColor.yellow),
|
text: saturate(0.2, themeColor.base.yellow),
|
||||||
},
|
},
|
||||||
info: {
|
info: {
|
||||||
bg: rgba(themeColor.blue, 0.1),
|
bg: rgba(themeColor.base.blue, 0.1),
|
||||||
border: rgba(themeColor.blue, 0.4),
|
border: rgba(themeColor.base.blue, 0.4),
|
||||||
text: saturate(0.2, themeColor.blue),
|
text: saturate(0.2, themeColor.base.blue),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -326,7 +329,7 @@ export function defineTheme(themeColor: ThemeColor, chroma: Chroma | null = null
|
|||||||
yellow: themeVars.color.yellow.self,
|
yellow: themeVars.color.yellow.self,
|
||||||
blue: themeVars.color.blue.self,
|
blue: themeVars.color.blue.self,
|
||||||
magenta: themeVars.color.pink.self,
|
magenta: themeVars.color.pink.self,
|
||||||
cyan: themeColor.cyan,
|
cyan: themeColor.base.cyan,
|
||||||
white: themeVars.color.console.fg.subtle,
|
white: themeVars.color.console.fg.subtle,
|
||||||
bright: {
|
bright: {
|
||||||
black: themeVars.color.black.light,
|
black: themeVars.color.black.light,
|
||||||
@@ -335,7 +338,7 @@ export function defineTheme(themeColor: ThemeColor, chroma: Chroma | null = null
|
|||||||
yellow: themeVars.color.yellow.light,
|
yellow: themeVars.color.yellow.light,
|
||||||
blue: themeVars.color.blue.light,
|
blue: themeVars.color.blue.light,
|
||||||
magenta: themeVars.color.pink.light,
|
magenta: themeVars.color.pink.light,
|
||||||
cyan: themeColor.isDarkTheme ? scaleColorLight(themeColor.cyan, 10) : scaleColorLight(themeColor.cyan, 25),
|
cyan: themeColor.isDarkTheme ? scaleColorLight(themeColor.base.cyan, 10) : scaleColorLight(themeColor.base.cyan, 25),
|
||||||
white: themeVars.color.console.fg.self,
|
white: themeVars.color.console.fg.self,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
import { saturate } from "polished";
|
import { saturate } from "polished";
|
||||||
import type { Console, Diff, Other } from "src";
|
import type { Console, Diff, Other } from "src";
|
||||||
import { scaleColorLight } from "src/functions";
|
import { scaleColorLight } from "src/functions";
|
||||||
import type { Chroma, Github } from "src/types";
|
import type { Github } from "src/types";
|
||||||
import { themeVars } from "src/types/vars";
|
import { themeVars } from "src/types/vars";
|
||||||
import { defineTheme } from "./color";
|
import { type ThemeColor } from "./color";
|
||||||
import type { Theme } from "./theme";
|
|
||||||
|
|
||||||
export type GithubColor = {
|
export type GithubColor = {
|
||||||
isDarkTheme: boolean;
|
isDarkTheme: boolean;
|
||||||
@@ -77,7 +76,7 @@ export type GithubColor = {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export function defineGithubTheme(githubColor: GithubColor, chroma: Chroma | null = null): Theme {
|
export function github2ThemeColor(githubColor: GithubColor): ThemeColor {
|
||||||
const console: Console = {
|
const console: Console = {
|
||||||
fg: {
|
fg: {
|
||||||
self: githubColor.fgColor.default,
|
self: githubColor.fgColor.default,
|
||||||
@@ -327,12 +326,12 @@ export function defineGithubTheme(githubColor: GithubColor, chroma: Chroma | nul
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
return defineTheme(
|
return {
|
||||||
{
|
isDarkTheme: githubColor.isDarkTheme,
|
||||||
isDarkTheme: githubColor.isDarkTheme,
|
primary: githubColor.fgColor.accent,
|
||||||
primary: githubColor.fgColor.accent,
|
primaryContrast: githubColor.fgColor.default,
|
||||||
primaryContrast: githubColor.fgColor.default,
|
secondary: githubColor.borderColor.default,
|
||||||
secondary: githubColor.borderColor.default,
|
base: {
|
||||||
red: githubColor.fgColor.danger,
|
red: githubColor.fgColor.danger,
|
||||||
orange: githubColor.fgColor.severe,
|
orange: githubColor.fgColor.severe,
|
||||||
yellow: githubColor.fgColor.attention,
|
yellow: githubColor.fgColor.attention,
|
||||||
@@ -349,11 +348,10 @@ export function defineGithubTheme(githubColor: GithubColor, chroma: Chroma | nul
|
|||||||
grey: githubColor.fgColor.neutral,
|
grey: githubColor.fgColor.neutral,
|
||||||
gold: githubColor.display.lemon.fgColor,
|
gold: githubColor.display.lemon.fgColor,
|
||||||
white: githubColor.fgColor.white,
|
white: githubColor.fgColor.white,
|
||||||
console,
|
|
||||||
diff,
|
|
||||||
other,
|
|
||||||
github,
|
|
||||||
},
|
},
|
||||||
chroma
|
console,
|
||||||
);
|
diff,
|
||||||
|
other,
|
||||||
|
github,
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
export { defineTheme } from "./core/color";
|
export { defaultDarkChroma, defaultLightChroma } from "./core/chroma";
|
||||||
|
export { defineTheme, type ThemeColor } from "./core/color";
|
||||||
export type { Theme } from "./core/theme";
|
export type { Theme } from "./core/theme";
|
||||||
export type { Chroma, Console, Diff, Github, Other } from "./types";
|
export type { Ansi, Chroma, Console, Diff, Github, Message, Named, Other, Primary, Secondary } from "./types";
|
||||||
export { otherThemeVars, themeVars } from "./types/vars";
|
export { otherThemeVars, themeVars } from "./types/vars";
|
||||||
|
|||||||
@@ -151,6 +151,8 @@ export const repoFileView = css`
|
|||||||
max-width: calc(100% - calc(2 * 16px));
|
max-width: calc(100% - calc(2 * 16px));
|
||||||
}
|
}
|
||||||
.repo-view-container {
|
.repo-view-container {
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
// 左侧文件树
|
// 左侧文件树
|
||||||
.repo-view-file-tree-container {
|
.repo-view-file-tree-container {
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
@@ -166,23 +168,31 @@ export const repoFileView = css`
|
|||||||
background: ${themeVars.color.secondary.self};
|
background: ${themeVars.color.secondary.self};
|
||||||
}
|
}
|
||||||
> .repo-button-row {
|
> .repo-button-row {
|
||||||
height: 32px;
|
align-content: center;
|
||||||
margin: 16px 0;
|
background: ${themeVars.color.body};
|
||||||
|
height: 64px;
|
||||||
|
margin: 0;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
&:after {
|
&:after {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 32px + 32px;
|
top: 64px;
|
||||||
left: -16px;
|
left: -16px;
|
||||||
width: calc(100% + 16px);
|
width: calc(100% + 16px);
|
||||||
height: 1px;
|
height: 1px;
|
||||||
background: ${themeVars.color.secondary.self};
|
background: ${themeVars.color.secondary.self};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.view-file-tree-items {
|
||||||
|
margin-right: 0;
|
||||||
|
padding: 16px 16px 16px 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// 右侧文件视图内容
|
// 右侧文件视图内容
|
||||||
.repo-view-content {
|
.repo-view-content {
|
||||||
.repo-button-row {
|
.repo-button-row {
|
||||||
align-items: center;
|
align-content: center;
|
||||||
background: ${themeVars.color.box.header};
|
background: ${themeVars.color.box.header};
|
||||||
border: 1px solid ${themeVars.color.secondary.self};
|
border: 1px solid ${themeVars.color.secondary.self};
|
||||||
border-radius: ${otherThemeVars.border.radius};
|
border-radius: ${otherThemeVars.border.radius};
|
||||||
@@ -199,7 +209,8 @@ export const repoFileView = css`
|
|||||||
z-index: 0;
|
z-index: 0;
|
||||||
h4.file-header {
|
h4.file-header {
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 46px;
|
// 重叠边框线, 避免过粗
|
||||||
|
top: 45px;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
73
themes/colorblind-dark.css.ts
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
import { defineTheme, type Chroma, type ThemeColor } from "src";
|
||||||
|
import { github2ThemeColor, type GithubColor } from "src/core/github";
|
||||||
|
import { prettylights2Chroma, type prettylightsColor } from "src/core/prettylights";
|
||||||
|
import { darkGithubColors } from "themes/dark";
|
||||||
|
|
||||||
|
export const colorblindDarkGithubColors: GithubColor = {
|
||||||
|
isDarkTheme: true,
|
||||||
|
display: darkGithubColors.display,
|
||||||
|
diffBlob: {
|
||||||
|
addtionNum: { bgColor: "#58a6ff4d" },
|
||||||
|
addtionWord: { bgColor: "#388bfd66" },
|
||||||
|
deletionNum: { bgColor: "#db6d284d" },
|
||||||
|
deletionWord: { bgColor: "#db6d2866" },
|
||||||
|
hunkNum: { bgColor: { rest: "#2f3742" } },
|
||||||
|
},
|
||||||
|
fgColor: {
|
||||||
|
...darkGithubColors.fgColor,
|
||||||
|
danger: "#f0883e",
|
||||||
|
success: "#58a6ff",
|
||||||
|
},
|
||||||
|
bgColor: {
|
||||||
|
...darkGithubColors.bgColor,
|
||||||
|
danger: { muted: "#db6d281a" },
|
||||||
|
success: { emphasis: "#1f6feb", muted: "#388bfd33" },
|
||||||
|
},
|
||||||
|
borderColor: {
|
||||||
|
...darkGithubColors.borderColor,
|
||||||
|
success: { emphasis: "#1f6feb" },
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
primary: { fgColor: { rest: "#ffffff" }, bgColor: { hover: "#2a7aef" } },
|
||||||
|
danger: { fgColor: { rest: "#f0883e", hover: "#ffffff" }, bgColor: { hover: "#9b4215" } },
|
||||||
|
},
|
||||||
|
control: darkGithubColors.control,
|
||||||
|
shadow: darkGithubColors.shadow,
|
||||||
|
overlay: darkGithubColors.overlay,
|
||||||
|
underlineNav: darkGithubColors.underlineNav,
|
||||||
|
contribution: darkGithubColors.contribution,
|
||||||
|
};
|
||||||
|
export const colorblindDarkPrettylights: prettylightsColor = {
|
||||||
|
syntax: {
|
||||||
|
brackethighlighter: { angle: "#9198a1", unmatched: "#db6d28" },
|
||||||
|
carriage: { return: { bg: "#9b4215", text: "#f0f6fc" } },
|
||||||
|
comment: "#9198a1",
|
||||||
|
constant: "#79c0ff",
|
||||||
|
constantOtherReferenceLink: "#a5d6ff",
|
||||||
|
entity: "#d2a8ff",
|
||||||
|
entityTag: "#a5d6ff",
|
||||||
|
invalid: { illegal: { bg: "#762d0a", text: "#f0f6fc" } },
|
||||||
|
keyword: "#f0883e",
|
||||||
|
markup: {
|
||||||
|
bold: "#f0f6fc",
|
||||||
|
changed: { bg: "#5a1e02", text: "#ffdfb6" },
|
||||||
|
deleted: { bg: "#5a1e02", text: "#ffdfb6" },
|
||||||
|
heading: "#1f6feb",
|
||||||
|
ignored: { bg: "#1158c7", text: "#f0f6fc" },
|
||||||
|
inserted: { bg: "#0c2d6b", text: "#cae8ff" },
|
||||||
|
italic: "#f0f6fc",
|
||||||
|
list: "#f2cc60",
|
||||||
|
},
|
||||||
|
metaDiffRange: "#d2a8ff",
|
||||||
|
storageModifierImport: "#f0f6fc",
|
||||||
|
string: "#a5d6ff",
|
||||||
|
stringRegexp: "#a5d6ff",
|
||||||
|
sublimelinterGutterMark: "#3d444d",
|
||||||
|
variable: "#ffa657",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const colorblindDarkColors: ThemeColor = github2ThemeColor(colorblindDarkGithubColors);
|
||||||
|
export const colorblindDarkChroma: Chroma = prettylights2Chroma(colorblindDarkPrettylights);
|
||||||
|
|
||||||
|
export default defineTheme(colorblindDarkColors);
|
||||||
73
themes/colorblind-light.css.ts
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
import { defineTheme, type Chroma, type ThemeColor } from "src";
|
||||||
|
import { github2ThemeColor, type GithubColor } from "src/core/github";
|
||||||
|
import { prettylights2Chroma, type prettylightsColor } from "src/core/prettylights";
|
||||||
|
import { lightGithubColors } from "themes/light";
|
||||||
|
|
||||||
|
export const colorblindLightGithubColors: GithubColor = {
|
||||||
|
isDarkTheme: false,
|
||||||
|
display: lightGithubColors.display,
|
||||||
|
diffBlob: {
|
||||||
|
addtionNum: { bgColor: "#b6e3ff" },
|
||||||
|
addtionWord: { bgColor: "#b6e3ff" },
|
||||||
|
deletionNum: { bgColor: "#ffd8b5" },
|
||||||
|
deletionWord: { bgColor: "#ffd8b5" },
|
||||||
|
hunkNum: { bgColor: { rest: "#e6eaef" } },
|
||||||
|
},
|
||||||
|
fgColor: {
|
||||||
|
...lightGithubColors.fgColor,
|
||||||
|
danger: "#bc4c00",
|
||||||
|
success: "#0969da",
|
||||||
|
},
|
||||||
|
bgColor: {
|
||||||
|
...lightGithubColors.bgColor,
|
||||||
|
danger: { muted: "#fff1e5" },
|
||||||
|
success: { emphasis: "#0969da", muted: "#ddf4ff" },
|
||||||
|
},
|
||||||
|
borderColor: {
|
||||||
|
...lightGithubColors.borderColor,
|
||||||
|
success: { emphasis: "#0969da" },
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
primary: { fgColor: { rest: "#ffffff" }, bgColor: { hover: "#0864d1" } },
|
||||||
|
danger: { fgColor: { rest: "#bc4c00", hover: "#ffffff" }, bgColor: { hover: "#bc4c00" } },
|
||||||
|
},
|
||||||
|
control: lightGithubColors.control,
|
||||||
|
shadow: lightGithubColors.shadow,
|
||||||
|
overlay: lightGithubColors.overlay,
|
||||||
|
underlineNav: lightGithubColors.underlineNav,
|
||||||
|
contribution: lightGithubColors.contribution,
|
||||||
|
};
|
||||||
|
export const colorblindLightPrettylights: prettylightsColor = {
|
||||||
|
syntax: {
|
||||||
|
brackethighlighter: { angle: "#59636e", unmatched: "#762c00" },
|
||||||
|
carriage: { return: { bg: "#bc4c00", text: "#f6f8fa" } },
|
||||||
|
comment: "#59636e",
|
||||||
|
constant: "#0550ae",
|
||||||
|
constantOtherReferenceLink: "#0a3069",
|
||||||
|
entity: "#6639ba",
|
||||||
|
entityTag: "#0550ae",
|
||||||
|
invalid: { illegal: { bg: "#762c00", text: "#f6f8fa" } },
|
||||||
|
keyword: "#bc4c00",
|
||||||
|
markup: {
|
||||||
|
bold: "#1f2328",
|
||||||
|
changed: { bg: "#ffd8b5", text: "#953800" },
|
||||||
|
deleted: { bg: "#fff1e5", text: "#762c00" },
|
||||||
|
heading: "#0550ae",
|
||||||
|
ignored: { bg: "#0550ae", text: "#d1d9e0" },
|
||||||
|
inserted: { bg: "#ddf4ff", text: "#0550ae" },
|
||||||
|
italic: "#1f2328",
|
||||||
|
list: "#3b2300",
|
||||||
|
},
|
||||||
|
metaDiffRange: "#8250df",
|
||||||
|
storageModifierImport: "#1f2328",
|
||||||
|
string: "#0a3069",
|
||||||
|
stringRegexp: "#0550ae",
|
||||||
|
sublimelinterGutterMark: "#818b98",
|
||||||
|
variable: "#953800",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const colorblindLightColors: ThemeColor = github2ThemeColor(colorblindLightGithubColors);
|
||||||
|
export const colorblindLightChroma: Chroma = prettylights2Chroma(colorblindLightPrettylights);
|
||||||
|
|
||||||
|
export default defineTheme(colorblindLightColors);
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
import { defineGithubTheme } from "src/core/github";
|
import { defineTheme, type ThemeColor } from "src";
|
||||||
|
import { github2ThemeColor, type GithubColor } from "src/core/github";
|
||||||
|
|
||||||
export default defineGithubTheme({
|
export const darkGithubColors: GithubColor = {
|
||||||
isDarkTheme: true,
|
isDarkTheme: true,
|
||||||
display: {
|
display: {
|
||||||
brown: { fgColor: "#b69a6d" },
|
brown: { fgColor: "#b69a6d" },
|
||||||
@@ -22,7 +23,7 @@ export default defineGithubTheme({
|
|||||||
attention: "#d29922",
|
attention: "#d29922",
|
||||||
danger: "#f85149",
|
danger: "#f85149",
|
||||||
default: "#f0f6fc",
|
default: "#f0f6fc",
|
||||||
disabled: "#656c7699",
|
disabled: "#656c76",
|
||||||
done: "#ab7df8",
|
done: "#ab7df8",
|
||||||
muted: "#9198a1",
|
muted: "#9198a1",
|
||||||
neutral: "#9198a1",
|
neutral: "#9198a1",
|
||||||
@@ -35,20 +36,20 @@ export default defineGithubTheme({
|
|||||||
bgColor: {
|
bgColor: {
|
||||||
accent: { emphasis: "#1f6feb", muted: "#388bfd1a" },
|
accent: { emphasis: "#1f6feb", muted: "#388bfd1a" },
|
||||||
attention: { muted: "#bb800926" },
|
attention: { muted: "#bb800926" },
|
||||||
success: { emphasis: "#238636", muted: "#2ea04326" },
|
|
||||||
danger: { muted: "#f851491a" },
|
danger: { muted: "#f851491a" },
|
||||||
done: { emphasis: "#8957e5" },
|
|
||||||
default: "#0d1117",
|
default: "#0d1117",
|
||||||
inset: "#010409",
|
done: { emphasis: "#8957e5" },
|
||||||
muted: "#151b23",
|
muted: "#151b23",
|
||||||
neutral: { muted: "#656c7633" },
|
neutral: { muted: "#656c7633" },
|
||||||
|
success: { emphasis: "#238636", muted: "#2ea04326" },
|
||||||
|
inset: "#010409",
|
||||||
},
|
},
|
||||||
borderColor: {
|
borderColor: {
|
||||||
accent: { emphasis: "#1f6feb" },
|
accent: { emphasis: "#1f6feb" },
|
||||||
default: "#3d444d",
|
|
||||||
attention: { emphasis: "#9e6a03" },
|
attention: { emphasis: "#9e6a03" },
|
||||||
success: { emphasis: "#238636" },
|
default: "#3d444d",
|
||||||
done: { emphasis: "#8957e5" },
|
done: { emphasis: "#8957e5" },
|
||||||
|
success: { emphasis: "#238636" },
|
||||||
muted: "#3d444db3",
|
muted: "#3d444db3",
|
||||||
translucent: "#ffffff26",
|
translucent: "#ffffff26",
|
||||||
},
|
},
|
||||||
@@ -69,4 +70,8 @@ export default defineGithubTheme({
|
|||||||
borderColor: { num0: "#0104090d" },
|
borderColor: { num0: "#0104090d" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
};
|
||||||
|
|
||||||
|
export const darkColors: ThemeColor = github2ThemeColor(darkGithubColors);
|
||||||
|
|
||||||
|
export default defineTheme(darkColors);
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { defineGithubTheme } from "src/core/github";
|
import { defineTheme, type ThemeColor } from "src";
|
||||||
|
import { github2ThemeColor, type GithubColor } from "src/core/github";
|
||||||
|
|
||||||
export default defineGithubTheme({
|
export const lightGithubColors: GithubColor = {
|
||||||
isDarkTheme: false,
|
isDarkTheme: false,
|
||||||
display: {
|
display: {
|
||||||
brown: { fgColor: "#755f43" },
|
brown: { fgColor: "#755f43" },
|
||||||
@@ -35,20 +36,20 @@ export default defineGithubTheme({
|
|||||||
bgColor: {
|
bgColor: {
|
||||||
accent: { emphasis: "#0969da", muted: "#ddf4ff" },
|
accent: { emphasis: "#0969da", muted: "#ddf4ff" },
|
||||||
attention: { muted: "#fff8c5" },
|
attention: { muted: "#fff8c5" },
|
||||||
success: { emphasis: "#1f883d", muted: "#dafbe1" },
|
|
||||||
danger: { muted: "#ffebe9" },
|
danger: { muted: "#ffebe9" },
|
||||||
done: { emphasis: "#8250df" },
|
|
||||||
default: "#ffffff",
|
default: "#ffffff",
|
||||||
inset: "#f6f8fa",
|
done: { emphasis: "#8250df" },
|
||||||
muted: "#f6f8fa",
|
muted: "#f6f8fa",
|
||||||
neutral: { muted: "#818b981f" },
|
neutral: { muted: "#818b981f" },
|
||||||
|
success: { emphasis: "#1f883d", muted: "#dafbe1" },
|
||||||
|
inset: "#f6f8fa",
|
||||||
},
|
},
|
||||||
borderColor: {
|
borderColor: {
|
||||||
accent: { emphasis: "#0969da" },
|
accent: { emphasis: "#0969da" },
|
||||||
default: "#d1d9e0",
|
|
||||||
attention: { emphasis: "#9a6700" },
|
attention: { emphasis: "#9a6700" },
|
||||||
success: { emphasis: "#1a7f37" },
|
default: "#d1d9e0",
|
||||||
done: { emphasis: "#8250df" },
|
done: { emphasis: "#8250df" },
|
||||||
|
success: { emphasis: "#1a7f37" },
|
||||||
muted: "#d1d9e0b3",
|
muted: "#d1d9e0b3",
|
||||||
translucent: "#1f232826",
|
translucent: "#1f232826",
|
||||||
},
|
},
|
||||||
@@ -69,4 +70,8 @@ export default defineGithubTheme({
|
|||||||
borderColor: { num0: "#1f23280d" },
|
borderColor: { num0: "#1f23280d" },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
});
|
};
|
||||||
|
|
||||||
|
export const lightColors: ThemeColor = github2ThemeColor(lightGithubColors);
|
||||||
|
|
||||||
|
export default defineTheme(lightColors);
|
||||||
|
|||||||
@@ -1,104 +1,103 @@
|
|||||||
import { defineGithubTheme } from "src/core/github";
|
import { defineTheme, type Chroma, type ThemeColor } from "src";
|
||||||
import { prettylights2Chroma } from "src/core/prettylights";
|
import { github2ThemeColor, type GithubColor } from "src/core/github";
|
||||||
|
import { prettylights2Chroma, type prettylightsColor } from "src/core/prettylights";
|
||||||
|
import { darkGithubColors } from "themes/dark";
|
||||||
|
|
||||||
export default defineGithubTheme(
|
export const softDarkGithubColors: GithubColor = {
|
||||||
{
|
isDarkTheme: true,
|
||||||
isDarkTheme: true,
|
display: darkGithubColors.display,
|
||||||
display: {
|
diffBlob: {
|
||||||
brown: { fgColor: "#b69a6d" },
|
addtionNum: { bgColor: "#57ab5a4d" },
|
||||||
cyan: { fgColor: "#07ace4" },
|
addtionWord: { bgColor: "#46954a66" },
|
||||||
indigo: { fgColor: "#9899ec" },
|
deletionNum: { bgColor: "#e5534b4d" },
|
||||||
lemon: { fgColor: "#ba9b12" },
|
deletionWord: { bgColor: "#e5534b66" },
|
||||||
olive: { fgColor: "#a2a626" },
|
hunkNum: { bgColor: { rest: "#143d79" } },
|
||||||
teal: { fgColor: "#1cb0ab" },
|
},
|
||||||
},
|
fgColor: {
|
||||||
diffBlob: {
|
accent: "#478be6",
|
||||||
addtionNum: { bgColor: "#57ab5a4d" },
|
attention: "#c69026",
|
||||||
addtionWord: { bgColor: "#46954a66" },
|
danger: "#e5534b",
|
||||||
deletionNum: { bgColor: "#e5534b4d" },
|
default: "#d1d7e0",
|
||||||
deletionWord: { bgColor: "#e5534b66" },
|
disabled: "#656c76",
|
||||||
hunkNum: { bgColor: { rest: "#143d79" } },
|
done: "#986ee2",
|
||||||
},
|
muted: "#9198a1",
|
||||||
fgColor: {
|
neutral: "#9198a1",
|
||||||
accent: "#478be6",
|
severe: "#cc6b2c",
|
||||||
attention: "#c69026",
|
sponsors: "#c96198",
|
||||||
danger: "#e5534b",
|
success: "#57ab5a",
|
||||||
default: "#d1d7e0",
|
black: "#010409",
|
||||||
disabled: "#656c76",
|
white: "#cdd9e5",
|
||||||
done: "#986ee2",
|
},
|
||||||
muted: "#9198a1",
|
bgColor: {
|
||||||
neutral: "#9198a1",
|
accent: { emphasis: "#316dca", muted: "#4184e41a" },
|
||||||
severe: "#cc6b2c",
|
attention: { muted: "#ae7c1426" },
|
||||||
sponsors: "#c96198",
|
danger: { muted: "#e5534b1a" },
|
||||||
success: "#57ab5a",
|
default: "#212830",
|
||||||
black: "#010409",
|
done: { emphasis: "#8256d0" },
|
||||||
white: "#cdd9e5",
|
muted: "#262c36",
|
||||||
},
|
neutral: { muted: "#656c7633" },
|
||||||
bgColor: {
|
success: { emphasis: "#347d39", muted: "#46954a26" },
|
||||||
accent: { emphasis: "#316dca", muted: "#4184e41a" },
|
inset: "#151b23",
|
||||||
attention: { muted: "#ae7c1426" },
|
},
|
||||||
success: { emphasis: "#347d39", muted: "#46954a26" },
|
borderColor: {
|
||||||
danger: { muted: "#e5534b1a" },
|
accent: { emphasis: "#316dca" },
|
||||||
done: { emphasis: "#8256d0" },
|
attention: { emphasis: "#966600" },
|
||||||
default: "#212830",
|
default: "#3d444d",
|
||||||
inset: "#151b23",
|
done: { emphasis: "#8256d0" },
|
||||||
muted: "#262c36",
|
success: { emphasis: "#347d39" },
|
||||||
neutral: { muted: "#656c7633" },
|
muted: "#3d444db3",
|
||||||
},
|
translucent: "#cdd9e526",
|
||||||
borderColor: {
|
},
|
||||||
accent: { emphasis: "#316dca" },
|
button: {
|
||||||
default: "#3d444d",
|
primary: { fgColor: { rest: "#ffffff" }, bgColor: { hover: "#3b8640" } },
|
||||||
attention: { emphasis: "#966600" },
|
danger: { fgColor: { rest: "#ea5c53", hover: "#ffffff" }, bgColor: { hover: "#ad2e2c" } },
|
||||||
success: { emphasis: "#347d39" },
|
},
|
||||||
done: { emphasis: "#8256d0" },
|
control: {
|
||||||
muted: "#3d444db3",
|
bgColor: { active: "#3d444d", hover: "#2f3742", rest: "#2a313c" },
|
||||||
translucent: "#cdd9e526",
|
transparent: { bgColor: { active: "#656c7633", hover: "#656c7626", selected: "#656c761a" } },
|
||||||
},
|
},
|
||||||
button: {
|
shadow: { floating: { small: "#01040966" } },
|
||||||
primary: { fgColor: { rest: "#ffffff" }, bgColor: { hover: "#3b8640" } },
|
overlay: { backdrop: { bgColor: "#262c3666" } },
|
||||||
danger: { fgColor: { rest: "#ea5c53", hover: "#ffffff" }, bgColor: { hover: "#ad2e2c" } },
|
underlineNav: { borderColor: { active: "#ec775c" } },
|
||||||
},
|
contribution: {
|
||||||
control: {
|
default: {
|
||||||
bgColor: { active: "#3d444d", hover: "#2f3742", rest: "#2a313c" },
|
bgColor: { num0: "#2a313c", num1: "#1b4721", num2: "#2b6a30", num3: "#46954a", num4: "#6bc46d" },
|
||||||
transparent: { bgColor: { active: "#656c7633", hover: "#656c7626", selected: "#656c761a" } },
|
borderColor: { num0: "#0104090d" },
|
||||||
},
|
|
||||||
shadow: { floating: { small: "#01040966" } },
|
|
||||||
overlay: { backdrop: { bgColor: "#262c3666" } },
|
|
||||||
underlineNav: { borderColor: { active: "#ec775c" } },
|
|
||||||
contribution: {
|
|
||||||
default: {
|
|
||||||
bgColor: { num0: "#2a313c", num1: "#1b4721", num2: "#2b6a30", num3: "#46954a", num4: "#6bc46d" },
|
|
||||||
borderColor: { num0: "#0104090d" },
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
prettylights2Chroma({
|
};
|
||||||
syntax: {
|
|
||||||
brackethighlighter: { angle: "#9198a1", unmatched: "#e5534b" },
|
export const softDarkPrettylights: prettylightsColor = {
|
||||||
carriage: { return: { bg: "#ad2e2c", text: "#f0f6fc" } },
|
syntax: {
|
||||||
comment: "#9198a1",
|
brackethighlighter: { angle: "#9198a1", unmatched: "#e5534b" },
|
||||||
constant: "#6cb6ff",
|
carriage: { return: { bg: "#ad2e2c", text: "#f0f6fc" } },
|
||||||
constantOtherReferenceLink: "#96d0ff",
|
comment: "#9198a1",
|
||||||
entity: "#dcbdfb",
|
constant: "#6cb6ff",
|
||||||
entityTag: "#8ddb8c",
|
constantOtherReferenceLink: "#96d0ff",
|
||||||
invalid: { illegal: { bg: "#922323", text: "#f0f6fc" } },
|
entity: "#dcbdfb",
|
||||||
keyword: "#f47067",
|
entityTag: "#8ddb8c",
|
||||||
markup: {
|
invalid: { illegal: { bg: "#922323", text: "#f0f6fc" } },
|
||||||
bold: "#f0f6fc",
|
keyword: "#f47067",
|
||||||
changed: { bg: "#682d0f", text: "#ffddb0" },
|
markup: {
|
||||||
deleted: { bg: "#78191b", text: "#ffd8d3" },
|
bold: "#f0f6fc",
|
||||||
heading: "#316dca",
|
changed: { bg: "#682d0f", text: "#ffddb0" },
|
||||||
ignored: { bg: "#255ab2", text: "#f0f6fc" },
|
deleted: { bg: "#78191b", text: "#ffd8d3" },
|
||||||
inserted: { bg: "#1b4721", text: "#b4f1b4" },
|
heading: "#316dca",
|
||||||
italic: "#f0f6fc",
|
ignored: { bg: "#255ab2", text: "#f0f6fc" },
|
||||||
list: "#eac55f",
|
inserted: { bg: "#1b4721", text: "#b4f1b4" },
|
||||||
},
|
italic: "#f0f6fc",
|
||||||
metaDiffRange: "#dcbdfb",
|
list: "#eac55f",
|
||||||
storageModifierImport: "#f0f6fc",
|
|
||||||
string: "#96d0ff",
|
|
||||||
stringRegexp: "#8ddb8c",
|
|
||||||
sublimelinterGutterMark: "#3d444d",
|
|
||||||
variable: "#f69d50",
|
|
||||||
},
|
},
|
||||||
})
|
metaDiffRange: "#dcbdfb",
|
||||||
);
|
storageModifierImport: "#f0f6fc",
|
||||||
|
string: "#96d0ff",
|
||||||
|
stringRegexp: "#8ddb8c",
|
||||||
|
sublimelinterGutterMark: "#3d444d",
|
||||||
|
variable: "#f69d50",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const softDarkColors: ThemeColor = github2ThemeColor(softDarkGithubColors);
|
||||||
|
export const softDarkChroma: Chroma = prettylights2Chroma(softDarkPrettylights);
|
||||||
|
|
||||||
|
export default defineTheme(softDarkColors, softDarkChroma);
|
||||||
|
|||||||
45
themes/tritanopia-dark.css.ts
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import { defineTheme, type Chroma, type ThemeColor } from "src";
|
||||||
|
import { darkPrettylights } from "src/core/chroma";
|
||||||
|
import { github2ThemeColor, type GithubColor } from "src/core/github";
|
||||||
|
import { prettylights2Chroma, type prettylightsColor } from "src/core/prettylights";
|
||||||
|
import { colorblindDarkGithubColors, colorblindDarkPrettylights } from "themes/colorblind-dark";
|
||||||
|
import { darkGithubColors } from "themes/dark";
|
||||||
|
|
||||||
|
export const tritanopiaDarkGithubColors: GithubColor = {
|
||||||
|
...colorblindDarkGithubColors,
|
||||||
|
diffBlob: {
|
||||||
|
...colorblindDarkGithubColors.diffBlob,
|
||||||
|
deletionNum: darkGithubColors.diffBlob.deletionNum,
|
||||||
|
deletionWord: darkGithubColors.diffBlob.deletionWord,
|
||||||
|
},
|
||||||
|
fgColor: {
|
||||||
|
...colorblindDarkGithubColors.fgColor,
|
||||||
|
danger: darkGithubColors.fgColor.danger,
|
||||||
|
},
|
||||||
|
bgColor: {
|
||||||
|
...colorblindDarkGithubColors.bgColor,
|
||||||
|
danger: darkGithubColors.bgColor.danger,
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
...colorblindDarkGithubColors.button,
|
||||||
|
danger: darkGithubColors.button.danger,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const tritanopiaDarkPrettylights: prettylightsColor = {
|
||||||
|
syntax: {
|
||||||
|
...darkPrettylights.syntax,
|
||||||
|
markup: {
|
||||||
|
...darkPrettylights.syntax.markup,
|
||||||
|
changed: { bg: "#67060c", text: "#ffdcd7" },
|
||||||
|
inserted: colorblindDarkPrettylights.syntax.markup.inserted,
|
||||||
|
},
|
||||||
|
stringRegexp: colorblindDarkPrettylights.syntax.stringRegexp,
|
||||||
|
variable: "#ffa198",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const tritanopiaDarkColors: ThemeColor = github2ThemeColor(tritanopiaDarkGithubColors);
|
||||||
|
export const tritanopiaDarkChroma: Chroma = prettylights2Chroma(tritanopiaDarkPrettylights);
|
||||||
|
|
||||||
|
export default defineTheme(tritanopiaDarkColors, tritanopiaDarkChroma);
|
||||||
45
themes/tritanopia-light.css.ts
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
import { defineTheme, type Chroma, type ThemeColor } from "src";
|
||||||
|
import { lightPrettylights } from "src/core/chroma";
|
||||||
|
import { github2ThemeColor, type GithubColor } from "src/core/github";
|
||||||
|
import { prettylights2Chroma, type prettylightsColor } from "src/core/prettylights";
|
||||||
|
import { colorblindLightGithubColors, colorblindLightPrettylights } from "themes/colorblind-light";
|
||||||
|
import { lightGithubColors } from "themes/light";
|
||||||
|
|
||||||
|
export const tritanopiaLightGithubColors: GithubColor = {
|
||||||
|
...colorblindLightGithubColors,
|
||||||
|
diffBlob: {
|
||||||
|
...colorblindLightGithubColors.diffBlob,
|
||||||
|
deletionNum: lightGithubColors.diffBlob.deletionNum,
|
||||||
|
deletionWord: lightGithubColors.diffBlob.deletionWord,
|
||||||
|
},
|
||||||
|
fgColor: {
|
||||||
|
...colorblindLightGithubColors.fgColor,
|
||||||
|
danger: lightGithubColors.fgColor.danger,
|
||||||
|
},
|
||||||
|
bgColor: {
|
||||||
|
...colorblindLightGithubColors.bgColor,
|
||||||
|
danger: lightGithubColors.bgColor.danger,
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
...colorblindLightGithubColors.button,
|
||||||
|
danger: lightGithubColors.button.danger,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const tritanopiaLightPrettylights: prettylightsColor = {
|
||||||
|
syntax: {
|
||||||
|
...lightPrettylights.syntax,
|
||||||
|
markup: {
|
||||||
|
...lightPrettylights.syntax.markup,
|
||||||
|
changed: { bg: "#ffcecb", text: "#a40e26" },
|
||||||
|
inserted: colorblindLightPrettylights.syntax.markup.inserted,
|
||||||
|
},
|
||||||
|
stringRegexp: colorblindLightPrettylights.syntax.stringRegexp,
|
||||||
|
variable: "#a40e26",
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
export const tritanopiaLightColors: ThemeColor = github2ThemeColor(tritanopiaLightGithubColors);
|
||||||
|
export const tritanopiaLightChroma: Chroma = prettylights2Chroma(tritanopiaLightPrettylights);
|
||||||
|
|
||||||
|
export default defineTheme(tritanopiaLightColors, tritanopiaLightChroma);
|
||||||