@postnord/web-components
Version:
PostNord Web Components
282 lines (281 loc) • 7.99 kB
CSS
/* Global utility variables */
/* Input styles */
/* Transition variables */
pn-toggle-switch {
display: inline-block;
position: relative;
}
pn-toggle-switch .pn-toggle {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 1em;
}
pn-toggle-switch .pn-toggle-label {
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: flex-end;
font-weight: 500;
color: #2d2013;
margin: 0;
gap: 0.5em;
-webkit-tap-highlight-color: transparent;
transition-property: color, transform;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle-label {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-toggle-switch .pn-toggle-label > span {
font-size: 1em;
}
pn-toggle-switch .pn-toggle-helper {
color: #5e554a;
font-size: 0.875em;
font-weight: 400;
margin: 0.25em 0 0 0;
display: flex;
flex-direction: column;
gap: 0.25em;
}
pn-toggle-switch .pn-toggle-content {
flex: 1 0;
}
pn-toggle-switch .pn-toggle-button {
position: relative;
font-size: 1em;
width: 3.625em;
height: 2em;
padding: 0.1875em;
transition-property: transform;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle-button {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-toggle-switch .pn-toggle-button {
-webkit-tap-highlight-color: transparent;
}
pn-toggle-switch .pn-toggle-button[data-small] {
width: 2.625em;
height: 1.5em;
}
pn-toggle-switch .pn-toggle-button[data-small] .pn-toggle-circle {
width: 1.125em;
height: 1.125em;
}
pn-toggle-switch .pn-toggle-button[data-small][data-loading] > .pn-toggle-bg {
width: 1.5em;
}
pn-toggle-switch .pn-toggle-button[data-large] {
width: 4.625em;
height: 2.5em;
}
pn-toggle-switch .pn-toggle-button[data-large] .pn-toggle-circle {
width: 2.125em;
height: 2.125em;
}
pn-toggle-switch .pn-toggle-button[data-large][data-loading] > .pn-toggle-bg {
width: 2.5em;
}
pn-toggle-switch .pn-toggle-button[data-loading] .pn-toggle-bg {
width: 2em;
}
pn-toggle-switch .pn-toggle-button[data-loading] .pn-toggle-circle,
pn-toggle-switch .pn-toggle-button[data-loading] .pn-toggle-element:checked ~ .pn-toggle-circle {
transform: translateX(50%);
}
pn-toggle-switch .pn-toggle-button[data-loading] .pn-toggle-element:checked ~ .pn-toggle-circle .pn-toggle-check {
opacity: 0;
}
pn-toggle-switch .pn-toggle-button[data-loading] .pn-toggle-element:checked ~ .pn-toggle-circle .pn-toggle-check polyline {
stroke-dashoffset: 23;
transition-delay: 0s;
}
pn-toggle-switch .pn-toggle-button[data-loading] pn-spinner {
opacity: 1;
}
pn-toggle-switch .pn-toggle-bg {
position: absolute;
top: 0;
left: 50%;
width: 100%;
height: 100%;
z-index: 0;
border-radius: 2em;
background-color: #969087;
transform: translateX(-50%);
outline: 0.2rem solid transparent;
outline-offset: 0.2rem;
transition-property: width, background-color, outline-color;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle-bg {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-toggle-switch .pn-toggle-circle {
position: relative;
z-index: 1;
width: 1.625em;
height: 1.625em;
background-color: #ffffff;
box-shadow: 0 0.25em 0.5em rgba(0, 0, 0, 0.1);
border-radius: 50%;
padding: 0.25em;
transition-property: transform, background-color;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle-circle {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-toggle-switch .pn-toggle-circle {
transform: translateX(0%);
}
pn-toggle-switch .pn-toggle-element {
position: absolute;
z-index: 3;
top: 0;
left: 0;
cursor: pointer;
width: 100%;
height: 100%;
opacity: 0;
margin: 0;
/*---------------------------------------Focus-------------------------------------------*/
}
pn-toggle-switch .pn-toggle-element:focus-visible + .pn-toggle-bg {
outline-color: #005d92;
}
pn-toggle-switch .pn-toggle-element:hover + .pn-toggle-bg {
background-color: #5e554a;
}
pn-toggle-switch .pn-toggle-element:hover:checked + .pn-toggle-bg {
background-color: #0d234b;
}
pn-toggle-switch .pn-toggle-element:hover:checked ~ .pn-toggle-circle .pn-toggle-check polyline {
stroke: #0d234b;
}
pn-toggle-switch .pn-toggle-element:checked ~ .pn-toggle-bg {
background-color: #005d92;
}
pn-toggle-switch .pn-toggle-element:checked ~ .pn-toggle-circle {
transform: translateX(100%);
}
pn-toggle-switch .pn-toggle-element:checked ~ .pn-toggle-circle .pn-toggle-check {
opacity: 1;
}
pn-toggle-switch .pn-toggle-element:checked ~ .pn-toggle-circle .pn-toggle-check polyline {
transition-delay: 0.2s, 0s;
stroke-dashoffset: 0;
}
pn-toggle-switch .pn-toggle-element:disabled {
cursor: not-allowed;
}
pn-toggle-switch .pn-toggle-element:disabled + .pn-toggle-bg {
background-color: #d3cecb;
box-shadow: none;
}
pn-toggle-switch .pn-toggle-element:disabled ~ .pn-toggle-circle {
background-color: #f3f2f2;
}
pn-toggle-switch .pn-toggle-element:disabled ~ .pn-toggle-circle .pn-toggle-check polyline {
stroke: #969087;
}
pn-toggle-switch .pn-toggle-element:disabled ~ .pn-toggle-circle pn-spinner .pn-spinner-circle {
stroke: #969087;
}
pn-toggle-switch .pn-toggle-element:disabled ~ .pn-toggle-circle pn-spinner .pn-spinner-dot {
fill: #969087;
}
pn-toggle-switch .pn-toggle-element:disabled:hover + .pn-toggle-bg, pn-toggle-switch .pn-toggle-element:disabled:hover:checked + .pn-toggle-bg {
background-color: #d3cecb;
}
pn-toggle-switch .pn-toggle-element:disabled:hover ~ .pn-toggle-circle .pn-toggle-check polyline, pn-toggle-switch .pn-toggle-element:disabled:hover:checked ~ .pn-toggle-circle .pn-toggle-check polyline {
stroke: #969087;
}
pn-toggle-switch .pn-toggle-check {
position: absolute;
left: 50%;
top: 50%;
height: 1.5em;
width: 1.5em;
padding: 0.25em;
transform: translate(-50%, -50%);
opacity: 0;
transition-property: opacity;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle-check {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-toggle-switch .pn-toggle-check polyline {
stroke: #005d92;
stroke-linecap: round;
stroke-dasharray: 23;
stroke-dashoffset: 23;
transition-property: stroke-dashoffset, stroke;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle-check polyline {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-toggle-switch .pn-toggle pn-spinner {
opacity: 0;
transition-property: opacity;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle pn-spinner {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-toggle-switch .pn-toggle pn-spinner .pn-spinner-circle {
transition-property: stroke;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle pn-spinner .pn-spinner-circle {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-toggle-switch .pn-toggle pn-spinner .pn-spinner-dot {
transition-property: fill;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-toggle-switch .pn-toggle pn-spinner .pn-spinner-dot {
transition-duration: 0s;
transition-delay: 0s;
}
}