@use '../../styles/component'; @use '../../styles/form-control'; :host { --focus-ring: 0 0 0 var(--sl-focus-ring-width) var(--sl-focus-ring-color-primary); display: block; } .input { flex: 1 1 auto; display: inline-flex; align-items: stretch; justify-content: start; position: relative; width: 100%; font-family: var(--sl-input-font-family); font-weight: var(--sl-input-font-weight); letter-spacing: var(--sl-input-letter-spacing); background-color: var(--sl-input-background-color); border: solid var(--sl-input-border-width) var(--sl-input-border-color); vertical-align: middle; overflow: hidden; transition: var(--sl-transition-fast) color, var(--sl-transition-fast) border, var(--sl-transition-fast) box-shadow; cursor: text; &:hover:not(.input--disabled) { background-color: var(--sl-input-background-color-hover); border-color: var(--sl-input-border-color-hover); .input__control { color: var(--sl-input-color-hover); } } &.input--focused:not(.input--disabled) { background-color: var(--sl-input-background-color-focus); border-color: var(--sl-input-border-color-focus); box-shadow: var(--focus-ring); .input__control { color: var(--sl-input-color-focus); } } &.input--disabled { background-color: var(--sl-input-background-color-disabled); border-color: var(--sl-input-border-color-disabled); opacity: 0.5; cursor: not-allowed; .input__control { color: var(--sl-input-color-disabled); &::placeholder { color: var(--sl-input-placeholder-color-disabled); } } } } .input__control { flex: 1 1 auto; font-family: inherit; font-size: inherit; font-weight: inherit; min-width: 0; height: 100%; color: var(--sl-input-color); border: none; background: none; box-shadow: none; padding: 0; margin: 0; cursor: inherit; -webkit-appearance: none; &::-webkit-search-decoration, &::-webkit-search-cancel-button, &::-webkit-search-results-button, &::-webkit-search-results-decoration { -webkit-appearance: none; } &:-webkit-autofill, &:-webkit-autofill:hover, &:-webkit-autofill:focus, &:-webkit-autofill:active { box-shadow: 0 0 0 var(--sl-input-height-large) var(--sl-input-background-color-hover) inset !important; -webkit-text-fill-color: var(--sl-color-primary-500); } &::placeholder { color: var(--sl-input-placeholder-color); user-select: none; } &:focus { outline: none; } } .input__prefix, .input__suffix { display: inline-flex; flex: 0 0 auto; align-items: center; cursor: default; ::slotted(sl-icon) { color: var(--sl-input-icon-color); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Size modifiers //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// .input--small { border-radius: var(--sl-input-border-radius-small); font-size: var(--sl-input-font-size-small); height: var(--sl-input-height-small); .input__control { height: calc(var(--sl-input-height-small) - var(--sl-input-border-width) * 2); margin: 0 var(--sl-input-spacing-small); } .input__clear, .input__password-toggle { margin-right: var(--sl-input-spacing-small); } .input__prefix ::slotted(*) { margin-left: var(--sl-input-spacing-small); } .input__suffix ::slotted(*) { margin-right: var(--sl-input-spacing-small); } } .input--medium { border-radius: var(--sl-input-border-radius-medium); font-size: var(--sl-input-font-size-medium); height: var(--sl-input-height-medium); .input__control { height: calc(var(--sl-input-height-medium) - var(--sl-input-border-width) * 2); margin: 0 var(--sl-input-spacing-medium); } .input__clear, .input__password-toggle { margin-right: var(--sl-input-spacing-medium); } .input__prefix ::slotted(*) { margin-left: var(--sl-input-spacing-medium); } .input__suffix ::slotted(*) { margin-right: var(--sl-input-spacing-medium); } } .input--large { border-radius: var(--sl-input-border-radius-large); font-size: var(--sl-input-font-size-large); height: var(--sl-input-height-large); .input__control { height: calc(var(--sl-input-height-large) - var(--sl-input-border-width) * 2); margin: 0 var(--sl-input-spacing-large); } .input__clear, .input__password-toggle { margin-right: var(--sl-input-spacing-large); } .input__prefix ::slotted(*) { margin-left: var(--sl-input-spacing-large); } .input__suffix ::slotted(*) { margin-right: var(--sl-input-spacing-large); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Pill modifier //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// .input--pill { &.input--small { border-radius: var(--sl-input-height-small); } &.input--medium { border-radius: var(--sl-input-height-medium); } &.input--large { border-radius: var(--sl-input-height-large); } } //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Clearable + Password Toggle //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// .input__clear, .input__password-toggle { display: inline-flex; align-items: center; font-size: inherit; color: var(--sl-input-icon-color); border: none; background: none; padding: 0; transition: var(--sl-transition-fast) color; cursor: pointer; &:hover { color: var(--sl-input-icon-color-hover); } &:focus { outline: none; } } .input--empty .input__clear { visibility: hidden; }