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)
- Standalone Don'ts list (not paired with a Do) β
rich_text_listwithβprefix per item, bold if the source data has a label. One block, scannable, consistent with the "Never use" pattern from/brand messaging. - Paired Do/Don't (like voice examples) β β
as full-weight
rich_text, β ascontextblock. Unchanged from existing design. - Tags / pill-style metadata β inline-code
rtCode()elements, space-separated, in onerich_text_section. Matches foundation's personality treatment. - "Spec" strings that already contain a colon (e.g.
"Header: Navy (#112D40) background") β split on first colon, bold the prefix, keep the rest as body. Fallback to plain body if no colon. - File download links β mrkdwn
<url|label>inside acontextblock. Context keeps the download affordance visible but de-emphasized below the content.
Per-response specs
1. /brand logo
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.
5. /brand search
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
- Approval on this doc.
- Implement all six in
lib/slack/format.ts+ route handler update. - Preview all 6 via
scripts/post-redesign-previews.ts(extend to cover new categories). - Iterate if anything looks off.
- Commit atomically, push, deploy, verify in Slack.
- Update
docs/SLACK-UX.mdwith the new Per-category specs + any extensions to the design language. - Move to Phase B (logo PNG rasterizer).