Phase A β€” Remaining /brand Responses Design Proposal

Date: 2026-04-22 Scope: Redesign /brand logo + /brand search + /brand help to match the shared design language; add three new subcommands /brand applications, /brand icons, /brand photography.

Shared language is already documented in ~/Projects/brand-guide-mcp/docs/SLACK-UX.md. This doc specifies per-response block structures only.

Emoji anchors (extended set)

Category Prefix Rationale
/brand logo 🏷 Label = brand mark
/brand applications πŸ–Ό In-context usage across touchpoints
/brand icons πŸ”£ "Input symbols" glyph β€” matches icon library semantics
/brand photography πŸ“· Obvious
/brand search πŸ”Ž Obvious
/brand help πŸ“– Reference manual / guidebook

Pattern decisions (additions to design language)


Per-response specs

header: 🏷 Logo
divider
header: Wordmark β€” Cream
context: Dark backgrounds Β· <svgUrl|Download SVG>
section: Primary wordmark in cream (#FDF9E3) for use on dark (navy) backgrounds.
divider
header: Wordmark β€” Navy
context: Light backgrounds Β· <svgUrl|Download SVG>
section: Navy (#112D40) wordmark for use on light or beige backgrounds.
divider
header: Guidelines
rich_text_list:
  β€’ Clear space (bold) β€” Maintain a minimum clear space equal to the cap height of the 'C'…
  β€’ Minimum size (bold) β€” Do not reproduce the wordmark smaller than 120px wide…
divider
header: Don'ts
rich_text_list (βœ—  prefix per row):
  β€’ βœ—  Do not stretch or distort the wordmark
  β€’ βœ—  Do not change the wordmark colors outside of approved variants
  … (4 more)
footer (shared)

Logo inline PNG previews come later in Phase B β€” they'll slot in as image blocks under each variant's context line.

2. /brand applications

header: πŸ–Ό Applications
section: [overview paragraph]
divider

(for each touchpoint, 5 total)
  header: Website
  section: [description paragraph]
  rich_text_list (specs β€” split on first colon, bold prefix):
    β€’ Header (bold): Navy (#112D40) background, beige wordmark
    β€’ Body (bold): Beige (#FDF9E3) background, navy text
    β€’ CTAs (bold): Yellow (#FFBC21) buttons with navy text
    β€’ Headlines (bold): Milo Serif OT, bold weight
    β€’ Body text (bold): Outfit, regular weight
  divider

header: Principles
rich_text_list:
  β€’ Consistency (bold) β€” Every touchpoint should feel like it comes from the same family…
  β€’ Warmth β€” The brand should feel approachable and human…
  β€’ Restraint β€” Less is more…
footer

Block count: ~26. Well under 50.

3. /brand icons

header: πŸ”£ Icons
context: Font Awesome Pro 7 Sharp Solid Β· Commercial (Font Awesome Pro)
section: [guidelines.library paragraph β€” context on where this lives]
divider
header: Icon Library
rich_text_list:
  β€’ Arrow Forward (bold) β€” Navigation, next actions, links
  β€’ Checkmark (bold) β€” Success, confirmation, completed items
  β€’ Close (bold) β€” Dismiss, close modals, remove items
  … (5 more)
divider
header: Guidelines
rich_text_list (split on first colon, bold prefix):
  β€’ Sizing (bold) β€” 16px, 20px, 24px, or 32px. Do not scale below 16px.
  β€’ Color (bold) β€” Navy (#112D40) or Beige (#FDF9E3). Yellow (#FFBC21) may be used…
  β€’ Spacing (bold) β€” Maintain at least 8px of padding around icons…
divider
header: Don'ts
rich_text_list (βœ—  prefix):
  β€’ βœ—  Do not use icons as decoration without purpose
  … (3 more)
footer

Block count: ~12. Fine.

4. /brand photography

header: πŸ“· Photography
section: [overview paragraph]
divider

(for each category, 4 total)
  header: Architectural Renders
  rich_text: pills row β€” `Hero imagery`   `Golden hour`   `Community scale`
  section: [description paragraph]
  divider

header: Mood Rules
rich_text_list: [5 rules, no labels β€” just bullet + text]
divider

header: Do
rich_text_list:
  β€’ βœ“  Show real places and real people
  β€’ βœ“  Use warm, natural lighting
  … (3 more)
divider

header: Don't
rich_text_list (βœ—  prefix):
  β€’ βœ—  Use generic stock photography
  β€’ βœ—  Oversaturate or apply heavy color grading
  … (4 more)
footer

Block count: ~24. Fine.

Design choice β€” Do/Don't treatment: Photography's Dos and Don'ts are standalone lists (not paired examples), so both render as rich_text_list with prefixes. The βœ“/βœ— anchor glyphs do the visual work. This differs from voice examples where Do/Don't are PAIRED (matched semantic content) and get the asymmetric full-weight/muted treatment. Pattern: paired examples β†’ asymmetric; standalone lists β†’ symmetric with glyph anchors.

Results found:

header: πŸ”Ž Search: "{query}"
context: {N} results
divider
rich_text_list:
  β€’ Colors (bold) β€” {snippet}
  β€’ Voice (bold) β€” {snippet}
  … (up to search result limit)
footer

No results:

header: πŸ”Ž Search: "{query}"
section: No matches. Try: `colors`, `typography`, `logo`, `voice`, `messaging`, `foundation`, `applications`, `icons`, `photography`.
footer

6. /brand help

header: πŸ“– Brand Guide
section: Ask me about California Forever's brand β€” colors, typography, voice, messaging, and more. Any command below works as `/brand {name}`.
divider
header: Commands
rich_text_list:
  β€’ `/brand colors` (code) β€” palette with hex codes, usage, and native Slack swatches
  β€’ `/brand typography` (code) β€” typefaces + type scale
  β€’ `/brand logo` (code) β€” wordmarks, guidelines, don'ts
  β€’ `/brand voice` (code) β€” voice traits, tone by context, writing rules, this/not-this examples
  β€’ `/brand messaging` (code) β€” tagline, elevator pitch, key messages, boilerplate, naming
  β€’ `/brand foundation` (code) β€” mission, vision, story, values, personality, audience
  β€’ `/brand applications` (code) β€” how the system works across touchpoints
  β€’ `/brand icons` (code) β€” icon library + usage guidelines
  β€’ `/brand photography` (code) β€” categories, mood rules, do's & don'ts
  β€’ `/brand search {query}` (code) β€” full-text search across everything above
footer (shared)

New route handler subcommands

Add three cases to app/api/slack/commands/route.ts for applications, icons, photography β€” wire them through lookup() so they pick up the shared footer automatically.

BrandCategory type in lib/brand-guide.ts needs to include the three new keys. Verify the CF brand guide API exposes them (it does β€” all three live under /api/brand/{category}).

Open questions before implementation

None blocking. Moving to implementation after approval.


What happens next

  1. Approval on this doc.
  2. Implement all six in lib/slack/format.ts + route handler update.
  3. Preview all 6 via scripts/post-redesign-previews.ts (extend to cover new categories).
  4. Iterate if anything looks off.
  5. Commit atomically, push, deploy, verify in Slack.
  6. Update docs/SLACK-UX.md with the new Per-category specs + any extensions to the design language.
  7. Move to Phase B (logo PNG rasterizer).