UNPKG

@chatui/core

Version:

The React library for Chatbot UI

90 lines (79 loc) 1.85 kB
.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; }