fix(footer): name the text token instead of inheriting white

The footer rendered white-on-white — contrast ratio exactly 1.00, measured on
the live explorer at both 375px and 1440px, on "Lux Network", the network
description, the Backend/Frontend version lines and the copyright.

Every one of those sits in renderProjectInfo, the one block in the footer that
never states a text colour and so takes it by inheritance. The nearest ancestor
that sets one is a theme wrapper @luxfi/ui renders around the app,
`<span class="t_dark is_Theme" style="color: var(--color)">`, which resolves to
white while the page chrome underneath is --color-bg-primary, also white. The
rest of the app never notices because every other surface names a token; the
footer was the only reader of that stray inherited value.

So the footer names one too, on the element itself rather than on each of the
four leaves — the whole surface is then readable by construction, including
anything added to it later. The link groups and version links are unaffected:
they already set their own colours and keep them.

Measured after: 4.74 against the light background, 7.11 against dark, nothing
below AA at either viewport. The token is what carries it across both modes.
This commit is contained in:
2026-08-06 11:46:55 -07:00
parent c6e940442e
commit aa85dbfcb6
+6 -2
View File
@@ -152,10 +152,14 @@ const Footer = () => {
// mobile: single column so the network description + link groups wrap inside
// the viewport instead of forcing a 470px column past the 390px edge.
const footerGridCols = 'grid grid-cols-1 lg:grid-cols-[minmax(auto,470px)_1fr]';
// the project info block is the one surface that takes its text colour by
// inheritance, and the enclosing theme wrapper hands it white — unreadable on
// the light --color-bg-primary. Name the token, like every other surface does.
const footerClassName = 'border-t border-[var(--color-border-divider)] text-[var(--color-text-secondary)]';
if (config.UI.footer.links) {
return (
<footer className="border-t border-[var(--color-border-divider)]">
<footer className={ footerClassName }>
<div
className={ `${ footerGridCols } px-4 ${ horizontalPadding } 2xl:px-6 py-4 lg:py-8 mx-auto gap-x-8 lg:gap-x-[100px]` }
style={{ maxWidth: `${ CONTENT_MAX_WIDTH }px` }}
@@ -194,7 +198,7 @@ const Footer = () => {
}
return (
<footer className="border-t border-[var(--color-border-divider)]">
<footer className={ footerClassName }>
<div
className={ `${ footerGridCols } lg:gap-x-[100px] px-4 ${ horizontalPadding } 2xl:px-6 py-4 lg:py-8 mx-auto` }
style={{ maxWidth: `${ CONTENT_MAX_WIDTH }px` }}