diff --git a/src/engine/adapters/codex-26.707.css b/src/engine/adapters/codex-26.707.css index 86276a7..6eafe47 100644 --- a/src/engine/adapters/codex-26.707.css +++ b/src/engine/adapters/codex-26.707.css @@ -264,13 +264,21 @@ html.awesome-codex-theme :is(.composer-root, .composer-surface-chrome) { backdrop-filter: blur(24px) saturate(120%); } -html.awesome-codex-theme :is(button[data-testid="composer-send-button"], .composer-send-button) { +html.awesome-codex-theme :is( + button[data-testid="composer-send-button"], + .composer-send-button, + button[data-awesome-codex-composer-control="primary"] +) { color: var(--act-background) !important; background: var(--act-accent) !important; border-color: var(--act-accent-hover) !important; } -html.awesome-codex-theme :is(button[data-testid="composer-send-button"], .composer-send-button):not(:disabled):hover { +html.awesome-codex-theme :is( + button[data-testid="composer-send-button"], + .composer-send-button, + button[data-awesome-codex-composer-control="primary"] +):not(:disabled):hover { background: var(--act-accent-hover) !important; } diff --git a/tests/engine/adapter.test.mjs b/tests/engine/adapter.test.mjs index 352dd1d..92d7a9d 100644 --- a/tests/engine/adapter.test.mjs +++ b/tests/engine/adapter.test.mjs @@ -56,6 +56,15 @@ describe('loadCodexAdapter', () => { ); }); + test('styles the semantic primary composer control with contrasting foreground and background', async () => { + const { css } = await loadCodexAdapter('26.715.31925'); + + expect(css).toContain('button[data-awesome-codex-composer-control="primary"]'); + expect(css).toMatch( + /button\[data-awesome-codex-composer-control="primary"\][^}]*\{[^}]*color:\s*var\(--act-background\)\s*!important;[^}]*background:\s*var\(--act-accent\)\s*!important;/s, + ); + }); + test('uses the shared mapping as a best-effort adapter for every numeric version', async () => { await expect(loadCodexAdapter('26.716.1')).resolves.toEqual( expect.objectContaining({