@sandlada/mdc
Version:
@sandlada/mdc is an open source component library that follows the Material Design 3 design specifications.
144 lines (128 loc) • 5.23 kB
JavaScript
import{E as e}from"../../easing-5hHInU7b.js";import{r as o,a as t}from"../../lit-element-Ho-VPzO1.js";import{RadioButtonDefinition as i}from"../../component-definitions/radio-button.definition.js";import{createWrappedTokens as r}from"../../utils/tokens/create-wrapped-tokens.js";import{overrideComponentTokens as s}from"../../utils/tokens/override-component-tokens.js";import{stringTokens as c}from"../../utils/tokens/string-tokens.js";import"../../color-CigMJnjV.js";import"../../state-C-haZXan.js";
/**
* @license
* Copyright 2025 Kai-Orion & Sandlada
* SPDX-License-Identifier: MIT
*/const a=c(r("--mdc-radio-button",i)),l=o(e.ExpressiveFastSpatial),n=t`
mdc.radio-button {
variable {
:host { ${a} }
}
base {
:host {
display: inline-flex;
outline: none;
position: relative;
vertical-align: top;
-webkit-tap-highlight-color: transparent;
cursor: pointer;
height: var(--_icon-size);
width: var(--_icon-size);
margin: max(0px, ((48px - var(--_state-layer-size)) / 1));
}
:host([disabled]) {
cursor: default;
pointer-events: none;
}
:host([touch-target='none']) {
margin: 0px;
}
.container {
display: flex;
height: 100%;
place-content: center;
place-items: center;
width: 100%;
}
.touch-target {
height: 48px;
position: absolute;
width: 48px;
}
.icon {
fill: var(--_unselected-icon-color);
inset: 0;
position: absolute;
}
.selected .icon {
fill: var(--_selected-icon-color);
}
.outer.circle {
transition: fill 50ms linear;
}
.inner.circle {
scale: 0;
opacity: 0;
transform-origin: center;
transition: scale 350ms ${l}, opacity 350ms ${l};
}
.selected .inner.circle {
scale: 1;
opacity: 1;
}
:host([disabled]) .circle {
animation-duration: 0s;
transition-duration: 0s;
}
:host(:hover) .icon {
fill: var(--_hovered-unselected-icon-color);
}
:host(:focus-within) .icon {
fill: var(--_focused-unselected-icon-color);
}
:host(:active) .icon {
fill: var(--_pressed-unselected-icon-color);
}
:host([disabled]) .icon {
fill: var(--_disabled-unselected-icon-color);
opacity: var(--_disabled-unselected-icon-opacity);
}
:host(:hover) .selected .icon {
fill: var(--_hovered-selected-hover-icon-color);
}
:host(:focus-within) .selected .icon {
fill: var(--_focused-selected-focus-icon-color);
}
:host(:active) .selected .icon {
fill: var(--_pressed-selected-pressed-icon-color);
}
:host([disabled]) .selected .icon {
fill: var(--_disabled-selected-icon-color);
opacity: var(--_disabled-selected-icon-opacity);
}
}
hcm {
(forced-colors: active) {
.icon {
fill: CanvasText;
}
:host([disabled]) .icon {
fill: GrayText;
opacity: 1;
}
}
}
composite.ripple {
.container mdc-ripple {
border-radius: 50%;
inset: unset;
height: var(--_state-layer-size);
width: var(--_state-layer-size);
}
.container.selected mdc-ripple {
${o(c(s("--mdc-ripple",{"hovered-color":"var(--_hovered-selected-state-layer-color)","hovered-opacity":"var(--_hovered-selected-state-layer-opacity)","pressed-color":"var(--_pressed-selected-state-layer-color)","pressed-opacity":"var(--_pressed-selected-state-layer-opacity)"})))}
}
.container:not(.selected) mdc-ripple {
${o(c(s("--mdc-ripple",{"hovered-color":"var(--_hovered-unselected-state-layer-color)","hovered-opacity":"var(--_hovered-unselected-state-layer-opacity)","pressed-color":"var(--_pressed-unselected-state-layer-color)","pressed-opacity":"var(--_pressed-unselected-state-layer-opacity)"})))}
}
}
composite.focus-ring {
.container mdc-focus-ring {
height: calc(var(--_icon-size) + 3px);
width: calc(var(--_icon-size) + 3px);
inset: unset;
border-radius: 50%;
}
}
}
`;export{n as radioButtonStyle};