<Styles xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        x:CompileBindings="True">
  <Design.PreviewWith>
    <Border Padding="20">
      <StackPanel Spacing="20">
        <TabItem Header="Leaf" />
        <TabItem Header="Arch" IsSelected="True" />
      </StackPanel>
    </Border>
  </Design.PreviewWith>
  <Styles.Resources>
    <x:Double x:Key="TabItemMinHeight">48</x:Double>
    <x:Double x:Key="TabItemVerticalPipeHeight">24</x:Double>
    <x:Double x:Key="TabItemPipeThickness">2</x:Double>
  </Styles.Resources>

  <Style Selector="TabItem">
    <Setter Property="FontSize" Value="{DynamicResource TabItemHeaderFontSize}" />
    <Setter Property="FontWeight" Value="{DynamicResource TabItemHeaderThemeFontWeight}" />
    <Setter Property="Background" Value="{DynamicResource TabItemHeaderBackgroundUnselected}" />
    <Setter Property="Foreground" Value="{DynamicResource TabItemHeaderForegroundUnselected}" />
    <Setter Property="Padding" Value="{DynamicResource TabItemHeaderMargin}" />
    <Setter Property="Margin" Value="0" />
    <Setter Property="MinHeight" Value="{DynamicResource TabItemMinHeight}" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="Template">
      <ControlTemplate>
        <Border Name="PART_LayoutRoot"
                BorderBrush="{TemplateBinding BorderBrush}"
                BorderThickness="{TemplateBinding BorderThickness}"
                CornerRadius="{TemplateBinding CornerRadius}"
                Padding="{TemplateBinding Padding}">
          <Panel>
            <ContentPresenter Name="PART_ContentPresenter"
                              ContentTemplate="{TemplateBinding HeaderTemplate}"
                              Content="{TemplateBinding Header}"
                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                              FontFamily="{TemplateBinding FontFamily}"
                              FontSize="{TemplateBinding FontSize}"
                              FontWeight="{TemplateBinding FontWeight}" />
            <Border Name="PART_SelectedPipe"
                    Background="{DynamicResource TabItemHeaderSelectedPipeFill}" />
          </Panel>
        </Border>
      </ControlTemplate>
    </Setter>
  </Style>

  <!-- Nornal state -->
  <Style Selector="TabItem /template/ Border#PART_LayoutRoot">
    <Setter Property="Background" Value="{Binding $parent[TabItem].Background}" />
  </Style>
  <Style Selector="TabItem /template/ Border#PART_SelectedPipe">
    <Setter Property="IsVisible" Value="False" />
    <Setter Property="CornerRadius" Value="{DynamicResource ControlCornerRadius}" />
  </Style>

  <!-- Selected state -->
  <!--  We don't use selector to PART_LayoutRoot, so developer can override selected item background with TabStripItem.Background  -->
  <Style Selector="TabItem:selected">
    <Setter Property="Background" Value="{DynamicResource TabItemHeaderBackgroundSelected}" />
    <Setter Property="Foreground" Value="{DynamicResource TabItemHeaderForegroundSelected}" />
  </Style>
  <Style Selector="TabItem:selected /template/ Border#PART_SelectedPipe">
    <Setter Property="IsVisible" Value="True" />
  </Style>

  <!-- PointerOver state -->
  <Style Selector="TabItem:pointerover /template/ Border#PART_LayoutRoot">
    <Setter Property="Background" Value="{DynamicResource TabItemHeaderBackgroundUnselectedPointerOver}" />
    <Setter Property="TextElement.Foreground" Value="{DynamicResource TabItemHeaderForegroundUnselectedPointerOver}" />
  </Style>

  <!-- Selected PointerOver state -->
  <Style Selector="TabItem:selected:pointerover /template/ Border#PART_LayoutRoot">
    <Setter Property="Background" Value="{DynamicResource TabItemHeaderBackgroundSelectedPointerOver}" />
    <Setter Property="TextElement.Foreground" Value="{DynamicResource TabItemHeaderForegroundSelectedPointerOver}" />
  </Style>

  <!-- Pressed state -->
  <Style Selector="TabItem:pressed /template/ Border#PART_LayoutRoot">
    <Setter Property="Background" Value="{DynamicResource TabItemHeaderBackgroundUnselectedPressed}" />
    <Setter Property="TextElement.Foreground" Value="{DynamicResource TabItemHeaderForegroundUnselectedPressed}" />
  </Style>

  <!-- Selected Pressed state -->
  <Style Selector="TabItem:selected:pressed /template/ Border#PART_LayoutRoot">
    <Setter Property="Background" Value="{DynamicResource TabItemHeaderBackgroundSelectedPressed}" />
    <Setter Property="TextElement.Foreground" Value="{DynamicResource TabItemHeaderForegroundSelectedPressed}" />
  </Style>

  <!-- Disabled state -->
  <Style Selector="TabItem:disabled /template/ Border#PART_LayoutRoot">
    <Setter Property="Background" Value="{DynamicResource TabItemHeaderBackgroundDisabled}" />
    <Setter Property="TextElement.Foreground" Value="{DynamicResource TabItemHeaderForegroundDisabled}" />
  </Style>

  <!-- TabStripPlacement States Group -->
  <Style Selector="TabItem[TabStripPlacement=Left] /template/ Border#PART_SelectedPipe">
    <Setter Property="Width" Value="{DynamicResource TabItemPipeThickness}" />
    <Setter Property="Height" Value="{DynamicResource TabItemVerticalPipeHeight}" />
    <Setter Property="Margin" Value="0,0,2,0" />
    <Setter Property="HorizontalAlignment" Value="Left" />
    <Setter Property="VerticalAlignment" Value="Center" />
  </Style>
  <Style Selector="TabItem[TabStripPlacement=Left] /template/ ContentPresenter#PART_ContentPresenter">
    <Setter Property="Margin" Value="8,0,0,0" />
  </Style>

  <Style Selector="TabItem[TabStripPlacement=Top] /template/ Border#PART_SelectedPipe, TabItem[TabStripPlacement=Bottom] /template/ Border#PART_SelectedPipe">
    <Setter Property="Height" Value="{DynamicResource TabItemPipeThickness}" />
    <Setter Property="Margin" Value="0,0,0,2" />
    <Setter Property="HorizontalAlignment" Value="Stretch" />
    <Setter Property="VerticalAlignment" Value="Bottom" />
  </Style>

  <Style Selector="TabItem[TabStripPlacement=Right] /template/ Border#PART_SelectedPipe">
    <Setter Property="Width" Value="{DynamicResource TabItemPipeThickness}" />
    <Setter Property="Height" Value="{DynamicResource TabItemVerticalPipeHeight}" />
    <Setter Property="Margin" Value="2,0,0,0" />
    <Setter Property="HorizontalAlignment" Value="Right" />
    <Setter Property="VerticalAlignment" Value="Center" />
  </Style>
  <Style Selector="TabItem[TabStripPlacement=Right] /template/ ContentPresenter#PART_ContentPresenter">
    <Setter Property="Margin" Value="0,0,8,0" />
  </Style>
  <Style Selector="TabItem[TabStripPlacement=Right]">
    <Setter Property="HorizontalContentAlignment" Value="Right" />
  </Style>
</Styles>
