diff --git a/frontend/assets/css/chat.css b/frontend/assets/css/chat.css index 862f9b2..e154e99 100644 --- a/frontend/assets/css/chat.css +++ b/frontend/assets/css/chat.css @@ -24,7 +24,7 @@ .wechat-link-card.wechat-link-card--disabled:hover, .wechat-link-card-cover.wechat-link-card--disabled:hover { - background: #fff; + background: var(--merged-history-bg); } /* 滚动条样式 */ @@ -704,7 +704,7 @@ /* 文件消息样式 - 基于红包样式覆盖 */ .wechat-file-card { width: 210px; - background: #fff; + background: var(--merged-history-bg); cursor: pointer; transition: background-color 0.15s ease; } @@ -728,11 +728,11 @@ left: 13px; right: 13px; height: 1.5px; - background: #e8e8e8; + background: var(--merged-history-divider); } .wechat-file-card:hover { - background: #f5f5f5; + background: var(--merged-history-hover); } .wechat-file-card .wechat-file-info { @@ -742,7 +742,7 @@ .wechat-file-name { font-size: 14px; - color: #1a1a1a; + color: var(--merged-history-title); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; @@ -753,7 +753,7 @@ .wechat-file-size { font-size: 12px; - color: #b2b2b2; + color: var(--merged-history-footer); margin-top: 4px; } @@ -765,12 +765,16 @@ } .wechat-file-bottom { - border-top: 1px solid #e8e8e8; + border-top: 1px solid var(--merged-history-divider); } .wechat-file-bottom span { font-size: 12px; - color: #b2b2b2; + color: var(--merged-history-footer); +} + +.wechat-file-card :is(.text-gray-500, .text-gray-400) { + color: var(--merged-history-preview); } .wechat-file-logo { @@ -785,7 +789,7 @@ width: 210px; min-width: 210px; max-width: 210px; - background: #fff; + background: var(--merged-history-bg); display: flex; flex-direction: column; box-sizing: border-box; @@ -798,7 +802,7 @@ } .wechat-link-card:hover { - background: #f5f5f5; + background: var(--merged-history-hover); } .wechat-link-content { @@ -819,7 +823,7 @@ .wechat-link-title { font-size: 14px; - color: #1a1a1a; + color: var(--merged-history-title); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; @@ -830,7 +834,7 @@ .wechat-link-desc { font-size: 12px; - color: #8c8c8c; + color: var(--merged-history-preview); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; @@ -847,7 +851,7 @@ flex: 0 0 auto; border-radius: 0; overflow: hidden; - background: #f2f2f2; + background: var(--app-surface-muted); align-self: flex-start; } @@ -905,7 +909,7 @@ .wechat-link-mini-header-name { font-size: 13px; - color: #7d7d7d; + color: var(--merged-history-preview); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; @@ -916,7 +920,7 @@ .wechat-link-mini-title { font-size: 13px; line-height: 1.45; - color: #1a1a1a; + color: var(--merged-history-title); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; @@ -930,12 +934,12 @@ min-height: 0; flex: 1 1 auto; overflow: hidden; - background: #f2f2f2; + background: var(--app-surface-muted); margin-top: auto; } .wechat-link-mini-preview--empty { - background: #f7f7f7; + background: var(--app-surface-soft); } .wechat-link-mini-preview-img { @@ -964,7 +968,7 @@ left: 12px; right: 12px; height: 1px; - background: #e8e8e8; + background: var(--merged-history-divider); } .wechat-link-mini-footer-icon { @@ -976,7 +980,7 @@ .wechat-link-mini-footer-text { font-size: 10px; - color: #8c8c8c; + color: var(--merged-history-preview); } .wechat-link-from { @@ -996,7 +1000,7 @@ left: 11px; right: 11px; height: 1.5px; - background: #e8e8e8; + background: var(--merged-history-divider); } .wechat-link-from-avatar { @@ -1024,7 +1028,7 @@ .wechat-link-from-name { font-size: 12px; - color: #b2b2b2; + color: var(--merged-history-footer); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; @@ -1035,7 +1039,7 @@ width: 137px; min-width: 137px; max-width: 137px; - background: #fff; + background: var(--merged-history-bg); display: flex; flex-direction: column; box-sizing: border-box; @@ -1048,7 +1052,7 @@ } .wechat-link-card-cover:hover { - background: #f5f5f5; + background: var(--merged-history-hover); } .wechat-link-cover-image-wrap { @@ -1057,7 +1061,7 @@ position: relative; overflow: hidden; border-radius: 4px 4px 0 0; - background: #f2f2f2; + background: var(--app-surface-muted); flex-shrink: 0; } @@ -1126,7 +1130,7 @@ box-sizing: border-box; font-size: 12px; line-height: 1.24; - color: #1a1a1a; + color: var(--merged-history-title); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; diff --git a/frontend/assets/css/tailwind.css b/frontend/assets/css/tailwind.css index edd70fe..70994a1 100644 --- a/frontend/assets/css/tailwind.css +++ b/frontend/assets/css/tailwind.css @@ -1597,6 +1597,154 @@ background-color: var(--search-panel-bg); } + .chat-overlay-dropdown, + .chat-context-menu, + .chat-floating-window, + .chat-edit-modal { + background-color: var(--app-surface-bg); + border: 1px solid var(--app-border); + color: var(--app-text-primary); + box-shadow: 0 20px 48px rgba(15, 23, 42, 0.16); + } + + html[data-theme='dark'] :is(.chat-overlay-dropdown, .chat-context-menu, .chat-floating-window, .chat-edit-modal) { + box-shadow: 0 24px 56px rgba(0, 0, 0, 0.42); + } + + .chat-overlay-dropdown input { + background-color: var(--app-input-bg); + border-color: var(--app-input-border); + color: var(--app-text-primary); + } + + .chat-overlay-dropdown input::placeholder { + color: var(--app-text-muted); + } + + .chat-overlay-dropdown :is(.bg-gray-200, .bg-gray-300), + .chat-floating-window :is(.bg-gray-200, .bg-gray-300) { + background-color: var(--app-border-soft); + } + + .chat-overlay-dropdown :is(.border-gray-100, .border-gray-200, .border-gray-300), + .chat-floating-window :is(.border-gray-100, .border-gray-200, .border-gray-300) { + border-color: var(--app-border); + } + + .chat-overlay-dropdown :is(.text-gray-900, .text-gray-800, .text-gray-700), + .chat-floating-window :is(.text-gray-900, .text-gray-800, .text-gray-700) { + color: var(--app-text-primary); + } + + .chat-overlay-dropdown :is(.text-gray-600, .text-gray-500, .text-gray-400), + .chat-floating-window :is(.text-gray-600, .text-gray-500, .text-gray-400) { + color: var(--app-text-muted); + } + + .chat-overlay-option { + color: var(--app-text-primary); + transition: background-color 0.15s ease; + } + + .chat-overlay-option:hover { + background-color: var(--app-neutral-btn-hover); + } + + .chat-overlay-option--active { + background-color: var(--app-surface-soft); + } + + .chat-overlay-option--active:hover { + background-color: var(--app-neutral-btn-hover); + } + + .chat-context-menu__item { + color: inherit; + transition: background-color 0.15s ease; + } + + .chat-context-menu__item:hover { + background-color: var(--app-neutral-btn-hover); + } + + .chat-context-menu :is(.border-gray-100, .border-gray-200, .border-gray-300) { + border-color: var(--app-border); + } + + .chat-floating-window__header, + .chat-floating-window__body, + .chat-floating-window__row { + background-color: var(--app-surface-soft); + } + + .chat-floating-window__header { + border-bottom: 1px solid var(--app-border); + } + + .chat-floating-window__row { + border-bottom: 1px solid var(--app-border); + } + + .chat-floating-window__title { + color: var(--app-text-primary); + } + + .chat-floating-window__close { + color: var(--app-text-secondary); + transition: background-color 0.15s ease, color 0.15s ease; + } + + .chat-floating-window__close:hover { + background-color: var(--app-neutral-btn-hover); + color: var(--app-text-primary); + } + + .chat-floating-window .bg-white { + background-color: var(--app-surface-bg); + } + + .chat-floating-window .bg-gray-50 { + background-color: var(--app-surface-soft); + } + + .chat-floating-window [class*='hover:bg-gray-50']:hover { + background-color: var(--app-neutral-btn-hover); + } + + .chat-edit-modal :is(.border-gray-100, .border-gray-200, .border-gray-300) { + border-color: var(--app-border); + } + + .chat-edit-modal .bg-white { + background-color: var(--app-surface-bg); + } + + .chat-edit-modal .bg-gray-50 { + background-color: var(--app-surface-soft); + } + + .chat-edit-modal :is(.text-gray-900, .text-gray-800, .text-gray-700) { + color: var(--app-text-primary); + } + + .chat-edit-modal :is(.text-gray-600, .text-gray-500, .text-gray-400) { + color: var(--app-text-muted); + } + + .chat-edit-modal :is(input:not([type='checkbox']):not([type='radio']), textarea, select) { + background-color: var(--app-input-bg); + border-color: var(--app-input-border); + color: var(--app-text-primary); + } + + .chat-edit-modal :is(input:not([type='checkbox']):not([type='radio']), textarea, select)::placeholder { + color: var(--app-text-muted); + } + + .chat-edit-modal [class*='hover:bg-gray-50']:hover { + background-color: var(--app-neutral-btn-hover); + } + .search-input-combined { background-color: var(--search-input-bg); border-color: var(--search-input-border); diff --git a/frontend/components/ChatLocationCard.vue b/frontend/components/ChatLocationCard.vue index 83a77c6..1b9c0d2 100644 --- a/frontend/components/ChatLocationCard.vue +++ b/frontend/components/ChatLocationCard.vue @@ -267,4 +267,10 @@ const openLocation = () => { width: 100%; height: 100%; } + +html[data-theme='dark'] .wechat-location-card-wrap { + --location-card-bg: var(--merged-history-bg); + --location-card-text: var(--merged-history-title); + --location-card-muted: var(--merged-history-preview); +} diff --git a/frontend/components/chat/ChatOverlays.vue b/frontend/components/chat/ChatOverlays.vue index 98f6131..d11d4bc 100644 --- a/frontend/components/chat/ChatOverlays.vue +++ b/frontend/components/chat/ChatOverlays.vue @@ -258,7 +258,7 @@