From ed5d955ae7c8042d54662343d10233f42ebafa90 Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sat, 1 Aug 2026 07:51:25 +0800 Subject: [PATCH] fix(glass): align toast bubbles with menu material --- .../__tests__/glassOverlayMaterial.spec.ts | 11 +++++++++++ src/styles/themes/glass.scss | 19 +++++++++++++++++-- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/styles/__tests__/glassOverlayMaterial.spec.ts b/src/styles/__tests__/glassOverlayMaterial.spec.ts index 276084d8..0921f793 100644 --- a/src/styles/__tests__/glassOverlayMaterial.spec.ts +++ b/src/styles/__tests__/glassOverlayMaterial.spec.ts @@ -76,6 +76,17 @@ describe('glass overlay material styles', () => { ) }) + it('reuses the menu overlay material for toast and assistant bubbles', () => { + const styles = readFileSync(resolve(cwd(), 'src/styles/themes/glass.scss'), 'utf8') + + expect(styles).toMatch( + /:where\(\.Vue-Toastification__toast, \.agent-assistant-fab__bubble\)\s*\{[\s\S]*?backdrop-filter:\s*var\(--glass-overlay-backdrop-filter\)\s*!important;[\s\S]*?background-color:\s*var\(--glass-overlay-surface\)\s*!important;/, + ) + expect(styles).toMatch( + /\.agent-assistant-fab__bubbles::before\s*\{[\s\S]*?background-color:\s*var\(--glass-overlay-surface\)\s*!important;/, + ) + }) + it('uses the shared hover-card contract instead of a Dashboard-specific shadow rule', () => { const styles = readFileSync(resolve(cwd(), 'src/styles/themes/glass.scss'), 'utf8') diff --git a/src/styles/themes/glass.scss b/src/styles/themes/glass.scss index f7c5dc8d..b4a824b5 100644 --- a/src/styles/themes/glass.scss +++ b/src/styles/themes/glass.scss @@ -408,7 +408,7 @@ html[data-theme='glass'] { } } - :where(.layout-navbar, .Vue-Toastification__toast) { + .layout-navbar { border-color: var(--glass-border-raised) !important; -webkit-backdrop-filter: var(--glass-raised-backdrop-filter); backdrop-filter: var(--glass-raised-backdrop-filter); @@ -417,6 +417,22 @@ html[data-theme='glass'] { box-shadow: var(--glass-shadow-raised) !important; } + // Toast 与助手气泡属于临时浮层,直接复用菜单材质 token,避免磨砂档出现不同的底色与模糊强度。 + :where(.Vue-Toastification__toast, .agent-assistant-fab__bubble) { + border-color: var(--glass-border-raised) !important; + -webkit-backdrop-filter: var(--glass-overlay-backdrop-filter) !important; + backdrop-filter: var(--glass-overlay-backdrop-filter) !important; + background-color: var(--glass-overlay-surface) !important; + background-image: var(--glass-sheen) !important; + box-shadow: var(--glass-shadow-raised) !important; + } + + // 气泡箭头与主体使用同一菜单表面,避免边缘露出组件默认的不透明底色。 + .agent-assistant-fab__bubbles::before { + background-color: var(--glass-overlay-surface) !important; + background-image: var(--glass-sheen) !important; + } + // 固定浮层、移动底栏与 Vuetify 弹出层共用材质参数,避免各入口出现不同的模糊和底色。 :where(.theme-customizer-panel-host, .agent-assistant-panel, .footer-nav-card) { border-color: var(--glass-border-raised) !important; @@ -586,7 +602,6 @@ html[data-theme='glass'] { --agent-assistant-assistant-bg: var(--glass-surface); } - .agent-assistant-fab__bubble, .nav-button, .compact-fab .v-btn, .global-action-buttons .v-btn {