Theme Switching¶
Our theme system, which components depend on and is adapted on top of MkDocs Material style, supports both light and dark themes. All components automatically adapt to the selected theme using CSS variables.
CSS Variables¶
Our theming system is built on CSS custom properties (variables) that automatically update when switching themes.
Core Variables¶
:root {
/* Background colors */
--md-default-bg-color: #ffffff; /* Background color */
--md-default-fg-color: #000000; /* Foreground/text color */
/* Accent colors */
--md-primary-fg-color: #1976d2; /* Primary accent color */
--md-accent-fg-color: #ff6b35; /* Secondary accent color */
/* Custom variables */
--phantom-bg-secondary: #f5f5f5; /* Secondary background */
--phantom-border: #e0e0e0; /* Border color */
--phantom-accent: #1976d2; /* Accent color */
--phantom-text-secondary: #666666; /* Secondary text color */
}
Visual Examples¶
Default Background
--md-default-bg-color
Secondary Background
--phantom-bg-secondary
Primary Color
--md-primary-fg-color
Accent Color
--phantom-accent
Theme-Aware Components¶
All our custom components automatically adapt to the current theme:
Light Mode Example¶
✓
Light Mode
How It Works¶
- Base Variables: MkDocs Material provides base theme variables
- Custom Variables: We extend these with our own
--phantom-*variables, adapting our own styling approach - Automatic Switching: Variables update when theme changes
Try switching between light and dark mode using the theme toggle in the header to see how all components adapt!
Color Palette¶
Primary Colors¶
Primary
--md-primary-fg-color
Accent
--md-accent-fg-color
Phantom Accent
--phantom-accent
Status Colors¶
Success
#22c55e
Warning
#f59e0b
Error
#ef4444
Info
#3b82f6
Creating Theme-Aware Components¶
Example: Custom Card¶
.custom-card {
background: var(--phantom-bg-secondary);
border: 1px solid var(--phantom-border);
color: var(--md-default-fg-color);
padding: 1rem;
border-radius: 8px;
}
.custom-card:hover {
border-color: var(--phantom-accent);
}
This card automatically adapts to the current theme using CSS variables.
Dark Mode Considerations¶
When designing for both themes, consider:
- Contrast Ratios: Ensure text remains readable in both modes
- Color Meanings: Status colors should be distinguishable in both themes
- Shadows: Use
box-shadowsparingly as it may not work well in dark mode - Images: Consider providing theme-specific images when necessary
Testing Your Theme¶
Contrast Checker¶
Default Text on Default Background
This text should be clearly readable in both light and dark modes.
This text should be clearly readable in both light and dark modes.
Secondary Text on Secondary Background
This combination is used for less prominent content.
This combination is used for less prominent content.
Theme Toggle Location¶
The theme toggle button is located in the header navigation bar. Look for the sun/moon icon to switch between light and dark modes.
Best Practices¶
- Use CSS Variables: Always use theme variables instead of hard-coded colors
- Test Both Modes: Check your content in both light and dark themes
- Semantic Colors: Use meaningful variable names that describe purpose, not appearance
- Fallback Values: Provide fallback colors for older browsers if needed
- Media Queries: Respect user's system theme preference with
prefers-color-scheme