A simple library to make sharing a single MudBlazor theme across multiple projects and into Razor Class Libraries that use MudBlazor.
using Community.Mudblazor.ThemeHelper;
*This is where you will define your theme
public class ThemeHelperExample : IThemeHelper
{
public MudTheme GetTheme()
{
return new MudTheme()
{
Palette = new Palette()
{
Primary = Colors.Blue.Default,
Secondary = Colors.Green.Accent4,
AppbarBackground = Colors.Red.Default,
},
PaletteDark = new PaletteDark()
{
Primary = Colors.Blue.Lighten1
},
LayoutProperties = new LayoutProperties()
{
DrawerWidthLeft = "260px",
DrawerWidthRight = "300px"
}
};
}
}
Somewhere in your program.cs
or when setting up DI, call the Extension Method. Info: It's added as a singleton service.
//Add Theme Helper
services.AddMudBlazorThemeHelper<ThemeHelperExample>();
@using Community.Mudblazor.ThemeHelper
...
<MudThemeProvider Theme="@MyCustomTheme" @ref="@_mudThemeProvider" @bind-IsDarkMode="@_isDarkMode" />
```csharp
@code{
...
[Inject]
public IThemeHelper ThemeHelper { get; set; }
bool _isDarkMode;
private MudThemeProvider _mudThemeProvider = new MudThemeProvider();
private MudTheme MyCustomTheme = null;
protected override async Task OnInitializedAsync()
{
MyCustomTheme = ThemeHelper.GetTheme();
}
...
}