@use "css-variables" as cv; @use "derived-variables" as dv; @use "initial-variables" as iv; $control-radius: cv.getVar("radius") !default; $control-radius-small: cv.getVar("radius-small") !default; $control-border-width: 1px !default; $control-size: cv.getVar("size-normal") !default; $control-height: 2.5em !default; $control-line-height: 1.5 !default; $control-padding-vertical: calc(0.5em - #{$control-border-width}) !default; $control-padding-horizontal: calc(0.75em - #{$control-border-width}) !default; $control-focus-shadow-l: 50% !default; :root { @include cv.register-vars( ( "control-radius": #{$control-radius}, "control-radius-small": #{$control-radius-small}, "control-border-width": #{$control-border-width}, "control-height": #{$control-height}, "control-line-height": #{$control-line-height}, "control-padding-vertical": #{$control-padding-vertical}, "control-padding-horizontal": #{$control-padding-horizontal}, "control-size": #{$control-size}, "control-focus-shadow-l": #{$control-focus-shadow-l}, ) ); } @mixin control { align-items: center; appearance: none; border-color: transparent; border-style: solid; border-width: cv.getVar("control-border-width"); border-radius: cv.getVar("control-radius"); box-shadow: none; display: inline-flex; font-size: cv.getVar("control-size"); height: cv.getVar("control-height"); justify-content: flex-start; line-height: cv.getVar("control-line-height"); padding-bottom: cv.getVar("control-padding-vertical"); padding-left: cv.getVar("control-padding-horizontal"); padding-right: cv.getVar("control-padding-horizontal"); padding-top: cv.getVar("control-padding-vertical"); position: relative; transition-duration: cv.getVar("duration"); transition-property: background-color, border-color, box-shadow, color; vertical-align: top; // States &:focus, &:focus-visible, &:focus-within, &.#{iv.$class-prefix}is-focused, &:active, &.#{iv.$class-prefix}is-active { outline: none; } &[disabled], fieldset[disabled] & { cursor: not-allowed; } } // The controls sizes use mixins so they can be used at different breakpoints @mixin control-small { border-radius: $control-radius-small; font-size: cv.getVar("size-small"); } @mixin control-medium { font-size: cv.getVar("size-medium"); } @mixin control-large { font-size: cv.getVar("size-large"); }