getrelay 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +40 -0
- package/bin/relay.js +362 -0
- package/design-md/airbnb/DESIGN.md +545 -0
- package/design-md/airbnb/README.md +5 -0
- package/design-md/airtable/DESIGN.md +554 -0
- package/design-md/airtable/README.md +5 -0
- package/design-md/apple/DESIGN.md +562 -0
- package/design-md/apple/README.md +5 -0
- package/design-md/binance/DESIGN.md +634 -0
- package/design-md/binance/README.md +5 -0
- package/design-md/bmw/DESIGN.md +544 -0
- package/design-md/bmw/README.md +5 -0
- package/design-md/bmw-m/DESIGN.md +503 -0
- package/design-md/bmw-m/README.md +5 -0
- package/design-md/bugatti/DESIGN.md +454 -0
- package/design-md/bugatti/README.md +5 -0
- package/design-md/cal/DESIGN.md +542 -0
- package/design-md/cal/README.md +5 -0
- package/design-md/claude/DESIGN.md +589 -0
- package/design-md/claude/README.md +5 -0
- package/design-md/clay/DESIGN.md +541 -0
- package/design-md/clay/README.md +5 -0
- package/design-md/clickhouse/DESIGN.md +544 -0
- package/design-md/clickhouse/README.md +5 -0
- package/design-md/cohere/DESIGN.md +451 -0
- package/design-md/cohere/README.md +5 -0
- package/design-md/coinbase/DESIGN.md +570 -0
- package/design-md/coinbase/README.md +5 -0
- package/design-md/composio/DESIGN.md +506 -0
- package/design-md/composio/README.md +5 -0
- package/design-md/cursor/DESIGN.md +537 -0
- package/design-md/cursor/README.md +5 -0
- package/design-md/elevenlabs/DESIGN.md +504 -0
- package/design-md/elevenlabs/README.md +5 -0
- package/design-md/expo/DESIGN.md +526 -0
- package/design-md/expo/README.md +5 -0
- package/design-md/ferrari/DESIGN.md +531 -0
- package/design-md/ferrari/README.md +5 -0
- package/design-md/figma/DESIGN.md +578 -0
- package/design-md/figma/README.md +5 -0
- package/design-md/framer/DESIGN.md +544 -0
- package/design-md/framer/README.md +5 -0
- package/design-md/hashicorp/DESIGN.md +575 -0
- package/design-md/hashicorp/README.md +5 -0
- package/design-md/ibm/DESIGN.md +550 -0
- package/design-md/ibm/README.md +5 -0
- package/design-md/intercom/DESIGN.md +546 -0
- package/design-md/intercom/README.md +5 -0
- package/design-md/kraken/DESIGN.md +125 -0
- package/design-md/kraken/README.md +5 -0
- package/design-md/lamborghini/DESIGN.md +288 -0
- package/design-md/lamborghini/README.md +5 -0
- package/design-md/linear.app/DESIGN.md +548 -0
- package/design-md/linear.app/README.md +5 -0
- package/design-md/lovable/DESIGN.md +298 -0
- package/design-md/lovable/README.md +5 -0
- package/design-md/mastercard/DESIGN.md +365 -0
- package/design-md/mastercard/README.md +5 -0
- package/design-md/meta/DESIGN.md +683 -0
- package/design-md/meta/README.md +5 -0
- package/design-md/minimax/DESIGN.md +746 -0
- package/design-md/minimax/README.md +5 -0
- package/design-md/mintlify/DESIGN.md +852 -0
- package/design-md/mintlify/README.md +5 -0
- package/design-md/miro/DESIGN.md +825 -0
- package/design-md/miro/README.md +5 -0
- package/design-md/mistral.ai/DESIGN.md +773 -0
- package/design-md/mistral.ai/README.md +5 -0
- package/design-md/mongodb/DESIGN.md +767 -0
- package/design-md/mongodb/README.md +5 -0
- package/design-md/nike/DESIGN.md +575 -0
- package/design-md/nike/README.md +5 -0
- package/design-md/notion/DESIGN.md +821 -0
- package/design-md/notion/README.md +5 -0
- package/design-md/nvidia/DESIGN.md +640 -0
- package/design-md/nvidia/README.md +5 -0
- package/design-md/ollama/DESIGN.md +539 -0
- package/design-md/ollama/README.md +5 -0
- package/design-md/opencode.ai/DESIGN.md +521 -0
- package/design-md/opencode.ai/README.md +5 -0
- package/design-md/pinterest/DESIGN.md +597 -0
- package/design-md/pinterest/README.md +5 -0
- package/design-md/playstation/DESIGN.md +661 -0
- package/design-md/playstation/README.md +5 -0
- package/design-md/posthog/DESIGN.md +690 -0
- package/design-md/posthog/README.md +5 -0
- package/design-md/raycast/DESIGN.md +669 -0
- package/design-md/raycast/README.md +5 -0
- package/design-md/renault/DESIGN.md +589 -0
- package/design-md/renault/README.md +5 -0
- package/design-md/replicate/DESIGN.md +616 -0
- package/design-md/replicate/README.md +5 -0
- package/design-md/resend/DESIGN.md +585 -0
- package/design-md/resend/README.md +5 -0
- package/design-md/revolut/DESIGN.md +636 -0
- package/design-md/revolut/README.md +5 -0
- package/design-md/runwayml/DESIGN.md +244 -0
- package/design-md/runwayml/README.md +5 -0
- package/design-md/sanity/DESIGN.md +357 -0
- package/design-md/sanity/README.md +5 -0
- package/design-md/sentry/DESIGN.md +551 -0
- package/design-md/sentry/README.md +5 -0
- package/design-md/shopify/DESIGN.md +516 -0
- package/design-md/shopify/README.md +5 -0
- package/design-md/slack/DESIGN.md +482 -0
- package/design-md/spacex/DESIGN.md +363 -0
- package/design-md/spacex/README.md +5 -0
- package/design-md/spotify/DESIGN.md +246 -0
- package/design-md/spotify/README.md +5 -0
- package/design-md/starbucks/DESIGN.md +580 -0
- package/design-md/starbucks/README.md +5 -0
- package/design-md/stripe/DESIGN.md +487 -0
- package/design-md/stripe/README.md +5 -0
- package/design-md/supabase/DESIGN.md +462 -0
- package/design-md/supabase/README.md +5 -0
- package/design-md/superhuman/DESIGN.md +448 -0
- package/design-md/superhuman/README.md +5 -0
- package/design-md/tesla/DESIGN.md +286 -0
- package/design-md/tesla/README.md +5 -0
- package/design-md/theverge/DESIGN.md +339 -0
- package/design-md/theverge/README.md +5 -0
- package/design-md/together.ai/DESIGN.md +633 -0
- package/design-md/together.ai/README.md +5 -0
- package/design-md/uber/DESIGN.md +636 -0
- package/design-md/uber/README.md +5 -0
- package/design-md/vercel/DESIGN.md +736 -0
- package/design-md/vercel/README.md +5 -0
- package/design-md/vodafone/DESIGN.md +538 -0
- package/design-md/vodafone/README.md +5 -0
- package/design-md/voltagent/DESIGN.md +521 -0
- package/design-md/voltagent/README.md +5 -0
- package/design-md/warp/DESIGN.md +526 -0
- package/design-md/warp/README.md +5 -0
- package/design-md/webflow/DESIGN.md +588 -0
- package/design-md/webflow/README.md +5 -0
- package/design-md/wired/DESIGN.md +497 -0
- package/design-md/wired/README.md +5 -0
- package/design-md/wise/DESIGN.md +544 -0
- package/design-md/wise/README.md +5 -0
- package/design-md/x.ai/DESIGN.md +465 -0
- package/design-md/x.ai/README.md +5 -0
- package/design-md/zapier/DESIGN.md +537 -0
- package/design-md/zapier/README.md +5 -0
- package/package.json +31 -0
|
@@ -0,0 +1,465 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: alpha
|
|
3
|
+
name: xAI Inspired
|
|
4
|
+
description: An inspired interpretation of xAI's design language — Elon Musk's frontier-AI company whose web surface is a strict near-black canvas broken only by white pill outlines, occasional warm sunset / dusk gradient accents, a custom geometric sans (Universal Sans) for display, and an uppercase tracked monospace caption face; the whole system reads as engineered-cosmic, unmarketed.
|
|
5
|
+
|
|
6
|
+
colors:
|
|
7
|
+
primary: "#ffffff"
|
|
8
|
+
on-primary: "#0a0a0a"
|
|
9
|
+
ink: "#ffffff"
|
|
10
|
+
ink-hover: "#fafaf7"
|
|
11
|
+
body: "#dadbdf"
|
|
12
|
+
body-mid: "#7d8187"
|
|
13
|
+
mute: "#7d8187"
|
|
14
|
+
hairline: "#212327"
|
|
15
|
+
canvas: "#0a0a0a"
|
|
16
|
+
canvas-soft: "#1a1c20"
|
|
17
|
+
canvas-card: "#191919"
|
|
18
|
+
canvas-mid: "#363a3f"
|
|
19
|
+
accent-sunset: "#ff7a17"
|
|
20
|
+
accent-sunset-soft: "#ffc285"
|
|
21
|
+
accent-dusk: "#7c3aed"
|
|
22
|
+
accent-twilight: "#c4b5fd"
|
|
23
|
+
accent-breeze: "#a0c3ec"
|
|
24
|
+
accent-midnight: "#0d1726"
|
|
25
|
+
|
|
26
|
+
typography:
|
|
27
|
+
display-xl:
|
|
28
|
+
fontFamily: universalSans, Inter, system-ui, -apple-system, sans-serif
|
|
29
|
+
fontSize: 96px
|
|
30
|
+
fontWeight: 400
|
|
31
|
+
lineHeight: 96px
|
|
32
|
+
letterSpacing: -2.4px
|
|
33
|
+
display-lg:
|
|
34
|
+
fontFamily: universalSans, Inter, system-ui, sans-serif
|
|
35
|
+
fontSize: 72px
|
|
36
|
+
fontWeight: 400
|
|
37
|
+
lineHeight: 72px
|
|
38
|
+
letterSpacing: -1.8px
|
|
39
|
+
display-md:
|
|
40
|
+
fontFamily: universalSans, Inter, system-ui, sans-serif
|
|
41
|
+
fontSize: 48px
|
|
42
|
+
fontWeight: 400
|
|
43
|
+
lineHeight: 48px
|
|
44
|
+
letterSpacing: -1.2px
|
|
45
|
+
display-sm:
|
|
46
|
+
fontFamily: universalSans, Inter, system-ui, sans-serif
|
|
47
|
+
fontSize: 32px
|
|
48
|
+
fontWeight: 400
|
|
49
|
+
lineHeight: 36px
|
|
50
|
+
letterSpacing: -0.6px
|
|
51
|
+
display-xs:
|
|
52
|
+
fontFamily: universalSans, Inter, system-ui, sans-serif
|
|
53
|
+
fontSize: 20px
|
|
54
|
+
fontWeight: 400
|
|
55
|
+
lineHeight: 28px
|
|
56
|
+
body-lg:
|
|
57
|
+
fontFamily: universalSans, Inter, system-ui, sans-serif
|
|
58
|
+
fontSize: 18px
|
|
59
|
+
fontWeight: 400
|
|
60
|
+
lineHeight: 28px
|
|
61
|
+
body-md:
|
|
62
|
+
fontFamily: universalSans, Inter, system-ui, sans-serif
|
|
63
|
+
fontSize: 16px
|
|
64
|
+
fontWeight: 400
|
|
65
|
+
lineHeight: 24px
|
|
66
|
+
body-sm:
|
|
67
|
+
fontFamily: universalSans, Inter, system-ui, sans-serif
|
|
68
|
+
fontSize: 14px
|
|
69
|
+
fontWeight: 400
|
|
70
|
+
lineHeight: 20px
|
|
71
|
+
caption-mono:
|
|
72
|
+
fontFamily: GeistMono, ui-monospace, SFMono-Regular, Menlo, Monaco, monospace
|
|
73
|
+
fontSize: 14px
|
|
74
|
+
fontWeight: 400
|
|
75
|
+
lineHeight: 20px
|
|
76
|
+
letterSpacing: 1.4px
|
|
77
|
+
caption-mono-sm:
|
|
78
|
+
fontFamily: GeistMono, ui-monospace, SFMono-Regular, Menlo, monospace
|
|
79
|
+
fontSize: 12px
|
|
80
|
+
fontWeight: 400
|
|
81
|
+
lineHeight: 16px
|
|
82
|
+
letterSpacing: 1.2px
|
|
83
|
+
button-md:
|
|
84
|
+
fontFamily: universalSans, Inter, system-ui, sans-serif
|
|
85
|
+
fontSize: 14px
|
|
86
|
+
fontWeight: 400
|
|
87
|
+
lineHeight: 20px
|
|
88
|
+
|
|
89
|
+
rounded:
|
|
90
|
+
none: 0px
|
|
91
|
+
sm: 8px
|
|
92
|
+
pill: 9999px
|
|
93
|
+
full: 9999px
|
|
94
|
+
|
|
95
|
+
spacing:
|
|
96
|
+
xxs: 2px
|
|
97
|
+
xs: 4px
|
|
98
|
+
sm: 8px
|
|
99
|
+
md: 12px
|
|
100
|
+
lg: 16px
|
|
101
|
+
xl: 24px
|
|
102
|
+
2xl: 32px
|
|
103
|
+
3xl: 48px
|
|
104
|
+
4xl: 64px
|
|
105
|
+
|
|
106
|
+
components:
|
|
107
|
+
nav-bar:
|
|
108
|
+
backgroundColor: "{colors.canvas}"
|
|
109
|
+
textColor: "{colors.ink}"
|
|
110
|
+
typography: "{typography.body-sm}"
|
|
111
|
+
padding: "{spacing.md} {spacing.xl}"
|
|
112
|
+
nav-link:
|
|
113
|
+
textColor: "{colors.ink}"
|
|
114
|
+
typography: "{typography.body-sm}"
|
|
115
|
+
button-primary:
|
|
116
|
+
backgroundColor: "{colors.primary}"
|
|
117
|
+
textColor: "{colors.on-primary}"
|
|
118
|
+
borderColor: "{colors.primary}"
|
|
119
|
+
typography: "{typography.button-md}"
|
|
120
|
+
rounded: "{rounded.pill}"
|
|
121
|
+
padding: "{spacing.xs} {spacing.md}"
|
|
122
|
+
button-outline-on-dark:
|
|
123
|
+
backgroundColor: "{colors.canvas}"
|
|
124
|
+
textColor: "{colors.ink}"
|
|
125
|
+
borderColor: "{colors.hairline}"
|
|
126
|
+
typography: "{typography.button-md}"
|
|
127
|
+
rounded: "{rounded.pill}"
|
|
128
|
+
padding: "{spacing.sm} {spacing.lg}"
|
|
129
|
+
button-outline-sm:
|
|
130
|
+
backgroundColor: "{colors.canvas}"
|
|
131
|
+
textColor: "{colors.ink}"
|
|
132
|
+
borderColor: "{colors.hairline}"
|
|
133
|
+
typography: "{typography.button-md}"
|
|
134
|
+
rounded: "{rounded.pill}"
|
|
135
|
+
padding: "{spacing.xs} {spacing.md}"
|
|
136
|
+
text-input:
|
|
137
|
+
backgroundColor: "{colors.canvas-soft}"
|
|
138
|
+
textColor: "{colors.ink}"
|
|
139
|
+
borderColor: "{colors.hairline}"
|
|
140
|
+
typography: "{typography.body-md}"
|
|
141
|
+
rounded: "{rounded.sm}"
|
|
142
|
+
padding: "{spacing.md} {spacing.lg}"
|
|
143
|
+
card-content:
|
|
144
|
+
backgroundColor: "{colors.canvas-card}"
|
|
145
|
+
textColor: "{colors.ink}"
|
|
146
|
+
borderColor: "{colors.hairline}"
|
|
147
|
+
typography: "{typography.body-md}"
|
|
148
|
+
rounded: "{rounded.sm}"
|
|
149
|
+
padding: "{spacing.xl}"
|
|
150
|
+
card-feature-product:
|
|
151
|
+
backgroundColor: "{colors.canvas-card}"
|
|
152
|
+
textColor: "{colors.ink}"
|
|
153
|
+
borderColor: "{colors.hairline}"
|
|
154
|
+
typography: "{typography.body-md}"
|
|
155
|
+
rounded: "{rounded.sm}"
|
|
156
|
+
padding: "{spacing.xl}"
|
|
157
|
+
hero-band:
|
|
158
|
+
backgroundColor: "{colors.canvas}"
|
|
159
|
+
textColor: "{colors.ink}"
|
|
160
|
+
typography: "{typography.display-xl}"
|
|
161
|
+
padding: "{spacing.4xl} {spacing.xl}"
|
|
162
|
+
content-band:
|
|
163
|
+
backgroundColor: "{colors.canvas}"
|
|
164
|
+
textColor: "{colors.ink}"
|
|
165
|
+
typography: "{typography.display-md}"
|
|
166
|
+
padding: "{spacing.4xl} {spacing.xl}"
|
|
167
|
+
eyebrow-mono:
|
|
168
|
+
textColor: "{colors.ink}"
|
|
169
|
+
typography: "{typography.caption-mono}"
|
|
170
|
+
divider-hairline:
|
|
171
|
+
borderColor: "{colors.hairline}"
|
|
172
|
+
footer:
|
|
173
|
+
backgroundColor: "{colors.canvas}"
|
|
174
|
+
textColor: "{colors.body}"
|
|
175
|
+
typography: "{typography.body-sm}"
|
|
176
|
+
padding: "{spacing.3xl} {spacing.xl}"
|
|
177
|
+
|
|
178
|
+
# ─── Examples (illustrative) — auto-derived; resolve any TO_FILL markers below ───
|
|
179
|
+
ex-pricing-tier:
|
|
180
|
+
description: "Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface."
|
|
181
|
+
backgroundColor: "{colors.canvas-soft}"
|
|
182
|
+
textColor: "{colors.ink}"
|
|
183
|
+
borderColor: "{colors.hairline}"
|
|
184
|
+
rounded: "{rounded.sm}"
|
|
185
|
+
padding: "{spacing.xl}"
|
|
186
|
+
ex-pricing-tier-featured:
|
|
187
|
+
description: "Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode)."
|
|
188
|
+
backgroundColor: "{colors.ink}"
|
|
189
|
+
textColor: "{colors.on-primary}"
|
|
190
|
+
rounded: "{rounded.sm}"
|
|
191
|
+
padding: "{spacing.xl}"
|
|
192
|
+
ex-product-selector:
|
|
193
|
+
description: "What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery)."
|
|
194
|
+
backgroundColor: "{colors.canvas-soft}"
|
|
195
|
+
rounded: "{rounded.sm}"
|
|
196
|
+
padding: "{spacing.xl}"
|
|
197
|
+
ex-cart-drawer:
|
|
198
|
+
description: "Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart)."
|
|
199
|
+
backgroundColor: "{colors.canvas}"
|
|
200
|
+
rounded: "{rounded.sm}"
|
|
201
|
+
padding: "{spacing.xl}"
|
|
202
|
+
item-divider: "{colors.hairline}"
|
|
203
|
+
ex-app-shell-row:
|
|
204
|
+
description: "Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator."
|
|
205
|
+
backgroundColor: "{colors.canvas}"
|
|
206
|
+
activeIndicator: "{colors.primary}"
|
|
207
|
+
rounded: "{rounded.sm}"
|
|
208
|
+
padding: "{spacing.md} {spacing.lg}"
|
|
209
|
+
ex-data-table-cell:
|
|
210
|
+
description: "Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm."
|
|
211
|
+
headerBackground: "{colors.canvas-soft}"
|
|
212
|
+
headerTypography: "{typography.caption-mono}"
|
|
213
|
+
bodyTypography: "{typography.body-sm}"
|
|
214
|
+
cellPadding: "{spacing.md} {spacing.lg}"
|
|
215
|
+
rowBorder: "{colors.hairline}"
|
|
216
|
+
ex-auth-form-card:
|
|
217
|
+
description: "Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside."
|
|
218
|
+
backgroundColor: "{colors.canvas-soft}"
|
|
219
|
+
rounded: "{rounded.sm}"
|
|
220
|
+
padding: "{spacing.xl}"
|
|
221
|
+
ex-modal-card:
|
|
222
|
+
description: "Modal dialog surface — same chrome as feature-card with elevated shadow."
|
|
223
|
+
backgroundColor: "{colors.canvas}"
|
|
224
|
+
rounded: "{rounded.sm}"
|
|
225
|
+
padding: "{spacing.xl}"
|
|
226
|
+
ex-empty-state-card:
|
|
227
|
+
description: "Empty-state illustration frame."
|
|
228
|
+
backgroundColor: "{colors.canvas-soft}"
|
|
229
|
+
rounded: "{rounded.sm}"
|
|
230
|
+
padding: "{spacing.3xl}"
|
|
231
|
+
captionTypography: "{typography.body-md}"
|
|
232
|
+
ex-toast:
|
|
233
|
+
description: "Toast notification surface — feature-card shape + medium shadow."
|
|
234
|
+
backgroundColor: "{colors.canvas}"
|
|
235
|
+
rounded: "{rounded.sm}"
|
|
236
|
+
padding: "{spacing.md} {spacing.lg}"
|
|
237
|
+
typography: "{typography.body-sm}"
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
## Overview
|
|
243
|
+
|
|
244
|
+
xAI is Elon Musk's frontier-AI lab and the website wears that posture with engineered restraint: a near-black canvas `{colors.canvas}` (`#0a0a0a`) edge-to-edge, white outline pills as every interactive element, and a single proprietary geometric sans `Universal Sans` carrying every display headline at weight 400. There is no gradient hero, no atmospheric backdrop, no product screenshot. The brand reads as confidently sparse — a research lab announcing its work rather than a SaaS marketing site.
|
|
245
|
+
|
|
246
|
+
Type is the second decisive voice. `Universal Sans` carries every display at weight 400 (regular) with aggressive negative tracking (`-2.4 px` at 96 px, scaling down through the display ladder). For technical labels, eyebrows, and metric counters, the brand pairs `Geist Mono` (uppercase, 1.4 px positive tracking) — every section eyebrow reads as a code comment more than a marketing label.
|
|
247
|
+
|
|
248
|
+
Every interactive element is a pill (`{rounded.pill}` 9999 px) with 1 px white-translucent border `rgba(255, 255, 255, 0.25)`. The button shape never varies — the same translucent-white pill carries "Try Grok", "Read announcement", "Custom Voices", "Sign up now", and every "Read" anchor. The pill is the entire shape system.
|
|
249
|
+
|
|
250
|
+
**Key Characteristics:**
|
|
251
|
+
- A single near-black canvas (`{colors.canvas}` `#0a0a0a`) with white outline pills as the entire interactive vocabulary.
|
|
252
|
+
- Universal Sans weight 400 for display, Geist Mono uppercase tracked for labels — the two-face contrast IS the brand voice.
|
|
253
|
+
- Every button is a `{rounded.pill}` outline with translucent-white border. The brand never uses filled CTAs except for one variant (white-filled pill on Sign Up).
|
|
254
|
+
- Cards are tight `{rounded.sm}` 8 px rectangles in a slightly-lighter `{colors.canvas-card}` (`#191919`) fill with hairline border. No shadows.
|
|
255
|
+
- A muted accent palette of sunset-orange / dusk-purple / twilight-violet / breeze-blue lives in the design tokens but appears rarely on the main marketing surface — reserved for product illustrations / icons.
|
|
256
|
+
- Massive negative letter-spacing on display headlines (`-2.4 px` at 96 px) gives the typography a precise, gathered look.
|
|
257
|
+
|
|
258
|
+
## Colors
|
|
259
|
+
|
|
260
|
+
### Brand & Accent
|
|
261
|
+
- **White** (`{colors.primary}` — `#ffffff`): The brand's primary "color" — used as button outline, button-primary fill, all display text. The brand's signature is white-on-near-black.
|
|
262
|
+
- **Sunset Orange** (`{colors.accent-sunset}` — `#ff7a17`): A warm orange used inside product illustrations and accent moments.
|
|
263
|
+
- **Sunset Soft** (`{colors.accent-sunset-soft}` — `#ffc285`): The lighter variant of the sunset accent.
|
|
264
|
+
- **Dusk Purple** (`{colors.accent-dusk}` — `#7c3aed`): Deep purple used inside product illustrations.
|
|
265
|
+
- **Twilight** (`{colors.accent-twilight}` — `#c4b5fd`): Soft violet — illustrative accent.
|
|
266
|
+
- **Breeze Blue** (`{colors.accent-breeze}` — `#a0c3ec`): Soft blue — illustrative accent.
|
|
267
|
+
- **Midnight** (`{colors.accent-midnight}` — `#0d1726`): Deep blue-black for illustrative backgrounds.
|
|
268
|
+
|
|
269
|
+
### Surface
|
|
270
|
+
- **Canvas** (`{colors.canvas}` — `#0a0a0a`): The default near-black page background. The brand's only true surface.
|
|
271
|
+
- **Canvas Soft** (`{colors.canvas-soft}` — `#1a1c20`): A slightly lighter dark fill used for hovered nav items and tooltips.
|
|
272
|
+
- **Canvas Card** (`{colors.canvas-card}` — `#191919`): The charcoal card fill used inside product-feature cards.
|
|
273
|
+
- **Canvas Mid** (`{colors.canvas-mid}` — `#363a3f`): A mid-dark used for nested surfaces and code mockup backgrounds.
|
|
274
|
+
- **Hairline** (`{colors.hairline}` — `#212327`): 1 px solid dividers on dark surfaces.
|
|
275
|
+
|
|
276
|
+
### Text
|
|
277
|
+
- **Ink** (`{colors.ink}` — `#ffffff`): Default text on canvas — pure white.
|
|
278
|
+
- **Ink Hover** (`{colors.ink-hover}` — `#fafaf7`): Slightly off-white used for hover states (filtered out per no-hover policy in component specs).
|
|
279
|
+
- **Body** (`{colors.body}` — `#dadbdf`): Secondary body text — supporting copy in lighter weight.
|
|
280
|
+
- **Body Mid / Mute** (`{colors.body-mid}` — `#7d8187`): Mid-emphasis body and mute text — captions, fine print.
|
|
281
|
+
|
|
282
|
+
### Semantic
|
|
283
|
+
The brand doesn't surface a separate semantic palette on the marketing site. Validation cues use the white-on-canvas hierarchy.
|
|
284
|
+
|
|
285
|
+
## Typography
|
|
286
|
+
|
|
287
|
+
### Font Family
|
|
288
|
+
Two faces ladder the system:
|
|
289
|
+
1. **universalSans** — proprietary geometric sans used for every display, body, button, and link role. Weight 400 only on the marketing surface (the brand's restraint is part of the voice). Negative letter-spacing at display sizes is the visual signature.
|
|
290
|
+
2. **GeistMono** — used for uppercase section eyebrows, label captions, and metric counters. Positive tracking (1.2 – 1.4 px) at 12 – 14 px.
|
|
291
|
+
|
|
292
|
+
### Hierarchy
|
|
293
|
+
|
|
294
|
+
| Token | Size | Weight | Line Height | Letter Spacing | Use |
|
|
295
|
+
|---|---|---|---|---|---|
|
|
296
|
+
| `{typography.display-xl}` | 96px | 400 | 96px | -2.4px | Maximum hero scale. |
|
|
297
|
+
| `{typography.display-lg}` | 72px | 400 | 72px | -1.8px | Sub-hero displays. |
|
|
298
|
+
| `{typography.display-md}` | 48px | 400 | 48px | -1.2px | Section headlines. |
|
|
299
|
+
| `{typography.display-sm}` | 32px | 400 | 36px | -0.6px | Card-cluster headings. |
|
|
300
|
+
| `{typography.display-xs}` | 20px | 400 | 28px | 0 | Inline displays. |
|
|
301
|
+
| `{typography.body-lg}` | 18px | 400 | 28px | 0 | Lead paragraphs. |
|
|
302
|
+
| `{typography.body-md}` | 16px | 400 | 24px | 0 | Default body. |
|
|
303
|
+
| `{typography.body-sm}` | 14px | 400 | 20px | 0 | Secondary body. |
|
|
304
|
+
| `{typography.caption-mono}` | 14px | 400 | 20px | 1.4px | Section eyebrow (GeistMono uppercase). |
|
|
305
|
+
| `{typography.caption-mono-sm}` | 12px | 400 | 16px | 1.2px | Small mono labels. |
|
|
306
|
+
| `{typography.button-md}` | 14px | 400 | 20px | 0 | Button label. |
|
|
307
|
+
|
|
308
|
+
### Principles
|
|
309
|
+
- **Weight 400 for everything.** The brand never bolds. Negative tracking + size hierarchy do the emphasis work.
|
|
310
|
+
- **Tight negative tracking on display sizes.** Reverting to neutral tracking loses the precision feel.
|
|
311
|
+
- **GeistMono uppercase for eyebrows.** Tracked positively (1.4 px) to make the mono read as a code comment.
|
|
312
|
+
|
|
313
|
+
### Note on Font Substitutes
|
|
314
|
+
universalSans is proprietary. Open-source substitutes:
|
|
315
|
+
- **Display + body** — *Inter* weight 400 with `-0.04em` to `-0.02em` letter-spacing at display sizes comes closest. *Geist* is the second-best option.
|
|
316
|
+
- **Mono** — *Geist Mono* is the documented brand companion; *JetBrains Mono* or *IBM Plex Mono* are alternates.
|
|
317
|
+
|
|
318
|
+
## Layout
|
|
319
|
+
|
|
320
|
+
### Spacing System
|
|
321
|
+
- **Base unit**: 4 px.
|
|
322
|
+
- **Tokens**: `{spacing.xxs}` 2 px · `{spacing.xs}` 4 px · `{spacing.sm}` 8 px · `{spacing.md}` 12 px · `{spacing.lg}` 16 px · `{spacing.xl}` 24 px · `{spacing.2xl}` 32 px · `{spacing.3xl}` 48 px · `{spacing.4xl}` 64 px.
|
|
323
|
+
- **Section padding**: hero / content bands at `{spacing.4xl}` 64 px on desktop.
|
|
324
|
+
- **Card interior padding**: `{spacing.xl}` 24 px.
|
|
325
|
+
|
|
326
|
+
### Grid & Container
|
|
327
|
+
- Marketing content centres at ~1200 px.
|
|
328
|
+
- Product / announcement card grid: 2-up at desktop, 1-up at mobile.
|
|
329
|
+
|
|
330
|
+
### Responsive Strategy
|
|
331
|
+
|
|
332
|
+
#### Breakpoints
|
|
333
|
+
|
|
334
|
+
| Name | Width | Key Changes |
|
|
335
|
+
|---|---|---|
|
|
336
|
+
| Mobile | < 768px | Hero scales 96 → 48 px; grids 1-up; hamburger nav. |
|
|
337
|
+
| Desktop | ≥ 768px | Full hero + 2-up grids. |
|
|
338
|
+
|
|
339
|
+
#### Touch Targets
|
|
340
|
+
Buttons render ~32 – 40 px tall (8 vertical padding + 20 line). Mobile inflates touch area to meet WCAG 44 × 44 px.
|
|
341
|
+
|
|
342
|
+
#### Image Behavior
|
|
343
|
+
The brand uses sparse SVG illustrations for product moments (Grok, Voice, API). No photography on the marketing surface.
|
|
344
|
+
|
|
345
|
+
## Elevation & Depth
|
|
346
|
+
|
|
347
|
+
| Level | Treatment | Use |
|
|
348
|
+
|---|---|---|
|
|
349
|
+
| Level 0 — Flat | No shadow, no border. | Default. |
|
|
350
|
+
| Level 1 — Hairline | 1 px solid `{colors.hairline}` border. | Card chrome, button outlines (with translucent white). |
|
|
351
|
+
|
|
352
|
+
The brand uses no shadows. Hairline borders carry all elevation cues.
|
|
353
|
+
|
|
354
|
+
## Shapes
|
|
355
|
+
|
|
356
|
+
### Border Radius Scale
|
|
357
|
+
|
|
358
|
+
| Token | Value | Use |
|
|
359
|
+
|---|---|---|
|
|
360
|
+
| `{rounded.none}` | 0px | Full-bleed bands. |
|
|
361
|
+
| `{rounded.sm}` | 8px | Card chrome (the brand's `--radius` value). |
|
|
362
|
+
| `{rounded.pill}` | 9999px | Every button — the brand's universal interactive shape. |
|
|
363
|
+
| `{rounded.full}` | 9999px | Circular icon containers. |
|
|
364
|
+
|
|
365
|
+
## Components
|
|
366
|
+
|
|
367
|
+
### Buttons
|
|
368
|
+
|
|
369
|
+
**`button-primary`** — the rare white-filled pill (used on a single Sign Up CTA).
|
|
370
|
+
- Background `{colors.primary}` white, text `{colors.on-primary}` near-black, 1 px solid white border, label `{typography.button-md}`, padding `{spacing.xs} {spacing.md}`, shape `{rounded.pill}` 9999 px.
|
|
371
|
+
|
|
372
|
+
**`button-outline-on-dark`** — the canonical white-outline pill, used for every non-primary CTA.
|
|
373
|
+
- Background `{colors.canvas}` (transparent in practice — `rgba(0,0,0,0)`), text `{colors.ink}` white, 1 px solid `{colors.hairline}` border (translucent white at runtime), same typography / padding scale / shape.
|
|
374
|
+
|
|
375
|
+
**`button-outline-sm`** — the smaller outline pill used in card-cluster CTAs.
|
|
376
|
+
- Same as `button-outline-on-dark` with tighter padding `{spacing.xs} {spacing.md}`.
|
|
377
|
+
|
|
378
|
+
### Cards & Containers
|
|
379
|
+
|
|
380
|
+
**`card-content`** — the default content card.
|
|
381
|
+
- Background `{colors.canvas-card}` (`#191919`), text `{colors.ink}`, 1 px solid `{colors.hairline}` border, padding `{spacing.xl}`, shape `{rounded.sm}` 8 px.
|
|
382
|
+
|
|
383
|
+
**`card-feature-product`** — the product-feature card (Grok / Voice / API).
|
|
384
|
+
- Same chrome as `card-content`. Hosts an SVG illustration + headline + body + outline pill CTA.
|
|
385
|
+
|
|
386
|
+
### Inputs & Forms
|
|
387
|
+
|
|
388
|
+
**`text-input`** — the standard text input on dark.
|
|
389
|
+
- Background `{colors.canvas-soft}`, text `{colors.ink}`, 1 px solid `{colors.hairline}`, body in `{typography.body-md}`, padding `{spacing.md} {spacing.lg}`, shape `{rounded.sm}` 8 px.
|
|
390
|
+
|
|
391
|
+
### Navigation
|
|
392
|
+
|
|
393
|
+
**`nav-bar`** — the sticky top nav.
|
|
394
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.md} {spacing.xl}`.
|
|
395
|
+
|
|
396
|
+
**`nav-link`** — link items inside nav.
|
|
397
|
+
- Text `{colors.ink}`, set in `{typography.body-sm}`.
|
|
398
|
+
|
|
399
|
+
**`footer`** — the footer band.
|
|
400
|
+
- Background `{colors.canvas}`, text `{colors.body}`, padding `{spacing.3xl} {spacing.xl}`. Body in `{typography.body-sm}`.
|
|
401
|
+
|
|
402
|
+
### Signature Components
|
|
403
|
+
|
|
404
|
+
**`hero-band`** — the dark hero with massive display headline.
|
|
405
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.4xl} {spacing.xl}`. Headline in `{typography.display-xl}` (96 px weight 400 with `-2.4 px` tracking).
|
|
406
|
+
|
|
407
|
+
**`content-band`** — the standard content section.
|
|
408
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.4xl} {spacing.xl}`. Section headline in `{typography.display-md}` preceded by a `{typography.caption-mono}` UPPERCASE GeistMono eyebrow.
|
|
409
|
+
|
|
410
|
+
**`eyebrow-mono`** — the uppercase tracked GeistMono label above every section headline.
|
|
411
|
+
- Text `{colors.ink}`, set in `{typography.caption-mono}`. The brand's signature label style.
|
|
412
|
+
|
|
413
|
+
**`divider-hairline`** — the 1 px line between section bands.
|
|
414
|
+
- 1 px solid `{colors.hairline}`.
|
|
415
|
+
|
|
416
|
+
### Examples (illustrative)
|
|
417
|
+
|
|
418
|
+
> Auto-derived kit-mirror demonstration surfaces (`scripts/derive-examples-block.mjs`). Each `ex-*` entry references brand-native primitives so downstream consumers (`/preview-design`, `/generate-kit`) re-skin the same 10 surfaces consistently. `TO_FILL` markers indicate missing primitives — resolve in the LLM judgment pass.
|
|
419
|
+
|
|
420
|
+
**`ex-pricing-tier`** — Default Pricing tier card. Re-uses feature-card chrome with brand canvas-soft surface.
|
|
421
|
+
- Properties: `backgroundColor`, `textColor`, `borderColor`, `rounded`, `padding`
|
|
422
|
+
|
|
423
|
+
**`ex-pricing-tier-featured`** — Featured/highlighted tier — polarity-flipped surface (dark fill + light text in light mode, light fill + dark text in dark mode).
|
|
424
|
+
- Properties: `backgroundColor`, `textColor`, `rounded`, `padding`
|
|
425
|
+
|
|
426
|
+
**`ex-product-selector`** — What's Included summary card — re-purposed for SaaS / B2B verticals (NOT a literal product gallery).
|
|
427
|
+
- Properties: `backgroundColor`, `rounded`, `padding`
|
|
428
|
+
|
|
429
|
+
**`ex-cart-drawer`** — Subscription summary — re-purposed for SaaS / B2B (line items per add-on, not literal cart).
|
|
430
|
+
- Properties: `backgroundColor`, `rounded`, `padding`, `item-divider`
|
|
431
|
+
|
|
432
|
+
**`ex-app-shell-row`** — Sidebar nav row inside the App Shell example. Active state uses brand primary as the indicator.
|
|
433
|
+
- Properties: `backgroundColor`, `activeIndicator`, `rounded`, `padding`
|
|
434
|
+
|
|
435
|
+
**`ex-data-table-cell`** — Default data-table th + td chrome. Header uses mono-caps eyebrow typography; body uses body-sm.
|
|
436
|
+
- Properties: `headerBackground`, `headerTypography`, `bodyTypography`, `cellPadding`, `rowBorder`
|
|
437
|
+
|
|
438
|
+
**`ex-auth-form-card`** — Sign-in / sign-up card. Re-uses feature-card chrome with text-input primitives inside.
|
|
439
|
+
- Properties: `backgroundColor`, `rounded`, `padding`
|
|
440
|
+
|
|
441
|
+
**`ex-modal-card`** — Modal dialog surface — same chrome as feature-card with elevated shadow.
|
|
442
|
+
- Properties: `backgroundColor`, `rounded`, `padding`
|
|
443
|
+
|
|
444
|
+
**`ex-empty-state-card`** — Empty-state illustration frame.
|
|
445
|
+
- Properties: `backgroundColor`, `rounded`, `padding`, `captionTypography`
|
|
446
|
+
|
|
447
|
+
**`ex-toast`** — Toast notification surface — feature-card shape + medium shadow.
|
|
448
|
+
- Properties: `backgroundColor`, `rounded`, `padding`, `typography`
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
## Do's and Don'ts
|
|
452
|
+
|
|
453
|
+
### Do
|
|
454
|
+
- Reserve `{colors.canvas}` (`#0a0a0a`) as the only page surface. The brand is dark-canvas only.
|
|
455
|
+
- Set hero headlines in `{typography.display-xl}` Universal Sans weight 400 with `-2.4 px` tracking. The precision IS the voice.
|
|
456
|
+
- Use `{rounded.pill}` 9999 px on every interactive element. The pill is the brand.
|
|
457
|
+
- Pair Universal Sans (sentence-case) with GeistMono UPPERCASE (eyebrows, labels, metric counters).
|
|
458
|
+
- Use white-translucent borders for outline buttons — the brand never uses solid white borders on its outline pill.
|
|
459
|
+
|
|
460
|
+
### Don't
|
|
461
|
+
- Don't introduce a light-mode counterpart. xAI is dark-canvas only.
|
|
462
|
+
- Don't bold display headlines. Weight 400 is the entire scale.
|
|
463
|
+
- Don't use filled buttons broadly. The brand uses outline pills almost exclusively; one Sign Up white-filled pill is the rare exception.
|
|
464
|
+
- Don't drop a drop-shadow on cards. Hairline borders carry elevation.
|
|
465
|
+
- Don't substitute Universal Sans with a generic geometric sans without adjusting letter-spacing. The negative tracking is part of the brand.
|