From 9b4e5746a4340855e86ed16e15331e10ac23a687 Mon Sep 17 00:00:00 2001
From: Mark Otto <otto@github.com>
Date: Wed, 19 Dec 2012 22:54:04 -0800
Subject: [PATCH] More button tweaks

---
 docs/assets/css/bootstrap.css | 170 ++++++++++++++++++++++++++++------
 less/button-groups.less       |   8 +-
 less/buttons.less             |  24 ++---
 less/mixins.less              |  37 +++++++-
 less/variables.less           |  17 ++--
 5 files changed, 200 insertions(+), 56 deletions(-)

diff --git a/docs/assets/css/bootstrap.css b/docs/assets/css/bootstrap.css
index e3214cbc5d..0def4f909d 100644
--- a/docs/assets/css/bootstrap.css
+++ b/docs/assets/css/bootstrap.css
@@ -180,6 +180,27 @@ textarea {
   }
 }
 
+/*.buttonBackground(@startColor, @endColor, @text-color: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
+  color: @text-color;
+  text-shadow: @textShadow;
+  #gradient > .vertical(@startColor, @endColor);
+  border-color: @endColor @endColor darken(@endColor, 15%);
+  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
+  .reset-filter();
+
+  // in these cases the gradient won't cover the background, so we override
+  &:hover, &:active, &.active, &.disabled, &[disabled] {
+    color: @text-color;
+    background-color: @endColor;
+  }
+
+  // IE8 can't handle box-shadow to show active, so we darken a bit ourselves
+  &:active,
+  &.active {
+    background-color: darken(@endColor, 10%) e("\9");
+  }
+}*/
+
 body {
   margin: 0;
   color: #333333;
@@ -2541,22 +2562,27 @@ button.close {
 
 .btn {
   display: inline-block;
-  padding: 7px 13px;
+  padding: 6px 13px;
   margin-bottom: 0;
   font-size: 14px;
-  font-weight: bold;
   line-height: 20px;
   color: #555555;
   text-align: center;
+  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.75);
   vertical-align: middle;
   cursor: pointer;
-  background-color: #eee;
-  border: 0;
+  background-color: #f0f0f0;
+  background-image: -moz-linear-gradient(top, #fafafa, #e1e1e1);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fafafa), to(#e1e1e1));
+  background-image: -webkit-linear-gradient(top, #fafafa, #e1e1e1);
+  background-image: -o-linear-gradient(top, #fafafa, #e1e1e1);
+  background-image: linear-gradient(to bottom, #fafafa, #e1e1e1);
+  background-repeat: repeat-x;
+  border: 1px solid #c7c7c7;
   border-radius: 4px;
-  -webkit-transition: all 0.075s ease-in-out;
-     -moz-transition: all 0.075s ease-in-out;
-       -o-transition: all 0.075s ease-in-out;
-          transition: all 0.075s ease-in-out;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
+  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
+          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25);
 }
 
 .btn:focus {
@@ -2567,14 +2593,14 @@ button.close {
 
 .btn:hover {
   text-decoration: none;
-  background-color: #ddd;
 }
 
 .btn:active,
 .btn.active {
+  background-image: none;
   outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255, 255, 255, 0.1);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255, 255, 255, 0.1);
+  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255, 255, 255, 0.1);
+          box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.15), 0 1px 0 rgba(255, 255, 255, 0.1);
 }
 
 .btn.disabled,
@@ -2640,50 +2666,110 @@ input[type="button"].btn-block {
 
 .btn-primary {
   color: #ffffff;
-  background-color: #0088cc;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #006dcc;
+  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
+  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
+  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
+  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
+  background-repeat: repeat-x;
+  border-color: #003bb3;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
 }
 
 .btn-primary:hover,
 .btn-primary:active,
 .btn-primary.active {
   color: #ffffff;
-  background-color: #006699;
+  background-color: #0044cc;
+  background-position: 0 -15px;
+}
+
+.btn-primary:active,
+.btn-primary.active {
+  background-image: none;
 }
 
 .btn-warning {
   color: #ffffff;
-  background-color: #fbb450;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #faa732;
+  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
+  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
+  background-image: -o-linear-gradient(top, #fbb450, #f89406);
+  background-image: linear-gradient(to bottom, #fbb450, #f89406);
+  background-repeat: repeat-x;
+  border-color: #df8505;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
 }
 
 .btn-warning:hover,
 .btn-warning:active,
 .btn-warning.active {
   color: #ffffff;
-  background-color: #fa9f1e;
+  background-color: #f89406;
+  background-position: 0 -15px;
+}
+
+.btn-warning:active,
+.btn-warning.active {
+  background-image: none;
 }
 
 .btn-danger {
   color: #ffffff;
-  background-color: #ee5f5b;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #da4f49;
+  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
+  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
+  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
+  background-repeat: repeat-x;
+  border-color: #a9302a;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
 }
 
 .btn-danger:hover,
 .btn-danger:active,
 .btn-danger.active {
   color: #ffffff;
-  background-color: #e9322d;
+  background-color: #bd362f;
+  background-position: 0 -15px;
+}
+
+.btn-danger:active,
+.btn-danger.active {
+  background-image: none;
 }
 
 .btn-success {
   color: #ffffff;
-  background-color: #62c462;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #5bb75b;
+  background-image: -moz-linear-gradient(top, #62c462, #51a351);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
+  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
+  background-image: -o-linear-gradient(top, #62c462, #51a351);
+  background-image: linear-gradient(to bottom, #62c462, #51a351);
+  background-repeat: repeat-x;
+  border-color: #499249;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
 }
 
 .btn-success:hover,
 .btn-success:active,
 .btn-success.active {
   color: #ffffff;
-  background-color: #42b142;
+  background-color: #51a351;
+  background-position: 0 -15px;
+}
+
+.btn-success:active,
+.btn-success.active {
+  background-image: none;
 }
 
 .btn-link,
@@ -3469,8 +3555,17 @@ input[type="button"].btn-block {
   padding: 7px 10px;
   margin-right: 5px;
   margin-left: 5px;
-  color: #e5e5e5;
-  background-color: #f2f2f2;
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #ededed;
+  background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5));
+  background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5);
+  background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5);
+  background-repeat: repeat-x;
+  border-color: #d9d9d9;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0);
   -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
           box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.075);
 }
@@ -3478,8 +3573,14 @@ input[type="button"].btn-block {
 .navbar .btn-navbar:hover,
 .navbar .btn-navbar:active,
 .navbar .btn-navbar.active {
-  color: #e5e5e5;
-  background-color: #d9d9d9;
+  color: #ffffff;
+  background-color: #e5e5e5;
+  background-position: 0 -15px;
+}
+
+.navbar .btn-navbar:active,
+.navbar .btn-navbar.active {
+  background-image: none;
 }
 
 .navbar .btn-navbar .icon-bar {
@@ -3703,15 +3804,30 @@ input[type="button"].btn-block {
 }
 
 .navbar-inverse .btn-navbar {
-  color: #040404;
-  background-color: #151515;
+  color: #ffffff;
+  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+  background-color: #0e0e0e;
+  background-image: -moz-linear-gradient(top, #151515, #040404);
+  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404));
+  background-image: -webkit-linear-gradient(top, #151515, #040404);
+  background-image: -o-linear-gradient(top, #151515, #040404);
+  background-image: linear-gradient(to bottom, #151515, #040404);
+  background-repeat: repeat-x;
+  border-color: #000000;
+  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0);
 }
 
 .navbar-inverse .btn-navbar:hover,
 .navbar-inverse .btn-navbar:active,
 .navbar-inverse .btn-navbar.active {
-  color: #040404;
-  background-color: #000000;
+  color: #ffffff;
+  background-color: #040404;
+  background-position: 0 -15px;
+}
+
+.navbar-inverse .btn-navbar:active,
+.navbar-inverse .btn-navbar.active {
+  background-image: none;
 }
 
 .breadcrumb {
diff --git a/less/button-groups.less b/less/button-groups.less
index 01f84517f9..f9bcd11625 100644
--- a/less/button-groups.less
+++ b/less/button-groups.less
@@ -126,16 +126,16 @@
     background-color: @btn-background-highlight;
   }
   .btn-primary.dropdown-toggle {
-    background-color: @btn-backround-primary-highlight;
+    background-color: @btn-background-primary-highlight;
   }
   .btn-warning.dropdown-toggle {
-    background-color: @btn-backround-warning-highlight;
+    background-color: @btn-background-warning-highlight;
   }
   .btn-danger.dropdown-toggle {
-    background-color: @btn-backround-danger-highlight;
+    background-color: @btn-background-danger-highlight;
   }
   .btn-success.dropdown-toggle {
-    background-color: @btn-backround-success-highlight;
+    background-color: @btn-background-success-highlight;
   }
 }
 
diff --git a/less/buttons.less b/less/buttons.less
index 72a70f535b..d35b7f9011 100644
--- a/less/buttons.less
+++ b/less/buttons.less
@@ -9,19 +9,19 @@
 // Core styles
 .btn {
   display: inline-block;
-  padding: 7px 13px;
+  padding: 6px 13px;
   margin-bottom: 0; // For input.btn
   font-size: @font-size-base;
-  font-weight: bold;
   line-height: @line-height-base;
-  text-align: center;
   color: @gray;
+  text-align: center;
+  text-shadow: 0 1px 0 rgba(255,255,255,.75);
   vertical-align: middle;
   cursor: pointer;
-  background-color: #eee;
-  border: 0;
+  #gradient > .vertical(@btn-background, @btn-background-highlight);
+  border: 1px solid darken(@btn-background, 20%);
   border-radius: @border-radius-base;
-  .transition(all .075s ease-in-out);
+  .box-shadow(inset 0 1px 0 rgba(255,255,255,.25));
 
   &:focus {
     .tab-focus();
@@ -29,13 +29,13 @@
 
   &:hover {
     text-decoration: none;
-    background-color: #ddd;
   }
 
   &:active,
   &.active {
     outline: 0;
-    .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 0 rgba(255,255,255,.1)");
+    background-image: none;
+    .box-shadow(~"inset 0 3px 5px rgba(0,0,0,.15), 0 1px 0 rgba(255,255,255,.1)");
   }
 
   &.disabled,
@@ -116,19 +116,19 @@ input[type="button"] {
 // --------------------------------------------------
 
 .btn-primary {
-  .buttonBackground(@btn-backround-primary);
+  .buttonBackground(@btn-background-primary, @btn-background-primary-highlight);
 }
 // Warning appears are orange
 .btn-warning {
-  .buttonBackground(@btn-backround-warning);
+  .buttonBackground(@btn-background-warning, @btn-background-warning-highlight);
 }
 // Danger and error appear as red
 .btn-danger {
-  .buttonBackground(@btn-backround-danger);
+  .buttonBackground(@btn-background-danger, @btn-background-danger-highlight);
 }
 // Success appears as green
 .btn-success {
-  .buttonBackground(@btn-backround-success);
+  .buttonBackground(@btn-background-success, @btn-background-success-highlight);
 }
 
 
diff --git a/less/mixins.less b/less/mixins.less
index 13d9ad2054..da430a2779 100644
--- a/less/mixins.less
+++ b/less/mixins.less
@@ -405,17 +405,46 @@
 
 // Button backgrounds
 // ------------------
-.buttonBackground(@background-color: #333, @text-color: #fff) {
+/*.buttonBackground(@startColor, @endColor, @text-color: #fff, @textShadow: 0 -1px 0 rgba(0,0,0,.25)) {
   color: @text-color;
-  background-color: @background-color;
+  text-shadow: @textShadow;
+  #gradient > .vertical(@startColor, @endColor);
+  border-color: @endColor @endColor darken(@endColor, 15%);
+  border-color: rgba(0,0,0,.1) rgba(0,0,0,.1) fadein(rgba(0,0,0,.1), 15%);
+  .reset-filter();
+
+  // in these cases the gradient won't cover the background, so we override
+  &:hover, &:active, &.active, &.disabled, &[disabled] {
+    color: @text-color;
+    background-color: @endColor;
+  }
+
+  // IE8 can't handle box-shadow to show active, so we darken a bit ourselves
+  &:active,
+  &.active {
+    background-color: darken(@endColor, 10%) e("\9");
+  }
+}*/
+
+// Button backgrounds
+// ------------------
+.buttonBackground(@background-start, @background-end, @text-color: #fff, @text-shadow: 0 -1px 0 rgba(0,0,0,.25)) {
+  color: @text-color;
+  text-shadow: @text-shadow;
+  #gradient > .vertical(@background-start, @background-end);
+  border-color: darken(@background-end, 5%);
 
   &:hover,
   &:active,
   &.active {
     color: @text-color;
-    background-color: darken(@background-color, 10%);
+    background-position: 0 -15px;
+    background-color: @background-end;
+  }
+  &:active,
+  &.active {
+    background-image: none;
   }
-
 }
 
 
diff --git a/less/variables.less b/less/variables.less
index d881f55aa7..78ccca53f0 100644
--- a/less/variables.less
+++ b/less/variables.less
@@ -77,19 +77,18 @@
 
 @btn-background:                     #fafafa;
 @btn-background-highlight:           darken(@btn-background, 10%);
-@btn-border:                         #bbb;
 
-@btn-backround-primary:              @link-color;
-@btn-backround-primary-highlight:    spin(@btn-backround-primary, 20%);
+@btn-background-primary:              @link-color;
+@btn-background-primary-highlight:    spin(@btn-background-primary, 20%);
 
-@btn-backround-success:              #62c462;
-@btn-backround-success-highlight:    #51a351;
+@btn-background-success:              #62c462;
+@btn-background-success-highlight:    #51a351;
 
-@btn-backround-warning:              lighten(#f89406, 15%);
-@btn-backround-warning-highlight:    #f89406;
+@btn-background-warning:              lighten(#f89406, 15%);
+@btn-background-warning-highlight:    #f89406;
 
-@btn-backround-danger:               #ee5f5b;
-@btn-backround-danger-highlight:     #bd362f;
+@btn-background-danger:               #ee5f5b;
+@btn-background-danger-highlight:     #bd362f;
 
 
 // Forms
-- 
GitLab