1
1
mirror of https://github.com/primer/css.git synced 2024-11-30 19:53:11 +03:00
css/scss/_buttons.scss

382 lines
7.0 KiB
SCSS

// Shared styles
.btn {
position: relative;
display: inline-block;
padding: 6px 12px;
font-size: 13px;
font-weight: bold;
line-height: 20px;
color: #333;
white-space: nowrap;
vertical-align: middle;
cursor: pointer;
@include gradient(#fcfcfc, #eee);
border: 1px solid #d5d5d5;
border-radius: 3px;
user-select: none;
-webkit-appearance: none; // Corrects inability to style clickable `input` types in iOS.
i {
font-style: normal;
font-weight: 500;
opacity: 0.6;
}
.octicon {
vertical-align: text-top;
}
&:focus {
text-decoration: none;
border-color: #51a7e8;
outline: none;
box-shadow: 0 0 5px rgba(81, 167, 232, 0.5);
}
&:hover,
&:active,
&.zeroclipboard-is-hover,
&.zeroclipboard-is-active {
text-decoration: none;
@include gradient(#eee, #ddd);
border-color: #ccc;
}
&:active,
&.selected,
&.selected:hover,
&.zeroclipboard-is-active {
background-color: #dcdcdc;
background-image: none;
border-color: #b5b5b5;
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);
}
&:disabled,
&.disabled {
&,
&:hover {
color: rgba(102, 102, 102, 0.5);
cursor: default;
background-color: rgba(229, 229, 229, 0.5);
background-image: none;
border-color: rgba(197, 197, 197, 0.5);
box-shadow: none;
}
}
}
// Green primary button
.btn-primary {
color: #fff;
text-shadow: 0 -1px 0 rgba(0,0,0,0.15);
@include gradient(#8add6d, #60b044);
border-color: darken(#60b044, 2%);
&:hover {
color: #fff;
@include gradient(darken(#8add6d, 5%), darken(#60b044, 5%));
border-color: #4a993e;
}
&:active,
&.selected {
text-shadow: 0 1px 0 rgba(0,0,0,0.15);
background-color: darken(#60b044, 5%);
background-image: none;
border-color: darken(#4a993e, 5%);
}
&:disabled,
&.disabled {
&,
&:hover {
color: #fefefe;
@include gradient(#c3ecb4, #add39f);
border-color: #b9dcac #b9dcac #a7c89b;
}
}
}
// Red danger button
.btn-danger {
color: #900;
&:hover {
color: #fff;
@include gradient(#dc5f59, #b33630);
border-color: #cd504a;
}
&:active,
&.selected {
color: #fff;
background-color: #b33630;
background-image: none;
border-color: darken(#cd504a, 15%);
}
&:disabled,
&.disabled {
&,
&:hover {
color: #cb7f7f;
@include gradient(#fefefe, #efefef);
border-color: #e1e1e1;
}
}
}
// Outline button
//
// For when we need a linky-action that's not too heavy in busier
// areas like conversation timelines.
.btn-outline {
color: $brand-blue;
background-color: #fff; // Reset default gradient backgrounds and colors
background-image: none;
border: 1px solid #e5e5e5;
&:hover,
&:active,
&.selected,
&.selected:hover,
&.zeroclipboard-is-hover,
&.zeroclipboard-is-active {
color: #fff;
background-color: $brand-blue;
background-image: none;
border-color: $brand-blue;
}
&:disabled,
&.disabled {
&,
&:hover {
color: #777;
background-color: #fff;
background-image: none;
border-color: #e5e5e5;
}
}
}
// Social button count
.btn-with-count {
float: left;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
// Octicon buttons
//
// Improve alignemnt of Octicons within buttons and minibuttons. Also auto tweak
// the right arrow to float right for ease of use.
.btn {
> .octicon-arrow-right {
float: right;
margin-left: 5px;
}
}
// Required because we nuke the padding on minibuttons
.btn-sm > .octicon-arrow-right {
margin-top: 4px;
}
// Minibutton overrides
//
// Tweak `line-height` to make them smaller.
.btn-sm {
padding: 2px 10px;
}
// Hidden text button
//
// Use `.hidden-text-expander` to indicate and expand hidden text.
.hidden-text-expander {
display: block;
&.inline {
position: relative;
top: -1px;
display: inline-block;
margin-left: 5px;
line-height: 0;
}
a {
display: inline-block;
height: 12px;
padding: 0 5px;
font-size: 12px;
font-weight: bold;
line-height: 6px;
color: #555;
text-decoration: none;
vertical-align: middle;
background: #ddd;
border-radius: 1px;
&:hover {
text-decoration: none;
background-color: #ccc;
}
&:active {
color: #fff;
background-color: #4183c4;
}
}
}
// Social count bubble
//
// A container that is used for social bubbles counts.
.social-count {
float: left;
padding: 2px 7px;
font-size: 11px;
font-weight: bold;
line-height: 20px;
color: $brand-gray-dark;
vertical-align: middle;
background-color: #fff;
border: 1px solid #ddd;
border-left: 0;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
&:hover {
color: $brand-blue;
text-decoration: none;
cursor: pointer;
}
}
// Full-width button
//
// These buttons expand to the full width of their parent container
.btn-block {
display: block;
width: 100%;
text-align: center;
}
// Button group
//
// A button group is a series of buttons laid out next to each other, all part
// of one visual button, but separated by rules to be separate.
.btn-group {
display: inline-block;
vertical-align: middle;
@include clearfix();
.btn {
position: relative;
float: left;
&:not(:first-child):not(:last-child) {
border-radius: 0;
}
&:first-child {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
&:last-child {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
// Bring any button into forefront for proper borders given negative margin below
&:hover,
&:focus,
&:active,
&.selected {
z-index: 2;
}
}
// Tuck buttons into one another to prevent double border
.btn + .btn {
margin-left: -1px;
box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.2);
&:hover {
box-shadow: none;
}
&:active,
&.selected {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.15);
}
}
.button_to + .button_to {
margin-left: -1px;
}
.button_to {
float: left;
.btn {
border-radius: 0;
}
&:first-child {
.btn {
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
}
&:last-child {
.btn {
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
}
}
}
// Proper spacing for multiple button groups (a la, gollum editor)
.btn-group + .btn-group,
.btn-group + .btn {
margin-left: 5px;
}
// Radio buttons
//
// Buttons backed by radio or checkbox control. Requires the use of `.hidden`
// on the `input` to properly hide it.
.btn-link {
display: inline-block;
padding: 0;
font-size: inherit;
color: $brand-blue;
white-space: nowrap;
cursor: pointer;
background-color: transparent;
border: 0;
user-select: none;
-webkit-appearance: none; // Corrects inability to style clickable `input` types in iOS.
&:hover,
&:focus {
text-decoration: underline;
}
&:focus {
outline: none; // Prevents the blue ring when clicked.
}
}