/* Mixin for breadcrumbs style. Parameters: - $breadcrumbs-name : The class name for the breadcrumbs style. - $breadcrumbs-style : The style of the breadcrumbs separator character. [1][2][3] Notes: - [1] : $breadcrumbs-style accepts the values 1, 2 or 3. If an invalid value is supplied, it will be treated as 3. - [2] : The three provided styles are as follows: - $breadcrumbs-style == 1 : forward slash. - $breadcrumbs-style == 2 : greater than symbol. - $breadcrumbs-style == 3 : right angle symbol (default). - [3] : The value of $breadcrumbs-style can be omitted and will default to 3. */ @mixin make-breadcrumbs($breadcrumbs-name, $breadcrumbs-style: 3){ .#{$breadcrumbs-name}{ list-style: none; & > li{ display: inline-block; & + li:before{ @if $breadcrumbs-style == 1{ content: '\002f\00a0'; } @else if $breadcrumbs-style == 2{ content: '\003e\00a0'; } @else{ content: '\27e9\00a0'; } } } } } /* Mixin for generic container style. Parameters: - $container-name : The class name for the generic container. - $container-color : The text color of the generic container. - $container-bg-color : The background color of the generic container. - $container-border : The border style of the generic container. - $container-border-radius : The border-radius of the generic container. - $container-padding : The content badding of the generic container. Notes: - [1] : This mixin is also used for making alerts and panels. */ @mixin make-generic-container($container-name, $container-color, $container-bg-color, $container-border, $container-border-radius, $container-padding){ .#{$container-name}{ border: $container-border; border-radius: $container-border-radius; background-color: $container-bg-color; color: $container-color; padding: $container-padding; } } /* Mixin for generic alert style. Parameters: - $alert-name : The class name for the alert. - $alert-color : The text color of the alert. - $alert-bg-color : The background color of the alert. - $alert-border : The border style of the alert. - $alert-border-radius : The border-radius of the alert. - $alert-padding : The content badding of the alert. - $close-name : The class name for the close utility. [1] Notes: - [1] : The value of $close-name must match that of the class specified for close elements for the alert to work correctly. - [2] : This mixin uses `make-generic-container` to partially generate its CSS. */ @mixin make-alert($alert-name, $alert-color, $alert-bg-color, $alert-border, $alert-border-radius, $alert-padding, $close-name){ @include make-generic-container($alert-name+' + div', $alert-color, $alert-bg-color, $alert-border, $alert-border-radius, $alert-padding); input[type="checkbox"].#{$alert-name}{ display: none; & + div{ display: none; position: relative; & a{ font-weight: 700; text-decoration: none; color: darken($alert-color, 10%); &:hover, &:active, &:focus{ text-decoration: underline; } } & .#{$close-name}{ position: absolute; top: $alert-padding; right: $alert-padding; color: $alert-color; &:hover, &:active, &:focus{ color: darken($alert-color, 10%); } } } } input[type="checkbox"]:checked.#{$alert-name} + div{ display: block; } } /* Mixin for generic panel style. Parameters: - $panel-name : The class name for the panel. - $panel-color : The text color of the panel. - $panel-bg-color : The background color of the panel. - $panel-border : The border style of the panel. - $panel-border-radius : The border-radius of the panel. - $panel-padding : The content badding of the panel. - $panel-header-name : The class name for the panel's header. - $panel-header-color : The text color of the panel's header. - $panel-header-bg-color : The background color of the panel's header. - $panel-header-padding : The padding of the panel's header. Notes: - [1] : This mixin uses `make-generic-container` to partially generate its CSS. */ @mixin make-panel($panel-name, $panel-color, $panel-bg-color, $panel-border, $panel-border-radius, $panel-padding, $panel-header-name, $panel-header-color, $panel-header-bg-color, $panel-header-padding){ @include make-generic-container($panel-name, $panel-color, $panel-bg-color, $panel-border, $panel-border-radius, 0); .#{$panel-name}{ & > *{ padding: $panel-padding; } & .#{$panel-header-name}{ border-top: 0; border-left: 0; border-right: 0; border-bottom: $panel-border; color: $panel-header-color; background-color: $panel-header-bg-color; padding: $panel-header-padding; margin: 0; } } } // TODO: Add popover mixin with directions etc. //==================================================================== // THE MIXINS SPECIFIED BELOW ARE EXPERIMENTAL AND MIGHT NOT BEHAVE // AS DOCUMENTED. EXERCISE CAUTION IF YOU USE THEM! //==================================================================== /* Mixin for generic button states. Parameters: - $button-states-name : The class name of the stateful button. Notes: - [1] : This mixin is experimental, it might be buggy. */ @mixin make-button-states($button-states-name){ input[type="checkbox"]{ &.#{$button-states-name}{ display: none; & + label{ display: block; & + label{ display: none; } } } &:checked{ & + label{ display: none; & + label{ display: block; } } } } } /* Mixin for generic button groups. Parameters: - $btn-group-name : The class name of the button group. - $btn-name : The name of the button class. [1][2] - $btn-group-border : The border style of the button group. - $btn-group-border-radius : The border radius at the edges of the button group. Notes: - [1] : The value of $btn-name must match that of the generic button class. - [2] : The value of $btn-name can be hacked to allow for button variants to be styled in custom manners (e.g. if you button class is `btn` and your button variant's class is `blue`, you can style it, using `btn +'.blue'`). - [3] : This mixin is experimental, although it is marked stable for most cases. - [4] : The results of this mixin are purely stylistic and do not provide any grouping functionality. */ @mixin make-btn-group($btn-group-name, $btn-name, $btn-group-border, $btn-group-border-radius){ .#{$btn-group-name}{ & .#{$btn-name}{ border: $btn-group-border; margin: 0; &:not(:first-child):not(:last-child){ border-radius: 0; border-right: 0; } &:first-child{ border-radius: $btn-group-border-radius 0 0 $btn-group-border-radius; border-right: 0; } &:last-child{ border-radius: 0 $btn-group-border-radius $btn-group-border-radius 0; } } } }