/**
 * Creates a visual theme for a Button
 *
 * @param {string} $ui
 * The name of the UI being created. Can not included spaces or special punctuation
 * (used in CSS class names).
 *
 * @param {number} [$border-radius=0px]
 * The border-radius of the button
 *
 * @param {number} [$border-width=0px]
 * The border-width of the button
 *
 * @param {color} $border-color
 * The border-color of the button
 *
 * @param {color} $border-color-over
 * The border-color of the button when the cursor is over the button
 *
 * @param {color} $border-color-focus
 * The border-color of the button when focused
 *
 * @param {color} $border-color-pressed
 * The border-color of the button when pressed
 *
 * @param {color} $border-color-disabled
 * The border-color of the button when disabled
 *
 * @param {number} $padding
 * The amount of padding inside the border of the button on all sides
 *
 * @param {number} $text-padding
 * The amount of horizontal space to add to the left and right of the button text
 *
 * @param {color} $background-color
 * The background-color of the button
 *
 * @param {color} $background-color-over
 * The background-color of the button when the cursor is over the button
 *
 * @param {color} $background-color-focus
 * The background-color of the button when focused
 *
 * @param {color} $background-color-pressed
 * The background-color of the button when pressed
 *
 * @param {color} $background-color-disabled
 * The background-color of the button when disabled
 *
 * @param {string/list} $background-gradient
 * The background-gradient for the button.  Can be either the name of a predefined gradient
 * or a list of color stops. Used as the `$type` parameter for {@link Global_CSS#background-gradient}.
 *
 * @param {string} $background-gradient-over
 * The background-gradient to use when the cursor is over the button. Can be either the
 * name of a predefined gradient or a list of color stops. Used as the `$type` parameter
 * for {@link Global_CSS#background-gradient}.
 *
 * @param {string} $background-gradient-focus
 * The background-gradient to use when the the button is focused. Can be either the name
 * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
 * {@link Global_CSS#background-gradient}.
 *
 * @param {string} $background-gradient-pressed
 * The background-gradient to use when the the button is pressed. Can be either the name
 * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
 * {@link Global_CSS#background-gradient}.
 *
 * @param {string} $background-gradient-disabled
 * The background-gradient to use when the the button is disabled. Can be either the name
 * of a predefined gradient or a list of color stops. Used as the `$type` parameter for
 * {@link Global_CSS#background-gradient}.
 *
 * @param {color} $color
 * The text color of the button
 *
 * @param {color} $color-over
 * The text color of the button when the cursor is over the button
 *
 * @param {color} $color-focus
 * The text color of the button when the button is focused
 *
 * @param {color} $color-pressed
 * The text color of the button when the button is pressed
 *
 * @param {color} $color-disabled
 * The text color of the button when the button is disabled
 *
 * @param {number} $font-size
 * The font-size of the button
 *
 * @param {number} $font-size-over
 * The font-size of the button when the cursor is over the button
 *
 * @param {number} $font-size-focus
 * The font-size of the button when the button is focused
 *
 * @param {number} $font-size-pressed
 * The font-size of the button when the button is pressed
 *
 * @param {number} $font-size-disabled
 * The font-size of the button when the button is disabled
 *
 * @param {string} $font-weight
 * The font-weight of the button
 *
 * @param {string} $font-weight-over
 * The font-weight of the button when the cursor is over the button
 *
 * @param {string} $font-weight-focus
 * The font-weight of the button when the button is focused
 *
 * @param {string} $font-weight-pressed
 * The font-weight of the button when the button is pressed
 *
 * @param {string} $font-weight-disabled
 * The font-weight of the button when the button is disabled
 *
 * @param {string} $font-family
 * The font-family of the button
 *
 * @param {string} $font-family-over
 * The font-family of the button when the cursor is over the button
 *
 * @param {string} $font-family-focus
 * The font-family of the button when the button is focused
 *
 * @param {string} $font-family-pressed
 * The font-family of the button when the button is pressed
 *
 * @param {string} $font-family-disabled
 * The font-family of the button when the button is disabled
 *
 * @param {number} $icon-size
 * The size of the button icon
 *
 * @param {color} $glyph-color
 * The color of the button's {@link #glyph} icon
 *
 * @param {number} [$glyph-opacity=1]
 * The opacity of the button's {@link #glyph} icon
 *
 * @param {number} $arrow-width
 * The width of the button's {@link #cfg-menu} arrow
 *
 * @param {number} $arrow-height
 * The height of the button's {@link #cfg-menu} arrow
 *
 * @param {number} $split-width
 * The width of a {@link Ext.button.Split Split Button}'s arrow
 *
 * @param {number} $split-height
 * The height of a {@link Ext.button.Split Split Button}'s arrow
 *
 * @param {boolean} [$include-ui-menu-arrows=$button-include-ui-menu-arrows]
 * True to include the UI name in the file name of the {@link #cfg-menu}
 * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
 *
 * @param {boolean} [$include-ui-split-arrows=$button-include-ui-split-arrows]
 * True to include the UI name in the file name of the {@link Ext.button.Split Split Button}'s
 * arrow icon. Set this to false to share the same arrow bewteen multiple UIs.
 *
 * @param {boolean} [$include-split-noline-arrows=false]
 * True to add a "-noline" suffix to the file name of the {@link Ext.button.Split Split Button}'s 
 * arrow icon.  Used for hiding the split line when toolbar buttons are in their default
 * state.
 *
 * @param {boolean} [$include-split-over-arrows=$button-include-split-over-arrows]
 * True to use a separate icon for {@link Ext.button.Split Split Button}s when the cursor
 * is over the button.  The over icon file name will have a "-o" suffix
 *
 * @param {number} [$opacity-disabled=1]
 * The opacity of the button when it is disabled
 *
 * @param {number} [$inner-opacity-disabled=1]
 * The opacity of the button's text and icon elements when when the button is disabled
 * 
 * @member Ext.button.Button
 */
