<?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.

-->

<!--- The wireframe skin class for menu items in the MX Menu component. 

      @see mx.controls.Menu
      @see mx.controls.MenuItem
        
      @langversion 3.0
      @playerversion Flash 10
      @playerversion AIR 1.5
      @productversion Flex 4
-->
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
      minWidth="21" minHeight="21"
      alpha.disabled="0.5">

    <!-- states -->
    <s:states>
        <s:State name="up" />
        <s:State name="over" />
        <s:State name="down" />
        <s:State name="disabled" />
    </s:states>
    
    <!-- layer 1: fill -->
    <s:Rect left="0" right="0" top="1" bottom="1" excludeFrom="up,disabled" >
        <s:fill>
            <s:SolidColor color="#5983f7" />
        </s:fill>
    </s:Rect>
    
    <!-- layer 2: fill highlight -->
    <!--<s:Rect left="0" right="0" top="1" height="9" excludeFrom="up" >
        <s:fill>
            <s:SolidColor color="0xFFFFFF" alpha="0.33" />
        </s:fill>
    </s:Rect>-->
    
</s:Skin>
