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); + }); });