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.
Files changed (247) hide show
  1. package/.claude/hooks/lib/preferences-parser.cjs +1 -0
  2. package/.claude/hooks/lib/preferences-writer.cjs +1 -0
  3. package/.claude/hooks/post-edit-watch.cjs +1 -0
  4. package/.claude/hooks/session-end-foldin.cjs +1 -0
  5. package/.claude/hooks/session-state-loader.cjs +1 -0
  6. package/.claude/hooks/skill-activation.cjs +1 -0
  7. package/.claude/settings.json +10 -1
  8. package/.github/assets/logo-bg.png +0 -0
  9. package/AGENTS.md +20 -1
  10. package/CHANGELOG.md +482 -0
  11. package/MIGRATION.md +103 -0
  12. package/README.ja.md +56 -19
  13. package/README.ko.md +47 -30
  14. package/README.md +48 -30
  15. package/README.zh-TW.md +59 -22
  16. package/agents/AGENT.md +8 -7
  17. package/agents/omd-codex-image.md +1 -1
  18. package/agents/omd-critic.md +6 -7
  19. package/agents/omd-designer-review.md +1 -1
  20. package/agents/omd-final-qa.md +1 -1
  21. package/agents/omd-humanizer.md +38 -0
  22. package/agents/omd-kr-writer.md +3 -4
  23. package/agents/omd-locale-adapter.md +12 -16
  24. package/agents/omd-master.md +24 -19
  25. package/agents/omd-microcopy.md +1 -1
  26. package/agents/omd-orchestrator.md +7 -8
  27. package/agents/omd-slop-auditor.md +31 -0
  28. package/agents/omd-ux-researcher.md +1 -1
  29. package/data/reference-fingerprints.json +1995 -38
  30. package/dist/bin/oh-my-design.js +16 -8
  31. package/dist/bin/oh-my-design.js.map +1 -1
  32. package/dist/chunk-UJIHCEYF.js +99 -0
  33. package/dist/chunk-UJIHCEYF.js.map +1 -0
  34. package/dist/doctor-LDWSFM3I.js +763 -0
  35. package/dist/doctor-LDWSFM3I.js.map +1 -0
  36. package/dist/install-skills-ZZFNJ2II.js +1120 -0
  37. package/dist/install-skills-ZZFNJ2II.js.map +1 -0
  38. package/docs/CLI_QUICKSTART.md +157 -0
  39. package/package.json +25 -4
  40. package/scripts/postinstall.cjs +5 -4
  41. package/skills/claude-design/SKILL.md +38 -14
  42. package/skills/claude-design/references/claude-design-flow.md +11 -11
  43. package/skills/claude-design/references/codebase-analysis.md +5 -4
  44. package/skills/omd-final-qa/SKILL.md +1 -1
  45. package/skills/omd-harness/SKILL.md +51 -50
  46. package/skills/omd-humanize/SKILL.md +116 -0
  47. package/skills/omd-humanize/agents/openai.yaml +4 -0
  48. package/skills/omd-humanize/references/locale-playbooks.md +102 -0
  49. package/skills/omd-humanize/references/sources.md +11 -0
  50. package/skills/omd-init/SKILL.md +18 -12
  51. package/skills/omd-locale-adapter/SKILL.md +58 -91
  52. package/skills/omd-orchestrator/SKILL.md +11 -5
  53. package/skills/omd-reference-capture/SKILL.md +80 -26
  54. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-LICENSE.txt +202 -0
  55. package/skills/omd-reference-capture/scripts/PLAYWRIGHT-NOTICE.txt +5 -0
  56. package/skills/omd-reference-capture/scripts/THIRD_PARTY_NOTICES.md +3 -0
  57. package/skills/omd-reference-capture/scripts/capture-reference-evidence.mjs +159906 -0
  58. package/skills/omd-slop-audit/SKILL.md +110 -0
  59. package/skills/omd-slop-audit/agents/openai.yaml +4 -0
  60. package/skills/omd-slop-audit/references/pattern-catalog.md +96 -0
  61. package/skills/omd-slop-audit/references/sources.md +24 -0
  62. package/web/references/104/DESIGN.md +354 -0
  63. package/web/references/11st/DESIGN.md +197 -316
  64. package/web/references/29cm/DESIGN.md +297 -393
  65. package/web/references/42dot/DESIGN.md +390 -0
  66. package/web/references/8percent/DESIGN.md +438 -0
  67. package/web/references/ably/DESIGN.md +267 -572
  68. package/web/references/acer/DESIGN.md +329 -0
  69. package/web/references/airbnb/DESIGN.md +219 -557
  70. package/web/references/alipay/DESIGN.md +179 -420
  71. package/web/references/apple/DESIGN.md +224 -498
  72. package/web/references/asleep/DESIGN.md +402 -0
  73. package/web/references/au/DESIGN.md +334 -0
  74. package/web/references/autopedia/DESIGN.md +382 -0
  75. package/web/references/aws-cloudscape/DESIGN.md +241 -0
  76. package/web/references/baemin/DESIGN.md +332 -491
  77. package/web/references/banksalad/DESIGN.md +269 -180
  78. package/web/references/barogo/DESIGN.md +416 -0
  79. package/web/references/beusable/DESIGN.md +464 -0
  80. package/web/references/bilibili/DESIGN.md +206 -374
  81. package/web/references/bmw/DESIGN.md +162 -276
  82. package/web/references/brandi/DESIGN.md +184 -325
  83. package/web/references/catchtable/DESIGN.md +219 -264
  84. package/web/references/cgv/DESIGN.md +317 -0
  85. package/web/references/channeltalk/DESIGN.md +210 -336
  86. package/web/references/china-airlines/DESIGN.md +291 -0
  87. package/web/references/cjonstyle/DESIGN.md +453 -0
  88. package/web/references/class101/DESIGN.md +168 -387
  89. package/web/references/classum/DESIGN.md +228 -203
  90. package/web/references/claude/DESIGN.md +242 -479
  91. package/web/references/clay/DESIGN.md +179 -377
  92. package/web/references/clickhouse/DESIGN.md +254 -343
  93. package/web/references/cohere/DESIGN.md +214 -324
  94. package/web/references/coinone/DESIGN.md +199 -179
  95. package/web/references/corca/DESIGN.md +414 -0
  96. package/web/references/coupang/DESIGN.md +205 -475
  97. package/web/references/cursor/DESIGN.md +240 -381
  98. package/web/references/dabang/DESIGN.md +248 -213
  99. package/web/references/dable/DESIGN.md +431 -0
  100. package/web/references/datarize/DESIGN.md +217 -330
  101. package/web/references/dealicious/DESIGN.md +402 -0
  102. package/web/references/drdiary/DESIGN.md +404 -0
  103. package/web/references/elastic/DESIGN.md +238 -0
  104. package/web/references/elevenlabs/DESIGN.md +183 -321
  105. package/web/references/eslite/DESIGN.md +257 -0
  106. package/web/references/evaair/DESIGN.md +338 -0
  107. package/web/references/expo/DESIGN.md +238 -331
  108. package/web/references/familymart-tw/DESIGN.md +254 -0
  109. package/web/references/ferrari/DESIGN.md +160 -377
  110. package/web/references/figma/DESIGN.md +197 -451
  111. package/web/references/fitpet/DESIGN.md +445 -0
  112. package/web/references/flex/DESIGN.md +170 -253
  113. package/web/references/framer/DESIGN.md +197 -340
  114. package/web/references/freee/DESIGN.md +211 -533
  115. package/web/references/friendliai/DESIGN.md +431 -0
  116. package/web/references/frip/DESIGN.md +440 -0
  117. package/web/references/gangnamunni/DESIGN.md +154 -591
  118. package/web/references/gaudiolab/DESIGN.md +414 -0
  119. package/web/references/google/DESIGN.md +290 -398
  120. package/web/references/hashicorp/DESIGN.md +273 -318
  121. package/web/references/heydealer/DESIGN.md +429 -0
  122. package/web/references/humanscape/DESIGN.md +433 -0
  123. package/web/references/hyundai/DESIGN.md +158 -368
  124. package/web/references/hyundaicard/DESIGN.md +171 -121
  125. package/web/references/ibm/DESIGN.md +227 -378
  126. package/web/references/idus/DESIGN.md +450 -0
  127. package/web/references/igaworks/DESIGN.md +437 -0
  128. package/web/references/inflearn/DESIGN.md +221 -366
  129. package/web/references/intuit/DESIGN.md +244 -0
  130. package/web/references/jandi/DESIGN.md +191 -291
  131. package/web/references/jobplanet/DESIGN.md +415 -0
  132. package/web/references/kakao/DESIGN.md +287 -475
  133. package/web/references/kakaobank/DESIGN.md +220 -521
  134. package/web/references/kakaogames/DESIGN.md +220 -0
  135. package/web/references/kakaopay/DESIGN.md +207 -526
  136. package/web/references/karrot/DESIGN.md +227 -251
  137. package/web/references/kb-kookmin/DESIGN.md +308 -0
  138. package/web/references/kbank/DESIGN.md +220 -175
  139. package/web/references/kmong/DESIGN.md +281 -356
  140. package/web/references/krds/DESIGN.md +245 -19
  141. package/web/references/kream/DESIGN.md +224 -359
  142. package/web/references/kurly/DESIGN.md +211 -533
  143. package/web/references/lamborghini/DESIGN.md +198 -360
  144. package/web/references/lguplus/DESIGN.md +259 -0
  145. package/web/references/likelion/DESIGN.md +283 -0
  146. package/web/references/line/DESIGN.md +396 -355
  147. package/web/references/linear.app/DESIGN.md +209 -562
  148. package/web/references/lotteon/DESIGN.md +386 -0
  149. package/web/references/lovable/DESIGN.md +255 -349
  150. package/web/references/makinarocks/DESIGN.md +149 -349
  151. package/web/references/maum-ai/DESIGN.md +423 -0
  152. package/web/references/medibloc/DESIGN.md +425 -0
  153. package/web/references/megabox/DESIGN.md +232 -0
  154. package/web/references/mercari/DESIGN.md +217 -434
  155. package/web/references/microsoft/DESIGN.md +234 -388
  156. package/web/references/mildang/DESIGN.md +411 -0
  157. package/web/references/millie/DESIGN.md +183 -504
  158. package/web/references/minimax/DESIGN.md +264 -322
  159. package/web/references/miricanvas/DESIGN.md +182 -355
  160. package/web/references/miro/DESIGN.md +234 -232
  161. package/web/references/mistral.ai/DESIGN.md +231 -314
  162. package/web/references/mixi/DESIGN.md +234 -0
  163. package/web/references/moin/DESIGN.md +445 -0
  164. package/web/references/mongodb/DESIGN.md +219 -316
  165. package/web/references/musinsa/DESIGN.md +184 -510
  166. package/web/references/mynavi/DESIGN.md +242 -0
  167. package/web/references/myrealtrip/DESIGN.md +169 -406
  168. package/web/references/naver/DESIGN.md +328 -499
  169. package/web/references/naverwebtoon/DESIGN.md +172 -395
  170. package/web/references/nhn/DESIGN.md +169 -346
  171. package/web/references/nhncloud/DESIGN.md +185 -123
  172. package/web/references/notion/DESIGN.md +271 -475
  173. package/web/references/nrise/DESIGN.md +417 -0
  174. package/web/references/ohouse/DESIGN.md +210 -549
  175. package/web/references/oliveyoung/DESIGN.md +217 -326
  176. package/web/references/ollama/DESIGN.md +241 -308
  177. package/web/references/onestore/DESIGN.md +248 -0
  178. package/web/references/palantir/DESIGN.md +256 -0
  179. package/web/references/panasonic/DESIGN.md +276 -0
  180. package/web/references/patternfly/DESIGN.md +259 -0
  181. package/web/references/payhere/DESIGN.md +438 -0
  182. package/web/references/pega/DESIGN.md +262 -0
  183. package/web/references/peoplefund/DESIGN.md +431 -0
  184. package/web/references/petfriends/DESIGN.md +428 -0
  185. package/web/references/pinkfong/DESIGN.md +199 -367
  186. package/web/references/pinterest/DESIGN.md +258 -308
  187. package/web/references/poya/DESIGN.md +286 -0
  188. package/web/references/pozalabs/DESIGN.md +438 -0
  189. package/web/references/protopie/DESIGN.md +419 -0
  190. package/web/references/qraft/DESIGN.md +448 -0
  191. package/web/references/quotabook/DESIGN.md +449 -0
  192. package/web/references/recruit/DESIGN.md +247 -0
  193. package/web/references/remember/DESIGN.md +202 -396
  194. package/web/references/resend/DESIGN.md +274 -348
  195. package/web/references/sakura-internet/DESIGN.md +269 -0
  196. package/web/references/samsung/DESIGN.md +157 -359
  197. package/web/references/sandoll/DESIGN.md +445 -0
  198. package/web/references/sanity/DESIGN.md +241 -375
  199. package/web/references/scatterlab/DESIGN.md +412 -0
  200. package/web/references/selectstar/DESIGN.md +439 -0
  201. package/web/references/servicenow/DESIGN.md +289 -0
  202. package/web/references/shinhanbank/DESIGN.md +161 -341
  203. package/web/references/shinhancard/DESIGN.md +208 -319
  204. package/web/references/sionic/DESIGN.md +454 -0
  205. package/web/references/sktelecom/DESIGN.md +310 -0
  206. package/web/references/socar/DESIGN.md +125 -32
  207. package/web/references/softbank/DESIGN.md +231 -0
  208. package/web/references/sony/DESIGN.md +234 -0
  209. package/web/references/soop/DESIGN.md +261 -0
  210. package/web/references/spacex/DESIGN.md +184 -323
  211. package/web/references/spotify/DESIGN.md +253 -394
  212. package/web/references/squeezebits/DESIGN.md +441 -0
  213. package/web/references/stayfolio/DESIGN.md +422 -0
  214. package/web/references/stripe/DESIGN.md +212 -491
  215. package/web/references/supabase/DESIGN.md +244 -316
  216. package/web/references/tabling/DESIGN.md +415 -0
  217. package/web/references/taishinbank/DESIGN.md +243 -0
  218. package/web/references/teamlab/DESIGN.md +240 -0
  219. package/web/references/teamsparta/DESIGN.md +472 -0
  220. package/web/references/tellingme/DESIGN.md +392 -0
  221. package/web/references/tesla/DESIGN.md +244 -427
  222. package/web/references/thsr/DESIGN.md +284 -0
  223. package/web/references/thumbtack/DESIGN.md +302 -0
  224. package/web/references/together.ai/DESIGN.md +257 -304
  225. package/web/references/toss/DESIGN.md +251 -593
  226. package/web/references/toss-securities/DESIGN.md +255 -178
  227. package/web/references/tossbank/DESIGN.md +195 -491
  228. package/web/references/toyota/DESIGN.md +238 -0
  229. package/web/references/tving/DESIGN.md +197 -245
  230. package/web/references/typed/DESIGN.md +413 -0
  231. package/web/references/uber/DESIGN.md +256 -333
  232. package/web/references/udn/DESIGN.md +250 -0
  233. package/web/references/upbit/DESIGN.md +145 -256
  234. package/web/references/upstage/DESIGN.md +211 -204
  235. package/web/references/uswds/DESIGN.md +287 -0
  236. package/web/references/vercel/DESIGN.md +236 -440
  237. package/web/references/wanted/DESIGN.md +215 -487
  238. package/web/references/wise/DESIGN.md +223 -231
  239. package/web/references/wisetracker/DESIGN.md +462 -0
  240. package/web/references/wooribank/DESIGN.md +245 -0
  241. package/web/references/yanolja/DESIGN.md +250 -419
  242. package/web/references/yeogiotte/DESIGN.md +235 -418
  243. package/web/references/zapier/DESIGN.md +256 -377
  244. package/web/references/zendesk/DESIGN.md +288 -0
  245. package/web/references/zigzag/DESIGN.md +200 -621
  246. package/dist/install-skills-7UUDOLG2.js +0 -734
  247. 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: "#000020"
