From 59e12b0867d56c0e4dc77cef586054a983c82305 Mon Sep 17 00:00:00 2001 From: Syngnat Date: Mon, 29 Jun 2026 13:38:07 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(ui):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=8D=B1=E9=99=A9=E4=B8=BB=E6=8C=89=E9=92=AE=E6=96=87=E5=AD=97?= =?UTF-8?q?=E5=AF=B9=E6=AF=94=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/v2-theme.css | 16 ++++++++++++++++ frontend/src/v2ThemeModalConfirm.test.ts | 6 ++++++ 2 files changed, 22 insertions(+) diff --git a/frontend/src/v2-theme.css b/frontend/src/v2-theme.css index cfec1bed..c36eff6d 100644 --- a/frontend/src/v2-theme.css +++ b/frontend/src/v2-theme.css @@ -51,6 +51,8 @@ body[data-ui-version="v2"][data-theme="light"] { --gn-warn: #d97706; --gn-warn-soft: rgba(245, 158, 11, 0.14); --gn-danger: #dc2626; + --gn-danger-strong: #dc2626; + --gn-danger-strong-hover: #b91c1c; --gn-shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.05); --gn-shadow-md: 0 4px 14px rgba(15, 23, 42, 0.08); @@ -93,6 +95,8 @@ body[data-ui-version="v2"][data-theme="dark"] { --gn-warn: #f59e0b; --gn-warn-soft: rgba(245, 158, 11, 0.16); --gn-danger: #f87171; + --gn-danger-strong: #dc2626; + --gn-danger-strong-hover: #b91c1c; --gn-shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4); --gn-shadow-md: 0 4px 14px rgba(0, 0, 0, 0.45); @@ -293,6 +297,18 @@ body[data-ui-version="v2"] .ant-btn-dangerous { color: var(--gn-danger) !important; } +body[data-ui-version="v2"] .ant-btn-primary.ant-btn-dangerous:not(:disabled):not(.ant-btn-disabled) { + background: var(--gn-danger-strong) !important; + border-color: var(--gn-danger-strong) !important; + color: #fff !important; +} + +body[data-ui-version="v2"] .ant-btn-primary.ant-btn-dangerous:not(:disabled):not(.ant-btn-disabled):hover { + background: var(--gn-danger-strong-hover) !important; + border-color: var(--gn-danger-strong-hover) !important; + color: #fff !important; +} + body[data-ui-version="v2"] .ant-btn-link { color: var(--gn-info) !important; } diff --git a/frontend/src/v2ThemeModalConfirm.test.ts b/frontend/src/v2ThemeModalConfirm.test.ts index a26dd57e..3390aa60 100644 --- a/frontend/src/v2ThemeModalConfirm.test.ts +++ b/frontend/src/v2ThemeModalConfirm.test.ts @@ -8,4 +8,10 @@ describe('v2 modal confirm theme', () => { expect(v2ThemeCss).toMatch(/body\[data-ui-version="v2"\]\s+\.ant-modal-confirm\s+\.ant-modal-confirm-title\s*\{[^}]*color:\s*var\(--gn-fg-1\)\s*!important;/s); expect(v2ThemeCss).toMatch(/body\[data-ui-version="v2"\]\s+\.ant-modal-confirm\s+\.ant-modal-confirm-content\s*\{[^}]*color:\s*var\(--gn-fg-2\)\s*!important;/s); }); + + it('keeps primary danger buttons high contrast in confirm dialogs', () => { + expect(v2ThemeCss).toMatch(/--gn-danger-strong:\s*#dc2626;/); + expect(v2ThemeCss).toMatch(/body\[data-ui-version="v2"\]\s+\.ant-btn-primary\.ant-btn-dangerous:not\(:disabled\):not\(\.ant-btn-disabled\)\s*\{[^}]*background:\s*var\(--gn-danger-strong\)\s*!important;[^}]*border-color:\s*var\(--gn-danger-strong\)\s*!important;[^}]*color:\s*#fff\s*!important;/s); + expect(v2ThemeCss).toMatch(/body\[data-ui-version="v2"\]\s+\.ant-btn-primary\.ant-btn-dangerous:not\(:disabled\):not\(\.ant-btn-disabled\):hover\s*\{[^}]*background:\s*var\(--gn-danger-strong-hover\)\s*!important;[^}]*color:\s*#fff\s*!important;/s); + }); });