@postnord/web-components
Version:
PostNord Web Components
417 lines (416 loc) • 11.7 kB
CSS
/* Global utility variables */
/* Input styles */
/* Transition variables */
pn-range {
display: block;
}
pn-range .pn-range {
color: #2d2013;
display: flex;
flex-direction: row;
flex-wrap: wrap;
gap: clamp(0.25em, 5vw, 0.75em);
align-items: center;
container-type: inline-size;
}
@container (max-width: 24em) {
pn-range .pn-range .pn-range-header[data-input] {
position: absolute;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
margin: -1px;
white-space: nowrap;
}
pn-range .pn-range > pn-input {
flex: 1 1 100%;
}
pn-range .pn-range > pn-input .pn-input-label {
position: unset;
height: unset;
width: unset;
overflow: unset;
clip: unset;
margin: 0 0 0.25em 0;
white-space: unset;
}
}
pn-range .pn-range[data-markers] {
margin-bottom: 1em;
}
pn-range .pn-range[data-markers][data-input] {
margin-bottom: 0.5em;
}
pn-range .pn-range-header {
display: flex;
justify-content: space-between;
flex: 1 1 100%;
width: 100%;
}
pn-range .pn-range-label {
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: flex-end;
font-weight: 400;
color: #2d2013;
margin: 0 0 0.25em 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-range .pn-range-label {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-range .pn-range-label > span {
font-size: 0.875em;
}
pn-range .pn-range-message {
color: #5e554a;
font-size: 0.875em;
font-weight: 400;
margin: 0.25em 0 0 0;
display: flex;
flex-direction: column;
gap: 0.25em;
text-align: left;
flex: 1 1 100%;
width: 100%;
}
pn-range .pn-range-message[hidden],
pn-range .pn-range-message > span[hidden] {
display: none;
}
pn-range .pn-range-error {
color: #a70707;
}
pn-range .pn-range-field {
flex: 0 0 auto;
}
pn-range .pn-range-field .pn-input-label {
position: absolute;
height: 1px;
width: 1px;
overflow: hidden;
clip: rect(1px, 1px, 1px, 1px);
margin: -1px;
white-space: nowrap;
}
pn-range .pn-range-group {
position: relative;
min-height: 0.75em;
padding: 0.75em 0;
flex: 1 1 auto;
}
pn-range .pn-range-group[data-pressing] *,
pn-range .pn-range-group[data-pressing] *:before,
pn-range .pn-range-group[data-pressing] *:after {
transition-duration: 0s;
}
pn-range .pn-range-text {
font-weight: 400;
font-size: 0.875em;
color: #2d2013;
}
pn-range .pn-range-input {
z-index: 1;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
margin: 0;
opacity: 0;
cursor: pointer;
-webkit-tap-highlight-color: transparent;
}
pn-range .pn-range-input:focus ~ .pn-range-thumb:before, pn-range .pn-range-input:hover ~ .pn-range-thumb:before {
background-color: #0d234b;
}
pn-range .pn-range-input:focus ~ .pn-range-thumb .pn-range-tooltip, pn-range .pn-range-input:hover ~ .pn-range-thumb .pn-range-tooltip {
opacity: 1;
transform: translateX(50%) translateY(0%);
transition-delay: 0s;
}
pn-range .pn-range-input:focus-visible[data-single] ~ .pn-range-thumb:before {
outline-color: #005d92;
}
pn-range .pn-range-input:focus-visible[data-start] ~ .pn-range-thumb[data-start]:before, pn-range .pn-range-input:focus-visible[data-end] ~ .pn-range-thumb[data-end]:before {
outline-color: #005d92;
}
pn-range .pn-range-input[aria-invalid=true] ~ .pn-range-thumb:before {
background-color: #a70707;
}
pn-range .pn-range-input[aria-invalid=true] ~ .pn-range-thumb .pn-range-tooltip {
background-color: #500715;
}
pn-range .pn-range-input[aria-invalid=true] ~ .pn-range-track:before {
background-color: #a70707;
}
pn-range .pn-range-input[aria-invalid=true]:focus-visible[data-start] ~ .pn-range-thumb[data-start]:before, pn-range .pn-range-input[aria-invalid=true]:focus-visible[data-end] ~ .pn-range-thumb[data-end]:before {
outline-color: #a70707;
}
pn-range .pn-range-input[aria-invalid=true]:hover ~ .pn-range-thumb:before {
background-color: #500715;
}
pn-range .pn-range-input:disabled {
cursor: not-allowed;
}
pn-range .pn-range-input:disabled + .pn-range-track:before {
background-color: #969087;
}
pn-range .pn-range-input:disabled ~ .pn-range-thumb:before {
background-color: #5e554a;
}
pn-range .pn-range-input:disabled ~ .pn-range-thumb .pn-range-tooltip {
background-color: #2d2013;
}
pn-range .pn-range-overlay-input {
z-index: 5;
cursor: pointer;
position: absolute;
appearance: none;
top: 0;
left: 0;
height: 100%;
width: 100%;
margin: 0;
padding: 0;
border: 0;
outline: 0;
opacity: 0;
display: block;
-webkit-tap-highlight-color: transparent;
}
pn-range .pn-range-overlay-input:focus ~ .pn-range-thumb:before, pn-range .pn-range-overlay-input:focus-visible ~ .pn-range-thumb:before, pn-range .pn-range-overlay-input:hover ~ .pn-range-thumb:before {
background-color: #0d234b;
}
pn-range .pn-range-overlay-input:focus ~ .pn-range-thumb[data-align=right] .pn-range-tooltip, pn-range .pn-range-overlay-input:focus-visible ~ .pn-range-thumb[data-align=right] .pn-range-tooltip, pn-range .pn-range-overlay-input:hover ~ .pn-range-thumb[data-align=right] .pn-range-tooltip {
transform: translateX(0%) translateY(0%);
border-bottom-right-radius: 0em;
}
pn-range .pn-range-overlay-input:focus ~ .pn-range-thumb[data-align=left] .pn-range-tooltip, pn-range .pn-range-overlay-input:focus-visible ~ .pn-range-thumb[data-align=left] .pn-range-tooltip, pn-range .pn-range-overlay-input:hover ~ .pn-range-thumb[data-align=left] .pn-range-tooltip {
transform: translateX(100%) translateY(0%);
border-bottom-left-radius: 0em;
}
pn-range .pn-range-overlay-input:focus ~ .pn-range-thumb .pn-range-tooltip, pn-range .pn-range-overlay-input:focus-visible ~ .pn-range-thumb .pn-range-tooltip, pn-range .pn-range-overlay-input:hover ~ .pn-range-thumb .pn-range-tooltip {
opacity: 1;
transform: translateX(50%) translateY(0%);
transition-delay: 0s;
}
pn-range .pn-range-overlay-input[aria-invalid=true]:focus ~ .pn-range-thumb:before, pn-range .pn-range-overlay-input[aria-invalid=true]:focus-visible ~ .pn-range-thumb:before, pn-range .pn-range-overlay-input[aria-invalid=true]:hover ~ .pn-range-thumb:before {
background-color: #500715;
}
pn-range .pn-range-track {
pointer-events: none;
position: relative;
min-height: inherit;
display: block;
background-color: #d3cecb;
border-radius: 2em;
overflow: hidden;
}
pn-range .pn-range-track:before, pn-range .pn-range-track:after {
content: "";
z-index: 0;
position: absolute;
right: 100%;
pointer-events: none;
height: 100%;
width: 100%;
background-color: #005d92;
transform: translateX(var(--pn-range-progress));
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-range .pn-range-track:before, pn-range .pn-range-track:after {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-range .pn-range-track:after {
display: none;
}
pn-range .pn-range-track:before {
background-color: #005d92;
transform: translateX(var(--pn-range-progress));
}
pn-range .pn-range-track[data-multiple]:before {
transform: translateX(var(--pn-range-progress-end));
}
pn-range .pn-range-track[data-multiple]:after {
display: unset;
background-color: #d3cecb;
transform: translateX(var(--pn-range-progress));
}
pn-range .pn-range-thumb {
pointer-events: none;
position: absolute;
height: 100%;
width: calc(100% - 1em);
top: 0;
right: calc(100% - 0.5em);
transform: translateX(var(--pn-range-progress));
transition-property: transform, border-radius;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-range .pn-range-thumb {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-range .pn-range-thumb[data-end] {
transform: translateX(var(--pn-range-progress-end));
}
pn-range .pn-range-thumb[data-align=right] .pn-range-tooltip {
transform: translateX(0%) translateY(10%);
}
pn-range .pn-range-thumb[data-align=right] .pn-range-tooltip:before {
transform: translateX(50%) translateY(-50%) rotate(0deg);
}
pn-range .pn-range-thumb[data-align=left] .pn-range-tooltip {
transform: translateX(100%) translateY(10%);
}
pn-range .pn-range-thumb[data-align=left] .pn-range-tooltip:before {
transform: translateX(50%) translateY(-50%) rotate(0deg);
}
pn-range .pn-range-thumb:before {
content: "";
position: absolute;
top: 0.5em;
right: -0.65625em;
height: 1.3125em;
width: 1.3125em;
background-color: #005d92;
border-radius: 5em;
outline: 0.2rem solid transparent;
outline-offset: 0.2rem;
transition-property: 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-range .pn-range-thumb:before {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-range .pn-range-tooltip {
position: absolute;
z-index: 10;
top: -85%;
right: 0;
text-align: center;
line-height: 1.25em;
white-space: nowrap;
height: 1.75em;
min-width: 2em;
padding: 0.25em 0.5em;
border-radius: 0.5em;
background-color: #0d234b;
color: #ffffff;
transform: translateX(50%) translateY(10%);
opacity: 0;
transition-property: opacity, transform, border-radius, background-color;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-range .pn-range-tooltip {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-range .pn-range-tooltip {
transition-delay: 0.4s;
}
pn-range .pn-range-tooltip-label {
font-size: 0.875em;
font-weight: 400;
}
pn-range .pn-range-tooltip:before {
content: "";
z-index: -1;
position: absolute;
left: 50%;
bottom: -0.25em;
height: 0.5em;
width: 0.5em;
background-color: inherit;
transform: translateX(-50%) translateY(0%) rotate(45deg);
transition-property: left, transform;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-range .pn-range-tooltip:before {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-range .pn-range-markers {
position: absolute;
top: 100%;
left: 0.5em;
min-height: 1em;
width: calc(100% - 1em);
padding: 0;
margin: 0;
list-style: none;
display: flex;
flex-direction: row;
flex-wrap: nowrap;
}
pn-range .pn-range-markers-item {
position: relative;
left: var(--pn-range-marker-position);
}
pn-range .pn-range-markers-item[data-min] .pn-range-markers-label {
left: -0.0625em;
transform: translateX(0%);
}
pn-range .pn-range-markers-item[data-max] .pn-range-markers-label {
left: unset;
right: 0;
transform: translateX(0%);
}
pn-range .pn-range-markers-item:before {
content: "";
position: absolute;
left: 0;
top: -100%;
border-left: 0.0625em solid #d3cecb;
height: 1em;
z-index: -1;
}
pn-range .pn-range-markers-label {
position: absolute;
top: 0;
left: 50%;
transform: translateX(-50%);
font-weight: 400;
font-size: 0.875em;
color: #5e554a;
transition-property: color;
transition-duration: 0.2s;
transition-timing-function: cubic-bezier(0.7, 0, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
pn-range .pn-range-markers-label {
transition-duration: 0s;
transition-delay: 0s;
}
}
pn-range .pn-range-markers-label[data-active] {
color: #2d2013;
}