7
+ primary_color: "#000000"
8
8
  logo:
9
9
  type: simpleicons
10
10
  slug: expo
11
- verified: "2026-05-15"
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/wordmark trademark and usage guidelines.
18
- og_image: "https://og.expo.dev/?theme=universe&title=Brand%2C+Assets%2C+Styles&description=Get+Expo+brand+assets+and+styles+for+any+use."
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: prose-derived
21
- extracted: "2026-06-09"
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
- body: "#60646c"
32
- accent-link: "#0d74ce"
33
- accent-purple: "#8145b5"
34
- error: "#eb8e90"
35
- success: "#ab6400"
122
+ control-border: "#d9d9e0"
123
+ link: "#0d74ce"
36
124
  typography:
37
- family: { sans: "Inter", mono: "JetBrains Mono" }
38
- display: { size: 64, weight: 800, lineHeight: 1.10, tracking: -3, use: "Hero headlines, extreme tracking" }
39
- section: { size: 48, weight: 600, lineHeight: 1.10, tracking: -2, use: "Feature section anchors" }
40
- subheading: { size: 20, weight: 600, lineHeight: 1.20, tracking: -0.25, use: "Card titles, feature names" }
41
- body-lg: { size: 18, weight: 400, lineHeight: 1.40, use: "Intro paragraphs, section descriptions" }
42
- body: { size: 16, weight: 400, lineHeight: 1.40, use: "Standard text, nav links, buttons" }
43
- caption: { size: 14, weight: 500, lineHeight: 1.40, use: "Descriptions, metadata, badges" }
44
- tag: { size: 12, weight: 500, lineHeight: 1.00, use: "Smallest text, badges" }
45
- code: { size: 16, weight: 400, lineHeight: 1.40, use: "Inline code, terminal commands" }
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
- button-primary: { type: button, bg: "#ffffff", fg: "#1c2024", border: "1px solid #e0e1e6", radius: "6px", padding: "0 12px", font: "16px / 500", hover: "subtle shadow", use: "Default white button" }
54
- button-dark: { type: button, bg: "#000000", fg: "#ffffff", radius: "9999px", padding: "0 12px", font: "16px / 500", use: "Maximum-emphasis pill CTA" }
55
- input: { type: input, bg: "#ffffff", fg: "#1c2024", border: "1px solid #e0e1e6", radius: "6px", padding: "0 12px", focus: "blue ring shadow", use: "Form fields" }
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's interface is a luminous, confidence-radiating developer platform built on the premise that tools for building apps should feel as polished as the apps themselves. The entire experience lives on a bright, airy canvasa cool-tinted off-white (`#f0f0f3`) that gives the page a subtle technological coolness without the starkness of pure white. This is a site that breathes: enormous vertical spacing between sections creates a gallery-like pace where each feature gets its own "room."
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 pricingshare 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
- The design language is decisively monochromatic — pure black (`#000000`) headlines against the lightest possible backgrounds, with a spectrum of cool blue-grays (`#60646c`, `#b0b4ba`, `#555860`) handling all secondary communication. Color is almost entirely absent from the interface itself; when it appears, it's reserved for product screenshots, app icons, and the React universe illustration — making the actual content burst with life against the neutral canvas.
67
-
68
- What makes Expo distinctive is its pill-shaped geometry. Buttons, tabs, video containers, and even images use generously rounded or fully pill-shaped corners (24px9999px), creating an organic, approachable feel that contradicts the typical sharp-edged developer tool aesthetic. Combined with tight letter-spacing on massive headlines (-1.6px to -3px at 64px), the result is a design that's simultaneously premium and friendly — like an Apple product page reimagined for developers.
69
-
70
- **Key Characteristics:**
71
- - Luminous cool-white canvas (`#f0f0f3`) with gallery-like vertical spacing
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 3248px 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
- ### Primary
82
- - **Expo Black** (`#000000`): The absolute anchor — used for primary headlines, CTA buttons, and the brand identity. Pure black on cool white creates maximum contrast without feeling aggressive.
83
- - **Near Black** (`#1c2024`): The primary text color for body content a barely perceptible blue-black that's softer than pure #000 for extended reading.
84
-
85
- ### Secondary & Accent
86
- - **Link Cobalt** (`#0d74ce`): The standard link color a trustworthy, saturated blue that signals interactivity without competing with the monochrome hierarchy.
87
- - **Legal Blue** (`#476cff`): A brighter, more saturated blue for legal/footer links slightly more attention-grabbing than Link Cobalt.
88
- - **Widget Sky** (`#47c2ff`): A light, friendly cyan-blue for widget branding elements — the brightest accent in the system.
89
- - **Preview Purple** (`#8145b5`): A rich violet used for "preview" or beta feature indicators creating clear visual distinction from standard content.
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
- ### Font Family
119
- - **Primary**: `Inter`, with fallbacks: `-apple-system, system-ui`
120
- - **Monospace**: `JetBrains Mono`, with fallback: `ui-monospace`
121
- - **System Fallback**: `system-ui, Segoe UI, Roboto, Helvetica, Arial, Apple Color Emoji, Segoe UI Emoji`
122
-
123
- ### Hierarchy
124
-
125
- | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
126
- |------|------|------|--------|-------------|----------------|-------|
127
- | Display / Hero | Inter | 64px (4rem) | 700–900 | 1.10 (tight) | -1.6px to -3px | Maximum impact, extreme tracking |
128
- | Section Heading | Inter | 48px (3rem) | 600 | 1.10 (tight) | -2px | Feature section anchors |
129
- | Sub-heading | Inter | 20px (1.25rem) | 600 | 1.20 (tight) | -0.25px | Card titles, feature names |
130
- | Body Large | Inter | 18px (1.13rem) | 400–500 | 1.40 | normal | Intro paragraphs, section descriptions |
131
- | Body / Button | Inter | 16px (1rem) | 400–700 | 1.25–1.40 | normal | Standard text, nav links, buttons |
132
- | Caption / Label | Inter | 14px (0.88rem) | 400–600 | 1.00–1.40 | normal | Descriptions, metadata, badge text |
133
- | Tag / Small | Inter | 12px (0.75rem) | 500 | 1.00–1.60 | normal | Smallest sans-serif text, badges |
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
- ### Buttons
147
-
148
- **Primary (White on border)**
149
- - Background: Pure White (`#ffffff`)
150
- - Text: Near Black (`#1c2024`)
151
- - Padding: 0px 12px (compact, content-driven height)
152
- - Border: thin solid Input Border (`1px solid #d9d9e0`)
153
- - Radius: subtly rounded (6px)
154
- - Shadow: subtle combined shadow on hover
155
- - The understated default clean, professional, unheroic
156
-
157
- **Primary Pill**
158
- - Same as Primary but with pill-shaped radius (9999px)
159
- - Used for hero CTAs and high-emphasis actions
160
- - The extra roundness signals "start here"
161
-
162
- **Dark Primary**
163
- - Background: Expo Black (`#000000`)
164
- - Text: Pure White (`#ffffff`)
165
- - Pill-shaped (9999px) or generously rounded (32–36px)
166
- - No border (black IS the border)
167
- - The maximum-emphasis CTA reserved for primary conversion actions
168
-
169
- ### Cards & Containers
170
- - Background: Pure White (`#ffffff`) — clearly lifted from Cloud Gray page
171
- - Border: thin solid Border Lavender (`1px solid #e0e1e6`) for standard cards
172
- - Radius: comfortably rounded (8px) for standard cards; generously rounded (16–24px) for featured containers
173
- - Shadow Level 1: Whisper (`rgba(0,0,0,0.08) 0px 3px 6px, rgba(0,0,0,0.07) 0px 2px 4px`) — barely perceptible lift
174
- - Shadow Level 2: Standard (`rgba(0,0,0,0.1) 0px 10px 20px, rgba(0,0,0,0.05) 0px 3px 6px`) — clear floating elevation
175
- - Hover: likely subtle shadow deepening or background shift
176
-
177
- ### Inputs & Forms
178
- - Background: Pure White (`#ffffff`)
179
- - Text: Near Black (`#1c2024`)
180
- - Border: thin solid Input Border (`1px solid #d9d9e0`)
181
- - Padding: 0px 12px (inline with button sizing)
182
- - Radius: subtly rounded (6px)
183
- - Focus: blue ring shadow via CSS custom property
184
-
185
- ### Navigation
186
- - Sticky top nav on transparent/blurred background
187
- - Logo: Expo wordmark in black
188
- - Links: Near Black (`#1c2024`) or Slate Gray (`#60646c`) at 14–16px Inter weight 500
189
- - CTA: Black pill button ("Sign Up") on the right
190
- - GitHub star badge as social proof
191
- - Status indicator ("All Systems Operational") with green dot
192
-
193
- ### Image Treatment
194
- - Product screenshots and device mockups are the visual heroes
195
- - Generously rounded corners (24px) on video and image containers
196
- - Screenshots shown in realistic device frames
197
- - Dark UI screenshots provide contrast against the light canvas
198
- - Full-bleed within rounded containers
199
-
200
- ### Distinctive Components
201
-
202
- **Universe React Logo**
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
- ### Spacing System
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
- ## 6. Depth & Elevation
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
- | Level | Treatment | Use |
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
- **Shadow Philosophy**: Expo uses shadows as gentle whispers rather than architectural statements. The primary depth mechanism is **background color contrast** white cards floating on Cloud Gray — rather than shadow casting. When shadows appear, they're soft, diffused, and directional (downward), creating the feeling of paper hovering millimeters above a desk.
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
- - Use Cloud Gray (`#f0f0f3`) as the page background and Pure White (`#ffffff`) for elevated cards — the two-tone light system is essential
264
- - Keep display headlines at extreme negative letter-spacing (-1.6px to -3px at 64px) for the signature compressed look
265
- - Use pill-shaped (9999px) radius for primary CTA buttons the organic shape is core to the identity
266
- - Reserve black (`#000000`) for headlines and primary CTAs it carries maximum authority on the light canvas
267
- - Use Slate Gray (`#60646c`) for secondary text it's the precise balance between readable and receded
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
- - Don't introduce decorative colors into the interface chrome — the monochromatic palette is intentional
274
- - Don't use sharp corners (border-radius < 6px) on interactive elements the pill/rounded geometry is the signature
275
- - Don't reduce section spacing below 64px the breathing room is the design
276
- - Don't use heavy drop shadows depth comes from background contrast and whisper-soft shadows
277
- - Don't mix in additional typefaces Inter handles everything from display to caption
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
- ### Breakpoints
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
- ### Quick Color Reference
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
- Expo's voice is **builder-focused and warm-precise.** The brand emphasizes shipping React Native apps with the same speed as web copy is capability-driven, never marketing-fluff. Surfaces lean into the "framework that gets out of your way" register.
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 was founded **October 2013** by **Charlie Cheever (CEO)** and **James Ide (CTO)** — Cheever was an **early Facebook engineer** and **Quora co-founder**, Ide an early React Native contributor ([Y Combinator Expo](https://www.ycombinator.com/companies/expo)). Started as **Exponent**, a managed React Native runtime that abstracted iOS/Android build complexity. **First Expo development client released for iPhone May 2015** soon after React Native's public release. Participated in **Y Combinator Summer 2016**. Operates under legal name **650 Industries, Inc.** ([Crunchbase Expo](https://www.crunchbase.com/organization/exponent-3)). **3M+ developers** build with Expo today. Pivoted toward a fully open-source framework + **EAS (Expo Application Services)** cloud build/deploy/update platform. **Series B $45M (Apr 2026)** led by **Georgian** with **Leadout Capital, A Capital, Red Swan** — round announced alongside **Expo Agent**, an AI mobile-app builder ([SiliconANGLE](https://siliconangle.com/2026/04/16/developer-tooling-startup-expo-nabs-45m-investment/), [PR Newswire](https://www.prnewswire.com/news-releases/expo-raises-45m-series-b-and-launches-expo-agent-to-close-the-gap-from-idea-to-production-ready-mobile-apps-302744423.html)). The brand voice tracks this: framework-first, build-pipeline-deep, developer-focused.
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. **Ship to all platforms from one codebase.** *UI implication:* surfaces emphasize iOS + Android + Web parity, never platform-specific UI.
365
- 2. **EAS is the runway.** Cloud build/deploy/update services are first-class. *UI implication:* dashboards show build status with first-class UX investment.
366
- 3. **Documentation is product.** *UI implication:* docs.expo.dev has full-time design investment; not "marketing site sidebar".
367
- 4. **Monochrome chrome, color content.** *UI implication:* don't use bright accents in chrome the developer's app preview carries color.
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
- *Personas are fictional archetypes informed by Expo user segments (React Native developers, indie mobile app shippers, enterprise mobile teams), not individual people.*
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
- **Marcus Chen, 38, San Francisco.** Senior engineer at B2B SaaS adding mobile. Expo as the "stop bikeshedding native build infra" choice.
377
-
378
- **Priya Rao, 27, Bengaluru.** Bootcamp grad shipping first React Native app. Expo Go (try-without-build) is the entire onboarding she needed.
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
- | State | Treatment |
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
- | Token | Value | Use |
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-05-08 (omd:migrate run 23 — Apple-tier)
409
- **Tier 1 sources:** expo.dev home + /pricing (live DOM via playwright — Primary `#000` height=radius pill {hero 48px / header+pricing 36px} 0×{24/16} / 14-16px·500; Secondary `#f0f0f3` Cool Gray same geometry; testimonial card 8px `#fff`).
410
- **Tier 2 sources:** styles.refero.design / getdesign.md no record.
411
- **Tier 2 (Philosophy/founders):** Y Combinator (Expo profile), Crunchbase, SiliconANGLE, PR Newswire (Series B 2026), TechCompanyNews.
412
- **Style ref:** `stripe`. **Conflicts unresolved:** none.
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