diff --git a/demo/Semi.Avalonia.Demo.Desktop/App.axaml b/demo/Semi.Avalonia.Demo.Desktop/App.axaml index 9628b3e..c12b782 100644 --- a/demo/Semi.Avalonia.Demo.Desktop/App.axaml +++ b/demo/Semi.Avalonia.Demo.Desktop/App.axaml @@ -3,7 +3,7 @@ xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:Semi.Avalonia.Demo.Desktop" - RequestedThemeVariant="Dark"> + RequestedThemeVariant="Light"> diff --git a/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.axaml b/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.axaml index 30bd77f..fcd80cd 100644 --- a/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.axaml +++ b/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.axaml @@ -19,6 +19,17 @@ + + + + + + + @@ -30,20 +41,24 @@ Binding="{Binding ColorDisplayName}" CanUserSort="False" Header="Name" /> - + - - - - + + + + + + + + @@ -53,6 +68,17 @@ + + + + + + + @@ -60,21 +86,28 @@ - - + + - - - - + + + + + + + + diff --git a/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.cs b/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.cs index cd44ade..b7bbb44 100644 --- a/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.cs +++ b/demo/Semi.Avalonia.Demo/Controls/FunctionalColorGroupControl.cs @@ -22,9 +22,7 @@ public class FunctionalColorGroupControl: TemplatedControl get => _lightColors; set => SetAndRaise(LightColorsProperty, ref _lightColors, value); } - - public static readonly DirectProperty DarkColorsProperty = AvaloniaProperty.RegisterDirect( nameof(DarkColors), o => o.DarkColors, (o, v) => o.DarkColors = v); private IEnumerable _darkColors; diff --git a/demo/Semi.Avalonia.Demo/Pages/PaletteDemo.axaml.cs b/demo/Semi.Avalonia.Demo/Pages/PaletteDemo.axaml.cs index 321e719..d21b6b6 100644 --- a/demo/Semi.Avalonia.Demo/Pages/PaletteDemo.axaml.cs +++ b/demo/Semi.Avalonia.Demo/Pages/PaletteDemo.axaml.cs @@ -1,5 +1,7 @@ +using System.Threading.Tasks; using Avalonia; using Avalonia.Controls; +using Avalonia.Controls.Primitives; using Avalonia.Markup.Xaml; using Semi.Avalonia.Demo.ViewModels; @@ -10,6 +12,14 @@ public partial class PaletteDemo : UserControl public PaletteDemo() { InitializeComponent(); - this.DataContext = new PaletteDemoViewModel(); + + } + + protected override async void OnApplyTemplate(TemplateAppliedEventArgs e) + { + base.OnApplyTemplate(e); + PaletteDemoViewModel? vm = new PaletteDemoViewModel(); + vm.InitializeResources(); + DataContext = vm; } } \ No newline at end of file diff --git a/demo/Semi.Avalonia.Demo/ViewModels/PaletteDemoViewModel.cs b/demo/Semi.Avalonia.Demo/ViewModels/PaletteDemoViewModel.cs index 747e0f2..33f98f1 100644 --- a/demo/Semi.Avalonia.Demo/ViewModels/PaletteDemoViewModel.cs +++ b/demo/Semi.Avalonia.Demo/ViewModels/PaletteDemoViewModel.cs @@ -43,9 +43,13 @@ public class PaletteDemoViewModel: ObservableObject { _lightResourceDictionary = (ResourceDictionary)AvaloniaXamlLoader.Load(new Uri("avares://Semi.Avalonia/Themes/Light/Palette.axaml")); _darkResourceDictionary = (ResourceDictionary)AvaloniaXamlLoader.Load(new Uri("avares://Semi.Avalonia/Themes/Dark/Palette.axaml")); + WeakReferenceMessenger.Default.Register(this, OnClickColorItem); + } + + public void InitializeResources() + { InitializePalette(); InitializeFunctionalColors(); - WeakReferenceMessenger.Default.Register(this, OnClickColorItem); } private void InitializePalette() @@ -69,6 +73,18 @@ public class PaletteDemoViewModel: ObservableObject private void InitializeFunctionalColors() { FunctionalColors.Add(new FunctionalColorGroupViewModel("Primary", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.PrimaryTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Secondary", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.SecondaryTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Tertiary", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.TertiaryTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Information", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.InformationTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Success", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.SuccessTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Warning", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.WarningTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Danger", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.DangerTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Text", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.TextTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Link", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.LinkTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Background", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.BackgroundTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Fill", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.FillTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Border", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.BorderTokens)); + FunctionalColors.Add(new FunctionalColorGroupViewModel("Disabled", _lightResourceDictionary, _darkResourceDictionary, ColorTokens.DisabledTokens)); } private void OnClickColorItem(PaletteDemoViewModel vm, ColorItemViewModel item) { @@ -221,4 +237,113 @@ public static class ColorTokens new ("SemiColorPrimaryLightPointerover", "Primary Light Pointerover"), new ("SemiColorPrimaryLightActive", "Primary Light Active"), }; + + public static IReadOnlyList> SecondaryTokens { get; } = new List> + { + new ("SemiColorSecondary", "Secondary"), + new ("SemiColorSecondaryPointerover", "Secondary Pointerover"), + new ("SemiColorSecondaryPressed", "Secondary Pressed"), + new ("SemiColorSecondaryDisabled", "Secondary Disabled"), + new ("SemiColorSecondaryLight", "Secondary Light"), + new ("SemiColorSecondaryLightPointerover", "Secondary Light Pointerover"), + new ("SemiColorSecondaryLightActive", "Secondary Light Active"), + }; + + public static IReadOnlyList> TertiaryTokens { get; } = new List> + { + new ("SemiColorTertiary", "Tertiary"), + new ("SemiColorTertiaryPointerover", "Tertiary Pointerover"), + new ("SemiColorTertiaryPressed", "Tertiary Pressed"), + new ("SemiColorTertiaryLight", "Tertiary Light"), + new ("SemiColorTertiaryLightPointerover", "Tertiary Light Pointerover"), + new ("SemiColorTertiaryLightActive", "Tertiary Light Active"), + }; + + public static IReadOnlyList> InformationTokens { get; } = new List> + { + new ("SemiColorInformation", "Information"), + new ("SemiColorInformationPointerover", "Information Pointerover"), + new ("SemiColorInformationPressed", "Information Pressed"), + new ("SemiColorInformationDisabled", "Information Disabled"), + new ("SemiColorInformationLight", "Information Light"), + new ("SemiColorInformationLightPointerover", "Information Light Pointerover"), + new ("SemiColorInformationLightActive", "Information Light Active"), + }; + + public static IReadOnlyList> SuccessTokens { get; } = new List> + { + new ("SemiColorSuccess", "Success"), + new ("SemiColorSuccessPointerover", "Success Pointerover"), + new ("SemiColorSuccessPressed", "Success Pressed"), + new ("SemiColorSuccessDisabled", "Success Disabled"), + new ("SemiColorSuccessLight", "Success Light"), + new ("SemiColorSuccessLightPointerover", "Success Light Pointerover"), + new ("SemiColorSuccessLightActive", "Success Light Active"), + }; + + public static IReadOnlyList> WarningTokens { get; } = new List> + { + new ("SemiColorWarning", "Warning"), + new ("SemiColorWarningPointerover", "Warning Pointerover"), + new ("SemiColorWarningPressed", "Warning Pressed"), + new ("SemiColorWarningLight", "Warning Light"), + new ("SemiColorWarningLightPointerover", "Warning Light Pointerover"), + new ("SemiColorWarningLightActive", "Warning Light Active"), + }; + + public static IReadOnlyList> DangerTokens { get; } = new List> + { + new ("SemiColorDanger", "Danger"), + new ("SemiColorDangerPointerover", "Danger Pointerover"), + new ("SemiColorDangerPressed", "Danger Pressed"), + new ("SemiColorDangerLight", "Danger Light"), + new ("SemiColorDangerLightPointerover", "Danger Light Pointerover"), + new ("SemiColorDangerLightActive", "Danger Light Active"), + }; + + public static IReadOnlyList> TextTokens { get; } = new List> + { + new ("SemiColorText0", "Text 0"), + new ("SemiColorText1", "Text 1"), + new ("SemiColorText2", "Text 2"), + new ("SemiColorText3", "Text 3"), + }; + + public static IReadOnlyList> LinkTokens { get; } = new List> + { + new ("SemiColorLink", "Link"), + new ("SemiColorLinkPointerover", "Link Pointerover"), + new ("SemiColorLinkActive", "Link Active"), + new ("SemiColorLinkVisited", "Link Visited"), + }; + + public static IReadOnlyList> BackgroundTokens { get; } = new List> + { + new ("SemiColorBackground0", "Background 0"), + new ("SemiColorBackground1", "Background 1"), + new ("SemiColorBackground2", "Background 2"), + new ("SemiColorBackground3", "Background 3"), + new ("SemiColorBackground4", "Background 4"), + }; + + public static IReadOnlyList> FillTokens { get; } = new List> + { + new ("SemiColorFill0", "Fill 0"), + new ("SemiColorFill1", "Fill 1"), + new ("SemiColorFill2", "Fill 2"), + }; + + public static IReadOnlyList> BorderTokens { get; } = new List> + { + new ("SemiColorBorder", "Border"), + }; + + public static IReadOnlyList> DisabledTokens { get; } = new List> + { + new ("SemiColorDisabledText", "Disabled Text"), + new ("SemiColorDisabledBorder", "Disabled Border"), + new ("SemiColorDisabledBackground", "Disabled Background"), + new ("SemiColorDisabledFill", "Disabled Fill"), + }; + } \ No newline at end of file