Skip to main content
Version: v1.3.2

Theme

All CSS and SCSS files in the Raaghu Design System now use raaghu-react-themes as the single source of truth for all theme-related values.

📊 Integration Statistics​

  • 📁 Total Components: 60 RDS components
  • 🎨 SCSS Files Created: 60 component stylesheets
  • 🔧 Files Updated: 41 components updated to use theme variables
  • 🏷️ Theme Variables: 348 theme variable usages across all components
  • 📚 Documentation Files: 6 comprehensive documentation files created

🎯 What Was Achieved​

1. Complete CSS/SCSS Architecture ✅​
  • Every component has its corresponding SCSS file with consistent naming
  • File structure: rds-{component}/rds-{component}.scss
  • BEM methodology with RDS prefixes: .rds-{component}__element--modifier
2. Centralized Theme System ✅​
  • Created custom-properties.scss with 150+ design tokens
  • All components now use CSS custom properties from themes
  • Single point of contact for all styling values
  • Easy theme switching (light, dark)
3. Automated Tooling ✅​
  • generate-scss.js - Auto-generates SCSS files for new components
  • update-theme-variables.js - Auto-updates components to use theme variables
  • Consistent patterns and conventions across all files

🎨 Theme Integration Examples​

Before Integration (Hardcoded Values)​
.rds-button {
background-color: #1976d2;
padding: 8px 16px;
border-radius: 4px;
transition: all 0.2s ease;
}
After Integration (Theme Variables) ✨​
.rds-button {
background-color: var(--rds-button-primary-bg);
padding: var(--rds-spacing-sm) var(--rds-spacing-md);
border-radius: var(--rds-border-radius-sm);
transition: all var(--rds-transition-base);
}

🔗 Single Point of Contact Flow​

graph TD
A[raaghu-react-themes/src/styles/] --> B[variables/color-variables.scss]
A --> C[themes/light.scss]
A --> D[themes/dark.scss]
A --> F[custom-properties.scss]

F --> G[CSS Custom Properties]
G --> H[All RDS Components]

H --> I[rds-button.scss]
H --> J[rds-card.scss]
H --> K[rds-alert.scss]
H --> L[... 57 more components]

🛠️ Developer Experience​

Import Theme in Your App​
import '@waiin/raaghu-react/raaghu-react-themes/src/styles/themes/light.scss';
Use Theme Variables in Components​
.my-component {
// Colors
background-color: var(--rds-background-paper);
color: var(--rds-text-primary);
border: 1px solid var(--rds-border-default);

// Spacing
padding: var(--rds-spacing-md);

// Typography
font-family: var(--rds-font-family-base);
font-size: var(--rds-font-size-md);

// Effects
box-shadow: var(--rds-elevation-2);
transition: all var(--rds-transition-base);
}
Switch Themes Easily​
// Light theme
import 'raaghu-react-themes/src/styles/themes/light.scss';

// Dark theme
import 'raaghu-react-themes/src/styles/themes/dark.scss';

📈 Benefits Achieved​

✅ Consistency​

All components use the same color palette, spacing scale, typography, and interaction patterns.

✅ Maintainability​

Change a color or spacing value in one place, see it reflected across all 60+ components.

✅ Theme Switching​

Seamlessly switch between light and dark themes without rebuilding.

✅ Developer Productivity​

Clear, semantic variable names make development faster and more intuitive.

✅ Performance​

CSS custom properties enable efficient runtime theme changes.

✅ Scalability​

Easy to add new components, themes, and design tokens following established patterns.