]> git.ipfire.org Git - thirdparty/bootstrap.git/commitdiff
v5: Update colors to add shades and tints (#29348)
authorMark Otto <otto@github.com>
Fri, 18 Oct 2019 18:04:27 +0000 (11:04 -0700)
committerGitHub <noreply@github.com>
Fri, 18 Oct 2019 18:04:27 +0000 (11:04 -0700)
* Add variables for shades and tints of each major color

* getting-started/theming.md: use a `range`.

scss/_functions.scss
scss/_variables.scss
site/assets/scss/_colors.scss
site/content/docs/4.3/getting-started/theming.md

index 0e77bf4b3fe6738f3b0487c062ba6863fbcab4cd..79f988feb5a1baac6837c1ed4f6d12a548e93fac 100644 (file)
 
   @return mix($color-base, $color, $level * $theme-color-interval);
 }
+
+@function tint-color($color, $level) {
+  @return mix(white, $color, $level * $theme-color-interval);
+}
+
+@function shade-color($color, $level) {
+  @return mix(black, $color, $level * $theme-color-interval);
+}
index a6dc69aa83f9550b865a6054497d2b321a326b0d..6f902f14205f7e563ef7ea467ec3f6f72f28b60b 100644 (file)
@@ -101,6 +101,108 @@ $yiq-contrasted-threshold:  150 !default;
 $yiq-text-dark:             $gray-900 !default;
 $yiq-text-light:            $white !default;
 
+// fusv-disable
+$blue-100: tint-color($blue, 8) !default;
+$blue-200: tint-color($blue, 6) !default;
+$blue-300: tint-color($blue, 4) !default;
+$blue-400: tint-color($blue, 2) !default;
+$blue-500: $blue !default;
+$blue-600: shade-color($blue, 2) !default;
+$blue-700: shade-color($blue, 4) !default;
+$blue-800: shade-color($blue, 6) !default;
+$blue-900: shade-color($blue, 8) !default;
+
+$indigo-100: tint-color($indigo, 8) !default;
+$indigo-200: tint-color($indigo, 6) !default;
+$indigo-300: tint-color($indigo, 4) !default;
+$indigo-400: tint-color($indigo, 2) !default;
+$indigo-500: $indigo !default;
+$indigo-600: shade-color($indigo, 2) !default;
+$indigo-700: shade-color($indigo, 4) !default;
+$indigo-800: shade-color($indigo, 6) !default;
+$indigo-900: shade-color($indigo, 8) !default;
+
+$purple-100: tint-color($purple, 8) !default;
+$purple-200: tint-color($purple, 6) !default;
+$purple-300: tint-color($purple, 4) !default;
+$purple-400: tint-color($purple, 2) !default;
+$purple-500: $purple !default;
+$purple-600: shade-color($purple, 2) !default;
+$purple-700: shade-color($purple, 4) !default;
+$purple-800: shade-color($purple, 6) !default;
+$purple-900: shade-color($purple, 8) !default;
+
+$pink-100: tint-color($pink, 8) !default;
+$pink-200: tint-color($pink, 6) !default;
+$pink-300: tint-color($pink, 4) !default;
+$pink-400: tint-color($pink, 2) !default;
+$pink-500: $pink !default;
+$pink-600: shade-color($pink, 2) !default;
+$pink-700: shade-color($pink, 4) !default;
+$pink-800: shade-color($pink, 6) !default;
+$pink-900: shade-color($pink, 8) !default;
+
+$red-100: tint-color($red, 8) !default;
+$red-200: tint-color($red, 6) !default;
+$red-300: tint-color($red, 4) !default;
+$red-400: tint-color($red, 2) !default;
+$red-500: $red !default;
+$red-600: shade-color($red, 2) !default;
+$red-700: shade-color($red, 4) !default;
+$red-800: shade-color($red, 6) !default;
+$red-900: shade-color($red, 8) !default;
+
+$orange-100: tint-color($orange, 8) !default;
+$orange-200: tint-color($orange, 6) !default;
+$orange-300: tint-color($orange, 4) !default;
+$orange-400: tint-color($orange, 2) !default;
+$orange-500: $orange !default;
+$orange-600: shade-color($orange, 2) !default;
+$orange-700: shade-color($orange, 4) !default;
+$orange-800: shade-color($orange, 6) !default;
+$orange-900: shade-color($orange, 8) !default;
+
+$yellow-100: tint-color($yellow, 8) !default;
+$yellow-200: tint-color($yellow, 6) !default;
+$yellow-300: tint-color($yellow, 4) !default;
+$yellow-400: tint-color($yellow, 2) !default;
+$yellow-500: $yellow !default;
+$yellow-600: shade-color($yellow, 2) !default;
+$yellow-700: shade-color($yellow, 4) !default;
+$yellow-800: shade-color($yellow, 6) !default;
+$yellow-900: shade-color($yellow, 8) !default;
+
+$green-100: tint-color($green, 8) !default;
+$green-200: tint-color($green, 6) !default;
+$green-300: tint-color($green, 4) !default;
+$green-400: tint-color($green, 2) !default;
+$green-500: $green !default;
+$green-600: shade-color($green, 2) !default;
+$green-700: shade-color($green, 4) !default;
+$green-800: shade-color($green, 6) !default;
+$green-900: shade-color($green, 8) !default;
+
+$teal-100: tint-color($teal, 8) !default;
+$teal-200: tint-color($teal, 6) !default;
+$teal-300: tint-color($teal, 4) !default;
+$teal-400: tint-color($teal, 2) !default;
+$teal-500: $teal !default;
+$teal-600: shade-color($teal, 2) !default;
+$teal-700: shade-color($teal, 4) !default;
+$teal-800: shade-color($teal, 6) !default;
+$teal-900: shade-color($teal, 8) !default;
+
+$cyan-100: tint-color($cyan, 8) !default;
+$cyan-200: tint-color($cyan, 6) !default;
+$cyan-300: tint-color($cyan, 4) !default;
+$cyan-400: tint-color($cyan, 2) !default;
+$cyan-500: $cyan !default;
+$cyan-600: shade-color($cyan, 2) !default;
+$cyan-700: shade-color($cyan, 4) !default;
+$cyan-800: shade-color($cyan, 6) !default;
+$cyan-900: shade-color($cyan, 8) !default;
+// fusv-enable
+
 // Characters which are escaped by the escape-svg function
 $escaped-characters: (
   ("<","%3c"),
index 10ad8efdb7d2c51010942a2a04f69e4210bb43cc..b698b807b5723d8ce2003db01d4e8a97e51c70bf 100644 (file)
     background-color: #{$value};
   }
 }
