systemDialog样式微调

This commit is contained in:
fofolee 2025-01-20 20:17:54 +08:00
parent b71f47ec56
commit 79d841e0b4
2 changed files with 51 additions and 103 deletions

View File

@ -15,7 +15,11 @@ const createDialog = (config, customDialogOptions = {}) => {
const platform = os.platform(); const platform = os.platform();
const dialogWidth = const dialogWidth =
platform === "win32" && config.type !== "textarea" ? 370 : 470; config.type === "textarea" || config.type === "select"
? 500
: platform === "win32"
? 370
: 420;
const dialogOptions = { const dialogOptions = {
title: config.title || "对话框", title: config.title || "对话框",

View File

@ -2,18 +2,18 @@
--bg-color: #fff; --bg-color: #fff;
--text-color: #333; --text-color: #333;
--border-color: #ddd; --border-color: #ddd;
--title-bg: #f5f5f5; --mac-title-bg: #f5f5f5;
--input-bg: #fff; --input-bg: #fff;
--input-border: #ddd; --input-border: #ddd;
--input-focus: #0d6efd; --input-focus: #0d6efd;
--button-bg: #0d6efd; --button-bg: #2767cf;
--button-hover: #0b5ed7;
--button-text: #fff; --button-text: #fff;
--cancel-bg: #6c757d; --cancel-bg: #67696B;
--cancel-border: #6c757d; --cancel-border: #67696B;
--mac-close-btn: #ff5f57; --mac-close-btn: #ff5f57;
--win-title-bg: #F9F1EF; --win-title-bg: #F9F1EF;
--win-button-bar-bg: #F0F0F0; --win-button-bar-bg: #F0F0F0;
--win-button-bar-border: #E0E0E0;
--win-button-bg: #fdfdfd; --win-button-bg: #fdfdfd;
--win-button-hover-border: #3C96DB; --win-button-hover-border: #3C96DB;
--win-button-hover-bg: #E0EEF9; --win-button-hover-bg: #E0EEF9;
@ -21,32 +21,34 @@
--mac-close-x: rgba(0, 0, 0, 0.5); --mac-close-x: rgba(0, 0, 0, 0.5);
--win-border: rgba(0, 0, 0, 0.1); --win-border: rgba(0, 0, 0, 0.1);
--win-text: #000; --win-text: #000;
--win-text-dark: #fdfdfd;
--select-item-hover: rgba(13, 110, 253, 0.1); --select-item-hover: rgba(13, 110, 253, 0.1);
--select-item-hover-dark: rgba(13, 110, 253, 0.2);
--select-item-shadow: rgba(0, 0, 0, 0.02); --select-item-shadow: rgba(0, 0, 0, 0.02);
--select-item-shadow-dark: rgba(0, 0, 0, 0.1); --select-item-shadow-dark: rgba(0, 0, 0, 0.1);
--select-description: rgba(0, 0, 0, 0.6); --select-description: rgba(0, 0, 0, 0.6);
--select-description-dark: rgba(255, 255, 255, 0.6);
--highlight-color: #ec3535; --highlight-color: #ec3535;
--wait-btn-hover: #ec3535; --wait-btn-hover: #ec3535;
--scrollbar-thumb: rgba(0, 0, 0, 0.3); --scrollbar-thumb: rgba(0, 0, 0, 0.3);
--scrollbar-thumb-dark: rgba(255, 255, 255, 0.3); --input-box-shadow: rgba(13, 110, 253, 0.25)
} }
:root[data-theme="dark"] { :root[data-theme="dark"] {
--bg-color: #282727; --bg-color: #282727;
--text-color: #e0e0e0; --text-color: #e0e0e0;
--border-color: #404040; --border-color: #404040;
--title-bg: #2d2d2d; --mac-title-bg: #404143;
--input-bg: #2d2d2d; --input-bg: #2d2d2d;
--input-border: #404040; --input-border: #404040;
--cancel-bg: #4a4a4a;
--cancel-border: #4a4a4a;
--win-title-bg: #17040B; --win-title-bg: #17040B;
--win-button-bar-bg: #1C1C1C; --win-button-bar-bg: #1C1C1C;
--win-button-bar-border: #1C1C1C;
--win-button-bg: #353B3A; --win-button-bg: #353B3A;
--content-bg: #191919; --win-button-hover-bg: #495150;
--win-text: #fdfdfd;
--content-bg: #36383A;
--win-content-bg: #191919;
--scrollbar-thumb: rgba(255, 255, 255, 0.3);
--select-item-hover: rgba(13, 110, 253, 0.2);
--select-description: rgba(255, 255, 255, 0.6);
} }
body { body {
@ -74,27 +76,19 @@ body {
} }
::-webkit-scrollbar-thumb { ::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0); background: var(--scrollbar-thumb);
transition: background-color 0.3s; transition: background-color 0.3s;
} }
:root[data-theme="dark"] ::-webkit-scrollbar-thumb {
background: rgba(255, 255, 255, 0);
}
/* 悬浮时显示滚动条 */ /* 悬浮时显示滚动条 */
*:hover::-webkit-scrollbar-thumb { *:hover::-webkit-scrollbar-thumb {
background: var(--scrollbar-thumb); background: var(--scrollbar-thumb);
transition: background-color 0.3s; transition: background-color 0.3s;
} }
:root[data-theme="dark"] *:hover::-webkit-scrollbar-thumb {
background: var(--scrollbar-thumb-dark);
}
/* 标题栏样式 */ /* 标题栏样式 */
.title-bar { .title-bar {
background: var(--title-bg); background: var(--mac-title-bg);
padding: 2px 12px; padding: 2px 12px;
-webkit-app-region: drag; -webkit-app-region: drag;
display: flex; display: flex;
@ -122,7 +116,9 @@ body {
.platform-darwin .title-left, .platform-darwin .title-left,
.platform-linux .title-left { .platform-linux .title-left {
padding-left: 20px; display: flex;
align-items: center;
justify-content: center
} }
/* macOS 和 Linux 样式 */ /* macOS 和 Linux 样式 */
@ -190,14 +186,10 @@ body {
background: var(--win-title-bg); background: var(--win-title-bg);
} }
:root[data-theme="dark"] .platform-win32 .title-bar {
background: #17040B;
}
.platform-win32 .close-btn { .platform-win32 .close-btn {
-webkit-app-region: no-drag; -webkit-app-region: no-drag;
width: 46px; width: 35px;
height: 32px; height: 27px;
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
@ -216,11 +208,6 @@ body {
background-color: var(--win-text); background-color: var(--win-text);
} }
:root[data-theme="dark"] .platform-win32 .close-btn::before,
:root[data-theme="dark"] .platform-win32 .close-btn::after {
background-color: var(--win-text-dark);
}
.platform-win32 .close-btn::before { .platform-win32 .close-btn::before {
transform: rotate(45deg); transform: rotate(45deg);
} }
@ -240,14 +227,10 @@ body {
/* 按钮栏样式 */ /* 按钮栏样式 */
.platform-win32 .button-bar { .platform-win32 .button-bar {
padding: 6px 16px 12px 16px; padding: 6px 16px;
background: var(--win-button-bar-bg); background: var(--win-button-bar-bg);
border-top: 1px solid #e0e0e0; border-top: 1px solid var(--win-button-bar-border);
} height: 24px;
:root[data-theme="dark"] .platform-win32 .button-bar {
background: #1C1C1C;
border-top: 1px solid #1C1C1C;
} }
.container { .container {
@ -257,7 +240,7 @@ body {
} }
.content-wrapper { .content-wrapper {
padding: 16px; padding: 16px 16px 0 16px;
min-height: 60px; min-height: 60px;
max-height: 449px; max-height: 449px;
overflow-y: auto; overflow-y: auto;
@ -265,10 +248,19 @@ body {
flex: 1; flex: 1;
} }
:root[data-theme="dark"] .content-wrapper { .platform-win32 .content-wrapper,
.dialog-buttons .content-wrapper {
padding-bottom: 16px;
}
.content-wrapper {
background: var(--content-bg); background: var(--content-bg);
} }
.platform-win32 .content-wrapper {
background: var(--win-content-bg);
}
/* 选择列表对话框的内容区域padding和高度 */ /* 选择列表对话框的内容区域padding和高度 */
.dialog-select .content-wrapper { .dialog-select .content-wrapper {
padding: 16px 8px; padding: 16px 8px;
@ -285,7 +277,7 @@ body {
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
gap: 8px; gap: 8px;
padding: 0 16px 16px; padding: 16px;
background: var(--content-bg); background: var(--content-bg);
flex-shrink: 0; flex-shrink: 0;
} }
@ -294,31 +286,16 @@ button {
padding: 4px 12px; padding: 4px 12px;
border-radius: 4px; border-radius: 4px;
border: 1px solid var(--button-bg); border: 1px solid var(--button-bg);
background: linear-gradient(180deg, background: var(--button-bg);
rgba(255, 255, 255, 0.08) 0%,
rgba(0, 0, 0, 0.05) 100%),
var(--button-bg);
color: var(--button-text); color: var(--button-text);
cursor: pointer; cursor: pointer;
font-size: 13px; font-size: 13px;
min-width: 70px; min-width: 70px;
transition: all 0.2s ease; transition: all 0.2s ease;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
} }
button:hover { button:hover {
background: linear-gradient(180deg, filter: brightness(1.2);
rgba(255, 255, 255, 0.1) 0%,
rgba(0, 0, 0, 0.05) 100%),
var(--button-hover);
}
button:active {
background: linear-gradient(180deg,
rgba(0, 0, 0, 0.05) 0%,
rgba(255, 255, 255, 0.08) 100%),
var(--button-bg);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
} }
.platform-win32 #ok-btn, .platform-win32 #ok-btn,
@ -332,38 +309,22 @@ button:active {
box-shadow: none; box-shadow: none;
} }
:root[data-theme="dark"] .platform-win32 #ok-btn,
:root[data-theme="dark"] .platform-win32 #cancel-btn {
background: #353B3A;
color: var(--win-text-dark);
}
.platform-win32 #ok-btn:hover, .platform-win32 #ok-btn:hover,
.platform-win32 #cancel-btn:hover { .platform-win32 #cancel-btn:hover {
border: 1px solid var(--win-button-hover-border); border: 1px solid var(--win-button-hover-border);
background-color: var(--win-button-hover-bg); background-color: var(--win-button-hover-bg);
} }
#ok-btn { #ok-btn,
#cancel-btn {
padding: 0 12px; padding: 0 12px;
height: 20px; height: 20px;
width: 78px;
} }
#cancel-btn { #cancel-btn {
padding: 0 12px; background: var(--cancel-bg);
background: linear-gradient(180deg,
rgba(255, 255, 255, 0.08) 0%,
rgba(0, 0, 0, 0.05) 100%),
var(--cancel-bg);
border: 1px solid var(--cancel-border); border: 1px solid var(--cancel-border);
height: 20px;
}
#cancel-btn:hover {
background: linear-gradient(180deg,
rgba(255, 255, 255, 0.2) 0%,
rgba(0, 0, 0, 0.1) 100%),
var(--cancel-bg);
} }
#input-container { #input-container {
@ -393,7 +354,7 @@ button:active {
.input-group input:focus { .input-group input:focus {
border-color: var(--input-focus); border-color: var(--input-focus);
outline: none; outline: none;
box-shadow: 0 0 0 2px rgba(13, 110, 253, 0.25); box-shadow: 0 0 0 2px var(--input-box-shadow);
} }
/* 文本区域样式 */ /* 文本区域样式 */
@ -413,7 +374,7 @@ textarea {
textarea:focus { textarea:focus {
border-color: var(--input-focus); border-color: var(--input-focus);
outline: none; outline: none;
box-shadow: 0 0 0 2px rgba(13, 110, 253, 0.25); box-shadow: 0 0 0 2px var(--input-box-shadow);
} }
/* 按钮组样式 */ /* 按钮组样式 */
@ -475,7 +436,7 @@ textarea:focus {
.filter-input input:focus { .filter-input input:focus {
border-color: var(--input-focus); border-color: var(--input-focus);
outline: none; outline: none;
box-shadow: 0 0 0 2px rgba(13, 110, 253, 0.25); box-shadow: 0 0 0 2px var(--input-box-shadow);
} }
.select-list-container { .select-list-container {
@ -516,25 +477,12 @@ textarea:focus {
filter: brightness(1.05); filter: brightness(1.05);
} }
:root[data-theme="dark"] .select-list:not(.keyboard-nav) .select-item:hover {
background-color: var(--select-item-hover-dark);
}
:root[data-theme="dark"] .select-item.selected {
background-color: var(--select-item-hover-dark);
}
/* 添加选择时的轻微阴影效果 */ /* 添加选择时的轻微阴影效果 */
.select-item.selected, .select-item.selected,
.select-list:not(.keyboard-nav) .select-item:hover { .select-list:not(.keyboard-nav) .select-item:hover {
box-shadow: 0 1px 2px var(--select-item-shadow); box-shadow: 0 1px 2px var(--select-item-shadow);
} }
:root[data-theme="dark"] .select-item.selected,
:root[data-theme="dark"] .select-list:not(.keyboard-nav) .select-item:hover {
box-shadow: 0 1px 2px var(--select-item-shadow-dark);
}
.select-item-icon { .select-item-icon {
width: 34px; width: 34px;
height: 34px; height: 34px;
@ -572,10 +520,6 @@ textarea:focus {
text-overflow: ellipsis; text-overflow: ellipsis;
} }
:root[data-theme="dark"] .select-item-description {
color: var(--select-description-dark);
}
/* 搜索结果高亮样式 */ /* 搜索结果高亮样式 */
.highlight { .highlight {
color: var(--highlight-color); color: var(--highlight-color);