@dialpad/dialtone-css
Version:
Dialpad's design system
318 lines (260 loc) • 8.39 kB
text/less
//
// DIALTONE
// COMPONENTS: INPUTS
//
// These are input classes for Dialpad's design system Dialtone.
// For further documentation of these and other classes,
// visit https://dialtone.dialpad.com/components/inputs
//
// TABLE OF CONTENTS
// • VARIABLES
// • INPUTS & TEXTAREAS
// - Base Style
// - Wrapper
// - Validation States
// - Sizes
// • INPUT ICONS
//
// $ INPUTS
// ----------------------------------------------------------------------------
.d-input,
.d-input--md,
.d-textarea,
.d-textarea--md,
.d-input__wrapper--md,
.d-input__wrapper {
// Component CSS Vars
// ------------------------------------------------------------------------
--input-color-border: var(--dt-inputs-color-border-default);
--input-color-border-hover: var(--dt-inputs-color-border-hover);
--input-color-background: var(--dt-inputs-color-background-default);
--input-color-background-disabled: var(--dt-inputs-color-background-disabled);
--input-color-text: var(--dt-inputs-color-foreground-default);
--input-border-width: var(--dt-size-border-100);
--input-border-radius: var(--dt-inputs-size-radius-md);
--input-padding-y: calc(var(--dt-space-400) - var(--input-border-width));
--input-padding-x: calc((var(--dt-space-500) - var(--dt-space-300)) - var(--input-border-width));
--input-typography: var(--dt-typography-inputs-md);
position: relative;
display: inline-flex;
flex: 1 0%;
box-sizing: border-box;
width: 100%;
min-width: 0;
padding: var(--input-padding-y) var(--input-padding-x);
color: var(--input-color-text);
font: var(--input-typography);
background-color: var(--input-color-background);
border: var(--input-border-width) solid var(--input-color-border);
border-radius: var(--input-border-radius);
outline: none;
box-shadow: none;
appearance: none;
caret-color: fieldtext;
&:has(.d-textarea) {
border-end-end-radius: var(--dt-inputs-size-radius-xs);
}
&:has(.d-input--xs),
&:has(.d-textarea--xs) {
--input-border-radius: var(--dt-inputs-size-radius-xs);
}
&:has(.d-input--sm),
&:has(.d-textarea--sm) {
--input-border-radius: var(--dt-inputs-size-radius-sm);
}
&:has(.d-input--md),
&:has(.d-textarea--md) {
--input-border-radius: var(--dt-inputs-size-radius-md);
}
&:has(.d-input--lg),
&:has(.d-textarea--lg) {
--input-border-radius: var(--dt-inputs-size-radius-lg);
}
&:has(.d-input--xl),
&:has(.d-textarea--xl) {
--input-border-radius: var(--dt-inputs-size-radius-xl);
}
// -- Placeholder copy
&::placeholder {
color: var(--dt-inputs-color-foreground-placeholder);
}
// -- Remove input EDGE additions
&::-ms-clear {
display: none;
}
// -- HOVER STATE
&:hover {
--input-color-border: var(--input-color-border-hover);
}
// -- FOCUS STATE
&:focus,
&:focus-within {
--input-color-background: var(--dt-inputs-color-background-focus);
--input-color-border: var(--dt-inputs-color-border-focus) ;
box-shadow: 0 0 0 var(--dt-size-border-100) var(--dt-inputs-color-border-focus) inset;
}
// -- DISABLED / READ-ONLY
&[disabled],
&[read-only] {
--input-color-border: var(--dt-inputs-color-border-disabled) ;
--input-color-background: var(--dt-inputs-color-background-disabled);
--input-color-text: var(--dt-inputs-color-foreground-disabled);
&:focus,
&:focus-within {
box-shadow: none ;
}
// -- Placeholder copy
&::placeholder {
color: var(--dt-inputs-color-foreground-placeholder);
}
}
// -- DISABLED
&[disabled] {
cursor: not-allowed;
}
// -- BROWSER-SPECIFIC
&::-moz-focus-inner {
outline: none ;
}
&:-moz-focusring {
color: transparent;
text-shadow: 0 0 0 var(--dt-color-black-900);
}
&::-ms-expand {
display: none;
}
// -- SEARCH INPUTS
// remove the search input's default styling
input[type="search"]::-webkit-search-decoration,
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-results-button,
input[type="search"]::-webkit-search-results-decoration {
display: none;
}
}
.d-input__length-description {
margin-bottom: var(--dt-space-200);
}
.d-input--hidden {
visibility: hidden;
}
// $$ INPUT WRAPPER
// ----------------------------------------------------------------------------
.d-input__wrapper {
padding: 0;
overflow-y: auto;
.d-textarea + .d-input-icon--right {
position: absolute;
right: var(--dt-space-450);
}
.d-input-icon--left:has(+ .d-textarea) {
align-items: flex-start;
}
.d-input-icon:has(+ .d-textarea),
.d-textarea+.d-input-icon {
padding-top: calc(var(--input-padding-y) + var(--dt-space-200));
}
.d-input-icon:has(+ .d-textarea--xs),
.d-textarea--xs + .d-input-icon {
#d-internal__input-and-select-xs();
padding-top: calc(var(--input-padding-y) + var(--dt-space-100));
}
.d-input-icon:has(+ .d-textarea--sm),
.d-textarea--sm+.d-input-icon {
#d-internal__input-and-select-sm();
padding-top: calc(var(--input-padding-y) + var(--dt-space-100));
}
.d-input-icon:has(+ .d-textarea--lg),
.d-textarea--lg+.d-input-icon {
#d-internal__input-and-select-lg();
padding-top: calc(var(--input-padding-y) + var(--dt-space-100));
}
.d-input-icon:has(+ .d-textarea--xl),
.d-textarea--xl+.d-input-icon {
#d-internal__input-and-select-xl();
padding-top: calc(var(--input-padding-y) + (var(--dt-space-350) - var(--dt-space-100)));
}
.d-input,
.d-textarea {
flex: 1;
background-color: transparent;
border: none;
&:focus,
&:focus-within {
border: none;
outline: 0;
box-shadow: none ;
}
}
}
// $$ SIZES
// ----------------------------------------------------------------------------
.d-input.d-input--xs {
#d-internal__input-and-select-xs();
}
.d-input.d-input--sm {
#d-internal__input-and-select-sm();
}
.d-input.d-input--lg {
#d-internal__input-and-select-lg();
}
.d-input.d-input--xl {
#d-internal__input-and-select-xl();
}
// ============================================================================
// $ TEXTAREAS
// ----------------------------------------------------------------------------
.d-textarea {
min-height: calc(var(--dt-size-300) * 20); // 80
vertical-align: top;
resize: vertical;
scroll-padding-block: var(--input-padding-y);
}
// $$ SIZES
// ----------------------------------------------------------------------------
.d-textarea--xs {
#d-internal__input-and-select-xs();
min-height: calc(var(--dt-size-300) * 10); // 40
}
.d-textarea--sm {
#d-internal__input-and-select-sm();
min-height: var(--dt-size-650); // 48
}
.d-textarea--lg {
#d-internal__input-and-select-lg();
min-height: calc(var(--dt-size-300) * 23); // 92
}
.d-textarea--xl {
#d-internal__input-and-select-xl();
min-height: calc(var(--dt-size-300) * 25); // 100
}
// $$ VALIDATION STATES
// ----------------------------------------------------------------------------
.d-input--warning {
--input-color-border: var(--dt-inputs-color-border-warning) ;
}
.d-input--error {
--input-color-border: var(--dt-inputs-color-border-critical) ;
}
.d-input--success {
--input-color-border: var(--dt-inputs-color-border-success) ;
}
// ============================================================================
// $ INPUT ICONS
// ----------------------------------------------------------------------------
.d-input-icon {
display: none;
&:not(:empty) {
display: inline-flex;
align-items: center;
}
&--right:not(:empty) {
margin-right: var(--dt-space-400);
.d-btn {
margin-right: var(--dt-space-350-negative);
}
}
&--left:not(:empty) {
margin-left: var(--dt-space-400);
}
}