internal · design.socialfresh.com

Design showcase

Every default element, in one place, for all three properties. Switch property and the whole page reskins from the same markup. That is the test: if a component only works in one theme, it is not a component.

What the audit found

Read from the actual code, not assumed.

The SFA app has 58 component files and 2 shared primitives

Only confirm-button.tsx and date-picker.tsx are reusable. Everything else is re-implemented inline, which is exactly the patchwork problem.

Six different corner radii are in live use: rounded-md 421 times, rounded-full 325, rounded-lg 192, rounded-xl 52, rounded-2xl 12, rounded-sm 10. Padding is equally scattered across at least twelve combinations.

Nothing on this page will hold until those collapse to a token. That is the single biggest piece of work the showcase implies.

Color

Canonical values, transcribed from the Brand Guide PDF, not from code.

Main

#FF6600
Primary
#0099FF
Secondary
Primary light
#E3F4FF
Secondary light

Complimentary

#AA66FF
Orchid
#FF3399
Dragonfruit
#00CCBB
Poolside
#F7F6F4
Salt

Radius, settled: 8px in the app, 10px on marketing cards, full pill on buttons. One value per context.

The guide's own rule: “Avoid using orange with black/brown (Halloween effect).” That is why there is no darkened orange anywhere on this page.

Same palette as socialfresh.com, used differently

#FF6600
action
#0099FF
structure
#00CCBB
status
#007A72
teal TEXT
#AA66FF
status

Accents carry status meaning only. #00CCBB is 2.03:1 on white and must never hold text; #007A72 is the 5.22:1 text variant.

Sampled from the book cover

#0A0A0A
ground
#FF0C0C
accent
#D00810
red TEXT
#F4F1EB
cream

No #0099FF anywhere. Using Social Fresh blue made the personal site read as an agency sub-page.

Contrast, computed

PairRatioVerdict
White on #FF66002.94Fails
Navy #003A66 on canvas10.82AAA
#0099FF on white3.00Large only
#00CCBB on white2.03Fails
#007A72 on white5.22AA
#FF0C0C on #0A0A0A5.01AA

The orange rule, settled

White on #FF6600 is 2.94:1. Darkening the orange is banned, so the fix is structural rather than chromatic. Ruled 2026-08-28.

Wrong

Small body copy set in white directly on orange. This is the 2.94:1 case and it is the one to avoid.

Right

Headline size is fine

Anything smaller sits in a white box on the orange, with navy text inside. Same band, same brand, legible.

Type

Display
Heading two
Heading three

Body copy sets in the body face at 17px with a 1.6 line height and a measure around 38rem. Long enough to read, short enough not to lose the line.

Brand guide specifies Avenir Heavy, which is print only. Outfit is the approved web stand-in (Jason, 2026-08-28): getting close is good enough. Body is Lato.Lato throughout. No display face in the app.Archivo Black over Archivo.

Buttons

Variants

Sizes

Rollover and focus

Hover each. Primary darkens by filter rather than by a second hex, so it never drifts brown. Tab to see the focus ring, which is always the structural colour at 3px offset 2px.

Pills and status

Draft Live Needs review Blocked Early bird

Status is carried by a dot plus a word, never by colour alone and never by a tick. Colour-blind readers and greyscale printouts both survive.

Icons

Pika 500 by Dutchicon, already licensed and on disk at SOCIAL FRESH/LOGOs - SF/Pika Supreme Pack/. Filled shapes on a 64px grid, single fill, so they recolor with one find-and-replace. 502 available; a sample below.

search
view
binoculars
check-calendar
bar-chart
chat
settings-file
add-user
lightbulb
email

Gaps found: the set has binoculars but no eyeglasses and no sunglasses. Anything missing has to be drawn to match the 64px filled grid.

Tables

Sortable headers, sticky head, hover row, right-aligned tabular numerals. Click a header to sort.

Event▲▼ Status▲▼ Tickets▲▼ Revenue▲▼
Social Fresh 2027On sale17$17,452
Social Fresh 2026Closed228$223,598
Workshops 2027Draft0$0
FOFM 2025Closed62$41,300

Form fields

Send confirmation email Waitlist enabled

Toggles use position and fill. No tick, anywhere in the system.

Modules

Content cards

Research
Audience research

Consideration, conversion, retention. Delivered as something your leadership can circulate.

Strategy
Competitive picture

Where you sit against the brands you are measured against, and the openings they left.

Paid
Media management

We run the account, not a report about the account.

Stat blocks

$223K
SFC26 ticket revenue
6 years
Longest client relationship
250
Seat hard cap, SFC27

Tabs

Selected tab carries the accent underline. Never more than six.

States

Empty

No attendees yet

When someone registers they will appear here with their ticket type and order date.

Toasts

Saved Could not save. Try again.

Confirmation is a word, not a tick. Errors say what went wrong and what to do.

Loading and skeletons

Skeletons mirror the shape of what is coming, so the layout does not jump when data lands.

Inline spinner, for actions under two seconds. Anything longer gets a skeleton.

Modals and drawers

Two shapes only. A modal for a decision, a drawer for a record. Never a modal inside a modal.

Delete event

This removes Social Fresh 2027 and its 17 registrations. Attendees are not notified automatically.

Attendee×
All Access
Dana Whitfield

dana@example.com
Ordered March 2, 2027

Checked in

The destructive modal asks you to type the name. Confirmation friction scales with how hard the action is to undo.

Pagination

Showing 1 to 25 of 287. Always say the range and the total; a page number alone tells nobody how much is left.

Forbidden, shown

No checkmarks

Wrong
✓ IncludedTick as an affordance.
Right
IncludedDot plus a word, or nothing at all.

Orphans

Wrong
Research and strategy aligned to build momentum
Right, text-wrap balance
Research and strategy aligned to build momentum

Date input

Wrong

Fires change on every intermediate value, so stepping the month commits a date nobody picked.

Right

Popover calendar. Browsing never commits.

Also banned

Darkened or browned orange. Orange beside black or brown. Emoji in product UI and web copy. Em-dashes in Jason's voice. Auto-advancing carousels. Unsourced statistics. toISOString() for a local date.

Settled

All seven answered 2026-08-28. Recorded in ~/.claude/CLAUDE.md so they apply to every session.

QuestionRuling
AvenirNot used on web. Outfit is the approved stand-in; getting close is good enough.
EmojiNever. Icons only on web. This supersedes the Emoji Bank page in the Brand Guide, which is outdated.
Fortune 500350 is right. The guide's 300 is stale.
Primary light#FAD4BB confirmed.
Orange contrastOrange stays #FF6600. White on it for headline size only; smaller text goes in a white box on the orange. Never darken toward brown.
Radius8px app, 10px marketing cards, pill buttons.
SeafoamRenamed Salt here, pending sign-off. It sits beside Poolside, and it reads as near-white, which Seafoam does not.

Still open

  1. Confirm Salt as the name for #F7F6F4, or pick another.
  2. Real screenshots per property, refreshed monthly, so drift is visible.
  3. Collapsing the SFA app's six radii to the token above. That is the actual engineering work.