@chatui/core
Version:
The React library for Chatbot UI
90 lines (79 loc) • 1.85 kB
text/less
.Checkbox,
.Radio {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
margin: var(--radio-gap) var(--radio-gap) 0 0;
padding: 8px;
border-radius: var(--radius-md);
background: var(--color-fill-2);
color: var(--color-text-1);
font-size: var(--font-size-sm);
line-height: 20px;
text-align: center;
cursor: pointer;
transition: background 0.15s ease-in-out;
-webkit-tap-highlight-color: transparent;
}
.CheckboxGroup,
.RadioGroup {
--radio-gap: 8px;
margin-top: calc(var(--radio-gap) * -1);
&[data-align='left'] {
text-align: left;
}
&[data-align='right'] {
text-align: right;
}
&[data-layout] {
display: flex;
flex-wrap: wrap;
margin-right: calc(var(--radio-gap) * -1);
}
}
.CheckboxGroup--block,
.RadioGroup--block {
margin-top: 0;
}
.CheckboxGroup--block .Checkbox,
.RadioGroup--block .Radio {
display: block;
margin-right: 0;
}
.CheckboxGroup[data-layout] .Checkbox,
.RadioGroup[data-layout] .Radio {
// 使用 CSS 变量 --max-per-row 动态计算宽度,避免重复代码
// 当 data-layout 为数字时,使用 calc(100% / var(--max-per-row) - var(--radio-gap))
// 当 data-layout 为 'flex' 时,flex: 1
flex: 0 0 calc(100% / var(--max-per-row) - var(--radio-gap));
min-width: 0;
}
// 等分布局:data-layout='flex' 时,每个项目平均分配空间
.CheckboxGroup[data-layout='flex'] .Checkbox,
.RadioGroup[data-layout='flex'] .Radio {
flex: 1;
}
.Checkbox--disabled,
.Radio--disabled {
opacity: 0.5;
cursor: initial;
}
.Checkbox--checked,
.Radio--checked {
background: var(--brand-4);
color: var(--brand-1);
font-weight: 600;
}
.Checkbox-input,
.Radio-input {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
opacity: 0;
cursor: inherit;
}