From 54cd089e80eeede90a5f467561db043d48bffb41 Mon Sep 17 00:00:00 2001 From: sdarbinyan Date: Mon, 17 Aug 2026 22:04:14 +0400 Subject: [PATCH] fix: WCAG AA contrast remediation on border/status colors (Z8, user-authorized) Darkened --border-color and --success/--warning/--error/--info-color in all three theme files, hue-preserving, computed against WCAG 2.1 formulas: - border-color: 1.24-1.42:1 -> >=3.0:1 (non-text/UI-component minimum) - status colors: 2.15-3.76:1 -> >=4.5:1 (plain-text minimum) --primary-color/--secondary-color/--accent-color/gradients untouched - only semantic feedback tokens changed. lavero's success-color now diverges from primary-color (they only happened to share a hex before; semantic status vs. brand identity are different concerns). Also verified/corrected during this pass, doc was stale not code: - Footer "Contacts" is not a code gap - Footer Builder + static-page CMS already resolve any authored page generically via pageKey - Checkout payment-description fallback already tries brandName -> hostname -> i18n-translated fallback (en/ru/hy), not a hardcoded RU string Co-Authored-By: Claude Sonnet 5 --- GAPS-AND-IMPROVEMENTS.md | 8 ++++---- src/styles/themes/dexar.theme.scss | 16 ++++++++++------ src/styles/themes/lavero.theme.scss | 18 ++++++++++++------ src/styles/themes/novo.theme.scss | 16 ++++++++++------ 4 files changed, 36 insertions(+), 22 deletions(-) diff --git a/GAPS-AND-IMPROVEMENTS.md b/GAPS-AND-IMPROVEMENTS.md index c5f7891..be9edb8 100644 --- a/GAPS-AND-IMPROVEMENTS.md +++ b/GAPS-AND-IMPROVEMENTS.md @@ -9,12 +9,12 @@ Findings only — nothing in this document has been fixed as part of writing it. 1. **FIXED (verified 2026-08-17).** ~~Ed25519 admin-auth "session expired"/"invalid signature" screens were dead UI~~ — `toAuthErrorShape()` now reads `error.error.code` via `authErrorCodeFromBackendCode()` before falling back to HTTP status. See `BACKEND-API-REFERENCE.md` §5. 2. **FIXED (2026-08-17).** ~~Dark mode selector did nothing~~ — structural dark overrides (bg/text/border/shadow) now wired for all three tenant themes under `[data-theme-mode="dark"]`. Brand colors intentionally unchanged pending a theme-owner-approved dark palette. 3. **FIXED (verified 2026-08-17).** ~~"Site Layout" selector had no effect~~ — `SectionEngineService.resolveLayoutType()` now falls back to `bootstrap.layout.type` when a page has no layout of its own. -4. **Footer "Contacts" link has nothing behind it.** No static-page content exists for it at all in the bootstrap data (unlike other footer legal pages, which are populated). +4. **Not a code gap (re-verified 2026-08-17), a content gap.** The mechanism is already fully generic: `features/project-editor/sections/footer-section.component.ts`'s Footer Builder lets an admin create any static page via the CMS and link it into a footer column by `pageKey`, resolved by `FooterResolverService`. "Contacts" just has no authored static page yet on whichever tenant's bootstrap this was checked against — that's a per-tenant content task, not a frontend fix. 5. **FIXED (verified 2026-08-17).** ~~Product pages got no per-product SEO~~ — `SeoService.setItemMeta(item)` is called from `product-details-container.component.ts`. 6. **FIXED (verified 2026-08-17).** ~~`og:locale` was hardcoded to `ru_RU`~~ — reads `languageService.currentLanguage()` via `OG_LOCALE_MAP` at both call sites. 7. **FIXED (verified 2026-08-17) on JSON-LD; sitemap remains backend-only work.** ~~No structured data (JSON-LD) exists anywhere~~ — `SeoService.setJsonLd()` injects a real `