Web App Style Guide
Vue 3 + Vite + Tailwind CSS v4 · Light theme
Visual reference for the TrainerDay web app (trainerday.com). All tokens come from
src/assets/css/tailwind.css.
Design Tokens
Primitive values that define the visual language: colors, typography, spacing, and radii.
Colors
Primary
Semantic
Surfaces
Text
Training Zones
Periodization
Typography
The quick brown fox jumps over the lazy dog
Heading 1 (text-3xl font-bold)
Heading 2 (text-2xl font-bold)
Heading 3 (text-xl font-semibold)
Heading 4 (text-lg font-semibold)
Body text (text-base)
Muted text (text-sm text-text-muted)
Light small text (text-xs text-text-light)
Heading .td-h2 (1.5rem / 700)
Heading .td-h3 (1.25rem / 700)
Heading .td-h4 (1.125rem / 700)
Links
Border Radius
6px
12px
16px
100px
Components
Reusable UI elements built from design tokens.
Cards
Card Title
Content inside .td-card. The primary container pattern for app sections.
Base Card Title
Content inside .td-base-card. Same as td-card but without box-shadow.
Builder Card (Selected)
Featured card with blue ring and badge. Based on Coach Jack's plan builder pattern.
- ✓ Feature one
- ✓ Feature two
- ✓ Feature three
Training Zones Card
Interactive Card
Hover to see the border and shadow effect. Used for clickable cards.
Learn more →342
▲ 12% from last week
Form Inputs
Your Functional Threshold Power
This field is required
Supports vertical resize
Dropdowns
Custom-styled native selects. Use appearance-none + a chevron SVG positioned absolutely.
Dropdown Menu
Action menu with .dd-action-item items.
Segmented Tabs
iOS-style segmented control. Container has surface bg + border. Active tab: white bg + subtle shadow. Inactive: muted text.
Badges
Zone Badges .dominant-zone
Pill Badges
Split Pill (Label + Value)
Pill with a gray label section on the left and a bold value on the right. Clickable variant gets hover:border-primary.
Alerts
Info
Your training plan has been updated with the latest changes.
Success
Your workout has been saved to the calendar.
Warning
Your FTP has not been updated in over 8 weeks. Consider retesting.
Error
Could not connect to the server. Please try again.
Tabs
Underline Tabs
Active tab: primary color + 2px bottom border. Uppercase, bold, tracking-wide.
Pill Tabs
Active = primary-light bg + primary text. Inactive = no bg.
Toggles / Switches
40x22px pill track with 16px circle thumb. Primary blue for ON state.
Two-State Toggle (Label Pair)
Table
| Week | Phase | Hours | TSS | Zone |
|---|---|---|---|---|
| 1 | Base | 6.5h | 285 | Endurance |
| 2 | Base | 7.0h | 310 | Tempo |
| 3 | Build | 8.0h | 380 | Threshold |
| 4 | Peak | 5.5h | 420 | VO2max |