Skip to content

Commit

Permalink
feat: support custom background colors for sidebar and header
Browse files Browse the repository at this point in the history
  • Loading branch information
anncwb committed Aug 14, 2024
1 parent 83fcdec commit ec19a44
Show file tree
Hide file tree
Showing 19 changed files with 148 additions and 47 deletions.
2 changes: 1 addition & 1 deletion apps/backend-mock/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Description

Vben Admin 数据 mock 服务,没有对接任何的数据库,所有数据都是模拟的,用于前端开发时提供数据支持。由于 sqlite 安装需要在本地进行编译,所以这里接口是直接返回的。线上环境不再提供mock集成,可自行部署服务或者对接真实数据,同步 mock.js等工具有一些限制,比如上传文件不行、无法模拟复杂的逻辑等,所以这里使用了 真是的后端服务来实现。唯一麻烦的是本地需要同时启动后端服务和前端服务,但是这样可以更好的模拟真实环境。
Vben Admin 数据 mock 服务,没有对接任何的数据库,所有数据都是模拟的,用于前端开发时提供数据支持。线上环境不再提供mock集成,可自行部署服务或者对接真实数据,mock.js 等工具有一些限制,比如上传文件不行、无法模拟复杂的逻辑等,所以这里使用了真实的后端服务来实现。唯一麻烦的是本地需要同时启动后端服务和前端服务,但是这样可以更好的模拟真实环境。

## Running the app

Expand Down
3 changes: 3 additions & 0 deletions docs/src/guide/essentials/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,7 @@ const defaultPreferences: Preferences = {
colorWarning: 'hsl(42 84% 61%)',
mode: 'dark',
radius: '0.5',
semiDarkHeader: false,
semiDarkMenu: true,
},
transition: {
Expand Down Expand Up @@ -452,6 +453,8 @@ interface ThemePreferences {
mode: ThemeModeType;
/** 圆角 */
radius: string;
/** 是否开启半深色header(只在theme='light'时生效) */
semiDarkHeader: boolean;
/** 是否开启半深色菜单(只在theme='light'时生效) */
semiDarkMenu: boolean;
}
Expand Down
110 changes: 86 additions & 24 deletions docs/src/guide/in-depth/theme.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,16 +107,16 @@ css 变量内的颜色,必须使用 `hsl` 格式,如 `0 0% 100%`,不需要
/* 基本文字大小 */
--font-size-base: 16px;

/* 主体内容背景色 */
--content: 240 11% 96%;

/* =============component & UI============= */

/* menu */
--sidebar: 0 0% 100%;
--sidebar-deep: 210 11.11% 96.47%;
--menu: var(--sidebar);

/* header */
--header: 0 0% 100%;

accent-color: var(--primary);
color-scheme: light;
}
Expand Down Expand Up @@ -206,14 +206,12 @@ css 变量内的颜色,必须使用 `hsl` 格式,如 `0 0% 100%`,不需要
/* 基本文字大小 */
--font-size-base: 16px;

/* 主体内容背景色 */
--content: 240 11% 96%;

/* =============component & UI============= */

--sidebar: 222.34deg 10.43% 12.27%;
--sidebar-deep: 220deg 13.06% 9%;
--menu: var(--sidebar);
--header: 222.34deg 10.43% 12.27%;

color-scheme: dark;
}
Expand All @@ -228,7 +226,6 @@ css 变量内的颜色,必须使用 `hsl` 格式,如 `0 0% 100%`,不需要
### 默认主题下:

