Skip to content

SPA: visual identity — brand-derived link colour, display optical size, two-colour mark (owner decisions) #656

Description

@mforce

Part of the SPA look-and-feel pass (design review 2026-09-02). Sibling slices: numeric typesetting, elevation hierarchy, all-caps labels, table layout, dashboard rework, empty states. Do this last — the other six are defects; this one is a point of view and needs an owner decision before work starts.

Problem

  • The palette is Slack's, token for token: #4a154b primary, #1264a3 link blue, #611f69 press (web/DESIGN.md, adopted in UI design revamp — distinctive visual identity #52). Blue links are a second hue that fights the "chromatic monotheism" the stylesheet header claims, and they do not follow the farm accent palettes (Per-farm theme — curated accent palettes in farm settings (API + SPA) #149) — a forest or terracotta farm still gets Slack-blue links.
  • Type is Inter everywhere at one optical size. Fine for a data app, but headings and stat figures have no voice of their own.
  • The brand mark is a generic single-stroke egg outline that will not survive favicon / PWA icon sizes well.

Proposal (each an owner decision)

  1. Links derive from the brand. --link: var(--brand) in light, --stat-accent in night; hover a step lighter/darker. Verify 4.5:1 on --surface for every palette × theme (styles test). Blue leaves the app.
  2. Optical size for display text. Inter Variable ships an opsz axis; font-variation-settings: "opsz" 32 on h1, h2, .stat-value gives tighter, more characterful display cuts at zero download cost — check the installed @fontsource-variable/inter import actually carries the axis (the default entry ships wght only; the opsz entry is a separate CSS file). If it does not, decide between adding that entry and choosing one display face for headings + figures only.
  3. Two-colour mark: egg + yolk in --on-brand-mute, re-exported through web/icons-src for favicon / PWA / splash.

Acceptance

  • Owner decision recorded on each of the three points before implementation.
  • Link colour passes 4.5:1 on --surface and --surface-2 in light and night for all four palettes — pinned in styles.test.ts.
  • No new font download unless the owner chose a display face.
  • Icons regenerated through the existing icons-src pipeline, npm run verify:sw still green.
  • Screenshots of login, dashboard, a list screen in both themes.

Siblings: #650 #651 #652 #653 #654 #655 #657

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions