Browse Source

Fluent2: add WinUI 3 token foundation

- Fluent2ColorPalette.xaml: full *FillColor*/*StrokeColor* color ramp from
  WinUI 3 1.5.2 (via Uno), variant roles swapped to Avalonia convention
  (Default=Light, Dark=Dark)
- Fluent2TokenResources.xaml: token brushes, elevation gradient borders
  (ControlElevationBorderBrush et al, absolute 3px/2px endpoints with
  per-variant scaleY(-1) flips), acrylic solid fallbacks, animation constants
- Shape/metric defaults: ControlCornerRadius 4, OverlayCornerRadius 8,
  ButtonPadding 11,5,11,6, TextControlThemePadding 10,5,6,6, focused text
  border 1,1,1,2
- SystemAccentColors: WinUI static shade values when no OS accent is set
- Focus visual: WinUI double ring (FocusStrokeColorOuter/Inner), rounded,
  drawn 3px outside control bounds

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pull/21771/head
Mike James 3 months ago
parent
commit
c8e7782a3d
  1. 20
      src/Avalonia.Themes.Fluent2/Accents/BaseResources.xaml
  2. 174
      src/Avalonia.Themes.Fluent2/Accents/Fluent2ColorPalette.xaml
  3. 309
      src/Avalonia.Themes.Fluent2/Accents/Fluent2TokenResources.xaml
  4. 30
      src/Avalonia.Themes.Fluent2/Accents/SystemAccentColors.cs
  5. 14
      src/Avalonia.Themes.Fluent2/Controls/AdornerLayer.xaml
  6. 2
      src/Avalonia.Themes.Fluent2/Fluent2Theme.xaml

20
src/Avalonia.Themes.Fluent2/Accents/BaseResources.xaml

@ -9,16 +9,16 @@
<SolidColorBrush x:Key="SystemControlTransparentBrush" Color="Transparent" />
<x:Boolean x:Key="UseSystemFocusVisuals">True</x:Boolean>
<Thickness x:Key="TextControlBorderThemeThickness">1</Thickness>
<Thickness x:Key="TextControlBorderThemeThicknessFocused">2</Thickness>
<Thickness x:Key="TextControlThemePadding">10,6,6,5</Thickness>
<Thickness x:Key="TextControlBorderThemeThicknessFocused">1,1,1,2</Thickness>
<Thickness x:Key="TextControlThemePadding">10,5,6,6</Thickness>
<sys:Double x:Key="IconElementThemeHeight">20</sys:Double>
<sys:Double x:Key="IconElementThemeWidth">20</sys:Double>
<sys:Double x:Key="RefreshVisualizerIndicatorSize">24</sys:Double>
<Thickness x:Key="ButtonPadding">8,5,8,6</Thickness>
<Thickness x:Key="ButtonPadding">11,5,11,6</Thickness>
<!-- Override system shape defaults -->
<CornerRadius x:Key="ControlCornerRadius">3</CornerRadius>
<CornerRadius x:Key="OverlayCornerRadius">5</CornerRadius>
<!-- Fluent 2 (WinUI 3) shape defaults -->
<CornerRadius x:Key="ControlCornerRadius">4</CornerRadius>
<CornerRadius x:Key="OverlayCornerRadius">8</CornerRadius>
<!-- ScrollBar animation -->
<TransformOperations x:Key="VerticalSmallScrollThumbScaleTransform">scaleX(0.125) translateX(-2px)</TransformOperations>
@ -99,8 +99,8 @@
Color="{StaticResource SystemChromeMediumLowColor}" />
<SolidColorBrush x:Key="SystemControlDisabledListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlDisabledTransparentBrush" Color="Transparent" />
<SolidColorBrush x:Key="SystemControlFocusVisualPrimaryBrush" Color="{DynamicResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="SystemControlFocusVisualSecondaryBrush" Color="{DynamicResource SystemAltMediumColor}" />
<SolidColorBrush x:Key="SystemControlFocusVisualPrimaryBrush" Color="{DynamicResource FocusStrokeColorOuter}" />
<SolidColorBrush x:Key="SystemControlFocusVisualSecondaryBrush" Color="{DynamicResource FocusStrokeColorInner}" />
<SolidColorBrush x:Key="SystemControlRevealFocusVisualBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlForegroundAccentBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlForegroundAltHighBrush" Color="{StaticResource SystemAltHighColor}" />
@ -260,8 +260,8 @@
Color="{StaticResource SystemChromeMediumLowColor}" />
<SolidColorBrush x:Key="SystemControlDisabledListMediumBrush" Color="{StaticResource SystemListMediumColor}" />
<SolidColorBrush x:Key="SystemControlDisabledTransparentBrush" Color="Transparent" />
<SolidColorBrush x:Key="SystemControlFocusVisualPrimaryBrush" Color="{DynamicResource SystemBaseHighColor}" />
<SolidColorBrush x:Key="SystemControlFocusVisualSecondaryBrush" Color="{DynamicResource SystemAltMediumColor}" />
<SolidColorBrush x:Key="SystemControlFocusVisualPrimaryBrush" Color="{DynamicResource FocusStrokeColorOuter}" />
<SolidColorBrush x:Key="SystemControlFocusVisualSecondaryBrush" Color="{DynamicResource FocusStrokeColorInner}" />
<SolidColorBrush x:Key="SystemControlRevealFocusVisualBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlForegroundAccentBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemControlForegroundAltHighBrush" Color="{StaticResource SystemAltHighColor}" />

174
src/Avalonia.Themes.Fluent2/Accents/Fluent2ColorPalette.xaml

@ -0,0 +1,174 @@
<!--
Fluent 2 (WinUI 3) token colors.
Ported from Uno.UI Common_themeresources_any.xaml
(MUX Reference controls\dev\CommonStyles\Common_themeresources_any.xaml, tag winui3/release/1.5.2).
NOTE: variant roles are swapped relative to the UWP/Uno source:
UWP "Light" dictionary -> Avalonia "Default"; UWP "Default" (dark) dictionary -> Avalonia "Dark".
-->
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
<Color x:Key="TextFillColorPrimary">#E4000000</Color>
<Color x:Key="TextFillColorSecondary">#9E000000</Color>
<Color x:Key="TextFillColorTertiary">#72000000</Color>
<Color x:Key="TextFillColorDisabled">#5C000000</Color>
<Color x:Key="TextFillColorInverse">#FFFFFF</Color>
<Color x:Key="AccentTextFillColorDisabled">#5C000000</Color>
<Color x:Key="TextOnAccentFillColorSelectedText">#FFFFFF</Color>
<Color x:Key="TextOnAccentFillColorPrimary">#FFFFFF</Color>
<Color x:Key="TextOnAccentFillColorSecondary">#B3FFFFFF</Color>
<Color x:Key="TextOnAccentFillColorDisabled">#FFFFFF</Color>
<Color x:Key="ControlFillColorDefault">#B3FFFFFF</Color>
<Color x:Key="ControlFillColorSecondary">#80F9F9F9</Color>
<Color x:Key="ControlFillColorTertiary">#4DF9F9F9</Color>
<Color x:Key="ControlFillColorDisabled">#4DF9F9F9</Color>
<Color x:Key="ControlFillColorTransparent">#00FFFFFF</Color>
<Color x:Key="ControlFillColorInputActive">#FFFFFF</Color>
<Color x:Key="ControlStrongFillColorDefault">#72000000</Color>
<Color x:Key="ControlStrongFillColorDisabled">#51000000</Color>
<Color x:Key="ControlSolidFillColorDefault">#FFFFFF</Color>
<Color x:Key="SubtleFillColorTransparent">#00FFFFFF</Color>
<Color x:Key="SubtleFillColorSecondary">#09000000</Color>
<Color x:Key="SubtleFillColorTertiary">#06000000</Color>
<Color x:Key="SubtleFillColorDisabled">#00FFFFFF</Color>
<Color x:Key="ControlAltFillColorTransparent">#00FFFFFF</Color>
<Color x:Key="ControlAltFillColorSecondary">#06000000</Color>
<Color x:Key="ControlAltFillColorTertiary">#0F000000</Color>
<Color x:Key="ControlAltFillColorQuarternary">#18000000</Color>
<Color x:Key="ControlAltFillColorDisabled">#00FFFFFF</Color>
<Color x:Key="ControlOnImageFillColorDefault">#C9FFFFFF</Color>
<Color x:Key="ControlOnImageFillColorSecondary">#F3F3F3</Color>
<Color x:Key="ControlOnImageFillColorTertiary">#EBEBEB</Color>
<Color x:Key="ControlOnImageFillColorDisabled">#00FFFFFF</Color>
<Color x:Key="AccentFillColorDisabled">#37000000</Color>
<Color x:Key="ControlStrokeColorDefault">#0F000000</Color>
<Color x:Key="ControlStrokeColorSecondary">#29000000</Color>
<Color x:Key="ControlStrokeColorOnAccentDefault">#14FFFFFF</Color>
<Color x:Key="ControlStrokeColorOnAccentSecondary">#66000000</Color>
<Color x:Key="ControlStrokeColorOnAccentTertiary">#37000000</Color>
<Color x:Key="ControlStrokeColorOnAccentDisabled">#0F000000</Color>
<Color x:Key="ControlStrokeColorForStrongFillWhenOnImage">#59FFFFFF</Color>
<Color x:Key="CardStrokeColorDefault">#0F000000</Color>
<Color x:Key="CardStrokeColorDefaultSolid">#EBEBEB</Color>
<Color x:Key="ControlStrongStrokeColorDefault">#72000000</Color>
<Color x:Key="ControlStrongStrokeColorDisabled">#37000000</Color>
<Color x:Key="SurfaceStrokeColorDefault">#66757575</Color>
<Color x:Key="SurfaceStrokeColorFlyout">#0F000000</Color>
<Color x:Key="SurfaceStrokeColorInverse">#15FFFFFF</Color>
<Color x:Key="DividerStrokeColorDefault">#0F000000</Color>
<Color x:Key="FocusStrokeColorOuter">#E4000000</Color>
<Color x:Key="FocusStrokeColorInner">#B3FFFFFF</Color>
<Color x:Key="CardBackgroundFillColorDefault">#B3FFFFFF</Color>
<Color x:Key="CardBackgroundFillColorSecondary">#80F6F6F6</Color>
<Color x:Key="SmokeFillColorDefault">#4D000000</Color>
<Color x:Key="LayerFillColorDefault">#80FFFFFF</Color>
<Color x:Key="LayerFillColorAlt">#FFFFFF</Color>
<Color x:Key="LayerOnAcrylicFillColorDefault">#40FFFFFF</Color>
<Color x:Key="LayerOnAccentAcrylicFillColorDefault">#40FFFFFF</Color>
<Color x:Key="LayerOnMicaBaseAltFillColorDefault">#B3FFFFFF</Color>
<Color x:Key="LayerOnMicaBaseAltFillColorSecondary">#0A000000</Color>
<Color x:Key="LayerOnMicaBaseAltFillColorTertiary">#F9F9F9</Color>
<Color x:Key="LayerOnMicaBaseAltFillColorTransparent">#00000000</Color>
<Color x:Key="SolidBackgroundFillColorBase">#F3F3F3</Color>
<Color x:Key="SolidBackgroundFillColorSecondary">#EEEEEE</Color>
<Color x:Key="SolidBackgroundFillColorTertiary">#F9F9F9</Color>
<Color x:Key="SolidBackgroundFillColorQuarternary">#FFFFFF</Color>
<Color x:Key="SolidBackgroundFillColorTransparent">#00F3F3F3</Color>
<Color x:Key="SolidBackgroundFillColorBaseAlt">#DADADA</Color>
<Color x:Key="SystemFillColorSuccess">#0F7B0F</Color>
<Color x:Key="SystemFillColorCaution">#9D5D00</Color>
<Color x:Key="SystemFillColorCritical">#C42B1C</Color>
<Color x:Key="SystemFillColorNeutral">#72000000</Color>
<Color x:Key="SystemFillColorSolidNeutral">#8A8A8A</Color>
<Color x:Key="SystemFillColorAttentionBackground">#80F6F6F6</Color>
<Color x:Key="SystemFillColorSuccessBackground">#DFF6DD</Color>
<Color x:Key="SystemFillColorCautionBackground">#FFF4CE</Color>
<Color x:Key="SystemFillColorCriticalBackground">#FDE7E9</Color>
<Color x:Key="SystemFillColorNeutralBackground">#06000000</Color>
<Color x:Key="SystemFillColorSolidAttentionBackground">#F7F7F7</Color>
<Color x:Key="SystemFillColorSolidNeutralBackground">#F3F3F3</Color>
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<Color x:Key="TextFillColorPrimary">#FFFFFF</Color>
<Color x:Key="TextFillColorSecondary">#C5FFFFFF</Color>
<Color x:Key="TextFillColorTertiary">#87FFFFFF</Color>
<Color x:Key="TextFillColorDisabled">#5DFFFFFF</Color>
<Color x:Key="TextFillColorInverse">#E4000000</Color>
<Color x:Key="AccentTextFillColorDisabled">#5DFFFFFF</Color>
<Color x:Key="TextOnAccentFillColorSelectedText">#FFFFFF</Color>
<Color x:Key="TextOnAccentFillColorPrimary">#000000</Color>
<Color x:Key="TextOnAccentFillColorSecondary">#80000000</Color>
<Color x:Key="TextOnAccentFillColorDisabled">#87FFFFFF</Color>
<Color x:Key="ControlFillColorDefault">#0FFFFFFF</Color>
<Color x:Key="ControlFillColorSecondary">#15FFFFFF</Color>
<Color x:Key="ControlFillColorTertiary">#08FFFFFF</Color>
<Color x:Key="ControlFillColorDisabled">#0BFFFFFF</Color>
<Color x:Key="ControlFillColorTransparent">#00FFFFFF</Color>
<Color x:Key="ControlFillColorInputActive">#B31E1E1E</Color>
<Color x:Key="ControlStrongFillColorDefault">#8BFFFFFF</Color>
<Color x:Key="ControlStrongFillColorDisabled">#3FFFFFFF</Color>
<Color x:Key="ControlSolidFillColorDefault">#454545</Color>
<Color x:Key="SubtleFillColorTransparent">#00FFFFFF</Color>
<Color x:Key="SubtleFillColorSecondary">#0FFFFFFF</Color>
<Color x:Key="SubtleFillColorTertiary">#0AFFFFFF</Color>
<Color x:Key="SubtleFillColorDisabled">#00FFFFFF</Color>
<Color x:Key="ControlAltFillColorTransparent">#00FFFFFF</Color>
<Color x:Key="ControlAltFillColorSecondary">#19000000</Color>
<Color x:Key="ControlAltFillColorTertiary">#0BFFFFFF</Color>
<Color x:Key="ControlAltFillColorQuarternary">#12FFFFFF</Color>
<Color x:Key="ControlAltFillColorDisabled">#00FFFFFF</Color>
<Color x:Key="ControlOnImageFillColorDefault">#B31C1C1C</Color>
<Color x:Key="ControlOnImageFillColorSecondary">#1A1A1A</Color>
<Color x:Key="ControlOnImageFillColorTertiary">#131313</Color>
<Color x:Key="ControlOnImageFillColorDisabled">#1E1E1E</Color>
<Color x:Key="AccentFillColorDisabled">#28FFFFFF</Color>
<Color x:Key="ControlStrokeColorDefault">#12FFFFFF</Color>
<Color x:Key="ControlStrokeColorSecondary">#18FFFFFF</Color>
<Color x:Key="ControlStrokeColorOnAccentDefault">#14FFFFFF</Color>
<Color x:Key="ControlStrokeColorOnAccentSecondary">#23000000</Color>
<Color x:Key="ControlStrokeColorOnAccentTertiary">#37000000</Color>
<Color x:Key="ControlStrokeColorOnAccentDisabled">#33000000</Color>
<Color x:Key="ControlStrokeColorForStrongFillWhenOnImage">#6B000000</Color>
<Color x:Key="CardStrokeColorDefault">#19000000</Color>
<Color x:Key="CardStrokeColorDefaultSolid">#1C1C1C</Color>
<Color x:Key="ControlStrongStrokeColorDefault">#8BFFFFFF</Color>
<Color x:Key="ControlStrongStrokeColorDisabled">#28FFFFFF</Color>
<Color x:Key="SurfaceStrokeColorDefault">#66757575</Color>
<Color x:Key="SurfaceStrokeColorFlyout">#33000000</Color>
<Color x:Key="SurfaceStrokeColorInverse">#0F000000</Color>
<Color x:Key="DividerStrokeColorDefault">#15FFFFFF</Color>
<Color x:Key="FocusStrokeColorOuter">#FFFFFF</Color>
<Color x:Key="FocusStrokeColorInner">#B3000000</Color>
<Color x:Key="CardBackgroundFillColorDefault">#0DFFFFFF</Color>
<Color x:Key="CardBackgroundFillColorSecondary">#08FFFFFF</Color>
<Color x:Key="SmokeFillColorDefault">#4D000000</Color>
<Color x:Key="LayerFillColorDefault">#4C3A3A3A</Color>
<Color x:Key="LayerFillColorAlt">#0DFFFFFF</Color>
<Color x:Key="LayerOnAcrylicFillColorDefault">#09FFFFFF</Color>
<Color x:Key="LayerOnAccentAcrylicFillColorDefault">#09FFFFFF</Color>
<Color x:Key="LayerOnMicaBaseAltFillColorDefault">#733A3A3A</Color>
<Color x:Key="LayerOnMicaBaseAltFillColorSecondary">#0FFFFFFF</Color>
<Color x:Key="LayerOnMicaBaseAltFillColorTertiary">#2C2C2C</Color>
<Color x:Key="LayerOnMicaBaseAltFillColorTransparent">#00FFFFFF</Color>
<Color x:Key="SolidBackgroundFillColorBase">#202020</Color>
<Color x:Key="SolidBackgroundFillColorSecondary">#1C1C1C</Color>
<Color x:Key="SolidBackgroundFillColorTertiary">#282828</Color>
<Color x:Key="SolidBackgroundFillColorQuarternary">#2C2C2C</Color>
<Color x:Key="SolidBackgroundFillColorTransparent">#00202020</Color>
<Color x:Key="SolidBackgroundFillColorBaseAlt">#0A0A0A</Color>
<Color x:Key="SystemFillColorSuccess">#6CCB5F</Color>
<Color x:Key="SystemFillColorCaution">#FCE100</Color>
<Color x:Key="SystemFillColorCritical">#FF99A4</Color>
<Color x:Key="SystemFillColorNeutral">#8BFFFFFF</Color>
<Color x:Key="SystemFillColorSolidNeutral">#9D9D9D</Color>
<Color x:Key="SystemFillColorAttentionBackground">#08FFFFFF</Color>
<Color x:Key="SystemFillColorSuccessBackground">#393D1B</Color>
<Color x:Key="SystemFillColorCautionBackground">#433519</Color>
<Color x:Key="SystemFillColorCriticalBackground">#442726</Color>
<Color x:Key="SystemFillColorNeutralBackground">#08FFFFFF</Color>
<Color x:Key="SystemFillColorSolidAttentionBackground">#2E2E2E</Color>
<Color x:Key="SystemFillColorSolidNeutralBackground">#2E2E2E</Color>
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>

309
src/Avalonia.Themes.Fluent2/Accents/Fluent2TokenResources.xaml

@ -0,0 +1,309 @@
<!--
Fluent 2 (WinUI 3) token brushes, elevation gradient borders and acrylic fallbacks.
Ported from Uno.UI Common_themeresources_any.xaml, TextBox_themeresources.xaml and
AcrylicBrush_themeresources.xaml (MUX Reference, tag winui3/release/1.5.2).
Variant roles are swapped relative to the UWP/Uno source (UWP "Light" -> Avalonia "Default",
UWP "Default" -> Avalonia "Dark").
Acrylic keys are shipped as their solid FallbackColor equivalents (WinUI's own fallback mode);
translucent acrylic is a possible later enhancement.
Accent-family brushes use DynamicResource so palette/OS accent changes propagate live.
-->
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Default">
<SolidColorBrush x:Key="TextFillColorPrimaryBrush" Color="{StaticResource TextFillColorPrimary}" />
<SolidColorBrush x:Key="TextFillColorSecondaryBrush" Color="{StaticResource TextFillColorSecondary}" />
<SolidColorBrush x:Key="TextFillColorTertiaryBrush" Color="{StaticResource TextFillColorTertiary}" />
<SolidColorBrush x:Key="TextFillColorDisabledBrush" Color="{StaticResource TextFillColorDisabled}" />
<SolidColorBrush x:Key="TextFillColorInverseBrush" Color="{StaticResource TextFillColorInverse}" />
<SolidColorBrush x:Key="AccentTextFillColorPrimaryBrush" Color="{DynamicResource SystemAccentColorDark2}" />
<SolidColorBrush x:Key="AccentTextFillColorSecondaryBrush" Color="{DynamicResource SystemAccentColorDark3}" />
<SolidColorBrush x:Key="AccentTextFillColorTertiaryBrush" Color="{DynamicResource SystemAccentColorDark1}" />
<SolidColorBrush x:Key="AccentTextFillColorDisabledBrush" Color="{StaticResource AccentTextFillColorDisabled}" />
<SolidColorBrush x:Key="TextOnAccentFillColorSelectedTextBrush" Color="{StaticResource TextOnAccentFillColorSelectedText}" />
<SolidColorBrush x:Key="TextOnAccentFillColorPrimaryBrush" Color="{StaticResource TextOnAccentFillColorPrimary}" />
<SolidColorBrush x:Key="TextOnAccentFillColorSecondaryBrush" Color="{StaticResource TextOnAccentFillColorSecondary}" />
<SolidColorBrush x:Key="TextOnAccentFillColorDisabledBrush" Color="{StaticResource TextOnAccentFillColorDisabled}" />
<SolidColorBrush x:Key="ControlFillColorDefaultBrush" Color="{StaticResource ControlFillColorDefault}" />
<SolidColorBrush x:Key="ControlFillColorSecondaryBrush" Color="{StaticResource ControlFillColorSecondary}" />
<SolidColorBrush x:Key="ControlFillColorTertiaryBrush" Color="{StaticResource ControlFillColorTertiary}" />
<SolidColorBrush x:Key="ControlFillColorDisabledBrush" Color="{StaticResource ControlFillColorDisabled}" />
<SolidColorBrush x:Key="ControlFillColorTransparentBrush" Color="{StaticResource ControlFillColorTransparent}" />
<SolidColorBrush x:Key="ControlFillColorInputActiveBrush" Color="{StaticResource ControlFillColorInputActive}" />
<SolidColorBrush x:Key="ControlStrongFillColorDefaultBrush" Color="{StaticResource ControlStrongFillColorDefault}" />
<SolidColorBrush x:Key="ControlStrongFillColorDisabledBrush" Color="{StaticResource ControlStrongFillColorDisabled}" />
<SolidColorBrush x:Key="ControlSolidFillColorDefaultBrush" Color="{StaticResource ControlSolidFillColorDefault}" />
<SolidColorBrush x:Key="SubtleFillColorTransparentBrush" Color="{StaticResource SubtleFillColorTransparent}" />
<SolidColorBrush x:Key="SubtleFillColorSecondaryBrush" Color="{StaticResource SubtleFillColorSecondary}" />
<SolidColorBrush x:Key="SubtleFillColorTertiaryBrush" Color="{StaticResource SubtleFillColorTertiary}" />
<SolidColorBrush x:Key="SubtleFillColorDisabledBrush" Color="{StaticResource SubtleFillColorDisabled}" />
<SolidColorBrush x:Key="ControlAltFillColorTransparentBrush" Color="{StaticResource ControlAltFillColorTransparent}" />
<SolidColorBrush x:Key="ControlAltFillColorSecondaryBrush" Color="{StaticResource ControlAltFillColorSecondary}" />
<SolidColorBrush x:Key="ControlAltFillColorTertiaryBrush" Color="{StaticResource ControlAltFillColorTertiary}" />
<SolidColorBrush x:Key="ControlAltFillColorQuarternaryBrush" Color="{StaticResource ControlAltFillColorQuarternary}" />
<SolidColorBrush x:Key="ControlAltFillColorDisabledBrush" Color="{StaticResource ControlAltFillColorDisabled}" />
<SolidColorBrush x:Key="ControlOnImageFillColorDefaultBrush" Color="{StaticResource ControlOnImageFillColorDefault}" />
<SolidColorBrush x:Key="ControlOnImageFillColorSecondaryBrush" Color="{StaticResource ControlOnImageFillColorSecondary}" />
<SolidColorBrush x:Key="ControlOnImageFillColorTertiaryBrush" Color="{StaticResource ControlOnImageFillColorTertiary}" />
<SolidColorBrush x:Key="ControlOnImageFillColorDisabledBrush" Color="{StaticResource ControlOnImageFillColorDisabled}" />
<SolidColorBrush x:Key="AccentFillColorSelectedTextBackgroundBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="AccentFillColorDefaultBrush" Color="{DynamicResource SystemAccentColorDark1}" />
<SolidColorBrush x:Key="AccentFillColorSecondaryBrush" Color="{DynamicResource SystemAccentColorDark1}" Opacity="0.9" />
<SolidColorBrush x:Key="AccentFillColorTertiaryBrush" Color="{DynamicResource SystemAccentColorDark1}" Opacity="0.8" />
<SolidColorBrush x:Key="AccentFillColorDisabledBrush" Color="{StaticResource AccentFillColorDisabled}" />
<SolidColorBrush x:Key="ControlStrokeColorDefaultBrush" Color="{StaticResource ControlStrokeColorDefault}" />
<SolidColorBrush x:Key="ControlStrokeColorSecondaryBrush" Color="{StaticResource ControlStrokeColorSecondary}" />
<SolidColorBrush x:Key="ControlStrokeColorOnAccentDefaultBrush" Color="{StaticResource ControlStrokeColorOnAccentDefault}" />
<SolidColorBrush x:Key="ControlStrokeColorOnAccentSecondaryBrush" Color="{StaticResource ControlStrokeColorOnAccentSecondary}" />
<SolidColorBrush x:Key="ControlStrokeColorOnAccentTertiaryBrush" Color="{StaticResource ControlStrokeColorOnAccentTertiary}" />
<SolidColorBrush x:Key="ControlStrokeColorOnAccentDisabledBrush" Color="{StaticResource ControlStrokeColorOnAccentDisabled}" />
<SolidColorBrush x:Key="ControlStrokeColorForStrongFillWhenOnImageBrush" Color="{StaticResource ControlStrokeColorForStrongFillWhenOnImage}" />
<SolidColorBrush x:Key="CardStrokeColorDefaultBrush" Color="{StaticResource CardStrokeColorDefault}" />
<SolidColorBrush x:Key="CardStrokeColorDefaultSolidBrush" Color="{StaticResource CardStrokeColorDefaultSolid}" />
<SolidColorBrush x:Key="ControlStrongStrokeColorDefaultBrush" Color="{StaticResource ControlStrongStrokeColorDefault}" />
<SolidColorBrush x:Key="ControlStrongStrokeColorDisabledBrush" Color="{StaticResource ControlStrongStrokeColorDisabled}" />
<SolidColorBrush x:Key="SurfaceStrokeColorDefaultBrush" Color="{StaticResource SurfaceStrokeColorDefault}" />
<SolidColorBrush x:Key="SurfaceStrokeColorFlyoutBrush" Color="{StaticResource SurfaceStrokeColorFlyout}" />
<SolidColorBrush x:Key="SurfaceStrokeColorInverseBrush" Color="{StaticResource SurfaceStrokeColorInverse}" />
<SolidColorBrush x:Key="DividerStrokeColorDefaultBrush" Color="{StaticResource DividerStrokeColorDefault}" />
<SolidColorBrush x:Key="FocusStrokeColorOuterBrush" Color="{StaticResource FocusStrokeColorOuter}" />
<SolidColorBrush x:Key="FocusStrokeColorInnerBrush" Color="{StaticResource FocusStrokeColorInner}" />
<SolidColorBrush x:Key="CardBackgroundFillColorDefaultBrush" Color="{StaticResource CardBackgroundFillColorDefault}" />
<SolidColorBrush x:Key="CardBackgroundFillColorSecondaryBrush" Color="{StaticResource CardBackgroundFillColorSecondary}" />
<SolidColorBrush x:Key="SmokeFillColorDefaultBrush" Color="{StaticResource SmokeFillColorDefault}" />
<SolidColorBrush x:Key="LayerFillColorDefaultBrush" Color="{StaticResource LayerFillColorDefault}" />
<SolidColorBrush x:Key="LayerFillColorAltBrush" Color="{StaticResource LayerFillColorAlt}" />
<SolidColorBrush x:Key="LayerOnAcrylicFillColorDefaultBrush" Color="{StaticResource LayerOnAcrylicFillColorDefault}" />
<SolidColorBrush x:Key="LayerOnAccentAcrylicFillColorDefaultBrush" Color="{StaticResource LayerOnAccentAcrylicFillColorDefault}" />
<SolidColorBrush x:Key="LayerOnMicaBaseAltFillColorDefaultBrush" Color="{StaticResource LayerOnMicaBaseAltFillColorDefault}" />
<SolidColorBrush x:Key="LayerOnMicaBaseAltFillColorSecondaryBrush" Color="{StaticResource LayerOnMicaBaseAltFillColorSecondary}" />
<SolidColorBrush x:Key="LayerOnMicaBaseAltFillColorTertiaryBrush" Color="{StaticResource LayerOnMicaBaseAltFillColorTertiary}" />
<SolidColorBrush x:Key="LayerOnMicaBaseAltFillColorTransparentBrush" Color="{StaticResource LayerOnMicaBaseAltFillColorTransparent}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorBaseBrush" Color="{StaticResource SolidBackgroundFillColorBase}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorSecondaryBrush" Color="{StaticResource SolidBackgroundFillColorSecondary}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorTertiaryBrush" Color="{StaticResource SolidBackgroundFillColorTertiary}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorQuarternaryBrush" Color="{StaticResource SolidBackgroundFillColorQuarternary}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorBaseAltBrush" Color="{StaticResource SolidBackgroundFillColorBaseAlt}" />
<SolidColorBrush x:Key="SystemFillColorAttentionBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="SystemFillColorSuccessBrush" Color="{StaticResource SystemFillColorSuccess}" />
<SolidColorBrush x:Key="SystemFillColorCautionBrush" Color="{StaticResource SystemFillColorCaution}" />
<SolidColorBrush x:Key="SystemFillColorCriticalBrush" Color="{StaticResource SystemFillColorCritical}" />
<SolidColorBrush x:Key="SystemFillColorNeutralBrush" Color="{StaticResource SystemFillColorNeutral}" />
<SolidColorBrush x:Key="SystemFillColorSolidNeutralBrush" Color="{StaticResource SystemFillColorSolidNeutral}" />
<SolidColorBrush x:Key="SystemFillColorAttentionBackgroundBrush" Color="{StaticResource SystemFillColorAttentionBackground}" />
<SolidColorBrush x:Key="SystemFillColorSuccessBackgroundBrush" Color="{StaticResource SystemFillColorSuccessBackground}" />
<SolidColorBrush x:Key="SystemFillColorCautionBackgroundBrush" Color="{StaticResource SystemFillColorCautionBackground}" />
<SolidColorBrush x:Key="SystemFillColorCriticalBackgroundBrush" Color="{StaticResource SystemFillColorCriticalBackground}" />
<SolidColorBrush x:Key="SystemFillColorNeutralBackgroundBrush" Color="{StaticResource SystemFillColorNeutralBackground}" />
<SolidColorBrush x:Key="SystemFillColorSolidAttentionBackgroundBrush" Color="{StaticResource SystemFillColorSolidAttentionBackground}" />
<SolidColorBrush x:Key="SystemFillColorSolidNeutralBackgroundBrush" Color="{StaticResource SystemFillColorSolidNeutralBackground}" />
<!-- Elevation borders. Light: strong edge flipped to the bottom via scaleY(-1). -->
<LinearGradientBrush x:Key="ControlElevationBorderBrush" StartPoint="0,0" EndPoint="0,3" TransformOrigin="50%,50%">
<LinearGradientBrush.Transform>
<ScaleTransform ScaleY="-1" />
</LinearGradientBrush.Transform>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.33" Color="{StaticResource ControlStrokeColorSecondary}" />
<GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorDefault}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="CircleElevationBorderBrush" StartPoint="0%,0%" EndPoint="0%,100%">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.50" Color="{StaticResource ControlStrokeColorDefault}" />
<GradientStop Offset="0.70" Color="{StaticResource ControlStrokeColorSecondary}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="AccentControlElevationBorderBrush" StartPoint="0,0" EndPoint="0,3" TransformOrigin="50%,50%">
<LinearGradientBrush.Transform>
<ScaleTransform ScaleY="-1" />
</LinearGradientBrush.Transform>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.33" Color="{StaticResource ControlStrokeColorOnAccentSecondary}" />
<GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorOnAccentDefault}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Text input borders: hairline with a stronger bottom edge; focused variant paints the
2px bottom edge in accent (two stops at the same offset create the hard edge). -->
<LinearGradientBrush x:Key="TextControlElevationBorderBrush" StartPoint="0,0" EndPoint="0,2" TransformOrigin="50%,50%">
<LinearGradientBrush.Transform>
<ScaleTransform ScaleY="-1" />
</LinearGradientBrush.Transform>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.5" Color="{StaticResource ControlStrongStrokeColorDefault}" />
<GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorDefault}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TextControlElevationBorderFocusedBrush" StartPoint="0,0" EndPoint="0,2" TransformOrigin="50%,50%">
<LinearGradientBrush.Transform>
<ScaleTransform ScaleY="-1" />
</LinearGradientBrush.Transform>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="1.0" Color="{DynamicResource SystemAccentColorDark1}" />
<GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorDefault}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Acrylic surfaces as solid fallback colors. -->
<SolidColorBrush x:Key="AcrylicBackgroundFillColorDefaultBrush" Color="#F9F9F9" />
<SolidColorBrush x:Key="AcrylicInAppFillColorDefaultBrush" Color="#F9F9F9" />
<SolidColorBrush x:Key="AcrylicBackgroundFillColorDefaultInverseBrush" Color="#2C2C2C" />
<SolidColorBrush x:Key="AcrylicInAppFillColorDefaultInverseBrush" Color="#2C2C2C" />
<SolidColorBrush x:Key="AcrylicBackgroundFillColorBaseBrush" Color="#EEEEEE" />
<SolidColorBrush x:Key="AcrylicInAppFillColorBaseBrush" Color="#EEEEEE" />
<SolidColorBrush x:Key="AccentAcrylicBackgroundFillColorDefaultBrush" Color="{DynamicResource SystemAccentColorLight3}" />
<SolidColorBrush x:Key="AccentAcrylicInAppFillColorDefaultBrush" Color="{DynamicResource SystemAccentColorLight3}" />
<SolidColorBrush x:Key="AccentAcrylicBackgroundFillColorBaseBrush" Color="{DynamicResource SystemAccentColorLight3}" />
<SolidColorBrush x:Key="AccentAcrylicInAppFillColorBaseBrush" Color="{DynamicResource SystemAccentColorLight3}" />
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<SolidColorBrush x:Key="TextFillColorPrimaryBrush" Color="{StaticResource TextFillColorPrimary}" />
<SolidColorBrush x:Key="TextFillColorSecondaryBrush" Color="{StaticResource TextFillColorSecondary}" />
<SolidColorBrush x:Key="TextFillColorTertiaryBrush" Color="{StaticResource TextFillColorTertiary}" />
<SolidColorBrush x:Key="TextFillColorDisabledBrush" Color="{StaticResource TextFillColorDisabled}" />
<SolidColorBrush x:Key="TextFillColorInverseBrush" Color="{StaticResource TextFillColorInverse}" />
<SolidColorBrush x:Key="AccentTextFillColorPrimaryBrush" Color="{DynamicResource SystemAccentColorLight3}" />
<SolidColorBrush x:Key="AccentTextFillColorSecondaryBrush" Color="{DynamicResource SystemAccentColorLight3}" />
<SolidColorBrush x:Key="AccentTextFillColorTertiaryBrush" Color="{DynamicResource SystemAccentColorLight2}" />
<SolidColorBrush x:Key="AccentTextFillColorDisabledBrush" Color="{StaticResource AccentTextFillColorDisabled}" />
<SolidColorBrush x:Key="TextOnAccentFillColorSelectedTextBrush" Color="{StaticResource TextOnAccentFillColorSelectedText}" />
<SolidColorBrush x:Key="TextOnAccentFillColorPrimaryBrush" Color="{StaticResource TextOnAccentFillColorPrimary}" />
<SolidColorBrush x:Key="TextOnAccentFillColorSecondaryBrush" Color="{StaticResource TextOnAccentFillColorSecondary}" />
<SolidColorBrush x:Key="TextOnAccentFillColorDisabledBrush" Color="{StaticResource TextOnAccentFillColorDisabled}" />
<SolidColorBrush x:Key="ControlFillColorDefaultBrush" Color="{StaticResource ControlFillColorDefault}" />
<SolidColorBrush x:Key="ControlFillColorSecondaryBrush" Color="{StaticResource ControlFillColorSecondary}" />
<SolidColorBrush x:Key="ControlFillColorTertiaryBrush" Color="{StaticResource ControlFillColorTertiary}" />
<SolidColorBrush x:Key="ControlFillColorDisabledBrush" Color="{StaticResource ControlFillColorDisabled}" />
<SolidColorBrush x:Key="ControlFillColorTransparentBrush" Color="{StaticResource ControlFillColorTransparent}" />
<SolidColorBrush x:Key="ControlFillColorInputActiveBrush" Color="{StaticResource ControlFillColorInputActive}" />
<SolidColorBrush x:Key="ControlStrongFillColorDefaultBrush" Color="{StaticResource ControlStrongFillColorDefault}" />
<SolidColorBrush x:Key="ControlStrongFillColorDisabledBrush" Color="{StaticResource ControlStrongFillColorDisabled}" />
<SolidColorBrush x:Key="ControlSolidFillColorDefaultBrush" Color="{StaticResource ControlSolidFillColorDefault}" />
<SolidColorBrush x:Key="SubtleFillColorTransparentBrush" Color="{StaticResource SubtleFillColorTransparent}" />
<SolidColorBrush x:Key="SubtleFillColorSecondaryBrush" Color="{StaticResource SubtleFillColorSecondary}" />
<SolidColorBrush x:Key="SubtleFillColorTertiaryBrush" Color="{StaticResource SubtleFillColorTertiary}" />
<SolidColorBrush x:Key="SubtleFillColorDisabledBrush" Color="{StaticResource SubtleFillColorDisabled}" />
<SolidColorBrush x:Key="ControlAltFillColorTransparentBrush" Color="{StaticResource ControlAltFillColorTransparent}" />
<SolidColorBrush x:Key="ControlAltFillColorSecondaryBrush" Color="{StaticResource ControlAltFillColorSecondary}" />
<SolidColorBrush x:Key="ControlAltFillColorTertiaryBrush" Color="{StaticResource ControlAltFillColorTertiary}" />
<SolidColorBrush x:Key="ControlAltFillColorQuarternaryBrush" Color="{StaticResource ControlAltFillColorQuarternary}" />
<SolidColorBrush x:Key="ControlAltFillColorDisabledBrush" Color="{StaticResource ControlAltFillColorDisabled}" />
<SolidColorBrush x:Key="ControlOnImageFillColorDefaultBrush" Color="{StaticResource ControlOnImageFillColorDefault}" />
<SolidColorBrush x:Key="ControlOnImageFillColorSecondaryBrush" Color="{StaticResource ControlOnImageFillColorSecondary}" />
<SolidColorBrush x:Key="ControlOnImageFillColorTertiaryBrush" Color="{StaticResource ControlOnImageFillColorTertiary}" />
<SolidColorBrush x:Key="ControlOnImageFillColorDisabledBrush" Color="{StaticResource ControlOnImageFillColorDisabled}" />
<SolidColorBrush x:Key="AccentFillColorSelectedTextBackgroundBrush" Color="{DynamicResource SystemAccentColor}" />
<SolidColorBrush x:Key="AccentFillColorDefaultBrush" Color="{DynamicResource SystemAccentColorLight2}" />
<SolidColorBrush x:Key="AccentFillColorSecondaryBrush" Color="{DynamicResource SystemAccentColorLight2}" Opacity="0.9" />
<SolidColorBrush x:Key="AccentFillColorTertiaryBrush" Color="{DynamicResource SystemAccentColorLight2}" Opacity="0.8" />
<SolidColorBrush x:Key="AccentFillColorDisabledBrush" Color="{StaticResource AccentFillColorDisabled}" />
<SolidColorBrush x:Key="ControlStrokeColorDefaultBrush" Color="{StaticResource ControlStrokeColorDefault}" />
<SolidColorBrush x:Key="ControlStrokeColorSecondaryBrush" Color="{StaticResource ControlStrokeColorSecondary}" />
<SolidColorBrush x:Key="ControlStrokeColorOnAccentDefaultBrush" Color="{StaticResource ControlStrokeColorOnAccentDefault}" />
<SolidColorBrush x:Key="ControlStrokeColorOnAccentSecondaryBrush" Color="{StaticResource ControlStrokeColorOnAccentSecondary}" />
<SolidColorBrush x:Key="ControlStrokeColorOnAccentTertiaryBrush" Color="{StaticResource ControlStrokeColorOnAccentTertiary}" />
<SolidColorBrush x:Key="ControlStrokeColorOnAccentDisabledBrush" Color="{StaticResource ControlStrokeColorOnAccentDisabled}" />
<SolidColorBrush x:Key="ControlStrokeColorForStrongFillWhenOnImageBrush" Color="{StaticResource ControlStrokeColorForStrongFillWhenOnImage}" />
<SolidColorBrush x:Key="CardStrokeColorDefaultBrush" Color="{StaticResource CardStrokeColorDefault}" />
<SolidColorBrush x:Key="CardStrokeColorDefaultSolidBrush" Color="{StaticResource CardStrokeColorDefaultSolid}" />
<SolidColorBrush x:Key="ControlStrongStrokeColorDefaultBrush" Color="{StaticResource ControlStrongStrokeColorDefault}" />
<SolidColorBrush x:Key="ControlStrongStrokeColorDisabledBrush" Color="{StaticResource ControlStrongStrokeColorDisabled}" />
<SolidColorBrush x:Key="SurfaceStrokeColorDefaultBrush" Color="{StaticResource SurfaceStrokeColorDefault}" />
<SolidColorBrush x:Key="SurfaceStrokeColorFlyoutBrush" Color="{StaticResource SurfaceStrokeColorFlyout}" />
<SolidColorBrush x:Key="SurfaceStrokeColorInverseBrush" Color="{StaticResource SurfaceStrokeColorInverse}" />
<SolidColorBrush x:Key="DividerStrokeColorDefaultBrush" Color="{StaticResource DividerStrokeColorDefault}" />
<SolidColorBrush x:Key="FocusStrokeColorOuterBrush" Color="{StaticResource FocusStrokeColorOuter}" />
<SolidColorBrush x:Key="FocusStrokeColorInnerBrush" Color="{StaticResource FocusStrokeColorInner}" />
<SolidColorBrush x:Key="CardBackgroundFillColorDefaultBrush" Color="{StaticResource CardBackgroundFillColorDefault}" />
<SolidColorBrush x:Key="CardBackgroundFillColorSecondaryBrush" Color="{StaticResource CardBackgroundFillColorSecondary}" />
<SolidColorBrush x:Key="SmokeFillColorDefaultBrush" Color="{StaticResource SmokeFillColorDefault}" />
<SolidColorBrush x:Key="LayerFillColorDefaultBrush" Color="{StaticResource LayerFillColorDefault}" />
<SolidColorBrush x:Key="LayerFillColorAltBrush" Color="{StaticResource LayerFillColorAlt}" />
<SolidColorBrush x:Key="LayerOnAcrylicFillColorDefaultBrush" Color="{StaticResource LayerOnAcrylicFillColorDefault}" />
<SolidColorBrush x:Key="LayerOnAccentAcrylicFillColorDefaultBrush" Color="{StaticResource LayerOnAccentAcrylicFillColorDefault}" />
<SolidColorBrush x:Key="LayerOnMicaBaseAltFillColorDefaultBrush" Color="{StaticResource LayerOnMicaBaseAltFillColorDefault}" />
<SolidColorBrush x:Key="LayerOnMicaBaseAltFillColorSecondaryBrush" Color="{StaticResource LayerOnMicaBaseAltFillColorSecondary}" />
<SolidColorBrush x:Key="LayerOnMicaBaseAltFillColorTertiaryBrush" Color="{StaticResource LayerOnMicaBaseAltFillColorTertiary}" />
<SolidColorBrush x:Key="LayerOnMicaBaseAltFillColorTransparentBrush" Color="{StaticResource LayerOnMicaBaseAltFillColorTransparent}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorBaseBrush" Color="{StaticResource SolidBackgroundFillColorBase}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorSecondaryBrush" Color="{StaticResource SolidBackgroundFillColorSecondary}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorTertiaryBrush" Color="{StaticResource SolidBackgroundFillColorTertiary}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorQuarternaryBrush" Color="{StaticResource SolidBackgroundFillColorQuarternary}" />
<SolidColorBrush x:Key="SolidBackgroundFillColorBaseAltBrush" Color="{StaticResource SolidBackgroundFillColorBaseAlt}" />
<SolidColorBrush x:Key="SystemFillColorAttentionBrush" Color="{DynamicResource SystemAccentColorLight2}" />
<SolidColorBrush x:Key="SystemFillColorSuccessBrush" Color="{StaticResource SystemFillColorSuccess}" />
<SolidColorBrush x:Key="SystemFillColorCautionBrush" Color="{StaticResource SystemFillColorCaution}" />
<SolidColorBrush x:Key="SystemFillColorCriticalBrush" Color="{StaticResource SystemFillColorCritical}" />
<SolidColorBrush x:Key="SystemFillColorNeutralBrush" Color="{StaticResource SystemFillColorNeutral}" />
<SolidColorBrush x:Key="SystemFillColorSolidNeutralBrush" Color="{StaticResource SystemFillColorSolidNeutral}" />
<SolidColorBrush x:Key="SystemFillColorAttentionBackgroundBrush" Color="{StaticResource SystemFillColorAttentionBackground}" />
<SolidColorBrush x:Key="SystemFillColorSuccessBackgroundBrush" Color="{StaticResource SystemFillColorSuccessBackground}" />
<SolidColorBrush x:Key="SystemFillColorCautionBackgroundBrush" Color="{StaticResource SystemFillColorCautionBackground}" />
<SolidColorBrush x:Key="SystemFillColorCriticalBackgroundBrush" Color="{StaticResource SystemFillColorCriticalBackground}" />
<SolidColorBrush x:Key="SystemFillColorNeutralBackgroundBrush" Color="{StaticResource SystemFillColorNeutralBackground}" />
<SolidColorBrush x:Key="SystemFillColorSolidAttentionBackgroundBrush" Color="{StaticResource SystemFillColorSolidAttentionBackground}" />
<SolidColorBrush x:Key="SystemFillColorSolidNeutralBackgroundBrush" Color="{StaticResource SystemFillColorSolidNeutralBackground}" />
<!-- Elevation borders. Dark: the standard control border keeps the stronger edge at the top. -->
<LinearGradientBrush x:Key="ControlElevationBorderBrush" StartPoint="0,0" EndPoint="0,3">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.33" Color="{StaticResource ControlStrokeColorSecondary}" />
<GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorDefault}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="CircleElevationBorderBrush" StartPoint="0%,0%" EndPoint="0%,100%">
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.50" Color="{StaticResource ControlStrokeColorDefault}" />
<GradientStop Offset="0.70" Color="{StaticResource ControlStrokeColorSecondary}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="AccentControlElevationBorderBrush" StartPoint="0,0" EndPoint="0,3" TransformOrigin="50%,50%">
<LinearGradientBrush.Transform>
<ScaleTransform ScaleY="-1" />
</LinearGradientBrush.Transform>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.33" Color="{StaticResource ControlStrokeColorOnAccentSecondary}" />
<GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorOnAccentDefault}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TextControlElevationBorderBrush" StartPoint="0,0" EndPoint="0,2" TransformOrigin="50%,50%">
<LinearGradientBrush.Transform>
<ScaleTransform ScaleY="-1" />
</LinearGradientBrush.Transform>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="0.5" Color="{StaticResource ControlStrongStrokeColorDefault}" />
<GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorDefault}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<LinearGradientBrush x:Key="TextControlElevationBorderFocusedBrush" StartPoint="0,0" EndPoint="0,2" TransformOrigin="50%,50%">
<LinearGradientBrush.Transform>
<ScaleTransform ScaleY="-1" />
</LinearGradientBrush.Transform>
<LinearGradientBrush.GradientStops>
<GradientStop Offset="1.0" Color="{DynamicResource SystemAccentColorLight2}" />
<GradientStop Offset="1.0" Color="{StaticResource ControlStrokeColorDefault}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<!-- Acrylic surfaces as solid fallback colors. -->
<SolidColorBrush x:Key="AcrylicBackgroundFillColorDefaultBrush" Color="#2C2C2C" />
<SolidColorBrush x:Key="AcrylicInAppFillColorDefaultBrush" Color="#2C2C2C" />
<SolidColorBrush x:Key="AcrylicBackgroundFillColorDefaultInverseBrush" Color="#F9F9F9" />
<SolidColorBrush x:Key="AcrylicInAppFillColorDefaultInverseBrush" Color="#F9F9F9" />
<SolidColorBrush x:Key="AcrylicBackgroundFillColorBaseBrush" Color="#1C1C1C" />
<SolidColorBrush x:Key="AcrylicInAppFillColorBaseBrush" Color="#1C1C1C" />
<SolidColorBrush x:Key="AccentAcrylicBackgroundFillColorDefaultBrush" Color="{DynamicResource SystemAccentColorDark1}" />
<SolidColorBrush x:Key="AccentAcrylicInAppFillColorDefaultBrush" Color="{DynamicResource SystemAccentColorDark1}" />
<SolidColorBrush x:Key="AccentAcrylicBackgroundFillColorBaseBrush" Color="{DynamicResource SystemAccentColorDark2}" />
<SolidColorBrush x:Key="AccentAcrylicInAppFillColorBaseBrush" Color="{DynamicResource SystemAccentColorDark2}" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
<!-- Canonical WinUI animation constants (variant independent). -->
<x:String x:Key="ControlFastOutSlowInKeySpline">0,0,0,1</x:String>
<x:String x:Key="ControlNormalAnimationDuration">00:00:00.250</x:String>
<x:String x:Key="ControlFastAnimationDuration">00:00:00.167</x:String>
<x:String x:Key="ControlFastAnimationAfterDuration">00:00:00.168</x:String>
<x:String x:Key="ControlFasterAnimationDuration">00:00:00.083</x:String>
</ResourceDictionary>

30
src/Avalonia.Themes.Fluent2/Accents/SystemAccentColors.cs

@ -18,6 +18,15 @@ internal sealed class SystemAccentColors : ResourceProvider
public const string AccentLight3Key = "SystemAccentColorLight3";
private static readonly Color s_defaultSystemAccentColor = Color.FromRgb(0, 120, 215);
// Static shade values from WinUI (matching the Uno/WinUI SystemResources defaults). Used when
// the platform provides no accent color, so the out-of-the-box palette matches WinUI exactly.
// OS-provided accent colors get computed shades instead.
private static readonly Color s_defaultSystemAccentColorDark1 = Color.FromUInt32(0xFF005A9E);
private static readonly Color s_defaultSystemAccentColorDark2 = Color.FromUInt32(0xFF004275);
private static readonly Color s_defaultSystemAccentColorDark3 = Color.FromUInt32(0xFF002642);
private static readonly Color s_defaultSystemAccentColorLight1 = Color.FromUInt32(0xFF429CE3);
private static readonly Color s_defaultSystemAccentColorLight2 = Color.FromUInt32(0xFF76B9ED);
private static readonly Color s_defaultSystemAccentColorLight3 = Color.FromUInt32(0xFFA6D8FF);
private bool _invalidateColors = true;
private Color _systemAccentColor;
private Color _systemAccentColorDark1, _systemAccentColorDark2, _systemAccentColorDark3;
@ -109,10 +118,25 @@ internal sealed class SystemAccentColors : ResourceProvider
_invalidateColors = false;
var platformSettings = GetFromOwner(Owner);
_systemAccentColor = platformSettings?.GetColorValues().AccentColor1 ?? s_defaultSystemAccentColor;
(_systemAccentColorDark1,_systemAccentColorDark2, _systemAccentColorDark3,
_systemAccentColorLight1, _systemAccentColorLight2, _systemAccentColorLight3) = CalculateAccentShades(_systemAccentColor);
if (_systemAccentColor == s_defaultSystemAccentColor)
{
// Platforms without a real accent color report the default; use WinUI's static
// shade values so the out-of-the-box palette matches WinUI exactly.
_systemAccentColorDark1 = s_defaultSystemAccentColorDark1;
_systemAccentColorDark2 = s_defaultSystemAccentColorDark2;
_systemAccentColorDark3 = s_defaultSystemAccentColorDark3;
_systemAccentColorLight1 = s_defaultSystemAccentColorLight1;
_systemAccentColorLight2 = s_defaultSystemAccentColorLight2;
_systemAccentColorLight3 = s_defaultSystemAccentColorLight3;
}
else
{
(_systemAccentColorDark1, _systemAccentColorDark2, _systemAccentColorDark3,
_systemAccentColorLight1, _systemAccentColorLight2, _systemAccentColorLight3) = CalculateAccentShades(_systemAccentColor);
}
}
}

14
src/Avalonia.Themes.Fluent2/Controls/AdornerLayer.xaml

@ -1,18 +1,24 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:ClassModifier="internal">
<Thickness x:Key="SystemControlFocusVisualMargin">0</Thickness>
<!-- WinUI 3 focus visual: 2px outer ring + 1px inner ring drawn outside the control bounds,
with the corner radius following the control's radius (ControlCornerRadius + offset). -->
<Thickness x:Key="SystemControlFocusVisualMargin">-3</Thickness>
<Thickness x:Key="SystemControlFocusVisualPrimaryThickness">2</Thickness>
<Thickness x:Key="SystemControlFocusVisualSecondaryThickness">1</Thickness>
<CornerRadius x:Key="FocusVisualCornerRadius">7</CornerRadius>
<CornerRadius x:Key="FocusVisualInnerCornerRadius">5</CornerRadius>
<ControlTheme x:Key="{x:Type AdornerLayer}" TargetType="AdornerLayer">
<Setter Property="DefaultFocusAdorner">
<FocusAdornerTemplate>
<Border BorderThickness="{DynamicResource SystemControlFocusVisualPrimaryThickness}"
BorderBrush="{DynamicResource SystemControlFocusVisualPrimaryBrush}"
CornerRadius="{DynamicResource FocusVisualCornerRadius}"
Margin="{DynamicResource SystemControlFocusVisualMargin}">
<Border BorderThickness="{DynamicResource SystemControlFocusVisualSecondaryThickness}"
BorderBrush="{DynamicResource SystemControlFocusVisualSecondaryBrush}" />
BorderBrush="{DynamicResource SystemControlFocusVisualSecondaryBrush}"
CornerRadius="{DynamicResource FocusVisualInnerCornerRadius}" />
</Border>
</FocusAdornerTemplate>
</Setter>

2
src/Avalonia.Themes.Fluent2/Fluent2Theme.xaml

@ -9,11 +9,13 @@
<!-- Keep custom palettes higher priority than default BaseColorsPalette and SystemAccentColors
As that's an only place for user to redefine palette in a good way -->
<ResourceInclude Source="/Accents/BaseColorsPalette.xaml" />
<ResourceInclude Source="/Accents/Fluent2ColorPalette.xaml" />
<accents:SystemAccentColors />
<fluent:ColorPaletteResourcesCollection />
<!-- Resources and brushes will be merged into current dictionary for slightly better performance and possible optimizations -->
<MergeResourceInclude Source="/Accents/BaseResources.xaml" />
<MergeResourceInclude Source="/Accents/Fluent2TokenResources.xaml" />
<MergeResourceInclude Source="/Accents/FluentControlResources.xaml" />
<MergeResourceInclude Source="/Strings/InvariantResources.xaml" />
</ResourceDictionary.MergedDictionaries>

Loading…
Cancel
Save