+
+// stylelint-disable declaration-block-single-line-max-declarations
+
+.bd-blue-100 { color: color-yiq($blue-100); background-color: $blue-100; }
+.bd-blue-200 { color: color-yiq($blue-200); background-color: $blue-200; }
+.bd-blue-300 { color: color-yiq($blue-300); background-color: $blue-300; }
+.bd-blue-400 { color: color-yiq($blue-400); background-color: $blue-400; }
+.bd-blue-500 { color: color-yiq($blue-500); background-color: $blue-500; }
+.bd-blue-600 { color: color-yiq($blue-600); background-color: $blue-600; }
+.bd-blue-700 { color: color-yiq($blue-700); background-color: $blue-700; }
+.bd-blue-800 { color: color-yiq($blue-800); background-color: $blue-800; }
+.bd-blue-900 { color: color-yiq($blue-900); background-color: $blue-900; }
+
+.bd-indigo-100 { color: color-yiq($indigo-100); background-color: $indigo-100; }
+.bd-indigo-200 { color: color-yiq($indigo-200); background-color: $indigo-200; }
+.bd-indigo-300 { color: color-yiq($indigo-300); background-color: $indigo-300; }
+.bd-indigo-400 { color: color-yiq($indigo-400); background-color: $indigo-400; }
+.bd-indigo-500 { color: color-yiq($indigo-500); background-color: $indigo-500; }
+.bd-indigo-600 { color: color-yiq($indigo-600); background-color: $indigo-600; }
+.bd-indigo-700 { color: color-yiq($indigo-700); background-color: $indigo-700; }
+.bd-indigo-800 { color: color-yiq($indigo-800); background-color: $indigo-800; }
+.bd-indigo-900 { color: color-yiq($indigo-900); background-color: $indigo-900; }
+
+.bd-purple-100 { color: color-yiq($purple-100); background-color: $purple-100; }
+.bd-purple-200 { color: color-yiq($purple-200); background-color: $purple-200; }
+.bd-purple-300 { color: color-yiq($purple-300); background-color: $purple-300; }
+.bd-purple-400 { color: color-yiq($purple-400); background-color: $purple-400; }
+.bd-purple-500 { color: color-yiq($purple-500); background-color: $purple-500; }
+.bd-purple-600 { color: color-yiq($purple-600); background-color: $purple-600; }
+.bd-purple-700 { color: color-yiq($purple-700); background-color: $purple-700; }
+.bd-purple-800 { color: color-yiq($purple-800); background-color: $purple-800; }
+.bd-purple-900 { color: color-yiq($purple-900); background-color: $purple-900; }
+
+.bd-pink-100 { color: color-yiq($pink-100); background-color: $pink-100; }
+.bd-pink-200 { color: color-yiq($pink-200); background-color: $pink-200; }
+.bd-pink-300 { color: color-yiq($pink-300); background-color: $pink-300; }
+.bd-pink-400 { color: color-yiq($pink-400); background-color: $pink-400; }
+.bd-pink-500 { color: color-yiq($pink-500); background-color: $pink-500; }
+.bd-pink-600 { color: color-yiq($pink-600); background-color: $pink-600; }
+.bd-pink-700 { color: color-yiq($pink-700); background-color: $pink-700; }
+.bd-pink-800 { color: color-yiq($pink-800); background-color: $pink-800; }
+.bd-pink-900 { color: color-yiq($pink-900); background-color: $pink-900; }
+
+.bd-red-100 { color: color-yiq($red-100); background-color: $red-100; }
+.bd-red-200 { color: color-yiq($red-200); background-color: $red-200; }
+.bd-red-300 { color: color-yiq($red-300); background-color: $red-300; }
+.bd-red-400 { color: color-yiq($red-400); background-color: $red-400; }
+.bd-red-500 { color: color-yiq($red-500); background-color: $red-500; }
+.bd-red-600 { color: color-yiq($red-600); background-color: $red-600; }
+.bd-red-700 { color: color-yiq($red-700); background-color: $red-700; }
+.bd-red-800 { color: color-yiq($red-800); background-color: $red-800; }
+.bd-red-900 { color: color-yiq($red-900); background-color: $red-900; }
+
+.bd-orange-100 { color: color-yiq($orange-100); background-color: $orange-100; }
+.bd-orange-200 { color: color-yiq($orange-200); background-color: $orange-200; }
+.bd-orange-300 { color: color-yiq($orange-300); background-color: $orange-300; }
+.bd-orange-400 { color: color-yiq($orange-400); background-color: $orange-400; }
+.bd-orange-500 { color: color-yiq($orange-500); background-color: $orange-500; }
+.bd-orange-600 { color: color-yiq($orange-600); background-color: $orange-600; }
+.bd-orange-700 { color: color-yiq($orange-700); background-color: $orange-700; }
+.bd-orange-800 { color: color-yiq($orange-800); background-color: $orange-800; }
+.bd-orange-900 { color: color-yiq($orange-900); background-color: $orange-900; }
+
+.bd-yellow-100 { color: color-yiq($yellow-100); background-color: $yellow-100; }
+.bd-yellow-200 { color: color-yiq($yellow-200); background-color: $yellow-200; }
+.bd-yellow-300 { color: color-yiq($yellow-300); background-color: $yellow-300; }
+.bd-yellow-400 { color: color-yiq($yellow-400); background-color: $yellow-400; }
+.bd-yellow-500 { color: color-yiq($yellow-500); background-color: $yellow-500; }
+.bd-yellow-600 { color: color-yiq($yellow-600); background-color: $yellow-600; }
+.bd-yellow-700 { color: color-yiq($yellow-700); background-color: $yellow-700; }
+.bd-yellow-800 { color: color-yiq($yellow-800); background-color: $yellow-800; }
+.bd-yellow-900 { color: color-yiq($yellow-900); background-color: $yellow-900; }
+
+.bd-green-100 { color: color-yiq($green-100); background-color: $green-100; }
+.bd-green-200 { color: color-yiq($green-200); background-color: $green-200; }
+.bd-green-300 { color: color-yiq($green-300); background-color: $green-300; }
+.bd-green-400 { color: color-yiq($green-400); background-color: $green-400; }
+.bd-green-500 { color: color-yiq($green-500); background-color: $green-500; }
+.bd-green-600 { color: color-yiq($green-600); background-color: $green-600; }
+.bd-green-700 { color: color-yiq($green-700); background-color: $green-700; }
+.bd-green-800 { color: color-yiq($green-800); background-color: $green-800; }
+.bd-green-900 { color: color-yiq($green-900); background-color: $green-900; }
+
+.bd-teal-100 { color: color-yiq($teal-100); background-color: $teal-100; }
+.bd-teal-200 { color: color-yiq($teal-200); background-color: $teal-200; }
+.bd-teal-300 { color: color-yiq($teal-300); background-color: $teal-300; }
+.bd-teal-400 { color: color-yiq($teal-400); background-color: $teal-400; }
+.bd-teal-500 { color: color-yiq($teal-500); background-color: $teal-500; }
+.bd-teal-600 { color: color-yiq($teal-600); background-color: $teal-600; }
+.bd-teal-700 { color: color-yiq($teal-700); background-color: $teal-700; }
+.bd-teal-800 { color: color-yiq($teal-800); background-color: $teal-800; }
+.bd-teal-900 { color: color-yiq($teal-900); background-color: $teal-900; }
+
+.bd-cyan-100 { color: color-yiq($cyan-100); background-color: $cyan-100; }
+.bd-cyan-200 { color: color-yiq($cyan-200); background-color: $cyan-200; }
+.bd-cyan-300 { color: color-yiq($cyan-300); background-color: $cyan-300; }
+.bd-cyan-400 { color: color-yiq($cyan-400); background-color: $cyan-400; }
+.bd-cyan-500 { color: color-yiq($cyan-500); background-color: $cyan-500; }
+.bd-cyan-600 { color: color-yiq($cyan-600); background-color: $cyan-600; }
+.bd-cyan-700 { color: color-yiq($cyan-700); background-color: $cyan-700; }
+.bd-cyan-800 { color: color-yiq($cyan-800); background-color: $cyan-800; }
+.bd-cyan-900 { color: color-yiq($cyan-900); background-color: $cyan-900; }
index 1703770e7026e8758f7ff29d133e8cfa9b3a8a9e..46475f2bb46ca56d64e60ef92419bebace929937 100644 (file)
@@ -242,14 +242,24 @@ Many of Bootstrap's various components and utilities are built through a series
 
 ### All colors
 
