UNPKG

@kelvininc/ui-components

Version:
317 lines (301 loc) 9.54 kB
/** HEADINGS **/ /** LABELS **/ /** SPANS **/ /** PARAGRAPHS **/ /** CODE/CONSOLE **/ @property --rotation { syntax: "<angle>"; initial-value: 0deg; inherits: false; } @keyframes rotate-border { to { --rotation: 360deg; } } /** HEADINGS **/ /** LABELS **/ /** SPANS **/ /** PARAGRAPHS **/ /** CODE/CONSOLE **/ @property --rotation { syntax: "<angle>"; initial-value: 0deg; inherits: false; } @keyframes rotate-border { to { --rotation: 360deg; } } :host { /** * @prop --input-height-large: Text Field's large height. * @prop --input-height-small: Text Field's small height. * @prop --input-width: Text Field's width. * @prop --input-min-width: Text Field's min width. * @prop --input-max-width: Text Field's max width. * @prop --text-color-label: Label Text color. * @prop --text-color-icon-default: Icon color when state is default. * @prop --text-color-icon-disabled: Icon color when state is disabled. * @prop --text-color-icon-focused: Icon color when state is focused. * @prop --text-color-action-icon-default: Action icon color when state is default. * @prop --text-color-action-icon-disabled: Action icon color when state is disabled. * @prop --text-color-action-icon-focused: Action icon color when state is focused. * @prop --text-color-input-default: Input text color when state is default. * @prop --text-color-input-disabled: Input text color when state is disabled. * @prop --text-color-input-focused: Input Text color when state is focused. * @prop --text-color-placeholder-default: Placeholder text color when state is default. * @prop --text-color-placeholder-disabled: Placeholder text color when state is disabled. * @prop --text-color-placeholder-focused: Placeholder text color when state is focused. * @prop --text-color-help-text-default: Help Text color when state is default. * @prop --text-color-help-text-error: Help Text color when state is invalid. * @prop --border-color-default: Border color when state is default. * @prop --border-color-focused: Border color when state is focused. * @prop --border-color-error: Border color when state is invalid. * @prop --background-color-default: Background color when state is default. * @prop --background-color-disabled: Background color when state is disabled. */ --input-height-large: 36px; --input-height-small: 28px; --input-width: auto; --input-min-width: 140px; --input-max-width: 100%; --text-color-help-text-default: var(--kv-neutral-4, #bebebe); --text-color-help-text-error: var(--kv-error-light, #f9d1cc); --border-color-error: var(--kv-error, #e11900); --action-icon-size: 16px; } kv-form-label { --label-color: var(--text-color-label); } kv-form-help-text { --help-text-default-color: var(--text-color-help-text-default); --help-text-error-color: var(--text-color-help-text-error); } kv-tooltip::part(container) { font-family: var(--kv-primary-font, "proxima-nova", sans-serif, "Arial"); font-size: 14px; font-weight: 400; font-stretch: normal; font-style: normal; line-height: 21px; letter-spacing: normal; text-transform: none; color: var(--kv-neutral-2, #e5e5e5); } kv-tooltip::part(content) { width: 100%; } .resize-container { display: inline-block; position: relative; flex: 1; overflow: hidden; } .resize-input, .resize-text { font-family: var(--kv-primary-font, "proxima-nova", sans-serif, "Arial"); font-size: 14px; font-weight: 400; font-stretch: normal; font-style: normal; line-height: 21px; letter-spacing: normal; text-transform: none; flex: 1; appearance: textfield; border: 0; height: 100%; outline: 0; box-sizing: border-box; color: var(--text-color-input-default); background-color: transparent; } .resize-text { padding: 0 var(--kv-spacing, 4px); display: inline-block; visibility: hidden; white-space: pre; } .resize-input { position: absolute; top: 0; left: 0; right: 0; bottom: 0; } input { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } input::placeholder { color: var(--text-color-placeholder-default); } input:disabled { color: var(--text-color-input-disabled); } input:disabled::placeholder { color: var(--text-color-placeholder-disabled); } input:focus, input.forced-focus { color: var(--text-color-input-focused); } input:focus::placeholder, input.forced-focus::placeholder { color: var(--text-color-placeholder-focused); } input:read-only:not(:disabled) { cursor: pointer; } input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { appearance: none; } .input-container { display: flex; width: var(--input-width); min-width: var(--input-min-width); max-width: var(--input-max-width); padding: 0 var(--kv-spacing-2x, 8px); border: solid 1px var(--border-color-default); border-radius: 4px; position: relative; overflow: hidden; background-color: var(--background-color-default); box-sizing: border-box; } .input-container.invalid { border-color: var(--border-color-error); } .input-container.disabled { border-color: var(--background-color-disabled); background-color: var(--background-color-disabled); } .input-container.focused:not(.invalid) { border-color: var(--border-color-focused); } .input-container .left-slot-container kv-icon { --icon-color: var(--text-color-icon-default); } .input-container .left-slot-container kv-icon.disabled { --icon-color: var(--text-color-icon-disabled); } .input-container .left-slot-container kv-icon.focus:not(.invalid) { --icon-color: var(--text-color-icon-focused); } .input-container .right-slot-container kv-icon { --icon-color: var(--text-color-action-icon-default); } .input-container .right-slot-container kv-icon.disabled { --icon-color: var(--text-color-action-icon-disabled); } .input-container .right-slot-container kv-icon.focus:not(.invalid) { --icon-color: var(--text-color-action-icon-focused); } .input-container .left-slot-container, .input-container .right-slot-container { height: 100%; display: flex; align-items: center; gap: var(--kv-spacing, 4px); } .input-container .left-slot-container.invalid, .input-container .right-slot-container.invalid { color: var(--text-color-help-text-error); } .input-container .left-slot-container.disabled, .input-container .right-slot-container.disabled { color: var(--text-color-icon-disabled); } .input-container .left-slot-container.focus:not(.invalid), .input-container .right-slot-container.focus:not(.invalid) { color: var(--text-color-input-focused); } .input-container .left-slot-container { color: var(--text-color-input-default); overflow: hidden; user-select: none; } .input-container .left-slot-container kv-icon { --icon-width: 24px; --icon-height: 24px; } .input-container .left-slot-container .value-prefix { white-space: nowrap; margin-right: calc(var(--kv-spacing, 4px) / 2); font-family: var(--kv-primary-font, "proxima-nova", sans-serif, "Arial"); font-size: 14px; font-weight: 600; font-stretch: normal; font-style: normal; line-height: 21px; letter-spacing: normal; text-transform: none; } .input-container .right-slot-container { justify-content: center; } .input-container .right-slot-container:not(.disabled) { cursor: pointer; } .input-container .right-slot-container kv-icon { --icon-width: var(--action-icon-size); --icon-height: var(--action-icon-size); margin-left: var(--kv-spacing, 4px); } .input-container--size-large { height: var(--input-height-large); } .input-container--size-small { height: var(--input-height-small); } .input-container--size-small .left-slot-container kv-icon { --icon-width: 16px; --icon-height: 16px; } .input-container-loading { width: 100%; display: flex; margin-top: var(--kv-spacing, 4px); } .input-container-loading--size-large { height: var(--input-height-large); } .input-container-loading--size-small { height: var(--input-height-small); } :host { --text-color-label: var(--kv-neutral-5, #707070); --text-color-icon-default: var(--kv-neutral-4, #bebebe); --text-color-icon-disabled: var(--kv-neutral-4, #bebebe); --text-color-icon-focused: var(--kv-primary, #005cc7); --text-color-action-icon-default: var(--kv-neutral-4, #bebebe); --text-color-action-icon-disabled: var(--kv-neutral-4, #bebebe); --text-color-action-icon-focused: var(--kv-primary, #005cc7); --text-color-input-default: var(--kv-neutral-8, #202020); --text-color-input-disabled: var(--kv-neutral-5, #707070); --text-color-input-focused: var(--kv-primary, #005cc7); --text-color-placeholder-default: var(--kv-neutral-5, #707070); --text-color-placeholder-disabled: var(--kv-neutral-5, #707070); --text-color-placeholder-focused: var(--kv-neutral-5, #707070); --border-color-default: var(--kv-neutral-3, #ddd); --border-color-focused: var(--kv-primary, #005cc7); --background-color-default: var(--kv-neutral-0, #fff); --background-color-disabled: var(--kv-neutral-2, #e5e5e5); } .input-container-loading { background: linear-gradient(90deg, rgba(var(--kv-neutral-2-rgb, 229, 229, 229), 0.3) 0%, var(--kv-neutral-2, #e5e5e5) 50%, rgba(var(--kv-neutral-2-rgb, 229, 229, 229), 0.3) 100%); background-size: 200%; animation: ghostGradientAnimation 0.8s infinite ease-out; transition: all 1s ease-in; border-radius: 4px; transition: none; } @keyframes ghostGradientAnimation { 0% { background-position: -100% 0; } 100% { background-position: 100% 0; } }