//
// Component: Button
//
// ========================================================================


// Variables
// ========================================================================

@button-line-height:                            @global-control-height;
@button-small-line-height:                      @global-control-small-height;
@button-large-line-height:                      @global-control-large-height;

@button-font-size:                              20px;
@button-small-font-size:                        @global-small-font-size;
@button-large-font-size:                        @global-medium-font-size;

@button-padding-horizontal:                     45px;
@button-small-padding-horizontal:               @global-small-gutter;
@button-large-padding-horizontal:               @global-medium-gutter;

@button-default-background:                     @global-muted-background;
@button-default-color:                          @global-emphasis-color;
@button-default-hover-background:               darken(@button-default-background, 5%);
@button-default-hover-color:                    @global-emphasis-color;
@button-default-active-background:              darken(@button-default-background, 10%);
@button-default-active-color:                   @global-emphasis-color;

@button-primary-background:                     @global-primary-background;
@button-primary-color:                          @global-inverse-color;
@button-primary-hover-background:               darken(@button-primary-background, 5%);
@button-primary-hover-color:                    @global-inverse-color;
@button-primary-active-background:              darken(@button-primary-background, 10%);
@button-primary-active-color:                   @global-inverse-color;

@button-secondary-background:                   @global-secondary-background;
@button-secondary-color:                        @global-inverse-color;
@button-secondary-hover-background:             darken(@button-secondary-background, 5%);
@button-secondary-hover-color:                  @global-inverse-color;
@button-secondary-active-background:            darken(@button-secondary-background, 10%);
@button-secondary-active-color:                 @global-inverse-color;

@button-danger-background:                      @global-danger-background;
@button-danger-color:                           @global-inverse-color;
@button-danger-hover-background:                darken(@button-danger-background, 5%);
@button-danger-hover-color:                     @global-inverse-color;
@button-danger-active-background:               darken(@button-danger-background, 10%);
@button-danger-active-color:                    @global-inverse-color;

@button-disabled-background:                    @global-muted-background;
@button-disabled-color:                         @global-muted-color;

@button-text-line-height:                       @global-line-height;
@button-text-color:                             @global-muted-color;
@button-text-hover-color:                       @global-color;
@button-text-disabled-color:                    @global-muted-color;

@button-link-line-height:                       @global-line-height;
@button-link-color:                             @global-link-color;
@button-link-hover-color:                       @global-link-hover-color;
@button-link-hover-text-decoration:             underline;
@button-link-disabled-color:                    @global-muted-color;

//
// New
//

@button-text-transform:                         uppercase;

@button-border-width:                           @global-border-width;

@button-default-border:                         @global-border;
@button-default-hover-border:                   darken(@global-border, 20%);
@button-default-active-border:                  darken(@global-border, 30%);

@button-disabled-border:                        @global-border;

@button-text-border-width:                      @global-border-width;
@button-text-border:                            @button-text-hover-color;


// Component
// ========================================================================

.hook-button() {
    font-family: @global-secondary-font-family;
    border-radius: 5px;
    transition: 0.1s ease-in-out;
    transition-property: color, background-color, border-color;
}

.hook-button-hover() {}

.hook-button-focus() {}

.hook-button-active() {}


// Style modifiers
// ========================================================================

.hook-button-default() { border: @button-border-width solid @button-default-border; }

.hook-button-default-hover() { border-color: @button-default-hover-border; }

.hook-button-default-active() { border-color: @button-default-active-border; }

//
// Primary
//

.hook-button-primary() { border: @button-border-width solid transparent; }

.hook-button-primary-hover() {}

.hook-button-primary-active() {}

//
// Secondary
//

.hook-button-secondary() { border: @button-border-width solid transparent; }

.hook-button-secondary-hover() {}

.hook-button-secondary-active() {}

//
// Danger
//

.hook-button-danger() { border: @button-border-width solid transparent; }

.hook-button-danger-hover() {}

.hook-button-danger-active() {}