-All colors available in Bootstrap 4, are available as Sass variables and a Sass map in `scss/_variables.scss` file. This will be expanded upon in subsequent minor releases to add additional shades, much like the [grayscale palette](#grays) we already include.
+All colors available in Bootstrap 5, are available as Sass variables and a Sass map in `scss/_variables.scss` file. To avoid increased file sizes, we do not create classes for each of these variables.
+
+Sass cannot programmatically generate variables, so we must manually create them ourselves. We specify the midpoint value (`500`) and use custom color functions to tint (lighten) or shade (darken) our colors via Sass's `mix()` color function. Using `mix()` is not the same as `lighten()` and `darken()`—the former blends the specified color with white or black, while the latter only adjusts the lightness value of each color. The result is a much more complete suite of colors, as [shown in this CodePen demo](https://codepen.io/emdeoh/pen/zYOQOPB).
+
+Our `tint-color()` and `shade-color()` functions use `mix()` alongside our `$theme-color-interval` variable, which specifies a stepped percentage value for each mixed color we need. See the `scss/_functions.scss` and `scss/_variables.scss` files for the full source code.
 
 <div class="row">
   {{< theme-colors.inline >}}
-  {{- range $.Site.Data.colors }}
-    {{- if (and (not (eq .name "white")) (not (eq .name "gray")) (not (eq .name "gray-dark"))) }}
-    <div class="col-md-4">
-      <div class="p-3 mb-3 swatch-{{ .name }}">{{ .name | title }}</div>
+  {{- range $color := $.Site.Data.colors }}
+    {{- if (and (not (eq $color.name "white")) (not (eq $color.name "gray")) (not (eq $color.name "gray-dark"))) }}
+    <div class="col-md-4 mb-3 font-monospace">
+      <div class="p-3 mb-2 swatch-{{ $color.name }}">
+        <strong class="d-block">${{ $color.name }}</strong>
+        {{ $color.hex }}
+      </div>
+      {{ range (seq 100 100 900) }}
+      <div class="p-3 bd-{{ $color.name }}-{{ . }}">${{ $color.name }}-{{ . }}</div>
+      {{ end }}
     </div>
     {{ end -}}
   {{ end -}}
@@ -260,6 +270,10 @@ Here's how you can use these in your Sass:
 
 {{< highlight scss >}}
 .alpha { color: $purple; }
+.beta {
+  color: $yellow-300;
+  background-color: $indigo-900;
+}
 {{< /highlight >}}
 
 [Color utility classes]({{< docsref "/utilities/colors" >}}) are also available for setting `color` and `background-color`.