设计详情
HashiCorp
DESIGN.md extracted from the public HashiCorp website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
实时预览
预览效果
此条目同时提供浅色与深色预览资源。
文档
README & DESIGN
HashiCorp Inspired Design System
DESIGN.md extracted from the public HashiCorp website. This is not the official design system. Colors, fonts, and spacing may not be 100% accurate. But it's a good starting point for building something similar.
Files
| File | Description |
|---|---|
DESIGN.md |
Complete design system documentation (9 sections) |
preview.html |
Interactive design token catalog (light) |
preview-dark.html |
Interactive design token catalog (dark) |
Use DESIGN.md to use as a reference for AI agents (Claude, Cursor, Stitch) to generate UI that looks like the HashiCorp design language.
Preview
A sample landing page built with DESIGN.md. It shows the actual colors, typography, buttons, cards, spacing, and elevation, all in one page.
Dark Mode

Light Mode

Design System Inspiration of HashiCorp
1. Visual Theme & Atmosphere
HashiCorp's website is enterprise infrastructure made tangible — a design system that must communicate the complexity of cloud infrastructure management while remaining approachable. The visual language splits between two modes: a clean white light-mode for informational sections and a dramatic dark-mode (#15181e, #0d0e12) for hero areas and product showcases, creating a day/night duality that mirrors the "build in light, deploy in dark" developer workflow.
The typography is anchored by a custom brand font (HashiCorp Sans, loaded as __hashicorpSans_96f0ca) that carries substantial weight — literally. Headings use 600–700 weights with tight line-heights (1.17–1.19), creating dense, authoritative text blocks that communicate enterprise confidence. The hero headline at 82px weight 600 with OpenType "kern" enabled is not decorative — it's infrastructure-grade typography.
What distinguishes HashiCorp is its multi-product color system. Each product in the portfolio has its own brand color — Terraform purple (#7b42bc), Vault yellow (#ffcf25), Waypoint teal (#14c6cb), Vagrant blue (#1868f2) — and these colors appear throughout as accent tokens via a CSS custom property system (--mds-color-*). This creates a design system within a design system: the parent brand is black-and-white with blue accents, while each child product injects its own chromatic identity.
The component system uses the mds (Markdown Design System) prefix, indicating a systematic, token-driven approach where colors, spacing, and states are all managed through CSS variables. Shadows are remarkably subtle — dual-layer micro-shadows using rgba(97, 104, 117, 0.05) that are nearly invisible but provide just enough depth to separate interactive surfaces from the background.
Key Characteristics:
- Dual-mode: clean white sections + dramatic dark (
#15181e) hero/product areas - Custom HashiCorp Sans font with 600–700 weights and
"kern"feature - Multi-product color system via
--mds-color-*CSS custom properties - Product brand colors: Terraform purple, Vault yellow, Waypoint teal, Vagrant blue
- Uppercase letter-spaced captions (13px, weight 600, 1.3px letter-spacing)
- Micro-shadows: dual-layer at 0.05 opacity — depth through whisper, not shout
- Token-driven
mdscomponent system with semantic variable names - Tight border radius: 2px–8px, nothing pill-shaped or circular
- System-ui fallback stack for secondary text
2. Color Palette & Roles
Brand Primary
- Black (
#000000): Primary brand color, text on light surfaces,--mds-color-hcp-brand - Dark Charcoal (
#15181e): Dark mode backgrounds, hero sections - Near Black (
#0d0e12): Deepest dark mode surface, form inputs on dark
Neutral Scale
- Light Gray (
#f1f2f3): Light backgrounds, subtle surfaces - Mid Gray (
#d5d7db): Borders, button text on dark - Cool Gray (
#b2b6bd): Border accents (at 0.1–0.4 opacity) - Dark Gray (
#656a76): Helper text, secondary labels,--mds-form-helper-text-color - Charcoal (
#3b3d45): Secondary text on light, button borders - Near White (
#efeff1): Primary text on dark surfaces
Product Brand Colors
- Terraform Purple (
#7b42bc):--mds-color-terraform-button-background - Vault Yellow (
#ffcf25):--mds-color-vault-button-background - Waypoint Teal (
#14c6cb):--mds-color-waypoint-button-background-focus - Waypoint Teal Hover (
#12b6bb):--mds-color-waypoint-button-background-hover - Vagrant Blue (
#1868f2):--mds-color-vagrant-brand - Purple Accent (
#911ced):--mds-color-palette-purple-300 - Visited Purple (
#a737ff):--mds-color-foreground-action-visited
Semantic Colors
- Action Blue (
#1060ff): Primary action links on dark - Link Blue (
#2264d6): Primary links on light - Bright Blue (
#2b89ff): Active links, hover accent - Amber (
#bb5a00):--mds-color-palette-amber-200, warning states - Amber Light (
#fbeabf):--mds-color-palette-amber-100, warning backgrounds - Vault Faint Yellow (
#fff9cf):--mds-color-vault-radar-gradient-faint-stop - Orange (
#a9722e):--mds-color-unified-core-orange-6 - Red (
#731e25):--mds-color-unified-core-red-7, error states - Navy (
#101a59):--mds-color-unified-core-blue-7
Shadows
- Micro Shadow (
rgba(97, 104, 117, 0.05) 0px 1px 1px, rgba(97, 104, 117, 0.05) 0px 2px 2px): Default card/button elevation - Focus Outline:
3px solid var(--mds-color-focus-action-external)— systematic focus ring
3. Typography Rules
Font Families
- Primary Brand:
__hashicorpSans_96f0ca(HashiCorp Sans), with fallback:__hashicorpSans_Fallback_96f0ca - System UI:
system-ui, -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial
Hierarchy
| Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
|---|---|---|---|---|---|---|
| Display Hero | HashiCorp Sans | 82px (5.13rem) | 600 | 1.17 (tight) | normal | "kern" enabled |
| Section Heading | HashiCorp Sans | 52px (3.25rem) | 600 | 1.19 (tight) | normal | "kern" enabled |
| Feature Heading | HashiCorp Sans | 42px (2.63rem) | 700 | 1.19 (tight) | -0.42px | Negative tracking |
| Sub-heading | HashiCorp Sans | 34px (2.13rem) | 600–700 | 1.18 (tight) | normal | Feature blocks |
| Card Title | HashiCorp Sans | 26px (1.63rem) | 700 | 1.19 (tight) | normal | Card and panel headings |
| Small Title | HashiCorp Sans | 19px (1.19rem) | 700 | 1.21 (tight) | normal | Compact headings |
| Body Emphasis | HashiCorp Sans | 17px (1.06rem) | 600–700 | 1.18–1.35 | normal | Bold body text |
| Body Large | system-ui | 20px (1.25rem) | 400–600 | 1.50 | normal | Hero descriptions |
| Body | system-ui | 16px (1.00rem) | 400–500 | 1.63–1.69 (relaxed) | normal | Standard body text |
| Nav Link | system-ui | 15px (0.94rem) | 500 | 1.60 (relaxed) | normal | Navigation items |
| Small Body | system-ui | 14px (0.88rem) | 400–500 | 1.29–1.71 | normal | Secondary content |
| Caption | system-ui | 13px (0.81rem) | 400–500 | 1.23–1.69 | normal | Metadata, footer links |
| Uppercase Label | HashiCorp Sans | 13px (0.81rem) | 600 | 1.69 (relaxed) | 1.3px | text-transform: uppercase |
Principles
- Brand/System split: HashiCorp Sans for headings and brand-critical text; system-ui for body, navigation, and functional text. The brand font carries the weight, system-ui carries the words.
- Kern always on: All HashiCorp Sans text enables OpenType
"kern"— letterfitting is non-negotiable. - Tight headings: Every heading uses 1.17–1.21 line-height, creating dense, stacked text blocks that feel infrastructural — solid, load-bearing.
- Relaxed body: Body text uses 1.50–1.69 line-height (notably generous), creating comfortable reading rhythm beneath the dense headings.
- Uppercase labels as wayfinding: 13px uppercase with 1.3px letter-spacing serves as the systematic category/section marker — always HashiCorp Sans weight 600.
4. Component Stylings
Buttons
Primary Dark
- Background:
#15181e - Text:
#d5d7db - Padding: 9px 9px 9px 15px (asymmetric, more left padding)
- Radius: 5px
- Border:
1px solid rgba(178, 182, 189, 0.4) - Shadow:
rgba(97, 104, 117, 0.05) 0px 1px 1px, rgba(97, 104, 117, 0.05) 0px 2px 2px - Focus:
3px solid var(--mds-color-focus-action-external) - Hover: uses
--mds-color-surface-interactivetoken
Secondary White
- Background:
#ffffff - Text:
#3b3d45 - Padding: 8px 12px
- Radius: 4px
- Hover:
--mds-color-surface-interactive+ low-shadow elevation - Focus:
3px solid transparentoutline - Clean, minimal appearance
Product-Colored Buttons
- Terraform: background
#7b42bc - Vault: background
#ffcf25(dark text) - Waypoint: background
#14c6cb, hover#12b6bb - Each product button follows the same structural pattern but uses its brand color
Badges / Pills
- Background:
#42225b(deep purple) - Text:
#efeff1 - Padding: 3px 7px
- Radius: 5px
- Border:
1px solid rgb(180, 87, 255) - Font: 16px
Inputs
Text Input (Dark Mode)
- Background:
#0d0e12 - Text:
#efeff1 - Border:
1px solid rgb(97, 104, 117) - Padding: 11px
- Radius: 5px
- Focus:
3px solid var(--mds-color-focus-action-external)outline
Checkbox
- Background:
#0d0e12 - Border:
1px solid rgb(97, 104, 117) - Radius: 3px
Links
- Action Blue on Light:
#2264d6, hover → blue-600 variable, underline on hover - Action Blue on Dark:
#1060ffor#2b89ff, underline on hover - White on Dark:
#ffffff, transparent underline → visible underline on hover - Neutral on Light:
#3b3d45, transparent underline → visible underline on hover - Light on Dark:
#efeff1, similar hover pattern - All links use
var(--wpl-blue-600)as hover color
Cards & Containers
- Light mode: white background, micro-shadow elevation
- Dark mode:
#15181eor darker surfaces - Radius: 8px for cards and containers
- Product showcase cards with gradient borders or accent lighting
Navigation
- Clean horizontal nav with mega-menu dropdowns
- HashiCorp logo left-aligned
- system-ui 15px weight 500 for links
- Product categories organized by lifecycle management group
- "Get started" and "Contact us" CTAs in header
- Dark mode variant for hero sections
5. Layout Principles
Spacing System
- Base unit: 8px
- Scale: 2px, 3px, 4px, 6px, 7px, 8px, 9px, 11px, 12px, 16px, 20px, 24px, 32px, 40px, 48px
Grid & Container
- Max content width: ~1150px (xl breakpoint)
- Full-width dark hero sections with contained content
- Card grids: 2–3 column layouts
- Generous horizontal padding at desktop scale
Breakpoints
| Name | Width | Key Changes |
|---|---|---|
| Mobile Small | <375px | Tight single column |
| Mobile | 375–480px | Standard mobile |
| Small Tablet | 480–600px | Minor adjustments |
| Tablet | 600–768px | 2-column grids begin |
| Small Desktop | 768–992px | Full nav visible |
| Desktop | 992–1120px | Standard layout |
| Large Desktop | 1120–1440px | Max-width content |
| Ultra-wide | >1440px | Centered, generous margins |
Whitespace Philosophy
- Enterprise breathing room: Generous vertical spacing between sections (48px–80px+) communicates stability and seriousness.
- Dense headings, spacious body: Tight line-height headings sit above relaxed body text, creating visual "weight at the top" of each section.
- Dark as canvas: Dark hero sections use extra vertical padding to let 3D illustrations and gradients breathe.
Border Radius Scale
- Minimal (2px): Links, small inline elements
- Subtle (3px): Checkboxes, small inputs
- Standard (4px): Secondary buttons
- Comfortable (5px): Primary buttons, badges, inputs
- Card (8px): Cards, containers, images
6. Depth & Elevation
| Level | Treatment | Use |
|---|---|---|
| Flat (Level 0) | No shadow | Default surfaces, text blocks |
| Whisper (Level 1) | rgba(97, 104, 117, 0.05) 0px 1px 1px, rgba(97, 104, 117, 0.05) 0px 2px 2px |
Cards, buttons, interactive surfaces |
| Focus (Level 2) | 3px solid var(--mds-color-focus-action-external) outline |
Focus rings — color-matched to context |
Shadow Philosophy: HashiCorp uses arguably the subtlest shadow system in modern web design. The dual-layer shadows at 5% opacity are nearly invisible — they exist not to create visual depth but to signal interactivity. If you can see the shadow, it's too strong. This restraint communicates the enterprise value of stability — nothing floats, nothing is uncertain.
7. Do's and Don'ts
Do
- Use HashiCorp Sans for headings and brand text, system-ui for body and UI text
- Enable
"kern"on all HashiCorp Sans text - Use product brand colors ONLY for their respective products (Terraform = purple, Vault = yellow, etc.)
- Apply uppercase labels at 13px weight 600 with 1.3px letter-spacing for section markers
- Keep shadows at the "whisper" level (0.05 opacity dual-layer)
- Use the
--mds-color-*token system for consistent color application - Maintain the tight-heading / relaxed-body rhythm (1.17–1.21 vs 1.50–1.69 line-heights)
- Use
3px solidfocus outlines for accessibility
Don't
- Don't use product brand colors outside their product context (no Terraform purple on Vault content)
- Don't increase shadow opacity above 0.1 — the whisper level is intentional
- Don't use pill-shaped buttons (>8px radius) — the sharp, minimal radius is structural
- Don't skip the
"kern"feature on headings — the font requires it - Don't use HashiCorp Sans for small body text — it's designed for 17px+ heading use
- Don't mix product colors in the same component — each product has one color
- Don't use pure black (
#000000) for dark backgrounds — use#15181eor#0d0e12 - Don't forget the asymmetric button padding — 9px 9px 9px 15px is intentional
8. Responsive Behavior
Breakpoints
| Name | Width | Key Changes |
|---|---|---|
| Mobile | <768px | Single column, hamburger nav, stacked CTAs |
| Tablet | 768–992px | 2-column grids, nav begins expanding |
| Desktop | 992–1150px | Full layout, mega-menu nav |
| Large | >1150px | Max-width centered, generous margins |
Collapsing Strategy
- Hero: 82px → 52px → 42px heading sizes
- Navigation: mega-menu → hamburger
- Product cards: 3-column → 2-column → stacked
- Dark sections maintain full-width but compress padding
- Buttons: inline → full-width stacked on mobile
9. Agent Prompt Guide
Quick Color Reference
- Light bg:
#ffffff,#f1f2f3 - Dark bg:
#15181e,#0d0e12 - Text light:
#000000,#3b3d45 - Text dark:
#efeff1,#d5d7db - Links:
#2264d6(light),#1060ff(dark),#2b89ff(active) - Helper text:
#656a76 - Borders:
rgba(178, 182, 189, 0.4),rgb(97, 104, 117) - Focus:
3px solidproduct-appropriate color
Example Component Prompts
- "Create a hero on dark background (#15181e). Headline at 82px HashiCorp Sans weight 600, line-height 1.17, kern enabled, white text. Sub-text at 20px system-ui weight 400, line-height 1.50, #d5d7db text. Two buttons: primary dark (#15181e, 5px radius, 9px 15px padding) and secondary white (#ffffff, 4px radius, 8px 12px padding)."
- "Design a product card: white background, 8px radius, dual-layer shadow at rgba(97,104,117,0.05). Title at 26px HashiCorp Sans weight 700, body at 16px system-ui weight 400 line-height 1.63."
- "Build an uppercase section label: 13px HashiCorp Sans weight 600, line-height 1.69, letter-spacing 1.3px, text-transform uppercase, #656a76 color."
- "Create a product-specific CTA button: Terraform → #7b42bc background, Vault → #ffcf25 with dark text, Waypoint → #14c6cb. All: 5px radius, 500 weight text, 16px system-ui."
- "Design a dark form: #0d0e12 input background, #efeff1 text, 1px solid rgb(97,104,117) border, 5px radius, 11px padding. Focus: 3px solid accent-color outline."
Iteration Guide
- Always start with the mode decision: light (white) for informational, dark (#15181e) for hero/product
- HashiCorp Sans for headings only (17px+), system-ui for everything else
- Shadows are at whisper level (0.05 opacity) — if visible, reduce
- Product colors are sacred — each product owns exactly one color
- Focus rings are always 3px solid, color-matched to product context
- Uppercase labels are the systematic wayfinding pattern — 13px, 600, 1.3px tracking