using System.Text.Json.Serialization;
using Luski.Classes.ThemeSub;

namespace Luski.Classes;

public class ThemeStart
{
    [JsonInclude]
    [JsonPropertyName("name")]
    public string Name { get; set; } = default!;
    [JsonInclude]
    [JsonPropertyName("description")]
    public string Description { get; set; } = default!;
    [JsonInclude]
    [JsonPropertyName("global_server_template")]
    public ServerThemeProperties GlobalServerTemplate { get; set; } = new();
    [JsonInclude]
    [JsonPropertyName("server_overrides")]
    public ServerTheme[] ServerOverrides { get; set; } = Array.Empty<ServerTheme>();
}


[JsonSerializable(typeof(ThemeStart))]
[JsonSourceGenerationOptions(
    GenerationMode = JsonSourceGenerationMode.Default,
    PropertyNamingPolicy = JsonKnownNamingPolicy.Unspecified,
    WriteIndented = true,
    DefaultIgnoreCondition = JsonIgnoreCondition.Never)]
internal partial class ThemeStartContext : JsonSerializerContext
{

}