inputs.css
ASCII text
1:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select) { 2background: var(--color-input); 3color: var(--color-input-text); 4box-shadow: var(--shadow-input); 5border: var(--border-input); 6min-height: var(--height-input); 7padding: var(--padding-input); 8border-radius: var(--radius-input); 9min-width: var(--min-width-input); 10flex: 1 0 auto; 11appearance: none; 12} 13 14:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select):focus { 15background: var(--color-input-active); 16color: var(--color-input-active-text); 17box-shadow: var(--shadow-input-active); 18border: var(--border-input-active); 19} 20 21:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select):hover { 22background: var(--color-input-hover); 23color: var(--color-input-hover-text); 24box-shadow: var(--shadow-input-hover); 25border: var(--border-input-hover); 26} 27 28:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select):hover::placeholder { 29color: var(--color-input-hover-text); 30} 31 32:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select):focus::placeholder { 33color: var(--color-input-focus-text); 34} 35 36:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select)::placeholder { 37color: var(--color-input-text); 38} 39 40:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select).input-flat { 41background: var(--color-flat-input); 42color: var(--color-flat-input-text); 43box-shadow: var(--shadow-flat-input); 44border: var(--border-flat-input); 45border-radius: var(--radius-flat-input); 46} 47 48:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select).input-flat:focus { 49background: var(--color-flat-input-active); 50color: var(--color-flat-input-active-text); 51box-shadow: var(--shadow-flat-input-active); 52border: var(--border-flat-input-active); 53} 54 55:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select).input-flat:hover { 56background: var(--color-flat-input-hover); 57color: var(--color-flat-input-hover-text); 58box-shadow: var(--shadow-flat-input-hover); 59border: var(--border-flat-input-hover); 60} 61 62:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select).input-flat:hover::placeholder { 63color: var(--color-flat-input-hover-text); 64} 65 66:is(input:not([type=button], [type=checkbox], [type=radio], [type=submit], [type=reset], [type=file], [type=range]), select).input-flat:focus::placeholder { 67color: var(--color-flat-input-focus-text); 68} 69 70.input-flat::placeholder { 71color: var(--color-flat-input-text); 72} 73 74/* ICONS */ 75 76input:is([type="date"], [type="datetime-local"], [type="month"], [type="week"], [type="time"])::-webkit-calendar-picker-indicator, input[type="search"]::-webkit-search-cancel-button { 77display: block; 78width: var(--size-input-icon); 79height: var(--size-input-icon); 80padding: 0; 81background: currentColor; 82-webkit-mask: var(--input-icon); 83mask: var(--input-icon); 84appearance: none; 85} 86 87input:is([type="date"]) { 88--input-icon: url("./icons/input-date.svg"); 89} 90 91input:is([type="month"]) { 92--input-icon: url("./icons/input-month.svg"); 93} 94 95input:is([type="week"]) { 96--input-icon: url("./icons/input-week.svg"); 97} 98 99input:is([type="datetime-local"]) { 100--input-icon: url("./icons/input-datetime-local.svg"); 101} 102 103input:is([type="time"]) { 104--input-icon: url("./icons/input-time.svg"); 105} 106 107input:is([type="search"]) { 108--input-icon: url("./icons/search-delete.svg"); 109} 110 111select { 112appearance: auto; 113position: relative; 114appearance: none; 115} 116 117label:has(input:not([type=checkbox], [type=radio]), select) { 118display: inline-flex; 119flex-direction: column; 120gap: var(--gap-label-input); 121align-items: stretch; 122} 123 124label:has(input:not([type=checkbox], [type=radio]), select).horizontal-label { 125flex-direction: row; 126} 127 128input:not(:is(:user-invalid, [aria-invalid="true"])) ~ .input-error-text { 129display: none; 130} 131