UNPKG

@dabapps/roe

Version:

A Collection of React Components for Project Development

114 lines (93 loc) 2.49 kB
/* @group Mixins */ .create-button-styles (@background: @button-background-default, @color: @button-text-color-dark) { background-color: @background; color: @color; &:hover:not([disabled]), &:hover:not(.disabled) { background-color: darken(@background, 5%); color: @color; } &::before { background-color: contrast(@background, rgba(255, 255, 255, 0.2), rgba(0, 0, 0, 0.1)); } } .create-button (@type, @background, @color) { &.@{type} { .create-button-styles(@background, @color); } } /* @end Mixins */ .button { .button-overrides(); .create-button-styles(); .create-button(primary, @primary, @button-text-color-light); .create-button(secondary, @secondary, @button-text-color-light); .create-button(tertiary, @tertiary, @button-text-color-light); .create-button(info, @info, @button-text-color-light); .create-button(success, @success, @button-text-color-light); .create-button(warning, @warning, @button-text-color-light); .create-button(error, @error, @button-text-color-light); transition: ease-in-out 0.1s background-color, ease-in-out 0.1s box-shadow; box-shadow: @shadow-none; &:hover:not([disabled]), &:hover:not(.disabled) { box-shadow: @shadow-inset-subtle; } &:active:not([disabled]), &:active:not(.disabled) { box-shadow: @shadow-inset-hard; } &:focus:not([disabled]), &:focus:not(.disabled) { &::before { content: ' '; position: absolute; top: 50%; left: 50%; transition: 0.2s opacity, 0.2s transform; transform: translate(-50%, -50%) scale(0, 0); opacity: 0; width: 200%; height: 0; padding-bottom: 200%; animation: 1s button-click linear forwards; border-radius: 50%; } } &.block + .button.block { margin-top: @margin-base; } &.block { display: block; width: 100%; margin-left: 0; } &.large { font-size: @font-size-large; padding: @padding-large / 2 @padding-large; } &.small { font-size: @font-size-small; padding: @padding-small / 2 @padding-small; } } /* @group Animations */ @keyframes button-click { 0 { transform: translate(-50%, -50%) scale(0, 0); opacity: 0.5; } 20% { opacity: 1; transform: translate(-50%, -50%) scale(0.5, 0.5); } 40% { opacity: 1; transform: translate(-50%, -50%) scale(1, 1); } 100% { opacity: 0; transform: translate(-50%, -50%) scale(1, 1); } } /* @end Animations */