Design Tokens
Launch77 uses 17 semantic design tokens built on CSS variables. All components reference these tokens to ensure consistent, themeable styling.
Each token includes a background color and corresponding foreground color for text contrast. Always use paired tokens together (e.g., bg-primary with text-primary-foreground).
Base Colors
Foundational colors for backgrounds, surfaces, and primary text. These create the core visual structure of your interface.
Background
Main page background color. Typically white in light mode, dark in dark mode.
--color-backgroundbg-background0 0% 100%#FFFFFFPaired with: --color-foreground
Foreground
Default text color on the main background. Should have strong contrast with background for readability.
--color-foregroundtext-foreground222 47% 11%#0F1729Paired with: --color-background
Card
Background for card components and elevated surfaces. Usually same as background.
--color-cardbg-card0 0% 100%#FFFFFFPaired with: --color-card-foreground
Card Foreground
Text color for content inside cards. Should contrast with card background.
--color-card-foregroundtext-card-foreground222 47% 11%#0F1729Paired with: --color-card
Brand Colors
Your primary brand identity colors. Customize these to match your brand. Used for buttons, links, active states, and key interactive elements.
Primary
Primary brand color. Used for buttons, active states, links, and brand elements. Customize this for your brand!
--color-primarybg-primary222 47% 11%#0F1729Paired with: --color-primary-foreground
Primary Foreground
Text/icon color used ON TOP of primary-colored backgrounds. Must have strong contrast with primary color.
--color-primary-foregroundtext-primary-foreground0 0% 100%#FFFFFFPaired with: --color-primary
Accent
Secondary brand color for accents, highlights, and secondary CTAs. Complements primary color.
--color-accentbg-accent210 40% 96%#F1F5F9Paired with: --color-accent-foreground
Accent Foreground
Text/icon color used ON TOP of accent-colored backgrounds.
--color-accent-foregroundtext-accent-foreground222 47% 11%#0F1729Paired with: --color-accent
Muted Colors
Subtle, low-contrast colors for backgrounds and secondary text. Use for disabled states, placeholders, and supporting UI elements.
Muted
Subtle background for hover states, disabled elements, and secondary UI. Less prominent than accent.
--color-mutedbg-muted210 40% 96%#F1F5F9Paired with: --color-muted-foreground
Muted Foreground
De-emphasized text color for labels, placeholders, secondary text. Less contrast than foreground.
--color-muted-foregroundtext-muted-foreground215 16% 47%#65758BPaired with: --color-muted
Secondary Colors
Alternative action colors for less prominent buttons and UI elements. Provides visual hierarchy alongside primary brand colors.
Secondary
Alternative background color for secondary buttons and surfaces.
--color-secondarybg-secondary210 40% 96%#F1F5F9Paired with: --color-secondary-foreground
Secondary Foreground
Text color used on secondary-colored backgrounds.
--color-secondary-foregroundtext-secondary-foreground222 47% 11%#0F1729Paired with: --color-secondary
Feedback Colors
Error states and destructive actions. Use for delete buttons, error messages, and warnings about irreversible actions.
Destructive
Error states, delete buttons, and destructive actions. Typically red.
--color-destructivebg-destructive0 84% 60%#EF4343Paired with: --color-destructive-foreground
Destructive Foreground
Text color used on destructive-colored backgrounds.
--color-destructive-foregroundtext-destructive-foreground0 0% 98%#FAFAFAPaired with: --color-destructive
Border Colors
Borders, dividers, and outlines. Provides subtle separation between UI elements and interactive focus states.
Border
Default border color for dividers, card borders, and UI boundaries.
--color-borderborder-border214 32% 91%#E1E7EFInput
Border color specifically for input fields and form controls.
--color-inputborder-input214 32% 91%#E1E7EFRing
Focus ring color for keyboard navigation accessibility. Shown on :focus-visible.
--color-ringring-ring222 47% 11%#0F1729Usage Guidelines
Best Practices
Always Use Semantic Tokens
Never hardcode colors. Always reference theme tokens so your components adapt to theme changes.
// ✅ Good - Semantic tokens
<div className="bg-primary text-primary-foreground">
Brand element
</div>
// ❌ Bad - Hardcoded colors
<div className="bg-slate-900 text-white">
Brand element
</div>Pair Tokens Correctly
Each background token has a paired foreground token for accessible contrast. Always use them together.
bg-primary→text-primary-foregroundbg-card→text-card-foregroundbg-destructive→text-destructive-foregroundUse HSL Format
CSS variables use HSL format without hsl() wrapper. Tailwind automatically adds the wrapper when using utility classes.
/* In CSS */
:root {
--color-primary: 222 47% 11%; /* H S L values */
}
/* Tailwind applies as */
.bg-primary {
background-color: hsl(var(--color-primary));
}