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,462 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: alpha
|
|
3
|
+
name: Supabaze Inspired
|
|
4
|
+
description: An inspired interpretation of Supabaze's design language — an open-source database platform built on a clean white-and-near-black system with a single signature emerald-green CTA, a custom humanist sans display tier, and dense product UI mockups composited above the hero. The brand reads as quietly technical: minimal chrome, a near-monochrome palette, and the green primary acting as the only chromatic event on the page.
|
|
5
|
+
|
|
6
|
+
colors:
|
|
7
|
+
primary: "#3ecf8e"
|
|
8
|
+
primary-deep: "#24b47e"
|
|
9
|
+
primary-soft: "#4ade80"
|
|
10
|
+
ink: "#171717"
|
|
11
|
+
ink-secondary: "#212121"
|
|
12
|
+
ink-mute: "#707070"
|
|
13
|
+
ink-mute-2: "#9a9a9a"
|
|
14
|
+
ink-faint: "#b2b2b2"
|
|
15
|
+
on-primary: "#171717"
|
|
16
|
+
on-dark: "#ffffff"
|
|
17
|
+
canvas: "#ffffff"
|
|
18
|
+
canvas-soft: "#fafafa"
|
|
19
|
+
canvas-night: "#1c1c1c"
|
|
20
|
+
canvas-night-soft: "#202020"
|
|
21
|
+
hairline: "#dfdfdf"
|
|
22
|
+
hairline-strong: "#c7c7c7"
|
|
23
|
+
hairline-cool: "#ededed"
|
|
24
|
+
hairline-cool-2: "#efefef"
|
|
25
|
+
hairline-cool-3: "#d4d4d4"
|
|
26
|
+
accent-purple: "#6b01c2"
|
|
27
|
+
accent-violet: "#644fc1"
|
|
28
|
+
accent-purple-soft: "#eddbf9"
|
|
29
|
+
accent-yellow: "#ffdb13"
|
|
30
|
+
accent-tomato: "#ff2201"
|
|
31
|
+
accent-pink: "#c7007e"
|
|
32
|
+
accent-indigo: "#054cff"
|
|
33
|
+
accent-crimson: "#e2005a"
|
|
34
|
+
|
|
35
|
+
typography:
|
|
36
|
+
display-xxl:
|
|
37
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
38
|
+
fontSize: 64px
|
|
39
|
+
fontWeight: 500
|
|
40
|
+
lineHeight: 1.1
|
|
41
|
+
letterSpacing: -1.92px
|
|
42
|
+
display-xl:
|
|
43
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
44
|
+
fontSize: 48px
|
|
45
|
+
fontWeight: 500
|
|
46
|
+
lineHeight: 1.1
|
|
47
|
+
letterSpacing: -1.44px
|
|
48
|
+
display-lg:
|
|
49
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
50
|
+
fontSize: 36px
|
|
51
|
+
fontWeight: 500
|
|
52
|
+
lineHeight: 1.15
|
|
53
|
+
letterSpacing: -0.72px
|
|
54
|
+
display-md:
|
|
55
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
56
|
+
fontSize: 28px
|
|
57
|
+
fontWeight: 500
|
|
58
|
+
lineHeight: 1.2
|
|
59
|
+
letterSpacing: -0.42px
|
|
60
|
+
heading-lg:
|
|
61
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
62
|
+
fontSize: 22px
|
|
63
|
+
fontWeight: 500
|
|
64
|
+
lineHeight: 1.2
|
|
65
|
+
letterSpacing: 0
|
|
66
|
+
heading-md:
|
|
67
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
68
|
+
fontSize: 18px
|
|
69
|
+
fontWeight: 500
|
|
70
|
+
lineHeight: 1.4
|
|
71
|
+
letterSpacing: 0
|
|
72
|
+
body-lg:
|
|
73
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
74
|
+
fontSize: 18px
|
|
75
|
+
fontWeight: 400
|
|
76
|
+
lineHeight: 1.55
|
|
77
|
+
letterSpacing: 0
|
|
78
|
+
body-md:
|
|
79
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
80
|
+
fontSize: 16px
|
|
81
|
+
fontWeight: 400
|
|
82
|
+
lineHeight: 1.5
|
|
83
|
+
letterSpacing: 0
|
|
84
|
+
button-md:
|
|
85
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
86
|
+
fontSize: 14px
|
|
87
|
+
fontWeight: 500
|
|
88
|
+
lineHeight: 1.0
|
|
89
|
+
letterSpacing: 0
|
|
90
|
+
caption:
|
|
91
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
92
|
+
fontSize: 13px
|
|
93
|
+
fontWeight: 400
|
|
94
|
+
lineHeight: 1.45
|
|
95
|
+
letterSpacing: 0
|
|
96
|
+
micro:
|
|
97
|
+
fontFamily: "Circular, 'Helvetica Neue', Helvetica, Arial, sans-serif"
|
|
98
|
+
fontSize: 12px
|
|
99
|
+
fontWeight: 400
|
|
100
|
+
lineHeight: 1.45
|
|
101
|
+
letterSpacing: 0
|
|
102
|
+
code:
|
|
103
|
+
fontFamily: "ui-monospace, Menlo, Monaco, Consolas, 'Liberation Mono', monospace"
|
|
104
|
+
fontSize: 14px
|
|
105
|
+
fontWeight: 400
|
|
106
|
+
lineHeight: 1.5
|
|
107
|
+
letterSpacing: 0
|
|
108
|
+
|
|
109
|
+
rounded:
|
|
110
|
+
xs: 4px
|
|
111
|
+
sm: 6px
|
|
112
|
+
md: 8px
|
|
113
|
+
lg: 12px
|
|
114
|
+
xl: 16px
|
|
115
|
+
full: 9999px
|
|
116
|
+
|
|
117
|
+
spacing:
|
|
118
|
+
xxs: 2px
|
|
119
|
+
xs: 4px
|
|
120
|
+
sm: 8px
|
|
121
|
+
md: 12px
|
|
122
|
+
lg: 16px
|
|
123
|
+
xl: 24px
|
|
124
|
+
xxl: 32px
|
|
125
|
+
huge: 64px
|
|
126
|
+
|
|
127
|
+
components:
|
|
128
|
+
button-primary-green:
|
|
129
|
+
backgroundColor: "{colors.primary}"
|
|
130
|
+
textColor: "{colors.on-primary}"
|
|
131
|
+
typography: "{typography.button-md}"
|
|
132
|
+
rounded: "{rounded.sm}"
|
|
133
|
+
padding: 8px 16px
|
|
134
|
+
button-primary-green-pressed:
|
|
135
|
+
backgroundColor: "{colors.primary-deep}"
|
|
136
|
+
textColor: "{colors.on-primary}"
|
|
137
|
+
typography: "{typography.button-md}"
|
|
138
|
+
rounded: "{rounded.sm}"
|
|
139
|
+
padding: 8px 16px
|
|
140
|
+
button-secondary-outline:
|
|
141
|
+
backgroundColor: "{colors.canvas}"
|
|
142
|
+
textColor: "{colors.ink}"
|
|
143
|
+
typography: "{typography.button-md}"
|
|
144
|
+
rounded: "{rounded.sm}"
|
|
145
|
+
padding: 8px 16px
|
|
146
|
+
button-on-dark:
|
|
147
|
+
backgroundColor: "{colors.canvas-night}"
|
|
148
|
+
textColor: "{colors.on-dark}"
|
|
149
|
+
typography: "{typography.button-md}"
|
|
150
|
+
rounded: "{rounded.sm}"
|
|
151
|
+
padding: 8px 16px
|
|
152
|
+
button-link:
|
|
153
|
+
backgroundColor: "{colors.canvas}"
|
|
154
|
+
textColor: "{colors.ink}"
|
|
155
|
+
typography: "{typography.button-md}"
|
|
156
|
+
rounded: "{rounded.xs}"
|
|
157
|
+
padding: 0px
|
|
158
|
+
text-input:
|
|
159
|
+
backgroundColor: "{colors.canvas}"
|
|
160
|
+
textColor: "{colors.ink}"
|
|
161
|
+
typography: "{typography.body-md}"
|
|
162
|
+
rounded: "{rounded.sm}"
|
|
163
|
+
padding: 8px 12px
|
|
164
|
+
card-feature-light:
|
|
165
|
+
backgroundColor: "{colors.canvas}"
|
|
166
|
+
textColor: "{colors.ink}"
|
|
167
|
+
typography: "{typography.body-md}"
|
|
168
|
+
rounded: "{rounded.lg}"
|
|
169
|
+
padding: 32px
|
|
170
|
+
card-pricing:
|
|
171
|
+
backgroundColor: "{colors.canvas}"
|
|
172
|
+
textColor: "{colors.ink}"
|
|
173
|
+
typography: "{typography.body-md}"
|
|
174
|
+
rounded: "{rounded.lg}"
|
|
175
|
+
padding: 32px
|
|
176
|
+
card-pricing-featured:
|
|
177
|
+
backgroundColor: "{colors.canvas-night}"
|
|
178
|
+
textColor: "{colors.on-dark}"
|
|
179
|
+
typography: "{typography.body-md}"
|
|
180
|
+
rounded: "{rounded.lg}"
|
|
181
|
+
padding: 32px
|
|
182
|
+
card-feature-dark:
|
|
183
|
+
backgroundColor: "{colors.canvas-night}"
|
|
184
|
+
textColor: "{colors.on-dark}"
|
|
185
|
+
typography: "{typography.body-md}"
|
|
186
|
+
rounded: "{rounded.lg}"
|
|
187
|
+
padding: 32px
|
|
188
|
+
code-block:
|
|
189
|
+
backgroundColor: "{colors.canvas-night}"
|
|
190
|
+
textColor: "{colors.on-dark}"
|
|
191
|
+
typography: "{typography.code}"
|
|
192
|
+
rounded: "{rounded.sm}"
|
|
193
|
+
padding: 16px
|
|
194
|
+
pill-tag-green:
|
|
195
|
+
backgroundColor: "{colors.primary}"
|
|
196
|
+
textColor: "{colors.on-primary}"
|
|
197
|
+
typography: "{typography.micro}"
|
|
198
|
+
rounded: "{rounded.full}"
|
|
199
|
+
padding: 2px 8px
|
|
200
|
+
pill-tag-soft:
|
|
201
|
+
backgroundColor: "{colors.canvas-soft}"
|
|
202
|
+
textColor: "{colors.ink}"
|
|
203
|
+
typography: "{typography.micro}"
|
|
204
|
+
rounded: "{rounded.full}"
|
|
205
|
+
padding: 2px 8px
|
|
206
|
+
nav-bar-light:
|
|
207
|
+
backgroundColor: "{colors.canvas}"
|
|
208
|
+
textColor: "{colors.ink}"
|
|
209
|
+
typography: "{typography.body-md}"
|
|
210
|
+
rounded: "{rounded.xs}"
|
|
211
|
+
padding: 16px 24px
|
|
212
|
+
link-on-light:
|
|
213
|
+
backgroundColor: "{colors.canvas}"
|
|
214
|
+
textColor: "{colors.ink}"
|
|
215
|
+
typography: "{typography.body-md}"
|
|
216
|
+
rounded: "{rounded.xs}"
|
|
217
|
+
padding: 0px
|
|
218
|
+
footer-light:
|
|
219
|
+
backgroundColor: "{colors.canvas}"
|
|
220
|
+
textColor: "{colors.ink-mute}"
|
|
221
|
+
typography: "{typography.caption}"
|
|
222
|
+
rounded: "{rounded.xs}"
|
|
223
|
+
padding: 64px 24px
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## Overview
|
|
227
|
+
|
|
228
|
+
Supabaze's design language is engineered for clarity above all else. The marketing surfaces sit on `{colors.canvas}` (pure white), with text rendered in `{colors.ink}` (`#171717` — near-black, never pure black). Across the entire system the only consistent chromatic event is the **emerald green primary** (`{colors.primary}` — `#3ecf8e`) — used as the filled CTA, occasional accent dot, and the signature highlight color in the wordmark. Everything else is a calibrated grey ladder from `#ededed` hairline-cool to `#171717` ink, with thin black-on-white typography doing most of the visual work.
|
|
229
|
+
|
|
230
|
+
Typography runs **Circular** at weight 500 for display and 400 for body. The display tier uses tight negative letter-spacing (-1.92px at 64px) to pull the rounded humanist letterforms into editorial density. There's no atmospheric gradient, no full-bleed photography, no dark-canvas marketing track — the brand commits to white.
|
|
231
|
+
|
|
232
|
+
The product itself appears as composited UI screenshots on every page: dashboard tables, SQL editors, query builders, log streams. These screenshots are the brand's argument. They sit inside `{rounded.lg}` 12px containers with subtle 1px hairlines, often arranged 2-up or in a floating "stacked panes" composition above the hero band.
|
|
233
|
+
|
|
234
|
+
**Key Characteristics:**
|
|
235
|
+
- Single emerald primary (`{colors.primary}` `#3ecf8e`) as the only chromatic event; everything else is monochrome.
|
|
236
|
+
- White canvas marketing track with greyscale hierarchy from `{colors.hairline-cool}` to `{colors.ink}`.
|
|
237
|
+
- Custom humanist sans display tier at weight 500 with negative letter-spacing of -1.92px to -0.42px.
|
|
238
|
+
- Composited product UI screenshots (dashboard, SQL editor, log stream) are the dominant decorative element — never photography, never illustrations.
|
|
239
|
+
- Tight 6px / 8px button radii — square-ish, technical, never pill-shaped.
|
|
240
|
+
- Code blocks rendered in deep `{colors.canvas-night}` (`#1c1c1c`) with monospace inline code; the brand's developer DNA is visible in every snippet.
|
|
241
|
+
- Pricing tiers use a dark inverted `{colors.canvas-night}` featured tier, not a green one — the green is reserved for buttons and dot accents.
|
|
242
|
+
|
|
243
|
+
## Colors
|
|
244
|
+
|
|
245
|
+
> **Source pages:** home (`/`), `/database`, `/partners/integrations`, `/partners/integrations/powersync`, `/solutions/ai-builders`, `/pricing`.
|
|
246
|
+
|
|
247
|
+
### Brand & Accent
|
|
248
|
+
- **Emerald** (`{colors.primary}` — `#3ecf8e`): The signature CTA color. Filled-button background, brand wordmark accent, dot indicator.
|
|
249
|
+
- **Emerald Deep** (`{colors.primary-deep}` — `#24b47e`): Pressed-state lift of the primary.
|
|
250
|
+
- **Emerald Soft** (`{colors.primary-soft}` — `#4ade80`): Lighter emerald used in chart accents and product UI.
|
|
251
|
+
- **Accent Purple** (`{colors.accent-purple}` — `#6b01c2`): Rare accent used in integration logos and chart points; never a button.
|
|
252
|
+
- **Accent Violet** (`{colors.accent-violet}` — `#644fc1`): Secondary accent in the same role as accent purple.
|
|
253
|
+
- **Accent Yellow** (`{colors.accent-yellow}` — `#ffdb13`): Chart accent / status indicator only.
|
|
254
|
+
- **Accent Pink / Crimson / Indigo / Tomato**: Reserved for integration logos and rare chart highlights, never as system colors.
|
|
255
|
+
|
|
256
|
+
### Surface
|
|
257
|
+
- **Canvas** (`{colors.canvas}` — `#ffffff`): Default page background.
|
|
258
|
+
- **Canvas Soft** (`{colors.canvas-soft}` — `#fafafa`): Barely-tinted off-white for alternating section bands.
|
|
259
|
+
- **Canvas Night** (`{colors.canvas-night}` — `#1c1c1c`): Deep near-black used in code blocks, dashboard mockups, featured pricing tier.
|
|
260
|
+
- **Canvas Night Soft** (`{colors.canvas-night-soft}` — `#202020`): Slightly lifted dark for nested chrome.
|
|
261
|
+
- **Hairline** (`{colors.hairline}` — `#dfdfdf`): 1px borders on cards and tables.
|
|
262
|
+
- **Hairline Strong** (`{colors.hairline-strong}` — `#c7c7c7`): Slightly darker border for emphasis.
|
|
263
|
+
- **Hairline Cool** (`{colors.hairline-cool}` — `#ededed`) / **Hairline Cool 2** (`#efefef`) / **Hairline Cool 3** (`#d4d4d4`): The brand's grey ladder for fine chrome work.
|
|
264
|
+
|
|
265
|
+
### Text
|
|
266
|
+
- **Ink** (`{colors.ink}` — `#171717`): Default body text. Near-black, never pure.
|
|
267
|
+
- **Ink Secondary** (`{colors.ink-secondary}` — `#212121`): Slightly cooler near-black for body emphasis.
|
|
268
|
+
- **Ink Mute** (`{colors.ink-mute}` — `#707070`): Secondary text and helper copy.
|
|
269
|
+
- **Ink Mute 2** (`{colors.ink-mute-2}` — `#9a9a9a`): Tertiary text.
|
|
270
|
+
- **Ink Faint** (`{colors.ink-faint}` — `#b2b2b2`): Disabled / placeholder text.
|
|
271
|
+
- **On Primary** (`{colors.on-primary}` — `#171717`): Text on the emerald primary fill — near-black, not white. The button reads as a "lit" surface with dark type, not a colored chip.
|
|
272
|
+
- **On Dark** (`{colors.on-dark}` — `#ffffff`): Text on canvas-night surfaces.
|
|
273
|
+
|
|
274
|
+
## Typography
|
|
275
|
+
|
|
276
|
+
### Font Family
|
|
277
|
+
|
|
278
|
+
The display and UI tier is **Circular** — a proprietary geometric humanist sans by Lineto. Fallback chain: `'Helvetica Neue', Helvetica, Arial`.
|
|
279
|
+
|
|
280
|
+
For maximum brand fidelity when Circular isn't licensed, use **Inter** (open-source via Google Fonts) at weight 500 for display with `letter-spacing: -1.92px` at 64px. Inter is the closest open-source analogue to Circular's geometric humanist character.
|
|
281
|
+
|
|
282
|
+
Code blocks use **system mono** (`ui-monospace`, with Menlo / Monaco / Consolas fallbacks).
|
|
283
|
+
|
|
284
|
+
### Hierarchy
|
|
285
|
+
|
|
286
|
+
| Token | Size | Weight | Line Height | Letter Spacing | Use |
|
|
287
|
+
|---|---|---|---|---|---|
|
|
288
|
+
| `{typography.display-xxl}` | 64px | 500 | 1.1 | -1.92px | Hero headline |
|
|
289
|
+
| `{typography.display-xl}` | 48px | 500 | 1.1 | -1.44px | Section opener |
|
|
290
|
+
| `{typography.display-lg}` | 36px | 500 | 1.15 | -0.72px | Sub-section / pricing tier |
|
|
291
|
+
| `{typography.display-md}` | 28px | 500 | 1.2 | -0.42px | Card title |
|
|
292
|
+
| `{typography.heading-lg}` | 22px | 500 | 1.2 | 0 | Compact heading |
|
|
293
|
+
| `{typography.heading-md}` | 18px | 500 | 1.4 | 0 | Section sub-heading |
|
|
294
|
+
| `{typography.body-lg}` | 18px | 400 | 1.55 | 0 | Marketing body lead |
|
|
295
|
+
| `{typography.body-md}` | 16px | 400 | 1.5 | 0 | Default UI body |
|
|
296
|
+
| `{typography.button-md}` | 14px | 500 | 1.0 | 0 | Button label |
|
|
297
|
+
| `{typography.caption}` | 13px | 400 | 1.45 | 0 | Helper, footnote |
|
|
298
|
+
| `{typography.micro}` | 12px | 400 | 1.45 | 0 | Pill label, fine print |
|
|
299
|
+
| `{typography.code}` | 14px | 400 | 1.5 | 0 | Code block content |
|
|
300
|
+
|
|
301
|
+
### Principles
|
|
302
|
+
- **Weight 500 across display.** Mid-weight reads as engineered, not decorative.
|
|
303
|
+
- **Negative tracking on display.** -1.92px at 64px scaling proportionally down — tightens the rounded humanist letterforms into editorial density.
|
|
304
|
+
- **Mono for code.** System mono families (Menlo / Monaco) — no proprietary mono webfont.
|
|
305
|
+
|
|
306
|
+
### Note on Font Substitutes
|
|
307
|
+
Circular is proprietary. Use **Inter** at weight 500 with `letter-spacing: -1.92px` for display tiers. **Geist Sans** (open-source from Vercel) is another close alternative for both display and body. Avoid Helvetica defaults — they're heavier and lack the geometric warmth.
|
|
308
|
+
|
|
309
|
+
## Layout
|
|
310
|
+
|
|
311
|
+
### Spacing System
|
|
312
|
+
- **Base unit**: 8px (with 2 / 4 / 12 sub-tokens for fine work).
|
|
313
|
+
- **Tokens**: `{spacing.xxs}` 2px · `{spacing.xs}` 4px · `{spacing.sm}` 8px · `{spacing.md}` 12px · `{spacing.lg}` 16px · `{spacing.xl}` 24px · `{spacing.xxl}` 32px · `{spacing.huge}` 64px.
|
|
314
|
+
- **Section padding**: 64–96px on marketing surfaces.
|
|
315
|
+
- **Card internal padding**: 32px on feature/pricing cards.
|
|
316
|
+
|
|
317
|
+
### Grid & Container
|
|
318
|
+
- Marketing pages center in a ~1280px container with no edge-bleed; the brand keeps content inside the box.
|
|
319
|
+
- Pricing collapses 4-up → 2-up → 1-up at 1024 / 768 breakpoints.
|
|
320
|
+
- Product UI mockups stack 2-up or render as overlapping panes inside the same container.
|
|
321
|
+
|
|
322
|
+
### Whitespace Philosophy
|
|
323
|
+
The brand uses generous 64–96px section padding without atmospheric gradients filling the space — the white canvas is the design. The composited product UI mockups break up sections without requiring decoration.
|
|
324
|
+
|
|
325
|
+
## Elevation & Depth
|
|
326
|
+
|
|
327
|
+
| Level | Treatment | Use |
|
|
328
|
+
|---|---|---|
|
|
329
|
+
| 0 | Flat, 1px hairline | Default cards |
|
|
330
|
+
| 1 | `box-shadow: 0 1px 3px rgba(0,0,0,0.06)` | Subtle card lift |
|
|
331
|
+
| 2 | `box-shadow: 0 8px 24px rgba(0,0,0,0.08)` | Floating composited UI mockups |
|
|
332
|
+
| 3 | `box-shadow: 0 16px 48px rgba(0,0,0,0.12)` | Modal overlays, deep elevation |
|
|
333
|
+
|
|
334
|
+
### Decorative Depth
|
|
335
|
+
The brand's depth is **product UI mockups** rather than gradients. Stacked dashboard / SQL editor / log panes composite together with subtle Level 2 shadows to suggest spatial hierarchy.
|
|
336
|
+
|
|
337
|
+
## Shapes
|
|
338
|
+
|
|
339
|
+
### Border Radius Scale
|
|
340
|
+
|
|
341
|
+
| Token | Value | Use |
|
|
342
|
+
|---|---|---|
|
|
343
|
+
| `{rounded.xs}` | 4px | Form inputs, hairline tags |
|
|
344
|
+
| `{rounded.sm}` | 6px | Buttons (the brand's signature button radius), code blocks |
|
|
345
|
+
| `{rounded.md}` | 8px | Compact cards, alerts |
|
|
346
|
+
| `{rounded.lg}` | 12px | Pricing cards, feature cards, product mockups |
|
|
347
|
+
| `{rounded.xl}` | 16px | Modal dialogs, large container chrome |
|
|
348
|
+
| `{rounded.full}` | 9999px | Pill tags, avatars |
|
|
349
|
+
|
|
350
|
+
### Photography Geometry
|
|
351
|
+
The brand uses minimal photography. Customer logo strips display wordmarks at uniform height (~24–32px) in greyscale; case-study cards (rare) use 4:3 photos inset in `{rounded.lg}` containers.
|
|
352
|
+
|
|
353
|
+
## Components
|
|
354
|
+
|
|
355
|
+
### Buttons
|
|
356
|
+
|
|
357
|
+
**`button-primary-green`** — the signature CTA.
|
|
358
|
+
- Background `{colors.primary}`, text `{colors.on-primary}` (near-black, NOT white), type `{typography.button-md}`, padding `{spacing.sm} {spacing.lg}` (8px 16px), rounded `{rounded.sm}` 6px.
|
|
359
|
+
- Pressed state `button-primary-green-pressed` shifts to `{colors.primary-deep}`.
|
|
360
|
+
|
|
361
|
+
**`button-secondary-outline`** — outline alternative on white.
|
|
362
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, 1px solid `{colors.hairline-strong}` border, same shape.
|
|
363
|
+
|
|
364
|
+
**`button-on-dark`** — used on dark surfaces / code-block CTAs.
|
|
365
|
+
- Background `{colors.canvas-night}`, text `{colors.on-dark}`, same shape.
|
|
366
|
+
|
|
367
|
+
**`button-link`** — text-only inline button.
|
|
368
|
+
- Transparent background, text `{colors.ink}` rendered in `{typography.button-md}`, no padding, with a subtle underline on hover.
|
|
369
|
+
|
|
370
|
+
### Cards & Containers
|
|
371
|
+
|
|
372
|
+
**`card-feature-light`** — feature card on white.
|
|
373
|
+
- Background `{colors.canvas}`, padding `{spacing.xxl}`, rounded `{rounded.lg}` 12px, 1px `{colors.hairline}` border.
|
|
374
|
+
|
|
375
|
+
**`card-pricing`** — standard pricing tier.
|
|
376
|
+
- Background `{colors.canvas}`, padding `{spacing.xxl}`, rounded `{rounded.lg}`, 1px `{colors.hairline}` border. Title in `{typography.heading-lg}`, price in `{typography.display-md}`, body in `{typography.body-md}`, CTA `button-primary-green` pinned bottom.
|
|
377
|
+
|
|
378
|
+
**`card-pricing-featured`** — inverted dark featured tier.
|
|
379
|
+
- Background `{colors.canvas-night}`, text `{colors.on-dark}`, otherwise identical structure.
|
|
380
|
+
|
|
381
|
+
**`card-feature-dark`** — feature card with deep dark fill.
|
|
382
|
+
- Background `{colors.canvas-night}`, text `{colors.on-dark}`, padding `{spacing.xxl}`, rounded `{rounded.lg}`. Used for code-heavy feature explanations.
|
|
383
|
+
|
|
384
|
+
**`code-block`** — code snippet container.
|
|
385
|
+
- Background `{colors.canvas-night}`, text `{colors.on-dark}` rendered in `{typography.code}`. Padding `{spacing.lg}` 16px, rounded `{rounded.sm}` 6px.
|
|
386
|
+
|
|
387
|
+
### Inputs & Forms
|
|
388
|
+
|
|
389
|
+
**`text-input`** — standard form input.
|
|
390
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, type `{typography.body-md}`, padding `{spacing.sm} {spacing.md}` (8px 12px), rounded `{rounded.sm}` 6px, 1px `{colors.hairline}` border.
|
|
391
|
+
|
|
392
|
+
### Navigation
|
|
393
|
+
|
|
394
|
+
**`nav-bar-light`** — top nav across the site.
|
|
395
|
+
- Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.lg} {spacing.xl}`. Logo on the left, primary nav center, "Sign In" link + filled `button-primary-green` on the right.
|
|
396
|
+
|
|
397
|
+
### Pills, Tags, and Chips
|
|
398
|
+
|
|
399
|
+
**`pill-tag-green`** — small green pill used for "new" or featured indicators.
|
|
400
|
+
- Background `{colors.primary}`, text `{colors.on-primary}`, type `{typography.micro}`, padding `{spacing.xxs} {spacing.sm}`, rounded `{rounded.full}`.
|
|
401
|
+
|
|
402
|
+
**`pill-tag-soft`** — neutral pill on light surfaces.
|
|
403
|
+
- Background `{colors.canvas-soft}`, text `{colors.ink}`, otherwise same shape.
|
|
404
|
+
|
|
405
|
+
### Signature Components
|
|
406
|
+
|
|
407
|
+
**Composited Product UI Mockups** — multi-layer dashboard / SQL editor / log pane composites with subtle Level 2 shadows. The product is the brand's argument; mockups always sit on white canvas with no surrounding decoration.
|
|
408
|
+
|
|
409
|
+
**`link-on-light`** — inline links in body copy.
|
|
410
|
+
- Text `{colors.ink}` rendered in `{typography.body-md}` with a persistent underline.
|
|
411
|
+
|
|
412
|
+
**`footer-light`** — site-wide footer.
|
|
413
|
+
- Background `{colors.canvas}`, text `{colors.ink-mute}`, type `{typography.caption}`, padding `{spacing.huge} {spacing.xl}` (64px 24px). Holds 4–5 columns of link groups, social icons, and a small legal row.
|
|
414
|
+
|
|
415
|
+
## Do's and Don'ts
|
|
416
|
+
|
|
417
|
+
### Do
|
|
418
|
+
- Reserve `{colors.primary}` emerald for filled CTAs and the wordmark accent — it should appear sparingly.
|
|
419
|
+
- Render display tiers at weight 500 with negative letter-spacing — the engineered tightness is part of the brand.
|
|
420
|
+
- Use `{rounded.sm}` 6px for buttons — square-ish radii, never pill-shaped.
|
|
421
|
+
- Composite product UI mockups inside `{rounded.lg}` containers with subtle Level 2 shadows.
|
|
422
|
+
- Use near-black `{colors.ink}` on the emerald button (not white) — the green reads as "lit" with dark type, which is the brand's idiosyncratic choice.
|
|
423
|
+
- Apply system mono for every code block.
|
|
424
|
+
|
|
425
|
+
### Don't
|
|
426
|
+
- Don't introduce additional accent colors as system colors — purples, yellows, and pinks belong inside chart points and integration logos only.
|
|
427
|
+
- Don't bump display weight above 500 — the brand's calibrated mid-weight breaks at 600+.
|
|
428
|
+
- Don't use pill-shaped buttons; the brand's button radius is square-ish 6px.
|
|
429
|
+
- Don't use white text on the emerald button — the brand specifically uses near-black on green.
|
|
430
|
+
- Don't add atmospheric gradients to hero bands — the white canvas is the design.
|
|
431
|
+
|
|
432
|
+
## Responsive Behavior
|
|
433
|
+
|
|
434
|
+
### Breakpoints
|
|
435
|
+
|
|
436
|
+
| Name | Width | Key Changes |
|
|
437
|
+
|---|---|---|
|
|
438
|
+
| Wide | ≥ 1440px | Full container width; product mockups at full scale |
|
|
439
|
+
| Desktop | 1024–1440px | Default content max-width; pricing 4-up |
|
|
440
|
+
| Tablet | 768–1023px | Pricing 2-up; mockups simplify to single panel |
|
|
441
|
+
| Mobile | < 768px | Pricing 1-up; hamburger nav; display drops 64 → 36px |
|
|
442
|
+
|
|
443
|
+
### Touch Targets
|
|
444
|
+
- Buttons hit ≥ 36×36px on mobile; vertical padding scales up to maintain WCAG AA minimum.
|
|
445
|
+
- Form fields stay at 36px minimum height.
|
|
446
|
+
|
|
447
|
+
### Collapsing Strategy
|
|
448
|
+
- Display tiers stair-step 64 → 48 → 36 → 28 → 22px.
|
|
449
|
+
- Product UI mockups simplify to a single primary panel on mobile.
|
|
450
|
+
- Pricing tiers stair-step 4-up → 2-up → 1-up; dark featured tier always distinguished.
|
|
451
|
+
|
|
452
|
+
### Image Behavior
|
|
453
|
+
Product UI mockups use `srcset` with desktop / mobile crops; mobile crops focus on the most actionable inner panel.
|
|
454
|
+
|
|
455
|
+
## Iteration Guide
|
|
456
|
+
|
|
457
|
+
1. Focus on ONE component at a time.
|
|
458
|
+
2. Reference component names and tokens directly.
|
|
459
|
+
3. Run `npx @google/design.md lint DESIGN.md` after edits.
|
|
460
|
+
4. Default body to `{typography.body-md}`; use `{typography.code}` for any developer-facing snippet.
|
|
461
|
+
5. Keep emerald scarce; one filled green button per viewport.
|
|
462
|
+
6. The white-canvas commitment is non-negotiable — adding atmospheric backdrops breaks the brand.
|