// Disabled
// ========================================================================

.hook-button-disabled() { border-color: @button-disabled-border; }


// Size modifiers
// ========================================================================

.hook-button-small() {}

.hook-button-large() {}


// Text modifier
// ========================================================================

.hook-button-text() {

    position: relative;

    &::before {
        content: "";
        position: absolute;
        bottom: 0;
        left: 0;
        right: 100%;
        border-bottom: @button-text-border-width solid @button-text-border;
        transition: right 0.3s ease-out;
    }

}

.hook-button-text-hover() {

    &::before { right: 0; }

}

.hook-button-text-disabled() {

    &::before { display: none; }

}


// Link modifier
// ========================================================================

.hook-button-link() {}


// Miscellaneous
// ========================================================================

.hook-button-misc() {

    /* Group
     ========================================================================== */

    /*
     * Collapse border
     */

    .uk-button-group > .uk-button:nth-child(n+2),
    .uk-button-group > div:nth-child(n+2) .uk-button { margin-left: -@button-border-width; }

    /*
     * Create position context to superimpose the successor elements border
     * Known issue: If you use an `a` element as button and an icon inside,
     * the active state will not work if you click the icon inside the button
     * Workaround: Just use a `button` or `input` element as button
     */

    .uk-button-group .uk-button:hover,
    .uk-button-group .uk-button:focus,
    .uk-button-group .uk-button:active,
    .uk-button-group .uk-button.uk-active {
        position: relative;
        z-index: 1;
    }

}


// Inverse
// ========================================================================

@inverse-button-default-background:            @inverse-global-primary-background;
@inverse-button-default-color:                 @inverse-global-inverse-color;
@inverse-button-default-hover-background:      darken(@inverse-button-default-background, 5%);
@inverse-button-default-hover-color:           @inverse-global-inverse-color;
@inverse-button-default-active-background:     darken(@inverse-button-default-background, 10%);
@inverse-button-default-active-color:          @inverse-global-inverse-color;
@inverse-button-primary-background:            #ff003d;
@inverse-button-primary-color:                 @global-inverse-color;
@inverse-button-primary-hover-background:      darken(@inverse-button-primary-background, 5%);
@inverse-button-primary-hover-color:           @global-inverse-color;
@inverse-button-primary-active-background:     darken(@inverse-button-primary-background, 10%);
@inverse-button-primary-active-color:          @global-inverse-color;
@inverse-button-secondary-background:          @inverse-global-primary-background;
@inverse-button-secondary-color:               @inverse-global-inverse-color;
@inverse-button-secondary-hover-background:    darken(@inverse-button-secondary-background, 5%);
@inverse-button-secondary-hover-color:         @inverse-global-inverse-color;
@inverse-button-secondary-active-background:   darken(@inverse-button-secondary-background, 10%);
@inverse-button-secondary-active-color:        @inverse-global-inverse-color;
@inverse-button-text-color:                    @inverse-global-muted-color;
@inverse-button-text-hover-color:              @inverse-global-color;
@inverse-button-text-disabled-color:           @inverse-global-muted-color;
@inverse-button-link-color:                    @inverse-global-muted-color;
@inverse-button-link-hover-color:              @inverse-global-color;

.hook-inverse-button-default() { border-color: @inverse-global-color; }
.hook-inverse-button-default-hover() { border-color: @inverse-global-emphasis-color; }
.hook-inverse-button-default-active() { border-color: @inverse-global-emphasis-color; }

.hook-inverse-button-primary() {}
.hook-inverse-button-primary-hover() {}
.hook-inverse-button-primary-active() {}

.hook-inverse-button-secondary() {}
.hook-inverse-button-secondary-hover() {}
.hook-inverse-button-secondary-active() {}

.hook-inverse-button-text() {
    &::before { border-bottom-color: @inverse-global-emphasis-color; }
}
.hook-inverse-button-text-hover() {}
.hook-inverse-button-text-disabled() {}

.hook-inverse-button-link() {}