Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ on:
branches: [main]
paths:
- "docs/**"
- "DOCS_GUIDELINES.md"

concurrency:
group: docs-${{ github.ref }}
Expand Down
301 changes: 301 additions & 0 deletions DESIGN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,301 @@
# HyperFrames Design System & Style Guide

Use this guide to configure Mintlify docs or any other platform to match the HyperFrames brand.

---

## Color Palette

### Light Mode

| Token | Hex | Usage |
| ------------------ | --------- | ------------------------------------------------ |
| `--bg` | `#f6f5f1` | Page background |
| `--surface` | `#ffffff` | Cards, panels, elevated surfaces |
| `--surface2` | `#eeedea` | Secondary surfaces, timeline, subtle backgrounds |
| `--border` | `#e0dfdb` | Default borders |
| `--border-light` | `#d0cfcb` | Hover/active borders |
| `--text` | `#1a1a1a` | Primary body text |
| `--text-secondary` | `#6b6b6b` | Secondary/muted text |
| `--text-tertiary` | `#999999` | Tertiary/placeholder text |
| `--heading` | `#0a0a0a` | Headings, nav brand, buttons |
| `--code-bg` | `#ffffff` | Code block backgrounds |

#### Accent Colors (Light)

| Token | Hex | Usage |
| ------------------------ | ----------------------- | ---------------------------- |
| `--accent-green` | `#1a7a0a` | Success, recommended badges |
| `--accent-green-light` | `rgba(26,122,10,0.07)` | Green badge backgrounds |
| `--accent-green-border` | `rgba(26,122,10,0.25)` | Green badge borders |
| `--accent-blue` | `#2563eb` | Links, info badges |
| `--accent-blue-light` | `rgba(37,99,235,0.06)` | Blue badge backgrounds |
| `--accent-blue-border` | `rgba(37,99,235,0.2)` | Blue badge borders |
| `--accent-purple` | `#7c3aed` | Highlights, special elements |
| `--accent-purple-light` | `rgba(124,58,237,0.06)` | Purple badge backgrounds |
| `--accent-purple-border` | `rgba(124,58,237,0.2)` | Purple badge borders |

#### Syntax Highlighting (Light)

| Token | Hex | Usage |
| ---------------------- | --------- | ------------------------------- |
| `--syntax-keyword` | `#9333ea` | Keywords (const, let, function) |
| `--syntax-function` | `#0891b2` | Function names |
| `--syntax-string` | `#16a34a` | Strings, values |
| `--syntax-number` | `#d97706` | Numbers |
| `--syntax-property` | `#6366f1` | Object properties |
| `--syntax-punctuation` | `#aaaaaa` | Brackets, semicolons |
| `--syntax-tag` | `#b45309` | HTML/JSX tags |
| `--syntax-attribute` | `#555555` | HTML attributes |
| `--syntax-comment` | `#bbbbbb` | Comments |

---

### Dark Mode

| Token | Hex | Usage |
| ------------------ | --------- | -------------------------------- |
| `--bg` | `#0a0a0a` | Page background |
| `--surface` | `#141414` | Cards, panels, elevated surfaces |
| `--surface2` | `#1a1a1a` | Secondary surfaces |
| `--border` | `#2a2a2a` | Default borders |
| `--border-light` | `#3a3a3a` | Hover/active borders |
| `--text` | `#e5e5e5` | Primary body text |
| `--text-secondary` | `#a0a0a0` | Secondary/muted text |
| `--text-tertiary` | `#666666` | Tertiary/placeholder text |
| `--heading` | `#f5f5f5` | Headings |
| `--code-bg` | `#141414` | Code block backgrounds |

#### Accent Colors (Dark)

| Token | Hex | Usage |
| ------------------------ | ----------------------- | ---------------------------- |
| `--accent-green` | `#22c55e` | Success, recommended badges |
| `--accent-green-light` | `rgba(34,197,94,0.1)` | Green badge backgrounds |
| `--accent-green-border` | `rgba(34,197,94,0.3)` | Green badge borders |
| `--accent-blue` | `#3b82f6` | Links, info badges |
| `--accent-blue-light` | `rgba(59,130,246,0.1)` | Blue badge backgrounds |
| `--accent-blue-border` | `rgba(59,130,246,0.3)` | Blue badge borders |
| `--accent-purple` | `#a78bfa` | Highlights, special elements |
| `--accent-purple-light` | `rgba(167,139,250,0.1)` | Purple badge backgrounds |
| `--accent-purple-border` | `rgba(167,139,250,0.3)` | Purple badge borders |

#### Syntax Highlighting (Dark)

| Token | Hex | Usage |
| ---------------------- | --------- | -------------------- |
| `--syntax-keyword` | `#c084fc` | Keywords |
| `--syntax-function` | `#22d3ee` | Function names |
| `--syntax-string` | `#4ade80` | Strings, values |
| `--syntax-number` | `#fbbf24` | Numbers |
| `--syntax-property` | `#818cf8` | Object properties |
| `--syntax-punctuation` | `#666666` | Brackets, semicolons |
| `--syntax-tag` | `#fb923c` | HTML/JSX tags |
| `--syntax-attribute` | `#a0a0a0` | HTML attributes |
| `--syntax-comment` | `#555555` | Comments |

