import styled from "styled-components"; import mixins from "@styles/mixins"; export const StyledButton = styled.button` ${mixins.SizingX} ${mixins.Bold} ${mixins.FocusVisible(2)} padding: var(--btn-padding-vert) var(--btn-padding-horiz); border-radius: var(--btn-border-radius); font-size: var(--btn-font-size); min-height: var(--btn-height); display: inline-flex; align-items: center; justify-content: center; gap: var(--btn-icon-gap); text-decoration: none; transition: background 100ms ease, color 100ms ease, transform 100ms ease, box-shadow 100ms ease; color: var(--btn-text-clr); background-color: var(--btn-bg-clr); border: var(--btn-border, none); box-shadow: var(--btn-shadow, none); --loader-clr: var(--btn-text-clr); &:hover { cursor: pointer; color: var(--btn-hover-text-clr); background-color: var(--btn-hover-bg-clr); box-shadow: var(--btn-hover-shadow); } &:disabled { opacity: 0.5; pointer-events: none; } &[data-pressed] { transform: var(--btn-pressed-transform); } &[data-loading] { position: relative; color: transparent; .aje-spinner, .aje-three-dot-loader { --loader-clr: var(--btn-text-clr); --loader-size: 1em; } } &.aje-btn--primary { --btn-text-clr: var(--text-clr-inverted); --btn-bg-clr: var(--accent-clr); --btn-hover-text-clr: var(--btn-text-clr); --btn-hover-bg-clr: var(--accent-clr-alt); } &.aje-btn--secondary { --btn-text-clr: var(--text-clr-alt); --btn-bg-clr: var(--neutral100); --btn-hover-text-clr: var(--text-clr); --btn-hover-bg-clr: var(--neutral200); --btn-border: var(--border); } &.aje-btn--link { --btn-text-clr: var(--accent-clr); --btn-bg-clr: var(--neutral50); --btn-hover-text-clr: var(--text-clr); --btn-hover-bg-clr: var(--neutral100); text-decoration: underline; } &.aje-btn--error { --btn-text-clr: var(--text-clr-inverted); --btn-bg-clr: var(--error700); --btn-hover-text-clr: var(--btn-text-clr); --btn-hover-bg-clr: var(--error800); } &.aje-btn--success { --btn-text-clr: var(--text-clr-inverted); --btn-bg-clr: var(--success700); --btn-hover-text-clr: var(--btn-text-clr); --btn-hover-bg-clr: var(--success800); } &.aje-btn--inverted { --btn-text-clr: var(--text-clr); --btn-bg-clr: var(--neutral50); --btn-hover-text-clr: var(--btn-text-clr); --btn-hover-bg-clr: var(--btn-bg-clr); --btn-hover-shadow: 0 1px 3px hsla(221, 39%, 11%, 0.5); } &.aje-btn--content { --btn-text-clr: var(--text-clr); --btn-bg-clr: transparent; --btn-hover-text-clr: var(--btn-text-clr); --btn-hover-bg-clr: transparent; --btn-hover-shadow: none; --btn-padding-horiz: 0px; --btn-padding-vert: 0px; --btn-height: auto; } &.aje-btn--border { --btn-text-clr: var(--text-clr-alt); --btn-bg-clr: var(--neutral50); --btn-hover-text-clr: var(--text-clr); --btn-hover-bg-clr: var(--neutral100); --btn-border: var(--border); } &.aje-btn--ghost { --btn-text-clr: var(--text-clr-alt); --btn-bg-clr: transparent; --btn-hover-text-clr: var(--text-clr); --btn-hover-bg-clr: var(--neutral100); --btn-border: transparent; } &.aje-btn--dropdown { font-weight: normal; justify-content: flex-start; padding-right: 0.8rem; --btn-text-clr: var(--text-clr-alt); --btn-bg-clr: var(--neutral50); --btn-hover-text-clr: var(--text-clr); --btn-hover-bg-clr: var(--neutral100); // To match the actual select element --btn-border: 1px solid var(--input-border-clr); --btn-pressed-transform: translateY(0px); } &.aje-btn--dropdown-ghost { font-weight: normal; justify-content: flex-start; padding-right: 0.8rem; --btn-text-clr: var(--text-clr-alt); --btn-bg-clr: transparent; --btn-hover-text-clr: var(--text-clr); --btn-hover-bg-clr: var(--neutral100); --btn-border: none; --btn-pressed-transform: translateY(0px); } & > i { color: inherit; font-size: var(--btn-icon-size) !important; margin-left: calc(var(--btn-padding-horiz) / -2.5); } `;