@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.Requests.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 Back 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, Constants.SerializerOptions ); 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; } }