---

## Typography

### Font Families

| Token | Stack | Usage |
| ---------------- | ----------------------------------------------------------------------------- | ---------------------- |
| `--font-display` | `'ABC Solar Display', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif` | Headlines, nav brand |
| `--font-body` | `'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif` | Body text, UI elements |
| `--font-mono` | `'IBM Plex Mono', 'SF Mono', 'Fira Code', monospace` | Code, terminals |

### Google Fonts Import

```css
@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@300;400;500;600;700&display=swap");
```

### Type Scale

| Element | Size | Weight | Letter Spacing | Line Height |
| ---------- | ------------------------------ | ------ | -------------- | ----------- |
| H1 | `clamp(2.6rem, 6vw, 4.5rem)` | 400 | `-0.02em` | 1.0 |
| H2 | `clamp(1.6rem, 3.5vw, 2.2rem)` | 400 | `-0.02em` | 1.2 |
| H3 | `1rem` | 600 | `-0.01em` | 1.4 |
| Body | `1rem` | 400 | `normal` | 1.6 |
| Body Small | `0.95rem` | 400 | `normal` | 1.7 |
| Caption | `0.82rem` | 400 | `normal` | 1.6 |
| Code | `0.75rem` | 400 | `normal` | 1.9 |
| Mono Small | `0.65rem` | 500 | `normal` | 1.6 |

---

## Spacing

| Token | Value | Usage |
| ----- | --------------- | ------------------- |
| `xs` | `0.25rem` (4px) | Tight gaps |
| `sm` | `0.5rem` (8px) | Small gaps |
| `md` | `1rem` (16px) | Default gaps |
| `lg` | `1.5rem` (24px) | Section gaps |
| `xl` | `2rem` (32px) | Large spacing |
| `2xl` | `4rem` (64px) | Section padding |
| `3xl` | `8rem` (128px) | Hero/footer padding |

---

## Border Radius

| Token | Value | Usage |
| ----- | --------------- | ---------------------- |
| `sm` | `4px` | Badges, small elements |
| `md` | `6px` | Buttons, inputs |
| `lg` | `8px` | Cards, panels |
| `xl` | `10px` - `12px` | Large cards |

---

## Shadows & Effects

- **No heavy shadows** — HyperFrames uses a flat, minimal aesthetic
- **Borders over shadows** — Use `1px solid var(--border)` instead of box-shadows
- **Backdrop blur** for nav: `backdrop-filter: blur(12px)`
- **Selection color**: `rgba(128,128,128,0.2)` (light) / `rgba(255,255,255,0.15)` (dark)

---

## Mintlify Configuration

The docs site at `docs/docs.json` implements this design system. Key settings:

```json
{
"theme": "maple",
"colors": {
"primary": "#0a0a0a",
"light": "#f6f5f1",
"dark": "#0a0a0a"
},
"background": {
"color": {
"light": "#f6f5f1",
"dark": "#0a0a0a"
}
},
"fonts": {
"family": "Inter",
"heading": { "family": "Inter" }
},
"appearance": {
"default": "light"
}
}
```

Additional overrides (code font, CSS variables, heading tracking) live in `docs/custom.css`.

---

## Component Patterns

### Cards

```css
.card {
background: var(--surface);
border: 1px solid var(--border);
border-radius: 12px;
overflow: hidden;
transition: border-color 0.2s;
}

.card:hover {
border-color: var(--border-light);
}
```

### Buttons

```css
.btn-primary {
font-size: 0.8rem;
padding: 0.4rem 1rem;
border-radius: 6px;
background: var(--heading);
color: #fff;
font-weight: 500;
}

[data-theme="dark"] .btn-primary {
background: var(--heading);
color: #0a0a0a;
}
```

### Code Blocks / Terminals

```css
.terminal {
background: var(--code-bg);
border: 1px solid var(--border);
border-radius: 8px;
overflow: hidden;
}

.terminal-bar {
display: flex;
gap: 5px;
padding: 10px 14px;
border-bottom: 1px solid var(--border);
}

.terminal-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: var(--border-light);
}

.terminal-body {
padding: 0.85rem 1.1rem;
font-family: var(--font-mono);
font-size: 0.8rem;
line-height: 1.9;
}
```

### Badges

```css
.badge-green {
color: var(--accent-green);
background: var(--accent-green-light);
border: 1px solid var(--accent-green-border);
}

.badge-blue {
color: var(--accent-blue);
background: var(--accent-blue-light);
border: 1px solid var(--accent-blue-border);
}

.badge-purple {
color: var(--accent-purple);
background: var(--accent-purple-light);
border: 1px solid var(--accent-purple-border);
}
```

---

## Animation Guidelines

- **Duration**: 0.15s - 0.2s for micro-interactions, 0.5s for reveals
- **Easing**: `ease` or `ease-out` for most transitions
- **Hover states**: Use `opacity: 0.85` or border color changes
- **Scroll reveals**: `translateY(20px)` with opacity fade

---

## Brand Assets

- **Logo**: "HyperFrames" in `--font-display` at 600 weight
- **Primary color**: `#0a0a0a` (near-black)
- **Warm neutral palette**: Beige/cream tones, not pure grays
Loading
Loading