@mixin extjs-button-ui(
    $ui,

    $border-radius: 0px,

    $border-width: 0px,

    $border-color: null,
    $border-color-over: null,
    $border-color-focus: null,
    $border-color-pressed: null,
    $border-color-disabled: null,

    $padding: null,
    $text-padding: null,

    $background-color: null,
    $background-color-over: null,
    $background-color-focus: null,
    $background-color-pressed: null,
    $background-color-disabled: null,

    $background-gradient: null,
    $background-gradient-over: null,
    $background-gradient-focus: null,
    $background-gradient-pressed: null,
    $background-gradient-disabled: null,

    $color: null,
    $color-over: null,
    $color-focus: null,
    $color-pressed: null,
    $color-disabled: null,

    $font-size: null,
    $font-size-over: null,
    $font-size-focus: null,
    $font-size-pressed: null,
    $font-size-disabled: null,

    $font-weight: null,
    $font-weight-over: null,
    $font-weight-focus: null,
    $font-weight-pressed: null,
    $font-weight-disabled: null,

    $font-family: null,
    $font-family-over: null,
    $font-family-focus: null,
    $font-family-pressed: null,
    $font-family-disabled: null,

    $icon-size: null,
    $glyph-color: null,
    $glyph-opacity: 1,
    $arrow-width: null,
    $arrow-height: null,
    $split-width: null,
    $split-height: null,
    $include-ui-menu-arrows: $button-include-ui-menu-arrows,
    $include-ui-split-arrows: $button-include-ui-split-arrows,
    $include-split-noline-arrows: false,
    $include-split-over-arrows: $button-include-split-over-arrows,
    $opacity-disabled: 1,
    $inner-opacity-disabled: 1
) {
    .#{$prefix}btn-#{$ui} {
        border-color: $border-color;
    }

    @include x-frame('btn', $ui, $border-radius, $border-width, $padding, $background-color, $background-gradient, true);

    .#{$prefix}btn-#{$ui} {
        .#{$prefix}btn-inner {
            font-size: $font-size;
            font-weight: $font-weight;
            font-family: $font-family;
            color: $color;
            padding: 0 $text-padding;
        }

        .#{$prefix}btn-arrow {
            @if $include-ui-menu-arrows {
                background-image: theme-background-image('button/#{$ui}-arrow');
            } @else {
                background-image: theme-background-image('button/arrow');
            }
        }

        .#{$prefix}btn-arrow-right {
            padding-right: $arrow-width;
        }

        @if $include-rtl {
            .#{$prefix}rtl.#{$prefix}btn-arrow-right {
                padding-right: 0;
                padding-left: $arrow-width; 
            }
        }

        .#{$prefix}btn-arrow-bottom {
            padding-bottom: $arrow-height;
        }

        .#{$prefix}btn-glyph {
            font-size: $icon-size;
            line-height: $icon-size;
            color: $glyph-color;
            @if $glyph-opacity != 1 {
                // do not use the opacity mixin because we do not want IE's filter version of
                // opacity to be included.  We emulate the opacity setting in IE8m by mixing
                // the icon color into the background color. (see below)
                opacity: $glyph-opacity;
            }
            // In IE8 and below when a glyph contains partially transparent pixels, we 
            // can't apply an opacity filter to the glyph element, because IE8m will render
            // the partially transparent pixels of the glyph as black. To work around this,
            // we emulate the approximate color that the glyph would have if it had opacity
            // applied by mixing the glyph color with the button's background-color.
            $mix-color: $background-color;
            @if $mix-color == transparent {
                $mix-color: #fff;
            }
            .#{$prefix}ie8m & {
                color: mix($glyph-color, $mix-color, $glyph-opacity * 100);
            }
        }
    }

    .#{$prefix}btn-#{$ui}-disabled {
        @if $border-color-disabled != $border-color {
            border-color: $border-color-disabled;
        }
        @if $background-color-disabled != null {
            @include background-gradient($background-color-disabled, $background-gradient-disabled);
        }

        .#{$prefix}btn-inner {
            @if $color-disabled != $color {
                color: $color-disabled;
            }
            @if $font-weight-disabled != $font-weight {
                font-weight: $font-weight-disabled;
            }
            @if $font-size-disabled != $font-size {
                font-size: $font-size-disabled;
            }
            @if $font-family-disabled != $font-family {
                font-family: $font-family-disabled;
            }
        }
    }

    .#{$prefix}btn-#{$ui}-icon,
    .#{$prefix}btn-#{$ui}-noicon {
        .#{$prefix}btn-button {
            // this is required to prevent IE 6/quirks from crushing the icon.
            height: $icon-size;
        }
        .#{$prefix}btn-inner {
            line-height: $icon-size;
        }
    }

    .#{$prefix}btn-#{$ui}-icon,
    .#{$prefix}btn-#{$ui}-noicon,
    .#{$prefix}btn-#{$ui}-icon-text-left {

        .#{$prefix}btn-arrow-right {
            .#{$prefix}btn-inner {
                padding-right: 0;
            }

            @if $include-rtl {
                .#{$prefix}rtl.#{$prefix}btn-inner {
                    padding-right: $text-padding;
                    padding-left: 0;
                }
            }
        }
    }

    //icons
    .#{$prefix}btn-#{$ui}-icon {
        .#{$prefix}btn-inner {
            // even though there is no text we set a width and padding as buttons shrink-wrap around this element
            width: $icon-size;
            padding: 0;
        }

        .#{$prefix}btn-icon-el {
            width: $icon-size;
            height: $icon-size;
        }
    }

    .#{$prefix}btn-#{$ui}-icon-text-left {
        .#{$prefix}btn-button {
            // this is required to prevent IE 6/quirks from crushing the icon.
            height: $icon-size;
        }

        .#{$prefix}btn-inner {
            line-height: $icon-size;
            padding-left: $icon-size + $button-icon-spacing;
        }

        @if $include-rtl {
            .#{$prefix}rtl.#{$prefix}btn-inner {
                padding-left: $text-padding;
                padding-right: $icon-size + $button-icon-spacing;
            }

            .#{$prefix}btn-arrow-right .#{$prefix}rtl.#{$prefix}btn-inner {
                padding-right: $icon-size + $button-icon-spacing;
            }
        }

        .#{$prefix}btn-icon-el {
            width: $icon-size;
            right: auto;

            .#{$prefix}ie6 &,
            .#{$prefix}quirks & {
                height: $icon-size;
            }
        }

        @if $include-rtl {
            .#{$prefix}rtl.#{$prefix}btn-icon-el {
                left: auto;
                right: 0;
            }
        }
    }

    .#{$prefix}btn-#{$ui}-icon-text-right {
        .#{$prefix}btn-button {
            // this is required to prevent IE 6/quirks from crushing the icon.
            height: $icon-size;
        }

        .#{$prefix}btn-inner {
            line-height: $icon-size;
            padding-right: $icon-size + $button-icon-spacing;
        }

        @if $include-rtl {
            .#{$prefix}rtl.#{$prefix}btn-inner {
                padding-right: $text-padding;
                padding-left: $icon-size + $button-icon-spacing;
            }
        }

        .#{$prefix}btn-icon-el {
            width: $icon-size;
            left: auto;

            .#{$prefix}ie6 &,
            .#{$prefix}quirks & {
                height: $icon-size;
            }
        }

        @if $include-rtl {
            .#{$prefix}rtl.#{$prefix}btn-icon-el {
                left: 0;
                right: auto;
            }
        }
    }

    .#{$prefix}btn-#{$ui}-icon-text-top {
        .#{$prefix}btn-inner {
            padding-top: $icon-size + $button-icon-spacing;
        }

        .#{$prefix}btn-icon-el {
            height: $icon-size;
            bottom: auto;

            @if $include-ie {
                // in IE6 and IE old quirks the width of the icon needs to be stretched
                // so that the icon can be centered using background-position
                .#{$prefix}ie6 &,
                .#{$prefix}quirks .#{$prefix}ie & {
                    width: 100%;
                }
            }
        }
    }

    .#{$prefix}btn-#{$ui}-icon-text-bottom {
        .#{$prefix}btn-inner {
            padding-bottom: $icon-size + $button-icon-spacing;
        }

        .#{$prefix}btn-icon-el {
            height: $icon-size;
            top: auto;

            @if $include-ie {
                // in IE6 and IE old quirks the width of the icon needs to be stretched
                // so that the icon can be centered using background-position
                .#{$prefix}ie6 &,
                .#{$prefix}quirks .#{$prefix}ie & {
                    width: 100%;
                }
            }
        }
    }

    .#{$prefix}btn-#{$ui}-over {
        @if $border-color-over != $border-color {
            border-color: $border-color-over;
        }
        @if $background-color-over != null {
            @include background-gradient($background-color-over, $background-gradient-over);
        }

        .#{$prefix}btn-inner {
            @if $color-over != $color {
                color: $color-over;
            }
            @if $font-weight-over != $font-weight {
                font-weight: $font-weight-over;
            }
            @if $font-size-over != $font-size {
                font-size: $font-size-over;
            }
            @if $font-family-over != $font-family {
                font-family: $font-family-over;
            }
        }
    }

    .#{$prefix}btn-#{$ui}-focus {
        @if $border-color-focus != $border-color {
            border-color: $border-color-focus;
        }
        @if $background-color-focus != null {
            @include background-gradient($background-color-focus, $background-gradient-focus);
        }

        .#{$prefix}btn-inner {
            @if $color-focus != $color {
                color: $color-focus;
            }
            @if $font-weight-focus != $font-weight {
                font-weight: $font-weight-focus;
            }
            @if $font-size-focus != $font-size {
                font-size: $font-size-focus;
            }
            @if $font-family-focus != $font-family {
                font-family: $font-family-focus;
            }
        }
    }

    .#{$prefix}btn-#{$ui}-menu-active,
    .#{$prefix}btn-#{$ui}-pressed {
        @if $border-color-pressed != $border-color {
            border-color: $border-color-pressed;
        }
        @if $background-color-pressed != null {
            @include background-gradient($background-color-pressed, $background-gradient-pressed);
        }

        .#{$prefix}btn-inner {
            @if $color-pressed != $color {
                color: $color-pressed;
            }
            @if $font-weight-pressed != $font-weight {
                font-weight: $font-weight-pressed;
            }
            @if $font-size-pressed != $font-size {
                font-size: $font-size-pressed;
            }
            @if $font-family-pressed != $font-family {
                font-family: $font-family-pressed;
            }
        }
    }

    @if not $supports-border-radius or $compile-all {
        .#{$prefix}btn-#{$ui}-over {
            $foo: slicer-background-stretch(btn-#{$ui}-over, "bottom");
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(btn-#{$ui}-over, 'btn/btn-#{$ui}-over-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(btn-#{$ui}-over, 'btn/btn-#{$ui}-over-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $background-color-over;
                @if $background-gradient-over != null {
                    background-image: slicer-frame-background-image(btn-#{$ui}-over, 'btn/btn-#{$ui}-over-fbg');
                }
            }
        }

        .#{$prefix}btn-#{$ui}-focus {
            $foo: slicer-background-stretch(btn-#{$ui}-focus, "bottom");
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(btn-#{$ui}-focus, 'btn/btn-#{$ui}-focus-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(btn-#{$ui}-focus, 'btn/btn-#{$ui}-focus-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $background-color-focus;
                @if $background-gradient-focus != null {
                    background-image: slicer-frame-background-image(btn-#{$ui}-focus, 'btn/btn-#{$ui}-focus-fbg');
                }
            }
        }

        .#{$prefix}btn-#{$ui}-menu-active,
        .#{$prefix}btn-#{$ui}-pressed {
            $foo: slicer-background-stretch(btn-#{$ui}-pressed, "bottom");
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(btn-#{$ui}-pressed, 'btn/btn-#{$ui}-pressed-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(btn-#{$ui}-pressed, 'btn/btn-#{$ui}-pressed-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $background-color-pressed;
                @if $background-gradient-pressed != null {
                    background-image: slicer-frame-background-image(btn-#{$ui}-pressed, 'btn/btn-#{$ui}-pressed-fbg');
                }
            }
        }

        .#{$prefix}btn-#{$ui}-disabled {
            $foo: slicer-background-stretch(btn-#{$ui}-disabled, "bottom");
            .#{$prefix}frame-tl,
            .#{$prefix}frame-bl,
            .#{$prefix}frame-tr,
            .#{$prefix}frame-br,
            .#{$prefix}frame-tc,
            .#{$prefix}frame-bc {
                background-image: slicer-corner-sprite(btn-#{$ui}-disabled, 'btn/btn-#{$ui}-disabled-corners');
            }
            .#{$prefix}frame-ml,
            .#{$prefix}frame-mr {
                background-image: slicer-sides-sprite(btn-#{$ui}-disabled, 'btn/btn-#{$ui}-disabled-sides');
            }
            .#{$prefix}frame-mc {
                background-color: $background-color-disabled;
                @if $background-gradient-disabled != null {
                    background-image: slicer-frame-background-image(btn-#{$ui}-disabled, 'btn/btn-#{$ui}-disabled-fbg');
                }
            }
        }
    }

    @if not $supports-gradients or $compile-all {
        @if $background-gradient-over != null {
            .#{$prefix}nlg {
                .#{$prefix}btn-#{$ui}-over {
                    background-image: slicer-background-image(btn-#{$ui}-over, 'btn/btn-#{$ui}-over-bg');
                }
            }
        }

        @if $background-gradient-focus != null {
            .#{$prefix}nlg {
                .#{$prefix}btn-#{$ui}-focus {
                    background-image: slicer-background-image(btn-#{$ui}-focus, 'btn/btn-#{$ui}-focus-bg');
                }
            }
        }

        @if $background-gradient-pressed != null {
            .#{$prefix}nlg {
                .#{$prefix}btn-#{$ui}-menu-active,
                .#{$prefix}btn-#{$ui}-pressed {
                    background-image: slicer-background-image(btn-#{$ui}-pressed, 'btn/btn-#{$ui}-pressed-bg');
                }
            }
        }

        @if $background-gradient-disabled != null {
            .#{$prefix}nlg {
                .#{$prefix}btn-#{$ui}-disabled {
                    background-image: slicer-background-image(btn-#{$ui}-disabled, 'btn/btn-#{$ui}-disabled-bg');
                }
            }
        }

        @if not $supports-border-radius or $compile-all {
            .#{$prefix}nbr .#{$prefix}btn-#{$ui} {
                background-image: none;
            }
        }
    }

    $arrow-prefix: '';
    @if $include-ui-split-arrows {
        $arrow-prefix: $ui + '-';
    }
    $arrow-suffix: '';
    @if $include-split-noline-arrows {
        $arrow-suffix: '-noline';
    }
    
    .#{$prefix}btn-#{$ui} {
        $arrow-name: null;

        .#{$prefix}btn-split-right {
            background-image: theme-background-image('button/#{$arrow-prefix}s-arrow#{$arrow-suffix}');
            padding-right: $split-width;
        }

        @if $include-rtl {
            .#{$prefix}rtl.#{$prefix}btn-split-right {
                background-image: theme-background-image('button/#{$arrow-prefix}s-arrow#{$arrow-suffix}-rtl');
                padding-right: 0;
                padding-left: $split-width;
            }
        }

        .#{$prefix}btn-split-bottom {
            background-image: theme-background-image('button/#{$arrow-prefix}s-arrow-b#{$arrow-suffix}');
            padding-bottom: $split-height;
        }
    }

    @if $include-split-over-arrows {
        .#{$prefix}btn-#{$ui}-over {
            .#{$prefix}btn-split-right {
                background-image: theme-background-image('button/#{$arrow-prefix}s-arrow-o');
            }
            @if $include-rtl {
                .#{$prefix}rtl.#{$prefix}btn-split-right {
                    background-image: theme-background-image('button/#{$arrow-prefix}s-arrow-o-rtl');
                }
            }
            .#{$prefix}btn-split-bottom {
                background-image: theme-background-image('button/#{$arrow-prefix}s-arrow-bo');
            }
        }
    }

    @if $opacity-disabled != 1 {
        .#{$prefix}btn-#{$ui}-disabled {
            @include opacity($opacity-disabled);
        }
    }

    @if $inner-opacity-disabled != 1 {
        .#{$prefix}btn-#{$ui}-disabled {
            .#{$prefix}btn-inner,
            .#{$prefix}btn-icon-el {
                @include opacity($inner-opacity-disabled);
            }
        }
    }

    @include x-slicer(btn-#{$ui}-over);
    @include x-slicer(btn-#{$ui}-focus);
    @include x-slicer(btn-#{$ui}-pressed);
    @include x-slicer(btn-#{$ui}-disabled);
}

@if $include-button-default-small-ui {
    @include extjs-button-ui(
        $ui: 'default-small',

        $border-radius: $button-small-border-radius,
        $border-width: $button-small-border-width,

        $border-color: $button-default-border-color,
        $border-color-over: $button-default-border-color-over,
        $border-color-focus: $button-default-border-color-focus,
        $border-color-pressed: $button-default-border-color-pressed,
        $border-color-disabled: $button-default-border-color-disabled,

        $padding: $button-small-padding,
        $text-padding: $button-small-text-padding,

        $background-color: $button-default-background-color,
        $background-color-over: $button-default-background-color-over,
        $background-color-focus: $button-default-background-color-focus,
        $background-color-pressed: $button-default-background-color-pressed,
        $background-color-disabled: $button-default-background-color-disabled,

        $background-gradient: $button-default-background-gradient,
        $background-gradient-over: $button-default-background-gradient-over,
        $background-gradient-focus: $button-default-background-gradient-focus,
        $background-gradient-pressed: $button-default-background-gradient-pressed,
        $background-gradient-disabled: $button-default-background-gradient-disabled,

        $color: $button-default-color,
        $color-over: $button-default-color-over,
        $color-focus: $button-default-color-focus,
        $color-pressed: $button-default-color-pressed,
        $color-disabled: $button-default-color-disabled,

        $font-size: $button-small-font-size,
        $font-size-over: $button-small-font-size-over,
        $font-size-focus: $button-small-font-size-focus,
        $font-size-pressed: $button-small-font-size-pressed,
        $font-size-disabled: $button-small-font-size-disabled,

        $font-weight: $button-small-font-weight,
        $font-weight-over: $button-small-font-weight-over,
        $font-weight-focus: $button-small-font-weight-focus,
        $font-weight-pressed: $button-small-font-weight-pressed,
        $font-weight-disabled: $button-small-font-weight-disabled,

        $font-family: $button-small-font-family,
        $font-family-over: $button-small-font-family-over,
        $font-family-focus: $button-small-font-family-focus,
        $font-family-pressed: $button-small-font-family-pressed,
        $font-family-disabled: $button-small-font-family-disabled,

        $icon-size: $button-small-icon-size,
        $glyph-color: $button-default-glyph-color,
        $glyph-opacity: $button-default-glyph-opacity,
        $arrow-width: $button-small-arrow-width,
        $arrow-height: $button-small-arrow-height,
        $split-width: $button-small-split-width,
        $split-height: $button-small-split-height,
        $opacity-disabled: $button-opacity-disabled,
        $inner-opacity-disabled: $button-inner-opacity-disabled
    );
}

@if $include-button-default-medium-ui {
    @include extjs-button-ui(
        $ui: 'default-medium',

        $border-radius: $button-medium-border-radius,
        $border-width: $button-medium-border-width,

        $border-color: $button-default-border-color,
        $border-color-over: $button-default-border-color-over,
        $border-color-focus: $button-default-border-color-focus,
        $border-color-pressed: $button-default-border-color-pressed,
        $border-color-disabled: $button-default-border-color-disabled,

        $padding: $button-medium-padding,
        $text-padding: $button-medium-text-padding,

        $background-color: $button-default-background-color,
        $background-color-over: $button-default-background-color-over,
        $background-color-focus: $button-default-background-color-focus,
        $background-color-pressed: $button-default-background-color-pressed,
        $background-color-disabled: $button-default-background-color-disabled,

        $background-gradient: $button-default-background-gradient,
        $background-gradient-over: $button-default-background-gradient-over,
        $background-gradient-focus: $button-default-background-gradient-focus,
        $background-gradient-pressed: $button-default-background-gradient-pressed,
        $background-gradient-disabled: $button-default-background-gradient-disabled,

        $color: $button-default-color,
        $color-over: $button-default-color-over,
        $color-focus: $button-default-color-focus,
        $color-pressed: $button-default-color-pressed,
        $color-disabled: $button-default-color-disabled,

        $font-size: $button-medium-font-size,
        $font-size-over: $button-medium-font-size-over,
        $font-size-focus: $button-medium-font-size-focus,
        $font-size-pressed: $button-medium-font-size-pressed,
        $font-size-disabled: $button-medium-font-size-disabled,

        $font-weight: $button-medium-font-weight,
        $font-weight-over: $button-medium-font-weight-over,
        $font-weight-focus: $button-medium-font-weight-focus,
        $font-weight-pressed: $button-medium-font-weight-pressed,
        $font-weight-disabled: $button-medium-font-weight-disabled,

        $font-family: $button-medium-font-family,
        $font-family-over: $button-medium-font-family-over,
        $font-family-focus: $button-medium-font-family-focus,
        $font-family-pressed: $button-medium-font-family-pressed,
        $font-family-disabled: $button-medium-font-family-disabled,

        $icon-size: $button-medium-icon-size,
        $glyph-color: $button-default-glyph-color,
        $glyph-opacity: $button-default-glyph-opacity,
        $arrow-width: $button-medium-arrow-width,
        $arrow-height: $button-medium-arrow-height,
        $split-width: $button-medium-split-width,
        $split-height: $button-medium-split-height,
        $opacity-disabled: $button-opacity-disabled,
        $inner-opacity-disabled: $button-inner-opacity-disabled
    );
}

@if $include-button-default-large-ui {
    @include extjs-button-ui(
        $ui: 'default-large',

        $border-radius: $button-large-border-radius,
        $border-width: $button-large-border-width,

        $border-color: $button-default-border-color,
        $border-color-over: $button-default-border-color-over,
        $border-color-focus: $button-default-border-color-focus,
        $border-color-pressed: $button-default-border-color-pressed,
        $border-color-disabled: $button-default-border-color-disabled,

        $padding: $button-large-padding,
        $text-padding: $button-large-text-padding,

        $background-color: $button-default-background-color,
        $background-color-over: $button-default-background-color-over,
        $background-color-focus: $button-default-background-color-focus,
        $background-color-pressed: $button-default-background-color-pressed,
        $background-color-disabled: $button-default-background-color-disabled,

        $background-gradient: $button-default-background-gradient,
        $background-gradient-over: $button-default-background-gradient-over,
        $background-gradient-focus: $button-default-background-gradient-focus,
        $background-gradient-pressed: $button-default-background-gradient-pressed,
        $background-gradient-disabled: $button-default-background-gradient-disabled,

        $color: $button-default-color,
        $color-over: $button-default-color-over,
        $color-focus: $button-default-color-focus,
        $color-pressed: $button-default-color-pressed,
        $color-disabled: $button-default-color-disabled,

        $font-size: $button-large-font-size,
        $font-size-over: $button-large-font-size-over,
        $font-size-focus: $button-large-font-size-focus,
        $font-size-pressed: $button-large-font-size-pressed,
        $font-size-disabled: $button-large-font-size-disabled,

        $font-weight: $button-large-font-weight,
        $font-weight-over: $button-large-font-weight-over,
        $font-weight-focus: $button-large-font-weight-focus,
        $font-weight-pressed: $button-large-font-weight-pressed,
        $font-weight-disabled: $button-large-font-weight-disabled,

        $font-family: $button-large-font-family,
        $font-family-over: $button-large-font-family-over,
        $font-family-focus: $button-large-font-family-focus,
        $font-family-pressed: $button-large-font-family-pressed,
        $font-family-disabled: $button-large-font-family-disabled,

        $icon-size: $button-large-icon-size,
        $glyph-color: $button-default-glyph-color,
        $glyph-opacity: $button-default-glyph-opacity,
        $arrow-width: $button-large-arrow-width,
        $arrow-height: $button-large-arrow-height,
        $split-width: $button-large-split-width,
        $split-height: $button-large-split-height,
        $opacity-disabled: $button-opacity-disabled,
        $inner-opacity-disabled: $button-inner-opacity-disabled
    );
}

@if $include-ext-toolbar-toolbar {
    @if $include-button-default-toolbar-small-ui {
        @include extjs-button-ui(
            $ui: 'default-toolbar-small',

            $border-radius: $button-small-border-radius,
            $border-width: $button-small-border-width,

            $border-color: $button-toolbar-border-color,
            $border-color-over: $button-toolbar-border-color-over,
            $border-color-focus: $button-toolbar-border-color-focus,
            $border-color-pressed: $button-toolbar-border-color-pressed,
            $border-color-disabled: $button-toolbar-border-color-disabled,

            $padding: $button-small-padding,
            $text-padding: $button-small-text-padding,

            $background-color: $button-toolbar-background-color,
            $background-color-over: $button-toolbar-background-color-over,
            $background-color-focus: $button-toolbar-background-color-focus,
            $background-color-pressed: $button-toolbar-background-color-pressed,
            $background-color-disabled: $button-toolbar-background-color-disabled,

            $background-gradient: $button-toolbar-background-gradient,
            $background-gradient-over: $button-toolbar-background-gradient-over,
            $background-gradient-focus: $button-toolbar-background-gradient-focus,
            $background-gradient-pressed: $button-toolbar-background-gradient-pressed,
            $background-gradient-disabled: $button-toolbar-background-gradient-disabled,

            $color: $button-toolbar-color,
            $color-over: $button-toolbar-color-over,
            $color-focus: $button-toolbar-color-focus,
            $color-pressed: $button-toolbar-color-pressed,
            $color-disabled: $button-toolbar-color-disabled,

            $font-size: $button-small-font-size,
            $font-size-over: $button-small-font-size-over,
            $font-size-focus: $button-small-font-size-focus,
            $font-size-pressed: $button-small-font-size-pressed,
            $font-size-disabled: $button-small-font-size-disabled,

            $font-weight: $button-small-font-weight,
            $font-weight-over: $button-small-font-weight-over,
            $font-weight-focus: $button-small-font-weight-focus,
            $font-weight-pressed: $button-small-font-weight-pressed,
            $font-weight-disabled: $button-small-font-weight-disabled,

            $font-family: $button-small-font-family,
            $font-family-over: $button-small-font-family-over,
            $font-family-focus: $button-small-font-family-focus,
            $font-family-pressed: $button-small-font-family-pressed,
            $font-family-disabled: $button-small-font-family-disabled,

            $icon-size: $button-small-icon-size,
            $glyph-color: $button-toolbar-glyph-color,
            $glyph-opacity: $button-toolbar-glyph-opacity,
            $arrow-width: $button-small-arrow-width,
            $arrow-height: $button-small-arrow-height,
            $split-width: $button-small-split-width,
            $split-height: $button-small-split-height,

            $include-split-noline-arrows: $button-toolbar-include-split-noline-arrows,

            $opacity-disabled: $button-toolbar-opacity-disabled,
            $inner-opacity-disabled: $button-toolbar-inner-opacity-disabled
        );
    }

    @if $include-button-default-toolbar-medium-ui {
        @include extjs-button-ui(
            $ui: 'default-toolbar-medium',

            $border-radius: $button-medium-border-radius,
            $border-width: $button-medium-border-width,

            $border-color: $button-toolbar-border-color,
            $border-color-over: $button-toolbar-border-color-over,
            $border-color-focus: $button-toolbar-border-color-focus,
            $border-color-pressed: $button-toolbar-border-color-pressed,
            $border-color-disabled: $button-toolbar-border-color-disabled,

            $padding: $button-medium-padding,
            $text-padding: $button-medium-text-padding,

            $background-color: $button-toolbar-background-color,
            $background-color-over: $button-toolbar-background-color-over,
            $background-color-focus: $button-toolbar-background-color-focus,
            $background-color-pressed: $button-toolbar-background-color-pressed,
            $background-color-disabled: $button-toolbar-background-color-disabled,

            $background-gradient: $button-toolbar-background-gradient,
            $background-gradient-over: $button-toolbar-background-gradient-over,
            $background-gradient-focus: $button-toolbar-background-gradient-focus,
            $background-gradient-pressed: $button-toolbar-background-gradient-pressed,
            $background-gradient-disabled: $button-toolbar-background-gradient-disabled,

            $color: $button-toolbar-color,
            $color-over: $button-toolbar-color-over,
            $color-focus: $button-toolbar-color-focus,
            $color-pressed: $button-toolbar-color-pressed,
            $color-disabled: $button-toolbar-color-disabled,

            $font-size: $button-medium-font-size,
            $font-size-over: $button-medium-font-size-over,
            $font-size-focus: $button-medium-font-size-focus,
            $font-size-pressed: $button-medium-font-size-pressed,
            $font-size-disabled: $button-medium-font-size-disabled,

            $font-weight: $button-medium-font-weight,
            $font-weight-over: $button-medium-font-weight-over,
            $font-weight-focus: $button-medium-font-weight-focus,
            $font-weight-pressed: $button-medium-font-weight-pressed,
            $font-weight-disabled: $button-medium-font-weight-disabled,

            $font-family: $button-medium-font-family,
            $font-family-over: $button-medium-font-family-over,
            $font-family-focus: $button-medium-font-family-focus,
            $font-family-pressed: $button-medium-font-family-pressed,
            $font-family-disabled: $button-medium-font-family-disabled,

            $icon-size: $button-medium-icon-size,
            $glyph-color: $button-toolbar-glyph-color,
            $glyph-opacity: $button-toolbar-glyph-opacity,
            $arrow-width: $button-medium-arrow-width,
            $arrow-height: $button-medium-arrow-height,
            $split-width: $button-medium-split-width,
            $split-height: $button-medium-split-height,

            $include-split-noline-arrows: $button-toolbar-include-split-noline-arrows,

            $opacity-disabled: $button-toolbar-opacity-disabled,
            $inner-opacity-disabled: $button-toolbar-inner-opacity-disabled
        );
    }

    @if $include-button-default-toolbar-large-ui {
        @include extjs-button-ui(
            $ui: 'default-toolbar-large',

            $border-radius: $button-large-border-radius,
            $border-width: $button-large-border-width,

            $border-color: $button-toolbar-border-color,
            $border-color-over: $button-toolbar-border-color-over,
            $border-color-focus: $button-toolbar-border-color-focus,
            $border-color-pressed: $button-toolbar-border-color-pressed,
            $border-color-disabled: $button-toolbar-border-color-disabled,

            $padding: $button-large-padding,
            $text-padding: $button-large-text-padding,

            $background-color: $button-toolbar-background-color,
            $background-color-over: $button-toolbar-background-color-over,
            $background-color-focus: $button-toolbar-background-color-focus,
            $background-color-pressed: $button-toolbar-background-color-pressed,
            $background-color-disabled: $button-toolbar-background-color-disabled,

            $background-gradient: $button-toolbar-background-gradient,
            $background-gradient-over: $button-toolbar-background-gradient-over,
            $background-gradient-focus: $button-toolbar-background-gradient-focus,
            $background-gradient-pressed: $button-toolbar-background-gradient-pressed,
            $background-gradient-disabled: $button-toolbar-background-gradient-disabled,

            $color: $button-toolbar-color,
            $color-over: $button-toolbar-color-over,
            $color-focus: $button-toolbar-color-focus,
            $color-pressed: $button-toolbar-color-pressed,
            $color-disabled: $button-toolbar-color-disabled,

            $font-size: $button-large-font-size,
            $font-size-over: $button-large-font-size-over,
            $font-size-focus: $button-large-font-size-focus,
            $font-size-pressed: $button-large-font-size-pressed,
            $font-size-disabled: $button-large-font-size-disabled,

            $font-weight: $button-large-font-weight,
            $font-weight-over: $button-large-font-weight-over,
            $font-weight-focus: $button-large-font-weight-focus,
            $font-weight-pressed: $button-large-font-weight-pressed,
            $font-weight-disabled: $button-large-font-weight-disabled,

            $font-family: $button-large-font-family,
            $font-family-over: $button-large-font-family-over,
            $font-family-focus: $button-large-font-family-focus,
            $font-family-pressed: $button-large-font-family-pressed,
            $font-family-disabled: $button-large-font-family-disabled,

            $icon-size: $button-large-icon-size,
            $glyph-color: $button-toolbar-glyph-color,
            $glyph-opacity: $button-toolbar-glyph-opacity,
            $arrow-width: $button-large-arrow-width,
            $arrow-height: $button-large-arrow-height,
            $split-width: $button-large-split-width,
            $split-height: $button-large-split-height,

            $include-split-noline-arrows: $button-toolbar-include-split-noline-arrows,

            $opacity-disabled: $button-toolbar-opacity-disabled,
            $inner-opacity-disabled: $button-toolbar-inner-opacity-disabled
        );
    }
}

.#{$prefix}btn-icon-text-left {
    .#{$prefix}btn-icon-el {
        background-position: left center;
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}btn-icon-el {
            background-position: right center;
        }
    }
}

