// common - utilities - mixins and extends
// ====================
//
// Note: these mixins replicate the Studio mixins directly
// to simplify the usage of Studio Sass partials. They
// should be deprecated in favor of using native Bootstrap
// functionality.


// Table of Contents
// * +Font Sizing - Mixin
// * +Line Height - Mixin
// * +Sizing - Mixin
// * +Square - Mixin
// * +Placeholder Styling - Mixin
// * +Flex Support - Mixin
// * +Flex Polyfill - Extends
// * +UI - Wrapper - Extends
// * +UI - Window - Extend
// * +UI - Visual Link - Extend
// * +UI - Functional Disable - Extend
// * +UI - Visual Link - Extend
// * +UI - Depth Levels - Extends
// * +UI - Clear Children - Extends
// * +UI - Buttons - Extends
// * +UI - Well Archetype - Extends
// * +Content - No List - Extends
// * +Content - Hidden Image Text - Extend
// * +Content - Screenreader Text - Extend
// * +Content - Text Wrap - Extend
// * +Content - Text Truncate - Extend
// * +Icon - Font-Awesome  - Extend
// * +Icon - SSO icon images

// +Font Sizing - Mixin
// ====================
@mixin font-size($sizeValue: 16) {
  font-size: $sizeValue + px;
  font-size: ($sizeValue/10) + rem;
}

// +Line Height - Mixin
// ====================
@mixin line-height($fontSize: auto) {
  line-height: ($fontSize*1.48) + px;
  line-height: (($fontSize/10)*1.48) + rem;
}

// +Sizing - Mixin
// ====================
@mixin size($width: $baseline, $height: $baseline) {
  height: $height;
  width: $width;
}

// +Square - Mixin
// ====================
@mixin square($size: $baseline) {
  @include size($size);
}

// +Placeholder Styling - Mixin
// ====================
@mixin placeholder($color) {
  :-moz-placeholder {
    color: $color;
  }

  ::-webkit-input-placeholder {
    color: $color;
  }

  :-ms-input-placeholder {
    color: $color;
  }
}

// +Flex Support - Mixin
// ====================
@mixin ui-flexbox() {
  display: -webkit-box;
  display: -moz-box;
  display: -ms-flexbox;
  display: -webkit-flex;
  display: flex;
}

// +Flex PolyFill - Extends
// ====================

// justify-content right for display:flex alignment in older browsers
%ui-justify-right-flex {
  -webkit-box-pack: flex-end;
  -moz-box-pack: flex-end;
  -ms-flex-pack: flex-end;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
}

// justify-content left for display:flex alignment in older browsers
%ui-justify-left-flex {
  -webkit-box-pack: flex-start;
  -moz-box-pack: flex-start;
  -ms-flex-pack: flex-start;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
}

// align items center for display:flex alignment in older browsers
%ui-align-center-flex {
  -webkit-flex-align: center;
  -ms-flex-align: center;
  -webkit-align-items: center;
  align-items: center;
}


// +UI - Wrapper - Extends
// ====================
// used for page/view-level wrappers (for centering/grids)
%ui-wrapper {
  @include clearfix();

  width: 100%;
}

// +UI - Depth Levels - Extends
// ====================
%ui-depth0 { z-index: 0; }
%ui-depth1 { z-index: 10; }
%ui-depth2 { z-index: 100; }
%ui-depth3 { z-index: 1000; }
%ui-depth4 { z-index: 10000; }
%ui-depth5 { z-index: 100000; }


// +UI - Clear Children - Extends
// ====================
// extends - UI - utility - first child clearing
%wipe-first-child {
  &:first-child {
    margin-top: 0;
    border-top: none;
    padding-top: 0;
  }
}

// extends - UI - utility - last child clearing
%wipe-last-child {
  &:last-child {
    margin-bottom: 0;
    border-bottom: none;
    padding-bottom: 0;
  }
}

// +Content - No List - Extends
// ====================
// removes list styling/spacing when using uls, ols for navigation and less content-centric cases
%cont-no-list {
  list-style: none;
  margin: 0;
  padding: 0;
  text-indent: 0;

  li {
    margin: 0;
    padding: 0;
  }
}

// +Content - Hidden Image Text - Extend
// ====================
// image-replacement hidden text
%cont-text-hide {
  text-indent: 100%;
  white-space: nowrap;
  overflow: hidden;
}

// +Content - Screenreader Text - Extend
// ====================
%cont-text-sr {
  // clip has been deprecated but is still supported
  clip: rect(1px 1px 1px 1px);
  clip: rect(1px, 1px, 1px, 1px);
  position: absolute;
  margin: -1px;
  height: 1px;
  width: 1px;
  border: 0;
  padding: 0;
  overflow: hidden;
  // ensure there are spaces in sr text
  word-wrap: normal;
}

// +Content - Text Wrap - Extend
// ====================
%cont-text-wrap {
  word-wrap: break-word;
}

// +Content - Text Truncate - Extend
// ====================
%cont-truncated {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

// * +Icon - Font-Awesome  - Extend
// ====================
%use-font-awesome {
  display: inline-block;
  font-family: FontAwesome;
  -webkit-font-smoothing: antialiased;
  speak: none;
}

%btn-no-style {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}


// * +Icon - SSO icon images
// ====================

%sso-icon {
  .icon-image {
    width: auto;
    height: auto;
    max-height: 1.4em;
    max-width: 1.4em;
    margin-top: -2px;
  }
}
