Mobile App
Current state · baseline

The Bee mobile app design system.

This documents the current Bee mobile app (iOS/Android, React Native) — the baseline we’re redesigning from. It is not the web design system and not a set of new web tokens. Source of truth: customer-app/src/theme/{colors,typography,spacing}.ts. Values are reproduced here as documentation.

Looking for the Web design system?
Mobile · Tokens

Colour

The app theme’s colour object (main, accent, typography, background). These are raw hex values with no Tailwind equivalent in this project, so each chip is painted from its own hex. Light-only — there are no dark-theme tokens.

Primary — charcoal / ink

main.primary

The app’s ink. default is #2E3032 (= the 500 step). Used for primary text, buttons/ink on yellow, and dark surfaces.

25#E9EAEB

Lightest tint

50#D6D7D9

Subtle fills

100#CFCFD0

Borders, dividers

200#9B9FA7

Muted UI

300#6D727D

Secondary text

400#565859

Body text

500#2E3032

Primary text, ink on yellow

default; identical to main.black[700]

600#252628

Pressed / deep ink

700#121314

Darkest ink

Secondary — Bee yellow

main.secondary

Brand fills, primary button background (with charcoal text), highlights. default is the 500 value #FFE048. Note the ramp drifts to ORANGE at the top — 600 and 700 are not darker yellows.

50#FFFDFA

Lightest wash

100#FFF3DC

Subtle fills

200#FFEAC2

Light fills

300#FFE2AB

Soft accents

400#FFC894

Warm accent

500#FFE048

Brand fill, primary button bg

default — the real Bee yellow

600#FF9A7B

Listed as “600” but is a coral/orange

Drifts off-hue — not a darker yellow

700#F7B944

Listed as “700” but is amber/orange

Drifts off-hue — not a darker yellow

Neutral / black

main.black

The neutral ramp. Runs white → near-black. default is #151718 (= the 900 step).

50#FFFFFF

White surfaces

100#F7F8F9

Off-white backgrounds

200#D9DDE3

Dividers

300#C8CCD2

Borders

400#B1B5BA

Disabled / placeholder

500#8C8F93

Secondary text, input hints

600#5C5E61

Body text

700#2E3032

Input text, headings

Identical to main.primary[500]

800#262829

Deep ink

900#151718

Darkest

default; black[900] == black.default

Typography text colours

typography

The colours applied to text styles. text3 is the default (#4E5D78) — most type styles inherit it.

text1#2F353B

Strongest text

text2#323B4B

Headings, input labels

text3#4E5D78

Default body text

default

text4#8A94A6

Muted / secondary

text5#B0B7C3

Faint / placeholder

Backgrounds

background

Surface fills. default/5 is white; the rest are progressively cooler greys for cards and screens.

default / 5#FFFFFF

Default surface, cards

default

1#C1C7D0

Strong divider / scrim

2#EFF1F3

Screen background

3#F5F7FA

Subtle panel

4#FAFBFC

Near-white panel

Accent — success

accent.success

Confirmations and completed states. default #12B76A.

50#E3F6EF
100#E2F4EC
200#A4DAC1
300#78D0B0
500#22B17D
600#1B8E64

Written “##1B8E64” (double #) in source — a typo; correct value shown

700#12B76A

default

900#027A48

Accent — warning

accent.warning

Cautions and pending states. default #F79009.

100#FFFAEB
200#FEDF89
500#FFB444
700#F79009

default

900#B54708

Accent — danger

accent.danger

Errors and destructive actions. default #E11900.

25#FFF6F6
100#FDE7E6
200#FFA28A
500#FE2B2B
700#E11900

default

900#C90000

Accent — info

accent.info

Informational highlights. default #2E90FA.

100#EFF8FF
200#B2DDFF
700#2E90FA

default

900#175CD3

Accent — purple

accent.purple

Secondary accent. default #8F1AE8.

100#F9E8FF
200#DC96FF
700#8F1AE8

default

900#480C76
Mobile · Tokens

Typography

Font family: Airbnb Cereal App. Weights shipped: Light, Book (400), Medium (500), Bold (700), ExtraBold, Black; the app uses Book / Medium / Bold predominantly. It’s a licensed font — the genuine faces are loaded here, so specimens render in the real typeface. Each style ships three weights (Bold / Medium / Book).

  • displayXLarge

    64px · lh 72

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • displayLarge

    42px · lh 50

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • displayMedium

    32px · lh 40

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • displaySmall

    28px · lh 36

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • headingLarge

    24px · lh 32

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • headingMedium

    20px · lh 28–32

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • headingSmall

    18px · lh 26

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • bodyLarge

    16px · lh 25.6

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • bodySmall

    14px · lh 22.4

    Default body style (typography.default)

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • subhead

    14px · lh 22

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • subhead2

    12px · lh 20

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • caption

    12px · lh 19.2

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • button

    16/15/12px

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • input

    16/14/14px

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • inputLabel

    14/12/12px

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
  • inputHint

    12px

    BoldThe quick brown fox jumps over the lazy dog
    MediumThe quick brown fox jumps over the lazy dog
    BookThe quick brown fox jumps over the lazy dog
Mobile · Tokens

Spacing

A 4px-based scale, keyed 0–28. Note spacing[0] is 1px, not 0 — slightly irregular. Bars wider than the page are capped; the px value is exact.

  • 01pxIrregular — 1px, not 0
  • 14px
  • 28px
  • 312px
  • 416px
  • 520px
  • 624px
  • 728px
  • 832px
  • 936px
  • 1040px
  • 1148px
  • 1256px
  • 1364px
  • 1480px
  • 1596px
  • 16112px
  • 17128px
  • 18144px
  • 19160px
  • 20176px
  • 21192px
  • 22208px
  • 23224px
  • 24240px
  • 25256px
  • 26288px
  • 27320px
  • 28384px
Mobile · Observation

Radius & elevation

No centralized tokens exist in the mobile theme.

Not tokenized in the app — radius is set per-component via numeric borderRadius props, and shadows are passed to the Card component as shadowColor + distance props. Opportunity to standardize in the redesign.

Mobile · Library

Components

The app’s core UI primitives, recreated to spec from the React Native source in customer-app/src/components. Interactive ones are live — tap to toggle.

Recreated to spec from the React Native source — exact sizes, radii, and theme hex values. The live components live in customer-app/src/components.

Button

Three sizes (small 36 · medium 48 · larger 52, all radius 100) and three variants. Solid fills Bee yellow with charcoal text; outline is white with a grey hairline; text is chromeless. Disabled greys out; loading swaps the label for a spinner.

solid
outline
text
loading

Text input

Sizes small 36 · medium 44 · larger 56 (radius 8). Five states: default (grey fill), focus (charcoal border on white), filled (grey border), error (red fill + border + hint), and disabled. Optional label with a required asterisk and a hint line.

Default
you@email.com

We’ll never share it.

Focus
you@email.com
Filled
you@email.com
Error*
not-an-email

Enter a valid email address.

Disabled
Unavailable
Larger
Search…

Selection controls

Checkbox (20×20, radius 3), radio (20×20 circle), and switch (40×22 track, 18px knob). All fill charcoal (primary) when on. Tap to toggle.

Checkbox
Option AOption B
Switch

Card

White surface, radius 12, soft drop shadow (rgba(176,183,195,0.15), distance 50). Border is optional (1px, black-200). Radius and shadow are hardcoded in the component — see the Radius & elevation note.

Shadow card

showShadow (default), no border.

Bordered card

showBorder, shadow off.