Package source

12PM Design System

Shared Red / Sun / Cream visual foundations for 12pm-website, 12pm-order, 12pm-partner and 12pm-admin. The current contract follows ref / sys / comp tokens, split Brand Red and Action Red roles, and reusable primitives.

Active visual system

Detail pages

First split of the catalog, modeled after TANTI's per-topic foundation and component pages.

Page split
Good Food. Good Focus.

Active mark reference

Good Food. Good Focus.

A better lunch break, thoughtfully prepared.

มื้อกลางวันที่คิดมาให้แล้ว เพื่อช่วงพักที่ดีกว่าเดิม

WarmReliableThoughtfulSimpleModern

Active board evidence

Brand foundation

Active visual foundation from the Figma Logo page and repository SVG masters: red wordmark, Sun dot, Cream canvas and clear archive boundary.

Active board evidence
Archived provenance only

A better lunch break, thoughtfully prepared.

The current foundation follows the Figma Logo page plus the repository SVG masters stored beside BrandMark. Archived foundation files remain historical evidence and are not current visual authority.

  • ลด decision fatigue จากคำถามว่าเที่ยงนี้กินอะไรดี
  • ลดเวลารอคิวและความวุ่นวายช่วงพักกลางวัน
  • ทำให้การกินดีขึ้นไม่รู้สึกเหมือนอาหารคลีนที่กดดัน
Primary wordmark

Owner-provided stacked and horizontal red 12PM. marks with a Sun dot, grounded in the active logo direction.

Secondary clock

Red circular clock with a Sun dot for compact support moments, not a replacement for readable 12PM naming.

Provenance boundary

Archived foundation material may remain as historical provenance only; it is not the current visual authority.

12PM Red

#E94B35 is Brand Red for the logo, identity accents and packaging-like brand moments.

Action Red

#C83220 is Action Red for primary CTA, focus-visible rings and selected borders.

Sun

#F5C85B carries the dot, meal cue and small moments of care. Pair with Ink for text.

Cream

#FFF6E8 is the warm canvas for website, order and operational product surfaces.

Muted and status colors

Warm neutral surfaces and quiet slate/herb/oxblood/ochre status colors support the brand without becoming secondary identity colors.

Design tokens

Backward-compatible aliases plus the new ref / sys / comp model.

tokens.css
InkText / icon layer--12pm-sys-color-brand-ink
12PM RedLogo / identity--12pm-sys-color-brand-red
Action RedCTA / focus / selected--12pm-sys-color-action-primary
SunMeal cue / dot accent--12pm-sys-color-brand-sun
CreamCanvas family--12pm-sys-color-brand-cream
Action Red hoverPressed / hover shade--12pm-sys-color-action-primary-hover
Warm mutedGeneric quiet surface--12pm-sys-color-surface-muted
Red softSelected / brand grouping--12pm-sys-color-surface-brand-soft
DangerFunctional state--12pm-sys-color-danger

Red / Sun / Cream system

Composition guidance for keeping 12PM warm, accessible and operational without turning product surfaces into decorative red screens.

Guidance
CreamCanvas12PMRedSunAccent
Base%Cream and surfaces

Use Cream, white and quiet borders for most screen area so operational views stay calm, readable and lunch-adjacent.

--12pm-sys-color-canvas / surface
Action%Action red and selection

Use Action Red for the single strongest action, focus and selected borders. Keep Brand Red for identity so app screens stay recognizable without sacrificing CTA contrast.

--12pm-sys-color-action-primary / border-selected
Accent%Sun accent

Use Sun for the logo dot, small meal cues and warm highlights. Pair it with Ink for any text-bearing surface.

--12pm-sys-color-brand-sun

Ink is the text layer and status colors are functional exceptions; they protect readability, accessibility and operational meaning rather than competing with 12PM Red or Sun. Order screens can lean warmer; partner and admin screens stay more neutral-heavy when density increases. Brand Red `#E94B35` and Action Red `#C83220` are split after Owner Figma review so recognition and CTA contrast can each do their job.

Typography direction

Font and type roles for a warm, reliable and operational 12PM interface.

Current UI stackPrompt

Primary interface text uses Prompt for Thai and Latin so website, order, partner and admin screens feel more aligned with the refreshed brand while staying readable and operational.

Brand displayActive boards

Brand display follows active boards through the SVG BrandMark; dense MVP workflows keep the shared UI type stack.

Content ruleTitle Medium / exact IDs

Use concise Thai labels, keep title roles at Medium, preserve exact English IDs and codes, and wrap mixed Thai/English strings instead of shrinking text by viewport.

Usage contractRole tokens first / strong = emphasis

Use display tokens for hero titles, page-title tokens for page H1s, section-title tokens for H2s, and subsection tokens for card titles. Browser strong/b map to the emphasis token at Medium; do not rely on them for heavier visual titles.

RoleSpecimenToken
Display32 / 1.2 / 50012PM Design System--12pm-sys-type-display-*
Page title24 / 1.2 / 500Partner offer setup--12pm-sys-type-page-title-*
Section title20 / 1.2 / 500รอบจัดส่งวันนี้--12pm-sys-type-section-title-*
Subsection16 / 1.35 / 500Pickup scope--12pm-sys-type-subsection-*
Body14 / 1.55 / 400Thai-first labels with exact English IDs.--12pm-sys-type-body-*
Label14 / 1.35 / 500Minimum qualifying quantity--12pm-sys-type-label-*
Caption12 / 1.35 / 400Updated 19 Aug 2026--12pm-sys-type-caption-*
Data ID13 / 1.35 / 400OFFER-LUNCH-SET-20--12pm-sys-type-data-id-*

Components

Initial primitives exported from @12pm/design.

Package

BrandMark

SVG primitive
Good Food. Good Focus.
Wordmark
Horizontal
Clock
LockupGood Food. Good Focus.

Button

Accepted baseline

Button color policy

Color contract
Primary actionAction Red fill

Use Action Red for the highest-value action in a view. Brand Red remains the logo and identity signal; Action Red carries interaction contrast.

--12pm-sys-color-action-primary
Secondary actionNeutral surface

Use for normal saved-work, navigation and review actions so dense operational screens do not become overly saturated.

--12pm-sys-color-action-secondary
Selected redSoft surface + red border

Use Red soft with an explicit selected border, icon, or label. Do not use Red soft as the default muted surface.

--12pm-sys-color-surface-selected / border-selected

Primary uses Action Red rather than Brand Red. This keeps the logo red recognizable while giving CTA, focus and selected states their own stronger interaction value.

Button states

Interaction contract
Default
Hover
Focus
Disabled
Loading
Hover

Enabled pointer state only; deepen the current variant without shifting layout.

Focus

Keyboard-visible ring uses the shared focus token and keeps the button color intact.

Disabled

Unavailable actions become neutral and do not use brand color as a promise of progress.

Loading

In-flight actions stay on their variant, show progress, set aria-busy and block repeat taps.

StatusChip

Read-only
DraftReviewActiveNeeds decisionBlocked

TextField

Form primitive

Partner-visible code, owned by API validation.

Minimum qualifying quantity is required.

Product surface previews

One visual language, different density per actor surface.

12pm-order

Mobile ordering

3 รายการ
12:00 service day
12pm-partner

Partner Console

Candidate price book
12:00 service day
12pm-admin

Admin Console

Audit required
12:00 service day