geist-design
Applies Vercel's Geist design system colors, typography, materials, and brand guidelines to any artifact. Use when building UI components, creating visual artifacts, or applying Vercel/Next.js brand a
SKILL.mdskills/geist-design/SKILL.md
GitHubGeist Design System
Overview
Geist is Vercel's design system for building consistent, high-quality web experiences. It powers vercel.com, v0.dev, and all Vercel products.
Keywords: Vercel, Geist, design system, brand, typography, color tokens, dark mode, components, Next.js, Turbo, v0
Typography
Fonts
| Font | Usage |
|---|---|
| Geist Sans | All UI text, headings, body, labels |
| Geist Mono | Code, terminal output, technical labels |
Both fonts are open source and available at https://vercel.com/font.
/* Install via npm */
/* @vercel/font (Next.js) or import from Google Fonts */
font-family: 'Geist', sans-serif;
font-family: 'Geist Mono', monospace;
Type Scale
Headings — for page/section titles:
| Class | Usage |
|---|---|
text-heading-72 |
Hero display |
text-heading-64 |
Large hero |
text-heading-56 |
Page hero |
text-heading-48 |
Section hero |
text-heading-40 |
Section title |
text-heading-32 |
Large heading (supports "Subtle" modifier) |
text-heading-24 |
Heading |
text-heading-20 |
Subheading |
text-heading-16 |
Small heading |
text-heading-14 |
Smallest heading |
Labels — single-line UI elements:
| Class | Usage |
|---|---|
text-label-20 |
Large label |
text-label-16 |
Standard label |
text-label-14 |
Default label |
text-label-13 |
Small label (supports tabular spacing) |
text-label-12 |
Tiny label |
text-label-14-mono |
Monospace label |
text-label-13-mono |
Small mono label |
text-label-12-mono |
Tiny mono label |
Copy — multi-line body text:
| Class | Usage |
|---|---|
text-copy-24 |
Large body |
text-copy-16 |
Default body |
text-copy-14 |
Small body |
text-copy-13 |
Smallest body |
text-copy-13-mono |
Inline code |
Buttons — button components only:
| Class | Usage |
|---|---|
text-button-16 |
Large button |
text-button-14 |
Default button |
text-button-12 |
Tiny/input button |
All presets bundle font-size, line-height, letter-spacing, and font-weight. Apply <strong> inside to activate "Strong" variant.
Colors
Design Tokens System
Geist uses CSS custom properties with the --ds- prefix. Tokens automatically adapt to light/dark mode. Always use tokens, not raw hex values.
Gray Scale (Primary Palette)
| Token | Usage |
|---|---|
var(--ds-gray-100) |
Default component background |
var(--ds-gray-200) |
Hover state background |
var(--ds-gray-300) |
Active state background |
var(--ds-gray-400) |
Default border |
var(--ds-gray-500) |
Hover border |
var(--ds-gray-600) |
Active border |
var(--ds-gray-700) |
High contrast background |
var(--ds-gray-800) |
Hover high contrast |
var(--ds-gray-900) |
Secondary text / icons |
var(--ds-gray-1000) |
Primary text / icons |
Page Backgrounds
| Token | Usage |
|---|---|
var(--ds-background-100) |
Default page background |
var(--ds-background-200) |
Secondary background |
Alpha Variants
| Token | Usage |
|---|---|
var(--ds-gray-alpha-100) |
Subtle transparent overlay |
var(--ds-gray-alpha-400) |
Border on transparent surface |
Semantic / Status Colors
| Token | Usage |
|---|---|
var(--ds-blue-700) |
Info background |
var(--ds-blue-900) |
Info text |
var(--ds-amber-100) |
Warning background |
var(--ds-amber-400) |
Warning border |
var(--ds-amber-700) |
Warning icon |
var(--ds-amber-900) |
Warning text |
var(--ds-green-700) |
Success |
var(--ds-red-800) |
Error / destructive |
Color Scales Available
gray, gray-alpha, blue, red, amber, green, teal, purple, pink
Each scale runs from -100 (lightest) to -1000 (darkest). P3 wide-gamut supported on compatible displays.
Materials (Surface Elevation)
Page Surfaces
| Material | Border Radius | Usage |
|---|---|---|
material-base |
6px | Default page elements |
material-small |
6px | Slightly raised elements |
material-medium |
12px | Cards, panels |
material-large |
12px | High-emphasis containers |
Floating Elements (above page)
| Material | Border Radius | Usage |
|---|---|---|
material-tooltip |
6px | Lightest shadow, tooltip with stem |
material-menu |
12px | Dropdowns, context menus |
material-modal |
12px | Dialogs, sheets |
material-fullscreen |
16px | Drawers, fullscreen overlays |
Grid System
The Geist Grid is flexible and component-driven rather than fixed-column:
columnsprop: configurable column countrowsprop: configurable row countheight: "preserve-aspect-ratio": maintains proportionsGrid.Systemwithdebugprop for visual overlay- No fixed gutter/breakpoint constraints — adapts to container
Components (50+)
Avatar, Badge, Book, Browser, Button, Calendar, Checkbox, Choicebox, Code Block, Collapse, Combobox, Command Menu, Context Card, Context Menu, Description, Drawer, Empty State, Entity, Error, Feedback, Gauge, Grid, Input, Keyboard Input, Loading Dots, Material, Menu, Modal, Multi Select, Note, Pagination, Phone, Pill, Progress, Project Banner, Radio, Relative Time Card, Scroller, Select, Sheet, Show More, Skeleton, Slider, Snippet, Spinner, Split Button, Status Dot, Switch, Table, Tabs, Textarea, Theme Switcher, Toast, Toggle, Tooltip
Brand Guidelines
Vercel Trademark Rules
Permitted uses:
- Truthfully describe Vercel products and services
- State customer/user relationship: "Our site is hosted on Vercel"
- Reference the platform in editorial/informational context
Prohibited uses:
- Naming a business or product using Vercel marks
- Creating confusingly similar branding
- Implying sponsorship or endorsement by Vercel
- Commercial merchandise featuring Vercel marks
- Modifying or distorting official logos
- Prominence exceeding your own company branding
Product Naming Conventions
| Brand | Correct Spelling | Notes |
|---|---|---|
| Vercel | Vercel | Always capitalized |
| Next.js | Next.js | Include the .js; "Next" acceptable after first use on same page |
| Turborepo | Turborepo | One word |
| Turbopack | Turbopack | One word |
| v0 | v0 | Lowercase v |
| AI SDK | AI SDK | Two words, both caps |
URL/hashtag formats:
- URLs:
nextjs.org,nextjs(no dot in URL slugs) - Hashtags:
#nextjs,#vercel
Official Brand Assets
Downloads available for: Vercel (wordmark + symbol), Next.js (wordmark + symbol), Turbo products, v0, AI SDK
Contact for extended use: brand@vercel.com
Required attribution for permitted trademark use:
"Vercel, the Vercel design, Next.js and related marks, designs and logos are trademarks or registered trademarks of Vercel, Inc. or its affiliates"
Design Principles
- High contrast: Accessible color system prioritizes readability
- Developer-focused: Typography and iconography tailored for dev tools
- Dark/light native: All tokens dual-mode by default
- Systematic elevation: Materials define visual hierarchy through shadow/blur, not color
- Consistent radius: 6px (small), 12px (medium), 16px (large) — three tiers only
Quick Reference: CSS Variables Cheatsheet
/* Backgrounds */
background: var(--ds-background-100); /* page */
background: var(--ds-gray-100); /* component */
/* Text */
color: var(--ds-gray-1000); /* primary */
color: var(--ds-gray-900); /* secondary */
/* Borders */
border: 1px solid var(--ds-gray-400); /* default */
border: 1px solid var(--ds-gray-500); /* hover */
/* Status */
color: var(--ds-red-800); /* error */
color: var(--ds-green-700); /* success */
color: var(--ds-amber-700); /* warning */
color: var(--ds-blue-900); /* info */
/* Typography */
font-family: 'Geist', sans-serif; /* UI text */
font-family: 'Geist Mono', monospace; /* code */