@fremtind/jkl-radio-button
Version:
Jøkul style for radio button
181 lines (179 loc) • 5.8 kB
CSS
/**
* Do not edit directly
* Generated on Mon, 28 Oct 2024 14:24:14 GMT
*/
:root,
[data-layout-density=comfortable],
[data-density=comfortable] {
--jkl-radio-button-height: 3rem;
--jkl-radio-button-line-height: 2rem;
--jkl-radio-button-size: 1.5rem;
--jkl-radio-button-text-margin: 0.5rem 0;
--jkl-radio-button-text-transform: translate3d(0, 0.0625rem, 0);
--jkl-radio-button-dot-margin: 0.75rem 0.5rem 0.75rem 0;
--jkl-radio-button-dot-size: 1rem;
--jkl-radio-button-label-font-size: var(--jkl-body-font-size);
--jkl-radio-button-label-line-height: var(--jkl-body-line-height);
--jkl-radio-button-label-font-weight: var(--jkl-body-font-weight);
}
@media (width >= 0) and (max-width: 679px) {
:root,
[data-layout-density=comfortable],
[data-density=comfortable] {
--jkl-radio-button-height: 2.5rem;
--jkl-radio-button-line-height: 1.75rem;
--jkl-radio-button-size: 1.5rem;
--jkl-radio-button-text-margin: 0.5rem 0;
--jkl-radio-button-text-transform: translate3d(0, 0, 0);
--jkl-radio-button-dot-margin: 0.625rem 0.5rem 0.625rem 0;
--jkl-radio-button-dot-size: 1rem;
}
}
[data-layout-density=compact],
[data-density=compact] {
--jkl-radio-button-height: 1.75rem;
--jkl-radio-button-line-height: 1.5rem;
--jkl-radio-button-size: 1.125rem;
--jkl-radio-button-text-margin: 0.25rem 0;
--jkl-radio-button-text-transform: translate3d(0, 0, 0);
--jkl-radio-button-dot-margin: 0.4375rem 0.5rem 0.4375rem 0;
--jkl-radio-button-dot-size: 0.625rem;
--jkl-radio-button-label-font-size: var(--jkl-small-font-size);
--jkl-radio-button-label-line-height: var(--jkl-small-line-height);
--jkl-radio-button-label-font-weight: var(--jkl-small-font-weight);
}
@keyframes jkl-dot-in-upw7412 {
0% {
transform: scale(0.8);
}
100% {
transform: scale(1);
}
}
.jkl-radio-button {
--ring-color: var(--jkl-color-border-action);
--dot-color: transparent;
--background-color: transparent;
--text-color: var(--jkl-color-text-default);
display: flex;
min-height: var(--jkl-radio-button-height);
color: var(--text-color);
position: relative;
outline: 0;
border-style: none;
outline-style: none;
}
.jkl-radio-button:active, .jkl-radio-button:hover, .jkl-radio-button:focus {
outline: 0;
outline-style: none;
}
@media screen and (forced-colors: active) {
.jkl-radio-button {
outline: revert;
border-style: revert;
outline-style: revert;
}
.jkl-radio-button:active, .jkl-radio-button:hover, .jkl-radio-button:focus {
outline: revert;
outline-style: revert;
}
}
.jkl-radio-button__input {
position: absolute;
opacity: 0;
top: var(--jkl-radio-button-size);
left: calc(-0.5 * var(--jkl-radio-button-size));
}
.jkl-radio-button__input:checked + .jkl-radio-button__label > .jkl-radio-button__dot::after {
--dot-color: var(--jkl-color-border-action);
animation: jkl-dot-in-upw7412 150ms ease;
}
@media screen and (forced-colors: active) {
.jkl-radio-button__input:checked + .jkl-radio-button__label > .jkl-radio-button__dot::after {
background-color: ButtonText;
}
}
.jkl-radio-button--error .jkl-radio-button__input:checked + .jkl-radio-button__label > .jkl-radio-button__dot::after {
--background-color: var(--jkl-color-background-alert-error);
--dot-color: var(--jkl-color-text-on-alert);
}
.jkl-radio-button__input:focus-visible + .jkl-radio-button__label {
--background-color: var(--jkl-color-background-input-focus);
}
.jkl-radio-button__input:focus-visible + .jkl-radio-button__label > .jkl-radio-button__dot {
outline: 3px solid var(--jkl-color-border-action);
outline-offset: 3px;
}
.jkl-radio-button--error .jkl-radio-button__input:focus-visible + .jkl-radio-button__label {
--background-color: var(--jkl-color-background-alert-error);
--dot-color: var(--jkl-color-text-on-alert);
}
.jkl-radio-button__label {
cursor: pointer;
display: flex;
align-items: flex-start;
font-size: var(--jkl-radio-button-label-font-size);
line-height: var(--jkl-radio-button-label-line-height);
font-weight: var(--jkl-radio-button-label-font-weight);
}
.jkl-radio-button__label:hover > .jkl-radio-button__dot {
outline: 1px solid var(--ring-color);
}
.jkl-radio-button__label:active > .jkl-radio-button__dot .jkl-radio-button__label::after {
scale: 0.9;
}
.jkl-radio-button__dot {
display: inline-block;
position: relative;
box-sizing: border-box;
margin: var(--jkl-radio-button-dot-margin);
flex-shrink: 0;
height: var(--jkl-radio-button-size);
width: var(--jkl-radio-button-size);
border-radius: 50%;
border: 0.0625rem solid var(--ring-color);
background-color: var(--background-color);
transition-property: background-color, outline;
transition-timing-function: ease;
transition-duration: 150ms;
/* Inner dot */
}
.jkl-radio-button__dot::after {
content: "";
position: absolute;
left: 50%;
top: 50%;
translate: -50% -50%;
scale: 1;
height: var(--jkl-radio-button-dot-size);
width: var(--jkl-radio-button-dot-size);
border-radius: 50%;
background-color: var(--dot-color);
transition-property: transform;
transition-timing-function: ease;
transition-duration: 150ms;
}
@media screen and (forced-colors: active) {
.jkl-radio-button__dot {
outline: revert;
border: 1px solid ButtonText;
}
}
.jkl-radio-button__text {
display: inline-block;
margin: var(--jkl-radio-button-text-margin);
transform: var(--jkl-radio-button-text-transform);
}
.jkl-radio-button--error {
--background-color: var(--jkl-color-background-alert-error);
}
.jkl-radio-button--inline {
display: inline-flex;
margin-top: unset;
margin-right: 1.5rem;
}
.jkl-radio-button + .jkl-form-support-label {
margin-left: calc(var(--jkl-radio-button-size) + 0.5rem);
margin-top: -0.375rem;
margin-bottom: 0.5rem;
}