```css
/* */
:root {
/* Background color for <Card /> */
--card: 0 0% 30%;
Expand All @@ -238,7 +235,6 @@ css 变量内的颜色,必须使用 `hsl` 格式,如 `0 0% 100%`,不需要
### 黑暗模式下

```css
/* */
.dark,
.dark[data-theme='custom'],
.dark[data-theme='default'] {
Expand Down Expand Up @@ -335,7 +331,7 @@ type BuiltinThemeType =

/* 主体区域背景色 */
--background-deep: 210 11.11% 96.47%;
--foreground: 210 6% 21%;
--foreground: 222 84% 5%;

/* Background color for <Card /> */
--card: 0 0% 100%;
Expand All @@ -346,8 +342,12 @@ type BuiltinThemeType =
--popover-foreground: 222.2 84% 4.9%;

/* Muted backgrounds such as <TabsList />, <Skeleton /> and <Switch /> */
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;

/* --muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%; */

--muted: 240 4.8% 95.9%;
--muted-foreground: 240 3.8% 46.1%;

/* 主题颜色 */

Expand Down Expand Up @@ -405,16 +405,16 @@ type BuiltinThemeType =
/* 基本文字大小 */
--font-size-base: 16px;

/* 主体内容背景色 */
--content: 240 11% 96%;

/* =============component & UI============= */

/* menu */
--sidebar: 0 0% 100%;
--sidebar-deep: 210 11.11% 96.47%;
--sidebar-deep: 0 0% 100%;
--menu: var(--sidebar);

/* header */
--header: 0 0% 100%;

accent-color: var(--primary);
color-scheme: light;
}
Expand Down Expand Up @@ -719,8 +719,13 @@ type BuiltinThemeType =
--popover-foreground: 210 40% 98%;

/* Muted backgrounds such as <TabsList />, <Skeleton /> and <Switch /> */
--muted: 220deg 6.82% 17.25%;
--muted-foreground: 215 20.2% 65.1%;

/* --muted: 220deg 6.82% 17.25%; */

/* --muted-foreground: 215 20.2% 65.1%; */

--muted: 240 3.7% 15.9%;
--muted-foreground: 240 5% 64.9%;

/* 主题颜色 */

Expand All @@ -747,16 +752,16 @@ type BuiltinThemeType =
--secondary-foreground: 0 0% 98%;

/* Used for accents such as hover effects on <DropdownMenuItem>, <SelectItem>...etc */
--accent: 0deg 0% 100% / 8%;
--accent-hover: 0deg 0% 100% / 12%;
--accent: 216 5% 19%;
--accent-hover: 216 5% 24%;
--accent-foreground: 0 0% 98%;

/* Darker color */
--heavy: 0deg 0% 100% / 12%;
--heavy: 216 5% 24%;
--heavy-foreground: var(--accent-foreground);

/* Default border color */
--border: 240 3.7% 15.9%;
--border: 240 3.7% 22%;

/* Border color for inputs such as <Input />, <Select />, <Textarea /> */
--input: 0deg 0% 100% / 10%;
Expand All @@ -777,15 +782,15 @@ type BuiltinThemeType =
/* 基本文字大小 */
--font-size-base: 16px;

/* 主体内容背景色 */
--content: 240 11% 96%;

/* =============component & UI============= */

--sidebar: 222.34deg 10.43% 12.27%;
--sidebar-deep: 220deg 13.06% 9%;
--menu: var(--sidebar);

/* header */
--header: 222.34deg 10.43% 12.27%;

color-scheme: dark;
}

Expand All @@ -812,6 +817,7 @@ type BuiltinThemeType =
--ring: 263.4 70% 50.4%;
--sidebar: 224 71.4% 4.1%;
--sidebar-deep: 224 71.4% 4.1%;
--header: 224 71.4% 4.1%;
}

.dark[data-theme='pink'],
Expand All @@ -837,6 +843,7 @@ type BuiltinThemeType =
--ring: 346.8 77.2% 49.8%;
--sidebar: 20 14.3% 4.1%;
--sidebar-deep: 20 14.3% 4.1%;
--header: 20 14.3% 4.1%;
}

.dark[data-theme='rose'],
Expand All @@ -862,6 +869,7 @@ type BuiltinThemeType =
--ring: 0 72.2% 50.6%;
--sidebar: 0 0% 3.9%;
--sidebar-deep: 0 0% 3.9%;
--header: 0 0% 3.9%;
}

.dark[data-theme='sky-blue'],
Expand All @@ -887,6 +895,7 @@ type BuiltinThemeType =
--ring: 224.3 76.3% 48%;
--sidebar: 222.2 84% 4.9%;
--sidebar-deep: 222.2 84% 4.9%;
--header: 222.2 84% 4.9%;
}

