@ozen-ui/kit
Version:
React component library
155 lines (128 loc) • 5.2 kB
CSS
.RadioNext {
--radio-border-color-checked: var(--radio-background-color-checked);
--radio-border-color-hover-checked: var(--radio-background-color-hover-checked);
--radio-border-color-active-checked: var(--radio-background-color-active-checked);
}
.RadioNext_size_l,
.RadioNext_size_m {
--radio-size: 20px;
--radio-icon-size: 10px;
}
.RadioNext_size_s,
.RadioNext_size_xs,
.RadioNext_size_2xs {
--radio-size: 16px;
--radio-icon-size: 8px;
}
.RadioNext_variant_default {
/* ---- BORDER ---- */
--radio-border-color: var(--color-border-main);
--radio-border-color-hover: var(--color-border-main-hover);
--radio-border-color-active: var(--color-border-main-hover);
/* ---- BACKGROUND ---- */
--radio-background-color: var(--color-background-primary);
--radio-background-color-checked: var(--color-background-action);
--radio-background-color-hover: var(--color-background-primary-hover);
--radio-background-color-hover-checked: var(--color-background-action-hover);
--radio-background-color-active: var(--color-background-primary-pressed);
--radio-background-color-active-checked: var(--color-background-action-pressed);
}
.RadioNext_variant_error {
/* ---- BORDER ---- */
--radio-border-color: var(--color-border-error);
--radio-border-color-hover: var(--color-border-error);
--radio-border-color-active: var(--color-border-error);
/* ---- BACKGROUND ---- */
--radio-background-color: var(--color-background-primary);
--radio-background-color-checked: var(--color-background-error);
--radio-background-color-hover: var(--color-background-primary);
--radio-background-color-hover-checked: var(--color-background-error);
--radio-background-color-active: var(--color-background-primary);
--radio-background-color-active-checked: var(--color-background-error);
}
.RadioNext_disabled {
/* ---- BORDER ---- */
--radio-border-color: var(--color-border-disabled);
--radio-border-color-hover: var(--color-border-disabled);
--radio-border-color-active: var(--color-border-disabled);
/* ---- BACKGROUND ---- */
--radio-background-color: var(--color-background-disabled);
--radio-background-color-checked: var(--color-background-action-active-disabled);
--radio-background-color-hover: var(--color-background-disabled);
--radio-background-color-hover-checked: var(--color-background-action-active-disabled);
--radio-background-color-active: var(--color-background-disabled);
--radio-background-color-active-checked: var(--color-background-action-active-disabled);
}
.RadioNext-Box {
inline-size: var(--radio-size);
block-size: var(--radio-size);
position: relative;
border-radius: 50%;
flex-shrink: 0;
}
.RadioNext-BoxRadio {
inline-size: 100%;
block-size: 100%;
position: relative;
display: block;
border-radius: inherit;
box-sizing: border-box;
border: 1px solid var(--radio-border-color);
background-color: var(--radio-background-color);
transition: border-color var(--transition-default),
background-color var(--transition-default),
box-shadow var(--transition-default);
}
.RadioNext-BoxRadio::after {
position: absolute;
content: ' ';
inline-size: var(--radio-icon-size, 10px);
block-size: var(--radio-icon-size, 10px);
inset-block-start: 50%;
inset-inline-start: 50%;
transform: translate(-50%, -50%);
border-radius: 50%;
opacity: 0;
background-color: var(--color-content-action-on);
transition: opacity var(--transition-default);
}
.RadioNext-Input {
position: absolute;
margin: 0;
opacity: 0;
inset-inline-start: 0;
inset-block-start: 0;
inline-size: 100%;
block-size: 100%;
cursor: pointer;
z-index: var(--z-index-absolute);
}
.RadioNext-Input:hover:not(:checked, :disabled) + .RadioNext-BoxRadio {
background-color: var(--radio-background-color-hover);
border-color: var(--radio-border-color-hover);
}
.RadioNext-Input:hover:checked:not(:active, :disabled) + .RadioNext-BoxRadio {
background-color: var(--radio-background-color-hover-checked);
border-color: var(--radio-border-color-hover-checked);
}
.RadioNext-Input:active:not(:checked, :disabled) + .RadioNext-BoxRadio {
background-color: var(--radio-background-color-active);
border-color: var(--radio-border-color-active);
}
.RadioNext-Input:active:checked + .RadioNext-BoxRadio {
background-color: var(--radio-background-color-active-checked);
border-color: var(--radio-border-color-active-checked);
}
.RadioNext-Input:focus + .RadioNext-BoxRadio {
box-shadow: var(--shadow-outline-focused);
}
.RadioNext-Input:focus:not(:focus-visible) + .RadioNext-BoxRadio {
box-shadow: none;
}
.RadioNext-Input:checked:not(:hover, :active) + .RadioNext-BoxRadio {
background-color: var(--radio-background-color-checked);
border-color: var(--radio-border-color-checked);
}
.RadioNext-Input:checked + .RadioNext-BoxRadio::after {
opacity: 1;
}