From 8f40d5107cf6ef9b2a2f884b94d4ed93ae9e7a2e Mon Sep 17 00:00:00 2001 From: Vben Date: Wed, 14 Aug 2024 21:47:37 +0800 Subject: [PATCH] feat: support custom background colors for sidebar and header (#4151) * feat: support custom background colors for sidebar and header * fix: type error --- apps/backend-mock/README.md | 2 +- docs/src/guide/essentials/settings.md | 3 + docs/src/guide/in-depth/theme.md | 110 ++++++++++++++---- internal/tailwind-config/src/index.ts | 3 + .../design/src/design-tokens/dark/index.css | 19 ++- .../src/design-tokens/default/index.css | 8 +- packages/@core/preferences/src/config.ts | 1 + packages/@core/preferences/src/types.ts | 2 + .../src/components/layout-header.vue | 7 +- .../@core/ui-kit/layout-ui/src/vben-layout.ts | 5 +- .../ui-kit/layout-ui/src/vben-layout.vue | 1 + .../ui-kit/menu-ui/src/components/menu.vue | 2 +- .../ui/hover-card/HoverCardContent.vue | 4 +- .../src/components/tabs-chrome/tabs.vue | 2 +- packages/effects/layouts/src/basic/layout.vue | 14 ++- .../preferences/blocks/theme/theme.vue | 8 +- .../widgets/preferences/preferences-sheet.vue | 2 + packages/locales/src/langs/en-US.json | 1 + packages/locales/src/langs/zh-CN.json | 1 + 19 files changed, 148 insertions(+), 47 deletions(-) diff --git a/apps/backend-mock/README.md b/apps/backend-mock/README.md index d303352e..d7cfa53f 100644 --- a/apps/backend-mock/README.md +++ b/apps/backend-mock/README.md @@ -2,7 +2,7 @@ ## Description -Vben Admin 数据 mock 服务,没有对接任何的数据库,所有数据都是模拟的,用于前端开发时提供数据支持。由于 sqlite 安装需要在本地进行编译,所以这里接口是直接返回的。线上环境不再提供mock集成,可自行部署服务或者对接真实数据,同步 mock.js等工具有一些限制,比如上传文件不行、无法模拟复杂的逻辑等,所以这里使用了 真是的后端服务来实现。唯一麻烦的是本地需要同时启动后端服务和前端服务,但是这样可以更好的模拟真实环境。 +Vben Admin 数据 mock 服务,没有对接任何的数据库,所有数据都是模拟的,用于前端开发时提供数据支持。线上环境不再提供mock集成,可自行部署服务或者对接真实数据,mock.js 等工具有一些限制,比如上传文件不行、无法模拟复杂的逻辑等,所以这里使用了真实的后端服务来实现。唯一麻烦的是本地需要同时启动后端服务和前端服务,但是这样可以更好的模拟真实环境。 ## Running the app diff --git a/docs/src/guide/essentials/settings.md b/docs/src/guide/essentials/settings.md index 253a8a4d..0c46ad72 100644 --- a/docs/src/guide/essentials/settings.md +++ b/docs/src/guide/essentials/settings.md @@ -260,6 +260,7 @@ const defaultPreferences: Preferences = { colorWarning: 'hsl(42 84% 61%)', mode: 'dark', radius: '0.5', + semiDarkHeader: false, semiDarkMenu: true, }, transition: { @@ -452,6 +453,8 @@ interface ThemePreferences { mode: ThemeModeType; /** 圆角 */ radius: string; + /** 是否开启半深色header(只在theme='light'时生效) */ + semiDarkHeader: boolean; /** 是否开启半深色菜单(只在theme='light'时生效) */ semiDarkMenu: boolean; } diff --git a/docs/src/guide/in-depth/theme.md b/docs/src/guide/in-depth/theme.md index 83aafa23..1976cee6 100644 --- a/docs/src/guide/in-depth/theme.md +++ b/docs/src/guide/in-depth/theme.md @@ -107,9 +107,6 @@ css 变量内的颜色,必须使用 `hsl` 格式,如 `0 0% 100%`,不需要 /* 基本文字大小 */ --font-size-base: 16px; - /* 主体内容背景色 */ - --content: 240 11% 96%; - /* =============component & UI============= */ /* menu */ @@ -117,6 +114,9 @@ css 变量内的颜色,必须使用 `hsl` 格式,如 `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; } @@ -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; } @@ -228,7 +226,6 @@ css 变量内的颜色,必须使用 `hsl` 格式,如 `0 0% 100%`,不需要 ### 默认主题下: ```css -/* */ :root { /* Background color for */ --card: 0 0% 30%; @@ -238,7 +235,6 @@ css 变量内的颜色,必须使用 `hsl` 格式,如 `0 0% 100%`,不需要 ### 黑暗模式下 ```css -/* */ .dark, .dark[data-theme='custom'], .dark[data-theme='default'] { @@ -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: 0 0% 100%; @@ -346,8 +342,12 @@ type BuiltinThemeType = --popover-foreground: 222.2 84% 4.9%; /* Muted backgrounds such as , and */ - --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%; /* 主题颜色 */ @@ -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; } @@ -719,8 +719,13 @@ type BuiltinThemeType = --popover-foreground: 210 40% 98%; /* Muted backgrounds such as , and */ - --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%; /* 主题颜色 */ @@ -747,16 +752,16 @@ type BuiltinThemeType = --secondary-foreground: 0 0% 98%; /* Used for accents such as hover effects on , ...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 ,