Instantly share code, notes, and snippets.
Created
August 24, 2020 15:12
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save blvdmitry/21716139295ed0277c6aedc8a9e55601 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
.root { | |
background-color: var(--color-background-neutral); | |
/* Border is aligned with background */ | |
color: var(--color-foreground-neutral); | |
border-radius: var(--unit-radius-small); | |
transition: var(--duration-fast) var(--easing-standard); | |
transition-property: background-color, box-shadow, border; | |
padding: calc(var(--unit-x2) - var(--unit-border-small)) calc(var(--unit-x3) - var(--unit-border-small)); | |
min-height: calc(var(--DO_NOT_USE_bodyMedium2_lineHeight) + var(--unit-x2) * 2); | |
min-width: calc(var(--DO_NOT_USE_bodyMedium2_lineHeight) + var(--unit-x2) * 2); | |
cursor: pointer; | |
position: relative; | |
box-sizing: border-box; | |
text-align: left; | |
display: inline-flex; | |
align-items: center; | |
justify-content: center; | |
text-decoration: none; | |
border: var(--unit-border-small) solid transparent; | |
@apply --font-body-medium2; | |
&:hover, | |
&.--selected { | |
background-color: var(--color-background-highlighted-neutral); | |
} | |
&:active { | |
transform: translateY(1px); | |
} | |
&.--disabled { | |
background: var(--color-background-disabled); | |
color: var(--color-foreground-disabled); | |
&:active { | |
transform: none; | |
} | |
} | |
&.--variant-transparent { | |
background-color: transparent; | |
padding-left: calc(var(--unit-x2) - var(--unit-border-small)); | |
padding-right: calc(var(--unit-x2) - var(--unit-border-small)); | |
&:before { | |
content: ''; | |
position: absolute; | |
top: calc(var(--unit-border-small) * -1); | |
bottom: calc(var(--unit-border-small) * -1); | |
right: calc(var(--unit-border-small) * -1); | |
left: calc(var(--unit-border-small) * -1); | |
border-radius: var(--unit-radius-small); | |
opacity: 0; | |
transition: opacity var(--duration-fast) var(--easing-standard); | |
} | |
&:hover, | |
&.--selected { | |
&:before { | |
background-color: currentColor; | |
opacity: 0.08; | |
} | |
} | |
&.--disabled { | |
color: var(--color-foreground-disabled); | |
background-color: transparent; | |
} | |
} | |
&.--variant-outline { | |
background-color: var(--color-background-base); | |
border-color: var(--color-border-neutral-faded); | |
&:hover, | |
&.--selected { | |
border-color: var(--color-border-neutral); | |
} | |
&.--disabled { | |
background-color: var(--color-background-disabled); | |
border-color: var(--color-border-disabled); | |
} | |
} | |
} | |
.loader { | |
position: absolute; | |
top: 0; | |
left: 0; | |
bottom: 0; | |
right: 0; | |
display: none; | |
align-items: center; | |
justify-content: center; | |
} | |
.icon { | |
margin-right: var(--unit-x2); | |
&:last-child { | |
margin-right: 0; | |
} | |
} | |
.root.--icon-position-end { | |
& .icon { | |
margin-right: 0; | |
margin-left: var(--unit-x2); | |
&:first-child { | |
margin-left: 0; | |
} | |
} | |
} | |
.root.--loading { | |
cursor: default; | |
&:active { | |
transform: none; | |
} | |
& .text, | |
& .icon { | |
visibility: hidden; | |
} | |
& .loader { | |
display: flex; | |
} | |
} | |
.root.--color-primary { | |
background-color: var(--color-background-primary); | |
color: var(--color-on-background-primary); | |
&:hover, | |
&.--selected { | |
background-color: var(--color-background-highlighted-primary); | |
} | |
&.--disabled { | |
background: var(--color-background-disabled); | |
color: var(--color-foreground-disabled); | |
} | |
&.--variant-transparent { | |
background-color: transparent; | |
color: var(--color-foreground-primary); | |
&:hover, | |
&.--selected { | |
background-color: transparent; | |
} | |
&.--disabled { | |
background: transparent; | |
color: var(--color-foreground-disabled); | |
} | |
} | |
&.--variant-outline { | |
border-color: var(--color-border-neutral-faded); | |
background-color: var(--color-background-base); | |
color: var(--color-foreground-primary); | |
&:hover, | |
&.--selected { | |
border-color: var(--color-border-neutral); | |
} | |
&.--disabled { | |
border-color: var(--color-border-disabled); | |
background: var(--color-background-disabled); | |
color: var(--color-foreground-disabled); | |
} | |
} | |
} | |
.root.--color-critical { | |
background-color: var(--color-background-critical); | |
color: var(--color-on-background-critical); | |
&:hover, | |
&.--selected { | |
background-color: var(--color-background-highlighted-critical); | |
} | |
&.--disabled { | |
background: var(--color-background-disabled); | |
color: var(--color-foreground-disabled); | |
} | |
&.--variant-transparent { | |
background-color: transparent; | |
color: var(--color-foreground-critical); | |
&:hover, | |
&.--selected { | |
background-color: transparent; | |
} | |
&.--disabled { | |
background: transparent; | |
color: var(--color-foreground-disabled); | |
} | |
} | |
&.--variant-outline { | |
border-color: var(--color-border-neutral-faded); | |
background-color: var(--color-background-base); | |
color: var(--color-foreground-critical); | |
&:hover, | |
&.--selected { | |
border-color: var(--color-border-neutral); | |
} | |
&.--disabled { | |
border-color: var(--color-border-disabled); | |
background: var(--color-background-disabled); | |
color: var(--color-foreground-disabled); | |
} | |
} | |
} | |
.root.--color-inherit { | |
&.--variant-transparent { | |
background-color: transparent; | |
color: currentColor; | |
&:hover, | |
&.--selected { | |
background-color: transparent; | |
&:before { | |
opacity: 0.2; | |
} | |
} | |
&.--disabled { | |
background: transparent; | |
color: var(--color-foreground-disabled); | |
} | |
} | |
} | |
.root.--rounded { | |
border-radius: 999px; | |
&:before { | |
border-radius: 999px; | |
} | |
} | |
.root.--icon-only { | |
& .icon { | |
margin: 0 calc(var(--unit-x1) * -1); | |
} | |
} | |
.root.--size-large { | |
padding: calc(var(--unit-x3) - var(--unit-border-small)) calc(var(--unit-x4) - var(--unit-border-small)); | |
min-height: calc(var(--DO_NOT_USE_bodyMedium1_lineHeight) + var(--unit-x3) * 2); | |
min-width: calc(var(--DO_NOT_USE_bodyMedium1_lineHeight) + var(--unit-x3) * 2); | |
@apply --font-body-medium1; | |
&.--variant-transparent { | |
padding-left: calc(var(--unit-x3) - var(--unit-border-small)); | |
padding-right: calc(var(--unit-x3) - var(--unit-border-small)); | |
} | |
} | |
.root.--elevated { | |
box-shadow: var(--shadow-base); | |
&:hover { | |
box-shadow: var(--shadow-elevated); | |
} | |
&:active { | |
box-shadow: var(--shadow-base); | |
} | |
&.--color-primary:hover{ | |
background: var(--color-background-highlighted-primary); | |
} | |
&.--color-critical:hover { | |
background: var(--color-background-highlighted-critical); | |
} | |
&.--variant-outline:hover { | |
border-color: var(--color-border-neutral-faded); | |
} | |
&.--variant-outline:active { | |
background: var(--color-background-base); | |
} | |
&.--disabled { | |
box-shadow: none; | |
} | |
&.--variant-transparent { | |
&, | |
&:hover, | |
&:active { | |
box-shadow: none; | |
} | |
} | |
} | |
.root.--full-width { | |
width: 100%; | |
text-align: center; | |
} | |
@media (--viewport-small) { | |
.root { | |
@apply --font-body-medium1; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment