<ResourceDictionary xmlns="https://github.com/avaloniaui"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    x:ClassModifier="internal">
  <Design.PreviewWith>
    <Border Padding="20">
      <StackPanel Spacing="20">
        <CaptionButtons Height="30" />
      </StackPanel>
    </Border>
  </Design.PreviewWith>

  <ControlTheme x:Key="SimpleCaptionButton"
                TargetType="Button">
    <Setter Property="Background" Value="{DynamicResource ThemeControlHighlightBrush}" />
    <!--  Reusing BorderBrush to define pressed background color, as it's not used otherwise  -->
    <Setter Property="BorderBrush" Value="{DynamicResource ThemeControlHighBrush}" />
    <Setter Property="Foreground" Value="{DynamicResource ThemeForegroundColor}" />
    <Setter Property="Width" Value="45" />
    <Setter Property="VerticalAlignment" Value="Stretch" />
    <Setter Property="Template">
      <ControlTemplate>
        <ContentPresenter Name="PART_ContentPresenter"
                          Background="Transparent"
                          Content="{TemplateBinding Content}" />
      </ControlTemplate>
    </Setter>

    <Style Selector="^:pointerover /template/ ContentPresenter">
      <Setter Property="Background" Value="{TemplateBinding Background}" />
    </Style>

    <Style Selector="^:pressed /template/ ContentPresenter">
      <Setter Property="Background" Value="{TemplateBinding BorderBrush}" />
    </Style>
  </ControlTheme>

  <ControlTheme x:Key="{x:Type CaptionButtons}"
                TargetType="CaptionButtons">
    <Setter Property="MaxHeight" Value="40" />
    <Setter Property="Template">
      <ControlTemplate>
        <StackPanel VerticalAlignment="Stretch"
                    Orientation="Horizontal"
                    Spacing="2"
                    TextElement.FontSize="10">
          <Button x:Name="PART_FullScreenButton"
                  IsVisible="False"
                  Theme="{StaticResource SimpleCaptionButton}">
            <Viewbox Width="11"
                     Margin="2">
              <Path Name="FullScreenButtonPath"
                    Data="M2048 2048v-819h-205v469l-1493 -1493h469v-205h-819v819h205v-469l1493 1493h-469v205h819z"
                    Fill="{TemplateBinding Foreground}"
                    Stretch="UniformToFill" />
            </Viewbox>
          </Button>
          <Button x:Name="PART_MinimizeButton"
                  Theme="{StaticResource SimpleCaptionButton}"
                  AutomationProperties.Name="Minimize">
            <Viewbox Width="11"
                     Margin="2">
              <Path Data="M2048 1229v-205h-2048v205h2048z"
                    Fill="{TemplateBinding Foreground}"
                    Stretch="UniformToFill" />
            </Viewbox>
          </Button>
          <Button x:Name="PART_RestoreButton"
                  Theme="{StaticResource SimpleCaptionButton}"
                  AutomationProperties.Name="Maximize">
            <Viewbox Width="11"
                     Margin="2">
              <Viewbox.RenderTransform>
                <RotateTransform Angle="-90" />
              </Viewbox.RenderTransform>
              <Path Name="RestoreButtonPath"
                    Data="M2048 2048v-2048h-2048v2048h2048zM1843 1843h-1638v-1638h1638v1638z"
                    Fill="{TemplateBinding Foreground}"
                    Stretch="UniformToFill" />
            </Viewbox>
          </Button>
          <Button x:Name="PART_CloseButton"
                  Background="#ffe81123"
                  BorderBrush="#FFBB0E1C"
                  Theme="{StaticResource SimpleCaptionButton}"
                  AutomationProperties.Name="Close">
            <Viewbox Width="11"
                     Margin="2">
              <Path Data="M1169 1024l879 -879l-145 -145l-879 879l-879 -879l-145 145l879 879l-879 879l145 145l879 -879l879 879l145 -145z"
                    Fill="{TemplateBinding Foreground}"
                    Stretch="UniformToFill" />
            </Viewbox>
          </Button>
        </StackPanel>
      </ControlTemplate>
    </Setter>
    <Style Selector="^:maximized /template/ Path#RestoreButtonPath">
      <Setter Property="Data" Value="M2048 410h-410v-410h-1638v1638h410v410h1638v-1638zM1434 1434h-1229v-1229h1229v1229zM1843 1843h-1229v-205h1024v-1024h205v1229z" />
    </Style>
    <Style Selector="^:fullscreen /template/ Path#FullScreenButtonPath">
      <Setter Property="IsVisible" Value="True" />
      <Setter Property="Data" Value="M205 1024h819v-819h-205v469l-674 -674l-145 145l674 674h-469v205zM1374 1229h469v-205h-819v819h205v-469l674 674l145 -145z" />
    </Style>
    <Style Selector="^:fullscreen /template/ Button#PART_RestoreButton">
      <Setter Property="IsVisible" Value="False" />
    </Style>
    <Style Selector="^:fullscreen /template/ Button#PART_MinimizeButton">
      <Setter Property="IsVisible" Value="False" />
    </Style>
    <Style Selector="^ /template/ Button#PART_RestoreButton:disabled">
      <Setter Property="Opacity" Value="0.2"/>
    </Style>
  </ControlTheme>
</ResourceDictionary>