$enable-inverted-alt-button: dynamic(false);
$button-background-color: dynamic($neutral-light-color);
$button-hovered-background-color: dynamic(button-hovered-background-color($button-background-color));
$button-pressed-background-color: dynamic(button-pressed-background-color($button-background-color));
$button-focused-background-color: dynamic(button-focused-background-color($button-background-color));
$button-disabled-background-color: dynamic(button-disabled-background-color($button-background-color));
$button-box-shadow: dynamic(null);
$button-hovered-box-shadow: dynamic(null);
$button-pressed-box-shadow: dynamic(null);
$button-focused-box-shadow: dynamic(null);
$button-disabled-box-shadow: dynamic(null);
$button-box-shadow-transition: dynamic(null);
$button-background-gradient: dynamic(button-background-gradient($button-background-color));
$button-hovered-background-gradient: dynamic(button-hovered-background-gradient($button-hovered-background-color));
$button-pressed-background-gradient: dynamic(button-pressed-background-gradient($button-pressed-background-color));
$button-focused-background-gradient: dynamic(button-focused-background-gradient($button-focused-background-color));
$button-disabled-background-gradient: dynamic(button-disabled-background-gradient($button-disabled-background-color));
$button-color: dynamic(button-color($button-background-color));
$button-hovered-color: dynamic(button-hovered-color($button-hovered-background-color, $button-color));
$button-pressed-color: dynamic(button-pressed-color($button-pressed-background-color, $button-color));
$button-focused-color: dynamic(button-focused-color($button-focused-background-color, $button-color));
$button-disabled-color: dynamic(button-disabled-color($button-disabled-background-color));
$button-border-color: dynamic(button-border-color($button-background-color));
$button-hovered-border-color: dynamic(button-hovered-border-color($button-hovered-background-color));
$button-pressed-border-color: dynamic(button-pressed-border-color($button-pressed-background-color));
$button-focused-border-color: dynamic(button-focused-border-color($button-focused-background-color));
$button-disabled-border-color: dynamic(button-disabled-border-color($button-disabled-background-color));
$button-focused-outline-color: dynamic(button-focused-outline-color($button-background-color, $button-focused-color));
$button-focused-outline-style: dynamic(solid);
$button-focused-outline-width: dynamic(1px);
$button-focused-outline-offset: dynamic(-2px);
$button-border-width: dynamic(1px);
$button-border-style: dynamic(solid);
$button-border-radius: dynamic(3px);
$button-border-radius-big: dynamic(3px);
$button-font-weight: dynamic($font-weight-bold);
$button-font-size: dynamic($font-size);
$button-font-size-big: dynamic($font-size-big);
$button-line-height: dynamic(16px);
$button-line-height-big: dynamic(20px);
$button-font-family: dynamic($font-family);
$button-text-transform: dynamic(null);
$button-text-transform-big: dynamic($button-text-transform);
$button-padding: dynamic(3px 8px);
$button-padding-big: dynamic(5px 10px);
$button-icon-only-padding: dynamic(nth($button-padding, 1));
$button-icon-only-padding-big: dynamic(nth($button-padding-big, 1));
$button-icon-color: dynamic($button-color);
$button-hovered-icon-color: dynamic($button-hovered-color);
$button-pressed-icon-color: dynamic($button-pressed-color);
$button-focused-icon-color: dynamic($button-focused-color);
$button-disabled-icon-color: dynamic($button-disabled-color);
$button-icon-size: dynamic($button-line-height);
$button-icon-size-big: dynamic($button-line-height-big);
$button-icon-font-size: dynamic(null);
$button-icon-font-size-big: dynamic(null);
$button-icon-horizontal-spacing: dynamic(5px);
$button-icon-horizontal-spacing-big: dynamic(8px);
$button-icon-vertical-spacing: dynamic(2px);
$button-icon-vertical-spacing-big: dynamic(3px);
$button-disabled-opacity: dynamic(.5);
$button-arrow-icon: dynamic($fa-var-caret-down);
$button-arrow-icon-color: dynamic($button-color);
$button-hovered-arrow-icon-color: dynamic($button-hovered-icon-color);
$button-pressed-arrow-icon-color: dynamic($button-pressed-icon-color);
$button-focused-arrow-icon-color: dynamic($button-focused-icon-color);
$button-disabled-arrow-icon-color: dynamic($button-disabled-icon-color);
$button-arrow-icon-size: dynamic($button-line-height);
$button-arrow-icon-size-big: dynamic($button-line-height-big);
$button-arrow-icon-font-size: dynamic(null);
$button-arrow-icon-font-size-big: dynamic(null);
$button-arrow-horizontal-spacing: dynamic(5px);
$button-arrow-horizontal-spacing-big: dynamic(8px);
$button-arrow-vertical-spacing: dynamic(null);
$button-arrow-vertical-spacing-big: dynamic(null);
$button-badge-background-color: dynamic(darken($alert-color, 10%));
$button-badge-background-gradient: dynamic($base-background-gradient);
$button-badge-color: dynamic(color-by-background($button-badge-background-color));
$button-badge-border-color: dynamic(darken($button-badge-background-color, 10%));
$button-badge-border-radius: dynamic(3px);
$button-badge-min-width: dynamic(26px);
$button-badge-max-width: dynamic(95%);
$button-badge-font-weight: dynamic(null);
$button-badge-font-size: dynamic($font-size);
$button-badge-font-size-big: dynamic($font-size-big);
$button-badge-font-family: dynamic($button-font-family);
$button-badge-line-height: dynamic($button-line-height);
$button-badge-line-height-big: dynamic($button-line-height-big);
$button-badge-top: dynamic(-3px);
$button-badge-right: dynamic(0);
$button-badge-bottom: dynamic(null);
$button-badge-left: dynamic(null);
$button-badge-padding: dynamic(1px 4px);
$button-badge-padding-big: dynamic($button-badge-padding);
$button-action-ui: dynamic((
background-color: $base-highlight-color
));
$button-alt-ui: dynamic((
color: $panel-tool-color,
background-color: transparent,
border-width: 0,
pressed-background-color: transparent
));
$button-confirm-ui: dynamic((
background-color: desaturate(darken($confirm-color, 10%), 5%)
));
$button-decline-ui: dynamic((
background-color: desaturate(darken($alert-color, 10%), 5%)
));
$button-round-ui: dynamic((
border-radius: 10000px,
border-radius-big: 20000px
));
$button-square-ui: dynamic((
border-radius: 0,
border-radius-big: 0
));
$button-flat-ui: dynamic((
border-width: 0,
background-color: transparent
));
$button-plain-ui: dynamic((
border-width: 0,
background-color: transparent
));
$button-segmented-ui: dynamic(null);
$button-raised-ui: dynamic((
box-shadow: (2px 2px 5px 0 rgba(0, 0, 0, 0.12), 2px 2px 5px 0 rgba(0, 0, 0, 0.08))
));
@mixin button-ui(
$ui: null,
$xtype: button,
$background-color: null,
$hovered-background-color: null,
$pressed-background-color: null,
$focused-background-color: null,
$disabled-background-color: null,
$box-shadow: null,
$hovered-box-shadow: null,
$pressed-box-shadow: null,
$focused-box-shadow: null,
$disabled-box-shadow: null,
$box-shadow-transition: null,
$background-gradient: null,
$hovered-background-gradient: null,
$pressed-background-gradient: null,
$focused-background-gradient: null,
$disabled-background-gradient: null,
$color: null,
$hovered-color: null,
$pressed-color: null,
$focused-color: null,
$disabled-color: null,
$border-color: null,
$hovered-border-color: null,
$pressed-border-color: null,
$focused-border-color: null,
$disabled-border-color: null,
$focused-outline-color: null,
$focused-outline-style: null,
$focused-outline-width: null,
$focused-outline-offset: null,
$border-width: null,
$border-style: null,
$border-radius: null,
$border-radius-big: null,
$font-weight: null,
$font-size: null,
$font-size-big: null,
$line-height: null,
$line-height-big: null,
$font-family: null,
$text-transform: null,
$text-transform-big: null,
$padding: null,
$padding-big: null,
$icon-only-padding: null,
$icon-only-padding-big: null,
$icon-color: null,
$hovered-icon-color: null,
$pressed-icon-color: null,
$focused-icon-color: null,
$disabled-icon-color: null,
$icon-size: null,
$icon-size-big: null,
$icon-font-size: null,
$icon-font-size-big: null,
$icon-horizontal-spacing: null,
$icon-horizontal-spacing-big: null,
$icon-vertical-spacing: null,
$icon-vertical-spacing-big: null,
$disabled-opacity: null,
$arrow-icon: null,
$arrow-icon-color: null,
$hovered-arrow-icon-color: null,
$pressed-arrow-icon-color: null,
$focused-arrow-icon-color: null,
$disabled-arrow-icon-color: null,
$arrow-icon-size: null,
$arrow-icon-size-big: null,
$arrow-icon-font-size: null,
$arrow-icon-font-size-big: null,
$arrow-horizontal-spacing: null,
$arrow-horizontal-spacing-big: null,
$arrow-vertical-spacing: null,
$arrow-vertical-spacing-big: null,
$badge-background-color: null,
$badge-background-gradient: null,
$badge-color: null,
$badge-border-color: null,
$badge-border-radius: null,
$badge-min-width: null,
$badge-max-width: null,
$badge-font-weight: null,
$badge-font-size: null,
$badge-font-size-big: null,
$badge-font-family: null,
$badge-line-height: null,
$badge-line-height-big: null,
$badge-top: null,
$badge-right: null,
$badge-bottom: null,
$badge-left: null,
$badge-padding: null,
$badge-padding-big: null,
$derive-colors: true,
$derive-border-colors: true,
$derive-outline-colors: true,
$derive-background-colors: true,
$derive-background-gradients: true,
$derive-icon-colors: true,
$derive-arrow-colors: true
) {
$ui-suffix: ui-suffix($ui);
@if $background-color != null {
@if $derive-background-colors and ($hovered-background-color == null) {
$hovered-background-color: button-hovered-background-color($background-color);
}
@if $derive-background-colors and ($pressed-background-color == null) {
$pressed-background-color: button-pressed-background-color($background-color);
}
@if $derive-background-colors and ($focused-background-color == null) {
$focused-background-color: button-focused-background-color($background-color);
}
@if $derive-background-colors and ($disabled-background-color == null) {
$disabled-background-color: button-disabled-background-color($background-color);
}
@if $derive-border-colors and ($border-color == null) {
$border-color: button-border-color($background-color);
}
@if $derive-colors and ($color == null) {
$color: button-color($background-color);
}
@if $derive-background-gradients and ($background-gradient == null) {
$background-gradient: button-background-gradient($background-color);
}
}
@if $hovered-background-color != null {
@if $derive-border-colors and ($hovered-border-color == null) {
$hovered-border-color: button-hovered-border-color($hovered-background-color);
}
@if $derive-colors and ($hovered-color == null) {
$hovered-color: button-hovered-color($hovered-background-color, $color);
}
@if $derive-background-gradients and ($hovered-background-gradient == null) {
$hovered-background-gradient: button-hovered-background-gradient($hovered-background-color);
}
}
@if $pressed-background-color != null {
@if $derive-border-colors and ($pressed-border-color == null) {
$pressed-border-color: button-pressed-border-color($pressed-background-color);
}
@if $derive-colors and ($pressed-color == null) {
$pressed-color: button-pressed-color($pressed-background-color, $color);
}
@if $derive-background-gradients and ($pressed-background-gradient == null) {
$pressed-background-gradient: button-pressed-background-gradient($pressed-background-color);
}
}
@if $focused-background-color != null {
@if $derive-border-colors and ($focused-border-color == null) {
$focused-border-color: button-focused-border-color($focused-background-color);
}
@if $derive-colors and ($focused-color == null) {
$focused-color: button-focused-color($focused-background-color, $color);
}
@if $derive-background-gradients and ($focused-background-gradient == null) {
$focused-background-gradient: button-focused-background-gradient($focused-background-color);
}
}
@if $disabled-background-color != null {
@if $derive-border-colors and ($disabled-border-color == null) {
$disabled-border-color: button-disabled-border-color($disabled-background-color);
}
@if $derive-colors and ($disabled-color == null) {
$disabled-color: button-disabled-color($disabled-background-color, $color);
}
@if $derive-background-gradients and ($disabled-background-gradient == null) {
$disabled-background-gradient: button-disabled-background-gradient($disabled-background-color);
}
}
@if $derive-outline-colors and ($focused-outline-color == null) {
$focused-outline-color: button-focused-outline-color($focused-background-color or $background-color, $focused-color or $color);
}
@if $derive-icon-colors {
@if $icon-color == null {
$icon-color: $color;
}
@if $hovered-icon-color == null {
$hovered-icon-color: $hovered-color;
}
@if $pressed-icon-color == null {
$pressed-icon-color: $pressed-color;
}
@if $focused-icon-color == null {
$focused-icon-color: $focused-color;
}
@if $disabled-icon-color == null {
$disabled-icon-color: $disabled-color;
}
}
@if $derive-arrow-colors {
@if $arrow-icon-color == null {
$arrow-icon-color: $color;
}
@if $hovered-arrow-icon-color == null {
$hovered-arrow-icon-color: $hovered-color;
}
@if $pressed-arrow-icon-color == null {
$pressed-arrow-icon-color: $pressed-color;
}
@if $focused-arrow-icon-color == null {
$focused-arrow-icon-color: $focused-color;
}
@if $disabled-arrow-icon-color == null {
$disabled-arrow-icon-color: $disabled-color;
}
}
.#{$prefix}#{$xtype}#{$ui-suffix} {
color: $color;
box-shadow: $box-shadow;
@include font($font-weight, $font-size, $line-height, $font-family);
border-radius: $border-radius;
@if $enable-big {
.#{$prefix}big & {
font-size: $font-size-big;
line-height: $line-height-big;
border-radius: $border-radius-big;
}
}
.#{$prefix}inner-el {
padding: $icon-only-padding;
@include border($border-width, $border-style, $border-color);
@include background-gradient($background-color, $background-gradient);
border-radius: $border-radius;
@if $enable-big {
.#{$prefix}big & {
padding: $icon-only-padding-big;
border-radius: $border-radius-big;
}
}
}
&.#{$prefix}has-text .#{$prefix}inner-el {
padding: $padding;
@if $enable-big {
.#{$prefix}big & {
padding: $padding-big;
}
}
}
.#{$prefix}icon-el {
@include icon(
$color: $color,
$size: $icon-size,
$size-big: $icon-size-big,
$font-size: $icon-font-size,
$font-size-big: $icon-font-size-big,
);
}
&.#{$prefix}has-text.#{$prefix}icon-align-left .#{$prefix}icon-el {
margin-right: $icon-horizontal-spacing;
@if $enable-big {
.#{$prefix}big & {
margin-right: $icon-horizontal-spacing-big;
}
}
}
&.#{$prefix}has-text.#{$prefix}icon-align-right .#{$prefix}icon-el {
margin-left: $icon-horizontal-spacing;
@if $enable-big {
.#{$prefix}big & {
margin-left: $icon-horizontal-spacing-big;
}
}
}
&.#{$prefix}has-text.#{$prefix}icon-align-top .#{$prefix}icon-el {
margin-bottom: $icon-vertical-spacing;
@if $enable-big {
.#{$prefix}big & {
margin-bottom: $icon-vertical-spacing-big;
}
}
}
&.#{$prefix}has-text.#{$prefix}icon-align-bottom .#{$prefix}icon-el {
margin-top: $icon-vertical-spacing;
@if $enable-big {
.#{$prefix}big & {
margin-top: $icon-vertical-spacing-big;
}
}
}
.#{$prefix}arrow-el {
@include icon(
$icon: $arrow-icon,
$color: $arrow-icon-color,
$size: $arrow-icon-size,
$size-big: $arrow-icon-size-big,
$font-size: $arrow-icon-font-size,
$font-size-big: $arrow-icon-font-size-big
);
}
&.#{$prefix}arrow-align-right .#{$prefix}arrow-el {
margin-left: $arrow-horizontal-spacing;
@if $enable-big {
.#{$prefix}big & {
margin-left: $arrow-horizontal-spacing-big;
}
}
}
&.#{$prefix}arrow-align-bottom .#{$prefix}arrow-el {
margin-top: $arrow-vertical-spacing;
@if $enable-big {
.#{$prefix}big & {
margin-top: $arrow-vertical-spacing-big;
}
}
}
.#{$prefix}text-el {
min-height: $line-height;
text-transform: $text-transform;
@if $enable-big {
.#{$prefix}big & {
min-height: $line-height-big;
text-transform: $text-transform-big;
}
}
}
.#{$prefix}badge-el {
color: $badge-color;
border-color: $badge-border-color;
border-radius: $badge-border-radius;
min-width: $badge-min-width;
top: $badge-top;
right: $badge-right;
bottom: $badge-bottom;
left: $badge-left;
padding: $badge-padding;
max-width: $badge-max-width;
@include font($badge-font-weight, $badge-font-size, $badge-line-height, $badge-font-family);
@if $enable-big {
.#{$prefix}big & {
font-size: $badge-font-size-big;
line-height: $badge-line-height-big;
}
}
@include background-gradient($badge-background-color, $badge-background-gradient);
}
&.#{$prefix}hovered {
color: $hovered-color;
box-shadow: $hovered-box-shadow;
.#{$prefix}inner-el {
border-color: $hovered-border-color;
@include background-gradient($hovered-background-color, $hovered-background-gradient);
}
.#{$prefix}icon-el {
color: $hovered-icon-color;
}
.#{$prefix}arrow-el {
color: $hovered-arrow-icon-color;
}
}
&:before {
@if $pressed-box-shadow {
content: '';
}
border-radius: $border-radius;
box-shadow: $pressed-box-shadow;
transition: $box-shadow-transition;
}
&.#{$prefix}pressing, &.#{$prefix}pressed {
color: $pressed-color;
.#{$prefix}inner-el {
border-color: $pressed-border-color;
@include background-gradient($pressed-background-color, $pressed-background-gradient);
}
.#{$prefix}icon-el {
color: $pressed-icon-color;
}
.#{$prefix}arrow-el {
color: $pressed-arrow-icon-color;
}
}
&.#{$prefix}focused {
.#{$prefix}keyboard-mode & {
color: $focused-color;
box-shadow: $focused-box-shadow;
.#{$prefix}inner-el {
border-color: $focused-border-color;
@include background-gradient($focused-background-color, $focused-background-gradient);
}
.#{$prefix}icon-el {
color: $focused-icon-color;
}
.#{$prefix}arrow-el {
color: $focused-arrow-icon-color;
}
&:after {
@if $focused-outline-offset != null {
margin-top: -$focused-outline-offset;
margin-right: -$focused-outline-offset;
margin-left: -$focused-outline-offset;
margin-bottom: -$focused-outline-offset;
}
@include border($focused-outline-width, $focused-outline-style, $focused-outline-color);
border-radius: $border-radius;
@if $enable-big {
.#{$prefix}big & {
border-radius: $border-radius-big;
}
}
}
}
}
&.#{$prefix}disabled {
opacity: $disabled-opacity;
color: $disabled-color;
box-shadow: $disabled-box-shadow;
.#{$prefix}inner-el {
border-color: $disabled-border-color;
@include background-gradient($disabled-background-color, $disabled-background-gradient);
}
.#{$prefix}icon-el {
color: $disabled-icon-color;
}
.#{$prefix}arrow-el {
color: $disabled-arrow-icon-color;
}
}
}
}
@mixin sencha-button-ui($ui-label, $color, $gradient: $button-background-gradient) {
@include button-ui(
$ui: $ui-label,
$background-color: $color,
$background-gradient: $gradient
);
}
@mixin button-alt-invert-ui($ui, $ui-selector) {
$background-color: map_get($ui, 'color');
$color: map_get($ui, 'background-color');
@if $color == null {
$color: map_get($button-alt-ui, 'color');
}
.#{$prefix}button-alt.#{$ui-selector} {
color: $color;
.#{$prefix}inner-el {
background-color: $background-color;
}
.#{$prefix}icon-el {
color: $color;
}
&.#{$prefix}hovered {
color: $color;
.#{$prefix}inner-el {
background-color: $background-color;
}
.#{$prefix}icon-el {
color: $color;
}
}
&.#{$prefix}pressing, &.#{$prefix}pressed {
color: $color;
.#{$prefix}inner-el {
background-color: $background-color;
}
.#{$prefix}icon-el {
color: $color;
}
}
&.#{$prefix}focused {
.#{$prefix}keyboard-mode & {
color: $color;
.#{$prefix}inner-el {
background-color: $background-color;
}
.#{$prefix}icon-el {
color: $color;
}
}
}
}
}
@if ($enable-inverted-alt-button) {
@include button-alt-invert-ui($button-decline-ui, #{$prefix}button-decline);
@include button-alt-invert-ui($button-confirm-ui, #{$prefix}button-confirm);
}