Theme Engine
CSS custom property theming with design tokens, light/dark themes, and Tailwind integration.
Setup
<link href="_content/Arcadia.Theme/css/helix.css" rel="stylesheet" />
builder.Services.AddScoped<ThemeService>();
<ThemeProvider>@Body</ThemeProvider>
Theme Switching
@inject ThemeService ThemeService
ThemeService.SetTheme(new DarkTheme());
ThemeService.SetTheme(new LightTheme());
Design Tokens
var(--arcadia-color-primary)
var(--arcadia-color-surface)
var(--arcadia-color-text)
var(--arcadia-spacing-md) /* 16px */
var(--arcadia-text-sm) /* 14px */
var(--arcadia-shadow-md)
var(--arcadia-radius-md) /* 6px */
Density Modes
<ThemeProvider Density="compact" /> <!-- Tight -->
<ThemeProvider Density="default" /> <!-- Normal -->
<ThemeProvider Density="comfortable" /> <!-- Spacious -->
Custom Theme
public class CorporateTheme : HelixThemeBase
{
public override string Name => "corporate";
public CorporateTheme()
{
Set("--arcadia-color-primary", "#1e40af");
Set("--arcadia-color-surface", "#f8fafc");
}
}