savant-code 0.0.22 → 0.0.24

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 (79) hide show
  1. package/README.md +5 -0
  2. package/launcher.js +192 -5
  3. package/package.json +3 -2
  4. package/savant-design-systems/SKILL.md +12 -0
  5. package/savant-design-systems/manifest.json +2541 -0
  6. package/savant-design-systems/resources/airbnb-design-analysis.json +983 -0
  7. package/savant-design-systems/resources/airtable-design-analysis.json +931 -0
  8. package/savant-design-systems/resources/apple-design-analysis.json +920 -0
  9. package/savant-design-systems/resources/binance-design-analysis.json +1068 -0
  10. package/savant-design-systems/resources/bmw-design-analysis.json +912 -0
  11. package/savant-design-systems/resources/bmw-m-design-analysis.json +824 -0
  12. package/savant-design-systems/resources/bugatti-design-analysis.json +746 -0
  13. package/savant-design-systems/resources/cal-com-design-analysis.json +913 -0
  14. package/savant-design-systems/resources/claude-design-analysis.json +1007 -0
  15. package/savant-design-systems/resources/clay-design-analysis.json +919 -0
  16. package/savant-design-systems/resources/clickhouse-design-analysis.json +926 -0
  17. package/savant-design-systems/resources/cohere-design-analysis.json +725 -0
  18. package/savant-design-systems/resources/coinbase-design-analysis.json +998 -0
  19. package/savant-design-systems/resources/composio-design-analysis.json +851 -0
  20. package/savant-design-systems/resources/cursor-design-analysis.json +934 -0
  21. package/savant-design-systems/resources/dell-1996-inspired.json +1042 -0
  22. package/savant-design-systems/resources/elevenlabs.json +551 -0
  23. package/savant-design-systems/resources/expo-design-analysis.json +879 -0
  24. package/savant-design-systems/resources/ferrari-design-analysis.json +874 -0
  25. package/savant-design-systems/resources/figma-design-analysis.json +928 -0
  26. package/savant-design-systems/resources/framer-design-analysis.json +891 -0
  27. package/savant-design-systems/resources/hashicorp-design-analysis.json +909 -0
  28. package/savant-design-systems/resources/hp-design-analysis.json +1077 -0
  29. package/savant-design-systems/resources/ibm-design-analysis.json +881 -0
  30. package/savant-design-systems/resources/intercom-design-analysis.json +876 -0
  31. package/savant-design-systems/resources/kraken.json +172 -0
  32. package/savant-design-systems/resources/lamborghini.json +335 -0
  33. package/savant-design-systems/resources/linear-design-analysis.json +890 -0
  34. package/savant-design-systems/resources/lovable.json +345 -0
  35. package/savant-design-systems/resources/mastercard.json +412 -0
  36. package/savant-design-systems/resources/meta-design-analysis.json +1121 -0
  37. package/savant-design-systems/resources/minimax-design-analysis.json +1220 -0
  38. package/savant-design-systems/resources/mintlify-design-analysis.json +1418 -0
  39. package/savant-design-systems/resources/miro-design-analysis.json +1364 -0
  40. package/savant-design-systems/resources/mistral-ai-design-analysis.json +1286 -0
  41. package/savant-design-systems/resources/mongodb-design-analysis.json +1276 -0
  42. package/savant-design-systems/resources/nike-design-analysis.json +938 -0
  43. package/savant-design-systems/resources/nintendo-com-2001-analysis.json +1082 -0
  44. package/savant-design-systems/resources/notion-design-analysis.json +1368 -0
  45. package/savant-design-systems/resources/nvidia-design-analysis.json +1023 -0
  46. package/savant-design-systems/resources/ollama-design-analysis.json +863 -0
  47. package/savant-design-systems/resources/opencode-design-analysis.json +806 -0
  48. package/savant-design-systems/resources/pinterest-design-analysis.json +953 -0
  49. package/savant-design-systems/resources/playstation-design-analysis.json +1053 -0
  50. package/savant-design-systems/resources/posthog-design-analysis.json +1146 -0
  51. package/savant-design-systems/resources/raycast.json +716 -0
  52. package/savant-design-systems/resources/renault-design-analysis.json +916 -0
  53. package/savant-design-systems/resources/replicate-design-analysis.json +986 -0
  54. package/savant-design-systems/resources/resend-design-analysis.json +942 -0
  55. package/savant-design-systems/resources/revolut-design-analysis.json +1008 -0
  56. package/savant-design-systems/resources/runwayml.json +291 -0
  57. package/savant-design-systems/resources/sanity.json +404 -0
  58. package/savant-design-systems/resources/sentri-inspired-design-analysis.json +953 -0
  59. package/savant-design-systems/resources/shopifi-inspired-design-analysis.json +921 -0
  60. package/savant-design-systems/resources/slacc-inspired-design-analysis.json +799 -0
  61. package/savant-design-systems/resources/spacex-inspired-design-analysis.json +598 -0
  62. package/savant-design-systems/resources/spotify.json +293 -0
  63. package/savant-design-systems/resources/starbucks.json +627 -0
  64. package/savant-design-systems/resources/stripi-inspired-design-analysis.json +805 -0
  65. package/savant-design-systems/resources/supabase.json +509 -0
  66. package/savant-design-systems/resources/superhumon-inspired-design-analysis.json +740 -0
  67. package/savant-design-systems/resources/tesla.json +333 -0
  68. package/savant-design-systems/resources/theverge.json +386 -0
  69. package/savant-design-systems/resources/together-ai-inspired-design-analysis.json +1099 -0
  70. package/savant-design-systems/resources/uber-inspired-design-analysis.json +1067 -0
  71. package/savant-design-systems/resources/vercel-inspired-design-analysis.json +1261 -0
  72. package/savant-design-systems/resources/vodafone-inspired-design-analysis.json +912 -0
  73. package/savant-design-systems/resources/voltagent-inspired-design-analysis.json +929 -0
  74. package/savant-design-systems/resources/warp-inspired-design-analysis.json +946 -0
  75. package/savant-design-systems/resources/webflow-inspired-design-analysis.json +1033 -0
  76. package/savant-design-systems/resources/wired-inspired-design-analysis.json +877 -0
  77. package/savant-design-systems/resources/wise-inspired-design-analysis.json +916 -0
  78. package/savant-design-systems/resources/xai-inspired-design-analysis.json +820 -0
  79. package/savant-design-systems/resources/zapier-inspired-design-analysis.json +915 -0
