<Styles xmlns="https://github.com/avaloniaui">
  <Design.PreviewWith>
    <Border Padding="20">
      <StackPanel Spacing="10">
        <ProgressBar VerticalAlignment="Center" IsIndeterminate="True" />
        <ProgressBar VerticalAlignment="Center" Value="5" Maximum="10" />
        <ProgressBar VerticalAlignment="Center" Value="50" />
        <ProgressBar VerticalAlignment="Center" Value="50" Minimum="25" Maximum="75" />
        <ProgressBar HorizontalAlignment="Left" IsIndeterminate="True" Orientation="Vertical" />
      </StackPanel>
    </Border>
  </Design.PreviewWith>
  <Style Selector="ProgressBar">
    <Setter Property="Background" Value="{DynamicResource ThemeAccentBrush4}"/>
    <Setter Property="Foreground" Value="{DynamicResource ThemeAccentBrush}"/>
    <Setter Property="Template">
      <ControlTemplate>
        <Grid>
          <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="{TemplateBinding CornerRadius}">
            <Panel>
              <Border Name="PART_Indicator" Background="{TemplateBinding Foreground}" IsVisible="{Binding !IsIndeterminate, RelativeSource={RelativeSource TemplatedParent}}"/>
              <Border Name="PART_IndeterminateIndicator" Background="{TemplateBinding Foreground}" IsVisible="{Binding IsIndeterminate, RelativeSource={RelativeSource TemplatedParent}}"/>
            </Panel>
          </Border>
          <LayoutTransformControl HorizontalAlignment="Center" VerticalAlignment="Center" IsVisible="{Binding ShowProgressText, RelativeSource={RelativeSource TemplatedParent}}" Name="PART_LayoutTransformControl">
            <TextBlock Foreground="{DynamicResource ThemeForegroundBrush}" Text="{Binding Value, RelativeSource={RelativeSource TemplatedParent}, StringFormat={}{0:0}%}" />
          </LayoutTransformControl>
        </Grid>
      </ControlTemplate>
    </Setter>
  </Style>
  <Style Selector="ProgressBar:horizontal /template/ Border#PART_Indicator">
    <Setter Property="HorizontalAlignment" Value="Left"/>
    <Setter Property="VerticalAlignment" Value="Stretch"/>
  </Style>
  <Style Selector="ProgressBar:vertical /template/ Border#PART_Indicator">
    <Setter Property="HorizontalAlignment" Value="Stretch"/>
    <Setter Property="VerticalAlignment" Value="Bottom"/>
  </Style>
  <Style Selector="ProgressBar:horizontal">
    <Setter Property="MinWidth" Value="200"/>
    <Setter Property="MinHeight" Value="16"/>
  </Style>
  <Style Selector="ProgressBar:vertical">
    <Setter Property="MinWidth" Value="16"/>
    <Setter Property="MinHeight" Value="200"/>
  </Style>
  <Style Selector="ProgressBar:vertical /template/ LayoutTransformControl#PART_LayoutTransformControl">
    <Setter Property="LayoutTransform">
      <Setter.Value>
        <RotateTransform Angle="90"/>
      </Setter.Value>
    </Setter>
  </Style>

  <Style Selector="ProgressBar:horizontal:indeterminate /template/ Border#PART_IndeterminateIndicator">
    <Style.Animations>
      <Animation Duration="0:0:3" IterationCount="Infinite" Easing="LinearEasing">
        <KeyFrame Cue="0%">
          <Setter Property="TranslateTransform.X" Value="{Binding IndeterminateStartingOffset, RelativeSource={RelativeSource TemplatedParent}}" />
        </KeyFrame>
        <KeyFrame Cue="100%">
          <Setter Property="TranslateTransform.X" Value="{Binding IndeterminateEndingOffset, RelativeSource={RelativeSource TemplatedParent}}" />
        </KeyFrame>
      </Animation>
    </Style.Animations>
    <Setter Property="Width" Value="{Binding TemplateProperties.ContainerWidth, RelativeSource={RelativeSource TemplatedParent}}" />
  </Style>
  <Style Selector="ProgressBar:vertical:indeterminate /template/ Border#PART_IndeterminateIndicator">
    <Style.Animations>
      <Animation Duration="0:0:3" IterationCount="Infinite" Easing="LinearEasing">
        <KeyFrame Cue="0%">
          <Setter Property="TranslateTransform.Y" Value="{Binding IndeterminateStartingOffset, RelativeSource={RelativeSource TemplatedParent}}" />
        </KeyFrame>
        <KeyFrame Cue="100%">
          <Setter Property="TranslateTransform.Y" Value="{Binding IndeterminateEndingOffset, RelativeSource={RelativeSource TemplatedParent}}" />
        </KeyFrame>
      </Animation>
    </Style.Animations>
    <Setter Property="Height" Value="{Binding TemplateProperties.ContainerWidth, RelativeSource={RelativeSource TemplatedParent}}" />
  </Style>
</Styles>
