Code/TailBox/Application/TailBoxThemeFactory.cs
using System.Collections.Generic;
namespace Sandbox.TailBox;
internal static class TailBoxThemeFactory
{
public static TailBoxTheme FromConfig( TailBoxConfig config )
{
config ??= TailBoxConfig.CreateDefault();
return new TailBoxTheme
{
Spacing = Copy( config.Spacing ),
Colors = Copy( config.Colors ),
FontSizes = Copy( config.FontSizes ),
Radii = Copy( config.Radii ),
Shadows = Copy( config.Shadows ),
Screens = Copy( config.Screens ),
BorderWidths = Copy( config.BorderWidths ),
Opacity = Copy( config.Opacity ),
ZIndex = Copy( config.ZIndex ),
Durations = Copy( config.Durations ),
Easings = Copy( config.Easings ),
FontFamilies = Copy( config.FontFamilies ),
LineHeights = Copy( config.LineHeights ),
LetterSpacing = Copy( config.LetterSpacing ),
TextDecorationThickness = Copy( config.TextDecorationThickness ),
TextUnderlineOffset = Copy( config.TextUnderlineOffset ),
TextShadows = Copy( config.TextShadows ),
Filters = Copy( config.Filters ),
BackdropFilters = Copy( config.BackdropFilters ),
Transforms = Copy( config.Transforms ),
Animations = Copy( config.Animations )
};
}
private static Dictionary<string, string> Copy( Dictionary<string, string> source )
{
return source is null
? new Dictionary<string, string>( System.StringComparer.OrdinalIgnoreCase )
: new Dictionary<string, string>( source, System.StringComparer.OrdinalIgnoreCase );
}
}