@lyra/components
Version:
Basic UX components
366 lines (299 loc) • 7.48 kB
CSS
@import 'part:@lyra/base/theme/variables-style';
@keyframes focused {
0% {
transform: scale(1);
}
50% {
transform: scale(1.05);
}
100% {
transform: scale(1);
}
}
:root {
--focus-shadow: 0 0 2px 1px color(var(--input-border-color-focus)),
0 0 4px 0 color(var(--input-border-color-focus) a(60%)),
0 0 10px 5px color(var(--input-border-color-focus) a(10%));
--focus-shadow--danger: 0 0 2px 1px color(var(--state-danger-color)),
0 0 4px 0 color(var(--state-danger-color) a(60%)),
0 0 10px 5px color(var(--state-danger-color) a(10%));
--focus-shadow--success: 0 0 2px 1px color(var(--state-success-color)),
0 0 4px 0 color(var(--state-success-color) a(60%)),
0 0 10px 5px color(var(--state-success-color) a(10%));
--focus-shadow-white: 0 0 2px 1px color(var(--white)),
0 0 4px 0 color(var(--white) a(60%)),
0 0 10px 5px color(var(--white) a(10%));
}
.content {
display: inline;
}
.inner {
display: flex;
align-items: center;
outline: none;
height: 1em;
overflow: hidden;
}
.spacing {
display: inline-block;
}
.spacing + .spacing {
margin-left: var(--small-padding);
}
.root {
margin: 0;
padding: 0;
position: relative;
display: inline-block;
outline: none;
border: none;
color: inherit;
font-size: 1em;
font-family: inherit;
line-height: 1em;
cursor: default;
user-select: none;
transition: background-color 0.15s, color 0.15s, opacity 0.15s;
border-radius: var(--button-border-radius);
text-transform: uppercase;
composes: spacing;
}
.root:focus {
box-shadow: var(--focus-shadow);
@nest & .content {
animation-name: focused;
animation-duration: 0.2s;
}
}
/* Handles fileupload buttons with focus-within */
.root:not(:focus):focus-within .inner:not(:focus) {
box-shadow: var(--focus-shadow);
}
.root:not(:focus):focus-within .inner:not(:focus) .content {
animation-name: focused;
animation-duration: 0.2s;
}
.onlyIcon {
@nest & .inner {
padding: 0.7em 0.8em ;
}
@nest & .content {
display: block;
}
@nest & .icon {
margin-right: 0;
}
}
.padding_default {
@nest & .inner {
@nest :not(.onlyIcon) & {
padding: 0.7em;
@media (--screen-medium) {
padding: 0.7em 1.2em;
}
}
}
}
.padding_small {
@nest & .inner {
@nest :not(.onlyIcon) & {
padding: 0.7em;
@media (--screen-medium) {
padding: 0.7em 0.6em;
}
}
}
}
.shadow {
composes: shadow-1dp from 'part:@lyra/base/theme/shadows-style';
}
.default {
composes: root;
composes: shadow;
background-color: var(--default-button-color);
color: var(--default-button-color--text);
@nest &:not(.disabled) {
@nest &:hover {
background-color: color(var(--default-button-color) lightness(- 5%));
}
@nest &:active {
background-color: color(var(--default-button-color) lightness(+ 10%));
outline: 0;
}
}
}
.simple {
composes: root;
background-color: transparent;
@nest &:not(.disabled):hover {
background-color: color(var(--default-button-color) a(90%));
}
@nest &:not(.disabled) {
@nest &:hover {
background-color: color(
var(--default-button-color) lightness(- 5%) a(10%)
);
}
@nest &:active {
background-color: color(
var(--default-button-color) lightness(+ 10%) a(10%)
);
outline: 0;
}
}
}
.inverted {
border: 1px solid var(--gray-base);
border-color: var(--gray-base);
background-color: transparent;
box-shadow: none;
composes: default;
@nest &:not(.disabled):hover {
background-color: color(var(--default-button-color) a(30%));
}
@nest &.root:focus {
border-color: var(--input-border-color-focus);
}
}
.secondary {
composes: inverted;
}
.color__primary {
border-color: var(--brand-primary);
background-color: var(--brand-primary);
color: var(--brand-primary--text);
@nest &:not(.disabled):hover {
background-color: color(var(--brand-primary) lightness(+ 5%));
border-color: var(--brand-primary);
}
@nest &.inverted {
border-color: var(--brand-primary);
background-color: transparent;
color: var(--brand-primary);
@nest &:not(.disabled):hover {
background-color: color(var(--brand-primary) a(10%));
border-color: var(--brand-primary);
}
}
@nest &.simple {
background-color: transparent;
color: var(--brand-primary);
@nest &:not(.disabled) {
@nest &:hover {
background-color: color(var(--brand-primary) a(10%));
}
}
}
}
.color__danger {
border-color: var(--state-danger-color);
background-color: var(--state-danger-color);
color: var(--state-danger-color--text);
@nest &.root:focus {
box-shadow: var(--focus-shadow--danger);
border-color: var(--state-danger-color);
}
@nest &:not(.disabled):hover {
background-color: color(var(--state-danger-color) lightness(+ 5%));
}
@nest &.inverted {
border-color: var(--state-danger-color);
background-color: transparent;
color: var(--state-danger-color);
@nest &:not(.disabled) {
@nest &:hover {
background-color: color(var(--state-danger-color) a(10%));
border-color: var(--state-danger-color);
}
}
}
@nest &.simple {
background-color: transparent;
color: var(--state-danger-color);
@nest &:not(.disabled) {
@nest &:hover {
background-color: color(var(--state-danger-color) a(10%));
}
}
}
}
.color__success {
border-color: var(--state-success-color);
background-color: var(--state-success-color);
color: var(--state-success-color--text);
@nest &.root:focus {
box-shadow: var(--focus-shadow--success);
border-color: var(--state-success-color);
}
@nest &:not(.disabled):hover {
background-color: color(var(--state-success-color) lightness(+ 5%));
}
@nest &.inverted {
border-color: var(--state-success-color);
background-color: transparent;
color: var(--state-success-color);
@nest &:not(.disabled):hover {
background-color: color(var(--state-success-color) a(10%));
border-color: var(--state-success-color);
}
}
@nest &.simple {
background-color: transparent;
color: var(--state-success-color);
@nest &:not(.disabled):hover {
background-color: color(var(--state-success-color) a(10%));
}
}
}
.color__white {
background-color: var(--white);
@nest &.root:focus {
box-shadow: var(--focus-shadow-white);
}
@nest &:not(.disabled):hover {
background-color: color(var(--white) lightness(- 5%));
}
@nest &.inverted {
border-color: var(--white);
background-color: transparent;
color: var(--white);
@nest &:not(.disabled) {
@nest &:focus {
box-shadow: var(--focus-shadow-white);
border-color: var(--white);
}
@nest &:hover {
background-color: color(var(--white) a(40%));
color: var(--white);
}
}
}
@nest &.simple {
border-color: transparent;
background-color: transparent;
color: var(--white);
@nest &:not(.disabled):hover {
background-color: color(var(--white) a(40%));
color: var(--white);
}
}
}
.save {
composes: root;
}
.spinner {
margin-right: 0.5em;
}
.hasIcon {
/* empty */
}
.iconContainer {
/* empty */
}
.icon {
/* transform: scale(1.2); */
margin-right: var(--small-padding);
}
.disabled {
opacity: 0.2;
}