.#{$prefix}btn-icon-text-right {
    .#{$prefix}btn-icon-el {
        background-position: right center;
    }

    @if $include-rtl {
        .#{$prefix}rtl.#{$prefix}btn-icon-el {
            background-position: left center;
        }
    }
}

.#{$prefix}btn-icon-text-top .#{$prefix}btn-icon-el {
    background-position: center top;
}

.#{$prefix}btn-icon-text-bottom .#{$prefix}btn-icon-el {
    background-position: center bottom;
}

.#{$prefix}btn-arrow-right {
    background-position: right center;
}

@if $include-rtl {
    .#{$prefix}rtl.#{$prefix}btn-arrow-right {
        background-position: left center;
    }
}

.#{$prefix}btn-arrow-bottom {
    background-position: center bottom;
}

.#{$prefix}btn-arrow {
    background-repeat: no-repeat;
}

//split buttons
.#{$prefix}btn-split {
    display: block;
    background-repeat: no-repeat;
}

.#{$prefix}btn-split-right {
    background-position: right center;
}

@if $include-rtl {
    .#{$prefix}rtl.#{$prefix}btn-split-right {
        background-position: 0 center;
    }
}

.#{$prefix}btn-split-bottom {
    background-position: center bottom;
}

.#{$prefix}cycle-fixed-width .#{$prefix}btn-inner {
    text-align: inherit;
}