fix(ui): 批量替换所有组件中残留的硬编码深色值以彻底支持浅色主题
构建并部署 BYW VoiceHub / 构建并推送容器镜像 (push) Canceled after 0s
构建并部署 BYW VoiceHub / 部署到生产服务器 (push) Canceled after 0s
构建并部署 BYW VoiceHub / Preflight 语法与构建检查 (push) Canceled after 1m27s

This commit is contained in:
2026-09-12 15:56:10 +08:00
parent 8b0934f6f4
commit 9fc5e3e607
42 changed files with 6081 additions and 300 deletions
+25 -25
View File
@@ -1528,7 +1528,7 @@ const getFirstChar = (text) => {
.mobile-top-progress .progress-fill {
height: 100%;
background: #0b5afe;
background: var(--bg-secondary, #0b5afe);
box-shadow: 0 0 8px rgba(11, 90, 254, 0.6);
border-radius: 0 1px 1px 0;
}
@@ -1729,7 +1729,7 @@ const getFirstChar = (text) => {
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: #ffffff;
color: var(--text-primary, #ffffff);
font-size: 18px;
font-weight: 600;
font-family:
@@ -1756,7 +1756,7 @@ const getFirstChar = (text) => {
line-height: 22px;
padding-bottom: 2px;
letter-spacing: -0.4px;
color: #ffffff;
color: var(--text-primary, #ffffff);
font-family:
'SF Pro', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', SimHei, Arial, Helvetica,
sans-serif;
@@ -1776,7 +1776,7 @@ const getFirstChar = (text) => {
overflow: hidden;
line-height: 20px;
letter-spacing: -0.4px;
color: #ffffff75;
color: var(--text-primary, #ffffff)75;
font-family:
'SF Pro', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', SimHei, Arial, Helvetica,
sans-serif;
@@ -1797,7 +1797,7 @@ const getFirstChar = (text) => {
align-items: center;
justify-content: center;
border-radius: 100px;
background: #00000042;
background: var(--bg-primary, #111111)42;
padding: 6px;
width: 32px;
height: 32px;
@@ -1814,7 +1814,7 @@ const getFirstChar = (text) => {
}
.close-icon {
color: #ffffff;
color: var(--text-primary, #ffffff);
font-size: 15px;
line-height: 1;
font-family:
@@ -1851,7 +1851,7 @@ const getFirstChar = (text) => {
display: flex;
flex-shrink: 0;
align-items: center;
border: 1px solid #1a1a1a;
border: 1px solid var(--border-secondary, #1a1a1a);
border-radius: 7px;
height: 8px;
width: 100%;
@@ -1864,14 +1864,14 @@ const getFirstChar = (text) => {
}
.ios-progress-bar:hover {
border-color: #333;
border-color: var(--border-secondary, #333);
box-shadow:
0 0 20px rgba(255, 255, 255, 0.1),
inset 0 1px 0 rgba(255, 255, 255, 0.1);
}
.progress-fill {
background: linear-gradient(90deg, #ffffffb2, #ffffff);
background: linear-gradient(90deg, var(--card-bg, #ffffff)b2, #ffffff);
height: 8px;
transition: width 0.1s linear;
border-radius: 7px;
@@ -1916,7 +1916,7 @@ const getFirstChar = (text) => {
}
.clickable-time:hover {
color: #ffffff;
color: var(--text-primary, #ffffff);
transform: scale(1.05);
}
@@ -1931,10 +1931,10 @@ const getFirstChar = (text) => {
display: flex;
align-items: center;
justify-content: center;
background: #ffffff1a;
background: var(--card-bg, #ffffff)1a;
border-radius: 4px;
padding: 0 8px;
color: #ffffffb3;
color: var(--text-primary, #ffffff)b3;
font-size: 10px;
font-weight: 600;
backdrop-filter: blur(10px);
@@ -1944,8 +1944,8 @@ const getFirstChar = (text) => {
}
.audio-quality-badge:hover {
background: #ffffff26;
color: #ffffff;
background: var(--card-bg, #ffffff)26;
color: var(--text-primary, #ffffff);
}
/* 控制按钮区域 */
@@ -1962,7 +1962,7 @@ const getFirstChar = (text) => {
.ios-control-btn {
background: none;
border: none;
color: #ffffff92;
color: var(--text-primary, #ffffff)92;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94);
display: flex;
@@ -1997,7 +1997,7 @@ const getFirstChar = (text) => {
}
.ios-control-btn:hover {
color: #ffffff;
color: var(--text-primary, #ffffff);
transform: scale(1.1);
box-shadow:
0 0 20px rgba(255, 255, 255, 0.2),
@@ -2196,7 +2196,7 @@ const getFirstChar = (text) => {
width: 60px;
line-height: 18px;
letter-spacing: 0.42px;
color: #ffffffb3;
color: var(--text-primary, #ffffff)b3;
font-family:
'SF Pro', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', SimHei, Arial, Helvetica,
sans-serif;
@@ -2215,10 +2215,10 @@ const getFirstChar = (text) => {
display: flex;
align-items: center;
justify-content: center;
background: #ffffff1a;
background: var(--card-bg, #ffffff)1a;
border-radius: 4px;
padding: 0 8px;
color: #ffffffb3;
color: var(--text-primary, #ffffff)b3;
font-size: 10px;
font-weight: 600;
backdrop-filter: blur(10px);
@@ -2228,8 +2228,8 @@ const getFirstChar = (text) => {
}
.audio-quality:hover {
background: #ffffff26;
color: #ffffff;
background: var(--card-bg, #ffffff)26;
color: var(--text-primary, #ffffff);
}
.audio-quality:active {
@@ -2251,13 +2251,13 @@ const getFirstChar = (text) => {
width: 39px;
font-size: 25px;
text-align: center;
color: #ffffff92;
color: var(--text-primary, #ffffff)92;
cursor: pointer;
transition: all 0.2s ease;
}
.lyrics-btn:hover {
color: #ffffff;
color: var(--text-primary, #ffffff);
transform: scale(1.1);
}
@@ -2265,7 +2265,7 @@ const getFirstChar = (text) => {
.control-btn {
line-height: 1;
font-size: 24px;
color: #ffffff;
color: var(--text-primary, #ffffff);
cursor: pointer;
transition: all 0.2s ease;
display: flex;
@@ -2290,7 +2290,7 @@ const getFirstChar = (text) => {
.play-pause-btn {
line-height: 44px;
font-size: 37px;
color: #ffffff;
color: var(--text-primary, #ffffff);
cursor: pointer;
transition: all 0.2s ease;
display: flex;
+1 -1
View File
@@ -216,7 +216,7 @@ onUnmounted(() => {
background: transparent;
}
.custom-scrollbar::-webkit-scrollbar-thumb {
background: #27272a;
background: var(--bg-tertiary, #27272a);
border-radius: 10px;
}
.custom-scrollbar::-webkit-scrollbar-thumb:hover {
+9 -9
View File
@@ -1136,7 +1136,7 @@ onUnmounted(() => {
.default-cover {
width: 100%;
height: 100%;
background: linear-gradient(135deg, #333, #555);
background: linear-gradient(135deg, var(--bg-quaternary, #333333), #555);
display: flex;
align-items: center;
justify-content: center;
@@ -1152,7 +1152,7 @@ onUnmounted(() => {
font-size: 2.2rem;
font-weight: 700;
margin: 0 0 0.5rem 0;
color: #ffffff;
color: var(--text-primary, #ffffff);
line-height: 1.2;
letter-spacing: -0.02em;
white-space: normal;
@@ -1246,7 +1246,7 @@ onUnmounted(() => {
.progress-fill {
height: 100%;
background: #ffffff;
background: var(--card-bg, #ffffff);
border-radius: 3px;
pointer-events: none;
}
@@ -1256,7 +1256,7 @@ onUnmounted(() => {
top: 50%;
width: 14px;
height: 14px;
background: #ffffff;
background: var(--card-bg, #ffffff);
border-radius: 50%;
transform: translate(-50%, -50%) scale(0);
transition: transform 0.1s ease;
@@ -1306,7 +1306,7 @@ onUnmounted(() => {
.secondary-btn.active {
opacity: 1;
color: #ffffff;
color: var(--text-primary, #ffffff);
text-shadow: 0 0 8px rgba(255, 255, 255, 0.4);
}
@@ -1472,7 +1472,7 @@ onUnmounted(() => {
width: 100%;
text-align: center;
background: transparent;
color: #333; /* 深色文字 */
color: var(--text-quaternary, #333333); /* 深色文字 */
padding: 8px 12px; /* 减小内边距 */
border-radius: 8px;
font-size: 0.85rem; /* 稍微减小字体 */
@@ -1490,7 +1490,7 @@ onUnmounted(() => {
.badge-quality-option.active {
color: #007aff; /* 蓝色字 */
background: #ffffff;
background: var(--card-bg, #ffffff);
font-weight: 600;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}
@@ -1522,7 +1522,7 @@ onUnmounted(() => {
width: 20px;
height: 5px;
border-radius: 3px;
background: #ffffff;
background: var(--card-bg, #ffffff);
box-shadow: 0 0 10px rgba(255, 255, 255, 0.3);
}
@@ -1759,7 +1759,7 @@ onUnmounted(() => {
}
.progress-fill {
background: #ffffff;
background: var(--card-bg, #ffffff);
}
.progress-thumb {
+6 -6
View File
@@ -70,8 +70,8 @@ defineEmits(['close'])
padding: 16px;
border-radius: 8px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
background: #21242d;
color: #ffffff;
background: var(--bg-tertiary, #21242d);
color: var(--text-primary, #ffffff);
max-width: 400px;
min-width: 300px;
font-family: 'MiSans', sans-serif;
@@ -79,7 +79,7 @@ defineEmits(['close'])
}
.notification.success {
border-left: 4px solid #10b981;
border-left: 4px solid var(--border-secondary, #10b981);
}
.notification.error {
@@ -140,7 +140,7 @@ defineEmits(['close'])
}
.notification-close:hover {
color: #ffffff;
color: var(--text-primary, #ffffff);
}
/* 进度条 */
@@ -161,7 +161,7 @@ defineEmits(['close'])
}
.success .notification-progress-bar {
background-color: #10b981;
background-color: var(--bg-secondary, #10b981);
}
.error .notification-progress-bar {
@@ -169,7 +169,7 @@ defineEmits(['close'])
}
.info .notification-progress-bar {
background-color: #0b5afe;
background-color: var(--bg-secondary, #0b5afe);
}
@keyframes progress-shrink {
+6 -6
View File
@@ -82,8 +82,8 @@ onMounted(() => {
padding: 16px;
border-radius: 8px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
background: #21242d;
color: #ffffff;
background: var(--bg-tertiary, #21242d);
color: var(--text-primary, #ffffff);
max-width: 400px;
min-width: 300px;
font-family: 'MiSans', sans-serif;
@@ -94,7 +94,7 @@ onMounted(() => {
}
.notification-item.success {
border-left: 4px solid #10b981;
border-left: 4px solid var(--border-secondary, #10b981);
}
.notification-item.error {
@@ -158,7 +158,7 @@ onMounted(() => {
}
.notification-close:hover {
color: #ffffff;
color: var(--text-primary, #ffffff);
}
/* 进度条 */
@@ -179,7 +179,7 @@ onMounted(() => {
}
.success .notification-progress-bar {
background-color: #10b981;
background-color: var(--bg-secondary, #10b981);
}
.error .notification-progress-bar {
@@ -187,7 +187,7 @@ onMounted(() => {
}
.info .notification-progress-bar {
background-color: #0b5afe;
background-color: var(--bg-secondary, #0b5afe);
}
@keyframes progress-shrink {