@@ -0,0 +1,879 @@
1
+ {
2
+ "schemaVersion": "1",
3
+ "id": "expo-design-analysis",
4
+ "displayName": "Expo-design-analysis",
5
+ "description": "A React Native developer-platform whose marketing site reads like a quietly-confident infrastructure brand. The base canvas is pure white with a soft sky-blue gradient atmospheric wash behind the hero; near-black ink (`#171717`) carries body and display alike. The single brand voltage is **pure black** (`#000000`) for primary CTAs — minimal and editorial-feeling, paired with a small blue text-link accent (`#0d74ce`) reserved for inline body links. Type pairs Inter at modest weights (display 600, body 400) with JetBrains Mono on every code surface. The brand's strongest visual signature is the **device-mockup hero** — a centered MacBook + iPhone composite showing real Expo dev surfaces — over the gradient sky wash.",
6
+ "source": "embedded",
7
+ "status": "curated-reference",
8
+ "targets": [
9
+ "terminal",
10
+ "react"
11
+ ],
12
+ "contentPath": "packages/design-systems/library/expo.design.md",
13
+ "sourceContentHash": "1be7e129b6f75afaa12318a7c51ab22f6f74a214dec22c4827cecc519f112363",
14
+ "normalizedContentHash": "9184be8e719ae77c7116bafbe60cb3615a2af2af36b8f0369c82e8a89d9a378e",
15
+ "provenance": {
16
+ "sourceRepository": "VoltAgent/awesome-design-md",
17
+ "sourceRevision": "working-tree-curated-snapshot",
18
+ "sourcePath": "packages/design-systems/library/expo.design.md",
19
+ "license": "MIT"
20
+ },
21
+ "fonts": [
22
+ {
23
+ "family": "Fira Code",
24
+ "fallback": [
25
+ "system-ui",
26
+ "sans-serif"
27
+ ],
28
+ "redistributable": false
29
+ },
30
+ {
31
+ "family": "Inter",
32
+ "fallback": [
33
+ "system-ui",
34
+ "sans-serif"
35
+ ],
36
+ "redistributable": false
37
+ },
38
+ {
39
+ "family": "JetBrains Mono",
40
+ "fallback": [
41
+ "system-ui",
42
+ "sans-serif"
43
+ ],
44
+ "redistributable": false
45
+ }
46
+ ],
47
+ "tokens": {
48
+ "colors": {
49
+ "accent-link-bright": "#47c2ff",
50
+ "accent-preview": "#8145b5",
51
+ "accent-warning": "#ab6400",
52
+ "body": "#60646c",
53
+ "body-strong": "#171717",
54
+ "canvas": "#ffffff",
55
+ "canvas-soft": "#fafafa",
56
+ "gradient-sky-light": "#cfe7ff",
57
+ "gradient-sky-mid": "#a8c8e8",
58
+ "hairline": "#f0f0f3",
59
+ "hairline-soft": "#f5f5f7",
60
+ "hairline-strong": "#dcdee0",
61
+ "ink": "#171717",
62
+ "muted": "#999999",
63
+ "muted-soft": "#cccccc",
64
+ "on-dark": "#ffffff",
65
+ "on-dark-soft": "#b0b4ba",
66
+ "on-primary": "#ffffff",
67
+ "primary": "#000000",
68
+ "primary-active": "#1a1a1a",
69
+ "semantic-error": "#eb8e90",
70
+ "semantic-success": "#16a34a",
71
+ "surface-card": "#ffffff",
72
+ "surface-dark": "#171717",
73
+ "surface-dark-elevated": "#1a1a1a",
74
+ "surface-strong": "#f0f0f3",
75
+ "text-link": "#0d74ce",
76
+ "text-link-secondary": "#476cff"
77
+ },
78
+ "typography": {
79
+ "display-mega": {
80
+ "fontFamily": "'Inter', -apple-system, system-ui, sans-serif",
81
+ "fontSize": "64px",
82
+ "fontWeight": 600,
83
+ "letterSpacing": "-1.92px",
84
+ "lineHeight": 1.05
85
+ },
86
+ "display-xl": {
87
+ "fontFamily": "'Inter', sans-serif",
88
+ "fontSize": "48px",
89
+ "fontWeight": 600,
90
+ "letterSpacing": "-1.44px",
91
+ "lineHeight": 1.1
92
+ },
93
+ "display-lg": {
94
+ "fontFamily": "'Inter', sans-serif",
95
+ "fontSize": "36px",
96
+ "fontWeight": 600,
97
+ "letterSpacing": "-1.08px",
98
+ "lineHeight": 1.15
99
+ },
100
+ "display-md": {
101
+ "fontFamily": "'Inter', sans-serif",
102
+ "fontSize": "28px",
103
+ "fontWeight": 600,
104
+ "letterSpacing": "-0.84px",
105
+ "lineHeight": 1.2
106
+ },
107
+ "display-sm": {
108
+ "fontFamily": "'Inter', sans-serif",
109
+ "fontSize": "22px",
110
+ "fontWeight": 600,
111
+ "letterSpacing": "-0.5px",
112
+ "lineHeight": 1.25
113
+ },
114
+ "title-md": {
115
+ "fontFamily": "'Inter', sans-serif",
116
+ "fontSize": "18px",
117
+ "fontWeight": 600,
118
+ "letterSpacing": 0,
119
+ "lineHeight": 1.4
120
+ },
121
+ "title-sm": {
122
+ "fontFamily": "'Inter', sans-serif",
123
+ "fontSize": "16px",
124
+ "fontWeight": 600,
125
+ "letterSpacing": 0,
126
+ "lineHeight": 1.4
127
+ },
128
+ "body-md": {
129
+ "fontFamily": "'Inter', sans-serif",
130
+ "fontSize": "16px",
131
+ "fontWeight": 400,
132
+ "letterSpacing": 0,
133
+ "lineHeight": 1.5
134
+ },
135
+ "body-sm": {
136
+ "fontFamily": "'Inter', sans-serif",
137
+ "fontSize": "14px",
138
+ "fontWeight": 400,
139
+ "letterSpacing": 0,
140
+ "lineHeight": 1.5
141
+ },
142
+ "caption": {
143
+ "fontFamily": "'Inter', sans-serif",
144
+ "fontSize": "13px",
145
+ "fontWeight": 400,
146
+ "letterSpacing": 0,
147
+ "lineHeight": 1.4
148
+ },
149
+ "caption-uppercase": {
150
+ "fontFamily": "'Inter', sans-serif",
151
+ "fontSize": "11px",
152
+ "fontWeight": 600,
153
+ "letterSpacing": "0.88px",
154
+ "lineHeight": 1.4,
155
+ "textTransform": "uppercase"
156
+ },
157
+ "code": {
158
+ "fontFamily": "'JetBrains Mono', 'Fira Code', monospace",
159
+ "fontSize": "13px",
160
+ "fontWeight": 400,
161
+ "letterSpacing": 0,
162
+ "lineHeight": 1.5
163
+ },
164
+ "button": {
165
+ "fontFamily": "'Inter', sans-serif",
166
+ "fontSize": "14px",
167
+ "fontWeight": 500,
168
+ "letterSpacing": 0,
169
+ "lineHeight": 1
170
+ },
171
+ "nav-link": {
172
+ "fontFamily": "'Inter', sans-serif",
173
+ "fontSize": "14px",
174
+ "fontWeight": 500,
175
+ "letterSpacing": 0,
176
+ "lineHeight": 1.4
177
+ }
178
+ },
179
+ "spacing": {
180
+ "base": "16px",
181
+ "lg": "24px",
182
+ "md": "20px",
183
+ "section": "96px",
184
+ "sm": "12px",
185
+ "xl": "32px",
186
+ "xs": "8px",
187
+ "xxl": "48px",
188
+ "xxs": "4px"
189
+ },
190
+ "radius": {
191
+ "full": "9999px",
192
+ "lg": "12px",
193
+ "md": "8px",
194
+ "none": "0px",
195
+ "pill": "9999px",
196
+ "sm": "6px",
197
+ "xl": "16px",
198
+ "xs": "4px",
199
+ "xxl": "24px"
200
+ },
201
+ "components": {
202
+ "top-nav": {
203
+ "backgroundColor": "{colors.canvas}",
204
+ "height": "64px",
205
+ "textColor": "{colors.ink}",
206
+ "typography": "{typography.nav-link}"
207
+ },
208
+ "button-primary": {
209
+ "backgroundColor": "{colors.primary}",
210
+ "height": "40px",
211
+ "padding": "10px 18px",
212
+ "rounded": "{rounded.md}",
213
+ "textColor": "{colors.on-primary}",
214
+ "typography": "{typography.button}"
215
+ },
216
+ "button-primary-active": {
217
+ "backgroundColor": "{colors.primary-active}",
218
+ "rounded": "{rounded.md}",
219
+ "textColor": "{colors.on-primary}"
220
+ },
221
+ "button-secondary": {
222
+ "backgroundColor": "{colors.surface-card}",
223
+ "height": "40px",
224
+ "padding": "9px 17px",
225
+ "rounded": "{rounded.md}",
226
+ "textColor": "{colors.ink}",
227
+ "typography": "{typography.button}"
228
+ },
229
+ "button-tertiary-text": {
230
+ "backgroundColor": "transparent",
231
+ "textColor": "{colors.text-link}",
232
+ "typography": "{typography.button}"
233
+ },
234
+ "hero-band": {
235
+ "backgroundColor": "{colors.canvas}",
236
+ "padding": "96px",
237
+ "textColor": "{colors.ink}",
238
+ "typography": "{typography.display-mega}"
239
+ },
240
+ "device-mockup-card": {
241
+ "backgroundColor": "{colors.surface-card}",
242
+ "padding": 0,
243
+ "rounded": "{rounded.xl}",
244
+ "textColor": "{colors.ink}"
245
+ },
246
+ "feature-card": {
247
+ "backgroundColor": "{colors.surface-card}",
248
+ "padding": "24px",
249
+ "rounded": "{rounded.lg}",
250
+ "textColor": "{colors.ink}",
251
+ "typography": "{typography.title-md}"
252
+ },
253
+ "feature-card-dark": {
254
+ "backgroundColor": "{colors.surface-dark}",
255
+ "padding": "24px",
256
+ "rounded": "{rounded.lg}",
257
+ "textColor": "{colors.on-dark}",
258
+ "typography": "{typography.title-md}"
259
+ },
260
+ "workflow-step-card": {
261
+ "backgroundColor": "{colors.surface-card}",
262
+ "padding": "20px",
263
+ "rounded": "{rounded.lg}",
264
+ "textColor": "{colors.body}",
265
+ "typography": "{typography.body-md}"
266
+ },
267
+ "workflow-step-icon": {
268
+ "backgroundColor": "{colors.surface-strong}",
269
+ "rounded": "{rounded.md}",
270
+ "size": "32px"
271
+ },
272
+ "code-block": {
273
+ "backgroundColor": "{colors.surface-dark}",
274
+ "padding": "20px",
275
+ "rounded": "{rounded.lg}",
276
+ "textColor": "{colors.on-dark}",
277
+ "typography": "{typography.code}"
278
+ },
279
+ "ide-mockup-card": {
280
+ "backgroundColor": "{colors.surface-dark}",
281
+ "padding": 0,
282
+ "rounded": "{rounded.lg}",
283
+ "textColor": "{colors.on-dark}"
284
+ },
285
+ "pricing-tier-card": {
286
+ "backgroundColor": "{colors.surface-card}",
287
+ "padding": "32px",
288
+ "rounded": "{rounded.lg}",
289
+ "textColor": "{colors.ink}",
290
+ "typography": "{typography.body-md}"
291
+ },
292
+ "pricing-tier-featured": {
293
+ "backgroundColor": "{colors.surface-dark}",
294
+ "padding": "32px",
295
+ "rounded": "{rounded.lg}",
296
+ "textColor": "{colors.on-dark}",
297
+ "typography": "{typography.body-md}"
298
+ },
299
+ "text-input": {
300
+ "backgroundColor": "{colors.surface-card}",
301
+ "height": "44px",
302
+ "padding": "12px 16px",
303
+ "rounded": "{rounded.md}",
304
+ "textColor": "{colors.ink}",
305
+ "typography": "{typography.body-md}"
306
+ },
307
+ "badge-pill": {
308
+ "backgroundColor": "{colors.surface-strong}",
309
+ "padding": "4px 10px",
310
+ "rounded": "{rounded.pill}",
311
+ "textColor": "{colors.ink}",
312
+ "typography": "{typography.caption-uppercase}"
313
+ },
314
+ "ecosystem-tile": {
315
+ "backgroundColor": "{colors.surface-card}",
316
+ "rounded": "{rounded.md}",
317
+ "size": "64px"
318
+ },
319
+ "cta-band": {
320
+ "backgroundColor": "{colors.canvas}",
321
+ "padding": "96px",
322
+ "textColor": "{colors.ink}",
323
+ "typography": "{typography.display-lg}"
324
+ },
325
+ "testimonial-card": {
326
+ "backgroundColor": "{colors.surface-card}",
327
+ "padding": "24px",
328
+ "rounded": "{rounded.lg}",
329
+ "textColor": "{colors.body}",
330
+ "typography": "{typography.body-md}"
331
+ },
332
+ "footer-light": {
333
+ "backgroundColor": "{colors.canvas}",
334
+ "padding": "64px 48px",
335
+ "textColor": "{colors.body}",
336
+ "typography": "{typography.body-sm}"
337
+ },
338
+ "footer-link": {
339
+ "backgroundColor": "transparent",
340
+ "textColor": "{colors.body}",
341
+ "typography": "{typography.body-sm}"
342
+ }
343
+ },
344
+ "extensions": {
345
+ "description": "A React Native developer-platform whose marketing site reads like a quietly-confident infrastructure brand. The base canvas is pure white with a soft sky-blue gradient atmospheric wash behind the hero; near-black ink (`#171717`) carries body and display alike. The single brand voltage is **pure black** (`#000000`) for primary CTAs — minimal and editorial-feeling, paired with a small blue text-link accent (`#0d74ce`) reserved for inline body links. Type pairs Inter at modest weights (display 600, body 400) with JetBrains Mono on every code surface. The brand's strongest visual signature is the **device-mockup hero** — a centered MacBook + iPhone composite showing real Expo dev surfaces — over the gradient sky wash.",
346
+ "name": "Expo-design-analysis",
347
+ "version": "alpha"
348
+ }
349
+ }
350
+ }
351
+
352
+ ---
353
+
354
+ ---
355
+ version: alpha
356
+ name: Expo-design-analysis
357
+ description: A React Native developer-platform whose marketing site reads like a quietly-confident infrastructure brand. The base canvas is pure white with a soft sky-blue gradient atmospheric wash behind the hero; near-black ink (`#171717`) carries body and display alike. The single brand voltage is **pure black** (`#000000`) for primary CTAs — minimal and editorial-feeling, paired with a small blue text-link accent (`#0d74ce`) reserved for inline body links. Type pairs Inter at modest weights (display 600, body 400) with JetBrains Mono on every code surface. The brand's strongest visual signature is the **device-mockup hero** — a centered MacBook + iPhone composite showing real Expo dev surfaces — over the gradient sky wash.
358
+
359
+ colors:
360
+ primary: "#000000"
361
+ primary-active: "#1a1a1a"
362
+ text-link: "#0d74ce"
363
+ text-link-secondary: "#476cff"
364
+ ink: "#171717"
365
+ body: "#60646c"
366
+ body-strong: "#171717"
367
+ muted: "#999999"
368
+ muted-soft: "#cccccc"
369
+ hairline: "#f0f0f3"
370
+ hairline-soft: "#f5f5f7"
371
+ hairline-strong: "#dcdee0"
372
+ canvas: "#ffffff"
373
+ canvas-soft: "#fafafa"
374
+ surface-card: "#ffffff"
375
+ surface-strong: "#f0f0f3"
376
+ surface-dark: "#171717"
377
+ surface-dark-elevated: "#1a1a1a"
378
+ on-primary: "#ffffff"
379
+ on-dark: "#ffffff"
380
+ on-dark-soft: "#b0b4ba"
381
+ gradient-sky-light: "#cfe7ff"
382
+ gradient-sky-mid: "#a8c8e8"
383
+ accent-warning: "#ab6400"
384
+ accent-preview: "#8145b5"
385
+ accent-link-bright: "#47c2ff"
386
+ semantic-error: "#eb8e90"
387
+ semantic-success: "#16a34a"
388
+
389
+ typography:
390
+ display-mega:
391
+ fontFamily: "'Inter', -apple-system, system-ui, sans-serif"
392
+ fontSize: 64px
393
+ fontWeight: 600
394
+ lineHeight: 1.05
395
+ letterSpacing: -1.92px
396
+ display-xl:
397
+ fontFamily: "'Inter', sans-serif"
398
+ fontSize: 48px
399
+ fontWeight: 600
400
+ lineHeight: 1.1
401
+ letterSpacing: -1.44px
402
+ display-lg:
403
+ fontFamily: "'Inter', sans-serif"
404
+ fontSize: 36px
405
+ fontWeight: 600
406
+ lineHeight: 1.15
407
+ letterSpacing: -1.08px
408
+ display-md:
409
+ fontFamily: "'Inter', sans-serif"
410
+ fontSize: 28px
411
+ fontWeight: 600
412
+ lineHeight: 1.2
413
+ letterSpacing: -0.84px
414
+ display-sm:
415
+ fontFamily: "'Inter', sans-serif"
416
+ fontSize: 22px
417
+ fontWeight: 600
418
+ lineHeight: 1.25
419
+ letterSpacing: -0.5px
420
+ title-md:
421
+ fontFamily: "'Inter', sans-serif"
422
+ fontSize: 18px
423
+ fontWeight: 600
424
+ lineHeight: 1.4
425
+ letterSpacing: 0
426
+ title-sm:
427
+ fontFamily: "'Inter', sans-serif"
428
+ fontSize: 16px
429
+ fontWeight: 600
430
+ lineHeight: 1.4
431
+ letterSpacing: 0
432
+ body-md:
433
+ fontFamily: "'Inter', sans-serif"
434
+ fontSize: 16px
435
+ fontWeight: 400
436
+ lineHeight: 1.5
437
+ letterSpacing: 0
438
+ body-sm:
439
+ fontFamily: "'Inter', sans-serif"
440
+ fontSize: 14px
441
+ fontWeight: 400
442
+ lineHeight: 1.5
443
+ letterSpacing: 0
444
+ caption:
445
+ fontFamily: "'Inter', sans-serif"
446
+ fontSize: 13px
447
+ fontWeight: 400
448
+ lineHeight: 1.4
449
+ letterSpacing: 0
450
+ caption-uppercase:
451
+ fontFamily: "'Inter', sans-serif"
452
+ fontSize: 11px
453
+ fontWeight: 600
454
+ lineHeight: 1.4
455
+ letterSpacing: 0.88px
456
+ textTransform: uppercase
457
+ code:
458
+ fontFamily: "'JetBrains Mono', 'Fira Code', monospace"
459
+ fontSize: 13px
460
+ fontWeight: 400
461
+ lineHeight: 1.5
462
+ letterSpacing: 0
463
+ button:
464
+ fontFamily: "'Inter', sans-serif"
465
+ fontSize: 14px
466
+ fontWeight: 500
467
+ lineHeight: 1.0
468
+ letterSpacing: 0
469
+ nav-link:
470
+ fontFamily: "'Inter', sans-serif"
471
+ fontSize: 14px
472
+ fontWeight: 500
473
+ lineHeight: 1.4
474
+ letterSpacing: 0
475
+
476
+ rounded:
477
+ none: 0px
478
+ xs: 4px
479
+ sm: 6px
480
+ md: 8px
481
+ lg: 12px
482
+ xl: 16px
483
+ xxl: 24px
484
+ pill: 9999px
485
+ full: 9999px
486
+
487
+ spacing:
488
+ xxs: 4px
489
+ xs: 8px
490
+ sm: 12px
491
+ base: 16px
492
+ md: 20px
493
+ lg: 24px
494
+ xl: 32px
495
+ xxl: 48px
496
+ section: 96px
497
+
498
+ components:
499
+ top-nav:
500
+ backgroundColor: "{colors.canvas}"
501
+ textColor: "{colors.ink}"
502
+ typography: "{typography.nav-link}"
503
+ height: 64px
504
+ button-primary:
505
+ backgroundColor: "{colors.primary}"
506
+ textColor: "{colors.on-primary}"
507
+ typography: "{typography.button}"
508
+ rounded: "{rounded.md}"
509
+ padding: 10px 18px
510
+ height: 40px
511
+ button-primary-active:
512
+ backgroundColor: "{colors.primary-active}"
513
+ textColor: "{colors.on-primary}"
514
+ rounded: "{rounded.md}"
515
+ button-secondary:
516
+ backgroundColor: "{colors.surface-card}"
517
+ textColor: "{colors.ink}"
518
+ typography: "{typography.button}"
519
+ rounded: "{rounded.md}"
520
+ padding: 9px 17px
521
+ height: 40px
522
+ button-tertiary-text:
523
+ backgroundColor: transparent
524
+ textColor: "{colors.text-link}"
525
+ typography: "{typography.button}"
526
+ hero-band:
527
+ backgroundColor: "{colors.canvas}"
528
+ textColor: "{colors.ink}"
529
+ typography: "{typography.display-mega}"
530
+ padding: 96px
531
+ device-mockup-card:
532
+ backgroundColor: "{colors.surface-card}"
533
+ textColor: "{colors.ink}"
534
+ rounded: "{rounded.xl}"
535
+ padding: 0
536
+ feature-card:
537
+ backgroundColor: "{colors.surface-card}"
538
+ textColor: "{colors.ink}"
539
+ typography: "{typography.title-md}"
540
+ rounded: "{rounded.lg}"
541
+ padding: 24px
542
+ feature-card-dark:
543
+ backgroundColor: "{colors.surface-dark}"
544
+ textColor: "{colors.on-dark}"
545
+ typography: "{typography.title-md}"
546
+ rounded: "{rounded.lg}"
547
+ padding: 24px
548
+ workflow-step-card:
549
+ backgroundColor: "{colors.surface-card}"
550
+ textColor: "{colors.body}"
551
+ typography: "{typography.body-md}"
552
+ rounded: "{rounded.lg}"
553
+ padding: 20px
554
+ workflow-step-icon:
555
+ backgroundColor: "{colors.surface-strong}"
556
+ rounded: "{rounded.md}"
557
+ size: 32px
558
+ code-block:
559
+ backgroundColor: "{colors.surface-dark}"
560
+ textColor: "{colors.on-dark}"
561
+ typography: "{typography.code}"
562
+ rounded: "{rounded.lg}"
563
+ padding: 20px
564
+ ide-mockup-card:
565
+ backgroundColor: "{colors.surface-dark}"
566
+ textColor: "{colors.on-dark}"
567
+ rounded: "{rounded.lg}"
568
+ padding: 0
569
+ pricing-tier-card:
570
+ backgroundColor: "{colors.surface-card}"
571
+ textColor: "{colors.ink}"
572
+ typography: "{typography.body-md}"
573
+ rounded: "{rounded.lg}"
574
+ padding: 32px
575
+ pricing-tier-featured:
576
+ backgroundColor: "{colors.surface-dark}"
577
+ textColor: "{colors.on-dark}"
578
+ typography: "{typography.body-md}"
579
+ rounded: "{rounded.lg}"
580
+ padding: 32px
581
+ text-input:
582
+ backgroundColor: "{colors.surface-card}"
583
+ textColor: "{colors.ink}"
584
+ typography: "{typography.body-md}"
585
+ rounded: "{rounded.md}"
586
+ padding: 12px 16px
587
+ height: 44px
588
+ badge-pill:
589
+ backgroundColor: "{colors.surface-strong}"
590
+ textColor: "{colors.ink}"
591
+ typography: "{typography.caption-uppercase}"
592
+ rounded: "{rounded.pill}"
593
+ padding: 4px 10px
594
+ ecosystem-tile:
595
+ backgroundColor: "{colors.surface-card}"
596
+ rounded: "{rounded.md}"
597
+ size: 64px
598
+ cta-band:
599
+ backgroundColor: "{colors.canvas}"
600
+ textColor: "{colors.ink}"
601
+ typography: "{typography.display-lg}"
602
+ padding: 96px
603
+ testimonial-card:
604
+ backgroundColor: "{colors.surface-card}"
605
+ textColor: "{colors.body}"
606
+ typography: "{typography.body-md}"
607
+ rounded: "{rounded.lg}"
608
+ padding: 24px
609
+ footer-light:
610
+ backgroundColor: "{colors.canvas}"
611
+ textColor: "{colors.body}"
612
+ typography: "{typography.body-sm}"
613
+ padding: 64px 48px
614
+ footer-link:
615
+ backgroundColor: transparent
616
+ textColor: "{colors.body}"
617
+ typography: "{typography.body-sm}"
618
+ ---
619
+
620
+ ## Overview
621
+
622
+ Expo's marketing site reads like a quietly-confident React-Native developer platform. The base canvas is **pure white** (`{colors.canvas}` — #ffffff) with a soft **sky-blue gradient atmospheric wash** behind the hero band. Near-black ink `{colors.ink}` (#171717) carries body and display alike. The single brand voltage is **pure black** (`{colors.primary}` — #000000) for primary CTAs — minimal and editorial-feeling. A small blue text-link accent (`{colors.text-link}` — #0d74ce) is reserved for inline body links, never as a CTA.
623
+
624
+ Type runs **Inter** as the single sans family at modest weights (display 600, body 400). JetBrains Mono carries every code surface. No custom typeface — the brand trusts Inter's editorial neutrality.
625
+
626
+ The brand's strongest visual signature is the **device-mockup hero** — a centered MacBook + iPhone composite showing real Expo dev surfaces (Expo Studio, EAS Build dashboard, the Expo Go simulator) — over a sky-blue gradient atmospheric wash. The composite is the page's chrome instead of an illustration.
627
+
628
+ **Key Characteristics:**
629
+ - Pure white canvas with sky-blue gradient atmospheric backdrop in hero only.
630
+ - Single primary CTA: pure black pill at `{rounded.md}` (8px) — compact developer-tool dialect.
631
+ - Text-link blue (`{colors.text-link}`) for inline links only — never on a CTA.
632
+ - Inter as the single sans family — no custom display typeface.
633
+ - JetBrains Mono on every code surface.
634
+ - Device-mockup hero with real Expo product surfaces is the brand chrome.
635
+ - Hairline + soft drop depth; no atmospheric brand decoration outside the hero.
636
+ - 96px section rhythm.
637
+
638
+ ## Colors
639
+
640
+ ### Brand & Accent
641
+ - **Black** (`{colors.primary}` — #000000): Primary CTA fill. Used scarcely.
642
+ - **Black Active** (`{colors.primary-active}` — #1a1a1a): Press state.
643
+ - **Text Link Blue** (`{colors.text-link}` — #0d74ce): Inline body links inside long-form copy. Scoped narrowly — never on CTAs.
644
+ - **Legal Link Blue** (`{colors.text-link-secondary}` — #476cff): Inline links inside legal copy footer.
645
+ - **Bright Cyan** (`{colors.accent-link-bright}` — #47c2ff): Used very sparingly inside docs widget links.
646
+
647
+ ### Surface
648
+ - **Canvas** (`{colors.canvas}` — #ffffff): Pure white page floor.
649
+ - **Canvas Soft** (`{colors.canvas-soft}` — #fafafa): Subtle alternating band.
650
+ - **Surface Card** (`{colors.surface-card}` — #ffffff): Pure white card.
651
+ - **Surface Strong** (`{colors.surface-strong}` — #f0f0f3): Badges, ecosystem tiles, secondary buttons.
652
+ - **Surface Dark** (`{colors.surface-dark}` — #171717): Dark feature cards, code blocks, IDE mockups, featured pricing.
653
+ - **Surface Dark Elevated** (`{colors.surface-dark-elevated}` — #1a1a1a): One step lighter inside dark cards.
654
+
655
+ ### Atmospheric Backdrop
656
+ - **Sky Light** (`{colors.gradient-sky-light}` — #cfe7ff) + **Sky Mid** (`{colors.gradient-sky-mid}` — #a8c8e8): The soft sky-blue gradient wash behind the homepage hero only. Not a brand action color.
657
+
658
+ ### Hairlines
659
+ - **Hairline** (`{colors.hairline}` — #f0f0f3): Default 1px divider.
660
+ - **Hairline Soft** (`{colors.hairline-soft}` — #f5f5f7): Lighter divider.
661
+ - **Hairline Strong** (`{colors.hairline-strong}` — #dcdee0): Stronger panel outline.
662
+
663
+ ### Text
664
+ - **Ink** (`{colors.ink}` — #171717): Display, body emphasis.
665
+ - **Body** (`{colors.body}` — #60646c): Default running-text — slightly cool gray.
666
+ - **Body Strong** (`{colors.body-strong}` — #171717): Same as ink.
667
+ - **Muted** (`{colors.muted}` — #999999): Sub-titles.
668
+ - **Muted Soft** (`{colors.muted-soft}` — #cccccc): Disabled text.
669
+ - **On Primary** (`{colors.on-primary}` — #ffffff): White text on black CTA.
670
+ - **On Dark** (`{colors.on-dark}` — #ffffff): White text on dark cards.
671
+ - **On Dark Soft** (`{colors.on-dark-soft}` — #b0b4ba): Muted off-white on dark.
672
+
673
+ ### Semantic
674
+ - **Warning** (`{colors.accent-warning}` — #ab6400): Warning text inside docs callouts.
675
+ - **Preview** (`{colors.accent-preview}` — #8145b5): "Preview" tag color.
676
+ - **Success** (`{colors.semantic-success}` — #16a34a): Confirmation.
677
+ - **Error** (`{colors.semantic-error}` — #eb8e90): Validation errors.
678
+
679
+ ## Typography
680
+
681
+ ### Font Family
682
+ **Inter** is the single sans family across every text role. **JetBrains Mono** carries every code surface. Fallback: `-apple-system, system-ui, sans-serif`.
683
+
684
+ ### Hierarchy
685
+
686
+ | Token | Size | Weight | Line Height | Letter Spacing | Use |
687
+ |---|---|---|---|---|---|
688
+ | `{typography.display-mega}` | 64px | 600 | 1.05 | -1.92px | Homepage hero h1 |
689
+ | `{typography.display-xl}` | 48px | 600 | 1.1 | -1.44px | Subsidiary heroes |
690
+ | `{typography.display-lg}` | 36px | 600 | 1.15 | -1.08px | Section heads |
691
+ | `{typography.display-md}` | 28px | 600 | 1.2 | -0.84px | Sub-section heads |
692
+ | `{typography.display-sm}` | 22px | 600 | 1.25 | -0.5px | Card group titles |
693
+ | `{typography.title-md}` | 18px | 600 | 1.4 | 0 | Component titles |
694
+ | `{typography.title-sm}` | 16px | 600 | 1.4 | 0 | List labels |
695
+ | `{typography.body-md}` | 16px | 400 | 1.5 | 0 | Default body |
696
+ | `{typography.body-sm}` | 14px | 400 | 1.5 | 0 | Footer body |
697
+ | `{typography.caption}` | 13px | 400 | 1.4 | 0 | Photo captions |
698
+ | `{typography.caption-uppercase}` | 11px | 600 | 1.4 | 0.88px | Section labels, badges |
699
+ | `{typography.code}` | 13px | 400 | 1.5 | 0 | Code blocks — JetBrains Mono |
700
+ | `{typography.button}` | 14px | 500 | 1.0 | 0 | CTA labels |
701
+ | `{typography.nav-link}` | 14px | 500 | 1.4 | 0 | Top-nav menu |
702
+
703
+ ### Principles
704
+ - **Display weight stays at 600** — confident but not bombastic. Inter at 600 reads cleaner than 700.
705
+ - **Negative letter-spacing on display** — -0.5px to -1.92px tracking.
706
+ - **JetBrains Mono on every code surface.**
707
+
708
+ ### Note on Font Substitutes
709
+ Inter and JetBrains Mono are both freely available — the system uses them directly.
710
+
711
+ ## Layout
712
+
713
+ ### Spacing System
714
+ - **Base unit:** 4px.
715
+ - **Tokens:** `{spacing.xxs}` 4px · `{spacing.xs}` 8px · `{spacing.sm}` 12px · `{spacing.base}` 16px · `{spacing.md}` 20px · `{spacing.lg}` 24px · `{spacing.xl}` 32px · `{spacing.xxl}` 48px · `{spacing.section}` 96px.
716
+ - **Section padding:** 96px.
717
+
718
+ ### Grid & Container
719
+ - Max content width: ~1200px.
720
+ - Editorial body: 12-column grid.
721
+ - Feature card grids: 2-up at desktop for hero splits, 3-up for benefit grids.
722
+ - Ecosystem tile grid: 8-up at desktop.
723
+ - Footer: 5-column at desktop.
724
+
725
+ ### Whitespace Philosophy
726
+ Generous editorial pacing. The white canvas does not compete with the hero's gradient sky wash; cards inside dense workflow sections sit close (16-24px gap).
727
+
728
+ ## Elevation & Depth
729
+
730
+ | Level | Treatment | Use |
731
+ |---|---|---|
732
+ | Flat (canvas) | `{colors.canvas}` (#ffffff) | Body bands, footer |
733
+ | Card | `{colors.surface-card}` (#ffffff) | Content cards |
734
+ | Hairline border | 1px `{colors.hairline}` | Card outlines |
735
+ | Soft drop | `0 4px 12px rgba(0, 0, 0, 0.04)` | Hovered cards (single shadow tier) |
736
+ | Atmospheric gradient | Sky-blue radial wash | Hero backdrop only |
737
+ | Dark inversion | `{colors.surface-dark}` (#171717) | Dark feature cards, code blocks, featured pricing |
738
+
739
+ ### Decorative Depth
740
+ - **Sky-blue gradient backdrop** in the hero only — atmospheric depth without claiming to be a brand color.
741
+ - **Device mockup composite** as page chrome — MacBook + iPhone showing real Expo dev surfaces.
742
+
743
+ ## Shapes
744
+
745
+ ### Border Radius Scale
746
+
747
+ | Token | Value | Use |
748
+ |---|---|---|
749
+ | `{rounded.none}` | 0px | Reserved |
750
+ | `{rounded.xs}` | 4px | Inline tags |
751
+ | `{rounded.sm}` | 6px | Compact rows |
752
+ | `{rounded.md}` | 8px | CTA buttons, form inputs, ecosystem tiles |
753
+ | `{rounded.lg}` | 12px | Feature cards, code blocks, pricing tiers |
754
+ | `{rounded.xl}` | 16px | Device mockup cards |
755
+ | `{rounded.xxl}` | 24px | Larger atmospheric cards (rare) |
756
+ | `{rounded.pill}` | 9999px | Badges only |
757
+ | `{rounded.full}` | 9999px | Avatar plates (rare) |
758
+
759
+ Compact developer-ergonomic radii — 8px CTAs, 12px cards. Pill geometry is reserved for badges, never CTAs.
760
+
761
+ ## Components
762
+
763
+ ### Top Navigation
764
+
765
+ **`top-nav`** — Background `{colors.canvas}`, text `{colors.ink}`, height 64px. Layout: Expo wordmark left, primary horizontal menu (Tools / Workflows / EAS / Pricing / Docs / Showcase), Sign In + Get started CTA right.
766
+
767
+ ### Buttons
768
+
769
+ **`button-primary`** — Pure black pill. Background `{colors.primary}`, text `{colors.on-primary}`, type `{typography.button}` (14px / 500), padding 10px × 18px, height 40px, rounded `{rounded.md}` (8px).
770
+
771
+ **`button-primary-active`** — Press state. Background `{colors.primary-active}`.
772
+
773
+ **`button-secondary`** — White card with 1px hairline-strong border. Background `{colors.surface-card}`, text `{colors.ink}`, 1px `{colors.hairline-strong}` border.
774
+
775
+ **`button-tertiary-text`** — Inline blue text link. Background transparent, text `{colors.text-link}`.
776
+
777
+ ### Hero & Device Mockup
778
+
779
+ **`hero-band`** — Background `{colors.canvas}` with a soft sky-blue gradient wash behind the centered headline. Display headline in `{typography.display-mega}` (64px / 600 / -1.92px), subhead in `{typography.body-md}`, single primary CTA, then below — the device mockup composite.
780
+
781
+ **`device-mockup-card`** — A layered MacBook + iPhone composite showing real Expo dev surfaces. Background `{colors.surface-card}`, rounded `{rounded.xl}`. The MacBook holds the EAS dashboard or Expo Studio screenshot; the iPhone overlay shows the running app in Expo Go. This is the page chrome.
782
+
783
+ ### Cards
784
+
785
+ **`feature-card`** — Background `{colors.surface-card}`, text `{colors.ink}`, type `{typography.title-md}`, rounded `{rounded.lg}`, padding 24px, 1px `{colors.hairline-strong}` border.
786
+
787
+ **`feature-card-dark`** — Dark variant. Background `{colors.surface-dark}`, text `{colors.on-dark}`. Same shape, dark inversion.
788
+
789
+ **`workflow-step-card`** — Step in the "Get your app on every device" workflow row. Background `{colors.surface-card}`, text `{colors.body}`, rounded `{rounded.lg}`, padding 20px. Layout: 32px square `{component.workflow-step-icon}` + step number + label + body.
790
+
791
+ **`workflow-step-icon`** — Square plate. Background `{colors.surface-strong}`, rounded `{rounded.md}`, 32px size.
792
+
793
+ **`testimonial-card`** — Quote card. Background `{colors.surface-card}`, text `{colors.body}`, rounded `{rounded.lg}`, padding 24px.
794
+
795
+ ### Code & IDE
796
+
797
+ **`code-block`** — Inline code block. Background `{colors.surface-dark}`, text `{colors.on-dark}` in `{typography.code}` (JetBrains Mono 13px), rounded `{rounded.lg}`, padding 20px. White text on dark.
798
+
799
+ **`ide-mockup-card`** — Stylized IDE mockup. Background `{colors.surface-dark}`, rounded `{rounded.lg}`. Multi-pane editor + terminal preview.
800
+
801
+ ### Pricing
802
+
803
+ **`pricing-tier-card`** — Standard pricing tier. Background `{colors.surface-card}`, rounded `{rounded.lg}`, padding 32px, 1px `{colors.hairline-strong}` border.
804
+
805
+ **`pricing-tier-featured`** — Featured tier. Background `{colors.surface-dark}`, text `{colors.on-dark}`. Same shape, dark inversion.
806
+
807
+ ### Ecosystem
808
+
809
+ **`ecosystem-tile`** — Square logo plate for ecosystem partner logos (TypeScript, React, Sentry, etc.). Background `{colors.surface-card}`, rounded `{rounded.md}`, 64px size, 1px `{colors.hairline}` border.
810
+
811
+ ### Forms & Tags
812
+
813
+ **`text-input`** — Background `{colors.surface-card}`, text `{colors.ink}`, rounded `{rounded.md}` (8px), padding 12px × 16px, height 44px, 1px `{colors.hairline-strong}` border. Focus thickens border to 2px ink.
814
+
815
+ **`badge-pill`** — Small uppercase pill. Background `{colors.surface-strong}`, text `{colors.ink}`, type `{typography.caption-uppercase}`, rounded `{rounded.pill}`, padding 4px × 10px.
816
+
817
+ ### CTA / Footer
818
+
819
+ **`cta-band`** — Pre-footer band. Background `{colors.canvas}`, centered display headline in `{typography.display-lg}`, single black pill CTA. 96px padding.
820
+
821
+ **`footer-light`** — Closing white footer. Background `{colors.canvas}`, text `{colors.body}`. 5-column link list. 64×48px padding.
822
+
823
+ **`footer-link`** — Background transparent, text `{colors.body}`, type `{typography.body-sm}`.
824
+
825
+ ## Do's and Don'ts
826
+
827
+ ### Do
828
+ - Reserve `{colors.primary}` (black) for primary CTAs.
829
+ - Use `{colors.text-link}` (blue) for inline body links only — never on CTAs or buttons.
830
+ - Set every CTA at `{rounded.md}` (8px) — developer dialect.
831
+ - Use Inter at weight 600 for display, 400 for body.
832
+ - Render every code surface in JetBrains Mono.
833
+ - Pair the hero with the device-mockup composite — it's the page chrome.
834
+
835
+ ### Don't
836
+ - Don't introduce a saturated brand action color. Black is the only CTA fill.
837
+ - Don't use blue (`{colors.text-link}`) on a CTA. Inline links only.
838
+ - Don't drop display below weight 600 or above 700.
839
+ - Don't use full pills on CTAs — pills are for badges only.
840
+ - Don't replicate the sky-blue gradient backdrop outside the hero.
841
+ - Don't extract a CTA color from a third-party widget (cookie consent, OneTrust). The brand's CTA is what appears on actual page CTAs.
842
+
843
+ ## Responsive Behavior
844
+
845
+ ### Breakpoints
846
+
847
+ | Name | Width | Key Changes |
848
+ |---|---|---|
849
+ | Mobile | < 640px | Hero h1 64→32px; device mockup → single iPhone screen; feature grid 1-up; nav hamburger. |
850
+ | Tablet | 640–1024px | Hero h1 48px; device mockup compresses; feature grid 2-up. |
851
+ | Desktop | 1024–1280px | Full hero h1 64px; full MacBook + iPhone composite; feature grid 3-up. |
852
+ | Wide | > 1280px | Content caps at 1200px. |
853
+
854
+ ### Touch Targets
855
+ - Primary CTA at 40px height — at WCAG AA, padded for AAA.
856
+ - Search input 44px — at AAA.
857
+
858
+ ### Collapsing Strategy
859
+ - Top nav switches to hamburger below 768px.
860
+ - Device mockup MacBook + iPhone collapses to a single iPhone preview on mobile.
861
+ - Feature grid: 3-up → 2-up → 1-up.
862
+ - Ecosystem tile grid: 8-up → 4-up → 3-up → 2-up.
863
+
864
+ ## Iteration Guide
865
+
866
+ 1. Focus on a single component at a time.
867
+ 2. CTAs default to `{rounded.md}` (8px). Cards use `{rounded.lg}` (12px).
868
+ 3. Variants live as separate entries.
869
+ 4. Use `{token.refs}` everywhere — never inline hex.
870
+ 5. Hover state never documented.
871
+ 6. Inter 600 for display, Inter 400 for body. JetBrains Mono on code.
872
+ 7. Black stays the only CTA color; text-link blue stays inline-only.
873
+
874
+ ## Known Gaps
875
+
876
+ - Inter and JetBrains Mono are freely available — no licensing concerns.
877
+ - Animation timings (device mockup parallax, hero entrance) out of scope.
878
+ - In-app surfaces (EAS dashboard interactive, Expo Go simulator) only partially captured via marketing mockups.
879
+ - Form validation states beyond focus not visible on captured surfaces.