packages/core/styles/components/button.pcss (121 lines of code) (raw):
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
:root {
--ifm-button-background-color: inherit;
--ifm-button-border-color: var(--ifm-button-background-color);
--ifm-button-border-width: var(--ifm-global-border-width);
--ifm-button-color: var(--ifm-font-color-base-inverse);
--ifm-button-font-weight: var(--ifm-font-weight-bold);
--ifm-button-padding-horizontal: 1.5rem;
--ifm-button-padding-vertical: 0.375rem;
--ifm-button-size-multiplier: 1;
--ifm-button-transition-duration: var(--ifm-transition-fast);
--ifm-button-border-radius: calc(
var(--ifm-global-radius) * var(--ifm-button-size-multiplier)
);
}
.button {
background-color: var(--ifm-button-background-color);
border-color: var(--ifm-button-border-color);
border-radius: var(--ifm-button-border-radius);
border-style: solid;
border-width: var(--ifm-button-border-width);
color: var(--ifm-button-color);
cursor: pointer;
display: inline-block;
font-size: calc(0.875rem * var(--ifm-button-size-multiplier));
font-weight: var(--ifm-button-font-weight);
line-height: 1.5;
padding: calc(
var(--ifm-button-padding-vertical) * var(--ifm-button-size-multiplier)
)
calc(
var(--ifm-button-padding-horizontal) * var(--ifm-button-size-multiplier)
);
text-align: center;
user-select: none;
vertical-align: middle;
white-space: nowrap;
@mixin transition color background border-color,
var(--ifm-button-transition-duration), var(--ifm-transition-timing-default);
&:hover {
color: var(--ifm-button-color); /* Override for button links. */
text-decoration: none;
}
&--outline {
--ifm-button-background-color: transparent;
--ifm-button-color: var(--ifm-button-border-color);
&:hover {
--ifm-button-background-color: var(--ifm-button-border-color);
}
&:hover,
&:active,
&^&--active {
--ifm-button-color: var(--ifm-font-color-base-inverse);
}
}
&--link {
--ifm-button-background-color: transparent;
--ifm-button-border-color: transparent;
color: var(--ifm-link-color);
/* autoprefixer: ignore next */
text-decoration: var(--ifm-link-decoration);
&:hover,
&:active,
&^&--active {
color: var(--ifm-link-hover-color);
/* autoprefixer: ignore next */
text-decoration: var(--ifm-link-hover-decoration);
}
}
&.disabled,
&:disabled,
&[disabled] {
opacity: 0.65;
pointer-events: none;
}
&--sm {
--ifm-button-size-multiplier: 0.8;
}
&--lg {
--ifm-button-size-multiplier: 1.35;
}
&--block {
display: block;
width: 100%;
}
&&--secondary {
color: var(--ifm-color-gray-900);
&.button--outline:not(.button--active):not(:hover) {
color: var(--ifm-font-color-base);
}
}
}
@each $color in (primary, secondary, success, info, warning, danger) {
.button--$(color) {
--ifm-button-border-color: var(--ifm-color-$(color));
&:not(.button--outline) {
--ifm-button-background-color: var(--ifm-color-$(color));
&:hover {
--ifm-button-background-color: var(--ifm-color-$(color)-dark);
--ifm-button-border-color: var(--ifm-color-$(color)-dark);
}
}
}
/* Increase specificity. */
.button--$(color) {
&:active,
&.button--active {
--ifm-button-border-color: var(--ifm-color-$(color)-darker);
--ifm-button-background-color: var(--ifm-color-$(color)-darker);
/* Has to be explicitly defined because .button--outline has quite high specificity. */
background-color: var(--ifm-color-$(color)-darker);
/* Has to be explicitly defined because .button--outline has quite high specificity. */
border-color: var(--ifm-color-$(color)-darker);
}
}
}