Skip to content

feat(design): Visual coherence pass — sharp aesthetic site-wide#1129

Merged
jeromehardaway merged 2 commits into
masterfrom
design-system-tokens-fill
May 27, 2026
Merged

feat(design): Visual coherence pass — sharp aesthetic site-wide#1129
jeromehardaway merged 2 commits into
masterfrom
design-system-tokens-fill

Conversation

@jeromehardaway

@jeromehardaway jeromehardaway commented May 26, 2026

Copy link
Copy Markdown
Contributor

Summary

The Software Factory and Career Guides pages set a distinctive aesthetic — Captain America / Obama campaign / Palantir vibe: sharp zero-radius, navy + red + gold palette, GothamPro uppercase headlines, mono section eyebrows with the 16×2 red bar, monospaced metadata, status bars with pulsing dots. Most of the rest of the site doesn't carry that language. This PR closes the gap.

Two layers of change: foundation (token additions + global CSS guards) and surface (new shared components + page-level refits on the highest-traffic pages).

What changed

Foundation

  • src/assets/css/globals.css — full design-system token scales now in :root (extended navy/red/gold scales, neutrals, dark-surface, dark-mode aliases, hero gradient, type/space/radius/shadow/motion/layout/focus tokens). Button press-squish :active { scale(0.95) }. Generic .eyebrow selector with the 16×2 red bar. @media (prefers-reduced-motion: reduce) block (production gap from DESIGN_DOC).
  • Site-wide guards in the same file:
    • Zero-radius default on Tailwind radius utilities (tw-rounded, tw-rounded-md/lg/xl/2xl/3xl, plus button/anchor tw-rounded-full unless .vwc-avatar).
    • No soft drop shadows on dark sections.
    • No pastel / bluish-purple gradient backgrounds (tw-bg-gradient-to-*) unless explicitly opted in via .vwc-gradient.
    • .vwc-eyebrow and .vwc-sharp opt-in utilities.

Shared design-system components

src/components/ui/design-system/:

  • SectionEyebrow — 16×2 red bar + mono label with optional sub-label, light/dark tone, left/center align.
  • SharpHeadline — GothamPro uppercase clamp() sizing, h1/h2/h3 sizes, navy/white/cream tones, h1/h2/h3/h4 tag.
  • MonoMeta — mono uppercase tracked labels, size (xs/sm/md), tone (muted/bright/accent/gold).
  • StatStrip — bordered horizontal grid of stat cells (label/value/sub), light/dark tone, auto column count.

Page refits

  • Home (src/pages/index.tsx) — operations-brief status bar across the top with pulsing dot, key stats (placement, alumni earnings, 501(c)(3), applications open). Carries the SF/CG signature on the front door without rewriting all the home containers.
  • About-us (src/pages/about-us.tsx) — replaced rounded gradient Theory-of-Change card with a sharp link block: section eyebrow, sharp headline with red emphasis, square red CTA button. Zero-radius, no shadow.
  • Sponsors (src/pages/sponsors.tsx) — full rewrite. Operations brief bar, dark-section hero with eyebrow / sharp headline / stat strip (placement, alumni earnings, 501(c)(3), WOTC), three numbered "engagement options" cards on cream with red top-border, dark-section case for "veterans are not charity hires," sharp contact band.
  • Mentor (src/pages/mentor.tsx) — replaced the two generic h2 sections with sharp eyebrow + headline clusters. Replaced rounded-lg cards with red-top-bordered sharp cards. Replaced bullet dots with the 2px red dash marker.
  • Programs (src/pages/programs.tsx) — replaced generic intro paragraph with a Hashflag-style index header: eyebrow ("Programs Index"), sharp headline with red accent, mono meta caption.

What is intentionally NOT in this PR

  • Per-container rewrites (@containers/hero/layout-*, funfact/*, event/*, service/*, testimonial/*, etc.). The global CSS guards already sharpen them — full rewrites can land per-container in follow-ups.
  • Pages I'd refit in follow-up PRs: theory-of-change, team, media, faq, contact-us, apply page-level chrome, donate page-level chrome, join-our-community, programs/core-curriculum. Each is a thin page composing legacy containers — refits go either at the container level or in dedicated PRs.
  • Admin, auth-gated, course-detail, blog post template, profile, certificate, challenges, jobs, jodie, orders, store, events detail, zoom detail — different concerns, out of scope.

Test plan

  • npm run typecheck (pre-existing errors in test files + swagger types only — none introduced)
  • npm run lint — Biome clean
  • npm test
  • npm run dev and visit:
    • / — operations-brief status bar visible above hero
    • /about-us — Theory-of-Change link block is sharp (no rounded card, no gradient)
    • /sponsors — full SF-style layout (operations bar, dark hero with stat strip, numbered tracks, dark case section, contact band)
    • /mentor — eyebrow + sharp headline sections, red-top-bordered cards
    • /programs — Hashflag-style index header above the grid
  • macOS Reduce Motion → fade-ups + hover-transforms suppressed
  • Tab through interactive elements → gold 3px focus ring with 2px offset visible
  • Tab a primary button → press-squish scale(0.95) on active
  • Verify no off-brand gradient backgrounds anywhere
  • Verify zero-radius on cards / inputs / modals across the affected pages

@vercel

vercel Bot commented May 26, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
vets-who-code-app Ready Ready Preview, Comment May 26, 2026 9:19pm

Request Review

Augment globals.css with the full token scales documented in the
Vets Who Code design-system handoff bundle. Adds extended navy/red/
gold scales, neutrals, dark-surface scale, dark-mode aliases, hero
gradient, type/space/radius/shadow/motion/layout/focus tokens, the
brand-signature button press-squish, a generic .eyebrow selector
with the 16x2 red bar, and a prefers-reduced-motion block flagged
as a gap in the production design doc.
Brings legacy pages into the Software Factory / Career Guides visual
language so the site stops looking like two different products.

- Adds shared design-system primitives in src/components/ui/design-system/:
  SectionEyebrow (16x2 red bar + mono label, with optional sub-label),
  SharpHeadline (uppercase GothamPro clamp() sizing, navy/white/cream tones),
  MonoMeta (mono uppercase labels with size + tone variants), StatStrip
  (bordered horizontal stat grid). All zero-radius, brand-palette only.

- Adds site-wide CSS guards in globals.css: zero-radius default on common
  Tailwind radius utilities (legacy rounded cards), no soft shadows inside
  dark sections, no pastel/bluish-purple gradient backgrounds, and .vwc-eyebrow
  + .vwc-sharp utilities for one-off opt-ins.

- Refits five high-visibility pages with the SF/CG signature: operations-brief
  status bar on Home, sharp Theory-of-Change link block on About, sharp
  numbered tracks + dark-section case on Sponsors (full rewrite), eyebrow +
  sharp headline + bordered stat-style cards on Mentor, and a Hashflag-style
  index header on Programs.
@jeromehardaway jeromehardaway changed the title chore(design): Fill design-system tokens and honor reduced motion feat(design): Visual coherence pass — sharp aesthetic site-wide May 26, 2026
@jeromehardaway jeromehardaway merged commit adda1f9 into master May 27, 2026
6 checks passed
@jeromehardaway jeromehardaway deleted the design-system-tokens-fill branch May 27, 2026 14:53
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