@ozen-ui/kit
Version:
React component library
121 lines (100 loc) • 3.23 kB
CSS
.Checkbox {
inline-size: var(--checkbox-size, 20px);
block-size: var(--checkbox-size, 20px);
position: relative;
border-radius: 4px;
flex-shrink: 0;
}
.Checkbox_size_l,
.Checkbox_size_m {
--checkbox-size: 20px;
}
.Checkbox_size_s,
.Checkbox_size_xs,
.Checkbox_size_2xs {
--checkbox-size: 16px;
}
.Checkbox-Box {
inline-size: 100%;
block-size: 100%;
display: flex;
justify-content: center;
align-items: center;
border-radius: inherit;
box-sizing: border-box;
border: 1px solid var(--color-border-main);
background-color: var(--color-background-primary);
transition: border-color var(--transition-default),
background-color var(--transition-default),
box-shadow var(--transition-default);
}
.Checkbox-Icon {
opacity: 0;
transition: opacity var(--transition-default);
color: var(--color-content-primary-inverse);
}
.Checkbox-Input {
position: absolute;
opacity: 0;
margin: 0;
inset: 0;
inline-size: 100%;
block-size: 100%;
cursor: pointer;
z-index: var(--z-index-absolute);
}
.Checkbox-Input:hover:not(:checked, :disabled) + .Checkbox-Box {
background-color: var(--color-background-primary-hover);
border-color: var(--color-border-main-hover);
}
.Checkbox-Input:hover:checked:not(:active, :disabled) + .Checkbox-Box {
background-color: var(--color-background-action-hover);
border-color: var(--color-background-action-hover);
}
.Checkbox-Input:active:not(:checked, :disabled) + .Checkbox-Box {
background-color: var(--color-background-primary-pressed);
border-color: var(--color-border-main-hover);
}
.Checkbox-Input:active:checked + .Checkbox-Box {
background-color: var(--color-background-action-pressed);
border-color: var(--color-background-action-pressed);
}
.Checkbox-Input:focus + .Checkbox-Box {
box-shadow: var(--shadow-outline-focused);
}
.Checkbox-Input:focus:not(:focus-visible) + .Checkbox-Box {
box-shadow: none;
}
.Checkbox-Input:checked:not(:hover, :active) + .Checkbox-Box {
background-color: var(--color-background-action);
border-color: var(--color-background-action);
}
.Checkbox-Input:checked + .Checkbox-Box .Checkbox-Icon {
opacity: 1;
}
.Checkbox_indeterminate .Checkbox-Box {
background-color: var(--color-background-action);
border-color: var(--color-background-action);
}
.Checkbox_indeterminate .Checkbox-Icon {
opacity: 1;
}
.Checkbox_indeterminate .Checkbox-Input:hover:not(:disabled) + .Checkbox-Box {
background-color: var(--color-background-action-hover);
border-color: var(--color-background-action-hover);
}
.Checkbox_indeterminate .Checkbox-Input:active:not(:disabled) + .Checkbox-Box {
background-color: var(--color-background-action-pressed);
border-color: var(--color-background-action-pressed);
}
.Checkbox_disabled {
pointer-events: none;
}
.Checkbox_disabled .Checkbox-Box {
background-color: var(--color-background-disabled);
border-color: var(--color-border-disabled);
}
.Checkbox_disabled .Checkbox-Input:checked + .Checkbox-Box {
background-color: var(--color-background-action-active-disabled);
border-color: var(--color-background-action-active-disabled);
}