UNPKG

now-design-atoms

Version:

Atomic UI components for now-design.

141 lines (112 loc) 3.24 kB
/* INPUT COMPONENT */ /* Base Input Styles */ .input { display: flex; width: 100%; min-height: 40px; padding: 10px; align-items: center; gap: calc(var(--gapSpacing-200, 8) * 1px); border-radius: calc(var(--cornerRadius-m, 8) * 1px); border: 1px solid var(--normal-stroke-primary, #CCC); background: var(--normal-surface-otherCards, #FFF); transition: border-color 0.2s ease, box-shadow 0.2s ease; position: relative; box-sizing: border-box; } /* Input Text Styles */ .input__text { flex: 1; border: none; outline: none; background: transparent; color: var(--normal-typography-bodyPrimary, #1A1A1A); min-width: 0; } .input__text::placeholder { color: var(--normal-typography-disabled, #B3B3B3); opacity: 0; transition: opacity 0.2s ease; } /* Show placeholder only on focus */ .input--focused .input__text::placeholder { opacity: 1; } /* Allow molecule to override placeholder visibility */ .input--show-placeholder .input__text::placeholder { opacity: 1; } /* Icon Styles */ .input__icon { display: flex; align-items: center; justify-content: center; width: 20px; height: 20px; flex-shrink: 0; color: var(--normal-icon-iconActive, #666); } .input--focused .input__text { color: var(--normal-typography-bodyPrimary, #1A1A1A); } /* FILLED STATE */ .input--filled .input__text { color: var(--normal-typography-bodyPrimary, #1A1A1A); } /* HOVER STATE */ .input:hover:not(.input--disabled) { border: 1px solid var(--normal-stroke-hover, #808080); background: var(--normal-surface-tableHover, #F2F2F2); } /* ACCESSIBILITY */ .input__text:focus-visible { outline: none; } /* MOUSE ACTIVE (pressed) */ .input:active:not(.input--disabled) { border: 1px solid var(--normal-stroke-active, #1579BE); background: var(--normal-surface-active, #E8F2F8); } /* FOCUS (any focus) */ .input:focus-within:not(.input--disabled) { border: 1px solid var(--normal-stroke-active, #1579BE); background: var(--normal-surface-active, #E8F2F8); } /* KEYBOARD-ONLY OUTER FOCUS RING (on Tab navigation only) */ .input.input--focus-visible:not(.input--disabled) { /* create a gap between input and ring, then the ring */ box-shadow: 0 0 0 2px var(--normal-surface-page, #FFFFFF), 0 0 0 3px var(--normal-stroke-active, #1579BE); border-radius: calc(var(--cornerRadius-l, 12) * 1px); } /* DISABLED STATE */ .input--disabled { border: 1px solid var(--normal-stroke-primary, #CCC); background: var(--normal-surface-disabled, #E6E6E6); cursor: not-allowed; } .input--disabled .input__text { cursor: not-allowed; } .input--disabled .input__icon { color: var(--normal-icon-iconActive, #666); } .input--disabled:hover, .input--disabled:focus-within { border: 1px solid var(--normal-stroke-primary, #CCC); box-shadow: none; } /* VALIDATION STATES */ .input--error { border: 1px solid var(--normal-stroke-error, #E43E2B); background: var(--normal-surface-error, #FAD8D5); } .input--success { border: 1px solid var(--normal-stroke-success, #2BA24C); background: var(--normal-surface-success, #D5ECDB); } .input--warning { border: 1px solid var(--normal-stroke-warning, #D58C00); background: var(--normal-surface-warning, #F7E8CC); }