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.
Files changed (106) hide show
  1. package/README.md +69 -0
  2. package/bundled/overlay/overlay.js +63 -0
  3. package/bundled/server/context/brand-references.d.ts +7 -0
  4. package/bundled/server/context/brand-references.d.ts.map +1 -0
  5. package/bundled/server/context/brand-references.js +20 -0
  6. package/bundled/server/context/brand-references.js.map +1 -0
  7. package/bundled/server/context/design-philosophy.d.ts +6 -0
  8. package/bundled/server/context/design-philosophy.d.ts.map +1 -0
  9. package/bundled/server/context/design-philosophy.js +82 -0
  10. package/bundled/server/context/design-philosophy.js.map +1 -0
  11. package/bundled/server/context/design-system-loader.d.ts +11 -0
  12. package/bundled/server/context/design-system-loader.d.ts.map +1 -0
  13. package/bundled/server/context/design-system-loader.js +169 -0
  14. package/bundled/server/context/design-system-loader.js.map +1 -0
  15. package/bundled/server/context/design-system.d.ts +7 -0
  16. package/bundled/server/context/design-system.d.ts.map +1 -0
  17. package/bundled/server/context/design-system.js +75 -0
  18. package/bundled/server/context/design-system.js.map +1 -0
  19. package/bundled/server/context/prompt-builder.d.ts +15 -0
  20. package/bundled/server/context/prompt-builder.d.ts.map +1 -0
  21. package/bundled/server/context/prompt-builder.js +123 -0
  22. package/bundled/server/context/prompt-builder.js.map +1 -0
  23. package/bundled/server/context/token-template.d.ts +36 -0
  24. package/bundled/server/context/token-template.d.ts.map +1 -0
  25. package/bundled/server/context/token-template.js +226 -0
  26. package/bundled/server/context/token-template.js.map +1 -0
  27. package/bundled/server/data/design-systems/apple-design-system.md +474 -0
  28. package/bundled/server/data/design-systems/arc-design-system.md +922 -0
  29. package/bundled/server/data/design-systems/claude-ai-design-system.md +1443 -0
  30. package/bundled/server/data/design-systems/elevenlabs-design-system.md +669 -0
  31. package/bundled/server/data/design-systems/generating_design.md +9 -0
  32. package/bundled/server/data/design-systems/linear-design-system.md +607 -0
  33. package/bundled/server/data/design-systems/notion-design-system.md +866 -0
  34. package/bundled/server/data/design-systems/raycast-design-system.md +709 -0
  35. package/bundled/server/data/design-systems/stripe-design-system.md +592 -0
  36. package/bundled/server/data/design-systems/vercel-design-system.md +824 -0
  37. package/bundled/server/data/design.md +971 -0
  38. package/bundled/server/index.d.ts +2 -0
  39. package/bundled/server/index.d.ts.map +1 -0
  40. package/bundled/server/index.js +310 -0
  41. package/bundled/server/index.js.map +1 -0
  42. package/bundled/server/mcp/tools/apply-variation.d.ts +3 -0
  43. package/bundled/server/mcp/tools/apply-variation.d.ts.map +1 -0
  44. package/bundled/server/mcp/tools/apply-variation.js +43 -0
  45. package/bundled/server/mcp/tools/apply-variation.js.map +1 -0
  46. package/bundled/server/mcp/tools/generate-variations.d.ts +3 -0
  47. package/bundled/server/mcp/tools/generate-variations.d.ts.map +1 -0
  48. package/bundled/server/mcp/tools/generate-variations.js +58 -0
  49. package/bundled/server/mcp/tools/generate-variations.js.map +1 -0
  50. package/bundled/server/mcp/tools/index.d.ts +3 -0
  51. package/bundled/server/mcp/tools/index.d.ts.map +1 -0
  52. package/bundled/server/mcp/tools/index.js +11 -0
  53. package/bundled/server/mcp/tools/index.js.map +1 -0
  54. package/bundled/server/mcp/tools/scan-design-system.d.ts +3 -0
  55. package/bundled/server/mcp/tools/scan-design-system.d.ts.map +1 -0
  56. package/bundled/server/mcp/tools/scan-design-system.js +27 -0
  57. package/bundled/server/mcp/tools/scan-design-system.js.map +1 -0
  58. package/bundled/server/mcp/tools/submit-variations.d.ts +3 -0
  59. package/bundled/server/mcp/tools/submit-variations.d.ts.map +1 -0
  60. package/bundled/server/mcp/tools/submit-variations.js +50 -0
  61. package/bundled/server/mcp/tools/submit-variations.js.map +1 -0
  62. package/bundled/server/mcp-entry.d.ts +2 -0
  63. package/bundled/server/mcp-entry.d.ts.map +1 -0
  64. package/bundled/server/mcp-entry.js +56 -0
  65. package/bundled/server/mcp-entry.js.map +1 -0
  66. package/bundled/server/preview/css-resolver.d.ts +6 -0
  67. package/bundled/server/preview/css-resolver.d.ts.map +1 -0
  68. package/bundled/server/preview/css-resolver.js +57 -0
  69. package/bundled/server/preview/css-resolver.js.map +1 -0
  70. package/bundled/server/preview/html-builder.d.ts +6 -0
  71. package/bundled/server/preview/html-builder.d.ts.map +1 -0
  72. package/bundled/server/preview/html-builder.js +85 -0
  73. package/bundled/server/preview/html-builder.js.map +1 -0
  74. package/bundled/server/telemetry.d.ts +4 -0
  75. package/bundled/server/telemetry.d.ts.map +1 -0
  76. package/bundled/server/telemetry.js +71 -0
  77. package/bundled/server/telemetry.js.map +1 -0
  78. package/bundled/server/types.d.ts +69 -0
  79. package/bundled/server/types.d.ts.map +1 -0
  80. package/bundled/server/types.js +2 -0
  81. package/bundled/server/types.js.map +1 -0
  82. package/bundled/server/variations/file-writer.d.ts +5 -0
  83. package/bundled/server/variations/file-writer.d.ts.map +1 -0
  84. package/bundled/server/variations/file-writer.js +29 -0
  85. package/bundled/server/variations/file-writer.js.map +1 -0
  86. package/bundled/server/variations/git-utils.d.ts +3 -0
  87. package/bundled/server/variations/git-utils.d.ts.map +1 -0
  88. package/bundled/server/variations/git-utils.js +23 -0
  89. package/bundled/server/variations/git-utils.js.map +1 -0
  90. package/bundled/server/variations/store.d.ts +11 -0
  91. package/bundled/server/variations/store.d.ts.map +1 -0
  92. package/bundled/server/variations/store.js +52 -0
  93. package/bundled/server/variations/store.js.map +1 -0
  94. package/dist/commands/init.d.ts +2 -0
  95. package/dist/commands/init.d.ts.map +1 -0
  96. package/dist/commands/init.js +299 -0
  97. package/dist/commands/init.js.map +1 -0
  98. package/dist/commands/stop.d.ts +2 -0
  99. package/dist/commands/stop.d.ts.map +1 -0
  100. package/dist/commands/stop.js +32 -0
  101. package/dist/commands/stop.js.map +1 -0
  102. package/dist/index.d.ts +3 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +35 -0
  105. package/dist/index.js.map +1 -0
  106. 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
+ ```