Skip to content

fix(#2839): white hero text for themed App Space banners - #2840

Merged
jung-thomas merged 1 commit into
DEVfrom
fix/2839-appspace-joule-hero-contrast
Oct 19, 2026
Merged

jung-thomas merged 1 commit into
DEVfrom
fix/2839-appspace-joule-hero-contrast

Conversation

@jung-thomas

Copy link
Copy Markdown
Contributor

Problem

Closes #2839 (reported by @qmacro). The App Space overview hero at /app-space/?theme=joule (and ?theme=sapphire) is hard to read in light mode: the banner text renders dark on the purple/blue gradient.

Root cause

The base .hero rule sets color: var(--sapShell_TextColor, #fff). The themed variants override the hero background to a dark gradient but never the text colour, so in the Horizon light theme the text inherits --sapShell_TextColor ≈ #223548 (dark) over a dark gradient → poor contrast.

Fix

Pin the themed hero (Joule + Sapphire) and its loading skeleton to white, independent of the active Horizon palette. All four gradients (joule/sapphire × light/dark) are dark, so white is correct in every case.

.app-space[data-theme="joule"] .hero,
.app-space[data-theme="sapphire"] .hero { color: #fff; }

Verification

Tom's #1 rule — tested the actual rendered component via a vite dev-server harness forcing the Horizon light token + ?theme=joule:

State hero color
light + joule, with fix rgb(255,255,255) ✓
light + joule, fix rule removed rgb(34,53,72) (the reported dark text)
dark + joule rgb(255,255,255) ✓ (no regression)

Pure CSS, scoped to the themed App Space hero. No API, no behaviour change.

Note: the 5 existing src/app-space/__tests__ vitest specs fail on the pristine origin/DEV baseline too (stale fetch/loading-state stubs) — unrelated to this change.

The Joule/Sapphire App Space hero gradients are dark in both light and
dark mode, but the base .hero only inherited --sapShell_TextColor, which
resolves to a dark value under the Horizon light theme. That left the
banner text near-illegible on the purple gradient
(/app-space/?theme=joule in light mode, reported by DJ Adams).

Pin the themed hero (and its loading skeleton) to white regardless of the
active Horizon palette. Verified via vite dev harness: hero text is
rgb(255,255,255) with the fix and rgb(34,53,72) without, in light+joule;
dark mode unchanged.
@jung-thomas
jung-thomas merged commit a46d36b into DEV Oct 19, 2026
5 checks passed
@jung-thomas
jung-thomas deleted the fix/2839-appspace-joule-hero-contrast branch October 19, 2026 11:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant