Living visual reference for components defined in brain/brands/baselocal/design-system.md. New components and tokens are added here through the extend-design-system skill; existing components defined before this showcase existed will be backfilled as they're touched.
The atomic values everything else is built on. Colors, type, spacing, radius, shadows, motion.
Repeated from the brand guide. Use the token names — never hard-code hex.
Terracotta
primary
#C2604A
Deep Terracotta
primary-hover
#A84E3B
Espresso
dark
#2C2421
Charcoal
body
#444444
Gray
secondary-text
#797979
Silver
light-text
#999999
Warm Cream
bg-warm
#FAF6F4
Warm Border
border
#E8E0DC
White
bg-page
#FFFFFF
Green
success
#2D7A2D
Light Green
success-bg
#EEF7ED
Red
error
#C0392B
Light Red
error-bg
#FBEAE7
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog. Body copy is the workhorse — most paragraphs use this exact size, weight, and color.
The quick brown fox jumps over the lazy dog
The quick brown fox jumps over the lazy dog
The quick brown fox
The quick brown fox jumps over the lazy dog. Used for disclosures and legal copy only.
Base unit is 4px. Every spacing value is a multiple of 4.
Sparingly used. Always warm-tinted (terracotta or white) — never cool grays.
Motion tokens are abstract — listed here as reference. See design-system.md § Motion & Animation for full keyframes and patterns.
| Token | Value | Usage |
|---|---|---|
| ease-out-expo | cubic-bezier(0.16, 1, 0.3, 1) | All entrance animations — fast start, gentle settle |
| duration-entrance | 0.7s | Scroll reveal, hero entrance, grid stagger |
| stagger-gap | 80ms | Base delay between sequential items |
Three color variants × two formats (full wordmark and icon). Source files live in previews/baselocal/assets/logos/.
Terracotta · on white
Espresso · on cream
White · on dark
Terracotta · on white
Espresso · on cream
White · on dark
Bridge-page and landing-page building blocks. Forms have their own section below.
Sizes (default state)
States (default size)
Sizes (default state)
States
Primary link · default
Read more about our editorial standards before submitting.
Primary link · hover
Read more about our editorial standards before submitting.
What doesn't work
What does
…the kind of weekly pick most local guides miss entirely.
If you'd rather see a few more examples first, keep reading…
Every submission goes through a real editor before it's published. We're not a free-for-all listings site — we're a curated directory.
Tacoma's loudest, friendliest neighborhood roaster
Award-winning craft roaster with a no-rush policy
Affiliate link — your discount stays the same and we earn a small commission that funds editorial.
Ready to see what a real local guide looks like?
Read this week's edition →Pick the one that fits — both are free to try.
Already a member? Sign in here.BaseLocal may earn a commission when you click certain links on this page and complete a purchase or subscription. Our editorial picks are independent — partners do not pay for placement, and commissions never determine which products we recommend. Individual results vary. Nothing on this page is medical or financial advice.
…end of one section.
Start of the next section.
Form primitives and patterns from the events submission flow. The 13 sub-sections below cover inputs, layouts, alerts, and confirmation states.
Default field for short, single-line text. 44px min height, 6px radius, focus ring uses terracotta.
Default · empty (placeholder)
Default · filled
Focus
Error
Disabled
With label · helper text
Where attendees can RSVP or learn more. Optional.
With label · required · error
Enter a valid email address.
Same styling as text input. Min-height 120px. Counter sits below, right-aligned.
Default · with counter
187 / 500
Counter near limit (terracotta)
472 / 500
Counter over limit (red)
514 / 500
Native select, styled to match text input. Custom chevron in terracotta.
Default
Focus
Native date and time inputs. Browser-rendered pickers — for multi-day selection use the multi-select calendar.
Date
Time
Labels sit above their field. Required gets a terracotta asterisk. Helper and error text replace each other — never both at once.
Required label
Optional label · helper text
For us to reach you about your submission. Not shown publicly.
Error text
Enter a valid phone number.
Groups related fields. Bitter 22px, thin warm-border underline.
…fields would go here…
…fields would go here…
Single-select pill grid. Wraps to multiple rows. Tap to select.
All 20 BaseLocal categories · Music selected
Search + grouped list + chips strip. Made for picking N from a few hundred. Click a row to toggle.
Click any individual day to toggle. Quick picks are additive (except Clear). Past months are inaccessible — back chevron hides on the current month.
Next month — May 2026 (with 4 days selected on the 1, 2, 8, 15)
Live cost breakdown. Math line shows the multiplication, total emphasized in Bitter.
Empty state
Pick dates and locations to see your total.
Filled · Directory + Newsletter
3 days × 2 locations × $25
Mobile pattern · sticky bottom bar (collapsed)
Linear 4-step progress. On mobile, collapses to a single "Step n of 4" pill.
Desktop · step 2 (Details) is current
Mobile compact pill
STEP 2 OF 4 · DETAILSThree variants. Used at the top of a form or above a section.
Done-state hero. Big green check, headline, body, optional next-steps callout.
Your event has been submitted and your payment has been processed. We'll review the details and get it live in the directory within one business day.
Email-safe building blocks. Render in email clients and on web preview pages. Stylesheet at previews/baselocal/newsletters/styles/newsletter.css.
White card on cream paper. 5px radius. 30px padding. The default container for almost every newsletter section.
…flush left, uppercase tracking, 3px circle separators, hairline below.
Numeric anchor. Section heading sits below.
Five stories shaping how locals get around, eat, and gather.
…body content goes here.
Five category variants — used inline with highlights and quick lists.
Free Outdoor Kids Music Food
…end of Local Business Spotlight content.
Want to be featured here?
Reach 14,000+ engaged locals every Thursday morning.
See sponsorship optionsThat's everything for this week. Reply if you spot something we should cover next time — we read every email.
Maddie Editor, Tacoma EditionBeans roasted Tuesday were on the bar by Friday. The shop's house blend is balanced enough for milk drinks but interesting enough to drink straight. Visit their roastery →
Open early, friendly to remote workers, and dialed in on the basics. Their cortado is a perfect 3.5oz pour every single time. Plan a visit →
If you grind your own at home and care about freshness dates, this is the program to beat. Use code BASELOCAL for 20% off your first month. Start a subscription →
Content widths, padding, and breakpoints. Reference table only.
| Context | Max-width |
|---|---|
| Website (full-width sections) | 1120px (--max-width-site) |
| Website (narrow content) | 720px (--max-width-content) |
| Bridge pages / articles | 720px |
| Newsletter container | 670px |
| Context | Padding |
|---|---|
| Bridge page (desktop) | 48px top, 24px sides, 80px bottom |
| Bridge page (mobile) | 48px top, 24px sides, 80px bottom |
| Newsletter | 24px 16px 48px |
| Breakpoint | Behavior |
|---|---|
| ≤ 600px | H1 → 28px, H2 → 24px. Pick card padding reduces. |
| ≤ 560px | VS box stacks to single column. |
Contrast targets and minimum sizes. Reference table only.
| Requirement | Spec |
|---|---|
| Body text contrast | WCAG AA minimum (4.5:1). Charcoal on white = 9.73:1 ✓ |
| Link/CTA contrast | Terracotta on white = 4.55:1 (AA) ✓ |
| Heading contrast | Espresso on white = 15.4:1 (AAA) ✓ |
| Minimum body font | 16px (newsletter), 17px (web). Never smaller for body text. |
| Touch targets | Minimum 44×44px for all tappable elements on mobile. |
| Gray text minimum | Gray #797979 only at 16px+ or for non-essential info. Silver #999 for fine print only. |