oh-my-design-cli 1.8.7 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/hooks/lib/preferences-parser.cjs +1 -0
- package/.claude/hooks/lib/preferences-writer.cjs +1 -0
- package/.claude/hooks/post-edit-watch.cjs +1 -0
- package/.claude/hooks/session-end-foldin.cjs +1 -0
- package/.claude/hooks/session-state-loader.cjs +1 -0
- package/.claude/hooks/skill-activation.cjs +1 -0
- package/.claude/settings.json +10 -1
- package/.github/assets/logo-bg.png +0 -0
- package/AGENTS.md +20 -1
- package/CHANGELOG.md +482 -0
- package/MIGRATION.md +103 -0
- package/README.ja.md +56 -19
- package/README.ko.md +47 -30
- package/README.md +48 -30
- package/README.zh-TW.md +59 -22
- package/agents/AGENT.md +8 -7
- package/agents/omd-codex-image.md +1 -1
- package/agents/omd-critic.md +6 -7
- package/agents/omd-designer-review.md +1 -1
- package/agents/omd-final-qa.md +1 -1
- package/agents/omd-humanizer.md +38 -0
- package/agents/omd-kr-writer.md +3 -4
- package/agents/omd-locale-adapter.md +12 -16
- package/agents/omd-master.md +24 -19
- package/agents/omd-microcopy.md +1 -1
- package/agents/omd-orchestrator.md +7 -8
- package/agents/omd-slop-auditor.md +31 -0
- package/agents/omd-ux-researcher.md +1 -1
- package/data/reference-fingerprints.json +1995 -38
- package/dist/bin/oh-my-design.js +16 -8
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/chunk-UJIHCEYF.js +99 -0
- package/dist/chunk-UJIHCEYF.js.map +1 -0
- package/dist/doctor-LDWSFM3I.js +763 -0
- package/dist/doctor-LDWSFM3I.js.map +1 -0
- package/dist/install-skills-ZZFNJ2II.js +1120 -0
- package/dist/install-skills-ZZFNJ2II.js.map +1 -0
- package/docs/CLI_QUICKSTART.md +157 -0
- package/package.json +25 -4
- package/scripts/postinstall.cjs +5 -4
- package/skills/claude-design/SKILL.md +38 -14
- package/skills/claude-design/references/claude-design-flow.md +11 -11
- package/skills/claude-design/references/codebase-analysis.md +5 -4
- package/skills/omd-final-qa/SKILL.md +1 -1
- package/skills/omd-harness/SKILL.md +51 -50
- package/skills/omd-humanize/SKILL.md +116 -0
- package/skills/omd-humanize/agents/openai.yaml +4 -0
- package/skills/omd-humanize/references/locale-playbooks.md +102 -0
- package/skills/omd-humanize/references/sources.md +11 -0
- package/skills/omd-init/SKILL.md +18 -12
- package/skills/omd-locale-adapter/SKILL.md +58 -91
- package/skills/omd-orchestrator/SKILL.md +11 -5
- package/skills/omd-reference-capture/SKILL.md +80 -26
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
- package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
- package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
- package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
- package/skills/omd-slop-audit/SKILL.md +110 -0
- package/skills/omd-slop-audit/agents/openai.yaml +4 -0
- package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
- package/skills/omd-slop-audit/references/sources.md +24 -0
- package/web/references/104/DESIGN.md +354 -0
- package/web/references/11st/DESIGN.md +197 -316
- package/web/references/29cm/DESIGN.md +297 -393
- package/web/references/42dot/DESIGN.md +390 -0
- package/web/references/8percent/DESIGN.md +438 -0
- package/web/references/ably/DESIGN.md +267 -572
- package/web/references/acer/DESIGN.md +329 -0
- package/web/references/airbnb/DESIGN.md +219 -557
- package/web/references/alipay/DESIGN.md +179 -420
- package/web/references/apple/DESIGN.md +224 -498
- package/web/references/asleep/DESIGN.md +402 -0
- package/web/references/au/DESIGN.md +334 -0
- package/web/references/autopedia/DESIGN.md +382 -0
- package/web/references/aws-cloudscape/DESIGN.md +241 -0
- package/web/references/baemin/DESIGN.md +332 -491
- package/web/references/banksalad/DESIGN.md +269 -180
- package/web/references/barogo/DESIGN.md +416 -0
- package/web/references/beusable/DESIGN.md +464 -0
- package/web/references/bilibili/DESIGN.md +206 -374
- package/web/references/bmw/DESIGN.md +162 -276
- package/web/references/brandi/DESIGN.md +184 -325
- package/web/references/catchtable/DESIGN.md +219 -264
- package/web/references/cgv/DESIGN.md +317 -0
- package/web/references/channeltalk/DESIGN.md +210 -336
- package/web/references/china-airlines/DESIGN.md +291 -0
- package/web/references/cjonstyle/DESIGN.md +453 -0
- package/web/references/class101/DESIGN.md +168 -387
- package/web/references/classum/DESIGN.md +228 -203
- package/web/references/claude/DESIGN.md +242 -479
- package/web/references/clay/DESIGN.md +179 -377
- package/web/references/clickhouse/DESIGN.md +254 -343
- package/web/references/cohere/DESIGN.md +214 -324
- package/web/references/coinone/DESIGN.md +199 -179
- package/web/references/corca/DESIGN.md +414 -0
- package/web/references/coupang/DESIGN.md +205 -475
- package/web/references/cursor/DESIGN.md +240 -381
- package/web/references/dabang/DESIGN.md +248 -213
- package/web/references/dable/DESIGN.md +431 -0
- package/web/references/datarize/DESIGN.md +217 -330
- package/web/references/dealicious/DESIGN.md +402 -0
- package/web/references/drdiary/DESIGN.md +404 -0
- package/web/references/elastic/DESIGN.md +238 -0
- package/web/references/elevenlabs/DESIGN.md +183 -321
- package/web/references/eslite/DESIGN.md +257 -0
- package/web/references/evaair/DESIGN.md +338 -0
- package/web/references/expo/DESIGN.md +238 -331
- package/web/references/familymart-tw/DESIGN.md +254 -0
- package/web/references/ferrari/DESIGN.md +160 -377
- package/web/references/figma/DESIGN.md +197 -451
- package/web/references/fitpet/DESIGN.md +445 -0
- package/web/references/flex/DESIGN.md +170 -253
- package/web/references/framer/DESIGN.md +197 -340
- package/web/references/freee/DESIGN.md +211 -533
- package/web/references/friendliai/DESIGN.md +431 -0
- package/web/references/frip/DESIGN.md +440 -0
- package/web/references/gangnamunni/DESIGN.md +154 -591
- package/web/references/gaudiolab/DESIGN.md +414 -0
- package/web/references/google/DESIGN.md +290 -398
- package/web/references/hashicorp/DESIGN.md +273 -318
- package/web/references/heydealer/DESIGN.md +429 -0
- package/web/references/humanscape/DESIGN.md +433 -0
- package/web/references/hyundai/DESIGN.md +158 -368
- package/web/references/hyundaicard/DESIGN.md +171 -121
- package/web/references/ibm/DESIGN.md +227 -378
- package/web/references/idus/DESIGN.md +450 -0
- package/web/references/igaworks/DESIGN.md +437 -0
- package/web/references/inflearn/DESIGN.md +221 -366
- package/web/references/intuit/DESIGN.md +244 -0
- package/web/references/jandi/DESIGN.md +191 -291
- package/web/references/jobplanet/DESIGN.md +415 -0
- package/web/references/kakao/DESIGN.md +287 -475
- package/web/references/kakaobank/DESIGN.md +220 -521
- package/web/references/kakaogames/DESIGN.md +220 -0
- package/web/references/kakaopay/DESIGN.md +207 -526
- package/web/references/karrot/DESIGN.md +227 -251
- package/web/references/kb-kookmin/DESIGN.md +308 -0
- package/web/references/kbank/DESIGN.md +220 -175
- package/web/references/kmong/DESIGN.md +281 -356
- package/web/references/krds/DESIGN.md +245 -19
- package/web/references/kream/DESIGN.md +224 -359
- package/web/references/kurly/DESIGN.md +211 -533
- package/web/references/lamborghini/DESIGN.md +198 -360
- package/web/references/lguplus/DESIGN.md +259 -0
- package/web/references/likelion/DESIGN.md +283 -0
- package/web/references/line/DESIGN.md +396 -355
- package/web/references/linear.app/DESIGN.md +209 -562
- package/web/references/lotteon/DESIGN.md +386 -0
- package/web/references/lovable/DESIGN.md +255 -349
- package/web/references/makinarocks/DESIGN.md +149 -349
- package/web/references/maum-ai/DESIGN.md +423 -0
- package/web/references/medibloc/DESIGN.md +425 -0
- package/web/references/megabox/DESIGN.md +232 -0
- package/web/references/mercari/DESIGN.md +217 -434
- package/web/references/microsoft/DESIGN.md +234 -388
- package/web/references/mildang/DESIGN.md +411 -0
- package/web/references/millie/DESIGN.md +183 -504
- package/web/references/minimax/DESIGN.md +264 -322
- package/web/references/miricanvas/DESIGN.md +182 -355
- package/web/references/miro/DESIGN.md +234 -232
- package/web/references/mistral.ai/DESIGN.md +231 -314
- package/web/references/mixi/DESIGN.md +234 -0
- package/web/references/moin/DESIGN.md +445 -0
- package/web/references/mongodb/DESIGN.md +219 -316
- package/web/references/musinsa/DESIGN.md +184 -510
- package/web/references/mynavi/DESIGN.md +242 -0
- package/web/references/myrealtrip/DESIGN.md +169 -406
- package/web/references/naver/DESIGN.md +328 -499
- package/web/references/naverwebtoon/DESIGN.md +172 -395
- package/web/references/nhn/DESIGN.md +169 -346
- package/web/references/nhncloud/DESIGN.md +185 -123
- package/web/references/notion/DESIGN.md +271 -475
- package/web/references/nrise/DESIGN.md +417 -0
- package/web/references/ohouse/DESIGN.md +210 -549
- package/web/references/oliveyoung/DESIGN.md +217 -326
- package/web/references/ollama/DESIGN.md +241 -308
- package/web/references/onestore/DESIGN.md +248 -0
- package/web/references/palantir/DESIGN.md +256 -0
- package/web/references/panasonic/DESIGN.md +276 -0
- package/web/references/patternfly/DESIGN.md +259 -0
- package/web/references/payhere/DESIGN.md +438 -0
- package/web/references/pega/DESIGN.md +262 -0
- package/web/references/peoplefund/DESIGN.md +431 -0
- package/web/references/petfriends/DESIGN.md +428 -0
- package/web/references/pinkfong/DESIGN.md +199 -367
- package/web/references/pinterest/DESIGN.md +258 -308
- package/web/references/poya/DESIGN.md +286 -0
- package/web/references/pozalabs/DESIGN.md +438 -0
- package/web/references/protopie/DESIGN.md +419 -0
- package/web/references/qraft/DESIGN.md +448 -0
- package/web/references/quotabook/DESIGN.md +449 -0
- package/web/references/recruit/DESIGN.md +247 -0
- package/web/references/remember/DESIGN.md +202 -396
- package/web/references/resend/DESIGN.md +274 -348
- package/web/references/sakura-internet/DESIGN.md +269 -0
- package/web/references/samsung/DESIGN.md +157 -359
- package/web/references/sandoll/DESIGN.md +445 -0
- package/web/references/sanity/DESIGN.md +241 -375
- package/web/references/scatterlab/DESIGN.md +412 -0
- package/web/references/selectstar/DESIGN.md +439 -0
- package/web/references/servicenow/DESIGN.md +289 -0
- package/web/references/shinhanbank/DESIGN.md +161 -341
- package/web/references/shinhancard/DESIGN.md +208 -319
- package/web/references/sionic/DESIGN.md +454 -0
- package/web/references/sktelecom/DESIGN.md +310 -0
- package/web/references/socar/DESIGN.md +125 -32
- package/web/references/softbank/DESIGN.md +231 -0
- package/web/references/sony/DESIGN.md +234 -0
- package/web/references/soop/DESIGN.md +261 -0
- package/web/references/spacex/DESIGN.md +184 -323
- package/web/references/spotify/DESIGN.md +253 -394
- package/web/references/squeezebits/DESIGN.md +441 -0
- package/web/references/stayfolio/DESIGN.md +422 -0
- package/web/references/stripe/DESIGN.md +212 -491
- package/web/references/supabase/DESIGN.md +244 -316
- package/web/references/tabling/DESIGN.md +415 -0
- package/web/references/taishinbank/DESIGN.md +243 -0
- package/web/references/teamlab/DESIGN.md +240 -0
- package/web/references/teamsparta/DESIGN.md +472 -0
- package/web/references/tellingme/DESIGN.md +392 -0
- package/web/references/tesla/DESIGN.md +244 -427
- package/web/references/thsr/DESIGN.md +284 -0
- package/web/references/thumbtack/DESIGN.md +302 -0
- package/web/references/together.ai/DESIGN.md +257 -304
- package/web/references/toss/DESIGN.md +251 -593
- package/web/references/toss-securities/DESIGN.md +255 -178
- package/web/references/tossbank/DESIGN.md +195 -491
- package/web/references/toyota/DESIGN.md +238 -0
- package/web/references/tving/DESIGN.md +197 -245
- package/web/references/typed/DESIGN.md +413 -0
- package/web/references/uber/DESIGN.md +256 -333
- package/web/references/udn/DESIGN.md +250 -0
- package/web/references/upbit/DESIGN.md +145 -256
- package/web/references/upstage/DESIGN.md +211 -204
- package/web/references/uswds/DESIGN.md +287 -0
- package/web/references/vercel/DESIGN.md +236 -440
- package/web/references/wanted/DESIGN.md +215 -487
- package/web/references/wise/DESIGN.md +223 -231
- package/web/references/wisetracker/DESIGN.md +462 -0
- package/web/references/wooribank/DESIGN.md +245 -0
- package/web/references/yanolja/DESIGN.md +250 -419
- package/web/references/yeogiotte/DESIGN.md +235 -418
- package/web/references/zapier/DESIGN.md +256 -377
- package/web/references/zendesk/DESIGN.md +288 -0
- package/web/references/zigzag/DESIGN.md +200 -621
- package/dist/install-skills-7UUDOLG2.js +0 -734
- package/dist/install-skills-7UUDOLG2.js.map +0 -1
|
@@ -4,409 +4,316 @@ name: Expo
|
|
|
4
4
|
country: US
|
|
5
5
|
category: developer-tools
|
|
6
6
|
homepage: "https://expo.dev"
|
|
7
|
-
primary_color: "#
|
|
7
|
+
primary_color: "#000000"
|
|
8
8
|
logo:
|
|
9
9
|
type: simpleicons
|
|
10
10
|
slug: expo
|
|
11
|
-
verified: "2026-
|
|
11
|
+
verified: "2026-07-13"
|
|
12
12
|
omd: "0.1"
|
|
13
13
|
ds:
|
|
14
|
-
name: Expo Brand
|
|
14
|
+
name: Expo Brand Guidelines
|
|
15
15
|
url: "https://expo.dev/brand"
|
|
16
16
|
type: brand
|
|
17
|
-
description: Expo logo
|
|
18
|
-
|
|
17
|
+
description: Official guidance for using Expo's registered name, logo, wordmark, and brand assets; it is distinct from live marketing and documentation UI evidence.
|
|
18
|
+
verification_v2:
|
|
19
|
+
schema: 2
|
|
20
|
+
checked: "2026-07-13"
|
|
21
|
+
surfaces:
|
|
22
|
+
- { id: home, kind: marketing, url: "https://expo.dev/", inspected: "2026-07-13" }
|
|
23
|
+
- { id: surface-2, kind: marketing, url: "https://expo.dev/services", inspected: "2026-07-13" }
|
|
24
|
+
- { id: surface-3, kind: marketing, url: "https://expo.dev/pricing", inspected: "2026-07-13" }
|
|
25
|
+
sources:
|
|
26
|
+
- { id: home-live, kind: product-surface, url: "https://expo.dev/", captured: "2026-07-13" }
|
|
27
|
+
- { id: services-live, kind: product-surface, url: "https://expo.dev/services", captured: "2026-07-13" }
|
|
28
|
+
- { id: pricing-live, kind: product-surface, url: "https://expo.dev/pricing", captured: "2026-07-13" }
|
|
29
|
+
- { id: brand-official, kind: brand-asset, url: "https://expo.dev/brand", captured: "2026-07-13" }
|
|
30
|
+
- { id: about-official, kind: official-doc, url: "https://expo.dev/about", captured: "2026-07-13" }
|
|
31
|
+
- { id: eas-docs, kind: official-doc, url: "https://docs.expo.dev/eas/", captured: "2026-07-13" }
|
|
32
|
+
- { id: inter-license, kind: license, url: "https://github.com/rsms/inter", captured: "2026-07-13" }
|
|
33
|
+
- { id: jetbrains-mono-license, kind: license, url: "https://github.com/JetBrains/JetBrainsMono", captured: "2026-07-13" }
|
|
34
|
+
conflicts: []
|
|
35
|
+
claims:
|
|
36
|
+
"tokens.colors.primary": &marketing { surface_id: home, source_id: home-live, method: evidence-bundle-live-inspect, captured: "2026-07-13" }
|
|
37
|
+
"tokens.colors.canvas": *marketing
|
|
38
|
+
"tokens.colors.surface": *marketing
|
|
39
|
+
"tokens.colors.foreground": *marketing
|
|
40
|
+
"tokens.colors.muted": *marketing
|
|
41
|
+
"tokens.colors.subtle": *marketing
|
|
42
|
+
"tokens.colors.on-primary": *marketing
|
|
43
|
+
"tokens.colors.hairline": *marketing
|
|
44
|
+
"tokens.colors.control-border": *marketing
|
|
45
|
+
"tokens.colors.link": *marketing
|
|
46
|
+
"tokens.typography.family.ui": *marketing
|
|
47
|
+
"tokens.typography.family.mono": *marketing
|
|
48
|
+
"tokens.typography.hero.size": *marketing
|
|
49
|
+
"tokens.typography.hero.weight": *marketing
|
|
50
|
+
"tokens.typography.hero.lineHeight": *marketing
|
|
51
|
+
"tokens.typography.hero.tracking": *marketing
|
|
52
|
+
"tokens.typography.hero.use": *marketing
|
|
53
|
+
"tokens.typography.section.size": *marketing
|
|
54
|
+
"tokens.typography.section.weight": *marketing
|
|
55
|
+
"tokens.typography.section.lineHeight": *marketing
|
|
56
|
+
"tokens.typography.section.tracking": *marketing
|
|
57
|
+
"tokens.typography.section.use": *marketing
|
|
58
|
+
"tokens.typography.subheading.size": *marketing
|
|
59
|
+
"tokens.typography.subheading.weight": *marketing
|
|
60
|
+
"tokens.typography.subheading.lineHeight": *marketing
|
|
61
|
+
"tokens.typography.subheading.tracking": *marketing
|
|
62
|
+
"tokens.typography.subheading.use": *marketing
|
|
63
|
+
"tokens.typography.body.size": *marketing
|
|
64
|
+
"tokens.typography.body.weight": *marketing
|
|
65
|
+
"tokens.typography.body.lineHeight": *marketing
|
|
66
|
+
"tokens.typography.body.use": *marketing
|
|
67
|
+
"tokens.typography.action.size": *marketing
|
|
68
|
+
"tokens.typography.action.weight": *marketing
|
|
69
|
+
"tokens.typography.action.lineHeight": *marketing
|
|
70
|
+
"tokens.typography.action.use": *marketing
|
|
71
|
+
"tokens.typography.code.size": *marketing
|
|
72
|
+
"tokens.typography.code.weight": *marketing
|
|
73
|
+
"tokens.typography.code.lineHeight": *marketing
|
|
74
|
+
"tokens.typography.code.use": *marketing
|
|
75
|
+
"tokens.spacing.xs": *marketing
|
|
76
|
+
"tokens.spacing.sm": *marketing
|
|
77
|
+
"tokens.spacing.md": *marketing
|
|
78
|
+
"tokens.spacing.lg": *marketing
|
|
79
|
+
"tokens.spacing.xl": *marketing
|
|
80
|
+
"tokens.spacing.xxl": *marketing
|
|
81
|
+
"tokens.rounded.dialog": &pricing { surface_id: surface-3, source_id: pricing-live, method: evidence-bundle-live-inspect, captured: "2026-07-13" }
|
|
82
|
+
"tokens.rounded.action": *marketing
|
|
83
|
+
"tokens.rounded.hero-action": *marketing
|
|
84
|
+
"tokens.rounded.full": *marketing
|
|
85
|
+
"tokens.components.header-primary.type": *marketing
|
|
86
|
+
"tokens.components.header-primary.bg": *marketing
|
|
87
|
+
"tokens.components.header-primary.fg": *marketing
|
|
88
|
+
"tokens.components.header-primary.radius": *marketing
|
|
89
|
+
"tokens.components.header-primary.padding": *marketing
|
|
90
|
+
"tokens.components.header-primary.height": *marketing
|
|
91
|
+
"tokens.components.header-primary.font": *marketing
|
|
92
|
+
"tokens.components.header-primary.states": *marketing
|
|
93
|
+
"tokens.components.header-primary.use": *marketing
|
|
94
|
+
"tokens.components.pricing-action.type": *pricing
|
|
95
|
+
"tokens.components.pricing-action.bg": *pricing
|
|
96
|
+
"tokens.components.pricing-action.fg": *pricing
|
|
97
|
+
"tokens.components.pricing-action.radius": *pricing
|
|
98
|
+
"tokens.components.pricing-action.padding": *pricing
|
|
99
|
+
"tokens.components.pricing-action.height": *pricing
|
|
100
|
+
"tokens.components.pricing-action.font": *pricing
|
|
101
|
+
"tokens.components.pricing-action.states": *pricing
|
|
102
|
+
"tokens.components.pricing-action.use": *pricing
|
|
103
|
+
"tokens.components.pricing-dialog.type": *pricing
|
|
104
|
+
"tokens.components.pricing-dialog.radius": *pricing
|
|
105
|
+
"tokens.components.pricing-dialog.shadow": *pricing
|
|
106
|
+
"tokens.components.pricing-dialog.font": *pricing
|
|
107
|
+
"tokens.components.pricing-dialog.states": *pricing
|
|
108
|
+
"tokens.components.pricing-dialog.use": *pricing
|
|
19
109
|
tokens:
|
|
20
|
-
source:
|
|
21
|
-
extracted: "2026-
|
|
110
|
+
source: reconciled
|
|
111
|
+
extracted: "2026-07-13"
|
|
112
|
+
note: "Only the 2026-07-13 first-party marketing bundle is token authority. Brand guidance, product documentation, font licensing, and Tier 2 analysis remain separate evidence domains."
|
|
22
113
|
colors:
|
|
23
114
|
primary: "#000000"
|
|
24
|
-
brand: "#000000"
|
|
25
115
|
canvas: "#f0f0f3"
|
|
26
116
|
surface: "#ffffff"
|
|
27
117
|
foreground: "#1c2024"
|
|
28
118
|
muted: "#60646c"
|
|
119
|
+
subtle: "#80838d"
|
|
29
120
|
on-primary: "#ffffff"
|
|
30
121
|
hairline: "#e0e1e6"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
accent-purple: "#8145b5"
|
|
34
|
-
error: "#eb8e90"
|
|
35
|
-
success: "#ab6400"
|
|
122
|
+
control-border: "#d9d9e0"
|
|
123
|
+
link: "#0d74ce"
|
|
36
124
|
typography:
|
|
37
|
-
family: {
|
|
38
|
-
|
|
39
|
-
section:
|
|
40
|
-
subheading: { size:
|
|
41
|
-
body
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 96 }
|
|
47
|
-
rounded: { sm: 6, md: 8, lg: 24, full: 9999 }
|
|
48
|
-
shadow:
|
|
49
|
-
whisper: "rgba(0,0,0,0.08) 0px 3px 6px, rgba(0,0,0,0.07) 0px 2px 4px"
|
|
50
|
-
elevated: "rgba(0,0,0,0.1) 0px 10px 20px, rgba(0,0,0,0.05) 0px 3px 6px"
|
|
125
|
+
family: { ui: "Inter", mono: "JetBrains Mono" }
|
|
126
|
+
hero: { size: 64, weight: 600, lineHeight: 1.10, tracking: -3, use: "Current marketing hero heading" }
|
|
127
|
+
section: { size: 48, weight: 600, lineHeight: 1.10, tracking: -2, use: "Repeated marketing section heading" }
|
|
128
|
+
subheading: { size: 32, weight: 600, lineHeight: 1.10, tracking: -0.5, use: "Marketing subheading" }
|
|
129
|
+
body: { size: 14, weight: 400, lineHeight: 1.40, use: "Repeated marketing body and list text" }
|
|
130
|
+
action: { size: 14, weight: 500, lineHeight: 1.40, use: "Compact action label" }
|
|
131
|
+
code: { size: 12, weight: 500, lineHeight: 1.60, use: "Observed code-oriented marketing text" }
|
|
132
|
+
spacing: { xs: 4, sm: 8, md: 12, lg: 16, xl: 24, xxl: 32 }
|
|
133
|
+
rounded: { dialog: 8, action: 36, hero-action: 48, full: 9999 }
|
|
51
134
|
components_harvested: true
|
|
52
135
|
components:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
card: { type: card, bg: "#ffffff", border: "1px solid #e0e1e6", radius: "8px", shadow: "rgba(0,0,0,0.08) 0px 3px 6px, rgba(0,0,0,0.07) 0px 2px 4px", use: "Standard content card" }
|
|
57
|
-
badge-status: { type: badge, bg: "#ffffff", fg: "#1c2024", border: "1px solid #e0e1e6", radius: "9999px", font: "12px / 500", use: "All Systems Operational pill with green dot" }
|
|
136
|
+
header-primary: { type: button, bg: "#000000", fg: "#ffffff", radius: "36px", padding: "0 16px", height: "36px", font: "14px / 500 / Inter", states: "hover and pressed observed; pressed background #010101", use: "Repeated header conversion action across the three marketing surfaces" }
|
|
137
|
+
pricing-action: { type: button, bg: "#000000", fg: "#ffffff", radius: "32px", padding: "0 12px", height: "32px", font: "12px / 500 / Inter", states: "hover background #010101 and pressed background #030304 observed", use: "Pricing-surface compact action that opens a dialog" }
|
|
138
|
+
pricing-dialog: { type: dialog, radius: "8px", shadow: "rgba(0,0,0,0.1) 0px 10px 20px, rgba(0,0,0,0.05) 0px 3px 6px", font: "16px / 400 / Inter", states: "dialog-open observed", use: "Observed pricing dialog panel; fill was not promoted because the captured panel is transparent" }
|
|
58
139
|
---
|
|
59
140
|
|
|
60
141
|
# Design System Inspiration of Expo
|
|
61
142
|
|
|
62
143
|
## 1. Visual Theme & Atmosphere
|
|
63
144
|
|
|
64
|
-
Expo
|
|
145
|
+
Expo is a React Native framework and cloud-services platform for shipping apps across native and web targets. Its current public marketing pages make that infrastructure feel calm and usable: black conversion actions, off-white planes, blue-gray text, and generous rounded geometry put capability ahead of decorative brand theatre. The three captured pages—home, services, and pricing—share the same light marketing system, while the official brand guidelines describe the intended character as simple, spacious, consistent, universally approachable, and technically excellent. Expo’s 2026 company story also extends from a framework foundation toward AI-native universal-app development and Expo Agent; that product evolution is context, not a substitute for a UI token. Documentation chrome, authenticated product UI, native clients, and brand-asset rules are separate domains and are not inferred from this marketing capture.
|
|
65
146
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
- Strictly monochromatic: pure black headlines, cool blue-gray body text, no decorative color
|
|
73
|
-
- Pill-shaped geometry everywhere — buttons, tabs, containers, images (24px–9999px radius)
|
|
74
|
-
- Massive display headlines (64px) with extreme negative letter-spacing (-1.6px to -3px)
|
|
75
|
-
- Inter as the sole typeface, used at weights 400–900 for full expressive range
|
|
76
|
-
- Whisper-soft shadows that barely lift elements from the surface
|
|
77
|
-
- Product screenshots as the only source of color in the interface
|
|
147
|
+
**Key characteristics:**
|
|
148
|
+
- Light canvas with near-black, muted blue-gray, and white structural contrast
|
|
149
|
+
- Solid black 32–48px actions, with 36px compact header actions
|
|
150
|
+
- Inter for general UI and JetBrains Mono for sparse code-oriented text
|
|
151
|
+
- Rounded action geometry and an 8px observed pricing-dialog panel
|
|
152
|
+
- A neutral, technical presentation that leaves product screenshots and code to carry detail
|
|
78
153
|
|
|
79
154
|
## 2. Color Palette & Roles
|
|
80
155
|
|
|
81
|
-
|
|
82
|
-
- **
|
|
83
|
-
- **
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
- **
|
|
87
|
-
- **
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
### Surface & Background
|
|
92
|
-
- **Cloud Gray** (`#f0f0f3`): The primary page background — a cool off-white with the faintest blue-violet tint. Not warm, not sterile — precisely technological.
|
|
93
|
-
- **Pure White** (`#ffffff`): Card surfaces, button backgrounds, and elevated content containers. Creates a clear "lifted" distinction from Cloud Gray.
|
|
94
|
-
- **Widget Dark** (`#1a1a1a`): Dark surface for dark-theme widgets and overlay elements.
|
|
95
|
-
- **Banner Dark** (`#171717`): The darkest surface variant, used for promotional banners and high-contrast containers.
|
|
96
|
-
|
|
97
|
-
### Neutrals & Text
|
|
98
|
-
- **Slate Gray** (`#60646c`): The workhorse secondary text color (305 instances). A cool blue-gray that's authoritative without being heavy.
|
|
99
|
-
- **Mid Slate** (`#555860`): Slightly darker than Slate, used for emphasized secondary text.
|
|
100
|
-
- **Silver** (`#b0b4ba`): Tertiary text, placeholders, and de-emphasized metadata. Comfortably readable but clearly receded.
|
|
101
|
-
- **Pewter** (`#999999`): Accordion icons and deeply de-emphasized UI elements in dark contexts.
|
|
102
|
-
- **Light Silver** (`#cccccc`): Arrow icons and decorative elements in dark contexts.
|
|
103
|
-
- **Dark Slate** (`#363a3f`): Borders on dark surfaces, switch tracks, and emphasized containment.
|
|
104
|
-
- **Charcoal** (`#333333`): Dark mode switch backgrounds and deep secondary surfaces.
|
|
105
|
-
|
|
106
|
-
### Semantic & Accent
|
|
107
|
-
- **Warning Amber** (`#ab6400`): A warm, deep amber for warning states — deliberately not bright yellow, conveying seriousness.
|
|
108
|
-
- **Destructive Rose** (`#eb8e90`): A soft pink-coral for disabled destructive actions — gentler than typical red, reducing alarm fatigue.
|
|
109
|
-
- **Border Lavender** (`#e0e1e6`): Standard card/container borders — a cool lavender-gray that's visible without being heavy.
|
|
110
|
-
- **Input Border** (`#d9d9e0`): Button and form element borders — slightly warmer/darker than card borders for interactive elements.
|
|
111
|
-
- **Dark Focus Ring** (`#2547d0`): Deep blue for keyboard focus indicators in dark theme contexts.
|
|
112
|
-
|
|
113
|
-
### Gradient System
|
|
114
|
-
- The design is notably **gradient-free** in the interface layer. Visual richness comes from product screenshots, the React universe illustration, and careful shadow layering rather than color gradients. This absence IS the design decision — gradients would undermine the clinical precision.
|
|
156
|
+
- **Primary action** (`#000000`): observed as the filled header, hero, and compact pricing action.
|
|
157
|
+
- **Canvas** (`#f0f0f3`) and **surface** (`#ffffff`): current light marketing planes.
|
|
158
|
+
- **Foreground** (`#1c2024`): repeated body and control text.
|
|
159
|
+
- **Muted** (`#60646c`) and **subtle** (`#80838d`): repeated secondary and lower-emphasis text/border values.
|
|
160
|
+
- **On-primary** (`#ffffff`): text on the black actions.
|
|
161
|
+
- **Hairline** (`#e0e1e6`) and **control border** (`#d9d9e0`): observed light containment values.
|
|
162
|
+
- **Link** (`#0d74ce`): repeated link-colored text and borders across all three captured marketing surfaces.
|
|
163
|
+
|
|
164
|
+
The collector also saw local blue and green values. They are not promoted to brand or semantic roles because this packet does not link a representative element to a stable Expo-wide meaning.
|
|
115
165
|
|
|
116
166
|
## 3. Typography Rules
|
|
117
167
|
|
|
118
|
-
###
|
|
119
|
-
|
|
120
|
-
- **
|
|
121
|
-
- **
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
|
129
|
-
|
|
|
130
|
-
|
|
|
131
|
-
| Body
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
| Code Body | JetBrains Mono | 16px (1rem) | 400–600 | 1.40 | normal | Inline code, terminal commands |
|
|
135
|
-
| Code Caption | JetBrains Mono | 14px (0.88rem) | 400–600 | 1.40 | normal | Code snippets, technical labels |
|
|
136
|
-
| Code Small | JetBrains Mono | 12px (0.75rem) | 400 | 1.60 | normal | Uppercase tech tags |
|
|
137
|
-
|
|
138
|
-
### Principles
|
|
139
|
-
- **One typeface, full expression**: Inter is the only sans-serif, used from weight 400 (regular) through 900 (black). This gives the design a unified voice while still achieving dramatic contrast between whisper-light body text and thundering display headlines.
|
|
140
|
-
- **Extreme negative tracking at scale**: Headlines at 64px use -1.6px to -3px letter-spacing, creating ultra-dense text blocks that feel like logotypes. This aggressive compression is the signature typographic move.
|
|
141
|
-
- **Weight as hierarchy**: 700–900 for display, 600 for headings, 500 for emphasis, 400 for body. The jumps are decisive — no ambiguous in-between weights.
|
|
142
|
-
- **Consistent 1.40 body line-height**: Nearly all body and UI text shares 1.40 line-height, creating a rhythmic vertical consistency.
|
|
168
|
+
### Evidence classes
|
|
169
|
+
|
|
170
|
+
- **Live marketing surface-use:** Inter was both computed and loaded for 990 visible uses from first-party `static.expo.dev` WOFF2 sources. It is the UI family for this reference.
|
|
171
|
+
- **Live code-oriented surface-use:** JetBrains Mono was both computed and loaded for six visible uses from first-party WOFF2 sources. It is retained as the mono family, not as general UI type.
|
|
172
|
+
- **Official font/license context:** Inter’s author distributes it under SIL OFL 1.1; JetBrains Mono is likewise OFL 1.1 and available for commercial and non-commercial use. These licenses describe the fonts, not an Expo-exclusive asset.
|
|
173
|
+
- **Declared-only:** none in the supplied bundle.
|
|
174
|
+
- **Unresolved:** `ui-monospace` appeared twice without a matching loaded FontFace; it is not a token or substitute.
|
|
175
|
+
|
|
176
|
+
| Role | Font | Size | Weight | Line Height | Tracking | Evidence use |
|
|
177
|
+
|------|------|------|--------|-------------|----------|--------------|
|
|
178
|
+
| Hero | Inter | 64px | 600 | 1.10 | -3px | Current marketing hero heading |
|
|
179
|
+
| Section | Inter | 48px | 600 | 1.10 | -2px | Repeated marketing section heading |
|
|
180
|
+
| Subheading | Inter | 32px | 600 | 1.10 | -0.5px | Marketing subheading |
|
|
181
|
+
| Body | Inter | 14px | 400 | 1.40 | normal | Repeated body and list text |
|
|
182
|
+
| Action | Inter | 14px | 500 | 1.40 | normal | Compact action label |
|
|
183
|
+
| Code-oriented | JetBrains Mono | 12px | 500 | 1.60 | normal | Observed code-oriented marketing text |
|
|
143
184
|
|
|
144
185
|
## 4. Component Stylings
|
|
145
186
|
|
|
146
|
-
###
|
|
147
|
-
|
|
148
|
-
**
|
|
149
|
-
- Background:
|
|
150
|
-
- Text:
|
|
151
|
-
-
|
|
152
|
-
-
|
|
153
|
-
-
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
-
|
|
164
|
-
-
|
|
165
|
-
-
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
-
|
|
172
|
-
-
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
-
|
|
198
|
-
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
- Animated/illustrated React logo as the visual centerpiece
|
|
204
|
-
- Connects Expo's identity to the React ecosystem
|
|
205
|
-
- The only illustrative element on an otherwise photographic page
|
|
206
|
-
|
|
207
|
-
**Device Preview Grid**
|
|
208
|
-
- Multiple device types (phone, tablet, web) shown simultaneously
|
|
209
|
-
- Demonstrates cross-platform capability visually
|
|
210
|
-
- Each device uses realistic device chrome
|
|
211
|
-
|
|
212
|
-
**Status Badge**
|
|
213
|
-
- "All Systems Operational" pill in the nav
|
|
214
|
-
- Green dot + text — compact trust signal
|
|
215
|
-
- Pill-shaped (36px radius)
|
|
187
|
+
### Header primary action
|
|
188
|
+
|
|
189
|
+
**Default**
|
|
190
|
+
- Background: `#000000`
|
|
191
|
+
- Text: `#ffffff`
|
|
192
|
+
- Radius: `36px`
|
|
193
|
+
- Padding: `0px 16px`
|
|
194
|
+
- Height: `36px`
|
|
195
|
+
- Font: `14px / 500 / Inter`
|
|
196
|
+
- Use: Repeated header conversion action across home, services, and pricing
|
|
197
|
+
|
|
198
|
+
Hover and pressed states were captured; the pressed selector resolves to `#010101` background. Evidence: `home::[data-omd-capture="9"]` and `home::[data-omd-capture="9"]::state-pressed` on the `home` marketing surface.
|
|
199
|
+
|
|
200
|
+
### Hero actions
|
|
201
|
+
|
|
202
|
+
**Primary**
|
|
203
|
+
- Background: `#000000`
|
|
204
|
+
- Text: `#ffffff`
|
|
205
|
+
- Radius: `48px`
|
|
206
|
+
- Padding: `0px 24px`
|
|
207
|
+
- Height: `48px`
|
|
208
|
+
- Font: `16px / 500 / Inter`
|
|
209
|
+
- Use: Home marketing hero primary action
|
|
210
|
+
|
|
211
|
+
**Secondary**
|
|
212
|
+
- Background: `#f0f0f3`
|
|
213
|
+
- Text: `#1c2024`
|
|
214
|
+
- Radius: `48px`
|
|
215
|
+
- Padding: `0px 24px`
|
|
216
|
+
- Height: `48px`
|
|
217
|
+
- Font: `16px / 500 / Inter`
|
|
218
|
+
- Use: Home marketing hero secondary action
|
|
219
|
+
|
|
220
|
+
Evidence: `home::[data-omd-capture="11"]` (primary) and `home::[data-omd-capture="12"]` (secondary), both on `home`. No unobserved state variant is added.
|
|
221
|
+
|
|
222
|
+
### Pricing compact action
|
|
223
|
+
|
|
224
|
+
**Default**
|
|
225
|
+
- Background: `#000000`
|
|
226
|
+
- Text: `#ffffff`
|
|
227
|
+
- Radius: `32px`
|
|
228
|
+
- Padding: `0px 12px`
|
|
229
|
+
- Height: `32px`
|
|
230
|
+
- Font: `12px / 500 / Inter`
|
|
231
|
+
- Use: Compact pricing action that opens a dialog
|
|
232
|
+
|
|
233
|
+
Hover resolves to `#010101`; pressed resolves to `#030304`. Evidence: `surface-3::[data-omd-capture="23"]`, `::state-hover`, and `::state-pressed` on `https://expo.dev/pricing`.
|
|
234
|
+
|
|
235
|
+
### Pricing dialog panel
|
|
236
|
+
|
|
237
|
+
**Open**
|
|
238
|
+
- Radius: `8px`
|
|
239
|
+
- Shadow: `rgba(0,0,0,0.1) 0px 10px 20px, rgba(0,0,0,0.05) 0px 3px 6px`
|
|
240
|
+
- Font: `16px / 400 / Inter`
|
|
241
|
+
- Use: Pricing dialog panel after the compact action opens it
|
|
242
|
+
|
|
243
|
+
Evidence: `surface-3::[data-omd-interaction-capture="dialog-0-1"]` with `dialog-open`. The captured panel is transparent, so no fill token is invented.
|
|
216
244
|
|
|
217
245
|
## 5. Layout Principles
|
|
218
246
|
|
|
219
|
-
|
|
220
|
-
- Base unit: 8px
|
|
221
|
-
- Scale: 1px, 2px, 4px, 8px, 12px, 16px, 24px, 32px, 40px, 48px, 64px, 80px, 96px, 144px
|
|
222
|
-
- Button padding: 0px 12px (unusually compact — height driven by line-height)
|
|
223
|
-
- Card internal padding: approximately 24–32px
|
|
224
|
-
- Section vertical spacing: enormous (estimated 96–144px between major sections)
|
|
225
|
-
- Component gap: 16–24px between sibling elements
|
|
226
|
-
|
|
227
|
-
### Grid & Container
|
|
228
|
-
- Max container width: approximately 1200–1400px, centered
|
|
229
|
-
- Hero: centered single-column with massive breathing room
|
|
230
|
-
- Feature sections: alternating layouts (image left/right, full-width showcases)
|
|
231
|
-
- Card grids: 2–3 column for feature highlights
|
|
232
|
-
- Full-width sections with contained inner content
|
|
233
|
-
|
|
234
|
-
### Whitespace Philosophy
|
|
235
|
-
- **Gallery-like pacing**: Each section feels like its own exhibit, surrounded by vast empty space. This creates a premium, unhurried browsing experience.
|
|
236
|
-
- **Breathing room is the design**: The generous whitespace IS the primary design element — it communicates confidence, quality, and that each feature deserves individual attention.
|
|
237
|
-
- **Content islands**: Sections float as isolated "islands" in the white space, connected by scrolling rather than visual continuation.
|
|
238
|
-
|
|
239
|
-
### Border Radius Scale
|
|
240
|
-
- Nearly squared (4px): Small inline elements, tags
|
|
241
|
-
- Subtly rounded (6px): Buttons, form inputs, combo boxes — the functional interactive radius
|
|
242
|
-
- Comfortably rounded (8px): Standard content cards, containers
|
|
243
|
-
- Generously rounded (16px): Feature tabs, content panels
|
|
244
|
-
- Very rounded (24px): Buttons, video/image containers, tabpanels — the signature softness
|
|
245
|
-
- Highly rounded (32–36px): Hero CTAs, status badges, nav buttons
|
|
246
|
-
- Pill-shaped (9999px): Primary action buttons, tags, avatars — maximum friendliness
|
|
247
|
+
The bundle’s repeated spacing values form a small working scale: 4, 8, 12, 16, 24, and 32px. The official brand guidance supports the observed spacious, consistent presentation, but the collector did not establish a formal grid, maximum width, or responsive breakpoint. Treat those unmeasured layout rules as absent rather than extrapolating a system.
|
|
247
248
|
|
|
248
|
-
|
|
249
|
+
Observed rounded values are role-specific: 36px compact actions, 48px hero actions, 32px compact pricing actions, and an 8px dialog panel. `9999px` also appears in a small number of marketing controls, but no single generic pill component is promoted from it.
|
|
249
250
|
|
|
250
|
-
|
|
251
|
-
|-------|-----------|-----|
|
|
252
|
-
| Flat (Level 0) | No shadow | Cloud Gray page background, inline text |
|
|
253
|
-
| Surface (Level 1) | White bg, no shadow | Standard white cards on Cloud Gray |
|
|
254
|
-
| Whisper (Level 2) | `rgba(0,0,0,0.08) 0px 3px 6px` + `rgba(0,0,0,0.07) 0px 2px 4px` | Subtle card lift, hover states |
|
|
255
|
-
| Elevated (Level 3) | `rgba(0,0,0,0.1) 0px 10px 20px` + `rgba(0,0,0,0.05) 0px 3px 6px` | Feature showcases, product screenshots |
|
|
256
|
-
| Modal (Level 4) | Dark overlay (`--dialog-overlay-background-color`) + heavy shadow | Dialogs, overlays |
|
|
251
|
+
## 6. Depth & Elevation
|
|
257
252
|
|
|
258
|
-
|
|
253
|
+
Most captured actions are flat. The only promoted elevation is the open pricing dialog panel: `rgba(0,0,0,0.1) 0px 10px 20px, rgba(0,0,0,0.05) 0px 3px 6px`. No generic card, hover, or modal-overlay shadow token is established by this packet.
|
|
259
254
|
|
|
260
255
|
## 7. Do's and Don'ts
|
|
261
256
|
|
|
262
257
|
### Do
|
|
263
|
-
|
|
264
|
-
-
|
|
265
|
-
-
|
|
266
|
-
-
|
|
267
|
-
-
|
|
268
|
-
- Maintain enormous vertical spacing between sections (96px+) — the gallery pacing defines the premium feel
|
|
269
|
-
- Use product screenshots as the primary visual content — the interface stays monochrome, the products bring color
|
|
270
|
-
- Apply Inter at the full weight range (400–900) — weight contrast IS the hierarchy
|
|
258
|
+
|
|
259
|
+
- Use the observed light canvas, white surface, near-black text, and black conversion-action hierarchy together.
|
|
260
|
+
- Keep header, hero, and compact pricing actions in their separately measured 36px, 48px, and 32px geometries.
|
|
261
|
+
- Use Inter for general marketing UI and reserve JetBrains Mono for evidence-backed code-oriented text.
|
|
262
|
+
- Preserve the close black hover and pressed values only for the compact pricing action where they were captured.
|
|
271
263
|
|
|
272
264
|
### Don't
|
|
273
|
-
|
|
274
|
-
-
|
|
275
|
-
-
|
|
276
|
-
-
|
|
277
|
-
-
|
|
278
|
-
- Don't use letter-spacing wider than -0.25px on body text — extreme tracking is reserved for display only
|
|
279
|
-
- Don't use borders heavier than 2px — containment is subtle, achieved through background color and gentle borders
|
|
280
|
-
- Don't add gradients to the interface — visual richness comes from content, not decoration
|
|
281
|
-
- Don't use saturated colors outside of semantic contexts — the palette is strictly grayscale + functional blue
|
|
265
|
+
|
|
266
|
+
- Do not turn a locally observed green or blue value into a global Expo semantic token without element-level evidence.
|
|
267
|
+
- Do not substitute `ui-monospace` for JetBrains Mono; its two computed uses lacked a loaded FontFace match.
|
|
268
|
+
- Do not infer inputs, cards, authenticated dashboard controls, native app components, or responsive breakpoints from this marketing-only bundle.
|
|
269
|
+
- Do not treat the official brand asset page or documentation chrome as a source for these marketing component measurements.
|
|
282
270
|
|
|
283
271
|
## 8. Responsive Behavior
|
|
284
272
|
|
|
285
|
-
|
|
286
|
-
| Name | Width | Key Changes |
|
|
287
|
-
|------|-------|-------------|
|
|
288
|
-
| Mobile | <640px | Single column, hamburger nav, stacked cards, hero text scales to ~36px |
|
|
289
|
-
| Tablet | 640–1024px | 2-column grids, condensed nav, medium hero text |
|
|
290
|
-
| Desktop | >1024px | Full multi-column layout, expanded nav, massive hero (64px) |
|
|
291
|
-
|
|
292
|
-
*Only one explicit breakpoint detected (640px), suggesting a fluid, container-query or min()/clamp()-based responsive system rather than fixed breakpoint snapping.*
|
|
293
|
-
|
|
294
|
-
### Touch Targets
|
|
295
|
-
- Buttons use generous radius (24–36px) creating large, finger-friendly surfaces
|
|
296
|
-
- Navigation links spaced with adequate gap
|
|
297
|
-
- Status badge sized for touch (36px radius)
|
|
298
|
-
- Minimum recommended: 44x44px
|
|
299
|
-
|
|
300
|
-
### Collapsing Strategy
|
|
301
|
-
- **Navigation**: Full horizontal nav with CTA collapses to hamburger on mobile
|
|
302
|
-
- **Feature sections**: Multi-column → stacked single column
|
|
303
|
-
- **Hero text**: 64px → ~36px progressive scaling
|
|
304
|
-
- **Device previews**: Grid → stacked/carousel
|
|
305
|
-
- **Cards**: Side-by-side → vertical stacking
|
|
306
|
-
- **Spacing**: Reduces proportionally but maintains generous rhythm
|
|
307
|
-
|
|
308
|
-
### Image Behavior
|
|
309
|
-
- Product screenshots scale proportionally
|
|
310
|
-
- Device mockups may simplify or show fewer devices on mobile
|
|
311
|
-
- Rounded corners maintained at all sizes
|
|
312
|
-
- Lazy loading for below-fold content
|
|
273
|
+
No viewport comparison is included in the supplied collector evidence. Responsive breakpoints, collapsed navigation, touch-target policy, and mobile component variants are therefore unresolved and omitted.
|
|
313
274
|
|
|
314
275
|
## 9. Agent Prompt Guide
|
|
315
276
|
|
|
316
|
-
|
|
317
|
-
- Primary CTA / Headlines: "Expo Black (#000000)"
|
|
318
|
-
- Page Background: "Cloud Gray (#f0f0f3)"
|
|
319
|
-
- Card Surface: "Pure White (#ffffff)"
|
|
320
|
-
- Body Text: "Near Black (#1c2024)"
|
|
321
|
-
- Secondary Text: "Slate Gray (#60646c)"
|
|
322
|
-
- Borders: "Border Lavender (#e0e1e6)"
|
|
323
|
-
- Links: "Link Cobalt (#0d74ce)"
|
|
324
|
-
- Tertiary Text: "Silver (#b0b4ba)"
|
|
325
|
-
|
|
326
|
-
### Example Component Prompts
|
|
327
|
-
- "Create a hero section on Cloud Gray (#f0f0f3) with a massive headline at 64px Inter weight 700, line-height 1.10, letter-spacing -3px. Text in Expo Black (#000000). Below, add a subtitle in Slate Gray (#60646c) at 18px. Place a black pill-shaped CTA button (9999px radius) beneath."
|
|
328
|
-
- "Design a feature card on Pure White (#ffffff) with a 1px solid Border Lavender (#e0e1e6) border and comfortably rounded corners (8px). Title in Near Black (#1c2024) at 20px Inter weight 600, description in Slate Gray (#60646c) at 16px. Add a whisper shadow (rgba(0,0,0,0.08) 0px 3px 6px)."
|
|
329
|
-
- "Build a navigation bar with Expo logo on the left, text links in Near Black (#1c2024) at 14px Inter weight 500, and a black pill CTA button on the right. Background: transparent with blur backdrop. Bottom border: 1px solid Border Lavender (#e0e1e6)."
|
|
330
|
-
- "Create a code block using JetBrains Mono at 14px on a Pure White surface with Border Lavender border and 8px radius. Code in Near Black, keywords in Link Cobalt (#0d74ce)."
|
|
331
|
-
- "Design a status badge pill (9999px radius) with a green dot and 'All Systems Operational' text in Inter 12px weight 500. Background: Pure White, border: 1px solid Input Border (#d9d9e0)."
|
|
332
|
-
|
|
333
|
-
### Iteration Guide
|
|
334
|
-
1. Focus on ONE component at a time
|
|
335
|
-
2. Reference specific color names and hex codes — "use Slate Gray (#60646c)" not "make it gray"
|
|
336
|
-
3. Use radius values deliberately — 6px for buttons, 8px for cards, 24px for images, 9999px for pills
|
|
337
|
-
4. Describe the "feel" alongside measurements — "enormous breathing room with 96px section spacing"
|
|
338
|
-
5. Always specify Inter and the exact weight — weight contrast IS the hierarchy
|
|
339
|
-
6. For shadows, specify "whisper shadow" or "standard elevation" from the elevation table
|
|
340
|
-
7. Keep the interface monochrome — let product content be the color
|
|
277
|
+
Use only the observed system: a `#f0f0f3` canvas, `#1c2024` text, `#60646c` supporting text, black actions with white labels, and Inter. Pick the action geometry by its observed context: 36px header, 48px hero, or 32px compact pricing. Use the 8px dialog panel and its measured shadow only for a pricing-dialog-like overlay. Do not add error, success, input, card, or mobile rules from this reference.
|
|
341
278
|
|
|
342
279
|
## 10. Voice & Tone
|
|
343
280
|
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
| Context | Tone |
|
|
347
|
-
|---|---|
|
|
348
|
-
| CTA | Verb. "Try it free", "Sign up", "Get started" |
|
|
349
|
-
| Marketing | Short claim + screenshots. Capability-list, not benefit-list |
|
|
350
|
-
| Documentation | Imperative, code-block-first, deeply linked |
|
|
351
|
-
| Error (build) | Stack-trace-friendly. Show the actual EAS build error |
|
|
352
|
-
|
|
353
|
-
**Voice samples**
|
|
354
|
-
- Marketing CTA: *"Try it free"* / *"Sign up"* <!-- verified: expo.dev homepage 2026-05 -->
|
|
355
|
-
|
|
356
|
-
**Forbidden phrases.** "Revolutionize mobile", "magic". Apology theatre.
|
|
281
|
+
The official home page frames Expo around building, deploying, and iterating on apps, while EAS documentation names concrete services such as Build, Submit, Update, Workflows, and Hosting. The current voice is direct, technical, and action-led: short service labels and practical imperative calls such as “Get started for free,” “Read the docs,” and “Talk to our team.” The brand guidelines add a useful boundary: simple, approachable, and technically excellent rather than ornamental.
|
|
357
282
|
|
|
358
283
|
## 11. Brand Narrative
|
|
359
284
|
|
|
360
|
-
Expo
|
|
285
|
+
Expo describes itself as crafting a universal way to write and distribute apps. Its official About page dates the company’s founding to 2015 and positions its work around helping creators and enterprises build and publish apps; it also identifies Expo as a React Foundation founding member with ambitions for AI-native universal apps. The public home page gives that story a product shape: a React Native framework plus cloud services for building, deploying, updating, and observing applications.
|
|
286
|
+
|
|
287
|
+
The current evolution is explicit in Expo’s April 2026 first-party funding post: the company raised a $45 million Series B and introduced Expo Agent while explaining a broader effort to make app creation easier and faster. This narrative is company and product context, not evidence that the marketing UI’s measured tokens apply to authenticated EAS dashboards or native Expo clients.
|
|
361
288
|
|
|
362
289
|
## 12. Principles
|
|
363
290
|
|
|
364
|
-
1. **
|
|
365
|
-
2. **
|
|
366
|
-
3. **
|
|
367
|
-
4. **
|
|
368
|
-
5. **Whisper shadows, never heavy.** *UI implication:* depth via subtle gradients + 1px borders; no 0.5+ opacity shadows.
|
|
291
|
+
1. **Universal application delivery.** Expo’s public product message spans Android, iOS, and web. *UI implication:* explain cross-platform capability with product evidence, not platform-specific visual invention.
|
|
292
|
+
2. **Neutral, reliable foundations.** The official brand manifesto explicitly contrasts Expo’s foundation with more expressive platform design languages. *UI implication:* prefer the observed quiet light hierarchy over decorative color.
|
|
293
|
+
3. **Simple, spacious, consistent presentation.** These are first-party brand-guideline goals. *UI implication:* retain measured spacing and rounded-action roles; do not manufacture a full grid.
|
|
294
|
+
4. **Concrete developer operations.** EAS documentation describes build, submit, update, workflow, hosting, and observability services. *UI implication:* use concise, task-oriented labels rather than generic benefit copy.
|
|
369
295
|
|
|
370
296
|
## 13. Personas
|
|
371
297
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
**Yuki Tanaka, 29, Tokyo.** Indie developer shipping mobile-first SaaS. EAS Build replaces Apple/Google certificate management she'd otherwise navigate manually.
|
|
298
|
+
The first-party public material identifies two supported audience groups without inventing named personas:
|
|
375
299
|
|
|
376
|
-
**
|
|
377
|
-
|
|
378
|
-
**
|
|
300
|
+
- **Creators and individual developers:** the About page says Expo helps creators build and publish apps; the home page offers a free starting path and device-oriented development tools.
|
|
301
|
+
- **Enterprise teams:** the About page includes enterprises, while the home page and pricing surface provide an enterprise path and EAS services for application lifecycle work.
|
|
302
|
+
- **Existing React Native teams:** EAS documentation describes deeply integrated cloud services for Expo and React Native apps, including build, submission, update, workflow, hosting, and observability needs.
|
|
379
303
|
|
|
380
304
|
## 14. States
|
|
381
305
|
|
|
382
|
-
|
|
383
|
-
|---|---|
|
|
384
|
-
| **Empty (no projects)** | "Create your first app with `npx create-expo-app`" |
|
|
385
|
-
| **Empty (no builds)** | "Submit your first build" with EAS CLI snippet |
|
|
386
|
-
| **Loading (build running)** | Persistent progress with step + ETA (provisioning, fetching deps, archiving) |
|
|
387
|
-
| **Loading (preview)** | QR code for Expo Go alongside skeleton |
|
|
388
|
-
| **Error (build)** | Full log with collapsible sections + suggestion |
|
|
389
|
-
| **Error (config)** | Specific reason + link to docs section |
|
|
390
|
-
| **Success (build)** | Build artifacts download links + install QR |
|
|
391
|
-
| **Success (deploy/update)** | Update channel info + when users will receive |
|
|
392
|
-
| **Skeleton (project list)** | Whisper-shadow rectangles |
|
|
393
|
-
| **Disabled (no quota)** | 0.5 opacity + upgrade link |
|
|
394
|
-
| **Loading (long install)** | Real-time log stream |
|
|
306
|
+
The public pricing surface exposes a dialog-open interaction, documented in §4. No authenticated project, build, form-validation, loading, error, empty, success, skeleton, or disabled state was captured; those product states are not specified here.
|
|
395
307
|
|
|
396
308
|
## 15. Motion & Easing
|
|
397
309
|
|
|
398
|
-
|
|
399
|
-
|---|---|---|
|
|
400
|
-
| `motion-instant` | 0ms | Toggle |
|
|
401
|
-
| `motion-fast` | 150ms | Hover |
|
|
402
|
-
| `motion-standard` | 250ms | Modal, panel |
|
|
403
|
-
|
|
404
|
-
Standard cubic-bezier; no bounce. `prefers-reduced-motion: reduce` removes hover transitions.
|
|
310
|
+
The supplied evidence records interaction states but no transition duration, easing curve, or reduced-motion rule. Motion tokens are unresolved and omitted.
|
|
405
311
|
|
|
406
312
|
---
|
|
407
313
|
|
|
408
|
-
**Verified:** 2026-
|
|
409
|
-
**Tier 1 sources:** expo.dev
|
|
410
|
-
**Tier 2 sources:** styles.refero.design
|
|
411
|
-
|
|
412
|
-
|
|
314
|
+
**Verified:** 2026-07-13
|
|
315
|
+
**Tier 1 sources:** https://expo.dev/ · https://expo.dev/services · https://expo.dev/pricing · https://expo.dev/brand · https://expo.dev/about · https://docs.expo.dev/eas/
|
|
316
|
+
**Tier 2 sources:** https://getdesign.md/expo/design-md (independent analysis; examined) · https://styles.refero.design/?q=Expo (query attempted; endpoint returned an internal error)
|
|
317
|
+
The getdesign dark-theme summary was resolved in favor of the current inspectable first-party light surfaces and was not used as token authority.
|
|
318
|
+
|
|
319
|
+
**Conflicts unresolved:** none
|