Skip to content

fix: semantic palette + light mode, mobile nav, site-map single source, motion tokens - #95

Open
Gbangbolaoluwagbemiga wants to merge 2 commits into
FinesseStudioLab:mainfrom
Gbangbolaoluwagbemiga:fix/issues-58-59-62-70
Open

fix: semantic palette + light mode, mobile nav, site-map single source, motion tokens#95
Gbangbolaoluwagbemiga wants to merge 2 commits into
FinesseStudioLab:mainfrom
Gbangbolaoluwagbemiga:fix/issues-58-59-62-70

Conversation

@Gbangbolaoluwagbemiga

Copy link
Copy Markdown

Summary

Details

#62 — Palette / light mode

  • Renamed literals to semantic tokens: --surface, --surface-raised, --text-primary, --text-muted, --border, --ring, --accent, --accent-2
  • Added color-scheme: dark light so browser-rendered UI (form controls, scrollbars, autofill) matches the page
  • Full light palette under @media (prefers-color-scheme: light) — only token values, never component rules
  • Contrast verified in both themes: --text-primary ≥ 16:1, --text-muted ≥ 7:1

#59 — Mobile nav

  • Extracted from layout.tsx into components/site-nav.tsx; layout now imports <SiteNav />
  • Link data sourced from lib/site-map.ts NAV_LINKS — single source
  • Desktop: unchanged flex list; mobile (≤ 767 px): hamburger opens a disclosure panel
  • Focus trapped inside menu while open; Escape and route-change close and return focus to trigger
  • Active route marked aria-current="page" and highlighted visually

#58 — Site-map single source

  • lib/site-map.ts exports ROUTES: Route[] (typed with RouteStatus) and NAV_LINKS
  • components/expected-pages.tsx renders from ROUTES — no hardcoded JSX rows
  • scripts/generate-site-map-md.ts generates docs/SITE_MAP.md
  • .github/workflows/site-map-check.yml fails the PR if SITE_MAP.md is not regenerated after editing the source
  • All statuses corrected to scaffold (every route already exists)

#70 — Motion system

  • Added --motion-duration-fast/base/slow, --motion-easing-*, --motion-transition-base tokens
  • @media (prefers-reduced-motion: reduce) collapses all durations to 0.01ms and cancels animation iteration counts
  • All transition: rules in globals.css and site-nav.tsx now use motion tokens

Test plan

  • Light mode: open in a browser set to prefers-color-scheme: light — all surfaces, text, and accents adapt; no component-level overrides needed
  • Mobile nav: narrow viewport to < 768 px — hamburger appears, links hidden; open/close works; Escape closes; Tab cycles inside menu; link click closes and navigates
  • aria-current="page" set on the active link in both desktop and mobile views
  • npm run gen:site-map produces identical docs/SITE_MAP.md (CI check passes)
  • OS prefers-reduced-motion: reduce — no transitions visible on hover or menu open

Closes #62
Closes #59
Closes #58
Closes #70

Gbangbolaoluwagbemiga and others added 2 commits August 25, 2026 20:33
…e, motion tokens (FinesseStudioLab#58 FinesseStudioLab#59 FinesseStudioLab#62 FinesseStudioLab#70)

Resolves FinesseStudioLab#62 — design-system: rename literals to semantic tokens (--surface,
--surface-raised, --text-primary, --text-muted, --border, --ring, --accent,
--accent-2); add color-scheme: dark light; define full light palette under
@media (prefers-color-scheme: light) — only token values, no component rules.
WCAG AA verified in both themes (--text-primary 16–17:1, --text-muted 7:1+).

Resolves FinesseStudioLab#59 — components: extract SiteNav from layout.tsx into
components/site-nav.tsx; nav links sourced from lib/site-map.ts. Desktop:
flex link list. Mobile (≤767px): hamburger disclosure panel with focus trap,
Escape/route-change close, focus-return to trigger, and aria-current="page"
on the active route.

Closes FinesseStudioLab#58 — components: move route data into lib/site-map.ts (typed Route +
RouteStatus, NAV_LINKS derived export); rewrite components/expected-pages.tsx
to render from that source; add scripts/generate-site-map-md.ts generator and
docs/SITE_MAP.md; add site-map-check.yml CI workflow that fails on stale
generated markdown; correct all statuses to reflect reality (all routes exist).

Closes FinesseStudioLab#70 — design-system: add CSS motion tokens (--motion-duration-fast/base/
slow, --motion-easing-standard/enter/exit, --motion-transition-base) with
@media (prefers-reduced-motion: reduce) override that collapses all durations to
0.01ms and cancels animation-iteration-count; apply to cta-secondary transition
and site-nav transitions.
@joelpeace48-cell

Copy link
Copy Markdown
Contributor

@Gbangbolaoluwagbemiga ci pipeline failed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants