.button { position: relative; border-radius: var(--Corner-radius-rounded); border-width: 2px; border-style: solid; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: var(--Space-x05); &[data-disabled] { cursor: unset; } &[data-pending] { cursor: progress; gap: var(--Space-x1); } &:focus-visible { outline: 2px solid var(--Border-Interactive-Focus); outline-offset: 2px; } } .color-inverted:focus-visible { outline-color: var(--Border-Inverted); } .size-large { padding: var(--Space-x2) var(--Space-x3); } .size-medium { padding: var(--Space-x15) var(--Space-x2); } .size-small { padding: 10px var(--Space-x2); } .variant-primary { background-color: var(--Component-Button-Brand-Primary-Fill-Default); border-color: var(--Component-Button-Brand-Primary-Border-Default); color: var(--Component-Button-Brand-Primary-On-fill-Default); @media (hover: hover) { &:not([data-disabled]) { &:hover, &.hovered { background: linear-gradient( 0deg, var(--Component-Button-Brand-Primary-Fill-Hover) 0%, var(--Component-Button-Brand-Primary-Fill-Hover) 100% ), var(--Component-Button-Brand-Primary-Fill-Default); } } } /* This variant is able to be on top of dark background colors, so we need to create an illusion that it also has an inverted border on focus */ &:not(.color-inverted):focus-visible::before { content: ''; position: absolute; inset: -4px; border: 2px solid var(--Border-Inverted); border-radius: inherit; pointer-events: none; } &[data-disabled] { background-color: var(--Component-Button-Brand-Primary-Fill-Disabled); border-color: var(--Component-Button-Brand-Primary-Border-Disabled); color: var(--Component-Button-Brand-Primary-On-fill-Disabled); } } .variant-primary.color-inverted { background-color: var(--Component-Button-Inverted-Fill-Default); border-color: var(--Component-Button-Inverted-Border-Default); color: var(--Component-Button-Inverted-On-fill-Default); @media (hover: hover) { &:not([data-disabled]) { &:hover, &.hovered { background: linear-gradient( 0deg, var(--Component-Button-Inverted-Fill-Hover) 0%, var(--Component-Button-Inverted-Fill-Hover) 100% ), var(--Component-Button-Inverted-Fill-Default); } } } &[data-disabled] { background-color: var(--Component-Button-Inverted-Fill-Disabled); border-color: var(--Component-Button-Inverted-Border-Disabled); color: var(--Component-Button-Inverted-On-fill-Disabled); } } .variant-secondary { background-color: var(--Component-Button-Brand-Secondary-Fill-Default); border-color: var(--Component-Button-Brand-Secondary-Border-Default); color: var(--Component-Button-Brand-Secondary-On-fill-Default); @media (hover: hover) { &:not([data-disabled]) { &:hover, &.hovered { background-color: var(--Component-Button-Brand-Secondary-Fill-Hover); border-color: var(--Component-Button-Brand-Secondary-Border-Hover); color: var(--Component-Button-Brand-Secondary-On-fill-Hover); } } } &[data-disabled] { border-color: var(--Component-Button-Brand-Secondary-Border-Disabled); color: var(--Component-Button-Brand-Secondary-On-fill-Disabled); } } .variant-secondary.color-inverted { background-color: var(--Component-Button-Brand-Secondary-Fill-Default); border-color: var(--Component-Button-Brand-Secondary-Border-Inverted); color: var(--Component-Button-Brand-Secondary-On-fill-Inverted); @media (hover: hover) { &:not([data-disabled]) { &:hover, &.hovered { background-color: var(--Component-Button-Brand-Secondary-Fill-Hover); border-color: var( --Component-Button-Brand-Secondary-Border-Hover-inverted ); color: var(--Component-Button-Brand-Secondary-On-fill-Hover-inverted); } } } &[data-disabled] { background-color: var(--Component-Button-Brand-Secondary-Fill-Disabled); border-color: var(--Component-Button-Brand-Secondary-Border-Disabled); color: var(--Component-Button-Brand-Secondary-On-fill-Disabled); } } .variant-tertiary { background-color: var(--Component-Button-Brand-Tertiary-Fill-Default); border-color: var(--Component-Button-Brand-Tertiary-Border-Default); color: var(--Component-Button-Brand-Tertiary-On-fill-Default); @media (hover: hover) { &:not([data-disabled]) { &:hover, &.hovered { background: linear-gradient( 0deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.1) 100% ), var(--Component-Button-Brand-Tertiary-Fill-Default); border-color: var(--Component-Button-Brand-Tertiary-Border-Hover); color: var(--Component-Button-Brand-Tertiary-On-fill-Hover); } } } &[data-disabled] { background-color: var(--Component-Button-Brand-Tertiary-Fill-Disabled); border-color: var(--Component-Button-Brand-Tertiary-Border-Disabled); color: var(--Component-Button-Brand-Tertiary-On-fill-Disabled); } } .variant-inverted { background-color: var(--Component-Button-Inverted-Default); border-color: transparent; color: var(--Component-Button-Inverted-On-fill-Default); @media (hover: hover) { &:not([data-disabled]) { &:hover, &.hovered { background-color: var(--Component-Button-Inverted-Hover); border-color: transparent; color: var(--Component-Button-Inverted-On-fill-Hover); } } } &[data-disabled] { background-color: var(--Component-Button-Inverted-Disabled); border-color: transparent; color: var(--Component-Button-Inverted-On-fill-Disabled); } } .variant-text { background-color: transparent; border-color: transparent; color: var(--Component-Button-Brand-Secondary-On-fill-Default); padding-left: 0; padding-right: 0; @media (hover: hover) { &:not([data-disabled]) { &:hover, &.hovered { color: var(--Component-Button-Brand-Secondary-On-fill-Hover); text-decoration: underline; } } } &[data-disabled] { color: var(--Component-Button-Brand-Secondary-On-fill-Disabled); text-decoration: none; } } .variant-text.no-wrapping { padding: var(--Space-x025) 0; border-width: 0; } .variant-text.color-inverted { color: var(--Component-Button-Brand-Secondary-On-fill-Inverted); @media (hover: hover) { &:not([data-disabled]) { &:hover, &.hovered { color: var(--Component-Button-Brand-Secondary-On-fill-Hover-inverted); } } } &[data-disabled] { color: var(--Component-Button-Brand-Secondary-On-fill-Disabled); } } .spinnerWrapper { display: flex; align-items: center; margin-left: var(--Space-x1); }