<?xml version="1.0"?>
<!--

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.

-->
<!--

    Spark Components

-->
<componentPackage>

    <component id="Application" class="spark.components.Application" include="false"/>
    
    <component id="BorderContainer" class="spark.components.BorderContainer" include="false">
    	<defaults width="240" height="160"/>
    </component>
    
    <component id="Button" class="spark.components.Button">
    	<defaults width="70" height="22" label="Label"/>
    </component>
    
    <component id="ButtonBar" class="spark.components.ButtonBar" include="true">
    	<defaults width="240" height="22" dataProvider="Button 1, Button 2, Button 3"/>
    </component>
    
    <component id="ButtonBarButton" class="spark.components.ButtonBarButton" include="false"/>
    
    <component id="CheckBox" class="spark.components.CheckBox">
    	<defaults width="76" height="20" label="Checkbox"/>
    </component>
    
    <component id="GridColumnHeaderGroup" class="spark.components.GridColumnHeaderGroup" include="false"/>
    
    <component id="ComboBox" class="spark.components.ComboBox">
    	<defaults width="166" height="23" dataProvider="Item 1,Item 2,Item 3"/>
    </component>
	
	<component id="DataGrid" class="spark.components.DataGrid" include="false">
    	<defaults width="240" height="66" dataProvider="Item 1,Item 2,Item 3"/>
    </component>
    
    <component id="DataGroup" class="spark.components.DataGroup" include="false">
    	<defaults width="240" height="66"/>
    </component>
    
    <component id="DataRenderer" class="spark.components.DataRenderer" include="false"/>
    
    <component id="DropDownList" class="spark.components.DropDownList">
    	<defaults width="166" height="23" dataProvider="Item 1,Item 2,Item 3"/>
    </component>
    
    <component id="Form" class="spark.components.Form" include="false">
    	<defaults width="240" height="60"/>
    </component>
    
    <component id="FormHeading" class="spark.components.FormHeading" include="false">
    	<defaults percentWidth="100%" height="30"/>
    </component>
    
    <component id="FormItem" class="spark.components.FormItem" include="false">
    	<defaults percentWidth="100%" height="23"/>
    </component>
    
    <component id="Grid" class="spark.components.Grid" include="false">
    	<defaults width="240" height="160" />
    </component>
    
    <component id="Group" class="spark.components.Group">
    	<defaults width="240" height="160"/>
    </component>
    
    <component id="HGroup" class="spark.components.HGroup">
    	<defaults width="180" height="23" verticalAlign="middle"/>
    </component>
    
    <component id="HScrollBar" class="spark.components.HScrollBar" include="false"/>
    
    <component id="HSlider" class="spark.components.HSlider" include="false">
    	<defaults width="166" />
    </component>
    
    <component id="Image" class="spark.components.Image">
    	<defaults width="36" height="36" source="assets/images/components/Image.png"/>
    </component>
     
    <component id="Label" class="spark.components.Label">
    	<defaults width="76" height="15" text="Label"/>
    </component>
    
	<component id="List" class="spark.components.List">
    	<defaults width="160" height="160" dataProvider="Item 1,Item 2,Item 3"/>
    </component>
    
    <component id="NavigatorContent" class="spark.components.NavigatorContent" include="false"/>
    
    <component id="NumericStepper" class="spark.components.NumericStepper" include="false"/>
    
    <component id="Panel" class="spark.components.Panel" include="false">
    	<defaults width="240" height="166"/>
    </component>
    
	<component id="PopUpAnchor" class="spark.components.PopUpAnchor" include="false"/>
 	<component id="PopUpPosition" class="spark.components.PopUpPosition" include="false"/>
    
	<component id="RadioButton" class="spark.components.RadioButton">
    	<defaults width="76" height="20" label="Radio Button"/>
    </component>
    
    <component id="RadioButtonGroup" class="spark.components.RadioButtonGroup" include="false"/>
    
    <component id="Rectangle" class="spark.primitives.Rect" include="false">
    	<defaults width="160" height="160" />
    </component>
    
    <component id="RichEditableText" class="spark.components.RichEditableText" include="false">
    	<defaults width="120" height="66" text="Rich Editable Text"/>
    </component>
    
    <component id="RichText" class="spark.components.RichText" include="false">
    	<defaults width="166" height="23" text="Rich Text"/>
    </component>
    
    <component id="Scroller" class="spark.components.Scroller" include="false">
    	<defaults width="166" height="23"/>
    </component>
    
    <component id="SkinnableContainer" class="spark.components.SkinnableContainer" include="false">
    	<defaults width="240" height="166"/>
    </component>
    
    <component id="SkinnableDataContainer" class="spark.components.SkinnableDataContainer" include="false">
    	<defaults width="240" height="166"/>
    </component>
    
    <component id="SkinnablePopUpContainer" class="spark.components.SkinnablePopUpContainer" include="false"/>
    
    <component id="Spacer" class="mx.controls.Spacer" lookupOnly="true">
    	<defaults width="10" height="10"/>
    </component>
    
    <component id="Spinner" class="spark.components.Spinner" include="false">
    	<defaults width="86" height="20"/>
    </component>
    
    <component id="TabBar" class="spark.components.TabBar">
    	<defaults width="240" height="22" dataProvider="Item 1,Item 2,Item 3"/>
    </component>
    
    <component id="TextArea" class="spark.components.TextArea">
    	<defaults width="166" height="66"/>
    </component>
    
    <component id="TextInput" class="spark.components.TextInput">
    	<defaults width="120" height="22"/>
    </component>
    
    <component id="TextSelectionHighlighting" class="spark.components.TextSelectionHighlighting" include="false"/>
    
    <component id="TileGroup" class="spark.components.TileGroup">
    	<defaults width="240" height="166"/>
    </component>
    
    <component id="TitleWindow" class="spark.components.TitleWindow">
    	<defaults width="240" height="166"/>
    </component>
    
    <component id="ToggleButton" class="spark.components.ToggleButton">
    	<defaults width="76" height="20" label="Label"/>
    </component>
    
    <component id="VGroup" class="spark.components.VGroup" include="true">
    	<defaults width="240" height="166"/>
    </component>
    
    <component id="VideoDisplay" class="spark.components.VideoDisplay" include="false">
    	<defaults width="320" height="240"/>
    </component>
    
    <component id="VideoPlayer" class="spark.components.VideoPlayer" include="false">
    	<defaults width="320" height="240"/>
    </component>
    
    <component id="VScrollBar" class="spark.components.VScrollBar" include="false"/>
    
    <component id="VSlider" class="spark.components.VSlider" include="false">
    	<defaults width="10" height="166"/>
    </component>

</componentPackage>
