infima
Version:
A UI framework for content-centric websites.
149 lines (128 loc) • 4.01 kB
CSS
// TODO: Compat
: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 {
appearance: none;
background-color: var(--ifm-button-background-color);
border-color: var(--ifm-button-border-color);
border-style: solid;
border-width: var(--ifm-button-border-width);
border-radius: var(--ifm-button-border-radius);
box-sizing: border-box;
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;
outline: 0;
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;
text-decoration: none;
transition: color var(--ifm-button-transition-duration)
cubic-bezier(0.08, 0.52, 0.52, 1),
background var(--ifm-button-transition-duration)
cubic-bezier(0.08, 0.52, 0.52, 1),
border-color var(--ifm-button-transition-duration)
cubic-bezier(0.08, 0.52, 0.52, 1);
user-select: none;
vertical-align: middle;
white-space: nowrap;
&:hover {
color: var(--ifm-button-color); // Override for button links.
outline: 0;
text-decoration: none;
}
&:focus {
outline: 0;
}
&.button--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,
&.button--active {
--ifm-button-color: var(--ifm-font-color-base-inverse);
}
}
&.button--link {
--ifm-button-background-color: transparent;
--ifm-button-border-color: transparent;
color: var(--ifm-link-color);
text-decoration: var(--ifm-link-decoration);
&:hover,
&:active,
&.button--active {
color: var(--ifm-link-hover-color);
text-decoration: var(--ifm-link-hover-decoration);
}
}
&.disabled,
&:disabled,
&[disabled] {
opacity: 0.65;
pointer-events: none;
}
&.button--sm {
--ifm-button-size-multiplier: 0.8;
}
&.button--lg {
--ifm-button-size-multiplier: 1.35;
}
&.button--block {
display: block;
width: 100%;
}
&.button--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.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.button.button--$(color) {
&:active,
&.button--active {
--ifm-button-border-color: var(--ifm-color-$(color)-darker);
--ifm-button-background-color: var(--ifm-color-$(color)-darker);
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
); // Has to be explicitly defined because .button--outline has quite high specificity.
}
}
}