@page "/admin/system/themes/create" @using Microsoft.AspNetCore.Authorization @using Moonlight.Shared @using LucideBlazor @using Moonlight.Frontend.Helpers @using Moonlight.Frontend.Services @using Moonlight.Shared.Http @using Moonlight.Shared.Http.Requests.Admin.Themes @using ShadcnBlazor.Buttons @using ShadcnBlazor.Cards @using ShadcnBlazor.Extras.Editors @using ShadcnBlazor.Extras.Forms @using ShadcnBlazor.Extras.Toasts @using ShadcnBlazor.Fields @using ShadcnBlazor.Inputs @using ShadcnBlazor.Switches @attribute [Authorize(Policy = Permissions.Themes.Create)] @inject HttpClient HttpClient @inject NavigationManager Navigation @inject ToastService ToastService @inject FrontendService FrontendService

Create theme

Create a new theme
Continue
Name Version Author Is Enabled
CSS Content
@code { private CreateThemeDto Request = new() { CssContent = "/* Define your css here */" }; private Editor Editor; private async Task OnSubmitAsync(EditContext editContext, ValidationMessageStore validationMessageStore) { Request.CssContent = await Editor.GetValueAsync(); var response = await HttpClient.PostAsJsonAsync( "/api/admin/themes", Request, SerializationContext.Default.Options ); if (!response.IsSuccessStatusCode) { await ProblemDetailsHelper.HandleProblemDetailsAsync(response, Request, validationMessageStore); return false; } await ToastService.SuccessAsync( "Theme creation", $"Successfully created theme {Request.Name}" ); await FrontendService.ReloadAsync(); Navigation.NavigateTo("/admin/system?tab=themes"); return true; } }