// Name:            Tile
// Description:     Component to create tiled boxes
//
// Component:       `uk-tile`
//
// Modifiers:       `uk-tile-xsmall`
//                  `uk-tile-small`
//                  `uk-tile-large`
//                  `uk-tile-xlarge`
//                  `uk-tile-default`
//                  `uk-tile-muted`
//                  `uk-tile-primary`
//                  `uk-tile-secondary`
//
// States:          `uk-preserve-color`
//
// ========================================================================


// Variables
// ========================================================================

@tile-padding-horizontal:                      15px;
@tile-padding-horizontal-s:                    @global-gutter;
@tile-padding-horizontal-m:                    @global-medium-gutter;
@tile-padding-vertical:                        @global-medium-margin;
@tile-padding-vertical-m:                      @global-large-margin;

@tile-xsmall-padding-vertical:                 @global-margin;

@tile-small-padding-vertical:                  @global-medium-margin;

@tile-large-padding-vertical:                  @global-large-margin;
@tile-large-padding-vertical-m:                @global-xlarge-margin;

@tile-xlarge-padding-vertical:                 @global-xlarge-margin;
@tile-xlarge-padding-vertical-m:               (@global-large-margin + @global-xlarge-margin);

@tile-default-background:                      @global-background;
@tile-default-color-mode:                      dark;

@tile-muted-background:                        @global-muted-background;
@tile-muted-color-mode:                        dark;

@tile-primary-background:                      @global-primary-background;
@tile-primary-color-mode:                      light;

@tile-secondary-background:                    @global-secondary-background;
@tile-secondary-color-mode:                    light;


/* ========================================================================
   Component: Tile
 ========================================================================== */

.uk-tile {
    display: flow-root;
    position: relative;
    box-sizing: border-box;
    padding-left: @tile-padding-horizontal;
    padding-right: @tile-padding-horizontal;
    padding-top: @tile-padding-vertical;
    padding-bottom: @tile-padding-vertical;
    .hook-tile();
}

/* Phone landscape and bigger */
@media (min-width: @breakpoint-small) {

    .uk-tile {
        padding-left: @tile-padding-horizontal-s;
        padding-right: @tile-padding-horizontal-s;
    }

}

/* Tablet landscape and bigger */
@media (min-width: @breakpoint-medium) {

    .uk-tile {
        padding-left: @tile-padding-horizontal-m;
        padding-right: @tile-padding-horizontal-m;
        padding-top: @tile-padding-vertical-m;
        padding-bottom: @tile-padding-vertical-m;
    }

}

/*
 * Remove margin from the last-child
 */

.uk-tile > :last-child { margin-bottom: 0; }


/* Size modifiers
 ========================================================================== */

/*
 * XSmall
 */

.uk-tile-xsmall {
    padding-top: @tile-xsmall-padding-vertical;
    padding-bottom: @tile-xsmall-padding-vertical;
}

/*
 * Small
 */

.uk-tile-small {
    padding-top: @tile-small-padding-vertical;
    padding-bottom: @tile-small-padding-vertical;
}

/*
 * Large
 */

.uk-tile-large {
    padding-top: @tile-large-padding-vertical;
    padding-bottom: @tile-large-padding-vertical;
}

/* Tablet landscape and bigger */
@media (min-width: @breakpoint-medium) {

    .uk-tile-large {
        padding-top: @tile-large-padding-vertical-m;
        padding-bottom: @tile-large-padding-vertical-m;
    }

}


/*
 * XLarge
 */

.uk-tile-xlarge {
    padding-top: @tile-xlarge-padding-vertical;
    padding-bottom: @tile-xlarge-padding-vertical;
}

/* Tablet landscape and bigger */
@media (min-width: @breakpoint-medium) {

    .uk-tile-xlarge {
        padding-top: @tile-xlarge-padding-vertical-m;
        padding-bottom: @tile-xlarge-padding-vertical-m;
    }

}


/* Style modifiers
 ========================================================================== */

/*
 * Default
 */

.uk-tile-default {
    --uk-inverse: @tile-default-color-mode;
    background-color: @tile-default-background;
    .hook-tile-default();
}

.uk-tile-default.uk-tile-hover:hover {
    .hook-tile-default-hover();
}

// Color Mode
.uk-tile-default:not(.uk-preserve-color):extend(.uk-light all) when (@tile-default-color-mode = light) {}
.uk-tile-default:not(.uk-preserve-color):extend(.uk-dark all) when (@tile-default-color-mode = dark) {}

/*
 * Muted
 */

.uk-tile-muted {
    --uk-inverse: @tile-muted-color-mode;
    background-color: @tile-muted-background;
    .hook-tile-muted();
}

.uk-tile-muted.uk-tile-hover:hover {
    .hook-tile-muted-hover();
}

// Color Mode
.uk-tile-muted:not(.uk-preserve-color):extend(.uk-light all) when (@tile-muted-color-mode = light) {}
.uk-tile-muted:not(.uk-preserve-color):extend(.uk-dark all) when (@tile-muted-color-mode = dark) {}

/*
 * Primary
 */

.uk-tile-primary {
    --uk-inverse: @tile-primary-color-mode;
    background-color: @tile-primary-background;
    .hook-tile-primary();
}

.uk-tile-primary.uk-tile-hover:hover {
    .hook-tile-primary-hover();
}

// Color Mode
.uk-tile-primary:not(.uk-preserve-color):extend(.uk-light all) when (@tile-primary-color-mode = light) {}
.uk-tile-primary:not(.uk-preserve-color):extend(.uk-dark all) when (@tile-primary-color-mode = dark) {}

/*
 * Secondary
 */

.uk-tile-secondary {
    --uk-inverse: @tile-secondary-color-mode;
    background-color: @tile-secondary-background;
    .hook-tile-secondary();
}

.uk-tile-secondary.uk-tile-hover:hover {
    .hook-tile-secondary-hover();
}

// Color Mode
.uk-tile-secondary:not(.uk-preserve-color):extend(.uk-light all) when (@tile-secondary-color-mode = light) {}
.uk-tile-secondary:not(.uk-preserve-color):extend(.uk-dark all) when (@tile-secondary-color-mode = dark) {}


// Hooks
// ========================================================================

.hook-tile-misc();

.hook-tile() {}
.hook-tile-default() {}
.hook-tile-default-hover() {}
.hook-tile-muted() {}
.hook-tile-muted-hover() {}
.hook-tile-primary() {}
.hook-tile-primary-hover() {}
.hook-tile-secondary() {}
.hook-tile-secondary-hover() {}
.hook-tile-misc() {}
