angular/adev/shared-docs/styles/_button.scss
Joey Perrott 2d8635d29d refactor(docs-infra): migrate @angular/docs from dev-infra into adev directory (#57132)
To increase the ease of development we are moving @angular/docs into the adev directory within this repo. While
we are doing this to improve our development experience in the short term, efforts are also in place
to maintain a division between this @angular/docs (shared) code and adev itself, so that it can be extracted
back out in the future when components is ready to leverage it as well.

PR Close #57132
2024-07-30 15:51:26 +00:00

148 lines
3 KiB
SCSS

@mixin button() {
button {
font-family: var(--inter-font);
background: transparent;
-webkit-appearance: none;
border: 0;
font-weight: 600;
// Remove excess padding and border in Firefox 4+
&::-moz-focus-inner {
border: 0;
padding: 0;
}
&:disabled {
cursor: not-allowed;
}
}
@property --angle {
syntax: '<angle>';
initial-value: 90deg;
inherits: false;
}
@keyframes spin-gradient {
0% {
--angle: 90deg;
}
100% {
--angle: 450deg;
}
}
.docs-primary-btn {
cursor: pointer;
border: none;
outline: none;
position: relative;
border-radius: 0.25rem;
padding: 0.75rem 1.5rem;
width: max-content;
color: transparent;
// border gradient / background
--angle: 90deg;
background: linear-gradient(
var(--angle),
var(--orange-red) 0%,
var(--vivid-pink) 50%,
var(--electric-violet) 100%
);
docs-icon {
z-index: var(--z-index-content);
position: relative;
}
// text & radial gradient
&::before {
content: attr(text);
position: absolute;
inset: 1px;
background: var(--page-bg-radial-gradient);
border-radius: 0.2rem;
display: flex;
align-items: center;
justify-content: center;
transition: opacity 0.3s ease, background 0.3s ease;
color: var(--primary-contrast);
}
// solid color negative space - CSS transition supported
&::after {
content: attr(text);
position: absolute;
inset: 1px;
background: var(--page-background);
border-radius: 0.2rem;
display: flex;
align-items: center;
justify-content: center;
transition: opacity 0.3s ease, background 0.3s ease;
color: var(--primary-contrast);
}
&:hover {
animation: spin-gradient 4s linear infinite forwards;
&::before {
background-color: var(--page-background);
background: var(--soft-pink-radial-gradient);
opacity: 0.9;
}
&::after {
opacity: 0;
}
}
&:active {
&::before {
opacity: 0.8;
}
}
&:disabled {
//gradient stroke
background: var(--quinary-contrast);
color: var(--quinary-contrast);
&::before {
background-color: var(--page-background);
background: var(--page-bg-radial-gradient);
opacity: 1;
}
docs-icon {
color: var(--quinary-contrast);
}
}
docs-icon {
z-index: var(--z-index-icon);
color: var(--primary-contrast);
}
}
.docs-secondary-btn {
border: 1px solid var(--senary-contrast);
background: var(--page-background);
padding: 0.75rem 1.5rem;
border-radius: 0.25rem;
color: var(--primary-contrast);
transition: background 0.3s ease;
docs-icon {
color: var(--quaternary-contrast);
transition: color 0.3s ease;
}
&:hover {
background: var(--septenary-contrast);
docs-icon {
color: var(--primary-contrast);
}
}
}
}