| name | theme-foundation |
| description | Create a complete theme foundation with accent, secondary, and neutral color ramps from a single brand color. Use when building light/dark mode themes or starting a new design system. |
| license | SEE LICENSE IN LICENSE.md |
| metadata | {"author":"ismael.fyi","version":"1.0.0"} |
Theme Foundation
Generate a complete theme color system from a single brand color. Creates primary accent, secondary accent (complementary), and neutral ramps - all mathematically derived.
When to Use
- "Create a theme from my brand color"
- "I need colors for light and dark mode"
- "Generate a color system for my app"
- "Start a new design system with this color"
Installation
npx @basiclines/rampa
Recipe
Given a user's brand color, generate three ramp types:
1. Primary Accent Ramp
The main brand color expanded to a full 10-shade scale.
rampa -C "<brand-color>" -L 95:10 --size=10 -O css --name=accent
2. Secondary Accent (Complementary)
Mathematically opposite on the color wheel - perfect for CTAs, highlights, or secondary actions.
rampa -C "<brand-color>" --add=complementary -L 95:10 --size=10 -O css
This outputs two ramps:
base - the primary accent
complementary-1 - the secondary accent
3. Neutral Ramp
Derived from the brand color but heavily desaturated. This creates "warm" or "cool" neutrals that feel cohesive with the brand.
rampa -C "<brand-color>" -L 98:5 -S 5:10 --size=10 -O css --name=neutral
Complete Example
For brand color #3b82f6 (blue):
rampa -C "#3b82f6" -L 95:10 --size=10 -O css --name=accent
rampa -C "#3b82f6" --add=complementary -L 95:10 --size=10 -O css
rampa -C "#3b82f6" -L 98:5 -S 5:10 --size=10 -O css --name=neutral
Output Structure
:root {
--accent-0: #f0f7ff;
--accent-1: #dbeafe;
--accent-9: #1e3a5f;
--complementary-1-0: #fff7ed;
--complementary-1-1: #ffedd5;
--neutral-0: #fafafa;
--neutral-1: #f5f5f5;
--neutral-9: #171717;
}
Light vs Dark Mode
The same ramps work for both modes - just map them differently:
Light Mode:
- Background:
neutral-0 to neutral-2
- Text:
neutral-8 to neutral-9
- Accent:
accent-5 to accent-7
Dark Mode:
- Background:
neutral-9 to neutral-7
- Text:
neutral-0 to neutral-2
- Accent:
accent-3 to accent-5
Tips
- The complementary color is mathematically guaranteed to contrast with the primary
- Neutrals inherit subtle warmth/coolness from the brand color
- Use
--size=11 for more granular control
- Adjust
-L range for more/less contrast (e.g., -L 90:20 for less extreme)