fix: raise text-ink/50 contrast to WCAG AA across 8 files
Live Lighthouse audit of /konto found the same class of bug as the prior checkout/cart commit, one shade lighter: text-ink/50 measures 3.08:1 against the cream background, under the 4.5:1 WCAG AA minimum for normal-size text. Grepped for every other use of the same token (login divider, language switcher, sold-out label, admin image-upload status text, admin hint text) and bumped them all to text-ink/70 (5.61:1, same value used in the earlier checkout fix) for one consistent, compliant muted-text shade. Verified: tsc clean, 151/151 tests pass, /konto Lighthouse accessibility 96 -> 100. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
1 parent
0402f7510d
commit
229a1dc435
8 files changed
+10
-10
No files matched your search
@@ -94,7 +94,7 @@ export default async function AdminHarvestEditPage(props: PageProps<"/admin/ernt
|
||||
<input type="checkbox" name="isPublished" defaultChecked={harvest.isPublished} />
|
||||
{t.adminHarvestEditPage.isPublishedLabel}
|
||||
</label>
|
||||
<p className="text-xs text-ink/50">{t.adminHarvestEditPage.isPublishedHint}</p>
|
||||
<p className="text-xs text-ink/70">{t.adminHarvestEditPage.isPublishedHint}</p>
|
||||
<button type="submit" className="bg-forest text-cream px-6 py-2 text-sm">
|
||||
{t.adminHarvestEditPage.save}
|
||||
</button>
|
||||
|
||||
@@ -106,7 +106,7 @@ export default async function AdminInhaltePage(props: PageProps<"/admin/inhalte"
|
||||
<p className="text-sm text-ink/70 mb-2">{label}</p>
|
||||
<div className="grid sm:grid-cols-2 gap-4">
|
||||
<label className="block text-xs">
|
||||
<span className="text-ink/50">{t.adminContentPage.deLabel}</span>
|
||||
<span className="text-ink/70">{t.adminContentPage.deLabel}</span>
|
||||
{isTextarea ? (
|
||||
<textarea
|
||||
name={`de::${def.key}`}
|
||||
@@ -126,7 +126,7 @@ export default async function AdminInhaltePage(props: PageProps<"/admin/inhalte"
|
||||
)}
|
||||
</label>
|
||||
<label className="block text-xs">
|
||||
<span className="text-ink/50">{t.adminContentPage.enLabel}</span>
|
||||
<span className="text-ink/70">{t.adminContentPage.enLabel}</span>
|
||||
{isTextarea ? (
|
||||
<textarea
|
||||
name={`en::${def.key}`}
|
||||
|
||||
@@ -81,7 +81,7 @@ export default async function KontoPage(props: PageProps<"/konto">) {
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div className="mt-10 flex items-center gap-4 text-xs text-ink/50">
|
||||
<div className="mt-10 flex items-center gap-4 text-xs text-ink/70">
|
||||
<span className="h-px flex-1 bg-ink/10" />
|
||||
{t.account.ssoDivider}
|
||||
<span className="h-px flex-1 bg-ink/10" />
|
||||
|
||||
@@ -44,7 +44,7 @@ export default async function NewsletterBestaetigtPage(props: PageProps<"/newsle
|
||||
{t.newsletterBestaetigtPage.discountText(NEWSLETTER_DISCOUNT_PERCENT)}{" "}
|
||||
<span className="font-medium">{NEWSLETTER_DISCOUNT_CODE}</span>
|
||||
</p>
|
||||
<p className="mt-2 text-xs text-ink/50">{t.newsletterBestaetigtPage.discountCopyHint}</p>
|
||||
<p className="mt-2 text-xs text-ink/70">{t.newsletterBestaetigtPage.discountCopyHint}</p>
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
|
||||
@@ -73,14 +73,14 @@ export function AdminImageField({ name, label, initialValue }: AdminImageFieldPr
|
||||
className="block text-xs"
|
||||
/>
|
||||
{status === "uploading" ? (
|
||||
<p className="mt-1 text-xs text-ink/50">{t.adminImageField.uploading}</p>
|
||||
<p className="mt-1 text-xs text-ink/70">{t.adminImageField.uploading}</p>
|
||||
) : null}
|
||||
{status === "error" ? <p className="mt-1 text-xs text-red-700">{errorMessage}</p> : null}
|
||||
{value ? (
|
||||
<button
|
||||
type="button"
|
||||
onClick={() => setValue("")}
|
||||
className="mt-1 text-xs text-ink/50 underline"
|
||||
className="mt-1 text-xs text-ink/70 underline"
|
||||
>
|
||||
{t.adminImageField.remove}
|
||||
</button>
|
||||
|
||||
@@ -91,7 +91,7 @@ export function AdminImageListField({ name, label, initialValues }: AdminImageLi
|
||||
className="block text-xs"
|
||||
/>
|
||||
{status === "uploading" ? (
|
||||
<p className="mt-1 text-xs text-ink/50">{t.adminImageField.uploading}</p>
|
||||
<p className="mt-1 text-xs text-ink/70">{t.adminImageField.uploading}</p>
|
||||
) : null}
|
||||
{status === "error" ? <p className="mt-1 text-xs text-red-700">{errorMessage}</p> : null}
|
||||
</div>
|
||||
|
||||
@@ -38,7 +38,7 @@ export function LanguageSwitcher({ className = "" }: { className?: string }) {
|
||||
aria-current={code === locale}
|
||||
title={localeLabels[code]}
|
||||
className={`uppercase tracking-wide transition-colors disabled:opacity-50 ${
|
||||
code === locale ? "text-forest font-medium" : "text-ink/50 hover:text-forest"
|
||||
code === locale ? "text-forest font-medium" : "text-ink/70 hover:text-forest"
|
||||
}`}
|
||||
>
|
||||
{code}
|
||||
|
||||
@@ -61,7 +61,7 @@ export function StickyAddToCartBar({
|
||||
{justAdded ? t.product.added : t.product.addToCart}
|
||||
</Button>
|
||||
) : (
|
||||
<span className="flex-shrink-0 text-xs tracking-wide-caps text-ink/50">{t.productPage.soldOut}</span>
|
||||
<span className="flex-shrink-0 text-xs tracking-wide-caps text-ink/70">{t.productPage.soldOut}</span>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user