[data-component="radio-group"] { display: inline-flex; flex-direction: column; gap: calc(var(--spacing) * 2); width: fit-content; --radio-group-padding: 2px; --radio-group-gap: 2px; --radio-group-radius: var(--radius-sm); --radio-group-transition-duration: 200ms; --radio-group-border-width: 0.5px; --radio-group-border-color: var(--border-weak-base); --radio-group-bg: var(--surface-inset-base); --radio-group-indicator-bg: var(--surface-raised-stronger-non-alpha); --radio-group-indicator-shadow: var(--shadow-xs-border); [data-slot="radio-group-wrapper"] { all: unset; background-color: var(--radio-group-bg); border: var(--radio-group-border-width) solid var(--radio-group-border-color); border-radius: var(--radio-group-radius); box-shadow: var(--shadow-xs-border); box-sizing: border-box; display: inline-flex; overflow: clip; margin: 0; padding: var(--radio-group-padding); position: relative; width: fit-content; } [data-slot="radio-group-items"] { display: inline-flex; list-style: none; flex-direction: row; gap: var(--radio-group-gap); position: relative; z-index: 1; } [data-slot="radio-group-indicator"] { background: var(--radio-group-indicator-bg); border-radius: calc(var(--radio-group-radius) - var(--radio-group-padding)); box-shadow: var(--radio-group-indicator-shadow); content: ""; opacity: var(--indicator-opacity, 1); position: absolute; transition: opacity var(--radio-group-transition-duration) ease-out, box-shadow 120ms ease-out, width var(--radio-group-transition-duration) ease-out, height var(--radio-group-transition-duration) ease-out, transform var(--radio-group-transition-duration) ease-out, translate var(--radio-group-transition-duration) ease-out, left var(--radio-group-transition-duration) ease-out, top var(--radio-group-transition-duration) ease-out; will-change: transform, width, height; } [data-slot="radio-group-item"] { position: relative; } [data-slot="radio-group-item-label"] { color: var(--text-weak); font-family: var(--font-family-sans); font-size: var(--font-size-small); font-weight: var(--font-weight-medium); border-radius: calc(var(--radio-group-radius) - var(--radio-group-padding) - 1px); cursor: pointer; display: inline-flex; align-items: center; justify-content: center; flex-wrap: nowrap; gap: calc(var(--spacing) * 1); line-height: 1; min-height: 24px; padding: 5px 10px; place-content: center; position: relative; transition: color 150ms ease-out, background-color 150ms ease-out, opacity 150ms ease-out; user-select: none; } [data-slot="radio-group-item-input"] { all: unset; } /* Checked state */ [data-slot="radio-group-item-input"][data-checked] + [data-slot="radio-group-item-label"] { color: var(--text-strong); } /* Disabled state */ [data-slot="radio-group-item-input"][data-disabled] + [data-slot="radio-group-item-label"] { cursor: not-allowed; opacity: 0.5; } /* Hover state for unchecked, enabled items */ [data-slot="radio-group-item-input"]:not([data-checked], [data-disabled]) + [data-slot="radio-group-item-label"] { cursor: pointer; user-select: none; } [data-slot="radio-group-item-input"]:not([data-checked], [data-disabled]) + [data-slot="radio-group-item-label"]:hover { background-color: var(--surface-inset-base-hover); color: var(--text-base); } [data-slot="radio-group-item-input"]:not([data-checked], [data-disabled]) + [data-slot="radio-group-item-label"]:active { opacity: 0.7; } /* Focus state */ [data-slot="radio-group-wrapper"]:has([data-slot="radio-group-item-input"]:focus-visible) [data-slot="radio-group-indicator"] { box-shadow: var(--shadow-xs-border-focus), var(--radio-group-indicator-shadow); } /* Hide indicator when nothing is checked */ [data-slot="radio-group-wrapper"]:not(:has([data-slot="radio-group-item-input"][data-checked])) [data-slot="radio-group-indicator"] { --indicator-opacity: 0; } /* Vertical orientation */ &[aria-orientation="vertical"] [data-slot="radio-group-items"] { flex-direction: column; } /* Small size variant */ &[data-size="small"] { --radio-group-padding: 1px; --radio-group-gap: 1px; [data-slot="radio-group-item-label"] { font-size: 12px; min-height: 20px; padding: 4px 8px; } } /* Disabled root state */ &[data-disabled] { opacity: 0.5; cursor: not-allowed; } }