From f597e2fe949a1e18eb778b9a5bd102de88570555 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 18 May 2017 14:03:27 +0200 Subject: Initial commit. --- src/sass/bootstrap4/mixins/_alert.scss | 14 +++ .../bootstrap4/mixins/_background-variant.scss | 13 +++ src/sass/bootstrap4/mixins/_border-radius.scss | 35 ++++++++ src/sass/bootstrap4/mixins/_breakpoints.scss | 86 ++++++++++++++++++ src/sass/bootstrap4/mixins/_buttons.scss | 100 +++++++++++++++++++++ src/sass/bootstrap4/mixins/_cards.scss | 38 ++++++++ src/sass/bootstrap4/mixins/_center-block.scss | 7 ++ src/sass/bootstrap4/mixins/_clearfix.scss | 7 ++ src/sass/bootstrap4/mixins/_forms.scss | 89 ++++++++++++++++++ src/sass/bootstrap4/mixins/_gradients.scss | 43 +++++++++ src/sass/bootstrap4/mixins/_grid-framework.scss | 44 +++++++++ src/sass/bootstrap4/mixins/_grid.scss | 75 ++++++++++++++++ src/sass/bootstrap4/mixins/_hover.scss | 59 ++++++++++++ src/sass/bootstrap4/mixins/_image.scss | 34 +++++++ src/sass/bootstrap4/mixins/_label.scss | 11 +++ src/sass/bootstrap4/mixins/_list-group.scss | 30 +++++++ src/sass/bootstrap4/mixins/_lists.scss | 7 ++ src/sass/bootstrap4/mixins/_nav-divider.scss | 10 +++ src/sass/bootstrap4/mixins/_navbar-align.scss | 9 ++ src/sass/bootstrap4/mixins/_pagination.scss | 22 +++++ src/sass/bootstrap4/mixins/_progress.scss | 18 ++++ src/sass/bootstrap4/mixins/_pulls.scss | 6 ++ src/sass/bootstrap4/mixins/_reset-filter.scss | 8 ++ src/sass/bootstrap4/mixins/_reset-text.scss | 18 ++++ src/sass/bootstrap4/mixins/_resize.scss | 6 ++ src/sass/bootstrap4/mixins/_screen-reader.scss | 32 +++++++ src/sass/bootstrap4/mixins/_size.scss | 6 ++ src/sass/bootstrap4/mixins/_tab-focus.scss | 9 ++ src/sass/bootstrap4/mixins/_table-row.scss | 30 +++++++ src/sass/bootstrap4/mixins/_text-emphasis.scss | 12 +++ src/sass/bootstrap4/mixins/_text-hide.scss | 8 ++ src/sass/bootstrap4/mixins/_text-truncate.scss | 8 ++ 32 files changed, 894 insertions(+) create mode 100644 src/sass/bootstrap4/mixins/_alert.scss create mode 100644 src/sass/bootstrap4/mixins/_background-variant.scss create mode 100644 src/sass/bootstrap4/mixins/_border-radius.scss create mode 100644 src/sass/bootstrap4/mixins/_breakpoints.scss create mode 100644 src/sass/bootstrap4/mixins/_buttons.scss create mode 100644 src/sass/bootstrap4/mixins/_cards.scss create mode 100644 src/sass/bootstrap4/mixins/_center-block.scss create mode 100644 src/sass/bootstrap4/mixins/_clearfix.scss create mode 100644 src/sass/bootstrap4/mixins/_forms.scss create mode 100644 src/sass/bootstrap4/mixins/_gradients.scss create mode 100644 src/sass/bootstrap4/mixins/_grid-framework.scss create mode 100644 src/sass/bootstrap4/mixins/_grid.scss create mode 100644 src/sass/bootstrap4/mixins/_hover.scss create mode 100644 src/sass/bootstrap4/mixins/_image.scss create mode 100644 src/sass/bootstrap4/mixins/_label.scss create mode 100644 src/sass/bootstrap4/mixins/_list-group.scss create mode 100644 src/sass/bootstrap4/mixins/_lists.scss create mode 100644 src/sass/bootstrap4/mixins/_nav-divider.scss create mode 100644 src/sass/bootstrap4/mixins/_navbar-align.scss create mode 100644 src/sass/bootstrap4/mixins/_pagination.scss create mode 100644 src/sass/bootstrap4/mixins/_progress.scss create mode 100644 src/sass/bootstrap4/mixins/_pulls.scss create mode 100644 src/sass/bootstrap4/mixins/_reset-filter.scss create mode 100644 src/sass/bootstrap4/mixins/_reset-text.scss create mode 100644 src/sass/bootstrap4/mixins/_resize.scss create mode 100644 src/sass/bootstrap4/mixins/_screen-reader.scss create mode 100644 src/sass/bootstrap4/mixins/_size.scss create mode 100644 src/sass/bootstrap4/mixins/_tab-focus.scss create mode 100644 src/sass/bootstrap4/mixins/_table-row.scss create mode 100644 src/sass/bootstrap4/mixins/_text-emphasis.scss create mode 100644 src/sass/bootstrap4/mixins/_text-hide.scss create mode 100644 src/sass/bootstrap4/mixins/_text-truncate.scss (limited to 'src/sass/bootstrap4/mixins') diff --git a/src/sass/bootstrap4/mixins/_alert.scss b/src/sass/bootstrap4/mixins/_alert.scss new file mode 100644 index 0000000..6ed3a81 --- /dev/null +++ b/src/sass/bootstrap4/mixins/_alert.scss @@ -0,0 +1,14 @@ +// Alerts + +@mixin alert-variant($background, $border, $body-color) { + background-color: $background; + border-color: $border; + color: $body-color; + + hr { + border-top-color: darken($border, 5%); + } + .alert-link { + color: darken($body-color, 10%); + } +} diff --git a/src/sass/bootstrap4/mixins/_background-variant.scss b/src/sass/bootstrap4/mixins/_background-variant.scss new file mode 100644 index 0000000..0c9f2f0 --- /dev/null +++ b/src/sass/bootstrap4/mixins/_background-variant.scss @@ -0,0 +1,13 @@ +// Contextual backgrounds + +@mixin bg-variant($parent, $color) { + #{$parent} { + color: #fff !important; + background-color: $color !important; + } + a#{$parent} { + @include hover-focus { + background-color: darken($color, 10%); + } + } +} diff --git a/src/sass/bootstrap4/mixins/_border-radius.scss b/src/sass/bootstrap4/mixins/_border-radius.scss new file mode 100644 index 0000000..54f29f4 --- /dev/null +++ b/src/sass/bootstrap4/mixins/_border-radius.scss @@ -0,0 +1,35 @@ +// Single side border-radius + +@mixin border-radius($radius: $border-radius) { + @if $enable-rounded { + border-radius: $radius; + } +} + +@mixin border-top-radius($radius) { + @if $enable-rounded { + border-top-right-radius: $radius; + border-top-left-radius: $radius; + } +} + +@mixin border-right-radius($radius) { + @if $enable-rounded { + border-bottom-right-radius: $radius; + border-top-right-radius: $radius; + } +} + +@mixin border-bottom-radius($radius) { + @if $enable-rounded { + border-bottom-right-radius: $radius; + border-bottom-left-radius: $radius; + } +} + +@mixin border-left-radius($radius) { + @if $enable-rounded { + border-bottom-left-radius: $radius; + border-top-left-radius: $radius; + } +} diff --git a/src/sass/bootstrap4/mixins/_breakpoints.scss b/src/sass/bootstrap4/mixins/_breakpoints.scss new file mode 100644 index 0000000..a868833 --- /dev/null +++ b/src/sass/bootstrap4/mixins/_breakpoints.scss @@ -0,0 +1,86 @@ +// Breakpoint viewport sizes and media queries. +// +// Breakpoints are defined as a map of (name: minimum width), order from small to large: +// +// (xs: 0, sm: 544px, md: 768px) +// +// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default. + +// Name of the next breakpoint, or null for the last breakpoint. +// +// >> breakpoint-next(sm) +// md +// >> breakpoint-next(sm, (xs: 0, sm: 544px, md: 768px)) +// md +// >> breakpoint-next(sm, $breakpoint-names: (xs sm md)) +// md +@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) { + $n: index($breakpoint-names, $name); + @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null); +} + +// Minimum breakpoint width. Null for the smallest (first) breakpoint. +// +// >> breakpoint-min(sm, (xs: 0, sm: 544px, md: 768px)) +// 544px +@function breakpoint-min($name, $breakpoints: $grid-breakpoints) { + $min: map-get($breakpoints, $name); + @return if($min != 0, $min, null); +} + +// Maximum breakpoint width. Null for the largest (last) breakpoint. +// The maximum value is calculated as the minimum of the next one less 0.1. +// +// >> breakpoint-max(sm, (xs: 0, sm: 544px, md: 768px)) +// 767px +@function breakpoint-max($name, $breakpoints: $grid-breakpoints) { + $next: breakpoint-next($name, $breakpoints); + @return if($next, breakpoint-min($next, $breakpoints) - 1px, null); +} + +// Media of at least the minimum breakpoint width. No query for the smallest breakpoint. +// Makes the @content apply to the given breakpoint and wider. +@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) { + $min: breakpoint-min($name, $breakpoints); + @if $min { + @media (min-width: $min) { + @content; + } + } @else { + @content; + } +} + +// Media of at most the maximum breakpoint width. No query for the largest breakpoint. +// Makes the @content apply to the given breakpoint and narrower. +@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) { + $max: breakpoint-max($name, $breakpoints); + @if $max { + @media (max-width: $max) { + @content; + } + } @else { + @content; + } +} + +// Media between the breakpoint's minimum and maximum widths. +// No minimum for the smallest breakpoint, and no maximum for the largest one. +// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower. +@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) { + @include media-breakpoint-up($name, $breakpoints) { + @include media-breakpoint-down($name, $breakpoints) { + @content; + } + } +} + +// Media that spans multiple breakpoint widths. +// Makes the @content apply between the min and max breakpoints +@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) { + @include media-breakpoint-up($lower, $breakpoints) { + @include media-breakpoint-down($upper, $breakpoints) { + @content; + } + } +} diff --git a/src/sass/bootstrap4/mixins/_buttons.scss b/src/sass/bootstrap4/mixins/_buttons.scss new file mode 100644 index 0000000..61b9f9c --- /dev/null +++ b/src/sass/bootstrap4/mixins/_buttons.scss @@ -0,0 +1,100 @@ +// Button variants +// +// Easily pump out default styles, as well as :hover, :focus, :active, +// and disabled options for all buttons + +@mixin button-variant($color, $background, $border) { + $active-background: darken($background, 10%); + $active-border: darken($border, 12%); + + color: $color; + background-color: $background; + border-color: $border; + @include box-shadow(inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075)); + + @include hover { + color: $color; + background-color: $active-background; + border-color: $active-border; + } + + &:focus, + &.focus { + color: $color; + background-color: $active-background; + border-color: $active-border; + } + + &:active, + &.active, + .open > &.dropdown-toggle { + color: $color; + background-color: $active-background; + border-color: $active-border; + // Remove the gradient for the pressed/active state + background-image: none; + @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); + + &:hover, + &:focus, + &.focus { + color: $color; + background-color: darken($background, 17%); + border-color: darken($border, 25%); + } + } + + &.disabled, + &:disabled { + &:focus, + &.focus { + background-color: $background; + border-color: $border; + } + @include hover { + background-color: $background; + border-color: $border; + } + } +} + +@mixin button-outline-variant($color) { + color: $color; + background-image: none; + background-color: transparent; + border-color: $color; + + &:focus, + &.focus, + &:active, + &.active, + .open > &.dropdown-toggle { + color: #fff; + background-color: $color; + border-color: $color; + } + @include hover { + color: #fff; + background-color: $color; + border-color: $color; + } + + &.disabled, + &:disabled { + &:focus, + &.focus { + border-color: lighten($color, 20%); + } + @include hover { + border-color: lighten($color, 20%); + } + } +} + +// Button sizes +@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { + padding: $padding-y $padding-x; + font-size: $font-size; + line-height: $line-height; + @include border-radius($border-radius); +} diff --git a/src/sass/bootstrap4/mixins/_cards.scss b/src/sass/bootstrap4/mixins/_cards.scss new file mode 100644 index 0000000..1ce28f1 --- /dev/null +++ b/src/sass/bootstrap4/mixins/_cards.scss @@ -0,0 +1,38 @@ +// Card variants + +@mixin card-variant($background, $border) { + background-color: $background; + border-color: $border; +} + +@mixin card-outline-variant($color) { + background-color: transparent; + border-color: $color; +} + +// +// Inverse text within a card for use with dark backgrounds +// + +@mixin card-inverse { + .card-header, + .card-footer { + border-bottom: $card-border-width solid rgba(255,255,255,.2); + } + .card-header, + .card-footer, + .card-title, + .card-blockquote { + color: #fff; + } + .card-link, + .card-text, + .card-blockquote > footer { + color: rgba(255,255,255,.65); + } + .card-link { + @include hover-focus { + color: $card-link-hover-color; + } + } +} diff --git a/src/sass/bootstrap4/mixins/_center-block.scss b/src/sass/bootstrap4/mixins/_center-block.scss new file mode 100644 index 0000000..e06fb5e --- /dev/null +++ b/src/sass/bootstrap4/mixins/_center-block.scss @@ -0,0 +1,7 @@ +// Center-align a block level element + +@mixin center-block() { + display: block; + margin-left: auto; + margin-right: auto; +} diff --git a/src/sass/bootstrap4/mixins/_clearfix.scss b/src/sass/bootstrap4/mixins/_clearfix.scss new file mode 100644 index 0000000..d0ae125 --- /dev/null +++ b/src/sass/bootstrap4/mixins/_clearfix.scss @@ -0,0 +1,7 @@ +@mixin clearfix() { + &::after { + content: ""; + display: table; + clear: both; + } +} diff --git a/src/sass/bootstrap4/mixins/_forms.scss b/src/sass/bootstrap4/mixins/_forms.scss new file mode 100644 index 0000000..eab8063 --- /dev/null +++ b/src/sass/bootstrap4/mixins/_forms.scss @@ -0,0 +1,89 @@ +// Form validation states +// +// Used in _forms.scss to generate the form validation CSS for warnings, errors, +// and successes. + +@mixin form-control-validation($color) { + // Color the label and help text + .text-help, + .form-control-label, + .radio, + .checkbox, + .radio-inline, + .checkbox-inline, + &.radio label, + &.checkbox label, + &.radio-inline label, + &.checkbox-inline label { + color: $color; + } + // Set the border and box shadow on specific inputs to match + .form-control { + border-color: $color; + // @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work + + &:focus { + // border-color: darken($border-color, 10%); + // $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%); + // @include box-shadow($shadow); + } + } + + // Set validation states also for addons + .input-group-addon { + color: $color; + border-color: $color; + background-color: lighten($color, 40%); + } + // Optional feedback icon + .form-control-feedback { + color: $color; + } +} + +// Form control focus state +// +// Generate a customized focus state and for any input with the specified color, +// which defaults to the `@input-border-focus` variable. +// +// We highly encourage you to not customize the default value, but instead use +// this to tweak colors on an as-needed basis. This aesthetic change is based on +// WebKit's default styles, but applicable to a wider range of browsers. Its +// usability and accessibility should be taken into account with any change. +// +// Example usage: change the default blue border and shadow to white for better +// contrast against a dark gray background. +@mixin form-control-focus() { + &:focus { + border-color: $input-border-focus; + outline: none; + $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $input-box-shadow-focus; + @include box-shadow($shadow); + } +} + +// Form control sizing +// +// Relative text size, padding, and border-radii changes for form controls. For +// horizontal sizing, wrap controls in the predefined grid classes. `