vuestic-ui
Version:
Vue 3 UI Framework
229 lines • 7.28 kB
CSS
:root,
:host {
/* General */
--va-button-display: inline-flex;
--va-button-justify-content: center;
--va-button-align-items: center;
--va-button-background-image: none;
--va-button-box-shadow: none;
--va-button-border-width: 0;
--va-button-border-color: unset;
--va-button-border-style: none;
--va-button-font-weight: 600;
--va-button-transition: none;
--va-button-padding: 0;
--va-button-cursor: pointer;
/* Small */
--va-button-sm-size: 1.5rem;
--va-button-sm-content-py: 0.25rem;
--va-button-sm-content-px: 0.375rem;
--va-button-sm-only-icon-content-px: 0.25rem;
--va-button-sm-font-size: 0.8125rem;
--va-button-sm-letter-spacing: 0;
--va-button-sm-line-height: 1rem;
--va-button-sm-border-radius: 0.125rem;
--va-button-sm-icon-side-padding: var(--va-button-sm-content-py);
--va-button-sm-icons-spacing: 0.125rem;
/* Medium */
--va-button-size: 2.25rem;
--va-button-content-py: 0.5rem;
--va-button-content-px: 0.75rem;
--va-button-only-icon-content-px: 0.5rem;
--va-button-font-size: 1rem;
--va-button-letter-spacing: 0;
--va-button-line-height: 1.25rem;
--va-button-border-radius: 0.25rem;
--va-button-icon-side-padding: var(--va-button-content-py);
--va-button-icons-spacing: 0.25rem;
/* Large */
--va-button-lg-size: 3rem;
--va-button-lg-content-py: 0.75rem;
--va-button-lg-content-px: 1rem;
--va-button-lg-only-icon-content-px: 1rem;
--va-button-lg-font-size: 1.05rem;
--va-button-lg-letter-spacing: 0;
--va-button-lg-line-height: 1.5rem;
--va-button-lg-border-radius: 0.5rem;
--va-button-lg-icon-side-padding: var(--va-button-lg-content-py);
--va-button-lg-icons-spacing: 0.25rem;
/* Bordered */
--va-button-bordered-border: 1px;
--va-button-bordered-style: solid;
}
.va-button {
position: relative;
padding: var(--va-button-padding);
display: var(--va-button-display);
justify-content: var(--va-button-justify-content);
align-items: var(--va-button-align-items);
border-width: var(--va-button-border-width);
border-color: var(--va-button-border-color);
border-style: var(--va-button-border-style);
background-image: var(--va-button-background-image);
box-shadow: var(--va-button-box-shadow);
font-family: var(--va-font-family);
font-weight: var(--va-button-font-weight);
text-decoration: none;
text-transform: initial;
transition: var(--va-button-transition);
box-sizing: border-box;
cursor: var(--va-button-cursor);
z-index: 0;
vertical-align: top;
}
.va-button::after, .va-button::before {
content: "";
position: absolute;
width: 100%;
height: 100%;
border-radius: inherit;
left: 0;
top: 0;
z-index: -1;
}
.va-button::before {
background: var(--va-background-color);
opacity: var(--va-background-color-opacity);
}
.va-button::after {
background-color: var(--va-background-mask-color);
opacity: var(--va-background-mask-opacity);
}
.va-button__content {
height: 100%;
display: flex;
align-items: center;
z-index: 1;
}
.va-button__content--loading {
opacity: 0;
}
.va-button--small {
line-height: var(--va-button-sm-line-height);
border-radius: var(--va-button-sm-border-radius);
letter-spacing: var(--va-button-sm-letter-spacing);
min-height: var(--va-button-sm-size);
min-width: var(--va-button-sm-size);
}
.va-button--small .va-button__content {
font-size: var(--va-button-sm-font-size);
padding: var(--va-button-sm-content-py) var(--va-button-sm-content-px);
}
.va-button--small .va-button__left-icon {
margin-right: var(--va-button-sm-icons-spacing);
}
.va-button--small .va-button__right-icon {
margin-left: var(--va-button-sm-icons-spacing);
}
.va-button--small.va-button--bordered .va-button__content {
padding-top: calc(var(--va-button-sm-content-py) - var(--va-button-bordered-border));
padding-bottom: calc(var(--va-button-sm-content-py) - var(--va-button-bordered-border));
}
.va-button--small.va-button--left-icon .va-button__content {
padding-left: var(--va-button-sm-icon-side-padding);
}
.va-button--small.va-button--right-icon .va-button__content {
padding-right: var(--va-button-sm-icon-side-padding);
}
.va-button--normal {
line-height: var(--va-button-line-height);
border-radius: var(--va-button-border-radius);
letter-spacing: var(--va-button-letter-spacing);
min-height: var(--va-button-size);
min-width: var(--va-button-size);
}
.va-button--normal .va-button__content {
font-size: var(--va-button-font-size);
padding: var(--va-button-content-py) var(--va-button-content-px);
line-height: var(--va-button-line-height);
}
.va-button--normal .va-button__left-icon {
margin-right: var(--va-gap-medium);
}
.va-button--normal .va-button__right-icon {
margin-left: var(--va-gap-medium);
}
.va-button--normal.va-button--bordered .va-button__content {
padding-top: calc(var(--va-button-content-py) - var(--va-button-bordered-border));
padding-bottom: calc(var(--va-button-content-py) - var(--va-button-bordered-border));
}
.va-button--large {
line-height: var(--va-button-lg-line-height);
border-radius: var(--va-button-lg-border-radius);
letter-spacing: var(--va-button-lg-letter-spacing);
min-height: var(--va-button-lg-size);
min-width: var(--va-button-lg-size);
}
.va-button--large .va-button__content {
font-size: var(--va-button-lg-font-size);
padding: var(--va-button-lg-content-py) var(--va-button-lg-content-px);
}
.va-button--large .va-button__left-icon {
margin-right: var(--va-button-lg-icons-spacing);
}
.va-button--large .va-button__right-icon {
margin-left: var(--va-button-lg-icons-spacing);
}
.va-button--large.va-button--bordered .va-button__content {
padding-top: calc(var(--va-button-lg-content-py) - var(--va-button-bordered-border));
padding-bottom: calc(var(--va-button-lg-content-py) - var(--va-button-bordered-border));
}
.va-button--large.va-button--left-icon .va-button__content {
padding-left: var(--va-button-lg-icon-side-padding);
}
.va-button--large.va-button--right-icon .va-button__content {
padding-right: var(--va-button-lg-icon-side-padding);
}
.va-button--small.va-button--icon-only .va-button__content, .va-button--normal.va-button--icon-only .va-button__content, .va-button--large.va-button--icon-only .va-button__content {
padding-right: 0;
padding-left: 0;
}
.va-button--plain {
min-width: auto;
min-height: auto;
}
.va-button--plain .va-button__content {
padding: 0;
z-index: unset;
}
.va-button--round {
border-radius: 999px;
}
.va-button--bordered {
border-width: var(--va-button-bordered-border);
border-style: var(--va-button-bordered-style);
}
.va-button.va-button--disabled {
cursor: default;
opacity: 0.4;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.va-button--icon-only .va-button__left-icon,
.va-button--icon-only .va-button__right-icon {
margin-left: 0;
margin-right: 0;
}
.va-button--icon-only .va-button__content {
padding: 0;
}
.va-button:focus-visible {
outline: 2px solid var(--va-focus) ;
border-radius: "inherit";
}
.va-button--loading {
pointer-events: none;
}
.va-button--block {
display: flex;
min-width: 100%;
}
.va-button__loader {
position: absolute;
width: 100%;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}