@gravity-ui/uikit
Version:
Gravity UI base styling and components
187 lines • 6.14 kB
CSS
.g-segmented-radio-group {
--_--border-width: 1px;
--_--transition-time: 0.15s;
box-sizing: border-box;
display: inline-flex;
flex-direction: row;
font-family: var(--g-text-body-font-family);
font-weight: var(--g-text-body-font-weight);
position: relative;
}
.g-segmented-radio-group__option {
position: relative;
flex: 1 1 auto;
user-select: none;
font-size: var(--g-text-body-1-font-size);
text-align: center;
cursor: pointer;
transform: scale(1);
transition: color var(--_--transition-time) linear;
}
.g-segmented-radio-group__option::before {
position: absolute;
inset-inline-start: 0;
inset-block: var(--_--border-width);
content: "";
width: var(--_--border-width);
background-color: var(--g-color-line-generic);
}
.g-segmented-radio-group__option::after {
content: "";
position: absolute;
z-index: -1;
inset: 0;
border: var(--_--border-width) solid var(--g-color-line-generic);
border-radius: 0;
transition: background-color var(--_--transition-time) linear, border-color var(--_--transition-time) linear;
}
.g-segmented-radio-group__option:not(:first-child):not(.g-segmented-radio-group__option_checked)::after {
border-inline-start-width: 0;
}
.g-segmented-radio-group__option:not(:last-child):not(.g-segmented-radio-group__option_checked):after {
border-inline-end-width: 0;
}
.g-segmented-radio-group__option:first-child {
border-start-start-radius: var(--_--border-radius);
border-end-start-radius: var(--_--border-radius);
}
.g-segmented-radio-group__option:first-child::before {
display: none;
}
.g-segmented-radio-group__option:first-child::after {
border-start-start-radius: var(--_--border-radius);
border-end-start-radius: var(--_--border-radius);
}
.g-segmented-radio-group__option:last-child {
border-start-end-radius: var(--_--border-radius);
border-end-end-radius: var(--_--border-radius);
}
.g-segmented-radio-group__option:last-child::after {
border-start-end-radius: var(--_--border-radius);
border-end-end-radius: var(--_--border-radius);
}
.g-segmented-radio-group__option:not(.g-segmented-radio-group__option_checked):not(.g-segmented-radio-group__option_disabled):hover::after {
background-color: var(--g-color-base-simple-hover);
}
.g-segmented-radio-group__option:not(.g-segmented-radio-group__option_checked):not(.g-segmented-radio-group__option_disabled):hover .g-segmented-radio-group__option-text {
color: var(--g-color-text-primary);
}
.g-segmented-radio-group__option:has(.g-segmented-radio-group__option-control:focus-visible) {
outline: 2px solid var(--g-color-line-misc);
outline-offset: calc(-1 * var(--_--border-width));
}
.g-segmented-radio-group__option-control {
position: absolute;
inset-block-start: 0;
inset-inline-start: 0;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
border: none;
outline: none;
opacity: 0;
cursor: inherit;
}
.g-segmented-radio-group__option-text {
display: inline-flex;
justify-content: center;
align-items: center;
gap: 8px;
white-space: nowrap;
color: var(--g-color-text-complementary);
overflow: hidden;
}
.g-segmented-radio-group__option-text_icon {
height: 100%;
display: flex;
align-items: center;
}
.g-segmented-radio-group__option_checked {
cursor: default;
border-color: var(--g-color-line-brand);
}
.g-segmented-radio-group__option_checked .g-segmented-radio-group__option-text {
color: var(--g-color-text-brand-heavy);
}
.g-segmented-radio-group__option_checked::after {
background-color: var(--g-color-base-selection);
border-color: var(--g-color-line-brand);
}
.g-segmented-radio-group__option_checked::before, .g-segmented-radio-group__option_checked + .g-segmented-radio-group__option::before {
background-color: transparent;
}
.g-segmented-radio-group__option_disabled {
cursor: default;
}
.g-segmented-radio-group__option_disabled::after {
background-color: var(--g-color-base-generic);
}
.g-segmented-radio-group__option_disabled .g-segmented-radio-group__option-text {
color: var(--g-color-text-hint);
}
.g-segmented-radio-group__option_disabled.g-segmented-radio-group__option_checked::after {
background-color: var(--g-color-base-generic-accent);
border-color: var(--g-color-line-generic-accent);
}
.g-segmented-radio-group__option_disabled.g-segmented-radio-group__option_checked .g-segmented-radio-group__option-text {
color: var(--g-color-text-secondary);
}
.g-segmented-radio-group__option::before {
z-index: -1;
}
.g-segmented-radio-group_size_s {
--_--border-radius: var(--g-border-radius-s);
}
.g-segmented-radio-group_size_s .g-segmented-radio-group__option {
height: 24px;
line-height: 24px;
}
.g-segmented-radio-group_size_s .g-segmented-radio-group__option-text {
margin: 0 10px;
}
.g-segmented-radio-group_size_m {
--_--border-radius: var(--g-border-radius-m);
}
.g-segmented-radio-group_size_m .g-segmented-radio-group__option {
height: 28px;
line-height: 28px;
}
.g-segmented-radio-group_size_m .g-segmented-radio-group__option-text {
margin: 0 13px;
}
.g-segmented-radio-group_size_l {
--_--border-radius: var(--g-border-radius-l);
}
.g-segmented-radio-group_size_l .g-segmented-radio-group__option {
height: 36px;
line-height: 36px;
}
.g-segmented-radio-group_size_l .g-segmented-radio-group__option-text {
margin: 0 18px;
}
.g-segmented-radio-group_size_xl {
--_--border-radius: var(--g-border-radius-xl);
}
.g-segmented-radio-group_size_xl .g-segmented-radio-group__option {
height: 44px;
line-height: 44px;
font-size: var(--g-text-body-2-font-size);
}
.g-segmented-radio-group_size_xl .g-segmented-radio-group__option-text {
margin: 0 25px;
}
.g-segmented-radio-group_width_auto {
max-width: 100%;
}
.g-segmented-radio-group_width_max {
width: 100%;
}
.g-segmented-radio-group_width_auto .g-segmented-radio-group__option, .g-segmented-radio-group_width_max .g-segmented-radio-group__option {
overflow: hidden;
}
.g-segmented-radio-group_width_auto .g-segmented-radio-group__option-text, .g-segmented-radio-group_width_max .g-segmented-radio-group__option-text {
display: block;
overflow: hidden;
text-overflow: ellipsis;
}