glyph-ai 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/README.md +69 -0
- package/bundled/overlay/overlay.js +63 -0
- package/bundled/server/context/brand-references.d.ts +7 -0
- package/bundled/server/context/brand-references.d.ts.map +1 -0
- package/bundled/server/context/brand-references.js +20 -0
- package/bundled/server/context/brand-references.js.map +1 -0
- package/bundled/server/context/design-philosophy.d.ts +6 -0
- package/bundled/server/context/design-philosophy.d.ts.map +1 -0
- package/bundled/server/context/design-philosophy.js +82 -0
- package/bundled/server/context/design-philosophy.js.map +1 -0
- package/bundled/server/context/design-system-loader.d.ts +11 -0
- package/bundled/server/context/design-system-loader.d.ts.map +1 -0
- package/bundled/server/context/design-system-loader.js +169 -0
- package/bundled/server/context/design-system-loader.js.map +1 -0
- package/bundled/server/context/design-system.d.ts +7 -0
- package/bundled/server/context/design-system.d.ts.map +1 -0
- package/bundled/server/context/design-system.js +75 -0
- package/bundled/server/context/design-system.js.map +1 -0
- package/bundled/server/context/prompt-builder.d.ts +15 -0
- package/bundled/server/context/prompt-builder.d.ts.map +1 -0
- package/bundled/server/context/prompt-builder.js +123 -0
- package/bundled/server/context/prompt-builder.js.map +1 -0
- package/bundled/server/context/token-template.d.ts +36 -0
- package/bundled/server/context/token-template.d.ts.map +1 -0
- package/bundled/server/context/token-template.js +226 -0
- package/bundled/server/context/token-template.js.map +1 -0
- package/bundled/server/data/design-systems/apple-design-system.md +474 -0
- package/bundled/server/data/design-systems/arc-design-system.md +922 -0
- package/bundled/server/data/design-systems/claude-ai-design-system.md +1443 -0
- package/bundled/server/data/design-systems/elevenlabs-design-system.md +669 -0
- package/bundled/server/data/design-systems/generating_design.md +9 -0
- package/bundled/server/data/design-systems/linear-design-system.md +607 -0
- package/bundled/server/data/design-systems/notion-design-system.md +866 -0
- package/bundled/server/data/design-systems/raycast-design-system.md +709 -0
- package/bundled/server/data/design-systems/stripe-design-system.md +592 -0
- package/bundled/server/data/design-systems/vercel-design-system.md +824 -0
- package/bundled/server/data/design.md +971 -0
- package/bundled/server/index.d.ts +2 -0
- package/bundled/server/index.d.ts.map +1 -0
- package/bundled/server/index.js +310 -0
- package/bundled/server/index.js.map +1 -0
- package/bundled/server/mcp/tools/apply-variation.d.ts +3 -0
- package/bundled/server/mcp/tools/apply-variation.d.ts.map +1 -0
- package/bundled/server/mcp/tools/apply-variation.js +43 -0
- package/bundled/server/mcp/tools/apply-variation.js.map +1 -0
- package/bundled/server/mcp/tools/generate-variations.d.ts +3 -0
- package/bundled/server/mcp/tools/generate-variations.d.ts.map +1 -0
- package/bundled/server/mcp/tools/generate-variations.js +58 -0
- package/bundled/server/mcp/tools/generate-variations.js.map +1 -0
- package/bundled/server/mcp/tools/index.d.ts +3 -0
- package/bundled/server/mcp/tools/index.d.ts.map +1 -0
- package/bundled/server/mcp/tools/index.js +11 -0
- package/bundled/server/mcp/tools/index.js.map +1 -0
- package/bundled/server/mcp/tools/scan-design-system.d.ts +3 -0
- package/bundled/server/mcp/tools/scan-design-system.d.ts.map +1 -0
- package/bundled/server/mcp/tools/scan-design-system.js +27 -0
- package/bundled/server/mcp/tools/scan-design-system.js.map +1 -0
- package/bundled/server/mcp/tools/submit-variations.d.ts +3 -0
- package/bundled/server/mcp/tools/submit-variations.d.ts.map +1 -0
- package/bundled/server/mcp/tools/submit-variations.js +50 -0
- package/bundled/server/mcp/tools/submit-variations.js.map +1 -0
- package/bundled/server/mcp-entry.d.ts +2 -0
- package/bundled/server/mcp-entry.d.ts.map +1 -0
- package/bundled/server/mcp-entry.js +56 -0
- package/bundled/server/mcp-entry.js.map +1 -0
- package/bundled/server/preview/css-resolver.d.ts +6 -0
- package/bundled/server/preview/css-resolver.d.ts.map +1 -0
- package/bundled/server/preview/css-resolver.js +57 -0
- package/bundled/server/preview/css-resolver.js.map +1 -0
- package/bundled/server/preview/html-builder.d.ts +6 -0
- package/bundled/server/preview/html-builder.d.ts.map +1 -0
- package/bundled/server/preview/html-builder.js +85 -0
- package/bundled/server/preview/html-builder.js.map +1 -0
- package/bundled/server/telemetry.d.ts +4 -0
- package/bundled/server/telemetry.d.ts.map +1 -0
- package/bundled/server/telemetry.js +71 -0
- package/bundled/server/telemetry.js.map +1 -0
- package/bundled/server/types.d.ts +69 -0
- package/bundled/server/types.d.ts.map +1 -0
- package/bundled/server/types.js +2 -0
- package/bundled/server/types.js.map +1 -0
- package/bundled/server/variations/file-writer.d.ts +5 -0
- package/bundled/server/variations/file-writer.d.ts.map +1 -0
- package/bundled/server/variations/file-writer.js +29 -0
- package/bundled/server/variations/file-writer.js.map +1 -0
- package/bundled/server/variations/git-utils.d.ts +3 -0
- package/bundled/server/variations/git-utils.d.ts.map +1 -0
- package/bundled/server/variations/git-utils.js +23 -0
- package/bundled/server/variations/git-utils.js.map +1 -0
- package/bundled/server/variations/store.d.ts +11 -0
- package/bundled/server/variations/store.d.ts.map +1 -0
- package/bundled/server/variations/store.js +52 -0
- package/bundled/server/variations/store.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +299 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/stop.d.ts +2 -0
- package/dist/commands/stop.d.ts.map +1 -0
- package/dist/commands/stop.js +32 -0
- package/dist/commands/stop.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/package.json +35 -0
|
@@ -0,0 +1,824 @@
|
|
|
1
|
+
# Vercel.com Design System & Section Boilerplate
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## Design System
|
|
6
|
+
|
|
7
|
+
### Colors
|
|
8
|
+
|
|
9
|
+
| Role | Value | RGB | Notes |
|
|
10
|
+
|------|-------|-----|-------|
|
|
11
|
+
| **Primary (Foreground)** | `#171717` | `rgb(23, 23, 23)` | Near-black. Headlines, primary buttons, body text |
|
|
12
|
+
| **Secondary (Background)** | `#FAFAFA` | `rgb(250, 250, 250)` | Off-white. Page background |
|
|
13
|
+
| **Tertiary (Accent Blue)** | `#0070F3` | `rgb(0, 112, 243)` | Vercel blue. Links, focus states, interactive accents |
|
|
14
|
+
| **Surface White** | `#FFFFFF` | `rgb(255, 255, 255)` | Cards, secondary buttons, input backgrounds |
|
|
15
|
+
| **Gray 100** | `hsl(0, 0%, 95%)` | `rgb(242, 242, 242)` | Lightest gray. Hover states on nav items |
|
|
16
|
+
| **Gray 200** | `hsl(0, 0%, 92%)` | `rgb(235, 235, 235)` | Active nav item bg, subtle borders |
|
|
17
|
+
| **Gray 300** | `hsl(0, 0%, 90%)` | `rgb(230, 230, 230)` | Dividers |
|
|
18
|
+
| **Gray 400** | `hsl(0, 0%, 92%)` | `rgb(235, 235, 235)` | Input borders |
|
|
19
|
+
| **Gray 500** | `hsl(0, 0%, 79%)` | `rgb(201, 201, 201)` | Disabled elements |
|
|
20
|
+
| **Gray 600** | `hsl(0, 0%, 66%)` | `rgb(168, 168, 168)` | Placeholder text |
|
|
21
|
+
| **Gray 700** | `hsl(0, 0%, 56%)` | `rgb(143, 143, 143)` | Muted icons |
|
|
22
|
+
| **Gray 800** | `hsl(0, 0%, 49%)` | `rgb(125, 125, 125)` | Secondary text |
|
|
23
|
+
| **Gray 900** | `hsl(0, 0%, 30%)` | `rgb(77, 77, 77)` | Nav links, tertiary text |
|
|
24
|
+
| **Gray 1000** | `hsl(0, 0%, 9%)` | `rgb(23, 23, 23)` | Primary text (matches foreground) |
|
|
25
|
+
| **Blue 700** | `hsl(212, 100%, 48%)` | `rgb(0, 112, 243)` | Links, focus color |
|
|
26
|
+
| **Success** | `#0070F3` | `rgb(0, 112, 243)` | Success states |
|
|
27
|
+
| **Error** | `#EE0000` | `rgb(238, 0, 0)` | Error states |
|
|
28
|
+
| **Warning** | `#F5A623` | `rgb(245, 166, 35)` | Warning states |
|
|
29
|
+
| **Alpha 100** | `#0000000D` | `rgba(0,0,0,0.05)` | Subtle overlays |
|
|
30
|
+
| **Alpha 400** | `#00000014` | `rgba(0,0,0,0.08)` | Border shadows |
|
|
31
|
+
| **Alpha 600** | `#00000057` | `rgba(0,0,0,0.34)` | Focus ring inner |
|
|
32
|
+
| **Alpha 900** | `#000000B3` | `rgba(0,0,0,0.70)` | Heavy overlays |
|
|
33
|
+
| **Footer Link** | `#666666` | `rgb(102, 102, 102)` | Footer link text |
|
|
34
|
+
|
|
35
|
+
### Typography
|
|
36
|
+
|
|
37
|
+
#### Font Families
|
|
38
|
+
|
|
39
|
+
| Role | Font | Fallback | Usage |
|
|
40
|
+
|------|------|----------|-------|
|
|
41
|
+
| **Sans (Primary)** | `Geist` | `Arial, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", sans-serif` | All headings, body, UI elements |
|
|
42
|
+
| **Sans Fallback** | `Inter` | `-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif` | CSS var `--font-sans-fallback` |
|
|
43
|
+
| **Mono** | `Geist Mono` | `ui-monospace, SFMono-Regular, "Roboto Mono", Menlo, Monaco, monospace` | Footer section headers, code, badges |
|
|
44
|
+
| **Display** | `Space Grotesk` | `var(--font-sans)` | Special display elements |
|
|
45
|
+
|
|
46
|
+
#### Type Scale
|
|
47
|
+
|
|
48
|
+
| Element | Font | Size | Weight | Line Height | Letter Spacing | Color |
|
|
49
|
+
|---------|------|------|--------|-------------|----------------|-------|
|
|
50
|
+
| **H1 (Hero)** | Geist | 44px | 600 (Semi) | 44px (1:1) | -2.18px | `#171717` |
|
|
51
|
+
| **H2 (Section)** | Geist | 14px | 500 | 20px | -0.28px | `#4D4D4D` |
|
|
52
|
+
| **H3 (Card Title)** | Geist | 32px | 600 | 40px | -1.28px | `#171717` |
|
|
53
|
+
| **Body** | Geist | 14px | 400 | 20px | normal | `#171717` |
|
|
54
|
+
| **Body (Hero)** | Geist | 16px | 400 | 24px | normal | `#171717` |
|
|
55
|
+
| **Nav Link** | Geist | 14px | 400 | 14px | normal | `#4D4D4D` |
|
|
56
|
+
| **Nav CTA** | Geist | 14px | 500 | normal | normal | `#171717` |
|
|
57
|
+
| **Tab Label** | Geist | 14px | 400 | normal | normal | `#000000` |
|
|
58
|
+
| **Footer Header** | Geist Mono | 12px | 500 | normal | normal | `#171717` (uppercase) |
|
|
59
|
+
| **Footer Link** | Geist | 14px | 400 | 20px | normal | `#666666` |
|
|
60
|
+
| **Button (Hero)** | Geist | 16px | 500 | 24px | normal | white / `#171717` |
|
|
61
|
+
|
|
62
|
+
### Buttons
|
|
63
|
+
|
|
64
|
+
#### Primary Button (Hero CTA)
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
Background: #171717 (rgb(23, 23, 23))
|
|
68
|
+
Text: #FFFFFF
|
|
69
|
+
Font: Geist, 16px, weight 500
|
|
70
|
+
Padding: 0 14px
|
|
71
|
+
Height: ~44px (inferred from line-height + padding)
|
|
72
|
+
Border Radius: 100px (fully rounded / pill)
|
|
73
|
+
Border: none
|
|
74
|
+
Icon: Vercel triangle logo, left of text
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### Secondary Button (Hero CTA)
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Background: #FFFFFF
|
|
81
|
+
Text: #171717
|
|
82
|
+
Font: Geist, 16px, weight 500
|
|
83
|
+
Padding: 0 14px
|
|
84
|
+
Height: ~44px
|
|
85
|
+
Border Radius: 100px (pill)
|
|
86
|
+
Border: none
|
|
87
|
+
Box Shadow: inset border via shadow (subtle gray ring)
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
#### Nav Button - Sign Up
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Background: #171717
|
|
94
|
+
Text: #FFFFFF
|
|
95
|
+
Font: Geist, 14px, weight 500
|
|
96
|
+
Padding: 0 6px
|
|
97
|
+
Height: 32px
|
|
98
|
+
Border Radius: 6px
|
|
99
|
+
Border: none
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
#### Nav Button - Log In
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
Background: #FFFFFF
|
|
106
|
+
Text: #171717
|
|
107
|
+
Font: Geist, 14px, weight 500
|
|
108
|
+
Padding: 0 6px
|
|
109
|
+
Height: 32px
|
|
110
|
+
Border Radius: 6px
|
|
111
|
+
Box Shadow: rgb(235, 235, 235) 0px 0px 0px 1px (1px gray ring)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### Nav Button - Ask AI
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Background: #FFFFFF
|
|
118
|
+
Text: #171717
|
|
119
|
+
Font: Geist, 14px, weight 500
|
|
120
|
+
Padding: 0 6px
|
|
121
|
+
Height: 32px
|
|
122
|
+
Border Radius: 6px
|
|
123
|
+
Box Shadow: rgb(235, 235, 235) 0px 0px 0px 1px
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
#### Footer CTA - "Start Deploying" (large)
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
Background: #F5F5F5 (light gray card)
|
|
130
|
+
Text: #000000
|
|
131
|
+
Font: Geist, ~40px, weight 600
|
|
132
|
+
Layout: Full-width card with arrow icon right-aligned
|
|
133
|
+
Border Radius: 12px
|
|
134
|
+
Padding: ~32px
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
#### Footer CTA - "Talk to an Expert"
|
|
138
|
+
|
|
139
|
+
```
|
|
140
|
+
Background: #171717
|
|
141
|
+
Text: #FFFFFF
|
|
142
|
+
Font: Geist, 14px, weight 500
|
|
143
|
+
Height: 48px
|
|
144
|
+
Border Radius: 8px
|
|
145
|
+
Icon: Circle arrow right, right-aligned
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Input Fields
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
Font: Geist, 14px, weight 400
|
|
152
|
+
Background: transparent (inherits)
|
|
153
|
+
Border: none visible (styled via shadow)
|
|
154
|
+
Border Radius: 6px (--geist-radius)
|
|
155
|
+
Height: 40px (--geist-space-medium)
|
|
156
|
+
Focus Ring: 0 0 0 1px var(--ds-gray-alpha-600), 0px 0px 0px 4px rgba(0,0,0,0.16)
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Spacing System
|
|
160
|
+
|
|
161
|
+
| Token | Value | Usage |
|
|
162
|
+
|-------|-------|-------|
|
|
163
|
+
| `--geist-space` | `4px` | Base unit |
|
|
164
|
+
| `--geist-space-2x` | `8px` | Tight spacing |
|
|
165
|
+
| `--geist-space-3x` | `12px` | Nav item padding, small gaps |
|
|
166
|
+
| `--geist-space-4x` | `16px` | Standard element spacing |
|
|
167
|
+
| `--geist-space-6x` | `24px` | Page margin, gap, section padding |
|
|
168
|
+
| `--geist-space-8x` | `32px` | Section gap (small) |
|
|
169
|
+
| `--geist-space-10x` | `40px` | Medium spacing, footer padding |
|
|
170
|
+
| `--geist-space-16x` | `64px` | Large section spacing |
|
|
171
|
+
| `--geist-space-24x` | `96px` | Section vertical padding |
|
|
172
|
+
| `--geist-space-32x` | `128px` | Major section breaks |
|
|
173
|
+
| `--geist-space-48x` | `192px` | Hero-level spacing |
|
|
174
|
+
| `--geist-space-64x` | `256px` | Maximum spacing |
|
|
175
|
+
| **Page Width** | `1200px` | `--geist-page-width` (content max) |
|
|
176
|
+
| **DS Page Width** | `1400px` | `--ds-page-width` (wider sections) |
|
|
177
|
+
| **Page Margin** | `24px` | `--geist-page-margin` |
|
|
178
|
+
| **Header Height** | `64px` | Fixed nav bar height |
|
|
179
|
+
|
|
180
|
+
### Shadows
|
|
181
|
+
|
|
182
|
+
| Token | Value | Usage |
|
|
183
|
+
|-------|-------|-------|
|
|
184
|
+
| **Border** | `0 0 0 1px #00000014` | Subtle card borders |
|
|
185
|
+
| **Small** | `0px 2px 2px rgba(0,0,0,0.04)` | Cards, inputs |
|
|
186
|
+
| **Medium** | `0px 2px 2px rgba(0,0,0,0.04), 0px 8px 8px -8px rgba(0,0,0,0.04)` | Elevated cards |
|
|
187
|
+
| **Large** | `0px 2px 2px rgba(0,0,0,0.04), 0px 8px 16px -4px rgba(0,0,0,0.04)` | Modals, popovers |
|
|
188
|
+
| **Menu** | `0 0 0 1px #00000014, 0px 1px 1px rgba(0,0,0,0.02), 0px 4px 8px -4px rgba(0,0,0,0.04), 0px 16px 24px -8px rgba(0,0,0,0.06)` | Dropdown menus |
|
|
189
|
+
|
|
190
|
+
### Border Radius
|
|
191
|
+
|
|
192
|
+
| Token | Value | Usage |
|
|
193
|
+
|-------|-------|-------|
|
|
194
|
+
| `--geist-radius` | `6px` | Default radius (inputs, small cards, nav buttons) |
|
|
195
|
+
| `--geist-marketing-radius` | `8px` | Marketing cards, CTA cards |
|
|
196
|
+
| **Pill** | `9999px` / `100px` | Nav items, hero buttons, tabs |
|
|
197
|
+
| **Tab** | `64px` | Tab pill buttons |
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Section Boilerplates
|
|
202
|
+
|
|
203
|
+
### Navigation
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
STRUCTURE:
|
|
207
|
+
<header> height: 64px, padding: 0 24px, sticky top, z-index: 75
|
|
208
|
+
<div> (container, centered)
|
|
209
|
+
<a> Logo (VercelLogotype SVG, links to /home)
|
|
210
|
+
<nav aria-label="Main">
|
|
211
|
+
<ul> (flex, gap: 0)
|
|
212
|
+
<li> <button> "Products" (dropdown trigger) — chevron icon right
|
|
213
|
+
<li> <button> "Resources" (dropdown trigger) — chevron icon right
|
|
214
|
+
<li> <button> "Solutions" (dropdown trigger) — chevron icon right
|
|
215
|
+
<li> <a> "Enterprise" (plain link)
|
|
216
|
+
<li> <a> "Pricing" (plain link)
|
|
217
|
+
<div> (right-side CTAs, flex, gap: 8px)
|
|
218
|
+
<button> "Ask AI" — outlined style
|
|
219
|
+
<a> "Log In" — outlined style
|
|
220
|
+
<a> "Sign Up" — filled dark style
|
|
221
|
+
|
|
222
|
+
INTERACTIONS:
|
|
223
|
+
Nav Items (Products, Resources, Solutions):
|
|
224
|
+
- Default: text #4D4D4D, bg transparent, font 14px/400, padding 8px 12px, border-radius 9999px
|
|
225
|
+
- Hover: bg #F5F5F5 (gray-100), text darkens
|
|
226
|
+
- Active/Open: bg #EBEBEB (gray-200), text #171717
|
|
227
|
+
- Click toggles a mega-dropdown panel
|
|
228
|
+
|
|
229
|
+
Dropdown Panel (Products):
|
|
230
|
+
- Position: absolute, below header, full-width aligned to nav
|
|
231
|
+
- Background: white
|
|
232
|
+
- Shadow: menu shadow (multi-layer)
|
|
233
|
+
- Border-radius: 12px
|
|
234
|
+
- Layout: 3-column grid
|
|
235
|
+
- Column 1: "AI Cloud" heading (h5, linked) + 5 items
|
|
236
|
+
- Column 2: "Core Platform" heading (h5, plain) + 4 items
|
|
237
|
+
- Column 3: "Security" heading (h5, linked) + 4 items
|
|
238
|
+
- Each item: icon (24x24, gray stroke) + title (14px/500, #171717) + description (14px/400, #4D4D4D)
|
|
239
|
+
- Item padding: 12px, border-radius: 6px
|
|
240
|
+
- Item hover: bg gray-100
|
|
241
|
+
|
|
242
|
+
Dropdown Panel (Resources):
|
|
243
|
+
- 3 columns: Company (5 items), Learn (4 items), Open Source (4 items w/ dual icons)
|
|
244
|
+
|
|
245
|
+
Dropdown Panel (Solutions):
|
|
246
|
+
- 3 columns: Use Cases (5 items), Tools (3 items), Users (2 items)
|
|
247
|
+
|
|
248
|
+
Right CTAs:
|
|
249
|
+
- "Ask AI": white bg, 1px gray ring, 32px height, 6px radius
|
|
250
|
+
- "Log In": white bg, 1px gray ring, 32px height, 6px radius
|
|
251
|
+
- "Sign Up": #171717 bg, white text, 32px height, 6px radius
|
|
252
|
+
|
|
253
|
+
SPACING:
|
|
254
|
+
- Header height: 64px
|
|
255
|
+
- Horizontal padding: 24px
|
|
256
|
+
- Nav items gap: 0 (items self-padded 8px 12px)
|
|
257
|
+
- Right CTAs gap: 8px
|
|
258
|
+
- Logo to nav gap: ~24px
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Hero
|
|
262
|
+
|
|
263
|
+
```
|
|
264
|
+
STRUCTURE:
|
|
265
|
+
<section>
|
|
266
|
+
<div> (announcement banner, centered)
|
|
267
|
+
<span> "Events" label
|
|
268
|
+
<p> "Ship 26 is coming to 5 cities"
|
|
269
|
+
<a> "Save the date" + arrow icon
|
|
270
|
+
<div> (hero visual area)
|
|
271
|
+
<img> Background gradient/generative art (full-width, abstract rainbow light rays with Vercel triangle centered)
|
|
272
|
+
<div> (text overlay, centered)
|
|
273
|
+
<h1> "Build and deploy on the AI Cloud."
|
|
274
|
+
<p> "Vercel provides the developer tools and cloud infrastructure to build, scale, and secure a faster, more personalized web."
|
|
275
|
+
<div> (CTA buttons, flex, centered, gap 12px)
|
|
276
|
+
<a> "Start Deploying" — primary pill button, Vercel icon left
|
|
277
|
+
<a> "Get a Demo" — secondary pill button (white, border ring)
|
|
278
|
+
|
|
279
|
+
STYLING:
|
|
280
|
+
Announcement Banner:
|
|
281
|
+
- Inline flex, gap 8px, centered
|
|
282
|
+
- "Events" label: small badge/tag
|
|
283
|
+
- Link with arrow icon
|
|
284
|
+
|
|
285
|
+
Hero Heading:
|
|
286
|
+
- Font: Geist, 44px, weight 600
|
|
287
|
+
- Line height: 1:1 (44px)
|
|
288
|
+
- Letter spacing: -2.18px (very tight)
|
|
289
|
+
- Color: #171717
|
|
290
|
+
- Max-width: ~680px, centered
|
|
291
|
+
|
|
292
|
+
Hero Body:
|
|
293
|
+
- Font: Geist, 16px, weight 400
|
|
294
|
+
- Line height: 24px
|
|
295
|
+
- Color: #171717
|
|
296
|
+
- Max-width: ~580px, centered
|
|
297
|
+
|
|
298
|
+
CTA Buttons:
|
|
299
|
+
- Primary: #171717 bg, white text, pill (100px radius), 16px font, icon + text
|
|
300
|
+
- Secondary: white bg, #171717 text, pill, subtle border ring
|
|
301
|
+
|
|
302
|
+
SPACING:
|
|
303
|
+
- Banner to hero art: 24px
|
|
304
|
+
- Art to heading: 32px
|
|
305
|
+
- Heading to body: 16px
|
|
306
|
+
- Body to CTAs: 24px
|
|
307
|
+
- CTA gap: 12px
|
|
308
|
+
- Section padding-bottom: 64px
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Social Proof
|
|
312
|
+
|
|
313
|
+
```
|
|
314
|
+
STRUCTURE:
|
|
315
|
+
<section>
|
|
316
|
+
<div> (logo ticker / proof strip, horizontal scroll)
|
|
317
|
+
<div> Logo + stat pair (repeating):
|
|
318
|
+
<img> Company logo (e.g., Runway, LeonardoAi, Zapier)
|
|
319
|
+
<span> Stat text (e.g., "build times went from 7m to 40s.")
|
|
320
|
+
<div> (tabbed use-case selector)
|
|
321
|
+
<div role="tablist"> (pill tabs, horizontal)
|
|
322
|
+
<button role="tab"> "AI Apps" (active)
|
|
323
|
+
<button role="tab"> "Web Apps"
|
|
324
|
+
<button role="tab"> "Ecommerce"
|
|
325
|
+
<button role="tab"> "Marketing"
|
|
326
|
+
<button role="tab"> "Platforms"
|
|
327
|
+
<div> (tab content)
|
|
328
|
+
<p> Description text
|
|
329
|
+
<a> CTA link with arrow ("Deploy AI Apps in seconds")
|
|
330
|
+
|
|
331
|
+
STYLING:
|
|
332
|
+
Logo + Stat:
|
|
333
|
+
- Logo: grayscale, ~20px height
|
|
334
|
+
- Stat text: 14px, #171717, bold company name
|
|
335
|
+
- Horizontal layout, gap 24px between pairs
|
|
336
|
+
|
|
337
|
+
Tabs:
|
|
338
|
+
- Pill style: border-radius 64px, height 40px, padding 0 16px
|
|
339
|
+
- Active tab: bg white, text #000, subtle shadow
|
|
340
|
+
- Inactive tab: bg transparent, text #666
|
|
341
|
+
- Tab bar: bg #F5F5F5, border-radius 64px, padding 4px
|
|
342
|
+
|
|
343
|
+
Tab Content:
|
|
344
|
+
- Body text: 14px/20px, #4D4D4D
|
|
345
|
+
- CTA link: 14px, #171717, flex with arrow icon, hover underline
|
|
346
|
+
|
|
347
|
+
SPACING:
|
|
348
|
+
- Logo strip vertical padding: 32px
|
|
349
|
+
- Tabs to content: 32px
|
|
350
|
+
- Section padding: 64px 0
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Features
|
|
354
|
+
|
|
355
|
+
```
|
|
356
|
+
STRUCTURE:
|
|
357
|
+
<section>
|
|
358
|
+
<div> (section header)
|
|
359
|
+
<h3> "Your product, delivered."
|
|
360
|
+
<p> "Security, speed, and AI included, so you can focus on your user."
|
|
361
|
+
<div> (feature cards grid — 2x3 bento-style)
|
|
362
|
+
<div> (feature card, large or standard):
|
|
363
|
+
<div> (text content)
|
|
364
|
+
<h3> Feature title (e.g., "Agents")
|
|
365
|
+
<p> Description
|
|
366
|
+
<a> Arrow link to detail page
|
|
367
|
+
<div> (visual/illustration area)
|
|
368
|
+
<img> or animated graphic
|
|
369
|
+
|
|
370
|
+
STYLING:
|
|
371
|
+
Section Header:
|
|
372
|
+
- H3: Geist, 32px, weight 600, line-height 40px, letter-spacing -1.28px, #171717
|
|
373
|
+
- P: Geist, 14px, weight 400, #4D4D4D
|
|
374
|
+
- Margin-bottom: 8px between H3 and P
|
|
375
|
+
|
|
376
|
+
Feature Cards:
|
|
377
|
+
- Background: white
|
|
378
|
+
- Border: 1px solid rgba(0,0,0,0.08)
|
|
379
|
+
- Border-radius: 8px (marketing radius)
|
|
380
|
+
- Padding: 24px
|
|
381
|
+
- Grid: 2-column layout, some cards span full width
|
|
382
|
+
- Card title: 18-20px, weight 600, #171717
|
|
383
|
+
- Card description: 14px, weight 400, #4D4D4D
|
|
384
|
+
- Arrow link: 16px icon, #171717, circle bg on hover
|
|
385
|
+
|
|
386
|
+
Visual Area:
|
|
387
|
+
- Right-aligned or bottom-aligned in card
|
|
388
|
+
- Contains product screenshots, diagrams, or animated elements
|
|
389
|
+
|
|
390
|
+
SPACING:
|
|
391
|
+
- Section padding: 96px 0
|
|
392
|
+
- Header to grid: 48px
|
|
393
|
+
- Card gap: 16px
|
|
394
|
+
- Card internal padding: 24px
|
|
395
|
+
- Title to description: 8px
|
|
396
|
+
- Description to link: 16px
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### How It Works
|
|
400
|
+
|
|
401
|
+
```
|
|
402
|
+
STRUCTURE:
|
|
403
|
+
<section>
|
|
404
|
+
<div> (section header)
|
|
405
|
+
<p> Descriptive intro text (centered)
|
|
406
|
+
<div> (visual: infrastructure diagram / globe visualization)
|
|
407
|
+
<div> (sub-features, horizontal layout)
|
|
408
|
+
<div> (feature block):
|
|
409
|
+
<h3> Title
|
|
410
|
+
<p> Description
|
|
411
|
+
<a> CTA link
|
|
412
|
+
|
|
413
|
+
NOTE: Vercel uses a split approach:
|
|
414
|
+
1. "From code to infrastructure in one git push" — with globe/CDN visual
|
|
415
|
+
2. "A compute model for all workloads" — with pricing diagram
|
|
416
|
+
3. "The AI Gateway for Developers" — with model provider logos grid
|
|
417
|
+
|
|
418
|
+
STYLING:
|
|
419
|
+
Section Text:
|
|
420
|
+
- Body: Geist, 16px, weight 400, max-width ~800px, centered
|
|
421
|
+
- CTA buttons: pill style, outlined or filled
|
|
422
|
+
|
|
423
|
+
Infrastructure Diagram:
|
|
424
|
+
- Pill buttons: "Deploy at every push" / "Visit all 18 Regions"
|
|
425
|
+
- Pill bg: #171717, text: white, radius 100px
|
|
426
|
+
- Secondary pill: white bg, border ring
|
|
427
|
+
|
|
428
|
+
AI Gateway Grid:
|
|
429
|
+
- Provider cards: small tiles with logo icons
|
|
430
|
+
- Grid layout: 6-8 columns
|
|
431
|
+
- Card: white bg, subtle border, 6px radius
|
|
432
|
+
|
|
433
|
+
SPACING:
|
|
434
|
+
- Section padding: 96px 0
|
|
435
|
+
- Text to visual: 48px
|
|
436
|
+
- Between sub-sections: 96px
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
### Showcase (Deploy Templates)
|
|
440
|
+
|
|
441
|
+
```
|
|
442
|
+
STRUCTURE:
|
|
443
|
+
<section>
|
|
444
|
+
<div> (left column — text)
|
|
445
|
+
<h2> "Deploy your first app in seconds."
|
|
446
|
+
<ul> (feature list with icons):
|
|
447
|
+
<li> Icon + "Deploy automatically from git or with our CLI"
|
|
448
|
+
<li> Icon + "Wide range support for the most popular frameworks"
|
|
449
|
+
<li> Icon + "Previews for every push"
|
|
450
|
+
<li> Icon + "Automatic HTTPS for all your domains"
|
|
451
|
+
<div> (right column — template cards grid, 2-column)
|
|
452
|
+
<a> Template card:
|
|
453
|
+
<div> Colored gradient background (unique per framework)
|
|
454
|
+
<img> Framework logo (centered)
|
|
455
|
+
<span> "Next.js Templates" / "Svelte Templates" / etc.
|
|
456
|
+
|
|
457
|
+
STYLING:
|
|
458
|
+
Heading:
|
|
459
|
+
- Geist, 32px, weight 600, line-height 40px, letter-spacing -1.28px
|
|
460
|
+
|
|
461
|
+
Feature List:
|
|
462
|
+
- Icon: 16px, monochrome, left-aligned
|
|
463
|
+
- Text: 14px, weight 400, #171717
|
|
464
|
+
- Bold keywords within text (e.g., "Deploy automatically")
|
|
465
|
+
- Gap between items: 24px
|
|
466
|
+
|
|
467
|
+
Template Cards:
|
|
468
|
+
- Gradient background: unique pastel per framework (pink for Svelte, green for Nuxt, blue for React, etc.)
|
|
469
|
+
- Border-radius: 8px
|
|
470
|
+
- Logo: 40px, centered in gradient area
|
|
471
|
+
- Label: 14px, weight 500, below gradient, padding 16px
|
|
472
|
+
- Border: 1px solid rgba(0,0,0,0.08)
|
|
473
|
+
|
|
474
|
+
SPACING:
|
|
475
|
+
- Section layout: 2-column, left text ~33%, right cards ~67%
|
|
476
|
+
- Section padding: 96px 24px
|
|
477
|
+
- Card grid gap: 16px
|
|
478
|
+
- Left text to right grid: 48px
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
### CTA (Bottom)
|
|
482
|
+
|
|
483
|
+
```
|
|
484
|
+
STRUCTURE:
|
|
485
|
+
<section>
|
|
486
|
+
<div> (3-column grid)
|
|
487
|
+
<a> "Start Deploying" — large card CTA
|
|
488
|
+
<span> Large text
|
|
489
|
+
<div> Circle arrow icon (right-aligned)
|
|
490
|
+
<div> (stacked CTAs)
|
|
491
|
+
<a> "Talk to an Expert" — dark button, full-width, arrow icon right
|
|
492
|
+
<a> "Get an Enterprise Trial" — outlined button, full-width, arrow icon right
|
|
493
|
+
|
|
494
|
+
STYLING:
|
|
495
|
+
"Start Deploying" Card:
|
|
496
|
+
- Background: #F5F5F5
|
|
497
|
+
- Text: #000, Geist ~40px, weight 600, letter-spacing tight
|
|
498
|
+
- Arrow: 48px circle, #171717 bg, white arrow icon
|
|
499
|
+
- Border-radius: 12px
|
|
500
|
+
- Padding: 32px
|
|
501
|
+
- Spans 2 columns of the 3-column grid
|
|
502
|
+
|
|
503
|
+
"Talk to an Expert":
|
|
504
|
+
- Background: #171717
|
|
505
|
+
- Text: white, 14px, weight 500
|
|
506
|
+
- Height: 48px
|
|
507
|
+
- Border-radius: 8px
|
|
508
|
+
- Arrow: white circle outline, right-aligned
|
|
509
|
+
- Full-width within its column
|
|
510
|
+
|
|
511
|
+
"Get an Enterprise Trial":
|
|
512
|
+
- Background: white
|
|
513
|
+
- Text: #171717, 14px, weight 500
|
|
514
|
+
- Height: 48px
|
|
515
|
+
- Border-radius: 8px
|
|
516
|
+
- Border: 1px solid #EBEBEB
|
|
517
|
+
- Arrow: dark circle outline, right-aligned
|
|
518
|
+
|
|
519
|
+
SPACING:
|
|
520
|
+
- Section padding: 32px 0 64px
|
|
521
|
+
- Grid gap: 16px
|
|
522
|
+
- Stacked CTA gap: 8px
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
### Footer
|
|
526
|
+
|
|
527
|
+
```
|
|
528
|
+
STRUCTURE:
|
|
529
|
+
<footer> max-width: 1448px, padding: 40px 24px, centered
|
|
530
|
+
<div> (upper footer — 4-column grid, 2 rows)
|
|
531
|
+
Row 1:
|
|
532
|
+
<div> "GET STARTED" — Templates, Supported frameworks, Marketplace, Domains
|
|
533
|
+
<div> "BUILD" — Next.js on Vercel, Turborepo, v0
|
|
534
|
+
<div> "SCALE" — Content delivery network, Fluid compute, CI/CD, Observability, AI Gateway (NEW), Vercel Agent (NEW)
|
|
535
|
+
<div> "SECURE" — Platform security, Web Application Firewall, Bot management, BotID, Sandbox (NEW)
|
|
536
|
+
Row 2:
|
|
537
|
+
<div> "RESOURCES" — Pricing, Customers, Enterprise, Articles, Startups, Solution partners
|
|
538
|
+
<div> "LEARN" — Docs, Blog, Changelog, Knowledge Base, Academy, Community
|
|
539
|
+
<div> "FRAMEWORKS" — Next.js, Nuxt, Svelte, Nitro, Turbo
|
|
540
|
+
<div> "SDKS" — AI SDK, Workflow DevKit (NEW), Flags SDK, Chat SDK, Streamdown AI (NEW)
|
|
541
|
+
<div> (lower footer — 3-column + logo)
|
|
542
|
+
<div> "USE CASES" — Composable commerce, Multi-tenant platforms, Web apps, Marketing sites, Platform engineers, Design engineers
|
|
543
|
+
<div> "COMPANY" — About, Careers, Help, Press, Legal, Privacy Policy
|
|
544
|
+
<div> "COMMUNITY" — Open source program, Events, Shipped on Vercel, GitHub (icon), LinkedIn (icon), X (icon), YouTube (icon)
|
|
545
|
+
<div> Vercel triangle logo (large, top-right)
|
|
546
|
+
<div> (status bar, bottom)
|
|
547
|
+
<span> Status indicator dot + "NO STATUS AVAILABLE." (monospace)
|
|
548
|
+
<div> Theme toggle: System / Light / Dark icons
|
|
549
|
+
|
|
550
|
+
STYLING:
|
|
551
|
+
Section Headers:
|
|
552
|
+
- Font: Geist Mono, 12px, weight 500, uppercase
|
|
553
|
+
- Color: #171717
|
|
554
|
+
- Margin-bottom: 16px
|
|
555
|
+
|
|
556
|
+
Links:
|
|
557
|
+
- Font: Geist, 14px, weight 400
|
|
558
|
+
- Color: #666666
|
|
559
|
+
- Line height: 20px
|
|
560
|
+
- No underline, hover: underline or color darken
|
|
561
|
+
- Vertical gap between links: 8px
|
|
562
|
+
|
|
563
|
+
"NEW" Badge:
|
|
564
|
+
- Small pill tag next to link text
|
|
565
|
+
- Background: #F5F5F5
|
|
566
|
+
- Text: 11px, weight 500, uppercase
|
|
567
|
+
- Border-radius: 4px
|
|
568
|
+
- Padding: 2px 6px
|
|
569
|
+
|
|
570
|
+
Status Bar:
|
|
571
|
+
- Font: Geist Mono, 12px
|
|
572
|
+
- Color: #666666
|
|
573
|
+
- Status dot: 8px circle (color indicates status)
|
|
574
|
+
|
|
575
|
+
Theme Toggle:
|
|
576
|
+
- 3 icon buttons: Monitor / Sun / Moon
|
|
577
|
+
- Active: subtle bg highlight
|
|
578
|
+
- Size: 24px icons
|
|
579
|
+
|
|
580
|
+
SPACING:
|
|
581
|
+
- Footer padding: 40px 24px
|
|
582
|
+
- Row gap (upper to lower): 64px
|
|
583
|
+
- Column gap: ~48px (fluid 4-col grid)
|
|
584
|
+
- Link vertical gap: 8px
|
|
585
|
+
- Header to first link: 16px
|
|
586
|
+
- Lower footer to status bar: 48px
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
### Pricing
|
|
590
|
+
|
|
591
|
+
```
|
|
592
|
+
NOTE: Pricing lives at /pricing. Structure inferred from nav and common Vercel patterns.
|
|
593
|
+
|
|
594
|
+
STRUCTURE:
|
|
595
|
+
<section>
|
|
596
|
+
<div> (header, centered)
|
|
597
|
+
<h1> "Pricing"
|
|
598
|
+
<p> Subtitle text
|
|
599
|
+
<div> (pricing cards — 3-4 column grid)
|
|
600
|
+
<div> (pricing card):
|
|
601
|
+
<h3> Plan name (Hobby / Pro / Enterprise)
|
|
602
|
+
<p> Plan description
|
|
603
|
+
<div> Price display
|
|
604
|
+
<span> "$X" (large)
|
|
605
|
+
<span> "/month" (small)
|
|
606
|
+
<ul> Feature list with check icons
|
|
607
|
+
<a> CTA button
|
|
608
|
+
|
|
609
|
+
STYLING:
|
|
610
|
+
Cards follow standard Vercel card pattern:
|
|
611
|
+
- Background: white
|
|
612
|
+
- Border: 1px solid rgba(0,0,0,0.08)
|
|
613
|
+
- Border-radius: 8px
|
|
614
|
+
- Padding: 24px
|
|
615
|
+
- Featured/Pro card may have dark (#171717) background with white text
|
|
616
|
+
|
|
617
|
+
SPACING:
|
|
618
|
+
- Section padding: 96px 0
|
|
619
|
+
- Card gap: 16px
|
|
620
|
+
- Card internal: 24px padding
|
|
621
|
+
- Price to features: 24px
|
|
622
|
+
- Feature list gap: 12px
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
### Blog
|
|
626
|
+
|
|
627
|
+
```
|
|
628
|
+
STRUCTURE:
|
|
629
|
+
<section>
|
|
630
|
+
<div> (section header)
|
|
631
|
+
<h2> Section title
|
|
632
|
+
<div> (blog cards grid — 3-column)
|
|
633
|
+
<a> (blog card):
|
|
634
|
+
<div> Image/thumbnail (aspect ratio 16:9)
|
|
635
|
+
<div> Content:
|
|
636
|
+
<span> Category tag
|
|
637
|
+
<h3> Post title
|
|
638
|
+
<p> Excerpt
|
|
639
|
+
<span> Date + read time
|
|
640
|
+
|
|
641
|
+
STYLING:
|
|
642
|
+
Blog Cards:
|
|
643
|
+
- Background: white
|
|
644
|
+
- Border: 1px solid rgba(0,0,0,0.08)
|
|
645
|
+
- Border-radius: 8px
|
|
646
|
+
- Image: border-radius 8px 8px 0 0 (top rounded)
|
|
647
|
+
- Title: 18px, weight 600, #171717
|
|
648
|
+
- Excerpt: 14px, weight 400, #4D4D4D
|
|
649
|
+
- Category: 12px, weight 500, uppercase, #666
|
|
650
|
+
|
|
651
|
+
SPACING:
|
|
652
|
+
- Card gap: 16px
|
|
653
|
+
- Image to content: 0 (flush)
|
|
654
|
+
- Content padding: 24px
|
|
655
|
+
- Title to excerpt: 8px
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
### FAQ
|
|
659
|
+
|
|
660
|
+
```
|
|
661
|
+
STRUCTURE:
|
|
662
|
+
<section>
|
|
663
|
+
<h2> "Frequently Asked Questions"
|
|
664
|
+
<div> (accordion list)
|
|
665
|
+
<details> (or custom accordion):
|
|
666
|
+
<summary> Question text + expand/collapse chevron
|
|
667
|
+
<div> Answer content (paragraphs, links)
|
|
668
|
+
|
|
669
|
+
STYLING:
|
|
670
|
+
Accordion Items:
|
|
671
|
+
- Border-bottom: 1px solid rgba(0,0,0,0.08)
|
|
672
|
+
- Padding: 20px 0
|
|
673
|
+
- Question: 16px, weight 500, #171717
|
|
674
|
+
- Answer: 14px, weight 400, #4D4D4D, line-height 24px
|
|
675
|
+
- Chevron: 16px, rotates 180deg on open, transition 200ms
|
|
676
|
+
|
|
677
|
+
SPACING:
|
|
678
|
+
- Section padding: 96px 0
|
|
679
|
+
- Max-width: 768px, centered
|
|
680
|
+
- Item padding: 20px 0
|
|
681
|
+
```
|
|
682
|
+
|
|
683
|
+
### Stats
|
|
684
|
+
|
|
685
|
+
```
|
|
686
|
+
STRUCTURE:
|
|
687
|
+
<section>
|
|
688
|
+
<div> (stats grid — 3 or 4 columns)
|
|
689
|
+
<div> (stat block):
|
|
690
|
+
<span> Large number (e.g., "95%", "24x", "6×")
|
|
691
|
+
<p> Description text
|
|
692
|
+
|
|
693
|
+
STYLING:
|
|
694
|
+
Stat Number:
|
|
695
|
+
- Font: Geist, 48px, weight 600
|
|
696
|
+
- Color: #171717
|
|
697
|
+
- Letter-spacing: -2px
|
|
698
|
+
|
|
699
|
+
Description:
|
|
700
|
+
- Font: Geist, 14px, weight 400
|
|
701
|
+
- Color: #4D4D4D
|
|
702
|
+
|
|
703
|
+
Layout:
|
|
704
|
+
- Centered text within each column
|
|
705
|
+
- Divider between columns (1px vertical line, #EBEBEB) or none
|
|
706
|
+
|
|
707
|
+
SPACING:
|
|
708
|
+
- Section padding: 64px 0
|
|
709
|
+
- Stat gap: 48px
|
|
710
|
+
- Number to description: 8px
|
|
711
|
+
```
|
|
712
|
+
|
|
713
|
+
### Newsletter
|
|
714
|
+
|
|
715
|
+
```
|
|
716
|
+
STRUCTURE:
|
|
717
|
+
<section>
|
|
718
|
+
<div> (centered, max-width ~600px)
|
|
719
|
+
<h3> "Subscribe to our newsletter"
|
|
720
|
+
<p> Description
|
|
721
|
+
<form>
|
|
722
|
+
<div> (input group, flex)
|
|
723
|
+
<input type="email" placeholder="you@example.com">
|
|
724
|
+
<button type="submit"> "Subscribe"
|
|
725
|
+
|
|
726
|
+
STYLING:
|
|
727
|
+
Input:
|
|
728
|
+
- Height: 40px
|
|
729
|
+
- Border: 1px solid #EBEBEB
|
|
730
|
+
- Border-radius: 6px
|
|
731
|
+
- Padding: 0 12px
|
|
732
|
+
- Font: Geist, 14px
|
|
733
|
+
- Focus: blue ring (--ds-focus-border)
|
|
734
|
+
|
|
735
|
+
Submit Button:
|
|
736
|
+
- Background: #171717
|
|
737
|
+
- Text: white, 14px, weight 500
|
|
738
|
+
- Height: 40px
|
|
739
|
+
- Border-radius: 6px
|
|
740
|
+
- Padding: 0 16px
|
|
741
|
+
|
|
742
|
+
SPACING:
|
|
743
|
+
- Section padding: 64px 0
|
|
744
|
+
- Heading to description: 8px
|
|
745
|
+
- Description to form: 24px
|
|
746
|
+
- Input to button gap: 8px
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
### Contact
|
|
750
|
+
|
|
751
|
+
```
|
|
752
|
+
STRUCTURE:
|
|
753
|
+
<section>
|
|
754
|
+
<div> (2-column layout)
|
|
755
|
+
<div> (left — info):
|
|
756
|
+
<h2> "Contact Sales"
|
|
757
|
+
<p> Description
|
|
758
|
+
<ul> Contact benefits list
|
|
759
|
+
<div> (right — form):
|
|
760
|
+
<form>
|
|
761
|
+
<div> (form fields, vertical stack)
|
|
762
|
+
<label> + <input> (First name, Last name, Email, Company, etc.)
|
|
763
|
+
<label> + <textarea> Message
|
|
764
|
+
<button type="submit"> "Submit"
|
|
765
|
+
|
|
766
|
+
STYLING:
|
|
767
|
+
Form fields follow standard input pattern:
|
|
768
|
+
- Height: 40px
|
|
769
|
+
- Border: 1px solid #EBEBEB
|
|
770
|
+
- Border-radius: 6px
|
|
771
|
+
- Label: 14px, weight 500, #171717, margin-bottom 6px
|
|
772
|
+
- Textarea: min-height 120px
|
|
773
|
+
|
|
774
|
+
SPACING:
|
|
775
|
+
- Section padding: 96px 0
|
|
776
|
+
- Column gap: 64px
|
|
777
|
+
- Field gap: 16px
|
|
778
|
+
- Label to input: 6px
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
### Comparison
|
|
782
|
+
|
|
783
|
+
```
|
|
784
|
+
STRUCTURE:
|
|
785
|
+
<section>
|
|
786
|
+
<h2> Section heading
|
|
787
|
+
<div> (comparison table or card grid)
|
|
788
|
+
<table> or <div grid>:
|
|
789
|
+
<thead> Feature headers
|
|
790
|
+
<tbody> Feature rows with check/x icons per column
|
|
791
|
+
|
|
792
|
+
STYLING:
|
|
793
|
+
Table:
|
|
794
|
+
- Header: 14px, weight 500, #171717
|
|
795
|
+
- Cells: 14px, weight 400, #4D4D4D
|
|
796
|
+
- Check icon: #0070F3 (blue) or #171717
|
|
797
|
+
- X / dash icon: #CCCCCC
|
|
798
|
+
- Row border-bottom: 1px solid rgba(0,0,0,0.08)
|
|
799
|
+
- Cell padding: 16px
|
|
800
|
+
|
|
801
|
+
SPACING:
|
|
802
|
+
- Section padding: 96px 0
|
|
803
|
+
- Table max-width: 900px, centered
|
|
804
|
+
```
|
|
805
|
+
|
|
806
|
+
### Downloads / Store / About
|
|
807
|
+
|
|
808
|
+
```
|
|
809
|
+
NOTE: Vercel does not have dedicated Downloads, Store, or About sections
|
|
810
|
+
on the homepage. These would follow the standard Vercel card pattern:
|
|
811
|
+
|
|
812
|
+
Card Pattern:
|
|
813
|
+
- Background: white
|
|
814
|
+
- Border: 1px solid rgba(0,0,0,0.08)
|
|
815
|
+
- Border-radius: 8px
|
|
816
|
+
- Padding: 24px
|
|
817
|
+
- Shadow: var(--ds-shadow-border-small)
|
|
818
|
+
- Hover: shadow elevates to var(--ds-shadow-border-medium)
|
|
819
|
+
|
|
820
|
+
Page-level layout:
|
|
821
|
+
- Max-width: 1200px (--geist-page-width)
|
|
822
|
+
- Page margin: 24px
|
|
823
|
+
- Section padding: 96px 0
|
|
824
|
+
```
|