<?xml version="1.0" encoding="utf-8"?>
<!--

Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

-->
<st:StepRendererBase xmlns:fx="http://ns.adobe.com/mxml/2009" 
						xmlns:s="library://ns.adobe.com/flex/spark" 
						xmlns:mx="library://ns.adobe.com/flex/mx"
						xmlns:st="ws.tink.spark.controls.*"
						width="22" height="22"   >
	<fx:Declarations>
		<!-- Place non-visual elements (e.g., services, value objects) here -->
	</fx:Declarations>
	
	<st:states>
		<s:State name="normal"/>
		<s:State name="active"/>
		<s:State name="complete"/>
		<s:State name="error"/>
	</st:states>
	
	<!-- layer 1: border -->
	<!--- @private -->
	<s:Rect width="100%" height="100%"
			radiusX="2" radiusY="2">
		<s:fill>
			<s:SolidColor color="{getStyle('borderColor')}"/>
		</s:fill>
	</s:Rect>
	
	<!-- layer 2: border gradient -->
	<!--- @private -->
	<s:Rect width="100%" height="100%"
			radiusX="2" radiusY="2">
		<s:fill>
			<s:LinearGradient rotation="90">
				<s:GradientEntry color="0xffffff" alpha="0"/>
				<s:GradientEntry color="0xffffff" alpha="1"/>
			</s:LinearGradient>
		</s:fill>
	</s:Rect>
	
	<!-- layer 3: fill -->
	<!--- @private -->
	<s:Rect left="1" right="1" top="1" bottom="1"
			radiusX="1" radiusY="1">
		<s:fill>
			<s:SolidColor color="{stateColor}"/>
		</s:fill>
	</s:Rect>
	
	<!-- layer 3: fill gradient -->
	<!--- @private -->
	<s:Rect left="1" right="1" top="1" bottom="1"
			radiusX="1" radiusY="1">
		<s:fill>
			<s:LinearGradient rotation="90">
				<s:GradientEntry color="0xffffff" alpha="0.4" ratio="0.2"/>
				<s:GradientEntry color="0xffffff" alpha="0"/>
			</s:LinearGradient>
		</s:fill>
	</s:Rect>
	
	<st:ActivityIndicator width="12" height="12" horizontalCenter="0" verticalCenter="0"
						  autoAnimate="true" includeIn="active"/>
	
</st:StepRendererBase>
