Heylink Design System Deep-Dive
1. Brand Overview
Heylink is a link-in-bio and digital presence platform. The vibe is functional with a touch of tech polish. The site is clearly built for creators, small businesses, and anyone who needs a simple hub to point followers or customers to. The design feels confident but not flashy — it's a restrained palette, a single font family, clean spacing, and rounded corners everywhere.
This is not a brand chasing hyper-creative, illustrative UI. It’s about clarity and ease of use. The typography screams “modern sans” — Inter everywhere, with weights from 400 to 800 depending on hierarchy. They’re clearly leaning into web-native readability rather than decorative flair. The color choices are muted: deep navy (rgb(31, 52, 71)) for main text and accents, paired with a bright but non-aggressive secondary blue (rgb(11, 152, 231)). White surfaces dominate, keeping layouts airy.
Buttons and interactive states are understated. There’s a lot of rounded corners — 8px and 16px radii dominate, with occasional full pills (50% or 100px). Shadows are used sparingly, mostly soft greys for depth. The spacing scale is built on an 8px grid, which keeps everything aligned and predictable. Breakpoints start at small device widths (400px) and go up to tablet-ish (896px), suggesting they’ve optimized for mobile-first layouts.
Overall: Heylink’s design system is about trust and usability. The visual language is minimal but approachable, and everything serves the functional goal — get users to add links, present them clearly, and make them easy to click. No fluff. This works because their audience values speed and clarity over visual complexity.
2. Color System
2.1 Primary Colors
Their semantic primary color is rgb(31, 52, 71) — a deep, desaturated navy. It’s used for text, icons, and some borders. This choice conveys stability and professionalism. It’s darker than the blues used by many link-in-bio competitors (Linktree’s greens, Beacons’ brighter purples). Heylink’s secondary is rgb(11, 152, 231) — a clean, medium-light blue for accents and possibly CTAs.
The combination is conservative but effective: primary navy for trust and readability, secondary blue for action and focus. They avoid neon or saturated hues, which keeps the brand feeling grounded.
2.2 Complete Palette
| Color Name | Hex | Role | Usage |
|---|---|---|---|
| Primary Navy | #1f3447 | Main brand color | Text, icons, primary accents |
| Secondary Blue | #0b98e7 | Accent color | CTAs, focus states, highlights |
| White | #ffffff | Background | Page surfaces, cards, text on dark |
| Navy 60% Opacity | #1f3547 | Muted text | Secondary text, disabled states |
| Indigo | #3a3aa8 | Accent | Rare, possible special highlights |
| Aqua Light | #95e7e7 | Hover/focus | Hover indicators |
| Aqua Light Variant | #96e7e7 | Hover/focus | Hover indicators |
| Aqua Light Variant 2 | #97e8e7 | Hover/focus | Hover indicators |
2.3 Color Relationships
Contrast is generally strong — navy (#1f3447) on white (#ffffff) is well above WCAG AA. Secondary blue (#0b98e7) also pops well against white. The aqua hover colors are borderline for text contrast; they’re used as backgrounds or overlays, where contrast isn’t critical.
There’s no dark mode palette in the extracted data — everything assumes a light background.
2.4 Usage Guide
- Works well: Navy text on white, blue accents on white, white text on navy or blue backgrounds.
- Avoid: Aqua hover colors as text — they’re too light against white.
- Primary navy should be used for non-interactive text and icons.
- Secondary blue is for interactive or highlight states — don’t use it for body text.
3. Typography
3.1 Font Families
Inter is the only typeface. Sourced from Google Fonts, with variable font support. No fallbacks specified in extracted data, but standard would be Inter, sans-serif.
3.2 Type Scale
| Element | Font | Size | Weight | Line Height |
|---|---|---|---|---|
| Heading-1 | Inter | 64px (4.00rem) | 800 | 1.10 |
| Heading-1 | Inter | 36px (2.25rem) | 700 | 1.10 |
| Heading-1 | Inter | 28px (1.75rem) | 600 | 1.10 |
| Heading-1 | Inter | 18px (1.13rem) | 500 | 1.20 |
| Link | Inter | 16px (1.00rem) | 400 | 1.20 |
| Link | Inter | 16px (1.00rem) | 500 | 1.50 |
| Heading-1 | Inter | 16px (1.00rem) | 500 | 1.50 |
| Heading-1 | Inter | 16px (1.00rem) | 400 | 1.20 |
| Button | Inter | 16px (1.00rem) | 400 | 1.20 |
| Link | Inter | 14px (0.88rem) | 400 | 1.40 |
| Caption | Inter | 14px (0.88rem) | 400 | 1.20 |
3.3 Hierarchy
They’re using multiple "Heading-1" contexts with different sizes — possibly breakpoints or section titles. The big 64px is a hero headline, 36px for subheads, 28px for smaller titles. Body/link/caption at 14–16px keeps readability high. Weight jumps (400 → 800) create strong hierarchy without changing font. Line heights are tight for headings (1.10), looser for body (1.40–1.50).
4. Spacing & Layout
4.1 Spacing Scale
Base scale is 8px — confirmed by repeated values at multiples of 4 and 8.
| Value | Usage Count | Notes |
|---|---|---|
| 4px | 4 | Icon gaps |
| 6px | 14 | Tight element spacing |
| 8px | 36 | Core padding unit |
| 10px | 7 | Slightly larger than tight spacing |
| 12px | 14 | Button padding |
| 13px | 1 | Odd one-off |
| 14px | 131 | Common text padding/margins |
| 15px | 1 | One-off |
| 16px | 12 | Standard component padding |
| 20px | 1 | Section gap |
| 24px | 9 | Card padding |
| 25px | 6 | One-off size |
| 30px | 2 | Section spacing |
| 32px | 5 | Larger padding |
| 40px | 8 | Section spacing |
| 60px | 1 | Large gap |
| 70px | 1 | Hero spacing |
| 80px | 4 | Big margins |
| 88px | 2 | Hero spacing |
| 98px | 2 | Hero spacing |
4.2 Layout
Breakpoints:
- 400px
- 426px
- 530px
- 550px
- 600px
- 896px
These indicate mobile-first scaling, with adjustments for small tablets.
5. Visual Elements
Border Radius
| Value | Usage Count | Components |
|---|---|---|
| 8px | 11 | Div, button, link |
| 16px | 22 | Div, img, link |
| 100px | 2 | Pill buttons |
| 50% | 7 | Avatars, round badges |
Rounded corners are consistent — no sharp edges for interactive elements.
Shadows
| Shadow | Count | Notes |
|---|---|---|
| rgb(204, 204, 204) -2px 3px 7px 0px | 15 | Soft grey offset |
| rgba(31, 52, 71, 0.04) 0px 8px 16px 0px | 6 | Very subtle navy shadow |
| rgba(0, 0, 0, 0.25) 0px 3.8px 19px 0px | 2 | Stronger depth |
| rgba(0, 0, 0, 0.2) 0px 4px 8px 0px | 2 | Medium depth |
Borders
Two combos:
- 5px solid rgba(255, 255, 255, 0.49)
- 1px solid rgb(222, 222, 222)
6. Components
6.1 Buttons
Common style: .common-button_gray
Default:
- Background: transparent
- Color: rgb(31, 52, 71)
- Padding: 0px
- Border radius: 8px
- Border: 1px solid rgb(222, 222, 222)
- No shadow
Hover:
- Color: white
- Background: white (odd — same as text)
- Transform: translate(0.5em, -50%) scale(1)
Active:
- Background: rgb(44, 100, 21) — dark green
- Color: white
- Border: 1px solid rgba(162, 192, 169, 0.5)
Focus:
- Background: rgb(30, 174, 219)
- Color: white
- Border: 1px solid black
- Opacity: 0.9
Font: 16px, weight 500.
6.2 Links
Three styles:
- Navy links:
- Default: navy, no underline
- Hover: grey, no underline
- White links:
- Default: white, underline
- Hover: grey, no underline
- Muted navy (60% opacity):
- Default: muted, no underline
- Hover: grey, no underline
6.3 Forms
No input styles extracted — likely native Vuetify inputs styled minimally.
6.4 Cards
Shadows used for depth, padding in 24–32px range, rounded corners at 16px.
7. Design Tokens (CSS Variables)
:root {
/* Colors - semantic */
--color-primary: #1f3447;
--color-secondary: #0b98e7;
/* Colors - palette */
--color-white: #ffffff;
--color-navy-60: #1f3547;
--color-indigo: #3a3aa8;
--color-aqua-light: #95e7e7;
--color-aqua-light-variant: #96e7e7;
--color-aqua-light-variant2: #97e8e7;
/* Typography */
--font-family-base: 'Inter', sans-serif;
--font-size-h1-xl: 64px;
--font-size-h1-lg: 36px;
--font-size-h1-md: 28px;
--font-size-h1-sm: 18px;
--font-size-body-lg: 16px;
--font-size-body-sm: 14px;
--line-height-tight: 1.10;
--line-height-normal: 1.20;
--line-height-loose: 1.40;
--line-height-looser: 1.50;
/* Spacing */
--space-4: 4px;
--space-6: 6px;
--space-8: 8px;
--space-10: 10px;
--space-12: 12px;
--space-13: 13px;
--space-14: 14px;
--space-15: 15px;
--space-16: 16px;
--space-20: 20px;
--space-24: 24px;
--space-25: 25px;
--space-30: 30px;
--space-32: 32px;
--space-40: 40px;
--space-60: 60px;
--space-70: 70px;
--space-80: 80px;
--space-88: 88px;
--space-98: 98px;
/* Border radius */
--radius-sm: 8px;
--radius-md: 16px;
--radius-pill: 100px;
--radius-full: 50%;
/* Shadows */
--shadow-grey-soft: rgb(204, 204, 204) -2px 3px 7px 0px;
--shadow-navy-subtle: rgba(31, 52, 71, 0.04) 0px 8px 16px 0px;
--shadow-black-strong: rgba(0, 0, 0, 0.25) 0px 3.8px 19px 0px;
--shadow-black-medium: rgba(0, 0, 0, 0.2) 0px 4px 8px 0px;
}8. AI Coding Assistant Prompt
# Heylink Design System Specification
You are a Heylink design expert. Build UIs matching their visual language exactly.
## Brand Context
Heylink values clarity, trust, and usability. The design is minimal, rounded, and mobile-friendly. Colors are muted blues with white surfaces. Typography is modern and sans-serif, aiming for readability and hierarchy without ornamentation.
## Color Palette
- Primary Navy: #1f3447 — Main text, icons, primary accents
- Secondary Blue: #0b98e7 — CTAs, focus states, highlights
- White: #ffffff — Backgrounds, card surfaces
- Navy 60%: #1f3547 — Secondary text, disabled states
- Indigo: #3a3aa8 — Occasional accents
- Aqua Light: #95e7e7 — Hover/focus backgrounds
- Aqua Light Variant: #96e7e7 — Hover/focus backgrounds
- Aqua Light Variant 2: #97e8e7 — Hover/focus backgrounds
## Typography
Font family: 'Inter', sans-serif (Google Fonts, variable)
Type scale:
- H1 XL: 64px, weight 800, line-height 1.10 — Hero titles
- H1 LG: 36px, weight 700, line-height 1.10 — Section titles
- H1 MD: 28px, weight 600, line-height 1.10 — Subsection titles
- H1 SM: 18px, weight 500, line-height 1.20 — Small headings
- Body LG: 16px, weight 400, line-height 1.20 — Body text
- Body MD: 16px, weight 500, line-height 1.50 — Links, labels
- Caption: 14px, weight 400, line-height 1.20 — Metadata
## Spacing & Grid
Base: 8px grid. Values: 4, 6, 8, 10, 12, 13, 14, 15, 16, 20, 24, 25, 30, 32, 40, 60, 70, 80, 88, 98px.
Use multiples for padding, margins, and gaps.
## Border Radius
- sm: 8px — buttons, small elements
- md: 16px — cards, images
- pill: 100px — pill buttons
- full: 50% — avatars, circular badges
## Shadows & Depth
- Soft grey: rgb(204, 204, 204) -2px 3px 7px 0px — cards
- Subtle navy: rgba(31, 52, 71, 0.04) 0px 8px 16px 0px — elevated surfaces
- Strong black: rgba(0, 0, 0, 0.25) 0px 3.8px 19px 0px — modal overlays
- Medium black: rgba(0, 0, 0, 0.2) 0px 4px 8px 0px — hover depth
## Component Specifications
### Primary Button
Default:
- background: transparent
- color: #1f3447
- padding: 0
- border-radius: 8px
- border: 1px solid #dedede
- font: 16px, weight 500
Hover:
- background: #ffffff
- color: #ffffff
Active:
- background: rgb(44, 100, 21)
- color: #ffffff
- border: 1px solid rgba(162, 192, 169, 0.5)
Focus:
- background: #1eaedb
- color: #ffffff
- opacity: 0.9
- border: 1px solid #000000
### Link Styles
Navy:
- default: #1f3447, no underline
- hover: #565656, no underline
White:
- default: #ffffff, underline
- hover: #565656, no underline
Muted:
- default: rgba(31, 53, 71, 0.6), no underline
- hover: #565656, no underline
### Card
- background: #ffffff
- border-radius: 16px
- padding: 24–32px
- shadow: soft grey or subtle navy
## Layout & Responsive Rules
Breakpoints: 400px, 426px, 530px, 550px, 600px, 896px.
Mobile-first scaling. Adjust typography and spacing at breakpoints.
## Interaction Rules
- Transitions: 150ms ease for hover/focus/active
- Focus indicators: color change + border
- Hover states: color + background change
## DO List
- Use only defined palette colors
- Maintain 8px grid
- Use Inter for all text
- Keep corners rounded consistently
- Use shadows sparingly
- Follow button state specs exactly
## DON'T List
- Don't introduce new colors
- Don't mix sharp corners with rounded
- Don't use aqua hover colors for text
- Don't skip hover/focus styles
- Don't apply heavy shadows to all elements
## Code Examples
### Primary Button
```css
.btn-primary {
background: transparent;
color: #1f3447;
padding: 0;
border-radius: 8px;
border: 1px solid #dedede;
font-family: 'Inter', sans-serif;
font-size: 16px;
font-weight: 500;
transition: all 150ms ease;
}
.btn-primary:hover {
background: #ffffff;
color: #ffffff;
}
.btn-primary:active {
background: rgb(44, 100, 21);
color: #ffffff;
border: 1px solid rgba(162, 192, 169, 0.5);
}
.btn-primary:focus {
background: #1eaedb;
color: #ffffff;
opacity: 0.9;
border: 1px solid #000000;
}
```
### Card
```css
.card {
background: #ffffff;
border-radius: 16px;
padding: 24px;
box-shadow: rgba(31, 52, 71, 0.04) 0px 8px 16px 0px;
}
```
### Link
```css
.link {
color: #1f3447;
text-decoration: none;
}
.link:hover {
color: #565656;
}
```9. Summary
TL;DR — Heylink’s design system is minimal, navy-and-blue, rounded, and built on an 8px grid. Inter is the only font. Shadows are soft and rare. Buttons have clean state changes. Everything is mobile-first.
Brand Keywords: trust-focused, minimal-rounded, mobile-first, functional-clean