artistry
Version:
A powerful and configurable stylesheet
173 lines (145 loc) • 4.88 kB
text/stylus
@require 'input-settings.styl';
.button {
display: inline-block;
padding: var(--input-padding);
border-width: $input-border-width;
border-style: solid;
border-radius: $input-border-radius;
text-decoration: none;
text-align: center;
cursor: pointer;
user-select: none;
transition: opacity 0.3s, box-shadow 0.3s;
// Added for consistency between Button and A tags.
font-size: var(--input-font-size);
font-weight: 500;
line-height: 1.15;
text-transform: $button-text-transform;
-webkit-font-smoothing: antialiased;
&.button-small {
--input-padding: var(--input-padding-small);
--input-font-size: var(--input-font-size-small);
}
&.button-large {
--input-padding: var(--input-padding-large);
--input-font-size: var(--input-font-size-large);
}
&:disabled {
filter: var(--input-locked);
cursor: default;
}
&.button-no-focus {
outline: none;
}
&.button-no-caps {
text-transform: none;
}
&:not(.button-textonly):not(.button-outline):not(.button-underline) {
border-color: var(--button-default-border-color);
color: var(--button-default-color);
background-color: var(--button-default-background-color);
box-shadow: $input-box-shadow-height-0;
&:hover:enabled {
box-shadow: $input-box-shadow-height-1;
}
&:focus:enabled:not(.button-no-focus) {
outline: none;
filter: var(--input-brighter);
}
&:active:enabled,
&:active:enabled:not(.button-no-focus),
&.button-down:enabled,
&.button-down:enabled:not(.button-no-focus) {
filter: var(--input-darker);
}
&[data-theme='primary'],
&.button-primary {
border: $input-border-width solid var(--button-primary-border-color);
color: var(--button-primary-color);
background-color: var(--button-primary-background-color);
}
&[data-theme='danger'],
&.button-danger {
border: $input-border-width solid var(--button-danger-border-color);
color: var(--button-danger-color);
background-color: var(--button-danger-background-color);
}
}
&.button-textonly,
&.button-outline,
&.button-underline {
color: var(--button-textonly-default-color);
border-color: transparent;
background-color: transparent;
box-shadow: none;
&:hover:enabled {
background-color: var(--button-textonly-background-color);
filter: var(--input-brighter);
}
&:focus:enabled:not(.button-no-focus) {
outline: none;
background-color: var(--button-textonly-background-color);
}
&:active:enabled,
&:active:enabled:not(.button-no-focus),
&.button-down:enabled,
&.button-down:enabled:not(.button-no-focus) {
background-color: var(--button-textonly-background-color);
filter: var(--input-darker);
}
&[data-theme='primary'],
&.button-primary {
color: var(--button-textonly-primary-color);
}
&[data-theme='danger'],
&.button-danger {
color: var(--button-textonly-danger-color);
}
}
&.button-outline {
border-color: var(--button-outline-border-color);
border-width: $button-outline-border-width;
}
&.button-underline {
border-bottom-color: var(--button-outline-border-color);
border-width: $button-outline-border-width;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
&.button-lockable {
position: relative;
&.button-locked {
cursor: default;
user-select: none;
pointer-events: none;
& > .button-text {
opacity: 0;
}
& > .button-spinner {
opacity: 1;
}
}
&.button-locked:hover,
&.button-locked:focus,
&.button-locked:active {
filter: var(--input-locked) ;
}
& > .button-text {
display: block;
opacity: 1;
transition: opacity 0.5s;
}
& > .button-spinner {
position: absolute;
display: block;
top: 50%;
left: 50%;
transform: translateX(-50%) translateY(-50%);
opacity: 0;
transition: opacity 0.5s;
}
}
&.button-nowrap {
white-space: nowrap;
}
}