.dark[data-theme='deep-blue'],
Expand All @@ -912,6 +921,7 @@ type BuiltinThemeType =
--ring: 224.3 76.3% 48%;
--sidebar: 222.2 84% 4.9%;
--sidebar-deep: 222.2 84% 4.9%;
--header: 222.2 84% 4.9%;
}

.dark[data-theme='green'],
Expand All @@ -937,6 +947,7 @@ type BuiltinThemeType =
--ring: 142.4 71.8% 29.2%;
--sidebar: 20 14.3% 4.1%;
--sidebar-deep: 20 14.3% 4.1%;
--header: 20 14.3% 4.1%;
}

.dark[data-theme='deep-green'],
Expand All @@ -962,6 +973,7 @@ type BuiltinThemeType =
--ring: 142.4 71.8% 29.2%;
--sidebar: 20 14.3% 4.1%;
--sidebar-deep: 20 14.3% 4.1%;
--header: 20 14.3% 4.1%;
}

.dark[data-theme='orange'],
Expand All @@ -987,6 +999,7 @@ type BuiltinThemeType =
--ring: 20.5 90.2% 48.2%;
--sidebar: 20 14.3% 4.1%;
--sidebar-deep: 20 14.3% 4.1%;
--header: 20 14.3% 4.1%;
}

.dark[data-theme='yellow'],
Expand All @@ -1012,6 +1025,7 @@ type BuiltinThemeType =
--ring: 35.5 91.7% 32.9%;
--sidebar: 20 14.3% 4.1%;
--sidebar-deep: 20 14.3% 4.1%;
--header: 20 14.3% 4.1%;
}

.dark[data-theme='zinc'],
Expand All @@ -1037,6 +1051,7 @@ type BuiltinThemeType =
--ring: 240 4.9% 83.9%;
--sidebar: 240 10% 3.9%;
--sidebar-deep: 240 10% 3.9%;
--header: 240 4.9% 83.9%;
}

.dark[data-theme='neutral'],
Expand All @@ -1062,6 +1077,7 @@ type BuiltinThemeType =
--ring: 0 0% 83.1%;
--sidebar: 0 0% 3.9%;
--sidebar-deep: 0 0% 3.9%;
--header: 0 0% 3.9%;
}

.dark[data-theme='slate'],
Expand All @@ -1087,6 +1103,7 @@ type BuiltinThemeType =
--ring: 212.7 26.8% 83.9;
--sidebar: 222.2 84% 4.9%;
--sidebar-deep: 222.2 84% 4.9%;
--header: 222.2 84% 4.9%;
}

.dark[data-theme='gray'],
Expand All @@ -1112,6 +1129,7 @@ type BuiltinThemeType =
--ring: 216 12.2% 83.9%;
--sidebar: 224 71.4% 4.1%;
--sidebar-deep: 224 71.4% 4.1%;
--header: 224 71.4% 4.1%;
}
```

Expand Down Expand Up @@ -1200,6 +1218,50 @@ export const overridesPreferences = defineOverridesPreferences({
});
```

## 自定义侧边栏颜色

侧边栏颜色通过`--sidebar`变量来配置

### 默认主题下:

```css
:root {
--sidebar: 0 0% 100%;
}
```

### 黑暗模式下

```css
.dark,
.dark[data-theme='custom'],
.dark[data-theme='default'] {
--sidebar: 222.34deg 10.43% 12.27%;
}
```

## 自定义顶栏颜色

侧边栏颜色通过`--header`变量来配置

### 默认主题下:

```css
:root {
--header: 0 0% 100%;
}
```

### 黑暗模式下

```css
.dark,
.dark[data-theme='custom'],
.dark[data-theme='default'] {
--header: 222.34deg 10.43% 12.27%;
}
```

## 色弱模式

一般用于特殊场景,将设置为色弱模式,你可以在`preferences.ts`中进行配置:
Expand Down
3 changes: 3 additions & 0 deletions internal/tailwind-config/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ const customColors = {
...createColorsPalette('green'),
foreground: 'hsl(var(--success-foreground))',
},
header: {
DEFAULT: 'hsl(var(--header))',
},
heavy: {
DEFAULT: 'hsl(var(--heavy))',
foreground: 'hsl(var(--heavy-foreground))',
Expand Down
Loading

0 comments on commit ec19a44

Please sign in to comment.