390 lines
9.0 KiB
Markdown
390 lines
9.0 KiB
Markdown
|
|
# Catppuccin Frappe Styling Guide
|
|||
|
|
|
|||
|
|
## Overview
|
|||
|
|
|
|||
|
|
The socktop website now uses the beautiful **Catppuccin Frappe** color scheme throughout. This guide documents all the colors and styling conventions used.
|
|||
|
|
|
|||
|
|
## Color Palette
|
|||
|
|
|
|||
|
|
### Base Colors
|
|||
|
|
```css
|
|||
|
|
--ctp-base: #303446; /* Main background */
|
|||
|
|
--ctp-mantle: #292c3c; /* Slightly darker background */
|
|||
|
|
--ctp-crust: #232634; /* Darkest background */
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Surface Colors
|
|||
|
|
```css
|
|||
|
|
--ctp-surface0: #414559; /* UI elements background */
|
|||
|
|
--ctp-surface1: #51576d; /* Slightly lighter UI elements */
|
|||
|
|
--ctp-surface2: #626880; /* Even lighter UI elements */
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Overlay Colors
|
|||
|
|
```css
|
|||
|
|
--ctp-overlay0: #737994; /* Disabled text */
|
|||
|
|
--ctp-overlay1: #838ba7; /* Comments, secondary text */
|
|||
|
|
--ctp-overlay2: #949cbb; /* Tertiary text */
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Text Colors
|
|||
|
|
```css
|
|||
|
|
--ctp-text: #c6d0f5; /* Primary text */
|
|||
|
|
--ctp-subtext1: #b5bfe2; /* Secondary text */
|
|||
|
|
--ctp-subtext0: #a5adce; /* Tertiary text */
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Accent Colors
|
|||
|
|
```css
|
|||
|
|
--ctp-lavender: #babbf1; /* Links, highlights */
|
|||
|
|
--ctp-blue: #8caaee; /* Information, primary actions */
|
|||
|
|
--ctp-sapphire: #85c1dc; /* Special highlights */
|
|||
|
|
--ctp-sky: #99d1db; /* Sky blue accent */
|
|||
|
|
--ctp-teal: #81c8be; /* Teal accent */
|
|||
|
|
--ctp-green: #a6d189; /* Success, positive */
|
|||
|
|
--ctp-yellow: #e5c890; /* Warnings, attention */
|
|||
|
|
--ctp-peach: #ef9f76; /* Rust/crates.io theme */
|
|||
|
|
--ctp-maroon: #ea999c; /* Darker red variant */
|
|||
|
|
--ctp-red: #e78284; /* Errors, close button */
|
|||
|
|
--ctp-mauve: #ca9ee6; /* Primary brand color */
|
|||
|
|
--ctp-pink: #f4b8e4; /* Pink accent */
|
|||
|
|
--ctp-flamingo: #eebebe; /* Lighter pink */
|
|||
|
|
--ctp-rosewater: #f2d5cf; /* Lightest pink, cursor */
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Component Styling
|
|||
|
|
|
|||
|
|
### Hero Title
|
|||
|
|
- **Gradient**: Mauve to Blue (`#ca9ee6` → `#8caaee`)
|
|||
|
|
- **Font**: 3rem, weight 800
|
|||
|
|
- **Effect**: Text gradient with subtle glow
|
|||
|
|
- **Usage**: Main "socktop" heading
|
|||
|
|
|
|||
|
|
### Tagline
|
|||
|
|
- **Color**: `var(--ctp-subtext1)` (#b5bfe2)
|
|||
|
|
- **Font**: 1.25rem, weight 400
|
|||
|
|
- **Usage**: "A TUI-first remote system monitor."
|
|||
|
|
|
|||
|
|
### Link Buttons
|
|||
|
|
|
|||
|
|
#### Base Style
|
|||
|
|
```css
|
|||
|
|
background: rgba(65, 69, 89, 0.6);
|
|||
|
|
border: 1px solid rgba(186, 187, 241, 0.2);
|
|||
|
|
border-radius: 12px;
|
|||
|
|
color: var(--ctp-text);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### GitHub Button
|
|||
|
|
- **Border hover**: `var(--ctp-lavender)` (#babbf1)
|
|||
|
|
- **Shadow hover**: `rgba(186, 187, 241, 0.25)`
|
|||
|
|
- **Icon**: Font Awesome `fab fa-github`
|
|||
|
|
|
|||
|
|
#### Crate Buttons (TUI & Agent)
|
|||
|
|
- **Border hover**: `var(--ctp-peach)` (#ef9f76)
|
|||
|
|
- **Shadow hover**: `rgba(239, 159, 118, 0.25)`
|
|||
|
|
- **Icon**: Font Awesome `fas fa-cube`
|
|||
|
|
- **Theme**: Matches Rust/crates.io orange
|
|||
|
|
|
|||
|
|
#### APT Repository Button
|
|||
|
|
- **Border hover**: `var(--ctp-green)` (#a6d189)
|
|||
|
|
- **Shadow hover**: `rgba(166, 209, 137, 0.25)`
|
|||
|
|
- **Icon**: Font Awesome `fas fa-box`
|
|||
|
|
|
|||
|
|
### Terminal Window
|
|||
|
|
|
|||
|
|
#### Window Frame
|
|||
|
|
```css
|
|||
|
|
background: transparent;
|
|||
|
|
backdrop-filter: blur(20px);
|
|||
|
|
border: 1px solid rgba(186, 187, 241, 0.15);
|
|||
|
|
border-radius: 12px;
|
|||
|
|
box-shadow:
|
|||
|
|
0 30px 60px rgba(0, 0, 0, 0.4),
|
|||
|
|
0 12px 24px rgba(0, 0, 0, 0.3),
|
|||
|
|
inset 0 1px 0 rgba(186, 187, 241, 0.1);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Title Bar
|
|||
|
|
```css
|
|||
|
|
background: rgba(41, 44, 60, 0.8);
|
|||
|
|
border-bottom: 1px solid rgba(0, 0, 0, 0.3);
|
|||
|
|
height: 44px;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Traffic Light Buttons
|
|||
|
|
- **Close**: `var(--ctp-red)` (#e78284)
|
|||
|
|
- **Minimize**: `var(--ctp-yellow)` (#e5c890)
|
|||
|
|
- **Maximize**: `var(--ctp-green)` (#a6d189)
|
|||
|
|
|
|||
|
|
#### Terminal Title
|
|||
|
|
```css
|
|||
|
|
color: var(--ctp-subtext1);
|
|||
|
|
font-size: 13px;
|
|||
|
|
font-weight: 500;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Terminal Theme (xterm.js)
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
theme: {
|
|||
|
|
background: "rgba(48, 52, 70, 0.75)",
|
|||
|
|
foreground: "#c6d0f5",
|
|||
|
|
cursor: "#f2d5cf",
|
|||
|
|
cursorAccent: "#303446",
|
|||
|
|
selectionBackground: "rgba(202, 158, 230, 0.3)",
|
|||
|
|
|
|||
|
|
// ANSI colors
|
|||
|
|
black: "#51576d",
|
|||
|
|
red: "#e78284",
|
|||
|
|
green: "#a6d189",
|
|||
|
|
yellow: "#e5c890",
|
|||
|
|
blue: "#8caaee",
|
|||
|
|
magenta: "#f4b8e4",
|
|||
|
|
cyan: "#81c8be",
|
|||
|
|
white: "#b5bfe2",
|
|||
|
|
|
|||
|
|
// Bright ANSI colors
|
|||
|
|
brightBlack: "#626880",
|
|||
|
|
brightRed: "#e78284",
|
|||
|
|
brightGreen: "#a6d189",
|
|||
|
|
brightYellow: "#e5c890",
|
|||
|
|
brightBlue: "#8caaee",
|
|||
|
|
brightMagenta: "#f4b8e4",
|
|||
|
|
brightCyan: "#81c8be",
|
|||
|
|
brightWhite: "#a5adce",
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Header & Footer
|
|||
|
|
|
|||
|
|
#### Header
|
|||
|
|
```css
|
|||
|
|
background: rgba(48, 52, 70, 0.3);
|
|||
|
|
backdrop-filter: blur(10px);
|
|||
|
|
border-bottom: 1px solid rgba(186, 187, 241, 0.1);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Footer
|
|||
|
|
```css
|
|||
|
|
background: rgba(35, 38, 52, 0.3);
|
|||
|
|
backdrop-filter: blur(10px);
|
|||
|
|
border-top: 1px solid rgba(186, 187, 241, 0.1);
|
|||
|
|
color: var(--ctp-overlay1);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Footer Links
|
|||
|
|
- **Normal**: `var(--ctp-mauve)` (#ca9ee6)
|
|||
|
|
- **Hover**: `var(--ctp-lavender)` (#babbf1)
|
|||
|
|
|
|||
|
|
## Typography
|
|||
|
|
|
|||
|
|
### Font Families
|
|||
|
|
|
|||
|
|
#### Primary (UI)
|
|||
|
|
```css
|
|||
|
|
font-family: "Inter", "SF Pro Display", -apple-system, BlinkMacSystemFont,
|
|||
|
|
"Segoe UI", Roboto, sans-serif;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Terminal (Monospace)
|
|||
|
|
```css
|
|||
|
|
font-family: "JetBrains Mono", "Fira Code", "Cascadia Code",
|
|||
|
|
Consolas, monospace;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Font Sizes
|
|||
|
|
- **Hero Title**: 3rem (48px)
|
|||
|
|
- **Tagline**: 1.25rem (20px)
|
|||
|
|
- **Link Buttons**: 0.95rem (15.2px)
|
|||
|
|
- **Terminal Title**: 13px
|
|||
|
|
- **Terminal Content**: 14px
|
|||
|
|
- **Footer**: 0.875rem (14px)
|
|||
|
|
|
|||
|
|
### Font Weights
|
|||
|
|
- **Hero Title**: 800 (Extra Bold)
|
|||
|
|
- **Tagline**: 400 (Regular)
|
|||
|
|
- **Link Buttons**: 500 (Medium)
|
|||
|
|
- **Terminal Title**: 500 (Medium)
|
|||
|
|
|
|||
|
|
## Effects & Transitions
|
|||
|
|
|
|||
|
|
### Blur Effects
|
|||
|
|
- **Window Frame**: `blur(20px)`
|
|||
|
|
- **Header/Footer**: `blur(10px)`
|
|||
|
|
- **Title Bar**: `blur(10px)`
|
|||
|
|
|
|||
|
|
### Shadows
|
|||
|
|
|
|||
|
|
#### Window Shadow
|
|||
|
|
```css
|
|||
|
|
box-shadow:
|
|||
|
|
0 30px 60px rgba(0, 0, 0, 0.4),
|
|||
|
|
0 12px 24px rgba(0, 0, 0, 0.3),
|
|||
|
|
inset 0 1px 0 rgba(186, 187, 241, 0.1);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Button Shadow
|
|||
|
|
```css
|
|||
|
|
/* Default */
|
|||
|
|
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
|
|||
|
|
|
|||
|
|
/* Hover */
|
|||
|
|
box-shadow: 0 8px 24px rgba(202, 158, 230, 0.2);
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Transitions
|
|||
|
|
```css
|
|||
|
|
/* Buttons */
|
|||
|
|
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|||
|
|
|
|||
|
|
/* Traffic Lights */
|
|||
|
|
transition: all 0.2s ease;
|
|||
|
|
|
|||
|
|
/* Links */
|
|||
|
|
transition: color 0.2s;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Hover Effects
|
|||
|
|
|
|||
|
|
#### Button Hover
|
|||
|
|
```css
|
|||
|
|
transform: translateY(-2px);
|
|||
|
|
/* Plus color-specific shadow and border */
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### Traffic Light Hover
|
|||
|
|
- Show inner symbol (×, -, or +)
|
|||
|
|
- Increase brightness slightly
|
|||
|
|
|
|||
|
|
## Transparency & Opacity
|
|||
|
|
|
|||
|
|
### Background Opacities
|
|||
|
|
- **Terminal Background**: `rgba(48, 52, 70, 0.75)` - 75% opaque
|
|||
|
|
- **Title Bar**: `rgba(41, 44, 60, 0.8)` - 80% opaque
|
|||
|
|
- **Header**: `rgba(48, 52, 70, 0.3)` - 30% opaque
|
|||
|
|
- **Footer**: `rgba(35, 38, 52, 0.3)` - 30% opaque
|
|||
|
|
- **Link Buttons**: `rgba(65, 69, 89, 0.6)` - 60% opaque
|
|||
|
|
|
|||
|
|
### Selection Colors
|
|||
|
|
```css
|
|||
|
|
::selection {
|
|||
|
|
background: var(--ctp-mauve);
|
|||
|
|
color: var(--ctp-base);
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Responsive Design
|
|||
|
|
|
|||
|
|
### Mobile (≤480px)
|
|||
|
|
- Logo: 150px max-width
|
|||
|
|
- Hero title: 2rem
|
|||
|
|
- Terminal buttons: 10px diameter
|
|||
|
|
- Title bar: 40px height
|
|||
|
|
|
|||
|
|
### Tablet (≤768px)
|
|||
|
|
- Hero title: 2rem
|
|||
|
|
- Tagline: 1rem
|
|||
|
|
- Link buttons: Full width stack
|
|||
|
|
- Terminal: 8px border radius
|
|||
|
|
|
|||
|
|
## Icon Usage
|
|||
|
|
|
|||
|
|
### Font Awesome Icons
|
|||
|
|
- **GitHub**: `fab fa-github`
|
|||
|
|
- **Crates.io**: `fas fa-cube`
|
|||
|
|
- **APT**: `fas fa-box`
|
|||
|
|
- **Size**: 1.2rem within buttons
|
|||
|
|
|
|||
|
|
## Accessibility
|
|||
|
|
|
|||
|
|
### Contrast Ratios
|
|||
|
|
All text meets WCAG AA standards:
|
|||
|
|
- Primary text on base: High contrast
|
|||
|
|
- Secondary text on base: Medium-high contrast
|
|||
|
|
- Links have distinct colors and hover states
|
|||
|
|
|
|||
|
|
### Focus States
|
|||
|
|
All interactive elements have visible focus states (inherit from Catppuccin theme).
|
|||
|
|
|
|||
|
|
### Screen Readers
|
|||
|
|
- Semantic HTML structure
|
|||
|
|
- ARIA labels on terminal
|
|||
|
|
- Alt text on images
|
|||
|
|
- Descriptive link text
|
|||
|
|
|
|||
|
|
## Customization Tips
|
|||
|
|
|
|||
|
|
### Changing Primary Brand Color
|
|||
|
|
|
|||
|
|
Replace `--ctp-mauve` throughout with another accent:
|
|||
|
|
```css
|
|||
|
|
/* Example: Use blue as primary */
|
|||
|
|
.hero-title {
|
|||
|
|
background: linear-gradient(135deg, var(--ctp-blue) 0%, var(--ctp-sapphire) 100%);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.link-button:hover {
|
|||
|
|
border-color: var(--ctp-blue);
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Adjusting Transparency
|
|||
|
|
|
|||
|
|
More opaque terminal:
|
|||
|
|
```css
|
|||
|
|
theme: {
|
|||
|
|
background: "rgba(48, 52, 70, 0.9)", /* Change from 0.75 */
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Less blur:
|
|||
|
|
```css
|
|||
|
|
backdrop-filter: blur(10px); /* Change from 20px */
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Custom Button Colors
|
|||
|
|
|
|||
|
|
Add a new button style:
|
|||
|
|
```css
|
|||
|
|
.link-button.custom {
|
|||
|
|
border-color: rgba(133, 193, 220, 0.3);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
.link-button.custom:hover {
|
|||
|
|
border-color: var(--ctp-sapphire);
|
|||
|
|
box-shadow: 0 8px 24px rgba(133, 193, 220, 0.25);
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Resources
|
|||
|
|
|
|||
|
|
- **Catppuccin Official**: https://github.com/catppuccin/catppuccin
|
|||
|
|
- **Catppuccin Frappe**: https://github.com/catppuccin/catppuccin#-frappe
|
|||
|
|
- **Color Palette**: https://catppuccin.com/palette
|
|||
|
|
- **Port Guide**: https://github.com/catppuccin/catppuccin/blob/main/docs/port-creation.md
|
|||
|
|
|
|||
|
|
## Color Reference Chart
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Base Colors: Surface Colors: Overlay Colors:
|
|||
|
|
█ #303446 base █ #414559 s0 █ #737994 o0
|
|||
|
|
█ #292c3c mantle █ #51576d s1 █ #838ba7 o1
|
|||
|
|
█ #232634 crust █ #626880 s2 █ #949cbb o2
|
|||
|
|
|
|||
|
|
Text Colors: Accent Colors (Part 1):
|
|||
|
|
█ #c6d0f5 text █ #babbf1 lavender █ #8caaee blue
|
|||
|
|
█ #b5bfe2 sub1 █ #85c1dc sapphire █ #99d1db sky
|
|||
|
|
█ #a5adce sub0 █ #81c8be teal █ #a6d189 green
|
|||
|
|
|
|||
|
|
Accent Colors (Part 2):
|
|||
|
|
█ #e5c890 yellow █ #ef9f76 peach █ #ea999c maroon
|
|||
|
|
█ #e78284 red █ #ca9ee6 mauve █ #f4b8e4 pink
|
|||
|
|
█ #eebebe flamingo █ #f2d5cf rosewater
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**Theme**: Catppuccin Frappe
|
|||
|
|
**Designed for**: socktop web demo
|
|||
|
|
**Optimized for**: Dark backgrounds with colorful accents
|